actor PlasmaPlusSummon : GenericAssistCapsule
{
-BOUNCEONWALLS
speed 20
gravity 0.9
+THRUACTORS
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
ECAP AB 4
goto Spawn+2
Assist:
//													20 and -20
TNT1 A 0 A_SpawnItemEx("PlasmaPlus", -12, 0, 15, -10, 0, 0, 90, SXF_TRANSFERPOINTERS|SXF_TRANSFERPITCH)
TNT1 A 0 A_SpawnItemEx("PlasmaPlus", -12, 0, 15, -10, 0, 0, -90, SXF_TRANSFERPOINTERS|SXF_TRANSFERPITCH)
goto Death+2
}
}

const int PLASMAPLUS_LASERRANGE = 11;

actor PlasmaPlus
{
Projectile
//+BOUNCEONWALLS
+NOEXPLODEFLOOR
//+SEEKERMISSILE
//+THRUACTORS
+NOINTERACTION
-NOTARGETSWITCH
+DONTREFLECT
//+NOCLIP

height 18
radius 20

speed 10
damage (0)
WallBounceFactor 1

scale 2.5
reactiontime 490
var int user_range;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
TNT1 A 0 A_GiveInventory("LimitFlag", 1, AAPTR_TARGET)
TNT1 A 0 A_RearrangePointers(AAPTR_DEFAULT,AAPTR_DEFAULT,AAPTR_MASTER)
AirWait:
P0PU DDDDDD 3
//P0PU A 0 A_SpawnItemEx("PlasmaPlusCurrent",0,0,0,20,0,0)
P0PU A 0 A_ChangeVelocity(0,0,0,CVF_RELATIVE|CVF_REPLACE)
goto Loopit

Loopit:
P0PU A 0 A_Stop
P0PU A 0 A_FaceMaster
P0PU A 0 A_SpawnItemEx("PlasmaPlusCurrent",0,0,0,20,0,0)
P0PU D 1 A_CountDown
P0PU A 0 A_FaceMaster
P0PU A 0 A_SpawnItemEx("PlasmaPlusCurrent",0,0,0,20,0,0,0,SXF_NOCHECKPOSITION)
P0PU E 1 A_CountDown
loop


Death:
TNT1 A 0 A_SpawnItemEx("GenericAssistDeath", 0, 0, 26)
TNT1 A 0 A_TakeInventory("LimitFlag", 1, 0, AAPTR_MASTER)
stop
}
}


actor PlasmaPlusCurrent
{
Obituary "%o was charged beyond %p capacity by %k's \cvPlasma+\c-."
PROJECTILE
//Obituary "$OB_JUPITER3"
DamageType "PlasmaPlus"
+THRUACTORS
+THRUGHOST
+DONTBLAST
+DONTREFLECT
+NOINTERACTION
//+SERVERSIDEONLY //?
//+RIPPER
//renderstyle none
//damage (3)
Radius 8
Height 8
speed 35
scale 2.5
meleerange 8
stamina 3
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SetPitch(pitch+1)
TNT1 A 0 A_JumpIf(pitch>PLASMAPLUS_LASERRANGE,"Death")
TNT1 A 0 A_SpawnItemEx("PlasmaPlusCurrent",0,0,0,momx,momy,momz,0,552)
TNT1 A 0 A_Stop
//TNT1 A 0 A_RadiusGive("PlasmaPlusBuffCheck",140,RGF_PLAYERS,1)
TNT1 A 0 A_Jump(256,"SpawnLoop","SpawnLoopB","SpawnLoopC")//goto SpawnLoop
SpawnLoop:
P0PU FF 1 A_Explode(stamina,meleerange,0,0,meleerange)
//P0PU A 0 A_JumpIfInTargetInventory("LimitFlag",1,"SpawnLoopB")
goto Death

SpawnLoopB:
P0PU GG 1 A_Explode(stamina,meleerange,0,0,meleerange)
//P0PU B 0 A_JumpIfInTargetInventory("LimitFlag",1,"SpawnLoopC")
goto Death

SpawnLoopC:
P0PU HH 1 A_Explode(stamina,meleerange,0,0,meleerange)
//P0PU C 0 A_JumpIfInTargetInventory("LimitFlag",1,"SpawnLoop")
goto Death

Death:
TNT1 A 1
stop
}
}


Actor PlasmaPlusBuffCheck : CustomInventory
{
	States
	{
	Pickup:
	NMEA D 0 A_JumpIf(CheckClass("Dynamoman"), "Dynamoman")
	stop
	Dynamoman:
	DYNH A 0 A_JumpIfInventory("DynamoManCharge",0,"Nope")
	DYNH A 0 A_JumpIfInventory("DynamoManCharge",1,"DynamomanC")
	stop
	DynamomanC:
	DYNH A 0 A_PlaySoundEx("weapon/mm7heal","Body")
	DYNH A 0 A_GiveInventory("DynamoManCharge",1)
	stop
	Nope:
	DYNH A 0
	stop
	}
}


actor PlasmaPlusProtect : PowerProtection
{
powerup.duration 2
damagefactor "PlasmaPlus", 0.0
}