mirror of
https://github.com/nzp-team/quakec.git
synced 2024-11-10 06:31:44 +00:00
GLOBAL: Better precache management; enable -O3 for prog compilation, debloat progs
This commit is contained in:
parent
5487e14384
commit
83caba0141
15 changed files with 30 additions and 708 deletions
|
@ -8,7 +8,6 @@
|
|||
|
||||
../source/server/dummies.qc
|
||||
../source/server/rounds.qc
|
||||
../source/server/nzdparser.qc
|
||||
../source/server/main.qc
|
||||
../source/server/utilities/weapon_utilities.qc
|
||||
../source/server/utilities/game_restart.qc
|
||||
|
@ -45,5 +44,3 @@
|
|||
../source/server/ai/zombie_core.qc
|
||||
../source/server/ai/crawler_core.qc
|
||||
../source/server/ai/dog_core.qc
|
||||
|
||||
../source/server/items.qc
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
|
||||
../source/server/dummies.qc
|
||||
../source/server/rounds.qc
|
||||
../source/server/nzdparser.qc
|
||||
../source/server/main.qc
|
||||
../source/server/utilities/weapon_utilities.qc
|
||||
../source/server/utilities/game_restart.qc
|
||||
|
@ -49,5 +48,3 @@
|
|||
../source/server/ai/zombie_core.qc
|
||||
../source/server/ai/crawler_core.qc
|
||||
../source/server/ai/dog_core.qc
|
||||
|
||||
../source/server/items.qc
|
||||
|
|
|
@ -703,10 +703,8 @@ noref float(string cmd) CSQC_ConsoleCommand =
|
|||
case "togglemenu":
|
||||
ToggleMenu();
|
||||
return TRUE;
|
||||
break;
|
||||
case "map":
|
||||
return FALSE;
|
||||
break;
|
||||
case "startwalk":
|
||||
walk = TRUE;
|
||||
return FALSE;
|
||||
|
@ -722,7 +720,6 @@ noref float(string cmd) CSQC_ConsoleCommand =
|
|||
else
|
||||
score_show = TRUE;
|
||||
return TRUE;
|
||||
break;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
|
|
|
@ -1128,85 +1128,58 @@ float(float r) Getweaponid =
|
|||
switch(r) {
|
||||
case 0:
|
||||
return W_COLT;
|
||||
break;
|
||||
case 1:
|
||||
return W_KAR;
|
||||
break;
|
||||
case 2:
|
||||
return W_DB;
|
||||
break;
|
||||
case 3:
|
||||
return W_MG;
|
||||
break;
|
||||
case 4:
|
||||
return W_RAY;
|
||||
break;
|
||||
case 5:
|
||||
return W_THOMPSON;
|
||||
break;
|
||||
case 6:
|
||||
return W_M2;
|
||||
break;
|
||||
case 7:
|
||||
return W_PPSH;
|
||||
break;
|
||||
case 8:
|
||||
return W_SAWNOFF;
|
||||
break;
|
||||
case 9:
|
||||
return W_TESLA;
|
||||
break;
|
||||
case 10:
|
||||
return W_M1A1;
|
||||
break;
|
||||
case 11:
|
||||
return W_GEWEHR;
|
||||
break;
|
||||
case 12:
|
||||
return W_FG;
|
||||
break;
|
||||
case 13:
|
||||
return W_BROWNING;
|
||||
break;
|
||||
case 14:
|
||||
return W_KAR_SCOPE;
|
||||
break;
|
||||
case 15:
|
||||
return W_357;
|
||||
break;
|
||||
case 16:
|
||||
return W_STG;
|
||||
break;
|
||||
case 17:
|
||||
return W_PANZER;
|
||||
break;
|
||||
case 18:
|
||||
return W_BK;
|
||||
break;
|
||||
case 19:
|
||||
return W_PTRS;
|
||||
break;
|
||||
case 20:
|
||||
return W_MP40;
|
||||
break;
|
||||
case 21:
|
||||
return W_TRENCH;
|
||||
break;
|
||||
case 22:
|
||||
return W_BAR;
|
||||
break;
|
||||
case 23:
|
||||
return W_M1;
|
||||
break;
|
||||
case 24:
|
||||
return W_TYPE;
|
||||
break;
|
||||
case 25:
|
||||
return W_MP5K;
|
||||
break;
|
||||
case 26:
|
||||
return W_SPRING;
|
||||
break;
|
||||
}
|
||||
|
||||
return r;
|
||||
|
@ -1912,6 +1885,10 @@ void() perk_pap =
|
|||
self.requirespower = false;
|
||||
}
|
||||
|
||||
// Only cache the dual wield pap weapons if we have pap..
|
||||
precache_extra(W_BIATCH);
|
||||
precache_extra(W_SNUFF);
|
||||
|
||||
precache_model ("models/machines/quake_scale/pap.mdl");
|
||||
precache_model ("models/machines/v_pap.mdl");
|
||||
precache_sound ("sounds/machines/papsound.wav");
|
||||
|
|
|
@ -67,6 +67,9 @@ void() ambient_use =
|
|||
|
||||
void () ambient_generic =
|
||||
{
|
||||
|
||||
#ifdef FTE
|
||||
|
||||
local string link;
|
||||
|
||||
// moto - FIXME: typically this is set to upper-case but only FTE has strtoupper(); assume lower-case!
|
||||
|
@ -114,6 +117,9 @@ void () ambient_generic =
|
|||
ambientsound(self.origin, self.message, self.health, self.stance);
|
||||
|
||||
self.use = ambient_use;
|
||||
|
||||
#endif // FTE
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
//
|
||||
// Items.qc - all the definitions for item spawn functions as well as other functions related to them
|
||||
//
|
|
@ -338,8 +338,6 @@ void() worldspawn =
|
|||
G_WORLDTEXT = 1;
|
||||
G_PERKS = 0;
|
||||
G_PERKPOWER = 0;
|
||||
load_nzd();
|
||||
|
||||
}
|
||||
|
||||
void() SpectatorConnect =
|
||||
|
|
|
@ -1,236 +0,0 @@
|
|||
/*
|
||||
server/nzdparser.qc
|
||||
|
||||
parses NZData files for map variety
|
||||
|
||||
Copyright (C) 2021 NZ:P Team
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to:
|
||||
|
||||
Free Software Foundation, Inc.
|
||||
59 Temple Place - Suite 330
|
||||
Boston, MA 02111-1307, USA
|
||||
|
||||
*/
|
||||
|
||||
//custom weapon search
|
||||
void(string weaponFile) nzd_defineweapon = {
|
||||
float f, p, l, fnum, wepnum, framenum, fsnd;
|
||||
string line;
|
||||
|
||||
fnum = 0;
|
||||
framenum = 0;
|
||||
fsnd = 0;
|
||||
|
||||
line = strcat(strcat("data/maps/", weaponFile), ".cw");
|
||||
f = fopen(line, FILE_READ);
|
||||
|
||||
if (f == -1) { //no custom weapons
|
||||
return;
|
||||
}
|
||||
wepnum = currentWeaponTracker - 1;
|
||||
p = 0;
|
||||
l = 1;
|
||||
|
||||
while(l) {
|
||||
string li;
|
||||
li = fgets(f);
|
||||
|
||||
if not (li) {
|
||||
l = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
line = strtrim(li);
|
||||
|
||||
if (line == "")
|
||||
continue;
|
||||
|
||||
switch(p) {
|
||||
case 0:
|
||||
wepnum += 1;
|
||||
currentWeaponTracker = wepnum;
|
||||
if (line == "weapon")
|
||||
p = 1;
|
||||
break;
|
||||
case 1:
|
||||
if (line == "{")
|
||||
p = 2;
|
||||
else
|
||||
bprint(PRINT_HIGH, strcat("Error: unknown variable ", strcat(line, " expected {\n")));
|
||||
break;
|
||||
case 2:
|
||||
tokenize(line);
|
||||
|
||||
string v, vari;
|
||||
vari = strtrim(argv(0));
|
||||
v = strtrim(argv(2));
|
||||
|
||||
switch(vari) {
|
||||
case "name":
|
||||
CustomWeapons[wepnum].name = v;
|
||||
break;
|
||||
case "mag":
|
||||
CustomWeapons[wepnum].magSize = stof(v);
|
||||
break;
|
||||
case "reserve":
|
||||
CustomWeapons[wepnum].reserveSize = stof(v);
|
||||
break;
|
||||
case "vmodel":
|
||||
CustomWeapons[wepnum].vmodel = v;
|
||||
break;
|
||||
case "vmodel2":
|
||||
CustomWeapons[wepnum].vmodel2 = v;
|
||||
break;
|
||||
case "gmodel":
|
||||
CustomWeapons[wepnum].gmodel = v;
|
||||
break;
|
||||
case "ads":
|
||||
CustomWeapons[wepnum].adsofs = stov(v);
|
||||
break;
|
||||
case "firetype":
|
||||
CustomWeapons[wepnum].firetype = stof(v);
|
||||
break;
|
||||
case "ispap":
|
||||
CustomWeapons[wepnum].ispap = stof(v);
|
||||
break;
|
||||
case "nonpap":
|
||||
CustomWeapons[wepnum].nonpap = stof(v);
|
||||
break;
|
||||
case "pap":
|
||||
CustomWeapons[wepnum].papWpn = stof(v);
|
||||
break;
|
||||
case "dmg":
|
||||
CustomWeapons[wepnum].damage = stof(v);
|
||||
break;
|
||||
case "shotcount":
|
||||
CustomWeapons[wepnum].shotcount = stof(v);
|
||||
break;
|
||||
case "bodypen":
|
||||
CustomWeapons[wepnum].bodypen = stof(v);
|
||||
break;
|
||||
case "penetration":
|
||||
CustomWeapons[wepnum].penetration = stof(v);
|
||||
break;
|
||||
case "spread":
|
||||
CustomWeapons[wepnum].spread = stof(v);
|
||||
break;
|
||||
case "fdelay":
|
||||
CustomWeapons[wepnum].fdelay = stof(v);
|
||||
break;
|
||||
case "rdelay":
|
||||
CustomWeapons[wepnum].rdelay = stof(v);
|
||||
break;
|
||||
case "walkspeed":
|
||||
CustomWeapons[wepnum].walkspeed = stof(v);
|
||||
break;
|
||||
case "firesound":
|
||||
CustomWeapons[wepnum].firesound = v;
|
||||
break;
|
||||
case "skin":
|
||||
CustomWeapons[wepnum].skin = stof(v);
|
||||
break;
|
||||
case "recoil":
|
||||
CustomWeapons[wepnum].recoil = stof(v);
|
||||
break;
|
||||
case "crossmin":
|
||||
CustomWeapons[wepnum].crossmin = stof(v);
|
||||
break;
|
||||
case "crossmax":
|
||||
CustomWeapons[wepnum].crossmax = stof(v);
|
||||
break;
|
||||
case "lowmag":
|
||||
CustomWeapons[wepnum].lowmag = stof(v);
|
||||
break;
|
||||
case "lowreserve":
|
||||
CustomWeapons[wepnum].lowreserve = stof(v);
|
||||
break;
|
||||
case "flash":
|
||||
CustomWeapons[wepnum].flash = stov(v);
|
||||
break;
|
||||
case "flashsize":
|
||||
CustomWeapons[wepnum].flashsize = stof(v);
|
||||
}
|
||||
|
||||
break;
|
||||
case 3:
|
||||
if (line == "[") {
|
||||
p = 4;
|
||||
} else {
|
||||
bprint(PRINT_HIGH, strcat("Error: unknown variable ", strcat(line, " expected [\n")));
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (line == "]") {
|
||||
p = 2;
|
||||
} else {
|
||||
switch(wepnum) {
|
||||
/*case 0: W_C1FRAMES[fnum] = stof(line); break;
|
||||
case 1: W_C2FRAMES[fnum] = stof(line); break;
|
||||
case 2: W_C3FRAMES[fnum] = stof(line); break;
|
||||
case 3: W_C4FRAMES[fnum] = stof(line); break;*/
|
||||
}
|
||||
fnum++;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (line == "[") {
|
||||
p = 6;
|
||||
} else {
|
||||
bprint(PRINT_HIGH, strcat("Error: unknown variable ", strcat(line, " expected [\n")));
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if (line == "]") {
|
||||
p = 2;
|
||||
} else {
|
||||
switch(wepnum) {
|
||||
/*case 0: W_C1XSNDFRAME[framenum] = stof(line); break;
|
||||
case 1: W_C2XSNDFRAME[framenum] = stof(line); break;
|
||||
case 2: W_C3XSNDFRAME[framenum] = stof(line); break;
|
||||
case 3: W_C4XSNDFRAME[framenum] = stof(line); break;*/
|
||||
}
|
||||
framenum++;
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
if (line == "[") {
|
||||
p = 8;
|
||||
} else {
|
||||
bprint(PRINT_HIGH, strcat("Error: unknown variable ", strcat(line, " expected [\n")));
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
if (line == "]") {
|
||||
p = 2;
|
||||
} else {
|
||||
switch(wepnum) {
|
||||
/*case 0: W_C1XTRASND[fsnd] = line; break;
|
||||
case 1: W_C2XTRASND[fsnd] = line; break;
|
||||
case 2: W_C3XTRASND[fsnd] = line; break;
|
||||
case 3: W_C4XTRASND[fsnd] = line; break;*/
|
||||
}
|
||||
fsnd++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
|
||||
void() load_nzd = {
|
||||
|
||||
}
|
|
@ -1,327 +0,0 @@
|
|||
/*
|
||||
server/player/last_stand.qc
|
||||
|
||||
Functionality pertaining to Player's Last Stand mode and the act
|
||||
of getting out of it.
|
||||
|
||||
Copyright (C) 2021-2023 NZ:P Team
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to:
|
||||
|
||||
Free Software Foundation, Inc.
|
||||
59 Temple Place - Suite 330
|
||||
Boston, MA 02111-1307, USA
|
||||
|
||||
*/
|
||||
float() PollPlayersAlive;
|
||||
void() EndGameSetup;
|
||||
void() SpectatorSpawn;
|
||||
|
||||
#define LAST_STAND_DURATION_SEC 100 // Seconds in Last Stand.
|
||||
|
||||
// when dead and other players exist and are alive, throw user into spectate mode
|
||||
void(entity deceased) Player_BecomeSpectator =
|
||||
{
|
||||
if (!deceased.downed)
|
||||
return;
|
||||
|
||||
/*if (self.beingrevived)
|
||||
{
|
||||
self.think = startspectate;
|
||||
self.nextthink = time + 0.1;
|
||||
return;
|
||||
}*/
|
||||
|
||||
deceased.downedloop = 0;
|
||||
deceased.beingrevived = false;
|
||||
deceased.model = "";
|
||||
setmodel(deceased, deceased.model);
|
||||
deceased.health = 100;
|
||||
deceased.weaponmodel = "";
|
||||
deceased.weapon2model = "";
|
||||
deceased.weapon = 0;
|
||||
deceased.downed = 0;
|
||||
deceased.frame = 0;
|
||||
|
||||
UpdateVmodel(deceased.weaponmodel, GetWepSkin(deceased.weapon));
|
||||
UpdateV2model(deceased.weapon2model, GetWepSkin(deceased.weapon));
|
||||
|
||||
entity tempe;
|
||||
tempe = self;
|
||||
self = deceased;
|
||||
SwitchWeapon(self.weapon);
|
||||
SpectatorSpawn();
|
||||
self = tempe;
|
||||
}
|
||||
|
||||
void() ReviveTracker_Update =
|
||||
{
|
||||
// Add to the die timer..
|
||||
self.ltime += 0.1;
|
||||
|
||||
// Bleed Out Timer
|
||||
if (self.ltime >= LAST_STAND_DURATION_SEC) {
|
||||
// Get rid of the Revive Icon from HUDs and make them a spectator.
|
||||
DisableReviveIcon(self.owner.electro_targeted);
|
||||
Player_BecomeSpectator(self.owner);
|
||||
|
||||
// Prevent any leakage
|
||||
remove(self);
|
||||
} else {
|
||||
self.nextthink = time + 0.1;
|
||||
}
|
||||
}
|
||||
|
||||
void(entity deceased) SpawnReviveTracker =
|
||||
{
|
||||
entity revive_tracker = spawn();
|
||||
revive_tracker.owner = deceased;
|
||||
|
||||
revive_tracker.think = ReviveTracker_Update;
|
||||
revive_tracker.nextthink = time + 0.1;
|
||||
}
|
||||
|
||||
void() Player_ReviveTrigger =
|
||||
{
|
||||
if (other.classname != "player" || (self.beingrevived == true && self.firer != other))
|
||||
return;
|
||||
|
||||
// perform a trace to make sure they're always facing the revivee
|
||||
vector source;
|
||||
makevectors(self.angles);
|
||||
source = other.origin - '0 0 12';
|
||||
traceline(source, source + v_forward*50, 0, other);
|
||||
other.active_door = trace_ent;
|
||||
|
||||
centerprint(other, other.active_door.classname);
|
||||
|
||||
if (self.beingrevived == false && other.active_door == self)
|
||||
useprint(other, 13, 0, 0);
|
||||
}
|
||||
|
||||
void() Player_EnterLastStand =
|
||||
{
|
||||
// 'Pro Gamer Move' achievement.
|
||||
if (rounds <= 1 && self.currentmag == 0 &&
|
||||
self.currentmag2 == 0 && self.currentammo == 0 &&
|
||||
self.secondarymag == 0 && self.secondarymag2 == 0 &&
|
||||
self.secondaryammo == 0) {
|
||||
GiveAchievement(9, self);
|
||||
}
|
||||
|
||||
// Play Last Stand Animation
|
||||
PAnim_GetDown1();
|
||||
|
||||
// Force the player to prone.
|
||||
if (self.stance == 2) self.new_ofs_z = self.view_ofs_z - 42;
|
||||
if (self.stance == 1) self.new_ofs_z = self.view_ofs_z - 24;
|
||||
self.stance = 0;
|
||||
|
||||
// Get Rid of Mule Kick Weapon (FIXME -- this just obliterates the third slot)
|
||||
self.thirdweapon = 0;
|
||||
|
||||
// Calculate the loss in points, take away points from downed Player.
|
||||
float point_difference;
|
||||
point_difference = self.points;
|
||||
point_difference -= 10*rint((self.points*0.95)/10);
|
||||
addmoney(self, point_difference * -1, false);
|
||||
self.requirespower = point_difference;
|
||||
|
||||
// Broadcast that the player has downed.
|
||||
BroadcastMessage(time + 3, 2, self.netname);
|
||||
|
||||
// Different hitbox for Last Stand
|
||||
setsize(self, '-16 -16 -32', '16 16 40');
|
||||
|
||||
// Reset state
|
||||
self.velocity = self.zoom = 0;
|
||||
self.downed = true;
|
||||
self.dive_delay = 0;
|
||||
self.movetype = MOVETYPE_WALK;
|
||||
|
||||
// Determine if we should End the Game.
|
||||
float players_still_alive = PollPlayersAlive();
|
||||
if ((coop && !players_still_alive) || (!coop && !(self.perks & P_REVIVE))) {
|
||||
EndGameSetup();
|
||||
return;
|
||||
} else {
|
||||
self.health = 19;
|
||||
}
|
||||
|
||||
// Initiate Self-Revive on Solo
|
||||
if ((self.perks & P_REVIVE) && !coop) {
|
||||
self.progress_bar = 10 + time;
|
||||
self.progress_bar_time = 10;
|
||||
self.progress_bar_percent = 1;
|
||||
}
|
||||
|
||||
// Take away weapons and Perks
|
||||
self.perks = 0;
|
||||
SetPerk(self, self.perks);
|
||||
self.weaponbk = self.weapon;
|
||||
self.currentammobk = self.currentammo;
|
||||
self.currentmagbk = self.currentmag;
|
||||
self.currentmagbk2 = self.currentmag2;
|
||||
|
||||
if(Util_PlayerHasWeapon(self, W_BIATCH, false) ||
|
||||
Util_PlayerHasWeapon(self, W_RAY, true) ||
|
||||
Util_PlayerHasWeapon(self, W_357, true)) {
|
||||
float weapon_slot;
|
||||
float total_ammo;
|
||||
total_ammo = 0;
|
||||
|
||||
weapon_slot = Util_PlayerHasWeapon(self, W_RAY, true);
|
||||
if (weapon_slot == 0) weapon_slot = Util_PlayerHasWeapon(self, W_BIATCH, false);
|
||||
if (weapon_slot == 0) weapon_slot = Util_PlayerHasWeapon(self, W_357, true);
|
||||
|
||||
switch(weapon_slot) {
|
||||
case 1:
|
||||
total_ammo = self.currentmag + self.currentmag2 + self.currentammo;
|
||||
break;
|
||||
case 2:
|
||||
total_ammo = self.secondarymag + self.secondarymag2 + self.secondaryammo;
|
||||
self.weapon = self.secondaryweapon;
|
||||
break;
|
||||
}
|
||||
|
||||
// If it's greater than the mag size, we can fill the magazine.
|
||||
if (total_ammo > getWeaponMag(self.weapon)) {
|
||||
self.currentmag = getWeaponMag(self.weapon);
|
||||
|
||||
// subtract it from the total ammo
|
||||
total_ammo -= self.currentmag;
|
||||
} else {
|
||||
self.currentmag = total_ammo;
|
||||
total_ammo = 0;
|
||||
}
|
||||
|
||||
// Check for dual wield mag too
|
||||
if (IsDualWeapon(self.weapon)) {
|
||||
if (total_ammo > getWeaponMag(self.weapon)) {
|
||||
self.currentmag2 = getWeaponMag(self.weapon);
|
||||
|
||||
// subtract it from the total ammo
|
||||
total_ammo -= self.currentmag2;
|
||||
} else {
|
||||
self.currentmag2 = total_ammo;
|
||||
total_ammo = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Ray Gun has a special case where we DON'T fill its reserve
|
||||
if (self.weapon != W_RAY && self.weapon != W_PORTER) {
|
||||
// Now see if the reserve ammo is more than max downed capacity
|
||||
if (total_ammo > getWeaponMag(self.weapon)*2) {
|
||||
self.currentammo = getWeaponMag(self.weapon)*2;
|
||||
} else {
|
||||
// It's not so just fill it
|
||||
self.currentammo = total_ammo;
|
||||
}
|
||||
} else {
|
||||
self.currentammo = 0;
|
||||
}
|
||||
} else {
|
||||
if (!coop) {
|
||||
self.weapon = W_BIATCH;
|
||||
self.currentammo = 12;
|
||||
self.currentmag = self.currentmag2 = 6;
|
||||
} else {
|
||||
self.weapon = W_COLT;
|
||||
self.currentmag = 8;
|
||||
self.currentammo = 16;
|
||||
}
|
||||
}
|
||||
|
||||
// Play Switch Animation
|
||||
self.weaponmodel = GetWeaponModel(self.weapon, 0);
|
||||
SwitchWeapon(self.weapon);
|
||||
|
||||
float startframe = GetFrame(self.weapon,TAKE_OUT_START);
|
||||
float endframe = GetFrame(self.weapon,TAKE_OUT_END);
|
||||
Set_W_Frame (startframe, endframe, 0, 0, 0, SUB_Null, self.weaponmodel, false, S_BOTH);
|
||||
|
||||
// Spawn Revive Sprite and Revive Tracker in Co-Op
|
||||
if (coop) {
|
||||
EnableReviveIcon(revive_index, self.origin + VEC_VIEW_OFS);
|
||||
SpawnReviveTracker(self);
|
||||
self.touch = Player_ReviveTrigger;
|
||||
self.electro_targeted = revive_index;
|
||||
revive_index++;
|
||||
}
|
||||
|
||||
//self.think = rec_downed;
|
||||
//self.nextthink = time + 0.1;
|
||||
}
|
||||
|
||||
void() Player_LeaveLastStand =
|
||||
{
|
||||
local string modelname;
|
||||
float startframe;
|
||||
float endframe;
|
||||
|
||||
playgetup(); // animation
|
||||
|
||||
self.new_ofs_z = self.view_ofs_z + 42;
|
||||
self.stance = 2;
|
||||
self.health = 100;
|
||||
self.downedloop = 0; // used for death timing vs endgame
|
||||
self.downed = 0;
|
||||
self.classname = "player";
|
||||
|
||||
// Revert Hitbox
|
||||
setsize(self, '-16 -16 -32', '16 16 40');
|
||||
|
||||
// Take away the ammo that was fired while in last stand.
|
||||
if (self.weapon != W_COLT) {
|
||||
if (self.weapon == self.weaponbk) {
|
||||
self.currentammobk -= self.teslacount;
|
||||
|
||||
// Take from the mag if the reserve is empty now
|
||||
if (self.currentammobk < 0)
|
||||
self.currentmagbk += self.currentammobk;
|
||||
self.currentammobk = 0;
|
||||
} else if (self.weapon == self.secondaryweapon) {
|
||||
self.secondaryammo -= self.teslacount;
|
||||
|
||||
// Take from the mag if the reserve is empty now
|
||||
if (self.secondaryammo < 0)
|
||||
self.secondarymag += self.secondaryammo;
|
||||
self.secondaryammo = 0;
|
||||
}
|
||||
}
|
||||
|
||||
self.teslacount = 0;
|
||||
|
||||
if (!coop) {
|
||||
addmoney(self, self.requirespower, false);
|
||||
}
|
||||
|
||||
if (self.weaponbk)
|
||||
{
|
||||
self.weapon = self.weaponbk;
|
||||
self.currentammo = self.currentammobk;
|
||||
self.currentmag = self.currentmagbk;
|
||||
self.currentmag2 = self.currentmagbk2;
|
||||
}
|
||||
modelname = GetWeaponModel(self.weapon, 0);
|
||||
self.weaponmodel = modelname;
|
||||
SwitchWeapon(self.weapon);
|
||||
self.weapon2model = GetWeapon2Model(self.weapon);
|
||||
self.movetype = MOVETYPE_WALK;
|
||||
|
||||
startframe = GetFrame(self.weapon,TAKE_OUT_START);
|
||||
endframe = GetFrame(self.weapon,TAKE_OUT_END);
|
||||
Set_W_Frame (startframe, endframe, 0, 0, 0, SUB_Null, modelname, false, S_BOTH);
|
||||
};
|
|
@ -47,10 +47,10 @@ void() W_AimOut;
|
|||
float(entity person, float slot) Weapon_GetPlayerAmmoInSlot =
|
||||
{
|
||||
switch(slot) {
|
||||
case 1: return person.currentammo; break;
|
||||
case 2: return person.secondaryammo; break;
|
||||
case 3: return person.thirdammo; break;
|
||||
default: return 0; break;
|
||||
case 1: return person.currentammo;
|
||||
case 2: return person.secondaryammo;
|
||||
case 3: return person.thirdammo;
|
||||
default: return 0;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -177,7 +177,6 @@ float(string path) model_should_hide_weapon2 =
|
|||
case "models/weapons/knife/v_bowie.mdl":
|
||||
case "models/weapons/knife/v_knife.mdl":
|
||||
return true;
|
||||
break;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
|
@ -231,7 +231,3 @@ float invertfloat(float input) {
|
|||
|
||||
return (1 - input);
|
||||
}
|
||||
|
||||
// custom weapon defs
|
||||
// now 90% slimmed down
|
||||
float currentWeaponTracker;
|
||||
|
|
|
@ -25,45 +25,6 @@
|
|||
|
||||
*/
|
||||
|
||||
/*
|
||||
Structs are MAGICAL!
|
||||
*/
|
||||
var struct {
|
||||
string name;
|
||||
float magSize;
|
||||
float reserveSize;
|
||||
string vmodel;
|
||||
string vmodel2;
|
||||
string gmodel;
|
||||
float isDual;
|
||||
float firetype;
|
||||
float nonpap;
|
||||
float pap;
|
||||
float ispap;
|
||||
float damage;
|
||||
float shotcount;
|
||||
float bodypen;
|
||||
float penetration;
|
||||
float spread;
|
||||
float fdelay;
|
||||
float rdelay;
|
||||
float walkspeed;
|
||||
string firesound;
|
||||
float skin;
|
||||
float recoil;
|
||||
float crossmin;
|
||||
float crossmax;
|
||||
float lowmag;
|
||||
float lowreserve;
|
||||
vector flash;
|
||||
float flashsize;
|
||||
float papWpn;
|
||||
vector adsofs;
|
||||
} CustomWeapons[] =
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
string(float wep) GetWeaponName =
|
||||
{
|
||||
|
||||
|
@ -3301,8 +3262,11 @@ void(float weptype) precache_extra =
|
|||
precache_sound("sounds/weapons/colt/magout.wav");
|
||||
precache_sound("sounds/weapons/colt/magin.wav");
|
||||
precache_sound("sounds/weapons/colt/slide.wav");
|
||||
precache_model ("models/weapons/m1911/v_biatch_right.mdl"); // sprite explosion
|
||||
|
||||
if (weptype == W_BIATCH) {
|
||||
precache_model ("models/weapons/m1911/v_biatch_right.mdl");
|
||||
precache_model ("models/weapons/m1911/v_biatch_left.mdl");
|
||||
}
|
||||
break;
|
||||
case W_KAR_SCOPE:
|
||||
case W_KAR:
|
||||
|
@ -3366,9 +3330,10 @@ void(float weptype) precache_extra =
|
|||
precache_sound("sounds/weapons/shotgun/shoot.wav");
|
||||
|
||||
//lotta stuff here, so let's make sure we don't add unless ABSOLUTELY necessary..
|
||||
if (weptype == W_SAWNOFF || weptype == W_SNUFF)
|
||||
if (weptype == W_SNUFF) {
|
||||
precache_model("models/weapons/sawnoff/v_snuff_right.mdl");
|
||||
precache_model("models/weapons/sawnoff/v_snuff_left.mdl");
|
||||
}
|
||||
break;
|
||||
case W_FG:
|
||||
case W_IMPELLER:
|
||||
|
@ -3495,6 +3460,9 @@ void(float weptype) precache_extra =
|
|||
case W_GRENADE:
|
||||
precache_model("models/props/grenade_bag.mdl");
|
||||
break;
|
||||
case W_BETTY:
|
||||
precache_model("models/weapons/grenade/g_betty.mdl");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3505,148 +3473,101 @@ float(float wep) getWeaponRecoilReturn =
|
|||
{
|
||||
case W_COLT:
|
||||
return 750;
|
||||
break;
|
||||
case W_BIATCH:
|
||||
return 750;
|
||||
break;
|
||||
case W_KAR:
|
||||
case W_SPRING:
|
||||
return 750;
|
||||
break;
|
||||
case W_ARMAGEDDON:
|
||||
case W_PULVERIZER:
|
||||
return 750;
|
||||
break;
|
||||
case W_THOMPSON:
|
||||
return 950;
|
||||
break;
|
||||
case W_GIBS:
|
||||
return 950;
|
||||
break;
|
||||
case W_357:
|
||||
return 1500;
|
||||
break;
|
||||
case W_KILLU:
|
||||
return 1500;
|
||||
break;
|
||||
case W_BAR:
|
||||
return 460;
|
||||
break;
|
||||
case W_WIDOW:
|
||||
return 460;
|
||||
break;
|
||||
case W_BROWNING:
|
||||
return 950;
|
||||
break;
|
||||
case W_ACCELERATOR:
|
||||
return 950;
|
||||
break;
|
||||
case W_DB:
|
||||
return 1000;
|
||||
break;
|
||||
case W_BORE:
|
||||
return 1000;
|
||||
break;
|
||||
case W_FG:
|
||||
return 1129;
|
||||
break;
|
||||
case W_IMPELLER:
|
||||
return 1129;
|
||||
break;
|
||||
case W_GEWEHR:
|
||||
return 1500;
|
||||
break;
|
||||
case W_COMPRESSOR:
|
||||
return 1500;
|
||||
break;
|
||||
case W_KAR_SCOPE:
|
||||
return 750;
|
||||
break;
|
||||
case W_HEADCRACKER:
|
||||
return 750;
|
||||
break;
|
||||
case W_M1:
|
||||
return 1500;
|
||||
break;
|
||||
case W_M1000:
|
||||
return 1500;
|
||||
break;
|
||||
case W_M1A1:
|
||||
return 1500;
|
||||
break;
|
||||
case W_WIDDER:
|
||||
return 1500;
|
||||
break;
|
||||
case W_MP40:
|
||||
return 2538;
|
||||
break;
|
||||
case W_AFTERBURNER:
|
||||
return 2538;
|
||||
break;
|
||||
case W_MP5K:
|
||||
return 1255;
|
||||
break;
|
||||
case W_KOLLIDER:
|
||||
return 1255;
|
||||
break;
|
||||
case W_MG:
|
||||
return 1778;
|
||||
break;
|
||||
case W_BARRACUDA:
|
||||
return 1778;
|
||||
break;
|
||||
case W_PANZER:
|
||||
return 0;
|
||||
break;
|
||||
case W_LONGINUS:
|
||||
return 0;
|
||||
break;
|
||||
case W_PPSH:
|
||||
return 1255;
|
||||
break;
|
||||
case W_REAPER:
|
||||
return 1255;
|
||||
break;
|
||||
case W_PTRS:
|
||||
return 1500;
|
||||
break;
|
||||
case W_PENETRATOR:
|
||||
return 1500;
|
||||
break;
|
||||
case W_RAY:
|
||||
return 0;
|
||||
break;
|
||||
case W_PORTER:
|
||||
return 0;
|
||||
break;
|
||||
case W_SAWNOFF:
|
||||
return 1000;
|
||||
break;
|
||||
case W_SNUFF:
|
||||
return 1000;
|
||||
break;
|
||||
case W_STG:
|
||||
return 2400;
|
||||
break;
|
||||
case W_SPATZ:
|
||||
return 2400;
|
||||
break;
|
||||
case W_TRENCH:
|
||||
return 500;
|
||||
break;
|
||||
case W_GUT:
|
||||
return 500;
|
||||
break;
|
||||
case W_TYPE:
|
||||
return 1813;
|
||||
break;
|
||||
case W_SAMURAI:
|
||||
return 1813;
|
||||
break;
|
||||
case W_TESLA:
|
||||
case W_DG3:
|
||||
return 1813;
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -9,16 +9,16 @@ echo "========================"
|
|||
echo " compiling FTE CCQC "
|
||||
echo "========================"
|
||||
echo ""
|
||||
./fteqcc-cli-lin -srcfile ../progs/fte-client.src
|
||||
./fteqcc-cli-lin -O3 -srcfile ../progs/fte-client.src
|
||||
echo ""
|
||||
echo "========================"
|
||||
echo " compiling FTE SSQC "
|
||||
echo "========================"
|
||||
echo ""
|
||||
./fteqcc-cli-lin -srcfile ../progs/fte-server.src
|
||||
./fteqcc-cli-lin -O3 -srcfile ../progs/fte-server.src
|
||||
echo ""
|
||||
echo "========================"
|
||||
echo " compiling STANDARD QC "
|
||||
echo "========================"
|
||||
echo ""
|
||||
./fteqcc-cli-lin -srcfile ../progs/standard.src
|
||||
./fteqcc-cli-lin -O3 -srcfile ../progs/standard.src
|
||||
|
|
|
@ -9,17 +9,17 @@ echo ========================
|
|||
echo compiling FTE CCQC
|
||||
echo ========================
|
||||
echo.
|
||||
fteqcc-cli-win.exe -srcfile ../progs/fte-client.src
|
||||
fteqcc-cli-win.exe -O3 -srcfile ../progs/fte-client.src
|
||||
echo.
|
||||
echo ========================
|
||||
echo compiling FTE SSQC
|
||||
echo ========================
|
||||
echo.
|
||||
fteqcc-cli-win.exe -srcfile ../progs/fte-server.src
|
||||
fteqcc-cli-win.exe -O3 -srcfile ../progs/fte-server.src
|
||||
echo.
|
||||
echo ========================
|
||||
echo compiling STANDARD QC
|
||||
echo ========================
|
||||
echo.
|
||||
fteqcc-cli-win.exe -srcfile ../progs/standard.src
|
||||
fteqcc-cli-win.exe -O3 -srcfile ../progs/standard.src
|
||||
pause
|
||||
|
|
Loading…
Reference in a new issue