
//Inventory items.

actor SolarChecker : PowerUp //Checks if sun is present.
{
Powerup.Duration 3
}

actor SolarCheckerWave : PowerUp //Checks if sun is present.
{
Powerup.Duration 3
}

actor SunHasEnded : PowerUp
{
Powerup.Duration 3
}

Actor SolarReloadinFlag : OnceC {}

actor SolarCheckAlt : PowerUp //Checks if sun is present.
{
Powerup.Duration 3
}

actor SolarInfernoAmmo : Ammo //Ammo for inventory use.
{
inventory.amount 1
inventory.maxamount 400
}

actor SolarInfernoAmmoExtra : Ammo //Ammo for inventory use.
{
inventory.amount 1
inventory.maxamount 140
}

actor SolarInfernoHoldAmmo : Inventory //Ammo for inventory use.
{
inventory.amount 1
inventory.maxamount 70
}

actor SolarInfernoHoldAmmoDelay : Inventory //Ammo for inventory use.
{
inventory.amount 1
inventory.maxamount 350
}

actor SolarAltCheck : Inventory //Ammo for inventory use.
{
inventory.amount 1
inventory.maxamount 1
}

actor SolarMainSwag : Inventory //Ammo for inventory use.
{
inventory.amount 1
inventory.maxamount 1
}

actor FancySolarAmmoTaker : BasicHelper
{
reactiontime 14
States
{
Spawn:
TNT1 A 0
Spawn2:
TNT1 A 1 A_TakeFromTarget("SolarInfernoAmmo",40)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
TNT1 A 0 A_Countdown
loop
}
}

actor SolarAltPickup : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_JumpIfInventory("SolarInfernoAmmo",300,"Pickup2")
TNT1 A 0 A_PlaySoundEx("weapon/solarblaze","Body")
TNT1 A 0 A_GiveInventory("SolarInfernoAmmo",10)
stop

Pickup2:
TNT1 A 0 A_PlaySoundEx("weapon/solarblaze","Body")
TNT1 A 0 A_GiveInventory("SolarInfernoAmmoExtra",5)
stop

No:
TNT1 A 0
stop
}
}

actor SolarM_MortarSpawner : FastProjectile
{
Translation "192:192=248:248", "198:198=222:222","194:194=248:248", "195:195=222:222"
+DONTBLAST
+DONTREFLECT
+THRUGHOST
+DONTSPLASH
+SKYEXPLODE
damage (0)
Radius 20
Height 16
speed 35
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("SolarAimerFX1",0,0,-(z-floorz),0,0,50,0,1)
TNT1 A 1
loop
Death:
TNT1 A 0 A_SpawnItemEx("SolarMortar",0,0,-(z-ceilingz),0,0,-35,0,1)
stop
}
}

actor SolarM_MortarSpawnerB : SolarM_MortarSpawner{translation "192:192=205:205", "198:198=74:74"}
actor SolarM_MortarSpawnerR : SolarM_MortarSpawner{translation "192:192=171:171", "198:198=41:41"}
actor SolarM_MortarSpawnerO : SolarM_MortarSpawner{translation "192:192=104:104", "198:198=128:128"}
actor SolarM_MortarSpawnerP : SolarM_MortarSpawner{translation "192:192=229:229", "198:198=232:232"}

actor SolarAimerFX1
{
Translation "192:192=213:213", "198:198=217:217"
PROJECTILE
//Obituary "$OB_JUPITERBEAM"
//DamageType "ElectricShockB"
+DONTBLAST
+DONTREFLECT
+DONTSPLASH
+CLIENTSIDEONLY
+FORCEYBILLBOARD
+PAINLESS
-NOGRAVITY
+BOUNCEONWALLS
+BOUNCEONCEILINGS
RenderStyle "Translucent"
Alpha 0.6
WallBounceFactor 1
Bouncecount 10
Radius 16
Height 16
speed 23
scale 1.5
states
{
Spawn:
BASB U 0
TNT1 A 1 ACS_NamedExecuteAlways("CCBM_SolarClientCheck", 0, ACS_NamedExecuteWithResult("CCBM_GetMasterTID"))
BASB U 0 A_SpawnItemEx("SolarAimerFX2",0,0,0,momx,momy,momz,0,SXF_NOCHECKPOSITION | SXF_TRANSFERTRANSLATION | SXF_TRANSFERPITCH | SXF_ABSOLUTEVELOCITY | SXF_SETMASTER,0,6900)
GSOL A 1 Bright A_Stop
stop
Death:
TNT1 A 0
TNT1 A 0 //A_SetScale(2.5)
TNT1 A 0 //A_FadeIn(0.4)
TNT1 A 1 //Bright
stop
}
}

actor SolarAimerFX2 : SolarAimerFX1 
{
states
{
Spawn:
BASB U 0
BASB U 0 ACS_NamedExecuteAlways("CCBM_SolarClientCheck", 0, ACS_NamedExecuteWithResult("CCBM_GetMasterTID"))
BASB U 0 A_SpawnItemEx("SolarAimerFX2",0,0,0,momx,momy,momz,0,SXF_NOCHECKPOSITION | SXF_TRANSFERTRANSLATION | SXF_TRANSFERPITCH | SXF_ABSOLUTEVELOCITY | SXF_SETMASTER,0,6900)
GSOL A 1 Bright A_Stop
stop
Death:
TNT1 A 0
TNT1 A 0 //A_SetScale(2.5)
TNT1 A 0 //A_FadeIn(0.4)
TNT1 A 1 //Bright
stop
}
}

actor SolarAimerFX3
{
Translation "192:192=213:213", "198:198=217:217"
PROJECTILE
//Obituary "$OB_JUPITERBEAM"
//DamageType "ElectricShockB"
+DONTBLAST
+DONTREFLECT
+CLIENTSIDEONLY
+FORCEYBILLBOARD
+PAINLESS
-NOGRAVITY
+BOUNCEONWALLS
+BOUNCEONCEILINGS
RenderStyle "Translucent"
Alpha 0.6
WallBounceFactor 1
Bouncecount 10
Radius 16
Height 16
speed 1
scale 1.5
states
{
Spawn:
BASB U 0
TNT1 A 1 ACS_NamedExecuteAlways("CCBM_SolarClientCheck", 0, ACS_NamedExecuteWithResult("CCBM_GetMasterTID"))
BASB U 0 ThrustThingZ(0,45,0,1)
BASB U 0 A_SpawnItemEx("SolarAimerFX4",0,0,0,momx,momy,momz,0,SXF_NOCHECKPOSITION | SXF_TRANSFERTRANSLATION | SXF_TRANSFERPITCH | SXF_ABSOLUTEVELOCITY | SXF_SETMASTER,0,6900)
GSOL A 1 Bright A_Stop
stop
Death:
TNT1 A 0
TNT1 A 0 //A_SetScale(2.5)
TNT1 A 0 //A_FadeIn(0.4)
TNT1 A 1 //Bright
stop
}
}

actor SolarAimerFX4 : SolarAimerFX3 
{
states
{
Spawn:
BASB U 0
BASB U 0 ACS_NamedExecuteAlways("CCBM_SolarClientCheck", 0, ACS_NamedExecuteWithResult("CCBM_GetMasterTID"))
BASB U 0 A_SpawnItemEx("SolarAimerFX4",0,0,0,momx,momy,momz,0,SXF_NOCHECKPOSITION | SXF_TRANSFERTRANSLATION | SXF_TRANSFERPITCH | SXF_ABSOLUTEVELOCITY | SXF_SETMASTER,0,6900)
GSOL A 1 Bright A_Stop
stop
Death:
TNT1 A 0
TNT1 A 0 //A_SetScale(2.5)
TNT1 A 0 //A_FadeIn(0.4)
TNT1 A 1 //Bright
stop
}
}

actor SolarInfernoDetonator : Powerup
{
Powerup.Duration 3
}

actor SolarFlare //The main sun.
{
	Translation "192:192=213:213", "198:198=217:217"
    PROJECTILE
	+DONTBLAST
	+DONTREFLECT
	+NOTARGETSWITCH
	+DOOMBOUNCE
	+FORCEXYBILLBOARD
	-BOUNCEONFLOORS
	+CANBOUNCEWATER
	bouncefactor 1.0
	wallbouncefactor 1.0
	BounceCount 3
	Radius 24
	Height 24
	Obituary "$OB_SOLARBLAZEX"
	DamageType "SolarM_Blaze"
	scale 2.5
	damage (0)
	speed 56
	reactiontime 175
	States
	{
		Spawn:
		GSOL E 0
		GSOL E 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
		GSOL E 0 A_RearrangePointers(0,0,2)
		Spawn2:
		GSOL E 1 A_JumpIfInTargetInventory("SolarChecker",1,"Stopped")
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		GSOL E 0 A_JumpIfInTargetInventory("SolarInfernoDetonator",1,"Death")
		GSOL E 1 A_JumpIfInTargetInventory("SolarChecker",1,"Stopped")
		GSOL E 0 A_JumpIfInTargetInventory("SolarInfernoDetonator",1,"Death")
		GSOL E 1 A_JumpIfInTargetInventory("SolarChecker",1,"Stopped")
		GSOL E 0 A_JumpIfInTargetInventory("SolarInfernoDetonator",1,"Death")
		GSOL F 1 A_JumpIfInTargetInventory("SolarChecker",1,"Stopped")
		GSOL F 0 A_JumpIfInTargetInventory("SolarInfernoDetonator",1,"Death")
		GSOL F 1 A_JumpIfInTargetInventory("SolarChecker",1,"Stopped")
		GSOL F 0 A_JumpIfInTargetInventory("SolarInfernoDetonator",1,"Death")
		GSOL F 1 A_JumpIfInTargetInventory("SolarChecker",1,"Stopped")
		GSOL F 0 A_JumpIfInTargetInventory("SolarInfernoDetonator",1,"Death")
		loop
		
		Stopped:
		GSOL E 0 A_ChangeFlag("NOGRAVITY",FALSE)
		Stopped2:
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		GSOL EEE 1 A_JumpIfInTargetInventory("SolarInfernoDetonator",1,"Death")
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		GSOL FFF 1 A_JumpIfInTargetInventory("SolarInfernoDetonator",1,"Death")
		GSOL F 0 A_Countdown
		loop

		Death:
		XDeath:
        PFBX A 0 A_GiveToTarget("SunHasEnded")
        PFBX A 0 A_Stop
        PFBX A 0 A_ChangeFlag("NOGRAVITY",TRUE)
        PFBX A 0 A_PlaySoundEx("weapon/solarblazex","weapon")
        PFBX A 0 A_Explode(25,176,0,0,64)
        PFBX A 0 A_SpawnItemEx("SolarFlareExplosionFX",0,0,0,0,0,0,0,1)
        PFBX BCDEFGHI 2 
        stop
	}
}

actor SolarFlareB : SolarFlare{translation "192:192=205:205","198:198=74:74"}
actor SolarFlareR : SolarFlare{translation "192:192=171:171","198:198=41:41"}
actor SolarFlareO : SolarFlare{translation "192:192=104:104","198:198=128:128"}
actor SolarFlareP : SolarFlare{translation "192:192=229:229","198:198=232:232"}

actor SolarFlare1FX : BasicClientSide
{
renderstyle add
Translation "192:192=213:213", "198:198=217:217"
states
{
Spawn:
GSOL E 1 A_FadeOut(0.25)
loop
}
}

actor BigSolarDroplet : SolarFlare
{
speed 0
-NOGRAVITY
+BRIGHT
states
{
Spawn:
GSOL E 0
GSOL E 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLoop:
GSOL EF 3
loop
Death:
PFBX A 0 A_PlaySoundEx("weapon/solarblazex","weapon")
PFBX A 0 A_Explode(15,176,0,0,64)
PFBX A 0 A_SpawnItemEx("SolarFlareExplosionFX",0,0,0,0,0,0,0,1)
PFBX BCDEFGHI 2 
stop
}
}

actor MedSolarDroplet : SolarFlare
{
speed 0
-NOGRAVITY
+BRIGHT
states
{
Spawn:
GSOL E 0
GSOL E 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLoop:
GSOL CD 3
loop
Death:
PFBX A 0 A_PlaySoundEx("weapon/solarblaze","weapon")
PFBX A 0 A_Explode(10,176,0,0,64)
PFBX A 0 A_SetScale(1.5)
PFBX BCDEFGHI 2 
stop
}
}

actor SmlSolarDroplet : SolarFlare
{
speed 0
-NOGRAVITY
+BRIGHT
damage (5)
states
{
Spawn:
GSOL E 0
GSOL E 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLoop:
GSOL AB 3
loop
Death:
//PFBX A 0 A_Explode(20,176,0,0,64)
PFBX A 0 A_SetScale(1.5)
PFBX A 0 A_PlaySoundEx("weapon/solarcharger","weapon")
PFBX JKLMNO 1 Bright A_SpawnItemEx("OilPitIgnite",0,0,8)
stop
}
}

actor SolarFlare2FX : BasicClientSide
{
renderstyle add
Translation "192:192=213:213", "198:198=217:217"
states
{
Spawn:
GSOL F 1 A_FadeOut(0.25)
loop
}
}

actor SolarHeadFX : ShieldWarper_CBM
{
+NOTIMEFREEZE
RenderStyle add
Alpha 0.5
States
{
Shield:
GSOL EEEFFF 1 Bright A_Warp(AAPTR_TARGET,momx+32,momy,momz+28,0,24)
loop
}
}

actor SolarFlareExplosionFX : BasicClientSide
{
renderstyle add
//Translation "192:192=213:213", "198:198=217:217"
SCALE 2.5
states
{
Spawn:
PFBX B 1 A_FadeOut(0.1)
PFBX B 0 A_SetScale(scaleX+0.1)
PFBX B 1 A_FadeOut(0.1)
PFBX B 0 A_SetScale(scaleX+0.1)
PFBX C 1 A_FadeOut(0.1)
PFBX C 0 A_SetScale(scaleX+0.1)
PFBX C 1 A_FadeOut(0.1)
PFBX C 0 A_SetScale(scaleX+0.1)
PFBX D 1 A_FadeOut(0.1)
PFBX D 0 A_SetScale(scaleX+0.1)
PFBX D 1 A_FadeOut(0.1)
PFBX D 0 A_SetScale(scaleX+0.1)
PFBX E 1 A_FadeOut(0.1)
PFBX E 0 A_SetScale(scaleX+0.1)
PFBX E 1 A_FadeOut(0.1)
PFBX E 0 A_SetScale(scaleX+0.1)
PFBX F 1 A_FadeOut(0.1)
PFBX F 0 A_SetScale(scaleX+0.1)
PFBX F 1 A_FadeOut(0.1)
PFBX F 0 A_SetScale(scaleX+0.1)
PFBX G 1 A_FadeOut(0.1)
PFBX G 0 A_SetScale(scaleX+0.1)
PFBX G 1 A_FadeOut(0.1)
PFBX G 0 A_SetScale(scaleX+0.1)
PFBX H 1 A_FadeOut(0.1)
PFBX H 0 A_SetScale(scaleX+0.1)
PFBX H 1 A_FadeOut(0.1)
PFBX H 0 A_SetScale(scaleX+0.1)
PFBX I 1 A_FadeOut(0.1)
PFBX I 0 A_SetScale(scaleX+0.1)
PFBX I 1 A_FadeOut(0.1)
PFBX I 0 A_SetScale(scaleX+0.1)
loop
}
}

actor SolarFlareExplosionWave
{
Translation "192:192=213:213", "198:198=217:217"
PROJECTILE
Obituary "$OB_SOLARWAVE"
damagetype "SolarM_Wave"
-FORCEXYBILLBOARD
+RIPPER
Damage (10)
Radius 20
Height 80
Scale 2.5
Speed 62
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLOOP:
GSOL II 0 Bright A_SpawnItemEx("OilPitIgnite",0,0,8)
GSOL II 1 Bright A_SpawnItemEX("SolarFlareExplosionWaveFX",0,0,0,0,0,0,0,1)
GSOL JJ 0 Bright A_SpawnItemEx("OilPitIgnite",0,0,8)
GSOL JJ 1 Bright A_SpawnItemEX("SolarFlareExplosionWaveFX",0,0,0,0,0,0,0,1)
loop
Death:
TNT1 A 0
stop
}
}

Actor SolarFlareExplosionWaveSmall
{
PROJECTILE
Obituary "$OB_SOLARWAVE"
DamageType "SolarM_Wave"
+RIPPER
+BRIGHT
damage (1)
Radius 4
Height 4
speed 39
scale 2.5
States
{
Spawn:
SOBL J 0
SOBL J 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLoop:
SOBL JJ 1 //A_Explode(10,12,0,0,12)
SOBL J 0 A_Fadeout(0.25)
SOBL KK 1 //A_Explode(10,12,0,0,12)
SOBL K 0 A_Fadeout(0.25)
SOBL JJ 1 //A_Explode(10,12,0,0,12)
SOBL J 0 A_Fadeout(0.25)
SOBL KK 1 //A_Explode(10,12,0,0,12)
SOBL K 0 A_Fadeout(0.25)
SOBL JJ 1 //A_Explode(10,12,0,0,12)
stop
}
}

Actor SolarFlareExplosionWaveSmaller : SolarFlareExplosionWaveSmall
{
States
{
Spawn:
SOBL G 0
SOBL G 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLoop:
SOBL GG 1 //A_Explode(10,12,0,0,12)
SOBL G 0 A_Fadeout(0.25)
SOBL HH 1 //A_Explode(10,12,0,0,12)
SOBL G 0 A_Fadeout(0.25)
SOBL GG 1 //A_Explode(10,12,0,0,12)
SOBL G 0 A_Fadeout(0.25)
SOBL HH 1 //A_Explode(10,12,0,0,12)
SOBL G 0 A_Fadeout(0.25)
SOBL GG 1 //A_Explode(10,12,0,0,12)
stop
}
}

actor SolarM_WaveProtect_50 : PowerProtection
{
Powerup.Duration 2
damagefactor "SolarM_Wave", 0.50
}

actor SolarM_WaveProtect : PowerProtection
{
Powerup.Duration 2
damagefactor "SolarM_Wave", 0.0
}

actor SolarFlareExplosionWaveFX : BasicClientSide
{
renderstyle add
+NOINTERACTION
states
{
Spawn:
GSOL I 1 Bright A_FadeOut(0.20)
loop
}
}

actor SolarFlareExplosionWaveFX2 : BasicClientSide
{
renderstyle add
+NOINTERACTION
states
{
Spawn:
GSOL J 1 Bright A_FadeOut(0.20)
loop
}
}

actor SolarFlare2 //The main sun.
{
	Translation "192:192=213:213", "198:198=217:217"
	PROJECTILE
	+DONTBLAST
	+DONTREFLECT
	+NOTARGETSWITCH
	+CANBOUNCEWATER
	+DOOMBOUNCE
	+BOUNCEONFLOORS
	+BOUNCEONCEILINGS
	+BOUNCEONWALLS
	bouncefactor 1.0
	wallbouncefactor 1.0
	BounceCount 3
	Obituary "$OB_SOLARBLAZE"
	DamageType "SolarM_Blaze"
	Radius 16
	Height 16
	scale 2.5
	damage (5)
	speed 62
	reactiontime 175
	States
	{
		Spawn:
		GSOL C 0
		GSOL C 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
		GSOL C 0 A_RearrangePointers(0,0,2)
		Spawn2:
		GSOL C 1 Bright Light("SOLARLIGHT")A_JumpIfInTargetInventory("SolarChecker",1,"Stopped")
		GSOL C 0 A_SpawnItemEX("SolarGrenadeLobFX",-10,0,0,0,0,0,0,1)
		GSOL D 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
		GSOL C 0 A_JumpIfInTargetInventory("SolarInfernoDetonator",1,"Death")
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		GSOL C 1 Bright Light("SOLARLIGHT")A_JumpIfInTargetInventory("SolarChecker",1,"Stopped")
		GSOL C 0 A_SpawnItemEX("SolarGrenadeLobFX",-10,0,0,0,0,0,0,1)
		GSOL D 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
		GSOL C 0 A_JumpIfInTargetInventory("SolarInfernoDetonator",1,"Death")
		GSOL C 1 Bright Light("SOLARLIGHT")A_JumpIfInTargetInventory("SolarChecker",1,"Stopped")
		GSOL C 0 A_SpawnItemEX("SolarGrenadeLobFX",-10,0,0,0,0,0,0,1)
		GSOL D 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
		GSOL C 0 A_JumpIfInTargetInventory("SolarInfernoDetonator",1,"Death")
		GSOL D 1 Bright Light("SOLARLIGHT")A_JumpIfInTargetInventory("SolarChecker",1,"Stopped")
		GSOL D 0 A_SpawnItemEX("SolarGrenadeLobFX",-10,0,0,0,0,0,0,1)
		GSOL D 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
		GSOL D 0 A_JumpIfInTargetInventory("SolarInfernoDetonator",1,"Death")
		GSOL D 1 Bright Light("SOLARLIGHT")A_JumpIfInTargetInventory("SolarChecker",1,"Stopped")
		GSOL D 0 A_SpawnItemEX("SolarGrenadeLobFX",-10,0,0,0,0,0,0,1)
		GSOL D 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
		GSOL D 0 A_JumpIfInTargetInventory("SolarInfernoDetonator",1,"Death")
		GSOL D 1 Bright Light("SOLARLIGHT")A_JumpIfInTargetInventory("SolarChecker",1,"Stopped")
		GSOL D 0 A_SpawnItemEX("SolarGrenadeLobFX",-10,0,0,0,0,0,0,1)
		GSOL D 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
		GSOL D 0 A_JumpIfInTargetInventory("SolarInfernoDetonator",1,"Death")
		loop
		
		Stopped:
		GSOL C 0 A_ChangeFlag("NOGRAVITY",FALSE)
		GSOL C 0 A_ChangeFlag("BOUNCEONFLOORS",FALSE)
		GSOL C 0 A_ChangeFlag("BOUNCEONWALLS",FALSE)
		GSOL C 0 A_ChangeFlag("BOUNCEONCEILINGS",FALSE)
		Stopped2:
		GSOL CCC 1 Bright
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		GSOL DDD 1 Bright
		GSOL D 0 A_Countdown
		loop

		XDeath:
		Death:
		GSOL C 0 A_ChangeFlag("NOGRAVITY",TRUE)
		PFBX A 0 A_SetScale(1.5)
		PFBX A 0 A_GiveToTarget("SunHasEnded")
		PFBX A 0 A_Stop
		PFBX A 0 A_PlaySoundEx("weapon/solarblaze","weapon")
		PFBX A 0 A_Explode(15,128,0,0,48)
		PFBX BCDEFGHI 2 Bright A_SpawnItemEx("OilPitIgnite",0,0,8)
		stop
		
		EXDeath:
		PFBX A 0 A_SetScale(1.5)
        PFBX A 0 A_GiveToTarget("SunHasEnded")
        PFBX A 0 A_Stop
        PFBX A 0 A_PlaySoundEx("weapon/solarwave","weapon")
		PFBX A 0 A_Explode(15,128,0,0,48)
        PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWaveMed",0,0,0,35,0,0,0,1)
        PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWaveMed",0,0,0,35,0,0,60,1)
        PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWaveMed",0,0,0,35,0,0,120,1)
        PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWaveMed",0,0,0,35,0,0,180,1)
        PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWaveMed",0,0,0,35,0,0,240,1)
        PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWaveMed",0,0,0,35,0,0,300,1)
		PFBX BCDEFGHI 2  Bright
        stop
	}
}

actor SolarFlare2B : SolarFlare2{translation "192:192=205:205","198:198=74:74"}
actor SolarFlare2R : SolarFlare2{translation "192:192=171:171","198:198=41:41"}
actor SolarFlare2O : SolarFlare2{translation "192:192=104:104","198:198=128:128"}
actor SolarFlare2P : SolarFlare2{translation "192:192=229:229","198:198=232:232"}

actor SolarFlareExplosionWaveMed
{
Translation "192:192=213:213", "198:198=217:217"
PROJECTILE
Obituary "$OB_SOLARWAVE"
damagetype "SolarM__Wave"
-FORCEXYBILLBOARD
+RIPPER
Damage (5)
Radius 16
Height 32
Scale 2.5
Speed 39
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLOOP:
SOBL JJKK 1 Bright A_Fadeout(.1)
loop
Death:
TNT1 A 0
stop
}
}

actor SolarFlare3 //The main sun.
{
	Translation "192:192=213:213", "198:198=217:217"
	PROJECTILE
	+NOGRAVITY
	+DONTBLAST
	+DONTREFLECT
	+NOTARGETSWITCH
	+BOUNCEONFLOORS
	+BOUNCEONCEILINGS
	+BOUNCEONWALLS
	Obituary "$OB_SOLARBLAZE"
	DamageType "SolarM_Wave"
	Radius 10
	Height 10
	scale 2.5
	bouncefactor 1.0
	wallbouncefactor 1.0
	BounceCount 3
	damage (15)
	speed 62
	reactiontime 1
	States
	{
		Spawn:
		TNT1 A 0
		TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
		SpawnLOOP:
		GSOL A 1 Bright A_JumpIfInTargetInventory("SolarChecker",1,"Stopped")
		GSOL A 0 A_SpawnItemEX("MiniSolarGrenadeLobFX",-10,0,0,0,0,0,0,1)
		GSOL D 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
		GSOL A 1 Bright A_JumpIfInTargetInventory("SolarChecker",1,"Stopped")
		GSOL A 0 A_SpawnItemEX("MiniSolarGrenadeLobFX",-10,0,0,0,0,0,0,1)
		GSOL D 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
		GSOL A 1 Bright A_JumpIfInTargetInventory("SolarChecker",1,"Stopped")
		GSOL A 0 A_SpawnItemEX("MiniSolarGrenadeLobFX",-10,0,0,0,0,0,0,1)
		GSOL D 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
		GSOL B 1 Bright A_JumpIfInTargetInventory("SolarChecker",1,"Stopped")
		GSOL B 0 A_SpawnItemEX("MiniSolarGrenadeLobFX",-10,0,0,0,0,0,0,1)
		GSOL D 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
		GSOL B 1 Bright A_JumpIfInTargetInventory("SolarChecker",1,"Stopped")
		GSOL B 0 A_SpawnItemEX("MiniSolarGrenadeLobFX",-10,0,0,0,0,0,0,1)
		GSOL D 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
		GSOL B 1 Bright A_JumpIfInTargetInventory("SolarChecker",1,"Stopped")
		GSOL B 0 A_SpawnItemEX("MiniSolarGrenadeLobFX",-10,0,0,0,0,0,0,1)
		GSOL D 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
		loop
		Stopped:
		GSOL A 0 A_ChangeFlag("NOGRAVITY",FALSE)
		GSOL A 0 A_ChangeFlag("BOUNCEONFLOORS",FALSE)
		GSOL A 0 A_ChangeFlag("BOUNCEONWALLS",FALSE)
		GSOL A 0 A_ChangeFlag("BOUNCEONCEILINGS",FALSE)
		GSOL AAABBB 1 Bright
		loop
		Death:
		TNT1 A 1 A_GiveToTarget("SunHasEnded")
		PFBX A 0 //A_SetScale(0.25)
		PFBX A 0 A_Stop
		PFBX A 0 A_ChangeFlag(NOGRAVITY,TRUE)
		PFBX A 0 A_PlaySoundEx("weapon/solarcharger","weapon")
		PFBX JKLMNO 1 Bright A_SpawnItemEx("OilPitIgnite",0,0,8)
		stop
	}
}

actor SolarFlare3B : SolarFlare3{translation "192:192=205:205","198:198=74:74"}
actor SolarFlare3R : SolarFlare3{translation "192:192=171:171","198:198=41:41"}
actor SolarFlare3O : SolarFlare3{translation "192:192=104:104","198:198=128:128"}
actor SolarFlare3P : SolarFlare3{translation "192:192=229:229","198:198=232:232"}

actor SolarGrenadeLob
{
Translation "192:192=213:213", "198:198=217:217"
PROJECTILE
Obituary "$OB_SOLARLOB"
DamageType "SolarM_Blaze"
damage (5)
Radius 14
Height 14
speed 62
scale 2.5
Accuracy 15
-NOGRAVITY
//+BOUNCEONCEILINGS
//-BOUNCEONFLOORS
//+DOOMBOUNCE
//:)
Gravity 1.5
//Wallbouncefactor 1.0
//Bouncefactor 1.0
states
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
TNT1 A 0 //ThrustThingZ(0,25,0,1)
Spawn2:
GSOL CCC 1 A_SpawnItemEX("SolarGrenadeLobFX",-10,0,0,0,0,0,0,1)
GSOL C 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
GSOL DDD 1 Bright A_SpawnItemEX("SolarGrenadeLobFX",-10,0,0,0,0,0,0,1)
GSOL D 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
loop
Death:
PFBX A 0 A_SetScale(1.5)
PFBX A 0 A_Stop
PFBX A 0 A_ChangeFlag(NOGRAVITY,TRUE)
PFBX A 0 A_PlaySoundEx("weapon/solarblaze","weapon")
TNT1 A 0 A_SetArg(2,(z-floorz <= Accuracy)*(Accuracy-(z-floorz))+Accuracy-(ceilingz-z <= Height)*(Accuracy*3/2)-(ceilingz-z <= Height)*(Height-(ceilingz-z)))
TNT1 A 0 ACS_NamedExecuteWithResult("cbm_MarsRocketJump",20,176,2)
PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWaveSmall",0,0,Args[2],35,0,0,0,1)
PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWaveSmall",0,0,Args[2],35,0,0,60,1)
PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWaveSmall",0,0,Args[2],35,0,0,120,1)
PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWaveSmall",0,0,Args[2],35,0,0,180,1)
PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWaveSmall",0,0,Args[2],35,0,0,240,1)
PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWaveSmall",0,0,Args[2],35,0,0,300,1)
PFBX A 0 A_Explode(13,128,0,0,48)
PFBX BCDEFGHI 2 Bright A_SpawnItemEx("OilPitIgnite",0,0,8)
stop
}
}

actor SolarSmallGrenadeLob
{
Translation "192:192=213:213", "198:198=217:217"
PROJECTILE
Obituary "$OB_SOLARLOB"
DamageType "SolarM_Wave"
damage (13)
Radius 14
Height 14
speed 62
scale 2.5
Accuracy 10
-NOGRAVITY
//+BOUNCEONCEILINGS
//-BOUNCEONFLOORS
//+DOOMBOUNCE
//:)
Gravity 1.5
//Wallbouncefactor 1.0
//Bouncefactor 1.0
states
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
TNT1 A 0 //ThrustThingZ(0,25,0,1)
Spawn2:
GSOL AAA 1 Bright A_SpawnItemEX("MiniSolarGrenadeLobFX",-10,0,0,0,0,0,0,1)
GSOL A 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
GSOL BBB 1 Bright A_SpawnItemEX("MiniSolarGrenadeLobFX",-10,0,0,0,0,0,0,1)
GSOL B 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
loop
Death:
PFBX A 0 //A_SetScale(0.25)
PFBX A 0 A_Stop
PFBX A 0 A_ChangeFlag(NOGRAVITY,TRUE)
TNT1 A 0 A_SetArg(2,(z-floorz <= Accuracy)*(Accuracy-(z-floorz))+Accuracy-(ceilingz-z <= Height)*(Accuracy*3/2)-(ceilingz-z <= Height)*(Height-(ceilingz-z)))
PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWaveSmaller",0,0,Args[2],20,0,0,0,1)
PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWaveSmaller",0,0,Args[2],20,0,0,60,1)
PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWaveSmaller",0,0,Args[2],20,0,0,120,1)
PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWaveSmaller",0,0,Args[2],20,0,0,180,1)
PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWaveSmaller",0,0,Args[2],20,0,0,240,1)
PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWaveSmaller",0,0,Args[2],20,0,0,300,1)
PFBX A 0 A_PlaySoundEx("weapon/solarcharger","weapon")
PFBX JKLMNO 1 Bright A_SpawnItemEx("OilPitIgnite",0,0,8)
stop
}
}

actor SolarGrenadeLobAir : SolarGrenadeLob
{
speed 0
gravity 25
states
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
TNT1 A 0 ThrustThingZ(0,25,1,1)
goto Spawn2
Spawn2:
GSOL CCC 1 Bright A_SpawnItemEX("SolarGrenadeLobFX",-10,0,0,0,0,0,0,1)
GSOL C 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
GSOL DDD 1 Bright A_SpawnItemEX("SolarGrenadeLobFX",-10,0,0,0,0,0,0,1)
GSOL D 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
loop
}
}

actor SolarSmallGrenadeLobAir : SolarSmallGrenadeLob
{
speed 0
gravity 25
states
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
TNT1 A 0 ThrustThingZ(0,25,1,1)
goto Spawn2
Spawn2:
GSOL AAA 1 Bright A_SpawnItemEX("SolarGrenadeLobFX",-10,0,0,0,0,0,0,1)
GSOL A 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
GSOL BBB 1 Bright A_SpawnItemEX("SolarGrenadeLobFX",-10,0,0,0,0,0,0,1)
GSOL B 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
loop
}
}

actor SolarGrenadeLobFX : SolarGrenadeLob
{
+NOINTERACTION
+THRUGHOST
RenderStyle add
states
{
Spawn:
TNT1 A 0
Spawn2:
GSOL C 1 Bright A_FadeOut(0.35)
GSOL D 1 Bright A_SetScale(ScaleX-0.25)
loop
Death:
TNT1 A 1
stop
}
}

actor MiniSolarGrenadeLobFX : SolarGrenadeLobFX
{
RenderStyle add
states
{
Spawn:
TNT1 A 0
Spawn2:
GSOL A 1 Bright A_FadeOut(0.35)
GSOL B 1 Bright A_SetScale(ScaleX-0.25)
loop
Death:
TNT1 A 1
stop
}
}

actor SolarGrenadeLobB : SolarGrenadeLob{translation "192:192=205:205","198:198=74:74"}
actor SolarGrenadeLobR : SolarGrenadeLob{translation "192:192=171:171","198:198=41:41"}
actor SolarGrenadeLobO : SolarGrenadeLob{translation "192:192=104:104","198:198=128:128"}
actor SolarGrenadeLobP : SolarGrenadeLob{translation "192:192=229:229","198:198=232:232"}

actor SolarGrenadeLobAirB : SolarGrenadeLobAir{translation "192:192=205:205","198:198=74:74"}
actor SolarGrenadeLobAirR : SolarGrenadeLobAir{translation "192:192=171:171","198:198=41:41"}
actor SolarGrenadeLobAirO : SolarGrenadeLobAir{translation "192:192=104:104","198:198=128:128"}
actor SolarGrenadeLobAirP : SolarGrenadeLobAir{translation "192:192=229:229","198:198=232:232"}

actor SolarSmallGrenadeLobB : SolarSmallGrenadeLob{translation "192:192=205:205","198:198=74:74"}
actor SolarSmallGrenadeLobR : SolarSmallGrenadeLob{translation "192:192=171:171","198:198=41:41"}
actor SolarSmallGrenadeLobO : SolarSmallGrenadeLob{translation "192:192=104:104","198:198=128:128"}
actor SolarSmallGrenadeLobP : SolarSmallGrenadeLob{translation "192:192=229:229","198:198=232:232"}

actor SolarSmallGrenadeLobAirB : SolarSmallGrenadeLobAir{translation "192:192=205:205","198:198=74:74"}
actor SolarSmallGrenadeLobAirR : SolarSmallGrenadeLobAir{translation "192:192=171:171","198:198=41:41"}
actor SolarSmallGrenadeLobAirO : SolarSmallGrenadeLobAir{translation "192:192=104:104","198:198=128:128"}
actor SolarSmallGrenadeLobAirP : SolarSmallGrenadeLobAir{translation "192:192=229:229","198:198=232:232"}

actor SolarMortar //The main sun.
{
Translation "192:192=248:248", "198:198=222:222","194:194=248:248", "195:195=222:222"
PROJECTILE
damagetype "SolarM_Blaze"
Obituary "$OB_SOLARMORTAR"
seesound "weapon/solarblazex"
+SKYEXPLODE
-NOGRAVITY
+NOINTERACTION
//+BOUNCEONCEILINGS
BounceCount 5
damage (0)
Radius 16
Height 16
speed 1
gravity 2
Accuracy 24
scale 2.0
bouncefactor 0.85
wallbouncefactor 0.5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
GSOL E 1
GSOL F 1 A_ChangeFlag("NOINTERACTION",0)
Spawn2:
//GSOL E 0 A_PlaySoundEx("weapon/solarammobuild","weapon")
GSOL EEE 1 Bright A_SpawnItemEX("SolarMortarLobFX",0,0,0,0,0,0,0,1)
GSOL FFF 1 Bright A_SpawnItemEX("SolarMortarLobFX",0,0,0,0,0,0,0,1)
loop

Death:
        PFBX A 0 A_GiveToTarget("SunHasEnded")
        GSOL E 0 A_Stop
        PFBX A 0 A_ChangeFlag("NOGRAVITY",TRUE)
        PFBX A 0 A_PlaySoundEx("weapon/solarwavex","weapon")
        PFBX A 0 A_Explode(25,176,0,0,64)
		PFBX A 0 ACS_NamedExecuteWithResult("cbm_MarsRocketJump",30,176,2)
		PFBX A 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
		TNT1 A 0 A_SetArg(2,(z-floorz <= Accuracy)*(Accuracy-(z-floorz))+Accuracy-(ceilingz-z <= Height)*(Accuracy*3/2)-(ceilingz-z <= Height)*(Height-(ceilingz-z)))
        PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWave",0,0,Args[2],40,0,0,0,1)
        PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWave",0,0,Args[2],40,0,0,45,1)
        PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWave",0,0,Args[2],40,0,0,90,1)
        PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWave",0,0,Args[2],40,0,0,135,1)
        PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWave",0,0,Args[2],40,0,0,180,1)
        PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWave",0,0,Args[2],40,0,0,225,1)
        PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWave",0,0,Args[2],40,0,0,270,1)
        PFBX A 0 A_SpawnItemEx("SolarFlareExplosionWave",0,0,Args[2],40,0,0,315,1)
        PFBX A 0 A_SpawnItemEx("SolarFlareExplosionFX",0,0,0,0,0,0,0,1)
Death2:
        PFBX PQRSTUVWX 2 Bright
        stop
}
}

actor SolarMortarLobFX : SolarGrenadeLobFX
{
Translation "192:192=213:213", "198:198=217:217"
PROJECTILE
renderstyle add
+NOINTERACTION
+THRUGHOST
alpha 1
states
{
Spawn:
TNT1 A 0
Spawn2:
GSOL E 1 Bright A_FadeOut(0.1)
GSOL F 1 Bright A_SetScale(ScaleX-0.1)
loop
Death:
TNT1 A 1
stop
}
}

actor SolarMortarB : SolarMortar{translation "192:192=205:205","198:198=74:74","194:194=205:205","195:195=74:74"}
actor SolarMortarR : SolarMortar{translation "192:192=171:171","198:198=41:41","194:194=171:171","195:195=41:41"}
actor SolarMortarO : SolarMortar{translation "192:192=104:104","198:198=128:128","194:194=104:104","195:195=128:128"}
actor SolarMortarP : SolarMortar{translation "192:192=229:229","198:198=232:232","194:194=229:229","195:195=232:232"}

actor SolarFlareAlt1FX : BasicClientSide
{
renderstyle add
Translation "192:192=213:213", "198:198=217:217"
states
{
Spawn:
GSOL C 1 A_FadeOut(0.35)
loop
}
}

actor SolarFlareAlt2FX : BasicClientSide
{
renderstyle add
Translation "192:192=213:213", "198:198=217:217"
states
{
Spawn:
GSOL D 1 A_FadeOut(0.35)
loop
}
}

actor SolarFlareAlt //The main sun.
{
	Translation "192:192=213:213", "198:198=217:217"
	PROJECTILE
	+NOGRAVITY
	+DONTBLAST
	+DONTREFLECT
	+NOTARGETSWITCH
	+NOINTERACTION
	+NOCLIP
	Obituary "$OB_SOLARBLAZE"
	DamageType "SolarM_Wave"
	species "SolarAltSun"
	Radius 15
	Height 12
	scale 2.5
	damage (0)
	speed 45
	var int user_angle;
	reactiontime 1
	States
	{
		Spawn:
		GSOL C 0
		GSOL C 0 A_RearrangePointers(0,0,2)
		Spawn2:
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		GSOL C 1 A_Warp(AAPTR_TARGET, 21, 0, 32, user_angle, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		GSOL C 1 A_Warp(AAPTR_TARGET, 42, 0, 32, user_angle, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		GSOL C 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		GSOL C 0 A_Stop
		Spawn3:
		GSOL D 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 12)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("SolarCheckAlt",1,"Death")
		GSOL D 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 12)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("SolarCheckAlt",1,"Death")
		GSOL D 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 12)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("SolarCheckAlt",1,"Death")
		GSOL C 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 12)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("SolarCheckAlt",1,"Death")
		GSOL C 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 12)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("SolarCheckAlt",1,"Death")
		GSOL C 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 12)
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		TNT1 A 0 A_JumpIfInTargetInventory("SolarCheckAlt",1,"Death")
		loop
		
		Death:
		TNT1 A 0
		stop
	}
}

actor SolarFlareAltB : SolarFlareAlt{translation "192:192=205:205","198:198=74:74"}
actor SolarFlareAltR : SolarFlareAlt{translation "192:192=171:171","198:198=41:41"}
actor SolarFlareAltO : SolarFlareAlt{translation "192:192=104:104","198:198=128:128"}
actor SolarFlareAltP : SolarFlareAlt{translation "192:192=229:229","198:198=232:232"}

actor SolarFlareAlt2 //The main sun.
{
	Translation "192:192=213:213", "198:198=217:217"
	PROJECTILE
	+NOGRAVITY
	+DONTBLAST
	+DONTREFLECT
	+NOTARGETSWITCH
	+NOINTERACTION
	+NOCLIP
	Obituary "$OB_SOLARBLAZE"
	DamageType "SolarM_Wave"
	species "SolarAltSun"
	Radius 15
	Height 12
	scale 2.5
	damage (0)
	speed 45
	var int user_angle;
	reactiontime 1
	States
	{
		Spawn:
		GSOL C 0
		GSOL C 0 A_RearrangePointers(0,0,2)
		Spawn2:
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		GSOL C 1 A_Warp(AAPTR_TARGET, 21, 0, 32, user_angle+180, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		GSOL C 1 A_Warp(AAPTR_TARGET, 42, 0, 32, user_angle+180, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		GSOL C 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle+180, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		GSOL C 0 A_Stop
		Spawn3:
		GSOL D 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle+180, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 12)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("SolarCheckAlt",1,"Death")
		GSOL D 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle+180, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 12)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("SolarCheckAlt",1,"Death")
		GSOL D 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle+180, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 12)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("SolarCheckAlt",1,"Death")
		GSOL C 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle+180, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 12)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("SolarCheckAlt",1,"Death")
		GSOL C 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle+180, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 12)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("SolarCheckAlt",1,"Death")
		GSOL C 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle+180, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 12)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("SolarCheckAlt",1,"Death")
		loop
		
		Death:
		TNT1 A 0
		stop
	}
}

actor SolarFlareAlt2B : SolarFlareAlt2{translation "192:192=205:205","198:198=74:74"}
actor SolarFlareAlt2R : SolarFlareAlt2{translation "192:192=171:171","198:198=41:41"}
actor SolarFlareAlt2O : SolarFlareAlt2{translation "192:192=104:104","198:198=128:128"}
actor SolarFlareAlt2P : SolarFlareAlt2{translation "192:192=229:229","198:198=232:232"}

actor SolarFlareAlt3 //The main sun.
{
	Translation "192:192=213:213", "198:198=217:217"
	PROJECTILE
	+NOGRAVITY
	+DONTBLAST
	+DONTREFLECT
	+NOTARGETSWITCH
	+NOINTERACTION
	+NOCLIP
	Obituary "$OB_SOLARBLAZE"
	DamageType "SolarM_Wave"
	species "SolarAltSun"
	Radius 15
	Height 12
	scale 2.5
	damage (0)
	speed 45
	var int user_angle;
	reactiontime 1
	States
	{
		Spawn:
		GSOL C 0
		GSOL C 0 A_RearrangePointers(0,0,2)
		Spawn2:
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		GSOL C 1 A_Warp(AAPTR_TARGET, 21, 0, 32, user_angle+90, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		GSOL C 1 A_Warp(AAPTR_TARGET, 42, 0, 32, user_angle+90, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		GSOL C 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle+90, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		GSOL C 0 A_Stop
		Spawn3:
		GSOL D 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle+90, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 12)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("SolarCheckAlt",1,"Death")
		GSOL D 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle+90, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 12)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("SolarCheckAlt",1,"Death")
		GSOL D 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle+90, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 12)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("SolarCheckAlt",1,"Death")
		GSOL C 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle+90, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 12)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("SolarCheckAlt",1,"Death")
		GSOL C 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle+90, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 12)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("SolarCheckAlt",1,"Death")
		GSOL C 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle+90, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 12)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("SolarCheckAlt",1,"Death")
		loop
		
		Death:
		TNT1 A 0
		stop
	}
}

actor SolarFlareAlt3B : SolarFlareAlt3{translation "192:192=205:205","198:198=74:74"}
actor SolarFlareAlt3R : SolarFlareAlt3{translation "192:192=171:171","198:198=41:41"}
actor SolarFlareAlt3O : SolarFlareAlt3{translation "192:192=104:104","198:198=128:128"}
actor SolarFlareAlt3P : SolarFlareAlt3{translation "192:192=229:229","198:198=232:232"}

actor SolarFlareAlt4 //The main sun.
{
	Translation "192:192=213:213", "198:198=217:217"
	PROJECTILE
	+NOGRAVITY
	+DONTBLAST
	+DONTREFLECT
	+NOTARGETSWITCH
	+NOINTERACTION
	+NOCLIP
	Obituary "$OB_SOLARBLAZE"
	DamageType "SolarM_Wave"
	species "SolarAltSun"
	Radius 15
	Height 12
	scale 2.5
	damage (0)
	speed 45
	var int user_angle;
	reactiontime 1
	States
	{
		Spawn:
		GSOL C 0
		GSOL C 0 A_RearrangePointers(0,0,2)
		Spawn2:
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		GSOL C 1 A_Warp(AAPTR_TARGET, 21, 0, 32, user_angle+270, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		GSOL C 1 A_Warp(AAPTR_TARGET, 42, 0, 32, user_angle+270, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		GSOL C 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle+270, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		GSOL C 0 A_Stop
		Spawn3:
		GSOL D 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle+270, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 12)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("SolarCheckAlt",1,"Death")
		GSOL D 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle+270, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 12)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("SolarCheckAlt",1,"Death")
		GSOL D 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle+270, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 12)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("SolarCheckAlt",1,"Death")
		GSOL C 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle+270, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 12)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")//A_SpawnItemEx("SolarSnatchHitboxD",0,0,0,0,0,0,0,32)
		TNT1 A 0 A_JumpIfInTargetInventory("SolarCheckAlt",1,"Death")
		GSOL C 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle+270, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 12)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("SolarCheckAlt",1,"Death")
		GSOL C 1 A_Warp(AAPTR_TARGET, 64, 0, 32, user_angle+270, WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 12)
		TNT1 A 0 A_SpawnItemEx("SolarSnatchHitbox",0,0,-24)
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("SolarCheckAlt",1,"Death")
		loop
		
		Death:
		TNT1 A 0
		stop
	}
}

actor SolarFlareAlt4B : SolarFlareAlt4{translation "192:192=205:205","198:198=74:74"}
actor SolarFlareAlt4R : SolarFlareAlt4{translation "192:192=171:171","198:198=41:41"}
actor SolarFlareAlt4O : SolarFlareAlt4{translation "192:192=104:104","198:198=128:128"}
actor SolarFlareAlt4P : SolarFlareAlt4{translation "192:192=229:229","198:198=232:232"}

actor SolarSnatchHitbox
{
var int user_USER;
-SOLID
+NOGRAVITY
+DONTDRAIN
species "SolarAltSun"
health 1
radius 24
height 48
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SetUserVar("user_USER",ACS_ExecuteWithResult(257,0))
TNT1 A 0 A_ChangeFlag("SHOOTABLE",1)
TNT1 A 0 A_ChangeFlag("DONTRIP",1)
TNT1 A 1
stop
Death:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("Solar_AltfireSnatch",0,1,user_USER,ACS_ExecuteWithResult(147,0))
stop
}
}

actor SolarSnatchHitboxD
{
PROJECTILE
damagetype "SolarM_Wave"
var int user_USER;
obituary "%o's eyes were burned off by staying too close to %k's solar spiral."
+DONTBLAST
+DONTREFLECT
+DONTDRAIN
+NOGRAVITY
-NOBLOCKMAP
+SHOOTABLE
+NORADIUSDMG
+DONTRIP
+NOBLOOD
+THRUSPECIES
species "SolarAltSun"
Damage (1)
radius 16
height 16
speed 0
health 1
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SetUserVar("user_USER",ACS_ExecuteWithResult(257,0))
TNT1 A 2
stop
Death:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("Solar_AltfireSnatch",0,1,user_USER,ACS_ExecuteWithResult(147,0))
stop
XDeath:
TNT1 A 0
stop
}
}

actor SolarHeadExplosion : BasicExplosion
{
damagetype "SolarM_Head"
Obituary "%k's Mortar Sun came and washed away %o."
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
TNT1 A 1 A_Explode(2,64,0,0,15)
stop
}
}

actor SolarM_HeadProtect : PowerProtection
{
Powerup.Duration 10
damagefactor "SolarM_Head", 0.0
}