diff --git a/quakec/fallout2/client.qc b/quakec/fallout2/client.qc index 7f975477d..705494cc1 100644 --- a/quakec/fallout2/client.qc +++ b/quakec/fallout2/client.qc @@ -1132,7 +1132,7 @@ void() WaterMove = else self.dmgtime = time + 0.2; - T_Damage (self, world, world, 10*self.waterlevel); + self.radiation = self.radiation + (1*self.waterlevel); } } else if (self.watertype == CONTENT_SLIME) @@ -1140,7 +1140,8 @@ void() WaterMove = if (self.dmgtime < time && self.rage != IID_CHEM_RADX) { self.dmgtime = time + 1; - T_Damage (self, world, world, 4*self.waterlevel); + + self.radiation = self.radiation + ((1*self.waterlevel)/2); } } @@ -2074,9 +2075,9 @@ void() ClientConnect = stuffcmd(self, "alias stimpack impulse 225\n"); stuffcmd(self, "alias equip \"cmd invuse 4\"\n"); stuffcmd(self, "alias q1 \"cmd invuse 5\"\n"); - stuffcmd(self, "alias q2 \"cmd invuse 6\"\n"); + stuffcmd(self, "alias q2 \"cmd invuse 11\"\n"); stuffcmd(self, "alias quick1 \"cmd invuse 5\"\n"); - stuffcmd(self, "alias quick2 \"cmd invuse 6\"\n"); + stuffcmd(self, "alias quick2 \"cmd invuse 11\"\n"); stuffcmd(self, "alias toolkit \"cmd invswap toolkit 2;impulse 2\"\n"); diff --git a/quakec/fallout2/cmds.qc b/quakec/fallout2/cmds.qc index 07c833f20..07b998bd5 100644 --- a/quakec/fallout2/cmds.qc +++ b/quakec/fallout2/cmds.qc @@ -311,6 +311,8 @@ void(string arg1, string arg2) Cmd_GainPerk = self.perk1 = 9; if (arg1 == "10") self.perk1 = 10; + if (arg1 == "11") + self.perk1 = 11; } if (arg2 == "2") { @@ -334,6 +336,8 @@ void(string arg1, string arg2) Cmd_GainPerk = self.perk2 = 9; if (arg1 == "10") self.perk2 = 10; + if (arg1 == "11") + self.perk2 = 11; } }; @@ -599,22 +603,22 @@ void(string arg1) Cmd_InvMix = DecreaseDestroySlot(23); DecreaseDestroySlot(24); - if (random()*100 > (self.skill_science*8)) + if (random()*100 > (self.skill_science*20)) { sprint(self, PRINT_MEDIUM, "your concoction exploded!\n"); Explosion(); return; } - if (random()*100 < ((self.skill_science*8) - 100)) + if (random()*100 < ((self.skill_science*20) - 100)) { - sprint(self, PRINT_MEDIUM, "2 grenades created!\n"); + sprint(self, PRINT_MEDIUM, "3 nuka bombs created!\n"); sound (self, CHAN_BODY, "misc/yourturn.wav", 1, ATTN_NORM); - TryGiveStackable(self, IID_GREN_FRAG, 2); + TryGiveStackable(self, IID_GREN_FRAG, 3); return; } TryGiveStackable(self, IID_GREN_FRAG, 1); - sprint(self, PRINT_MEDIUM, "1 grenade created\n"); + sprint(self, PRINT_MEDIUM, "1 nuka bomb created\n"); sound (self, CHAN_BODY, "misc/item1.wav", 1, ATTN_NORM); } else if ((iid1 == IID_MISC_CHEMICALS && iid2 == IID_MISC_RDXCRYSTAL) || diff --git a/quakec/fallout2/combat.qc b/quakec/fallout2/combat.qc index 3d30721a7..186855113 100644 --- a/quakec/fallout2/combat.qc +++ b/quakec/fallout2/combat.qc @@ -115,7 +115,7 @@ This should be the only function that ever reduces health. void(entity targ, entity inflictor, entity attacker, float damage) T_Damage = { local entity oldself; - local float save, dm; + local float save, dm, radpenalty; local float take, severity, helm; local string attackerteam, targteam; local string info1, info2; @@ -137,6 +137,15 @@ void(entity targ, entity inflictor, entity attacker, float damage) T_Damage = if (targ.classname == "player") damage = floor(damage * 0.60);*/ + if (targ.radiation > 0) + { + radpenalty = 1 + (targ.radiation/100); + + if (radpenalty > 1.25) + radpenalty = 1.25; + + damage = damage * radpenalty; + } //getting hurt is slightly painful to the score, play cautiously! if (attacker.classname == "monster" && targ.classname == "player") @@ -449,31 +458,31 @@ take = damage; switch(ToIID(targ.islot3)) { case IID_ARM_DESERT: - take -= 2; + take -= 1; break; case IID_ARM_LEATHER: - take -= 3; + take -= 2; break; case IID_ARM_VANDAL: - take -= 5; + take -= 3; break; case IID_ARM_METAL: take -= 1; break; case IID_ARM_TESLA: - take -= 6; + take -= 5; break; case IID_ARM_COMBAT: take -= 6; break; case IID_ARM_SEVA: - take -= 6; + take -= 5; break; case IID_ARM_FORCE: take -= 9; break; case IID_ARM_LPOWER: - take -= 10; + take -= 8; break; default: break; @@ -485,7 +494,7 @@ take = damage; take = take * 0.80; break; case IID_ARM_VANDAL: - take = take * 0.70; + take = take * 0.65; break; case IID_ARM_METAL: take = take * 0.40; diff --git a/quakec/fallout2/csqc/invent.qc b/quakec/fallout2/csqc/invent.qc index 01c33a785..29ea43fcc 100644 --- a/quakec/fallout2/csqc/invent.qc +++ b/quakec/fallout2/csqc/invent.qc @@ -14,6 +14,8 @@ float scrheight; vector mousepos; float showcontextmenu; +float showmixmenu; + vector contextpos; float slotnum; //the current slot under the mousecursor @@ -121,6 +123,53 @@ void(vector pos, float slotno) SlotImage = drawstring(pos + IMGSIZEV - '0 8 0' - '8 0 0'*it, itname, '8 8 8', '1 1 1', 1); }; +void(vector pos, float slotno, vector imgsize) SlotImageBig = +{ + local float it, mod_s, mod_e; + local string itname; + + + if (slotno == downslotnum && slotnum) + slotno = slotnum; + else if (slotno == slotnum && downslotnum) + slotno = downslotnum; + + if (slotno <= 16) + it = getstati(31+slotno); + else + { + if (slotno == 17) + it = getstati(91); + if (slotno == 18) + it = getstati(92); + if (slotno == 19) + it = getstati(93); + if (slotno == 20) + it = getstati(94); + if (slotno == 21) + it = getstati(95); + if (slotno == 22) + it = getstati(96); + if (slotno == 23) + it = getstati(97); + if (slotno == 24) + it = getstati(98); + if (slotno == 25) + it = getstati(104); + if (slotno == 26) + it = getstati(105); + } + + itname = GetItemImage(ToIID(it)); + drawpic(pos, strcat("gui/weapons/", itname), imgsize, '1 1 1', 1); + + it = ToStatus(it); + if (it <= 1) + return; + itname = ftos(it); + it = strlen(itname); + drawstring(pos + IMGSIZEV - '0 8 0' - '8 0 0'*it, itname, '8 8 8', '1 1 1', 1); +}; void(vector pos, float slotno) SlotImageSmall = @@ -492,7 +541,7 @@ void() Trader_Draw = if (slotnum <= 20) it = getstati(70+slotnum); - itname = GetItemDesc(ToIID(it)); + itname = GetItemName(ToIID(it)); drawstring('32 16 0', itname, '8 8 0', '1 1 1', 1); price = GetBaseValue(ToIID(it)); @@ -513,30 +562,30 @@ void() Perks_Draw = { local string perki, perk2i, p1, p2; - drawpic('0 0 0', "gui/pipboy/perks.png", '640 480 0', '1 1 1', 1); + drawpic('0 0 0', "gui/pipboy/perks.png", '640 480 0'*(scrwidth/640), '1 1 1', 1); - if (mousepos_y >= 2.0*IMGSIZEF && mousepos_y <= 4*IMGSIZEF) + if (mousepos_y >= 2.0*IMGSIZEF*(scrwidth/640) && mousepos_y <= 4*IMGSIZEF*(scrwidth/640)) { - if (mousepos_x >= 3*IMGSIZEF && mousepos_x <= 5.5*IMGSIZEF) + if (mousepos_x >= 3*IMGSIZEF*(scrwidth/640) && mousepos_x <= 5.5*IMGSIZEF*(scrwidth/640)) selected_class = 8; - else if (mousepos_x >= 6*IMGSIZEF && mousepos_x <= 7.5*IMGSIZEF) + else if (mousepos_x >= 6*IMGSIZEF*(scrwidth/640) && mousepos_x <= 7.5*IMGSIZEF*(scrwidth/640)) selected_class = 9; else selected_class = 0; } - else if (mousepos_y >= 390 && mousepos_y <= 425) + else if (mousepos_y >= 390*(scrwidth/640) && mousepos_y <= 425*(scrwidth/640)) { - if (mousepos_x >= 300 && mousepos_x <= 335) + if (mousepos_x >= 300*(scrwidth/640) && mousepos_x <= 335*(scrwidth/640)) selected_class = 5; - else if (mousepos_x >= 350 && mousepos_x <= 385) + else if (mousepos_x >= 350*(scrwidth/640) && mousepos_x <= 385*(scrwidth/640)) selected_class = 6; - else if (mousepos_x >= 400 && mousepos_x <= 435) + else if (mousepos_x >= 400*(scrwidth/640) && mousepos_x <= 435*(scrwidth/640)) selected_class = 7; else selected_class = 0; @@ -548,15 +597,14 @@ void() Perks_Draw = perk2i = GetPerkImage(getstati(59)); - drawpic('3.5 2 0'*IMGSIZEF, perki, '128 128 0', '1 1 1', 1); - - drawpic('6 2 0'*IMGSIZEF, perk2i, '128 128 0', '1 1 1', 1); + drawpic('3.5 2 0'*IMGSIZEF*(scrwidth/640), perki, '128 128 0'*(scrwidth/640), '1 1 1', 1); + drawpic('6 2 0'*IMGSIZEF*(scrwidth/640), perk2i, '128 128 0'*(scrwidth/640), '1 1 1', 1); p1 = PerkNameCentered(1, getstati(60)); p2 = PerkNameCentered(2, getstati(59)); - drawstring('4 4.5 0'*IMGSIZEF - '45 0 0', p1, '8 8 8', '1 1 1', 1); - drawstring('6 4.5 0'*IMGSIZEF - '7 0 0', p2, '8 8 8', '1 1 1', 1); + drawstring('4 4.5 0'*IMGSIZEF*(scrwidth/640) - '45 0 0'*(scrwidth/640), p1, '8 8 8'*(scrwidth/640), '1 1 1', 1); + drawstring('6 4.5 0'*IMGSIZEF*(scrwidth/640) - '7 0 0'*(scrwidth/640), p2, '8 8 8'*(scrwidth/640), '1 1 1', 1); @@ -568,42 +616,60 @@ void() Items_Draw = local float it; local string itname; - drawpic('0 0 0', "gui/pipboy/items.png", '640 480 0', '1 1 1', 1); + drawpic('0 0 0', "gui/pipboy/items.png", '640 480 0'*(scrwidth/640), '1 1 1', 1); - if (mousepos_y >= 390 && mousepos_y <= 425) + if (mousepos_y >= 390*(scrwidth/640) && mousepos_y <= 425*(scrwidth/640)) { - drawpic('0 0 0', "gui/pipboy/items.png", '640 480 0', '1 1 1', 1); + drawpic('0 0 0', "gui/pipboy/items.png", '640 480 0'*(scrwidth/640), '1 1 1', 1); - if (mousepos_x >= 300 && mousepos_x <= 325) + if (mousepos_x >= 300*(scrwidth/640) && mousepos_x <= 325*(scrwidth/640)) selected_class = 5; - else if (mousepos_x >= 350 && mousepos_x <= 385) + else if (mousepos_x >= 350*(scrwidth/640) && mousepos_x <= 385*(scrwidth/640)) selected_class = 6; - else if (mousepos_x >= 400 && mousepos_x <= 435) + else if (mousepos_x >= 400*(scrwidth/640) && mousepos_x <= 435*(scrwidth/640)) selected_class = 7; else selected_class = 0; } - SlotImage('3 1.25 0'*IMGSIZEF, 1); + SlotImageBig('3 1.25 0'*IMGSIZEF*(scrwidth/640), 1, '180 64 0'*(scrwidth/640)); - SlotImage('3 2.75 0'*IMGSIZEF, 2); + SlotImageBig('5.5 2.75 0'*IMGSIZEF*(scrwidth/640), 2, '180 64 0'*(scrwidth/640)); - SlotImage('3 4.25 0'*IMGSIZEF, 3); + SlotImageBig('3 3.4 0'*IMGSIZEF*(scrwidth/640), 3, '128 128 0'*(scrwidth/640)); it = getstati(32); itname = GetItemName(ToIID(it)); - drawstring('4 1.5 0'*IMGSIZEF + '0 0 0', itname, '8 8 0', '1 1 1', 1); + drawstring('3 1 0'*IMGSIZEF*(scrwidth/640) + '0 0 0'*(scrwidth/640), itname, '8 8 0'*(scrwidth/640), '1 1 1', 1); + itname = (ftos(GetWeaponDamage(ToIID(it)))); + drawstring('6 1.5 0'*IMGSIZEF*(scrwidth/640) + '0 8 0'*(scrwidth/640), strcat("damage: ", itname, "\n"), '8 8 0'*(scrwidth/640), '1 1 1', 1); + itname = (ftos(GetWeaponRange(ToIID(it)))); + drawstring('6 1.5 0'*IMGSIZEF*(scrwidth/640) + '0 16 0'*(scrwidth/640), strcat("range: ", itname, "\n"), '8 8 0'*(scrwidth/640), '1 1 1', 1); + itname = (ftos(GetItemWeight(ToIID(it)))); + drawstring('6 1.5 0'*IMGSIZEF*(scrwidth/640) + '0 24 0'*(scrwidth/640), strcat("weight: ", itname, "\n"), '8 8 0'*(scrwidth/640), '1 1 1', 1); it = getstati(33); itname = GetItemName(ToIID(it)); - drawstring('4 3 0'*IMGSIZEF + '0 0 0', itname, '8 8 0', '1 1 1', 1); + drawstring('5.5 2.5 0'*IMGSIZEF*(scrwidth/640) + '0 0 0'*(scrwidth/640), itname, '8 8 0'*(scrwidth/640), '1 1 1', 1); + itname = (ftos(GetWeaponDamage(ToIID(it)))); + drawstring('4.5 2.8 0'*IMGSIZEF*(scrwidth/640) + '0 8 0'*(scrwidth/640), strcat("damage: ", itname, "\n"), '8 8 0'*(scrwidth/640), '1 1 1', 1); + itname = (ftos(GetWeaponRange(ToIID(it)))); + drawstring('4.5 2.8 0'*IMGSIZEF*(scrwidth/640) + '0 16 0'*(scrwidth/640), strcat("range: ", itname, "\n"), '8 8 0'*(scrwidth/640), '1 1 1', 1); + itname = (ftos(GetItemWeight(ToIID(it)))); + drawstring('4.5 2.8 0'*IMGSIZEF*(scrwidth/640) + '0 24 0'*(scrwidth/640), strcat("weight: ", itname, "\n"), '8 8 0'*(scrwidth/640), '1 1 1', 1); it = getstati(34); itname = GetItemName(ToIID(it)); - drawstring('4 4.5 0'*IMGSIZEF + '0 0 0', itname, '8 8 0', '1 1 1', 1); + drawstring('3 5 0'*IMGSIZEF*(scrwidth/640) + '0 0 0'*(scrwidth/640), itname, '8 8 0'*(scrwidth/640), '1 1 1', 1); + itname = (ftos(GetArmorThreshold(ToIID(it)))); + drawstring('5 4.3 0'*IMGSIZEF*(scrwidth/640) + '0 8 0'*(scrwidth/640), strcat("threshold: ", itname, "\n"), '8 8 0'*(scrwidth/640), '1 1 1', 1); + itname = (ftos(GetArmorAbsorb(ToIID(it)))); + drawstring('5 4.3 0'*IMGSIZEF*(scrwidth/640) + '0 16 0'*(scrwidth/640), strcat("absorb: ", itname, "\n"), '8 8 0'*(scrwidth/640), '1 1 1', 1); + itname = (ftos(GetItemWeight(ToIID(it)))); + drawstring('5 4.3 0'*IMGSIZEF*(scrwidth/640) + '0 24 0'*(scrwidth/640), strcat("weight: ", itname, "\n"), '8 8 0'*(scrwidth/640), '1 1 1', 1); drawpic(mousepos, "gui/cursor.jpg", '1 1 0'*CURSORSIZE, '1 1 1', 1); }; @@ -615,55 +681,64 @@ void() GainPerk_Draw = local float it; local string itname, pn, pd; - drawpic('0 0 0', "gui/pipboy/gainperk.png", '640 480 0', '1 1 1', 1); + drawpic('0 0 0', "gui/pipboy/gainperk.png", '640 480 0'*(scrwidth/640), '1 1 1', 1); - if (mousepos_y >= 2*IMGSIZEF && mousepos_y <= 3*IMGSIZEF) + if (mousepos_y >= 2*IMGSIZEF*(scrwidth/640) && mousepos_y <= 3*IMGSIZEF*(scrwidth/640)) { - if (mousepos_x >= 2*IMGSIZEF && mousepos_x <= 3*IMGSIZEF) + if (mousepos_x >= 2*IMGSIZEF*(scrwidth/640) && mousepos_x <= 3*IMGSIZEF*(scrwidth/640)) which_perk = 1; - else if (mousepos_x >= 3*IMGSIZEF && mousepos_x <= 4*IMGSIZEF) + else if (mousepos_x >= 3*IMGSIZEF*(scrwidth/640) && mousepos_x <= 4*IMGSIZEF*(scrwidth/640)) which_perk = 2; - else if (mousepos_x >= 4*IMGSIZEF && mousepos_x <= 5*IMGSIZEF) + else if (mousepos_x >= 4*IMGSIZEF*(scrwidth/640) && mousepos_x <= 5*IMGSIZEF*(scrwidth/640)) which_perk = 3; - else if (mousepos_x >= 5*IMGSIZEF && mousepos_x <= 6*IMGSIZEF) + else if (mousepos_x >= 5*IMGSIZEF*(scrwidth/640) && mousepos_x <= 6*IMGSIZEF*(scrwidth/640)) which_perk = 4; - else if (mousepos_x >= 6*IMGSIZEF && mousepos_x <= 7*IMGSIZEF) + else if (mousepos_x >= 6*IMGSIZEF*(scrwidth/640) && mousepos_x <= 7*IMGSIZEF*(scrwidth/640)) which_perk = 5; else which_perk = 0; } - if (mousepos_y >= 3*IMGSIZEF && mousepos_y <= 4*IMGSIZEF) + if (mousepos_y >= 3*IMGSIZEF*(scrwidth/640) && mousepos_y <= 4*IMGSIZEF*(scrwidth/640)) { - if (mousepos_x >= 2*IMGSIZEF && mousepos_x <= 3*IMGSIZEF) + if (mousepos_x >= 2*IMGSIZEF*(scrwidth/640) && mousepos_x <= 3*IMGSIZEF*(scrwidth/640)) which_perk = 6; - else if (mousepos_x >= 3*IMGSIZEF && mousepos_x <= 4*IMGSIZEF) + else if (mousepos_x >= 3*IMGSIZEF*(scrwidth/640) && mousepos_x <= 4*IMGSIZEF*(scrwidth/640)) which_perk = 7; - else if (mousepos_x >= 4*IMGSIZEF && mousepos_x <= 5*IMGSIZEF) + else if (mousepos_x >= 4*IMGSIZEF*(scrwidth/640) && mousepos_x <= 5*IMGSIZEF*(scrwidth/640)) which_perk = 8; - else if (mousepos_x >= 5*IMGSIZEF && mousepos_x <= 6*IMGSIZEF) + else if (mousepos_x >= 5*IMGSIZEF*(scrwidth/640) && mousepos_x <= 6*IMGSIZEF*(scrwidth/640)) which_perk = 9; - else if (mousepos_x >= 6*IMGSIZEF && mousepos_x <= 7*IMGSIZEF) + else if (mousepos_x >= 6*IMGSIZEF*(scrwidth/640) && mousepos_x <= 7*IMGSIZEF*(scrwidth/640)) which_perk = 10; else which_perk = 0; } + if (mousepos_y >= 4*IMGSIZEF*(scrwidth/640) && mousepos_y <= 5*IMGSIZEF*(scrwidth/640)) + { + if (mousepos_x >= 2*IMGSIZEF*(scrwidth/640) && mousepos_x <= 3*IMGSIZEF*(scrwidth/640)) + which_perk = 11; + else + which_perk = 0; + } - drawpic('2 2 0'*IMGSIZEF, "gui/perks/Support Fire.png", '64 64 0', '1 1 1', 1); - drawpic('3 2 0'*IMGSIZEF, "gui/perks/Duck And Cover", '64 64 0', '1 1 1', 1); - drawpic('4 2 0'*IMGSIZEF, "gui/perks/Harmless.png", '64 64 0', '1 1 1', 1); - drawpic('5 2 0'*IMGSIZEF, "gui/perks/Stay Low.png", '64 64 0', '1 1 1', 1); - drawpic('6 2 0'*IMGSIZEF, "gui/perks/Surgical Precision.png", '64 64 0', '1 1 1', 1); + drawpic('2 2 0'*IMGSIZEF*(scrwidth/640), "gui/perks/Support Fire.png", '64 64 0'*(scrwidth/640), '1 1 1', 1); + drawpic('3 2 0'*IMGSIZEF*(scrwidth/640), "gui/perks/Duck And Cover", '64 64 0'*(scrwidth/640), '1 1 1', 1); + drawpic('4 2 0'*IMGSIZEF*(scrwidth/640), "gui/perks/Harmless.png", '64 64 0'*(scrwidth/640), '1 1 1', 1); + drawpic('5 2 0'*IMGSIZEF*(scrwidth/640), "gui/perks/Stay Low.png", '64 64 0'*(scrwidth/640), '1 1 1', 1); + drawpic('6 2 0'*IMGSIZEF*(scrwidth/640), "gui/perks/Surgical Precision.png", '64 64 0'*(scrwidth/640), '1 1 1', 1); - drawpic('2 3 0'*IMGSIZEF, "gui/perks/Mutation.png", '64 64 0', '1 1 1', 1); - drawpic('3 3 0'*IMGSIZEF, "gui/perks/Narrow Escape.png", '64 64 0', '1 1 1', 1); - drawpic('4 3 0'*IMGSIZEF, "gui/perks/Schizophrenia.png", '64 64 0', '1 1 1', 1); - drawpic('5 3 0'*IMGSIZEF, "gui/perks/Sleep Tight.png", '64 64 0', '1 1 1', 1); - drawpic('6 3 0'*IMGSIZEF, "gui/perks/Economic Moves.png", '64 64 0', '1 1 1', 1); + drawpic('2 3 0'*IMGSIZEF*(scrwidth/640), "gui/perks/Mutation.png", '64 64 0'*(scrwidth/640), '1 1 1', 1); + drawpic('3 3 0'*IMGSIZEF*(scrwidth/640), "gui/perks/Narrow Escape.png", '64 64 0'*(scrwidth/640), '1 1 1', 1); + drawpic('4 3 0'*IMGSIZEF*(scrwidth/640), "gui/perks/Schizophrenia.png", '64 64 0'*(scrwidth/640), '1 1 1', 1); + drawpic('5 3 0'*IMGSIZEF*(scrwidth/640), "gui/perks/Sleep Tight.png", '64 64 0'*(scrwidth/640), '1 1 1', 1); + drawpic('6 3 0'*IMGSIZEF*(scrwidth/640), "gui/perks/Economic Moves.png", '64 64 0'*(scrwidth/640), '1 1 1', 1); + + drawpic('2 4 0'*IMGSIZEF*(scrwidth/640), "gui/perks/Nuclear Man.png", '64 64 0'*(scrwidth/640), '1 1 1', 1); pn = PerkName(1, which_perk); pd = GetPerkDesc(which_perk); - drawstring('32 16 0', pn, '8 8 0', '1 1 1', 1); - drawstring('32 32 0', pd, '8 8 0', '1 1 1', 1); + drawstring('32 16 0'*(scrwidth/640), pn, '8 8 0'*(scrwidth/640), '1 1 1', 1); + drawstring('32 32 0'*(scrwidth/640), pd, '8 8 0'*(scrwidth/640), '1 1 1', 1); drawpic(mousepos, "gui/cursor.jpg", '1 1 0'*CURSORSIZE, '1 1 1', 1); @@ -681,99 +756,101 @@ void() Pipboy_Draw = - if (mousepos_y >= 200 && mousepos_y <= 325) + if (mousepos_y >= 200*(scrwidth/640) && mousepos_y <= 325*(scrwidth/640)) { - if (mousepos_x >= 150 && mousepos_x <= 250) + if (mousepos_x >= 150*(scrwidth/640) && mousepos_x <= 250*(scrwidth/640)) { - drawpic('0 0 0', "gui/pipboy/skills2.jpg", '640 480 0', '1 1 1', 1); + drawpic('0 0 0', "gui/pipboy/skills2.jpg", '640 480 0'*(scrwidth/640), '1 1 1', 1); selected_class = 1; } - else if (mousepos_x >= 250 && mousepos_x <= 350) + else if (mousepos_x >= 250*(scrwidth/640) && mousepos_x <= 350*(scrwidth/640)) { - drawpic('0 0 0', "gui/pipboy/skills3.jpg", '640 480 0', '1 1 1', 1); + drawpic('0 0 0', "gui/pipboy/skills3.jpg", '640 480 0'*(scrwidth/640), '1 1 1', 1); selected_class = 2; } - else if (mousepos_x >= 350 && mousepos_x <= 450) + else if (mousepos_x >= 350*(scrwidth/640) && mousepos_x <= 450*(scrwidth/640)) { - drawpic('0 0 0', "gui/pipboy/skills4.jpg", '640 480 0', '1 1 1', 1); + drawpic('0 0 0', "gui/pipboy/skills4.jpg", '640 480 0'*(scrwidth/640), '1 1 1', 1); selected_class = 3; } - else if (mousepos_x >= 450 && mousepos_x <= 550) + else if (mousepos_x >= 450*(scrwidth/640) && mousepos_x <= 550*(scrwidth/640)) { - drawpic('0 0 0', "gui/pipboy/skills5.jpg", '640 480 0', '1 1 1', 1); + drawpic('0 0 0', "gui/pipboy/skills5.jpg", '640 480 0'*(scrwidth/640), '1 1 1', 1); selected_class = 4; } else { - drawpic('0 0 0', "gui/pipboy/skills1.jpg", '640 480 0', '1 1 1', 1); + drawpic('0 0 0', "gui/pipboy/skills1.jpg", '640 480 0'*(scrwidth/640), '1 1 1', 1); selected_class = 0; } } - else if (mousepos_y >= 390 && mousepos_y <= 425) + else if (mousepos_y >= 390*(scrwidth/640) && mousepos_y <= 425*(scrwidth/640)) { - drawpic('0 0 0', "gui/pipboy/skills1.jpg", '640 480 0', '1 1 1', 1); + drawpic('0 0 0', "gui/pipboy/skills1.jpg", '640 480 0'*(scrwidth/640), '1 1 1', 1); - if (mousepos_x >= 300 && mousepos_x <= 325) + if (mousepos_x >= 300*(scrwidth/640) && mousepos_x <= 325*(scrwidth/640)) selected_class = 5; - else if (mousepos_x >= 350 && mousepos_x <= 375) + else if (mousepos_x >= 350*(scrwidth/640) && mousepos_x <= 375*(scrwidth/640)) selected_class = 6; - else if (mousepos_x >= 400 && mousepos_x <= 425) + else if (mousepos_x >= 400*(scrwidth/640) && mousepos_x <= 425*(scrwidth/640)) selected_class = 7; else selected_class = 0; } else { - drawpic('0 0 0', "gui/pipboy/skills1.jpg", '640 480 0', '1 1 1', 1); + drawpic('0 0 0', "gui/pipboy/skills1.jpg", '640 480 0'*(scrwidth/640), '1 1 1', 1); selected_class = 0; } if (selected_class == 1) { - drawstring('200 50 0', " combat", '8 8 0', '1 1 1', 1); - drawstring('200 66 0', "place points into this skill for improved", '8 8 0', '1 1 1', 1); - drawstring('200 74 0', "handling of weapons, as well as increased", '8 8 0', '1 1 1', 1); - drawstring('200 82 0', "carry capacity and other aspects of being", '8 8 0', '1 1 1', 1); - drawstring('200 90 0', "trained in combat.", '8 8 0', '1 1 1', 1); + drawstring('200 50 0'*(scrwidth/640), " combat", '8 8 0'*(scrwidth/640), '1 1 1', 1); + drawstring('200 66 0'*(scrwidth/640), "place points into this skill for improved", '8 8 0'*(scrwidth/640), '1 1 1', 1); + drawstring('200 74 0'*(scrwidth/640), "handling of weapons, as well as increased", '8 8 0'*(scrwidth/640), '1 1 1', 1); + drawstring('200 82 0'*(scrwidth/640), "carry capacity and other aspects of being", '8 8 0'*(scrwidth/640), '1 1 1', 1); + drawstring('200 90 0'*(scrwidth/640), "trained in combat.", '8 8 0'*(scrwidth/640), '1 1 1', 1); } if (selected_class == 2) { - drawstring('200 50 0', " doctor", '8 8 0', '1 1 1', 1); - drawstring('200 66 0', "place points into this skill for improved", '8 8 0', '1 1 1', 1); - drawstring('200 74 0', "chem use, which substantially affects the", '8 8 0', '1 1 1', 1); - drawstring('200 82 0', "amount of healing done, as well as all of", '8 8 0', '1 1 1', 1); - drawstring('200 90 0', "the other aspects of first aid.", '8 8 0', '1 1 1', 1); + drawstring('200 50 0'*(scrwidth/640), " doctor", '8 8 0'*(scrwidth/640), '1 1 1', 1); + drawstring('200 66 0'*(scrwidth/640), "place points into this skill for improved", '8 8 0'*(scrwidth/640), '1 1 1', 1); + drawstring('200 74 0'*(scrwidth/640), "chem use, which substantially affects the", '8 8 0'*(scrwidth/640), '1 1 1', 1); + drawstring('200 82 0'*(scrwidth/640), "amount of healing done, as well as all of", '8 8 0'*(scrwidth/640), '1 1 1', 1); + drawstring('200 90 0'*(scrwidth/640), "the other aspects of first aid.", '8 8 0'*(scrwidth/640), '1 1 1', 1); } if (selected_class == 3) { - drawstring('200 50 0', " sneak", '8 8 0', '1 1 1', 1); - drawstring('200 66 0', "place points into this skill to maximize", '8 8 0', '1 1 1', 1); - drawstring('200 74 0', "your ability to remain unseen by enemies.", '8 8 0', '1 1 1', 1); - drawstring('200 82 0', "grants higher sneak ability and how fast", '8 8 0', '1 1 1', 1); - drawstring('200 90 0', "you can pick locks, among other things.", '8 8 0', '1 1 1', 1); + drawstring('200 50 0'*(scrwidth/640), " sneak", '8 8 0'*(scrwidth/640), '1 1 1', 1); + drawstring('200 66 0'*(scrwidth/640), "place points into this skill to maximize", '8 8 0'*(scrwidth/640), '1 1 1', 1); + drawstring('200 74 0'*(scrwidth/640), "your ability to remain unseen by enemies.", '8 8 0'*(scrwidth/640), '1 1 1', 1); + drawstring('200 82 0'*(scrwidth/640), "grants higher sneak ability and how fast", '8 8 0'*(scrwidth/640), '1 1 1', 1); + drawstring('200 90 0'*(scrwidth/640), "you can pick locks, among other things.", '8 8 0'*(scrwidth/640), '1 1 1', 1); } if (selected_class == 4) { - drawstring('200 50 0', " science", '16 16 0', '1 1 1', 1); - drawstring('200 66 0', "place points into this skill to increase", '8 8 0', '1 1 1', 1); - drawstring('200 74 0', "your chances of making useful items from", '8 8 0', '1 1 1', 1); - drawstring('200 82 0', "junk found in the wasteland. use the mix", '8 8 0', '1 1 1', 1); - drawstring('200 90 0', "box found in your inventory screen.", '8 8 0', '1 1 1', 1); + drawstring('200 50 0'*(scrwidth/640), " science", '8 8 0'*(scrwidth/640), '1 1 1', 1); + drawstring('200 66 0'*(scrwidth/640), "place points into this skill to increase", '8 8 0'*(scrwidth/640), '1 1 1', 1); + drawstring('200 74 0'*(scrwidth/640), "your chances of making useful items from", '8 8 0'*(scrwidth/640), '1 1 1', 1); + drawstring('200 82 0'*(scrwidth/640), "junk found in the wasteland. use the mix", '8 8 0'*(scrwidth/640), '1 1 1', 1); + drawstring('200 90 0'*(scrwidth/640), "box found in your inventory screen.", '8 8 0'*(scrwidth/640), '1 1 1', 1); } + + bar = 0; lvl = getstati(100); skill = ftos(lvl+1); while (bar <= lvl) { - drawpic('210 190 0' - ('0 4 0'*bar), "gui/graph/red.jpg", '16 2 0'*2, '1 1 1', 1); + drawpic('210 190 0'*(scrwidth/640) - ('0 4 0'*bar*(scrwidth/640)), "gui/graph/red.jpg", '16 2 0'*2*(scrwidth/640), '1 1 1', 1); bar = bar + 1; } - drawstring('220 190 0' - ('0 4 0'*(lvl+4)), skill, '8 8 0', '1 1 1', 1); + drawstring('220 190 0'*(scrwidth/640) - ('0 4 0'*(lvl+4)*(scrwidth/640)), skill, '8 8 0'*(scrwidth/640), '1 1 1', 1); bar = 0; @@ -781,30 +858,30 @@ void() Pipboy_Draw = skill = ftos(lvl+1); while (bar <= lvl) { - drawpic('305 190 0' - ('0 4 0'*bar), "gui/graph/green.jpg", '16 2 0'*2, '1 1 1', 1); + drawpic('305 190 0'*(scrwidth/640) - ('0 4 0'*bar*(scrwidth/640)), "gui/graph/green.jpg", '16 2 0'*2*(scrwidth/640), '1 1 1', 1); bar = bar + 1; } - drawstring('315 190 0' - ('0 4 0'*(lvl+4)), skill, '8 8 0', '1 1 1', 1); + drawstring('315 190 0'*(scrwidth/640) - ('0 4 0'*(lvl+4)*(scrwidth/640)), skill, '8 8 0'*(scrwidth/640), '1 1 1', 1); bar = 0; lvl = getstati(102); skill = ftos(lvl+1); while (bar <= lvl) { - drawpic('395 190 0' - ('0 4 0'*bar), "gui/graph/blue.jpg", '16 2 0'*2, '1 1 1', 1); + drawpic('395 190 0'*(scrwidth/640) - ('0 4 0'*bar*(scrwidth/640)), "gui/graph/blue.jpg", '16 2 0'*2*(scrwidth/640), '1 1 1', 1); bar = bar + 1; } - drawstring('405 190 0' - ('0 4 0'*(lvl+4)), skill, '8 8 0', '1 1 1', 1); + drawstring('405 190 0'*(scrwidth/640) - ('0 4 0'*(lvl+4)*(scrwidth/640)), skill, '8 8 0'*(scrwidth/640), '1 1 1', 1); bar = 0; lvl = getstati(103); skill = ftos(lvl+1); while (bar <= lvl) { - drawpic('485 190 0' - ('0 4 0'*bar), "gui/graph/yellow.jpg", '16 2 0'*2, '1 1 1', 1); + drawpic('485 190 0'*(scrwidth/640) - ('0 4 0'*bar*(scrwidth/640)), "gui/graph/yellow.jpg", '16 2 0'*2*(scrwidth/640), '1 1 1', 1); bar = bar + 1; } - drawstring('495 190 0' - ('0 4 0'*(lvl+4)), skill, '8 8 0', '1 1 1', 1); + drawstring('495 190 0'*(scrwidth/640) - ('0 4 0'*(lvl+4)*(scrwidth/640)), skill, '8 8 0'*(scrwidth/640), '1 1 1', 1); drawpic(mousepos, "gui/cursor.jpg", '1 1 0'*CURSORSIZE, '1 1 1', 1); }; @@ -823,117 +900,124 @@ void() Invent_Draw = width = cvar("vid_conwidth"); //how much space have we got for the slider? - drawpic('0 0 0', "gui/pipboy/inventory.jpg", '500 470 0', '1 1 1', 1); + drawpic('0 0 0', "gui/pipboy/inventory.jpg", '500 470 0'*(scrwidth/640), '1 1 1', 1); local float slotofs; slotofs = sliderpos*(height - (IMGSIZEF*6)) + (IMGSIZEF*6); - SlotImage('2 1 0'*IMGSIZEF, 5); - SlotImage('2 2 0'*IMGSIZEF, 6); - SlotImage('2 3 0'*IMGSIZEF, 7); - SlotImage('2 4 0'*IMGSIZEF, 8); - SlotImage('2 5 0'*IMGSIZEF, 9); - SlotImage('2 6 0'*IMGSIZEF, 10); - SlotImage('3 1 0'*IMGSIZEF, 11); - SlotImage('3 2 0'*IMGSIZEF, 12); - SlotImage('3 3 0'*IMGSIZEF, 13); - SlotImage('3 4 0'*IMGSIZEF, 14); - SlotImage('3 5 0'*IMGSIZEF, 15); - SlotImage('3 6 0'*IMGSIZEF, 16); + SlotImage('2 1 0'*IMGSIZEF*(scrwidth/640), 5); + SlotImage('2 2 0'*IMGSIZEF*(scrwidth/640), 6); + SlotImage('2 3 0'*IMGSIZEF*(scrwidth/640), 7); + SlotImage('2 4 0'*IMGSIZEF*(scrwidth/640), 8); + SlotImage('2 5 0'*IMGSIZEF*(scrwidth/640), 9); + SlotImage('2 6 0'*IMGSIZEF*(scrwidth/640), 10); + SlotImage('3 1 0'*IMGSIZEF*(scrwidth/640), 11); + SlotImage('3 2 0'*IMGSIZEF*(scrwidth/640), 12); + SlotImage('3 3 0'*IMGSIZEF*(scrwidth/640), 13); + SlotImage('3 4 0'*IMGSIZEF*(scrwidth/640), 14); + SlotImage('3 5 0'*IMGSIZEF*(scrwidth/640), 15); + SlotImage('3 6 0'*IMGSIZEF*(scrwidth/640), 16); check = getstati(32); if (check > 0) - SlotImage('6 1 0'*IMGSIZEF - '16 2 0', 1); + SlotImage('6 1 0'*IMGSIZEF*(scrwidth/640) - '16 2 0'*(scrwidth/640), 1); check = getstati(33); if (check > 0) - SlotImage('6 2 0'*IMGSIZEF - '16 -5 0', 2); + SlotImage('6 2 0'*IMGSIZEF*(scrwidth/640) - '16 -5 0'*(scrwidth/640), 2); check = getstati(34); if (check > 0) - SlotImage('6 3 0'*IMGSIZEF - '16 -13 0', 3); + SlotImage('6 3 0'*IMGSIZEF*(scrwidth/640) - '16 -13 0'*(scrwidth/640), 3); + + check = getstati(35); + if (check > 0) + SlotImageSmall('1 12.5 0'*IMGSIZEK*(scrwidth/640), 4); + + SlotImageSmall('1 3 0'*IMGSIZEK*(scrwidth/640), 17); + SlotImageSmall('1 4 0'*IMGSIZEK*(scrwidth/640), 18); + SlotImageSmall('1 5 0'*IMGSIZEK*(scrwidth/640), 19); + SlotImageSmall('1 6 0'*IMGSIZEK*(scrwidth/640), 20); + SlotImageSmall('1 7 0'*IMGSIZEK*(scrwidth/640), 21); + SlotImageSmall('1 8 0'*IMGSIZEK*(scrwidth/640), 22); - SlotImageSmall('1 3 0'*IMGSIZEK, 17); - SlotImageSmall('1 4 0'*IMGSIZEK, 18); - SlotImageSmall('1 5 0'*IMGSIZEK, 19); - SlotImageSmall('1 6 0'*IMGSIZEK, 20); - SlotImageSmall('1 7 0'*IMGSIZEK, 21); - SlotImageSmall('1 8 0'*IMGSIZEK, 22); - - - SlotImageSmall('1 12.5 0'*IMGSIZEK, 4); - check = getstati(97); if (check > 0) - SlotImageSmall('11 12 0'*IMGSIZEK, 23); + SlotImageSmall('11 12 0'*IMGSIZEK*(scrwidth/640), 23); check = getstati(98); if (check > 0) - SlotImageSmall('13 12 0'*IMGSIZEK, 24); + SlotImageSmall('13 12 0'*IMGSIZEK*(scrwidth/640), 24); if (showcontextmenu && show_inventory) { - drawfill(contextpos - '8 8 0', '88 24 0'+'96 96 0', '0 0 0', 0.9); + drawfill(contextpos - '8 8 0', '88 24 0'+'32 16 0'*(scrwidth/640), '0 0 0', 1); op = floor((mousepos_y - contextpos_y)/8); drawstring(contextpos + (0 * '0 8 0'), "use/reload", '8 8 0', '1 1 0' + (op!=0)*'0 0 1', 1); drawstring(contextpos + (1 * '0 8 0'), "drop", '8 8 0', '1 1 0' + (op!=1)*'0 0 1', 1); - drawstring(contextpos + (2 * '0 8 0'), "mix", '8 8 0', '1 1 0' + (op!=2)*'0 0 1', 1); if (getstati(108) == 1) - drawstring(contextpos + (3 * '0 8 0'), "sell", '8 8 0', '1 1 0' + (op!=3)*'0 0 1', 1); + drawstring(contextpos + (2 * '0 8 0'), "sell", '8 8 0', '1 1 0' + (op!=2)*'0 0 1', 1); } + else if (showmixmenu && show_inventory) + { + drawfill(contextpos - '8 8 0', '88 24 0'+'96 96 0', '0 0 0', 0.9); + + op = floor((mousepos_y - contextpos_y)/8); + drawstring(contextpos + (0 * '0 8 0'), "mix items", '8 8 0', '1 1 0' + (op!=0)*'0 0 1', 1); + } else { if ((mousepos_y >= 12.5*IMGSIZEH && mousepos_y <= 13*IMGSIZEH) && mousepos_x <= IMGSIZEF) { slotnum = 4; } - else if (mousepos_x >= IMGSIZEF) + else if (mousepos_x >= IMGSIZEF*(scrwidth/640) ) { slotnum = 0; - if (mousepos_x >= 2*IMGSIZEF && mousepos_x <= 3*IMGSIZEF) - if (mousepos_y >= 1*IMGSIZEF && mousepos_y <= 7*IMGSIZEF) - slotnum = floor((mousepos_y)/IMGSIZEF) + 4; + if (mousepos_x >= 2*IMGSIZEF*(scrwidth/640) && mousepos_x <= 3*IMGSIZEF*(scrwidth/640)) + if (mousepos_y >= 1*IMGSIZEF*(scrwidth/640) && mousepos_y <= 7*IMGSIZEF*(scrwidth/640)) + slotnum = floor((mousepos_y)/(IMGSIZEF*(scrwidth/640))) + 4; - if (mousepos_x >= 3*IMGSIZEF && mousepos_x <= 4*IMGSIZEF) - if (mousepos_y >= 1*IMGSIZEF && mousepos_y <= 7*IMGSIZEF) - slotnum = floor((mousepos_y)/IMGSIZEF) + 10; + if (mousepos_x >= 3*IMGSIZEF*(scrwidth/640) && mousepos_x <= 4*IMGSIZEF*(scrwidth/640)) + if (mousepos_y >= 1*IMGSIZEF*(scrwidth/640) && mousepos_y <= 7*IMGSIZEF*(scrwidth/640)) + slotnum = floor((mousepos_y)/(IMGSIZEF*(scrwidth/640))) + 10; - if (mousepos_x >= 5.5*IMGSIZEF && mousepos_x <= 6.7*IMGSIZEF) - if (mousepos_y >= 1*IMGSIZEF && mousepos_y <= 2*IMGSIZEF) + if (mousepos_x >= 5.5*IMGSIZEF*(scrwidth/640) && mousepos_x <= 6.7*IMGSIZEF*(scrwidth/640)) + if (mousepos_y >= 1*IMGSIZEF*(scrwidth/640) && mousepos_y <= 2*IMGSIZEF*(scrwidth/640)) slotnum = 1; - if (mousepos_x >= 5.5*IMGSIZEF && mousepos_x <= 6.7*IMGSIZEF) - if (mousepos_y >= 2*IMGSIZEF && mousepos_y <= 3*IMGSIZEF) + if (mousepos_x >= 5.5*IMGSIZEF*(scrwidth/640) && mousepos_x <= 6.7*IMGSIZEF*(scrwidth/640)) + if (mousepos_y >= 2*IMGSIZEF*(scrwidth/640) && mousepos_y <= 3*IMGSIZEF*(scrwidth/640)) slotnum = 2; - if (mousepos_x >= 5.5*IMGSIZEF && mousepos_x <= 6.7*IMGSIZEF) - if (mousepos_y >= 3*IMGSIZEF && mousepos_y <= 4*IMGSIZEF) + if (mousepos_x >= 5.5*IMGSIZEF*(scrwidth/640) && mousepos_x <= 6.7*IMGSIZEF*(scrwidth/640)) + if (mousepos_y >= 3*IMGSIZEF*(scrwidth/640) && mousepos_y <= 4*IMGSIZEF*(scrwidth/640)) slotnum = 3; - if (mousepos_x >= 10.75*IMGSIZEK && mousepos_x <= 12.25*IMGSIZEK) - if (mousepos_y >= 11.75*IMGSIZEK && mousepos_y <= 13.25*IMGSIZEK) + if (mousepos_x >= 10.75*IMGSIZEK*(scrwidth/640) && mousepos_x <= 12.25*IMGSIZEK*(scrwidth/640)) + if (mousepos_y >= 11.75*IMGSIZEK*(scrwidth/640) && mousepos_y <= 13.25*IMGSIZEK*(scrwidth/640)) slotnum = 23; - if (mousepos_x >= 12.75*IMGSIZEK && mousepos_x <= 14.25*IMGSIZEK) - if (mousepos_y >= 11.75*IMGSIZEK && mousepos_y <= 13.25*IMGSIZEK) + if (mousepos_x >= 12.75*IMGSIZEK*(scrwidth/640) && mousepos_x <= 14.25*IMGSIZEK*(scrwidth/640)) + if (mousepos_y >= 11.75*IMGSIZEK*(scrwidth/640) && mousepos_y <= 13.25*IMGSIZEK*(scrwidth/640)) slotnum = 24; } else { - slotnum = floor((mousepos_y)/IMGSIZEK) + 14; + slotnum = floor((mousepos_y)/(IMGSIZEK*(scrwidth/640))) + 14; if (slotnum <= 16) slotnum = 0; if (slotnum >= 25) @@ -942,7 +1026,7 @@ void() Invent_Draw = // slotnum = floor((mousepos_y - toppos_y)/8) + 1; } - drawstring('128 0 0', ftos(slotnum), '8 8 0', '1 1 1', 1); + if (slotnum <= 24) @@ -971,24 +1055,16 @@ if (slotnum <= 24) } itname = GetItemName(ToIID(it)); - drawstring('32 16 0', itname, '16 16 0', '1 1 1', 1); + drawstring('32 16 0'*(scrwidth/640), itname, '16 16 0'*(scrwidth/640), '1 1 1', 1); } -else if (slotnum == 98) -{ - pn = PerkName(1, getstati(60)); - pd = GetPerkDesc(getstati(60)); - drawstring('128 32 0', pn, '8 8 0', '1 1 1', 1); - drawstring('128 48 0', pd, '8 8 0', '1 1 1', 1); -} -else if (slotnum == 99) -{ - pn = PerkName(2, getstati(59)); - pd = GetPerkDesc(getstati(59)); - drawstring('128 32 0', pn, '8 8 0', '1 1 1', 1); - drawstring('128 48 0', pd, '8 8 0', '1 1 1', 1); -} -// drawfill(mousepos, '8 8 0', '0 0 0', 0.7); -// drawstring(mousepos, "^", '8 8 0', '1 1 1', 1); + + + if (mousepos_x > scrwidth*0.95) + mousepos_x = scrwidth*0.95; + + if (mousepos_y > scrheight*0.95) + mousepos_y = scrheight*0.95; + if (downslotnum == 0) drawpic(mousepos, "gui/cursor.jpg", '1 1 0'*CURSORSIZE, '1 1 1', 1); @@ -1103,12 +1179,20 @@ float(float eventtype, float param1, float param2) CSQC_InputEvent = else if ((op == 1)) localcmd(strcat("cmd invdrop ", ftos(slotnum), "\n")); else if (op == 2) - localcmd(strcat("cmd invmix ", ftos(slotnum), "\n")); - else if ((op == 3) && (getstati(108) == 1)) localcmd(strcat("cmd invsell ", ftos(slotnum), "\n")); showcontextmenu = false; } + else if (showmixmenu && show_inventory) + { + op = floor((mousepos_y - contextpos_y)/8); + + if (op == 0) + localcmd(strcat("cmd invmix ", ftos(slotnum), "\n")); + + + showmixmenu = false; + } else if (showcontextmenu && show_trader) { op = floor((mousepos_y - contextpos_y)/8); @@ -1134,7 +1218,7 @@ float(float eventtype, float param1, float param2) CSQC_InputEvent = return; if (which_perk == getstati(59)) return; - if (which_perk >= 1 && which_perk <= 10) + if (which_perk >= 1 && which_perk <= 11) localcmd(strcat("cmd gainperk ", ftos(which_perk), " ", ftos(perkslot), "\n")); show_inventory = false; show_pipboy = false; @@ -1262,7 +1346,7 @@ float(float eventtype, float param1, float param2) CSQC_InputEvent = perkslot = 2; } } - else if (slotnum >= 1 && slotnum <= 26) + else if (slotnum >= 1 && slotnum <= 22) { //if there's actually an item there if ((show_inventory) && (getstati(32+slotnum-1) != 0)) @@ -1276,10 +1360,20 @@ float(float eventtype, float param1, float param2) CSQC_InputEvent = contextpos = mousepos; } } + else if (slotnum >= 23 && slotnum <= 24) + { + //if there's actually an item there + if ((show_inventory) && (getstati(97) != 0) && (getstati(98) != 0)) + { + showmixmenu = true; //show the context menu + contextpos = mousepos; + } + } else { show_inventory = false; //they clicked outside, fools! showcontextmenu = false; + showmixmenu = false; } } else diff --git a/quakec/fallout2/csqc/main.qc b/quakec/fallout2/csqc/main.qc index 54d00c999..98bec3e82 100644 --- a/quakec/fallout2/csqc/main.qc +++ b/quakec/fallout2/csqc/main.qc @@ -5,7 +5,7 @@ float viewmodelindex; float scrwidth; float scrheight; - +float scenedraw; void() DrawScreen = @@ -51,11 +51,12 @@ void() Crosshair_Draw = void() Position_Draw = { - float pos, s; + float pos, s, lvl; string sn; pos = getstati(54); s = getstati(58); + lvl = getstati(127); sn = ftos(s); if (pos == 0) @@ -70,6 +71,11 @@ void() Position_Draw = drawpic('0 0 0'+('1 0 0'*(scrwidth*0.20)) +('0 1 0'*(scrheight*0.79)), "gui/hud/sneak.png", '0 0 0'+'72 25 0'*(scrwidth/640), '1 1 1'); //drawstring('0 0 0'+('1 0 0'*(scrwidth*0.20)) +('0 1 0'*(scrheight*0.80)), strcat("%", sn), '8 8 8', '1 1 1', 1); } + + if (lvl >= 200) + { + drawpic('0 0 0'+('1 0 0'*(scrwidth*0.70)) +('0 1 0'*(scrheight*0.80)), "gui/hud/level.png", '0 0 0'+'132 22 0'*(scrwidth/640), '1 1 1'); + } }; void() Chem_Draw = @@ -98,8 +104,8 @@ void() Chem_Draw = void() Time_Draw = { - local float xtime, ytime, ztime; - local string qtime, rtime, shadowtime; + local float xtime, ytime, ztime, obj; + local string qtime, rtime, shadowtime, text; xtime = getstati(104); ytime = floor(xtime/60); @@ -108,7 +114,22 @@ void() Time_Draw = rtime = ftos(ztime); shadowtime = ftos(getstati(104)); - drawstring('0 32 0'+('1 0 0'*(scrwidth*0.10))+('0 1 0'*(scrheight*0.90)), strcat("[", qtime, ":", rtime, "]\n"), '8 8 8', '1 1 1', 1); + drawstring('0 0 0'+('1 0 0'*(scrwidth*0.25))+('0 1 0'*(scrheight*0.86)), strcat("[", qtime, ":", rtime, "]\n"), '8 8 8', '1 1 1', 1); + + + obj = getstati(66); + + if (obj == 1) + text = "rescue citizens\n"; + if (obj == 2) + text = "capture supplies\n"; + if (obj == 3) + text = "assassinate commanders\n"; + if (obj == 4) + text = "rescue citizens\n"; + + drawstring('0 0 0'+('1 0 0'*(scrwidth*0.03))+('0 1 0'*(scrheight*0.86)), text, '8 8 8', '1 1 1', 1); + }; @@ -155,23 +176,18 @@ void() Health_Draw = maxhp = getstati(49); bar = 0; - top = ceil(150 * (hp/maxhp)); + top = ceil(115 * (hp/maxhp)); - if (top > 150) - top = 150; - - while (bar <= top) - { - - drawpic('0 0 0'+('1 0 0'*(scrwidth*0.07)) +('0 1 0'*(scrheight*0.75)) - ('0 1 0'*bar*(scrheight/640)), "gui/graph/green.jpg", '0 0 0'+'12 1 0'*(scrwidth/640), '1 1 1', 1); - + if (top > 115) + top = 115; + while (bar < top) bar = bar + 1; - } + + drawpic('0 0 0'+('1 0 0'*(scrwidth*0.07)) +('0 1 0'*(scrheight*0.75)) + ('0 1 0'*(scrheight/640)), "gui/graph/green.jpg", '16 1 0'*(scrheight/640)-'0 1 0'*(scrwidth/640)*bar, '1 1 1', 1); }; - void() Radiation_Draw = { local float bar, rad, top; @@ -179,24 +195,23 @@ void() Radiation_Draw = rad = getstati(106); bar = 0; - top = ceil(150 * (rad/100)); + top = ceil(115 * (rad/100)); - if (top > 150) - top = 150; - - while (bar <= top) - { - - drawpic('0 0 0'+('1 0 0'*(scrwidth*0.02)) +('0 1 0'*(scrheight*0.75)) - ('0 1 0'*bar*(scrheight/640)), "gui/graph/yellow.jpg", '0 0 0'+'12 1 0'*(scrwidth/640), '1 1 1', 1); - + if (top > 115) + top = 115; + while (bar < top) bar = bar + 1; - } + + drawpic('0 0 0'+('1 0 0'*(scrwidth*0.02)) +('0 1 0'*(scrheight*0.75)) + ('0 1 0'*(scrheight/640)), "gui/graph/yellow.jpg", '16 1 0'*(scrheight/640)-'0 1 0'*(scrwidth/640)*bar, '1 1 1', 1); }; + + + void() DoThatViewModelThing = { float newframe, newmodel; @@ -241,9 +256,8 @@ void(vector pos, float x) HUD_Image = local string itname; - if (x <= 16) - it = getstati(31+x); + it = getstati(31+x); itname = GetItemImage(ToIID(it)); drawpic(pos, strcat("gui/", itname), '48 48 0', '1 1 1', 1); @@ -257,23 +271,17 @@ void(vector pos, float x) HUD_Image = }; -void(vector pos, float slotno) HUD_Weapon_Image = +void(vector pos, float x) HUD_Weapon_Image = { local float it, mod_s, mod_e; local string itname; - if (slotno == downslotnum && slotnum) - slotno = slotnum; - else if (slotno == slotnum && downslotnum) - slotno = downslotnum; - - if (slotno <= 16) - it = getstati(31+slotno); + it = getstati(31+x); itname = GetItemImage(ToIID(it)); - drawpic(pos, strcat("gui/weapons/", itname), '180 59 0', '1 1 1', 1); + drawpic(pos, strcat("gui/weapons/", itname), '180 59 0'*(scrwidth/640), '1 1 1', 1); }; @@ -295,7 +303,7 @@ void() Ammo_Draw = top = ceil(35 * (ammo/max)); if (top > 35) - top = 35; + top =35; while (bar <= top) { @@ -307,8 +315,7 @@ void() Ammo_Draw = } } - - if (hand == 2) + else if (hand == 2) { weap = ToIID(getstati(33)); ammo = ToStatus(getstati(33)); @@ -335,6 +342,79 @@ void() Ammo_Draw = }; + +void() HUD_Perks_Draw = +{ + local string perki, perk2i; + local float perktime, perktime2, bar, max, top; + + + perktime = getstati(111); + if (perktime == 0) + drawpic('0 0 0'+('1 0 0'*(scrwidth*0.855)) + ('0 1 0'*(scrheight*0.90)), "gui/graph/green.jpg", '0 0 0'+'4 4 0'*(scrwidth/640), '1 1 1', 1); + + perktime2 = getstati(112); + if (perktime2 == 0) + drawpic('0 0 0'+('1 0 0'*(scrwidth*0.855)) + ('0 1 0'*(scrheight*0.96)), "gui/graph/green.jpg", '0 0 0'+'4 4 0'*(scrwidth/640), '1 1 1', 1); + + + if (getstati(60) > 0) + { + perki = GetPerkImage(getstati(60)); + drawpic('0 0 0'+('1 0 0'*(scrwidth*0.865)) +('0 1 0'*(scrheight*0.875)), perki, '28 28 0'*(scrwidth/640), '1 1 1', 1); + } + + if (getstati(59) > 0) + { + perk2i = GetPerkImage(getstati(59)); + drawpic('0 0 0'+('1 0 0'*(scrwidth*0.865)) +('0 1 0'*(scrheight*0.935)), perk2i, '28 28 0'*(scrwidth/640), '1 1 1', 1); + } + + perktime = getstati(111); + if (perktime > 0) + { + max = 2000; + + bar = 0; + top = ceil(32 * (perktime/max)); + + if (top > 32) + top = 32; + + while (bar < top) + { + + drawpic('0 0 0'+('1 0 0'*(scrwidth*0.865)) +('0 1 0'*(scrheight*0.88)) + ('0 1 0'*bar*(scrheight/640)), "gui/graph/black.jpg", '0 0 0'+'28 1 0'*(scrwidth/640), '1 1 1', 1); + + + bar = bar + 1; + } + } + + perktime = getstati(112); + if (perktime > 0) + { + max = 2000; + + bar = 0; + top = ceil(32 * (perktime/max)); + + if (top > 32) + top = 32; + + while (bar < top) + { + + drawpic('0 0 0'+('1 0 0'*(scrwidth*0.865)) +('0 1 0'*(scrheight*0.94)) + ('0 1 0'*bar*(scrheight/640)), "gui/graph/black.jpg", '0 0 0'+'28 1 0'*(scrwidth/640), '1 1 1', 1); + + + bar = bar + 1; + } + } + +}; + + void(float vwidth, float vheight, float do2d) CSQC_UpdateView = { float usehud; @@ -343,7 +423,7 @@ void(float vwidth, float vheight, float do2d) CSQC_UpdateView = scrheight = vheight; clearscene(); - +/* if (0)//!cvar("cg_usehud")) { setviewprop(VF_DRAWENGINESBAR, 0); @@ -352,9 +432,9 @@ void(float vwidth, float vheight, float do2d) CSQC_UpdateView = else { setviewprop(VF_DRAWENGINESBAR, 1); - } + }*/ - setviewprop(VF_DRAWCROSSHAIR, 1); + setviewprop(VF_DRAWCROSSHAIR, 1);// //force fullscreen views. setviewprop(VF_MIN, '0 0 0'); @@ -392,6 +472,7 @@ void(float vwidth, float vheight, float do2d) CSQC_UpdateView = GainPerk_Draw(); else { + drawpic('0 0 0'+('1 0 0'*(scrwidth*0.06)) +('0 1 0'*(scrheight*0.45)), "gui/hud/health.png", '0 0 0'+'25 155 0'*(scrwidth/640), '1 1 1'); drawpic('0 0 0'+('1 0 0'*(scrwidth*0.01)) +('0 1 0'*(scrheight*0.45)), "gui/hud/radiation.png", '0 0 0'+'25 155 0'*(scrwidth/640), '1 1 1'); drawpic('0 0 0' + ('0 1 0'*(scrheight*0.84)), "gui/hud/hud.png", '0 0 0'+'80 10 0'*(scrwidth/80), '1 1 1'); @@ -399,13 +480,27 @@ void(float vwidth, float vheight, float do2d) CSQC_UpdateView = Health_Draw(); Radiation_Draw(); - HUD_Weapon_Image('0 0 0'+('1 0 0'*(scrwidth*0.38)) +('0 1 0'*(scrheight*0.87)), getstati(61)); - Ammo_Draw(); + if ((getstati(61) == 1) && (getstati(32) > 0)) + { + HUD_Weapon_Image('0 0 0'+('1 0 0'*(scrwidth*0.38)) +('0 1 0'*(scrheight*0.87)), getstati(61)); + Ammo_Draw(); + } + else if ((getstati(61) == 2) && (getstati(33) > 0)) + { + HUD_Weapon_Image('0 0 0'+('1 0 0'*(scrwidth*0.38)) +('0 1 0'*(scrheight*0.87)), getstati(61)); + Ammo_Draw(); + } - SlotImageSmall('0 0 0'+('1 0 0'*(scrwidth*0.72)) +('0 1 0'*(scrheight*0.87)), getstati(5)); - SlotImageSmall('0 0 0'+('1 0 0'*(scrwidth*0.79)) +('0 1 0'*(scrheight*0.87)), getstati(6)); + if (getstati(36) > 0) + SlotImageSmall('0 0 0'+('1 0 0'*(scrwidth*0.70)) +('0 1 0'*(scrheight*0.90)), 5); + + if (getstati(42) > 0) + SlotImageSmall('0 0 0'+('1 0 0'*(scrwidth*0.77)) +('0 1 0'*(scrheight*0.90)), 11); + + HUD_Perks_Draw(); Position_Draw(); + Chem_Draw(); Time_Draw(); Crosshair_Draw(); diff --git a/quakec/fallout2/inventory.qc b/quakec/fallout2/inventory.qc index 01bab48cc..ced88d5a5 100644 --- a/quakec/fallout2/inventory.qc +++ b/quakec/fallout2/inventory.qc @@ -1172,83 +1172,83 @@ string(float iid) GetItemName = return "disruptor"; if (iid == IID_WP_USP) - return "usp (45 acp)"; + return "usp"; if (iid == IID_WP_USP_S) - return "usp (silenced)"; + return "silenced usp"; if (iid == IID_WP_GLOCK) - return "glock 21 (10mm)"; + return "10mm pistol"; if (iid == IID_WP_GLOCK_S) - return "glock 21 (silenced)"; + return "silenced 10mm pistol"; if (iid == IID_WP_DEAGLE) - return "desert eagle (.44mag)"; + return "desert eagle"; if (iid == IID_WP_DEAGLE_M) - return "desert eagle (silenced)"; + return "modified desert eagle"; if (iid == IID_WP_NEEDLER) - return "needler"; + return "needler pistol"; if (iid == IID_WP_ALIENBLASTER) - return "alien blaster (energy)"; + return "alien blaster"; if (iid == IID_WP_PIPERIFLE) - return "pipe rifle (.44mag)"; + return "pipe rifle"; if (iid == IID_WP_PIPERIFLE_S) - return "pipe rifle (silenced)"; + return "silenced pipe rifle"; if (iid == IID_WP_PIPERIFLE_R) - return "pipe rifle (rod&spring)"; + return "modified pipe rifle"; if (iid == IID_WP_PIPERIFLE_SCOPE) - return "pipe rifle (scope)"; + return "scoped pipe rifle"; if (iid == IID_WP_PIPERIFLE_S_R) - return "pipe rifle (silenced, rod&spring)"; + return "super piperifle mark i"; if (iid == IID_WP_PIPERIFLE_SCOPE_R) - return "pipe rifle (scope, rod&spring)"; + return "super piperifle mark ii"; if (iid == IID_WP_PIPERIFLE_SCOPE_S) - return "pipe rifle (scope, silenced)"; + return "super piperifle mark iii"; if (iid == IID_WP_PIPERIFLE_SCOPE_S_R) - return "pipe rifle (scope, silenced, rod&spring)"; + return "super piperifle mark iv"; if (iid == IID_WP_WINCHESTER) - return "winchester (12g)"; + return "sawed-off shotgun"; if (iid == IID_WP_MOSSBERG) - return "citykiller (12g)"; + return "citykiller"; if (iid == IID_WP_JACKHAMMER) - return "jackhammer (12g)"; + return "jackhammer"; if (iid == IID_WP_GREASEGUN) - return "grease gun (.45 acp)"; + return "grease gun"; if (iid == IID_WP_MP9) - return "mp9 (10mm)"; + return "mp9"; if (iid == IID_WP_RANGEMASTER) - return "rangemaster (5.56mm)"; + return "rangemaster"; if (iid == IID_WP_RANGEMASTER_SCOPE) - return "rangemaster (x2 SUSAT scope)"; + return "scoped rangemaster"; if (iid == IID_WP_AK47) - return "ak-47 (7.62mm warsaw pact)"; + return "ak-47"; if (iid == IID_WP_AK112) - return "ak-112 (5mm jhp)"; + return "ak-112"; if (iid == IID_WP_AK112_M) - return "light support weapon (5.56mm)"; + return "light support weapon"; if (iid == IID_WP_AK74) - return "ak-47 (7.62mm warsaw pact)"; + return "ak-47"; if (iid == IID_WP_ACR) - return "bozar (7.62mm)"; + return "bozar"; if (iid == IID_WP_DKS1) - return "knight sr-25 widowmaker (7.62mm)"; + return "dks-1"; if (iid == IID_WP_DKS1_S) - return "knight sr-25 widowmaker (silenced)"; + return "dks-1"; if (iid == IID_WP_MOONLIGHT) - return "moonlight (5.56mm)"; + return "moonlight"; if (iid == IID_WP_G11) - return "hk g11 (4mm)"; + return "hk g11"; if (iid == IID_WP_GAUSERIFLE) - return "gauss rifle (2mm EC)"; + return "gauss rifle"; if (iid == IID_WP_PULSERIFLE) - return "phased plasma rifle (energy)"; + return "plasma rifle"; if (iid == IID_WP_TURBOPLASMA) - return "turbo plasma rifle (energy)"; + return "turbo plasma rifle"; if (iid == IID_WP_PLASMACARBINE) - return "plasma carbine (energy)"; + return "laser pistol"; if (iid == IID_WP_FNFAL) - return "fn fal (7.62mm)"; + return "fn fal"; if (iid == IID_WP_ROCKETLAUNCHER) return "rocket launcher"; if (iid == IID_WP_LASERGATLING) - return "laser minigun (energy)"; + return "laser minigun"; if (iid == IID_AM_NEEDLER) return "needler cartidge"; @@ -1279,15 +1279,15 @@ string(float iid) GetItemName = if (iid == IID_GREN_STUN) - return "stun grenade"; + return "stun bomb"; if (iid == IID_GREN_FRAG) - return "nuka grenade"; + return "nuka bomb"; if (iid == IID_GREN_EMP) - return "emp grenade"; + return "emp bomb"; if (iid == IID_GREN_SMOKE) - return "smoke grenade"; + return "smoke bomb"; if (iid == IID_GREN_FLASH) - return "flash grenade"; + return "flash bomb"; if (iid == IID_ARM_DESERT) @@ -1435,19 +1435,19 @@ float(float iid) GetBaseValue = if (iid == IID_WP_PIPERIFLE) return 15; if (iid == IID_WP_PIPERIFLE_S) - return 25; + return 250; if (iid == IID_WP_PIPERIFLE_R) - return 25; + return 250; if (iid == IID_WP_PIPERIFLE_SCOPE) - return 25; + return 250; if (iid == IID_WP_PIPERIFLE_S_R) - return 35; + return 350; if (iid == IID_WP_PIPERIFLE_SCOPE_R) - return 35; + return 350; if (iid == IID_WP_PIPERIFLE_SCOPE_S) - return 35; + return 350; if (iid == IID_WP_PIPERIFLE_SCOPE_S_R) - return 50; + return 500; if (iid == IID_WP_WINCHESTER) return 50; if (iid == IID_WP_MOSSBERG) @@ -1502,31 +1502,31 @@ float(float iid) GetBaseValue = if (iid == IID_AM_NEEDLER) - return 7; + return 35; if (iid == IID_AM_2MMEC) - return 15; + return 120; if (iid == IID_AM_10MM) - return 3; - if (iid == IID_AM_556MM) - return 5; - if (iid == IID_AM_5MMHIGHVEL) - return 4; - if (iid == IID_AM_12GAUGESHELLS) - return 4; - if (iid == IID_AM_ENERGYCELL) return 12; + if (iid == IID_AM_556MM) + return 20; + if (iid == IID_AM_5MMHIGHVEL) + return 16; + if (iid == IID_AM_12GAUGESHELLS) + return 16; + if (iid == IID_AM_ENERGYCELL) + return 48; if (iid == IID_AM_762MM) - return 8; + return 32; if (iid == IID_AM_44MAGNUM) - return 6; + return 24; if (iid == IID_AM_WARSAW) - return 5; + return 20; if (iid == IID_AM_45ACP) - return 4; + return 16; if (iid == IID_AM_ROCKET) return 30; if (iid == IID_AM_CASELESS) - return 10; + return 40; if (iid == IID_GREN_STUN) @@ -1550,15 +1550,15 @@ float(float iid) GetBaseValue = if (iid == IID_ARM_METAL) return 100; if (iid == IID_ARM_TESLA) - return 175; + return 125; if (iid == IID_ARM_COMBAT) - return 300; + return 250; if (iid == IID_ARM_SEVA) - return 350; + return 275; if (iid == IID_ARM_FORCE) - return 500; + return 300; if (iid == IID_ARM_LPOWER) - return 550; + return 450; if (iid == IID_CHEM_STIMPACK) @@ -1675,15 +1675,15 @@ string(float iid) GetItemDesc = if (iid == IID_WP_PIPERIFLE_SCOPE) return "a crude scope has been attached to this pipe rifle"; if (iid == IID_WP_PIPERIFLE_R) - return "a modified pipe rifle with a rod&spring replacement"; + return "a modified pipe rifle with a box magazine"; if (iid == IID_WP_PIPERIFLE_S_R) - return "pipe rifle with a silencer and rod&spring replacement"; + return "pipe rifle with a silencer and box magazine"; if (iid == IID_WP_PIPERIFLE_SCOPE_R) - return "pipe rifle with a scope and rod&spring replacement"; + return "pipe rifle with a scope and box magazine"; if (iid == IID_WP_PIPERIFLE_SCOPE_S) return "pipe rifle with a scope and silencer"; if (iid == IID_WP_PIPERIFLE_SCOPE_S_R) - return "pipe rifle with a scope, silencer, and rod&spring"; + return "the ultimate makeshift rifle!"; if (iid == IID_WP_WINCHESTER) return "double-barrelled and sawed off"; if (iid == IID_WP_MOSSBERG) @@ -1715,7 +1715,7 @@ string(float iid) GetItemDesc = if (iid == IID_WP_DKS1) return "semi-auto sniper rifle"; if (iid == IID_WP_MOONLIGHT) - return "decent rifle with extra utility"; + return "great all-around rifle with extra utility"; if (iid == IID_WP_G11) return "a prototype rifle that uses caseless ammo"; if (iid == IID_WP_GAUSERIFLE) @@ -1733,7 +1733,7 @@ string(float iid) GetItemDesc = if (iid == IID_WP_LASERGATLING) return "quite simply, the ultimate in heavy firepower"; if (iid == IID_WP_ACR) - return "fast, powerful, and accurate - a sniper's dream"; + return "refinement of the sniper's art"; if (iid == IID_AM_NEEDLER) @@ -1881,249 +1881,234 @@ string(float iid) GetItemDesc = return strcat("", ftos(iid)); }; - -string(float iid) GetItemStats = +float(float iid) GetArmorThreshold = { - 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"; - 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"; + return 2; if (iid == IID_ARM_LEATHER) - return "lightweight leather armor. provides great mobility."; + return 3; if (iid == IID_ARM_VANDAL) - return "enhanced leather armor for extra protection."; + return 4; if (iid == IID_ARM_METAL) - return "gives great protection at a sacrifice to speed."; + return 1; if (iid == IID_ARM_TESLA) - return "experimental armor with high deflection but low absorb."; + return 5; if (iid == IID_ARM_COMBAT) - return "this all-purpose armor is designed for combat missions."; + return 7; if (iid == IID_ARM_SEVA) - return "high-tech suit provides more environmental defense"; + return 6; if (iid == IID_ARM_FORCE) - return "experimental energy-field armor, very low absorb"; + return 10; if (iid == IID_ARM_LPOWER) - return "the heaviest armor with great protection"; + return 8; +}; - 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"; +float(float iid) GetArmorAbsorb = +{ + + if (iid == IID_ARM_DESERT) + return 10; + if (iid == IID_ARM_LEATHER) + return 20; + if (iid == IID_ARM_VANDAL) + return 30; + if (iid == IID_ARM_METAL) + return 50; + if (iid == IID_ARM_TESLA) + return 40; + if (iid == IID_ARM_COMBAT) + return 40; + if (iid == IID_ARM_SEVA) + return 40; + if (iid == IID_ARM_FORCE) + return 10; + if (iid == IID_ARM_LPOWER) + return 50; +}; - 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"; +float(float iid) GetWeaponRange = +{ + if (iid == IID_NONE) + return 0; - 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_WP_KNIFE) + return 5; - 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)); + if (iid == IID_WP_USP) + return 20; + if (iid == IID_WP_USP_S) + return 15; + if (iid == IID_WP_GLOCK) + return 15; + if (iid == IID_WP_GLOCK_S) + return 10; + if (iid == IID_WP_DEAGLE) + return 25; + if (iid == IID_WP_DEAGLE_M) + return 25; + if (iid == IID_WP_NEEDLER) + return 20; + if (iid == IID_WP_ALIENBLASTER) + return 10; + if (iid == IID_WP_PIPERIFLE) + return 40; + if (iid == IID_WP_PIPERIFLE_S) + return 40; + if (iid == IID_WP_PIPERIFLE_SCOPE) + return 40; + if (iid == IID_WP_PIPERIFLE_R) + return 40; + if (iid == IID_WP_PIPERIFLE_S_R) + return 40; + if (iid == IID_WP_PIPERIFLE_SCOPE_R) + return 40; + if (iid == IID_WP_PIPERIFLE_SCOPE_S) + return 40; + if (iid == IID_WP_PIPERIFLE_SCOPE_S_R) + return 40; + if (iid == IID_WP_WINCHESTER) + return 10; + if (iid == IID_WP_MOSSBERG) + return 10; + if (iid == IID_WP_JACKHAMMER) + return 10; + if (iid == IID_WP_GREASEGUN) + return 20; + if (iid == IID_WP_GREASEGUN_S) + return 20; + if (iid == IID_WP_MP9) + return 15; + if (iid == IID_WP_MP9_S) + return 15; + if (iid == IID_WP_RANGEMASTER) + return 40; + if (iid == IID_WP_RANGEMASTER_SCOPE) + return 50; + if (iid == IID_WP_AK112) + return 40; + if (iid == IID_WP_AK112_M) + return 40; + if (iid == IID_WP_DKS1) + return 60; + if (iid == IID_WP_DKS1_S) + return 60; + if (iid == IID_WP_MOONLIGHT) + return 50; + if (iid == IID_WP_G11) + return 60; + if (iid == IID_WP_GAUSERIFLE) + return 70; + if (iid == IID_WP_PULSERIFLE) + return 50; + if (iid == IID_WP_TURBOPLASMA) + return 40; + if (iid == IID_WP_PLASMACARBINE) + return 40; + if (iid == IID_WP_FNFAL) + return 60; + if (iid == IID_WP_ROCKETLAUNCHER) + return 15; + if (iid == IID_WP_LASERGATLING) + return 35; + if (iid == IID_WP_ACR) + return 90; + + return 0; +}; + +float(float iid) GetWeaponDamage = +{ + if (iid == IID_NONE) + return 0; + + + if (iid == IID_WP_KNIFE) + return 10; + if (iid == IID_WP_USP) + return 14; + if (iid == IID_WP_USP_S) + return 12; + if (iid == IID_WP_GLOCK) + return 12; + if (iid == IID_WP_GLOCK_S) + return 10; + if (iid == IID_WP_DEAGLE) + return 18; + if (iid == IID_WP_DEAGLE_M) + return 18; + if (iid == IID_WP_NEEDLER) + return 16; + if (iid == IID_WP_ALIENBLASTER) + return 20; + if (iid == IID_WP_PIPERIFLE) + return 20; + if (iid == IID_WP_PIPERIFLE_S) + return 20; + if (iid == IID_WP_PIPERIFLE_SCOPE) + return 20; + if (iid == IID_WP_PIPERIFLE_R) + return 20; + if (iid == IID_WP_PIPERIFLE_S_R) + return 20; + if (iid == IID_WP_PIPERIFLE_SCOPE_R) + return 20; + if (iid == IID_WP_PIPERIFLE_SCOPE_S) + return 20; + if (iid == IID_WP_PIPERIFLE_SCOPE_S_R) + return 20; + if (iid == IID_WP_WINCHESTER) + return 35; + if (iid == IID_WP_MOSSBERG) + return 35; + if (iid == IID_WP_JACKHAMMER) + return 35; + if (iid == IID_WP_GREASEGUN) + return 14; + if (iid == IID_WP_GREASEGUN_S) + return 12; + if (iid == IID_WP_MP9) + return 12; + if (iid == IID_WP_MP9_S) + return 10; + if (iid == IID_WP_RANGEMASTER) + return 18; + if (iid == IID_WP_RANGEMASTER_SCOPE) + return 18; + if (iid == IID_WP_AK112) + return 16; + if (iid == IID_WP_AK112_M) + return 16; + if (iid == IID_WP_DKS1) + return 30; + if (iid == IID_WP_DKS1_S) + return 30; + if (iid == IID_WP_MOONLIGHT) + return 16; + if (iid == IID_WP_G11) + return 14; + if (iid == IID_WP_GAUSERIFLE) + return 22; + if (iid == IID_WP_PULSERIFLE) + return 26; + if (iid == IID_WP_TURBOPLASMA) + return 24; + if (iid == IID_WP_PLASMACARBINE) + return 20; + if (iid == IID_WP_FNFAL) + return 20; + if (iid == IID_WP_ROCKETLAUNCHER) + return 75; + if (iid == IID_WP_LASERGATLING) + return 24; + if (iid == IID_WP_ACR) + return 40; + + return 0; }; string(float iid) GetItemImage = @@ -2148,9 +2133,9 @@ string(float iid) GetItemImage = if (iid == IID_WP_USP_S) return "usp.jpg"; if (iid == IID_WP_GLOCK) - return "glock.jpg"; + return "10mmpistol.jpg"; if (iid == IID_WP_GLOCK_S) - return "glock.jpg"; + return "10mmpistol.jpg"; if (iid == IID_WP_DEAGLE) return "deagle.jpg"; if (iid == IID_WP_DEAGLE_M) @@ -2190,11 +2175,11 @@ string(float iid) GetItemImage = if (iid == IID_WP_DKS1_S) return "dks1_s.jpg"; if (iid == IID_WP_MOONLIGHT) - return "moonlight.jpg"; + return "XL70E3.jpg"; if (iid == IID_WP_G11) return "g11.jpg"; if (iid == IID_WP_GAUSERIFLE) - return "grifle.jpg"; + return "gauss.jpg"; if (iid == IID_WP_PULSERIFLE) return "plasma.jpg"; if (iid == IID_WP_TURBOPLASMA) @@ -2591,6 +2576,8 @@ string (float slot, float int) PerkName = return "Sleep Tight"; if (int == 10) return "Economic Moves"; + if (int == 11) + return "Nuclear Man"; }; string (float slot, float int) PerkNameCentered = @@ -2615,6 +2602,8 @@ string (float slot, float int) PerkNameCentered = return " Sleep Tight"; if (int == 10) return " Economic Moves"; + if (int == 11) + return " Nuclear Man"; }; @@ -2640,6 +2629,8 @@ string(float int) GetPerkImage = return "gui/perks/Sleep Tight.jpg"; else if (int == 10) return "gui/perks/Economic Moves.jpg"; + else if (int == 11) + return "gui/perks/Nuclear Man.jpg"; else return "gui/perks/none.jpg"; @@ -2651,9 +2642,9 @@ string(float int) GetPerkDesc = if (int == 1) return "33% recoil reduction while prone"; else if (int == 2) - return "20% damage resist while taking cover and ducking"; + return "Huge dodge chance while taking cover and ducking"; else if (int == 3) - return "enemies tend to ignore you over your friends"; + return "Makes enemies attack your friends instead of you"; else if (int == 4) return "50% damage resist to area attacks while prone"; else if (int == 5) @@ -2668,6 +2659,8 @@ string(float int) GetPerkDesc = return "Paralyze anything with a sneak attack from a knife"; else if (int == 10) return "Suffer less time-related penalties for all actions"; + else if (int == 11) + return "Eat a small amount of radiation to heal yourself"; else return ""; diff --git a/quakec/fallout2/items.qc b/quakec/fallout2/items.qc index 534b9fbe5..7f022c3d9 100644 --- a/quakec/fallout2/items.qc +++ b/quakec/fallout2/items.qc @@ -370,7 +370,7 @@ void() rad_think = local entity te; self.think = rad_think; - self.nextthink = time + 1; + self.nextthink = time + 4; te = findradius (self.origin, 700); while (te) diff --git a/quakec/fallout2/misc.qc b/quakec/fallout2/misc.qc index ac6628c1d..7232baa18 100644 --- a/quakec/fallout2/misc.qc +++ b/quakec/fallout2/misc.qc @@ -281,7 +281,7 @@ void () hostage_die = } hos_deatha1 (); - + self.solid = SOLID_NOT; setsize (self, VEC_ORIGIN, VEC_ORIGIN); }; diff --git a/quakec/fallout2/weapons.qc b/quakec/fallout2/weapons.qc index 8a5729d8d..737c2aa0c 100644 --- a/quakec/fallout2/weapons.qc +++ b/quakec/fallout2/weapons.qc @@ -112,24 +112,9 @@ local float rnd1, rnd2, rnd3; if (self.cnt == 20) remove(self); - rnd1 = self.velocity_x + (-30 + (random() * 20)); - rnd2 = self.velocity_y + (-30 + (random() * 20)); - rnd3 = self.velocity_z + 30 + random() * 10; - - if (random()*100 > 50) - rnd1 = 24; - else - rnd1 = -24; - - if (random()*100 > 50) - rnd2 = 24; - else - rnd2 = -24; - - if (random()*100 > 50) - rnd3 = -5; - else - rnd3 = 10; + rnd1 = self.velocity_x + (-10 + (random() * 20)); + rnd2 = self.velocity_y + (-10 + (random() * 20)); + rnd3 = self.velocity_z + 1 + random() * 3; self.velocity_x = rnd1; self.velocity_y = rnd2; @@ -204,6 +189,17 @@ void(float slotno) UsePerk = te = te.chain; } } + if ((self.perk1 == 11 && slotno == 1) || (self.perk2 == 11 && slotno == 2)) + { + if (slotno == 1) + self.perk1timer = 2000; + if (slotno == 2) + self.perk2timer = 2000; + + sound (self, CHAN_BODY, "misc/r_tele4.wav", 1, ATTN_NORM); + + + } }; @@ -2112,7 +2108,7 @@ void() ImpulseCommands = if (self.impulse == 3 && self.currentmenu == "none") Cmd_InvUse("5"); if (self.impulse == 4 && self.currentmenu == "none") - Cmd_InvUse("6"); + Cmd_InvUse("11"); if (self.impulse >= 1 && self.impulse <= 10 && self.currentmenu != "none") @@ -4342,7 +4338,7 @@ void () UseStimpack = else { sound (trace_ent, CHAN_BODY, "items/r_item1.wav", 1, ATTN_NORM); - self.score = self.score + 50; + self.score = self.score + 1; sprint(trace_ent, PRINT_MEDIUM, self.netname); sprint(trace_ent, PRINT_MEDIUM, " heals you with a stimpack\n"); sprint(self, PRINT_MEDIUM, "you heal "); @@ -4453,7 +4449,7 @@ void () UseSuperStim = { sound (trace_ent, CHAN_BODY, "items/r_item1.wav", 1, ATTN_NORM); - self.score = self.score + 50; + self.score = self.score + 1; sprint(trace_ent, PRINT_MEDIUM, self.netname); sprint(trace_ent, PRINT_MEDIUM, " heals you with a superstim!\n"); sprint(self, PRINT_MEDIUM, "you heal "); @@ -4512,6 +4508,7 @@ void () UseMedicalBag = sound (self, CHAN_BODY, "items/r_item1.wav", 1, ATTN_NORM); self.health = self.health + 5 + (self.skill_doctor/2); self.regen = self.regen + 3 + (self.skill_doctor/2); + spawn_healing(self); } } else if (trace_ent.classname == "player")//healing another team-mate @@ -4563,6 +4560,7 @@ void () UseMedicalBag = self.score = self.score + 1; trace_ent.health = trace_ent.health + 5 + (self.skill_doctor/2); trace_ent.regen = trace_ent.regen + 3 + (self.skill_doctor/2); + spawn_healing(trace_ent); } } } diff --git a/quakec/fallout2/world.qc b/quakec/fallout2/world.qc index 92aa3ddc2..f81c0aab6 100644 --- a/quakec/fallout2/world.qc +++ b/quakec/fallout2/world.qc @@ -107,6 +107,8 @@ void() SetupStats = clientstat(108, 2, safezone); clientstat(109, 2, connected); clientstat(110, 2, steadyaim); + clientstat(111, 2, perk1timer); + clientstat(112, 2, perk2timer); clientstat(125, 2, timer); clientstat(126, 2, popup); clientstat(127, 2, score); @@ -650,9 +652,9 @@ if (coop == 1) // Players vs Monsters } } - else if (musicplay < 50) + else if (musicplay < 20) musicplay = musicplay + 1; - else if (musicplay >= 100) + else if (musicplay >= 20) musicplay = 0; te = find(world, classname, "player"); diff --git a/quakec/fallout2/zombie.qc b/quakec/fallout2/zombie.qc index 503d6468b..26581df21 100644 --- a/quakec/fallout2/zombie.qc +++ b/quakec/fallout2/zombie.qc @@ -116,10 +116,7 @@ void() zombie_walk15 =[ $walk15, zombie_walk16 ] {ai_walk(3);}; void() zombie_walk16 =[ $walk16, zombie_walk17 ] {ai_walk(3);}; void() zombie_walk17 =[ $walk17, zombie_walk18 ] {ai_walk(3);}; void() zombie_walk18 =[ $walk18, zombie_walk19 ] {ai_walk(3);}; -void() zombie_walk19 =[ $walk19, zombie_walk1 ] { -ai_walk(6); -if (random() < 0.2) - sound (self, CHAN_VOICE, "zombie/z_idle.wav", 1, ATTN_IDLE);}; +void() zombie_walk19 =[ $walk19, zombie_walk1 ] {ai_walk(6);}; void() zombie_run1 =[ $run1, zombie_run2 ] {ai_run(4);self.inpain = 0;}; void() zombie_run2 =[ $run2, zombie_run3 ] {ai_run(4); @@ -146,13 +143,7 @@ void() zombie_run14 =[ $run14, zombie_run15 ] {ai_run(4);}; void() zombie_run15 =[ $run15, zombie_run16 ] {ai_run(4);}; void() zombie_run16 =[ $run16, zombie_run17 ] {ai_run(4);}; void() zombie_run17 =[ $run17, zombie_run18 ] {ai_run(4);}; -void() zombie_run18 =[ $run18, zombie_run1 ] { -ai_run(8); -if (random() < 0.2) - sound (self, CHAN_VOICE, "zombie/z_idle.wav", 1, ATTN_IDLE); -if (random() > 0.8) - sound (self, CHAN_VOICE, "zombie/z_idle1.wav", 1, ATTN_IDLE); -}; +void() zombie_run18 =[ $run18, zombie_run1 ] {ai_run(8);}; /* ============================================================================= @@ -314,7 +305,7 @@ void() zombie_attc12 =[ $attc12, zombie_run1 ] {ai_face();ZombieFireGrenade('-1 void() zombie_claw = { -local vector delta; +local vector delta, dir; local float ldmg; if (!self.enemy) @@ -329,11 +320,22 @@ local float ldmg; delta = self.enemy.origin - self.origin; - if (vlen(delta) > (80)) + if (self.scale == 1.5 && vlen(delta) > (90)) return; - + else if (vlen(delta) > (60)) + return; + ldmg = 5+random()*15; + if (self.scale == 1.5) + { + ldmg = 10+random()*15; + dir = normalize(self.enemy.origin - self.origin); + self.enemy.radiation = self.enemy.radiation + 50; + self.enemy.velocity = dir * 300; + self.enemy.velocity_z = 300; + self.enemy.avelocity_y = (random()* 300); + } T_Damage (self.enemy, self, self, ldmg); }; @@ -589,7 +591,7 @@ void () zombie_death = self.attack = self.attack + 1; }; -void (vector stuff, vector ang) spawn_live_zombie = +void (vector stuff, vector ang, float bodysize) spawn_live_zombie = { local entity zombie; @@ -611,6 +613,7 @@ void (vector stuff, vector ang) spawn_live_zombie = zombie.think = zombie_death; zombie.th_die = corpse_gib; zombie.nextthink = time + 0.12; + zombie.scale = bodysize; }; void() DropBackpack; @@ -619,10 +622,6 @@ void() zombie_die = { local float r; - if (random()<0.25) - DropMoney(); - if (random()<0.25) - DropMoney(); r = random(); @@ -632,8 +631,14 @@ void() zombie_die = sound (self, CHAN_VOICE, "zombie/z_pain1.wav", 1, ATTN_NORM); - spawn_live_zombie(self.origin, self.angles); - remove(self); + if (self.scale == 1) + { + spawn_live_zombie(self.origin, self.angles, self.scale); + remove(self); + } + else + zdie1(); + return; }; @@ -661,7 +666,7 @@ void(entity attacker, float take) zombie_pain = { local float r; - if (take < 9) + if (take < 50) return; // totally ignore if (self.inpain == 2) @@ -739,7 +744,20 @@ void () spawn_ghoul_copy = self.think = spawn_ghoul_copy; - self.nextthink = time + 8 + random()*4; + self.nextthink = time + 9 + random()*8; + + + + if (total_players == 2) + self.nextthink = time + 9 + random()*5; + + if (total_players == 3) + self.nextthink = time + 8 + random()*4; + + if (total_players == 4) + self.nextthink = time + 6 + random()*2; + + stuff = self.origin; @@ -748,7 +766,7 @@ void () spawn_ghoul_copy = loadzombie = 0; - te = findradius (self.origin, 1200); + te = findradius (self.origin, 1500); while (te) { if (te.classname == "player") @@ -758,7 +776,7 @@ void () spawn_ghoul_copy = } - te = findradius (self.origin, 400); + te = findradius (self.origin, 250); while (te) { if (te.classname == "player") @@ -797,7 +815,7 @@ void () spawn_ghoul_copy = ze = find(ze, classname, "player"); } - if (zomc > 90*pcount) + if (zomc > 30*pcount) return; zombie = spawn (); @@ -808,7 +826,7 @@ void () spawn_ghoul_copy = setmodel (self, "progs/ghoul.mdl"); setsize (self, '-8 -8 -24', '8 8 24'); self.health = 90; - self.netname = "ghoul"; + self.netname = "feral ghoul"; self.max_health = self.health; self.th_stand = zombie_stand1; self.th_walk = zombie_walk1; @@ -817,15 +835,19 @@ void () spawn_ghoul_copy = self.th_die = zombie_die; self.th_melee = zombie_melee; + self.skin = 0; + self.angles_y = random()*360; - if (random()*100 <= 3) + if (random()*100 <= 8) { - setsize (self, '-16 -16 -24', '16 16 32'); - self.health = 400; - self.netname = "ghoul lord"; + setsize (self, '-16 -16 -40 ', '16 16 32'); + self.health = 1200; + self.netname = "glowing one"; self.max_health = self.health; - self.scale = 2; + self.scale = 1.5; + self.effects = EF_BLUE; + self.skin = 1; } self.origin = stuff + '0 64 0';