actor Solarman : VCBaseClass
{
Player.ScoreIcon "SOLAMUGS"
player.startitem "BaseFlagPack", 1
player.displayname "Solarman"
player.soundclass "Solarmanc"
player.startitem "SolarBlazeBoss"
player.startitem "UltimateAttackItem1"
player.startitem "UltSoundWatcherSpawn1"
player.startitem "Base112Ammo", 112
player.startitem "SolarSunPower", 1
player.startitem "SolarEntrance"
player.startitem "IsFromMM10"
player.viewheight 48
player.forwardmove 0.85,0.85
player.sidemove 0.83,0.83
player.jumpz 12
States
{
Animation0:
Spawn:
SOLM B 0
SOLM B 1 A_JumpIf(z-floorz>0, "Jumping") 
SOLM A 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn+2

See:
SOLM BBBBBCCCCCDDDDDEEEEE 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn+1

Jumping:
SOLM I 1 A_JumpIf(z-floorz<=0, "SolarLand")
wait

SolarLand:
SOLM JJJ 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn+2

Animation1:
Missile:
SOLM GGGGG 1 A_JumpIf(z-floorz>0, "JumpingMissile")
Missile2:
SOLM GGGGG 1 A_JumpIf(z-floorz>0, "JumpingMissile2")
Goto Spawn+2
JumpingMissile:
SOLM L 0 A_JumpIf(pitch>30 && pitch<=90,"MissileDown")
SOLM LLLLL 1 A_JumpIf(z-floorz<=0, "Missile")
JumpingMissile2:
SOLM LLLLL 1 A_JumpIf(z-floorz<=0, "Missile2")
Goto Jumping
MissileDown:
SOLM KKKKK 1 A_JumpIf(z-floorz<=0, "Missile")
MissileDown2:
SOLM KKKKK 1 A_JumpIf(z-floorz<=0, "Missile2")
Goto Spawn+2

Animation2:
SolarBlock:
SOLM MMMMM 1 A_JumpIf(z-floorz>0, "JumpingSolarBlock")
SolarBlock2:
SOLM MMMMM 1 A_JumpIf(z-floorz>0, "JumpingSolarBlock2")
Goto Spawn+2
JumpingSolarBlock:
SOLM OOOOO 1 A_JumpIf(z-floorz<=0, "SolarBlock")
JumpingSolarBlock2:
SOLM OOOOO 1 A_JumpIf(z-floorz<=0, "SolarBlock2")
Goto Jumping

Animation3:
SolarInferno:
SOLM NNNNN 1 A_JumpIf(z-floorz>0, "JumpingSolarInferno")
Goto Spawn+2
JumpingSolarInferno:
SOLM PPPPP 1 A_JumpIf(z-floorz<=0, "SolarInferno")
Goto Jumping

ClassPain:
SOLM HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
Goto Spawn+1
ClassDeath:
SOLM H 20 ACS_ExecuteAlways(999,0,0)
SOLM H 0 A_PlayerScream
PLY1 H 0 A_SpawnItemEx("FakeDeathFXMM9", 0, 0, 32)
NOFX A 1 A_CheckPlayerDone
wait
WeaponGetM:
SOLM H 0 A_JumpIfInTargetInventory("SolarBlazeWepM",1,2)
SOLM H 0 A_GiveToTarget("WeaponGetter")
SOLM H 0 A_GiveToTarget("SolarBlazeWepM")
goto ClassDeath
}
}

actor SolarEntrance : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("SolarEntrySound")
stop
}
}

actor SolarEntrySound
{
PROJECTILE
radius 1
height 1
+NOINTERACTION
+NOCLIP
+CLIENTSIDEONLY
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_PlaySoundEx("misc/sunstarwrathpillar","Body")
stop
}
}

Actor SolarBlazeBoss : VCBaseWeapon
{
weapon.ammotype1 "Base112Ammo"
Obituary "$OB_SOLARMAN1"
States
{
Ready:
TNT1 A 0

Ready2:
SUNH A 0 A_JumpIfInventory("IsUsingAltSkin1",1,"AltSkinFrame")

ReadyB:
"####" A 0 A_JumpIfInventory("Base112Ammo",28,"ReadyB.CanTF")
"####" A 1 A_GiveInventory("SolarManSun1PickUp",1) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
"####" A 1 A_GiveInventory("SolarManSun1PickUp",1) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
"####" A 1 A_GiveInventory("SolarManSun1PickUp",1) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
"####" A 1 A_GiveInventory("SolarManSun2PickUp",1) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
"####" A 1 A_GiveInventory("SolarManSun2PickUp",1) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
"####" A 1 A_GiveInventory("SolarManSun2PickUp",1) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
goto Ready2

ReadyB.CanTF:
"####" A 1 A_GiveInventory("SolarManSun1PickUp",1) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
"####" A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
"####" A 1 A_GiveInventory("SolarManSun1PickUp",1) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
"####" A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
"####" A 1 A_GiveInventory("SolarManSun1PickUp",1) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
"####" A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
"####" A 1 A_GiveInventory("SolarManSun2PickUp",1) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
"####" A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
"####" A 1 A_GiveInventory("SolarManSun2PickUp",1) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
"####" A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
"####" A 1 A_GiveInventory("SolarManSun2PickUp",1) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
"####" A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
goto Ready2

AltSkinFrame:
SU_H A 0
goto ReadyB

Deselect:
"####" AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
"####" A 1 A_Lower
Loop

Select:
"####" A 0 A_SpawnItemEx("SolarSkinWatcher")
"####" A 0 ACS_ExecuteAlways(991,0,1907)
"####" AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
"####" A 1 A_Raise
Loop

Fire:
"####" EFGHIJ 1 ACS_NamedExecuteWithResult("VC_SetState",1)
Goto Fire.Go

Fire.Go:
"####" A 0 A_GiveInventory("SolarManMainPickUp",1)
"####" KKJJJJJJJJIHGF 1 ACS_NamedExecuteWithResult("VC_SetState",1)
"####" A 0 A_Refire("Fire.Check")
Goto Fire.End

Fire.Check:
"####" A 0 A_JumpIfInventory("Base112Ammo",14,1)
Goto Fire.End
"####" GHIJ 1 ACS_NamedExecuteWithResult("VC_SetState",1)
Goto Fire.Go

Fire.End:
"####" EEAAAAAAAA 1 ACS_NamedExecuteWithResult("VC_SetState",1)
"####" A 0 ACS_NamedExecuteWithResult("VC_SetState",0)
"####" A 0 A_ClearRefire
Goto Ready2

Altfire:
"####" A 0 A_JumpIfInventory("NoAltfire",1,"ReadyB")
"####" A 0 A_GiveInventory("SolarBlockSlowDown",1)
"####" A 1 Offset(0,36)A_GiveInventory("SolarManAltfire1PickUp",1) "####" A 0 ACS_NamedExecute("VC_ViewHeight",0,42)
"####" E 1 Offset(0,40)A_GiveInventory("SolarManAltfire2PickUp",1) "####" A 0 ACS_NamedExecute("VC_ViewHeight",0,36)
"####" F 1 Offset(0,44)A_GiveInventory("SolarManAltfire3PickUp",1) "####" A 0 ACS_NamedExecute("VC_ViewHeight",0,30)
"####" A 0 A_GunFlash("Flash.M2")
Goto Altfire.Blocking

Altfire.Blocking:
"####" A 0 A_JumpIfInventory("Base112Ammo",1,1) Goto Altfire.End "####" A 0 A_Refire(1) Goto Altfire.End "####" F 1 Offset(0,48)A_GiveInventory("SolarManAltfire4PickUp",1)
"####" A 0 A_JumpIfInventory("Base112Ammo",1,1) Goto Altfire.End "####" A 0 A_Refire(1) Goto Altfire.End "####" F 1 Offset(0,48)A_GiveInventory("SolarManAltfire4PickUp",1)
"####" A 0 A_JumpIfInventory("Base112Ammo",1,1) Goto Altfire.End "####" A 0 A_Refire(1) Goto Altfire.End "####" F 1 Offset(0,48)A_GiveInventory("SolarManAltfire4PickUp",1)
"####" A 0 A_JumpIfInventory("Base112Ammo",1,1) Goto Altfire.End "####" A 0 A_Refire(1) Goto Altfire.End "####" F 1 Offset(0,48)A_GiveInventory("SolarManAltfire4BPickUp",1)
"####" A 0 A_JumpIfInventory("Base112Ammo",1,1) Goto Altfire.End "####" A 0 A_Refire(1) Goto Altfire.End "####" F 1 Offset(0,48)A_GiveInventory("SolarManAltfire4BPickUp",1)
"####" A 0 A_JumpIfInventory("Base112Ammo",1,1) Goto Altfire.End "####" A 0 A_Refire(1) Goto Altfire.End "####" F 1 Offset(0,48)A_GiveInventory("SolarManAltfire4BPickUp",1)
loop

Altfire.End:
"####" A 0 A_GunFlash
"####" F 1 Offset(0,44)A_GiveInventory("SolarManAltfire3PickUp",1) "####" A 0 ACS_NamedExecute("VC_ViewHeight",0,36)
"####" E 1 Offset(0,40)A_GiveInventory("SolarManAltfire2PickUp",1) "####" A 0 ACS_NamedExecute("VC_ViewHeight",0,42)
"####" A 1 Offset(0,36)A_GiveInventory("SolarManAltfire1PickUp",1) "####" A 0 ACS_NamedExecute("VC_ViewHeight",0,48)
"####" A 0 A_TakeInventory("SolarBlockSlowDown",1)
"####" A 0 ACS_NamedExecuteWithResult("VC_SetState",0)
"####" A 0 A_ClearRefire
"####" A 14 A_WeaponReady(WRF_NOFIRE)
"####" A 0 A_GunFlash("NoFlash")
Goto Ready2

User1:
"####" EFLMNO 1 ACS_NamedExecuteWithResult("VC_SetState",1)
Goto User1.Go

User1.Go:
"####" A 0 A_TakeInventory("Base112Ammo",1)
"####" A 0 A_GiveInventory("SolarManThirdfirePickUp",1)
"####" PPOO 1 ACS_NamedExecute("VC_SetState",0,1)
"####" A 0 A_TakeInventory("Base112Ammo",2)
"####" A 0 A_GiveInventory("SolarManThirdfirePickUp",1)
"####" PPOO 1 ACS_NamedExecute("VC_SetState",0,1)
"####" A 0 A_TakeInventory("Base112Ammo",2)
"####" A 0 A_GiveInventory("SolarManThirdfirePickUp",1)
"####" PPOO 1 ACS_NamedExecute("VC_SetState",0,1)
"####" A 0 A_TakeInventory("Base112Ammo",2)
"####" A 0 A_GiveInventory("SolarManThirdfirePickUp",1)
"####" PPOO 1 ACS_NamedExecute("VC_SetState",0,1)
"####" OOOOOOOO 1 ACS_NamedExecute("VC_SetState",0,1)
"####" A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1.Check")
Goto User1.End

User1.Check:
"####" A 0 A_JumpIfInventory("Base112Ammo",7,"User1.Go")
Goto User1.End

User1.End:
"####" NMLFEEAAAA 1 ACS_NamedExecute("VC_SetState",0,1)
"####" A 0 ACS_NamedExecute("VC_SetState",0,0)
"####" A 0 A_ClearRefire
Goto Ready2

UltimateAttack:
"####" A 1
"####" A 0 A_GunFlash
"####" A 0 A_GiveInventory("SolarManUltimateStartPickUp",1)
"####" ABBCC 1 ACS_NamedExecuteWithResult("VC_SetState",3)
"####" A 0 A_PlaySoundEx("weapon/atomicfire","Weapon") "####" A 0 A_FireCustomMissile("RisingSolarInfernoSpawner")
"####" DDCCC 1 ACS_NamedExecuteWithResult("VC_SetState",3)
"####" A 0 A_PlaySoundEx("weapon/atomicfire","Weapon") "####" A 0 A_FireCustomMissile("RisingSolarInfernoSpawner")
"####" DDCCC 1 ACS_NamedExecuteWithResult("VC_SetState",3)
"####" A 0 A_PlaySoundEx("weapon/atomicfire","Weapon") "####" A 0 A_FireCustomMissile("RisingSolarInfernoSpawner")
"####" DDCCC 1 ACS_NamedExecuteWithResult("VC_SetState",3)
"####" A 0 A_PlaySoundEx("weapon/atomicfire","Weapon") "####" A 0 A_FireCustomMissile("RisingSolarInfernoSpawner")
"####" DDCCC 1 ACS_NamedExecuteWithResult("VC_SetState",3)
"####" A 0 A_PlaySoundEx("weapon/atomicfire","Weapon") "####" A 0 A_FireCustomMissile("RisingSolarInfernoSpawner")
"####" DDCCC 1 ACS_NamedExecuteWithResult("VC_SetState",3)
"####" A 0 A_PlaySoundEx("weapon/atomicfire","Weapon") "####" A 0 A_FireCustomMissile("RisingSolarInfernoSpawner")
"####" DDCCC 1 ACS_NamedExecuteWithResult("VC_SetState",3)
"####" A 0 A_FireCustomMissile("FallingSolarInfernoSpawner")
"####" CCBBA 1 ACS_NamedExecuteWithResult("VC_SetState",3)
"####" A 0 A_GunFlash("NoFlash")
"####" A 0 A_GiveInventory("SolarManUltimateEndPickUp",1)
Goto Ready2

Flash:
"####" A 0 A_TakeInventory("SolarManCharge",999)
"####" AAA 1 A_GiveInventory("SolarSunFXHandler1",1)
"####" AAA 1 A_GiveInventory("SolarSunFXHandler2",1)
loop
NoFlash:
"####" A 1 A_GiveInventory("SolarSunFXHandler1",1)
stop

Flash.M2:
"####" A 0 A_TakeInventory("SolarManCharge",999)
"####" A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
"####" A 0 A_JumpIfInventory("SolarSunPower",7,"NoFlash")
"####" A 1 A_JumpIfInventory("SolarAltHit",1,"Flash2")
loop

Flash2:
"####" A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
"####" A 0 A_GiveInventory("SolarManCharge",1)
"####" A 1 A_JumpIfInventory("SolarManCharge",0,"Flash.Give")
"####" A 0 A_JumpIfInventory("SolarAltHit",1,"Flash2")
goto Flash.M2

Flash.Give:
"####" A 0 A_GiveInventory("SolarSunPower",1)
"####" A 0 A_PlaySoundEx("weapon/sunparry","Auto")
goto Flash.M2
}
}

actor SolarManSun1PickUp : CustomInventory
{
const int OFS1 = 88;
const int OFS2 = 96;
const int OFS3 = 104;
States
{
Pickup:
TNT1 A 0 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",2,14)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",2,28))
TNT1 A 0 A_GiveInventory("Base112Ammo",2)
TNT1 A 0 A_JumpIfInventory("SolarSunPower",7,"Pickup2C")
TNT1 A 0 A_JumpIfInventory("SolarSunPower",4,"Pickup2B")
Goto Pickup2A

Pickup2A:
TNT1 A 0 A_SpawnItemEx("SolarManSun",0,0,OFS1,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarSunDamager",0,0,OFS1,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarManSunBlocker",0,0,OFS1,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop

Pickup2B:
TNT1 A 0 A_SpawnItemEx("SolarManSun3",0,0,OFS2,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarSunDamager2",0,0,OFS2,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarManSunBlocker",0,0,OFS2,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop

Pickup2C:
TNT1 A 0 A_SpawnItemEx("SolarManSun5",0,0,OFS3,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarSunDamager3",0,0,OFS3,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarManSunBlocker",0,0,OFS3,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor SolarManSun2PickUp : SolarManSun1PickUp
{
States
{
Pickup:
TNT1 A 0 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",2,14)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",2,28))
TNT1 A 0 A_GiveInventory("Base112Ammo",2)
TNT1 A 0 A_JumpIfInventory("SolarSunPower",7,"Pickup2C")
TNT1 A 0 A_JumpIfInventory("SolarSunPower",4,"Pickup2B")
Goto Pickup2A

Pickup2A:
TNT1 A 0 A_SpawnItemEx("SolarManSun2",0,0,OFS1,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarSunDamager",0,0,OFS1,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarManSunBlocker",0,0,OFS1,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop

Pickup2B:
TNT1 A 0 A_SpawnItemEx("SolarManSun4",0,0,OFS2,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarSunDamager2",0,0,OFS2,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarManSunBlocker",0,0,OFS2,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop

Pickup2C:
TNT1 A 0 A_SpawnItemEx("SolarManSun6",0,0,OFS3,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarSunDamager3",0,0,OFS3,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarManSunBlocker",0,0,OFS3,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor SolarManSun : BasicClientSide
{
States
{
Spawn:
TNT1 A 0
SOLB A 1
stop
}
}

actor SolarManSun2 : BasicClientSide
{
States
{
Spawn:
TNT1 A 0
SOLB B 1
stop
}
}

actor SolarManSun3 : BasicClientSide
{
States
{
Spawn:
TNT1 A 0
SOLB C 1
stop
}
}

actor SolarManSun4 : BasicClientSide
{
States
{
Spawn:
TNT1 A 0
SOLB D 1
stop
}
}

actor SolarManSun5 : BasicClientSide
{
States
{
Spawn:
SOLB E 0
SOLB E 1
stop
}
}

actor SolarManSun6 : BasicClientSide
{
States
{
Spawn:
TNT1 A 0
SOLB F 1
stop
}
}

actor SolarSunDamager
{
PROJECTILE
+RIPPER
+DONTBLAST
+THRUSPECIES
damagetype "SolarSun"
Obituary "$OB_SOLARMAN5"
species "DustManType"
Species "SolarManSun"
radius 1
height 1
mass 2
accuracy 40
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(mass,accuracy,0,0,accuracy)
stop
}
}
actor SolarSunDamager2 : SolarSunDamager { mass 3 accuracy 50 }
actor SolarSunDamager3 : SolarSunDamager { mass 4 accuracy 60 }

Actor SolarSunProtect : PowerProtection
{
	Powerup.Duration 3
	DamageFactor "SolarSun", 0.0
}

actor SolarManSunBlocker
{
PROJECTILE
health 99999
+NOBLOOD
Damage (0)
+SHOOTABLE
+NORADIUSDMG
-NOBLOCKMAP
+DONTREFLECT
+GHOST
Species "SolarManSun"
+THRUSPECIES
Radius 20
Height 60
Speed 5
scale 2.5
painchance 256
mass 99999
+DONTRIP
damagefactor "FireTrap", 0.0
damagefactor "FirePillar", 0.0
damagefactor "Beam", 0.0
var int user_NoOwnerDamage;//No damage from allies
+USEDAMAGEEVENTSCRIPT
States
{
Spawn:
TNT1 A 0
TNT1 A 1
stop

Pain:
TNT1 A 0 A_JumpIfInTargetInventory("WeaponCharge",2,"End")
TNT1 A 0 A_JumpIfInTargetInventory("SunAbsorbCoolDown",1,"End")
TNT1 A 0 A_GiveToTarget("SunAbsorbCoolDown")
TNT1 A 0 A_GiveToTarget("SolarSunPower",1)
Goto No

No:
TNT1 A 0 A_PlaySoundEx("weapon/sunparry","Weapon")
TNT1 A 0 A_JumpIfInTargetInventory("SolarSunPower",7,"Shine3a")
TNT1 A 0 A_JumpIfInTargetInventory("SolarSunPower",4,"Shine2a")
TNT1 AAAA 0 A_SpawnItemEx("SunAbsorbFX",0,0,0,random(-2,2),random(-2,2),random(-2,2))
Goto End

Shine2a:
TNT1 A 0 A_JumpIfInTargetInventory("WeaponCharge",1,"Shine2b")
TNT1 A 0 A_GiveToTarget("WeaponCharge",1)
TNT1 A 0 A_PlaySoundEx("misc/sunstarwrathpillar","Body")
Shine2b:
TNT1 AAAAAA 0 A_SpawnItemEx("SunAbsorbFX2",0,0,0,random(-4,4),random(-4,4),random(-4,4))
Goto End

Shine3a:
TNT1 A 0 A_JumpIfInTargetInventory("WeaponCharge",2,"Shine3b")
TNT1 A 0 A_GiveToTarget("WeaponCharge",1)
TNT1 A 0 A_PlaySoundEx("misc/sunstarwrathpillar","Body")
Shine3b:
TNT1 AAAAAAAA 0 A_SpawnItemEx("SunAbsorbFX3",0,0,0,random(-6,6),random(-6,6),random(-6,6))
Goto End

End:
TNT1 A 1
stop
}
}

actor SolarManMainPickUp : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_TakeInventory("Base112Ammo",14)
TNT1 A 0 A_JumpIfInventory("SolarSunPower",7,"Pickup3")
TNT1 A 0 A_JumpIfInventory("SolarSunPower",4,"Pickup2")
TNT1 A 0 A_PlaySoundEx("weapon/solarshoot1","Weapon")
TNT1 A 0 A_FireCustomMissile("SolarBlazeRM",0,0,0,0)
stop

Pickup2:
TNT1 A 0 A_PlaySoundEx("weapon/solarshoot","Weapon")
TNT1 A 0 A_FireCustomMissile("SolarBlazeRM2",0,0,0,0)
stop

Pickup3:
TNT1 A 0 A_PlaySoundEx("weapon/solarshoot3","Weapon")
TNT1 A 0 A_FireCustomMissile("SolarBlazeRM3",0,0,0,0)
stop
}
}

actor SolarBlazeRM
{
Translation "192:192=217:217", "198:198=213:213"
PROJECTILE
+BRIGHT
-RIPPER
-ALLOWBOUNCEONACTORS
+HEXENBOUNCE
+THRUSPECIES
+CANBOUNCEWATER
+FORCEXYBILLBOARD
Obituary "$OB_SOLARMAN1"
DamageType "SolarWave"//DamageType "Solarman"
Species "SolarManSun"
BounceFactor 0.5
WallBounceFactor 0.5
Damage (15)
Speed 40
Radius 8
Height 16
Scale 2.5
const int SPD = 28;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
SOLB ABABABABABAB 3 A_SpawnItemEx("OilPitIgnite",0,0,-16)
TNT1 A 0 A_Stop
SOLB ABAB 3 A_SpawnItemEx("OilPitIgnite",0,0,-16)
Goto XDeath

XDeath:
TNT1 A 0 A_SpawnItemEx("OilPitIgnite",0,0,-16)
TNT1 A 0 A_PlaySoundEx("weapon/solarblaze1","weapon")
TNT1 A 0 A_SpawnItemEx("SolarWaveRM",0,0,0,SPD,0,0,0)
TNT1 A 0 A_SpawnItemEx("SolarWaveRM",0,0,0,SPD,0,0,180)
TNT1 A 35 A_SpawnItemEx("ExplosionEffect1")
stop
}
}

actor SolarBlazeRM2 : SolarBlazeRM
{
//DamageType "SolarWave"
damage (18)
Radius 16
Height 32
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
SOLB CDCDCDCDCDCD 3 A_SpawnItemEx("OilPitIgnite",0,0,-16)
TNT1 A 0 A_Stop
SOLB CDCD 3 A_SpawnItemEx("OilPitIgnite",0,0,-16)
Goto XDeath

XDeath:
TNT1 A 1//1 tic delay so the powerprotect works
TNT1 A 0 A_SpawnItemEx("OilPitIgnite",0,0,-16)
TNT1 A 0 A_PlaySoundEx("weapon/solarblaze","weapon")
TNT1 A 0 A_SpawnItemEx("SolarWaveRM2",0,0,0,SPD,0,0,0)
TNT1 A 0 A_SpawnItemEx("SolarWaveRM2",0,0,0,SPD,0,0,120)
TNT1 A 0 A_SpawnItemEx("SolarWaveRM2",0,0,0,SPD,0,0,240)
TNT1 A 2 A_SpawnItemEx("NitroTruckExplosion2FX",0,0,-16)
stop
}
}

actor SolarBlazeRM3 : SolarBlazeRM
{
//+RIPPER
+NOCLIP
damage (26)
Radius 24
Height 48
//DamageType "SolarmanProtect"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 1
TNT1 A 0 A_ChangeFlag("NOCLIP",False)
SOLB EFEFEFEFEFEF 3 A_SpawnItemEx("OilPitIgnite",0,0,-16)
TNT1 A 0 A_Stop
SOLB EFEF 3 A_SpawnItemEx("OilPitIgnite",0,0,-16)
Goto XDeath

XDeath:
TNT1 A 0 A_SpawnItemEx("OilPitIgnite",0,0,-16)
TNT1 A 0 A_PlaySoundEx("weapon/solarblaze3","weapon")
TNT1 A 0 A_SpawnItemEx("SolarWaveRM3",0,0,0,SPD,0,0,0)
TNT1 A 0 A_SpawnItemEx("SolarWaveRM3",0,0,0,SPD,0,0,90)
TNT1 A 0 A_SpawnItemEx("SolarWaveRM3",0,0,0,SPD,0,0,180)
TNT1 A 0 A_SpawnItemEx("SolarWaveRM3",0,0,0,SPD,0,0,270)
PFBX ABCDEFGHI 1
stop
}
}

actor SolarWaveRM
{
Translation "198:198=217:217", "192:192=213:213"
PROJECTILE
+BRIGHT
+THRUACTORS
+THRUSPECIES
+RIPPER
Obituary "$OB_SOLARMAN1"
DamageType "SolarWave"
Species "SolarManSun"
Damage (10)
Speed 40
Radius 12
Height 16
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 1
TNT1 A 0 A_ChangeFlag("THRUACTORS",False)
TNT1 A 0 A_Jump(256,"Spawn2")
Goto Spawn2

Spawn2:
GSOL KL 2 A_SpawnItemEx("OilPitIgnite",0,0,-16)
loop
}
}

actor SolarWaveRM2 : SolarWaveRM
{
Radius 20
Height 28
damage (15)
States
{
Spawn2:
GSOL GH 2 A_SpawnItemEx("OilPitIgnite",0,0,-16)
loop
}
}

actor SolarWaveRM3 : SolarWaveRM
{
Radius 28
Height 40
damage (20)
States
{
Spawn2:
GSOL IJ 2 A_SpawnItemEx("OilPitIgnite",0,0,-16)
loop
}
}

Actor SolarWaveProtect : PowerProtection
{
	Powerup.Duration 8
	DamageFactor "SolarWave", 0.0
}

actor SolarManAltfire1PickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("Base112Ammo",1)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
TNT1 A 0 A_JumpIfInventory("SolarSunPower",7,"Pickup2C")
TNT1 A 0 A_JumpIfInventory("SolarSunPower",4,"Pickup2B")
Goto Pickup2A

Pickup2A:
TNT1 A 0 A_SpawnItemEx("SolarManSunB",16,0,74,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarSunDamagerB",16,0,74,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarManSunBlocker",16,0,12,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop

Pickup2B:
TNT1 A 0 A_SpawnItemEx("SolarManSun3B",16,0,80,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarSunDamagerB",16,0,80,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarManSunBlocker",16,0,12,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop

Pickup2C:
TNT1 A 0 A_SpawnItemEx("SolarManSun5B",16,0,86,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarSunDamagerB",16,0,86,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarManSunBlocker",16,0,12,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor SolarManAltfire2PickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("Base112Ammo",1)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
TNT1 A 0 A_JumpIfInventory("SolarSunPower",7,"Pickup2C")
TNT1 A 0 A_JumpIfInventory("SolarSunPower",4,"Pickup2B")
Goto Pickup2A

Pickup2A:
TNT1 A 0 A_SpawnItemEx("SolarManSunB",32,0,60,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarSunDamagerB",32,0,60,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarManSunBlocker",32,0,12,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop

Pickup2B:
TNT1 A 0 A_SpawnItemEx("SolarManSun3B",32,0,64,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarSunDamagerB",32,0,64,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarManSunBlocker",32,0,12,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop

Pickup2C:
TNT1 A 0 A_SpawnItemEx("SolarManSun5B",32,0,68,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarSunDamagerB",32,0,68,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarManSunBlocker",32,0,12,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor SolarManAltfire3PickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("Base112Ammo",1)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
TNT1 A 0 A_JumpIfInventory("SolarSunPower",7,"Pickup2C")
TNT1 A 0 A_JumpIfInventory("SolarSunPower",4,"Pickup2B")
Goto Pickup2A

Pickup2A:
TNT1 A 0 A_SpawnItemEx("SolarManSunB",48,0,46,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarSunDamagerB",48,0,46,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarManSunBlocker",48,0,12,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop

Pickup2B:
TNT1 A 0 A_SpawnItemEx("SolarManSun3B",48,0,48,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarSunDamagerB",48,0,48,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarManSunBlocker",48,0,12,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop

Pickup2C:
TNT1 A 0 A_SpawnItemEx("SolarManSun5B",48,0,50,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarSunDamagerB",48,0,50,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarManSunBlocker",48,0,12,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor SolarManAltfire4PickUp : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_TakeInventory("Base112Ammo",1)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
TNT1 A 0 A_JumpIfInventory("SolarSunPower",7,"Pickup2C")
TNT1 A 0 A_JumpIfInventory("SolarSunPower",4,"Pickup2B")
Goto Pickup2A

Pickup2A:
TNT1 A 0 A_SpawnItemEx("SolarManSun2B",64,0,32,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarSunDamagerB",64,0,32,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarManSunBlocker",64,0,12,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop

Pickup2B:
TNT1 A 0 A_SpawnItemEx("SolarManSun4B",64,0,32,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarSunDamager2B",64,0,32,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarManSunBlocker",64,0,12)
stop

Pickup2C:
TNT1 A 0 A_SpawnItemEx("SolarManSun6B",64,0,32,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarSunDamager3B",64,0,32,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarManSunBlocker",64,0,12,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor SolarManAltfire4BPickUp : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_TakeInventory("Base112Ammo",1)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
TNT1 A 0 A_JumpIfInventory("SolarSunPower",7,"Pickup2C")
TNT1 A 0 A_JumpIfInventory("SolarSunPower",4,"Pickup2B")
Goto Pickup2A

Pickup2A:
TNT1 A 0 A_SpawnItemEx("SolarManSunB",64,0,32,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarSunDamagerB",64,0,32,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarManSunBlocker",64,0,12,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop

Pickup2B:
TNT1 A 0 A_SpawnItemEx("SolarManSun3B",64,0,32,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarSunDamager2B",64,0,32,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarManSunBlocker",64,0,12)
stop

Pickup2C:
TNT1 A 0 A_SpawnItemEx("SolarManSun5B",64,0,32,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarSunDamager3B",64,0,32,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SolarManSunBlocker",64,0,12,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor SolarBlockSlowDown : PowerSpeed
{
+POWERSPEED.NOTRAIL
powerup.duration 0x7fffffff
Speed 0.30
}

actor SolarManSunB : SolarManSun
{
States
{
Spawn:
GSO2 A 0
GSO2 A 1
stop
}
}

actor SolarManSun2B : SolarManSun
{
States
{
Spawn:
GSO2 B 0
GSO2 B 1
stop
}
}

actor SolarManSun3B : SolarManSun
{
States
{
Spawn:
GSO2 C 0
GSO2 C 1
stop
}
}

actor SolarManSun4B : SolarManSun
{
States
{
Spawn:
GSO2 D 0
GSO2 D 1
stop
}
}

actor SolarManSun5B : SolarManSun
{
States
{
Spawn:
GSO2 E 0
GSO2 E 1
stop
}
}

actor SolarManSun6B : SolarManSun
{
States
{
Spawn:
GSO2 F 0
GSO2 F 1
stop
}
}

actor SolarSunDamagerB : SolarSunDamager
{
damagetype "SolarSun"//"SolarSun2"
Obituary "$OB_SOLARMAN2"
}

actor SolarSunDamager2B : SolarSunDamager2
{
damagetype "SolarSun"//"SolarSun2"
Obituary "$OB_SOLARMAN2"
}

actor SolarSunDamager3B : SolarSunDamager3
{
damagetype "SolarSun"//"SolarSun2"
Obituary "$OB_SOLARMAN2"
}

actor SolarManThirdfirePickUp : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_PlaySoundEx("weapon/solarthirdfire","Weapon")
TNT1 A 0 A_JumpIfInventory("SolarSunPower",7,"Pickup3")
TNT1 A 0 A_JumpIfInventory("SolarSunPower",4,"Pickup2")
TNT1 A 0 A_FireCustomMissile("SolarFlareRM")
stop
Pickup2:
TNT1 A 0 A_FireCustomMissile("SolarFlareRM2",0,0,0,0)
stop
Pickup3:
TNT1 A 0 A_FireCustomMissile("SolarFlareRM3",0,0,0,0)
stop
}
}

actor SolarFlareRM
{
PROJECTILE
-NOGRAVITY
Obituary "$OB_SOLARMAN3"
DamageType "SolarmanFlame"
Gravity 1.5
Damage (6)
Speed 20
Radius 15
Height 8
Scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_Recoil(-16)
TNT1 A 1 ThrustThingZ(0, 30, 0, 1)
HOTH CD 2
Goto Spawn+4

Death:
TNT1 A 0 A_SpawnItemEx("OilPitIgnite")
TNT1 A 0 A_CheckFloor("Death2")
TNT1 AAAAAA 0 A_SpawnItemEx("MagmaBombFX",random(-24,24),random(-24,24),random(0,48),random(-16,16),random(-16,16),random(-16,16))
TNT1 A 2 A_PlaySoundEx("misc/lava","Body")
stop

Death2:
TNT1 A 0 A_SpawnItemEx("SolarFlareRMGround")
stop
}
}

actor SolarFlareRM2 : SolarFlareRM//&Ze
{
DamageType "SolarmanFlame2"
	States
	{
	Death2:
	TNT1 A 0 A_SpawnItemEx("SolarFlareRMGround2")
	stop
	}
}

actor SolarFlareRM3 : SolarFlareRM//&Ze
{
DamageType "SolarmanFlame3"
	States
	{
	Death2:
	TNT1 A 0 A_SpawnItemEx("SolarFlareRMGround3")
	stop
	}
}

actor SolarFlareRMGround : SolarFlareRM
{
+NOGRAVITY
+FLOORHUGGER
Height 10
Radius 10
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
FWVE ABABABABABABABABABABABDA 2
Goto Death

Death:
FWVE DA 2
stop
}
}

actor SolarFlareRMGround2 : SolarFlareRMGround
{
DamageType "SolarmanFlame2"
}

actor SolarFlareRMGround3 : SolarFlareRMGround
{
DamageType "SolarmanFlame3"
}

actor SolarManUltimateStartPickUp : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_Stop
TNT1 A 0 A_SetGravity(0.0)
TNT1 A 0 A_GiveInventory("NoSpeed",1)
TNT1 A 0 A_SpawnItemEx("SolarUltWatcher")
TNT1 A 0 A_ChangeFlag("INVULNERABLE",True)
TNT1 A 0 ACS_Execute(191,0,APROP_JumpZ,0,1)
TNT1 A 0 A_GiveInventory("InvProtection",1)
TNT1 A 0 A_TakeInventory("UltAttackFlag",1)
TNT1 A 0 A_GiveInventory("SolarUltCooldown",1)
TNT1 A 0 A_GiveInventory("SolarSunFXHandler1",1)
TNT1 A 0 A_PlaySoundEx("weapon/solarult","Body")
TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,94)
TNT1 A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
stop
}
}

actor SolarManUltimateEndPickUp : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_TakeInventory("NoSpeed",999)
TNT1 A 0 A_GiveInventory("GravityRestore")
TNT1 A 0 A_ChangeFlag("INVULNERABLE",False)
TNT1 A 0 A_TakeInventory("InvProtection",1)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",0)
TNT1 A 0 ACS_Execute(191,0,APROP_JumpZ,12,1)
stop
}
}

actor RisingSolarInfernoSpawner
{
PROJECTILE
+NOINTERACTION
+NOCLIP
+DONTREFLECT
Damage(0)
Height 1
Radius 1
Speed 0
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("SolarSunPower",7,"Spawn3")
TNT1 A 0 A_JumpIfInTargetInventory("SolarSunPower",4,"Spawn2")
TNT1 A 0 A_SpawnItemEx("RisingSolarInferno",0,0,64,0,0,10) 
stop

Spawn2:
TNT1 A 0 A_SpawnItemEx("RisingSolarInferno2",0,0,80,0,0,10) 
stop

Spawn3:
TNT1 A 0 A_SpawnItemEx("RisingSolarInferno3",0,0,88,0,0,10) 
stop
}
}


actor RisingSolarInferno
{
Translation "198:198=217:217", "192:192=213:213"
PROJECTILE
+RIPPER
+BRIGHT
Obituary "$OB_SOLARMAN4"
DamageType "SolarInferno"
Species "SolarManSun"
+THRUSPECIES
+DONTREFLECT
Radius 8
Height 16
scale 2.5
damage (8)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
GSOL ABABABABABABABABABABABABABABAB 3
Goto Death
Death:
TNT1 A 0
stop
}
}

actor RisingSolarInferno2 : RisingSolarInferno
{
Radius 16
Height 32
damage (9)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
GSOL CDCDCDCDCDCDCDCDCDCDCDCDCDCDCD 3
Goto Death
}
}

actor RisingSolarInferno3 : RisingSolarInferno
{
Radius 24
Height 48
damage (10)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
GSOL EFEFEFEFEFEFEFEFEFEFEFEFEFEFEF 3
Goto Death
}
}

actor FallingSolarInfernoSpawner
{
PROJECTILE
+NOINTERACTION
+NOCLIP
+DONTREFLECT
Damage(0)
Height 1
Radius 1
Speed 0
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("SolarSunPower",7,"Spawn3")
TNT1 A 0 A_JumpIfInTargetInventory("SolarSunPower",4,"Spawn2")
TNT1 AAAAAAAAAAAAAAA 4 A_SpawnItemEx("FallingSolarInfernoStart",random(0,300),0,0,0,0,300,random(0,359))
Goto End
Spawn2:
TNT1 AAAAAAAAAAAAAAAAA 4 A_SpawnItemEx("FallingSolarInfernoStart2",random(0,600),0,0,0,0,300,random(0,359))
Goto End
Spawn3:
TNT1 AAAAAAAAAAAAAAAAAAAA 4 A_SpawnItemEx("FallingSolarInfernoStart3",random(0,900),0,0,0,0,300,random(0,359))
End:
TNT1 A 0
stop
}
}

actor FallingSolarInfernoStart
{
+SKYEXPLODE
PROJECTILE
+THRUACTORS
+DONTREFLECT
Radius 8
Height 16
States
{
Spawn:
TNT1 A 2
Death:
TNT1 A 0 A_SpawnItemEx("FallingSolarInferno",0,0,-24,0,0,-20,random(0,359))
stop
}
}

actor FallingSolarInfernoStart2 : FallingSolarInfernoStart
{
Radius 16
Height 32
States
{
Spawn:
TNT1 A 2
Death:
TNT1 A 0 A_SpawnItemEx("FallingSolarInferno2",0,0,-24,0,0,-20,random(0,359))
stop
}
}

actor FallingSolarInfernoStart3 : FallingSolarInfernoStart
{
Radius 24
Height 48
States
{
Spawn:
TNT1 A 2
Death:
TNT1 A 0 A_SpawnItemEx("FallingSolarInferno3",0,0,-24,0,0,-20,random(0,359))
stop
}
}

actor FallingSolarInferno : RisingSolarInferno
{
+SKYEXPLODE
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
GSOL AB 3
goto Spawn+2
Death:
TNT1 A 0 A_Explode(15,100,0,0,50)
TNT1 A 0 A_SpawnItemEx("OilPitIgnite",0,0,-16)
TNT1 A 0 A_PlaySoundEx("weapon/solarblaze1","weapon")
TNT1 A 0 A_SpawnItemEx("SolarInfernoWave",0,0,0,28,0,0,0)
TNT1 A 0 A_SpawnItemEx("SolarInfernoWave",0,0,0,28,0,0,180)
TNT1 A 35 A_SpawnItemEx("ExplosionEffect1")
stop
}
}

actor FallingSolarInferno2 : FallingSolarInferno
{
Radius 16
Height 32
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
GSOL CD 3
goto Spawn+2
Death:
TNT1 A 0 A_Explode(20,150,0,0,75)
TNT1 A 0 A_SpawnItemEx("OilPitIgnite",0,0,-16)
TNT1 A 0 A_PlaySoundEx("weapon/solarblaze","weapon")
TNT1 A 0 A_SpawnItemEx("SolarInfernoWave2",0,0,0,28,0,0,0)
TNT1 A 0 A_SpawnItemEx("SolarInfernoWave2",0,0,0,28,0,0,120)
TNT1 A 0 A_SpawnItemEx("SolarInfernoWave2",0,0,0,28,0,0,240)
TNT1 A 2 A_SpawnItemEx("NitroTruckExplosion2FX",0,0,-16)
stop
}
}

actor FallingSolarInferno3 : FallingSolarInferno
{
Radius 24
Height 48
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
GSOL EF 3
goto Spawn+2
Death:
TNT1 A 0 A_Explode(25,200,0,0,100)
TNT1 A 0 A_SpawnItemEx("OilPitIgnite",0,0,-16)
TNT1 A 0 A_PlaySoundEx("weapon/solarblaze3","weapon")
TNT1 A 0 A_SpawnItemEx("SolarInfernoWave3",0,0,0,28,0,0,0)
TNT1 A 0 A_SpawnItemEx("SolarInfernoWave3",0,0,0,28,0,0,90)
TNT1 A 0 A_SpawnItemEx("SolarInfernoWave3",0,0,0,28,0,0,180)
TNT1 A 0 A_SpawnItemEx("SolarInfernoWave3",0,0,0,28,0,0,270)
PFBX ABCDEFGHI 2
stop
}
}

actor SolarInfernoWave : SolarWaveRM
{
+RIPPER
Damage(10)
DamageType "SolarInferno"
Obituary "$OB_SOLARMAN4"
}

actor SolarInfernoWave2 : SolarWaveRM2
{
+RIPPER
Damage(11)
DamageType "SolarInferno"
Obituary "$OB_SOLARMAN4"
}

actor SolarInfernoWave3 : SolarWaveRM3
{
+RIPPER
Damage(12)
DamageType "SolarInferno"
Obituary "$OB_SOLARMAN4"
}

actor SunAbsorbFX : BasicClientSide
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
SOLB AAABBBAAABBBAAABBBAAA 1 A_FadeOut(0.05)
stop
}
}

actor SunAbsorbFX2 : BasicClientSide
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
SOLB CCCDDDCCCDDDCCCDDDCCC 1 A_FadeOut(0.05)
stop
}
}

actor SunAbsorbFX3 : BasicClientSide
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
SOLB EEEFFFEEEFFFEEEFFFEEE 1 A_FadeOut(0.05)
stop
}
}

actor SolarUltWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_TakeFromTarget("ShortUltimateAmmo",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("ShortUltimateAmmo",1,"Spawn")
TNT1 A 1 A_TakeFromTarget("ShortUltimateAmmo",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("ShortUltimateAmmo",1,"Spawn")
Death:
TNT1 A 0
stop
}
}

actor SunAbsorbCoolDown : Powerup 
{
powerup.duration -1
}

actor SolarSunPower : Inventory
{
inventory.amount 1
inventory.maxamount 9
}

actor SolarSunFXHandler1 : SolarManSun1PickUp
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("SolarSunPower",7,"Pickup3")
TNT1 A 0 A_JumpIfInventory("SolarSunPower",4,"Pickup2")
goto Pickup1

Pickup1:
TNT1 A 0 A_SpawnItemEx("SolarManSun",0,0,OFS1,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop

Pickup2:
TNT1 A 0 A_SpawnItemEx("SolarManSun3",0,0,OFS2,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop

Pickup3:
TNT1 A 0 A_SpawnItemEx("SolarManSun5",0,0,OFS3,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor SolarSunFXHandler2 : SolarManSun1PickUp
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("SolarSunPower",7,"Pickup3")
TNT1 A 0 A_JumpIfInventory("SolarSunPower",4,"Pickup2")
goto Pickup1

Pickup1:
TNT1 A 0 A_SpawnItemEx("SolarManSun2",0,0,OFS1,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop

Pickup2:
TNT1 A 0 A_SpawnItemEx("SolarManSun4",0,0,OFS2,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop

Pickup3:
TNT1 A 0 A_SpawnItemEx("SolarManSun6",0,0,OFS3,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor SolarManCharge : Inventory
{
inventory.amount 1
inventory.maxamount 28
}

actor SolarAltHit : Powerup 
{
powerup.duration 4
}

actor SolarUltCooldown : UltBuildCooldownGiver
{
Powerup.Duration -8
}

actor SolarSkinWatcher
{
Height 0
Radius 0
+NOINTERACTION
+MISSILE
States
{
Spawn:
TNT1 A 0
TNT1 AAA 1 A_GiveToTarget("SolarSkinCheck")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
loop
Death:
TNT1 A 0
stop
}
}

actor SolarAfterburn
{
Height 0
Radius 0
+NOINTERACTION
+NOCLIP
damagetype "TurboBurning"
Obituary "$OB_TURBOMAN4"
PROJECTILE
states
{
Spawn:
TNT1 A 0
SpawnStart0:
TNT1 A 0 A_GiveInventory("SolarAfterBurnImmune",1,AAPTR_TRACER)//A_GiveInventory("TurboAfterBurnDamageTimer",1)
SpawnStart:
TNT1 A 1
TNT1 A 0 A_JumpIfInventory("NewAfterBurn",1,"SpawnStart",AAPTR_TRACER)
Spawn2:
TNT1 A 1
TNT1 A 0 A_GiveInventory("SolarAfterburnFunc",1)
loop
Death:
TNT1 A 0
stop
}
} 

actor SolarAfterburnFunc : TurboAfterburnFunc
{
states
{
Pickup:
TNT1 A 0 A_JumpIfInventory("SolarAfterBurnDuration",1,"Pickup2",AAPTR_TRACER)
TNT1 A 0 A_JumpIfInventory("SolarAfterBurnDuration2",1,"Pickup2",AAPTR_TRACER)
TNT1 A 0 A_JumpIfInventory("SolarAfterBurnDuration3",1,"Pickup2",AAPTR_TRACER)
PickupRemove:
TNT1 A 0 Thing_Remove(0)
stop
Pickup2:
TNT1 A 0 A_JumpIfInventory("SolarAfterBurnImmune",1,"PickupWait",AAPTR_TRACER)
TNT1 A 0 A_GiveInventory("SolarAfterBurnImmune",1,AAPTR_TRACER)
TNT1 A 0 A_JumpIfInventory("TurboNewAfterBurn",1,"PickupRemove",AAPTR_TRACER)
//TNT1 A 0 A_JumpIfInventory("TurboAfterBurnDamageTimer",1,"PickupWait")
TNT1 A 0 A_GiveInventory("TurboAfterBurnDamageTimer",1)
TNT1 A 0 A_Warp(AAPTR_TRACER,0,0,ACS_NamedExecuteWithResult("TracerHeightGet")/2,0,0)
TNT1 A 0 A_RadiusGive("AfterBurnImmune",IMMUNE_RADIUS,RGF_PLAYERS|RGF_MONSTERS|RGF_OBJECTS)
TNT1 A 0 A_TakeInventory("AfterBurnImmune",1,0,AAPTR_TRACER)
TNT1 A 0 A_Explode(6,1,0,0,1)
stop
}
}

actor SolarAfterBurnImmune : PowerUp
{
Powerup.Duration 34
}

actor SolarAfterBurnDuration : PowerUp
{
Powerup.Duration 70//35
}
actor SolarAfterBurnDuration2 : PowerUp
{
Powerup.Duration 105//70
}
actor SolarAfterBurnDuration3 : PowerUp
{
Powerup.Duration 140//105
}

actor  SolarSkinCheck : SkinChecker
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(CallACS("GC_GetSkinNum")==276,"AltSkin1")
goto NormalSkin
}
}

Actor SolarWave3Protect : PowerProtection
{
	Powerup.Duration 15
	DamageFactor "SolarmanProtect", 0.0
}