diff --git a/quakec/fallout2/cmds.qc b/quakec/fallout2/cmds.qc new file mode 100644 index 000000000..3be8c5a80 --- /dev/null +++ b/quakec/fallout2/cmds.qc @@ -0,0 +1,194 @@ +void(entity e, string s) clientcommand = #440 +float(string s) tokenize = #441; +string(float n) argv = #442; + +float(string desc) itemtoslot = +{ + local float slot; + local float iid; + slot = stof(desc); + if (slot >= 1 && slot <= MAXSLOTS) + return slot; + + sprint(self, PRINT_HIGH, "Not an item\n"); + return 0; +}; + +float(float slotno) DecreaseDestroySlot = +{ + float it; + it = ItemInSlot(self, slotno); + if (ToStatus(it) <= 1) + { + SetItemSlot(self, slotno, 0); + return true; + } + else + { + SetItemSlot(self, slotno, SlotVal(ToIID(it), ToStatus(it)-1)); + return false; + } +}; + +void(string arg1) Cmd_InvUse = +{ + local float it, iid; + local float slotno; + slotno = itemtoslot(arg1); + if (!slotno) + { + return; + } + + + it = ItemInSlot(self, slotno); + iid = ToIID(it); + + if (iid == 0) + return; + + if (WeaponAmmoType(iid)) + { + //weapons are reloaded + ReloadWeapon(slotno); + return; + } + + if (iid == IID_CHEM_STIMPACK || + iid == IID_CHEM_MEDICALBAG || + iid == IID_CHEM_SUPERSTIM) + { + if (UseHealingChem(iid)) + DecreaseDestroySlot(slotno); + return; + } + + if (iid == IID_CHEM_ADRENALINE || + iid == IID_CHEM_PSYCHO || + iid == IID_CHEM_BESERK) + { + if (UseBoostingChem(iid)) + DecreaseDestroySlot(slotno); + return; + } + + if (iid == IID_CHEM_ADRENALINE || + iid == IID_CHEM_PSYCHO || + iid == IID_CHEM_BESERK) + { + if (UseBoostingChem(iid)) + DecreaseDestroySlot(slotno); + return; + } + + if (iid == IID_BUILD_MRAMMO || + iid == IID_BUILD_SHIELDGEN || + iid == IID_BUILD_AUTODOC || + iid == IID_BUILD_ROBOFANG) + { + if (spawn_station(iid)) + DecreaseDestroySlot(slotno); + return; + } + + sprint(self, PRINT_HIGH, "Don't know how to 'use' item\n"); +}; + +void(string arg1) Cmd_InvDrop = +{ + local float it, iid; + local float slotno; + slotno = itemtoslot(arg1); + if (!slotno) + { + return; + } + + + it = ItemInSlot(self, slotno); + iid = ToIID(it); + + if (iid == 0) + return; + + DropFromSlot(slotno, true, false); +}; + +void(string arg1, string arg2) Cmd_InvSwap = +{ + local float old1, old2; + local float slotno1; + local float slotno2; + slotno1 = itemtoslot(arg1); + if (!slotno1) + { + return; + } + slotno2 = itemtoslot(arg2); + if (!slotno2) + { + return; + } + + old1 = ItemInSlot(self, slotno1); + old2 = ItemInSlot(self, slotno2); + if (!FitsInSlot(slotno1, old2)) + { + sprint(self, PRINT_HIGH, "Not allowed to exchange items\n"); + return; + } + if (!FitsInSlot(slotno2, old1)) + { + sprint(self, PRINT_HIGH, "Not allowed to exchange items\n"); + return; + } + SetItemSlot(self, slotno1, old2); + SetItemSlot(self, slotno2, old1); + + if (slotno1 == self.current_slot || slotno2 == self.current_slot) + W_SetCurrentAmmo(); +}; + +void(string arg1, float iid, float num) Cmd_InvGive = +{ + local float slotno; + slotno = itemtoslot(arg1); + if (!slotno) + { + return; + } + + if (num <= 0) + num = 1; + SetItemSlot(self, slotno, SlotVal(iid, num)); +}; + +void(string line) SV_ParseClientCommand = +{ + local string cmd; + tokenize(line); + + cmd = argv(0); + if (cmd == "invuse") + { + Cmd_InvUse(argv(1)); + } + else if (cmd == "invdrop") + { + Cmd_InvDrop(argv(1)); + } + else if (cmd == "invswap") + { + Cmd_InvSwap(argv(1), argv(2)); + } + else if (cmd == "invgive") + { + Cmd_InvGive(argv(1), stof(argv(2)), stof(argv(3))); + } + else if (cmd == "god") + { + sprint(self, PRINT_HIGH, "sorry, but I'm an athiest\n"); + } + else + clientcommand(self, line); +}; \ No newline at end of file diff --git a/quakec/fallout2/inventory.qc b/quakec/fallout2/inventory.qc new file mode 100644 index 000000000..5be4a55da --- /dev/null +++ b/quakec/fallout2/inventory.qc @@ -0,0 +1,689 @@ +float IID_NONE = 0; + +#define IsMelee(iid) (iid == IID_NONE || (iid >= IID_WP_TOOLKIT && iid <= IID_WP_POWERAXE)) +#define IsGrenade(iid) (iid >= IID_GREN_FRAG && iid <= IID_GREN_FLASH) +#define IsRanged(iid) (iid >= IID_WP_USP && iid <= IID_WP_PULSERIFLE) + +//weapons with ammo, things with a toggle state +#define NotStackable(iid) (IsRanged(iid)) + +//the ammoless weapons +float IID_WP_TOOLKIT = 400; +float IID_WP_KNIFE = 401; +float IID_WP_AXE = 402; +float IID_WP_VIBROBLADE = 403; +float IID_WP_POWERAXE = 404; + +//the ammoed weapons +float IID_WP_USP = 405; +float IID_WP_DEAGLE = 406; +float IID_WP_NEEDLER = 407; +float IID_WP_ALIENBLASTER = 408; +float IID_WP_PIPERIFLE = 409; +float IID_WP_WINCHESTER = 410; +float IID_WP_MOSSBERG = 411; +float IID_WP_JACKHAMMER = 412; +float IID_WP_MP9 = 413; +float IID_WP_MP7 = 414; +float IID_WP_RANGERMASTER = 415; +float IID_WP_AK112 = 416; +float IID_WP_AK74 = 417; +float IID_WP_DKS1 = 418; +float IID_WP_MOONLIGHT = 419; +float IID_WP_SA80 = 420; +float IID_WP_GAUSERIFLE = 421; +float IID_WP_PULSERIFLE = 422; + +//and ammo for those guns +float IID_AM_USP = 505; +float IID_AM_DEAGLE = 506; +float IID_AM_NEEDLER = 507; +float IID_AM_ALIENBLASTER = 508; +float IID_AM_PIPERIFLE = 509; +float IID_AM_WINCHESTER = 510; +float IID_AM_MOSSBERG = 511; +float IID_AM_JACKHAMMER = 512; +float IID_AM_MP9 = 513; +float IID_AM_MP7 = 514; +float IID_AM_RANGERMASTER = 515; +float IID_AM_AK112 = 516; +float IID_AM_AK74 = 517; +float IID_AM_DKS1 = 518; +float IID_AM_MOONLIGHT = 519; +float IID_AM_SA80 = 520; +float IID_AM_GAUSERIFLE = 521; +float IID_AM_PULSERIFLE = 522; + +//grenade items +float IID_GREN_FRAG = 101; +float IID_GREN_EMP = 102; +float IID_GREN_SMOKE = 103; +float IID_GREN_FLASH = 104; + +//armour +#define IsArmor(iid) (iid >= IID_ARM_SHIRT && iid <= IID_ARM_LPOWER) +float IID_ARM_SHIRT = 201; +float IID_ARM_LEATHER = 202; +float IID_ARM_KEVLAR = 203; +float IID_ARM_METAL = 204; +float IID_ARM_COMBAT = 205; +float IID_ARM_BROTHERHOOD = 206; +float IID_ARM_FORCE = 207; +float IID_ARM_LPOWER = 208; + +//stims +float IID_CHEM_STIMPACK = 301; +float IID_CHEM_MEDICALBAG = 302; +float IID_CHEM_SUPERSTIM = 303; +float IID_CHEM_ADRENALINE = 304; +float IID_CHEM_PSYCHO = 305; +float IID_CHEM_BESERK = 306; + +float IID_BUILD_MRAMMO = 350; +float IID_BUILD_SHIELDGEN = 351; +float IID_BUILD_AUTODOC = 352; +float IID_BUILD_ROBOFANG = 353; + +#define IsShootable(iid) (IsMelee(iid) || IsRanged(iid) || IsGrenade(iid)) + + + +//slot1 and slot2 are the two hand slots +//slot3 is the armour slot. +//the other slots are for misilaneous things. + +.float islot1; +.float islot2; +.float islot3; +.float islot4; +.float islot5; +.float islot6; +.float islot7; +.float islot8; +.float islot9; +.float islot10; +.float islot11; +.float islot12; +.float islot13; +.float islot14; +.float islot15; +.float islot16; +#define MAXSLOTS 16 + +void(float sttype, float stnum, string fieldname) clientstat = #232; +void() SetupStats = +{ + //2 is ev_float + //32 is the first stat we are allowed to use + clientstat(2, 32, "islot1"); + clientstat(2, 33, "islot2"); + clientstat(2, 34, "islot3"); + clientstat(2, 35, "islot4"); + clientstat(2, 36, "islot5"); + clientstat(2, 37, "islot6"); + clientstat(2, 38, "islot7"); + clientstat(2, 39, "islot8"); + clientstat(2, 40, "islot9"); + clientstat(2, 41, "islot10"); + clientstat(2, 42, "islot11"); + clientstat(2, 43, "islot12"); + clientstat(2, 44, "islot13"); + clientstat(2, 45, "islot14"); + clientstat(2, 46, "islot15"); + clientstat(2, 47, "islot16"); +}; + + +#define ToIID(it) floor(it/512) +#define ToStatus(it) (it&511) +#define SlotVal(iid,st) ((iid*512) | (st&511)) + + +float(entity e, float slotno) ItemInSlot = +{ + if (slotno == 1) + return e.islot1; + if (slotno == 2) + return e.islot2; + if (slotno == 3) + return e.islot3; + if (slotno == 4) + return e.islot4; + if (slotno == 5) + return e.islot5; + if (slotno == 6) + return e.islot6; + if (slotno == 7) + return e.islot7; + if (slotno == 8) + return e.islot8; + if (slotno == 9) + return e.islot9; + if (slotno == 10) + return e.islot10; + if (slotno == 11) + return e.islot11; + if (slotno == 12) + return e.islot12; + if (slotno == 13) + return e.islot13; + if (slotno == 14) + return e.islot14; + if (slotno == 15) + return e.islot15; + if (slotno == 16) + return e.islot16; + + return 0; +}; + +void(entity e, float slotno, float item) SetItemSlot = +{ + if (slotno == 1) + e.islot1 = item; + else if (slotno == 2) + e.islot2 = item; + else if (slotno == 3) + e.islot3 = item; + else if (slotno == 4) + e.islot4 = item; + else if (slotno == 5) + e.islot5 = item; + else if (slotno == 6) + e.islot6 = item; + else if (slotno == 7) + e.islot7 = item; + else if (slotno == 8) + e.islot8 = item; + else if (slotno == 9) + e.islot9 = item; + else if (slotno == 10) + e.islot10 = item; + else if (slotno == 11) + e.islot11 = item; + else if (slotno == 12) + e.islot12 = item; + else if (slotno == 13) + e.islot13 = item; + else if (slotno == 14) + e.islot14 = item; + else if (slotno == 15) + e.islot15 = item; + else if (slotno == 16) + e.islot16 = item; +}; + +float(entity e, float iid) SlotOfItem = +{ + if (ToIID(e.islot1) == iid) + return 1; + if (ToIID(e.islot2) == iid) + return 2; + if (ToIID(e.islot3) == iid) + return 3; + if (ToIID(e.islot4) == iid) + return 4; + if (ToIID(e.islot5) == iid) + return 5; + if (ToIID(e.islot6) == iid) + return 6; + if (ToIID(e.islot7) == iid) + return 7; + if (ToIID(e.islot8) == iid) + return 8; + if (ToIID(e.islot9) == iid) + return 9; + if (ToIID(e.islot10) == iid) + return 10; + if (ToIID(e.islot11) == iid) + return 11; + if (ToIID(e.islot12) == iid) + return 12; + if (ToIID(e.islot13) == iid) + return 13; + if (ToIID(e.islot14) == iid) + return 14; + if (ToIID(e.islot15) == iid) + return 15; + if (ToIID(e.islot16) == iid) + return 16; + + return 0; +}; + +typedef .float slot_t; +slot_t(float slot) SlotField = +{ + if (slot == 1) + return islot1; + if (slot == 2) + return islot2; + if (slot == 3) + return islot3; + if (slot == 4) + return islot4; + if (slot == 5) + return islot5; + if (slot == 6) + return islot6; + if (slot == 7) + return islot7; + if (slot == 8) + return islot8; + if (slot == 9) + return islot9; + if (slot == 10) + return islot10; + if (slot == 11) + return islot11; + if (slot == 12) + return islot12; + if (slot == 13) + return islot13; + if (slot == 14) + return islot14; + if (slot == 15) + return islot15; + if (slot == 16) + return islot16; + + + bprint(PRINT_MEDIUM, "ERROR: Invalid slot number (", ftos(slot), ")\n"); + return islot1; +}; + + +string(float iid) GetItemVModel = +{ + if (iid == IID_NONE) + return "progs/v_fist.mdl"; + if (iid == IID_WP_KNIFE) + return "progs/v_knife.mdl"; + if (iid == IID_WP_AXE) + return "progs/v_axe.mdl"; + if (iid == IID_WP_VIBROBLADE) + return "progs/v_knife.mdl"; + if (iid == IID_WP_POWERAXE) + return "progs/v_axe.mdl"; + if (iid == IID_WP_USP) + return "progs/v_1911.mdl"; +/* + if (iid == IID_WP_DEAGLE) + return ""; + if (iid == IID_WP_NEEDLER) + return ""; + if (iid == IID_WP_ALIENBLASTER) + return ""; + if (iid == IID_WP_PIPERIFLE) + return ""; + if (iid == IID_WP_WINCHESTER) + return ""; + if (iid == IID_WP_MOSSBERG) + return ""; +*/ + if (iid == IID_WP_JACKHAMMER) + return "progs/v_jackhammer.mdl"; + if (iid == IID_WP_MP9) + return "progs/v_mp9.mdl"; + if (iid == IID_WP_MP7) + return "progs/v_mp7.mdl"; +/* + if (iid == IID_WP_RANGERMASTER) + return ""; + if (iid == IID_WP_AK112) + return ""; +*/ + if (iid == IID_WP_AK74) + return "progs/v_ak47.mdl"; +/* + if (iid == IID_WP_DKS1) + return ""; +*/ + if (iid == IID_WP_MOONLIGHT) + return "progs/v_night.mdl"; + + if (iid == IID_GREN_FRAG) + return "progs/v_handgren.mdl"; + if (iid == IID_GREN_EMP) + return "progs/v_handgren.mdl"; + if (iid == IID_GREN_SMOKE) + return "progs/v_handgren.mdl"; + if (iid == IID_GREN_FLASH) + return "progs/v_handgren.mdl"; + + bprint(PRINT_MEDIUM, ftos(iid), " without a vmodel!\n"); + return ""; +}; + +float(float iid) WeaponAmmoType = +{ + if (iid == IID_WP_USP) + return IID_AM_USP; + if (iid == IID_WP_DEAGLE) + return IID_AM_DEAGLE; + if (iid == IID_WP_NEEDLER) + return IID_AM_NEEDLER; + if (iid == IID_WP_ALIENBLASTER) + return IID_AM_ALIENBLASTER; + if (iid == IID_WP_PIPERIFLE) + return IID_AM_PIPERIFLE; + if (iid == IID_WP_WINCHESTER) + return IID_AM_WINCHESTER; + if (iid == IID_WP_MOSSBERG) + return IID_AM_MOSSBERG; + if (iid == IID_WP_JACKHAMMER) + return IID_AM_JACKHAMMER; + if (iid == IID_WP_MP9) + return IID_AM_MP9; + if (iid == IID_WP_MP7) + return IID_AM_MP7; + if (iid == IID_WP_RANGERMASTER) + return IID_AM_RANGERMASTER; + if (iid == IID_WP_AK112) + return IID_AM_AK112; + if (iid == IID_WP_AK74) + return IID_AM_AK74; + if (iid == IID_WP_DKS1) + return IID_AM_DKS1; + if (iid == IID_WP_MOONLIGHT) + return IID_AM_MOONLIGHT; + if (iid == IID_WP_SA80) + return IID_AM_SA80; + if (iid == IID_WP_GAUSERIFLE) + return IID_AM_GAUSERIFLE; + if (iid == IID_WP_PULSERIFLE) + return IID_AM_PULSERIFLE; + + return IID_NONE; +}; + +float(float iid) WeaponMagQuant = +{ + if (iid == IID_WP_USP) + return 12; + if (iid == IID_WP_DEAGLE) + return 7; + if (iid == IID_WP_NEEDLER) + return 15; + if (iid == IID_WP_ALIENBLASTER) + return 6; + if (iid == IID_WP_PIPERIFLE) + return 1; + if (iid == IID_WP_WINCHESTER) + return 2; + if (iid == IID_WP_MOSSBERG) + return 6; + if (iid == IID_WP_JACKHAMMER) + return 10; + if (iid == IID_WP_MP9) + return 30; + if (iid == IID_WP_MP7) + return 30; + if (iid == IID_WP_RANGERMASTER) + return 10; + if (iid == IID_WP_AK112) + return 24; + if (iid == IID_WP_AK74) + return 30; + if (iid == IID_WP_DKS1) + return 8; + if (iid == IID_WP_MOONLIGHT) + return 30; + if (iid == IID_WP_SA80) + return 30; + if (iid == IID_WP_GAUSERIFLE) + return 10; + if (iid == IID_WP_PULSERIFLE) + return 40; + + return 0; +}; + +float(float iid) GetItemWeight = +{ + if (iid == IID_NONE) + return 0; + if (iid == IID_WP_KNIFE) + return 1; + if (iid == IID_WP_AXE) + return 2; + if (iid == IID_WP_VIBROBLADE) + return 8; + if (iid == IID_WP_POWERAXE) + return 6; + if (iid == IID_WP_USP) + return 1; + if (iid == IID_WP_DEAGLE) + return 2; + if (iid == IID_WP_NEEDLER) + return 2; + if (iid == IID_WP_ALIENBLASTER) + return 2; + if (iid == IID_WP_PIPERIFLE) + return 3; + if (iid == IID_WP_WINCHESTER) + return 4; + if (iid == IID_WP_MOSSBERG) + return 5; + if (iid == IID_WP_JACKHAMMER) + return 6; + if (iid == IID_WP_MP9) + return 3; + if (iid == IID_WP_MP7) + return 3; + if (iid == IID_WP_RANGERMASTER) + return 5; + if (iid == IID_WP_AK112) + return 5; + if (iid == IID_WP_AK74) + return 5; + if (iid == IID_WP_DKS1) + return 7; + if (iid == IID_WP_MOONLIGHT) + return 5; + if (iid == IID_WP_SA80) + return 5; + if (iid == IID_WP_GAUSERIFLE) + return 9; + if (iid == IID_WP_PULSERIFLE) + return 10; + + + if (iid == IID_ARM_SHIRT) + return 3; + if (iid == IID_ARM_LEATHER) + return 5; + if (iid == IID_ARM_KEVLAR) + return 9; + if (iid == IID_ARM_METAL) + return 15; + if (iid == IID_ARM_COMBAT) + return 12; + if (iid == IID_ARM_BROTHERHOOD) + return 17; + if (iid == IID_ARM_FORCE) + return 6; + if (iid == IID_ARM_LPOWER) + return 20; + + if (iid == IID_BUILD_MRAMMO) + return 2; + if (iid == IID_BUILD_SHIELDGEN) + return 4; + if (iid == IID_BUILD_AUTODOC) + return 3; + if (iid == IID_BUILD_ROBOFANG) + return 2; + + +// bprint(PRINT_MEDIUM, ftos(iid), " without a weight!\n"); + return 0; +}; + +float(float item) GetItemsWeight = +{ + local float iid; + iid = ToIID(item); + if (NotStackable(iid)) + return GetItemWeight(iid); + else + return GetItemWeight(iid) * ToStatus(item); +}; + + +string(float iid) GetItemName = +{ + if (iid == IID_NONE) + return "nothing"; + + + if (iid == IID_WP_TOOLKIT) + return "toolkit"; + if (iid == IID_WP_KNIFE) + return "knife"; + if (iid == IID_WP_AXE) + return "axe"; + if (iid == IID_WP_VIBROBLADE) + return "ripper"; + if (iid == IID_WP_POWERAXE) + return "poweraxe"; + if (iid == IID_WP_USP) + return "1911"; + if (iid == IID_WP_DEAGLE) + return "desert eagle"; + if (iid == IID_WP_NEEDLER) + return "needler"; + if (iid == IID_WP_ALIENBLASTER) + return "alien blaster"; + if (iid == IID_WP_PIPERIFLE) + return "pipe rifle"; + if (iid == IID_WP_WINCHESTER) + return "winchester"; + if (iid == IID_WP_MOSSBERG) + return "mossberg"; + if (iid == IID_WP_JACKHAMMER) + return "jackhammer"; + if (iid == IID_WP_MP9) + return "mp9"; + if (iid == IID_WP_MP7) + return "grease gun"; + if (iid == IID_WP_RANGERMASTER) + return "rangemaster"; + if (iid == IID_WP_AK112) + return "ak-112"; + if (iid == IID_WP_AK74) + return "ak-74"; + if (iid == IID_WP_DKS1) + return "dks-1"; + if (iid == IID_WP_MOONLIGHT) + return "moonlight"; + if (iid == IID_WP_SA80) + return "sa-80"; + if (iid == IID_WP_GAUSERIFLE) + return "gauss rifle"; + if (iid == IID_WP_PULSERIFLE) + return "laser carbine"; + + + if (iid == IID_AM_USP) + return "ammo for 1911"; + if (iid == IID_AM_DEAGLE) + return "ammo for desert eagle"; + if (iid == IID_AM_NEEDLER) + return "ammo for needler"; + if (iid == IID_AM_ALIENBLASTER) + return "ammo for alien blaster"; + if (iid == IID_AM_PIPERIFLE) + return "ammo for pipe rifle"; + if (iid == IID_AM_WINCHESTER) + return "ammo for winchester"; + if (iid == IID_AM_MOSSBERG) + return "ammo for mossberg"; + if (iid == IID_AM_JACKHAMMER) + return "ammo for jackhammer"; + if (iid == IID_AM_MP9) + return "ammo for mp9"; + if (iid == IID_AM_MP7) + return "ammo for grease gun"; + if (iid == IID_AM_RANGERMASTER) + return "ammo for rangemaster"; + if (iid == IID_AM_AK112) + return "ammo for ak-112"; + if (iid == IID_AM_AK74) + return "ammo for ak-74"; + if (iid == IID_AM_DKS1) + return "ammo for dks-1"; + if (iid == IID_AM_MOONLIGHT) + return "ammo for moonlight"; + if (iid == IID_AM_SA80) + return "ammo for sa-80"; + if (iid == IID_AM_GAUSERIFLE) + return "ammo for gauss rifle"; + if (iid == IID_AM_PULSERIFLE) + return "ammo for laser carbine"; + + + if (iid == IID_GREN_FRAG) + return "frag grenade"; + if (iid == IID_GREN_EMP) + return "emp grenade"; + if (iid == IID_GREN_SMOKE) + return "smoke grenade"; + if (iid == IID_GREN_FLASH) + return "flashbang"; + + + if (iid == IID_ARM_SHIRT) + return "bulletproof shirt"; + if (iid == IID_ARM_LEATHER) + return "leather armor"; + if (iid == IID_ARM_KEVLAR) + return "kevlar armor"; + if (iid == IID_ARM_METAL) + return "metal armor"; + if (iid == IID_ARM_COMBAT) + return "combat armor"; + if (iid == IID_ARM_BROTHERHOOD) + return "brotherhood armor"; + if (iid == IID_ARM_FORCE) + return "force armor"; + if (iid == IID_ARM_LPOWER) + return "light power armor"; + + + if (iid == IID_CHEM_STIMPACK) + return "stimpack"; + if (iid == IID_CHEM_MEDICALBAG) + return "medical bag"; + if (iid == IID_CHEM_SUPERSTIM) + return "superstim"; + if (iid == IID_CHEM_ADRENALINE) + return "adrenaline"; + if (iid == IID_CHEM_PSYCHO) + return "psycho"; + if (iid == IID_CHEM_BESERK) + return "beserk"; + + if (iid == IID_BUILD_MRAMMO) + return "mr. ammo"; + if (iid == IID_BUILD_SHIELDGEN) + return "shield-gen"; + if (iid == IID_BUILD_AUTODOC) + return "auto-doc"; + if (iid == IID_BUILD_ROBOFANG) + return "robofang"; + + bprint(PRINT_MEDIUM, ftos(iid), " without a name!\n"); + return "unknown"; +}; + + + +float(float slotno, float iid) FitsInSlot = +{ + if (slotno == 1 || slotno == 2) + return IsShootable(iid); + if (slotno == 3) + return IsArmor(iid); + return true; +}; \ No newline at end of file