git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@3476 fc73d0e0-1445-4013-8a0c-d673dee63da5

This commit is contained in:
Magnus 2009-11-24 14:10:10 +00:00
parent 5f7d753be1
commit 2b8b589b26
11 changed files with 108 additions and 108 deletions

View file

@ -1328,7 +1328,7 @@ void() SneakLevel =
te = findradius(self.origin, q); te = findradius(self.origin, q);
while (te) while (te)
{ {
if (visible(te) && te.classname == "monster" && (check_fov_num(te) > 0.5) && te.health > 3) if ((te.enemy.classname != "player" || te.enemy != self) && visible(te) && te.classname == "monster" && (check_fov_num(te) > 0.5) && te.health > 3)
{ {
if (c == 0) if (c == 0)
{ {
@ -1340,14 +1340,7 @@ void() SneakLevel =
y = r / t; y = r / t;
ze = te; ze = te;
c = 1; c = 1;
/*
bprint(2, "test1: ");
bprint(2, ftos(r));
bprint(2, " ");
bprint(2, ftos(q));
bprint(2, " ");
bprint(2, ftos(t));
bprint(2, "\n");*/
} }
else else
{ {
@ -1357,14 +1350,7 @@ void() SneakLevel =
t = t * (check_fov_num(te)); t = t * (check_fov_num(te));
t = t * (check_fov_num(te)); t = t * (check_fov_num(te));
z = r / t; z = r / t;
/*
bprint(2, "test2: ");
bprint(2, ftos(r));
bprint(2, " ");
bprint(2, ftos(q));
bprint(2, " ");
bprint(2, ftos(t));
bprint(2, "\n");*/
if (z < y) if (z < y)
{ {
@ -2412,12 +2398,12 @@ void(entity targ, entity attacker) ClientObituary =
if (attacker.critical == 778) //wall headshot if (attacker.critical == 778) //wall headshot
{ {
bprint (PRINT_MEDIUM, "& "); bprint (PRINT_MEDIUM, "& ");
attacker.score = attacker.score + 75; attacker.score = attacker.score + 10;
} }
if (attacker.velocity_z != 0) if (attacker.velocity_z != 0)
{ {
bprint (PRINT_MEDIUM, "@ "); bprint (PRINT_MEDIUM, "@ ");
attacker.score = attacker.score - 2; attacker.score = attacker.score + 2;
} }
// if (attacker.current_slot == 1 && attacker.mag1 == 0) // if (attacker.current_slot == 1 && attacker.mag1 == 0)
// bprint (PRINT_MEDIUM, "! "); // bprint (PRINT_MEDIUM, "! ");

View file

@ -424,7 +424,8 @@ void(string arg1) Cmd_InvBuy =
sprint(self, 2, "full inventory.\n"); sprint(self, 2, "full inventory.\n");
sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM); sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM);
m = SlotOfItem(self, IID_MONEY); m = SlotOfItem(self, IID_MONEY);
SetItemSlot(self, m, n); SetItemSlot(self, m, 0);
TryGiveStackable(self, IID_MONEY, n);
return; return;
} }
sound (self, CHAN_BODY, "misc/item2.wav", 1, ATTN_NORM); sound (self, CHAN_BODY, "misc/item2.wav", 1, ATTN_NORM);
@ -743,16 +744,15 @@ void(string arg1) Cmd_InvMix =
sprint(self, PRINT_MEDIUM, "silencer created\n"); sprint(self, PRINT_MEDIUM, "silencer created\n");
sound (self, CHAN_BODY, "misc/item1.wav", 1, ATTN_NORM); sound (self, CHAN_BODY, "misc/item1.wav", 1, ATTN_NORM);
} }
else if ((iid1 == IID_WP_NEEDLER && iid2 == IID_WP_NEEDLER) || else if ((iid1 == IID_ARM_VANDAL && iid2 == IID_MISC_JUNK) ||
(iid2 == IID_WP_NEEDLER && iid1 == IID_WP_NEEDLER)) (iid2 == IID_ARM_VANDAL && iid1 == IID_MISC_JUNK))
{ {
if (random()*100 > (self.skill_science*10)) if (random()*100 > (self.skill_science*20))
{ {
sprint(self, PRINT_MEDIUM, "your concoction exploded!\n"); sprint(self, PRINT_MEDIUM, "your concoction failed.\n");
Explosion();
return; return;
} }
@ -768,8 +768,8 @@ void(string arg1) Cmd_InvMix =
DecreaseDestroySlot(23); DecreaseDestroySlot(23);
DecreaseDestroySlot(24); DecreaseDestroySlot(24);
SetItemSlot(self, x, SlotVal(IID_WP_ACR, 1)); SetItemSlot(self, x, SlotVal(IID_ARM_WASTELAND, 1));
sprint(self, PRINT_MEDIUM, "Steyr ACR created\n"); sprint(self, PRINT_MEDIUM, "Wasteland Jacket created\n");
sound (self, CHAN_BODY, "misc/item1.wav", 1, ATTN_NORM); sound (self, CHAN_BODY, "misc/item1.wav", 1, ATTN_NORM);
} }
else else

View file

@ -180,10 +180,6 @@ void(entity targ, entity inflictor, entity attacker, float damage) T_Damage =
if (targ.classname == "player" && attacker.classname == "monster") if (targ.classname == "player" && attacker.classname == "monster")
targ.superenemy = attacker; targ.superenemy = attacker;
//getting hurt is slightly painful to the score, play cautiously!
if (attacker.classname == "monster" && targ.classname == "player")
targ.score = targ.score - 1;
//flanking monsters awards points //flanking monsters awards points
if (attacker.classname == "player" && targ.classname == "monster" && targ.enemy != attacker) if (attacker.classname == "player" && targ.classname == "monster" && targ.enemy != attacker)
attacker.score = attacker.score + 1; attacker.score = attacker.score + 1;
@ -216,14 +212,14 @@ void(entity targ, entity inflictor, entity attacker, float damage) T_Damage =
//attacking a team-mate is a HUGE penalty //attacking a team-mate is a HUGE penalty
if (attacker.classname == "player" && targ.classname == "player") if (attacker.classname == "player" && targ.classname == "player")
{ {
attacker.score = attacker.score - 5; attacker.score = attacker.score - 2;
sprint(attacker, 2, "you just shot a teammate! be careful!\n"); sprint(attacker, 2, "you just shot a teammate! be careful!\n");
} }
//attacking a hostage is a HUGE penalty //attacking a hostage is a HUGE penalty
if (attacker.classname == "player" && targ.classname == "hostage") if (attacker.classname == "player" && targ.classname == "hostage")
{ {
attacker.score = attacker.score - 5; attacker.score = attacker.score - 2;
sprint(attacker, 2, "you just shot a hostage! be careful!\n"); sprint(attacker, 2, "you just shot a hostage! be careful!\n");
} }

View file

@ -503,30 +503,32 @@ void() Trader_Draw =
TraderImage('5 4 0'*IMGSIZEF*(scrwidth/640), 20); TraderImage('5 4 0'*IMGSIZEF*(scrwidth/640), 20);
slotnum = 0; if (!showcontextmenu)
{
slotnum = 0;
if (mousepos_x >= 1*IMGSIZEF*(scrwidth/640) && mousepos_x <= 6*IMGSIZEF*(scrwidth/640)) if (mousepos_x >= 1*IMGSIZEF*(scrwidth/640) && mousepos_x <= 6*IMGSIZEF*(scrwidth/640))
if (mousepos_y >= 1*IMGSIZEF*(scrwidth/640) && mousepos_y <= 2*IMGSIZEF*(scrwidth/640)) if (mousepos_y >= 1*IMGSIZEF*(scrwidth/640) && mousepos_y <= 2*IMGSIZEF*(scrwidth/640))
slotnum = floor((mousepos_x)/(IMGSIZEF*(scrwidth/640))) + 0; slotnum = floor((mousepos_x)/(IMGSIZEF*(scrwidth/640))) + 0;
if (mousepos_x >= 1*IMGSIZEF*(scrwidth/640) && mousepos_x <= 6*IMGSIZEF*(scrwidth/640)) if (mousepos_x >= 1*IMGSIZEF*(scrwidth/640) && mousepos_x <= 6*IMGSIZEF*(scrwidth/640))
if (mousepos_y >= 2*IMGSIZEF*(scrwidth/640) && mousepos_y <= 3*IMGSIZEF*(scrwidth/640)) if (mousepos_y >= 2*IMGSIZEF*(scrwidth/640) && mousepos_y <= 3*IMGSIZEF*(scrwidth/640))
slotnum = floor((mousepos_x)/(IMGSIZEF*(scrwidth/640))) + 5; slotnum = floor((mousepos_x)/(IMGSIZEF*(scrwidth/640))) + 5;
if (mousepos_x >= 1*IMGSIZEF*(scrwidth/640) && mousepos_x <= 6*IMGSIZEF*(scrwidth/640)) if (mousepos_x >= 1*IMGSIZEF*(scrwidth/640) && mousepos_x <= 6*IMGSIZEF*(scrwidth/640))
if (mousepos_y >= 3*IMGSIZEF*(scrwidth/640) && mousepos_y <= 4*IMGSIZEF*(scrwidth/640)) if (mousepos_y >= 3*IMGSIZEF*(scrwidth/640) && mousepos_y <= 4*IMGSIZEF*(scrwidth/640))
slotnum = floor((mousepos_x)/(IMGSIZEF*(scrwidth/640))) + 10; slotnum = floor((mousepos_x)/(IMGSIZEF*(scrwidth/640))) + 10;
if (mousepos_x >= 1*IMGSIZEF*(scrwidth/640) && mousepos_x <= 6*IMGSIZEF*(scrwidth/640))
if (mousepos_y >= 4*IMGSIZEF*(scrwidth/640) && mousepos_y <= 5*IMGSIZEF*(scrwidth/640))
slotnum = floor((mousepos_x)/(IMGSIZEF*(scrwidth/640))) + 15;
if (mousepos_x >= 1*IMGSIZEF*(scrwidth/640) && mousepos_x <= 6*IMGSIZEF*(scrwidth/640))
if (mousepos_y >= 4*IMGSIZEF*(scrwidth/640) && mousepos_y <= 5*IMGSIZEF*(scrwidth/640))
slotnum = floor((mousepos_x)/(IMGSIZEF*(scrwidth/640))) + 15;
}
if (showcontextmenu && show_trader) if (showcontextmenu && show_trader)
{ {
drawfill(contextpos*(scrwidth/640) - '8 8 0'*(scrwidth/640), '48 48 0'*(scrwidth/640), '0 0 0', 1.0); drawfill(contextpos - '8 8 0'*(scrwidth/640), '48 48 0'*(scrwidth/640), '0 0 0', 1.0);
op = floor((mousepos_y*(scrwidth/640) - contextpos_y*(scrwidth/640))/8*(scrwidth/640)); op = floor((mousepos_y - contextpos_y)/8*(scrwidth/640));
drawstring(contextpos*(scrwidth/640) + '0 8 0'*(scrwidth/640), "buy?", '8 8 0'*(scrwidth/640), '1 1 0' + (op!=1)*'0 0 1', 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),
1); 1);
} }
@ -1013,18 +1015,18 @@ void() Invent_Draw =
if (showcontextmenu && show_inventory) if (showcontextmenu && show_inventory)
{ {
drawfill(contextpos - '8 8 0', '88 24 0'+'32 16 0'*(scrwidth/640), '0 0 0', 1); drawfill(contextpos - '8 8 0', '32 48 0'+'32 16 0'*(scrwidth/640), '0 0 0', 1);
op = floor((mousepos_y - contextpos_y)/8); op = floor((mousepos_y - contextpos_y)/8);
drawstring(contextpos + (0 * '0 8 0'), "use/reload", '8 8 0', '1 1 0' + (op!=0)*'0 0 1', 1); drawstring(contextpos + (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 + (1 * '0 8 0'), "drop", '8 8 0', '1 1 0' + (op!=1)*'0 0 1', 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) == 1)
drawstring(contextpos + (2 * '0 8 0'), "sell", '8 8 0', '1 1 0' + (op!=2)*'0 0 1', 1); 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);
} }
else if (showmixmenu && show_inventory) else if (showmixmenu && show_inventory)
{ {
drawfill(contextpos - '8 8 0', '88 24 0'+'96 96 0', '0 0 0', 0.9); drawfill(contextpos - '8 8 0', '16 24 0'+'96 96 0', '0 0 0', 1);
op = floor((mousepos_y - contextpos_y)/8); op = floor((mousepos_y - contextpos_y)/8);
drawstring(contextpos + (0 * '0 8 0'), "mix items", '8 8 0', '1 1 0' + (op!=0)*'0 0 1', 1); drawstring(contextpos + (0 * '0 8 0'), "mix items", '8 8 0', '1 1 0' + (op!=0)*'0 0 1', 1);
@ -1227,13 +1229,13 @@ float(float eventtype, float param1, float param2) CSQC_InputEvent =
{ {
if (showcontextmenu && show_inventory) if (showcontextmenu && show_inventory)
{ {
op = floor((mousepos_y - contextpos_y)/8); op = ceil((mousepos_y - contextpos_y)/(8*(scrwidth/640)));
if (op == 0) if (op == 0)
localcmd(strcat("cmd invuse ", ftos(slotnum), "\n")); localcmd(strcat("cmd invuse ", ftos(slotnum), "\n"));
else if ((op == 1)) else if ((op == 2))
localcmd(strcat("cmd invdrop ", ftos(slotnum), "\n")); localcmd(strcat("cmd invdrop ", ftos(slotnum), "\n"));
else if (op == 2) else if (op == 4)
localcmd(strcat("cmd invsell ", ftos(slotnum), "\n")); localcmd(strcat("cmd invsell ", ftos(slotnum), "\n"));
showcontextmenu = false; showcontextmenu = false;

View file

@ -94,16 +94,23 @@ float() CheckAttack =
else if (enemy_range == RANGE_NEAR) else if (enemy_range == RANGE_NEAR)
{ {
if (self.th_melee) if (self.th_melee)
chance = 0.2; chance = 0.95;
else else
chance = 0.4; chance = 0.95;
} }
else if (enemy_range == RANGE_MID) else if (enemy_range == RANGE_MID)
{ {
if (self.th_melee) if (self.th_melee)
chance = 0.05; chance = 0.95;
else else
chance = 0.1; chance = 0.95;
}
else if (enemy_range == RANGE_FAR)
{
if (self.th_melee)
chance = 0.9;
else
chance = 0.9;
} }
else else
chance = 0; chance = 0;
@ -111,7 +118,7 @@ float() CheckAttack =
if (random () < chance) if (random () < chance)
{ {
self.th_missile (); self.th_missile ();
SUB_AttackFinished (2*random()); SUB_AttackFinished (3*random());
return TRUE; return TRUE;
} }
@ -261,9 +268,11 @@ float() SoldierCheckAttack =
if (enemy_range == RANGE_MELEE) if (enemy_range == RANGE_MELEE)
chance = 0.9; chance = 0.9;
else if (enemy_range == RANGE_NEAR) else if (enemy_range == RANGE_NEAR)
chance = 0.4; chance = 0.9;
else if (enemy_range == RANGE_MID) else if (enemy_range == RANGE_MID)
chance = 0.05; chance = 0.9;
else if (enemy_range == RANGE_FAR)
chance = 0.9;
else else
chance = 0; chance = 0;

View file

@ -85,7 +85,7 @@ float IID_GREN_STUN = 105;
float IID_GREN_FLARE = 106; float IID_GREN_FLARE = 106;
//armour //armour
#define IsArmor(iid) (iid >= IID_ARM_DESERT && iid <= IID_ARM_LPOWER) #define IsArmor(iid) (iid >= IID_ARM_DESERT && iid <= IID_ARM_WASTELAND)
float IID_ARM_DESERT = 200; float IID_ARM_DESERT = 200;
float IID_ARM_LEATHER = 201; float IID_ARM_LEATHER = 201;
float IID_ARM_VANDAL = 202; float IID_ARM_VANDAL = 202;
@ -95,6 +95,7 @@ float IID_ARM_COMBAT = 205;
float IID_ARM_SEVA = 206; float IID_ARM_SEVA = 206;
float IID_ARM_FORCE = 207; float IID_ARM_FORCE = 207;
float IID_ARM_LPOWER = 208; float IID_ARM_LPOWER = 208;
float IID_ARM_WASTELAND = 208;
//stims //stims
#define IsChem(iid) (iid >= IID_CHEM_STIMPACK && iid <= IID_CHEM_BESERK) #define IsChem(iid) (iid >= IID_CHEM_STIMPACK && iid <= IID_CHEM_BESERK)
@ -915,6 +916,9 @@ string(float iid) GetItemWModel =
if (iid >= IID_MISC_JUNK && iid <= IID_MISC_XRAYTUBE) if (iid >= IID_MISC_JUNK && iid <= IID_MISC_XRAYTUBE)
return "progs/junk1.mdl"; return "progs/junk1.mdl";
if (iid >= IID_ARM_LEATHER && iid <= IID_ARM_WASTELAND)
return "progs/armor.mdl";
if (iid == IID_MONEY) if (iid == IID_MONEY)
return "progs/money.mdl"; return "progs/money.mdl";
@ -1375,7 +1379,8 @@ string(float iid) GetItemName =
return "force armor"; return "force armor";
if (iid == IID_ARM_LPOWER) if (iid == IID_ARM_LPOWER)
return "power armor"; return "power armor";
if (iid == IID_ARM_WASTELAND)
return "wasteland jacket";
if (iid == IID_CHEM_STIMPACK) if (iid == IID_CHEM_STIMPACK)
return "stimpack"; return "stimpack";
@ -1577,7 +1582,7 @@ float(float iid) GetBaseValue =
if (iid == IID_AM_2MMEC) if (iid == IID_AM_2MMEC)
return 120; return 120;
if (iid == IID_AM_10MM) if (iid == IID_AM_10MM)
return 12; return 10;
if (iid == IID_AM_556MM) if (iid == IID_AM_556MM)
return 20; return 20;
if (iid == IID_AM_5MMHIGHVEL) if (iid == IID_AM_5MMHIGHVEL)
@ -1630,7 +1635,8 @@ float(float iid) GetBaseValue =
return 300; return 300;
if (iid == IID_ARM_LPOWER) if (iid == IID_ARM_LPOWER)
return 450; return 450;
if (iid == IID_ARM_WASTELAND)
return 150;
if (iid == IID_CHEM_STIMPACK) if (iid == IID_CHEM_STIMPACK)
return 5; return 5;
@ -1864,7 +1870,8 @@ string(float iid) GetItemDesc =
return "experimental energy-field armor, very low absorb"; return "experimental energy-field armor, very low absorb";
if (iid == IID_ARM_LPOWER) if (iid == IID_ARM_LPOWER)
return "the heaviest armor with great protection"; return "the heaviest armor with great protection";
if (iid == IID_ARM_WASTELAND)
return "upgraded vandal armor with extra small arms protection";
if (iid == IID_CHEM_STIMPACK) if (iid == IID_CHEM_STIMPACK)
return "advanced healing chem that replaces lost blood"; return "advanced healing chem that replaces lost blood";
@ -1964,6 +1971,8 @@ float(float iid) GetArmorThreshold =
return 3; return 3;
if (iid == IID_ARM_VANDAL) if (iid == IID_ARM_VANDAL)
return 4; return 4;
if (iid == IID_ARM_VANDAL)
return 5;
if (iid == IID_ARM_METAL) if (iid == IID_ARM_METAL)
return 1; return 1;
if (iid == IID_ARM_TESLA) if (iid == IID_ARM_TESLA)
@ -1988,6 +1997,8 @@ float(float iid) GetArmorAbsorb =
return 20; return 20;
if (iid == IID_ARM_VANDAL) if (iid == IID_ARM_VANDAL)
return 30; return 30;
if (iid == IID_ARM_WASTELAND)
return 30;
if (iid == IID_ARM_METAL) if (iid == IID_ARM_METAL)
return 50; return 50;
if (iid == IID_ARM_TESLA) if (iid == IID_ARM_TESLA)
@ -2316,6 +2327,8 @@ string(float iid) GetItemImage =
return "leather.jpg"; return "leather.jpg";
if (iid == IID_ARM_VANDAL) if (iid == IID_ARM_VANDAL)
return "vandal.jpg"; return "vandal.jpg";
if (iid == IID_ARM_WASTELAND)
return "vandal.jpg";
if (iid == IID_ARM_METAL) if (iid == IID_ARM_METAL)
return "metal.jpg"; return "metal.jpg";
if (iid == IID_ARM_TESLA) if (iid == IID_ARM_TESLA)
@ -2925,6 +2938,8 @@ float(float iid) GetItemThreatLevel =
return 0; return 0;
if (iid == IID_ARM_VANDAL) if (iid == IID_ARM_VANDAL)
return 0; return 0;
if (iid == IID_ARM_WASTELAND)
return 0;
if (iid == IID_ARM_METAL) if (iid == IID_ARM_METAL)
return 0; return 0;
if (iid == IID_ARM_TESLA) if (iid == IID_ARM_TESLA)

View file

@ -316,13 +316,13 @@ void(vector loc) SpawnJunk =
if (random()*100 <= 50) if (random()*100 <= 25)
junk.islot1 = SlotVal(IID_MISC_HMXCOMPOUND, 1); junk.islot1 = SlotVal(IID_MISC_HMXCOMPOUND, 1);
else if (random()*100 <= 50) else if (random()*100 <= 25)
junk.islot1 = SlotVal(IID_MISC_CHEMICALS, 1); junk.islot1 = SlotVal(IID_MISC_CHEMICALS, 1);
else if (random()*100 <= 33) else if (random()*100 <= 25)
junk.islot1 = SlotVal(IID_MISC_NUKACOLA, 1); junk.islot1 = SlotVal(IID_MISC_NUKACOLA, 1);
else if (random()*100 <= 33) else if (random()*100 <= 25)
junk.islot1 = SlotVal(IID_MISC_AEROSOL, 1); junk.islot1 = SlotVal(IID_MISC_AEROSOL, 1);
else if (random()*100 <= 10) else if (random()*100 <= 10)
junk.islot1 = SlotVal(IID_MISC_RDXCRYSTAL, 1); junk.islot1 = SlotVal(IID_MISC_RDXCRYSTAL, 1);

View file

@ -194,7 +194,7 @@ void (float db) loud_noise =
while (te) while (te)
{ {
if (te.classname == "monster" && te.enemy.classname != "player") if (te.classname == "monster" && (te.enemy.classname != "player" && te.charmed <= 0))
{ {
dir = normalize(te.origin - self.origin); dir = normalize(te.origin - self.origin);
v = vlen(te.origin - self.origin); v = vlen(te.origin - self.origin);

View file

@ -351,7 +351,7 @@ void (float tmp, float dam) army_fire3 =
if (trace_ent.takedamage) if (trace_ent.takedamage)
{ {
SpawnBlood (org, PLAT_LOW_TRIGGER); SpawnBlood (org, PLAT_LOW_TRIGGER);
dam = dam + random()*dam; dam = 6 + random()*6;
dam = dam * (1 - (trace_fraction/2)); dam = dam * (1 - (trace_fraction/2));
T_Damage (trace_ent, self, self, dam); T_Damage (trace_ent, self, self, dam);
} }

View file

@ -637,7 +637,10 @@ void(float damage, float dist, float rate) FireMelee =
if (dot < 0.5 && trace_ent.takedamage) if (dot < 0.5 && trace_ent.takedamage)
{ {
tdam = 20 + (60*self.skill_sneak); if (trace_ent.enemy.classname == "player")
tdam = 20 + (60*self.skill_sneak);
else
tdam = 20 + (50*self.skill_sneak);
if (trace_ent.solid != SOLID_BSP) if (trace_ent.solid != SOLID_BSP)
SpawnBlood (org, 1); SpawnBlood (org, 1);
@ -665,6 +668,18 @@ void(float damage, float dist, float rate) FireMelee =
self.sneak = 0; self.sneak = 0;
spawn_excla(self, 3); spawn_excla(self, 3);
} }
else
{
bprint(2, self.netname);
bprint(2, " assassinates ");
bprint(2, trace_ent.netname);
bprint(2, "!\n");
if (random()*4<2)
sound (trace_ent, CHAN_WEAPON, "player/headshot.wav", 1, ATTN_NONE);
else
sound (trace_ent, CHAN_WEAPON, "player/udeath.wav", 1, ATTN_NONE);
}
} }
else if (trace_ent.takedamage) else if (trace_ent.takedamage)
{ {
@ -2060,9 +2075,9 @@ void() W_Attack =
else if (weap == IID_WP_MP9) else if (weap == IID_WP_MP9)
FireSMG(12, 0, "weapons/mp9.wav", 1500, 0.08); FireSMG(12, 0, "weapons/mp9.wav", 1500, 0.08);
else if (weap == IID_WP_GREASEGUN_S) else if (weap == IID_WP_GREASEGUN_S)
FireSMG(9, 0, "weapons/greasegun.wav", 1200, 0.08); FireSMG(12, 0, "weapons/greasegun.wav", 1200, 0.08);
else if (weap == IID_WP_MP9_S) else if (weap == IID_WP_MP9_S)
FireSMG(9, 0, "weapons/mp9.wav", 1200, 0.08); FireSMG(12, 0, "weapons/mp9.wav", 1200, 0.08);
else if (weap == IID_WP_RANGEMASTER) else if (weap == IID_WP_RANGEMASTER)
FireAssaultRifle(18, 4, "weapons/rangem.wav", 4000, 0.1); FireAssaultRifle(18, 4, "weapons/rangem.wav", 4000, 0.1);
else if (weap == IID_WP_AK112) else if (weap == IID_WP_AK112)
@ -2661,7 +2676,7 @@ void (vector org) bullet_hole =
WriteCoord (MSG_MULTICAST, org_x); WriteCoord (MSG_MULTICAST, org_x);
WriteCoord (MSG_MULTICAST, org_y); WriteCoord (MSG_MULTICAST, org_y);
WriteCoord (MSG_MULTICAST, org_z); WriteCoord (MSG_MULTICAST, org_z);
multicast (self.origin, MULTICAST_PHS); multicast (org, MULTICAST_PHS);
}; };
@ -3404,6 +3419,10 @@ void (float dam, float ap, string snd, float rng, float rate) FireSMG =
dam = dam * 1.1; dam = dam * 1.1;
} }
if (weap == IID_WP_GREASEGUN_S)
tmp = 210;
if (self.velocity == '0 0 0') if (self.velocity == '0 0 0')
tmp = tmp + (15*self.recoil); tmp = tmp + (15*self.recoil);
else else
@ -4623,15 +4642,6 @@ void () UseStimpack =
sound (self, CHAN_BODY, "items/r_item2.wav", 1, ATTN_NORM); sound (self, CHAN_BODY, "items/r_item2.wav", 1, ATTN_NORM);
sprint(self, PRINT_MEDIUM, "you heal yourself with a stimpack\n"); sprint(self, PRINT_MEDIUM, "you heal yourself with a stimpack\n");
thing = findradius(self.origin, 400);
while (thing)
{
if (thing.classname == "player" && thing.health < self.health)
self.score = self.score - 50;
thing = thing.chain;
}
self.health = self.health + 30 + (self.skill_doctor); self.health = self.health + 30 + (self.skill_doctor);
self.regen = self.regen + (5 + (self.skill_doctor/2)); self.regen = self.regen + (5 + (self.skill_doctor/2));
spawn_healing(self); spawn_healing(self);
@ -4672,15 +4682,6 @@ void () UseSuperStim =
sprint(self, PRINT_MEDIUM, "you are not injured.\n"); sprint(self, PRINT_MEDIUM, "you are not injured.\n");
else if (self.health < self.max_health) else if (self.health < self.max_health)
{ {
local entity thing;
thing = findradius(self.origin, 400);
while (thing)
{
if (thing.classname == "player" && (thing.health+20) < self.health)
self.score = self.score - 50;
thing = thing.chain;
}
DecreaseDestroySlot(x);//take away a stimpack DecreaseDestroySlot(x);//take away a stimpack
sound (self, CHAN_BODY, "items/r_item2.wav", 1, ATTN_NORM); sound (self, CHAN_BODY, "items/r_item2.wav", 1, ATTN_NORM);
@ -4834,16 +4835,6 @@ void () UseMedicalBag =
{ {
DecreaseDestroySlot(x);//take away a medkit DecreaseDestroySlot(x);//take away a medkit
local entity thing;
thing = findradius(self.origin, 400);
while (thing)
{
if (thing.classname == "player" && (thing.health+20) < self.health)
self.score = self.score - 25;
thing = thing.chain;
}
sound (self, CHAN_BODY, "items/r_item1.wav", 1, ATTN_NORM); sound (self, CHAN_BODY, "items/r_item1.wav", 1, ATTN_NORM);
self.health = self.health + 5 + (self.skill_doctor/2); self.health = self.health + 5 + (self.skill_doctor/2);
self.regen = self.regen + 3 + (self.skill_doctor/2); self.regen = self.regen + 3 + (self.skill_doctor/2);

View file

@ -1799,6 +1799,7 @@ void() worldspawn =
precache_model ("progs/backpack.mdl"); precache_model ("progs/backpack.mdl");
precache_model ("progs/zom_gib.mdl"); precache_model ("progs/zom_gib.mdl");
precache_model ("progs/v_light.mdl"); precache_model ("progs/v_light.mdl");
precache_model ("progs/armor.mdl");
precache_model ("maps/crate.bsp"); precache_model ("maps/crate.bsp");
// //