diff --git a/quakec/fallout2/client.qc b/quakec/fallout2/client.qc index 548a7ab19..1e53807e8 100644 --- a/quakec/fallout2/client.qc +++ b/quakec/fallout2/client.qc @@ -346,7 +346,8 @@ void() execute_changelevel = - localcmd("map r_bunker\n"); + localcmd(strcat("map ", self.map, "\n")); + }; @@ -385,6 +386,8 @@ void() changelevel_touch = sprint (other, 2,"there are still bombs to disarm.\n"); return; } + else + localcmd(strcat("map ", self.map, "\n")); if (world.map_obj == OBJ_HOSTAGE && hostages > 0) return; @@ -412,7 +415,7 @@ void() changelevel_touch = other = find (other, classname, "player"); } - localcmd("serverinfo objective return\n"); + //localcmd("serverinfo objective return\n"); SUB_UseTargets (); @@ -1651,6 +1654,10 @@ void() PlayerPreThink = SneakLevel(); self.accept = 0; + + if (self.safezone > 0) + self.safezone = self.safezone - 1; + self.endinfo1 = rescue; self.endinfo2 = dead_hostage; self.endinfo3 = hostages; @@ -1742,6 +1749,8 @@ void() PlayerPreThink = if (self.cycle2 < time) { + + if (self.blurtime > 0 && self.blurtime <= 1) stuffcmd(self, "gl_motionblur 0\n"); else if (self.blurtime > 0) @@ -1780,7 +1789,11 @@ void() PlayerPreThink = if (self.musictimer == 0) { - if (world.model == "maps/r_bunker.bsp") + if (self.soundmode == 1) + stuffcmd(self, "play music/exploring\n"); + else if (self.soundmode == 2) + stuffcmd(self, "play music/vault\n"); + else if (world.model == "maps/r_bunker.bsp") stuffcmd(self, "play music/vault\n"); else if (world.map_obj == OBJ_DEADTOWN) stuffcmd(self, "play music/afterglow\n"); @@ -2693,5 +2706,12 @@ void(entity targ, entity attacker) ClientObituary = void() Identify = { -return; + local vector source; + + makevectors (self.v_angle); + source = self.origin + '0 0 0'; + traceline (source, source + v_forward*128, FALSE, self); + + if (trace_ent.netname) + centerprint (self, trace_ent.netname); }; diff --git a/quakec/fallout2/csqc/invent.qc b/quakec/fallout2/csqc/invent.qc index 21931713e..556765d3d 100644 --- a/quakec/fallout2/csqc/invent.qc +++ b/quakec/fallout2/csqc/invent.qc @@ -43,7 +43,7 @@ float mouseisdown; #define IMGSIZEZ ('1 1 0'*IMGSIZEX) #define IMGSIZEQ ('1 1 0'*2) -#define CURSORSIZE 8 +#define CURSORSIZE 32 @@ -1020,7 +1020,7 @@ void() Invent_Draw = op = floor((mousepos_y - contextpos_y)/8); drawstring(contextpos + (0 * ('0 8 0'*(scrwidth/640))), "use", '8 8 0'*(scrwidth/640), '1 1 0'*(scrwidth/640) + (op!=0)*'0 0 1'*(scrwidth/640), 1); drawstring(contextpos + (2 * ('0 8 0'*(scrwidth/640))), "drop", '8 8 0'*(scrwidth/640), '1 1 0'*(scrwidth/640) + (op!=2)*'0 0 1'*(scrwidth/640), 1); - if (getstati(108) == 1) + if (getstati(108) > 0) drawstring(contextpos + (4 * ('0 8 0'*(scrwidth/640))), "sell", '8 8 0'*(scrwidth/640), '1 1 0'*(scrwidth/640) + (op!=4)*'0 0 1'*(scrwidth/640), 1); } @@ -1186,7 +1186,7 @@ float(float eventtype, float param1, float param2) CSQC_InputEvent = show_items = false; show_gainperk = false; } - if (param1 == 'b' && (getstati(108) == 1)) + if (param1 == 'b' && (getstati(108) > 0)) { show_trader = !show_trader; show_pipboy = false; diff --git a/quakec/fallout2/csqc/main.qc b/quakec/fallout2/csqc/main.qc index ebdc603d8..f7db11595 100644 --- a/quakec/fallout2/csqc/main.qc +++ b/quakec/fallout2/csqc/main.qc @@ -123,16 +123,6 @@ void() Time_Draw = local float xtime, ytime, ztime, obj; local string qtime, rtime, shadowtime, text, text2; - xtime = getstati(63); - ytime = floor(xtime/60); - ztime = xtime - (ytime*60); - qtime = ftos(ytime); - rtime = ftos(ztime); - shadowtime = ftos(getstati(63)); - - drawstring('0 0 0'+('1 0 0'*(scrwidth*0.25))+('0 1 0'*(scrheight*0.86)), strcat("[", qtime, ":", rtime, "]\n"), '8 8 8'*(scrwidth/640), '1 1 1', 1); - - obj = getstati(66); if (obj == 1) @@ -143,12 +133,27 @@ void() Time_Draw = text = "assassinate commanders\n"; if (obj == 4) text = "rescue citizens\n"; + else + text = "no active mission.\n"; - drawstring('0 0 0'+('1 0 0'*(scrwidth*0.03))+('0 1 0'*(scrheight*0.86)), text, '8 8 8'*(scrwidth/640), '1 1 1', 1); + xtime = getstati(63); + ytime = floor(xtime/60); + ztime = xtime - (ytime*60); + qtime = ftos(ytime); + rtime = ftos(ztime); + shadowtime = ftos(getstati(63)); + + if (obj >= 1) + drawstring('0 0 0'+('1 0 0'*(scrwidth*0.25))+('0 1 0'*(scrheight*0.88)), strcat("[", qtime, ":", rtime, "]\n"), '8 8 8'*(scrwidth/640), '1 1 1', 1); + drawstring('0 0 0'+('1 0 0'*(scrwidth*0.03))+('0 1 0'*(scrheight*0.88)), text, '8 8 8'*(scrwidth/640), '1 1 1', 1); + + + if (obj >= 1) + { text = "citizens rescued: "; text2 = ftos(getstati(113)); drawstring('0 0 0'+('1 0 0'*(scrwidth*0.03))+('0 1 0'*(scrheight*0.90)), strcat(text, text2), '8 8 8'*(scrwidth/640), '1 1 1', 1); @@ -160,6 +165,7 @@ void() Time_Draw = text = "citizens left: "; text2 = ftos(getstati(115)); drawstring('0 0 0'+('1 0 0'*(scrwidth*0.03))+('0 1 0'*(scrheight*0.94)), strcat(text, text2), '8 8 8'*(scrwidth/640), '1 1 1', 1); + } }; diff --git a/quakec/fallout2/defs.qc b/quakec/fallout2/defs.qc index f58eb80e2..1ca7b2517 100644 --- a/quakec/fallout2/defs.qc +++ b/quakec/fallout2/defs.qc @@ -684,6 +684,7 @@ float intermission_running; .float shadowskill_speech; .float musictimer; +.float soundmode; .float rescued; .float scale; diff --git a/quakec/fallout2/misc.qc b/quakec/fallout2/misc.qc index 20c76d251..6c3e9afbc 100644 --- a/quakec/fallout2/misc.qc +++ b/quakec/fallout2/misc.qc @@ -909,10 +909,139 @@ void() misc_noisemaker = }; + +void() explore_think = +{ + local entity te; + + self.think = explore_think; + self.nextthink = time + 0.5; + + te = findradius(self.origin, 128); + + while (te.classname == "player") + { + if (te.soundmode != 1) + { + te.musictimer = 0; + te.soundmode = 1; + } + + te = te.chain; + } +}; + +void() sound_explore = +{ + + self.think = explore_think; + self.nextthink = time + 0.5; + + +}; + +void() vault_think = +{ + local entity te; + + self.think = vault_think; + self.nextthink = time + 0.5; + + te = findradius(self.origin, 128); + + while (te.classname == "player") + { + if (te.soundmode != 2) + { + te.musictimer = 0; + te.soundmode = 2; + } + + te = te.chain; + } +}; + +void() sound_vault = +{ + + self.think = vault_think; + self.nextthink = time + 0.5; + + +}; + + +void() env_grass1 = +{ + local entity grass; + + setmodel (self, "progs/grass1.spr"); + self.touch = SUB_Null; + self.solid = SOLID_NOT; + setsize (self, '-16 -16 -16', '16 16 0'); + self.takedamage = DAMAGE_NO; + self.classname = "env_grass"; + self.movetype = MOVETYPE_BOUNCE; + + grass = spawn(); + + grass.origin = self.origin; + setmodel (grass, "progs/grass1.spr"); + grass.touch = SUB_Null; + grass.solid = SOLID_NOT; + setsize (grass, '-16 -16 -16', '16 16 0'); + grass.takedamage = DAMAGE_NO; + grass.classname = "env_grass"; + grass.angles_y = grass.angles_y + 90; + grass.movetype = MOVETYPE_BOUNCE; + +}; + +void() env_grass2 = +{ + local entity grass; + + setmodel (self, "progs/grass2.spr"); + self.touch = SUB_Null; + self.solid = SOLID_NOT; + setsize (self, '-16 -16 -16', '16 16 0'); + self.takedamage = DAMAGE_NO; + self.classname = "env_grass"; + self.movetype = MOVETYPE_BOUNCE; + + grass = spawn(); + + grass.origin = self.origin; + setmodel (grass, "progs/grass2.spr"); + grass.touch = SUB_Null; + grass.solid = SOLID_NOT; + setsize (grass, '-16 -16 -16', '16 16 0'); + grass.takedamage = DAMAGE_NO; + grass.classname = "env_grass"; + grass.angles_y = grass.angles_y + 90; + grass.movetype = MOVETYPE_BOUNCE; +}; + + +void() env_car = +{ + + setmodel (self, "progs/car.mdl"); + self.touch = SUB_Null; + self.solid = SOLID_BBOX; + setsize (self, '-16 -16 -16', '16 16 16'); + self.takedamage = DAMAGE_NO; + self.classname = "env_grass"; + self.movetype = MOVETYPE_BOUNCE; + + +}; + + void() brotherhood_merchant = { local entity sign; - +/* sign = spawn(); sign.movetype = MOVETYPE_BOUNCE; sign.velocity_x = crandom()*50; @@ -933,7 +1062,7 @@ void() brotherhood_merchant = sign.origin = self.origin + '0 32 32'; setmodel(sign, "progs/money.mdl"); sign.solid = SOLID_BBOX; - sign.scale = 10; + sign.scale = 10;*/ @@ -946,7 +1075,7 @@ void() brotherhood_merchant = self.classname = "merchant"; self.think = shop_face; self.nextthink = time + 0.5; - + self.netname = "merchant"; self.xslot1 = SlotVal(IID_WP_GLOCK, 1); @@ -1001,11 +1130,13 @@ void() brotherhood_sergeant = self.movetype = MOVETYPE_BOUNCE; self.velocity_z = -200; - setmodel (self, "progs/enforcer.mdl"); + setmodel (self, "progs/hknight.mdl"); self.touch = SUB_Null; self.solid = SOLID_SLIDEBOX; setsize (self, '-16 -16 -24', '16 16 32'); self.takedamage = DAMAGE_NO; + self.classname = "sergeant"; + self.netname = "rupert starfall, the commander"; }; void() brotherhood_soldier = @@ -1041,6 +1172,7 @@ void() brotherhood_soldier = self.xslot19 = SlotVal(IID_WP_MOONLIGHT, 1); self.xslot20 = SlotVal(IID_WP_MOSSBERG, 1); + self.netname = "soldier"; self.think = shop_face; self.nextthink = time + 0.5; @@ -1063,6 +1195,7 @@ void() brotherhood_guard = self.solid = SOLID_SLIDEBOX; setsize (self, '-16 -16 -24', '16 16 32'); self.takedamage = DAMAGE_NO; + self.netname = "guard"; }; void() brotherhood_doctor = @@ -1088,6 +1221,8 @@ void() brotherhood_doctor = self.xslot18 = SlotVal(IID_CHEM_SUPERSTIM, 1); self.xslot19 = SlotVal(IID_CHEM_ADRENALINE, 1); self.xslot20 = SlotVal(IID_CHEM_RADX, 1); + + self.netname = "doctor"; }; diff --git a/quakec/fallout2/weapons.qc b/quakec/fallout2/weapons.qc index 58406b023..d0f37437e 100644 --- a/quakec/fallout2/weapons.qc +++ b/quakec/fallout2/weapons.qc @@ -1962,7 +1962,6 @@ void() W_Attack = weap = ToIID(self.(SlotField(self.current_slot))); - self.safezone = 0; if (weap == IID_NONE) { @@ -5970,7 +5969,7 @@ void () shop_face = if (te.classname == "player") { self.enemy = te; - te.safezone = 1; + te.safezone = 2; te.xslot1 = self.xslot1; te.xslot2 = self.xslot2; te.xslot3 = self.xslot3;