actor Stoneman : TankArmorClass
{
	Player.ScoreIcon "STONMUGS"
	player.startitem "BaseFlagPack", 1
	player.startitem "TankArmor"
	player.soundclass "stonemanc"
	player.displayname "Stoneman"
	player.jumpz 14
	player.forwardmove 0.85, 0.85
	player.sidemove 0.83, 0.83
	player.startitem "PowerStoneBoss"
	player.startitem "Base28Ammo", 28
	player.startitem "UltimateAttackItem1", 1
	player.startitem "UltSoundWatcherSpawn1"
	player.startitem "StoneEntrance"
	player.startitem "IsFromMM5"
	Player.ViewHeight 76
	projectilepassheight 95
	States
	{
		Spawn:
		STOM A 0
		STOM B 1 A_JumpIf(z-floorz>0, "Jumping")
		STOM A 1 A_JumpIf(z-floorz>0, "Jumping")
		Goto Spawn+2
		
		See:
		STOM BBBBBBBCCCCCCCDDDDDDDEEEEEEE 1 A_JumpIf(z-floorz>0, "Jumping")
		Goto Spawn

		Animation7:
		Jumping:
		STOM J 1 A_JumpIf(z-floorz<=0, "Land")
		loop

		Land:
		STOM MMM 1 A_JumpIf(z-floorz>0, "Jumping")
		goto Spawn
		
		Missile:
		STOM F 0 A_JumpIfInventory("StoneM2Anim",1,"Missile2")
		STOM FGFGFGFG 1 A_JumpIf(z-floorz>0, "JumpingMissile")
		goto Spawn+2
		
		JumpingMissile:
		STOM KLKLKLKL 1 A_JumpIf(z-floorz<=0, "Missile")
		goto Spawn+2
		
		Animation8:
		Missile2:
		STOM S 5
		STOM SSSSS 1 A_JumpIfInventory("StoneM2Anim",1,"Missile2")
		goto Spawn+2
		
		Animation1:
		STOM IIIIIIIII 1 A_JumpIf(z-floorz>0, "JumpingA1")
		goto Spawn+2
		
		JumpingA1:
		STOM JJJJJJJJJ 1 A_JumpIf(z-floorz<=0, "Animation1")
		goto Spawn+2
		
		Animation2:
		STOM T 30
		goto Spawn+2
		
		Animation3:
		STOM U 1
		loop
		
		Animation4:
		ST52 ABCDEFGH 2
		goto Spawn+2
		
		Animation5:
		ST52 IJKLMNOP 2
		loop
		
		Animation6:
		STOM V 35
		goto Spawn+2
		
		Animation9:
		STOM NO 3
		STOM P 15
		STOM ONQR 3
		goto Spawn+2
		
		ClassTimeStop:
		PLAY A 0 SetPlayerProperty(0,1,4)
		PLAY A 0 ACS_Execute(528,0)
		STOM AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
		PLAY A 0 SetPlayerProperty(0,0,4)
		Goto pain+1
		ClassPain:
		STOM H 0 A_JumpIfInventory("GalaxyFlySlow",1,"ClassPain.Spin")
		STOM HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
		Goto Spawn+1
		ClassPain.Spin:
		ST52 IJKLMNOP 2 A_SpawnItem("PainFX",0,3)
		Goto Animation5
		ClassDeath:
		STOM H 20 ACS_ExecuteAlways(999,0,0)
		STOM H 0 A_PlayerScream
		NOFX A 0 A_SpawnItemEx("FakeDeathFX",0,0,32)
		NOFX A 1 A_CheckPlayerDone
		wait
		ClassIceDeath:
		STOM A 35
		NOFX A 0 A_SpawnItemEx("FrozenDeathFX",0,0,16)
		NOFX A 1 A_CheckPlayerDone
		wait
		WeaponGetM:
		CUTM H 0 A_JumpIfInTargetInventory("PowerStoneWepM",1,2)
		CUTM H 0 A_GiveToTarget("WeaponGetter")
		CUTM H 0 A_GiveToTarget("PowerStoneWepM")
		goto ClassDeath
	}
}

actor StoneEntrance : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("StoneEntranceFX",10,0,0,10,0,0,90)
TNT1 A 0 A_SpawnItemEx("StoneEntranceFX",10,0,0,10,0,0,270)
stop
}
}

actor PowerStoneBoss : VCBaseWeapon 
{
+WEAPON.NOAUTOAIM
Obituary "$OB_STONEMAN1"
weapon.Ammotype "Base28Ammo"
States
{
Ready:
TNT1 A 0
ST5H A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,9)) ST5H A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
ST5H A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,9)) ST5H A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
ST5H A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,9)) ST5H A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
ST5H A 0 A_GiveInventory("Base28Ammo",1)
goto Ready

Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
ST5H A 1 A_Lower
Loop

Select:
TNT1 A 0
TNT1 A 0 ACS_ExecuteAlways(991,0,802)
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
ST5H A 1 A_Raise
Loop


Fire:
ST5H BCDEF 1

Hold1:
TOAD A 0 A_GiveInventory("ToadChargeDamageGive")
ST5H GG 1 A_GiveInventory("StoneManCharge",1)
ST5H G 0 A_Refire("Hold2")
goto Fire1

Hold2:
ST5H HH 1 A_GiveInventory("StoneManCharge",1)
ST5H H 0 A_Refire("Hold1")
goto Fire1

Fire1:
ST5H A 0 A_GiveInventory("StoneM1Handler",1)
TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
ST5H A 1 Offset(0,24) A_ClearRefire
ST5H A 1 Offset(0,16)
ST5H I 1 Offset(-2,32)
ST5H I 1 Offset(2,32)
ST5H I 1 Offset(-2,32)
ST5H I 1 Offset(2,32)
ST5H I 5 A_WeaponReady(WRF_NOFIRE)
ST5H A 2 Offset(0,16) A_ClearRefire
ST5H A 2 Offset(0,24)
ST5H A 4 A_WeaponReady(WRF_NOFIRE)
goto Ready

Fire.Throw:
ST5H A 0 A_GiveInventory("StoneM1ThrowHandler",1)
goto Altfire.Finish


Altfire:
RATU A 0 A_JumpIfInventory("NoAltfire",1,"Ready")
ST5H A 0 A_JumpIfInventory("StoneGrabTimer",1,"Altfire.Throw")
ST5H A 0 A_CheckFloor("Altfire.Ground")
ST5H A 0 A_JumpIf(callACS("core_CheckFooting")== 1 || (abs(z-floorz) < 30 && momz <= 0),"Altfire.Ground")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",7)
ST5H I 1 ThrustThingZ(0,70,1,0)
DRIH A 0 ACS_Execute(191,0,APROP_JumpZ,0,1)

Altfire.Fall:
ST5H I 1 A_GiveInventory("StoneStompHandler",1)
ST5H I 0 A_CheckFloor("Altfire.Stomp")
loop

Altfire.Stomp:
STOM A 0 A_GiveInventory("StoneStompLandHandler",1)
ST5H JKLM 2
TNT1 A 17
ST5H MLKJA 2
TNT1 A 0 A_ChangeFlag("INVULNERABLE",0)
TNT1 A 0 A_TakeInventory("InvProtection",1)
TNT1 A 0 A_TakeInventory("NoSpeed")
DRIH A 0 ACS_Execute(191,0,APROP_JumpZ,14,1)
goto Ready

Altfire.Ground:
ST5H O 0 A_GunFlash("Flash.M2a")

Altfire.Charge:
TOAD A 0 A_GiveInventory("ToadChargeDamageGive")
ST5H O 0 A_GiveInventory("StoneM2Anim",1)
TNT1 A 0 A_FireCustomMissile("StonePreviewMark",0,0,0,26)
TNT1 A 0 A_JumpIfInventory("StoneManCooldown",1,"Altfire.Release")
ST5H O 1 A_GiveInventory("StoneManCharge",1)
ST5H O 0 A_Refire("Altfire.Charge")
goto Altfire.Release

Altfire.Release:
ST5H O 0 A_GiveInventory("StoneM2Anim",1)
ST5H S 1 A_CheckFloor("Altfire.Land")
loop

Altfire.Land:
ST5H S 0 A_GunFlash("Flash.M2b")
ST5H O 0 A_JumpIfInventory("StoneManCharge",0,"Altfire.Release2")

Altfire.Release1:
TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
ST5H S 0 A_GiveInventory("StoneM2Handler",1)
ST5H S 1 Offset(-1,29) A_ClearRefire
ST5H S 1 Offset(-2,26)
ST5H S 1 Offset(-3,23)
ST5H S 1 Offset(-5,19)
ST5H S 31 Offset(-8,15)
goto Ready

Altfire.Release2:
TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
ST5H S 0 A_GiveInventory("StoneM2Handler",1)
ST5H S 8 A_ClearRefire
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
ST5H S 0 A_WeaponReady(WRF_NOFIRE)
goto Altfire.Wait

Altfire.Wait:
ST5H A 0 SetPlayerProperty(0,1,0)
ST5H T 0 A_GiveInventory("CutterFlag",1)
ST5H N 1 Offset(0,-40) A_JumpIfInventory("CutterFlag",350,"Altfire.Grab")
goto Altfire.Wait

Altfire.Grab:
TNT1 A 0 A_GiveInventory("StoneGrabHandler",1)
ST5H R 1 Offset(0,20) 
ST5H R 1 Offset(0,32)
ST5H R 1 Offset(0,38)
ST5H R 16 Offset(0,32)
goto Altfire.Spin

Altfire.Spin:
ST5H A 0 SetPlayerProperty(0,0,0)
ST5H R 0 ACS_NamedExecuteWithResult("VC_SetState",5)
ST5H R 0 A_PlaySoundEx("misc/kingswing","Weapon")
ST5H R 0 A_GiveInventory("StoneM2HitboxHandler",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==3,"Fire.Throw")
ST5H R 1 Offset(50,32) A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"Altfire.Throw")
ST5H R 0 A_GiveInventory("StoneM2HitboxHandler",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==3,"Fire.Throw")
ST5H R 1 Offset(150,32) A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"Altfire.Throw")
ST5H R 0 A_GiveInventory("StoneM2HitboxHandler",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==3,"Fire.Throw")
ST5H R 1 Offset(250,32) A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"Altfire.Throw")
ST5H R 0 A_GiveInventory("StoneM2HitboxHandler",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==3,"Fire.Throw")
ST5H R 1 Offset(350,32) A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"Altfire.Throw")
ST5H R 0 A_GiveInventory("StoneM2HitboxHandler",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==3,"Fire.Throw")
ST5H R 1 Offset(-350,32) A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"Altfire.Throw")
ST5H R 0 A_GiveInventory("StoneM2HitboxHandler",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==3,"Fire.Throw")
ST5H R 1 Offset(-250,32) A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"Altfire.Throw")
ST5H R 0 A_GiveInventory("StoneM2HitboxHandler",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==3,"Fire.Throw")
ST5H R 1 Offset(-150,32) A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"Altfire.Throw")
ST5H R 0 A_GiveInventory("StoneM2HitboxHandler",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==3,"Fire.Throw")
ST5H R 1 Offset(-50,32) A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"Altfire.Throw")
ST5H R 0 A_PlaySoundEx("misc/kingswing","Weapon")
ST5H R 0 A_GiveInventory("StoneM2HitboxHandler",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==3,"Fire.Throw")
ST5H R 1 Offset(50,32) A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"Altfire.Throw")
ST5H R 0 A_GiveInventory("StoneM2HitboxHandler",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==3,"Fire.Throw")
ST5H R 1 Offset(150,32) A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"Altfire.Throw")
ST5H R 0 A_GiveInventory("StoneM2HitboxHandler",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==3,"Fire.Throw")
ST5H R 1 Offset(250,32) A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"Altfire.Throw")
ST5H R 0 A_GiveInventory("StoneM2HitboxHandler",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==3,"Fire.Throw")
ST5H R 1 Offset(350,32) A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"Altfire.Throw")
ST5H R 0 A_GiveInventory("StoneM2HitboxHandler",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==3,"Fire.Throw")
ST5H R 1 Offset(-350,32) A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"Altfire.Throw")
ST5H R 0 A_GiveInventory("StoneM2HitboxHandler",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==3,"Fire.Throw")
ST5H R 1 Offset(-250,32) A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"Altfire.Throw")
ST5H R 0 A_GiveInventory("StoneM2HitboxHandler",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==3,"Fire.Throw")
ST5H R 1 Offset(-150,32) A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"Altfire.Throw")
ST5H R 0 A_GiveInventory("StoneM2HitboxHandler",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==3,"Fire.Throw")
ST5H R 1 Offset(-50,32) A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"Altfire.Throw")
ST5H R 0 A_JumpIfInventory("StoneGrabTimer",0,"Altfire.Throw")
loop

Altfire.Throw:
TNT1 A 0 A_GiveInventory("StoneM2ThrowHandler",1)

Altfire.Finish:
ST5H N 0 A_WeaponReady(WRF_NOFIRE)
ST5H N 0 A_TakeInventory("GalaxyFlySlow",999)
ST5H N 1 Offset(50,32) ACS_NamedExecuteWithResult("VC_SetState",4)
ST5H N 1 Offset(100,32) ACS_NamedExecuteWithResult("VC_SetState",4)
ST5H N 1 Offset(150,32)
ST5H N 1 Offset(200,32)
ST5H N 1 Offset(250,32)
ST5H N 1 Offset(300,32)
ST5H N 1 Offset(350,32)
ST5H N 1 Offset(400,32)
ST5H N 1 Offset(-400,32)
ST5H N 1 Offset(-350,32)
ST5H N 1 Offset(-300,32)
ST5H N 1 Offset(-250,32)
ST5H N 1 Offset(-200,32) A_TakeInventory("WeaponCharge",999)
ST5H N 1 Offset(-150,32) A_TakeInventory("UltAttackFlag",999)
ST5H N 1 Offset(-100,32) A_TakeInventory("CutterFlag",999)
ST5H N 0 A_GiveInventory("StoneManCooldown",350)
ST5H N 0 A_TakeInventory("StoneGrabTimer",999)
ST5H N 1 Offset(-50,32) A_SpawnItemEx("StoneCooldownWatcher",1)
goto Ready+1


UltimateAttack:
ST5H A 1
TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,41)
//GRAH A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
GRAH A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
TNT1 A 0 A_TakeInventory("ShortUltimateAmmo",999)
ST5H S 0 A_GunFlash("Flash.M2a")
ST5H O 8 ACS_NamedExecuteWithResult("VC_SetState",8)

Ult.Wait:
ST5H O 0 A_GiveInventory("StoneM2Anim",1)
ST5H S 1 A_CheckFloor("Ult.Land")
loop

Ult.Land:
ST5H S 0 A_GunFlash("Flash.M2b")
ST5H S 0 A_PlaySoundEx("weapon/stoneult", "Weapon")
TNT1 A 0 A_Quake(1,28,0,300)
TNT1 A 0 A_Quake(2,21,0,300)
TNT1 A 0 A_Quake(3,14,0,300)
TNT1 A 0 A_Quake(4,7,0,300)
TNT1 AAAAAAAA 0 A_SpawnItemEx("StoneCrumbleFX",8,0,2,frandom(3,6),0,frandom(5,8),random(-30,30),1)
ST5H A 0 A_SpawnItemEx("StoneManHand",0,0,0,30,0,0,0,1)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
ST5H S 3
ST5H S 1 Offset(-4,35)
ST5H S 1 Offset(-8,39)
ST5H S 1 Offset(-13,45)
ST5H S 1 Offset(-19,51)
ST5H S 1 Offset(-26,59)
ST5H S 1 Offset(-37,69)
ST5H S 1 Offset(-50,81)
ST5H S 1 Offset(-65,95)
ST5H S 1 Offset(-77,111)
TNT1 A 15 A_WeaponReady(WRF_NOFIRE)
ST5H A 2 Offset(0,96)
ST5H A 2 Offset(0,80)
ST5H A 2 Offset(0,64)
ST5H A 2 Offset(0,48)
ST5H A 2 Offset(0,32) A_TakeInventory("UltAttackFlag",999)
goto Ready

Altfire.Release1:
ST5H S 0 A_GiveInventory("StoneM2Handler",1)
ST5H S 1 Offset(-1,29) A_ClearRefire
ST5H S 1 Offset(-2,26)
ST5H S 1 Offset(-3,23)
ST5H S 1 Offset(-5,19)
ST5H S 31 Offset(-8,15)
goto Ready
Flash.M2a:
ST5H P 1 A_JumpIfInventory("IsDead",1,"NoFlash")
loop

Flash.M2b:
ST5H QQ 1 A_JumpIfInventory("IsDead",1,"NoFlash")
stop
}
}

actor StoneManCharge : Ammo
{
	inventory.amount 1
	inventory.maxamount 48
	+INVENTORY.IGNORESKILL
}

actor StoneManCooldown : Ammo
{
	inventory.amount 1
	inventory.maxamount 350
	+INVENTORY.IGNORESKILL
}

actor StoneGrabTimer : Ammo
{
	inventory.amount 1
	inventory.maxamount 144
	+INVENTORY.IGNORESKILL
}

actor StoneM2Anim : Powerup
{
Powerup.Duration 5
}

actor StoneM1Handler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
TNT1 A 0 A_TakeInventory("Base28Ammo",4)
TNT1 A 0 A_PlaySoundEx("weapon/powerstone","Weapon")
TNT1 A 0 A_JumpIfInventory("StoneManCharge",0,"Pickup2")
TNT1 A 0 A_SpawnItemEx("StoneManPowerStone",28,0,44,0,0,0,0)
TNT1 A 0 A_SpawnItemEx("StoneManPowerStone",28,0,44,0,0,0,180)
goto Finish

Pickup2:
TNT1 A 0 A_PlaySoundEx("weapon/powerstonegb","Body")
TNT1 A 0 A_SpawnItemEx("StoneManPowerStone2",0,0,44,0,0,0,0)
TNT1 A 0 A_SpawnItemEx("StoneManPowerStone2",0,0,44,0,0,0,180)
goto Finish

Finish:
TNT1 A 0 A_TakeInventory("StoneManCharge",999)
stop
}
}

actor StoneManPowerStone
{
species "StonePillarType"
+THRUSPECIES
PROJECTILE
+NOINTERACTION
damagetype "StonemanStone"
Obituary "$OB_STONEMAN1"
Speed 0
radius 1
height 1
scale 2.5
var int user_speed;
var int user_maxturn;
var int user_turndivisor;
var int user_turndivisor_add;
reactiontime 18
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_SetUserVar("user_speed", 40)
TNT1 A 0 A_SetUserVar("user_maxturn", 1000)
TNT1 A 0 A_SetUserVar("user_turndivisor", 10)
TNT1 A 0 A_SetUserVar("user_turndivisor_add", 3)
TNT1 A 0 A_SetAngle(angle-user_maxturn/user_turndivisor)
S5PS A 1 A_ChangeVelocity(user_speed,0,0,CVF_RELATIVE|CVF_REPLACE)
TNT1 A 0 A_SetUserVar("user_turndivisor",user_turndivisor+user_turndivisor_add)
TNT1 A 0 A_SetUserVar("user_speed",user_speed+2)
TNT1 A 0 A_SetAngle(angle-user_maxturn/user_turndivisor)
TNT1 A 0 A_Explode(20,32,0,0,32)
S5PS B 1 A_ChangeVelocity(user_speed,0,0,CVF_RELATIVE|CVF_REPLACE)
TNT1 A 0 A_SetUserVar("user_turndivisor",user_turndivisor+user_turndivisor_add)
TNT1 A 0 A_SetUserVar("user_speed",user_speed+2)
TNT1 A 0 A_SetAngle(angle-user_maxturn/user_turndivisor)
TNT1 A 0 A_Explode(20,32,0,0,32)
S5PS C 1 A_ChangeVelocity(user_speed,0,0,CVF_RELATIVE|CVF_REPLACE)
TNT1 A 0 A_SetUserVar("user_turndivisor",user_turndivisor+user_turndivisor_add)
TNT1 A 0 A_SetUserVar("user_speed",user_speed+2)
TNT1 A 0 A_SetAngle(angle-user_maxturn/user_turndivisor)
TNT1 A 0 A_Explode(20,32,0,0,32)
S5PS D 1 A_ChangeVelocity(user_speed,0,0,CVF_RELATIVE|CVF_REPLACE)
TNT1 A 0 A_SetUserVar("user_turndivisor",user_turndivisor+user_turndivisor_add)
TNT1 A 0 A_SetUserVar("user_speed",user_speed+2)
TNT1 A 0 A_SetAngle(angle-user_maxturn/user_turndivisor)
TNT1 A 0 A_Explode(20,32,0,0,32)
S5PS E 1 A_ChangeVelocity(user_speed,0,0,CVF_RELATIVE|CVF_REPLACE)
TNT1 A 0 A_SetUserVar("user_turndivisor",user_turndivisor+user_turndivisor_add)
loopit:
TNT1 A 0 A_SetUserVar("user_speed",user_speed+2)
TNT1 A 0 A_SetAngle(angle-user_maxturn/user_turndivisor)
TNT1 A 0 A_Explode(20,32,0,0,32)
S5PS D 1 A_ChangeVelocity(user_speed,0,0,CVF_RELATIVE|CVF_REPLACE)
TNT1 A 0 A_SetUserVar("user_turndivisor",user_turndivisor+user_turndivisor_add)
S5PS D 0 A_Countdown
loop
Death:
TNT1 A 0 A_Stop
S5PS DEDCBA 2 A_Explode(16,24,0,0,24)
stop
}
}

actor StoneManPowerStone2 : StoneManPowerStone
{
-NOINTERACTION
damagetype "Stoneman"
radius 32
height 32
damage(29)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
S5PS ABCDE 1
TNT1 A 0 A_SetUserVar("user_speed", 10)
TNT1 A 0 A_SetUserVar("user_maxturn", 1000)
TNT1 A 0 A_SetUserVar("user_turndivisor", 10)
TNT1 A 0 A_SetUserVar("user_turndivisor_add", 2)
TNT1 A 0 A_SetAngle(angle-user_maxturn/user_turndivisor)
S5PS D 1 A_ChangeVelocity(user_speed,0,0,CVF_RELATIVE|CVF_REPLACE)
TNT1 A 0 A_SetUserVar("user_turndivisor",user_turndivisor+user_turndivisor_add)
loopit:
TNT1 A 0 A_SetUserVar("user_speed",user_speed+0.1)
TNT1 A 0 A_SetAngle(angle-user_maxturn/user_turndivisor)
TNT1 A 0 A_Explode(20,24,0,0,24)
S5PS D 1 A_ChangeVelocity(user_speed,0,0,CVF_RELATIVE|CVF_REPLACE)
TNT1 A 0 A_SetUserVar("user_turndivisor",user_turndivisor+user_turndivisor_add)
loop
Death:
TNT1 A 0 A_Stop
S5PS DEDCBA 2
stop
}
}

actor StonemanStoneProtect : PowerProtection
{
Powerup.Duration 28
DamageFactor "StonemanStone", 0.0
}

actor StonePillarMark : FastProjectile
{
PROJECTILE
+SPECTRAL
Radius 1
Height 1
scale 2.5
-DONTBLAST
+RIPPER
+SKYEXPLODE
+THRUACTORS
+DONTREFLECT
speed 1000
damage (0)
States
{
Spawn:
TNT1 A 1
TNT1 A 0 A_SpawnItemEx("StonePillar",-2,0,0,0,0,0)
stop
Death:
TNT1 A 0 A_CheckFloor("Death2")
TNT1 A 0 A_CheckCeiling("Death2")
TNT1 A 0 A_SpawnItemEx("StonePillar",-50,0,0,0,0,0)
stop
Death2:
TNT1 A 0 A_SpawnItemEx("StonePillar",-2,0,0,0,0,0)
stop
}
}

actor StonePillarMark2 : StonePillarMark
{
States
{
Spawn:
TNT1 A 1
TNT1 A 0 A_SpawnItemEx("StonePillar2",-2,0,0,0,0,0)
stop
Death:
TNT1 A 0 A_CheckFloor("Death2")
TNT1 A 0 A_CheckCeiling("Death2")
TNT1 A 0 A_SpawnItemEx("StonePillar2",-50,0,0,0,0,0)
stop
Death2:
TNT1 A 0 A_SpawnItemEx("StonePillar2",-2,0,0,0,0,0)
stop
}
}

actor StonePillar
{
translation "192:192=215:215", "198:198=216:216", "87:87=210:210", "90:90=0:0"
+MISSILE
+SHOOTABLE
species "StonePillarType"
+THRUSPECIES
radius 40
height 120
speed 0
+FLOORHUGGER
+NOCLIP
+NOBLOOD
+SOLID
+TOUCHY
+NOTARGETSWITCH
+DONTREFLECT
+USEDAMAGEEVENTSCRIPT
damagetype "StonemanPillar"
damagefactor "StoneSpin", 0.0
damagefactor "ConcreteSlamCheck", 1.0
damage(0)
Obituary "$OB_STONEMAN2"
reactiontime 420
scale 2.5
var int user_min;
var int user_max;
health 9999
painchance 256
mass 99999
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_SetUserVar("user_min",1)
TNT1 A 0 A_SetUserVar("user_max",3)
TNT1 A 0 A_GiveInventory("IsMegaman",1,AAPTR_DEFAULT)
TNT1 A 1
TNT1 A 0 A_PlaySoundEx("weapon/stonerise","Body")
TNT1 AAA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(10,20),random(0,3),0,random(0,1),random(0,359),1)
STOW G 1 A_Explode(1,64,0,0,64)
TNT1 AAA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(10,20),random(0,3),0,random(0,1),random(0,359),1)
STOW G 1 A_Explode(1,64,0,0,64)
TNT1 AAA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(10,20),random(0,3),0,random(0,1),random(0,359),1)
STOW F 1 A_Explode(1,64,0,0,64)
TNT1 AAA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(10,20),random(0,3),0,random(0,1),random(0,359),1)
STOW F 1 A_Explode(1,64,0,0,64)
TNT1 AAA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(10,20),random(0,3),0,random(0,1),random(0,359),1)
STOW E 1 A_Explode(1,64,0,0,64)
TNT1 AAA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(10,20),random(0,3),0,random(0,1),random(0,359),1)
STOW E 1 A_Explode(1,64,0,0,64)
TNT1 AAA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(10,20),random(0,3),0,random(0,1),random(0,359),1)
STOW D 1 A_Explode(1,64,0,0,64)
TNT1 AAA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(10,20),random(0,3),0,random(0,1),random(0,359),1)
STOW D 1 A_Explode(1,64,0,0,64)
TNT1 AAA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(10,20),random(0,3),0,random(0,1),random(0,359),1)
STOW C 1 A_Explode(1,64,0,0,64)
TNT1 AAA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(10,20),random(0,3),0,random(0,1),random(0,359),1)
STOW C 1 A_Explode(1,64,0,0,64)
TNT1 AAA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(10,20),random(0,3),0,random(0,1),random(0,359),1)
STOW B 1 A_Explode(1,64,0,0,64)
TNT1 AAA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(10,20),random(0,3),0,random(0,1),random(0,359),1)
STOW B 1 A_Explode(1,64,0,0,64)
STOW A 0 A_ChangeFlag("NOCLIP",0)
STOW AA 1 A_JumpIfCloser(84,"Death")
STOW A 0 A_ChangeFlag("TOUCHY",0)
STOW A 0 A_ChangeFlag("MISSILE",0)

loopit:
STOW A 1 A_GiveInventory("CutterFlag",1)
STOW A 0 A_JumpIfInventory("CutterFlag",420,"Death")
STOW A 0 A_JumpIfCloser(84,"KnockCheck")
loop

KnockCheck:
STOW A 1 A_JumpIfInTargetInventory("GalaxyFlySlow",1,"KnockAway")
goto loopit

KnockAway:
STOW A 0 A_GiveToTarget("StoneKnockHandler",1)
stop

Pain.StonePillarBreak:
TNT1 A 0 A_ChangeFlag("NOINTERACTION",1)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(0,112),frandom(1,3),0,frandom(-2,2),random(0,359),1)
TNT1 A 0 A_SetUserVar("user_min",6)
TNT1 A 0 A_SetUserVar("user_max",13)
STOW A 0 A_SpawnItemEx("StoneBreakDamager")
STOW A 0 A_PlaySoundEx("weapon/stonepillarbreak","Auto")
TNT1 A 0 A_Quake(1,25,0,300)
TNT1 A 0 A_Quake(2,20,0,300)
TNT1 A 0 A_Quake(3,15,0,300)
TNT1 A 0 A_Quake(4,10,0,300)
TNT1 A 0 A_Quake(5,5,0,300)
goto Death+1

Death:
STOW A 0 A_PlaySoundEx("weapon/stonebrick","Auto")
STOW A 0 A_PlaySoundEx("weapon/stonecrumble","Body")
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("StoneCrumbleFX",random(0,40),0,random(0,112),random(user_min,user_max),0,random(user_min,user_max),random(0,359),1)
TNT1 A 25
stop
}
}

actor StonePillar2 : StonePillar
{
+MISSILE
species "StonePillarType"
+THRUSPECIES
radius 1
height 1
gravity 3.0
damagetype "StonemanPillar2"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 1
TNT1 A 0 A_PlaySoundEx("weapon/stonerise","Body")
TNT1 AAA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(10,20),random(0,3),0,random(0,1),random(0,359),1)
STOW G 1 A_Explode(25,64,0,0,64)
TNT1 AAA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(10,20),random(0,3),0,random(0,1),random(0,359),1)
STOW G 1 A_Explode(25,64,0,0,64)
TNT1 AAA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(10,20),random(0,3),0,random(0,1),random(0,359),1)
STOW F 1 A_Explode(25,64,0,0,64)
TNT1 AAA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(10,20),random(0,3),0,random(0,1),random(0,359),1)
STOW F 1 A_Explode(25,64,0,0,64)
TNT1 AAA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(10,20),random(0,3),0,random(0,1),random(0,359),1)
STOW E 1 A_Explode(25,64,0,0,64)
TNT1 AAA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(10,20),random(0,3),0,random(0,1),random(0,359),1)
STOW E 1 A_Explode(25,64,0,0,64)
TNT1 AAA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(10,20),random(0,3),0,random(0,1),random(0,359),1)
STOW D 1 A_Explode(25,64,0,0,64)
TNT1 AAA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(10,20),random(0,3),0,random(0,1),random(0,359),1)
STOW D 1 A_Explode(25,64,0,0,64)
TNT1 AAA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(10,20),random(0,3),0,random(0,1),random(0,359),1)
STOW C 1 A_Explode(25,64,0,0,64)
TNT1 AAA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(10,20),random(0,3),0,random(0,1),random(0,359),1)
STOW C 1 A_Explode(25,64,0,0,64)
TNT1 AAA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(10,20),random(0,3),0,random(0,1),random(0,359),1)
STOW B 1 A_Explode(25,64,0,0,64)
TNT1 AAA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(10,20),random(0,3),0,random(0,1),random(0,359),1)
STOW B 1 A_Explode(25,64,0,0,64)
STOW A 0 A_ChangeFlag("FLOORHUGGER",0)
STOW A 0 A_Recoil(15)
STOW A 0 ThrustThingZ(0,160,0,0)
STOW AAAONMLKJIH 1
STOW A 0 A_CustomMissile("ReturningStonePillar",0,0,0,0)
stop
}
}

actor StonemanPillar2Protect : PowerProtection
{
Powerup.Duration 35
DamageFactor "StonemanPillar2", 0.0
}

actor ReturningStonePillar : HardmanKnuckle
{
translation "192:192=215:215", "198:198=216:216"
Radius 0
Height 0
Speed 16
Damage 0
scale 2.5
+RIPPER
+DONTSPLASH
+NOCLIP
+NOINTERACTION
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
STOW A 0 A_FaceTarget
STOW HIJK 1 A_JumpIfCloser(60,"Death")
STOW A 0 A_FaceTarget
STOW LMNO 1 A_JumpIfCloser(60,"Death")
STOW A 0 A_FaceTarget
STOW A 0 A_CustomMissile("ReturningStonePillar",0,0,0,0)
stop
Death:
TNT1 AAA 1 A_GiveToTarget("CutterFlag",350)
stop
}
}
actor StoneDust : BasicClientSide
{
renderstyle translucent
alpha 0.9
States
{
Spawn:
TNT1 A 0
S5PS FGFG 3
loopit:
S5PS HHHHHHHHHH 1 A_FadeOut(0.1)
stop
}
}

actor StoneM2Handler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_Quake(2,5,0,200)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
TNT1 A 0 A_TakeInventory("Base28Ammo",9)
TNT1 A 0 A_PlaySoundEx("weapon/stonepunch","Weapon")
TNT1 A 0 A_JumpIfInventory("StoneManCharge",0,"Pickup2")
TNT1 A 0 A_FireCustomMissile("StonePillarMark",0,0,0,26)
goto Finish

Pickup2:
TNT1 A 0 A_FireCustomMissile("StonePillarMark2",0,0,0,26)
goto Finish

Finish:
TNT1 A 0 A_TakeInventory("StoneManCharge",999)
stop
}
}

actor StoneCrumbleFX : BasicClientSide
{
-NOINTERACTION
PROJECTILE
-NOGRAVITY
+THRUACTORS
radius 8
height 8
gravity 0.9
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Jump(256,"S_1","S_2","S_3")

S_1:
S5PS A 70
stop

S_2:
S5PS B 70
stop

S_3:
S5PS C 70
stop
}
}

actor StoneM1ThrowHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_PlaySoundEx("weapon/photonmissilearm","Auto")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",4)
TNT1 A 0 A_FireCustomMissile("StonePillarThrow1",0,0,0,24)
stop
}
}

actor StoneM2ThrowHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_PlaySoundEx("weapon/photonmissilearm","Auto")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",4)
TNT1 A 0 A_FireCustomMissile("StonePillarThrow2",0,0,0,24)
stop
}
}

actor StoneM2HitboxHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("StoneGrabTimer",1)
TNT1 A 0 A_SpawnItemEx("StoneSpinHitbox",0,0,32,40,0,0,0*45)
TNT1 A 0 A_SpawnItemEx("StoneSpinHitbox",0,0,32,40,0,0,1*45)
TNT1 A 0 A_SpawnItemEx("StoneSpinHitbox",0,0,32,40,0,0,2*45)
TNT1 A 0 A_SpawnItemEx("StoneSpinHitbox",0,0,32,40,0,0,3*45)
TNT1 A 0 A_SpawnItemEx("StoneSpinHitbox",0,0,32,40,0,0,4*45)
TNT1 A 0 A_SpawnItemEx("StoneSpinHitbox",0,0,32,40,0,0,5*45)
TNT1 A 0 A_SpawnItemEx("StoneSpinHitbox",0,0,32,40,0,0,6*45)
TNT1 A 0 A_SpawnItemEx("StoneSpinHitbox",0,0,32,40,0,0,7*45)
stop
}
}

actor StoneSpinHitbox
{
species "StonePillarType"
+THRUSPECIES
PROJECTILE
damagetype "StoneSpin"
Obituary "$OB_STONEMAN2"
Speed 0
damage(40)
radius 24
height 24
scale 2.5
States
{
Spawn:
TNT1 A 3
stop
}
}

actor StoneSpinProtect : PowerProtection
{
Powerup.Duration 35
DamageFactor "StoneSpin", 0.0
}

actor StoneHitSounder : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_PlaySoundEx("weapon/stonehit","StoneMan")
TNT1 A 0 A_Quake(4,20,0,300)
stop
}
}

actor StonePillarThrow1
{
translation "192:192=215:215", "198:198=216:216"
species "StonePillarType"
+THRUSPECIES
PROJECTILE
damagetype "StonemanPillar3"
Obituary "$OB_STONEMAN2"
Speed 80
damage(24)
radius 32
height 32
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
STOW HIJKLMNO 1
goto Spawn+2
Death:
STOW A 0 A_PlaySoundEx("weapon/stonecrumble","Body")
STOW A 0 A_PlaySoundEx("weapon/stonebrick","Auto")
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("StoneCrumbleFX",random(0,40),0,random(-56,56),random(1,7),0,random(1,7),random(0,359),1)
TNT1 A 2
stop
}
}

actor StonePillarThrow2 : StonePillarThrow1
{
speed 50
-NOGRAVITY
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 ThrustThingZ(0,30,0,1)
STOW HIJKLMNO 1
goto Spawn+3
}
}

actor StoneStompHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 ThrustThingZ(0,70,1,0)
TNT1 A 0 A_GiveInventory("VC_Timer",1)
TNT1 A 0 A_SpawnItemEx("StoneStompHitbox",0,0,0,momx,momy,momz)
stop
}
}

actor StoneStompHitbox : BasicExplosion
{
Obituary "$OB_STONEMAN3"
damagetype "StoneStomp"
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("VC_Timer",28,"Spawn2")
TNT1 A 0 A_Explode(25,48,0,0,48)
stop
Spawn2:
TNT1 A 0 A_Explode(50,48,0,0,48)
stop
}
}

actor StoneStompProtect : PowerProtection
{
Powerup.Duration 35
DamageFactor "StoneStomp", 0.0
}

actor StonemanQuakeRadius
{
PROJECTILE
+FLOORHUGGER
+NOINTERACTION
+NOCLIP
Damage(0)
Height 1
Radius 1
Speed 0
States
{
Spawn:
TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusRange",0,0,0,0,0,0,18) TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusRange",0,0,0,0,0,0,36)
TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusRange",0,0,0,0,0,0,54) TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusRange",0,0,0,0,0,0,72)
TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusRange",0,0,0,0,0,0,90) TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusRange",0,0,0,0,0,0,108)
TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusRange",0,0,0,0,0,0,126) TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusRange",0,0,0,0,0,0,144)
TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusRange",0,0,0,0,0,0,162) TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusRange",0,0,0,0,0,0,180)
TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusRange",0,0,0,0,0,0,198) TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusRange",0,0,0,0,0,0,216)
TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusRange",0,0,0,0,0,0,234) TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusRange",0,0,0,0,0,0,254)
TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusRange",0,0,0,0,0,0,270) TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusRange",0,0,0,0,0,0,288)
TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusRange",0,0,0,0,0,0,306) TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusRange",0,0,0,0,0,0,324)
TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusRange",0,0,0,0,0,0,342) TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusRange",0,0,0,0,0,0,360)
stop
}
}

actor StonemanQuakeRadiusRange
{
PROJECTILE
+FLOORHUGGER
+NOINTERACTION
+NOCLIP
Damage(0)
Height 1
Radius 1
Speed 0
States
{
Spawn:
TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusExplode",18) TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusExplode",36)
TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusExplode",54) TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusExplode",72)
TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusExplode",90) TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusExplode",108)
TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusExplode",126) TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusExplode",144)
TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusExplode",162) TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadiusExplode",180)
stop
}
}

actor StonemanQuakeRadiusExplode
{
species "DustManType"
+THRUSPECIES
PROJECTILE
+DONTBLAST
+DONTREFLECT
-NOBLOCKMAP
damagetype "StonemanQuake"
Obituary "$OB_STONEMAN3"
damage (1)
Radius 8
Height 16
Speed 0
scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 1
stop
Death:
XDeath:
stop
}
}

actor StonemanQuakeProtect : PowerProtection
{
	Powerup.Duration -1
	DamageFactor "StonemanQuake", 0.0
}

actor StoneManHand
{
species "StonePillarType"
+THRUSPECIES
PROJECTILE
damagetype "StoneHand"
Obituary "$OB_STONEMAN4"
Speed 80
damage(0)
radius 16
height 16
scale 2.5
+FLOORHUGGER
+RIPPER
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_GiveToTarget("WindUltCooldown",1)
TNT1 A 0 A_PlaySoundEx("weapon/spreaddrillhit","Body")
TNT1 A 0 ACS_NamedExecuteAlways("cbm_missileyank",0,64)
TNT1 A 0 A_JumpIfInTargetInventory("StoneHandHit",1,"loopit2")
STOH A 1 A_Explode(8,48,0,0,48)
TNT1 A 0 ACS_NamedExecuteAlways("cbm_missileyank",0,64)
TNT1 A 0 A_JumpIfInTargetInventory("StoneHandHit",1,"loopit2")
STOH A 1 A_Explode(8,48,0,0,48)
TNT1 A 0 ACS_NamedExecuteAlways("cbm_missileyank",0,64)
TNT1 A 0 A_JumpIfInTargetInventory("StoneHandHit",1,"loopit2")
STOH B 1 A_Explode(8,48,0,0,48)
TNT1 A 0 ACS_NamedExecuteAlways("cbm_missileyank",0,64)
TNT1 A 0 A_JumpIfInTargetInventory("StoneHandHit",1,"loopit2")
STOH B 1 A_Explode(8,48,0,0,48)
TNT1 A 0 A_PlaySoundEx("weapon/spreaddrillhit","Body")
TNT1 A 0 ACS_NamedExecuteAlways("cbm_missileyank",0,64)
TNT1 A 0 A_JumpIfInTargetInventory("StoneHandHit",1,"loopit2")
STOH C 1 A_Explode(8,48,0,0,48)
TNT1 A 0 ACS_NamedExecuteAlways("cbm_missileyank",0,64)
TNT1 A 0 A_JumpIfInTargetInventory("StoneHandHit",1,"loopit2")
STOH C 1 A_Explode(8,48,0,0,48)
TNT1 A 0 ACS_NamedExecuteAlways("cbm_missileyank",0,64)
TNT1 A 0 A_JumpIfInTargetInventory("StoneHandHit",1,"loopit2")
STOH D 1 A_Explode(8,48,0,0,48)
TNT1 A 0 ACS_NamedExecuteAlways("cbm_missileyank",0,64)
TNT1 A 0 A_JumpIfInTargetInventory("StoneHandHit",1,"loopit2")
STOH D 1 A_Explode(8,48,0,0,48)

loopit:
TNT1 A 0 A_SetDamageType("StoneHand")
TNT1 A 0 A_GiveToTarget("WindUltCooldown",1)
TNT1 A 0 A_PlaySoundEx("weapon/spreaddrillhit","Body")
TNT1 A 0 ACS_NamedExecuteAlways("cbm_missileyank",0,64)
STOH E 1 A_Explode(8,48,0,0,48)
TNT1 A 0 A_JumpIfInTargetInventory("StoneHandHit",1,"loopit2")
TNT1 A 0 ACS_NamedExecuteAlways("cbm_missileyank",0,64)
STOH E 1 A_Explode(8,48,0,0,48)
TNT1 A 0 A_JumpIfInTargetInventory("StoneHandHit",1,"loopit2")
TNT1 A 0 ACS_NamedExecuteAlways("cbm_missileyank",0,64)
STOH F 1 A_Explode(8,48,0,0,48)
TNT1 A 0 A_JumpIfInTargetInventory("StoneHandHit",1,"loopit2")
TNT1 A 0 ACS_NamedExecuteAlways("cbm_missileyank",0,64)
STOH F 1 A_Explode(8,48,0,0,48)
TNT1 A 0 A_JumpIfInTargetInventory("StoneHandHit",1,"loopit2")
loop

loopit2:
TNT1 A 0 A_SetDamageType("StonePillarBreak")
TNT1 A 0 A_GiveToTarget("WindUltCooldown",1)
TNT1 A 0 A_PlaySoundEx("weapon/spreaddrillhit","Body")
TNT1 A 0 ACS_NamedExecuteAlways("cbm_missileyank",0,64)
TNT1 AA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(0,8),random(0,3),0,random(0,1),random(0,359),1)
STOH E 1 A_Explode(8,48,0,0,48)
TNT1 A 0 ACS_NamedExecuteAlways("cbm_missileyank",0,64)
TNT1 AA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(0,8),random(0,3),0,random(0,1),random(0,359),1)
STOH E 1 A_Explode(8,48,0,0,48)
TNT1 A 0 ACS_NamedExecuteAlways("cbm_missileyank",0,64)
TNT1 AA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(0,8),random(0,3),0,random(0,1),random(0,359),1)
STOH F 1 A_Explode(8,48,0,0,48)
TNT1 A 0 ACS_NamedExecuteAlways("cbm_missileyank",0,64)
TNT1 AA 0 A_SpawnItemEx("StoneDust",random(0,40),0,random(0,8),random(0,3),0,random(0,1),random(0,359),1)
STOH F 1 A_Explode(8,48,0,0,48)
TNT1 A 0 A_JumpIfInTargetInventory("StoneHandHit",1,"loopit2")
loop

Death:
TNT1 A 0 A_PlaySoundEx("weapon/spreaddrillhit","Body")
STOH DCBA 2
stop
}
}

actor StoneHandProtect : PowerProtection
{
Powerup.Duration 3
DamageFactor "StoneHand", 0.0
DamageFactor "StonePillarBreak", 0.0
}

actor StoneStompLandHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("NoSpeed",1)
TNT1 A 0 A_Stop
TNT1 A 0 A_TakeInventory("Base28Ammo",9)
TNT1 A 0 A_ChangeFlag("INVULNERABLE",1)
TNT1 A 0 A_GiveInventory("InvProtection",1)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",9)
TNT1 A 0 A_TakeInventory("VC_Timer",999)
TNT1 A 0 A_PlaySoundEx("weapon/WilyPressCrush","Body")
TNT1 A 0 A_SpawnItemEx("StonemanQuakeRadius")
TNT1 AAAAAAAAAA 0 A_SpawnItemEx("StoneQuakeDebris",random(32,180),0,0,0,0,random(5,20),random(0,360))
TNT1 A 0 A_Quake(4,35,0,500)
stop
}
}

actor StoneQuakeDebris : GutsQuakeDebris
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_Jump(256,"S_1","S_2")

S_1:
S5PS A 70
stop

S_2:
S5PS B 70
stop
}
}

actor StoneEntranceFX : BasicClientSide
{
translation "192:192=215:215", "198:198=216:216"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
STOW A 7
STOW A 0 A_PlaySoundEx("weapon/stonecrumble","Body")
STOW A 0 A_PlaySoundEx("weapon/stonebrick","Auto")
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("StoneCrumbleFX",random(0,40),0,random(0,112),random(1,3),0,random(1,3),random(0,359),1)
TNT1 A 2
stop
}
}

actor StoneKnockHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_PlaySoundEx("weapon/gutstacklehit","Auto")
TNT1 A 0 A_FireCustomMissile("StonePillarThrow3",0,0,0,24)
stop
}
}

actor StonePillarThrow3 : StonePillarThrow1
{
speed 60
damagetype "StoneKnock"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
STOW I 1
goto Spawn+2
}
}

actor StonePreviewMark : StonePillarMark
{
+DONTSPLASH
States
{
Spawn:
TNT1 A 1
TNT1 A 0 A_SpawnItemEx("StonePillarGhost",-2,0,0,0,0,0)
stop
Death:
TNT1 A 0 A_CheckFloor("Death2")
TNT1 A 0 A_CheckCeiling("Death2")
TNT1 A 0 A_SpawnItemEx("StonePillarGhost",-50,0,0,0,0,0)
stop
Death2:
TNT1 A 0 A_SpawnItemEx("StonePillarGhost",-2,0,0,0,0,0)
stop
}
}

actor StonePillarGhost
{
+MISSILE
+THRUACTORS
+CLIENTSIDEONLY
+DONTSPLASH
gravity 999
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_JumpIf(z-floorz == 0,"Death")
TNT1 A 1
loop
Death:
TNT1 A 0 A_SpawnItemEx("StonePillarHelper",0,0,0,0,0,0)
TNT1 A 1
stop
}
}

actor StonePillarHelper : BasicHelper
{
+CLIENTSIDEONLY
+DONTSPLASH
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_CheckFloor("Spawn2")
stop
Spawn2:
TNT1 A 5 A_JumpIf(CallACS("GVH_IsTargetClient")==1,"Spawn3")
goto Death
Spawn3:
TNT1 A 0 A_SpawnItemEx("StonePillarFX")
TNT1 A 1 A_JumpIf(CallACS("core_targetexists",0)==0,"Death")
stop
Death:
TNT1 A 0
stop
}
}

actor StonePillarFX
{
translation "192:192=215:215", "198:198=216:216"
renderstyle translucent
alpha 0.60
PROJECTILE
+THRUACTORS
+FLOORHUGGER
-DONTBLAST
+DONTSPLASH
Scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_JumpIfInTargetInventory("StoneManCharge",0,"Spawn2")
STOW G 2 
stop
Spawn2:
STOW F 2 
stop
}
}

actor StoneCooldownWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
Renderstyle none
reactiontime 350
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_TakeFromTarget("StoneManCooldown",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_Countdown
loop
Death:
TNT1 A 0 A_TakeFromTarget("StoneManCooldown",350)
stop
}
}

actor StoneGrabHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",6)
TNT1 A 0 A_PlaySoundEx("misc/sunstarchoke","Body")
TNT1 A 0 A_GiveInventory("GalaxyFlySlow",1)
stop
}
}

actor StoneHandHit : Powerup
{
Powerup.Duration 3
}

actor StoneBreakDamager : BasicExplosion
{
Obituary "$OB_STONEMAN4"
damagetype "StoneBreak"
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Explode(35,72,0,0,72)
stop
}
}