//Jelly

ACTOR StupidRatJellyWeapon : Weapon
{
	Inventory.RestrictedTo "StupidRatClass"
	Weapon.SelectionOrder 3700
	Obituary "%k got jelly'd"
	Inventory.Pickupmessage "$PICKUP_PISTOL_DROPPED"
	+WEAPON.AMMO_OPTIONAL
	Tag "Jelly"
	DamageType "RatGainAmmo"
	States
	{
	Reload:
		TNT1 A 0 bright ACS_NamedExecuteAlways("RatDanceState")
		TNT1 A 0 A_GiveInventory("StupidRatDancing")
		TNT1 A 0 SetPlayerProperty(0,1,PROP_FROZEN)
		TNT1 A 0 A_PlaySound("characters/stupidrat/music",7,1,1,5)
		TNT1 A 0 ACS_NamedExecuteWithResult("SetRatChasecam2",40)
		TNT1 A 0 ACS_NamedExecuteWithResult("SpookyDoiseTime")
	Dance:
		TNT1 A 0 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		SRWJ D 10 bright 
		TNT1 A 0 A_jumpifinventory("reloadholding",1,"Dance")
		TNT1 A 0 SetPlayerProperty(0,0,PROP_FROZEN)
		TNT1 A 0 A_takeinventory("StupidRatDancing")
		TNT1 A 0 A_StopSound(7)
		TNT1 A 0 ACS_NamedExecuteWithResult("SetRatChasecam2",0)
		TNT1 A 0 ACS_NamedExecuteWithResult("SpookyDoiseTimeStop")
		TNT1 A 0 bright ACS_NamedExecuteAlways("RatCheeseState")
		SRWJ DEFG 4 bright
		Goto Ready
	Ready: 
		TNT1 A 0 A_GiveInventory("StupidRatHoldingJelly")
		SRWJ DEFG 4 bright A_WeaponReady(WRF_NOBOB|WRF_ALLOWRELOAD)
		Loop
	Deselect:
		TNT1 A 0 ACS_NamedExecuteWithResult("SetRatChasecam2",0)
		TNT1 A 0 A_StopSound(7)
	DeselectLoop:
		TNT1 A 0 A_TakeInventory("StupidRatHoldingJelly")
		TNT1 A 0 SetPlayerProperty(0,0,PROP_FROZEN)
		TNT1 A 0 A_StopSound(6)
		SRWJ A 0 A_Lower
		Loop
	Select:
		TNT1 A 0 bright ACS_NamedExecuteAlways("RatJellyState")
	SelectLoop:
		SRWJ A 0 A_Raise
		Loop

	Fire:
		TNT1 A 0 bright ACS_NamedExecuteAlways("RatJellyAttack1State")
		SRWJ i 2 bright
		SRWJ h 2 bright
		Goto PogoCheckStart
	PogoCheckStart:
		TNT1 A 0 A_giveinventory("StupidRatSpeedup")
		SRWJ h 2 bright A_CheckFloor("PogoBounceFloor")
		SRWJ h 0 A_Refire("PogoCheckStartContinue")
		Goto EndPogo
	PogoCheckStartContinue:
		SRWJ h 1 bright
		Goto PogoCheckStart
	PogoBounceFloor:
		TNT1 A 0 bright ACS_NamedExecuteAlways("RatJellyAttack2State")
		TNT1 A 0 A_PlaySound("characters/stupidrat/jellywiggle",0,0.4)
		
		TNT1 A 0 A_FireCustomMissile("StupidRatJellySmokeSpawner")
		TNT1 A 0 A_FireCustomMissile("StupidRatJellySmoke",30,0,0,-24,true)
		
		SRWJ J 2 bright
		
		TNT1 A 0 A_Changeflag("Reflective",1)
		TNT1 A 0 A_FireCustomMissile("StupidRatJellyProjectileSpawner",random(0,55),0,0,-16,0,random(15,35))
		TNT1 A 0 A_FireCustomMissile("StupidRatJellyProjectileSpawner",random(65,115),0,0,-16,0,random(15,35))
		TNT1 A 0 A_FireCustomMissile("StupidRatJellyProjectileSpawner",random(125,175),0,0,-16,0,random(15,35))
		TNT1 A 0 A_FireCustomMissile("StupidRatJellyProjectileSpawner",random(185,235),0,0,-16,0,random(15,35))
		TNT1 A 0 A_FireCustomMissile("StupidRatJellyProjectileSpawner",random(245,295),0,0,-16,0,random(15,35))
		TNT1 A 0 A_FireCustomMissile("StupidRatJellyProjectileSpawner",random(305,355),0,0,-16,0,random(15,35))
		tnt1 a 0 A_quake(2,12,0,100)
		SRWJ J 3 bright A_fireCustommissile("StupidRatJellyBlast",0,0,0,-16)
		TNT1 A 0 A_Changeflag("Reflective",0)
		SRWJ J 1 bright 
		SRWJ I 1 bright A_ChangeVelocity(0,0,4,CVF_RELATIVE)
		SRWJ H 1 bright 
		SRWJ H 2 bright A_Refire("PogoCheckStart")
		Goto EndPogo

	EndPogo:
		SRWJ h 1 bright A_Refire("PogoCheckStart")
		TNT1 A 0 A_takeinventory("StupidRatSpeedup")
		TNT1 A 0 bright ACS_NamedExecuteAlways("RatJellyState")
		SRWJ hik 2 bright
	Goto Ready
	}
}