actor SunriseSalvoWep_NormalBar : NormalBar{args 215,227}
actor SunriseSalvoWep_ScriptBar : ScriptBar{}
actor SunriseSalvoWep : BaseMM8BDMWep 
{
Weapon.AmmoUse 2
Weapon.AmmoGive 30
Weapon.SlotNumber 2
Inventory.Pickupmessage "$PU_SUNRISESALVO"
Obituary "$OB_SUNRISESALVO"
Tag "$TAG_SUNRISESALVO"
weapon.ammotype "SunriseSalvoAmmo"
inventory.pickupsound "weapon/weaponup"
inventory.icon "SUSVICON"
+WEAPON.AMMO_OPTIONAL
Scale 2.0
States
{
SpawnLoop:
SUSV Z 1
loop
Ready:
SUSV A 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_SUNRISESALVO)
SUSV A 1 A_WeaponReady
Goto Ready+1
ReadyC: Goto Ready+1
Deselect:
SUSV A 0 
goto DeselectSwap
Select:
SUSV A 0 
goto SelectSwap
Fire:
SUSV A 0 A_JumpIfNoAmmo("NoAmmo")
SUSV I 0 A_SpawnItemEx("SunriseSalvoStart",0,0,28,0,0,0,0,1)
SUSV I 0 A_SpawnItemEx("SunriseSalvoStart2",0,0,28,0,0,0,0,1)
SUSV I 0 A_SpawnItemEx("SunriseSalvoStart3",0,0,28,0,0,0,0,1)
Holding:
SUSV C 0 A_TakeInventory("SunriseSalvoAmmo",2,TIF_NOTAKEINFINITE)
SUSV C 0 A_GiveInventory("WeaponCharge",1)
SUSV A 0 A_PlaySoundEx("misc/sunstarwrathpillar", "Weapon", 0)
SUSV B 3
SUSV B 3
SUSV B 3
SUSV C 0 A_Refire(1)
goto Unleash
SUSV C 0 A_JumpIfNoAmmo("Hold")
SUSV C 0 A_JumpIfInventory("WeaponCharge",3,"Hold")
goto Holding
Hold:
SUSV C 1

"####" "#" 0 A_JumpIfInventory("IsBot", 1, "BotFire")
SUSV C 0 A_Refire
goto Unleash
BotFire:
"####" "#" 0 A_Jump(16, "Fire3")
"####" "#" 0 A_Refire("Unleash")
Goto Fire3
Altfire:
SUSV A 0 A_JumpIfInventory("Vile_ClassAltfire", 1, "ClassAltfire")
SUSV A 0 A_JumpIf(CallACS("Vile_class_altfire"), "ClassAltfire")
SUSV A 1 A_JumpIfInventory("MM8BDMPlayer", 1, 1)
wait
SUSV A 0 A_JumpIfNoAmmo("NoAmmo")
SUSV C 0 A_TakeInventory("SunriseSalvoAmmo",2,TIF_NOTAKEINFINITE)
Unleash:
SUSV A 0 A_PlaySoundEx("misc/sunstarshot","Weapon")
SUSV A 0 A_FireCustomMissile("SunriseSalvo",0,0,8,8)
SUSV C 0 A_GiveInventory("SalvoTiemJaJaJa",1)
SUSV ABC 2
SUSV C 0 A_TakeInventory("WeaponCharge",1)
SUSV C 0 A_JumpIfInventory("WeaponCharge",1,"Unleash")
SUSV BAAAAA 2
goto Ready+1
ClassAltfire:
SUSV A 0 
goto Super::Altfire
NoAmmo:
SUSV A 0 ACS_NamedExecuteAlways("core_noammo",0)
Goto Ready+1
}
}

actor SunriseSalvoAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 30
+INVENTORY.IGNORESKILL
}

actor SalvoTiemJaJaJa : Powerup
{
    powerup.duration 10
}


actor SunriseSalvoStart : BasicGraphicEffect
{
+BRIGHT
var int user_dist;
var int user_a;
//renderstyle add
+FORCEXYBILLBOARD
mass 0
accuracy 180
states
{
SpawnFrame:
TNT1 A 0
S_UN H 0 A_SetUserVar(user_a,accuracy)
S_UN H 0 A_SetUserVar(user_dist,mass)
S_UN B 0 ACS_NamedExecuteWithResult("core_alphaprojectile", CallACS("core_getptrtid", AAPTR_TARGET), APROJ_TEAM, 15, 75)
SpawnDelay:
TNT1 A 0 A_JumpIfInTargetInventory("WeaponCharge",1,"SpawnForth")
TNT1 "#" 0 A_JumpIfInTargetInventory("SalvoTiemJaJaJa",1,"Death")
TNT1 "#" 0 A_SetUserVar(user_a,user_a+12)
TNT1 "#" 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"Death")
TNT1 "#" 0 A_Warp(AAPTR_Target, user_dist, 0, 28, user_a, WARPF_NOCHECKPOSITION)
TNT1 "#" 0 A_SetUserVar(user_dist,user_dist+2)
loop
SpawnForth:
S_UN H 0 A_JumpIfInTargetInventory("SalvoTiemJaJaJa",1,"Move")
S_UN "#" 0 A_SetUserVar(user_a,user_a+12)
S_UN "#" 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"Death")
S_UN "#" 0 A_Warp(AAPTR_Target, user_dist, 0, 28, user_a, WARPF_NOCHECKPOSITION)
S_UN "#" 0 A_JumpIf(user_dist>=60,"SpawnBack")
S_UN "#" 0 A_SetUserVar(user_dist,user_dist+2)
S_UN I 0 A_JumpIfInTargetInventory("SalvoTiemJaJaJa",1,"Move")
S_UN "#" 0 A_SetUserVar(user_a,user_a+12)
S_UN "#" 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"Death")
S_UN "#" 0 A_Warp(AAPTR_Target, user_dist, 0, 28, user_a, WARPF_NOCHECKPOSITION)
S_UN "#" 0 A_JumpIf(user_dist>=60,"SpawnBack")
S_UN "#" 0 A_SetUserVar(user_dist,user_dist+2)
S_UN J 0 A_JumpIfInTargetInventory("SalvoTiemJaJaJa",1,"Move")
S_UN "#" 0 A_SetUserVar(user_a,user_a+12)
S_UN "#" 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"Death")
S_UN "#" 0 A_Warp(AAPTR_Target, user_dist, 0, 28, user_a, WARPF_NOCHECKPOSITION)
S_UN "#" 0 A_JumpIf(user_dist>=60,"SpawnBack")
S_UN "#" 0 A_SetUserVar(user_dist,user_dist+2)
S_UN I 0 A_JumpIfInTargetInventory("SalvoTiemJaJaJa",1,"Move")
S_UN "#" 0 A_SetUserVar(user_a,user_a+12)
S_UN "#" 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"Death")
S_UN "#" 0 A_Warp(AAPTR_Target, user_dist, 0, 28, user_a, WARPF_NOCHECKPOSITION)
S_UN "#" 0 A_JumpIf(user_dist>=60,"SpawnBack")
S_UN "#" 0 A_SetUserVar(user_dist,user_dist+2)
loop
SpawnBack:
S_UN H 0 A_JumpIfInTargetInventory("SalvoTiemJaJaJa",1,"Move")
S_UN "#" 0 A_SetUserVar(user_a,user_a+12)
S_UN "#" 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"Death")
S_UN "#" 0 A_Warp(AAPTR_Target, user_dist, 0, 28, user_a, WARPF_NOCHECKPOSITION)
S_UN "#" 0 A_JumpIf(user_dist<=30,"SpawnForth")
S_UN "#" 0 A_SetUserVar(user_dist,user_dist-2)
S_UN I 0 A_JumpIfInTargetInventory("SalvoTiemJaJaJa",1,"Move")
S_UN "#" 0 A_SetUserVar(user_a,user_a+12)
S_UN "#" 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"Death")
S_UN "#" 0 A_Warp(AAPTR_Target, user_dist, 0, 28, user_a, WARPF_NOCHECKPOSITION)
S_UN "#" 0 A_JumpIf(user_dist<=30,"SpawnForth")
S_UN "#" 0 A_SetUserVar(user_dist,user_dist-2)
S_UN J 0 A_JumpIfInTargetInventory("SalvoTiemJaJaJa",1,"Move")
S_UN "#" 0 A_SetUserVar(user_a,user_a+12)
S_UN "#" 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"Death")
S_UN "#" 0 A_Warp(AAPTR_Target, user_dist, 0, 28, user_a, WARPF_NOCHECKPOSITION)
S_UN "#" 0 A_JumpIf(user_dist<=30,"SpawnForth")
S_UN "#" 0 A_SetUserVar(user_dist,user_dist-2)
S_UN I 0 A_JumpIfInTargetInventory("SalvoTiemJaJaJa",1,"Move")
S_UN "#" 0 A_SetUserVar(user_a,user_a+12)
S_UN "#" 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"Death")
S_UN "#" 0 A_Warp(AAPTR_Target, user_dist, 0, 28, user_a, WARPF_NOCHECKPOSITION)
S_UN "#" 0 A_JumpIf(user_dist<=30,"SpawnForth")
S_UN "#" 0 A_SetUserVar(user_dist,user_dist-2)
loop
Move:
S_UN G 1 A_SetUserVar(user_dist,user_dist-6)
S_UN G 0 A_Warp(AAPTR_Target, user_dist, 0, 28, user_a, WARPF_NOCHECKPOSITION)
S_UN F 1 A_SetUserVar(user_dist,user_dist-6)
S_UN F 0 A_Warp(AAPTR_Target, user_dist, 0, 28, user_a, WARPF_NOCHECKPOSITION)
S_UN E 1 A_SetUserVar(user_dist,user_dist-6)
S_UN E 0 A_Warp(AAPTR_Target, user_dist, 0, 28, user_a, WARPF_NOCHECKPOSITION)
S_UN E 1 A_SetUserVar(user_dist,user_dist-6)
S_UN E 0 A_Warp(AAPTR_Target, user_dist, 0, 28, user_a, WARPF_NOCHECKPOSITION)
S_UN E 1 A_SetUserVar(user_dist,user_dist-6)
S_UN E 0 A_Warp(AAPTR_Target, user_dist, 0, 28, user_a, WARPF_NOCHECKPOSITION)
Death:
TNT1 A 0
stop
}
}

actor SunriseSalvoStart2 : SunriseSalvoStart{
accuracy 60
states
{
SpawnFrame:
TNT1 A 0
S_UN H 0 A_SetUserVar(user_a,accuracy)
S_UN H 0 A_SetUserVar(user_dist,mass)
S_UN B 0 ACS_NamedExecuteWithResult("core_alphaprojectile", CallACS("core_getptrtid", AAPTR_TARGET), APROJ_TEAM, 15, 75)
SpawnDelay:
TNT1 A 0 A_JumpIfInTargetInventory("WeaponCharge",2,"SpawnForth")
TNT1 "#" 0 A_JumpIfInTargetInventory("SalvoTiemJaJaJa",1,"Death")
TNT1 "#" 0 A_SetUserVar(user_a,user_a+12)
TNT1 "#" 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"Death")
TNT1 "#" 0 A_Warp(AAPTR_Target, user_dist, 0, 28, user_a, WARPF_NOCHECKPOSITION)
TNT1 "#" 0 A_SetUserVar(user_dist,user_dist+2)
loop
}
}

actor SunriseSalvoStart3 : SunriseSalvoStart{
accuracy 300
states
{
SpawnFrame:
TNT1 A 0
S_UN H 0 A_SetUserVar(user_a,accuracy)
S_UN H 0 A_SetUserVar(user_dist,mass)
S_UN B 0 ACS_NamedExecuteWithResult("core_alphaprojectile", CallACS("core_getptrtid", AAPTR_TARGET), APROJ_TEAM, 15, 75)
SpawnDelay:
TNT1 A 0 A_JumpIfInTargetInventory("WeaponCharge",3,"SpawnForth")
TNT1 "#" 0 A_JumpIfInTargetInventory("SalvoTiemJaJaJa",1,"Death")
TNT1 "#" 0 A_SetUserVar(user_a,user_a+12)
TNT1 "#" 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"Death")
TNT1 "#" 0 A_Warp(AAPTR_Target, user_dist, 0, 28, user_a, WARPF_NOCHECKPOSITION)
TNT1 "#" 0 A_SetUserVar(user_dist,user_dist+2)
loop
}
}

actor SunriseSalvo : BasicProjectile
{
+BRIGHT
Obituary "$OB_SUNRISESALVO"
Damagetype "SunriseSalvo"
MaxStepHeight 64
+HEXENBOUNCE
-NOGRAVITY
Damage (CallACS("vile_cbm_damage",12))
+RIPPER
+THRUACTORS
speed 32
states
{
Spawn:
TNT1 A 0
S_UN W 2 A_ChangeFlag("THRUACTORS",0)
SpawnLoop:
S_UN WWWWXXXXWWWWXXXXWWWWXXXXWWWWXXXXWWWWXXXXWWWWXXXXWWWWXXXXWWWWXXXXWWWWXXXX 1 A_CheckFloor("DeathFloor")
DeathFloor:
S_U2 A 0 A_SpawnItemEx("SunriseSalvo2",0,0,0,27)
stop
Death:
TNT1 A 2 A_CheckFloor("DeathFloor")
stop
}
}


actor SunriseSalvo2 : BasicProjectile
{
+BRIGHT
Obituary "$OB_SUNRISESALVO"
Damagetype "SunriseSalvo"
PROJECTILE
MaxStepHeight 64
+FLOORHUGGER
+SEEKERMISSILE
Damage (CallACS("vile_cbm_damage",12))
+RIPPER
+THRUACTORS
reactiontime 14
speed 27
states
{
Spawn:
TNT1 A 0
Seek:
S_U2 A 0 A_Countdown
S_U2 A 0 A_PlaySoundEx("misc/sunstargroundflame","Weapon")
S_U2 A 0 A_SpawnItemEx("SunriseSalvoTrail")
S_U2 AA 2 A_SeekerMissile(0, 1, SMF_CURSPEED|SMF_LOOK,25)
S_U2 A 0 A_PlaySoundEx("misc/sunstargroundflame","Weapon")
S_U2 A 0 A_SpawnItemEx("SunriseSalvoTrail")
S_U2 BB 2 A_SeekerMissile(0, 1, SMF_CURSPEED|SMF_LOOK,25)
loop
}
}

actor SunriseSalvoTrail : BasicProjectile
{
Obituary "$OB_SUNRISESALVO"
Damagetype "SunriseSalvoTrail"
+STEPMISSILE
maxstepheight 24
+NOEXPLODEFLOOR
gravity 100.0
Damage (CallACS("vile_cbm_damage",6))
height 4
radius 16
scale 2.0
reactiontime 125
states
{
Spawn:
S_UN QQQQRRRR 1 A_CountDown
loop
}
}

actor SunriseSalvoProtect : PowerProtection
{
Powerup.Duration 4
damagefactor "SunriseSalvo", 0.0
}