actor TrollingCutterBoss : MegaBuster 20056
{
Weapon.AmmoUse 0
Weapon.AmmoGive 28
Weapon.SlotNumber 1
Obituary "%o was sliced and diced by %k's rolling cutter."
weapon.ammotype "KFCAmmo"
inventory.pickupsound "weapon/weaponup"
+WEAPON.AMMO_OPTIONAL
//+WEAPON.NOAUTOFIRE
Scale 2.0
States
{
Spawn:
WEA2 F 1
loop
Ready:
CUTA A 0 ACS_ExecuteAlways(998,0,109)
CUTA A 0 A_TakeInventory("CutterFlag",999)
CUTA A 5 A_WeaponReady(WRF_NOSWITCH)
Goto Ready+1
Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
CUTA A 1 A_Lower
Loop
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
CUTA A 1 A_Raise
Loop
Fire:
TNT1 A 0 A_JumpIfInventory("IsBotFlag",1,"BotFire")
//CUTA A 0 A_JumpIfNoAmmo("NoAmmo")
CUTA C 2 A_FireCustomMissile("CutmanCutter",0,0,8,0)
Throw:
//CUTA A 0 A_TakeInventory("KFCAmmo",3)
TNT1 A 0 A_TakeInventory("CutterReturned",999)
TNT1 A 0 A_GiveInventory("CutterFlag",1)
CUTA DEFGH 2
TNT1 A 4
Goto Check
Check:
TNT1 A 1 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",200,"Return")
Goto Check
Return:
CUTA A 0 A_TakeInventory("CutterFlag",999)
TNT1 A 0 A_GiveInventory("CutterReturned",1)
CUTS CBA 2
TNT1 A 14
CUTA IJ 2
CUTA A 0 A_Refire
Goto Ready+1
AltFire:
CUTA C 2 A_FireCustomMissile("CutmanCutterFast",0,0,8,0)
goto Throw
/*
Altfire:
//CUTA A 0 A_JumpIfNoAmmo("NoAmmo")
//CUTA A 0 A_PlaySoundEx("weapon/rollingcutter","weapon")
CUTA A 0 A_PlaySoundEx("weapon/CutMelee","weapon")
CUTA A 0 A_FireCustomMissile("CutSlice",0,0,8,0)
CUTS ABCDE 3
Goto Ready+1
*/
NoAmmo:
CUTA A 0
//CUTA A 1 ACS_Execute(979,0)
Goto Ready+1


BotFire:
CUTA A 0 A_JumpIfCloser(500,"BotFire2")
CUTA A 1 //A_GiveInventory("BotRevert",1)
goto ready+1
BotFire2:
CUTA C 0 A_Jump(128,"BotAltFire")
CUTA C 2 A_FireCustomMissile("CutmanCutter",0,0,8,0)
BotThrow:
//CUTA A 0 A_TakeInventory("KFCAmmo",3)
TNT1 A 0 A_TakeInventory("CutterReturned",999)
TNT1 A 0 A_GiveInventory("CutterFlag",1)
CUTA DEFGH 2
TNT1 A 4
CUTA C 0 A_Jump(128,"JumpingBotCheck")
Goto BotCheck
BotCheck:
TNT1 A 0 A_JumpIfCloser(1200,"Retreat")
TNT1 A 0 A_TakeInventory("BotRetreatFlag",999)
TNT1 A 1 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",200,"BotReturn")
goto BotCheck
Retreat:
TNT1 A 0 A_GiveInventory("BotRetreatFlag",1)
goto BotCheck+2
JumpingBotCheck:
TNT1 A 0 A_Jump(200,2)
TNT1 A 0 A_GiveInventory("BotJumpC",1)
TNT1 A 1 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",200,"BotReturn")
loop
BotReturn:
TNT1 A 0 A_TakeInventory("BotRetreatFlag",999)
CUTA A 0 A_TakeInventory("CutterFlag",999)
TNT1 A 0 A_GiveInventory("CutterReturned",1)
CUTS CBA 2
TNT1 A 14
CUTA IJ 2
CUTA A 0 A_Refire
Goto Ready+1
BotAltFire:
CUTA C 2 A_FireCustomMissile("CutmanCutterFast",0,0,8,0)
goto BotThrow
}
}

actor CutterReturned : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor KFCAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 28
}

actor CutSlicer
{
PROJECTILE
Radius 7
Height 7
scale 2.5
damage (45)
damagetype "Cut"
Obituary "%o was sliced by %k."
speed 40
States
{
Spawn:
TNT1 A 3
stop
}
}

actor CutSlice : SlashClaw
{
PROJECTILE
Obituary "%o was sliced by %k."
damagetype "Cut"
damage (10)
States
{
Spawn:
SCLA HI 1 A_Explode(12,90,0)
CSLI JK 1 A_Explode(12,90,0)
//SCLA L 1 A_Explode(5,90,0)
stop
}
}

actor CutmanCutter : RollingCutter
{
damage(2)
states
{
Spawn:
RCTC A 0
RCTC A 0 A_PlaySound("weapon/rollingcutter")
RCTC AAAA 1 A_SpawnItemEx("RollingCutterDamagerB",0,0,0,2,0,0)
RCTC BBBB 1 A_SpawnItemEx("RollingCutterDamagerB",0,0,0,2,0,0)
RCTC CCCC 1 A_SpawnItemEx("RollingCutterDamagerB",0,0,0,2,0,0)
RCTC DDDD 1 A_SpawnItemEx("RollingCutterDamagerB",0,0,0,2,0,0)
RCTC A 0 A_PlaySound("weapon/rollingcutter")
RCTC A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
RCTC AAAA 1 A_SpawnItemEx("RollingCutterDamagerB",0,0,0,2,0,0)
RCTC BBBB 1 A_SpawnItemEx("RollingCutterDamagerB",0,0,0,2,0,0)
RCTC CCCC 1 A_SpawnItemEx("RollingCutterDamagerB",0,0,0,2,0,0)
RCTC DDDD 1 A_SpawnItemEx("RollingCutterDamagerB",0,0,0,2,0,0)
RCTC A 0 A_PlaySound("weapon/rollingcutter")
RCTC A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
RCTC A 0 A_CustomMissile("ReturningCutterB",0,0,0,0)
stop
}
}

actor ReturningCutterB : ReturningCutter
{
states
{
Spawn:
RCTC A 0 //A_Stop
RCTC A 0 //A_Chase
RCTC A 0 A_FaceTarget
RCTC A 0 A_JumpIfCloser(60,"Death")
RCTC A 0 A_PlaySound("weapon/rollingcutter")
RCTC A 0 //A_Recoil(-22)
RCTC AAAA 1 A_SpawnItemEx("RollingCutterDamagerB",0,0,0,2,0,0)
RCTC A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
RCTC A 0 //A_Stop
RCTC A 0 //A_Chase
RCTC A 0 A_FaceTarget
RCTC A 0 A_JumpIfCloser(60,"Death")
RCTC B 0 //A_Recoil(-22)
RCTC BBBB 1 A_SpawnItemEx("RollingCutterDamagerB",0,0,0,2,0,0)
RCTC A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
RCTC A 0 //A_Stop
RCTC A 0 //A_Chase
RCTC A 0 A_FaceTarget
RCTC A 0 A_JumpIfCloser(60,"Death")
//RCTC C 1 //A_Recoil(-22)
RCTC CCCC 1 A_SpawnItemEx("RollingCutterDamagerB",0,0,0,2,0,0)
RCTC A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
RCTC A 0 //A_Stop
RCTC A 0 //A_Chase
RCTC A 0 A_FaceTarget
RCTC A 0 A_JumpIfCloser(60,"Death")
//RCTC D 1 //A_Recoil(-22)
RCTC DDDD 1 A_SpawnItemEx("RollingCutterDamagerB",0,0,0,2,0,0)
RCTC A 0 A_Countdown
RCTC A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
RCTC A 0 A_CustomMissile("ReturningCutterB",0,0,0,0)
stop
}
}

actor CutmanCutterFast : CutmanCutter
{
speed 39
states
{
Spawn:
RCTC A 0
RCTC A 0 A_PlaySound("weapon/rollingcutter")
RCTC AAA 1 A_SpawnItemEx("RollingCutterDamagerB",0,0,0,2,0,0)
RCTC BBB 1 A_SpawnItemEx("RollingCutterDamagerB",0,0,0,2,0,0)
RCTC CCC 1 A_SpawnItemEx("RollingCutterDamagerB",0,0,0,2,0,0)
RCTC DDD 1 A_SpawnItemEx("RollingCutterDamagerB",0,0,0,2,0,0)
RCTC A 0 A_PlaySound("weapon/rollingcutter")
RCTC A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
RCTC AAA 1 A_SpawnItemEx("RollingCutterDamagerB",0,0,0,2,0,0)
RCTC BBB 1 A_SpawnItemEx("RollingCutterDamagerB",0,0,0,2,0,0)
//RCTC CCC 1 A_SpawnItemEx("RollingCutterDamager",0,0,0,2,0,0)
//RCTC DDD 1 A_SpawnItemEx("RollingCutterDamager",0,0,0,2,0,0)
RCTC A 0 A_PlaySound("weapon/rollingcutter")
RCTC A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
RCTC A 0 A_CustomMissile("ReturningCutterFast1",0,0,0,0)
//RCTC A 0 A_CustomMissile("ReturningCutterFast2",0,0,0,0)
stop
}
}

actor ReturningCutterFast1 : ReturningCutterB
{
speed 43
States
{
Spawn:
/*RCTC A 0 //A_Stop
RCTC A 0 //A_Chase
RCTC A 0 A_FaceTarget
RCTC A 0 A_JumpIfCloser(60,"Death")
RCTC A 0 A_PlaySound("weapon/rollingcutter")
RCTC A 0 //A_Recoil(-22)
RCTC AAA 1 A_SpawnItemEx("RollingCutterDamager",0,0,0,2,0,0)
RCTC A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
RCTC A 0 //A_Stop
RCTC A 0 //A_Chase
RCTC A 0 A_FaceTarget
RCTC A 0 A_JumpIfCloser(60,"Death")
RCTC B 0 //A_Recoil(-22)
RCTC BBB 1 A_SpawnItemEx("RollingCutterDamager",0,0,0,2,0,0)
RCTC A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")*/
RCTC A 0 //A_Stop
RCTC A 0 //A_Chase
RCTC A 0 A_FaceTarget
RCTC A 0 A_JumpIfCloser(60,"Death")
//RCTC C 1 //A_Recoil(-22)
RCTC CCC 1 A_SpawnItemEx("RollingCutterDamagerB",0,0,0,2,0,0)
RCTC A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
RCTC A 0 //A_Stop
RCTC A 0 //A_Chase
RCTC A 0 A_FaceTarget
RCTC A 0 A_JumpIfCloser(60,"Death")
//RCTC D 1 //A_Recoil(-22)
RCTC DDD 1 A_SpawnItemEx("RollingCutterDamagerB",0,0,0,2,0,0)
RCTC A 0 A_Countdown
RCTC A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
RCTC A 0 A_CustomMissile("ReturningCutterFast2",0,0,0,0)
stop
}
}

actor ReturningCutterFast2 : ReturningCutterFast1
{
States
{
Spawn:
RCTC A 0 //A_Stop
RCTC A 0 //A_Chase
RCTC A 0 A_FaceTarget
RCTC A 0 A_JumpIfCloser(60,"Death")
RCTC A 0 A_PlaySound("weapon/rollingcutter")
//RCTC A 0 //A_Recoil(-22)
RCTC AAA 1 A_SpawnItemEx("RollingCutterDamagerB",0,0,0,2,0,0)
RCTC A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
RCTC A 0 //A_Stop
RCTC A 0 //A_Chase
RCTC A 0 A_FaceTarget
RCTC A 0 A_JumpIfCloser(60,"Death")
//RCTC B 0 //A_Recoil(-22)
RCTC BBB 1 A_SpawnItemEx("RollingCutterDamagerB",0,0,0,2,0,0)
RCTC A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
/*RCTC A 0 //A_Stop
RCTC A 0 //A_Chase
RCTC A 0 A_FaceTarget
RCTC A 0 A_JumpIfCloser(60,"Death")
//RCTC C 1 //A_Recoil(-22)
RCTC CCC 1 A_SpawnItemEx("RollingCutterDamager",0,0,0,2,0,0)
RCTC A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
RCTC A 0 //A_Stop
RCTC A 0 //A_Chase
RCTC A 0 A_FaceTarget
RCTC A 0 A_JumpIfCloser(60,"Death")
//RCTC D 1 //A_Recoil(-22)
RCTC DDD 1 A_SpawnItemEx("RollingCutterDamager",0,0,0,2,0,0)
RCTC A 0 A_Countdown
RCTC A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")*/
RCTC A 0 A_CustomMissile("ReturningCutterFast1",0,0,0,0)
stop
}
}

actor WallJump : Inventory
{
inventory.amount 1
inventory.maxamount 1
States
{
Spawn:
TNT1 A 0
stop
}
}
//)

actor CanWallJump : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor WallJumper
{
-SOLID
+NOGRAVITY
+NOBLOCKMAP
+NOTARGETSWITCH
Height 0
Radius 0
scale 2.5
+NOINTERACTION
States
{
Spawn:
TNT1 A 1 A_JumpIfInTargetInventory("CutterFlag",998,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("WallJump",1,"Boost")
TNT1 A 1 A_JumpIfInTargetInventory("AdapterFlag",1,"Spawn")
stop
Boost:
TNT1 A 0 A_TakeFromTarget("WallJump",1)
//TNT1 AAAAAAAAA 2 A_GiveToTarget("BoostGive",1)
Goto BoostLoop1
BoostLoop1:
TNT1 A 1 A_GiveToTarget("WallJumpGive")
TNT1 A 1 A_GiveToTarget("NoWallJump",1)
TNT1 A 0 A_JumpIfInTargetInventory("AdapterFlag",1,"BoostLoop2")
stop
BoostLoop2:
TNT1 A 0 A_GiveInventory("WallJumpCount",1)
TNT1 A 0 A_JumpIfInventory("WallJumpCount",34,"BoostEnd")
TNT1 A 1 A_TakeFromTarget("NoWallJump",999)
TNT1 A 0 A_JumpIfInventory("WallJumpCount",9,"BoostLoop2")
TNT1 A 0 A_JumpIfInTargetInventory("AdapterFlag",1,"BoostLoop2")
stop
BoostEnd:
TNT1 A 0// A_Print("BoostEnd")
TNT1 A 7 A_TakeInventory("WallJumpCount",999)
TNT1 A 1 A_TakeFromTarget("NoWallJump",999)
TNT1 A 0 A_TakeFromTarget("WallJump",1)
Goto Spawn
Death:
TNT1 A 0
stop
}
}

actor RollingCutterDamagerB : RollingCutterDamager
{
damage (6)
}

actor NoWallJump : Inventory
{
inventory.amount 1
inventory.maxamount 1
}


actor WallJumpCount : Inventory
{
inventory.amount 1
inventory.maxamount 30
}


actor WallJumpGive : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
States
{
Spawn:
TNT1 A 0
stop
Pickup:
TNT1 A 0
TNT1 A 0 A_JumpIfInventory("WallN",1,"Jump")
TNT1 A 0 A_JumpIfInventory("WallE",1,"Jump")
TNT1 A 0 A_JumpIfInventory("WallS",1,"Jump")
TNT1 A 0 A_JumpIfInventory("WallW",1,"Jump")
stop
Jump:
TNT1 A 0 A_JumpIfInventory("Stamina",1,"Jump2")
stop
Jump2:
TNT1 A 0 A_TakeInventory("Stamina",10)
TNT1 A 0 ACS_ExecuteAlways(160,0)
TNT1 A 0 ThrustThingZ(0,40,0,0)
stop
}
}


actor WallJumping : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
+INVENTORY.AUTOACTIVATE
-INVBAR
States
{
Spawn:
TNT1 A 1
//loop
Use:
TNT1 A 0 A_SpawnItemEx("WallCheckN",23,0,8,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
TNT1 A 0 A_SpawnItemEx("WallCheckS",-23,0,8,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
TNT1 A 0 A_SpawnItemEx("WallCheckE",0,23,8,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
TNT1 A 0 A_SpawnItemEx("WallCheckW",0,-23,8,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
TNT1 A 1
TNT1 A 0 A_SpawnItemEx("WallJumpMan")
TNT1 A 1
//fail
stop
}
}


actor WallJumpMan
{
-SOLID
+NOGRAVITY
+MISSILE
+NOTARGETSWITCH
+NOBLOCKMAP
Height 0
Radius 0
scale 2.5
+NOINTERACTION
States
{
Spawn:
TNT1 A 0 A_JumpIfInTargetInventory("WallJump",1,"Boost")
Goto Boost
Boost:
TNT1 A 0 A_TakeFromTarget("WallJump",1)
//TNT1 AAAAAAAAA 2 A_GiveToTarget("BoostGive",1)
Goto BoostLoop1
BoostLoop1:
TNT1 A 1 A_GiveToTarget("WallJumpGive")
TNT1 A 1 A_GiveToTarget("NoWallJump",1)
TNT1 A 0 A_JumpIfInTargetInventory("AdapterFlag",1,"BoostLoop2")
stop
BoostLoop2:
TNT1 A 0 A_GiveInventory("WallJumpCount",1)
TNT1 A 0 A_JumpIfInventory("WallJumpCount",34,"BoostEnd")
TNT1 A 1 A_TakeFromTarget("NoWallJump",999)
TNT1 A 0 A_JumpIfInventory("WallJumpCount",9,"BoostLoop2")
TNT1 A 0 A_JumpIfInTargetInventory("AdapterFlag",1,"BoostLoop2")
stop
BoostEnd:
TNT1 A 0// A_Print("BoostEnd")
TNT1 A 7 A_TakeInventory("WallJumpCount",999)
TNT1 A 1 A_TakeFromTarget("NoWallJump",999)
TNT1 A 1 A_TakeFromTarget("WallJumping",1)
TNT1 A 0 A_TakeFromTarget("WallJump",1)
stop
Death:
TNT1 A 0
stop
}
}

actor WallCheckN 
{
PROJECTILE
+RIPPER
+PAINLESS
Height 10
Radius 10
Speed 0
damage (0)
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_TakeFromTarget("WallN",1)
TNT1 A 1
stop
Death:
TNT1 A 0
TNT1 A 0 A_GiveToTarget("WallN",1)
TNT1 A 1
stop
}
}

actor WallCheckS : WallCheckN
{
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_TakeFromTarget("WallS",1)
TNT1 A 1
stop
Death:
TNT1 A 0
TNT1 A 0 A_GiveToTarget("WallS",1)
TNT1 A 1
stop
}
}

actor WallCheckE : WallCheckN
{
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_TakeFromTarget("WallE",1)
TNT1 A 1
stop
Death:
TNT1 A 0
TNT1 A 0 A_GiveToTarget("WallE",1)
TNT1 A 1
stop
}
}

actor WallCheckW : WallCheckN
{
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_TakeFromTarget("WallW",1)
TNT1 A 1
stop
Death:
TNT1 A 0
TNT1 A 0 A_GiveToTarget("WallW",1)
TNT1 A 1
stop
}
}

actor WallN : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor WallS : WallN
{
}
actor WallE : WallN
{
}
actor WallW : WallN
{
}