const MAXAMMO_SCOUT_PRIMARY = 8 const MAXAMMO_SCOUT_SECONDARY = 36 const MAXAMMO_SOLDIER_PRIMARY = 6 const MAXAMMO_SOLDIER_SECONDARY = 32 const MAXAMMO_PYRO_PRIMARY = 75 const MAXAMMO_PYRO_DRAGONS_FURY = 8 const MAXAMMO_PYRO_SECONDARY = 32 const MAXAMMO_DEMO_PRIMARY = 8 const MAXAMMO_DEMO_SECONDARY = 8 const MAXAMMO_HEAVY_PRIMARY = 50 const MAXAMMO_HEAVY_SECONDARY = 32 const MAXAMMO_ENGI_PRIMARY = 32 const MAXAMMO_ENGI_SECONDARY = 200 const MAXAMMO_MEDIC_PRIMARY = 150 const MAXAMMO_MEDIC_CROSSBOW = 38 const MAXAMMO_SNIPER_PRIMARY = 12 const MAXAMMO_SNIPER_SECONDARY = 75 const MAXAMMO_SPY_PRIMARY = 24 ::GetPlayerWeaponInfo <- function(player) { local scope = player.GetScriptScope(); local info = [scope.sequencearray, scope.maxammo] if (player.GetPlayerClass() != TF_CLASS_ENGINEER) return info; info.append(scope.maxmetal); info.append(scope.curmetal); return info; } //set the sequences and max ammo values for the player's current loadout to deal with reloading ::SetPlayerWeaponInfo <- function(player, sequence = [0], ammo = [999, 999], metal = 200) { foreach (i, a in ammo) if (a == 0) ammo[i] = 1 local scope = player.GetScriptScope(); // if (IsSigmod()) sequence.clear(); //use rafmod ammo draining instead scope.sequencearray <- sequence; scope.maxammo <- ammo; if (player.GetPlayerClass() != TF_CLASS_ENGINEER) return; scope.maxmetal <- metal; scope.curmetal <- GetPropIntArray(player, "m_iAmmo", 3); } //huge switch case for rolling weapons ::AwardWeapons <- function(player, classindex) { //kill old unowned weapons local scope = player.GetScriptScope(); // scope.DrainAmmo <- DrainAmmo; scope.lastattack <- 0; scope.dfdrained <- false; local randomguns = RandomInt(1, 5); local sevenguns = RandomInt(1, 7); StripEverythingExcept(player, SLOT_MELEE, false); //cosmetic weapons don't get stripped by this local itemids = [ID_DARWINS_DANGER_SHIELD, ID_COZY_CAMPER, ID_ALI_BABAS_WEE_BOOTIES, ID_BOOTLEGGER, ID_BASE_JUMPER] for (local child = player.FirstMoveChild(); child != null; child = child.NextMovePeer()) { if (itemids.find(GetItemIndex(child)) != null) EntFireByHandle(child, "Kill", "", -1, null, null); } switch(classindex) { case TF_CLASS_SCOUT: //SCOUT switch(randomguns) { case 1: //MILK/SCATTER GiveWeapon(player, "tf_weapon_jar_milk", ID_MAD_MILK); GiveWeapon(player, "tf_weapon_scattergun", ID_RUST_BOTKILLER_SCATTERGUN_MKI); SetPlayerWeaponInfo(player, [29], [MAXAMMO_SCOUT_PRIMARY * 1.5, -1]); break; case 2: //BFB POCKET PISTOL GiveWeapon(player, "tf_weapon_handgun_scout_secondary", ID_PRETTY_BOYS_POCKET_PISTOL); GiveWeapon(player, "tf_weapon_scattergun", ID_BABY_FACES_BLASTER); SetPlayerWeaponInfo(player, [20, 29] , [MAXAMMO_SCOUT_PRIMARY, MAXAMMO_SCOUT_SECONDARY]); break; case 3: //PISTOL/FAN GiveWeapon(player, "tf_weapon_pistol", ID_PISTOL_SCOUT); GiveWeapon(player, "tf_weapon_scattergun", ID_FORCE_A_NATURE); // SetPlayerWeaponInfo(player, [19, 36], [MAXAMMO_SCOUT_PRIMARY, MAXAMMO_SCOUT_SECONDARY]); SetPlayerWeaponInfo(player, [20, 37], [MAXAMMO_SCOUT_PRIMARY, MAXAMMO_SCOUT_SECONDARY]); break; case 4: //GUILLOTINE/SHORTSTOP GiveWeapon(player, "tf_weapon_cleaver", ID_FLYING_GUILLOTINE); GiveWeapon(player, "tf_weapon_handgun_scout_primary", ID_SHORTSTOP); SetPlayerWeaponInfo(player, [24], [MAXAMMO_SCOUT_PRIMARY * 1.5, -1]); break; case 5: //WINGER/BACKSCATTER GiveWeapon(player, "tf_weapon_handgun_scout_secondary", ID_WINGER); GiveWeapon(player, "tf_weapon_scattergun", ID_BACK_SCATTER); // SetPlayerWeaponInfo(player, [19, 27] , [MAXAMMO_SCOUT_PRIMARY, MAXAMMO_SCOUT_SECONDARY]); SetPlayerWeaponInfo(player, [20, 29] , [MAXAMMO_SCOUT_PRIMARY, MAXAMMO_SCOUT_SECONDARY]); break; } break; case TF_CLASS_SNIPER: //SNIPER switch(randomguns) { case 1: //STOCK SNIPER GiveWeapon(player, "tf_weapon_smg", ID_SMG); GiveWeapon(player, "tf_weapon_sniperrifle", ID_SNIPERRIFLE); SetPlayerWeaponInfo(player, [29, 5], [MAXAMMO_SNIPER_PRIMARY, MAXAMMO_SNIPER_SECONDARY]); break; case 2: //HEATMAKER/COZY CAMPER GiveWeapon(player, "tf_wearable", ID_COZY_CAMPER, "models/workshop/player/items/sniper/xms_sniper_commandobackpack/xms_sniper_commandobackpack.mdl"); GiveWeapon(player, "tf_weapon_sniperrifle", ID_HITMANS_HEATMAKER); SetPlayerWeaponInfo(player, [29], [MAXAMMO_SNIPER_PRIMARY * 1.5, -1]); break; case 3: //JARATE/SYDNEY GiveWeapon(player, "tf_weapon_jar", ID_JARATE); GiveWeapon(player, "tf_weapon_sniperrifle", ID_SYDNEY_SLEEPER); SetPlayerWeaponInfo(player, [29], [MAXAMMO_SNIPER_PRIMARY * 1.5, -1]); break; case 4: //BOW/CARBINE GiveWeapon(player, "tf_weapon_charged_smg", ID_CLEANERS_CARBINE); GiveWeapon(player, "tf_weapon_compound_bow", ID_FORTIFIED_COMPOUND); SetPlayerWeaponInfo(player, [23, 5], [MAXAMMO_SNIPER_PRIMARY, MAXAMMO_SNIPER_SECONDARY]); break; case 5: //MACHINA/DARWINS GiveWeapon(player, "tf_weapon_sniperrifle", ID_MACHINA); GiveWeapon(player, "tf_wearable", ID_DARWINS_DANGER_SHIELD, "models/workshop/player/items/sniper/croc_shield/croc_shield.mdl"); SetPlayerWeaponInfo(player, [29], [MAXAMMO_SNIPER_PRIMARY * 1.5, -1]); break; } break; case TF_CLASS_SOLDIER: //SOLDIER local SOLDIER_SEQUENCE_BOTH = [6, 32] // switch(randomguns) switch(RandomInt(1, 5)) { case 1: //STOCK SOLDIER GiveWeapon(player, "tf_weapon_shotgun_soldier", ID_SHOTGUN_SOLDIER); GiveWeapon(player, "tf_weapon_rocketlauncher", ID_RUST_BOTKILLER_ROCKET_LAUNCHER_MKI); SetPlayerWeaponInfo(player, SOLDIER_SEQUENCE_BOTH, [MAXAMMO_SOLDIER_PRIMARY, MAXAMMO_SOLDIER_SECONDARY]); break; case 2: //DH/BISON GiveWeapon(player, "tf_weapon_raygun", ID_RIGHTEOUS_BISON); GiveWeapon(player, "tf_weapon_rocketlauncher_directhit", ID_DIRECT_HIT); SetPlayerWeaponInfo(player, [6], [MAXAMMO_SOLDIER_PRIMARY, -1]); break; case 3: //RS/LL GiveWeapon(player, "tf_weapon_shotgun_soldier", ID_RESERVE_SHOOTER); GiveWeapon(player, "tf_weapon_rocketlauncher", ID_LIBERTY_LAUNCHER); SetPlayerWeaponInfo(player, SOLDIER_SEQUENCE_BOTH, [MAXAMMO_SOLDIER_PRIMARY, MAXAMMO_SOLDIER_SECONDARY]); break; case 4: //BBOX/FB GiveWeapon(player, "tf_weapon_shotgun_soldier", ID_FAMILY_BUSINESS); GiveWeapon(player, "tf_weapon_rocketlauncher", ID_BLACK_BOX); SetPlayerWeaponInfo(player, [9, 32], [MAXAMMO_SOLDIER_PRIMARY, MAXAMMO_SOLDIER_SECONDARY]); break; case 5: //BEGGARS/PANIC GiveWeapon(player, "tf_weapon_shotgun_soldier", ID_PANIC_ATTACK_SHOTGUN); GiveWeapon(player, "tf_weapon_rocketlauncher", ID_BEGGARS_BAZOOKA); // SetPlayerWeaponInfo(player, [3, 32], [MAXAMMO_SOLDIER_PRIMARY * 1.5, MAXAMMO_SOLDIER_SECONDARY]); SetPlayerWeaponInfo(player, SOLDIER_SEQUENCE_BOTH, [MAXAMMO_SOLDIER_PRIMARY * 1.25, MAXAMMO_SOLDIER_SECONDARY]); break; // case 6: // GiveWeapon(player, "tf_weapon_shotgun_soldier", ID_FAMILY_BUSINESS); // GiveWeapon(player, "tf_weapon_rocketlauncher", ID_ROCKET_JUMPER); // SetPlayerWeaponInfo(player, SOLDIER_SEQUENCE_BOTH, [MAXAMMO_SOLDIER_PRIMARY * 3, MAXAMMO_SOLDIER_SECONDARY]); // break; } break; case TF_CLASS_DEMOMAN: //DEMO // local demoguns = RandomInt(1 , 9) switch(randomguns) { // case 1: //IB/TIDE/CLAID // GiveWeapon(player, "tf_weapon_grenadelauncher", ID_IRON_BOMBER); // GiveWeapon(player, "tf_wearable_demoshield", ID_TIDE_TURNER, "models/workshop/weapons/c_models/c_wheel_shield/c_wheel_shield.mdl"); // GiveWeapon(player, "tf_weapon_sword" , ID_CLAIDHEAMH_MOR); // SetPlayerWeaponInfo(player, [29]); // break; case 1: //IB/QUICKIE GiveWeapon(player, "tf_weapon_grenadelauncher", ID_IRON_BOMBER); GiveWeapon(player, "tf_weapon_pipebomblauncher", ID_QUICKIEBOMB_LAUNCHER); SetPlayerWeaponInfo(player, [29, 22], [MAXAMMO_DEMO_PRIMARY * 0.5, MAXAMMO_DEMO_SECONDARY * 0.5]); break; // case 2: //LC/TIDE/PERSIAN // GiveWeapon(player, "tf_weapon_cannon", ID_LOOSE_CANNON); // GiveWeapon(player, "tf_wearable_demoshield", ID_TIDE_TURNER, "models/workshop/weapons/c_models/c_wheel_shield/c_wheel_shield.mdl"); // GiveWeapon(player, "tf_weapon_sword", ID_PERSIAN_PERSUADER); // SetPlayerWeaponInfo(player, [29]); // break; // case 3: //BOOTIES/TARGE/EYELANDER // GiveWeapon(player, "tf_wearable", ID_ALI_BABAS_WEE_BOOTIES, "models/workshop/player/items/demo/demo_booties/demo_booties.mdl"); // GiveWeapon(player, "tf_wearable_demoshield", ID_CHARGIN_TARGE, "models/weapons/c_models/c_targe/c_targe.mdl"); // GiveWeapon(player, "tf_weapon_sword", ID_EYELANDER); // break; // case 4: //BOOTLEGGER/SKULL/TIDE // GiveWeapon(player, "tf_wearable", ID_BOOTLEGGER, "models/workshop/player/items/demo/pegleg/pegleg.mdl"); // GiveWeapon(player, "tf_wearable_demoshield", ID_TIDE_TURNER, "models/workshop/weapons/c_models/c_wheel_shield/c_wheel_shield.mdl"); // GiveWeapon(player, "tf_weapon_sword", ID_SCOTSMANS_SKULLCUTTER); // break; // case 5: //BOOTLEGGER/ZAT/SCREEN // GiveWeapon(player, "tf_wearable", ID_BOOTLEGGER, "models/workshop/player/items/demo/pegleg/pegleg.mdl"); // GiveWeapon(player, "tf_wearable_demoshield", ID_SPLENDID_SCREEN, "models/workshop/weapons/c_models/c_persian_shield/c_persian_shield.mdl"); // GiveWeapon(player, "tf_weapon_sword", ID_HALF_ZATOICHI); // break; case 2: //STICKIES/BOOTIES GiveWeapon(player, "tf_wearable", ID_ALI_BABAS_WEE_BOOTIES, "models/workshop/player/items/demo/demo_booties/demo_booties.mdl"); GiveWeapon(player, "tf_weapon_pipebomblauncher", ID_RUST_BOTKILLER_STICKYBOMB_LAUNCHER_MKI); player.SetMaxHealth(200); SetPlayerWeaponInfo(player, [22], [-1, MAXAMMO_DEMO_SECONDARY]); break; // case 7: //STOCK/SCREEN // GiveWeapon(player, "tf_wearable_demoshield", ID_SPLENDID_SCREEN, "models/workshop/weapons/c_models/c_persian_shield/c_persian_shield.mdl"); // GiveWeapon(player, "tf_weapon_grenadelauncher", ID_GRENADE_LAUNCHER); // SetPlayerWeaponInfo(player, [29]); // break; case 3: //QUICKIE/LOCH GiveWeapon(player, "tf_weapon_grenadelauncher", ID_LOCH_N_LOAD); GiveWeapon(player, "tf_weapon_pipebomblauncher", ID_QUICKIEBOMB_LAUNCHER); SetPlayerWeaponInfo(player, [37, 22], [MAXAMMO_DEMO_PRIMARY * 0.5, MAXAMMO_DEMO_SECONDARY * 0.5]); break; case 4: //SCOTRES/PARACHUTE GiveWeapon(player, "tf_weapon_parachute", ID_BASE_JUMPER, "models/workshop/weapons/c_models/c_paratooper_pack/c_paratrooper_pack.mdl"); GiveWeapon(player, "tf_weapon_pipebomblauncher", ID_SCOTTISH_RESISTANCE); SetPlayerWeaponInfo(player, [22], [-1, MAXAMMO_DEMO_SECONDARY * 1.5]); break; case 5: //LC GiveWeapon(player, "tf_weapon_cannon", ID_LOOSE_CANNON); GiveWeapon(player, "tf_weapon_pipebomblauncher", ID_STICKYBOMB_JUMPER); SetPlayerWeaponInfo(player, [29, 22], [MAXAMMO_DEMO_PRIMARY, MAXAMMO_DEMO_SECONDARY * 3]); break; } break; case TF_CLASS_MEDIC: //MEDIC local MEDIC_SEQUENCE_PRIMARY = [10, -1] switch(sevenguns) { case 1: //STOCK SYRINGE GiveWeapon(player, "tf_weapon_syringegun_medic", ID_SYRINGE_GUN); SetPlayerWeaponInfo(player, MEDIC_SEQUENCE_PRIMARY, [MAXAMMO_MEDIC_PRIMARY]); break; case 2: //BLUT GiveWeapon(player, "tf_weapon_syringegun_medic", ID_BLUTSAUGER); SetPlayerWeaponInfo(player, MEDIC_SEQUENCE_PRIMARY, [MAXAMMO_MEDIC_PRIMARY]); break; case 3: //OD GiveWeapon(player, "tf_weapon_syringegun_medic", ID_OVERDOSE); SetPlayerWeaponInfo(player, MEDIC_SEQUENCE_PRIMARY, [MAXAMMO_MEDIC_PRIMARY]); break; case 4: //XBOW/STOCK GiveWeapon(player, "tf_weapon_crossbow", ID_CRUSADERS_CROSSBOW); GiveWeapon(player, "tf_weapon_medigun", ID_RUST_BOTKILLER_MEDI_GUN_MKI); SetPlayerWeaponInfo(player, MEDIC_SEQUENCE_PRIMARY, [MAXAMMO_MEDIC_CROSSBOW]); break; case 5: //XBOW/KRITZ GiveWeapon(player, "tf_weapon_crossbow", ID_CRUSADERS_CROSSBOW); GiveWeapon(player, "tf_weapon_medigun", ID_KRITZKRIEG); SetPlayerWeaponInfo(player, MEDIC_SEQUENCE_PRIMARY, [MAXAMMO_MEDIC_CROSSBOW]); break; case 6: //XBOW/QF GiveWeapon(player, "tf_weapon_crossbow", ID_CRUSADERS_CROSSBOW); GiveWeapon(player, "tf_weapon_medigun", ID_QUICK_FIX); SetPlayerWeaponInfo(player, MEDIC_SEQUENCE_PRIMARY, [MAXAMMO_MEDIC_CROSSBOW]); break; case 7: //XBOW/VACC GiveWeapon(player, "tf_weapon_crossbow", ID_CRUSADERS_CROSSBOW); GiveWeapon(player, "tf_weapon_medigun", ID_VACCINATOR); SetPlayerWeaponInfo(player, MEDIC_SEQUENCE_PRIMARY, [MAXAMMO_MEDIC_CROSSBOW]); break; } break; case TF_CLASS_HEAVYWEAPONS: //HEAVY local HEAVY_SEQUENCE = [21, 18] switch(sevenguns) //heavy engi pyro also have 7 guns { case 1: //STOCK HEAVY GiveWeapon(player, "tf_weapon_minigun", ID_RUST_BOTKILLER_MINIGUN_MKI); GiveWeapon(player, "tf_weapon_shotgun_hwg", ID_SHOTGUN_HWG); SetPlayerWeaponInfo(player, HEAVY_SEQUENCE,[MAXAMMO_HEAVY_PRIMARY, MAXAMMO_HEAVY_SECONDARY]); break; case 2: //FB/TOMI GiveWeapon(player, "tf_weapon_minigun", ID_TOMISLAV); GiveWeapon(player, "tf_weapon_shotgun_hwg", ID_FAMILY_BUSINESS); SetPlayerWeaponInfo(player, HEAVY_SEQUENCE,[MAXAMMO_HEAVY_PRIMARY, MAXAMMO_HEAVY_SECONDARY]); break; case 3: //HUO/PA GiveWeapon(player, "tf_weapon_minigun", ID_HUO_LONG_HEATER); GiveWeapon(player, "tf_weapon_shotgun_hwg", ID_PANIC_ATTACK_SHOTGUN); SetPlayerWeaponInfo(player, HEAVY_SEQUENCE,[MAXAMMO_HEAVY_PRIMARY, MAXAMMO_HEAVY_SECONDARY]); break; case 4: //NAT GiveWeapon(player, "tf_weapon_minigun", ID_NATASCHA); GiveWeapon(player, "tf_weapon_shotgun_hwg", ID_SHOTGUN_HWG); SetPlayerWeaponInfo(player, HEAVY_SEQUENCE,[MAXAMMO_HEAVY_PRIMARY, MAXAMMO_HEAVY_SECONDARY]); break; case 5: //BRASS/PA GiveWeapon(player, "tf_weapon_minigun", ID_BRASS_BEAST); GiveWeapon(player, "tf_weapon_shotgun_hwg", ID_PANIC_ATTACK_SHOTGUN); SetPlayerWeaponInfo(player, HEAVY_SEQUENCE,[MAXAMMO_HEAVY_PRIMARY, MAXAMMO_HEAVY_SECONDARY]); break; case 6: //STEAK GiveWeapon(player, "tf_weapon_lunchbox", ID_BUFFALO_STEAK_SANDVICH); break; case 7: //CURTAIN/RS GiveWeapon(player, "tf_weapon_minigun", ID_IRON_CURTAIN); GiveWeapon(player, "tf_weapon_shotgun_hwg", ID_RESERVE_SHOOTER); SetPlayerWeaponInfo(player, HEAVY_SEQUENCE,[MAXAMMO_HEAVY_PRIMARY, MAXAMMO_HEAVY_SECONDARY]); break; } break; case TF_CLASS_PYRO: //PYRO switch(sevenguns) //heavy engi pyro also have 7 guns { case 1: //STOCK PYRO GiveWeapon(player, "tf_weapon_flamethrower", ID_RUST_BOTKILLER_FLAME_THROWER_MKI); GiveWeapon(player, "tf_weapon_shotgun_pyro", ID_SHOTGUN_PYRO); SetPlayerWeaponInfo(player, [11, 13, 18], [MAXAMMO_PYRO_PRIMARY, MAXAMMO_PYRO_SECONDARY]); break; case 2: //DEG/FLARE GiveWeapon(player, "tf_weapon_flamethrower", ID_DEGREASER); GiveWeapon(player, "tf_weapon_flaregun", ID_FLARE_GUN); SetPlayerWeaponInfo(player, [11, 13, 9], [MAXAMMO_PYRO_PRIMARY, MAXAMMO_PYRO_SECONDARY]); break; case 3: //DF/SCORCH GiveWeapon(player, "tf_weapon_rocketlauncher_fireball", ID_DRAGONS_FURY); GiveWeapon(player, "tf_weapon_flaregun", ID_SCORCH_SHOT); SetPlayerWeaponInfo(player, [32, 13, 9], [MAXAMMO_PYRO_DRAGONS_FURY, MAXAMMO_PYRO_SECONDARY]); player.AddCustomAttribute("maxammo primary reduced", 0.0625, 0); break; case 4: //RS/BACKBURNER GiveWeapon(player, "tf_weapon_flamethrower", ID_BACKBURNER); GiveWeapon(player, "tf_weapon_shotgun_pyro", ID_RESERVE_SHOOTER); SetPlayerWeaponInfo(player, [11, 13, 18], [MAXAMMO_PYRO_PRIMARY, MAXAMMO_PYRO_SECONDARY]); break; case 5: //PHLOG/MANMELTER GiveWeapon(player, "tf_weapon_flamethrower", ID_PHLOGISTINATOR); GiveWeapon(player, "tf_weapon_flaregun_revenge", ID_MANMELTER); SetPlayerWeaponInfo(player, [11, 13], [MAXAMMO_PYRO_PRIMARY * 0.75, -1]); break; case 6: //GAS/FLAMER GiveWeapon(player, "tf_weapon_jar_gas", ID_GAS_PASSER); GiveWeapon(player, "tf_weapon_flamethrower", ID_NOSTROMO_NAPALMER); SetPlayerWeaponInfo(player, [11, 13], [MAXAMMO_PYRO_PRIMARY, -1]); break; case 7: //RAINBLOWER/FB GiveWeapon(player, "tf_weapon_flamethrower", ID_RAINBLOWER); GiveWeapon(player, "tf_weapon_shotgun_pyro", ID_FAMILY_BUSINESS); SetPlayerWeaponInfo(player, [11, 13, 18], [MAXAMMO_PYRO_PRIMARY, MAXAMMO_PYRO_SECONDARY]); break; } break; case TF_CLASS_SPY: //SPY local SPY_SEQUENCE = [5] switch(randomguns) { case 1: //STOCK SPY GiveWeapon(player, "tf_weapon_revolver", ID_REVOLVER); GiveWeapon(player, "tf_weapon_invis", ID_INVIS_WATCH); GiveWeapon(player, "tf_weapon_pda_spy", ID_PDA_SPY); SetPlayerWeaponInfo(player, SPY_SEQUENCE, [MAXAMMO_SPY_PRIMARY, -1]); break; case 2: //ENFORCER/QUACKEN GiveWeapon(player, "tf_weapon_revolver", ID_ENFORCER); GiveWeapon(player, "tf_weapon_invis", ID_QUACKENBIRDT); GiveWeapon(player, "tf_weapon_pda_spy", ID_PDA_SPY); SetPlayerWeaponInfo(player, SPY_SEQUENCE, [MAXAMMO_SPY_PRIMARY, -1]); break; case 3: //DB/ENTHUSAISTS GiveWeapon(player, "tf_weapon_revolver", ID_DIAMONDBACK); GiveWeapon(player, "tf_weapon_invis", ID_ENTHUSIASTS_TIMEPIECE); GiveWeapon(player, "tf_weapon_pda_spy", ID_PDA_SPY); SetPlayerWeaponInfo(player, SPY_SEQUENCE, [MAXAMMO_SPY_PRIMARY, -1]); break; case 4: //DR/AMBY GiveWeapon(player, "tf_weapon_revolver", ID_AMBASSADOR); GiveWeapon(player, "tf_weapon_invis", ID_DEAD_RINGER); GiveWeapon(player, "tf_weapon_pda_spy", ID_PDA_SPY); SetPlayerWeaponInfo(player, SPY_SEQUENCE, [MAXAMMO_SPY_PRIMARY, -1]); break; case 5: //L'ET/CLOAK GiveWeapon(player, "tf_weapon_revolver", ID_LETRANGER); // GiveWeapon(player, "tf_weapon_invis", ID_CLOAK_AND_DAGGER); GiveWeapon(player, "tf_weapon_invis", ID_INVIS_WATCH); GiveWeapon(player, "tf_weapon_pda_spy", ID_PDA_SPY); SetPlayerWeaponInfo(player, SPY_SEQUENCE, [MAXAMMO_SPY_PRIMARY, -1]); break; } break; case TF_CLASS_ENGINEER: //ENGI switch(sevenguns) //heavy engi pyro also have 7 guns // switch(4) { case 1: //STOCK ENGI GiveWeapon(player, "tf_weapon_shotgun_primary", ID_SHOTGUN_PRIMARY, null, SLOT_PRIMARY); GiveWeapon(player, "tf_weapon_pistol", TF_WEAPON_PISTOL, null, SLOT_SECONDARY); SetPlayerWeaponInfo(player, [4, 27], [MAXAMMO_ENGI_PRIMARY, MAXAMMO_ENGI_SECONDARY]); break; case 2: //WIDOW/PDA/STOCK WRENCH GiveWeapon(player, "tf_weapon_shotgun_primary", ID_WIDOWMAKER, null, SLOT_PRIMARY); GiveWeapon(player, "tf_weapon_pda_engineer_build", ID_PDA_ENGINEER_BUILD, null, SLOT_PDA); GiveWeapon(player, "tf_weapon_pda_engineer_destroy", ID_PDA_ENGINEER_DESTROY, null, SLOT_PDA2); // GiveWeapon(player, "tf_weapon_builder", ID_TOOLBOX, null, SLOT_BUILDING); //crashes the game apparently GiveWeapon(player, "tf_weapon_wrench", ID_RUST_BOTKILLER_WRENCH_MKI, null, SLOT_MELEE); SetPlayerWeaponInfo(player, [8], [-1, -1]); break; case 3: //PBPP/FJ GiveWeapon(player, "tf_weapon_sentry_revenge", ID_FRONTIER_JUSTICE, null, SLOT_PRIMARY); GiveWeapon(player, "tf_weapon_handgun_scout_secondary", ID_PRETTY_BOYS_POCKET_PISTOL, null, SLOT_SECONDARY); SetPlayerWeaponInfo(player, [6, 28], [MAXAMMO_ENGI_PRIMARY, MAXAMMO_ENGI_SECONDARY]); break; case 4: //POMSON/SC GiveWeapon(player, "tf_weapon_drg_pomson", ID_POMSON_6000, null, SLOT_PRIMARY); GiveWeapon(player, "tf_weapon_mechanical_arm", ID_SHORT_CIRCUIT, null, SLOT_SECONDARY); SetPlayerWeaponInfo(player, [27], [-1, -1]); break; case 5: //RR/WRANGLER/PDA/GUNSLINGER GiveWeapon(player, "tf_weapon_shotgun_building_rescue", ID_RESCUE_RANGER, null, SLOT_PRIMARY); GiveWeapon(player, "tf_weapon_laser_pointer", ID_WRANGLER, null, SLOT_SECONDARY); GiveWeapon(player, "tf_weapon_pda_engineer_build", ID_PDA_ENGINEER_BUILD, null, SLOT_PDA); GiveWeapon(player, "tf_weapon_pda_engineer_destroy", ID_PDA_ENGINEER_DESTROY, null, SLOT_PDA2); // GiveWeapon(player, "tf_weapon_builder", ID_TOOLBOX, null, SLOT_BUILDING); //crashes the game apparently GiveWeapon(player, "tf_weapon_robot_arm", ID_GUNSLINGER, null, SLOT_MELEE); // if (player.GetHealth() == 125) player.SetHealth(150) SetPlayerWeaponInfo(player, [6], [MAXAMMO_ENGI_PRIMARY * 0.5, -1]); break; case 6: //PBPP/RS GiveWeapon(player, "tf_weapon_shotgun_primary", ID_RESERVE_SHOOTER, null, SLOT_PRIMARY); GiveWeapon(player, "tf_weapon_handgun_scout_secondary", ID_PRETTY_BOYS_POCKET_PISTOL, null, SLOT_SECONDARY); SetPlayerWeaponInfo(player, [6, 28], [MAXAMMO_ENGI_PRIMARY, MAXAMMO_ENGI_SECONDARY]); break; case 7: //WINGER/FB GiveWeapon(player, "tf_weapon_shotgun_primary", ID_FAMILY_BUSINESS, null, SLOT_PRIMARY); GiveWeapon(player, "tf_weapon_handgun_scout_secondary", ID_WINGER, null, SLOT_SECONDARY); SetPlayerWeaponInfo(player, [6, 28], [MAXAMMO_ENGI_PRIMARY, MAXAMMO_ENGI_SECONDARY]); break; } break; } local scope = player.GetScriptScope(); for (local i = 0; i < scope.maxammo.len(); i++) SetReserveAmmo(player, scope.maxammo[i], i); //fill the weapon table scope.weapontable.clear(); for (local i = 0; i < SLOT_COUNT; i++) { local w = GetWeaponInSlot(player, i); if (w == null || GetItemIndex(w) in scope.weapontable) continue; scope.weapontable.rawset(GetItemIndex(w), [w.GetClassname(), w.GetModelName(), w.GetSlot()]); } // foreach(k, v in scope.weapontable) // printl(k+": "+v[0]+", "+v[1]) } ::GiveLastKnownLoadout <- function(player) { foreach(k, v in player.GetScriptScope().weapontable) v.len() == 1 ? GiveWeapon(player, v[0], k) : GiveWeapon(player, v[0], k, v[1]); }