actor Neptune_W : BaseMM8BDMWep_CBM
{
tag "$TAGC_VI"
dropitem "SaltWaterWep"
Weapon.AmmoUse 0
Weapon.AmmoGive 30
weapon.ammouse2 0
Weapon.AmmoGive2 30
Obituary "$OB_NEPTUNECLOSE"
Inventory.Pickupmessage "Evil can't park here between the hours of 6:00 am and 12:00 pm!"
weapon.ammotype "TopNepAmmo"
weapon.ammotype2 "DontDrinkThisAmmo"
+WEAPON.NOAUTOAIM
States
{
Spawn:
C_0V I 1
loop

Deselect:
NEPH A 0
goto DeselectSwap
Select:
NEPH A 0
goto SelectSwap

Ready:
NEPH A 0 ACS_NamedExecuteWithResult("core_weaponcolor",DYE_NEPTUNE)
NEPH A 0 A_GunFlash("Flash",1)
goto Ready1

Ready1:
NEPH A 0 A_JumpIfInventory("DontDrinkThisAmmo",1,"Ready2")
NEPH A 0 A_JumpIfInventory("TopNepAmmo",7,"Ready3")
NEPH A 8 A_WeaponReady(12)
NEPH A 0 A_JumpIfInventory("NeptuneSalty",1,2)
NEPH A 0 A_GiveInventory("DontDrinkThisAmmo",2)
NEPH A 0 A_GiveInventory("TopNepAmmo",1)
loop
Ready2:
NEPH A 0 A_JumpIfInventory("TopNepAmmo",7,"Ready4")
NEPH A 8 A_WeaponReady(8)
NEPH A 0 A_JumpIfInventory("NeptuneSalty",1,2)
NEPH A 0 A_GiveInventory("DontDrinkThisAmmo",2)
NEPH A 0 A_GiveInventory("TopNepAmmo",1)
loop
Ready3:
NEPH A 0 A_JumpIfInventory("DontDrinkThisAmmo",1,"Ready4")
NEPH A 8 A_WeaponReady(4)
NEPH A 0 A_JumpIfInventory("NeptuneSalty",1,2)
NEPH A 0 A_GiveInventory("DontDrinkThisAmmo",2)
NEPH A 0 A_GiveInventory("TopNepAmmo",1)
loop
Ready4:
NEPH A 8 A_WeaponReady
NEPH A 0 A_JumpIfInventory("NeptuneSalty",1,2)
NEPH A 0 A_GiveInventory("DontDrinkThisAmmo",2)
NEPH A 0 A_GiveInventory("TopNepAmmo",1)
loop

Fire:
NEPH B 2 A_GiveInventory("Neptune_Fire_P")
NEPH B 2 Offset(-43,70)
NEPH C 2 Offset(19,28)
NEPH C 2 Offset(-1,66)
NEPH D 2 Offset(11,13)
NEPH D 2 Offset(-42,53)
TNT1 A 8 A_GiveInventory("TopNepAmmo",1)
NEPH A 2 Offset(-7,92)
NEPH A 2 Offset(-3,62)
Goto Ready1

Altfire:
NEPH A 0 A_JumpIfInventory("TopNepAmmo",7,"Altfire2")
goto Ready1
Altfire2:
NEPH A 0 A_GiveInventory("VivifyDelay4",1)
NEPH A 0 A_Refire(1)
NEPH A 2 Offset(3,39)
NEPH A 2 Offset(6,47)A_TakeInventory("CutterFlag",99)
NEPH A 2 Offset(9,56)
NEPH A 2 Offset(12,66)
NEPH A 0 A_GiveInventory("NeptuneAltFlagOn_P",1)
NEPH A 0 A_JumpIf(CallACS("cbm_GetPointerButtonInput",0,false) & BT_ALTATTACK,"AltBigJump")//A_Refire("AltBigJump")
NEPH A 0 A_GiveInventory("CutterFlag",1)
NEPH A 1 Offset(12,66)A_ChangeVelocity(30,0,14,3)
NEPH AAAA 1 Offset(12,66)A_GiveInventory("NeptuneAltBounceThrust_P",1)
goto AltBounceL
AltBounce:
NEPH A 1 Offset(13,70)A_GiveInventory("NeptuneSmallBounce_P",1)
NEPH A 0 A_JumpIfinventory("CutterFlag",4,"AltBounceEnd")
NEPH A 0 A_JumpIfInventory("PlayerPropertyRage",1,2)
NEPH AA 1 Offset(14,74)A_GiveInventory("NeptuneAltBounceThrust_P",1)
NEPH A 0 A_JumpIfInventory("PlayerPropertyRage",1,2)
NEPH AA 1 Offset(13,70)A_GiveInventory("NeptuneAltBounceThrust_P",1)
NEPH A 1 Offset(12,66)A_GiveInventory("NeptuneAltBounceThrust_P",1)
goto AltBounceL
AltBounceL:
NEPH A 0 A_JumpIfInventory("VivifyDelay6",1,"AltBounce")
NEPH A 0 A_JumpIfInventory("NeptuneIsUnderWater",1,"AltBounce")
NEPH A 0 A_JumpIfinventory("CutterFlag",4,"AltBounceEnd")
NEPH A 0 A_JumpIf(z-floorz==0,"AltBounce")
NEPH A 0 A_JumpIf(momz==0,"AltBounceLZ")
NEPH A 1 Offset(12,66)A_GiveInventory("NeptuneAltBounceThrust_P",1)
loop
AltBounceLZ:
NEPH A 1 Offset(12,66)A_GiveInventory("NeptuneAltBounceThrust_P",1)
NEPH A 0 A_JumpIfInventory("VivifyDelay6",1,"AltBounce")
NEPH A 0 A_JumpIfInventory("NeptuneIsUnderWater",1,"AltBounce")
NEPH A 0 A_JumpIfinventory("CutterFlag",4,"AltBounceEnd")
NEPH A 0 A_JumpIf(z-floorz==0,"AltBounce")
NEPH A 0 A_JumpIf(momz==0,"AltBounce")
goto AltBounceL+5
AltBounceEnd:
NEPH A 0 A_GiveInventory("NeptuneAltJumpEnd_P",1)
NEPH A 0 A_GiveInventory("NeptuneAltFlagOff_P",1)
NEPH A 2 Offset(14,74)
NEPH A 2 Offset(13,70)
NEPH A 1 Offset(12,66)
NEPH A 1 Offset(9,56)
NEPH A 1 Offset(6,47)
NEPH A 1 Offset(3,39)

Goto Ready1

AltBigJump:
NEPH A 10 Offset(12,66)A_ChangeVelocity(0,0,24,3)
goto AltBigJumpL
AltBigJumpL:
NEPH A 0 A_JumpIfinventory("NeptuneStompStopper",1,"AltBigJumpEnd")
NEPH A 0 A_JumpIf(z-floorz==0,"AltBigJumpEnd")
NEPH A 0 A_JumpIf(momz==0,"AltBigJumpLZ")
NEPH A 1 Offset(12,66)A_GiveInventory("NeptuneAltBounceLeap_P",1)
loop
AltBigJumpLZ:
NEPH A 1 Offset(12,66)A_GiveInventory("NeptuneAltBounceLeap_P",1)
NEPH A 0 A_JumpIfinventory("NeptuneStompStopper",1,"AltBigJumpEnd")
NEPH A 0 A_JumpIf(z-floorz==0,"AltBigJumpEnd")
NEPH A 0 A_JumpIf(momz==0,"AltBigJumpEnd")
goto AltBigJumpL+3
AltBigJumpEnd:
NEPH A 0
NEPH A 0 A_GiveInventory("NeptuneBigBounce_P",1)
NEPH A 0 A_GiveInventory("NeptuneAltFlagOff_P",1)
NEPH A 0 A_GiveInventory("NeptuneStompStopper",1)
NEPH A 1 Offset(15,76)A_Stop
NEPH A 2 Offset(18,86)
NEPH A 2 Offset(15,76)
NEPH A 2 Offset(12,66)
NEPH A 2 Offset(9,57)
NEPH A 2 Offset(6,48)
NEPH A 2 Offset(3,40)
Goto Ready1

Flash:
TNT1 A 0 A_GiveInventory("NeptuneSaltyFlash_P",1)
TNT1 A 0 A_JumpIfInventory("NeptuneSalty",1,5)
TNT1 A 0 A_JumpIfInventory("DontDrinkThisAmmo",56,2)
TNT1 A 1
loop
TNT1 A 0 A_SpawnItemEx("NeptuneSaltySweatFX2",0,0,random(10,56),28,0,0,random(0,359),1,128)
TNT1 A 1
loop
TNT1 A 0 A_SpawnItemEx("NeptuneSaltySweatFX1",0,0,random(10,56),28,0,0,random(0,359),1,64)
TNT1 A 1
loop
}
}

actor TopNepAmmo : Ammo
{
Inventory.amount 1
Inventory.maxamount 28
+INVENTORY.IGNORESKILL
}

actor DontDrinkThisAmmo : Ammo
{
Inventory.amount 1
Inventory.maxamount 56
+INVENTORY.IGNORESKILL
}

actor NeptuneSaltDripDelay : Powerup
{
powerup.duration 8
}
actor NeptuneSalty : OnceC {}

actor NeptuneVivifyUp : Powerup
{
Powerup.Duration 6
}
actor NeptuneVivifyDown : NeptuneVivifyUp {}
actor NeptuneIsUnderWater : Powerup
{
Powerup.Duration 2
}

actor PowerSaltyBoat : PowerProtection
{
Powerup.Duration 0x7FFFFFFC
damagefactor "Drowning", 0.0
}

actor NeptuneSaltyWeakness : BasePowerWeak
{
damagefactor "Normal",1.4
}

actor NeptuneStompStopper : PowerSpeed
{
powerup.duration 10
speed 0
+NOTRAIL
}

actor NeptuneItem : BasicClassItem
{
inventory.icon "NeptIcon"
inventory.pickupmessage "There's evil afoot."
Tag "Neptune Salt Super"
states
{
Spawn:
NEPH Z 1
loop
UseCBM:
TNT1 A 0 A_JumpIfInventory("NeptuneSalty",1,"No")
TNT1 A 0 A_JumpIfInventory("DontDrinkThisAmmo",56,"Success")
fail
Success:
TNT1 A 0 A_GiveInventory("NeptuneSalty",1)
TNT1 A 0 A_PlaySoundEX("W_Neptune/SaltUp","SoundSlot7")
fail
}
}

actor NeptuneSaltyFlash_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("NeptuneSalty",1,"FlashSalty")
goto FlashEnd+1
FlashSalty:
TNT1 A 0 A_JumpIfInventory("NeptuneSaltyWeakness",1,3)
TNT1 A 0 A_GiveInventory("NeptuneSaltyWeakness",1)
TNT1 A 0 A_GiveInventory("GuardDownFlag",1)
TNT1 A 0 A_JumpIfInventory("NeptuneSaltDripDelay",1,5)
TNT1 A 0 A_GiveInventory("NeptuneSaltDripDelay",1)
TNT1 A 0 A_TakeInventory("DontDrinkThisAmmo",1)
TNT1 A 0 A_TakeInventory("DontDrinkThisAmmo",1,1)
TNT1 A 0 A_PlaySoundEx("W_Neptune/IsWet","Body")
TNT1 A 0
TNT1 A 0 A_JumpIfInventory("DontDrinkThisAmmo",1,"No")
goto FlashEnd
FlashEnd:
TNT1 A 0 A_PlaySoundEX("W_Neptune/SaltDown","SoundSlot7")
TNT1 A 0 A_TakeInventory("NeptuneSalty")
TNT1 A 0 A_TakeInventory("NeptuneSaltyWeakness")
TNT1 A 0 A_TakeInventory("GuardDownFlag")
stop
No:
TNT1 A 0
stop
}
}

actor Neptune_Fire_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_PlaySound("weapon/GameBoyFire",1)
TNT1 A 0 A_JumpIfInventory("NeptuneSalty",1,2)
TNT1 A 0 A_FireCustomMissile("NeptuneSaltWater",0,0,8)
stop
TNT1 A 0 A_TakeInventory("DontDrinkThisAmmo",1,1)
TNT1 A 0 A_FireCustomMissile("NeptuneSaltWaterSalty",0,0,8)
stop
}
}

actor NeptuneAltBounceThrust_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 //A_JumpIf(velz>=0,"Pickup_Up")
TNT1 A 0 A_JumpIf(velz<0,"Pickup_Down")
TNT1 A 0 A_GiveInventory("NeptuneVivifyUp",1)
TNT1 A 0 A_TakeInventory("NeptuneVivifyDown",9)
goto Thrust
Pickup_Down:
TNT1 A 0 A_GiveInventory("NeptuneVivifyDown",1)
TNT1 A 0 A_TakeInventory("NeptuneVivifyUp",9)
TNT1 A 0 //A_FireCustomMissile("NeptuneLeapCrush",0,0,0,-28)
TNT1 A 0 A_SpawnItemEx("NeptuneLeapCrush",2,0,0,momx,momy,-60,0,8)
goto Thrust
Thrust:
TNT1 A 0 A_JumpIfInventory("HasFeetInWater",1,"Thrust_W")
TNT1 A 0 A_JumpIfInventory("IsUnderWater",1,"Thrust_W")
TNT1 A 0 A_JumpIfInventory("IsUnderBubbleWater",1,"Thrust_W")
TNT1 A 0 A_JumpIfInventory("NeptuneSalty",1,"ThrustSalt")
TNT1 A 0 A_ChangeVelocity(0.5,0,-1,1)
stop
ThrustSalt:
TNT1 A 0 A_JumpIf(CallACS("cbm_IsDashingDisabled"),2)
TNT1 A 0 A_ChangeVelocity(28,0,momz-1,3)
TNT1 A 0
stop
Thrust_W:
TNT1 A 0 A_GiveInventory("NeptuneWaterBounceCheck_P",1)
TNT1 A 0 A_JumpIfInventory("NeptuneSalty",1,"Thrust_WSalt")
TNT1 A 0 A_ChangeVelocity(0.5,0,-0.75,1)
stop
Thrust_WSalt:
TNT1 A 0 A_JumpIf(CallACS("cbm_IsDashingDisabled"),2)
TNT1 A 0 A_ChangeVelocity(28,0,momz-0.75,3)
TNT1 A 0
stop
}
}
actor NeptuneWaterBounceCheck_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(CallACS("cbm_GetPointerButtonInput",0,false) & BT_JUMP,"Yes")
stop
Yes:
TNT1 A 0 A_GiveInventory("NeptuneIsUnderWater",1)
stop
}
}
actor NeptuneAltBounceLeap_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 //A_JumpIf(momz>=0,"Pickup_Up")
TNT1 A 0 A_JumpIf(momz<0,"Pickup_Down")
TNT1 A 0 A_GiveInventory("NeptuneVivifyUp",1)
TNT1 A 0 A_TakeInventory("NeptuneVivifyDown",9)
goto Thrust
Pickup_Down:
TNT1 A 0 A_GiveInventory("NeptuneVivifyDown",1)
TNT1 A 0 A_TakeInventory("NeptuneVivifyUp",9)
TNT1 A 0 A_SpawnItemEx("NeptuneLeapCrusher",0,0,4)
goto Thrust
Thrust:
TNT1 A 0 A_ChangeVelocity(0,0,-5,1)
stop
}
}

actor NeptuneAltFlagOn_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 ACS_NamedExecuteWithResult("cbm_cantpushwallsplayer",0,1)
TNT1 A 0 A_GiveInventory("NoJumpCancel",1)
TNT1 A 0 A_GiveInventory("PowerSaltyBoat",1)
TNT1 A 0 A_TakeInventory("TopNepAmmo",2)
TNT1 A 0 A_TakeInventory("TopNepAmmo",5,1)
TNT1 A 0 ACS_NamedExecuteWithResult("core_unsolidplayer",0,USP_TOGGLEON)
stop
}
}
actor NeptuneAltFlagOff_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("VivifyDelay5",1)
TNT1 A 0 ACS_NamedExecuteWithResult("cbm_cantpushwallsplayer",0,0)
TNT1 A 0 A_TakeInventory("NoJumpCancel")
TNT1 A 0 A_TakeInventory("PowerSaltyBoat")
TNT1 A 0 ACS_NamedExecuteWithResult("core_unsolidplayer",0,USP_TOGGLEOFF_DAMAGE,CallACS("core_getmaxhealth")/10)
stop
}
}

actor NeptuneAltJumpEnd_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(CallACS("cbm_GetPointerButtonInput",0,false) & BT_JUMP,"Pickup2")
TNT1 A 0 //A_ChangeVelocity(momx*0.5,momy*0.5,momz,2)
stop
Pickup2:
TNT1 A 0 A_ChangeVelocity(momx,momy,11,2)//14
stop
}
}

actor NeptuneSmallBounceUp_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("CutterFlag",4,"No")
TNT1 A 0 A_JumpIfInventory("VivifyDelay6",1,"PickupPogo")
TNT1 A 0 A_ChangeVelocity(30,0,14,3)
stop
PickupPogo:
TNT1 A 0 A_ChangeVelocity(30,0,momz,3)
TNT1 A 0 A_TakeInventory("VivifyDelay6",9)
stop
No:
TNT1 A 0
stop
}
}

actor NeptuneSmallBounce_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_StopSound(0)
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_GiveInventory("NeptuneSmallBounceUp_P",1)
TNT1 A 0 A_JumpIfInventory("NeptuneSalty",1,"Pickup_Salty")
TNT1 A 0 A_SpawnItemEx("NeptuneSmallBounce",0,0,32)
stop
Pickup_Salty:
TNT1 A 0 A_SpawnItemEx("NeptuneSmallBounce2",0,0,32)
stop
}
}

actor NeptuneSmallBounce : BasicExplosion
{
obituary "$OB_NEPTUNESTOMP"
damagetype "Neptune_Stomp"
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("SoakifyEffect")
TNT1 A 0 A_Explode(150+CallACS("core_checkrune",RUNE_SPREAD,2)*300,96,0,0,32)
End:
TNT1 A 0 A_PlaySoundEx("W_Neptune/Hop","Weapon")
TNT1 A 4 A_SpawnItemEx("NeptuneSmallBounceFX",0,0,-32,0,0,0,0,1)
stop
}
}
actor NeptuneSmallBounce2 : NeptuneSmallBounce
{
damagetype "Neptune_Stomp2"
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("SoakifyEffect")
TNT1 A 0 A_Explode(260+CallACS("core_checkrune",RUNE_SPREAD,2)*520,128,0,0,64)
TNT1 A 0 A_SpawnItemEx("NeptuneSmallBounce2FX",0,0,-32,0,0,0,0,1)
goto End
}
}


actor NeptuneSmallBounceFX : BasicGraphicEffect
{
States
{
SpawnFrame:
Q_VI BCD 4
stop
}
}

actor NeptuneSmallBounce2FX : BasicClientSide
{
reactiontime 8
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("NeptuneWaterSpoutFX_H2",0,0,0,60,0,0,45*reactiontime,1)
TNT1 A 0 A_Countdown
loop
}
}


actor NeptuneLeapCrusher : BasicImplosion
{
damagetype "Neptune_Crush"
Obituary "$OB_NEPTUNELEAP"
States
{
Spawn:
TNT1 A 0
TNT1 A 2 A_Explode(30+CallACS("core_checkrune",RUNE_SPREAD,2)*60,20,0,0,20)
stop
}
}

actor PainNeptune_LeapHit : BasicWatcher
{
States
{
Spawn:
TNT1 A 0 nodelay A_GiveToTarget("NeptuneLeap_Hit_P",1,AAPTR_TARGET)
stop
}
}

actor NeptuneLeapCrush
{
PROJECTILE
damagetype "Neptune_Leap"
Obituary "$OB_NEPTUNELEAP"
+DONTBLAST
+DONTREFLECT
+THRUGHOST
damage (30+CallACS("core_checkrune",RUNE_SPREAD,2)*60)
Radius 28
Height 2
renderstyle none
States
{
Spawn:
TNT1 A 1
stop
}
}

actor Neptune_LeapProtect : PowerProtection
{
Powerup.Duration 8
DamageFactor "Neptune_Leap", 0.0
}

actor NeptuneLeap_Hit_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("VivifyDelay6",1)
TNT1 A 0 A_GiveInventory("TopNepAmmo",2)
TNT1 A 0 A_PlaySoundEx("weapon/ToadCrush","Weapon")
TNT1 A 0 ThrustThingZ(0,60+((CallACS("cbm_GetPointerButtonInput",0,false) & BT_JUMP)>0)*52,0,0)
stop
}
}

actor NeptuneWaterSpoutFX_H : BasicGraphicEffectM
{
+THRUACTORS
//+FLOORHUGGER
//+FLOORCLIP
+STEPMISSILE
maxstepheight 16
radius 4
height 4
states
{
SpawnFrame:
TNT1 A 0
Q_VI B 0 //A_SpawnItemEx("NeptuneWaterSpoutFX",0,0,0,frandom(-1,1),0,frandom(5,7),random(0,359),1)
Q_VI B 0 A_SpawnItemEx("NeptuneWaterSpoutFX",0,0,0,random(-2,2),0,7 + random(-2,2),random(0,359),1)
Q_VI B 0 A_SpawnItemEx("NeptuneWaterSpoutFX",0,0,0,random(-2,2),-3,7 + random(-2,2),random(0,359),1)
Q_VI B 4 A_SpawnItemEx("NeptuneWaterSpoutFX",0,0,0,random(-2,2),3,7 + random(-2,2),random(0,359),1)
Q_VI CD 4
stop
}
}
actor NeptuneWaterSpoutFX_H2 : NeptuneWaterSpoutFX_H
{
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("NeptuneWaterSpoutFX_H",0,0,0,0,0,0,0,1)
stop
}
}

actor NeptuneWaterSpoutFX : BasicGraphicEffectM
{
-NOGRAVITY
+THRUACTORS
radius 4
height 5
states
{
SpawnFrame:
TNT1 A 0
TNT1 A 0 ThrustThingZ(0,1,0,1)
TNT1 A 0 A_Jump(256,1,2)
Q_VI E -1
stop
Q_VI F -1
stop
Death:
TNT1 A 0 A_SetGravity(0.0)
Q_VI FEGH random(2,3)
stop
}
}

actor Neptune_FloorQuakeSpawn : Basic_FloorQuakeSpawn
{
Obituary "$OB_NEPTUNESTOMP"
damagetype "Neptune_Shock"
States
{
Quake:
TNT1 A 4 A_SpawnItemEx("Neptune_FloorQuakeBoom",0,0,28,0,0,0,0,1+SXF_TRANSFERSPECIAL)//32768
stop
}
}

actor Neptune_FloorQuakeBoom : Basic_FloorQuakeBoom
{
Obituary "$OB_NEPTUNESTOMP"
damagetype "Neptune_Shock"
MeleeRange 10
Accuracy 150
}

actor NeptuneBigBounce_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_PlaySoundEx("W_Neptune/Stomp","Weapon")
TNT1 A 0 A_JumpIfInventory("NeptuneSalty",1,"Pickup_Salty")
TNT1 A 0 ACS_NamedExecuteWithResult("cbm_FloorQuakeDamage",256,1,557)
TNT1 A 0 A_SpawnItemEx("NeptuneBigBounce",0,0,32)
stop
Pickup_Salty:
TNT1 A 0 ACS_NamedExecuteWithResult("cbm_FloorQuakeDamage",256,1,557)
TNT1 A 0 A_SpawnItemEx("NeptuneBigBounce2",0,0,32)
TNT1 A 0 A_FireCustomMissile("NeptuneFloorHugger_H",0,0,0,0)
stop
}
}
actor NeptuneBigBounce : BasicExplosion
{
obituary "$OB_NEPTUNESTOMP"
damagetype "Neptune_Stomp"
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Explode(100+CallACS("core_checkrune",RUNE_SPREAD,2)*200,64,0,0,32)
TNT1 A 4 A_SpawnItemEx("NeptuneBigBounceFX",0,0,-32,0,0,0,0,1)
stop
}
}
actor NeptuneBigBounce2 : BasicImplosion
{
obituary "$OB_NEPTUNESTOMP"
damagetype "Neptune_Stomp2"
states
{
Spawn:
TNT1 A 0
TNT1 A 4 A_Explode(150+CallACS("core_checkrune",RUNE_SPREAD,2)*300,96,0,0,48)
stop
}
}

actor NeptuneFloorHugger_H : BasicHelper
{
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("NeptuneFloorHugger",0,0,0,60,0,0,45*1)
TNT1 A 0 A_SpawnItemEx("NeptuneFloorHugger",0,0,0,60,0,0,45*2)
TNT1 A 0 A_SpawnItemEx("NeptuneFloorHugger",0,0,0,60,0,0,45*3)
TNT1 A 0 A_SpawnItemEx("NeptuneFloorHugger",0,0,0,60,0,0,45*4)
TNT1 A 0 A_SpawnItemEx("NeptuneFloorHugger",0,0,0,60,0,0,45*5)
TNT1 A 0 A_SpawnItemEx("NeptuneFloorHugger",0,0,0,60,0,0,45*6)
TNT1 A 0 A_SpawnItemEx("NeptuneFloorHugger",0,0,0,60,0,0,45*7)
TNT1 A 0 A_SpawnItemEx("NeptuneFloorHugger",0,0,0,60,0,0,45*8)
TNT1 A 1
TNT1 A 0 A_SpawnItemEx("NeptuneFloorHugger",0,0,0,60,0,0,45*1+22.5)
TNT1 A 0 A_SpawnItemEx("NeptuneFloorHugger",0,0,0,60,0,0,45*2+22.5)
TNT1 A 0 A_SpawnItemEx("NeptuneFloorHugger",0,0,0,60,0,0,45*3+22.5)
TNT1 A 0 A_SpawnItemEx("NeptuneFloorHugger",0,0,0,60,0,0,45*4+22.5)
TNT1 A 0 A_SpawnItemEx("NeptuneFloorHugger",0,0,0,60,0,0,45*5+22.5)
TNT1 A 0 A_SpawnItemEx("NeptuneFloorHugger",0,0,0,60,0,0,45*6+22.5)
TNT1 A 0 A_SpawnItemEx("NeptuneFloorHugger",0,0,0,60,0,0,45*7+22.5)
TNT1 A 0 A_SpawnItemEx("NeptuneFloorHugger",0,0,0,60,0,0,45*8+22.5)
TNT1 A 2
stop
}
}

actor Neptune_SaltQuakeProtect : PowerProtection
{
Powerup.Duration 7
DamageFactor "Neptune_SaltQuake", 0.1325
}

actor NeptuneFloorHugger : ProjSpawnFuncActor
{
//var int user_A;
PROJECTILE
obituary "$OB_NEPTUNESTOMP"
damagetype "Neptune_SaltQuake"
+FLOORHUGGER
+THRUACTORS
//+STEPMISSILE
+DONTSPLASH
+DONTBLAST
//maxstepheight 16
reactiontime 9//11
radius 4
height 4
speed 60
states
{
Spawn:
TNT1 A 0
TNT1 A 1 A_CountDown
TNT1 A 0 A_Explode(150,56,0,0,56)
TNT1 A 0 A_SpawnItemEx("NeptuneWaterSpoutFX_H",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SetAngle(angle + 10)//+user_A
//TNT1 A 0 A_SetUserVar("user_A",user_A+0.75)
TNT1 A 0 A_ChangeVelocity(60,30,0,3)
loop
}
}

actor NeptuneBigBounceFX : BasicClientSide
{
reactiontime 12
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("NeptuneWaterSpoutFX_H2",0,0,0,256+random(-16,0),0,0,30*reactiontime+random(-2,2),1)
TNT1 A 0 A_SpawnItemEx("NeptuneWaterSpoutFX_H2",0,0,0,128+random(-16,0),0,0,30*reactiontime+random(13,17),1)

//TNT1 A 0 A_SpawnItemEx("NeptuneWaterSpoutFX_H",256+random(-16,0),0,0,0,0,0,30*reactiontime+random(-2,2),1)
//TNT1 A 0 A_SpawnItemEx("NeptuneWaterSpoutFX_H",128+random(-16,0),0,0,0,0,0,30*reactiontime+random(13,17),1)
TNT1 A 0 A_Countdown
loop
Death:
TNT1 A 1
stop
}
}


actor NeptuneSaltWater : ProjSpawnFuncActor
{
PROJECTILE
obituary "$OB_SALTWATER"
damagetype "Neptune_Shot"
-NOGRAVITY
+SKYEXPLODE
+EXPLODEONWATER
+USEBOUNCESTATE
+BOUNCEONCEILINGS
deathsound "W_Neptune/SaltWater"
BounceFactor 1.0
damage (100)
radius 14//24
height 24
speed 25
scale 2.5
states
{
Spawn:
TNT1 A 0
NEPH K 0 A_ChangeVelocity(0,0,5,1)
NEPH K -1
stop
Bounce.Ceiling:
NEPH K 0 A_ChangeFlag("USEBOUNCESTATE",0)
NEPH K 0 A_ChangeFlag("BOUNCEONCEILINGS",0)
NEPH K 0 A_ChangeVelocity(momx,momy,momz-1,2)
goto Spawn+2
Death:
NEPH K 0 A_ChangeFlag("USEBOUNCESTATE",0)
TNT1 A 0 A_SpawnItemEx("SoakifyEffect")
TNT1 A 0 A_SpawnItemEx("NeptuneSaltWaterBit",0,0,0,20.0,0,9,12)
TNT1 A 0 A_SpawnItemEx("NeptuneSaltWaterBit",0,0,0,22.5,0,9,6)
TNT1 A 0 A_SpawnItemEx("NeptuneSaltWaterBit",0,0,0,25.0,0,9,0)
TNT1 A 0 A_SpawnItemEx("NeptuneSaltWaterBit",0,0,0,22.5,0,9,-6)
TNT1 A 0 A_SpawnItemEx("NeptuneSaltWaterBit",0,0,0,20.0,0,9,-12)
DeathFX:
TNT1 A 0 A_CheckFloor(2)
TNT1 A 1 A_SpawnItemEx("NeptuneSaltWaterDieFX2",0,0,20,0,0,0,0,1)
stop
TNT1 A 1 A_SpawnItemEx("NeptuneSaltWaterDieFX1",0,0,0,0,0,0,0,1)
stop
XDeath:
Crash:
NEPH K 0 A_SpawnItemEx("SoakifyEffect")
TNT1 A 0 A_SpawnItemEx("NeptuneSaltWaterBit_Thru",0,0,0,20.0,0,9,12)
TNT1 A 0 A_SpawnItemEx("NeptuneSaltWaterBit_Thru",0,0,0,22.5,0,9,6)
TNT1 A 0 A_SpawnItemEx("NeptuneSaltWaterBit_Thru",0,0,0,25.0,0,9,0)
TNT1 A 0 A_SpawnItemEx("NeptuneSaltWaterBit_Thru",0,0,0,22.5,0,9,-6)
TNT1 A 0 A_SpawnItemEx("NeptuneSaltWaterBit_Thru",0,0,0,20.0,0,9,-12)

TNT1 A 1 A_SpawnItemEx("NeptuneSaltWaterDieFX2",0,0,20,0,0,0,0,1)
stop
}
}

actor NeptuneSaltWaterDieFX1 : BasicGraphicEffect
{
states
{
SpawnFrame:
Q_VI BCD 4
stop
}
}
actor NeptuneSaltWaterDieFX2 : BasicGraphicEffect
{
states
{
SpawnFrame:
Q_VI IJ 4
stop
}
}

actor NeptuneSaltWater2 : NeptuneSaltWater
{
+BOUNCEONWALLS
states
{
Spawn:
NEPH K 1
NEPH K 0 A_ChangeFlag(BOUNCEONWALLS,0)
NEPH K -1
stop
}
}

actor NeptuneSaltWaterSalty : NeptuneSaltWater
{
//gravity 0.6
damage (120)
speed 40
states
{
Spawn:
TNT1 A 0
NEPH K 0 A_ChangeVelocity(0,0,2,1)
NEPH K -1
stop
Death:
NEPH K 0 A_ChangeFlag("USEBOUNCESTATE",0)
TNT1 A 0 A_SpawnItemEx("NeptuneSaltWaterBit",0,0,0,20.0,0,9,12)
TNT1 A 0 A_SpawnItemEx("NeptuneSaltWater2",0,0,0,22.5,0,9,6)
TNT1 A 0 A_SpawnItemEx("NeptuneSaltWater2",0,0,0,25.0,0,9,0)
TNT1 A 0 A_SpawnItemEx("NeptuneSaltWater2",0,0,0,22.5,0,9,-6)
TNT1 A 0 A_SpawnItemEx("NeptuneSaltWaterBit",0,0,0,20.0,0,9,-12)
goto DeathFX

XDeath:
Crash:
NEPH K 0 A_SpawnItemEx("SoakifyEffect")
TNT1 A 0 A_SpawnItemEx("NeptuneSaltWaterBit_Thru",0,0,0,20.0,0,9,12)
TNT1 A 0 A_SpawnItemEx("NeptuneSaltWater_Thru",0,0,0,22.5,0,9,6)
TNT1 A 0 A_SpawnItemEx("NeptuneSaltWater_Thru",0,0,0,25.0,0,9,0)
TNT1 A 0 A_SpawnItemEx("NeptuneSaltWater_Thru",0,0,0,22.5,0,9,-6)
TNT1 A 0 A_SpawnItemEx("NeptuneSaltWaterBit_Thru",0,0,0,20.0,0,9,-12)

TNT1 A 1 A_SpawnItemEx("NeptuneSaltWaterDieFX2",0,0,20,0,0,0,0,1)
stop
}
}

actor NeptuneSaltWater_Thru : NeptuneSaltWater
{
-USEBOUNCESTATE
-BOUNCEONCEILINGS
+THRUACTORS
states
{
Spawn:
NEPH K 1
NEPH K 4//6
NEPH K 0 A_ChangeFlag("THRUACTORS",0)
NEPH K -1
stop
}
}

actor NeptuneSaltWaterBit : ProjSpawnFuncActor
{
PROJECTILE
obituary "$OB_SALTWATER"
damagetype "Neptune_ShotBit"
-NOGRAVITY
+SKYEXPLODE
+EXPLODEONWATER
+FORCEXYBILLBOARD
+BOUNCEONWALLS
bouncecount 3
damage (50)
radius 10
height 10
speed 25
scale 2.5
states
{
Spawn:
NEPH L 1
NEPH L 0 A_ChangeFlag(BOUNCEONWALLS,0)
NEPH L -1
stop
Death:
TNT1 A 1 A_SpawnItemEx("NeptuneSaltWaterBitDieFX",0,0,10,0,0,0,0,1)
stop
}
}
actor NeptuneSaltWaterBitDieFX : BasicGraphicEffect
{
states
{
SpawnFrame:
Q_VI FGH 3
stop
}
}

actor NeptuneSaltWaterBit_Thru : NeptuneSaltWaterBit
{
-BOUNCEONWALLS
+THRUACTORS
states
{
Spawn:
NEPH L 1
NEPH L 4//6
NEPH L 0 A_ChangeFlag(THRUACTORS,0)
NEPH L -1
stop
}
}

actor NeptuneSaltySweatFX1 : BasicGraphicEffectM
{
+THRUACTORS
+NOTIMEFREEZE
renderstyle add
alpha 0.5
gravity 0.5
reactiontime 1
radius 4
height 4
speed 30
scale 1.75
states
{
SpawnFrame:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("NeptuneSaltySweatFX_1",0,0,0,random(1,3),0,random(-1,3),0,1)
stop
Death:
TNT1 A 0
TNT1 A 1
stop
}
}


actor NeptuneSaltySweatFX_1 : NeptuneSaltySweatFX1
{
-NOGRAVITY
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_GiveInventory("MM8BDMProjSpawnFuncClient")
TNT1 A 1 ThrustThingZ(0,1,0,1)
Q_VI E 24
Q_VI E 1 A_CountDown
wait
Death:
TNT1 A 0 A_SetGravity(0.0)
Q_VI FEGH 2
stop
}
}

actor NeptuneSaltySweatFX2 : NeptuneSaltySweatFX1
{
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_GiveInventory("MM8BDMProjSpawnFuncClient")
TNT1 A 0 A_SpawnItemEx("NeptuneSaltySweatFX_2",0,0,0,0,0,random(-1,0),0,1)
stop
}
}
actor NeptuneSaltySweatFX_2 : NeptuneSaltySweatFX_1
{
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_GiveInventory("MM8BDMProjSpawnFuncClient")
TNT1 A 1 ThrustThingZ(0,1,0,1)
Q_VI F 18
Q_VI F 1 A_CountDown
wait
Death:
TNT1 A 0 A_SetGravity(0.0)
Q_VI EGH 2
stop
}
}


actor Neptune_W_NormalBar : NormalBar {Args 201,75}//4,198
actor Neptune_W_SecondBar : SecondBar {Args 4,201}