From e3f9901bd80ad79ab669ee6dd6fcb61fbad5dbe3 Mon Sep 17 00:00:00 2001 From: Magnus Date: Mon, 9 Nov 2009 15:24:37 +0000 Subject: [PATCH] git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@3430 fc73d0e0-1445-4013-8a0c-d673dee63da5 --- quakec/fallout2/client.qc | 45 +-- quakec/fallout2/cmds.qc | 604 ++++++--------------------------- quakec/fallout2/csqc/invent.qc | 2 +- quakec/fallout2/hos.qc | 2 +- quakec/fallout2/inventory.qc | 280 +++++++++++++-- quakec/fallout2/items.qc | 52 +-- quakec/fallout2/menus.qc | 9 +- quakec/fallout2/misc.qc | 59 +--- quakec/fallout2/mod_buy.qc | 7 +- quakec/fallout2/weapons.qc | 6 +- quakec/fallout2/world.qc | 7 +- 11 files changed, 462 insertions(+), 611 deletions(-) diff --git a/quakec/fallout2/client.qc b/quakec/fallout2/client.qc index b55b76942..11a928604 100644 --- a/quakec/fallout2/client.qc +++ b/quakec/fallout2/client.qc @@ -270,47 +270,50 @@ void() get_new_map = m_map = "e3m1"; else if (random()<0.04) m_map = "e4m1"; - else if (random()<0.04) + else if (random()<0.08) m_map = "bbelief1"; - else if (random()<0.15) - m_map = "bbelief1"; - else if (random()<0.15) + else if (random()<0.08) m_map = "bbelief2"; - else if (random()<0.15) + else if (random()<0.08) m_map = "bbelief3"; - else if (random()<0.15) + else if (random()<0.08) m_map = "bbelief4"; - else if (random()<0.15) + else if (random()<0.08) m_map = "bbelief5"; - else if (random()<0.15) + else if (random()<0.08) m_map = "bbelief6"; - else if (random()<0.15) - m_map = "bbelief7"; - else if (random()<0.15) - m_map = "bbelief8"; + else if (random()<0.08) + m_map = "e1m4"; + else if (random()<0.08) + m_map = "e2m3"; + else if (random()<0.08) + m_map = "e3m3"; + else if (random()<0.08) + m_map = "e1m3"; + else if (random()<0.08) + m_map = "e1m5"; else m_map = "bbelief1"; }; -void() get_new_mission = +void(float type) get_new_mission = { local float x; local string savemap; - x = ceil(random()*6); - if (x == 1) + if (type == 1) savemap = "hostage"; - if (x == 2) + if (type == 2) savemap = "supplies"; - if (x == 3) + if (type == 3) savemap = "shadow"; - if (x == 4) + if (type == 4) savemap = "deadtown"; - if (x == 5) + if (type == 5) savemap = "destroy"; - if (x == 6) + if (type == 6) savemap = "defuse"; localcmd("serverinfo objective "); @@ -1300,7 +1303,7 @@ void() SneakLevel = if (r > 0 && r <= 600) { r = 600 - r; - q = 3 + (self.skill_sneak/5); + q = 3 + (self.skill_sneak/2); sn = sn - r/q; } diff --git a/quakec/fallout2/cmds.qc b/quakec/fallout2/cmds.qc index 8f7613580..ea157fd60 100644 --- a/quakec/fallout2/cmds.qc +++ b/quakec/fallout2/cmds.qc @@ -261,7 +261,7 @@ void(string arg1) Cmd_InvDrop = void(string arg1) Cmd_InvBuy = { - local float x,y, iid, amount, money; + local float x,y, iid, amount, money, item; x = FindEmptySlot(self); @@ -273,513 +273,50 @@ void(string arg1) Cmd_InvBuy = return; } - - if (arg1 == "1") - { - iid = ToIID(self.xslot1); - amount = ToStatus(self.xslot1); - money = GetBaseValue(iid); - if (self.ammo_shells < money) - { - sprint(self, 2, "not enough money.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - else - self.ammo_shells = self.ammo_shells - money; - - if (NotStackable(iid)) - SetItemSlot(self, x, self.xslot1); - else - - if (!TryGiveStackable(self, iid, amount)) - { - sprint(self, 2, "full inventory.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - sound (self, CHAN_BODY, "misc/item2.wav", 1, ATTN_NORM); - } - + item = self.xslot1; if (arg1 == "2") - { - iid = ToIID(self.xslot2); - amount = ToStatus(self.xslot2); - money = GetBaseValue(iid); - if (self.ammo_shells < money) - { - sprint(self, 2, "not enough money.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - else - self.ammo_shells = self.ammo_shells - money; - - if (NotStackable(iid)) - SetItemSlot(self, x, self.xslot2); - else - - if (!TryGiveStackable(self, iid, amount)) - { - sprint(self, 2, "full inventory.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - sound (self, CHAN_BODY, "misc/item2.wav", 1, ATTN_NORM); - } - + item = self.xslot2; if (arg1 == "3") - { - iid = ToIID(self.xslot3); - amount = ToStatus(self.xslot3); - money = GetBaseValue(iid); - if (self.ammo_shells < money) - { - sprint(self, 2, "not enough money.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - else - self.ammo_shells = self.ammo_shells - money; - - if (NotStackable(iid)) - SetItemSlot(self, x, self.xslot3); - else - - if (!TryGiveStackable(self, iid, amount)) - { - sprint(self, 2, "full inventory.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - sound (self, CHAN_BODY, "misc/item2.wav", 1, ATTN_NORM); - } - + item = self.xslot3; if (arg1 == "4") - { - iid = ToIID(self.xslot4); - amount = ToStatus(self.xslot4); - money = GetBaseValue(iid); - if (self.ammo_shells < money) - { - sprint(self, 2, "not enough money.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - else - self.ammo_shells = self.ammo_shells - money; - - if (NotStackable(iid)) - SetItemSlot(self, x, self.xslot4); - else - - if (!TryGiveStackable(self, iid, amount)) - { - sprint(self, 2, "full inventory.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - sound (self, CHAN_BODY, "misc/item2.wav", 1, ATTN_NORM); - } - + item = self.xslot4; if (arg1 == "5") - { - iid = ToIID(self.xslot5); - amount = ToStatus(self.xslot5); - money = GetBaseValue(iid); - if (self.ammo_shells < money) - { - sprint(self, 2, "not enough money.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - else - self.ammo_shells = self.ammo_shells - money; - - if (NotStackable(iid)) - SetItemSlot(self, x, self.xslot5); - else - - if (!TryGiveStackable(self, iid, amount)) - { - sprint(self, 2, "full inventory.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - sound (self, CHAN_BODY, "misc/item2.wav", 1, ATTN_NORM); - } - + item = self.xslot5; if (arg1 == "6") - { - iid = ToIID(self.xslot6); - amount = ToStatus(self.xslot6); - money = GetBaseValue(iid); - if (self.ammo_shells < money) - { - sprint(self, 2, "not enough money.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - else - self.ammo_shells = self.ammo_shells - money; - - if (NotStackable(iid)) - SetItemSlot(self, x, self.xslot6); - else - - if (!TryGiveStackable(self, iid, amount)) - { - sprint(self, 2, "full inventory.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - sound (self, CHAN_BODY, "misc/item2.wav", 1, ATTN_NORM); - } - + item = self.xslot6; if (arg1 == "7") - { - iid = ToIID(self.xslot7); - amount = ToStatus(self.xslot7); - money = GetBaseValue(iid); - if (self.ammo_shells < money) - { - sprint(self, 2, "not enough money.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - else - self.ammo_shells = self.ammo_shells - money; - - if (NotStackable(iid)) - SetItemSlot(self, x, self.xslot7); - else - - if (!TryGiveStackable(self, iid, amount)) - { - sprint(self, 2, "full inventory.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - sound (self, CHAN_BODY, "misc/item2.wav", 1, ATTN_NORM); - } - + item = self.xslot7; if (arg1 == "8") - { - iid = ToIID(self.xslot8); - amount = ToStatus(self.xslot8); - money = GetBaseValue(iid); - if (self.ammo_shells < money) - { - sprint(self, 2, "not enough money.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - else - self.ammo_shells = self.ammo_shells - money; - - if (NotStackable(iid)) - SetItemSlot(self, x, self.xslot8); - else - - if (!TryGiveStackable(self, iid, amount)) - { - sprint(self, 2, "full inventory.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - sound (self, CHAN_BODY, "misc/item2.wav", 1, ATTN_NORM); - } + item = self.xslot8; if (arg1 == "9") - { - iid = ToIID(self.xslot9); - amount = ToStatus(self.xslot9); - money = GetBaseValue(iid); - if (self.ammo_shells < money) - { - sprint(self, 2, "not enough money.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - else - self.ammo_shells = self.ammo_shells - money; - - if (NotStackable(iid)) - SetItemSlot(self, x, self.xslot9); - else - - if (!TryGiveStackable(self, iid, amount)) - { - sprint(self, 2, "full inventory.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - sound (self, CHAN_BODY, "misc/item2.wav", 1, ATTN_NORM); - } + item = self.xslot9; if (arg1 == "10") - { - iid = ToIID(self.xslot10); - amount = ToStatus(self.xslot10); - money = GetBaseValue(iid); - if (self.ammo_shells < money) - { - sprint(self, 2, "not enough money.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - else - self.ammo_shells = self.ammo_shells - money; - - if (NotStackable(iid)) - SetItemSlot(self, x, self.xslot10); - else - - if (!TryGiveStackable(self, iid, amount)) - { - sprint(self, 2, "full inventory.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - sound (self, CHAN_BODY, "misc/item2.wav", 1, ATTN_NORM); - } + item = self.xslot10; if (arg1 == "11") - { - iid = ToIID(self.xslot11); - amount = ToStatus(self.xslot11); - money = GetBaseValue(iid); - if (self.ammo_shells < money) - { - sprint(self, 2, "not enough money.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - else - self.ammo_shells = self.ammo_shells - money; - - if (NotStackable(iid)) - SetItemSlot(self, x, self.xslot11); - else - - if (!TryGiveStackable(self, iid, amount)) - { - sprint(self, 2, "full inventory.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - sound (self, CHAN_BODY, "misc/item2.wav", 1, ATTN_NORM); - } + item = self.xslot11; if (arg1 == "12") - { - iid = ToIID(self.xslot12); - amount = ToStatus(self.xslot12); - money = GetBaseValue(iid); - if (self.ammo_shells < money) - { - sprint(self, 2, "not enough money.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - else - self.ammo_shells = self.ammo_shells - money; - - if (NotStackable(iid)) - SetItemSlot(self, x, self.xslot12); - else - - if (!TryGiveStackable(self, iid, amount)) - { - sprint(self, 2, "full inventory.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - sound (self, CHAN_BODY, "misc/item2.wav", 1, ATTN_NORM); - } + item = self.xslot12; if (arg1 == "13") - { - iid = ToIID(self.xslot13); - amount = ToStatus(self.xslot13); - money = GetBaseValue(iid); - if (self.ammo_shells < money) - { - sprint(self, 2, "not enough money.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - else - self.ammo_shells = self.ammo_shells - money; - - if (NotStackable(iid)) - SetItemSlot(self, x, self.xslot13); - else - - if (!TryGiveStackable(self, iid, amount)) - { - sprint(self, 2, "full inventory.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - sound (self, CHAN_BODY, "misc/item2.wav", 1, ATTN_NORM); - } + item = self.xslot13; if (arg1 == "14") - { - iid = ToIID(self.xslot14); - amount = ToStatus(self.xslot14); - money = GetBaseValue(iid); - if (self.ammo_shells < money) - { - sprint(self, 2, "not enough money.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - else - self.ammo_shells = self.ammo_shells - money; - - if (NotStackable(iid)) - SetItemSlot(self, x, self.xslot14); - else - - if (!TryGiveStackable(self, iid, amount)) - { - sprint(self, 2, "full inventory.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - sound (self, CHAN_BODY, "misc/item2.wav", 1, ATTN_NORM); - } + item = self.xslot14; if (arg1 == "15") - { - iid = ToIID(self.xslot15); - amount = ToStatus(self.xslot15); - money = GetBaseValue(iid); - if (self.ammo_shells < money) - { - sprint(self, 2, "not enough money.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - else - self.ammo_shells = self.ammo_shells - money; - - if (NotStackable(iid)) - SetItemSlot(self, x, self.xslot15); - else - - if (!TryGiveStackable(self, iid, amount)) - { - sprint(self, 2, "full inventory.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - sound (self, CHAN_BODY, "misc/item2.wav", 1, ATTN_NORM); - } + item = self.xslot15; if (arg1 == "16") - { - iid = ToIID(self.xslot16); - amount = ToStatus(self.xslot16); - money = GetBaseValue(iid); - if (self.ammo_shells < money) - { - sprint(self, 2, "not enough money.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - else - self.ammo_shells = self.ammo_shells - money; - - if (NotStackable(iid)) - SetItemSlot(self, x, self.xslot16); - else - - if (!TryGiveStackable(self, iid, amount)) - { - sprint(self, 2, "full inventory.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - sound (self, CHAN_BODY, "misc/item2.wav", 1, ATTN_NORM); - } + item = self.xslot16; if (arg1 == "17") - { - iid = ToIID(self.xslot17); - amount = ToStatus(self.xslot17); - money = GetBaseValue(iid); - if (self.ammo_shells < money) - { - sprint(self, 2, "not enough money.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - else - self.ammo_shells = self.ammo_shells - money; - - if (NotStackable(iid)) - SetItemSlot(self, x, self.xslot17); - else - - if (!TryGiveStackable(self, iid, amount)) - { - sprint(self, 2, "full inventory.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - sound (self, CHAN_BODY, "misc/item2.wav", 1, ATTN_NORM); - } + item = self.xslot17; if (arg1 == "18") - { - iid = ToIID(self.xslot18); - amount = ToStatus(self.xslot18); - money = GetBaseValue(iid); - if (self.ammo_shells < money) - { - sprint(self, 2, "not enough money.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - else - self.ammo_shells = self.ammo_shells - money; - - if (NotStackable(iid)) - SetItemSlot(self, x, self.xslot18); - else - - if (!TryGiveStackable(self, iid, amount)) - { - sprint(self, 2, "full inventory.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - sound (self, CHAN_BODY, "misc/item2.wav", 1, ATTN_NORM); - } + item = self.xslot18; if (arg1 == "19") - { - iid = ToIID(self.xslot19); - amount = ToStatus(self.xslot19); - money = GetBaseValue(iid); - if (self.ammo_shells < money) - { - sprint(self, 2, "not enough money.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - else - self.ammo_shells = self.ammo_shells - money; - - if (NotStackable(iid)) - SetItemSlot(self, x, self.xslot19); - else - - if (!TryGiveStackable(self, iid, amount)) - { - sprint(self, 2, "full inventory.\n"); - sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); - return; - } - sound (self, CHAN_BODY, "misc/item2.wav", 1, ATTN_NORM); - } + item = self.xslot19; if (arg1 == "20") - { - iid = ToIID(self.xslot20); - amount = ToStatus(self.xslot20); + item = self.xslot20; + + + iid = ToIID(item); + amount = ToStatus(item); money = GetBaseValue(iid); if (self.ammo_shells < money) { @@ -791,17 +328,20 @@ void(string arg1) Cmd_InvBuy = self.ammo_shells = self.ammo_shells - money; if (NotStackable(iid)) - SetItemSlot(self, x, self.xslot20); + SetItemSlot(self, x, item); + else if (IsEquip(iid)) + SetItemSlot(self, x, item); else - if (!TryGiveStackable(self, iid, amount)) { sprint(self, 2, "full inventory.\n"); sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); + self.ammo_shells = self.ammo_shells + money; return; } sound (self, CHAN_BODY, "misc/item2.wav", 1, ATTN_NORM); - } + + }; void(string arg1) Cmd_InvSell = @@ -1022,6 +562,88 @@ void(string arg1) Cmd_InvMix = sprint(self, PRINT_MEDIUM, "1 super stim created\n"); sound (self, CHAN_BODY, "misc/item1.wav", 1, ATTN_NORM); } + else if ((iid1 == IID_MISC_DUCKTAPE && iid2 == IID_MISC_AEROSOL) || + (iid2 == IID_MISC_DUCKTAPE && iid1 == IID_MISC_AEROSOL)) + { + x = FindEmptySlot(self); + + if (x == 0) + { + sprint(self, 2, "no more room in inventory!\n"); + sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); + return; + } + + DecreaseDestroySlot(23); + DecreaseDestroySlot(24); + + if (random()*100 > (self.skill_science*20)) + { + sprint(self, PRINT_MEDIUM, "your concoction failed!\n"); + sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); + return; + } + + + + + SetItemSlot(self, x, SlotVal(IID_EQUIP_SILENCER, 1)); + + sprint(self, PRINT_MEDIUM, "silencer created\n"); + sound (self, CHAN_BODY, "misc/item1.wav", 1, ATTN_NORM); + } + else if ((iid1 == IID_EQUIP_SILENCER && iid2 == IID_WP_USP) || + (iid2 == IID_EQUIP_SILENCER && iid1 == IID_WP_USP)) + { + if (random()*100 > (self.skill_science*20)) + { + sprint(self, PRINT_MEDIUM, "your concoction failed!\n"); + sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); + return; + } + x = FindEmptySlot(self); + + if (x == 0) + { + sprint(self, 2, "no more room in inventory!\n"); + sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); + return; + } + + DecreaseDestroySlot(23); + DecreaseDestroySlot(24); + + SetItemSlot(self, x, SlotVal(IID_WP_USP_S, 1)); + + sprint(self, PRINT_MEDIUM, "silencer created\n"); + sound (self, CHAN_BODY, "misc/item1.wav", 1, ATTN_NORM); + } + else if ((iid1 == IID_EQUIP_SILENCER && iid2 == IID_WP_GLOCK) || + (iid2 == IID_EQUIP_SILENCER && iid1 == IID_WP_GLOCK)) + { + if (random()*100 > (self.skill_science*20)) + { + sprint(self, PRINT_MEDIUM, "your concoction failed!\n"); + sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); + return; + } + x = FindEmptySlot(self); + + if (x == 0) + { + sprint(self, 2, "no more room in inventory!\n"); + sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); + return; + } + + DecreaseDestroySlot(23); + DecreaseDestroySlot(24); + + SetItemSlot(self, x, SlotVal(IID_WP_GLOCK_S, 1)); + + sprint(self, PRINT_MEDIUM, "silencer created\n"); + sound (self, CHAN_BODY, "misc/item1.wav", 1, ATTN_NORM); + } else if ((iid1 == IID_WP_NEEDLER && iid2 == IID_WP_NEEDLER) || (iid2 == IID_WP_NEEDLER && iid1 == IID_WP_NEEDLER)) { diff --git a/quakec/fallout2/csqc/invent.qc b/quakec/fallout2/csqc/invent.qc index 83c23a3ab..2fde5006c 100644 --- a/quakec/fallout2/csqc/invent.qc +++ b/quakec/fallout2/csqc/invent.qc @@ -107,7 +107,7 @@ void(vector pos, float slotno) SlotImage = drawpic(pos, strcat("gui/", itname), IMGSIZEV, '1 1 1', 1); it = ToStatus(it); - if (it < 1) + if (it <= 1) return; itname = ftos(it); it = strlen(itname); diff --git a/quakec/fallout2/hos.qc b/quakec/fallout2/hos.qc index cc747ce7b..70bfa8759 100644 --- a/quakec/fallout2/hos.qc +++ b/quakec/fallout2/hos.qc @@ -246,7 +246,7 @@ void (vector jojo) spawn_civilian = self.movetype = MOVETYPE_STEP; self.takedamage = DAMAGE_AIM; setmodel (self, "progs/hosfem.mdl"); - setsize (self, VEC_HULL_MIN, '16 16 32'); + setsize (self, '-10 -10 24', '10 10 24'); self.health = 80; self.netname = "civilian"; self.classname = "rhostage"; diff --git a/quakec/fallout2/inventory.qc b/quakec/fallout2/inventory.qc index 737dbbcda..d4e7f2a28 100644 --- a/quakec/fallout2/inventory.qc +++ b/quakec/fallout2/inventory.qc @@ -672,7 +672,7 @@ string(float iid) GetItemVModel = if (iid == IID_WP_ALIENBLASTER) return "progs/v_blaster.mdl"; if (iid >= IID_WP_PIPERIFLE && iid <= IID_WP_PIPERIFLE_S_R) - return "progs/v_pipe.mdl"; + return "progs/v_bozar.mdl"; if (iid == IID_WP_WINCHESTER) return "progs/v_double.mdl"; if (iid == IID_WP_MOSSBERG) @@ -697,7 +697,7 @@ string(float iid) GetItemVModel = if (iid == IID_WP_AK74) return "progs/v_ak47.mdl"; if (iid == IID_WP_ACR) - return "progs/v_acr.mdl"; + return "progs/v_bozar.mdl"; if (iid == IID_WP_DKS1) return "progs/v_srifle.mdl"; if (iid == IID_WP_DKS1_S) @@ -796,7 +796,7 @@ string(float iid) GetItemWModel = if (iid == IID_WP_AK74) return "progs/w_ak47.mdl"; if (iid == IID_WP_ACR) - return "progs/w_acr.mdl"; + return "progs/w_bozar.mdl"; if (iid == IID_WP_DKS1) return "progs/w_srifle.mdl"; if (iid == IID_WP_DKS1_S) @@ -920,7 +920,7 @@ float(float iid) WeaponAmmoType = if (iid == IID_WP_AK74) return IID_AM_WARSAW; if (iid == IID_WP_ACR) - return IID_AM_NEEDLER; + return IID_AM_762MM; if (iid == IID_WP_DKS1) return IID_AM_762MM; if (iid == IID_WP_DKS1_S) @@ -997,7 +997,7 @@ float(float iid) WeaponMagQuant = if (iid == IID_WP_AK74) return 30; if (iid == IID_WP_ACR) - return 24; + return 20; if (iid == IID_WP_DKS1) return 8; if (iid == IID_WP_DKS1_S) @@ -1081,7 +1081,7 @@ float(float iid) GetItemWeight = if (iid == IID_WP_AK74) return 5; if (iid == IID_WP_ACR) - return 5; + return 10; if (iid == IID_WP_DKS1) return 9; if (iid == IID_WP_DKS1_S) @@ -1211,7 +1211,7 @@ string(float iid) GetItemName = return "jackhammer (12g)"; if (iid == IID_WP_GREASEGUN) return "grease gun (.45 acp)"; - if (iid == IID_WP_GREASEGUN) + if (iid == IID_WP_MP9) return "mp9 (10mm)"; if (iid == IID_WP_RANGEMASTER) return "rangemaster (5.56mm)"; @@ -1226,7 +1226,7 @@ string(float iid) GetItemName = if (iid == IID_WP_AK74) return "ak-47 (7.62mm warsaw pact)"; if (iid == IID_WP_ACR) - return "steyr acr (5mm flechette)"; + return "bozar (7.62mm)"; if (iid == IID_WP_DKS1) return "knight sr-25 widowmaker (7.62mm)"; if (iid == IID_WP_DKS1_S) @@ -1250,8 +1250,6 @@ string(float iid) GetItemName = if (iid == IID_WP_LASERGATLING) return "laser minigun (energy)"; - - if (iid == IID_AM_NEEDLER) return "needler cartidge"; if (iid == IID_AM_2MMEC) @@ -1433,7 +1431,7 @@ float(float iid) GetBaseValue = if (iid == IID_WP_NEEDLER) return 80; if (iid == IID_WP_ALIENBLASTER) - return 200; + return 150; if (iid == IID_WP_PIPERIFLE) return 15; if (iid == IID_WP_PIPERIFLE_S) @@ -1477,7 +1475,7 @@ float(float iid) GetBaseValue = if (iid == IID_WP_AK74) return 20; if (iid == IID_WP_ACR) - return 240; + return 190; if (iid == IID_WP_DKS1) return 110; if (iid == IID_WP_DKS1_S) @@ -1711,7 +1709,7 @@ string(float iid) GetItemDesc = if (iid == IID_WP_AK112_M) return "this rifle has been modified to accept larger magazines"; if (iid == IID_WP_DKS1) - return "this sturdy rifle fires .308, a larger, more reliable round"; + return "this sturdy rifle fires .308\na larger and more reliable round"; if (iid == IID_WP_DKS1_S) return ".308 sniper rifle, silenced for stealth-ops"; if (iid == IID_WP_DKS1) @@ -1734,8 +1732,254 @@ string(float iid) GetItemDesc = return "great for devastating tactical strikes"; if (iid == IID_WP_LASERGATLING) return "quite simply, the ultimate in heavy firepower"; + if (iid == IID_WP_ACR) + return "sniper-style weapon that supports burst fire"; + if (iid == IID_AM_NEEDLER) + return "good armor-peircing properties"; + if (iid == IID_AM_2MMEC) + return "virtually ignores armor"; + if (iid == IID_AM_10MM) + return "jacketed hollow-points for good damage"; + if (iid == IID_AM_556MM) + return "standard rifle round, moderate recoil"; + if (iid == IID_AM_5MMHIGHVEL) + return "experimental high-velocity rifle ammo"; + if (iid == IID_AM_12GAUGESHELLS) + return "the old standard, has trouble with heavy armor"; + if (iid == IID_AM_ENERGYCELL) + return "this energy cell comes from an unknown origin"; + if (iid == IID_AM_762MM) + return "good stopping power and armor-piercing performance"; + if (iid == IID_AM_44MAGNUM) + return "full metal jacket, hit 'em hard"; + if (iid == IID_AM_WARSAW) + return "ancient soviet rifle round, used in the ak47"; + if (iid == IID_AM_45ACP) + return "a common pistol round with good stopping power"; + if (iid == IID_AM_ROCKET) + return "expensive and extremely lethal"; + if (iid == IID_AM_CASELESS) + return "a brick of small-caliber caseless ammo"; + + + if (iid == IID_GREN_FRAG) + return "all-purpose fragmentation grenade"; + if (iid == IID_GREN_EMP) + return "useful against robots and cyborgs"; + if (iid == IID_GREN_SMOKE) + return "very useful for a quick getaway!"; + if (iid == IID_GREN_FLASH) + return "temporarily blinds nearby enemies"; + if (iid == IID_GREN_STUN) + return "delivers a forceful shock to nearby enemies"; + + if (iid == IID_ARM_DESERT) + return "the light armor of a raider; makes a great disguise"; + if (iid == IID_ARM_LEATHER) + return "lightweight leather armor. provides great mobility."; + if (iid == IID_ARM_VANDAL) + return "enhanced leather armor for extra protection."; + if (iid == IID_ARM_METAL) + return "gives great protection at a sacrifice to speed."; + if (iid == IID_ARM_TESLA) + return "experimental armor with high deflection but low absorb."; + if (iid == IID_ARM_COMBAT) + return "this all-purpose armor is designed for combat missions."; + if (iid == IID_ARM_SEVA) + return "high-tech suit provides more environmental defense"; + if (iid == IID_ARM_FORCE) + return "experimental energy-field armor, very low absorb"; + if (iid == IID_ARM_LPOWER) + return "the heaviest armor with great protection"; + + + if (iid == IID_CHEM_STIMPACK) + return "advanced healing chem that replaces lost blood"; + if (iid == IID_CHEM_MEDICALBAG) + return "first aid kit with many high-tech supplies"; + if (iid == IID_CHEM_SUPERSTIM) + return "contains nanobots that heal very fast"; + if (iid == IID_CHEM_ADRENALINE) + return "boosts the metabolism, increasing jump and run speed"; + if (iid == IID_CHEM_PSYCHO) + return "unknown chemicals, probably of military origin"; + if (iid == IID_CHEM_BESERK) + return "unknown chemicals, probably of military origin"; + if (iid == IID_CHEM_RADX) + return "powerful anti-radiation pills"; + + + if (iid == IID_BUILD_MRAMMO) + return "provides extra ammunition"; + if (iid == IID_BUILD_SHIELDGEN) + return "protects all nearby allies"; + if (iid == IID_BUILD_AUTODOC) + return "the auto-doc will repair injuries"; + if (iid == IID_BUILD_ROBOFANG) + return "robofang guardian unit"; + if (iid == IID_BUILD_TTURRET) + return "dispatches hostile intruders"; + if (iid == IID_BUILD_RTURRET) + return "rocket turret"; + if (iid == IID_BUILD_GTURRET) + return "machine-gun turret"; + + + if (iid == IID_EQUIP_MEDIC_BAG) + return "allows more chems to be carried"; + if (iid == IID_EQUIP_GOGGLES) + return "protects against visual impairments"; + if (iid == IID_EQUIP_SILENCER) + return "attaches to any smallarm"; + if (iid == IID_EQUIP_BELTPOUCH) + return "useful for carrying extra grenades"; + if (iid == IID_EQUIP_TOOLKIT) + return "for picking all sorts of locks"; + if (iid == IID_EQUIP_BACKPACK) + return "this handy bag lets you carry more ammunition"; + if (iid == IID_EQUIP_CLIMBINGGEAR) + return "for those hard to reach places"; + if (iid == IID_EQUIP_BATTERY) + return "provides prolonged battery life"; + if (iid == IID_EQUIP_STEALTHBOY) + return "makes user blurry and hard to see"; + if (iid == IID_EQUIP_EXTENDER) + return "gives a weapon slightly longer range and damage"; + if (iid == IID_EQUIP_XRAY) + return "allows for enemy detection through walls"; + + if (iid == IID_MISC_NUKACOLA) + return "a bottle of tasty nuka-cola"; + if (iid == IID_MISC_JUNK) + return "metallic bits, pipe and other debris"; + if (iid == IID_MISC_CHEMICALS) + return "standard household cleaner"; + if (iid == IID_MISC_AEROSOL) + return "a half-full aerosol can"; + if (iid == IID_MISC_RDXCRYSTAL) + return "a batch of highly unstable explosive crystals"; + if (iid == IID_MISC_STEELPIPE) + return "a slightly rusted steel pipe"; + if (iid == IID_MISC_DUCKTAPE) + return "ancient, but still highly functional"; + if (iid == IID_MISC_LCD) + return "an lcd from a Lameboy DS videogame unit"; + if (iid == IID_MISC_CIRCUITBOARD) + return "a corroded circuit board from a remote control"; + if (iid == IID_MISC_COPPERWIRE) + return "a small spool of thin copper wire"; + if (iid == IID_MISC_HMXCOMPOUND) + return "a small amount of high-grade military explosive"; + if (iid == IID_MISC_GUM) + return "trident chewing gum, limited edition watermelon flavor"; + if (iid == IID_MISC_XRAYTUBE) + return "??? a strange device ???"; + + bprint(PRINT_MEDIUM, ftos(iid), " without a desc!\n"); + return strcat("", ftos(iid)); +}; + + +string(float iid) GetItemStats = +{ + if (iid == IID_NONE) + return ""; + + + if (iid == IID_WP_WRENCH) + return "a heavy multi-function wrench"; + if (iid == IID_WP_KNIFE) + return "great for stealth attacks"; + if (iid == IID_WP_SLEDGE) + return "a futuristic battle axe"; + if (iid == IID_WP_SPEAR) + return "a long, sharp polearm"; + if (iid == IID_WP_POWERAXE) + return "a futuristic axe of some sort"; + + if (iid == IID_WP_USP) + return "dmg: 14 rng: 20 ammo: .45 skill: combat"; + if (iid == IID_WP_USP_S) + return "dmg: 12 rng: 18 ammo: .45 skill: combat"; + if (iid == IID_WP_GLOCK) + return "dmg: 12 rng: 18 ammo: 10mm skill: combat"; + if (iid == IID_WP_GLOCK_S) + return "dmg: 10 rng: 16 ammo: 10mm skill: combat"; + if (iid == IID_WP_DEAGLE) + return "dmg: 18 rng: 30 ammo: .44 skill: combat"; + if (iid == IID_WP_DEAGLE_M) + return "dmg: 18 rng: 30 ammo: .44 skill: combat"; + if (iid == IID_WP_NEEDLER) + return "dmg: 16 rng: 20 ammo: nc skill: science"; + if (iid == IID_WP_ALIENBLASTER) + return "dmg: 48 rng: 15 ammo: cell skill: science"; + if (iid == IID_WP_PIPERIFLE) + return "dmg: 20 rng: 50 ammo: .44 skill: combat"; + if (iid == IID_WP_PIPERIFLE_S) + return "dmg: 18 rng: 45 ammo: .44 skill: combat"; + if (iid == IID_WP_PIPERIFLE_SCOPE) + return "dmg: 20 rng: 60 ammo: .44 skill: combat"; + if (iid == IID_WP_PIPERIFLE_R) + return "dmg: 20 rng: 50 ammo: .44 skill: combat"; + if (iid == IID_WP_PIPERIFLE_S_R) + return "dmg: 18 rng: 45 ammo: .44 skill: combat"; + if (iid == IID_WP_PIPERIFLE_SCOPE_R) + return "dmg: 20 rng: 60 ammo: .44 skill: combat"; + if (iid == IID_WP_PIPERIFLE_SCOPE_S) + return "dmg: 18 rng: 50 ammo: .44 skill: combat"; + if (iid == IID_WP_PIPERIFLE_SCOPE_S_R) + return "dmg: 18 rng: 50 ammo: .44 skill: combat"; + if (iid == IID_WP_WINCHESTER) + return "dmg: 40 rng: 10 ammo: 12ga skill: combat"; + if (iid == IID_WP_MOSSBERG) + return "dmg: 35 rng: 20 ammo: 12ga skill: combat"; + if (iid == IID_WP_JACKHAMMER) + return "dmg: 35 rng: 15 ammo: 12ga skill: combat"; + if (iid == IID_WP_GREASEGUN) + return "dmg: 14 rng: 15 ammo: .45 skill: combat"; + if (iid == IID_WP_GREASEGUN_S) + return "dmg: 12 rng: 10 ammo: .45 skill: combat"; + if (iid == IID_WP_MP9) + return "dmg: 12 rng: 15 ammo: 10mm skill: sneak"; + if (iid == IID_WP_MP9_S) + return "dmg: 10 rng: 15 ammo: 10mm skill: sneak"; + if (iid == IID_WP_RANGEMASTER) + return "dmg: 18 rng: 40 ammo: 5.56 skill: combat"; + if (iid == IID_WP_RANGEMASTER_SCOPE) + return "dmg: 18 rng: 50 ammo: 5.56 skill: combat"; + if (iid == IID_WP_AK47) + return "an outdated assault rifle with extreme durability"; + if (iid == IID_WP_AK112) + return "dmg: 16 rng: 40 ammo: 5mm skill: combat"; + if (iid == IID_WP_AK112_M) + return "dmg: 16 rng: 40 ammo: 5mm skill: combat"; + if (iid == IID_WP_DKS1) + return "dmg: 40 rng: 80 ammo: 7.62 skill: combat"; + if (iid == IID_WP_DKS1_S) + return "dmg: 35 rng: 70 ammo: 7.62 skill: combat"; + if (iid == IID_WP_MOONLIGHT) + return "dmg: 16 rng: 40 ammo: 5.56 skill: combat"; + if (iid == IID_WP_G11) + return "dmg: 14 rng: 40 ammo: csels skill: combat"; + if (iid == IID_WP_GAUSERIFLE) + return "dmg: 30 rng: 90 ammo: 2mmec skill: combat"; + if (iid == IID_WP_PULSERIFLE) + return "dmg: 16 rng: 40 ammo: 5mm skill: combat"; + if (iid == IID_WP_TURBOPLASMA) + return "dmg: 32 rng: 45 ammo: cell skill: science"; + if (iid == IID_WP_PLASMACARBINE) + return "dmg: 28 rng: 30 ammo: cell skill: science"; + if (iid == IID_WP_FNFAL) + return "dmg: 32 rng: 60 ammo: 7.62 skill: combat"; + if (iid == IID_WP_ROCKETLAUNCHER) + return "dmg: 100 rng: 30 ammo: rkt skill: combat"; + if (iid == IID_WP_LASERGATLING) + return "dmg: 24 rng: 60 ammo: cell skill: combat"; + if (iid == IID_WP_ACR) + return "dmg: 50 rng: 90 ammo: 7.62 skill: combat"; + if (iid == IID_AM_NEEDLER) return "good armor-peircing properties"; @@ -1918,13 +2162,13 @@ string(float iid) GetItemImage = if (iid >= IID_WP_PIPERIFLE && iid <= IID_WP_PIPERIFLE_S_R) return "prifle.jpg"; if (iid == IID_WP_WINCHESTER) - return "double.jpg"; + return "sawedoff.jpg"; if (iid == IID_WP_MOSSBERG) return "citykiller.jpg"; if (iid == IID_WP_JACKHAMMER) return "jackhammer.jpg"; if (iid == IID_WP_GREASEGUN) - return "ggun2.jpg"; + return "greasegun.jpg"; if (iid == IID_WP_MP9) return "mp9.jpg"; if (iid == IID_WP_RANGEMASTER) @@ -1940,7 +2184,7 @@ string(float iid) GetItemImage = if (iid == IID_WP_AK74) return "ak47.jpg"; if (iid == IID_WP_ACR) - return "acr.jpg"; + return "bozar.png"; if (iid == IID_WP_DKS1) return "dks1.png"; if (iid == IID_WP_DKS1_S) @@ -2164,7 +2408,7 @@ float(string itname) ItemIDOfName = return IID_WP_AK112_M; if (itname == "ak-74") return IID_WP_AK74; - if (itname == "acr") + if (itname == "bozar") return IID_WP_ACR; if (itname == "dks-1") return IID_WP_DKS1; @@ -2299,8 +2543,6 @@ float(string itname) ItemIDOfName = float(float slotno, float iid) FitsInSlot = { - if (IsEquip(iid)) - return false; if (!iid) //nothing can be put in every slot. return true; diff --git a/quakec/fallout2/items.qc b/quakec/fallout2/items.qc index 94139f01d..25022ca80 100644 --- a/quakec/fallout2/items.qc +++ b/quakec/fallout2/items.qc @@ -289,13 +289,13 @@ void() junk_touch = void() SpawnJunk = { - setorigin(self, self.origin + '0 0 64'); + setorigin(self, self.origin + '0 0 32'); self.movetype = MOVETYPE_BOUNCE; self.velocity_x = crandom()*600; self.velocity_y = crandom()*600; self.velocity_z = -100; - self.avelocity_y = crandom()*600; + self.avelocity_y = crandom()*300; if (random()*100 < 50) setmodel (self, "progs/junk1.mdl"); @@ -303,38 +303,38 @@ void() SpawnJunk = setmodel (self, "progs/junk2.mdl"); self.touch = junk_touch; - self.solid = SOLID_BBOX; + self.solid = SOLID_TRIGGER; setsize (self, '-12 -12 0', '12 12 12'); self.takedamage = DAMAGE_NO; self.classname = "random_junk"; if (random()*100 <= 10) - self.islot1 = IID_MISC_JUNK; + self.islot1 = SlotVal(IID_MISC_JUNK, 1); else if (random()*100 <= 10) - self.islot1 = IID_MISC_NUKACOLA; + self.islot1 = SlotVal(IID_MISC_NUKACOLA, 1); else if (random()*100 <= 10) - self.islot1 = IID_MISC_CHEMICALS; + self.islot1 = SlotVal(IID_MISC_CHEMICALS, 1); else if (random()*100 <= 10) - self.islot1 = IID_MISC_AEROSOL; + self.islot1 = SlotVal(IID_MISC_AEROSOL, 1); else if (random()*100 <= 10) - self.islot1 = IID_MISC_RDXCRYSTAL; + self.islot1 = SlotVal(IID_MISC_RDXCRYSTAL, 1); else if (random()*100 <= 10) - self.islot1 = IID_MISC_STEELPIPE; + self.islot1 = SlotVal(IID_MISC_STEELPIPE, 1); else if (random()*100 <= 10) - self.islot1 = IID_MISC_DUCKTAPE; + self.islot1 = SlotVal(IID_MISC_DUCKTAPE, 1); else if (random()*100 <= 10) - self.islot1 = IID_MISC_LCD; + self.islot1 = SlotVal(IID_MISC_LCD, 1); else if (random()*100 <= 10) - self.islot1 = IID_MISC_CIRCUITBOARD; + self.islot1 = SlotVal(IID_MISC_CIRCUITBOARD, 1); else if (random()*100 <= 10) - self.islot1 = IID_MISC_COPPERWIRE; + self.islot1 = SlotVal(IID_MISC_COPPERWIRE, 1); else if (random()*100 <= 10) - self.islot1 = IID_MISC_HMXCOMPOUND; + self.islot1 = SlotVal(IID_MISC_HMXCOMPOUND, 1); else if (random()*100 <= 10) - self.islot1 = IID_MISC_GUM; - else if (random()*100 <= 10) - self.islot1 = IID_MISC_XRAYTUBE; + self.islot1 = SlotVal(IID_MISC_GUM, 1); + else + self.islot1 = SlotVal(IID_MISC_JUNK, 1); if (random()*100 <= 10) self.flash = 2; @@ -358,9 +358,7 @@ void() TreasureChest = self.takedamage = DAMAGE_NO; self.classname = "treasure_chest"; - SpawnJunk(); - SpawnJunk(); - SpawnJunk(); + }; @@ -1327,6 +1325,9 @@ void() weapon_supershotgun = if (random()<0.25) TreasureChest(); + + SpawnJunk(); + SpawnJunk(); }; /*QUAKED weapon_nailgun (0 .5 .8) (-16 -16 0) (16 16 32) @@ -1342,6 +1343,9 @@ void() weapon_nailgun = Explosive(); else TreasureChest(); + + SpawnJunk(); + SpawnJunk(); }; /*QUAKED weapon_supernailgun (0 .5 .8) (-16 -16 0) (16 16 32) @@ -1357,6 +1361,10 @@ void() weapon_supernailgun = Explosive(); else if (random()*100 <= 40) TreasureChest(); + + SpawnJunk(); + SpawnJunk(); + SpawnJunk(); }; /*QUAKED weapon_grenadelauncher (0 .5 .8) (-16 -16 0) (16 16 32) @@ -1374,6 +1382,8 @@ void() weapon_grenadelauncher = else if (random()*100 <= 40) TreasureChest(); + SpawnJunk(); + }; /*QUAKED weapon_rocketlauncher (0 .5 .8) (-16 -16 0) (16 16 32) @@ -1390,6 +1400,7 @@ void() weapon_rocketlauncher = else if (random()*100 <= 40) TreasureChest(); + SpawnJunk(); }; @@ -1408,6 +1419,7 @@ void() weapon_lightning = else if (random()*100 <= 40) TreasureChest(); + SpawnJunk(); }; diff --git a/quakec/fallout2/menus.qc b/quakec/fallout2/menus.qc index 6953b3c8b..e337a8b14 100644 --- a/quakec/fallout2/menus.qc +++ b/quakec/fallout2/menus.qc @@ -469,8 +469,13 @@ string () MissionString = return ("‘‘‘ mission select ‘‘‘\n" "\n" "\n" - "1‘ get new mission\n" - "2‘ grab one later \n\n\n"); + "1‘ hostage rescue \n" + "2‘ capture supplies \n" + "3‘ shadow mission \n" + "4‘ zombie mission \n" + "5‘ destroy supplies \n" + "6‘ bomb defusal \n\n" + "7‘ grab one later \n"); }; string () DepartString = diff --git a/quakec/fallout2/misc.qc b/quakec/fallout2/misc.qc index addf315d1..dea400841 100644 --- a/quakec/fallout2/misc.qc +++ b/quakec/fallout2/misc.qc @@ -1028,61 +1028,24 @@ void() brotherhood_merchant = self.xslot15 = SlotVal(IID_CHEM_MEDICALBAG, 25); - if (random()*100 < 80) - self.xslot16 = SlotVal(IID_WP_AK112, 1); - else if (random()*100 < 20) - self.xslot16 = SlotVal(IID_WP_MOSSBERG, 1); - else if (random()*100 < 20) - self.xslot16 = SlotVal(IID_WP_FNFAL, 1); - else if (random()*100 < 20) - self.xslot16 = SlotVal(IID_WP_MOONLIGHT, 1); - else - self.xslot16 = SlotVal(IID_WP_G11, 1); - if (random()*100 < 80) - self.xslot17 = SlotVal(IID_WP_DKS1, 1); - else if (random()*100 < 20) - self.xslot17 = SlotVal(IID_WP_JACKHAMMER, 1); - else if (random()*100 < 20) - self.xslot17 = SlotVal(IID_WP_PLASMACARBINE, 1); - else if (random()*100 < 20) - self.xslot17 = SlotVal(IID_WP_ROCKETLAUNCHER, 1); - else - self.xslot17 = SlotVal(IID_WP_LASERGATLING, 1); + self.xslot16 = SlotVal(IID_WP_ACR, 1); + self.xslot17 = SlotVal(IID_AM_762MM, 30); + + + self.xslot18 = SlotVal(IID_WP_ALIENBLASTER, 1); + self.xslot19 = SlotVal(IID_AM_ENERGYCELL, 30); if (random()*100 < 20) - self.xslot18 = SlotVal(IID_AM_ENERGYCELL, 30); + self.xslot20 = SlotVal(IID_AM_ENERGYCELL, 30); else if (random()*100 < 20) - self.xslot18 = SlotVal(IID_EQUIP_BELTPOUCH, 1); + self.xslot20 = SlotVal(IID_EQUIP_BELTPOUCH, 1); else if (random()*100 < 20) - self.xslot18 = SlotVal(IID_EQUIP_STEALTHBOY, 1); + self.xslot20 = SlotVal(IID_EQUIP_STEALTHBOY, 1); else if (random()*100 < 20) - self.xslot18 = SlotVal(IID_EQUIP_CLIMBINGGEAR, 1); + self.xslot20 = SlotVal(IID_EQUIP_CLIMBINGGEAR, 1); else - self.xslot18 = SlotVal(IID_EQUIP_TOOLKIT, 1); - - if (random()*100 < 20) - self.xslot19 = SlotVal(IID_EQUIP_MEDIC_BAG, 1); - else if (random()*100 < 20) - self.xslot19 = SlotVal(IID_AM_CASELESS, 30); - else if (random()*100 < 20) - self.xslot19 = SlotVal(IID_AM_2MMEC, 30); - else if (random()*100 < 20) - self.xslot19 = SlotVal(IID_EQUIP_BACKPACK, 1); - else - self.xslot19 = SlotVal(IID_EQUIP_TOOLKIT, 1); - - - if (random()*100 < 20) - self.xslot20 = SlotVal(IID_MISC_NUKACOLA, 1); - else if (random()*100 < 20) - self.xslot20 = SlotVal(IID_MISC_CHEMICALS, 1); - else if (random()*100 < 20) - self.xslot20 = SlotVal(IID_MISC_AEROSOL, 1); - else if (random()*100 < 20) - self.xslot20 = SlotVal(IID_MISC_DUCKTAPE, 1); - else - self.xslot20 = SlotVal(IID_MISC_XRAYTUBE, 1); + self.xslot20 = SlotVal(IID_EQUIP_TOOLKIT, 1); }; void() brotherhood_sergeant = diff --git a/quakec/fallout2/mod_buy.qc b/quakec/fallout2/mod_buy.qc index 4de8c3c8a..9ce5b0eac 100644 --- a/quakec/fallout2/mod_buy.qc +++ b/quakec/fallout2/mod_buy.qc @@ -976,10 +976,10 @@ void() W_PlayerMenu = } else if (self.currentmenu == "select_mission") { - if (self.impulse == 1) + if (self.impulse >= 1 && self.impulse <= 6) { if (infokey(world, "objective") == "return" || infokey(world, "objective") == "start") - get_new_mission(); + get_new_mission(1); else { sprint(self, 2, "you're already on a mission!\n"); @@ -993,7 +993,8 @@ void() W_PlayerMenu = self.impulse = 0; return; } - else if (self.impulse == 2) + + else { centerprint(self, "\n"); self.currentmenu = "none"; diff --git a/quakec/fallout2/weapons.qc b/quakec/fallout2/weapons.qc index 97f2f987a..8122d25ef 100644 --- a/quakec/fallout2/weapons.qc +++ b/quakec/fallout2/weapons.qc @@ -1589,7 +1589,7 @@ void() W_Attack = else if (weap == IID_WP_USP) FirePistol(14, 6, "weapons/usp.wav", 2000, 0.1); else if (weap == IID_WP_USP_S) - FirePistol(12, 6, "weapons/smg_s.wav", 2000, 0.1); + FirePistol(12, 6, "weapons/smg_s.wav", 1800, 0.1); else if (weap == IID_WP_DEAGLE) FirePistol(18, 9, "weapons/deagle.wav", 3000, 0.1); else if (weap == IID_WP_DEAGLE_M) @@ -1641,9 +1641,9 @@ void() W_Attack = else if (weap == IID_WP_AK112_M) FireAssaultRifle(16, 10, "weapons/ak112.wav", 4000, 0.095); else if (weap == IID_WP_ACR) - FireAssaultRifle(16, 7, "weapons/ak112.wav", 9000, 0.090); + FireAssaultRifle(25, 7, "weapons/bozar.wav", 9000, 0.090); else if (weap == IID_WP_AK74) - FireAssaultRifle(20, 12, "ogre/ak47.wav", 3500, 0.090); + FireAssaultRifle(45, 12, "ogre/ak47.wav", 3500, 0.090); else if (weap == IID_WP_DKS1) FireAssaultRifle(40, 3, "weapons/dks-1.wav", 8000, 0.2); else if (weap == IID_WP_MOONLIGHT && self.zoom == 0) diff --git a/quakec/fallout2/world.qc b/quakec/fallout2/world.qc index 8e988c775..63c9d020e 100644 --- a/quakec/fallout2/world.qc +++ b/quakec/fallout2/world.qc @@ -227,9 +227,9 @@ void() load_monster = if (world.map_ent2 == 6) monster_ogre(); if (world.map_ent2 == 7) - monster_wizard(); + monster_army(); if (world.map_ent2 == 8) - monster_knight(); + monster_demon1(); if (world.map_ent2 == 9) monster_demon1(); if (world.map_ent2 == 10) @@ -1969,6 +1969,7 @@ void() worldspawn = precache_model ("progs/v_smg.mdl"); precache_model ("progs/v_rangem.mdl"); precache_model ("progs/v_pipe.mdl"); + precache_model ("progs/v_bozar.mdl"); precache_model ("progs/v_double.mdl"); precache_model ("progs/v_combat.mdl"); precache_model ("progs/v_mp9.mdl"); @@ -2035,6 +2036,7 @@ void() worldspawn = precache_model ("progs/w_rocket.mdl"); precache_model ("progs/w_plasma.mdl"); precache_model ("progs/w_chain.mdl"); + precache_model ("progs/w_bozar.mdl"); precache_model ("progs/money.mdl"); precache_model ("progs/turrgun.mdl"); @@ -2146,6 +2148,7 @@ void() worldspawn = precache_sound ("weapons/moonlight-1.wav"); precache_sound ("weapons/moonlight-2.wav"); precache_sound ("weapons/needler.wav"); + precache_sound ("weapons/bozar.wav"); precache_sound ("weapons/smg_s.wav"); precache_sound ("weapons/shotgun1.wav"); precache_sound ("weapons/mp5.wav");