From f9a2e32c641abc3c010a8f48407081b2580d78c6 Mon Sep 17 00:00:00 2001 From: Magnus Date: Tue, 10 Nov 2009 13:57:08 +0000 Subject: [PATCH] git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@3431 fc73d0e0-1445-4013-8a0c-d673dee63da5 --- quakec/fallout2/client.qc | 39 ++++--------- quakec/fallout2/cmds.qc | 32 +++++++++++ quakec/fallout2/csqc/invent.qc | 79 +++++++++++++++++++++----- quakec/fallout2/enforcer.qc | 2 +- quakec/fallout2/hos.qc | 2 +- quakec/fallout2/inventory.qc | 2 +- quakec/fallout2/items.qc | 100 ++++++++++++++++++++------------- quakec/fallout2/misc.qc | 14 +++++ quakec/fallout2/ogre.qc | 4 +- quakec/fallout2/soldier.qc | 34 ++++++----- quakec/fallout2/weapons.qc | 34 ++++++----- quakec/fallout2/world.qc | 49 +++++++--------- 12 files changed, 244 insertions(+), 147 deletions(-) diff --git a/quakec/fallout2/client.qc b/quakec/fallout2/client.qc index 11a928604..6ca64e7cf 100644 --- a/quakec/fallout2/client.qc +++ b/quakec/fallout2/client.qc @@ -101,12 +101,12 @@ void() SetNewParms = //on account of changing maps before spawning was resulting in no inventory. parm1 = 0; parm2 = 0; - parm3 = 0; + parm3 = SlotVal(IID_ARM_LEATHER, 1); parm4 = 0; parm5 = 0; parm6 = 0; parm7 = 0; - parm8 = 300; + parm8 = 150; parm9 = 0; parm10 = 0; parm11 = 0; @@ -599,7 +599,7 @@ void() PutClientInServer = self.takedamage = DAMAGE_AIM; self.movetype = MOVETYPE_WALK; self.show_hostile = 0; - self.max_health = 100 + self.skill_combat; + self.max_health = 150 + (self.skill_combat*2); self.health = 100; self.flags = FL_CLIENT; self.air_finished = time + 12; @@ -644,8 +644,8 @@ void() PutClientInServer = if (self.current_slot == 0) { self.islot1 = SlotVal(IID_WP_GLOCK, 15); - self.islot2 = 0; - self.islot3 = 0; + self.islot2 = SlotVal(IID_WP_KNIFE, 1); + self.islot3 = SlotVal(IID_ARM_LEATHER, 1); self.islot5 = SlotVal(IID_CHEM_STIMPACK, 3); self.islot7 = SlotVal(IID_AM_10MM, 30); self.islot8 = 0; @@ -1546,35 +1546,20 @@ void() PlayerPreThink = DisplayMenu (); return; } - else if (self.score >= 500 && self.score <= 1550 && self.currentmenu == "none") - { - self.score = self.score + 1; - } - else if (self.score >= 1551 && self.currentmenu == "none") - { - self.currentmenu = "gain_skill"; - self.missionbrief = 2; - DisplayMenu (); - } - else if (self.score >= 200 && self.currentmenu == "none") - { - self.score = 500; - } - if ((self.skill_combat + self.skill_sneak + self.skill_doctor + self.skill_science) <= 10) + + if (self.score < 200) { - if (self.currentmenu == "none") + if ((self.skill_combat + self.skill_doctor + self.skill_sneak + self.skill_science) <= 10) { - self.currentmenu = "gain_skill"; - self.missionbrief = 2; - return; + self.score = 200; + + sound (self, CHAN_BODY, "misc/secret.wav", 1, ATTN_NORM); + sprint(self, 2, "you have gained a level!\npress 'p' to assign a skill point.\n"); } } - - - if (self.cycle1 < time) { if (self.currentmenu != "none") diff --git a/quakec/fallout2/cmds.qc b/quakec/fallout2/cmds.qc index ea157fd60..bd51fa127 100644 --- a/quakec/fallout2/cmds.qc +++ b/quakec/fallout2/cmds.qc @@ -259,6 +259,31 @@ void(string arg1) Cmd_InvDrop = DropFromSlot(slotno, true, false); }; +void(string arg1) Cmd_GainLevel = +{ + if (self.score < 200) + { + sprint(self, 2, "not enough experience points.\n"); + sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); + return; + } + if (self.score >= 200) + { + sound (self, CHAN_BODY, "buttons/switch02.wav", 1, ATTN_NORM); + self.score = self.score - 200; + } + + if (arg1 == "combat") + self.skill_combat = self.skill_combat + 1; + else if (arg1 == "doctor") + self.skill_doctor = self.skill_doctor + 1; + else if (arg1 == "sneak") + self.skill_sneak = self.skill_sneak + 1; + else if (arg1 == "science") + self.skill_science = self.skill_science + 1; +}; + + void(string arg1) Cmd_InvBuy = { local float x,y, iid, amount, money, item; @@ -373,6 +398,7 @@ void(string arg1) Cmd_InvSell = SetItemSlot(self, slotno, 0); x = GetBaseValue(iid); + x = x / 5; y = ftos(x); z = GetItemName(iid); @@ -1168,6 +1194,12 @@ void(string line) SV_ParseClientCommand = return; Cmd_InvBuy(argv(1)); } + else if (cmd == "gainlevel") + { + if (self.deadflag || self.current_slot==0) + return; + Cmd_GainLevel(argv(1)); + } else if (cmd == "invmix") { if (self.deadflag) diff --git a/quakec/fallout2/csqc/invent.qc b/quakec/fallout2/csqc/invent.qc index 2fde5006c..fc24389c7 100644 --- a/quakec/fallout2/csqc/invent.qc +++ b/quakec/fallout2/csqc/invent.qc @@ -17,6 +17,8 @@ float sliderpos; float downslotnum; //the slot number when the mousecursor when down +float selected_class; + vector toppos = '0 32 0'; float k_mouse1; @@ -442,7 +444,7 @@ void() Trader_Draw = { drawfill(contextpos - '8 8 0', '48 48 0', '0 0 0', 1.0); op = floor((mousepos_y - contextpos_y)/8); - drawstring(contextpos + '0 8 0', "buy?", '8 8 0', '1 1 0' + (op!=0)*'0 0 1', + drawstring(contextpos + '0 8 0', "buy?", '8 8 0', '1 1 0' + (op!=1)*'0 0 1', 1); } @@ -468,6 +470,7 @@ void() Trader_Draw = void() Pipboy_Draw = { float width,height,lvl,bar; + string skill; vector w; width = cvar("vid_conwidth"); @@ -477,45 +480,84 @@ void() Pipboy_Draw = - drawpic('0 0 0', "gui/pipboy/pipboy.jpg", '640 480 0', '1 1 1', 1); - drawstring('3 2 0'*IMGSIZEF, "COMBAT", '8 8 8', '1 1 1', 1); + if (mousepos_y >= 200 && mousepos_y <= 325) + { + if (mousepos_x >= 150 && mousepos_x <= 250) + { + drawpic('0 0 0', "gui/pipboy/skills2.jpg", '640 480 0', '1 1 1', 1); + selected_class = 1; + } + else if (mousepos_x >= 250 && mousepos_x <= 350) + { + drawpic('0 0 0', "gui/pipboy/skills3.jpg", '640 480 0', '1 1 1', 1); + selected_class = 2; + } + else if (mousepos_x >= 350 && mousepos_x <= 450) + { + drawpic('0 0 0', "gui/pipboy/skills4.jpg", '640 480 0', '1 1 1', 1); + selected_class = 3; + } + else if (mousepos_x >= 450 && mousepos_x <= 550) + { + drawpic('0 0 0', "gui/pipboy/skills5.jpg", '640 480 0', '1 1 1', 1); + selected_class = 4; + } + else + { + drawpic('0 0 0', "gui/pipboy/skills1.jpg", '640 480 0', '1 1 1', 1); + selected_class = 0; + } + } + else + { + drawpic('0 0 0', "gui/pipboy/skills1.jpg", '640 480 0', '1 1 1', 1); + selected_class = 0; + } + + + bar = 0; lvl = getstati(100); + skill = ftos(lvl+1); while (bar <= lvl) { - drawpic('4 2 0'*IMGSIZEF + ('4 0 0'*bar), "gui/graph/red.jpg", '1 4 0'*2, '1 1 1', 1); + drawpic('210 190 0' - ('0 4 0'*bar), "gui/graph/red.jpg", '16 2 0'*2, '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('3 2.2 0'*IMGSIZEF, "DOCTOR", '8 8 8', '1 1 1', 1); bar = 0; lvl = getstati(101); + skill = ftos(lvl+1); while (bar <= lvl) { - drawpic('4 2.2 0'*IMGSIZEF + ('4 0 0'*bar), "gui/graph/green.jpg", '1 4 0'*2, '1 1 1', 1); + drawpic('305 190 0' - ('0 4 0'*bar), "gui/graph/green.jpg", '16 2 0'*2, '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('3 2.4 0'*IMGSIZEF, "SNEAK", '8 8 8', '1 1 1', 1); bar = 0; lvl = getstati(102); + skill = ftos(lvl+1); while (bar <= lvl) { - drawpic('4 2.4 0'*IMGSIZEF + ('4 0 0'*bar), "gui/graph/blue.jpg", '1 4 0'*2, '1 1 1', 1); + drawpic('395 190 0' - ('0 4 0'*bar), "gui/graph/blue.jpg", '16 2 0'*2, '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('3 2.6 0'*IMGSIZEF, "SCIENCE", '8 8 8', '1 1 1', 1); bar = 0; lvl = getstati(103); + skill = ftos(lvl+1); while (bar <= lvl) { - drawpic('4 2.6 0'*IMGSIZEF + ('4 0 0'*bar), "gui/graph/yellow.jpg", '1 4 0'*2, '1 1 1', 1); + drawpic('485 190 0' - ('0 4 0'*bar), "gui/graph/yellow.jpg", '16 2 0'*2, '1 1 1', 1); bar = bar + 1; } + drawstring('495 190 0' - ('0 4 0'*(lvl+4)), skill, '8 8 0', '1 1 1', 1); + drawpic(mousepos, "gui/cursor.jpg", '1 1 0'*CURSORSIZE, '1 1 1', 1); }; @@ -749,7 +791,7 @@ float(float eventtype, float param1, float param2) CSQC_InputEvent = show_pipboy = false; show_inventory = false; } - else if (!show_inventory && !show_trader) + else if (!show_inventory && !show_trader && !show_pipboy) return false; else if (param1 == k_mouse1) { @@ -800,7 +842,7 @@ float(float eventtype, float param1, float param2) CSQC_InputEvent = { op = floor((mousepos_y - contextpos_y)/8); - if (op == 0) + if (op == 1) localcmd(strcat("cmd invbuy ", ftos(slotnum), "\n")); showcontextmenu = false; @@ -828,6 +870,17 @@ float(float eventtype, float param1, float param2) CSQC_InputEvent = contextpos = mousepos; } } + else if (show_pipboy) + { + if (selected_class == 1) + localcmd("cmd gainlevel combat\n"); + if (selected_class == 2) + localcmd("cmd gainlevel doctor\n"); + if (selected_class == 3) + localcmd("cmd gainlevel sneak\n"); + if (selected_class == 4) + localcmd("cmd gainlevel science\n"); + } else { show_inventory = false; //they clicked outside, fools! diff --git a/quakec/fallout2/enforcer.qc b/quakec/fallout2/enforcer.qc index bc7a41dad..4915e60fb 100644 --- a/quakec/fallout2/enforcer.qc +++ b/quakec/fallout2/enforcer.qc @@ -452,7 +452,7 @@ void() monster_enforcer = self.netname = "enforcer"; setsize (self, '-12 -12 -24', '12 12 32'); - self.health = 100; + self.health = 200; self.islot3 = SlotVal(IID_ARM_COMBAT, 1); self.armortype = 0.5; self.helmet = 1; diff --git a/quakec/fallout2/hos.qc b/quakec/fallout2/hos.qc index 70bfa8759..9f0498f93 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, '-10 -10 24', '10 10 24'); + 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 d4e7f2a28..888e8255a 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_bozar.mdl"; + return "progs/v_pipe.mdl"; if (iid == IID_WP_WINCHESTER) return "progs/v_double.mdl"; if (iid == IID_WP_MOSSBERG) diff --git a/quakec/fallout2/items.qc b/quakec/fallout2/items.qc index 25022ca80..7321ea218 100644 --- a/quakec/fallout2/items.qc +++ b/quakec/fallout2/items.qc @@ -287,59 +287,65 @@ void() junk_touch = }; -void() SpawnJunk = +void(vector loc) SpawnJunk = { - 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; + local entity junk; - self.avelocity_y = crandom()*300; + junk = spawn (); + + setorigin(junk, loc + '0 0 96'); + + + junk.movetype = MOVETYPE_BOUNCE; + junk.velocity_x = crandom()*600; + junk.velocity_y = crandom()*600; + junk.velocity_z = -100; + + junk.avelocity_y = crandom()*300; if (random()*100 < 50) - setmodel (self, "progs/junk1.mdl"); + setmodel (junk, "progs/junk1.mdl"); else - setmodel (self, "progs/junk2.mdl"); + setmodel (junk, "progs/junk2.mdl"); - self.touch = junk_touch; - self.solid = SOLID_TRIGGER; - setsize (self, '-12 -12 0', '12 12 12'); - self.takedamage = DAMAGE_NO; - self.classname = "random_junk"; + junk.touch = junk_touch; + junk.solid = SOLID_TRIGGER; + setsize (junk, '-12 -12 0', '12 12 12'); + junk.takedamage = DAMAGE_NO; + junk.classname = "random_junk"; if (random()*100 <= 10) - self.islot1 = SlotVal(IID_MISC_JUNK, 1); + junk.islot1 = SlotVal(IID_MISC_JUNK, 1); else if (random()*100 <= 10) - self.islot1 = SlotVal(IID_MISC_NUKACOLA, 1); + junk.islot1 = SlotVal(IID_MISC_NUKACOLA, 1); else if (random()*100 <= 10) - self.islot1 = SlotVal(IID_MISC_CHEMICALS, 1); + junk.islot1 = SlotVal(IID_MISC_CHEMICALS, 1); else if (random()*100 <= 10) - self.islot1 = SlotVal(IID_MISC_AEROSOL, 1); + junk.islot1 = SlotVal(IID_MISC_AEROSOL, 1); else if (random()*100 <= 10) - self.islot1 = SlotVal(IID_MISC_RDXCRYSTAL, 1); + junk.islot1 = SlotVal(IID_MISC_RDXCRYSTAL, 1); else if (random()*100 <= 10) - self.islot1 = SlotVal(IID_MISC_STEELPIPE, 1); + junk.islot1 = SlotVal(IID_MISC_STEELPIPE, 1); else if (random()*100 <= 10) - self.islot1 = SlotVal(IID_MISC_DUCKTAPE, 1); + junk.islot1 = SlotVal(IID_MISC_DUCKTAPE, 1); else if (random()*100 <= 10) - self.islot1 = SlotVal(IID_MISC_LCD, 1); + junk.islot1 = SlotVal(IID_MISC_LCD, 1); else if (random()*100 <= 10) - self.islot1 = SlotVal(IID_MISC_CIRCUITBOARD, 1); + junk.islot1 = SlotVal(IID_MISC_CIRCUITBOARD, 1); else if (random()*100 <= 10) - self.islot1 = SlotVal(IID_MISC_COPPERWIRE, 1); + junk.islot1 = SlotVal(IID_MISC_COPPERWIRE, 1); else if (random()*100 <= 10) - self.islot1 = SlotVal(IID_MISC_HMXCOMPOUND, 1); + junk.islot1 = SlotVal(IID_MISC_HMXCOMPOUND, 1); else if (random()*100 <= 10) - self.islot1 = SlotVal(IID_MISC_GUM, 1); + junk.islot1 = SlotVal(IID_MISC_GUM, 1); else - self.islot1 = SlotVal(IID_MISC_JUNK, 1); + junk.islot1 = SlotVal(IID_MISC_JUNK, 1); if (random()*100 <= 10) - self.flash = 2; + junk.flash = 2; else - self.flash = 1; + junk.flash = 1; }; void() TreasureChest = { @@ -1326,8 +1332,12 @@ void() weapon_supershotgun = if (random()<0.25) TreasureChest(); - SpawnJunk(); - SpawnJunk(); + + + SpawnJunk(self.origin); + SpawnJunk(self.origin); + SpawnJunk(self.origin); + SpawnJunk(self.origin); }; /*QUAKED weapon_nailgun (0 .5 .8) (-16 -16 0) (16 16 32) @@ -1344,8 +1354,10 @@ void() weapon_nailgun = else TreasureChest(); - SpawnJunk(); - SpawnJunk(); + SpawnJunk(self.origin); + SpawnJunk(self.origin); + SpawnJunk(self.origin); + SpawnJunk(self.origin); }; /*QUAKED weapon_supernailgun (0 .5 .8) (-16 -16 0) (16 16 32) @@ -1362,9 +1374,10 @@ void() weapon_supernailgun = else if (random()*100 <= 40) TreasureChest(); - SpawnJunk(); - SpawnJunk(); - SpawnJunk(); + SpawnJunk(self.origin); + SpawnJunk(self.origin); + SpawnJunk(self.origin); + SpawnJunk(self.origin); }; /*QUAKED weapon_grenadelauncher (0 .5 .8) (-16 -16 0) (16 16 32) @@ -1382,7 +1395,10 @@ void() weapon_grenadelauncher = else if (random()*100 <= 40) TreasureChest(); - SpawnJunk(); + SpawnJunk(self.origin); + SpawnJunk(self.origin); + SpawnJunk(self.origin); + SpawnJunk(self.origin); }; @@ -1400,7 +1416,10 @@ void() weapon_rocketlauncher = else if (random()*100 <= 40) TreasureChest(); - SpawnJunk(); + SpawnJunk(self.origin); + SpawnJunk(self.origin); + SpawnJunk(self.origin); + SpawnJunk(self.origin); }; @@ -1419,7 +1438,10 @@ void() weapon_lightning = else if (random()*100 <= 40) TreasureChest(); - SpawnJunk(); + SpawnJunk(self.origin); + SpawnJunk(self.origin); + SpawnJunk(self.origin); + SpawnJunk(self.origin); }; diff --git a/quakec/fallout2/misc.qc b/quakec/fallout2/misc.qc index dea400841..628e118f1 100644 --- a/quakec/fallout2/misc.qc +++ b/quakec/fallout2/misc.qc @@ -1072,6 +1072,20 @@ void() brotherhood_soldier = self.solid = SOLID_SLIDEBOX; setsize (self, '-16 -16 -24', '16 16 32'); self.takedamage = DAMAGE_NO; + + self.xslot1 = SlotVal(IID_AM_45ACP, 30); + self.xslot2 = SlotVal(IID_AM_10MM, 30); + self.xslot3 = SlotVal(IID_AM_12GAUGESHELLS, 30); + self.xslot4 = SlotVal(IID_AM_5MMHIGHVEL, 30); + self.xslot5 = SlotVal(IID_AM_762MM, 30); + self.xslot6 = SlotVal(IID_AM_556MM, 30); + self.xslot7 = SlotVal(IID_AM_ENERGYCELL, 30); + self.xslot8 = SlotVal(IID_AM_CASELESS, 30); + self.xslot8 = SlotVal(IID_AM_NEEDLER, 30); + self.xslot16 = SlotVal(IID_WP_AK112_M, 1); + self.xslot17 = SlotVal(IID_WP_G11, 1); + self.xslot18 = SlotVal(IID_WP_JACKHAMMER, 1); + self.xslot19 = SlotVal(IID_WP_MOONLIGHT, 1); }; void() brotherhood_guard = diff --git a/quakec/fallout2/ogre.qc b/quakec/fallout2/ogre.qc index 5cd996a1d..d77b88247 100644 --- a/quakec/fallout2/ogre.qc +++ b/quakec/fallout2/ogre.qc @@ -879,7 +879,7 @@ void (entity attacker, float damage) ogre_pain = if (self.pain_finished > time) return; - if (random()*8 <= 1) + if (random()*100 <= 1) { ogre_paind1(); self.pain_finished = time + 7; @@ -1126,7 +1126,7 @@ void () monster_ogre = self.netname = "mutant"; self.classname = "monster"; setsize (self, '-16 -16 -24', '16 16 48'); - self.health = 200; + self.health = 300; self.team = 3; self.islot3 = SlotVal(IID_ARM_LEATHER, 1); self.armornoise = "misc/thud.wav"; diff --git a/quakec/fallout2/soldier.qc b/quakec/fallout2/soldier.qc index fb7d66b8b..3ff3c20c1 100644 --- a/quakec/fallout2/soldier.qc +++ b/quakec/fallout2/soldier.qc @@ -383,7 +383,7 @@ void (float tmp, float dam) army_fire4 = makevectors (self.angles); - sound (self, CHAN_WEAPON, "weapons/ak112.wav", PLAT_LOW_TRIGGER, ATTN_NORM); + sound (self, CHAN_WEAPON, "weapons/ak47.wav", PLAT_LOW_TRIGGER, ATTN_NORM); src = self.origin + v_forward*10; src_z = self.absmin_z + self.size_z * 0.7; @@ -747,7 +747,7 @@ void () army_atk6 = [ 86, army_atk7 ] void () army_atk7 = [ 87, army_atk8 ] { ai_face (); - army_fire (120, 19); + army_fire (170, 19); }; void () army_atk8 = [ 88, army_atk9 ] @@ -789,7 +789,7 @@ void () army_atka4 = [ 84, army_atka5 ] void () army_atka5 = [ 85, army_atka6 ] { ai_face (); - army_fire2 (200, 7); + army_fire2 (250, 7); }; void () army_atka6 = [ 86, army_atka7 ] @@ -850,7 +850,7 @@ void () army_atkb5 = [ 85, army_atkb6 ] if (r == RANGE_NEAR || r == RANGE_MELEE) self.recoil = 1; - army_fire3 (100, 15); + army_fire3 (120, 15); }; void () army_atkb6 = [ 86, army_atkb7 ] @@ -858,8 +858,8 @@ void () army_atkb6 = [ 86, army_atkb7 ] ai_face (); if (self.recoil == 1) { - army_fire3 (150, 14); - army_fire3 (150, 14); + army_fire3 (160, 14); + army_fire3 (160, 14); } }; @@ -867,7 +867,7 @@ void () army_atkb7 = [ 87, army_atkb8 ] { ai_face (); if (self.recoil == 1) - army_fire3 (150, 14); + army_fire3 (160, 14); }; void () army_atkb8 = [ 88, army_atkb9 ] @@ -875,8 +875,8 @@ void () army_atkb8 = [ 88, army_atkb9 ] ai_face (); if (self.recoil == 1) { - army_fire3 (150, 14); - army_fire3 (150, 14); + army_fire3 (160, 14); + army_fire3 (160, 14); } }; @@ -885,8 +885,8 @@ void () army_atkb9 = [ 89, army_run1 ] ai_face (); if (self.recoil == 1) { - army_fire3 (150, 14); - army_fire3 (150, 14); + army_fire3 (170, 14); + army_fire3 (170, 14); } }; @@ -919,7 +919,7 @@ void () army_atkcs4 = [ 84, army_atkcs5 ] void () army_atkcs5 = [ 85, army_atkcs6 ] { ai_face (); - sound (self, CHAN_WEAPON, "weapons/ak112.wav", PLAT_LOW_TRIGGER, ATTN_NORM); + sound (self, CHAN_WEAPON, "weapons/ak47.wav", PLAT_LOW_TRIGGER, ATTN_NORM); army_fire4 (100, 20); }; @@ -1483,7 +1483,7 @@ void () army_die = if (self.weapon == 4) DropFromChest(self, IID_WP_MP9, 15); if (self.weapon == 5) - DropFromChest(self, IID_WP_AK112, 12); + DropFromChest(self, IID_WP_AK47, 12); if (self.weapon == 1) DropFromChest(self, IID_AM_44MAGNUM, 10); @@ -1572,8 +1572,6 @@ void (vector jojo, entity friend) spawn_soldier = te = te.chain; } -//soldiers have either 0, 1 or 2 grenades - self.grenadetoggle = floor(random()*2); //soldiers have either pistol, smg, shotgun or rifle self.weapon = ceil(random()*4); @@ -1711,7 +1709,7 @@ void () monster_army = self.movetype = MOVETYPE_STEP; setmodel (self, "progs/soldier.mdl"); setsize (self, '-12 -12 -24', '12 12 28'); - self.health = 70+random()*30; + self.health = 100; self.team = 3; self.islot3 = SlotVal(IID_ARM_LEATHER, 1); self.armortype = 0.2; @@ -1795,7 +1793,7 @@ void () monster_army = if (random()<0.25 && (world.map_obj != OBJ_SHADOW)) spawn_soldier(self.origin, self); - if (random()<0.25 && world.map_obj == OBJ_HOSTAGE) + if (random()<0.25) spawn_civilian(self.origin); }; @@ -1906,7 +1904,7 @@ void () monster_commander = commanders = commanders + 1; setsize (self, '-12 -12 -24', '12 12 32'); - self.health = 120; + self.health = 300; self.islot3 = SlotVal(IID_ARM_COMBAT, 1); self.armortype = 0.5; self.helmet = 1; diff --git a/quakec/fallout2/weapons.qc b/quakec/fallout2/weapons.qc index 8122d25ef..16aea9034 100644 --- a/quakec/fallout2/weapons.qc +++ b/quakec/fallout2/weapons.qc @@ -125,7 +125,7 @@ float (entity healer, entity saved) RevivePlayer = // saved.materialize = 200; saved.ghost = 0; - saved.health = 40; + saved.health = 20 + (healer.skill_doctor); saved.air_finished = time + 10; saved.view_ofs = '0 0 22'; self = saved; @@ -1621,11 +1621,11 @@ void() W_Attack = else if (weap == IID_WP_DKS1_S) FireAssaultRifle(35, 3, "weapons/moonlight1.wav", 5000, 0.25); else if (weap == IID_WP_WINCHESTER) - W_FireShotgun (2, 5, 8, 50, 1500, 0, "weapons/shotgun1.wav"); + W_FireShotgun (2, 5, 7, 50, 1500, 0, "weapons/shotgun1.wav"); else if (weap == IID_WP_MOSSBERG) - W_FireShotgun (2, 5, 7, 20, 2000, 1, "weapons/citykiller.wav"); + W_FireShotgun (2, 5, 6, 20, 2000, 1, "weapons/citykiller.wav"); else if (weap == IID_WP_JACKHAMMER) - W_FireShotgun (1, 5, 7, 30, 1750, 2, "weapons/citykiller.wav"); + W_FireShotgun (1, 5, 6, 30, 1750, 2, "weapons/citykiller.wav"); else if (weap == IID_WP_GREASEGUN) FireSMG(14, 0, "weapons/mp7.wav", 1500, 0.10); else if (weap == IID_WP_MP9) @@ -1641,7 +1641,7 @@ 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(25, 7, "weapons/bozar.wav", 9000, 0.090); + FireAssaultRifle(45, 7, "weapons/amr.wav", 9000, 0.1); else if (weap == IID_WP_AK74) FireAssaultRifle(45, 12, "ogre/ak47.wav", 3500, 0.090); else if (weap == IID_WP_DKS1) @@ -3310,6 +3310,8 @@ void (float dam, float accuracy, string snd, float rng, float rate) FireAssaultR if (weap == IID_WP_DKS1) loud_noise(100); + else if (weap == IID_WP_ACR) + loud_noise(110); else if (weap == IID_WP_MOONLIGHT) loud_noise(5); else if (weap == IID_WP_DKS1_S) @@ -3446,6 +3448,8 @@ void (float dam, float accuracy, string snd, float rng, float rate) FireAssaultR stuffcmd (self, "-attack\n"); if (weap == IID_WP_GAUSERIFLE) stuffcmd (self, "-attack\n"); + if (weap == IID_WP_ACR) + stuffcmd (self, "-attack\n"); if (trace_ent.takedamage) { @@ -4218,8 +4222,8 @@ void () UseStimpack = thing = thing.chain; } - self.health = self.health + 20; - self.regen = self.regen + (5 + (self.skill_doctor)); + self.health = self.health + 10 + (self.skill_doctor/2); + self.regen = self.regen + (3 + (self.skill_doctor/2)); } } else if (trace_ent.classname == "player")//healing another team-mate @@ -4290,8 +4294,8 @@ void () UseStimpack = sprint(self, PRINT_MEDIUM, trace_ent.netname); sprint(self, PRINT_MEDIUM, " with a stimpack\n"); - trace_ent.health = trace_ent.health + 20; - trace_ent.regen = trace_ent.regen + (5 + (self.skill_doctor)); + trace_ent.health = trace_ent.health + 10 + (self.skill_doctor/2); + trace_ent.regen = trace_ent.regen + (3 + (self.skill_doctor/2)); } } } @@ -4449,7 +4453,7 @@ void () UseMedicalBag = sound (self, CHAN_BODY, "items/r_item1.wav", 1, ATTN_NORM); sprint(self, PRINT_MEDIUM, "you start to bandage yourself\n"); - self.regen = self.regen + self.skill_doctor; + self.regen = self.regen + 3 + (self.skill_doctor/2); } } else if (trace_ent.classname == "player")//healing another team-mate @@ -4505,7 +4509,7 @@ void () UseMedicalBag = sprint(self, PRINT_MEDIUM, trace_ent.netname); sprint(self, PRINT_MEDIUM, " with a stimpack\n"); - trace_ent.regen = trace_ent.regen + self.skill_doctor; + trace_ent.regen = trace_ent.regen + 3 + (self.skill_doctor/2); } } } @@ -6016,10 +6020,10 @@ void (float rec, float number, float dam, float spread, float ran, float auto, s weap = ToIID(self.(SlotField(self.current_slot))); - var1 = (16 + (random () * 12) * (self.recoil)); - var2 = (16 + (random () * 12) * (self.recoil)); - var3 = (16 + (random () * 12) * (self.recoil)); - var4 = (16 + (random () * 12) * (self.recoil)); + var1 = ((random () * 16) * (self.recoil)); + var2 = ((random () * 16) * (self.recoil)); + var3 = ((random () * 16) * (self.recoil)); + var4 = ((random () * 16) * (self.recoil)); if (self.position == 0) player_single1 (); diff --git a/quakec/fallout2/world.qc b/quakec/fallout2/world.qc index 63c9d020e..ce670a4db 100644 --- a/quakec/fallout2/world.qc +++ b/quakec/fallout2/world.qc @@ -189,30 +189,13 @@ void() load_monster = { self.zone = 1; - monster_army(); -/* - if (world.map_ent1 == 1) - monster_dog(); - if (world.map_ent1 == 2) - monster_zombie(); - if (world.map_ent1 == 3) - monster_tarbaby(); - if (world.map_ent1 == 4 || world.map_ent1 == 5) - monster_army(); - if (world.map_ent1 == 6) - monster_ogre(); - if (world.map_ent1 == 7) - monster_wizard(); - if (world.map_ent1 == 8) - monster_knight(); - if (world.map_ent1 == 9) - monster_demon1(); - if (world.map_ent1 == 10) - monster_enforcer(); - if (world.map_ent1 == 11) - monster_shalrath(); - if (world.map_ent1 == 12) - monster_shambler();*/ + + if (world.map_obj == OBJ_DEADTOWN) + monster_zombie(); + else + monster_army(); + + } else if (y <= world.map_ent2_percent) { @@ -222,12 +205,12 @@ void() load_monster = monster_dog(); if (world.map_ent2 == 2) monster_zombie(); - if (world.map_ent2 == 3 || world.map_ent2 == 4 || world.map_ent2 == 5) + if (world.map_ent2 == 3 || world.map_ent2 == 4) monster_army(); - if (world.map_ent2 == 6) + if (world.map_ent2 == 5 || world.map_ent2 == 6) monster_ogre(); if (world.map_ent2 == 7) - monster_army(); + monster_enforcer(); if (world.map_ent2 == 8) monster_demon1(); if (world.map_ent2 == 9) @@ -248,13 +231,13 @@ void() load_monster = else if (random()<0.10) monster_zombie(); else if (random()<0.10) - monster_army(); + monster_enforcer(); else if (random()<0.10) monster_ogre(); else if (random()<0.10) - monster_wizard(); + monster_army(); else if (random()<0.10) - monster_knight(); + monster_enforcer(); if (world.map_obj == OBJ_DEADTOWN) spawn_ghoul(self.origin + '128 0 0'); @@ -742,6 +725,7 @@ if (coop == 1) // Players vs Monsters if (endgame_timer == 0) { bprint(2, "^4** ^bTHE HOSTAGES WERE SAVED!!!^b **\n"); + sound (self, CHAN_VOICE, "misc/fanfare.wav", 1, ATTN_NONE); ze = find (world, classname, "player"); while (ze != world) { @@ -2105,6 +2089,10 @@ void() worldspawn = precache_sound ("misc/hosdown.wav"); precache_sound ("misc/rescued.wav"); precache_sound ("misc/beep1.wav"); + precache_sound ("buttons/switch02.wav"); + precache_sound ("buttons/switch04.wav"); + precache_sound ("misc/secret.wav"); + precache_sound ("misc/fanfare.wav"); precache_sound ("player/gib1.wav"); precache_sound ("player/step1.wav"); @@ -2149,6 +2137,7 @@ void() worldspawn = precache_sound ("weapons/moonlight-2.wav"); precache_sound ("weapons/needler.wav"); precache_sound ("weapons/bozar.wav"); + precache_sound ("weapons/amr.wav"); precache_sound ("weapons/smg_s.wav"); precache_sound ("weapons/shotgun1.wav"); precache_sound ("weapons/mp5.wav");