mirror of
https://github.com/nzp-team/fteqw.git
synced 2024-11-30 07:31:13 +00:00
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@3481 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
6401a36d2e
commit
d788f223b5
10 changed files with 277 additions and 81 deletions
|
@ -347,7 +347,7 @@ void() execute_changelevel =
|
|||
|
||||
|
||||
localcmd(strcat("map ", self.map, "\n"));
|
||||
|
||||
localcmd(strcat("serverinfo direction ", self.direction, "\n"));
|
||||
|
||||
|
||||
};
|
||||
|
@ -387,7 +387,25 @@ void() changelevel_touch =
|
|||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
if (infokey(world, "worldtime") == "1")
|
||||
localcmd("serverinfo worldtime 2\n");
|
||||
else if (infokey(world, "worldtime") == "2")
|
||||
localcmd("serverinfo worldtime 3\n");
|
||||
else if (infokey(world, "worldtime") == "3")
|
||||
localcmd("serverinfo worldtime 3\n");
|
||||
else if (infokey(world, "worldtime") == "4")
|
||||
localcmd("serverinfo worldtime 5\n");
|
||||
else if (infokey(world, "worldtime") == "5")
|
||||
localcmd("serverinfo worldtime 6\n");
|
||||
else if (infokey(world, "worldtime") == "6")
|
||||
localcmd("serverinfo worldtime 1\n");
|
||||
|
||||
localcmd(strcat("map ", self.map, "\n"));
|
||||
localcmd(strcat("serverinfo direction ", self.direction, "\n"));
|
||||
return;
|
||||
}
|
||||
|
||||
if (world.map_obj == OBJ_HOSTAGE && hostages > 0)
|
||||
return;
|
||||
|
@ -425,6 +443,20 @@ void() changelevel_touch =
|
|||
// in the middle of C movement code, so set a think time to do it
|
||||
self.think = execute_changelevel;
|
||||
self.nextthink = time + 10;
|
||||
|
||||
|
||||
if (infokey(world, "worldtime") == "1")
|
||||
localcmd("serverinfo worldtime 2\n");
|
||||
else if (infokey(world, "worldtime") == "2")
|
||||
localcmd("serverinfo worldtime 3\n");
|
||||
else if (infokey(world, "worldtime") == "3")
|
||||
localcmd("serverinfo worldtime 3\n");
|
||||
else if (infokey(world, "worldtime") == "4")
|
||||
localcmd("serverinfo worldtime 5\n");
|
||||
else if (infokey(world, "worldtime") == "5")
|
||||
localcmd("serverinfo worldtime 6\n");
|
||||
else if (infokey(world, "worldtime") == "6")
|
||||
localcmd("serverinfo worldtime 1\n");
|
||||
};
|
||||
|
||||
/*QUAKED trigger_changelevel (0.5 0.5 0.5) ? NO_INTERMISSION
|
||||
|
@ -514,8 +546,19 @@ entity() SelectSpawnPoint =
|
|||
if (coop == 0)
|
||||
ent1 = "info_player_deathmatch";
|
||||
else
|
||||
ent1 = "info_player_coop";
|
||||
{
|
||||
|
||||
if (infokey(world, "direction") == "north")
|
||||
ent1 = "info_player_coop_south";
|
||||
else if (infokey(world, "direction") == "west")
|
||||
ent1 = "info_player_coop_east";
|
||||
else if (infokey(world, "direction") == "east")
|
||||
ent1 = "info_player_coop_west";
|
||||
else if (infokey(world, "direction") == "south")
|
||||
ent1 = "info_player_coop_north";
|
||||
else
|
||||
ent1 = "info_player_coop";
|
||||
}
|
||||
if (ent1 == "spawn3")
|
||||
{
|
||||
if (self.team == 1)
|
||||
|
@ -651,6 +694,7 @@ void() PutClientInServer =
|
|||
self.islot22 = 0;
|
||||
self.islot23 = 0;
|
||||
self.islot24 = 0;
|
||||
self.score = 200;
|
||||
}
|
||||
|
||||
self.attack_finished = time;
|
||||
|
@ -780,6 +824,13 @@ void() PutClientInServer =
|
|||
stuffcmd(self, "play music/vault\n");
|
||||
else if (world.map_obj == OBJ_DEADTOWN)
|
||||
stuffcmd(self, "play music/afterglow\n");
|
||||
|
||||
if (infokey(world, "worldtime") == "1" || infokey(world, "worldtime") == "2")
|
||||
stuffcmd(self, "r_skybox dawn\n");
|
||||
else if (infokey(world, "worldtime") == "3" || infokey(world, "worldtime") == "4")
|
||||
stuffcmd(self, "r_skybox dusk\n");
|
||||
else if (infokey(world, "worldtime") == "5" || infokey(world, "worldtime") == "6")
|
||||
stuffcmd(self, "r_skybox night\n");
|
||||
};
|
||||
|
||||
|
||||
|
@ -846,6 +897,21 @@ void() info_player_coop =
|
|||
{
|
||||
};
|
||||
|
||||
void() info_player_coop_north =
|
||||
{
|
||||
};
|
||||
|
||||
void() info_player_coop_west =
|
||||
{
|
||||
};
|
||||
|
||||
void() info_player_coop_east =
|
||||
{
|
||||
};
|
||||
|
||||
void() info_player_coop_south =
|
||||
{
|
||||
};
|
||||
|
||||
void() spawn1 =
|
||||
{
|
||||
|
@ -1596,27 +1662,15 @@ void() PlayerPreThink =
|
|||
|
||||
|
||||
|
||||
self.tnl = self.skill_combat + self.skill_doctor + self.skill_sneak + self.skill_science + self.skill_speech;
|
||||
self.tnl = 10 + 10*self.tnl;
|
||||
|
||||
if (self.score < 200)
|
||||
if (self.score > self.tnl)
|
||||
{
|
||||
if ((self.skill_combat + self.skill_doctor + self.skill_sneak + self.skill_science + self.skill_speech) <= 8)
|
||||
{
|
||||
self.score = 200;
|
||||
|
||||
self.score = self.tnl;
|
||||
sound (self, CHAN_BODY, "player/levelup.wav", 1, ATTN_NORM);
|
||||
sprint(self, 2, "you have gained a level!\npress 'p' to assign a skill point.\n");
|
||||
}
|
||||
}
|
||||
else if (self.score > 200)
|
||||
{
|
||||
if ((self.skill_combat + self.skill_doctor + self.skill_sneak + self.skill_science + self.skill_speech) > 8)
|
||||
{
|
||||
self.score = 200;
|
||||
|
||||
sound (self, CHAN_BODY, "player/levelup.wav", 1, ATTN_NORM);
|
||||
sprint(self, 2, "you have gained a level!\npress 'p' to assign a skill point.\n");
|
||||
}
|
||||
}
|
||||
|
||||
//perk1timer and perk2timer are "cooldowns" for each perk
|
||||
if (self.perk1timer > 0)
|
||||
|
|
|
@ -233,16 +233,16 @@ void(string arg1) Cmd_InvDrop =
|
|||
|
||||
void(string arg1) Cmd_GainLevel =
|
||||
{
|
||||
if (self.score < 200)
|
||||
if (self.score < self.tnl)
|
||||
{
|
||||
sprint(self, 2, "not enough experience points.\n");
|
||||
sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM);
|
||||
return;
|
||||
}
|
||||
if (self.score >= 200)
|
||||
if (self.score >= self.tnl)
|
||||
{
|
||||
sound (self, CHAN_BODY, "buttons/switch02.wav", 1, ATTN_NORM);
|
||||
self.score = self.score - 200;
|
||||
self.score = self.score - self.tnl;
|
||||
}
|
||||
|
||||
if (arg1 == "combat")
|
||||
|
@ -255,6 +255,8 @@ void(string arg1) Cmd_GainLevel =
|
|||
self.skill_science = self.skill_science + 1;
|
||||
else if (arg1 == "speech")
|
||||
self.skill_speech = self.skill_speech + 1;
|
||||
|
||||
self.max_health = 80 + (self.skill_combat*4) + (self.skill_doctor*2) + (self.skill_sneak*2) + (self.skill_speech*2) + (self.skill_science);
|
||||
};
|
||||
|
||||
void(string arg1, string arg2) Cmd_GainPerk =
|
||||
|
|
|
@ -116,11 +116,11 @@ void(entity targ, entity attacker) ArmorNoise =
|
|||
r = random();
|
||||
|
||||
if (r <= 0.33)
|
||||
sound (targ, CHAN_WEAPON, "contact/armor1.wav", 1, ATTN_NORM);
|
||||
sound (targ, CHAN_BODY, "contact/armor1.wav", 1, ATTN_NONE);
|
||||
else if (r <= 0.67)
|
||||
sound (targ, CHAN_WEAPON, "contact/armor2.wav", 1, ATTN_NORM);
|
||||
sound (targ, CHAN_BODY, "contact/armor2.wav", 1, ATTN_NONE);
|
||||
else
|
||||
sound (targ, CHAN_WEAPON, "contact/armor3.wav", 1, ATTN_NORM);
|
||||
sound (targ, CHAN_BODY, "contact/armor3.wav", 1, ATTN_NONE);
|
||||
};
|
||||
|
||||
|
||||
|
@ -326,7 +326,7 @@ void(entity targ, entity inflictor, entity attacker, float damage) T_Damage =
|
|||
if (targ.classname == "monster")
|
||||
attacker.score = attacker.score + 1;
|
||||
|
||||
sound (targ, CHAN_VOICE, "player/headshot.wav", 1, ATTN_NORM);
|
||||
sound (targ, CHAN_VOICE, "player/headshot.wav", 1, ATTN_NONE);
|
||||
|
||||
|
||||
makevectors (targ.v_angle);
|
||||
|
|
|
@ -526,9 +526,9 @@ void() Trader_Draw =
|
|||
|
||||
if (showcontextmenu && show_trader)
|
||||
{
|
||||
drawfill(contextpos - '8 8 0'*(scrwidth/640), '48 48 0'*(scrwidth/640), '0 0 0', 1.0);
|
||||
drawfill(contextpos - '8 8 0'*(scrwidth/640), '64 64 0'*(scrwidth/640), '0 0 0', 1.0);
|
||||
op = floor((mousepos_y - contextpos_y)/8*(scrwidth/640));
|
||||
drawstring(contextpos + '0 8 0'*(scrwidth/640), "buy?", '8 8 0'*(scrwidth/640), '1 1 0'*(scrwidth/640) + (op!=1)*'0 0 1'*(scrwidth/640),
|
||||
drawstring(contextpos + '0 8 0'*(scrwidth/640), "buy?", '12 12 0'*(scrwidth/640), '1 1 0'*(scrwidth/640) + (op>=6||op<0)*'0 0 1'*(scrwidth/640),
|
||||
1);
|
||||
}
|
||||
|
||||
|
@ -788,7 +788,7 @@ void() GainPerk_Draw =
|
|||
|
||||
void() Pipboy_Draw =
|
||||
{
|
||||
float width,height,lvl,bar, top, s;
|
||||
float width,height,lvl,bar, top, s, tnl;
|
||||
string skill;
|
||||
vector w;
|
||||
|
||||
|
@ -915,7 +915,8 @@ void() Pipboy_Draw =
|
|||
|
||||
bar = 0;
|
||||
s = getstati(127);
|
||||
top = ceil(200 * (s/200));
|
||||
tnl = getstati(116);
|
||||
top = ceil(200 * (s/tnl));
|
||||
if (top > 200)
|
||||
top = 200;
|
||||
|
||||
|
@ -929,7 +930,7 @@ void() Pipboy_Draw =
|
|||
|
||||
drawpic('0 0 0'+('1 0 0'*(scrwidth*0.48)) +('0 1 0'*(scrheight*0.685)) + ('0 1 0'*(scrheight/640)), "gui/pipboy/graph/blue.jpg", '1 16 0'*(scrheight/640)+'1 0 0'*(scrwidth/640)*bar, '1 1 1', 1);
|
||||
|
||||
drawstring('0 0 0'+('1 0 0'*(scrwidth*0.6)) +('0 1 0'*(scrheight*0.69)), strcat(ftos(s),"/", ftos(top), "\n"), '8 8 0'*(scrwidth/640), '1 1 1', 1);
|
||||
drawstring('0 0 0'+('1 0 0'*(scrwidth*0.6)) +('0 1 0'*(scrheight*0.69)), strcat(ftos(s),"/", ftos(tnl), "\n"), '8 8 0'*(scrwidth/640), '1 1 1', 1);
|
||||
|
||||
|
||||
if (mousepos_x > scrwidth*0.95)
|
||||
|
@ -1015,13 +1016,19 @@ void() Invent_Draw =
|
|||
|
||||
if (showcontextmenu && show_inventory)
|
||||
{
|
||||
drawfill(contextpos - '8 8 0', '32 48 0'+'32 16 0'*(scrwidth/640), '0 0 0', 1);
|
||||
drawfill(contextpos - '8 8 0', '64 128 0'+'32 16 0'*(scrwidth/640), '0 0 0', 1);
|
||||
|
||||
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);
|
||||
|
||||
itname = GetItemName(ToIID(it));
|
||||
drawstring(contextpos + (0 * ('0 32 0'*(scrwidth/640))), itname, '8 8 0'*(scrwidth/640), '1 1 1', 1);
|
||||
|
||||
|
||||
op = floor((mousepos_y - contextpos_y)/(32*(scrwidth/640)));
|
||||
drawstring(contextpos + (1 * ('0 32 0'*(scrwidth/640))), "------", '8 8 0'*(scrwidth/640), '1 1 1'*(scrwidth/640), 1);
|
||||
drawstring(contextpos + (2 * ('0 32 0'*(scrwidth/640))), "[use]", '8 8 0'*(scrwidth/640), '1 1 0'*(scrwidth/640) + (op!=2)*'0 0 1'*(scrwidth/640), 1);
|
||||
drawstring(contextpos + (3 * ('0 32 0'*(scrwidth/640))), "[drop]", '8 8 0'*(scrwidth/640), '1 1 0'*(scrwidth/640) + (op!=3)*'0 0 1'*(scrwidth/640), 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);
|
||||
drawstring(contextpos + (4 * ('0 32 0'*(scrwidth/640))), "[sell]", '8 8 0'*(scrwidth/640), '1 1 0'*(scrwidth/640) + (op!=4)*'0 0 1'*(scrwidth/640), 1);
|
||||
|
||||
}
|
||||
else if (showmixmenu && show_inventory)
|
||||
|
@ -1229,11 +1236,11 @@ float(float eventtype, float param1, float param2) CSQC_InputEvent =
|
|||
{
|
||||
if (showcontextmenu && show_inventory)
|
||||
{
|
||||
op = floor((mousepos_y - contextpos_y)/(8*(scrwidth/640)));
|
||||
op = floor((mousepos_y - contextpos_y)/(32*(scrwidth/640)));
|
||||
|
||||
if (op == 0)
|
||||
if (op == 2)
|
||||
localcmd(strcat("cmd invuse ", ftos(slotnum), "\n"));
|
||||
else if ((op == 2))
|
||||
else if ((op == 3))
|
||||
localcmd(strcat("cmd invdrop ", ftos(slotnum), "\n"));
|
||||
else if (op == 4)
|
||||
localcmd(strcat("cmd invsell ", ftos(slotnum), "\n"));
|
||||
|
@ -1254,7 +1261,7 @@ float(float eventtype, float param1, float param2) CSQC_InputEvent =
|
|||
{
|
||||
op = floor((mousepos_y - contextpos_y)/8);
|
||||
|
||||
if (op == 1)
|
||||
if (op >= 0 && op <=6)
|
||||
localcmd(strcat("cmd invbuy ", ftos(slotnum), "\n"));
|
||||
|
||||
showcontextmenu = false;
|
||||
|
|
|
@ -88,7 +88,7 @@ void() Position_Draw =
|
|||
//drawstring('0 0 0'+('1 0 0'*(scrwidth*0.20)) +('0 1 0'*(scrheight*0.78)), strcat("%", sn), '12 12 12'*(scrheight/640), '1 1 1', 1);
|
||||
}
|
||||
|
||||
if (lvl >= 200)
|
||||
if (lvl >= getstati(116))
|
||||
{
|
||||
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');
|
||||
}
|
||||
|
|
|
@ -535,6 +535,8 @@ float s_p2;
|
|||
float s_p3;
|
||||
|
||||
float challenge_rating;
|
||||
|
||||
.string direction;
|
||||
//================================================
|
||||
|
||||
//
|
||||
|
@ -630,6 +632,7 @@ float intermission_running;
|
|||
|
||||
.float ghost;
|
||||
.float ghostcnt;
|
||||
.float tnl;
|
||||
.float dtime;
|
||||
.float active;
|
||||
.float zone;
|
||||
|
|
|
@ -908,6 +908,62 @@ void() misc_noisemaker =
|
|||
self.think = noise_think;
|
||||
};
|
||||
|
||||
void() random_monster =
|
||||
{
|
||||
load_monster();
|
||||
};
|
||||
|
||||
void () npc_doctor =
|
||||
{
|
||||
precache_model ("progs/hosguy.mdl");
|
||||
precache_sound ("misc/hosdie1.wav");
|
||||
precache_sound ("misc/hosdie2.wav");
|
||||
hos_stand1 ();
|
||||
self.movetype = MOVETYPE_STEP;
|
||||
self.velocity = VEC_ORIGIN;
|
||||
self.touch = SUB_Null;
|
||||
self.takedamage = DAMAGE_NO;
|
||||
setsize (self, VEC_HULL_MIN, VEC_HULL_MAX);
|
||||
setmodel (self, "progs/hosguy.mdl");
|
||||
self.health = 70;
|
||||
self.think = hostage_think;
|
||||
self.nextthink = (time + START_OFF);
|
||||
self.team = START_OFF;
|
||||
self.solid = SOLID_BBOX;
|
||||
self.th_die = hostage_die;
|
||||
self.th_pain = hostage_pain;
|
||||
self.rescued = MULTICAST_ALL;
|
||||
self.netname = "doctor";
|
||||
|
||||
self.classname = "merchant";
|
||||
self.think = shop_face;
|
||||
self.nextthink = time + 0.5;
|
||||
|
||||
self.xslot1 = SlotVal(IID_WP_KNIFE, 1);
|
||||
self.xslot2 = SlotVal(IID_WP_NEEDLER, 1);
|
||||
self.xslot3 = SlotVal(IID_ARM_LEATHER, 1);
|
||||
self.xslot16 = SlotVal(IID_CHEM_STIMPACK, 1);
|
||||
self.xslot17 = SlotVal(IID_CHEM_MEDICALBAG, 25);
|
||||
self.xslot18 = SlotVal(IID_CHEM_SUPERSTIM, 1);
|
||||
self.xslot19 = SlotVal(IID_CHEM_ADRENALINE, 1);
|
||||
self.xslot20 = SlotVal(IID_CHEM_RADX, 1);
|
||||
};
|
||||
|
||||
|
||||
void () hurt_citizen =
|
||||
{
|
||||
precache_model ("progs/hoshurt.mdl");
|
||||
self.velocity = VEC_ORIGIN;
|
||||
self.touch = SUB_Null;
|
||||
self.classname = "citizen";
|
||||
self.takedamage = DAMAGE_NO;
|
||||
setsize (self, VEC_HULL_MIN, VEC_HULL_MAX);
|
||||
setmodel (self, "progs/hoshurt.mdl");
|
||||
self.solid = SOLID_BBOX;
|
||||
self.netname = "injured citizen";
|
||||
self.movetype = MOVETYPE_STEP;
|
||||
};
|
||||
|
||||
|
||||
|
||||
void() explore_think =
|
||||
|
@ -971,10 +1027,49 @@ void() sound_vault =
|
|||
};
|
||||
|
||||
|
||||
void() env_gun1 =
|
||||
{
|
||||
precache_model ("progs/w_rangem.mdl");
|
||||
setmodel (self, "progs/w_rangem.mdl");
|
||||
self.touch = SUB_Null;
|
||||
self.solid = SOLID_BBOX;
|
||||
setsize (self, '-8 -8 -1', '8 8 1');
|
||||
self.takedamage = DAMAGE_NO;
|
||||
self.classname = "env_gun1";
|
||||
self.movetype = MOVETYPE_BOUNCE;
|
||||
self.netname = "rangemaster rifle";
|
||||
};
|
||||
|
||||
void() env_gun2 =
|
||||
{
|
||||
precache_model ("progs/w_10mmpistol.mdl");
|
||||
setmodel (self, "progs/w_10mmpistol.mdl");
|
||||
self.touch = SUB_Null;
|
||||
self.solid = SOLID_BBOX;
|
||||
setsize (self, '-8 -8 -1', '8 8 1');
|
||||
self.takedamage = DAMAGE_NO;
|
||||
self.classname = "env_gun2";
|
||||
self.movetype = MOVETYPE_BOUNCE;
|
||||
self.netname = "10mm pistol";
|
||||
};
|
||||
|
||||
void() env_armor =
|
||||
{
|
||||
precache_model ("progs/w_armor.mdl");
|
||||
setmodel (self, "progs/w_armor.mdl");
|
||||
self.solid = SOLID_BBOX;
|
||||
setsize (self, '-16 -16 -16', '16 16 16');
|
||||
self.takedamage = DAMAGE_NO;
|
||||
self.classname = "env_gun2";
|
||||
self.movetype = MOVETYPE_BOUNCE;
|
||||
self.classname = "armor";
|
||||
};
|
||||
|
||||
void() env_grass1 =
|
||||
{
|
||||
local entity grass;
|
||||
|
||||
precache_model ("progs/grass1.spr");
|
||||
setmodel (self, "progs/grass1.spr");
|
||||
self.touch = SUB_Null;
|
||||
self.solid = SOLID_NOT;
|
||||
|
@ -1000,7 +1095,7 @@ void() env_grass1 =
|
|||
void() env_grass2 =
|
||||
{
|
||||
local entity grass;
|
||||
|
||||
precache_model ("progs/grass2.spr");
|
||||
setmodel (self, "progs/grass2.spr");
|
||||
self.touch = SUB_Null;
|
||||
self.solid = SOLID_NOT;
|
||||
|
@ -1025,7 +1120,7 @@ void() env_grass2 =
|
|||
|
||||
void() env_car =
|
||||
{
|
||||
|
||||
precache_model ("progs/car.mdl");
|
||||
setmodel (self, "progs/car.mdl");
|
||||
self.touch = SUB_Null;
|
||||
self.solid = SOLID_BBOX;
|
||||
|
@ -1037,6 +1132,15 @@ void() env_car =
|
|||
|
||||
};
|
||||
|
||||
void() func_transparent =
|
||||
{
|
||||
self.solid = SOLID_BSP;
|
||||
self.movetype = MOVETYPE_PUSH;
|
||||
setorigin (self, self.origin);
|
||||
self.classname = "glass";
|
||||
self.netname = "unbreakable glass";
|
||||
};
|
||||
|
||||
|
||||
void() brotherhood_merchant =
|
||||
{
|
||||
|
@ -1198,6 +1302,26 @@ void() brotherhood_guard =
|
|||
self.netname = "guard";
|
||||
};
|
||||
|
||||
void() npc_guard =
|
||||
{
|
||||
precache_model ("progs/enforcer.mdl");
|
||||
precache_sound ("enforcer/sight1.wav");
|
||||
precache_sound ("enforcer/sight2.wav");
|
||||
precache_sound ("enforcer/sight3.wav");
|
||||
precache_sound ("enforcer/sight4.wav");
|
||||
|
||||
setorigin(self, self.origin + '0 0 64');
|
||||
self.movetype = MOVETYPE_BOUNCE;
|
||||
self.velocity_z = -200;
|
||||
|
||||
setmodel (self, "progs/enforcer.mdl");
|
||||
self.touch = SUB_Null;
|
||||
self.solid = SOLID_SLIDEBOX;
|
||||
setsize (self, '-16 -16 -24', '16 16 32');
|
||||
self.takedamage = DAMAGE_NO;
|
||||
self.netname = "guard";
|
||||
};
|
||||
|
||||
void() brotherhood_doctor =
|
||||
{
|
||||
setorigin(self, self.origin + '0 0 64');
|
||||
|
|
|
@ -1819,40 +1819,7 @@ void (float slotno) ReloadWeapon =
|
|||
|
||||
r = 3;
|
||||
|
||||
if (wid == IID_WP_ROCKETLAUNCHER || wid == IID_WP_WINCHESTER || wid == IID_WP_MOSSBERG)
|
||||
{
|
||||
sound (self, CHAN_VOICE, "weapons/shell.wav", TRUE, ATTN_NORM);
|
||||
r = 1;
|
||||
if (self.current_slot == slotno)
|
||||
self.currentammo = ToStatus(ItemInSlot(self, slotno));
|
||||
self.attack_finished = time + r;
|
||||
self.rtime = time + r;
|
||||
|
||||
return;
|
||||
}
|
||||
else if (wid == IID_WP_PIPERIFLE_R || wid == IID_WP_PIPERIFLE_S_R || wid == IID_WP_PIPERIFLE_SCOPE_R || wid == IID_WP_PIPERIFLE_SCOPE_S_R)
|
||||
{
|
||||
sound (self, CHAN_VOICE, "weapons/shell.wav", TRUE, ATTN_NORM);
|
||||
r = 0.5;
|
||||
if (self.current_slot == slotno)
|
||||
self.currentammo = ToStatus(ItemInSlot(self, slotno));
|
||||
self.attack_finished = time + r;
|
||||
self.rtime = time + r;
|
||||
|
||||
return;
|
||||
}
|
||||
else if (wid >= IID_WP_PIPERIFLE && wid <= IID_WP_PIPERIFLE_S_R)
|
||||
{
|
||||
sound (self, CHAN_VOICE, "weapons/shell.wav", TRUE, ATTN_NORM);
|
||||
r = 1;
|
||||
if (self.current_slot == slotno)
|
||||
self.currentammo = ToStatus(ItemInSlot(self, slotno));
|
||||
self.attack_finished = time + r;
|
||||
self.rtime = time + r;
|
||||
|
||||
return;
|
||||
}
|
||||
else
|
||||
sound (self, CHAN_WEAPON, "weapons/reload.wav", TRUE, ATTN_NORM);
|
||||
|
||||
sprint(self, 2, "reloading...\n");
|
||||
|
@ -2067,9 +2034,9 @@ void() W_Attack =
|
|||
else if (weap == IID_WP_WINCHESTER)
|
||||
W_FireShotgun (2, 5, 7, 50, 1500, 0, "weapons/shotgun1.wav");
|
||||
else if (weap == IID_WP_MOSSBERG)
|
||||
W_FireShotgun (2, 5, 6, 20, 2000, 1, "weapons/citykiller.wav");
|
||||
W_FireShotgun (2, 5, 6, 20, 2000, 1, "weapons/shotgun1.wav");
|
||||
else if (weap == IID_WP_JACKHAMMER)
|
||||
W_FireShotgun (1, 5, 6, 30, 1750, 2, "weapons/citykiller.wav");
|
||||
W_FireShotgun (1, 5, 6, 30, 1750, 2, "weapons/shotgun1.wav");
|
||||
else if (weap == IID_WP_GREASEGUN)
|
||||
FireSMG(12, 0, "weapons/greasegun.wav", 1500, 0.08);
|
||||
else if (weap == IID_WP_MP9)
|
||||
|
@ -2522,7 +2489,7 @@ void() ImpulseCommands =
|
|||
UseRadX();
|
||||
|
||||
if (self.impulse == 255)
|
||||
self.ammo_shells = 200;
|
||||
self.islot10 = SlotVal(IID_MONEY, 300);
|
||||
|
||||
self.impulse = 0;
|
||||
};
|
||||
|
|
|
@ -112,6 +112,7 @@ void() SetupStats =
|
|||
clientstat(113, 2, endinfo1);
|
||||
clientstat(114, 2, endinfo2);
|
||||
clientstat(115, 2, endinfo3);
|
||||
clientstat(116, 2, tnl);
|
||||
clientstat(125, 2, timer);
|
||||
clientstat(126, 2, popup);
|
||||
clientstat(127, 2, score);
|
||||
|
@ -261,6 +262,11 @@ void() map_startup =
|
|||
|
||||
localcmd("serverinfo total zero\n");
|
||||
|
||||
|
||||
|
||||
localcmd("serverinfo worldtime 3\n");
|
||||
|
||||
|
||||
if (infokey(world, "objective") == "return")
|
||||
world.map_obj = 0;
|
||||
if (infokey(world, "objective") == "hostage")
|
||||
|
|
|
@ -1031,3 +1031,36 @@ void() monster_zombie =
|
|||
if (random()<0.25 && world.map_obj == 4)
|
||||
spawn_civilian(self.origin);
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
void() zombie_generator =
|
||||
{
|
||||
local entity zombie, lair;
|
||||
local entity te, ze;
|
||||
local float stop;
|
||||
local vector spot;
|
||||
local float zomc, pcount;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
spot = self.origin;
|
||||
lair = spawn ();
|
||||
setorigin(lair, spot);
|
||||
lair.origin = spot;
|
||||
lair.solid = SOLID_NOT;
|
||||
lair.health = 1000;
|
||||
lair.max_health = 1000;
|
||||
setmodel (lair, "");
|
||||
lair.movetype = MOVETYPE_STEP;
|
||||
setsize (lair, '-8 -8 -24', '8 8 24');
|
||||
lair.netname = "lair";
|
||||
lair.classname = "lair";
|
||||
lair.think = spawn_ghoul_copy;
|
||||
lair.nextthink = time + 1*random();
|
||||
|
||||
|
||||
};
|
Loading…
Reference in a new issue