//Hilman170499
const int CLR_BLUEMANBLASTER = 3522;

actor BluemanBlasterWep_NormalBar : NormalBar { args 228, 75 }
actor BluemanBlasterWep_ScriptBar : ScriptBar {}

actor BluemanBlasterWep : BaseMM8BDMWep
{
Weapon.AmmoUse 1
Weapon.AmmoGive 56
Weapon.SlotNumber 7
Inventory.Pickupmessage "$PU_BLUEMANBLASTER"
Obituary "$OB_BLUEMANBLASTER"
Tag "$TAG_BLUEMANBLASTER"
weapon.ammotype "BluemanBlasterAmmo"
inventory.icon "BLBLICO"
States
{
SpawnLoop:
BLBL X -1
loop
Ready:
BLBL A 0 ACS_NamedExecuteWithResult("core_weaponcolor",CLR_BLUEMANBLASTER)
BLBL A 1 A_WeaponReady
Goto Ready+1
Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
BLBL A 1
Loop
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
BLBL A 1
Loop
AltFire:
BLBL A 0 A_JumpIfNoAmmo("NoAmmo")
BLBL A 2
goto Fire1
Fire:
BLBL A 0 A_JumpIfNoAmmo("NoAmmo")
BLBL A 1
goto Hold
Hold:
BLBL A 0 A_JumpIfNoAmmo("NoAmmo")
BLBL A 0 A_JumpIfInventory("WeaponCharge",40,"Charge3")
BLBL A 0 A_JumpIfInventory("WeaponCharge",36,"Charge2")
BLBL A 0 A_JumpIfInventory("WeaponCharge",10,"Charge")
BLBL A 1 A_GiveInventory("WeaponCharge", 1 + CallACS("core_checkrune", RUNE_RAGE))
BLBL A 0 A_Refire
Goto Fire1
Charge:
BLBL A 0 A_JumpIfInventory("WeaponCharge",40,"Charge3")
BLBL A 0 A_JumpIfInventory("WeaponCharge",36,"Charge2")
BLBL A 0 A_JumpIfInventory("WeaponCharge",11,"Charge1")
BLBL A 0 A_PlaySoundEx("weapon/pcharge","Weapon")
BLBL A 0 A_SpawnItemEx("BluemanChargeFX",0,0,40)
Goto Charge1
Charge1:
BLBL B 0 A_JumpIfInventory("WeaponCharge",40,"Charge3")
BLBL B 0 A_JumpIfInventory("WeaponCharge",36,"Charge2")
BLBL B 4
BLBL B 0 A_GiveInventory("WeaponCharge", 2 + (2* CallACS("core_checkrune", RUNE_RAGE)) )
BLBL B 0 A_Refire("Charge1")
Goto Fire2
Charge2:
BLBL B 0 A_JumpIfInventory("BluemanBlasterAmmo",10,"Charge2b")
goto Charge3b
Charge2b:
BLBL B 0 A_JumpIfInventory("WeaponCharge",40,"Charge3")
BLBL B 0 A_GiveInventory("WeaponCharge",10)
BLBL C 5
BLBL C 0 A_Refire("Charge2c")
goto Fire3
Charge2c:
BLBL B 0 A_PlaySoundEx("misc/darkthrow","Weapon")
BLBL B 0 A_GiveInventory("BluemanBarrier",1)
BLBL B 0 A_SpawnItemEx("BluemanBarrierFX")
goto Charge3
Charge3:
BLBL B 0 A_JumpIfInventory("BluemanBlasterAmmo",10,"Charge4")
BLBL B 0 A_TakeInventory("BluemanBarrier",999)
BLBL B 0 A_TakeInventory("WeaponCharge",10)
BLBL B 0 A_PlaySoundEx("misc/darkthrow","Weapon")
BLBL C 4
goto Charge3b
Charge4:
BLBL C 0 A_TakeInventory("BluemanBlasterAmmo",1,TIF_NOTAKEINFINITE)
BLBL C 2 //A_SpawnItemEx("BluemanBarrierDamager",8,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
BLBL C 0 A_JumpIfInventory("IsBot", 1, "BotFire")
BLBL C 0 A_Refire("Charge4b")
Goto Fire3
Charge4b:
BLBL C 2 //A_SpawnItemEx("BluemanBarrierDamager",8,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
BLBL C 0 A_JumpIfInventory("IsBot", 1, "BotFire")
BLBL C 0 A_Refire("Charge4c")
Goto Fire3
Charge4c:
BLBL C 2 //A_SpawnItemEx("BluemanBarrierDamager",8,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
BLBL C 0 A_JumpIfInventory("IsBot", 1, "BotFire")
BLBL C 0 A_Refire("Charge4d")
Goto Fire3
Charge4d:
BLBL C 2 //A_SpawnItemEx("BluemanBarrierDamager",8,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
BLBL C 0 A_JumpIfInventory("IsBot", 1, "BotFire")
BLBL C 0 A_Refire("Charge4e")
Goto Fire3
Charge4e:
BLBL C 2 //A_SpawnItemEx("BluemanBarrierDamager",8,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
BLBL C 0 A_JumpIfInventory("IsBot", 1, "BotFire")
BLBL C 0 A_Refire("Charge3")
Goto Fire3
Charge3b:
BLBL B 4 A_JumpIfInventory("BluemanBlasterAmmo",10,"Charge3c")
BLBL B 0 A_JumpIfInventory("IsBot", 1, "BotFireB")
BLBL B 0 A_Refire("Charge3b")
Goto Fire2
Charge3c:
BLBL B 0
goto Charge2b+1
BotFire:
BLBL C 0 A_Jump(16, "Fire3")
BLBL C 0 A_Refire
Goto Fire3
BotFireB:
BLBL B 0 A_Jump(16, "Fire2")
BLBL B 0 A_Refire
Goto Fire2

Fire1:
BLBL A 0 A_TakeInventory("BluemanBarrier",999)
BLBL A 0 A_TakeInventory("WeaponCharge",500)
BLBL A 0 A_JumpIfNoAmmo("NoAmmo")
BLBL A 0 A_PlaySoundEx("misc/minilaser","Weapon")
BLBL A 0 A_FireCustomMissile("BluemanBlaster",0,1,8,0)
BLBL BC 4
BLBL A 3
Goto Ready+1
Fire2:
BLBL A 0 A_TakeInventory("BluemanBarrier",999)
BLBL A 0 A_TakeInventory("WeaponCharge",500)
BLBL A 0 //A_JumpIfInventory("BluemanBlasterAmmo",4,"Fire2r")
BLBL A 0 A_PlaySoundEx("misc/minilaser","Weapon")
BLBL A 0 A_FireCustomMissile("BluemanBlaster",0,1,8,0)
BLBL BC 4
BLBL A 3
Goto Ready+1
Fire2r:
BLBL A 0 A_TakeInventory("BluemanBarrier",999)
BLBL A 0 A_TakeInventory("WeaponCharge",500)
BLBL A 0 A_PlaySoundEx("misc/minilaser","Weapon")
BLBL A 0 A_FireCustomMissile("BluemanBlaster",0,1,8,0)
BLBL A 0 //A_TakeInventory("BluemanBlasterAmmo",4,TIF_NOTAKEINFINITE)
BLBL BC 4
BLBL A 3
Goto Ready+1
Fire3:
BLBL A 0 A_TakeInventory("BluemanBarrier",999)
BLBL A 0 A_TakeInventory("WeaponCharge",500)
BLBL A 0 A_JumpIfInventory("BluemanBlasterAmmo",10,"Fire3r")
BLBL A 0 A_JumpIfInventory("BluemanBlasterAmmo",4,"Fire2r")
BLBL A 0 A_PlaySoundEx("misc/minilaser","Weapon")
BLBL A 0 A_FireCustomMissile("BluemanBlaster",0,1,8,0)
BLBL BC 4
BLBL A 3
Goto Ready+1
Fire3r:
BLBL A 0 A_PlaySoundEx("weapon/photonmissilearm","Weapon")
BLBL A 0 A_FireCustomMissile("BluemanBlaster3",0,0,8,0)
BLBL A 0 A_TakeInventory("BluemanBlasterAmmo",10,TIF_NOTAKEINFINITE)
BLB2 ABCDEF 2
BLBL A 3
Goto Ready+1
NoAmmo:
BLBL A 1 ACS_Execute(979,0)
Goto Ready+1
}
}


actor BluemanBlasterAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 56
+INVENTORY.IGNORESKILL
}

actor BluemanLaser : BasicProjectile
{
+BRIGHT
+RIPPER
+FORCEXYBILLBOARD
damagetype "BluemanBlaster1"
Obituary "$OB_BLUEMANBLASTER"
Speed 35
Damage (CallACS("basinofweps_cbm_damage", 5))
radius 5
height 5
Translation "192:192=228:228", "198:198=75:75"
States
{
Spawn:
BLBL F 5
loop
}
}

actor BluemanBlaster : BasicProjectile
{
+BRIGHT
damagetype "BluemanBlaster2"
Obituary "$OB_BLUEMANBLASTER"
Translation "192:192=228:228", "198:198=75:75"
Speed 35
speed 40
radius 6
height 6
Damage (CallACS("basinofweps_cbm_damage", 12))
States
{
Spawn:
BLBL Q 0
BLBL Q 1 A_SpawnItemEx("BluemanBlasterFX",-16,0,0,0,0,0,0,SXF_WEPFXCOLOR)
goto Spawn+1
Death:
BLBL Q 0 A_Stop
BLBL Q 0 A_SpawnItemEx("BluemanLaser",0,0,0,-40,0,0,15)
BLBL Q 0 A_SpawnItemEx("BluemanLaser",0,0,0,-40,0,0,-15)
BLBL Q 0
stop
}
}

actor BluemanBlasterFX : BasicGraphicEffect
{
+BRIGHT
+FORCEXYBILLBOARD
Translation "192:192=228:228", "198:198=75:75"
Scale 2.5
States
{
Spawn:
BLBL F 2
stop
}
}

actor BluemanBlaster3 : BasicProjectile
{
+BRIGHT
//+DONTBLAST
//+DONTREFLECT
Radius 15
Height 15
scale 2.5
damagetype "BluemanBlaster3"
Obituary "$OB_BLUEMANBLASTER"
damage (0)
speed 50
+EXPLODEONWATER
Translation "192:192=228:228", "198:198=75:75", "211:211=228:228", "225:225=75:75"
States
{
Spawn:
BLBL H 0
BLBL GHIH 2 A_SpawnItemEx("BluemanBlasterTrail")
goto Spawn+1
Death:
TNT1 A 0 A_Stop
TNT1 A 0 A_PlaySoundEx("weapon/bluemanblasterboom", "Weapon")
TNT1 A 0 A_Explode(CallACS("basinofweps_cbm_damage", 40), 96, 0)
TNT1 A 0 A_SpawnItemEx("BluemanBlasterBoom")
BLBL Q 0 A_SpawnItemEx("BluemanLaser",0,0,0,40,0,0,0)
BLBL Q 0 A_SpawnItemEx("BluemanLaser",0,0,0,40,0,0,60)
BLBL Q 0 A_SpawnItemEx("BluemanLaser",0,0,0,40,0,0,120)
BLBL Q 0 A_SpawnItemEx("BluemanLaser",0,0,0,40,0,0,-60)
BLBL Q 0 A_SpawnItemEx("BluemanLaser",0,0,0,40,0,0,-120)
BLBL Q 0 A_SpawnItemEx("BluemanLaser",0,0,0,40,0,0,180)
BLBL RSTU 2
stop
}
}

actor BluemanBlasterTrail : BasicProjectile
{
+DONTBLAST
+DONTREFLECT
+FORCEXYBILLBOARD
+BRIGHT
damagetype "BluemanBlaster4"
Obituary "$OB_BLUEMANBLASTER"
Damage (5)
radius 6
height 6
scale 2.5
Translation "192:192=228:228", "198:198=75:75"
States
{
Spawn:
BLBL Q 0
BLBL Q 15
BLBL QQQQQ 5 A_FadeOut(0.2)
stop
}
}

actor BluemanBlasterBoom : BasicExplosion
{
Radius 6
Height 7
scale 2.5
speed 0
damage (0)
damagetype "BluemanBlaster4" //Note: deals no hit stun
Obituary "$OB_BLUEMANBLASTER"
+BRIGHT
Reactiontime 20
Translation "192:192=228:228", "198:198=75:75"
States
{
Spawn:
BLBL K 0
BLBL MMNN 1 bright
BLBL K 0 A_Explode(CallACS("basinofweps_cbm_damage", 15),50,0)
goto Spawn2
Spawn2:
BLBL KKJJ 1 bright
BLBL K 0 A_Explode(CallACS("basinofweps_cbm_damage", 10),50,0)
BLBL K 0 A_Countdown
BLBL KKLL 1 bright
BLBL K 0 A_Explode(CallACS("basinofweps_cbm_damage", 10),50,0)
BLBL K 0 A_Countdown
loop
Death:
BLBL KK 1 bright
stop
}
}

actor BluemanBarrier : PowerProtection
{
powerup.duration 0x7FFFFFFF
damagefactor "normal", 0.6
}

actor BluemanBarrierDamager : BasicExplosion //Too OP. Saving for later.
{
damagetype "BluemanBarrier"
Obituary "$OB_BLUEMANBLASTER"
States
{
Spawn:
TNT1 A 0
TNT1 A 2 A_Explode(CallACS("basinofweps_cbm_damage", 5),64,0)
stop
}
}

actor BluemanChargeFX : BasicShieldWarper
{
	+BRIGHT
	Translation "192:192=228:228", "198:198=75:75"
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_GiveInventory("MM8BDMProjSpawnFuncClient",1)
	TNT1 A 1
	TNT1 A 0 ACS_NamedExecuteAlways("bluemanblaster_warper",0,4,10)
	TNT1 A 0 A_Jump(256, "Shield")
	Goto Shield
	Shield:
	BLBL JJKKLLKK 1 A_Warp(AAPTR_TARGET, 0, 0, 40, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
	loop
	}
}

actor BluemanBarrierFX : BasicShieldWarper
{
	+BRIGHT
	Translation "192:192=228:228", "198:198=75:75"
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_GiveInventory("MM8BDMProjSpawnFuncClient",1)
	TNT1 A 1
	TNT1 A 0 ACS_NamedExecuteAlways("bluemanblaster_warper",0,10,36)
	TNT1 A 0 A_Jump(256, "Shield")
	Goto Shield
	Shield:
	BLBL OOOPPP 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
	loop
	}
}