Azarael / UT2341

UT2341 Weapons (UT99-style) mod for UT2004.
1 stars 1 forks source link

Minigun behavior differ from UT99 #1

Open cclecle opened 1 year ago

cclecle commented 1 year ago

The minigun delay between fire modes is too big, this must be reduced if you want to match IT weapon ! Else it is a wonderfull work anyway... ! I just extracted weapons from you work and package them as a mutator with config key to enable replacement for each weapons.

So I fixed that minigun "issue". If you are interested in applying this fix, replace this function in UT2341MinigunFire.uc, in state WindDown.

function ModeTick(float dt)
{
    local Controller C;

        FireTime -= dt / WindDownModifier;
        RollSpeed = (FireTime/WindUpTime) * MaxRollSpeed;

        if (RollSpeed <= 0.f)
        {
            RollSpeed = 0.f;
            FireTime = 0.f;
            Gun.UpdateRoll(dt, RollSpeed, ThisModeNum);
            GotoState('Idle');
        }
        C = Instigator.Controller;

        if( ((C.bFire==1)&&(ThisModeNum == 0)) ||
            ((C.bAltFire==1)&&(ThisModeNum == 1)) )
        {
            bIsFiring=True;
            Gun.UpdateRoll(dt, RollSpeed, ThisModeNum);
            GotoState('WindUp');
        }
        else if(C.bAltFire==1)
        {
            UT2341MinigunAltFire(Weapon.GetFireMode(1)).RollSpeed = RollSpeed;
            UT2341MinigunAltFire(Weapon.GetFireMode(1)).FireTime    = FireTime;
            UT2341MinigunAltFire(Weapon.GetFireMode(1)).bIsFiring   = True;
            UT2341MinigunAltFire(Weapon.GetFireMode(1)).GotoState('WindUp');
            Gun.UpdateRoll(dt, RollSpeed, 1);           
            RollSpeed = 0.f;
            FireTime = 0.f;
            GotoState('Idle');
        }
        else if(C.bFire==1) 
        {
            UT2341MinigunFire(Weapon.GetFireMode(0)).RollSpeed = RollSpeed;
            UT2341MinigunFire(Weapon.GetFireMode(0)).FireTime   = FireTime;
            UT2341MinigunFire(Weapon.GetFireMode(0)).bIsFiring  = True;
            UT2341MinigunFire(Weapon.GetFireMode(0)).GotoState('WindUp');
            Gun.UpdateRoll(dt, RollSpeed, 0);
            RollSpeed = 0.f;
            FireTime = 0.f;
            GotoState('Idle');
        }
        Gun.UpdateRoll(dt, RollSpeed, ThisModeNum);
 }
cclecle commented 1 year ago

Ok it was not working in netplay :D ... like most of the time... Fixed version with netplay working: UT2341MinigunFire.zip