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

Discuss and provide feedback on Maps.
Post Reply
User avatar
pooty
Posts: 4358
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

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

Post by pooty »

So I am working on the Fire Vehicles, specifically
FireTank (don't anticipate any changes)
FireManta Cherufe (update textures so you can tell red or blue (right now its always primarily red), might look at some damage improvements. I think it'd be fun if the smash set things on fire, like leaving a fire blob.. (it would still always kill infantry via smash, but you could hop on a vehicle and leave a fire blob)
Ifrit Fire Raptor - Keep the one currently in play, but add progress bar. The original ifrit did not use the firetank projectile. This was the start to just add the progress bar, but seeing how things were dependent might as well fix a bunch of crap at the same time.

All of these have some dependency on each other so keeping them in same package makes sense.

I also will look at adding in the Flame tank, which is cool too, but often the textures between Fire Tank and Flame tank conflict. This would clean that up as well.

For now this EXCLUDES the Fire/Flame Badgers...but maybe those should get added.

Plus I think the Fire/Flame vehicles should have some resistance to each other (like bios do), I don't want to make them invulnerable..just maybe take less damage... and maybe some extra damage from certain things.
User avatar
pooty
Posts: 4358
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 »

Ok have them all in single package. Clean up the Texture references.
To Do.
1. Progess Bar on Ifrit, Flame Tank
2. Check Zoom on Tanks
3. Cherufe Textures
4. Damage reduction/increases on Vehicles (fire resistance)
5. Possible Napalm on Cheurfe alt-fire... Might need some help figuring how to do this, since Alt-fire right now does the manta smash....
User avatar
captainsnarf
Posts: 2632
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 »

pooty wrote: Sat Sep 25, 2021 2:18 pm Ok have them all in single package. Clean up the Texture references.
To Do.
1. Progess Bar on Ifrit, Flame Tank
2. Check Zoom on Tanks
3. Cherufe Textures
4. Damage reduction/increases on Vehicles (fire resistance)
5. Possible Napalm on Cheurfe alt-fire... Might need some help figuring how to do this, since Alt-fire right now does the manta smash....
I think maybe in Cheurfe default properties, need this setting

Code: Select all

bHasAltFire=True
possibly also override the 'checkjumpduck' function to not do the duck, only the jump
User avatar
pooty
Posts: 4358
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 »

1. Progess Bar on Ifrit, Flame Tank - DONE
2. Check Zoom on Tanks - DONE. Both Flame Tank / Fire Tank have same turrets 2nd seat flamethrower (close in weapon), 3rd set heat ray turret
3. Cherufe Textures - DONE - Blue Cherufe is now Blue
4. Damage reduction/increases on Vehicles (fire resistance) - In Process...not quite working,
I used TakeDamage()
and used Damage *= 0.1 but they still seem to take damage. There's multiple damage types to work though.. I was hoping to make the tanks pretty much immune to burning (and each other) the Cherufe, some what resistant and Ifrit not really at all (Its powerful enough as basically a flying fire tank).
I wanted them to take some vs. just IF DamType =Fire return; I need to test it out.

I did adjust some of the damage on the Ifrit, so primary fire actually does some now. Secondary same. Increase damage on Cherufe.

Stay tuned -- Hopefully this weekend I'll finish it.

Note this will require replacing the fire vehicles with these, they work together.

I wonder if I should add in the FireAnt Scorpion (we really don't use it much anyway), and the Fire/Flame Badgers are excluded, but maybe they should be in here.
User avatar
captainsnarf
Posts: 2632
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 this helps, but one of the changes I made when porting over the special TakeDamage functions for e.g. Minotaur was to use the name property instead of the type.

Code: Select all

function TakeDamage(int Damage, Pawn instigatedBy, Vector Hitlocation, Vector Momentum, class<DamageType> DamageType)
{
    //if (DamageType == class'FireKill')
    if (DamageType.name == 'FireKill')
        Damage *= 0.30;
        ...
}
This way when you are building you don't need to reference the package with class'FireKill' in it.
User avatar
pooty
Posts: 4358
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 »

Ah makes sense. I think the original author struggled with that

Code: Select all

if (DamageType == class'FireKill')
		Damage *= 0.10;
Because the FireTank Package originally had Minotaur turrets in it...which were only used in the TakeDamage function. Which made no sense to me because the Minotaur was a different package so FireTank.MinoTurret (forgive the shorthand) was never going to get instantiated, to have the damage reduced. So I figured either hard code the packagename.classname or just delete it (which I did), but the class.name property thing works even better since now it will work across packages, since it only cares about the name...which is great!

At least that's my understanding when you say class'MyClass', that's short hand for class'MyCurrentPackage.MyClass' (or for you C++ programmers this.MyClass.
User avatar
captainsnarf
Posts: 2632
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 »

Putting the full package.classname is actually unnecessary. If you omit the package part, the package is whatever is getting loaded in ut2004.ini file.

These two types are identical:

Code: Select all

class'MyCurentPackage.MyClass'

ut2004.ini

Code: Select all

EditPackages=MyCurrentPackage

Code: Select all

class'MyClass'
A lot of my code does include the package name in the types but that's just because I copy/paste a lot :D When I made 'Dark Nephthys' I just added EditPackages=WVHoverTankV2 and then I could do

Code: Select all

class CSNephthys extends NephthysTank;
and it works since it now knows what NephthysTank is.

All the types are like that. I believe Actor is actually class'Engine.Actor' since it's in the Engine package.
User avatar
pooty
Posts: 4358
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 »

Hmm.. so ClassName are their own unique namespace?
What happens when you have same class in two packages? eg. myLevel.FireTank vs. FireVehicles.FireTank Which one is class'FireTank'? Or its basically whatever one the engine loads last?

I've seen where for example putting Plasma Tank and Short Circuit both into myLevel causes issues (with one class I think overwriting another) whereas loading them LIPPlasmaTank and LIPChaoticMantaPack avoids it.. so at some point the engine knows that one is different than the other.

Or are you saying the scope for any class references go up to what ever package they were in....meaning in my above example, if I reference .PlasmaShot its really either LIPPlasmaTank.PlasmaShot or LIPChaoticMantaPack.PlasmaShot depending on context?
User avatar
captainsnarf
Posts: 2632
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 100% sure how it works.

I can add Pallas v1.1 and Pallas 2.0 to the same map and it works. All of the class names are the same. Only the package name is different. The engine seems to figure it out. There might actually be a conflict here but since 1.1 and 2.0 are very similar it's not causing an issue? I'm really not sure.

I cannot build Pallas v1.1 and Pallas 2.0 at the same time. I get errors about class name conflicts. I have to build one while commenting out the EditPackages= line for the other.

When copying other mods and updating them I usually rename everything with 'CS' in front of it, just to avoid any issue there. I'm sure you've noticed this :D

Also, I noticed Stealth Badger was messed up on the latest MTMU (I think pooty-v12?). The gunner turret was not stealth textured. That's a bug I had to work around that I think is because the badger source came from multiple places. The MyBadger that SteatlhBadger inherits from is different than the others. My hunch is the bug came back because maybe a different MyBadger was put in the level? Maybe Flame Badger? That would confirm the suspicion that class name conflicts cause weird problems.
User avatar
pooty
Posts: 4358
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 »

https://wiki.beyondunreal.com/Legacy:Package

Not exactly clear, but the best I could find. As I understand it
Packages are simply bundles of classes, or any other UT objects (utx, etc.)
Classes have their own hierarchy, via the Class tree, which is the view you get in the editor (usually filtered only by placable actors).
Which would seem to imply that all class names need to be unique, which is why

Code: Select all

class CSNephthys extends NephthysTank;
works... it doesn't care how it was loaded (ie. what package)

Which if I understand it correctly its important that Classes are unique. Say you have two tanks each with a differnt TankSecondaryTurret class... the way I understand it which every Package loaded last replaces that class (last write wins). So in my case with the FireTank code that had MinotaurTurret in it potentially (depending on what got loaded by the engine first) replacing Minotaur Turret defined in the Mino package. IMO, this could really cause some strange side effects -- vehicles acting strange, incosistent weapons/damage etc. I think what was intended here was for the FireTank to have reduced damage from Mino gunners...which worked as long as the Firetank got loaded last.

So we should be cautious on ClassNames to make them unique within the Class Namespace.

PS. Still doesn't explain the PlasmaTank / Short Circuit conflict. But I like loading maps with references to package.vehicle because it makes vehicles consistent and easy to update without editing each and every map, so I'll live with the mystery now.
Post Reply