mirror of
https://github.com/nzp-team/fteqw.git
synced 2024-11-11 07:01:43 +00:00
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@3442 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
f6819cc0cd
commit
03e8a58d5a
7 changed files with 149 additions and 205 deletions
|
@ -1292,10 +1292,6 @@ void() SneakLevel =
|
||||||
if (self.position > 0)
|
if (self.position > 0)
|
||||||
sn = sn + 1;
|
sn = sn + 1;
|
||||||
|
|
||||||
//light step perk gives a 1% bonus to stealth
|
|
||||||
if (getperk(6))
|
|
||||||
sn = sn + 1;
|
|
||||||
|
|
||||||
//walking in front of a monster at close range is very bad
|
//walking in front of a monster at close range is very bad
|
||||||
//at longer ranges it isn't so bad to do so
|
//at longer ranges it isn't so bad to do so
|
||||||
//thus even healer and barbarian types can sneak if they do so smartly
|
//thus even healer and barbarian types can sneak if they do so smartly
|
||||||
|
@ -1475,14 +1471,10 @@ void () PositionControl =
|
||||||
self.maxspeed = 225;
|
self.maxspeed = 225;
|
||||||
else if (self.position == 1)
|
else if (self.position == 1)
|
||||||
self.maxspeed = 100;
|
self.maxspeed = 100;
|
||||||
else if (self.position == 2 && getperk(3))//stunt man
|
|
||||||
self.maxspeed = 100;
|
|
||||||
else
|
else
|
||||||
self.maxspeed = 50;
|
self.maxspeed = 50;
|
||||||
|
|
||||||
|
|
||||||
if (getperk(2))
|
|
||||||
self.maxspeed = self.maxspeed*1.10;
|
|
||||||
|
|
||||||
if (self.rage == IID_CHEM_ADRENALINE)
|
if (self.rage == IID_CHEM_ADRENALINE)
|
||||||
self.maxspeed = self.maxspeed*1.20;
|
self.maxspeed = self.maxspeed*1.20;
|
||||||
|
@ -1560,6 +1552,14 @@ void() PlayerPreThink =
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//perk1timer and perk2timer are "cooldowns" for each perk
|
||||||
|
if (self.perk1timer > 0)
|
||||||
|
self.perk1timer = self.perk1timer - 1;
|
||||||
|
|
||||||
|
if (self.perk2timer > 0)
|
||||||
|
self.perk2timer = self.perk2timer - 1;
|
||||||
|
|
||||||
if (self.cycle1 < time)
|
if (self.cycle1 < time)
|
||||||
{
|
{
|
||||||
if (self.currentmenu != "none")
|
if (self.currentmenu != "none")
|
||||||
|
@ -1578,14 +1578,6 @@ void() PlayerPreThink =
|
||||||
local float lgrip, rgrip;
|
local float lgrip, rgrip;
|
||||||
|
|
||||||
|
|
||||||
//nintendo gamer: player sometimes goes into 'the zone'
|
|
||||||
if ((self.recoil >= 5) && (getperk(9)) && (random()<=0.10))
|
|
||||||
{
|
|
||||||
sprint(self, 2, "THE ZONE!\n");
|
|
||||||
self.rage = 255;
|
|
||||||
self.ragetime = 15;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (self.health > self.max_health)
|
if (self.health > self.max_health)
|
||||||
self.health = self.max_health;
|
self.health = self.max_health;
|
||||||
|
|
||||||
|
@ -1686,38 +1678,6 @@ void() PlayerPreThink =
|
||||||
self.ammo_cells = 0;
|
self.ammo_cells = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getperk(100))//SPIRIT LINK
|
|
||||||
{
|
|
||||||
te = findradius(self.origin, 500);
|
|
||||||
|
|
||||||
while (te)
|
|
||||||
{
|
|
||||||
if (te.classname == "player" && te != self && (te.health < self.health))
|
|
||||||
{
|
|
||||||
if (self.health > 5 && te.health > 0)
|
|
||||||
{
|
|
||||||
|
|
||||||
sound (te, CHAN_BODY, "items/r_item1.wav", 1, ATTN_IDLE);
|
|
||||||
sound (self, CHAN_BODY, "items/r_item1.wav", 1, ATTN_IDLE);
|
|
||||||
|
|
||||||
sprint(self, 2, "!SPIRIT LINK\n");
|
|
||||||
sprint(te, 2, "!SPIRIT LINK\n");
|
|
||||||
|
|
||||||
if ((self.health - te.health) > 10)
|
|
||||||
{
|
|
||||||
self.health -= 5;
|
|
||||||
te.health += 5;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
self.health -= 1;
|
|
||||||
te.health += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
te = te.chain;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (self.regen > 0 && !self.deadflag) //don't come back to life.
|
if (self.regen > 0 && !self.deadflag) //don't come back to life.
|
||||||
{
|
{
|
||||||
|
@ -2135,9 +2095,10 @@ void() ClientConnect =
|
||||||
stuffcmd(self, "alias special impulse 53\n");
|
stuffcmd(self, "alias special impulse 53\n");
|
||||||
stuffcmd(self, "alias exit impulse 100\n");
|
stuffcmd(self, "alias exit impulse 100\n");
|
||||||
stuffcmd(self, "alias drop impulse 55\n");
|
stuffcmd(self, "alias drop impulse 55\n");
|
||||||
stuffcmd(self, "alias info impulse 56\n");
|
|
||||||
stuffcmd(self, "alias zoom impulse 60\n");
|
stuffcmd(self, "alias zoom impulse 60\n");
|
||||||
stuffcmd(self, "alias hostage impulse 65\n");
|
stuffcmd(self, "alias hostage impulse 65\n");
|
||||||
|
stuffcmd(self, "alias perk1 impulse 61\n");
|
||||||
|
stuffcmd(self, "alias perk2 impulse 62\n");
|
||||||
|
|
||||||
stuffcmd(self, "alias stimpack impulse 225\n");
|
stuffcmd(self, "alias stimpack impulse 225\n");
|
||||||
stuffcmd(self, "alias equip \"cmd invuse 4\"\n");
|
stuffcmd(self, "alias equip \"cmd invuse 4\"\n");
|
||||||
|
@ -2181,7 +2142,8 @@ void() ClientConnect =
|
||||||
stuffcmd(self, "bind h hostage\n");
|
stuffcmd(self, "bind h hostage\n");
|
||||||
stuffcmd(self, "bind x stimpack\n");
|
stuffcmd(self, "bind x stimpack\n");
|
||||||
stuffcmd(self, "bind b buy\n");
|
stuffcmd(self, "bind b buy\n");
|
||||||
stuffcmd(self, "bind q info\n");
|
stuffcmd(self, "bind q perk1\n");
|
||||||
|
stuffcmd(self, "bind a perk2\n");
|
||||||
stuffcmd(self, "bind shift prone\n");
|
stuffcmd(self, "bind shift prone\n");
|
||||||
stuffcmd(self, "bind ctrl duck\n");
|
stuffcmd(self, "bind ctrl duck\n");
|
||||||
|
|
||||||
|
|
|
@ -219,7 +219,7 @@ void(entity targ, entity inflictor, entity attacker, float damage) T_Damage =
|
||||||
//paranoia: if taking cover, 25% miss chance (others get 10% bonus)
|
//paranoia: if taking cover, 25% miss chance (others get 10% bonus)
|
||||||
if (targ.rage == 777)
|
if (targ.rage == 777)
|
||||||
{
|
{
|
||||||
if (targ.perk1 == 10 || targ.perk2 == 10)
|
if (targ.perk1 == 2 || targ.perk2 == 2)
|
||||||
{
|
{
|
||||||
if (random()<0.20)
|
if (random()<0.20)
|
||||||
{
|
{
|
||||||
|
@ -240,27 +240,28 @@ void(entity targ, entity inflictor, entity attacker, float damage) T_Damage =
|
||||||
//master blaster: the more you burst, the higher the damage bonus
|
//master blaster: the more you burst, the higher the damage bonus
|
||||||
if (attacker.perk1 == 18 || attacker.perk2 == 18)
|
if (attacker.perk1 == 18 || attacker.perk2 == 18)
|
||||||
{
|
{
|
||||||
if (self.recoil > 10)
|
if (attacker.recoil > 10)
|
||||||
{
|
{
|
||||||
sprint(self, 2, "!MASTER BLASTER\n");
|
sprint(attacker, 2, "!MASTER BLASTER\n");
|
||||||
damage = damage * (1 + (self.recoil * 0.01));
|
damage = damage * (1 + (attacker.recoil * 0.01));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//hit the deck
|
||||||
|
if (targ.perk1 == 4 || targ.perk2 == 4)
|
||||||
|
{
|
||||||
|
if (targ.position == 2)
|
||||||
|
damage = damage * 0.90;
|
||||||
|
}
|
||||||
|
|
||||||
//sneak attack: if you attack a creature who isn't fighting you, bonus damage
|
//sneak attack: if you attack a creature who isn't fighting you, bonus damage
|
||||||
if (attacker.perk1 == 7 || attacker.perk2 == 7)
|
if (attacker.skill_sneak > 0)
|
||||||
{
|
{
|
||||||
if (targ.enemy != attacker)
|
if (targ.enemy != attacker)
|
||||||
{
|
{
|
||||||
sprint(attacker, 2, "!SNEAK ATTACK\n");
|
sprint(attacker, 2, "!SNEAK ATTACK\n");
|
||||||
if (damage <= 10)
|
damage = damage * (1 + (self.skill_sneak/100));
|
||||||
damage = damage * 3;
|
|
||||||
else if (damage <= 20)
|
|
||||||
damage = damage * 2;
|
|
||||||
else if (damage <= 30)
|
|
||||||
damage = damage * 1.5;
|
|
||||||
else
|
|
||||||
damage = damage * 1.25;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -832,13 +832,13 @@ void() Invent_Draw =
|
||||||
|
|
||||||
check = getstati(97);
|
check = getstati(97);
|
||||||
if (check > 0)
|
if (check > 0)
|
||||||
SlotImage('11 12 0'*IMGSIZEK, 23);
|
SlotImageSmall('11 12 0'*IMGSIZEK, 23);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
check = getstati(98);
|
check = getstati(98);
|
||||||
if (check > 0)
|
if (check > 0)
|
||||||
SlotImage('13 12 0'*IMGSIZEK, 24);
|
SlotImageSmall('13 12 0'*IMGSIZEK, 24);
|
||||||
|
|
||||||
|
|
||||||
if (showcontextmenu && show_inventory)
|
if (showcontextmenu && show_inventory)
|
||||||
|
@ -883,11 +883,11 @@ void() Invent_Draw =
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (mousepos_x >= 11*IMGSIZEK && mousepos_x <= 12*IMGSIZEK)
|
if (mousepos_x >= 10.75*IMGSIZEK && mousepos_x <= 12.25*IMGSIZEK)
|
||||||
if (mousepos_y >= 12*IMGSIZEK && mousepos_y <= 13*IMGSIZEK)
|
if (mousepos_y >= 11.75*IMGSIZEK && mousepos_y <= 13.25*IMGSIZEK)
|
||||||
slotnum = 23;
|
slotnum = 23;
|
||||||
if (mousepos_x >= 13*IMGSIZEK && mousepos_x <= 14*IMGSIZEK)
|
if (mousepos_x >= 12.75*IMGSIZEK && mousepos_x <= 14.25*IMGSIZEK)
|
||||||
if (mousepos_y >= 12*IMGSIZEK && mousepos_y <= 13*IMGSIZEK)
|
if (mousepos_y >= 11.75*IMGSIZEK && mousepos_y <= 13.25*IMGSIZEK)
|
||||||
slotnum = 24;
|
slotnum = 24;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -976,7 +976,7 @@ else if (slotnum == 99)
|
||||||
it = getstati(98);
|
it = getstati(98);
|
||||||
}
|
}
|
||||||
itname = GetItemImage(ToIID(it));
|
itname = GetItemImage(ToIID(it));
|
||||||
drawpic(mousepos, strcat("gui/", itname), '48 48 0', '1 1 1', 1);
|
drawpic(mousepos - '16 16 0', strcat("gui/", itname), '48 48 0', '1 1 1', 1);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1086,21 +1086,8 @@ float(float eventtype, float param1, float param2) CSQC_InputEvent =
|
||||||
|
|
||||||
else if (downslotnum == slotnum) //mouse didn't move away
|
else if (downslotnum == slotnum) //mouse didn't move away
|
||||||
{
|
{
|
||||||
if (slotnum >= 1 && slotnum <= 26 && show_inventory)
|
|
||||||
{
|
if (show_gainperk)
|
||||||
//if there's actually an item there
|
|
||||||
if ((show_inventory) && (getstati(32+slotnum-1) != 0))
|
|
||||||
{
|
|
||||||
showcontextmenu = true; //show the context menu
|
|
||||||
contextpos = mousepos;
|
|
||||||
}
|
|
||||||
else if ((show_trader) && (getstati(70+slotnum) != 0))
|
|
||||||
{
|
|
||||||
showcontextmenu = true; //show the context menu
|
|
||||||
contextpos = mousepos;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (show_gainperk)
|
|
||||||
{
|
{
|
||||||
if (which_perk == getstati(60))
|
if (which_perk == getstati(60))
|
||||||
return;
|
return;
|
||||||
|
@ -1234,6 +1221,20 @@ float(float eventtype, float param1, float param2) CSQC_InputEvent =
|
||||||
perkslot = 2;
|
perkslot = 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (slotnum >= 1 && slotnum <= 26)
|
||||||
|
{
|
||||||
|
//if there's actually an item there
|
||||||
|
if ((show_inventory) && (getstati(32+slotnum-1) != 0))
|
||||||
|
{
|
||||||
|
showcontextmenu = true; //show the context menu
|
||||||
|
contextpos = mousepos;
|
||||||
|
}
|
||||||
|
else if ((show_trader) && (getstati(70+slotnum) != 0))
|
||||||
|
{
|
||||||
|
showcontextmenu = true; //show the context menu
|
||||||
|
contextpos = mousepos;
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
show_inventory = false; //they clicked outside, fools!
|
show_inventory = false; //they clicked outside, fools!
|
||||||
|
|
|
@ -739,6 +739,8 @@ float intermission_running;
|
||||||
.float lastman;
|
.float lastman;
|
||||||
.float popup;
|
.float popup;
|
||||||
.float flare;
|
.float flare;
|
||||||
|
.float perk1timer;
|
||||||
|
.float perk2timer;
|
||||||
|
|
||||||
.entity friend;
|
.entity friend;
|
||||||
.entity tumbler1;
|
.entity tumbler1;
|
||||||
|
|
|
@ -2589,7 +2589,8 @@ string (float slot, float int) PerkName =
|
||||||
return "Schizophrenia";
|
return "Schizophrenia";
|
||||||
if (int == 9)
|
if (int == 9)
|
||||||
return "Sleep Tight";
|
return "Sleep Tight";
|
||||||
|
if (int == 10)
|
||||||
|
return "Economic Moves";
|
||||||
};
|
};
|
||||||
|
|
||||||
string (float slot, float int) PerkNameCentered =
|
string (float slot, float int) PerkNameCentered =
|
||||||
|
@ -2612,7 +2613,8 @@ string (float slot, float int) PerkNameCentered =
|
||||||
return "Schizophrenia";
|
return "Schizophrenia";
|
||||||
if (int == 9)
|
if (int == 9)
|
||||||
return " Sleep Tight";
|
return " Sleep Tight";
|
||||||
|
if (int == 10)
|
||||||
|
return "Economic Moves";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -2636,6 +2638,8 @@ string(float int) GetPerkImage =
|
||||||
return "gui/perks/Schizophrenia.jpg";
|
return "gui/perks/Schizophrenia.jpg";
|
||||||
else if (int == 9)
|
else if (int == 9)
|
||||||
return "gui/perks/Sleep Tight.jpg";
|
return "gui/perks/Sleep Tight.jpg";
|
||||||
|
else if (int == 10)
|
||||||
|
return "gui/perks/Economic Moves.jpg";
|
||||||
else
|
else
|
||||||
return "gui/perks/none.jpg";
|
return "gui/perks/none.jpg";
|
||||||
|
|
||||||
|
@ -2662,6 +2666,8 @@ string(float int) GetPerkDesc =
|
||||||
return "You sometimes gain additional skills from another place";
|
return "You sometimes gain additional skills from another place";
|
||||||
else if (int == 9)
|
else if (int == 9)
|
||||||
return "Automatically kill anything with knife in sneak mode";
|
return "Automatically kill anything with knife in sneak mode";
|
||||||
|
else if (int == 10)
|
||||||
|
return "Suffer less time-related penalties for all actions";
|
||||||
else
|
else
|
||||||
return "";
|
return "";
|
||||||
|
|
||||||
|
|
|
@ -96,6 +96,55 @@ float() crandom =
|
||||||
return 2*(random() - 0.5);
|
return 2*(random() - 0.5);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void(float slotno) UsePerk =
|
||||||
|
{
|
||||||
|
local float x;
|
||||||
|
local string y, timeleft;
|
||||||
|
local entity te;
|
||||||
|
|
||||||
|
if (slotno == 1 && self.perk1timer > 0)
|
||||||
|
{
|
||||||
|
timeleft = ftos(self.perk1timer);
|
||||||
|
sprint(self, 2, "ability is not ready yet. [");
|
||||||
|
sprint(self, 2, timeleft);
|
||||||
|
sprint(self, 2, "]\n");
|
||||||
|
sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (slotno == 2 && self.perk2timer > 0)
|
||||||
|
{
|
||||||
|
timeleft = ftos(self.perk2timer);
|
||||||
|
sprint(self, 2, "ability is not ready yet. [");
|
||||||
|
sprint(self, 2, timeleft);
|
||||||
|
sprint(self, 2, "]\n");
|
||||||
|
sound (self, CHAN_BODY, "misc/beep1.wav", 1, ATTN_NORM);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (self.perk1 == 7 || self.perk2 == 7)
|
||||||
|
{
|
||||||
|
if (slotno == 1)
|
||||||
|
self.perk1timer = 2000;
|
||||||
|
if (slotno == 2)
|
||||||
|
self.perk2timer = 2000;
|
||||||
|
|
||||||
|
sound (self, CHAN_BODY, "misc/r_tele4.wav", 1, ATTN_NORM);
|
||||||
|
|
||||||
|
te = findradius (self.origin, 6000);
|
||||||
|
while (te)
|
||||||
|
{
|
||||||
|
if (te.classname == "monster")
|
||||||
|
te.hold = 100;
|
||||||
|
|
||||||
|
te = te.chain;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
void() muzzleflash =
|
void() muzzleflash =
|
||||||
{
|
{
|
||||||
WriteByte (MSG_MULTICAST, SVC_MUZZLEFLASH);
|
WriteByte (MSG_MULTICAST, SVC_MUZZLEFLASH);
|
||||||
|
@ -158,31 +207,16 @@ void(float damage, float dist, float rate) FireMelee =
|
||||||
local float weap, dot, tdam;
|
local float weap, dot, tdam;
|
||||||
local string sdam;
|
local string sdam;
|
||||||
|
|
||||||
if (getperk(16))//power shot adds a small bonus to the first shot fired
|
if (getperk(5))//living anatomy
|
||||||
{
|
{
|
||||||
if (self.steadyaim == 0)
|
if (self.steadyaim == 0)
|
||||||
{
|
damage = damage + self.skill_doctor;
|
||||||
sprint(self, 2, "!POWER SHOT\n");
|
|
||||||
damage = damage * 1.20;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
self.recoil = self.recoil + 5;
|
self.recoil = self.recoil + 5;
|
||||||
|
|
||||||
weap = ToIID(self.(SlotField(self.current_slot)));
|
weap = ToIID(self.(SlotField(self.current_slot)));
|
||||||
|
|
||||||
//large and in charge! adds a small burst of adrenalnie
|
|
||||||
if ((getperk(8)) && ((weap == IID_WP_SPEAR || weap == IID_WP_SLEDGE || weap == IID_WP_WRENCH)))
|
|
||||||
{
|
|
||||||
if (self.ragetime <= 0)
|
|
||||||
{
|
|
||||||
sprint(self, 2, "!LARGE AND IN CHARGE\n");
|
|
||||||
sound (self, CHAN_VOICE, "player/berserk.wav", 1, ATTN_NORM);
|
|
||||||
self.rage = IID_CHEM_ADRENALINE;
|
|
||||||
self.ragetime = 3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
makevectors (self.v_angle);
|
makevectors (self.v_angle);
|
||||||
source = self.origin + '0 0 16';
|
source = self.origin + '0 0 16';
|
||||||
traceline (source, source + v_forward*dist, FALSE, self);
|
traceline (source, source + v_forward*dist, FALSE, self);
|
||||||
|
@ -199,10 +233,10 @@ void(float damage, float dist, float rate) FireMelee =
|
||||||
|
|
||||||
if (dot < 0.5 && trace_ent.takedamage)
|
if (dot < 0.5 && trace_ent.takedamage)
|
||||||
{
|
{
|
||||||
tdam = 25 + (30*self.skill_sneak);
|
tdam = 20 + (20*self.skill_sneak);
|
||||||
|
|
||||||
if (getperk(7))
|
if (getperk(9))
|
||||||
tdam = tdam * 2;
|
tdam = 900;
|
||||||
|
|
||||||
if (self.steadyaim == 0)
|
if (self.steadyaim == 0)
|
||||||
tdam = tdam + 10;
|
tdam = tdam + 10;
|
||||||
|
@ -275,13 +309,6 @@ void(float damage, float dist, float rate) FireMelee =
|
||||||
if (weap == IID_WP_SLEDGE || weap == IID_WP_SPEAR || weap == IID_WP_KNIFE)
|
if (weap == IID_WP_SLEDGE || weap == IID_WP_SPEAR || weap == IID_WP_KNIFE)
|
||||||
SpawnBlood (org, 1);
|
SpawnBlood (org, 1);
|
||||||
|
|
||||||
if ((getperk(8)) && (weap == IID_WP_SLEDGE || weap == IID_WP_SPEAR || weap == IID_WP_WRENCH))
|
|
||||||
{
|
|
||||||
sprint(self, 2, "!LARGE AND IN CHARGE\n");
|
|
||||||
dir = normalize(trace_ent.origin - self.origin);
|
|
||||||
trace_ent.velocity = dir * 600;
|
|
||||||
trace_ent.velocity_z = 100+random()*200;
|
|
||||||
}
|
|
||||||
|
|
||||||
trace_ent.axhitme = 1;
|
trace_ent.axhitme = 1;
|
||||||
if (trace_ent.classname != "car")
|
if (trace_ent.classname != "car")
|
||||||
|
@ -1413,8 +1440,6 @@ void (float slotno) ReloadWeapon =
|
||||||
else if (self.position == 1)
|
else if (self.position == 1)
|
||||||
player_creload1();
|
player_creload1();
|
||||||
|
|
||||||
if (getperk(5))
|
|
||||||
r = r * 0.5;
|
|
||||||
|
|
||||||
|
|
||||||
self.attack_finished = time + r;
|
self.attack_finished = time + r;
|
||||||
|
@ -1721,7 +1746,7 @@ void() W_ChangeWeapon =
|
||||||
|
|
||||||
if (self.impulse == 1 && self.current_slot != 1)
|
if (self.impulse == 1 && self.current_slot != 1)
|
||||||
{
|
{
|
||||||
if (!getperk(5))
|
if (!getperk(10))
|
||||||
{
|
{
|
||||||
self.weaponframe = 4;
|
self.weaponframe = 4;
|
||||||
self.attack_finished = time + 1;
|
self.attack_finished = time + 1;
|
||||||
|
@ -1734,7 +1759,7 @@ void() W_ChangeWeapon =
|
||||||
}
|
}
|
||||||
else if (self.impulse == 2 && self.current_slot != 2)
|
else if (self.impulse == 2 && self.current_slot != 2)
|
||||||
{
|
{
|
||||||
if (!getperk(5))
|
if (!getperk(10))
|
||||||
{
|
{
|
||||||
self.weaponframe = 4;
|
self.weaponframe = 4;
|
||||||
self.attack_finished = time + 1;
|
self.attack_finished = time + 1;
|
||||||
|
@ -1865,7 +1890,7 @@ void () ProneOff =
|
||||||
}
|
}
|
||||||
|
|
||||||
sprint (self, 2, "position: stand.\n");
|
sprint (self, 2, "position: stand.\n");
|
||||||
if (getperk(3))
|
if (getperk(10))
|
||||||
{
|
{
|
||||||
self.attack_finished = time + 0.5;
|
self.attack_finished = time + 0.5;
|
||||||
self.rtime = time + 0.5;
|
self.rtime = time + 0.5;
|
||||||
|
@ -1891,7 +1916,7 @@ void () ProneOn =
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!getperk(3) && self.velocity_z != 0)
|
if (!getperk(10) && self.velocity_z != 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (self.position == 2)
|
if (self.position == 2)
|
||||||
|
@ -1906,7 +1931,7 @@ void () ProneOn =
|
||||||
self.position = 2;
|
self.position = 2;
|
||||||
self.view_ofs = '0 0 -10';
|
self.view_ofs = '0 0 -10';
|
||||||
sprint (self, 2, "position: prone.\n");
|
sprint (self, 2, "position: prone.\n");
|
||||||
if (getperk(3))
|
if (getperk(10))
|
||||||
{
|
{
|
||||||
self.attack_finished = time + 0.5;
|
self.attack_finished = time + 0.5;
|
||||||
self.rtime = time + 0.5;
|
self.rtime = time + 0.5;
|
||||||
|
@ -1932,7 +1957,7 @@ void () DuckOff =
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sprint (self, 2, "position: stand.\n");
|
sprint (self, 2, "position: stand.\n");
|
||||||
if (!getperk(3))
|
if (!getperk(10))
|
||||||
{
|
{
|
||||||
self.attack_finished = time + 0.2;
|
self.attack_finished = time + 0.2;
|
||||||
self.rtime = time + 0.2;
|
self.rtime = time + 0.2;
|
||||||
|
@ -1948,7 +1973,7 @@ void () DuckOn =
|
||||||
{
|
{
|
||||||
if (self.waterlevel > 0)
|
if (self.waterlevel > 0)
|
||||||
{
|
{
|
||||||
if (!getperk(3))
|
if (!getperk(10))
|
||||||
{
|
{
|
||||||
self.attack_finished = time + 0.5;
|
self.attack_finished = time + 0.5;
|
||||||
self.rtime = time + 0.5;
|
self.rtime = time + 0.5;
|
||||||
|
@ -1971,7 +1996,7 @@ void () DuckOn =
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!getperk(3))
|
if (!getperk(10))
|
||||||
{
|
{
|
||||||
self.attack_finished = time + 0.5;
|
self.attack_finished = time + 0.5;
|
||||||
self.rtime = time + 0.5;
|
self.rtime = time + 0.5;
|
||||||
|
@ -2032,19 +2057,8 @@ void() ImpulseCommands =
|
||||||
if (self.impulse == 4 && self.currentmenu == "none")
|
if (self.impulse == 4 && self.currentmenu == "none")
|
||||||
Cmd_InvUse("6");
|
Cmd_InvUse("6");
|
||||||
|
|
||||||
if (self.impulse >= 1 && self.currentmenu == "shop_perk1")
|
|
||||||
{
|
if (self.impulse >= 1 && self.impulse <= 10 && self.currentmenu != "none")
|
||||||
W_PlayerMenu ();
|
|
||||||
self.impulse = 0;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else if (self.impulse >= 1 && self.currentmenu == "shop_perk2")
|
|
||||||
{
|
|
||||||
W_PlayerMenu ();
|
|
||||||
self.impulse = 0;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else if (self.impulse >= 1 && self.impulse <= 10 && self.currentmenu != "none")
|
|
||||||
{
|
{
|
||||||
W_PlayerMenu ();
|
W_PlayerMenu ();
|
||||||
self.impulse = 0;
|
self.impulse = 0;
|
||||||
|
@ -2081,9 +2095,13 @@ void() ImpulseCommands =
|
||||||
UseEquipment ();
|
UseEquipment ();
|
||||||
if (self.impulse == 60)
|
if (self.impulse == 60)
|
||||||
ZoomIn ();
|
ZoomIn ();
|
||||||
|
if (self.impulse == 61)
|
||||||
|
UsePerk (1);
|
||||||
|
if (self.impulse == 62)
|
||||||
|
UsePerk (2);
|
||||||
|
|
||||||
if (self.impulse == 65)
|
if (self.impulse == 65)
|
||||||
HostageReport ();
|
HostageReport ();
|
||||||
|
|
||||||
if (self.impulse == 66)
|
if (self.impulse == 66)
|
||||||
WalkOn ();
|
WalkOn ();
|
||||||
if (self.impulse == 67)
|
if (self.impulse == 67)
|
||||||
|
@ -2815,13 +2833,10 @@ void (float dam, float ap, string snd, float rng, float rate) FirePistol =
|
||||||
stuffcmd(self, "-attack\n");
|
stuffcmd(self, "-attack\n");
|
||||||
self.attack_finished = (time + rate);
|
self.attack_finished = (time + rate);
|
||||||
|
|
||||||
if (getperk(16))//power shot adds a small bonus to the first shot fired
|
if (getperk(5))
|
||||||
{
|
{
|
||||||
if (self.steadyaim == 0)
|
if (self.steadyaim == 0)
|
||||||
{
|
dam = dam + self.skill_doctor/2;
|
||||||
sprint(self, 2, "!POWER SHOT\n");
|
|
||||||
dam = dam * 1.20;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (self.extender == weap && self.silencer != weap)
|
if (self.extender == weap && self.silencer != weap)
|
||||||
|
@ -2965,13 +2980,10 @@ void (float dam, float ap, string snd, float rng, float rate) FireSMG =
|
||||||
|
|
||||||
weap = ToIID(self.(SlotField(self.current_slot)));
|
weap = ToIID(self.(SlotField(self.current_slot)));
|
||||||
|
|
||||||
if (getperk(16))//power shot adds a small bonus to the first shot fired
|
if (getperk(5))
|
||||||
{
|
{
|
||||||
if (self.steadyaim == 0)
|
if (self.steadyaim == 0)
|
||||||
{
|
dam = dam + self.skill_doctor/2;
|
||||||
sprint(self, 2, "!POWER SHOT\n");
|
|
||||||
dam = dam * 1.20;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sound (self, CHAN_WEAPON, snd, 1, ATTN_NORM);
|
sound (self, CHAN_WEAPON, snd, 1, ATTN_NORM);
|
||||||
|
@ -3290,13 +3302,10 @@ void (float dam, float accuracy, string snd, float rng, float rate) FireAssaultR
|
||||||
|
|
||||||
weap = ToIID(self.(SlotField(self.current_slot)));
|
weap = ToIID(self.(SlotField(self.current_slot)));
|
||||||
|
|
||||||
if (getperk(16))//power shot adds a small bonus to the first shot fired
|
if (getperk(5))
|
||||||
{
|
{
|
||||||
if (self.steadyaim == 0)
|
if (self.steadyaim == 0)
|
||||||
{
|
dam = dam + self.skill_doctor/2;
|
||||||
sprint(self, 2, "!POWER SHOT\n");
|
|
||||||
dam = dam * 1.20;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (weap == IID_WP_MOONLIGHT)
|
if (weap == IID_WP_MOONLIGHT)
|
||||||
|
@ -3569,13 +3578,10 @@ void (float dam, float xrecoil, string snd, float rng, float rate) FireMinigun =
|
||||||
self.weaponframe = 9;
|
self.weaponframe = 9;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getperk(16))//power shot adds a small bonus to the first shot fired
|
if (getperk(5))
|
||||||
{
|
{
|
||||||
if (self.steadyaim == 0)
|
if (self.steadyaim == 0)
|
||||||
{
|
dam = dam + self.skill_doctor/3;
|
||||||
sprint(self, 2, "!POWER SHOT\n");
|
|
||||||
dam = dam * 1.20;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
loud_noise(50);
|
loud_noise(50);
|
||||||
|
@ -4003,9 +4009,8 @@ float(float iid) UseBoostingChem =
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//chem addict: any self-used chem functions better
|
|
||||||
if (getperk(15))
|
duration = duration * (1 + (self.skill_doctor / 10));
|
||||||
duration = duration * 2;
|
|
||||||
|
|
||||||
self.attack_finished = time + 1;
|
self.attack_finished = time + 1;
|
||||||
|
|
||||||
|
@ -4110,20 +4115,6 @@ float(float iid) UseHealingChem =
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (self.perk1 == 13 || self.perk2 == 13)
|
|
||||||
{
|
|
||||||
sprint(self, 2, "MEDICINE MAN\n");
|
|
||||||
heal = heal * 1.25;
|
|
||||||
}
|
|
||||||
if (self.perk1 == 17 || self.perk2 == 17)
|
|
||||||
{
|
|
||||||
if (random()<0.05)
|
|
||||||
{
|
|
||||||
sprint(self, 2, "ONE IN A MILLION\n");
|
|
||||||
heal = heal * 5;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sprint (trace_ent, PRINT_HIGH, self.netname);
|
sprint (trace_ent, PRINT_HIGH, self.netname);
|
||||||
sprint (trace_ent, PRINT_HIGH, " used a ");
|
sprint (trace_ent, PRINT_HIGH, " used a ");
|
||||||
sprint (trace_ent, PRINT_HIGH, x);
|
sprint (trace_ent, PRINT_HIGH, x);
|
||||||
|
@ -4141,20 +4132,6 @@ float(float iid) UseHealingChem =
|
||||||
sprint (self, PRINT_HIGH, x);
|
sprint (self, PRINT_HIGH, x);
|
||||||
sprint (self, PRINT_HIGH, ".\n");
|
sprint (self, PRINT_HIGH, ".\n");
|
||||||
|
|
||||||
if (self.perk1 == 13 || self.perk2 == 13)
|
|
||||||
{
|
|
||||||
sprint(self, 2, "MEDICINE MAN\n");
|
|
||||||
heal = heal * 1.25;
|
|
||||||
}
|
|
||||||
if (self.perk1 == 17 || self.perk2 == 17)
|
|
||||||
{
|
|
||||||
if (random()<0.05)
|
|
||||||
{
|
|
||||||
sprint(self, 2, "ONE IN A MILLION\n");
|
|
||||||
heal = heal * 5;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sound (self, CHAN_BODY, "items/r_item2.wav", 1, ATTN_NORM);
|
sound (self, CHAN_BODY, "items/r_item2.wav", 1, ATTN_NORM);
|
||||||
self.health = self.health + heal;
|
self.health = self.health + heal;
|
||||||
self.regen = heal;
|
self.regen = heal;
|
||||||
|
@ -4833,12 +4810,6 @@ void () ExitScreen =
|
||||||
}
|
}
|
||||||
if (trace_ent.classname == "body" && self.pickup == 0)
|
if (trace_ent.classname == "body" && self.pickup == 0)
|
||||||
{
|
{
|
||||||
if ((self.perk1 == 12 || self.perk2 == 12) && (ToIID(self.islot3) != IID_ARM_DESERT))
|
|
||||||
{
|
|
||||||
sprint(self, 2, "you loot the raider's desert armor\n");
|
|
||||||
SetItemSlot(self, 3, SlotVal(IID_ARM_DESERT, 1));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
trace_ent.movetype = MOVETYPE_BOUNCE;
|
trace_ent.movetype = MOVETYPE_BOUNCE;
|
||||||
dir = normalize(trace_ent.origin - self.origin);
|
dir = normalize(trace_ent.origin - self.origin);
|
||||||
|
@ -5123,6 +5094,9 @@ void () disappear =
|
||||||
//this allows an assassin to vanish, making monsters aggro
|
//this allows an assassin to vanish, making monsters aggro
|
||||||
//those who are visible
|
//those who are visible
|
||||||
|
|
||||||
|
if (!getperk(3))
|
||||||
|
return;
|
||||||
|
|
||||||
te = findradius(self.origin, 500);
|
te = findradius(self.origin, 500);
|
||||||
while (te)
|
while (te)
|
||||||
{
|
{
|
||||||
|
@ -6025,13 +5999,10 @@ void (float rec, float number, float dam, float spread, float ran, float auto, s
|
||||||
local float var4;
|
local float var4;
|
||||||
local float weap;
|
local float weap;
|
||||||
|
|
||||||
if (getperk(16))//power shot adds a small bonus to the first shot fired
|
if (getperk(5))
|
||||||
{
|
{
|
||||||
if (self.steadyaim == 0)
|
if (self.steadyaim == 0)
|
||||||
{
|
dam = dam + self.skill_doctor/5;
|
||||||
sprint(self, 2, "!POWER SHOT\n");
|
|
||||||
dam = dam * 1.20;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
weap = ToIID(self.(SlotField(self.current_slot)));
|
weap = ToIID(self.(SlotField(self.current_slot)));
|
||||||
|
|
|
@ -1700,7 +1700,7 @@ void () RecoilControl =
|
||||||
|
|
||||||
te.lastman = te.lastman - 0.01;
|
te.lastman = te.lastman - 0.01;
|
||||||
|
|
||||||
//steady aim: for power shot, and aimed shots by standing still
|
//steady aim: for living anatomy, and aimed shots by standing still
|
||||||
if (te.recoil != 0)
|
if (te.recoil != 0)
|
||||||
te.steadyaim = 6;
|
te.steadyaim = 6;
|
||||||
else if (te.recoil == 0 && te.steadyaim > 0)
|
else if (te.recoil == 0 && te.steadyaim > 0)
|
||||||
|
@ -1772,9 +1772,9 @@ void () RecoilControl =
|
||||||
if (te.drifty > 250)
|
if (te.drifty > 250)
|
||||||
te.drifty = 250;
|
te.drifty = 250;
|
||||||
|
|
||||||
//nintendo gamer: going into the zone gives a -5 recoil bonus
|
//support fire: going prone gives a -10 recoil bonus with this perk during heavy fire
|
||||||
if (te.rage == 255)
|
if (getperk(1) && self.position == 2 && te.recoil > 5)
|
||||||
te.recoil = te.recoil - 0.05;
|
te.recoil = te.recoil - 0.10;
|
||||||
|
|
||||||
|
|
||||||
//prone: going prone gives a -5 recoil bonus
|
//prone: going prone gives a -5 recoil bonus
|
||||||
|
@ -2091,6 +2091,7 @@ void() worldspawn =
|
||||||
precache_sound ("misc/hosdown.wav");
|
precache_sound ("misc/hosdown.wav");
|
||||||
precache_sound ("misc/rescued.wav");
|
precache_sound ("misc/rescued.wav");
|
||||||
precache_sound ("misc/beep1.wav");
|
precache_sound ("misc/beep1.wav");
|
||||||
|
precache_sound ("misc/r_tele4.wav");
|
||||||
precache_sound ("buttons/switch02.wav");
|
precache_sound ("buttons/switch02.wav");
|
||||||
precache_sound ("buttons/switch04.wav");
|
precache_sound ("buttons/switch04.wav");
|
||||||
precache_sound ("misc/secret.wav");
|
precache_sound ("misc/secret.wav");
|
||||||
|
|
Loading…
Reference in a new issue