///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//                              JaxOf7's moar amazing class bases.                                                                    //
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
actor ClassBase : PlayerPawn  //All Classes inherit from this in order to make pain states more manageable. To make a new class, refer to the guide file.
{
player.displayname "Copy Robot"
player.damagescreencolor "yellow"
player.maxhealth 100
player.forwardmove 0.8, 0.8
player.sidemove 0.78, 0.78
player.jumpz 10
+NOBLOOD
+DONTBLAST
+NOSKIN
+NODAMAGETHRUST
//+GHOST
player.colorrange 0 0
mass 9999
damagefactor "Dummy", 0.0
damagefactor "TimeStop", 1.0
damagefactor "BrightB", 1.0
damagefactor "GravityB1", 1.0
//damagefactor "plant2", 5.0
gravity 0.8
scale 2.5
+QUICKTORETALIATE
States
{
Spawn:
"----" A 0
"----" B 1
"----" A 1
Goto Spawn+2
See:
"----" BCDE 5
Goto Spawn
Missile:
"----" F 5
"----" G 4
goto Spawn
Pain.FireSpin:
Pain.Quick:
Pain.Buster:
Pain.Coil:
Pain.Kick:
Pain.Yamato:
Pain.Dive:
Pain.Star:
Pain.Needle:
Pain.Centaur:
Pain.FCrack:
Pain.Screw:
Pain.PharaohHold:
Pain.Treble:
Pain.Scorch:
Pain.Magnet:
Pain.Junk:
Pain.Misc:
Pain.Clash:
Pain.MagPush:
Pain.Cut:
Pain.Plant:
Pain.Plant2:
Pain.Punch:
Pain.Dark:
Pain.SakuDrill:
Pain.GravityB2:
Pain.WilyFireB2:
"----" H 0
Goto pain+2
Pain.Wind:
"----" H 0 //ThrustThing(random(0,255),50,1,0)
"----" H 0 ThrustThingZ(0,90,0,0)
Goto pain+2
Pain.Claw:
"----" H 0 A_PlaySoundEx("weapon/slashclawhit","SoundSlot5")
Goto Pain
Pain.Bright:
"----" H 0 A_GiveInventory("Flashed",1)
Goto pain+2
Pain.NeutralShock:
Pain.Shock:
"----" H 0 A_SpawnItemEx("ShockFX",4,0,32)
"----" H 0 A_GiveInventory("Shocked",1)
Goto Pain+2
Pain.Gravity:
"----" H 0 ThrustThingZ(0,150,1,0)
"----" H 0 A_JumpIf(z-floorz>180,"GravityForce4")
"----" H 0 A_JumpIf(z-floorz>128,"GravityForce3")
"----" H 0 A_JumpIf(z-floorz>32,"GravityForce2")
"----" H 0 A_JumpIf(z-floorz>8,"GravityForce1")
Goto pain+2
GravityForce4:
//"----" H 0 A_Print("Gravity 4")
"----" H 0 A_GiveInventory("GravityForce4",1)
Goto Pain+2
GravityForce3:
//"----" H 0 A_Print("Gravity 3")
"----" H 0 A_GiveInventory("GravityForce3",1)
Goto Pain+2
GravityForce2:
//"----" H 0 A_Print("Gravity 2")
"----" H 0 A_GiveInventory("GravityForce2",1)
Goto Pain+2
GravityForce1:
//"----" H 0 A_Print("Gravity 1")
"----" H 0 A_GiveInventory("GravityForce1",1)
Goto Pain+2
Pain.WilyFire:
"----" H 0 //A_ChangeFlag("SHOOTABLE",0)
"----" H 0 A_SpawnItemEx("ImOnFire")
"----" H 0 A_GiveInventory("FireVision",1)
Goto Pain
Pain.WilyIce:
"----" H 0 A_ChangeFlag("SHOOTABLE",0)
"----" H 0 SetPlayerProperty(0,1,4)
"----" H 0 A_SpawnItemEx("ImFrozen")
"----" H 0 A_GiveInventory("IceVision",1)
"----" H 0 A_Stop
"----" H 0 A_Jump(256, "Spawn")
Goto Spawn
/*Pain.WilyIce:
"----" H 0 A_ChangeFlag("SHOOTABLE",0)
"----" H 0 SetPlayerProperty(0,1,4)
"----" H 0 A_SpawnItemEx("ImFrozen")
"----" H 0 A_GiveInventory("IceVision",1)
"----" H 30 A_Stop
"----" H 30 A_ChangeFlag("SHOOTABLE",1)
"----" H 0 SetPlayerProperty(0,0,0)
"----" H 0 A_TakeInventory("IceVision",1)
Goto Spawn*/
//Classes' incredible custom pain states
Pain.TimeStop:
"----" H 0 A_Jump(256, "TimeStopped")
Goto TimeStopped
TimeStopped:
"----" A 0 SetPlayerProperty(0,1,4)
"----" AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
"----" A 0 SetPlayerProperty(0,0,4)
Goto pain+2
Pain.Slow:
"----" H 0 A_GiveInventory("Slowed",1)
Goto pain+2
Pain.Ice3:
"----" H 0 A_GiveInventory("IceSlowed",1)
Goto pain+2
Pain.Roll:
"----" H 0 ThrustThing(random(0,255),15,1,0)
"----" H 0 ThrustThingZ(0,50,0,0)
"----" H 0 A_SpawnItemEx("RollHit")
Goto pain+2
Death.Roll:
"----" H 0 A_GiveToTarget("RollHealAmmo", 2)
goto Death
Pain.FreezeCrackerB:
Pain.FrostWaveB:
"----" H 0 A_SpawnItemEx("GroundIce")
Goto Pain+1
Pain.Special:
"----" H 0 A_ChangeFlag("DONTBLAST",0)
"----" H 5
"----" H 2 A_ChangeFlag("DONTBLAST",1)
Goto Pain+25
Pain.MagPush:
"----" H 0 A_SpawnItemEx("MagHit")
Goto pain+2
Pain.KnightRush:
"----" H 0 A_SpawnItemEx("KnightHit")
Goto pain.Shock
Pain.BrightB:
"----" H 0 A_SpawnItemEx("BossFlashStoppered")
Goto pain+2
Pain.GravityB1:
"----" H 0 A_SpawnItemEx("GravityHit")
Goto pain+2
Pain.Atomic:
"----" H 0 A_GiveInventory("AtomicOnce",1)
Goto Pain
Pain.WilyFireB1:
"----" H 0 A_JumpIfInventory("WilyBurnTimer",1,2)
"----" H 0 A_SpawnItemEx("WilyFireHit")
"----" H 0 A_GiveInventory("WilyBurnTimer",60)
Goto Pain+2
Pain.Normal:Pain.Proto:Pain.Proto3:Pain.Cutter:Pain.Guts:Pain.Ice2:Pain.Bomb:
Pain.FireStorm:Pain.Thunder:Pain.Metal:Pain.Air:Pain.Bubble:Pain.Crash:
Pain.WeakFire:/*Pain.Atomic:*/Pain.Leaf:Pain.Gemini:Pain.Hard:Pain.Top:Pain.TopSpinB:Pain.TopThrow:Pain.Snake:
Pain.Shadow:Pain.Rain:Pain.Drill:Pain.WeakPharoah:Pain.Pharoah:Pain.Ring:
Pain.Dust:Pain.WaterWave:Pain.Stone:Pain.Gyro:Pain.StarCrash:Pain.Napalm:
Pain.Crystal:Pain.CrystalBit:Pain.Blizzard:Pain.Flame:Pain.Knight:Pain.Tomahawk:Pain.Mirror:
Pain.SakuCrush:Pain.Ballade:Pain.Cat:Pain.FCrack2:Pain.JunkShot:Pain.Burst:
Pain.Bolt:Pain.Coil2:Pain.Noise:Pain.Oil:Pain.OilFlame:
Pain.Mine:Pain.Skull:Pain.Windg:Pain.FireTrap:Pain.Met:Pain.Devil:
Pain.WilyLightning:Pain.FirePillar:
Pain.LeafFall:Pain.Coal:
Pain:
"----" H 0 A_JumpIfInventory("StunArmor",1,2)
"----" H 0 A_Stop
"----" H 0 A_TakeInventory("SuperEffective",1)
"----" H 0 A_GiveInventory("EndBossFlashStoppered",1)
"----" H 0 A_GiveInventory("MirrorCharge",3)
"----" H 0 A_JumpIfInventory("EnkerAbsorbCount",1,"AmmoGet")
"----" H 0 A_JumpIfInventory("EnkerMirrorCount",1,"EnkerClassAbsorb")
"----" H 0 A_Pain
"----" H 0 A_JumpIfInventory("StayLocked",1,2)
"----" H 0 SetPlayerProperty(0,0,4)
"----" H 0 //A_GiveInventory("TempInvince",1)
"----" H 0 //SetPlayerProperty(0, 1, 4)
"----" H 0 A_Jump(256, "ClassPain")
goto ClassPain
ClassPain:
"----" H 0
goto PainContinue
PainContinue:
"----" H 1 A_SpawnItem("PainFX",0,3)
"----" H 1 A_Recoil(1)
"----" H 1 A_SpawnItem("PainFX",0,3)
"----" H 1 //A_Recoil(1)
"----" H 1 A_SpawnItem("PainFX",0,3)
"----" H 1 //A_Recoil(1)
"----" H 1 A_SpawnItem("PainFX",0,3)
"----" H 1 //A_Recoil(1)
"----" H 1 A_SpawnItem("PainFX",0,3)
"----" H 1 //A_Recoil(1)
"----" H 1 A_SpawnItem("PainFX",0,3)
"----" H 1 //A_Recoil(1)
"----" H 1 A_SpawnItem("PainFX",0,3)
"----" H 1 //A_Recoil(1)
"----" H 1 A_SpawnItem("PainFX",0,3)
"----" H 1 //A_Recoil(1)
"----" H 1 A_SpawnItem("PainFX",0,3)
"----" H 1 //A_Recoil(1)
"----" H 1 A_SpawnItem("PainFX",0,3)
"----" H 1 //A_Recoil(1)
"----" H 0 //SetPlayerProperty(0, 0, 4)
"----" H 0 SetPlayerProperty(0,0,1)
"----" H 0 SetPlayerProperty(0,0,4)
"----" H 0 A_Jump(256, "Spawn")
goto Spawn
Death.Beam:
Death.Gravity:
Death.GravityB1:
Death.GravityB2:
Death.instagib:
"----" H 0 A_TakeInventory("PharaohChargeC",999)  
"----" H 0 A_SpawnItemEx("JunkSpewer")
"----" H 0 A_TakeInventory("WilyBurnTimer",999)
"----" H 0 A_GiveInventory("InstagibFlag",1)
"----" H 0 A_Jump(256, "ClassDeath")
goto ClassDeath
DeathContinueInstagib:
"----" Z 1 SetPlayerProperty(0, 0, 4)
"----" H 0 A_GiveToTarget("KilledMe",1)
"----" H 0 A_GiveToTarget("KilledMeStock",1)
"----" H 0 A_GiveInventory("IsDead",1)
"----" Z 0 A_PlaySoundEX("misc/devildeath","Voice") /*A_PlayerScream*/
"----" Z 0 A_CustomMissile("DeathFX1",0,0,0,2,90)
"----" Z 0 A_CustomMissile("DeathFX1",0,0,0,2,-90)
"----" Z 0 A_CustomMissile("DeathFX1",0,0,90,2,45)
"----" Z 0 A_CustomMissile("DeathFX1",0,0,-90,2,-45)
"----" Z 0 A_CustomMissile("DeathFX1",0,0,90,2,0)
"----" Z 0 A_CustomMissile("DeathFX1",0,0,-90,2,0)
"----" Z 0 A_CustomMissile("DeathFX1",0,0,90,2,-45)
"----" Z 0 A_CustomMissile("DeathFX1",0,0,-90,2,45)
"----" Z 0 A_CustomMissile("DeathFX2",0,0,0,2,90)
"----" Z 0 A_CustomMissile("DeathFX2",0,0,0,2,-90)
"----" Z 0 A_CustomMissile("DeathFX2",0,0,90,2,45)
"----" Z 0 A_CustomMissile("DeathFX2",0,0,-90,2,-45)
"----" Z 0 A_CustomMissile("DeathFX2",0,0,90,2,0)
"----" Z 0 A_CustomMissile("DeathFX2",0,0,-90,2,0)
"----" Z 0 A_CustomMissile("DeathFX2",0,0,90,2,-45)
"----" Z 0 A_CustomMissile("DeathFX2",0,0,-90,2,45)
"----" H 0 A_Jump(256, "DropWeapon")
goto DropWeapon
Death:
"----" H 0 A_TakeInventory("PharaohChargeC",999)  
"----" H 0 A_SpawnItemEx("JunkSpewer")
"----" H 0 A_TakeInventory("WilyBurnTimer",999)
"----" H 0 A_Jump(256, "ClassDeath")
goto ClassDeath
ClassDeath:
"----" H 0
goto DeathContinue
DeathContinue:
"----" H 0 A_JumpIfInventory("InstagibFlag",1,"DeathContinueInstagib")
"----" H 0 A_JumpIfInventory("FallingFlag",1,"DeathContinueFalling")
"----" H 0 SetPlayerProperty(0, 0, 4)
"----" H 0 A_TakeInventory("PharaohCharge",999)   
"----" H 0 A_NoBlocking
"----" H 0 A_GiveInventory("CutterFlag",999)
"----" H 0 A_GiveInventory("IsDead",1)
"----" H 0 A_Stop
"----" H 0 A_GiveToTarget("KilledMeStock",1)
"----" H 1 A_GiveToTarget("KilledMe",1)
"----" H 19 ACS_ExecuteAlways(999,0,0)
"----" H 0 SetPlayerProperty(0, 0, 4)
"----" H 0 A_PlaySoundEX("misc/devildeath","Voice") /*A_PlayerScream*/
"----" Z 0 A_CustomMissile("DeathFX1",0,0,0,2,90)
"----" Z 0 A_CustomMissile("DeathFX1",0,0,0,2,-90)
"----" Z 0 A_CustomMissile("DeathFX1",0,0,90,2,45)
"----" Z 0 A_CustomMissile("DeathFX1",0,0,-90,2,-45)
"----" Z 0 A_CustomMissile("DeathFX1",0,0,90,2,0)
"----" Z 0 A_CustomMissile("DeathFX1",0,0,-90,2,0)
"----" Z 0 A_CustomMissile("DeathFX1",0,0,90,2,-45)
"----" Z 0 A_CustomMissile("DeathFX1",0,0,-90,2,45)
"----" Z 0 A_CustomMissile("DeathFX2",0,0,0,2,90)
"----" Z 0 A_CustomMissile("DeathFX2",0,0,0,2,-90)
"----" Z 0 A_CustomMissile("DeathFX2",0,0,90,2,45)
"----" Z 0 A_CustomMissile("DeathFX2",0,0,-90,2,-45)
"----" Z 0 A_CustomMissile("DeathFX2",0,0,90,2,0)
"----" Z 0 A_CustomMissile("DeathFX2",0,0,-90,2,0)
"----" Z 0 A_CustomMissile("DeathFX2",0,0,90,2,-45)
"----" Z 0 A_CustomMissile("DeathFX2",0,0,-90,2,45)
"----" H 0 A_Jump(256, "DropWeapon")
goto DropWeapon
Death.Falling:
"----" H 0 A_GiveInventory("FallingFlag",1)
"----" H 0 A_Jump(256, "ClassDeath")
goto ClassDeath
DeathContinueFalling:
"----" H 0 SetPlayerProperty(0, 0, 4)
"----" H 0 A_TakeInventory("PharaohCharge",999)   
"----" H 0 A_NoBlocking
"----" H 0 A_GiveInventory("CutterFlag",999)
"----" H 0 A_GiveInventory("IsDead",1)
"----" H 1 A_PlaySoundEX("misc/devildeath","Voice") /*A_PlayerScream*/
"----" H 1 A_Stop
"----" H 1 ACS_ExecuteAlways(999,0,0)
PLAY Z -1
stop
PunkSpin:
"----" AVW 3
"----" XY 3
Goto PunkSpin+3
PunkStop:
"----" WV 5
Goto Spawn
EnkerRaise:
"----" Y 1
loop
EnkerAbsorb:
"----" Y 0 A_PlaySound("weapon/mirrorabsorb")
"----" Y 0 A_GiveInventory("EnkerMirrorCount",1)
Goto EnkerAbsorb3
EnkerAbsorb3:
"----" Y 3 ACS_ExecuteAlways(998,0,65)
"----" Y 0 A_JumpIfInventory("EnkerMirrorCount",1,"EnkerAbsorb2")
Goto Spawn
EnkerAbsorb2:
"----" Y 3 ACS_ExecuteAlways(998,0,66)
"----" Y 0 A_JumpIfInventory("EnkerMirrorCount",1,"EnkerAbsorb3")
Goto Spawn
DarkLeap:
"----" Y 1 A_SpawnItemEx("DarkDamager")
"----" Y 0 A_JumpIf(z-floorz==0,"Spawn")
loop
BalladeJump:
"----" Y 5 A_SpawnItemEx("BalladeMelee")
loop
TheEnd:
"----" G 4
loop
CreditWalk:
"----" BCDE 8
loop
DropWeapon:
"----" H 0
PLAY Z -1
stop
goto Spawn+1
AmmoGet:
"----" Y 0 A_PlaySound("weapon/mirrorabsorb")
"----" Y 0 A_GiveInventory("MirrorCharge",7)
EnkerClassAbsorb:
"----" Z 35 
"----" Z 0
goto Spawn+1
}
}

actor AtomicOnce : PowerProtection
{
Powerup.Duration 7
damagefactor "Atomic", 0.0
}

actor TempPitProtect : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("TempPitProtector")
stop
}
}

actor TempPitProtector
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
Spawn:
TNT1 A 0
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_GiveToTarget("MonsterBlock", 1)
TNT1 A 1 A_GiveToTarget("NoMonsterBlock", 1)
stop
}
}

actor NoMonsterBlock : CustomInventory
{
States
{
Pickup:
TNT1 A 1 A_ChangeFlag("NOBLOCKMONST",1)
stop
}
}

actor RollHit
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_GiveToTarget("RollHitPickup",1)
stop
}
}

actor RollHitPickup : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
States
{
Spawn:
TNT1 A 0
stop
Pickup:
TNT1 A 0 A_GiveToTarget("RollHealAmmo",2)
stop
}
}

actor MagHit : RollHit
{
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_GiveToTarget("MagHitPickup",1)
stop
}
}

/*
actor PusheeID : Inventory
{
inventory.amount 1
inventory.maxamount 32
}
*/

actor KnightHit : RollHit
{
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_GiveToTarget("KnightHitPickup",1)
stop
}
}

/*
actor LowGravityEx : LowGravity replaces LowGravity
{
States
{
Pickup:
TNT1 A 1 ACS_ExecuteAlways(204,0,1)
stop
}
}

actor NormalGravityEx : NormalGravity replaces NormalGravity
{
States
{
Pickup:
TNT1 A 1 ACS_ExecuteAlways(204,0,0)
stop
}
}
*/

actor NormalGravityFlag : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor LowGravityFlag : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor EndBossFlashStoppered : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor JunkSpewer
{
+NOINTERACTION
-SOLID
Height 0
Radius 0
renderstyle "none"
States
{
Spawn:
PLAY A 0
//PLAY A 0 A_SpawnItemEx("JunkBits9",0,0,0,random(1,102),0,random(10,120),random(0,360))
PLAY A 0 A_SpawnItemEx("JunkBits9",0,0,0,random(1,10),0,random(3,12),random(0,359))
PLAY A 0 A_SpawnItemEx("JunkBits4",0,0,0,random(1,10),0,random(3,12),random(0,359))
PLAY A 0 A_SpawnItemEx("JunkBits6",0,0,0,random(1,10),0,random(3,12),random(0,359))
stop
}
}

actor PainFXC : PainFX replaces PainFX
{
States
{
Spawn:
MMFX A 0
MMFX A 0 A_JumpIfInTargetInventory("SuperEffective", 2, "SuperSound")
MMFX A 0 A_JumpIfInTargetInventory("SuperEffective", 1, "Super")
MMFX A 1
stop
Super:
TNT1 A 0 A_SpawnItem("PainFX2")
TNT1 A 1
stop
SuperSound:
MMFX A 0 A_TakeFromTarget("SuperEffective", 1)
TNT1 A 0 A_SpawnItem("PainFX3")
TNT1 A 1
stop
}
}

actor PainFX2 : PainFX
{
scale 3.5
States
{
Spawn:
MMFX A 0
MMFX A 1
stop
}
}

actor PainFX3 : PainFX2
{
States
{
Spawn:
MMFX A 0
MMFX A 0 A_PlaySoundEX("classes/super","Weapon")
MMFX A 1
stop
}
}

actor ImFrozenC : ImFrozen replaces ImFrozen
{
States
{
Spawn:
TNT1 AAAAAAAAAA 1 A_GiveToTarget("WasFrozenTodayFX",1)
TNT1 AAAAAAAAAA 1 A_GiveToTarget("WasFrozenTodayFX",1)
TNT1 AAAAAAAAAA 1 A_GiveToTarget("WasFrozenTodayFX",1)
TNT1 AAAAAAAAAA 1 A_GiveToTarget("WasFrozenTodayFX",1)
TNT1 AAAAAAAAAA 1 A_GiveToTarget("WasFrozenTodayFX",1)
TNT1 AAAAAAAAAA 1 A_GiveToTarget("WasFrozenTodayFX",1)
TNT1 A 1 A_GiveToTarget("ImNotFrozenNowC",1)
stop
}
}

actor ImNotFrozenNowC : ImNotFrozenNow replaces ImNotFrozenNow
{
States
{
Spawn:
TNT1 A 0
stop
Pickup:
TNT1 A 0 SetPlayerProperty(0,0,4)
PLAY A 0 A_ChangeFlag("SHOOTABLE",1)
TNT1 A 0 A_TakeInventory("IceVision",1)
stop
}
}

actor WasFrozenTodayFX : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
States
{
Spawn:
TNT1 A 0
stop
Pickup:
TNT1 A 0 A_SpawnItemEx("WasFrozenToday", 0, 0, 36)
TNT1 A 1
stop
}
}

actor WasFrozenToday
{
RenderStyle "Translucent"
scale 5.0
Alpha 0.5
- SOLID
+NOGRAVITY
+CLIENTSIDEONLY
States
{
Spawn:
MRFP B 0
MRFP B 1
stop
}
}

ACTOR TeleportFogC : TeleportFog2 replaces TeleportFog2
{
  States
  {
  Spawn:
    TFOG A 0
	TFOG A 0 A_SpawnItemEx("SpawnProtect")
	TFOG A 3 A_PlaySound("misc/teleport")
    TFOG BC 2
    Stop
}
}

actor SpawnProtect
{
+SOLID
//+CLIENTSIDEONLY
+SHOOTABLE
+DONTRIP
+NODAMAGE
+NOBLOOD
health 99999
+DONTBLAST
height 56
radius 16
scale 2.5
speed 0
States
{
Spawn:
TNT1 A 0
TNT1 A 1
stop
}
}

actor SuperEffective : Inventory
{
inventory.amount 3
inventory.maxamount 3
}

actor InstagibFlag : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor FallingFlag : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor StunArmor : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor StayLocked : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor SpawningMisfire : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor GlassHealthBar : Inventory
{
inventory.amount 1
inventory.maxamount 1
}
actor LightHealthBar : GlassHealthBar
{
}
actor SturdyHealthBar : GlassHealthBar
{
}
actor ToadHealthBar : GlassHealthBar
{
}
actor HeavyHealthBar : GlassHealthBar
{
}
actor HardHealthBar : GlassHealthBar
{
}

//Armor bases.
//Have the class inherit from the one that grants proper resistance.
actor HardClassBase : ClassBase
{
player.startitem "HardHealthBar" //startitems actually aren't inherited btw
damagefactor "Normal", 0.4
damagefactor "Top", 0.2
}

actor HeavyClassBase : ClassBase
{
player.startitem "HeavyHealthBar"
damagefactor "Normal", 0.5
damagefactor "Top", 0.25
}

actor ToadClassBase : ClassBase
{
player.startitem "ToadHealthBar"
damagefactor "Normal", 0.65
damagefactor "Top", 0.325
}

actor SturdyClassBase : ClassBase
{
player.startitem "SturdyHealthBar"
damagefactor "Normal", 0.8
damagefactor "Top", 0.4
}

actor LightClassBase : ClassBase
{
player.startitem "LightHealthBar"
damagefactor "Normal", 1.2
}

actor GlassClassBase : ClassBase
{
player.startitem "GlassHealthBar"
damagefactor "Normal", 1.5
}