Fire Vehicles...Fire Tank, Fire Manta, Fire Raptor

Discuss and provide feedback on Maps.
User avatar
captainsnarf
Posts: 2631
Joined: Tue Jul 06, 2021 1:51 pm
Location: Washington
Server Sponsor: Yes
Server Admin: Yes
Contact:

Re: Fire Vehicles...Fire Tank, Fire Manta, Fire Raptor

Post by captainsnarf »

I'm not sure if it's firetank or ifrit but I was one shotted multiple times in a mech. Just kept burning through 2000 hp until I was dead.
User avatar
pooty
Posts: 4351
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

Re: Fire Vehicles...Fire Tank, Fire Manta, Fire Raptor

Post by pooty »

A direct hit with the Alt-Fire on FireTank/Ifrit (they are the same projectile) will burn through that if its a good hit. That might be a good one to reduce a bit... so it would take 2 shots to kill the 2000hp stuff.which unless you hit the mino in the middle it usually does....although Mino can one shot both of those...while the burning takes time...usually leading to mutual annihilation. and partly why they both have such a long recharge time.

I haven't changed it from the original fire tank....btw. IIRC there's initial damage from the hit, then the burning/heat damage, made worse if you move (fanning the flames). It does less damage if you're still.
User avatar
Enyo
Posts: 1622
Joined: Mon Apr 05, 2021 11:27 pm
Server Sponsor: Yes
Server Admin: Yes

Re: Fire Vehicles...Fire Tank, Fire Manta, Fire Raptor

Post by Enyo »

captainsnarf wrote: Tue Jan 04, 2022 10:56 am I'm not sure if it's firetank or ifrit but I was one shotted multiple times in a mech. Just kept burning through 2000 hp until I was dead.
Typically it takes two shots from the Ifrit to burn up the mino or mechs, but every vehicle has a weak spot, like the middle hood of the mino. If you hit that sweet spot, the burning does more damage and can kill the mino with one shot, just like bio goo.

The mechs must have a weak point too because I experienced the same thing where the Ifrit hit me once and it burned up all the mech's health. Another time the Ifrit hit my mech and only took about half the health down.

I wouldn't change the Ifrit's damage, it's very hard to hit other flyers with it and the fire rate is fairly slow.
“Never argue with stupid people, they will drag you down to their level and then beat you with experience.”
― Mark Twain
User avatar
captainsnarf
Posts: 2631
Joined: Tue Jul 06, 2021 1:51 pm
Location: Washington
Server Sponsor: Yes
Server Admin: Yes
Contact:

Re: Fire Vehicles...Fire Tank, Fire Manta, Fire Raptor

Post by captainsnarf »

I'm guessing it has changed from the version in MassD V16?

When I look at the code (from MassD V16), the ifrit alt fire projectile does 294 damage and attaches a burner. The burner does 9 dmg per sec until it reaches 90 damage for a combined total of 384 damage. Every 1.2 secs an 'on fire' message is displayed to the player.

Unless something changed, I'm not sure how that one-shots a 1600 health vehicle. My guess is the code that attaches the burner has a bug and sometimes attaches multiple burners causing extra damage? Not really sure.
User avatar
captainsnarf
Posts: 2631
Joined: Tue Jul 06, 2021 1:51 pm
Location: Washington
Server Sponsor: Yes
Server Admin: Yes
Contact:

Re: Fire Vehicles...Fire Tank, Fire Manta, Fire Raptor

Post by captainsnarf »

If you have the ifrit/firetank sources ready to build, try putting a log statement in FireballIncendiary.uc -> Timer() function next to the P.CreateInventory("Burner") call. I bet sometimes one shot from the ifrit/firetank results in multiple calls here, so multiple burners get attached. I see a race condition looking at the code.

The projectile has a function ProcessTouch(). When it touches something, it explodes which applies damage to a radius, shows some effects and then destroys the object.

The projectile also has a timer function set to run 10 times per second. It calls 'foreach TouchingActors()'. For every touching actor, it attaches a Burner class.

This is the race condition. The timer should never see a touching actor if ProcessTouch was called. Once that's called, Destroy is called. Destroy doesn't delete the object right away. The object is actually deleted after the destroyed event happens. This means the timer is still being called 10 times a second until it's actually deleted.

The timer has a boolean check to only run once 'bDoTouch'. Unfortunately it seems they copy/pasted shit Epic did a lot with boleans - toggle them with not statements.

Code: Select all

if(bDoTouch)
{
    foreach TouchingActors(class'Pawn', P)
    { 
      ...
    }
}
bDoTouch = !bDoTouch;
Since the timer runs 10 times a second, the next time it runs, it will do bDoTouch = !bDoTouch, turning the flag back on, potentially attaching more Burners.

I think this is why it does so much damage and why enyo says there is a 'sweet spot'. It really depends how much that timer goes off before the object gets deleted and why the damage amount seems random. If this is true, it kind of is random.
User avatar
Enyo
Posts: 1622
Joined: Mon Apr 05, 2021 11:27 pm
Server Sponsor: Yes
Server Admin: Yes

Re: Fire Vehicles...Fire Tank, Fire Manta, Fire Raptor

Post by Enyo »

captainsnarf wrote: Tue Jan 04, 2022 8:27 pm I think this is why it does so much damage and why enyo says there is a 'sweet spot'. It really depends how much that timer goes off before the object gets deleted and why the damage amount seems random. If this is true, it kind of is random.
That all makes sense... so its it fixable?

I still swear there's a sweet spot on the mino hood, at least for bio goo alt fire. I can take a mino out in one shot if I hit the right spot with it. Or is that a random multiplier thing too.
“Never argue with stupid people, they will drag you down to their level and then beat you with experience.”
― Mark Twain
User avatar
captainsnarf
Posts: 2631
Joined: Tue Jul 06, 2021 1:51 pm
Location: Washington
Server Sponsor: Yes
Server Admin: Yes
Contact:

Re: Fire Vehicles...Fire Tank, Fire Manta, Fire Raptor

Post by captainsnarf »

Enyo wrote: Tue Jan 04, 2022 10:31 pm
captainsnarf wrote: Tue Jan 04, 2022 8:27 pm I think this is why it does so much damage and why enyo says there is a 'sweet spot'. It really depends how much that timer goes off before the object gets deleted and why the damage amount seems random. If this is true, it kind of is random.
That all makes sense... so its it fixable?

I still swear there's a sweet spot on the mino hood, at least for bio goo alt fire. I can take a mino out in one shot if I hit the right spot with it. Or is that a random multiplier thing too.
If that's the problem, it's easily fixable.

Code: Select all

if(bDoTouch)
{
    foreach TouchingActors(class'Pawn', P)
    { 
      ...
      bDoTouch = false;
    }
}
There really should only ever be one touching actor, because after that it explodes. That's probably the least effort way but there are lots of ways to fix this. The timer could be turned off instead of setting bDoTouch false. I'd probably just remove the timer. It's not needed. The explode method knows the actor that it's exploding on. There is no need to do a foreach touchingactors in a timer. The burner thing could be attached in the explode method instead.

Something like this, and remove all the timer function and any calls to settimer.

Code: Select all

simulated function ProcessTouch (Actor Other, Vector HitLocation)
{
    local Pawn P;
    if ( (Other != instigator) && (!Other.IsA('Projectile') || Other.bProjTarget) )
    {
        P = Pawn(Other);
        If(P != None && P != class'ONSPowerCore'&& P.Controller != None)
        {
            if(P.Health > 0 && (!Level.Game.bTeamGame || !P.Controller.SameTeamAs(InstigatorController)))
            {
                P.CreateInventory("Burner");
                Inv = Burner(P.FindInventoryType(class'Burner'));

                if(Inv != None)
                {
                    Inv.DamageType = BurnDamageType;
                    Inv.Chef = Instigator;
                    Inv.DamageDealt = 0;
                    Inv.Temperature += 1.5;
                    Inv.WaitTime = 0;
                }
            }
        }

        Explode(HitLocation,Vect(0,0,1));
    }
}
This would remove the seeking capability though. If you still want that I'd just do the easy fix I first mentioned. Did you know the ifrit projectile is homing? I didn't either until I saw it in the code. With a speed of 17000 units, the homing is unnoticeable to me.
User avatar
pooty
Posts: 4351
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

Re: Fire Vehicles...Fire Tank, Fire Manta, Fire Raptor

Post by pooty »

Interesting. I think there is a random element to it....times it takes the mino out one shot, others it take 2 or even 3...
But if it explodes I think the idea was that any actor in the damage radius gets set on fire...I don't think we should lose that...
Terminator
Posts: 137
Joined: Sat Jun 12, 2021 11:49 am
Server Sponsor: Yes

Re: Fire Vehicles...Fire Tank, Fire Manta, Fire Raptor

Post by Terminator »

I like the fire tank that is on hoover dam. It has the cool skin.
User avatar
pooty
Posts: 4351
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

Re: Fire Vehicles...Fire Tank, Fire Manta, Fire Raptor

Post by pooty »

That skin is used on the Flame Tank.

So the difference is the Fire Tank
Primary is Flame projectile (which isn't great), Alt-fire is fireball incendiary
2nd Close in flamethrower
3rd Heat Ray turret

Flame Tank
Primary is Napalm Gobs, Alt-fire Flame Projectile
2nd Close in flamethrower (same)
3rd Heat Ray turret (same)

I increased the damage on the Heat Ray (it was pretty weak). I think I am going to increase the range on the 2nd seat flame thrower just a bit..kills ground troops near the tank and fast on nodes.

We are (based on below) going to rework the primary / alt-fire on the Fire Tank, although I don't think we should nerf it too much, part of the appeal of the fire tank is the big boom one shot. Mino has to fear something from long range.
Post Reply