// a little precaution for database operation and acs syncs to work properly
Actor OrbUseDelay : PowerDamage {
	damagefactor "normal", 1.0
	powerup.duration 7
}

Actor OrbUseType : Inventory {
	inventory.maxamount 0x7FFFFFFF
}

Actor OrbResult : Inventory {
	inventory.maxamount 0x7FFFFFFF
}

Actor AffluenceCounter : Inventory {
	inventory.maxamount 4
}

Actor OrbSoundPlayer : DnD_Activator {
	States {
		Pickup:
			//TNT1 A 0 A_PlaySound("Items/OrbPick", 7)
			TNT1 A 0 A_SetBlend("45 99 45", 0.6, 17)
		Stop
	}
}

Actor OrbDrop : InventoryBase {
	Renderstyle Translucent
	Alpha 0.0
	States {		
		PickupSuccess:
			TNT1 A 8 A_JumpIf(!ACS_NamedExecuteWithResult("DnD Stacked Item Pickup", mass - 1, DND_STACKEDITEM_ORB), "SpawnLoop")
		stop
	}
}

Actor OrbOfEnhancement : OrbDrop {
	States {
		Spawn:
			ORB1 C 0 Bright
		Goto Super::SpawnInit
		
		// apparently the game wont put gllights on things that just have #### # as frame even if the frame is preloaded beforehand... no idea why
		SpawnLoop:
		Idle:
			ORB1 C 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
	}
}

Actor CorruptOrb_DamageReduction : PowerDamage {
	powerup.duration 0x7FFFFFFF
	damagefactor "normal", 1.0
}

Actor OrbofCorruption : OrbDrop {
	states {
		Spawn:
			ORB1 A 0
		Goto SpawnInit
		// gotta replace all otherwise won't work, couldn't get animations to be working cleaner
		SpawnInit:
			"####" "#" 0 ACS_NamedExecuteAlways("DnD Remove Check Special", 0, mass, DND_SPECIAL_CHARM)
			"####" "#" 1 Bright
			"####" "#" 23 Bright ACS_NamedExecuteAlways("DnD Item Linger Check")
			"####" "#" 1 Bright A_SetTranslucent(1.0)
		SpawnLoop:
		Idle:
			"####" "#" 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
			"####" "#" 0 A_SetTranslucent(0.75)
			"####" "#" 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
			"####" "#" 0 A_SetTranslucent(0.675)
			"####" "#" 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
			"####" "#" 0 A_SetTranslucent(0.6)
			"####" "#" 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
			"####" "#" 0 A_SetTranslucent(0.525)
			"####" "#" 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
			"####" "#" 0 A_SetTranslucent(0.45)
			"####" "#" 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
			"####" "#" 0 A_SetTranslucent(0.375)
			"####" "#" 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
			"####" "#" 0 A_SetTranslucent(0.45)
			"####" "#" 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
			"####" "#" 0 A_SetTranslucent(0.525)
			"####" "#" 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
			"####" "#" 0 A_SetTranslucent(0.6)
			"####" "#" 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
			"####" "#" 0 A_SetTranslucent(0.675)
			"####" "#" 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
			"####" "#" 0 A_SetTranslucent(0.75)
			"####" "#" 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
			"####" "#" 0 A_SetTranslucent(0.825)
		Loop
		
		PickupSuccess:
			TNT1 A 8 A_JumpIf(!ACS_NamedExecuteWithResult("DnD Stacked Item Pickup", mass - 1, DND_STACKEDITEM_ORB), "SpawnLoop")
		stop
	}
}

Actor PrismaticOrb : OrbDrop {
	states {
		Spawn:
			ORB1 E 0
		Goto SpawnInit
		SpawnInit:
			"####" "#" 0 ACS_NamedExecuteAlways("DnD Remove Check Special", 0, mass, DND_SPECIAL_CHARM)
			"####" "#" 1 Bright
			"####" "#" 24 Bright ACS_NamedExecuteAlways("DnD Item Linger Check")
		SpawnLoop:
		Idle:
			ORB1 FFFGGGHHHEEE 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
		
		PickupSuccess:
			TNT1 A 8 A_JumpIf(!ACS_NamedExecuteWithResult("DnD Stacked Item Pickup", mass - 1, DND_STACKEDITEM_ORB), "SpawnLoop")
		stop
	}
}

Actor OrbofRepentance : OrbDrop {
	states {
		Spawn:
			ORB1 T 0
		Goto SpawnInit
		SpawnInit:
			"####" "#" 0 ACS_NamedExecuteAlways("DnD Remove Check Special", 0, mass, DND_SPECIAL_CHARM)
			"####" "#" 1 Bright
			"####" "#" 24 Bright ACS_NamedExecuteAlways("DnD Item Linger Check")
		SpawnLoop:
		Idle:
			ORB1 UUUVVVWWWXXXTTT 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
		
		PickupSuccess:
			TNT1 A 8 A_JumpIf(!ACS_NamedExecuteWithResult("DnD Stacked Item Pickup", mass - 1, DND_STACKEDITEM_ORB), "SpawnLoop")
		stop
	}
}

Actor OrbofAffluence : OrbDrop {
	states {
		Spawn:
			ORB2 W 0
		Goto SpawnInit
		SpawnInit:
			"####" "#" 0 ACS_NamedExecuteAlways("DnD Remove Check Special", 0, mass, DND_SPECIAL_CHARM)
			"####" "#" 1 Bright
			"####" "#" 24 Bright ACS_NamedExecuteAlways("DnD Item Linger Check")
		SpawnLoop:
		Idle:
			ORB2 XXXYYYZZZYYYXXXWWW 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
		
		PickupSuccess:
			TNT1 A 8 A_JumpIf(!ACS_NamedExecuteWithResult("DnD Stacked Item Pickup", mass - 1, DND_STACKEDITEM_ORB), "SpawnLoop")
		stop
	}
}

Actor OrbofCalamity : OrbDrop {
	states {
		Spawn:
			ORB1 J 0
		Goto SpawnInit
		SpawnInit:
			"####" "#" 0 ACS_NamedExecuteAlways("DnD Remove Check Special", 0, mass, DND_SPECIAL_CHARM)
			"####" "#" 1 Bright
			"####" "#" 24 Bright ACS_NamedExecuteAlways("DnD Item Linger Check")
		SpawnLoop:
		Idle:
			ORB1 KKKLLLMMMJJJ 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
		
		PickupSuccess:
			TNT1 A 8 A_JumpIf(!ACS_NamedExecuteWithResult("DnD Stacked Item Pickup", mass - 1, DND_STACKEDITEM_ORB), "SpawnLoop")
		stop
	}
}

Actor OrbofProsperity : OrbDrop {
	states {
		Spawn:
			ORB1 O 0
		Goto SpawnInit
		SpawnInit:
			"####" "#" 0 ACS_NamedExecuteAlways("DnD Remove Check Special", 0, mass, DND_SPECIAL_CHARM)
			"####" "#" 1 Bright
			"####" "#" 24 Bright ACS_NamedExecuteAlways("DnD Item Linger Check")
		SpawnLoop:
		Idle:
			ORB1 PPPQQQRRROOO 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
		
		PickupSuccess:
			TNT1 A 8 A_JumpIf(!ACS_NamedExecuteWithResult("DnD Stacked Item Pickup", mass - 1, DND_STACKEDITEM_ORB), "SpawnLoop")
		stop
	}
}

Actor OrbofNullification : OrbDrop {
	states {
		Spawn:
			ORB2 F 0
		Goto SpawnInit
		SpawnInit:
			"####" "#" 0 ACS_NamedExecuteAlways("DnD Remove Check Special", 0, mass, DND_SPECIAL_CHARM)
			"####" "#" 1 Bright
			"####" "#" 24 Bright ACS_NamedExecuteAlways("DnD Item Linger Check")
		SpawnLoop:
		Idle:
			ORB2 GGGHHHIIIFFF 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
		
		PickupSuccess:
			TNT1 A 8 A_JumpIf(!ACS_NamedExecuteWithResult("DnD Stacked Item Pickup", mass - 1, DND_STACKEDITEM_ORB), "SpawnLoop")
		stop
	}
}

Actor OrbofDestruction : OrbDrop {
	states {
		Spawn:
			ORB3 B 0
		Goto SpawnInit
		SpawnInit:
			"####" "#" 0 ACS_NamedExecuteAlways("DnD Remove Check Special", 0, mass, DND_SPECIAL_CHARM)
			"####" "#" 1 Bright
			"####" "#" 24 Bright ACS_NamedExecuteAlways("DnD Item Linger Check")
		SpawnLoop:
		Idle:
			ORB3 CCCDDDCCCBBB 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
		
		PickupSuccess:
			TNT1 A 8 A_JumpIf(!ACS_NamedExecuteWithResult("DnD Stacked Item Pickup", mass - 1, DND_STACKEDITEM_ORB), "SpawnLoop")
		stop
	}
}

Actor OrbofViolence : OrbDrop {
	states {
		Spawn:
			ORB2 K 0
		Goto SpawnInit
		SpawnInit:
			"####" "#" 0 ACS_NamedExecuteAlways("DnD Remove Check Special", 0, mass, DND_SPECIAL_CHARM)
			"####" "#" 1 Bright
			"####" "#" 24 Bright ACS_NamedExecuteAlways("DnD Item Linger Check")
		SpawnLoop:
		Idle:
			ORB2 LLLMMMNNNKKK 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
		
		PickupSuccess:
			TNT1 A 8 A_JumpIf(!ACS_NamedExecuteWithResult("DnD Stacked Item Pickup", mass - 1, DND_STACKEDITEM_ORB), "SpawnLoop")
		stop
	}
}

Actor OrbofFortitude : OrbDrop {
	states {
		Spawn:
			ORB2 P 0
		Goto SpawnInit
		SpawnInit:
			"####" "#" 0 ACS_NamedExecuteAlways("DnD Remove Check Special", 0, mass, DND_SPECIAL_CHARM)
			"####" "#" 1 Bright
			"####" "#" 24 Bright ACS_NamedExecuteAlways("DnD Item Linger Check")
		SpawnLoop:
		Idle:
			ORB2 QQRRSSTTUUPP 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
		
		PickupSuccess:
			TNT1 A 8 A_JumpIf(!ACS_NamedExecuteWithResult("DnD Stacked Item Pickup", mass - 1, DND_STACKEDITEM_ORB), "SpawnLoop")
		stop
	}
}

Actor OrbofSin : OrbDrop {
	states {
		Spawn:
			ORB2 A 0
		Goto SpawnInit
		SpawnInit:
			"####" "#" 0 ACS_NamedExecuteAlways("DnD Remove Check Special", 0, mass, DND_SPECIAL_CHARM)
			"####" "#" 1 Bright
			"####" "#" 24 Bright ACS_NamedExecuteAlways("DnD Item Linger Check")
		SpawnLoop:
		Idle:
			ORB2 BBBCCCDDDAAA 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
		
		PickupSuccess:
			TNT1 A 8 A_JumpIf(!ACS_NamedExecuteWithResult("DnD Stacked Item Pickup", mass - 1, DND_STACKEDITEM_ORB), "SpawnLoop")
		stop
	}
}

Actor OrbofTremors : OrbDrop {
	states {
		Spawn:
			ORB3 F 0
		Goto SpawnInit
		SpawnLoop:
		Idle:
			ORB3 F 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
	}
}

Actor OrbofTinkerer : OrbDrop {
	states {
		Spawn:
			ORB3 H 0
		Goto SpawnInit
		SpawnLoop:
		Idle:
			ORB3 H 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
	}
}

Actor OrbofRefinement : OrbDrop {
	states {
		Spawn:
			ORB3 J 0
		Goto SpawnInit
		SpawnLoop:
		Idle:
			ORB3 J 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
	}
}

Actor OrbofSculpting : OrbDrop {
	states {
		Spawn:
			ORB3 L 0
		Goto SpawnInit
		SpawnLoop:
		Idle:
			ORB3 L 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
	}
}

Actor OrbofElevation : OrbDrop {
	states {
		Spawn:
			ORB3 N 0
		Goto SpawnInit
		SpawnLoop:
		Idle:
			ORB3 N 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
	}
}

Actor OrbofHollow : OrbDrop {
	states {
		Spawn:
			ORB3 P 0
		Goto SpawnInit
		SpawnLoop:
		Idle:
			ORB3 P 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
	}
}

Actor OrbofPhantasmal : OrbDrop {
	States {
		Spawn:
			ORB3 T 0
		Goto SpawnInit
		SpawnInit:
			"####" "#" 0 ACS_NamedExecuteAlways("DnD Remove Check Special", 0, mass, DND_SPECIAL_CHARM)
			"####" "#" 1 Bright
			"####" "#" 24 Bright ACS_NamedExecuteAlways("DnD Item Linger Check")
		SpawnLoop:
		Idle:
			ORB3 TTTTTTTTTTTTTTTTTTTTTTTTT 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
			ORB3 UU 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
			ORB3 VV 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
			ORB3 WW 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
			ORB3 XX 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
			ORB3 YYYYYYYYY 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
			ORB3 XX 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
			ORB3 WW 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
			ORB3 VV 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
			ORB3 UU 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
		
		PickupSuccess:
			TNT1 A 8 A_JumpIf(!ACS_NamedExecuteWithResult("DnD Stacked Item Pickup", mass - 1, DND_STACKEDITEM_ORB), "SpawnLoop")
		stop
	}
}

Actor OrbofAssimilation : OrbDrop {
	states {
		Spawn:
			ORB3 R 0
		Goto SpawnInit
		SpawnLoop:
		Idle:
			ORB3 R 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
	}
}

Actor OrbOfTurmoil : OrbDrop {
	States {
		Spawn:
			ORB4 A 0 Bright
		Goto Super::SpawnInit
		SpawnLoop:
		Idle:
			ORB4 A 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
	}
}

Actor OrbofHexes : OrbDrop {
	states {
		Spawn:
			ORB4 E 0
		Goto SpawnInit
		SpawnInit:
			"####" "#" 0 ACS_NamedExecuteAlways("DnD Remove Check Special", 0, mass, DND_SPECIAL_CHARM)
			"####" "#" 1 Bright
			"####" "#" 24 Bright ACS_NamedExecuteAlways("DnD Item Linger Check")
		SpawnLoop:
		Idle:
			ORB4 EEEFFFGGGHHH 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
		
		PickupSuccess:
			TNT1 A 8 A_JumpIf(!ACS_NamedExecuteWithResult("DnD Stacked Item Pickup", mass - 1, DND_STACKEDITEM_ORB), "SpawnLoop")
		stop
	}
}

Actor OrbOfGrowth : OrbDrop {
	States {
		Spawn:
			ORB4 C 0 Bright
		Goto Super::SpawnInit
		SpawnLoop:
		Idle:
			ORB4 C 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
	}
}

Actor OrbOfPotency : OrbDrop {
	States {
		Spawn:
			ORB4 J 0
		Goto SpawnInit
		SpawnInit:
			"####" "#" 0 ACS_NamedExecuteAlways("DnD Remove Check Special", 0, mass, DND_SPECIAL_CHARM)
			"####" "#" 1 Bright
			"####" "#" 24 Bright ACS_NamedExecuteAlways("DnD Item Linger Check")
		SpawnLoop:
		Idle:
			ORB4 JJJKKKLLLMMMNNNOOOPPPQQQPPPOOONNNMMMLLLKKKJJJ 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
		
		PickupSuccess:
			TNT1 A 8 A_JumpIf(!ACS_NamedExecuteWithResult("DnD Stacked Item Pickup", mass - 1, DND_STACKEDITEM_ORB), "SpawnLoop")
		stop
	}
}

Actor OrbofCrackling : OrbDrop {
	States {
		Spawn:
			ORB4 S 0
		Goto SpawnInit
		SpawnInit:
			"####" "#" 0 ACS_NamedExecuteAlways("DnD Remove Check Special", 0, mass, DND_SPECIAL_CHARM)
			"####" "#" 1 Bright
			"####" "#" 24 Bright ACS_NamedExecuteAlways("DnD Item Linger Check")
		SpawnLoop:
		Idle:
			ORB4 SSSTTTUUUVVVWWWXXXYYYZZZVVVWWWXXX 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
		
		PickupSuccess:
			TNT1 A 8 A_JumpIf(!ACS_NamedExecuteWithResult("DnD Stacked Item Pickup", mass - 1, DND_STACKEDITEM_ORB), "SpawnLoop")
		stop
	}
}

Actor OrbOfBrute : OrbDrop {
	States {
		Spawn:
			ORB5 B 0 Bright
		Goto Super::SpawnInit
		SpawnLoop:
		Idle:
			ORB5 B 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
	}
}

Actor OrbOfJagged : OrbDrop {
	States {
		Spawn:
			ORB5 D 0 Bright
		Goto Super::SpawnInit
		SpawnLoop:
		Idle:
			ORB5 D 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
	}
}

Actor OrbOfAlchemist : OrbDrop {
	States {
		Spawn:
			ORB5 F 0 Bright
		Goto Super::SpawnInit
		SpawnLoop:
		Idle:
			ORB5 F 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
	}
}

Actor OrbOfEvoker : OrbDrop {
	States {
		Spawn:
			ORB5 H 0 Bright
		Goto Super::SpawnInit
		SpawnLoop:
		Idle:
			ORB5 HHHIIIJJJKKK 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
	}
}

Actor OrbOfSavagery : OrbDrop {
	States {
		Spawn:
			ORB5 M 0 Bright
		Goto Super::SpawnInit
		SpawnLoop:
		Idle:
			ORB5 M 1 Bright A_LookEx(LOF_NOSOUNDCHECK, 0, item_look_dist, 0, 360, "CheckPickup")
		Loop
	}
}