
actor RoboenzaExplanationFogSpawner
{
+NOINTERACTION
+NOGRAVITY
states
{
Spawn:
TNT1 A 1
TNT1 A 100 A_SpawnItemEx("RoboenzaExplanationFogGrey", 0, 64, 0, 1.2)
TNT1 A 100 A_SpawnItemEx("RoboenzaExplanationFogPink", 0, -64, 64, 1.2)
TNT1 A 100 A_SpawnItemEx("RoboenzaExplanationFogBlack", 0, 0, -64, 1.2)
TNT1 A 100 A_SpawnItemEx("RoboenzaExplanationFogPurple", 0, 0, 64, 1.2)
TNT1 A 100 A_SpawnItemEx("RoboenzaExplanationFogBlue", 0, 64, 0, 1.2)
TNT1 A 140 A_SpawnItemEx("RoboenzaExplanationFogYellow", 0, -64, -64, 1.2)
TNT1 A 0 A_SpawnItemEx("RoboenzaExplanationFogRed", 0, 0, 0, 1.2)
stop
}
}

actor RoboenzaExplanationFogYellow
{
+MISSILE
+NOGRAVITY
scale 1.5
alpha 0.0
translation "4:4=160:160", "236:255=229:229"
states
{
Spawn:
TNT1 A 1
SHAB TTTT 5 A_FadeIn(0.1)
Fade:
SHAB T 5 A_FadeIn(0.1)
SHAB T 0 A_SpawnItemEX("RoboenzaExplanationFogFX", 0, random(-32, 32), random(-32, 32), 0, frandom(-1,1), frandom(-1, 1), 0, SXF_TRANSFERTRANSLATION)
loop
}
}

actor RoboenzaExplanationFogFX
{
+MISSILE
+NOGRAVITY
Alpha 0.0
scale 0.8
states
{
Spawn:
SHAB SSSSSSSSSSSSSSSSS 1 A_FadeIn(0.05)
Fade:
SHAB S 4 A_FadeOut(0.08)
loop
}
}

actor RoboenzaExplanationFogRed : RoboenzaExplanationFogYellow { translation "4:4=176:176", "236:255=187:187" }
actor RoboenzaExplanationFogPink : RoboenzaExplanationFogYellow { translation "4:4=4:4", "236:255=250:250" }
actor RoboenzaExplanationFogPurple : RoboenzaExplanationFogYellow { translation "4:4=246:246", "236:255=249:249" }
actor RoboenzaExplanationFogBlack : RoboenzaExplanationFogYellow { translation "4:4=95:95", "236:255=0:0" }
actor RoboenzaExplanationFogGrey : RoboenzaExplanationFogYellow { translation "4:4=3:3", "236:255=95:95" }
actor RoboenzaExplanationFogBlue : RoboenzaExplanationFogYellow { translation "4:4=198:198", "236:255=199:199" }

actor Bot_Roboenza_BaseStrength : PowerDamage
{
damagefactor "Normal", 1.25
powerup.duration 0x7FFFFFFD
}

actor Bot_Roboenza_BaseDefense : PowerProtection
{
damagefactor "Normal", 0.8
damagefactor "BotSight", 1.0
powerup.duration 0x7FFFFFFD
}

actor Bot_Roboenza_StrengthType : PowerDamage
{
damagefactor "Normal", 1.5
Powerup.Colormap 0.2, 0.0, 0.0
powerup.duration 0x7FFFFFFD
}

actor Bot_Roboenza_SpeedType : PowerSpeed
{
Speed 2.2
Powerup.Colormap 0.2, 0.2, 0.0
powerup.duration 0x7FFFFFFD
+NOTRAIL
}

// Uses RuneSpread for compatability with custom spreadrune weapons
actor Bot_Roboenza_SpreadType : PowerSpread
{
//Powerup.Color GoldMap
damagefactor "Misc", 1.0
powerup.duration 0x7FFFFFFD
}

actor Bot_Roboenza_HyperType : PowerDoubleFiringSpeed
{
Powerup.Colormap 0.2, 0.1, 1.0
powerup.duration 0x7FFFFFFD
}

actor Bot_Roboenza_ShadowType : PowerDamage
{
Powerup.Colormap 1.0, 1.0, 1.0, 0.0, 0.0, 0.0
damagefactor "Misc", 1.0
powerup.duration 0x7FFFFFFD
}

actor Bot_Roboenza_SlowType : PowerDamage
{
Powerup.Colormap 0.4, 0.0, 0.1
damagefactor "Misc", 1.0
powerup.duration 0x7FFFFFFD
}

actor Bot_Roboenza_GravityType : PowerDamage
{
Powerup.Colormap 0.0, 0.0, 0.0, 0.5, 0.5, 0.5
damagefactor "Misc", 1.0
powerup.duration 0x7FFFFFFD
}

actor Bot_Roboenza_PoisonType : PowerDamage
{
Powerup.Colormap 0.125, 0.5, 0.0
damagefactor "Misc", 1.0
powerup.duration 0x7FFFFFFD
}

actor Bot_Roboenza_FlightType : PowerDamage
{
Powerup.Colormap 0.1, 0.25, 0.5
damagefactor "Misc", 1.0
powerup.duration 0x7FFFFFFD
}

actor Bot_RoboenzaInventory : Inventory
{
inventory.amount 1
inventory.maxamount 999999999
}

actor Bot_RoboenzaFX_Gas
{
scale 2.5
+NOINTERACTION
+DONTSPLASH
+NOGRAVITY
Speed 5
+MISSILE
renderstyle translucent
alpha 0.8
height 2
radius 2
states
{
	Spawn:
	RBFX D 0 
	RBFX DDDDEEEEEFFFFF 2 A_FadeOut(0.06)
	stop
}
}

actor Bot_RoboenzaFX_Shadow
{
-SOLID
+NOINTERACTION
+DONTSPLASH
radius 6
height 6
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Jump(128, "Death")
TNT1 A 0 A_SpawnItemEx("SparkleFX", random(0,40), random(0,40), random(0,53))
Death:
TNT1 A 0
stop
}
}

actor Bot_RoboenzaFX_Slow
{
-SOLID
+NOINTERACTION
+DONTSPLASH
Scale 3.0
renderstyle add
alpha 0.5
+FORCEXYBILLBOARD
radius 6
height 6
States
{
Spawn:
SLOD EFGHI 1
stop
}
}

actor Bot_RoboenzaFX_Gravity : Bot_RoboenzaFX_Slow
{
renderstyle stencil
stencilcolor 10, 10, 10
States
{
Spawn:
SLOD IHGFE 1
stop
}
}

actor Bot_RoboenzaFX_Rage
{
radius 6
height 6
-SOLID
+NOINTERACTION
+DONTSPLASH
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Jump(150, "Death")
TNT1 A 0 A_SpawnItemEx("FryingPanFX", 6, 0, 6 + 48, random(0,2),0 ,4, random(0,360))
Death:
TNT1 A 0
stop
}
}

actor Bot_RoboenzaFX_RageWatcher
{
-SOLID
+NOINTERACTION
+DONTSPLASH
+MISSILE
radius 6
height 6
scale 2.5
translation "192:192=4:4", "198:198=192:192"
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION)
TNT1 A 1 A_SpawnItemEx("FryingPanFX", 6, 0, 12 + 48, random(0,2),0 ,4, random(0,360))
TNT1 R 0 A_JumpIfInTargetInventory("StrengthRuneFlag", 1, "Spawn")
TNT1 A 10
stop
}
}

actor Rage_RoboenzaFXPickup : CustomInventory
{
states
{
PICKUP:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_RageWatcher")
stop
}
}

actor Bot_RoboenzaFX_Flight
{
radius 6
height 6
-SOLID
+NOINTERACTION
+DONTSPLASH
scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_FlightFX",0,0,0,4,0,0,0)
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_FlightFX",0,0,0,4,0,0,15)
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_FlightFX",0,0,0,4,0,0,30)
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_FlightFX",0,0,0,4,0,0,45)
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_FlightFX",0,0,0,4,0,0,60)
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_FlightFX",0,0,0,4,0,0,75)
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_FlightFX",0,0,0,4,0,0,90)
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_FlightFX",0,0,0,4,0,0,105)
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_FlightFX",0,0,0,4,0,0,120)
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_FlightFX",0,0,0,4,0,0,135)
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_FlightFX",0,0,0,4,0,0,150)
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_FlightFX",0,0,0,4,0,0,165)
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_FlightFX",0,0,0,4,0,0,180)
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_FlightFX",0,0,0,4,0,0,195)
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_FlightFX",0,0,0,4,0,0,210)
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_FlightFX",0,0,0,4,0,0,225)
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_FlightFX",0,0,0,4,0,0,240)
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_FlightFX",0,0,0,4,0,0,255)
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_FlightFX",0,0,0,4,0,0,270)
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_FlightFX",0,0,0,4,0,0,285)
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_FlightFX",0,0,0,4,0,0,300)
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_FlightFX",0,0,0,4,0,0,315)
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_FlightFX",0,0,0,4,0,0,330)
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_FlightFX",0,0,0,4,0,0,345)
stop
}
}

actor Bot_RoboenzaFX_FlightFX
{
PROJECTILE
Scale 0.6
+NOINTERACTION
Speed 30
Damage (15)
Radius 32
Height 32
translation "0:255=201:201"
States
{
Spawn:
DUOR T 1 A_FadeOut(0.05)
loop
}
}

actor Bot_RoboenzaFX_Speed
{
radius 6
height 6
-SOLID
+NOINTERACTION
+DONTSPLASH
scale 2.5
renderstyle add
alpha 0.1
States
{
Spawn:
RBFX ABC 4
stop
}
}

actor Bot_RoboenzaFX_Cured
{
-SOLID
+NOINTERACTION
+DONTSPLASH
radius 6
height 6
States
{
Spawn:
TNT1 A 0
TNT1 AAAAAAAAAAAAAAAAAA 2 A_SpawnItemEx("RoboenzaGas", random(0,40), random(0,40), random(0,53) + 32, random(3,5), 0, random(1,3), random(0,360), SXF_TRANSFERTRANSLATION)
stop
}
}



actor Bot_RoboenzaFX_SpreadLeft
{
-SOLID
+NOINTERACTION
+DONTSPLASH
+MISSILE
radius 6
height 6
scale 2.5
translation "192:192=4:4", "198:198=192:192"
States
{
Spawn:
RBFX VVVWWWXXXWWW 1 A_GiveInventory("Bot_RoboenzaFXWarpPickupLeft",1)
RBFX R 0 A_JumpIfInTargetInventory("SpreadRuneFlag", 1, "Spawn")
TNT1 A 10
stop
}
}

actor Bot_RoboenzaFX_SpreadRight : Bot_RoboenzaFX_SpreadLeft
{
States
{
Spawn:
RBFX "YYYZZZ[[[ZZZ" 1 A_GiveInventory("Bot_RoboenzaFXWarpPickupRight",1)
RBFX R 0 A_JumpIfInTargetInventory("SpreadRuneFlag", 1, "Spawn")
TNT1 A 10
stop
}
}

actor Bot_RoboenzaFXWarpPickupLeft : CustomInventory
{
states
{
PICKUP:
TNT1 A 0
TNT1 A 0 Thing_SetTranslation(0, ACS_NamedExecuteWithResult("core_copytranslation"))
TNT1 A 0 A_Warp(AAPTR_TARGET, 0, 52, 20, 0, WARPF_NOCHECKPOSITION)
stop
}
}

actor Bot_RoboenzaFXWarpPickupRight : CustomInventory
{
states
{
PICKUP:
TNT1 A 0
TNT1 A 0 Thing_SetTranslation(0, ACS_NamedExecuteWithResult("core_copytranslation"))
TNT1 A 0 A_Warp(AAPTR_TARGET, 0, -52, 20, 0, WARPF_NOCHECKPOSITION)
stop
}
}

actor Spread_RoboenzaFXPickup : CustomInventory
{
states
{
PICKUP:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_SpreadLeft")
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_SpreadRight")
stop
}
}

actor Bot_RoboenzaFX_Resistance
{
-SOLID
+NOINTERACTION
+DONTSPLASH
+MISSILE
radius 6
height 6
scale 1.75
renderstyle "translucent"
alpha 0.5
translation "192:192=4:4", "198:198=192:192"
States
{
Spawn:
RBF2 AAAAAAAA 1 A_GiveInventory("Bot_RoboenzaFXResistanceWarpPickup",1)
RBF2 R 0 A_JumpIfInTargetInventory("ResistanceRuneFlag", 1, "Spawn")
TNT1 A 10
stop
stop
}
}

actor Bot_RoboenzaFXResistanceWarpPickup : CustomInventory
{
states
{
PICKUP:
TNT1 A 0
TNT1 A 0 Thing_SetTranslation(0, ACS_NamedExecuteWithResult("core_copytranslation"))
TNT1 A 0 A_Warp(AAPTR_TARGET, 48, 0, 20, 16, WARPF_NOCHECKPOSITION|WARPF_USECALLERANGLE)
stop
}
}

actor Resistance_RoboenzaFXPickup : CustomInventory
{
states
{
PICKUP:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_Resistance",0,0,0,0,0,0,0)
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_Resistance",0,0,0,0,0,0,180)
stop
}
}

actor Bot_RoboenzaFX_DrainParticle
{
+NOINTERACTION
+NOGRAVITY
//+CLIENTSIDEONLY
+FORCEXYBILLBOARD
-SOLID
+NOTIMEFREEZE
+SEEKERMISSILE
RenderStyle "Add"
scale 1.25
alpha 0.35
height 0
radius 0
Speed 24
ReactionTime 12
translation "192:192=4:4", "198:198=239:239"
States
{
Spawn:
RBF2 B 0
RBF2 B 0 A_RearrangePointers(AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)//A_ChangeVelocity(-16, 0, 0, CVF_RELATIVE|CVF_REPLACE)
RBF2 B 0 A_FaceTracer
Goto SpawnLoop
SpawnLoop:
RBF2 B 0 A_JumpIfCloser(30, "Death")
RBF2 B 0 A_SeekerMissile(5, 360, SMF_PRECISE, 0, 0)
RBF2 B 0 Thing_SetTranslation(0, ACS_NamedExecuteWithResult("core_copytranslation"))
RBF2 B 1
RBF2 B 0 A_JumpIfCloser(30, "Death")
RBF2 B 0 A_SeekerMissile(5, 360, SMF_PRECISE, 0, 0)
RBF2 B 0 Thing_SetTranslation(0, ACS_NamedExecuteWithResult("core_copytranslation"))
RBF2 B 1
RBF2 B 0 A_Countdown

RBF2 C 0 A_JumpIfCloser(30, "Death")
RBF2 C 0 A_SeekerMissile(5, 360, SMF_PRECISE, 0, 0)
RBF2 C 0 Thing_SetTranslation(0, ACS_NamedExecuteWithResult("core_copytranslation"))
RBF2 C 1
RBF2 C 0 A_JumpIfCloser(30, "Death")
RBF2 C 0 A_SeekerMissile(5, 360, SMF_PRECISE, 0, 0)
RBF2 C 0 Thing_SetTranslation(0, ACS_NamedExecuteWithResult("core_copytranslation"))
RBF2 C 1 
RBF2 C 0 A_Countdown
loop
Death:
TNT1 A 0
stop
}
}

actor Drain_RoboenzaFXPickup : CustomInventory
{
states
{
PICKUP:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_DrainWatcher")
stop
}
}

actor Bot_RoboenzaFX_DrainWatcher
{
-SOLID
+NOINTERACTION
+DONTSPLASH
+MISSILE
radius 6
height 6
scale 2.5
States
{
Spawn:
TNT1 A 2 A_GiveInventory("Bot_RoboenzaFXDrainPickup",1)
TNT1 R 0 A_JumpIfInTargetInventory("DrainRuneFlag", 1, "Spawn")
TNT1 A 10
stop
}
}

actor Bot_RoboenzaFXDrainPickup : CustomInventory
{
states
{
PICKUP:
TNT1 A 0
TNT1 A 0 Thing_SetTranslation(0, ACS_NamedExecuteWithResult("core_copytranslation"))
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_DrainParticle", Random(64, 128), 0, Random(16, 96), momx, momy, momz, random(105, 255), SXF_ABSOLUTEMOMENTUM)
TNT1 A 0 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION)
stop
}
}

actor Bot_RoboenzaFX_Hyper
{
radius 6
height 6
-SOLID
+NOINTERACTION
+DONTSPLASH
States
{
Spawn:
TNT1 A 0
TNT1 A 1 //A_Jump(50, "Death")
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_HyperChar", 8, 0, 6 + 48, random(0,8) ,0 , 8, random(0,360),SXF_TRANSFERTRANSLATION)
Death:
TNT1 A 0
stop
}
}

actor Bot_RoboenzaFX_HyperWatcher
{
-SOLID
+NOINTERACTION
+DONTSPLASH
+MISSILE
radius 6
height 6
scale 2.5
States
{
Spawn:
TNT1 A 2 A_GiveInventory("Bot_RoboenzaFXHyperPickup",1)
TNT1 R 0 A_JumpIfInTargetInventory("RageRuneFlag", 1, "Spawn")
TNT1 A 10
stop
}
}

actor Bot_RoboenzaFXHyperPickup : CustomInventory
{
states
{
PICKUP:
TNT1 A 0
TNT1 A 0 Thing_SetTranslation(0, ACS_NamedExecuteWithResult("core_copytranslation"))
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_Hyper", 0, 0, 0, 0,0 ,0, random(0,360),SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION)
stop
}
}

actor Bot_RoboenzaFX_HyperChar
{
-SOLID
+NOINTERACTION
radius 6
height 6
+MISSILE
-NOGRAVITY
+RIPPER
+HEXENBOUNCE
+DONTSPLASH
Damage 0
scale 2.5
states
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Jump(256, "1", "2", "3", "4")
1:
RBFX FGH 5
stop
2:
RBFX IJK 5
stop
3:
RBFX LMN 5
stop
4:
RBFX OPQ 5
stop
}
}

actor Hyper_RoboenzaFXPickup : CustomInventory
{
states
{
PICKUP:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("Bot_RoboenzaFX_HyperWatcher")
stop
}
}

actor Bot_RoboenzaFX_PoisonBubbleSpawner : Bot_RoboenzaFX_Hyper
{
+MISSILE
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("Bot_Roboenza_PoisonGas")
TNT1 AAAAAA 0 A_SpawnItemEx("Bot_RoboenzaFX_PoisonBubble", random(-48, 48), random(-48, 48), random(-48, 48), 0, 0, 0, random(0,360))
stop
}
}

actor Bot_Roboenza_PoisonGas
{
PROJECTILE
damage 0
Speed 0
radius 32
height 32
damagetype "Misc"
+THRUACTORS
states
{
Spawn:
TNT1 A 0
PLAY AAAAAAAA 10 A_Explode(5, 80, 0, 0, 800)
stop
}
}

actor Bot_RoboenzaFX_PoisonBubble : Bot_RoboenzaFX_Hyper
{
scale 2.5
translation "0:255=104:104"
reactiontime 50
alpha 0.9
States
{
Spawn:
BUBS E 1 A_FadeOut(0.005)
BUBS E 0 A_Weave(1, 0, 2, 0)
loop
}
}

actor Bot_Roboenza_Cancel : Powerup
{
powerup.duration -1
}