Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Class MainBattleTankTurret : Actor
- {
- Default
- {
- Radius 48;
- Height 28;
- Scale 0.75;
- DeathHeight 28;
- Mass 20000;
- FriendlySeeBlocks 256;
- MaxTargetRange 10240; //The attack related flags and properties will probably go to the turret.
- RipLevelMin 5;
- Monster;
- -ActivateMCross;
- -CanUseWalls;
- -CanPushWalls;
- -IsMonster;
- +LookAllAround;
- +MissileMore;
- +NeverRespawn; //Doesnt make sense for a tank to magically reappear.
- +Telestomp;
- +NoTelefrag;
- +NoFear;
- +DontSquash;
- +DontHarmClass;
- +DontDrain;
- +NoBlood;
- +NoPain;
- +PuffOnActors;
- +NeverTarget;
- +NoTarget;
- +NotAutoAimed;
- +NoDamage;
- }
- enum TurretSoundChannels {CHAN_TURRET = 183745}
- Override Void Tick()
- {
- Super.Tick();
- //This is how the turret actually stays attached to the chassis.
- If (Master) //Only warp to the master actor if it actually exists.
- {
- Warp (Master,zofs:60,flags:WARPF_NOCHECKPOSITION|WARPF_STOP|WARPF_INTERPOLATE|WARPF_USECALLERANGLE|WARPF_COPYPITCH);
- A_CopyFriendliness(); //Oh and also copy whatever the chassis' affiliation is.
- }
- If (IsFrozen())
- {
- A_StopSound (CHAN_TURRET);
- Return;
- }
- If (InStateSequence (CurState, ResolveState ("FaceTarget")))
- {
- A_StartSound ("MBT/TurretRotate",CHAN_TURRET,CHANF_LOOPING);
- }
- }
- Override Int DamageMobj (Actor inflictor, Actor source, int damage, Name mod, int flags, double angle)
- {
- If (Master)
- {
- Master.DamageMobj (inflictor,source,damage,mod,flags,angle);
- }
- Return 0;
- }
- States
- {
- Spawn:
- MBTI A 8 A_LookEx (maxseedist:10240+2048,maxheardist:3072,label:"FaceTarget");
- Loop;
- FaceTarget:
- MBTI A 2
- {
- //Add a small earthquake when the cannon fires.
- A_FaceTarget (4,5,flags:FAF_MIDDLE);
- FLineTraceData CanHitTarget;
- LineTrace (self.angle,10240,Clamp(self.pitch, -45, 45),TRF_THRUHITSCAN|TRF_NOSKY|TRF_SOLIDACTORS,data:CanHitTarget);
- If (CanHitTarget.HitActor && Target && CanHitTarget.HitActor == Target)
- {
- SetStateLabel ("FireCannon");
- }
- Return null;
- }
- Loop;
- FireCannon: //Each MBTI frame is about a second
- MBTI AAAAAAAAAAAAAAAA 2 A_FaceTarget (4,5,flags:FAF_MIDDLE);
- MBTI AAAAAAAAAAAAAAAA 2 A_FaceTarget (4,5,flags:FAF_MIDDLE);
- MBTI AAAAAAAAAAAAAAAA 2 A_FaceTarget (4,5,flags:FAF_MIDDLE);
- MBTF A 4 Bright
- {
- A_SpawnProjectile ("Rocket"); //Placeholder
- A_StartSound ("MBT/TankShot",attenuation:0.25);
- }
- MBTF B 4 Bright A_StopSound (CHAN_TURRET); //Stop the rotating sound.
- MBTF CDEFGH 4 Bright;
- Goto Spawn;
- Death: //Major placeholder, figure out how to make the turret die once the chassis dies first.
- MBTD ABCD 4 Bright;
- Loop;
- }
- }
RAW Paste Data