

Class PlayerBloodChanger : EventHandler {
    override void PlayerEntered(PlayerEvent e) {
    }
}

class WeaponOverrideHandler : EventHandler
{
override void WorldTick() {		
	for (int pn = 0; pn < MAXPLAYERS; pn++) {
		if (!playerInGame[pn])
			continue;

		PlayerInfo player	= players[pn];
		PlayerPawn mo		= player.mo;
		
		let oldweap = player.pendingWeapon.GetClassName(); //get the weapon that is being selected
		let oldweapr = player.readyweapon.GetClassName(); //get the currently selected weapons
		
		switch (oldweap) { //if game attempts to SELECT a vanilla weapon, take it away and select a modded weapon (and give it, if it's missing)
			case 'Fist' 			: player.pendingWeapon = GetWeapon(mo, "Cute"); 			mo.TakeInventory(oldweap,1); break;
			case 'Chainsaw' 		: player.pendingWeapon = GetWeapon(mo, "Cute"); 		mo.TakeInventory(oldweap,1); break;
			case 'Pistol' 			: player.pendingWeapon = GetWeapon(mo, "Cute"); 		mo.TakeInventory(oldweap,1); break;
			case 'Shotgun'			: player.pendingWeapon = GetWeapon(mo, "Cute"); 		mo.TakeInventory(oldweap,1); break;
			case 'SuperShotgun' 	: player.pendingWeapon = GetWeapon(mo, "Cute"); 	mo.TakeInventory(oldweap,1); break;
			case 'Chaingun' 		: player.pendingWeapon = GetWeapon(mo, "Cute"); 		mo.TakeInventory(oldweap,1); break;
			case 'RocketLauncher' 	: player.pendingWeapon = GetWeapon(mo, "Cute");mo.TakeInventory(oldweap,1); break;
			case 'PlasmaRifle' 		: player.pendingWeapon = GetWeapon(mo, "Cute"); 	mo.TakeInventory(oldweap,1); break;
			case 'BFG9000' 			: player.pendingWeapon = GetWeapon(mo, "Cute"); 		mo.TakeInventory(oldweap,1); break;
			}
		switch (oldweapr) { //if a vanilla weapon is READY (such as Pistol at vanilla map start), we also take it away and select the modded counterpart
			case 'Fist' 			: player.pendingWeapon = GetWeapon(mo, "Cute"); 		mo.TakeInventory(oldweapr,1); break;
			case 'Chainsaw' 		: player.pendingWeapon = GetWeapon(mo, "Cute"); 		mo.TakeInventory(oldweapr,1); break;
			case 'Pistol' 			: player.pendingWeapon = GetWeapon(mo, "Cute"); 		mo.TakeInventory(oldweapr,1); break;
			case 'Shotgun'			: player.pendingWeapon = GetWeapon(mo, "Cute"); 		mo.TakeInventory(oldweapr,1); break;
			case 'SuperShotgun' 	: player.pendingWeapon = GetWeapon(mo, "Cute"); 	    mo.TakeInventory(oldweapr,1); break;
			case 'Chaingun' 		: player.pendingWeapon = GetWeapon(mo, "Cute"); 		mo.TakeInventory(oldweapr,1); break;
			case 'RocketLauncher' 	: player.pendingWeapon = GetWeapon(mo, "Cute");         mo.TakeInventory(oldweapr,1); break;
			case 'PlasmaRifle' 		: player.pendingWeapon = GetWeapon(mo, "Cute"); 	    mo.TakeInventory(oldweapr,1); break;
			case 'BFG9000' 			: player.pendingWeapon = GetWeapon(mo, "Cute"); 		mo.TakeInventory(oldweapr,1); break;
			}
		}
	
	}
private Weapon GetWeapon(PlayerPawn mo, Class<Weapon> type)
	{
		let weap = Weapon(mo.FindInventory(type));
		return weap ? weap : Weapon(mo.GiveInventoryType(type));
	}
}