git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@3452 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
d07fd0369f
commit
d35ca68b3a
19 changed files with 637 additions and 813 deletions
|
@ -3,6 +3,8 @@ void() t_movetarget;
|
|||
void() knight_walk1;
|
||||
void() knight_bow6;
|
||||
void() knight_bow1;
|
||||
void() walkmonster_start;
|
||||
|
||||
void(entity etemp, entity stemp, entity stemp, float dmg) T_Damage;
|
||||
/*
|
||||
|
||||
|
@ -516,6 +518,21 @@ The monster is walking it's beat
|
|||
*/
|
||||
void(float dist) ai_walk =
|
||||
{
|
||||
if (self.hold == 1)
|
||||
{
|
||||
self.th_stand;
|
||||
self.hold = 0;
|
||||
return;
|
||||
}
|
||||
if (self.hold > 1)
|
||||
{
|
||||
self.th_stand ();
|
||||
|
||||
|
||||
self.hold = self.hold - 1;
|
||||
return;
|
||||
}
|
||||
|
||||
movedist = dist;
|
||||
|
||||
// check for noticing a player
|
||||
|
@ -535,6 +552,21 @@ The monster is staying in one place for a while, with slight angle turns
|
|||
*/
|
||||
void() ai_stand =
|
||||
{
|
||||
if (self.hold == 1)
|
||||
{
|
||||
self.th_stand;
|
||||
self.hold = 0;
|
||||
return;
|
||||
}
|
||||
if (self.hold > 1)
|
||||
{
|
||||
self.th_stand ();
|
||||
|
||||
|
||||
self.hold = self.hold - 1;
|
||||
return;
|
||||
}
|
||||
|
||||
if (FindTarget ())
|
||||
return;
|
||||
|
||||
|
@ -712,7 +744,14 @@ The monster has an enemy it is trying to kill
|
|||
*/
|
||||
void(float dist) ai_run =
|
||||
{
|
||||
if (self.hold > 0)
|
||||
|
||||
if (self.hold == 1)
|
||||
{
|
||||
self.th_stand;
|
||||
self.hold = 0;
|
||||
return;
|
||||
}
|
||||
if (self.hold > 1)
|
||||
{
|
||||
self.th_stand ();
|
||||
|
||||
|
|
|
@ -50,14 +50,10 @@ void() SetChangeParms =
|
|||
(IT_KEY1 | IT_KEY2 | IT_INVISIBILITY | IT_INVULNERABILITY | IT_SUIT | IT_QUAD) );
|
||||
|
||||
|
||||
if (self.skill_combat > 0)
|
||||
parm5 = self.skill_combat;
|
||||
if (self.skill_doctor > 0)
|
||||
parm6 = self.skill_doctor;
|
||||
if (self.skill_sneak > 0)
|
||||
parm7 = self.skill_sneak;
|
||||
if (self.skill_science > 0)
|
||||
parm14 = self.skill_science;
|
||||
parm5 = self.skill_combat;
|
||||
parm6 = self.skill_doctor;
|
||||
parm7 = self.skill_sneak;
|
||||
parm14 = self.skill_science;
|
||||
|
||||
|
||||
|
||||
|
@ -1264,7 +1260,7 @@ void() SneakLevel =
|
|||
|
||||
front = 0;
|
||||
|
||||
te = findradius(self.origin, 1000);
|
||||
te = findradius(self.origin, 1500);
|
||||
while (te)
|
||||
{
|
||||
if (visible(te) && te.classname == "monster" && check_fov(te))
|
||||
|
@ -1275,7 +1271,7 @@ void() SneakLevel =
|
|||
}
|
||||
|
||||
|
||||
sn = 90 + self.skill_sneak*0.5;
|
||||
sn = 90 + self.skill_sneak/2;
|
||||
|
||||
//sneaking along a wall increases chance by 2%
|
||||
makevectors(self.angles);
|
||||
|
@ -1288,9 +1284,9 @@ void() SneakLevel =
|
|||
else if (pointcontents (self.origin - v_forward*64) == CONTENT_SOLID)
|
||||
sn = sn + 2;
|
||||
|
||||
//duck or prone gives a 1% bonus to stealth
|
||||
//duck or prone gives a 2% bonus to stealth
|
||||
if (self.position > 0)
|
||||
sn = sn + 1;
|
||||
sn = sn + 2;
|
||||
|
||||
//walking in front of a monster at close range is very bad
|
||||
//at longer ranges it isn't so bad to do so
|
||||
|
@ -1300,36 +1296,34 @@ void() SneakLevel =
|
|||
{
|
||||
r = 600 - r;
|
||||
q = 3 + (self.skill_sneak/2);
|
||||
//stealthboy gives a bonus to sneak range
|
||||
st = ToIID(self.islot4);
|
||||
if (st == IID_EQUIP_STEALTHBOY)
|
||||
q = 3 + (self.skill_sneak/2) + 3;
|
||||
|
||||
sn = sn - r/q;
|
||||
}
|
||||
|
||||
|
||||
//wearing no armor gives a 5% bonus to stealth
|
||||
//combat armor gives a penalty to stealth
|
||||
st = ToIID(self.islot3);
|
||||
if (st == 0)
|
||||
sn = sn + 5;
|
||||
|
||||
//bulletproof shirt gives a 2% bonus to stealth
|
||||
st = ToIID(self.islot3);
|
||||
if (st == IID_ARM_LEATHER)
|
||||
sn = sn + 2;
|
||||
if (st == IID_ARM_COMBAT || st == IID_ARM_SEVA)
|
||||
sn = sn - 5;
|
||||
|
||||
//metal armor gives a large penalty to stealth
|
||||
st = ToIID(self.islot3);
|
||||
if (st == IID_ARM_METAL)
|
||||
sn = sn - 5;
|
||||
sn = sn - 10;
|
||||
|
||||
//power armor gives a huge penalty to stealth
|
||||
st = ToIID(self.islot3);
|
||||
if (st == IID_ARM_LPOWER)
|
||||
sn = sn - 10;
|
||||
sn = sn - 25;
|
||||
|
||||
|
||||
//stealthboy allows for an automatic 10-second invisibility
|
||||
st = ToIID(self.islot4);
|
||||
if (st == IID_EQUIP_STEALTHBOY && self.ammo_cells > 0)
|
||||
sn = 99;
|
||||
//tesla armor gives a massive penalty to stealth
|
||||
st = ToIID(self.islot3);
|
||||
if (st == IID_ARM_TESLA)
|
||||
sn = sn - 40;
|
||||
|
||||
if (sn <= 5)
|
||||
sn = 5;
|
||||
|
@ -1560,6 +1554,8 @@ void() PlayerPreThink =
|
|||
if (self.perk2timer > 0)
|
||||
self.perk2timer = self.perk2timer - 1;
|
||||
|
||||
self.shadowtime = time_left;
|
||||
|
||||
if (self.cycle1 < time)
|
||||
{
|
||||
if (self.currentmenu != "none")
|
||||
|
|
|
@ -309,6 +309,8 @@ void(string arg1, string arg2) Cmd_GainPerk =
|
|||
self.perk1 = 8;
|
||||
if (arg1 == "9")
|
||||
self.perk1 = 9;
|
||||
if (arg1 == "10")
|
||||
self.perk1 = 10;
|
||||
}
|
||||
if (arg2 == "2")
|
||||
{
|
||||
|
@ -330,6 +332,8 @@ void(string arg1, string arg2) Cmd_GainPerk =
|
|||
self.perk2 = 8;
|
||||
if (arg1 == "9")
|
||||
self.perk2 = 9;
|
||||
if (arg1 == "10")
|
||||
self.perk2 = 10;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -126,7 +126,7 @@ void(entity targ, entity inflictor, entity attacker, float damage) T_Damage =
|
|||
|
||||
damage = floor(damage);
|
||||
targ.health = floor(targ.health);
|
||||
|
||||
/*
|
||||
if (attacker.classname == "player" && total_players == 4)
|
||||
damage = floor(damage * 0.75);
|
||||
if (attacker.classname == "player" && total_players == 3)
|
||||
|
@ -134,8 +134,8 @@ void(entity targ, entity inflictor, entity attacker, float damage) T_Damage =
|
|||
else if (attacker.classname == "player" && total_players == 2)
|
||||
damage = floor(damage * 0.90);
|
||||
|
||||
if (attacker.classname == "monster")
|
||||
damage = floor(damage * 0.80);
|
||||
if (targ.classname == "player")
|
||||
damage = floor(damage * 0.60);*/
|
||||
|
||||
|
||||
//getting hurt is slightly painful to the score, play cautiously!
|
||||
|
@ -255,14 +255,12 @@ void(entity targ, entity inflictor, entity attacker, float damage) T_Damage =
|
|||
damage = damage * 0.90;
|
||||
}
|
||||
|
||||
|
||||
//sneak attack: if you attack a creature who isn't fighting you, bonus damage
|
||||
if (attacker.skill_sneak > 0)
|
||||
{
|
||||
if (targ.enemy != attacker)
|
||||
{
|
||||
sprint(attacker, 2, "!SNEAK ATTACK\n");
|
||||
damage = damage * (1 + (self.skill_sneak/100));
|
||||
}
|
||||
damage = damage * (1 + (attacker.skill_sneak/100));
|
||||
}
|
||||
|
||||
//death wish: 20% damage bonus to targ, 10% to attacker
|
||||
|
@ -457,25 +455,25 @@ take = damage;
|
|||
take -= 3;
|
||||
break;
|
||||
case IID_ARM_VANDAL:
|
||||
take -= 4;
|
||||
break;
|
||||
case IID_ARM_METAL:
|
||||
take -= 5;
|
||||
break;
|
||||
case IID_ARM_METAL:
|
||||
take -= 1;
|
||||
break;
|
||||
case IID_ARM_TESLA:
|
||||
take -= 9;
|
||||
take -= 6;
|
||||
break;
|
||||
case IID_ARM_COMBAT:
|
||||
take -= 6;
|
||||
break;
|
||||
case IID_ARM_SEVA:
|
||||
take -= 8;
|
||||
take -= 6;
|
||||
break;
|
||||
case IID_ARM_FORCE:
|
||||
take -= 13;
|
||||
take -= 9;
|
||||
break;
|
||||
case IID_ARM_LPOWER:
|
||||
take -= 11;
|
||||
take -= 10;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -490,22 +488,22 @@ take = damage;
|
|||
take = take * 0.70;
|
||||
break;
|
||||
case IID_ARM_METAL:
|
||||
take = take * 0.50;
|
||||
take = take * 0.40;
|
||||
break;
|
||||
case IID_ARM_TESLA:
|
||||
take = take * 0.65;
|
||||
take = take * 0.60;
|
||||
break;
|
||||
case IID_ARM_COMBAT:
|
||||
take = take * 0.60;
|
||||
break;
|
||||
case IID_ARM_SEVA:
|
||||
take = take * 0.55;
|
||||
take = take * 0.60;
|
||||
break;
|
||||
case IID_ARM_FORCE:
|
||||
take = take * 0.90;
|
||||
break;
|
||||
case IID_ARM_LPOWER:
|
||||
take = take * 0.50;
|
||||
take = take * 0.40;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
|
@ -8,6 +8,8 @@ float show_trader;
|
|||
float show_perks;
|
||||
float show_items;
|
||||
float show_gainperk;
|
||||
float scrwidth;
|
||||
float scrheight;
|
||||
|
||||
vector mousepos;
|
||||
|
||||
|
@ -215,6 +217,41 @@ void() ScreenImage =
|
|||
else if (getstati(57) == 6)
|
||||
drawpic('0 0 0', "gui/xcarnage.jpg", w, '1 1 1', 1);
|
||||
|
||||
|
||||
w = '0 32 0'+('1 0 0'*(scrwidth*0.10))+('0 1 0'*(scrheight*0.20));
|
||||
|
||||
if (getstati(57) == 3)
|
||||
{
|
||||
if (getstati(105) == 1)
|
||||
drawstring(w, "the players were slain...", '8 8 8', '1 1 1', 1);
|
||||
if (getstati(105) == 2)
|
||||
drawstring(w, "the hostages were slain...", '8 8 8', '1 1 1', 1);
|
||||
if (getstati(105) == 3)
|
||||
drawstring(w, "the hostages were saved!", '8 8 8', '1 1 1', 1);
|
||||
if (getstati(105) == 4)
|
||||
drawstring(w, "some hostages were saved.", '8 8 8', '1 1 1', 1);
|
||||
if (getstati(105) == 5)
|
||||
drawstring(w, "no hostages were saved...", '8 8 8', '1 1 1', 1);
|
||||
if (getstati(105) == 6)
|
||||
drawstring(w, "the bombs were defused!", '8 8 8', '1 1 1', 1);
|
||||
if (getstati(105) == 7)
|
||||
drawstring(w, "the bombs were not defused...", '8 8 8', '1 1 1', 1);
|
||||
if (getstati(105) == 8)
|
||||
drawstring(w, "the supplies were not found...", '8 8 8', '1 1 1', 1);
|
||||
if (getstati(105) == 9)
|
||||
drawstring(w, "the supplies were found!", '8 8 8', '1 1 1', 1);
|
||||
if (getstati(105) == 10)
|
||||
drawstring(w, "all commanders were slain!", '8 8 8', '1 1 1', 1);
|
||||
if (getstati(105) == 11)
|
||||
drawstring(w, "the players did not escape...", '8 8 8', '1 1 1', 1);
|
||||
if (getstati(105) == 12)
|
||||
drawstring(w, "the players were discovered...", '8 8 8', '1 1 1', 1);
|
||||
if (getstati(105) == 13)
|
||||
drawstring(w, "the fuel tanks were destroyed!", '8 8 8', '1 1 1', 1);
|
||||
if (getstati(105) == 14)
|
||||
drawstring(w, "the fuel tanks were not destroyed...", '8 8 8', '1 1 1', 1);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
string(float x) GetMonsterName =
|
||||
|
@ -480,19 +517,17 @@ void() Perks_Draw =
|
|||
|
||||
|
||||
|
||||
if (mousepos_y >= 2.5*IMGSIZEF && mousepos_y <= 3.5*IMGSIZEF)
|
||||
|
||||
if (mousepos_y >= 2.0*IMGSIZEF && mousepos_y <= 4*IMGSIZEF)
|
||||
{
|
||||
|
||||
|
||||
if (mousepos_x >= 4*IMGSIZEF && mousepos_x <= 5*IMGSIZEF)
|
||||
if (mousepos_x >= 3*IMGSIZEF && mousepos_x <= 5.5*IMGSIZEF)
|
||||
selected_class = 8;
|
||||
|
||||
if (mousepos_x >= 6.5*IMGSIZEF && mousepos_x <= 7.5*IMGSIZEF)
|
||||
else if (mousepos_x >= 6*IMGSIZEF && mousepos_x <= 7.5*IMGSIZEF)
|
||||
selected_class = 9;
|
||||
|
||||
else
|
||||
selected_class = 0;
|
||||
}
|
||||
|
||||
if (mousepos_y >= 390 && mousepos_y <= 425)
|
||||
else if (mousepos_y >= 390 && mousepos_y <= 425)
|
||||
{
|
||||
|
||||
|
||||
|
@ -506,7 +541,8 @@ void() Perks_Draw =
|
|||
else
|
||||
selected_class = 0;
|
||||
}
|
||||
|
||||
else
|
||||
selected_class = 0;
|
||||
|
||||
perki = GetPerkImage(getstati(60));
|
||||
perk2i = GetPerkImage(getstati(59));
|
||||
|
@ -519,8 +555,8 @@ void() Perks_Draw =
|
|||
p1 = PerkNameCentered(1, getstati(60));
|
||||
p2 = PerkNameCentered(2, getstati(59));
|
||||
|
||||
drawstring('4 4.5 0'*IMGSIZEF - '28 0 0', p1, '8 8 8', '1 1 1', 1);
|
||||
drawstring('6 4.5 0'*IMGSIZEF + '8 0 0', p2, '8 8 8', '1 1 1', 1);
|
||||
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);
|
||||
|
||||
|
||||
|
||||
|
@ -606,6 +642,8 @@ void() GainPerk_Draw =
|
|||
which_perk = 8;
|
||||
else if (mousepos_x >= 5*IMGSIZEF && mousepos_x <= 6*IMGSIZEF)
|
||||
which_perk = 9;
|
||||
else if (mousepos_x >= 6*IMGSIZEF && mousepos_x <= 7*IMGSIZEF)
|
||||
which_perk = 10;
|
||||
else
|
||||
which_perk = 0;
|
||||
}
|
||||
|
@ -613,13 +651,14 @@ void() GainPerk_Draw =
|
|||
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/Hit The Deck.png", '64 64 0', '1 1 1', 1);
|
||||
drawpic('6 2 0'*IMGSIZEF, "gui/perks/Living Anatomy.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 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);
|
||||
|
||||
pn = PerkName(1, which_perk);
|
||||
pd = GetPerkDesc(which_perk);
|
||||
|
@ -1095,7 +1134,7 @@ float(float eventtype, float param1, float param2) CSQC_InputEvent =
|
|||
return;
|
||||
if (which_perk == getstati(59))
|
||||
return;
|
||||
if (which_perk >= 1 && which_perk <= 9)
|
||||
if (which_perk >= 1 && which_perk <= 10)
|
||||
localcmd(strcat("cmd gainperk ", ftos(which_perk), " ", ftos(perkslot), "\n"));
|
||||
show_inventory = false;
|
||||
show_pipboy = false;
|
||||
|
|
|
@ -123,6 +123,23 @@ void() Chem_Draw =
|
|||
|
||||
};
|
||||
|
||||
|
||||
|
||||
void() Time_Draw =
|
||||
{
|
||||
local float xtime, ytime, ztime;
|
||||
local string qtime, rtime, shadowtime;
|
||||
|
||||
xtime = getstati(104);
|
||||
ytime = floor(xtime/60);
|
||||
ztime = xtime - (ytime*60);
|
||||
qtime = ftos(ytime);
|
||||
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);
|
||||
};
|
||||
|
||||
void() Ammo_Draw =
|
||||
{
|
||||
local float hand, weap, ammo, amount;
|
||||
|
@ -418,6 +435,7 @@ void(float vwidth, float vheight, float do2d) CSQC_UpdateView =
|
|||
GainPerk_Draw();
|
||||
else
|
||||
{
|
||||
Time_Draw();
|
||||
Health_Draw();
|
||||
Weight_Draw();
|
||||
Money_Draw();
|
||||
|
|
|
@ -682,6 +682,10 @@ float intermission_running;
|
|||
.float skill_doctor;
|
||||
.float skill_sneak;
|
||||
.float skill_science;
|
||||
.float shadowskill_combat;
|
||||
.float shadowskill_doctor;
|
||||
.float shadowskill_sneak;
|
||||
.float shadowskill_science;
|
||||
|
||||
.float rescued;
|
||||
.float scale;
|
||||
|
@ -739,8 +743,12 @@ float intermission_running;
|
|||
.float lastman;
|
||||
.float popup;
|
||||
.float flare;
|
||||
.float radiation;
|
||||
.float perk1timer;
|
||||
.float perk2timer;
|
||||
.float shadowtime;
|
||||
.float announcercache;
|
||||
string announcer;
|
||||
|
||||
.entity friend;
|
||||
.entity tumbler1;
|
||||
|
|
|
@ -183,7 +183,9 @@ void () OpenDoorBeep =
|
|||
sound (self, CHAN_BODY, "items/lockpick2.wav", 1, ATTN_NORM);
|
||||
|
||||
|
||||
x = (2.51 - (2.5*(self.enemy.skill_sneak/30)));
|
||||
x = (2.51 - (2.5*(self.enemy.skill_sneak/7)));
|
||||
if (x <= 0)
|
||||
x = 0.1;
|
||||
|
||||
|
||||
self.think = OpenDoorBeep;
|
||||
|
|
|
@ -87,14 +87,9 @@ void (float tmp, float dam) enforcer_single =
|
|||
else if (self.weapon == 6)
|
||||
sound (self, CHAN_WEAPON, "weapons/moonlight-2.wav", 1, ATTN_NORM);
|
||||
|
||||
if (self.weapon == 3)
|
||||
dam = 12;
|
||||
else if (self.weapon == 4)
|
||||
dam = 16;
|
||||
else if (self.weapon == 5)
|
||||
dam = 18;
|
||||
else if (self.weapon == 6)
|
||||
dam = 16;
|
||||
|
||||
dam = 12;
|
||||
tmp = 500;
|
||||
|
||||
self.attack = self.attack + 1;
|
||||
|
||||
|
@ -189,13 +184,13 @@ void() enf_atk8 =[ $attack3, enf_atk9 ] {ai_face();};
|
|||
void() enf_atk9 =[ $attack2, enf_atk10 ] {ai_face();};
|
||||
void() enf_atk10 =[ $attack1, enf_run1 ] {ai_face();};
|
||||
|
||||
void() enf_burst1 =[ $attack5, enf_burst2 ] {enforcer_single(500, 13);};
|
||||
void() enf_burst2 =[ $attack6, enf_burst3 ] {enforcer_single(500, 13);ai_face();};
|
||||
void() enf_burst3 =[ $attack5, enf_burst4 ] {enforcer_single(50, 13);};
|
||||
void() enf_burst4 =[ $attack6, enf_burst5 ] {enforcer_single(550, 13);ai_face();};
|
||||
void() enf_burst5 =[ $attack5, enf_burst6 ] {enforcer_single(550, 13);};
|
||||
void() enf_burst6 =[ $attack6, enf_burst7 ] {enforcer_single(500, 13);ai_face();};
|
||||
void() enf_burst7 =[ $attack5, enf_burst8 ] {enforcer_single(550, 13);};
|
||||
void() enf_burst1 =[ $attack5, enf_burst2 ] {enforcer_single(600, 13);};
|
||||
void() enf_burst2 =[ $attack6, enf_burst3 ] {enforcer_single(600, 13);ai_face();};
|
||||
void() enf_burst3 =[ $attack5, enf_burst4 ] {enforcer_single(600, 13);};
|
||||
void() enf_burst4 =[ $attack6, enf_burst5 ] {enforcer_single(650, 13);ai_face();};
|
||||
void() enf_burst5 =[ $attack5, enf_burst6 ] {enforcer_single(650, 13);};
|
||||
void() enf_burst6 =[ $attack6, enf_burst7 ] {enforcer_single(650, 13);ai_face();};
|
||||
void() enf_burst7 =[ $attack5, enf_burst8 ] {enforcer_single(650, 13);};
|
||||
void() enf_burst8 =[ $attack4, enf_burst9 ] {enforcer_single(700, 13);ai_face();};
|
||||
void() enf_burst9 =[ $attack3, enf_burst10 ] {ai_face();};
|
||||
void() enf_burst10 =[ $attack2, enf_run1 ] {ai_face();};
|
||||
|
@ -452,7 +447,7 @@ void() monster_enforcer =
|
|||
self.netname = "enforcer";
|
||||
|
||||
setsize (self, '-12 -12 -24', '12 12 32');
|
||||
self.health = 200;
|
||||
self.health = 150;
|
||||
self.islot3 = SlotVal(IID_ARM_COMBAT, 1);
|
||||
self.armortype = 0.5;
|
||||
self.helmet = 1;
|
||||
|
|
|
@ -151,6 +151,8 @@ void(entity attacker, float damage) fish_pain =
|
|||
|
||||
void() monster_fish =
|
||||
{
|
||||
|
||||
|
||||
precache_model2 ("progs/fish.mdl");
|
||||
|
||||
precache_sound2 ("fish/death.wav");
|
||||
|
@ -174,7 +176,8 @@ void() monster_fish =
|
|||
self.th_die = f_death1;
|
||||
self.th_pain = fish_pain;
|
||||
self.th_melee = f_attack1;
|
||||
|
||||
swimmonster_start ();
|
||||
|
||||
remove(self);
|
||||
//swimmonster_start ();
|
||||
};
|
||||
|
||||
|
|
|
@ -22,82 +22,83 @@ void () hos_stand5 = [ 15, hos_stand1 ]
|
|||
|
||||
void () hos_run1 = [ 0, hos_run2 ]
|
||||
{
|
||||
hos_forward (MULTICAST_PVS_R);
|
||||
ai_forward(5);
|
||||
};
|
||||
|
||||
void () hos_run2 = [ 1, hos_run3 ]
|
||||
{
|
||||
hos_forward (AS_MELEE);
|
||||
ai_forward(5);
|
||||
};
|
||||
|
||||
void () hos_run3 = [ 2, hos_run4 ]
|
||||
{
|
||||
hos_forward (MULTICAST_PVS_R);
|
||||
ai_forward(5);
|
||||
};
|
||||
|
||||
void () hos_run4 = [ 3, hos_run5 ]
|
||||
{
|
||||
hos_forward (AS_MELEE);
|
||||
ai_forward(5);
|
||||
};
|
||||
|
||||
void () hos_run5 = [ 4, hos_run6 ]
|
||||
{
|
||||
hos_forward (MULTICAST_PVS_R);
|
||||
ai_forward(5);
|
||||
};
|
||||
|
||||
void () hos_run6 = [ 5, hos_run1 ]
|
||||
{
|
||||
hos_forward (AS_MELEE);
|
||||
ai_forward(5);
|
||||
};
|
||||
|
||||
void () hos_walk1 = [ 16, hos_walk2 ]
|
||||
{
|
||||
hos_forward (MULTICAST_PVS_R);
|
||||
ai_forward(5);
|
||||
};
|
||||
|
||||
void () hos_walk2 = [ 17, hos_walk3 ]
|
||||
{
|
||||
hos_forward (AS_MELEE);
|
||||
ai_forward(5);
|
||||
};
|
||||
|
||||
void () hos_walk3 = [ 18, hos_walk4 ]
|
||||
{
|
||||
hos_forward (MULTICAST_PVS_R);
|
||||
ai_forward(5);
|
||||
};
|
||||
|
||||
void () hos_walk4 = [ 19, hos_walk5 ]
|
||||
{
|
||||
hos_forward (AS_MELEE);
|
||||
ai_forward(5);
|
||||
};
|
||||
|
||||
void () hos_walk5 = [ 20, hos_walk6 ]
|
||||
{
|
||||
hos_forward (MULTICAST_PVS_R);
|
||||
ai_forward(5);
|
||||
};
|
||||
|
||||
void () hos_walk6 = [ 21, hos_walk7 ]
|
||||
{
|
||||
hos_forward (AS_MELEE);
|
||||
ai_forward(5);
|
||||
};
|
||||
|
||||
void () hos_walk7 = [ 22, hos_walk8 ]
|
||||
{
|
||||
hos_forward (MULTICAST_PVS_R);
|
||||
self.angles_y = random()*360;
|
||||
ai_forward(5);
|
||||
};
|
||||
|
||||
void () hos_walk8 = [ 23, hos_walk9 ]
|
||||
{
|
||||
hos_forward (AS_MELEE);
|
||||
ai_forward(5);
|
||||
};
|
||||
|
||||
void () hos_walk9 = [ 24, hos_walk10 ]
|
||||
{
|
||||
hos_forward (MULTICAST_PVS_R);
|
||||
ai_forward(5);
|
||||
};
|
||||
|
||||
void () hos_walk10 = [ 25, hos_walk1 ]
|
||||
{
|
||||
hos_forward (AS_MELEE);
|
||||
ai_forward(5);
|
||||
};
|
||||
|
||||
void () hos_deatha1 = [ 6, hos_deatha2 ]
|
||||
|
@ -251,7 +252,7 @@ void (vector jojo) spawn_civilian =
|
|||
self.netname = "civilian";
|
||||
self.classname = "rhostage";
|
||||
self.max_health = self.health;
|
||||
hos_stand1 ();
|
||||
hos_walk1 ();
|
||||
self.th_die = hostage_die;
|
||||
self.th_pain = hostage_pain;
|
||||
self.rescued = 0;
|
||||
|
@ -285,7 +286,7 @@ void (vector jojo) spawn_civilian =
|
|||
}
|
||||
}
|
||||
|
||||
te = findradius (self.origin, 40);
|
||||
te = findradius (self.origin, 24);
|
||||
while (te)
|
||||
{
|
||||
if (te.classname == "player" || te.classname == "monster" && te.health > 0)
|
||||
|
|
|
@ -1111,17 +1111,17 @@ float(float iid) GetItemWeight =
|
|||
if (iid == IID_ARM_VANDAL)
|
||||
return 10;
|
||||
if (iid == IID_ARM_METAL)
|
||||
return 20;
|
||||
return 25;
|
||||
if (iid == IID_ARM_TESLA)
|
||||
return 12;
|
||||
return 10;
|
||||
if (iid == IID_ARM_COMBAT)
|
||||
return 14;
|
||||
return 15;
|
||||
if (iid == IID_ARM_SEVA)
|
||||
return 16;
|
||||
return 15;
|
||||
if (iid == IID_ARM_FORCE)
|
||||
return 9;
|
||||
return 10;
|
||||
if (iid == IID_ARM_LPOWER)
|
||||
return 20;
|
||||
return 35;
|
||||
|
||||
if (iid == IID_BUILD_MRAMMO)
|
||||
return 2;
|
||||
|
@ -1281,7 +1281,7 @@ string(float iid) GetItemName =
|
|||
if (iid == IID_GREN_STUN)
|
||||
return "stun grenade";
|
||||
if (iid == IID_GREN_FRAG)
|
||||
return "frag grenade";
|
||||
return "nuka grenade";
|
||||
if (iid == IID_GREN_EMP)
|
||||
return "emp grenade";
|
||||
if (iid == IID_GREN_SMOKE)
|
||||
|
@ -1587,7 +1587,7 @@ float(float iid) GetBaseValue =
|
|||
if (iid == IID_EQUIP_TOOLKIT)
|
||||
return 50;
|
||||
if (iid == IID_EQUIP_BACKPACK)
|
||||
return 100;
|
||||
return 10;
|
||||
if (iid == IID_EQUIP_CLIMBINGGEAR)
|
||||
return 150;
|
||||
if (iid == IID_EQUIP_BATTERY)
|
||||
|
@ -2578,9 +2578,9 @@ string (float slot, float int) PerkName =
|
|||
if (int == 3)
|
||||
return "Harmless";
|
||||
if (int == 4)
|
||||
return "Hit The Deck";
|
||||
return "Stay Low";
|
||||
if (int == 5)
|
||||
return "Living Anatomy";
|
||||
return "Surgical Precision";
|
||||
if (int == 6)
|
||||
return "Mutation";
|
||||
if (int == 7)
|
||||
|
@ -2596,25 +2596,25 @@ string (float slot, float int) PerkName =
|
|||
string (float slot, float int) PerkNameCentered =
|
||||
{
|
||||
if (int == 1)
|
||||
return " Support Fire";
|
||||
return " Support Fire";
|
||||
if (int == 2)
|
||||
return "Duck And Cover";
|
||||
return " Duck And Cover";
|
||||
if (int == 3)
|
||||
return " Harmless";
|
||||
return " Harmless";
|
||||
if (int == 4)
|
||||
return " Hit The Deck";
|
||||
return " Stay Low";
|
||||
if (int == 5)
|
||||
return "Living Anatomy";
|
||||
return "Surgical Precision";
|
||||
if (int == 6)
|
||||
return " Mutation";
|
||||
return " Mutation";
|
||||
if (int == 7)
|
||||
return "Narrow Escape";
|
||||
return " Narrow Escape";
|
||||
if (int == 8)
|
||||
return "Schizophrenia";
|
||||
return " Schizophrenia";
|
||||
if (int == 9)
|
||||
return " Sleep Tight";
|
||||
return " Sleep Tight";
|
||||
if (int == 10)
|
||||
return "Economic Moves";
|
||||
return " Economic Moves";
|
||||
};
|
||||
|
||||
|
||||
|
@ -2627,9 +2627,9 @@ string(float int) GetPerkImage =
|
|||
else if (int == 3)
|
||||
return "gui/perks/Harmless.jpg";
|
||||
else if (int == 4)
|
||||
return "gui/perks/Hit The Deck.jpg";
|
||||
return "gui/perks/Stay Low.jpg";
|
||||
else if (int == 5)
|
||||
return "gui/perks/Living Anatomy.jpg";
|
||||
return "gui/perks/Surgical Precision.jpg";
|
||||
else if (int == 6)
|
||||
return "gui/perks/Mutation.jpg";
|
||||
else if (int == 7)
|
||||
|
@ -2663,9 +2663,9 @@ string(float int) GetPerkDesc =
|
|||
else if (int == 7)
|
||||
return "Provides you a few hassle-free seconds to escape danger";
|
||||
else if (int == 8)
|
||||
return "You sometimes gain additional skills from another place";
|
||||
return "You may gain additional skills from an unknown source";
|
||||
else if (int == 9)
|
||||
return "Automatically kill anything with knife in sneak mode";
|
||||
return "Paralyze anything with a sneak attack from a knife";
|
||||
else if (int == 10)
|
||||
return "Suffer less time-related penalties for all actions";
|
||||
else
|
||||
|
|
|
@ -291,9 +291,6 @@ void(vector loc) SpawnJunk =
|
|||
{
|
||||
local entity junk;
|
||||
|
||||
if (random()*100 <= 80)
|
||||
return;
|
||||
|
||||
junk = spawn ();
|
||||
|
||||
setorigin(junk, loc + '0 0 96');
|
||||
|
@ -319,11 +316,13 @@ void(vector loc) SpawnJunk =
|
|||
|
||||
|
||||
|
||||
if (random()*100 <= 25)
|
||||
junk.islot1 = SlotVal(IID_MISC_NUKACOLA, 1);
|
||||
else if (random()*100 <= 25)
|
||||
if (random()*100 <= 50)
|
||||
junk.islot1 = SlotVal(IID_MISC_HMXCOMPOUND, 1);
|
||||
else if (random()*100 <= 50)
|
||||
junk.islot1 = SlotVal(IID_MISC_CHEMICALS, 1);
|
||||
else if (random()*100 <= 25)
|
||||
else if (random()*100 <= 33)
|
||||
junk.islot1 = SlotVal(IID_MISC_NUKACOLA, 1);
|
||||
else if (random()*100 <= 33)
|
||||
junk.islot1 = SlotVal(IID_MISC_AEROSOL, 1);
|
||||
else if (random()*100 <= 10)
|
||||
junk.islot1 = SlotVal(IID_MISC_RDXCRYSTAL, 1);
|
||||
|
@ -337,8 +336,6 @@ void(vector loc) SpawnJunk =
|
|||
junk.islot1 = SlotVal(IID_MISC_CIRCUITBOARD, 1);
|
||||
else if (random()*100 <= 10)
|
||||
junk.islot1 = SlotVal(IID_MISC_COPPERWIRE, 1);
|
||||
else if (random()*100 <= 10)
|
||||
junk.islot1 = SlotVal(IID_MISC_HMXCOMPOUND, 1);
|
||||
else if (random()*100 <= 10)
|
||||
junk.islot1 = SlotVal(IID_MISC_GUM, 1);
|
||||
else
|
||||
|
@ -853,7 +850,7 @@ float (entity to, float iid, float quant) TryGiveStackable =
|
|||
local float item;
|
||||
local float x;
|
||||
|
||||
x = 300;
|
||||
x = 400;
|
||||
|
||||
if (ToIID(self.islot4) == IID_EQUIP_BACKPACK)
|
||||
x = 600;
|
||||
|
|
|
@ -934,19 +934,19 @@ void() brotherhood_merchant =
|
|||
|
||||
|
||||
self.xslot1 = SlotVal(IID_WP_USP, 1);
|
||||
self.xslot6 = SlotVal(IID_AM_45ACP, 30);
|
||||
self.xslot6 = SlotVal(IID_AM_45ACP, 100);
|
||||
|
||||
self.xslot2 = SlotVal(IID_WP_PIPERIFLE, 1);
|
||||
self.xslot7 = SlotVal(IID_AM_44MAGNUM, 30);
|
||||
self.xslot7 = SlotVal(IID_AM_44MAGNUM, 100);
|
||||
|
||||
self.xslot3 = SlotVal(IID_WP_WINCHESTER, 1);
|
||||
self.xslot8 = SlotVal(IID_AM_12GAUGESHELLS, 30);
|
||||
self.xslot8 = SlotVal(IID_AM_12GAUGESHELLS, 100);
|
||||
|
||||
self.xslot4 = SlotVal(IID_WP_RANGEMASTER, 1);
|
||||
self.xslot9 = SlotVal(IID_AM_556MM, 30);
|
||||
self.xslot9 = SlotVal(IID_AM_556MM, 100);
|
||||
|
||||
self.xslot5 = SlotVal(IID_WP_MP9, 1);
|
||||
self.xslot10 = SlotVal(IID_AM_10MM, 30);
|
||||
self.xslot10 = SlotVal(IID_AM_10MM, 100);
|
||||
|
||||
|
||||
|
||||
|
@ -961,14 +961,14 @@ void() brotherhood_merchant =
|
|||
|
||||
|
||||
self.xslot16 = SlotVal(IID_WP_DKS1, 1);
|
||||
self.xslot17 = SlotVal(IID_AM_762MM, 30);
|
||||
self.xslot17 = SlotVal(IID_AM_762MM, 100);
|
||||
|
||||
|
||||
self.xslot18 = SlotVal(IID_WP_ALIENBLASTER, 1);
|
||||
self.xslot19 = SlotVal(IID_AM_ENERGYCELL, 30);
|
||||
self.xslot19 = SlotVal(IID_AM_ENERGYCELL, 100);
|
||||
|
||||
if (random()*100 < 20)
|
||||
self.xslot20 = SlotVal(IID_AM_ENERGYCELL, 30);
|
||||
self.xslot20 = SlotVal(IID_AM_ENERGYCELL, 100);
|
||||
else if (random()*100 < 20)
|
||||
self.xslot20 = SlotVal(IID_EQUIP_BELTPOUCH, 1);
|
||||
else if (random()*100 < 20)
|
||||
|
@ -1004,15 +1004,17 @@ void() brotherhood_soldier =
|
|||
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.xslot9 = SlotVal(IID_AM_NEEDLER, 30);
|
||||
self.xslot1 = SlotVal(IID_AM_45ACP, 100);
|
||||
self.xslot2 = SlotVal(IID_AM_10MM, 100);
|
||||
self.xslot3 = SlotVal(IID_AM_12GAUGESHELLS, 100);
|
||||
self.xslot4 = SlotVal(IID_AM_5MMHIGHVEL, 100);
|
||||
self.xslot5 = SlotVal(IID_AM_762MM, 100);
|
||||
self.xslot6 = SlotVal(IID_AM_556MM, 100);
|
||||
self.xslot7 = SlotVal(IID_AM_ENERGYCELL, 100);
|
||||
self.xslot8 = SlotVal(IID_AM_CASELESS, 100);
|
||||
self.xslot9 = SlotVal(IID_AM_NEEDLER, 100);
|
||||
self.xslot12 = SlotVal(IID_EQUIP_STEALTHBOY, 1);
|
||||
self.xslot13 = SlotVal(IID_EQUIP_BACKPACK, 1);
|
||||
self.xslot14 = SlotVal(IID_WP_AK112, 1);
|
||||
self.xslot15 = SlotVal(IID_WP_ACR, 1);
|
||||
self.xslot16 = SlotVal(IID_WP_AK112_M, 1);
|
||||
|
|
|
@ -122,10 +122,10 @@ void (float tmp, float dam) ogre_smg =
|
|||
sound (self, CHAN_WEAPON, "weapons/mp7.wav", 1, ATTN_NORM);
|
||||
|
||||
|
||||
tmp = 350;
|
||||
tmp = 300;
|
||||
|
||||
|
||||
dam = 15;
|
||||
dam = 10;
|
||||
|
||||
if (self.enemy.sneak == 1)
|
||||
tmp = tmp * 2;
|
||||
|
|
|
@ -1321,6 +1321,10 @@ void () army_die10 = [ 17, army_die10 ]
|
|||
|
||||
void () army_cdie1 = [ 18, army_cdie2 ]
|
||||
{
|
||||
if (random()*4 <= 2)
|
||||
sound (self, CHAN_VOICE, "player/agdie2.wav", 1, ATTN_NORM);
|
||||
else
|
||||
sound (self, CHAN_VOICE, "player/agdie3.wav", 1, ATTN_NORM);
|
||||
};
|
||||
|
||||
void () army_cdie2 = [ 19, army_cdie3 ]
|
||||
|
@ -1459,16 +1463,7 @@ void () army_die =
|
|||
if (random()<0.75)
|
||||
DropMoney();
|
||||
|
||||
if (r <= 0.20)
|
||||
sound (self, CHAN_VOICE, "player/agdie1.wav", 1, ATTN_NORM);
|
||||
else if (r <= 0.40)
|
||||
sound (self, CHAN_VOICE, "player/agdie2.wav", 1, ATTN_NORM);
|
||||
else if (r <= 0.60)
|
||||
sound (self, CHAN_VOICE, "player/agdie3.wav", 1, ATTN_NORM);
|
||||
else if (r <= 0.80)
|
||||
sound (self, CHAN_VOICE, "player/agdie4.wav", 1, ATTN_NORM);
|
||||
else
|
||||
sound (self, CHAN_VOICE, "player/agdie5.wav", 1, ATTN_NORM);
|
||||
|
||||
|
||||
DeathThroes();
|
||||
|
||||
|
@ -1514,7 +1509,7 @@ void (vector jojo, entity friend) spawn_soldier =
|
|||
setmodel (self, "progs/soldier.mdl");
|
||||
setsize (self, '-12 -12 -24', '12 12 28');
|
||||
self.netname = "raider";
|
||||
self.max_health = 150;
|
||||
self.max_health = 80;
|
||||
self.health = self.max_health;
|
||||
self.armornoise = "misc/thud.wav";
|
||||
self.th_stand = army_stand1;
|
||||
|
@ -1708,7 +1703,7 @@ void () monster_army =
|
|||
self.movetype = MOVETYPE_STEP;
|
||||
setmodel (self, "progs/soldier.mdl");
|
||||
setsize (self, '-12 -12 -24', '12 12 28');
|
||||
self.max_health = 150;
|
||||
self.max_health = 80;
|
||||
self.health = self.max_health;
|
||||
self.team = 3;
|
||||
self.islot3 = SlotVal(IID_ARM_LEATHER, 1);
|
||||
|
@ -1904,7 +1899,7 @@ void () monster_commander =
|
|||
commanders = commanders + 1;
|
||||
|
||||
setsize (self, '-12 -12 -24', '12 12 32');
|
||||
self.max_health =250;
|
||||
self.max_health = 200;
|
||||
self.health = self.max_health;
|
||||
self.islot3 = SlotVal(IID_ARM_COMBAT, 1);
|
||||
self.armortype = 0.5;
|
||||
|
|
|
@ -11,6 +11,7 @@ void (string snd, float type) function_radio;
|
|||
void () MapInfo;
|
||||
void (entity targ, entity inflictor, entity attacker, float damage) T_Damage;
|
||||
void () player_run;
|
||||
void () walkmonster_start;
|
||||
void(entity bomb, entity attacker, float rad, entity ignore, string dtype) T_RadiusDamage;
|
||||
void(entity bomb, entity attacker, float rad, entity ignore, float xrange) T_RadiusDamage2;
|
||||
void() ZoomIn;
|
||||
|
@ -29,6 +30,7 @@ void (float dam, float rec, string snd, float rng, float rate) FireSMG;
|
|||
float() FireToolkit;
|
||||
void () HostageReport;
|
||||
void (entity jeb, float time) spawn_excla;
|
||||
void (entity jeb, float time) spawn_stop;
|
||||
void () FireAlienBlaster;
|
||||
void () W_PlayerMenu;
|
||||
void () player_single_shot;
|
||||
|
@ -124,7 +126,7 @@ void(float slotno) UsePerk =
|
|||
return;
|
||||
}
|
||||
|
||||
if (self.perk1 == 7 || self.perk2 == 7)
|
||||
if ((self.perk1 == 7 && slotno == 1) || (self.perk2 == 7 && slotno == 2))
|
||||
{
|
||||
if (slotno == 1)
|
||||
self.perk1timer = 2000;
|
||||
|
@ -137,8 +139,10 @@ void(float slotno) UsePerk =
|
|||
while (te)
|
||||
{
|
||||
if (te.classname == "monster")
|
||||
te.hold = 100;
|
||||
|
||||
{
|
||||
te.hold = 80;
|
||||
spawn_stop(te, 10);
|
||||
}
|
||||
te = te.chain;
|
||||
}
|
||||
}
|
||||
|
@ -1931,12 +1935,7 @@ void () ProneOn =
|
|||
self.position = 2;
|
||||
self.view_ofs = '0 0 -10';
|
||||
sprint (self, 2, "position: prone.\n");
|
||||
if (getperk(10))
|
||||
{
|
||||
self.attack_finished = time + 0.5;
|
||||
self.rtime = time + 0.5;
|
||||
}
|
||||
else
|
||||
if (!getperk(10))
|
||||
{
|
||||
self.attack_finished = time + 1.5;
|
||||
self.rtime = time + 1.5;
|
||||
|
@ -2502,7 +2501,7 @@ void () Explosion =
|
|||
//self.nextthink = (time + 0.02);
|
||||
};
|
||||
|
||||
void () FragExplode =
|
||||
void (float skill) FragExplode =
|
||||
{
|
||||
local float r, d;
|
||||
local entity te;
|
||||
|
@ -2514,7 +2513,6 @@ void () FragExplode =
|
|||
setorigin (self, self.origin);
|
||||
setsize (self, '0 0 0', '0 0 0');
|
||||
|
||||
bprint(2, "fragex\n");
|
||||
Explosion();
|
||||
|
||||
te = findradius(self.origin, 400);
|
||||
|
@ -2531,10 +2529,10 @@ void () FragExplode =
|
|||
te = te.chain;
|
||||
}
|
||||
|
||||
r = 400 + self.skill_science*2;
|
||||
d = 65+random()*65 + self.skill_science;
|
||||
r = 200 + skill*20;
|
||||
d = 10 + skill*10;
|
||||
|
||||
T_RadiusDamage2 (self, self.owner, 65+random()*65, other, r);
|
||||
T_RadiusDamage2 (self, self.owner, d+random()*40, other, r);
|
||||
remove (self);
|
||||
};
|
||||
|
||||
|
@ -4215,8 +4213,8 @@ void () UseStimpack =
|
|||
thing = thing.chain;
|
||||
}
|
||||
|
||||
self.health = self.health + 10 + (self.skill_doctor/2);
|
||||
self.regen = self.regen + (3 + (self.skill_doctor/2));
|
||||
self.health = self.health + 30 + (self.skill_doctor);
|
||||
self.regen = self.regen + (5 + (self.skill_doctor/2));
|
||||
}
|
||||
}
|
||||
else if (trace_ent.classname == "player")//healing another team-mate
|
||||
|
@ -4287,7 +4285,7 @@ void () UseStimpack =
|
|||
sprint(self, PRINT_MEDIUM, trace_ent.netname);
|
||||
sprint(self, PRINT_MEDIUM, " with a stimpack\n");
|
||||
|
||||
trace_ent.health = trace_ent.health + 10 + (self.skill_doctor/2);
|
||||
trace_ent.health = trace_ent.health + 30 + (self.skill_doctor);
|
||||
trace_ent.regen = trace_ent.regen + (3 + (self.skill_doctor/2));
|
||||
}
|
||||
}
|
||||
|
@ -4439,13 +4437,13 @@ void () UseMedicalBag =
|
|||
while (thing)
|
||||
{
|
||||
if (thing.classname == "player" && (thing.health+20) < self.health)
|
||||
self.score = self.score - 50;
|
||||
self.score = self.score - 25;
|
||||
|
||||
thing = thing.chain;
|
||||
}
|
||||
|
||||
sound (self, CHAN_BODY, "items/r_item1.wav", 1, ATTN_NORM);
|
||||
sprint(self, PRINT_MEDIUM, "you start to bandage yourself\n");
|
||||
self.health = self.health + 5 + (self.skill_doctor/2);
|
||||
self.regen = self.regen + 3 + (self.skill_doctor/2);
|
||||
}
|
||||
}
|
||||
|
@ -4495,13 +4493,8 @@ void () UseMedicalBag =
|
|||
else
|
||||
{
|
||||
sound (trace_ent, CHAN_BODY, "items/r_item1.wav", 1, ATTN_NORM);
|
||||
self.score = self.score + 10;
|
||||
sprint(trace_ent, PRINT_MEDIUM, self.netname);
|
||||
sprint(trace_ent, PRINT_MEDIUM, " bandages your wounds\n");
|
||||
sprint(self, PRINT_MEDIUM, "you heal ");
|
||||
sprint(self, PRINT_MEDIUM, trace_ent.netname);
|
||||
sprint(self, PRINT_MEDIUM, " with a stimpack\n");
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
@ -5127,8 +5120,7 @@ void () Sneak =
|
|||
|
||||
if (self.sneak >= 1)
|
||||
{
|
||||
sound (self, CHAN_BODY, "items/inv1.wav", 1, ATTN_NORM);
|
||||
centerprint (self, "<EFBFBD> Uncloaked <20>\n");
|
||||
sound (self, CHAN_BODY, "items/r_tele4.wav", 1, ATTN_NORM);
|
||||
setmodel (self, "progs/guy.mdl");
|
||||
self.sneak = 0;
|
||||
return;
|
||||
|
@ -5137,7 +5129,6 @@ void () Sneak =
|
|||
{
|
||||
disappear();
|
||||
sound (self, CHAN_BODY, "items/inv1.wav", 1, ATTN_NORM);
|
||||
centerprint (self, "<EFBFBD> sneaking <20>\n");
|
||||
self.sneak = 1;
|
||||
return;
|
||||
}
|
||||
|
@ -5377,29 +5368,19 @@ void () Bar_Think =
|
|||
{
|
||||
local float dot1;
|
||||
|
||||
|
||||
if (self.owner.health >= self.owner.max_health)
|
||||
{
|
||||
self.frame = 0;
|
||||
setmodel (self, "");
|
||||
self.nextthink = time + 0.01;
|
||||
return;
|
||||
}
|
||||
self.flags = self.flags;
|
||||
|
||||
if (self.owner.health >= 1)
|
||||
{
|
||||
self.frame = floor (((self.owner.health / self.owner.max_health) * TE_WIZSPIKE));
|
||||
if (self.owner.position == 0)
|
||||
setorigin (self, (self.owner.origin + '0 0 40'));
|
||||
else if (self.owner.position == 1)
|
||||
setorigin (self, (self.owner.origin + '0 0 32'));
|
||||
else
|
||||
setorigin (self, (self.owner.origin + '0 0 24'));
|
||||
self.frame = floor (((self.owner.health / self.owner.max_health) * TE_WIZSPIKE));
|
||||
|
||||
self.nextthink = (time + 0.01);
|
||||
setmodel (self, "progs/hbar.spr");
|
||||
}
|
||||
if (self.owner.position == 0)
|
||||
setorigin (self, (self.owner.origin + '0 0 40'));
|
||||
else if (self.owner.position == 1)
|
||||
setorigin (self, (self.owner.origin + '0 0 32'));
|
||||
else
|
||||
setorigin (self, (self.owner.origin + '0 0 24'));
|
||||
|
||||
self.nextthink = (time + 0.01);
|
||||
setmodel (self, "progs/hbar.spr");
|
||||
};
|
||||
|
||||
void (entity guy) spawn_dot =
|
||||
|
@ -6181,7 +6162,25 @@ void (entity jeb, float length) spawn_excla =
|
|||
hologram.solid = SOLID_NOT;
|
||||
hologram.owner = jeb;
|
||||
setmodel (hologram, "progs/radio.spr");
|
||||
setorigin (hologram, jeb.origin);
|
||||
setorigin (hologram, jeb.origin + '0 0 48');
|
||||
setsize (hologram, VEC_ORIGIN, VEC_ORIGIN);
|
||||
hologram.angles = jeb.angles;
|
||||
hologram.colormap = jeb.colormap;
|
||||
hologram.cnt = 100*length;
|
||||
hologram.think = radio_think;
|
||||
hologram.nextthink = (time + 0.01);
|
||||
};
|
||||
|
||||
void (entity jeb, float length) spawn_stop =
|
||||
{
|
||||
local entity hologram;
|
||||
|
||||
hologram = spawn ();
|
||||
hologram.movetype = MOVETYPE_NONE;
|
||||
hologram.solid = SOLID_NOT;
|
||||
hologram.owner = jeb;
|
||||
setmodel (hologram, "progs/stop.spr");
|
||||
setorigin (hologram, jeb.origin + '0 0 48');
|
||||
setsize (hologram, VEC_ORIGIN, VEC_ORIGIN);
|
||||
hologram.angles = jeb.angles;
|
||||
hologram.colormap = jeb.colormap;
|
||||
|
@ -6397,7 +6396,9 @@ float(vector org) light_level =
|
|||
local float brightness;
|
||||
|
||||
light = getlight(self.origin);
|
||||
brightness = light_x*0.3 + light_y*0.51 + light_z*0.2;
|
||||
//brightness = light_x*0.3 + light_y*0.51 + light_z*0.2;
|
||||
|
||||
brightness = light_x + light_y + light_z;
|
||||
|
||||
return brightness;
|
||||
};
|
||||
|
@ -6413,6 +6414,13 @@ void() show_light_level =
|
|||
bprint(2, "light level: ");
|
||||
bprint(2, y);
|
||||
bprint(2, "\n");
|
||||
|
||||
x = self.waterlevel;
|
||||
y = ftos(x);
|
||||
|
||||
bprint(2, "water level: ");
|
||||
bprint(2, y);
|
||||
bprint(2, "\n");
|
||||
};
|
||||
|
||||
void() AttachSilencer =
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -83,7 +83,14 @@ void() zombie_cruc6 = [ $cruc_6, zombie_cruc1 ] {self.nextthink = time + 0.1 +
|
|||
|
||||
void() zombie_walk1 =[ $walk1, zombie_walk2 ] {ai_walk(3);};
|
||||
void() zombie_walk2 =[ $walk2, zombie_walk3 ] {ai_walk(3);};
|
||||
void() zombie_walk3 =[ $walk3, zombie_walk4 ] {ai_walk(3);};
|
||||
void() zombie_walk3 =[ $walk3, zombie_walk4 ] {ai_walk(3);
|
||||
|
||||
if (self.takedamage == DAMAGE_NO)
|
||||
{
|
||||
remove(self);
|
||||
return;
|
||||
}
|
||||
};
|
||||
void() zombie_walk4 =[ $walk4, zombie_walk5 ] {ai_walk(3);};
|
||||
void() zombie_walk5 =[ $walk5, zombie_walk6 ] {ai_walk(3);};
|
||||
void() zombie_walk6 =[ $walk6, zombie_walk7 ] {ai_walk(3);};
|
||||
|
@ -105,7 +112,14 @@ if (random() < 0.2)
|
|||
sound (self, CHAN_VOICE, "zombie/z_idle.wav", 1, ATTN_IDLE);};
|
||||
|
||||
void() zombie_run1 =[ $run1, zombie_run2 ] {ai_run(4);self.inpain = 0;};
|
||||
void() zombie_run2 =[ $run2, zombie_run3 ] {ai_run(4);};
|
||||
void() zombie_run2 =[ $run2, zombie_run3 ] {ai_run(4);
|
||||
|
||||
if (self.takedamage == DAMAGE_NO)
|
||||
{
|
||||
remove(self);
|
||||
return;
|
||||
}
|
||||
};
|
||||
void() zombie_run3 =[ $run3, zombie_run4 ] {ai_run(4);};
|
||||
void() zombie_run4 =[ $run4, zombie_run5 ] {ai_run(4);};
|
||||
void() zombie_run5 =[ $run5, zombie_run6 ] {ai_run(4);};
|
||||
|
@ -517,7 +531,10 @@ void() zdie6 =[ $painb6, zdie7 ] {};
|
|||
void() zdie7 =[ $painb7, zdie8 ] {};
|
||||
void() zdie8 =[ $painb8, zdie9 ] {};
|
||||
void() zdie9 =[ $painb9, zdie10] {};
|
||||
void() zdie10 =[ $painb10, zdie10] {};
|
||||
void() zdie10 =[ $painb10, zdie10] {
|
||||
self.think = SUB_Remove;
|
||||
self.nextthink = time + 20;
|
||||
};
|
||||
|
||||
|
||||
void () zombie_death =
|
||||
|
@ -538,7 +555,7 @@ void () zombie_death =
|
|||
SpawnBlood (self.origin + '0 0 4', 4);
|
||||
|
||||
self.think = SUB_Remove;
|
||||
self.nextthink = time + 30;
|
||||
self.nextthink = time + 10;
|
||||
self.health = 180;
|
||||
return;
|
||||
}
|
||||
|
@ -708,7 +725,30 @@ void () spawn_ghoul_copy =
|
|||
local entity zombie, lair;
|
||||
local entity te, ze;
|
||||
local vector jojo;
|
||||
local float zomc, pcount;
|
||||
local float zomc, pcount, loadzombie;
|
||||
local string finder;
|
||||
local vector stuff;
|
||||
|
||||
|
||||
|
||||
self.think = spawn_ghoul_copy;
|
||||
self.nextthink = time + 20 + random()*10;
|
||||
stuff = self.origin;
|
||||
|
||||
|
||||
|
||||
loadzombie = 0;
|
||||
|
||||
te = findradius (self.origin, 800);
|
||||
while (te)
|
||||
{
|
||||
if (te.classname == "player")
|
||||
loadzombie = 1;
|
||||
|
||||
te = te.chain;
|
||||
}
|
||||
|
||||
|
||||
|
||||
ze = find (world, netname, "ghoul");
|
||||
|
||||
|
@ -719,7 +759,7 @@ void () spawn_ghoul_copy =
|
|||
|
||||
zomc = zomc + 1;
|
||||
|
||||
ze = find (ze, netname, "ghoul");
|
||||
ze = find (ze, netname, "monster");
|
||||
}
|
||||
|
||||
ze = find(world, classname, "player");
|
||||
|
@ -731,7 +771,7 @@ void () spawn_ghoul_copy =
|
|||
ze = find(ze, classname, "player");
|
||||
}
|
||||
|
||||
if (zomc > 25*pcount)
|
||||
if (zomc > 60*pcount)
|
||||
return;
|
||||
|
||||
zombie = spawn ();
|
||||
|
@ -749,10 +789,10 @@ void () spawn_ghoul_copy =
|
|||
self.th_pain = zombie_pain;
|
||||
self.th_die = zombie_die;
|
||||
self.th_melee = zombie_melee;
|
||||
self.th_missile = zombie_missile;
|
||||
|
||||
self.angles_y = random()*360;
|
||||
|
||||
self.origin = self.origin + '0 64 0';
|
||||
self.origin = stuff + '0 16 0';
|
||||
self.origin_z = self.origin_z + 1;
|
||||
droptofloor();
|
||||
|
||||
|
@ -802,6 +842,8 @@ void (vector jojo) spawn_ghoul =
|
|||
local entity zombie, lair;
|
||||
local entity te, ze;
|
||||
local float stop;
|
||||
local vector jojo;
|
||||
local float zomc, pcount;
|
||||
|
||||
|
||||
ze = findradius(jojo, 256);
|
||||
|
@ -822,9 +864,8 @@ void (vector jojo) spawn_ghoul =
|
|||
self.movetype = MOVETYPE_STEP;
|
||||
setsize (self, '0 0 0', '0 0 0');
|
||||
self.netname = "lair";
|
||||
self.nextthink = time + 30;
|
||||
self.think = spawn_ghoul_copy;
|
||||
self.nextthink = time + 30;
|
||||
self.nextthink = time + 20 + random()*10;
|
||||
}
|
||||
|
||||
zombie = spawn ();
|
||||
|
@ -842,7 +883,6 @@ void (vector jojo) spawn_ghoul =
|
|||
self.th_pain = zombie_pain;
|
||||
self.th_die = zombie_die;
|
||||
self.th_melee = zombie_melee;
|
||||
self.th_missile = zombie_missile;
|
||||
self.angles_y = random()*360;
|
||||
|
||||
self.origin = jojo + '0 64 0';
|
||||
|
@ -892,12 +932,21 @@ void (vector jojo) spawn_ghoul =
|
|||
|
||||
void() monster_zombie =
|
||||
{
|
||||
local entity zombie, lair;
|
||||
local entity te, ze;
|
||||
local float stop;
|
||||
local vector jojo;
|
||||
local float zomc, pcount;
|
||||
|
||||
if (self.zone == 0)
|
||||
{
|
||||
load_monster();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
precache_model ("progs/ghoul.mdl");
|
||||
precache_model ("progs/h_zombie.mdl");
|
||||
precache_model ("progs/zom_gib.mdl");
|
||||
|
@ -917,6 +966,34 @@ void() monster_zombie =
|
|||
precache_sound ("misc/rock1.wav");
|
||||
precache_sound ("misc/rock2.wav");
|
||||
|
||||
|
||||
if (world.map_obj == OBJ_DEADTOWN)
|
||||
{
|
||||
ze = findradius(self.origin, 256);
|
||||
while (ze)
|
||||
{
|
||||
|
||||
if (ze.classname == "lair")
|
||||
stop = 1;
|
||||
|
||||
ze = ze.chain;
|
||||
}
|
||||
|
||||
if (stop == 0)
|
||||
{
|
||||
jojo = self.origin;
|
||||
lair = spawn ();
|
||||
setorigin(lair, jojo);
|
||||
lair.solid = SOLID_NOT;
|
||||
lair.movetype = MOVETYPE_STEP;
|
||||
setsize (lair, '0 0 0', '0 0 0');
|
||||
lair.netname = "lair";
|
||||
lair.nextthink = time + 30;
|
||||
lair.think = spawn_ghoul_copy;
|
||||
lair.nextthink = time + 30;
|
||||
}
|
||||
}
|
||||
|
||||
self.solid = SOLID_SLIDEBOX;
|
||||
self.movetype = MOVETYPE_STEP;
|
||||
|
||||
|
@ -931,7 +1008,6 @@ void() monster_zombie =
|
|||
self.th_run = zombie_run1;
|
||||
self.th_die = zombie_die;
|
||||
self.th_melee = zombie_melee;
|
||||
self.th_missile = zombie_missile;
|
||||
|
||||
self.angles_y = random()*360;
|
||||
|
||||
|
@ -939,7 +1015,7 @@ void() monster_zombie =
|
|||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
spawn_ghoul(self.origin + '-128 -128 0');
|
||||
spawn_ghoul(self.origin + '-128 0 0');
|
||||
spawn_ghoul(self.origin + '0 -128 0');
|
||||
|
@ -947,8 +1023,11 @@ void() monster_zombie =
|
|||
spawn_ghoul(self.origin + '128 0 0');
|
||||
spawn_ghoul(self.origin + '128 128 0');
|
||||
spawn_ghoul(self.origin + '-128 128 0');
|
||||
spawn_ghoul(self.origin + '128 -128 0');
|
||||
spawn_ghoul(self.origin + '128 -128 0');*/
|
||||
|
||||
if (random()<0.25 && world.map_obj == 1)
|
||||
spawn_civilian(self.origin);
|
||||
|
||||
if (random()<0.5 && world.map_obj == 4)
|
||||
spawn_civilian(self.origin);
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue