Arbalests 2.0

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

Arbalests 2.0

Post by pooty »

So I cleaned up the Arbalests aka Missle Tanks and pulled them out of maps and into their own package ArbalestsV2Omni.u. And pushed source to the GitHub. New Texture file Arbalests_Tex.utx Does depend on FireVehiclesV2Omni.u

There's two variants:
Arbalest Bomber 2.0 - This is the one from DJY. Rockets, HE, Incindary, Cluster Bomb The Incidenary uses the same fireball as the FireTank, so it will set stuff on fire when it hits.

Arbalest Nova 2.0 - This is the other one. Rockets, Weak Deemers, Nova Missle. Updated the Nova Missle to be much faster (it was nearly useless before, now same speed as the weak deemers with 3 minute reload time).

Both have a unique Texture, basically an Icon on the sides one showing cluster bomb for Bomber variant, other a mushroom cloud for the Nova.

I should add that I don't see any need to fix/adjust the broken Nexis. The Arbalest Nova should suffice for making big booms.
User avatar
pooty
Posts: 4535
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

Re: Arbalests 2.0

Post by pooty »

Getting this Warning in the logs:

Code: Select all

Warning: ArbalestRocketLauncherBomb ONS-Torlan-VehicleTester-V4.ArbalestRocketLauncherBomb (Function ArbalestsV2Omni.ArbalestRocketLauncherBomb.ProjectileFireMode.Fire:02AC) Accessed None 'Possessor'
Warning: ArbalestRocketLauncherBomb ONS-Torlan-VehicleTester-V4.ArbalestRocketLauncherBomb (Function ArbalestsV2Omni.ArbalestRocketLauncherBomb.ProjectileFireMode.Fire:02B4) Attempt to assign variable through None
Warning: ArbalestRocketLauncherBomb ONS-Torlan-VehicleTester-V4.ArbalestRocketLauncherBomb (Function ArbalestsV2Omni.ArbalestRocketLauncherBomb.ProjectileFireMode.Fire:039A) Accessed None 'Possessor'
Warning: ArbalestRocketLauncherBomb ONS-Torlan-VehicleTester-V4.ArbalestRocketLauncherBomb (Function ArbalestsV2Omni.ArbalestRocketLauncherBomb.ProjectileFireMode.Fire:03A2) Accessed None
Warning: ArbalestRocketLauncherBomb ONS-Torlan-VehicleTester-V4.ArbalestRocketLauncherBomb (Function ArbalestsV2Omni.ArbalestRocketLauncherBomb.ProjectileFireMode.Fire:02AC) Accessed None 'Possessor'
Warning: ArbalestRocketLauncherBomb ONS-Torlan-VehicleTester-V4.ArbalestRocketLauncherBomb (Function ArbalestsV2Omni.ArbalestRocketLauncherBomb.ProjectileFireMode.Fire:02B4) Attempt to assign variable through None
Warning: ArbalestRocketLauncherBomb ONS-Torlan-VehicleTester-V4.ArbalestRocketLauncherBomb (Function ArbalestsV2Omni.ArbalestRocketLauncherBomb.ProjectileFireMode.Fire:039A) Accessed None 'Possessor'
Warning: ArbalestRocketLauncherBomb ONS-Torlan-VehicleTester-V4.ArbalestRocketLauncherBomb (Function ArbalestsV2Omni.ArbalestRocketLauncherBomb.ProjectileFireMode.Fire:03A2) Accessed None
Warning: ArbalestRocketLauncherBomb ONS-Torlan-VehicleTester-V4.ArbalestRocketLauncherBomb (Function ArbalestsV2Omni.ArbalestRocketLauncherBomb.ProjectileFireMode.Fire:02AC) Accessed None 'Possessor'
Warning: ArbalestRocketLauncherBomb ONS-Torlan-VehicleTester-V4.ArbalestRocketLauncherBomb (Function ArbalestsV2Omni.ArbalestRocketLauncherBomb.ProjectileFireMode.Fire:02B4) Attempt to assign variable through None
Warning: ArbalestRocketLauncherBomb ONS-Torlan-VehicleTester-V4.ArbalestRocketLauncherBomb (Function ArbalestsV2Omni.ArbalestRocketLauncherBomb.ProjectileFireMode.Fire:039A) Accessed None 'Possessor'
Warning: ArbalestRocketLauncherBomb ONS-Torlan-VehicleTester-V4.ArbalestRocketLauncherBomb (Function ArbalestsV2Omni.ArbalestRocketLauncherBomb.ProjectileFireMode.Fire:03A2) Accessed None
Warning: ArbalestRocketLauncherBomb ONS-Torlan-VehicleTester-V4.ArbalestRocketLauncherBomb (Function ArbalestsV2Omni.ArbalestRocketLauncherBomb.ProjectileFireMode.Fire:02AC) Accessed None 'Possessor'
Warning: ArbalestRocketLauncherBomb ONS-Torlan-VehicleTester-V4.ArbalestRocketLauncherBomb (Function ArbalestsV2Omni.ArbalestRocketLauncherBomb.ProjectileFireMode.Fire:02B4) Attempt to assign variable through None
Warning: ArbalestRocketLauncherBomb ONS-Torlan-VehicleTester-V4.ArbalestRocketLauncherBomb (Function ArbalestsV2Omni.ArbalestRocketLauncherBomb.ProjectileFireMode.Fire:039A) Accessed None 'Possessor'
Warning: ArbalestRocketLauncherBomb ONS-Torlan-VehicleTester-V4.ArbalestRocketLauncherBomb (Function ArbalestsV2Omni.ArbalestRocketLauncherBomb.ProjectileFireMode.Fire:03A2) Accessed None
From this function (which I didn't change):

Code: Select all

state ProjectileFireMode
{
	function Fire(Controller C)
	{
		local ArbalestRocketBombPrime R;
		local float BestAim, BestDist;
	   	local ArbalestGuidedWarhead M;
	    	local PlayerController Possessor;
		local rotator MissileRot;

		if (firemode==1)
		{

			R = ArbalestRocketBombPrime(SpawnProjectile(ProjectileClass, False));
			if (R != None)
			{
				if (AIController(C) != None)
				   	R.HomingTarget = C.Enemy;
				else
				{
					BestAim = LockAim;
					R.HomingTarget = C.PickTarget(BestAim, BestDist, vector(WeaponFireRotation), WeaponFireLocation, MaxLockRange);
				}
			}
		}
		if (Firemode==2)
		{
        		MissileRot=C.Rotation;
        		M = Spawn(Class'ArbalestGuidedWarhead',Self,,Location+Vect(0,0,256),MissileRot);

			if (M != None)
			{
				M.OldPawn = Instigator;
				Possessor = PlayerController(Instigator.Controller);
				Possessor.bAltFire = 0;
				if ( Possessor != None )
				{
					if ( Instigator.InCurrentCombo() )
						Possessor.Adrenaline = 0;
					Possessor.UnPossess();
					Instigator.SetOwner(Possessor);
					Instigator.PlayerReplicationInfo = Possessor.PlayerReplicationInfo;
					Possessor.Possess(M);
				}
				M.Velocity = M.AirSpeed * Vector(M.Rotation);
				M.Acceleration = M.Velocity;
				M.MyTeam = Possessor.PlayerReplicationInfo.Team;
			}

		}
		if (Firemode==3)
		{
        		MissileRot=C.Rotation;
        		M = Spawn(Class'ArbalestIncendiaryGuidedWarhead',Self,,Location+Vect(0,0,256),MissileRot);

			if (M != None)
			{
				M.OldPawn = Instigator;
				Possessor = PlayerController(Instigator.Controller);
				Possessor.bAltFire = 0;
				if ( Possessor != None )
				{
					if ( Instigator.InCurrentCombo() )
						Possessor.Adrenaline = 0;
					Possessor.UnPossess();
					Instigator.SetOwner(Possessor);
					Instigator.PlayerReplicationInfo = Possessor.PlayerReplicationInfo;
					Possessor.Possess(M);
				}
				M.Velocity = M.AirSpeed * Vector(M.Rotation);
				M.Acceleration = M.Velocity;
				M.MyTeam = Possessor.PlayerReplicationInfo.Team;
			}
		}
		if (Firemode==4)
		{
        		MissileRot=C.Rotation;
        		M = Spawn(Class'ArbalestClusterGuidedWarhead',Self,,Location+Vect(0,0,256),MissileRot);

			if (M != None)
			{
				M.OldPawn = Instigator;
				Possessor = PlayerController(Instigator.Controller);
				Possessor.bAltFire = 0;
				if ( Possessor != None )
				{
					if ( Instigator.InCurrentCombo() )
						Possessor.Adrenaline = 0;
					Possessor.UnPossess();
					Instigator.SetOwner(Possessor);
					Instigator.PlayerReplicationInfo = Possessor.PlayerReplicationInfo;
					Possessor.Possess(M);
				}
				M.Velocity = M.AirSpeed * Vector(M.Rotation);
				M.Acceleration = M.Velocity;
				M.MyTeam = Possessor.PlayerReplicationInfo.Team;
			}
		}
	}
Snarf any thoughts?
User avatar
captainsnarf
Posts: 2713
Joined: Tue Jul 06, 2021 1:51 pm
Location: Washington
Server Sponsor: Yes
Server Admin: Yes
Contact:

Re: Arbalests 2.0

Post by captainsnarf »

Not sure why it's None, but whatever lol.

The 'None' gaurds are incorrect. Added comments below

Code: Select all

if (Firemode==2)
		{
        		MissileRot=C.Rotation;
        		M = Spawn(Class'ArbalestGuidedWarhead',Self,,Location+Vect(0,0,256),MissileRot);

			if (M != None)
			{
				M.OldPawn = Instigator;
				Possessor = PlayerController(Instigator.Controller);
                                 
                                // snarf - move this inside the if statement below.
				Possessor.bAltFire = 0;

				if ( Possessor != None )
				{
					if ( Instigator.InCurrentCombo() )
						Possessor.Adrenaline = 0;
					Possessor.UnPossess();
					Instigator.SetOwner(Possessor);
					Instigator.PlayerReplicationInfo = Possessor.PlayerReplicationInfo;
					Possessor.Possess(M);
				}
				M.Velocity = M.AirSpeed * Vector(M.Rotation);
				M.Acceleration = M.Velocity;

                                // snarf 1 - move this inside the if statement above                                
                                // 2 - check if Possessor.PlayerReplicationInfo is None also before accessing Team
				M.MyTeam = Possessor.PlayerReplicationInfo.Team;
			}

each fire mode from 2 to 4? has the same issue
User avatar
captainsnarf
Posts: 2713
Joined: Tue Jul 06, 2021 1:51 pm
Location: Washington
Server Sponsor: Yes
Server Admin: Yes
Contact:

Re: Arbalests 2.0

Post by captainsnarf »

Oh and this line

Code: Select all

Possessor = PlayerController(Instigator.Controller);
That's a big assumption. It might be a PlayerController. It might be an AIController (bot). There are a lot of controller classes.
User avatar
pooty
Posts: 4535
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

Re: Arbalests 2.0

Post by pooty »

I think you've got it...I bet it was a bot, as that error was when I was play testing them and the bots kept taking my vehicles.
User avatar
pooty
Posts: 4535
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

Re: Arbalests 2.0

Post by pooty »

So a bit of an update 2.1 for the Arbalests (Missle Tanks)

The ClusterBomb version is unchanged except for changing name High Explosive to Weak Redeemer (its exactly same projectile).

So the ArbalestBomb has:
Homing Missles, Weak Redeemers, Incindiary Bomb (gave this 4 more fire chunks, wider spread for more punch and to make it different than cluster, its also does the "blinding smoke" aka Firetank/dragon), Cluster Bomb. Cluster bomb is still going to be devastinging against direct node/vehicle hits -- its also the fastest missle of the bunch -- I feel that should be changed, but its so ingrained in DJY play it wouldn't feel right changing it...

So the ArbalestNova has:
Homing Missles, Weak Redeemers, Nova Missle (Bigger Redeemer) 2 mins between reloading, it was 3 mins, and that made it too long especially compared to the other Missle tank, which has no reloading time.

Now if this solves the suspect issue on DJY. No idea.

Toying with the idea of MegaMissleTank, Homing Missles, and two timed payloads NovaMissle, and NuclearStrikeMissle...
User avatar
pooty
Posts: 4535
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

Re: Arbalests 2.0

Post by pooty »

Arbalests 2.3 -
Cluster Bomb Arbalest no change. Can't find anything that would make DJY crash -- and its worked fine on other maps.. its just that map..
Nova Arbalest - Reduced time for Nova Missle to 75 seconds. Countdown is now displayed in second till next reload.

The reload used to be 120, forever really, changed it to 90s and some felt that was too long, lets see how 75s plays, and its good to see how much time remaining.
Post Reply