Actor Doomguy_Perk5 : DnD_Boolean { }

Actor Doomguy_Perk25 : DnD_Boolean { }

Actor Doomguy_Perk25_Damage : PowerDamage {
	damagefactor "normal", 1.0
	Powerup.Color "DF 11 11", 0.2
	powerup.duration -5
}

Actor Doomguy_Perk50 : DnD_Boolean { }

Actor Doomguy_DemonSoul : DnD_DroppedItem {
	Radius 16
	Height 24
	Scale 0.75
	+FLOATBOB
	
	States {
		Spawn:
		SpawnLoop:
			DG50 AAAABBBBCCCCDDDDCCCCBBBB 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, 28, 0, 360, "CheckPickup")
		Loop
		
		See:
		CheckPickup:
			"####" "#" 0 A_JumpIfInventory("TaltosUp", 1, "SpawnLoop")
			"####" "#" 1 A_JumpIfCloser(32, "Pickup")
		goto SpawnLoop

		Pickup:
			TNT1 A 0 A_GiveToTarget("Doomguy_DemonSoul_PickMsg", 1)
			TNT1 A 0 A_GiveToTarget("Doomguy_Perk25_Damage", 1)
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Doomguy Soul Pickup", 0, mass)
			TNT1 A 3
		stop
	}
}

Actor Doomguy_DemonSoul_PickMsg : CustomInventory {
	States {
		Pickup:
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Message Logger", 0, 4)
			TNT1 A 0 A_PlaySound("Items/DoomguySoulPick", 6)
			TNT1 A 0 A_SetBlend("60 12 12", 0.6, 17)
		Stop
	}
}

Actor Doomguy_ResistReduced : PowerDamage {
	damagefactor "normal", 1.0
	powerup.duration -5
}

Actor Marine_Perk5 : DnD_Boolean { }

Actor Marine_Perk25 : DnD_Boolean { }

Actor Marine_Perk50 : DnD_Boolean { }

Actor Marine_DamageReduction_Timer : DnD_Info {
	inventory.maxamount 525
}

Actor Marine_Perk50_Cooldown : DnD_Info {
	inventory.maxamount 6300
}

Actor Marine_Perk50_DamageDealt : DnD_Info { }
Actor Marine_Perk50_DamageTaken : DnD_Info { }

Actor Hobo_Perk5 : DnD_Boolean { }

Actor Hobo_Perk25 : DnD_Boolean { }

Actor Hobo_Perk50 : DnD_Boolean { }

Actor Hobo_ShotgunTag : Inventory {
	inventory.maxamount 4
}

Actor Hobo_ShotgunTag_Window : PowerProtection {
	damagefactor "normal", 1.0
	powerup.duration -10
}

Actor Hobo_ShotgunFrenzyTimer : DnD_Info {
	inventory.maxamount 700 // default setup is 350 = 10 secs
}

Actor Punisher_Perk5 : DnD_Boolean { }

Actor Punisher_Perk5_MoveSpeed : PowerSpeed {
	powerup.duration 0x7FFFFFFF
	Speed 1.1
}

Actor Punisher_Perk25 : DnD_Boolean { }

Actor Punisher_Perk50 : DnD_Boolean { }

Actor Punisher_Perk50_Counter : Inventory {
	inventory.maxamount 1000
}

Actor Wanderer_Perk5 : DnD_Boolean { }

Actor Wanderer_Perk25 : DnD_Boolean { }

Actor Wanderer_Perk50 : DnD_Boolean { }

Actor Wanderer_Explosion : DnD_ExplosiveBase {
	Renderstyle "Add"
	Height 1
	Radius 1
	Speed 0
	+THRUACTORS
	
	var int user_dmg;
	var int user_damagetype;
	
	States {
		SpawnState:
			TNT1 A 0
		Death:
			TNT1 A 1 A_PlaySound("WandererExplosion")
			TNT1 A 0 A_Jump(256, "Fire", "Poison", "Lightning", "Ice")
		Fire:
			FXPO A 0 A_SetUserVar("user_damagetype", DND_DAMAGETYPE_FIRE)
		Goto DoDmg
		Poison:
			FXPG A 0 A_SetUserVar("user_damagetype", DND_DAMAGETYPE_POISON)
		Goto DoDmg
		Lightning:
			FXPY A 0 A_SetUserVar("user_damagetype", DND_DAMAGETYPE_LIGHTNING)
		Goto DoDmg
		Ice:
			FXPB A 0 A_SetUserVar("user_damagetype", DND_DAMAGETYPE_ICE)
		Goto DoDmg
		DoDmg:
			"####" A 0 A_SetUserVar("user_expflags", DND_DAMAGEFLAG_ISSPELL)
			"####" A 0 A_SetUserVar("user_expdmg", ACS_NamedExecuteWithResult("DnD Scale Non Weapon Damage", user_dmg, user_damagetype, user_expflags))
			"####" A 0 A_SetUserVar("user_expradius", 128)
			"####" A 0 A_SetUserVar("user_fullexpradius", user_expradius)
		Goto DoExplosionDamage
		ContinueFromExplosion:
			"####" A 0 A_ChangeVelocity(frandom(-0.5, 0.5), frandom(-0.5, 0.5), frandom(0.33, 0.75), CVF_REPLACE)
			"####" AB 2 Bright
			"####" C 2 Bright
			"####" DEFGHIJKLM 2 Bright
		Stop
	}
}

Actor DnD_AilmentToken : DnD_Info {
	inventory.maxamount 64
}

Actor Cyborg_Perk5 : DnD_Boolean { }
Actor Cyborg_Perk25 : DnD_Boolean { }
Actor Cyborg_Perk50 : DnD_Boolean { }

Actor Cyborg_NoAnim : DnD_Boolean { }

Actor Cyborg_InstabilityStack : Inventory {
	inventory.maxamount 10
}

Actor Cyborg_Instability_Timer : Inventory {
	inventory.maxamount 165
}

Actor Cyborg_Instability_CD : PowerProtection {
	damagefactor "normal", 1.0
	powerup.duration 5
}

Actor InstabilityBlast : DnD_BaseProjectile {
	Radius 6
	Height 12
	Speed 60
	Scale 0.75
	RenderStyle Add
	Alpha 1.0
	Decal "InstabilityDecal"
	DeathSound "Instability/Hit"
	+FOILINVUL
	+RANDOMIZE
	+DONTREFLECT
	States {
		SpawnState:
			TNT1 A 0 A_PlaySound("Instability/See", CHAN_5)
		SpawnStateLoop:
			CYP0 ABCDEFGHIJ 1 Bright
		Loop
		XDeath: 
			TNT1 A 0 ACS_NamedExecuteWithResult(
				"DnD Do Impact Damage",
				ACS_NamedExecuteWithResult("DND Player Damage Scale", random(4, 64), DND_DAMAGECATEGORY_ENERGY, DND_USETARGET | DMG_ESHIELDSCALE),
				DND_DAMAGETYPE_ENERGY,
				DND_DAMAGEFLAG_DOFULLDAMAGE,
				-1
			)
		Death:
			TNT1 A 0 A_SpawnItemEx ("PlasmaFlare", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			CYP0 KLMNOPQRSTUVW 1 Bright
		Stop
	}
}

Actor Berserker_Perk5 : DnD_Boolean { }

Actor Berserker_Perk25 : DnD_Boolean { }
Actor Berserker_DamageTracker : DnD_Info { }
Actor Berserker_DamageTimer : Inventory {
	inventory.maxamount 122 // 17.5 x 7
}
Actor Berserker_Perk25_CD : PowerDamage {
	damagefactor "normal", 1.0
	powerup.duration 10
}

Actor Berserker_Perk50 : DnD_Boolean { }
Actor Berserker_HitTracker : DnD_Info { }
Actor Berserker_Perk50_HitCounter : DnD_Info { }
Actor Berserker_Perk50_HitCooldown : PowerProtection {
	damagefactor "normal", 1.0
	powerup.duration 5
}
Actor Berserker_HitTimer : Inventory {
	inventory.maxamount 70
}

Actor Berserker_Perk50_Speed : PowerSpeed {
	powerup.duration 0x7FFFFFFF
	Speed 1.3
}

Actor Berserker_NoRoar : DnD_Boolean { }

Actor Berserker_ThunderSpark : WhiteMagicSpark {
	Scale 0.125
}

Actor Berserker_ThunderFX {
	+NOINTERACTION
	+CLIENTSIDEONLY
	translation "80:111=192:207"
	Renderstyle Add
	Alpha 0.2
	Scale 1.25
	states {
		Spawn:
			TNT1 A 0 NoDelay A_PlaySound("Berserker/Thunder")
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("Berserker_ThunderSpark", 0, 0, 0, random(1,10), 0, random(1,10), random(0,359), 129)
			THND AAAA 1 Bright A_FadeIn(0.2)
			THND AAAA 2 Bright A_FadeOut(0.2)
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1  Bright A_SpawnItemEx("RocketSmoke", 0, 0, 0, random(0,3), 0, random(2,3), random(0,359), 128)
		Stop
	}     	
}

Actor Berserker_ThunderFX_Spawner : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_SpawnItemEx("Berserker_ThunderFX")
		Stop
	}
}