Weapon prediction experiments
This commit is contained in:
parent
13d8f50df9
commit
f8058ceeb0
46 changed files with 826 additions and 965 deletions
|
@ -75,7 +75,6 @@ cstrike/hudscope.c
|
|||
cstrike/hudweaponselect.c
|
||||
cstrike/hudorbituaries.c
|
||||
cstrike/hud.c
|
||||
corpse.c
|
||||
vgui.cpp
|
||||
cstrike/vgui_buymenu.cpp
|
||||
cstrike/vgui_chooseteam.cpp
|
||||
|
|
|
@ -39,7 +39,6 @@ void CSQC_Init(float apilevel, string enginename, float engineversion)
|
|||
registercommand("invprev");
|
||||
registercommand("+showscores");
|
||||
registercommand("-showscores");
|
||||
registercommand("wave");
|
||||
registercommand("buildcubemaps");
|
||||
|
||||
precache_model("sprites/640_pain.spr");
|
||||
|
@ -438,9 +437,6 @@ void CSQC_Parse_Event(void)
|
|||
float fHeader = readbyte();
|
||||
|
||||
switch (fHeader) {
|
||||
case EV_CORPSE:
|
||||
Corpse_Parse();
|
||||
break;
|
||||
case EV_SPEAK:
|
||||
string msg;
|
||||
float pit;
|
||||
|
@ -449,11 +445,6 @@ void CSQC_Parse_Event(void)
|
|||
pit = readfloat();
|
||||
sound(t, CHAN_VOICE, msg, 1.0, ATTN_NORM, pit);
|
||||
break;
|
||||
case EV_TAUNT:
|
||||
#ifdef VALVE
|
||||
Animation_Q2PlayerTaunt();
|
||||
#endif
|
||||
break;
|
||||
case EV_FADE:
|
||||
Fade_Parse();
|
||||
break;
|
||||
|
@ -561,12 +552,6 @@ float CSQC_ConsoleCommand(string sCMD)
|
|||
tokenize(sCMD);
|
||||
|
||||
switch (argv(0)) {
|
||||
case "wave":
|
||||
float numt = stof(argv(1));
|
||||
if (numt >= 0 && numt <= 4) {
|
||||
sendevent("Taunt", "f", numt);
|
||||
}
|
||||
break;
|
||||
case "+zoomin":
|
||||
pSeat->iZoomed = TRUE;
|
||||
break;
|
||||
|
|
|
@ -51,21 +51,6 @@ string sPModels[CS_WEAPON_COUNT - 1] = {
|
|||
void player::gun_offset(void)
|
||||
{
|
||||
vector v1, v2;
|
||||
#ifdef VALVE
|
||||
if (playertype == PLAYERTYPE_Q2) {
|
||||
p_model.scale = 1.4;
|
||||
if (flags & FL_CROUCHING) {
|
||||
setorigin(p_model, origin + [0,0, 16]);
|
||||
} else {
|
||||
setorigin(p_model, origin + [0,0, -2]);
|
||||
}
|
||||
p_model.angles = this.angles;
|
||||
p_model.frame = frame;
|
||||
p_model.frame2 = frame2;
|
||||
p_model.lerpfrac = lerpfrac;
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
/* Set it to something consistent */
|
||||
this.p_model.angles = this.angles;
|
||||
|
||||
|
@ -103,39 +88,7 @@ void player::draw(void)
|
|||
this.subblendfrac =
|
||||
this.subblend2frac = this.pitch / 90;
|
||||
|
||||
#warning "FIXME: This ifdef needs to go in the future"
|
||||
#ifdef VALVE
|
||||
if (playertype == PLAYERTYPE_HL) {
|
||||
/* Only bother updating the model if the weapon has changed */
|
||||
if (this.lastweapon != this.activeweapon) {
|
||||
if (this.activeweapon) {
|
||||
#ifdef CSTRIKE
|
||||
setmodel(this.p_model, sPModels[this.activeweapon - 1]);
|
||||
#else
|
||||
setmodel(this. p_model, Weapons_GetPlayermodel(this.activeweapon));
|
||||
#endif
|
||||
} else {
|
||||
setmodel(this.p_model, "");
|
||||
}
|
||||
this.lastweapon = this.activeweapon;
|
||||
|
||||
/* Update the bone index of the current p_ model so we can calculate the offset
|
||||
* and get the weapon bone ID for the current player model */
|
||||
this.p_hand_bone = gettagindex(this, "Bip01 R Hand");
|
||||
this.p_model_bone = gettagindex(this.p_model, "Bip01 R Hand");
|
||||
}
|
||||
Animation_PlayerUpdate();
|
||||
} else {
|
||||
if (!this.p_model.modelindex) {
|
||||
tokenizebyseparator(getplayerkeyvalue(entnum-1, "model"), "/");
|
||||
setmodel(this.p_model, sprintf("players/%s/weapon.md2", argv(0)));
|
||||
}
|
||||
Animation_Q2PlayerUpdate();
|
||||
return;
|
||||
}
|
||||
#else
|
||||
Animation_PlayerUpdate();
|
||||
#endif
|
||||
|
||||
/*makevectors([0, this.angles[1], 0]);
|
||||
float fDirection = dotproduct(this.velocity, v_forward);
|
||||
|
@ -225,18 +178,6 @@ float player::predraw(void)
|
|||
draw();
|
||||
gun_offset();
|
||||
|
||||
#ifdef VALVE
|
||||
/* Size of appearance and bounding box is different from game to game */
|
||||
if (playertype == PLAYERTYPE_Q2) {
|
||||
scale = 1.4;
|
||||
if (flags & FL_CROUCHING) {
|
||||
setorigin(this, this.origin + [0,0, 16]);
|
||||
} else {
|
||||
setorigin(this, this.origin + [0,0, -2]);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (autocvar_cl_thirdperson == TRUE || this.entnum != player_localentnum) {
|
||||
Voice_Draw3D(this);
|
||||
addentity(this);
|
||||
|
@ -250,56 +191,4 @@ float player::predraw(void)
|
|||
|
||||
void player::postdraw(void)
|
||||
{
|
||||
#ifdef VALVE
|
||||
/* Correct offsets */
|
||||
if (playertype == PLAYERTYPE_Q2) {
|
||||
if (flags & FL_CROUCHING) {
|
||||
setorigin(this, this.origin - [0,0, 16]);
|
||||
} else {
|
||||
setorigin(this, this.origin - [0,0, -2]);
|
||||
}
|
||||
scale = 1.0;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void player::set_model(string mpath)
|
||||
{
|
||||
#ifdef VALVE
|
||||
string modelout;
|
||||
string skinpath = "";
|
||||
string skinout = "";
|
||||
int i;
|
||||
|
||||
i = tokenizebyseparator(mpath, "/");
|
||||
if (i == 1) {
|
||||
playertype = PLAYERTYPE_HL;
|
||||
modelout = sprintf("models/player/%s/%s.mdl", argv(0), argv(0));
|
||||
} else {
|
||||
playertype = PLAYERTYPE_Q2;
|
||||
modelout = sprintf("players/%s/tris.md2", argv(0));
|
||||
skinout = sprintf("players/%s/%s.pcx", argv(0), argv(1));
|
||||
skinpath = sprintf("players/%s/%s.skin", argv(0), argv(1));
|
||||
|
||||
/* If the skin doesn't exist, make sure we fail */
|
||||
if (whichpack(skinout)) {
|
||||
} else {
|
||||
print( sprintf( "Skin %s does not exist.\n", skinout ) );
|
||||
skinpath = __NULL__;
|
||||
skinout = __NULL__;
|
||||
modelout = __NULL__;
|
||||
}
|
||||
}
|
||||
|
||||
if (modelout && whichpack(modelout)) {
|
||||
setmodel(this, modelout);
|
||||
if (playertype == PLAYERTYPE_Q2) {
|
||||
setcustomskin(this, skinpath, sprintf("replace \"\" \"%s\"", skinout));
|
||||
}
|
||||
} else {
|
||||
modelout = "models/player.mdl";
|
||||
setmodel(this, modelout);
|
||||
playertype = PLAYERTYPE_HL;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -29,6 +29,7 @@ void Predict_PreFrame(player pl)
|
|||
pl.net_ammo1 = pl.a_ammo1;
|
||||
pl.net_ammo2 = pl.a_ammo2;
|
||||
pl.net_ammo3 = pl.a_ammo3;
|
||||
pl.net_weapontime = pSeat->eViewModel.frame1time;
|
||||
#endif
|
||||
|
||||
//self.netpmove_flags = self.pmove_flags;
|
||||
|
@ -77,6 +78,8 @@ void Predict_PostFrame(player pl)
|
|||
pl.a_ammo1 = pl.net_ammo1;
|
||||
pl.a_ammo2 = pl.net_ammo2;
|
||||
pl.a_ammo3 = pl.net_ammo3;
|
||||
pSeat->eViewModel.frame1time = pl.net_weapontime;
|
||||
pSeat->eViewModel.frame2time = pl.net_weapontime;
|
||||
#endif
|
||||
|
||||
//self.pmove_flags = self.netpmove_flags;
|
||||
|
|
|
@ -69,7 +69,6 @@ valve/view.c
|
|||
view.c
|
||||
damage.c
|
||||
chat.c
|
||||
corpse.c
|
||||
vgui.cpp
|
||||
|
||||
rewolf/hud.c
|
||||
|
|
|
@ -70,7 +70,6 @@ valve/view.c
|
|||
view.c
|
||||
damage.c
|
||||
chat.c
|
||||
corpse.c
|
||||
vgui.cpp
|
||||
|
||||
valve/hud.c
|
||||
|
|
|
@ -66,7 +66,6 @@ valve/view.c
|
|||
view.c
|
||||
damage.c
|
||||
chat.c
|
||||
corpse.c
|
||||
vgui.cpp
|
||||
|
||||
valve/hud.c
|
||||
|
|
|
@ -16,10 +16,9 @@ void Player_ReadEntity(float flIsNew)
|
|||
pl.drawmask = MASK_ENGINE;
|
||||
pl.customphysics = Empty;
|
||||
setsize( pl, VEC_HULL_MIN, VEC_HULL_MAX );
|
||||
pl.set_model(getplayerkeyvalue(pl.entnum - 1, "model"));
|
||||
}
|
||||
|
||||
readshort();
|
||||
pl.modelindex = readshort();
|
||||
pl.origin[0] = readcoord();
|
||||
pl.origin[1] = readcoord();
|
||||
pl.origin[2] = readcoord();
|
||||
|
@ -31,6 +30,7 @@ void Player_ReadEntity(float flIsNew)
|
|||
pl.velocity[2] = readcoord();
|
||||
pl.flags = readfloat();
|
||||
pl.activeweapon = readbyte();
|
||||
pl.weapontime = readfloat();
|
||||
pl.g_items = readfloat();
|
||||
pl.health = readbyte();
|
||||
pl.armor = readbyte();
|
||||
|
@ -40,13 +40,8 @@ void Player_ReadEntity(float flIsNew)
|
|||
pl.jumptime = readfloat();
|
||||
pl.teleport_time = readfloat();
|
||||
|
||||
if (pl.playertype == 0) {
|
||||
pl.baseframe = readbyte();
|
||||
pl.frame = readbyte();
|
||||
} else {
|
||||
readbyte();
|
||||
readbyte();
|
||||
}
|
||||
pl.baseframe = readbyte();
|
||||
pl.frame = readbyte();
|
||||
|
||||
pl.a_ammo1 = readbyte();
|
||||
pl.a_ammo2 = readbyte();
|
||||
|
|
|
@ -191,9 +191,9 @@ void View_DrawViewModel(void)
|
|||
View_CalcBob();
|
||||
View_UpdateWeapon(eViewModel, eMuzzleflash);
|
||||
float fBaseTime = eViewModel.frame1time;
|
||||
eViewModel.frame1time += clframetime;
|
||||
eViewModel.frame2time += clframetime;
|
||||
processmodelevents(eViewModel.modelindex, eViewModel.frame, fBaseTime, eViewModel.frame1time, Event_ProcessModel);
|
||||
eViewModel.frame2time = pl.weapontime;
|
||||
eViewModel.frame1time = pl.weapontime;
|
||||
//processmodelevents(eViewModel.modelindex, eViewModel.frame, fBaseTime, eViewModel.frame1time, Event_ProcessModel);
|
||||
}
|
||||
|
||||
makevectors(view_angles);
|
||||
|
|
|
@ -26,8 +26,6 @@ enum {
|
|||
EV_CAMERATRIGGER,
|
||||
EV_ORBITUARY,
|
||||
EV_SPEAK,
|
||||
EV_TAUNT,
|
||||
EV_CORPSE,
|
||||
EV_CHAT,
|
||||
EV_CHAT_TEAM,
|
||||
EV_CHAT_VOX,
|
||||
|
|
36
Source/gs-entbase/server/monstermaker.cpp
Normal file
36
Source/gs-entbase/server/monstermaker.cpp
Normal file
|
@ -0,0 +1,36 @@
|
|||
/***
|
||||
*
|
||||
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
|
||||
*
|
||||
* See the file LICENSE attached with the sources for usage details.
|
||||
*
|
||||
****/
|
||||
|
||||
#ifdef VALVE
|
||||
void() w_snark_deploy;
|
||||
#endif
|
||||
|
||||
class monstermaker : CBaseTrigger
|
||||
{
|
||||
void() monstermaker;
|
||||
virtual void() Trigger;
|
||||
};
|
||||
|
||||
void monstermaker :: Trigger ( void )
|
||||
{
|
||||
#ifdef VALVE
|
||||
w_snark_deploy();
|
||||
#endif
|
||||
}
|
||||
|
||||
void monstermaker :: monstermaker ( void )
|
||||
{
|
||||
CBaseTrigger::CBaseTrigger();
|
||||
|
||||
for ( int i = 1; i < ( tokenize( __fullspawndata ) - 1 ); i += 2 ) {
|
||||
switch ( argv( i ) ) {
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -99,6 +99,7 @@ void QPhysics_Run ( entity eTarget )
|
|||
if ( ( self.flags & FL_ONGROUND ) && self.movetype == MOVETYPE_WALK && ( flFallVel > 580 )) {
|
||||
float fFallDamage = ( flFallVel - 580 ) * ( 100 / ( 1024 - 580 ) );
|
||||
Damage_Apply( self, world, fFallDamage, self.origin, FALSE );
|
||||
sound(self, CHAN_AUTO, "player/pl_fallpain3.wav", 1.0, ATTN_NORM);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -20,24 +20,3 @@ void Client_TriggerCamera(entity target, vector pos, vector end, float wait)
|
|||
msg_entity = target;
|
||||
multicast([0,0,0], MULTICAST_ONE);
|
||||
}
|
||||
|
||||
void CSEv_Taunt_f(float num)
|
||||
{
|
||||
WriteByte(MSG_MULTICAST, SVC_CGAMEPACKET);
|
||||
WriteByte(MSG_MULTICAST, EV_TAUNT);
|
||||
WriteEntity(MSG_MULTICAST, self);
|
||||
WriteByte(MSG_MULTICAST, num);
|
||||
msg_entity = self;
|
||||
multicast(self.origin, MULTICAST_PVS);
|
||||
|
||||
#ifdef SCIHUNT
|
||||
for (entity b = world; (b = find(b, ::classname, "monster_scientist"));) {
|
||||
if (vlen(b.origin - self.origin) < 256) {
|
||||
monster_scientist sci = (monster_scientist)b;
|
||||
sci.m_iFlags |= SCIF_FEAR | SCIF_SEEN;
|
||||
sci.m_eUser = world;
|
||||
sci.m_eRescuer = world;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
|
@ -1,89 +1,89 @@
|
|||
#pragma target fte
|
||||
#pragma progs_dat "../../cstrike/data.pk3dir/progs.dat"
|
||||
|
||||
#define QWSSQC
|
||||
#define CSTRIKE
|
||||
|
||||
#includelist
|
||||
../builtins.h
|
||||
../defs.h
|
||||
cstrike/defs.h
|
||||
../shared/cstrike/defs.h
|
||||
../math.h
|
||||
../materials.h
|
||||
../events.h
|
||||
../entities.h
|
||||
defs.h
|
||||
cstrike/defsfields.h
|
||||
#pragma target fte
|
||||
#pragma progs_dat "../../cstrike/data.pk3dir/progs.dat"
|
||||
|
||||
#define QWSSQC
|
||||
#define CSTRIKE
|
||||
|
||||
#includelist
|
||||
../builtins.h
|
||||
../defs.h
|
||||
cstrike/defs.h
|
||||
../shared/cstrike/defs.h
|
||||
../math.h
|
||||
../materials.h
|
||||
../events.h
|
||||
../entities.h
|
||||
defs.h
|
||||
cstrike/defsfields.h
|
||||
|
||||
plugins.c
|
||||
|
||||
../gs-entbase/server.src
|
||||
|
||||
cstrike/money.c
|
||||
../shared/cstrike/animations.c
|
||||
../shared/cstrike/radio.c
|
||||
../shared/cstrike/weaponak47.c
|
||||
../shared/cstrike/weaponaug.c
|
||||
../shared/cstrike/weaponawp.c
|
||||
../shared/cstrike/weaponc4bomb.c
|
||||
../shared/cstrike/weapondeagle.c
|
||||
../shared/cstrike/weaponelites.c
|
||||
../shared/cstrike/weaponfiveseven.c
|
||||
../shared/cstrike/weaponflashbang.c
|
||||
../shared/cstrike/weapong3sg1.c
|
||||
../shared/cstrike/weaponglock18.c
|
||||
../shared/cstrike/weaponhegrenade.c
|
||||
../shared/cstrike/weaponknife.c
|
||||
../shared/cstrike/weaponm3.c
|
||||
../shared/cstrike/weaponm4a1.c
|
||||
../shared/cstrike/weaponmac10.c
|
||||
../shared/cstrike/weaponmp5.c
|
||||
../shared/cstrike/weaponp228.c
|
||||
../shared/cstrike/weaponp90.c
|
||||
../shared/cstrike/weaponpara.c
|
||||
../shared/cstrike/weaponscout.c
|
||||
../shared/cstrike/weaponsg550.c
|
||||
../shared/cstrike/weaponsg552.c
|
||||
../shared/cstrike/weaponsmokegrenade.c
|
||||
../shared/cstrike/weapontmp.c
|
||||
../shared/cstrike/weaponump45.c
|
||||
../shared/cstrike/weaponusp45.c
|
||||
../shared/cstrike/weaponxm1014.c
|
||||
../shared/cstrike/basegun.c
|
||||
../shared/cstrike/basemelee.c
|
||||
../shared/cstrike/weapons.c
|
||||
../shared/cstrike/equipment.c
|
||||
../shared/decals.c
|
||||
../shared/effects.c
|
||||
../shared/spraylogo.cpp
|
||||
../shared/pmove.c
|
||||
|
||||
cstrike/armoury_entity.cpp
|
||||
cstrike/hostage_entity.cpp
|
||||
cstrike/func_hostage_rescue.cpp
|
||||
cstrike/info_hostage_rescue.cpp
|
||||
cstrike/func_vip_safetyzone.cpp
|
||||
cstrike/info_map_parameters.cpp
|
||||
|
||||
vox.c
|
||||
cstrike/ammo.c
|
||||
cstrike/damage.c
|
||||
traceattack.c
|
||||
cstrike/rules.c
|
||||
cstrike/timer.c
|
||||
|
||||
cstrike/func_bomb_target.cpp
|
||||
cstrike/func_buyzone.cpp
|
||||
cstrike/func_escapezone.cpp
|
||||
cstrike/main.c
|
||||
cstrike/player.c
|
||||
cstrike/spawn.c
|
||||
footsteps.c
|
||||
flashlight.c
|
||||
cstrike/input.c
|
||||
cstrike/client.c
|
||||
client.c
|
||||
|
||||
entry.c
|
||||
#endlist
|
||||
|
||||
../gs-entbase/server.src
|
||||
|
||||
cstrike/money.c
|
||||
../shared/cstrike/animations.c
|
||||
../shared/cstrike/radio.c
|
||||
../shared/cstrike/weaponak47.c
|
||||
../shared/cstrike/weaponaug.c
|
||||
../shared/cstrike/weaponawp.c
|
||||
../shared/cstrike/weaponc4bomb.c
|
||||
../shared/cstrike/weapondeagle.c
|
||||
../shared/cstrike/weaponelites.c
|
||||
../shared/cstrike/weaponfiveseven.c
|
||||
../shared/cstrike/weaponflashbang.c
|
||||
../shared/cstrike/weapong3sg1.c
|
||||
../shared/cstrike/weaponglock18.c
|
||||
../shared/cstrike/weaponhegrenade.c
|
||||
../shared/cstrike/weaponknife.c
|
||||
../shared/cstrike/weaponm3.c
|
||||
../shared/cstrike/weaponm4a1.c
|
||||
../shared/cstrike/weaponmac10.c
|
||||
../shared/cstrike/weaponmp5.c
|
||||
../shared/cstrike/weaponp228.c
|
||||
../shared/cstrike/weaponp90.c
|
||||
../shared/cstrike/weaponpara.c
|
||||
../shared/cstrike/weaponscout.c
|
||||
../shared/cstrike/weaponsg550.c
|
||||
../shared/cstrike/weaponsg552.c
|
||||
../shared/cstrike/weaponsmokegrenade.c
|
||||
../shared/cstrike/weapontmp.c
|
||||
../shared/cstrike/weaponump45.c
|
||||
../shared/cstrike/weaponusp45.c
|
||||
../shared/cstrike/weaponxm1014.c
|
||||
../shared/cstrike/basegun.c
|
||||
../shared/cstrike/basemelee.c
|
||||
../shared/cstrike/weapons.c
|
||||
../shared/cstrike/equipment.c
|
||||
../shared/decals.c
|
||||
../shared/effects.c
|
||||
../shared/spraylogo.cpp
|
||||
../shared/pmove.c
|
||||
|
||||
cstrike/armoury_entity.cpp
|
||||
cstrike/hostage_entity.cpp
|
||||
cstrike/func_hostage_rescue.cpp
|
||||
cstrike/info_hostage_rescue.cpp
|
||||
cstrike/func_vip_safetyzone.cpp
|
||||
cstrike/info_map_parameters.cpp
|
||||
|
||||
vox.c
|
||||
cstrike/ammo.c
|
||||
cstrike/damage.c
|
||||
traceattack.c
|
||||
cstrike/rules.c
|
||||
cstrike/timer.c
|
||||
|
||||
cstrike/func_bomb_target.cpp
|
||||
cstrike/func_buyzone.cpp
|
||||
cstrike/func_escapezone.cpp
|
||||
cstrike/main.c
|
||||
cstrike/player.c
|
||||
cstrike/spawn.c
|
||||
footsteps.c
|
||||
flashlight.c
|
||||
cstrike/input.c
|
||||
cstrike/client.c
|
||||
client.c
|
||||
|
||||
entry.c
|
||||
#endlist
|
||||
|
|
|
@ -171,7 +171,7 @@ void initents(void)
|
|||
precache_sound("player/pl_step2.wav");
|
||||
precache_sound("player/pl_step3.wav");
|
||||
precache_sound("player/pl_step4.wav");
|
||||
|
||||
precache_sound("player/pl_fallpain3.wav");
|
||||
precache_sound("items/9mmclip1.wav");
|
||||
precache_sound("items/gunpickup2.wav");
|
||||
precache_sound("common/wpn_select.wav");
|
||||
|
|
|
@ -1,82 +1,85 @@
|
|||
#pragma target fte
|
||||
#pragma progs_dat "../../rewolf/data.pk3dir/progs.dat"
|
||||
|
||||
#define QWSSQC
|
||||
#define VALVE
|
||||
|
||||
#includelist
|
||||
../builtins.h
|
||||
../defs.h
|
||||
valve/defs.h
|
||||
../math.h
|
||||
../materials.h
|
||||
../events.h
|
||||
../entities.h
|
||||
#pragma target fte
|
||||
#pragma progs_dat "../../rewolf/data.pk3dir/progs.dat"
|
||||
|
||||
#define QWSSQC
|
||||
#define VALVE
|
||||
|
||||
#includelist
|
||||
../builtins.h
|
||||
../defs.h
|
||||
valve/defs.h
|
||||
../math.h
|
||||
../materials.h
|
||||
../events.h
|
||||
../entities.h
|
||||
../shared/valve/animations.h
|
||||
defs.h
|
||||
defs.h
|
||||
|
||||
plugins.c
|
||||
|
||||
../gs-entbase/server.src
|
||||
valve/monster_rat.cpp
|
||||
valve/monster_scientist_dead.cpp
|
||||
rewolf/gunman_cycler.cpp
|
||||
rewolf/monster_human_bandit.cpp
|
||||
rewolf/monster_human_chopper.cpp
|
||||
rewolf/monster_human_demoman.cpp
|
||||
rewolf/monster_human_gunman.cpp
|
||||
rewolf/monster_human_unarmed.cpp
|
||||
|
||||
../shared/decals.c
|
||||
../shared/effects.c
|
||||
../shared/spraylogo.cpp
|
||||
|
||||
../shared/valve/player.cpp
|
||||
valve/player.c
|
||||
../shared/pmove.c
|
||||
valve/spectator.c
|
||||
../shared/valve/items.h
|
||||
../shared/valve/crosshair.h
|
||||
../shared/valve/weapons.h
|
||||
../shared/valve/w_crowbar.c
|
||||
../shared/valve/w_glock.c
|
||||
../shared/valve/w_python.c
|
||||
../shared/valve/w_mp5.c
|
||||
../shared/valve/w_crossbow.c
|
||||
../shared/valve/w_shotgun.c
|
||||
../shared/valve/w_rpg.c
|
||||
../shared/valve/w_gauss.c
|
||||
../shared/valve/w_egon.c
|
||||
../shared/valve/w_hornetgun.c
|
||||
../shared/valve/w_handgrenade.c
|
||||
../shared/valve/w_tripmine.c
|
||||
../shared/valve/w_satchel.c
|
||||
../shared/valve/w_snark.c
|
||||
valve/items.cpp
|
||||
valve/item_longjump.cpp
|
||||
valve/item_suit.cpp
|
||||
valve/item_healthkit.cpp
|
||||
valve/ammo.cpp
|
||||
../shared/valve/weapons.c
|
||||
../shared/valve/weapon_common.c
|
||||
|
||||
spawn.c
|
||||
vox.c
|
||||
|
||||
../shared/valve/animations.c
|
||||
valve/client.c
|
||||
client.c
|
||||
|
||||
valve/server.c
|
||||
server.c
|
||||
|
||||
valve/damage.c
|
||||
traceattack.c
|
||||
|
||||
footsteps.c
|
||||
flashlight.c
|
||||
valve/input.c
|
||||
|
||||
valve/spawn.c
|
||||
entry.c
|
||||
#endlist
|
||||
|
||||
../gs-entbase/server.src
|
||||
valve/monster_rat.cpp
|
||||
valve/monster_scientist_dead.cpp
|
||||
rewolf/gunman_cycler.cpp
|
||||
rewolf/monster_human_bandit.cpp
|
||||
rewolf/monster_human_chopper.cpp
|
||||
rewolf/monster_human_demoman.cpp
|
||||
rewolf/monster_human_gunman.cpp
|
||||
rewolf/monster_human_unarmed.cpp
|
||||
|
||||
../shared/decals.c
|
||||
../shared/effects.c
|
||||
../shared/spraylogo.cpp
|
||||
|
||||
../shared/valve/player.cpp
|
||||
valve/player.c
|
||||
../shared/pmove.c
|
||||
valve/spectator.c
|
||||
../shared/valve/items.h
|
||||
../shared/valve/crosshair.h
|
||||
../shared/valve/weapons.h
|
||||
../shared/valve/w_crowbar.c
|
||||
../shared/valve/w_glock.c
|
||||
../shared/valve/w_python.c
|
||||
../shared/valve/w_mp5.c
|
||||
../shared/valve/w_crossbow.c
|
||||
../shared/valve/w_shotgun.c
|
||||
../shared/valve/w_rpg.c
|
||||
../shared/valve/w_gauss.c
|
||||
../shared/valve/w_egon.c
|
||||
../shared/valve/w_hornetgun.c
|
||||
../shared/valve/w_handgrenade.c
|
||||
../shared/valve/w_tripmine.c
|
||||
../shared/valve/w_satchel.c
|
||||
../shared/valve/w_snark.c
|
||||
valve/items.cpp
|
||||
valve/item_longjump.cpp
|
||||
valve/item_suit.cpp
|
||||
valve/item_healthkit.cpp
|
||||
valve/item_battery.cpp
|
||||
valve/item_weaponbox.cpp
|
||||
valve/world_items.cpp
|
||||
valve/ammo.cpp
|
||||
../shared/valve/weapons.c
|
||||
../shared/valve/weapon_common.c
|
||||
|
||||
spawn.c
|
||||
vox.c
|
||||
|
||||
../shared/valve/animations.c
|
||||
valve/client.c
|
||||
client.c
|
||||
|
||||
valve/server.c
|
||||
server.c
|
||||
|
||||
valve/damage.c
|
||||
traceattack.c
|
||||
|
||||
footsteps.c
|
||||
flashlight.c
|
||||
valve/input.c
|
||||
|
||||
valve/spawn.c
|
||||
entry.c
|
||||
#endlist
|
||||
|
|
|
@ -1,82 +1,85 @@
|
|||
#pragma target fte
|
||||
#pragma progs_dat "../../scihunt/data.pk3dir/progs.dat"
|
||||
|
||||
#define QWSSQC
|
||||
#define VALVE
|
||||
#pragma target fte
|
||||
#pragma progs_dat "../../scihunt/data.pk3dir/progs.dat"
|
||||
|
||||
#define QWSSQC
|
||||
#define VALVE
|
||||
#define SCIHUNT
|
||||
|
||||
#includelist
|
||||
../builtins.h
|
||||
../defs.h
|
||||
valve/defs.h
|
||||
../math.h
|
||||
../materials.h
|
||||
../events.h
|
||||
../entities.h
|
||||
|
||||
#includelist
|
||||
../builtins.h
|
||||
../defs.h
|
||||
valve/defs.h
|
||||
../math.h
|
||||
../materials.h
|
||||
../events.h
|
||||
../entities.h
|
||||
../shared/valve/animations.h
|
||||
defs.h
|
||||
defs.h
|
||||
|
||||
plugins.c
|
||||
|
||||
../gs-entbase/server.src
|
||||
valve/monster_rat.cpp
|
||||
scihunt/monster_scientist.cpp
|
||||
valve/monster_scientist_dead.cpp
|
||||
|
||||
../shared/decals.c
|
||||
../shared/effects.c
|
||||
../shared/spraylogo.cpp
|
||||
|
||||
../shared/scihunt/player.cpp
|
||||
valve/player.c
|
||||
../shared/pmove.c
|
||||
valve/spectator.c
|
||||
../shared/scihunt/items.h
|
||||
../shared/valve/crosshair.h
|
||||
../shared/scihunt/weapons.h
|
||||
../shared/valve/w_crowbar.c
|
||||
../shared/valve/w_glock.c
|
||||
../shared/valve/w_python.c
|
||||
../shared/valve/w_mp5.c
|
||||
../shared/valve/w_crossbow.c
|
||||
../shared/valve/w_shotgun.c
|
||||
../shared/valve/w_rpg.c
|
||||
../shared/valve/w_gauss.c
|
||||
../shared/valve/w_egon.c
|
||||
../shared/valve/w_hornetgun.c
|
||||
../shared/valve/w_handgrenade.c
|
||||
../shared/valve/w_tripmine.c
|
||||
../shared/valve/w_satchel.c
|
||||
../shared/valve/w_snark.c
|
||||
../shared/scihunt/w_cannon.c
|
||||
../shared/scihunt/w_chainsaw.c
|
||||
../shared/scihunt/w_hammer.c
|
||||
valve/items.cpp
|
||||
valve/ammo.cpp
|
||||
valve/item_longjump.cpp
|
||||
valve/item_suit.cpp
|
||||
valve/item_healthkit.cpp
|
||||
../shared/scihunt/weapons.c
|
||||
../shared/valve/weapon_common.c
|
||||
|
||||
scihunt/shdata_parse.c
|
||||
spawn.c
|
||||
vox.c
|
||||
|
||||
../shared/valve/animations.c
|
||||
scihunt/client.c
|
||||
client.c
|
||||
|
||||
scihunt/server.c
|
||||
server.c
|
||||
|
||||
valve/damage.c
|
||||
traceattack.c
|
||||
|
||||
footsteps.c
|
||||
flashlight.c
|
||||
scihunt/input.c
|
||||
|
||||
valve/spawn.c
|
||||
entry.c
|
||||
#endlist
|
||||
|
||||
../gs-entbase/server.src
|
||||
valve/monster_rat.cpp
|
||||
scihunt/monster_scientist.cpp
|
||||
valve/monster_scientist_dead.cpp
|
||||
|
||||
../shared/decals.c
|
||||
../shared/effects.c
|
||||
../shared/spraylogo.cpp
|
||||
|
||||
../shared/scihunt/player.cpp
|
||||
valve/player.c
|
||||
../shared/pmove.c
|
||||
valve/spectator.c
|
||||
../shared/scihunt/items.h
|
||||
../shared/valve/crosshair.h
|
||||
../shared/scihunt/weapons.h
|
||||
../shared/valve/w_crowbar.c
|
||||
../shared/valve/w_glock.c
|
||||
../shared/valve/w_python.c
|
||||
../shared/valve/w_mp5.c
|
||||
../shared/valve/w_crossbow.c
|
||||
../shared/valve/w_shotgun.c
|
||||
../shared/valve/w_rpg.c
|
||||
../shared/valve/w_gauss.c
|
||||
../shared/valve/w_egon.c
|
||||
../shared/valve/w_hornetgun.c
|
||||
../shared/valve/w_handgrenade.c
|
||||
../shared/valve/w_tripmine.c
|
||||
../shared/valve/w_satchel.c
|
||||
../shared/valve/w_snark.c
|
||||
../shared/scihunt/w_cannon.c
|
||||
../shared/scihunt/w_chainsaw.c
|
||||
../shared/scihunt/w_hammer.c
|
||||
valve/items.cpp
|
||||
valve/item_longjump.cpp
|
||||
valve/item_suit.cpp
|
||||
valve/item_healthkit.cpp
|
||||
valve/item_battery.cpp
|
||||
valve/item_weaponbox.cpp
|
||||
valve/world_items.cpp
|
||||
valve/ammo.cpp
|
||||
../shared/scihunt/weapons.c
|
||||
../shared/valve/weapon_common.c
|
||||
|
||||
scihunt/shdata_parse.c
|
||||
spawn.c
|
||||
vox.c
|
||||
|
||||
../shared/valve/animations.c
|
||||
scihunt/client.c
|
||||
client.c
|
||||
|
||||
scihunt/server.c
|
||||
server.c
|
||||
|
||||
valve/damage.c
|
||||
traceattack.c
|
||||
|
||||
footsteps.c
|
||||
flashlight.c
|
||||
scihunt/input.c
|
||||
|
||||
valve/spawn.c
|
||||
entry.c
|
||||
#endlist
|
||||
|
|
|
@ -93,7 +93,17 @@ void Game_PutClientInServer(void)
|
|||
pl.movetype = MOVETYPE_WALK;
|
||||
pl.flags = FL_CLIENT;
|
||||
pl.viewzoom = 1.0;
|
||||
setmodel(pl, "models/player.mdl");
|
||||
pl.model = "models/player.mdl";
|
||||
|
||||
string mymodel = infokey(pl, "model");
|
||||
if (mymodel) {
|
||||
mymodel = sprintf("models/player/%s/%s.mdl", mymodel, mymodel);
|
||||
if (whichpack(mymodel)) {
|
||||
pl.model = mymodel;
|
||||
}
|
||||
}
|
||||
setmodel(pl, pl.model);
|
||||
|
||||
setsize(pl, VEC_HULL_MIN, VEC_HULL_MAX);
|
||||
pl.view_ofs = VEC_PLAYER_VIEWPOS;
|
||||
pl.velocity = [0,0,0];
|
||||
|
|
|
@ -439,7 +439,6 @@ void monster_scientist::Physics(void)
|
|||
|
||||
input_angles = angles = v_angle;
|
||||
input_timelength = frametime;
|
||||
movetype = MOVETYPE_WALK;
|
||||
|
||||
if (m_flPainTime > time) {
|
||||
input_movevalues = [0,0,0];
|
||||
|
@ -466,8 +465,6 @@ void monster_scientist::Physics(void)
|
|||
} else {
|
||||
m_iFlags -= (flags & SCIF_FALLING);
|
||||
}
|
||||
|
||||
movetype = MOVETYPE_NONE;
|
||||
}
|
||||
|
||||
void monster_scientist::touch(void)
|
||||
|
@ -545,6 +542,7 @@ void monster_scientist::vDeath(int iHitBody)
|
|||
return;
|
||||
}
|
||||
|
||||
movetype = MOVETYPE_NONE;
|
||||
solid = SOLID_CORPSE;
|
||||
//takedamage = DAMAGE_NO;
|
||||
|
||||
|
@ -572,7 +570,7 @@ void monster_scientist::Respawn(void)
|
|||
setorigin(this, m_oldOrigin);
|
||||
angles = v_angle;
|
||||
solid = SOLID_SLIDEBOX;
|
||||
movetype = MOVETYPE_NONE;
|
||||
movetype = MOVETYPE_WALK;
|
||||
setmodel(this, m_oldModel);
|
||||
setsize(this, VEC_HULL_MIN + [0,0,36], VEC_HULL_MAX + [0,0,36]);
|
||||
m_eUser = world;
|
||||
|
|
|
@ -1,79 +1,80 @@
|
|||
#pragma target fte
|
||||
#pragma progs_dat "../../valve/data.pk3dir/progs.dat"
|
||||
|
||||
#define QWSSQC
|
||||
#define VALVE
|
||||
|
||||
#includelist
|
||||
../builtins.h
|
||||
../defs.h
|
||||
valve/defs.h
|
||||
../math.h
|
||||
../materials.h
|
||||
../events.h
|
||||
../entities.h
|
||||
#pragma target fte
|
||||
#pragma progs_dat "../../valve/data.pk3dir/progs.dat"
|
||||
|
||||
#define QWSSQC
|
||||
#define VALVE
|
||||
|
||||
#includelist
|
||||
../builtins.h
|
||||
../defs.h
|
||||
valve/defs.h
|
||||
../math.h
|
||||
../materials.h
|
||||
../events.h
|
||||
../entities.h
|
||||
../shared/valve/animations.h
|
||||
defs.h
|
||||
defs.h
|
||||
|
||||
plugins.c
|
||||
|
||||
../gs-entbase/server.src
|
||||
valve/monster_rat.cpp
|
||||
valve/monster_scientist.cpp
|
||||
valve/monster_scientist_dead.cpp
|
||||
|
||||
../shared/decals.c
|
||||
../shared/effects.c
|
||||
../shared/spraylogo.cpp
|
||||
|
||||
../shared/valve/player.cpp
|
||||
valve/player.c
|
||||
../shared/pmove.c
|
||||
valve/spectator.c
|
||||
../shared/valve/items.h
|
||||
../shared/valve/crosshair.h
|
||||
../shared/valve/weapons.h
|
||||
../shared/valve/w_crowbar.c
|
||||
../shared/valve/w_glock.c
|
||||
../shared/valve/w_python.c
|
||||
../shared/valve/w_mp5.c
|
||||
../shared/valve/w_crossbow.c
|
||||
../shared/valve/w_shotgun.c
|
||||
../shared/valve/w_rpg.c
|
||||
../shared/valve/w_gauss.c
|
||||
../shared/valve/w_egon.c
|
||||
../shared/valve/w_hornetgun.c
|
||||
../shared/valve/w_handgrenade.c
|
||||
../shared/valve/w_tripmine.c
|
||||
../shared/valve/w_satchel.c
|
||||
../shared/valve/w_snark.c
|
||||
valve/items.cpp
|
||||
valve/item_longjump.cpp
|
||||
valve/item_suit.cpp
|
||||
valve/item_healthkit.cpp
|
||||
valve/item_battery.cpp
|
||||
valve/world_items.cpp
|
||||
valve/ammo.cpp
|
||||
../shared/valve/weapons.c
|
||||
../shared/valve/weapon_common.c
|
||||
|
||||
spawn.c
|
||||
vox.c
|
||||
|
||||
../shared/valve/animations.c
|
||||
valve/client.c
|
||||
client.c
|
||||
|
||||
valve/server.c
|
||||
server.c
|
||||
|
||||
valve/damage.c
|
||||
traceattack.c
|
||||
|
||||
footsteps.c
|
||||
flashlight.c
|
||||
valve/input.c
|
||||
|
||||
valve/spawn.c
|
||||
entry.c
|
||||
#endlist
|
||||
|
||||
../gs-entbase/server.src
|
||||
valve/monster_rat.cpp
|
||||
valve/monster_scientist.cpp
|
||||
valve/monster_scientist_dead.cpp
|
||||
|
||||
../shared/decals.c
|
||||
../shared/effects.c
|
||||
../shared/spraylogo.cpp
|
||||
|
||||
../shared/valve/player.cpp
|
||||
valve/player.c
|
||||
../shared/pmove.c
|
||||
valve/spectator.c
|
||||
../shared/valve/items.h
|
||||
../shared/valve/crosshair.h
|
||||
../shared/valve/weapons.h
|
||||
../shared/valve/w_crowbar.c
|
||||
../shared/valve/w_glock.c
|
||||
../shared/valve/w_python.c
|
||||
../shared/valve/w_mp5.c
|
||||
../shared/valve/w_crossbow.c
|
||||
../shared/valve/w_shotgun.c
|
||||
../shared/valve/w_rpg.c
|
||||
../shared/valve/w_gauss.c
|
||||
../shared/valve/w_egon.c
|
||||
../shared/valve/w_hornetgun.c
|
||||
../shared/valve/w_handgrenade.c
|
||||
../shared/valve/w_tripmine.c
|
||||
../shared/valve/w_satchel.c
|
||||
../shared/valve/w_snark.c
|
||||
valve/items.cpp
|
||||
valve/item_longjump.cpp
|
||||
valve/item_suit.cpp
|
||||
valve/item_healthkit.cpp
|
||||
valve/item_battery.cpp
|
||||
valve/item_weaponbox.cpp
|
||||
valve/world_items.cpp
|
||||
valve/ammo.cpp
|
||||
../shared/valve/weapons.c
|
||||
../shared/valve/weapon_common.c
|
||||
|
||||
spawn.c
|
||||
vox.c
|
||||
|
||||
../shared/valve/animations.c
|
||||
valve/client.c
|
||||
client.c
|
||||
|
||||
valve/server.c
|
||||
server.c
|
||||
|
||||
valve/damage.c
|
||||
traceattack.c
|
||||
|
||||
footsteps.c
|
||||
flashlight.c
|
||||
valve/input.c
|
||||
|
||||
valve/spawn.c
|
||||
entry.c
|
||||
#endlist
|
||||
|
|
|
@ -170,8 +170,11 @@ void Damage_Radius(vector org, entity eAttacker, float fDamage, float fRadius, i
|
|||
|
||||
if (fDiff > 0) {
|
||||
Damage_Apply(c, eAttacker, fDamage, vecRealPos, 0);
|
||||
if (c.movetype == MOVETYPE_WALK) {
|
||||
makevectors(vectoangles(c.origin - org));
|
||||
c.velocity += v_forward * (fDamage * 5);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
76
Source/server/valve/item_weaponbox.cpp
Normal file
76
Source/server/valve/item_weaponbox.cpp
Normal file
|
@ -0,0 +1,76 @@
|
|||
class item_weaponbox
|
||||
{
|
||||
int ammo_9mm;
|
||||
int ammo_357;
|
||||
int ammo_buckshot;
|
||||
int ammo_m203_grenade;
|
||||
int ammo_bolt;
|
||||
int ammo_rocket;
|
||||
int ammo_uranium;
|
||||
int ammo_handgrenade;
|
||||
int ammo_satchel;
|
||||
int ammo_tripmine;
|
||||
int ammo_snark;
|
||||
int ammo_hornet;
|
||||
int weapon_items;
|
||||
|
||||
void(void) item_weaponbox;
|
||||
virtual void() touch;
|
||||
virtual void(player) setup;
|
||||
};
|
||||
|
||||
void item_weaponbox::touch(void)
|
||||
{
|
||||
if (other.classname != "player") {
|
||||
return;
|
||||
}
|
||||
|
||||
player pl = (player)other;
|
||||
pl.ammo_9mm += ammo_9mm;
|
||||
pl.ammo_357 += ammo_357;
|
||||
pl.ammo_buckshot += ammo_buckshot;
|
||||
pl.ammo_m203_grenade += ammo_m203_grenade;
|
||||
pl.ammo_bolt += ammo_bolt;
|
||||
pl.ammo_rocket += ammo_rocket;
|
||||
pl.ammo_uranium += ammo_uranium;
|
||||
pl.ammo_handgrenade += ammo_handgrenade;
|
||||
pl.ammo_satchel += ammo_satchel;
|
||||
pl.ammo_tripmine += ammo_tripmine;
|
||||
pl.ammo_snark += ammo_snark;
|
||||
pl.ammo_hornet += ammo_hornet;
|
||||
pl.g_items |= weapon_items;
|
||||
remove(this);
|
||||
}
|
||||
|
||||
void item_weaponbox::setup(player pl)
|
||||
{
|
||||
/* TODO: Should the magazine bits be transferred too? */
|
||||
ammo_9mm = pl.ammo_9mm;
|
||||
ammo_357 = pl.ammo_357;
|
||||
ammo_buckshot = pl.ammo_buckshot;
|
||||
ammo_m203_grenade = pl.ammo_m203_grenade;
|
||||
ammo_bolt = pl.ammo_bolt;
|
||||
ammo_rocket = pl.ammo_rocket;
|
||||
ammo_uranium = pl.ammo_uranium;
|
||||
ammo_handgrenade = pl.ammo_handgrenade;
|
||||
ammo_satchel = pl.ammo_satchel;
|
||||
ammo_tripmine = pl.ammo_tripmine;
|
||||
ammo_snark = pl.ammo_snark;
|
||||
ammo_hornet = pl.ammo_hornet;
|
||||
weapon_items = pl.g_items;
|
||||
}
|
||||
|
||||
void item_weaponbox::item_weaponbox(void)
|
||||
{
|
||||
setmodel(this, "models/w_weaponbox.mdl");
|
||||
setsize(this, [-16,-16,0], [16,16,16]);
|
||||
solid = SOLID_TRIGGER;
|
||||
movetype = MOVETYPE_TOSS;
|
||||
}
|
||||
|
||||
void weaponbox_spawn(player spawner)
|
||||
{
|
||||
item_weaponbox weaponbox = spawn(item_weaponbox);
|
||||
setorigin(weaponbox, spawner.origin);
|
||||
weaponbox.setup(spawner);
|
||||
}
|
|
@ -11,9 +11,11 @@ void Player_Pain(int hit)
|
|||
|
||||
}
|
||||
|
||||
void weaponbox_spawn(player);
|
||||
void Player_Death(int hit)
|
||||
{
|
||||
player pl = (player)self;
|
||||
weaponbox_spawn(pl);
|
||||
pl.movetype = MOVETYPE_NONE;
|
||||
pl.solid = SOLID_NOT;
|
||||
pl.takedamage = DAMAGE_NO;
|
||||
|
@ -24,17 +26,16 @@ void Player_Death(int hit)
|
|||
sound(pl, CHAN_AUTO, "fvox/flatline.wav", 1.0, ATTN_NORM);
|
||||
|
||||
/* Let's handle corpses on the clientside */
|
||||
WriteByte(MSG_MULTICAST, SVC_CGAMEPACKET);
|
||||
WriteByte(MSG_MULTICAST, EV_CORPSE);
|
||||
WriteByte(MSG_MULTICAST, num_for_edict(pl) - 1);
|
||||
WriteCoord(MSG_MULTICAST, pl.origin[0]);
|
||||
WriteCoord(MSG_MULTICAST, pl.origin[1]);
|
||||
WriteCoord(MSG_MULTICAST, pl.origin[2]);
|
||||
WriteCoord(MSG_MULTICAST, pl.angles[0]);
|
||||
WriteCoord(MSG_MULTICAST, pl.angles[1]);
|
||||
WriteCoord(MSG_MULTICAST, pl.angles[2]);
|
||||
msg_entity = pl;
|
||||
multicast(pl.origin, MULTICAST_PVS);
|
||||
entity corpse = spawn();
|
||||
setorigin(corpse, pl.origin + [0,0,32]);
|
||||
setmodel(corpse, pl.model);
|
||||
setsize(corpse, VEC_HULL_MIN, VEC_HULL_MAX);
|
||||
corpse.movetype = MOVETYPE_TOSS;
|
||||
corpse.solid = SOLID_TRIGGER;
|
||||
corpse.modelindex = pl.modelindex;
|
||||
corpse.frame = ANIM_DIESIMPLE;
|
||||
corpse.angles = pl.angles;
|
||||
corpse.velocity = pl.velocity;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -121,6 +122,7 @@ float Player_SendEntity(entity ePEnt, float fChanged)
|
|||
WriteCoord(MSG_ENTITY, pl.velocity[2]);
|
||||
WriteFloat(MSG_ENTITY, pl.flags);
|
||||
WriteByte(MSG_ENTITY, pl.activeweapon);
|
||||
WriteFloat(MSG_ENTITY, pl.weapontime);
|
||||
WriteFloat(MSG_ENTITY, pl.g_items);
|
||||
WriteByte(MSG_ENTITY, pl.health);
|
||||
WriteByte(MSG_ENTITY, pl.armor);
|
||||
|
|
|
@ -720,9 +720,10 @@ void PMove_Run(void)
|
|||
|
||||
#ifdef VALVE
|
||||
player pl = (player)self;
|
||||
|
||||
pl.w_attack_next -= input_timelength;
|
||||
pl.w_idle_next -= input_timelength;
|
||||
|
||||
pl.weapontime += input_timelength;
|
||||
if (pl.w_attack_next <= 0) {
|
||||
pl.w_attack_next = 0;
|
||||
}
|
||||
|
|
|
@ -23,6 +23,7 @@ class player
|
|||
float activeweapon;
|
||||
float viewzoom;
|
||||
vector view_ofs;
|
||||
float weapontime;
|
||||
|
||||
/* Weapon specific */
|
||||
int glock_mag;
|
||||
|
@ -49,12 +50,12 @@ class player
|
|||
float netflags;
|
||||
float net_w_attack_next;
|
||||
float net_w_idle_next;
|
||||
float net_weapontime;
|
||||
float netjumptime;
|
||||
float netteleport_time;
|
||||
int net_ammo1;
|
||||
int net_ammo2;
|
||||
int net_ammo3;
|
||||
virtual void(string) set_model;
|
||||
virtual void() gun_offset;
|
||||
virtual void() draw;
|
||||
virtual float() predraw;
|
||||
|
|
|
@ -54,8 +54,6 @@ void w_cannon_reload(void)
|
|||
if (!pl.a_ammo2) {
|
||||
return;
|
||||
}
|
||||
|
||||
Weapons_ViewAnimation(CANNON_RELOAD);
|
||||
#else
|
||||
if (pl.cannon_mag >= 2) {
|
||||
return;
|
||||
|
@ -66,8 +64,8 @@ void w_cannon_reload(void)
|
|||
|
||||
Weapons_ReloadWeapon(pl, player::cannon_mag, player::ammo_buckshot, 2);
|
||||
Weapons_UpdateAmmo(pl, pl.cannon_mag, pl.ammo_buckshot, __NULL__);
|
||||
|
||||
#endif
|
||||
Weapons_ViewAnimation(CANNON_RELOAD);
|
||||
|
||||
pl.w_attack_next = 3.0f;
|
||||
pl.w_idle_next = 3.0f;
|
||||
|
@ -85,16 +83,14 @@ void w_cannon_draw(void)
|
|||
{
|
||||
#ifdef SSQC
|
||||
player pl = (player)self;
|
||||
Weapons_ViewAnimation(CANNON_DEPLOY);
|
||||
Weapons_UpdateAmmo(pl, pl.cannon_mag, pl.ammo_buckshot, __NULL__);
|
||||
#endif
|
||||
Weapons_ViewAnimation(CANNON_DEPLOY);
|
||||
}
|
||||
|
||||
void w_cannon_holster(void)
|
||||
{
|
||||
#ifdef SSQC
|
||||
Weapons_ViewAnimation(CANNON_PUTAWAY);
|
||||
#endif
|
||||
}
|
||||
void w_cannon_primary(void)
|
||||
{
|
||||
|
@ -110,7 +106,6 @@ void w_cannon_primary(void)
|
|||
return;
|
||||
}
|
||||
|
||||
Weapons_ViewAnimation(CANNON_FIREBOTH);
|
||||
Weapons_ViewPunchAngle([-5,0,0]);
|
||||
#else
|
||||
if (pl.cannon_mag != 2) {
|
||||
|
@ -123,7 +118,7 @@ void w_cannon_primary(void)
|
|||
Weapons_PlaySound(pl, CHAN_WEAPON, "cannon/fire.wav", 1, ATTN_NORM);
|
||||
Weapons_UpdateAmmo(pl, pl.cannon_mag, pl.ammo_buckshot, __NULL__);
|
||||
#endif
|
||||
|
||||
Weapons_ViewAnimation(CANNON_FIREBOTH);
|
||||
pl.w_attack_next = 1.5f;
|
||||
pl.w_idle_next = 2.5f;
|
||||
}
|
||||
|
@ -141,12 +136,6 @@ void w_cannon_secondary(void)
|
|||
return;
|
||||
}
|
||||
|
||||
if (pl.a_ammo1 == 2) {
|
||||
Weapons_ViewAnimation(CANNON_FIRELEFT);
|
||||
} else {
|
||||
Weapons_ViewAnimation(CANNON_FIRERIGHT);
|
||||
}
|
||||
|
||||
Weapons_ViewPunchAngle([-5,0,0]);
|
||||
#else
|
||||
if (!pl.cannon_mag) {
|
||||
|
@ -160,6 +149,12 @@ void w_cannon_secondary(void)
|
|||
Weapons_UpdateAmmo(pl, pl.cannon_mag, pl.ammo_buckshot, __NULL__);
|
||||
#endif
|
||||
|
||||
if (pl.a_ammo1 == 2) {
|
||||
Weapons_ViewAnimation(CANNON_FIRELEFT);
|
||||
} else {
|
||||
Weapons_ViewAnimation(CANNON_FIRERIGHT);
|
||||
}
|
||||
|
||||
pl.w_attack_next = 1.5f;
|
||||
pl.w_idle_next = 2.5f;
|
||||
}
|
||||
|
|
|
@ -44,19 +44,16 @@ string w_chainsaw_deathmsg(void)
|
|||
|
||||
void w_chainsaw_draw(void)
|
||||
{
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(CHAINSAW_DEPLOY);
|
||||
#else
|
||||
#ifdef SSQC
|
||||
player pl = (player)self;
|
||||
Weapons_UpdateAmmo(pl, __NULL__, __NULL__, __NULL__);
|
||||
#endif
|
||||
Weapons_ViewAnimation(CHAINSAW_DEPLOY);
|
||||
}
|
||||
|
||||
void w_chainsaw_holster(void)
|
||||
{
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(CHAINSAW_HOLSTER);
|
||||
#endif
|
||||
}
|
||||
void w_chainsaw_primary(void)
|
||||
{
|
||||
|
@ -67,13 +64,7 @@ void w_chainsaw_primary(void)
|
|||
}
|
||||
|
||||
pl.a_ammo3 = 1;
|
||||
#ifdef CSQC
|
||||
if (pSeat->eViewModel.frame == CHAINSAW_STARTFIRE || pSeat->eViewModel.frame == CHAINSAW_CONTINUEFIRE) {
|
||||
Weapons_ViewAnimation(CHAINSAW_CONTINUEFIRE);
|
||||
} else {
|
||||
Weapons_ViewAnimation(CHAINSAW_STARTFIRE);
|
||||
}
|
||||
#else
|
||||
#ifdef SSQC
|
||||
Weapons_MakeVectors();
|
||||
vector src = pl.origin + pl.view_ofs;
|
||||
traceline(src, src + (v_forward * 32), FALSE, pl);
|
||||
|
@ -125,7 +116,6 @@ void w_chainsaw_release(void)
|
|||
pl.w_idle_next = 10.0f;
|
||||
}
|
||||
|
||||
#ifdef CSQC
|
||||
int r = floor(random(0,2));
|
||||
switch (r) {
|
||||
case 0:
|
||||
|
@ -135,7 +125,6 @@ void w_chainsaw_release(void)
|
|||
Weapons_ViewAnimation(CHAINSAW_IDLE2);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
float w_chainsaw_aimanim(void)
|
||||
|
|
|
@ -45,9 +45,8 @@ string w_hammer_deathmsg(void)
|
|||
|
||||
void w_hammer_draw(void)
|
||||
{
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(HAMMER_DRAW);
|
||||
#else
|
||||
#ifdef SSQC
|
||||
player pl = (player)self;
|
||||
Weapons_UpdateAmmo(pl, __NULL__, __NULL__, __NULL__);
|
||||
#endif
|
||||
|
@ -55,52 +54,34 @@ void w_hammer_draw(void)
|
|||
|
||||
void w_hammer_holster(void)
|
||||
{
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(HAMMER_HOLSTER);
|
||||
#endif
|
||||
}
|
||||
void w_hammer_primary(void)
|
||||
{
|
||||
player pl = (player)self;
|
||||
|
||||
#ifdef CSQC
|
||||
if (!pl.w_attack_next) {
|
||||
if (pSeat->eViewModel.frame != HAMMER_HOLSTER2) {
|
||||
Weapons_ViewAnimation(HAMMER_HOLSTER2);
|
||||
pl.w_attack_next = 0.5f;
|
||||
}
|
||||
}
|
||||
#else
|
||||
if (!pl.w_attack_next) {
|
||||
/* Hack */
|
||||
if (pl.a_ammo1 != 1) {
|
||||
Weapons_ViewAnimation(HAMMER_HOLSTER2);
|
||||
pl.a_ammo1 = 1;
|
||||
pl.w_attack_next = 0.5f;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
pl.w_idle_next = 2.5f;
|
||||
}
|
||||
void w_hammer_secondary(void)
|
||||
{
|
||||
player pl = (player)self;
|
||||
|
||||
#ifdef CSQC
|
||||
if (!pl.w_attack_next) {
|
||||
if (pSeat->eViewModel.frame != HAMMER_HOLSTER3) {
|
||||
Weapons_ViewAnimation(HAMMER_HOLSTER3);
|
||||
pl.w_attack_next = 0.5f;
|
||||
}
|
||||
}
|
||||
#else
|
||||
if (!pl.w_attack_next) {
|
||||
/* Hack */
|
||||
if (pl.a_ammo1 != 2) {
|
||||
Weapons_ViewAnimation(HAMMER_HOLSTER3);
|
||||
pl.a_ammo1 = 2;
|
||||
pl.w_attack_next = 0.5f;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
pl.w_idle_next = 2.5f;
|
||||
}
|
||||
void w_hammer_reload(void)
|
||||
|
@ -115,11 +96,10 @@ void w_hammer_release(void)
|
|||
return;
|
||||
}
|
||||
|
||||
#ifdef CSQC
|
||||
if (pSeat->eViewModel.frame == HAMMER_HOLSTER2) {
|
||||
if (pl.a_ammo1 == 1) {
|
||||
Weapons_ViewAnimation(HAMMER_ATTACK1);
|
||||
pl.w_attack_next = 1.0f;
|
||||
} else if (pSeat->eViewModel.frame == HAMMER_HOLSTER3) {
|
||||
} else if (pl.a_ammo1 == 2) {
|
||||
Weapons_ViewAnimation(HAMMER_ATTACK2);
|
||||
pl.w_attack_next = 0.75f;
|
||||
}
|
||||
|
@ -142,7 +122,8 @@ void w_hammer_release(void)
|
|||
break;
|
||||
}
|
||||
pl.w_idle_next = 10.0f;
|
||||
#else
|
||||
|
||||
#ifdef SSQC
|
||||
int hitsound = 0;
|
||||
vector src = pl.origin + pl.view_ofs;
|
||||
makevectors(pl.v_angle);
|
||||
|
@ -202,8 +183,8 @@ void w_hammer_release(void)
|
|||
}
|
||||
|
||||
/* Reset the hack */
|
||||
pl.a_ammo1 = 0;
|
||||
#endif
|
||||
pl.a_ammo1 = 0;
|
||||
}
|
||||
|
||||
float w_hammer_aimanim(void)
|
||||
|
|
|
@ -99,7 +99,7 @@ float CSpraylogo::predraw(void)
|
|||
getplayerkeyvalue(m_iOwnerID, "name")));
|
||||
|
||||
shaderforname(m_strLogoname,
|
||||
sprintf("{\ncull disable\npolygonOffset\n{\nmap $rt:%s\nblendFunc add\n}\n}",
|
||||
sprintf("{\ncull disable\npolygonOffset\n{\nmap $rt:%s\n}\n}",
|
||||
m_strLogopath));
|
||||
} else {
|
||||
makevectors(m_vecAngles);
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
#ifdef CSQC
|
||||
.float frame_last;
|
||||
.float baseframe_last;
|
||||
.float q2frameoverride;
|
||||
#else
|
||||
.float subblendfrac;
|
||||
.float subblend2frac;
|
||||
|
@ -28,101 +27,6 @@ void Animation_Print( string sWow ) {
|
|||
#endif
|
||||
}
|
||||
|
||||
int Animation_Q2PlayerUpdate_Taunt(void)
|
||||
{
|
||||
#ifdef CSQC
|
||||
if (!self.q2frameoverride) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Interpolation */
|
||||
self.lerpfrac -= clframetime * 10;
|
||||
if (self.lerpfrac < 0.0) {
|
||||
self.lerpfrac = 0.0f;
|
||||
}
|
||||
if (self.frame_time > cltime) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Next animationf rame inbound, reset interpolation */
|
||||
self.frame2 = self.frame;
|
||||
self.lerpfrac = 1.0f;
|
||||
|
||||
/* Either advance frame (if we're in framgroup) or start new one */
|
||||
if (self.frame >= q2_anims[self.q2frameoverride].start && self.frame < q2_anims[self.q2frameoverride].end) {
|
||||
self.frame += 1;
|
||||
} else if (self.frame == q2_anims[self.q2frameoverride].end) {
|
||||
self.q2frameoverride = 0;
|
||||
} else {
|
||||
self.frame = q2_anims[self.q2frameoverride].start;
|
||||
}
|
||||
|
||||
/* Q2 runs at 10 Hz */
|
||||
self.frame_time = cltime + 0.1f;
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
void Animation_Q2PlayerUpdate_Run(int id)
|
||||
{
|
||||
#ifdef CSQC
|
||||
/* Interpolation */
|
||||
self.lerpfrac -= clframetime * 10;
|
||||
if (self.lerpfrac < 0.0) {
|
||||
self.lerpfrac = 0.0f;
|
||||
}
|
||||
|
||||
if (self.frame_time > cltime) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* Next animationf rame inbound, reset interpolation */
|
||||
self.frame2 = self.frame;
|
||||
self.lerpfrac = 1.0f;
|
||||
|
||||
/* Either advance frame (if we're in framgroup) or start new one */
|
||||
if (self.frame >= q2_anims[id].start && self.frame < q2_anims[id].end) {
|
||||
self.frame += 1;
|
||||
} else {
|
||||
self.frame = q2_anims[id].start;
|
||||
}
|
||||
|
||||
/* Q2 runs at 10 Hz */
|
||||
self.frame_time = cltime + 0.1f;
|
||||
#endif
|
||||
}
|
||||
|
||||
void Animation_Q2PlayerUpdate(void)
|
||||
{
|
||||
if (Animation_Q2PlayerUpdate_Taunt() == 1) {
|
||||
return;
|
||||
}
|
||||
if ( !( self.flags & FL_ONGROUND ) ) {
|
||||
Animation_Q2PlayerUpdate_Run(Q2ANIM_JUMP);
|
||||
} else if ( vlen( self.velocity ) == 0 ) {
|
||||
if ( self.flags & FL_CROUCHING ) {
|
||||
Animation_Q2PlayerUpdate_Run(Q2ANIM_CR_STAND);
|
||||
} else {
|
||||
Animation_Q2PlayerUpdate_Run(Q2ANIM_STAND);
|
||||
}
|
||||
} else {
|
||||
if ( self.flags & FL_CROUCHING ) {
|
||||
Animation_Q2PlayerUpdate_Run(Q2ANIM_CR_WALK);
|
||||
} else {
|
||||
Animation_Q2PlayerUpdate_Run(Q2ANIM_RUN);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CSQC
|
||||
void Animation_Q2PlayerTaunt(void)
|
||||
{
|
||||
entity boo = findfloat( world, entnum, readentitynum() );
|
||||
boo.q2frameoverride = Q2ANIM_FLIP + readbyte();
|
||||
print( sprintf("Taunt %d %s!\n", boo.q2frameoverride, boo.model));
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
=================
|
||||
Animation_PlayerUpdate
|
||||
|
@ -246,4 +150,4 @@ void Animation_PlayerTop( float fFrame ) {
|
|||
void Animation_PlayerTopTemp( float fFrame, float fTime ) {
|
||||
self.frame = fFrame;
|
||||
self.frame_time = time + fTime;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -82,60 +82,5 @@ enum {
|
|||
ANIM_CR_SHOOTBOW
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
string name;
|
||||
float start;
|
||||
float end;
|
||||
} q2_anim_t;
|
||||
|
||||
q2_anim_t q2_anims[] = {
|
||||
{ "stand", 0, 39 },
|
||||
{ "run", 40, 45 },
|
||||
{ "attack", 46, 53 },
|
||||
{ "pain1", 54, 57 },
|
||||
{ "pain2", 58, 65 },
|
||||
{ "jump", 66, 71 },
|
||||
{ "flip", 72, 83 },
|
||||
{ "salute", 84, 94 },
|
||||
{ "taunt", 95, 111 },
|
||||
{ "wave", 112, 122 },
|
||||
{ "point", 123, 134 },
|
||||
{ "cr_stand", 135, 153 },
|
||||
{ "cr_walk", 154, 159 },
|
||||
{ "cr_attack", 160, 168 },
|
||||
{ "cr_pain", 169, 172 },
|
||||
{ "cr_death", 173, 177 },
|
||||
{ "death1", 178, 183 },
|
||||
{ "death2", 184, 189 },
|
||||
{ "death3", 190, 197 }
|
||||
};
|
||||
|
||||
enum {
|
||||
Q2ANIM_STAND,
|
||||
Q2ANIM_RUN,
|
||||
Q2ANIM_ATTACK,
|
||||
Q2ANIM_PAIN1,
|
||||
Q2ANIM_PAIN2,
|
||||
Q2ANIM_JUMP,
|
||||
Q2ANIM_FLIP,
|
||||
Q2ANIM_SALUTE,
|
||||
Q2ANIM_TAUNT,
|
||||
Q2ANIM_WAVE,
|
||||
Q2ANIM_POINT,
|
||||
Q2ANIM_CR_STAND,
|
||||
Q2ANIM_CR_WALK,
|
||||
Q2ANIM_CR_ATTACK,
|
||||
Q2ANIM_CR_PAIN,
|
||||
Q2ANIM_CR_DEATH,
|
||||
Q2ANIM_DEATH1,
|
||||
Q2ANIM_DEATH2,
|
||||
Q2ANIM_DEATH3,
|
||||
};
|
||||
|
||||
enum {
|
||||
PLAYERTYPE_HL,
|
||||
PLAYERTYPE_Q2
|
||||
};
|
||||
|
||||
void Animation_PlayerTop(float);
|
||||
void Animation_PlayerTopTemp(float, float);
|
||||
|
|
|
@ -22,6 +22,7 @@ class player
|
|||
float activeweapon;
|
||||
float viewzoom;
|
||||
vector view_ofs;
|
||||
float weapontime;
|
||||
|
||||
/* Weapon specific */
|
||||
int glock_mag;
|
||||
|
@ -35,7 +36,6 @@ class player
|
|||
#ifdef CSQC
|
||||
/* External model */
|
||||
entity p_model;
|
||||
int playertype;
|
||||
int p_hand_bone;
|
||||
int p_model_bone;
|
||||
float pitch;
|
||||
|
@ -49,11 +49,11 @@ class player
|
|||
float net_w_idle_next;
|
||||
float netjumptime;
|
||||
float netteleport_time;
|
||||
float net_weapontime;
|
||||
int net_ammo1;
|
||||
int net_ammo2;
|
||||
int net_ammo3;
|
||||
|
||||
virtual void(string) set_model;
|
||||
virtual void() gun_offset;
|
||||
virtual void() draw;
|
||||
virtual float() predraw;
|
||||
|
|
|
@ -60,27 +60,26 @@ void w_crossbow_pickup(void)
|
|||
void w_crossbow_draw(void)
|
||||
{
|
||||
player pl = (player)self;
|
||||
#ifdef CSQC
|
||||
if (pl.a_ammo1) {
|
||||
Weapons_ViewAnimation(CROSSBOW_DRAW1);
|
||||
} else {
|
||||
Weapons_ViewAnimation(CROSSBOW_DRAW2);
|
||||
}
|
||||
#else
|
||||
|
||||
#ifdef SSQC
|
||||
Weapons_UpdateAmmo(pl, pl.crossbow_mag, pl.ammo_bolt, __NULL__);
|
||||
#endif
|
||||
|
||||
if (pl.a_ammo1) {
|
||||
Weapons_ViewAnimation(CROSSBOW_DRAW1);
|
||||
} else {
|
||||
Weapons_ViewAnimation(CROSSBOW_DRAW2);
|
||||
}
|
||||
}
|
||||
|
||||
void w_crossbow_holster(void)
|
||||
{
|
||||
player pl = (player)self;
|
||||
#ifdef CSQC
|
||||
if (pl.a_ammo1) {
|
||||
Weapons_ViewAnimation(CROSSBOW_HOLSTER1);
|
||||
} else {
|
||||
Weapons_ViewAnimation(CROSSBOW_HOLSTER2);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
void w_crossbow_primary(void)
|
||||
{
|
||||
|
@ -93,6 +92,11 @@ void w_crossbow_primary(void)
|
|||
static void Crossbolt_Touch(void) {
|
||||
Effect_CreateSpark(self.origin, trace_plane_normal);
|
||||
|
||||
if (self.weapon) {
|
||||
Effect_CreateExplosion(self.origin);
|
||||
Damage_Radius(self.origin, self.owner, 40, 40 * 2.5, TRUE);
|
||||
sound(self, CHAN_WEAPON, sprintf( "weapons/explode%d.wav", floor( random() * 2 ) + 3 ), 1, ATTN_NORM);
|
||||
}
|
||||
if (other.takedamage == DAMAGE_YES) {
|
||||
Damage_Apply(other, self.owner, 50, trace_endpos, FALSE);
|
||||
if (random() < 0.5) {
|
||||
|
@ -123,6 +127,7 @@ void w_crossbow_primary(void)
|
|||
bolt.angles = vectoangles(bolt.velocity);
|
||||
bolt.avelocity[2] = 10;
|
||||
bolt.touch = Crossbolt_Touch;
|
||||
bolt.weapon = pl.viewzoom == 1.0 ? 1 : 0;
|
||||
setsize(bolt, [0,0,0], [0,0,0]);
|
||||
|
||||
if (pl.crossbow_mag) {
|
||||
|
@ -133,14 +138,13 @@ void w_crossbow_primary(void)
|
|||
Weapons_UpdateAmmo(pl, pl.crossbow_mag, pl.ammo_bolt, __NULL__);
|
||||
Weapons_PlaySound(pl, CHAN_WEAPON, "weapons/xbow_fire1.wav", 1, ATTN_NORM);
|
||||
#else
|
||||
if (pl.a_ammo1) {
|
||||
Weapons_ViewAnimation(CROSSBOW_FIRE1);
|
||||
} else {
|
||||
Weapons_ViewAnimation(CROSSBOW_FIRE3);
|
||||
}
|
||||
Weapons_ViewPunchAngle([-2,0,0]);
|
||||
#endif
|
||||
|
||||
if (pl.a_ammo1) {
|
||||
Weapons_ViewAnimation(CROSSBOW_FIRE1);
|
||||
} else {
|
||||
Weapons_ViewAnimation(CROSSBOW_FIRE3);
|
||||
}
|
||||
pl.w_attack_next = 0.75f;
|
||||
pl.w_idle_next = 10.0f;
|
||||
}
|
||||
|
@ -186,9 +190,8 @@ void w_crossbow_reload(void)
|
|||
Weapons_UpdateAmmo(pl, pl.crossbow_mag, pl.ammo_bolt, __NULL__);
|
||||
#else
|
||||
Weapons_PlaySound(pl, CHAN_ITEM, "weapons/xbow_reload1.wav", 1, ATTN_NORM);
|
||||
Weapons_ViewAnimation(CROSSBOW_RELOAD);
|
||||
#endif
|
||||
|
||||
Weapons_ViewAnimation(CROSSBOW_RELOAD);
|
||||
pl.w_attack_next = 4.5f;
|
||||
pl.w_idle_next = 10.0f;
|
||||
}
|
||||
|
@ -199,23 +202,20 @@ void w_crossbow_release(void)
|
|||
return;
|
||||
}
|
||||
|
||||
#ifdef CSQC
|
||||
if (random() < 0.75) {
|
||||
if (pl.a_ammo1) {
|
||||
Weapons_ViewAnimation(CROSSBOW_IDLE1);
|
||||
} else {
|
||||
Weapons_ViewAnimation(CROSSBOW_IDLE2);
|
||||
}
|
||||
pl.w_idle_next = 10.0f;
|
||||
} else {
|
||||
if (pl.a_ammo1) {
|
||||
Weapons_ViewAnimation(CROSSBOW_FIDGET1);
|
||||
} else {
|
||||
Weapons_ViewAnimation(CROSSBOW_FIDGET2);
|
||||
}
|
||||
pl.w_idle_next = 3.0f;
|
||||
}
|
||||
#endif
|
||||
pl.w_idle_next = 3.0f;
|
||||
}
|
||||
void w_crossbow_crosshair(void)
|
||||
{
|
||||
|
|
|
@ -51,19 +51,16 @@ string w_crowbar_deathmsg(void)
|
|||
|
||||
void w_crowbar_draw(void)
|
||||
{
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(CROWBAR_DRAW);
|
||||
#else
|
||||
#ifdef SSQC
|
||||
player pl = (player)self;
|
||||
Weapons_UpdateAmmo(pl, __NULL__, __NULL__, __NULL__);
|
||||
#endif
|
||||
Weapons_ViewAnimation(CROWBAR_DRAW);
|
||||
}
|
||||
|
||||
void w_crowbar_holster(void)
|
||||
{
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(CROWBAR_HOLSTER);
|
||||
#endif
|
||||
}
|
||||
void w_crowbar_primary(void)
|
||||
{
|
||||
|
@ -73,34 +70,30 @@ void w_crowbar_primary(void)
|
|||
return;
|
||||
}
|
||||
|
||||
#ifdef CSQC
|
||||
Weapons_MakeVectors();
|
||||
vector src = pl.origin + pl.view_ofs;
|
||||
traceline(src, src + (v_forward * 32), FALSE, pl);
|
||||
vector src = pl.origin + pl.view_ofs;
|
||||
traceline(src, src + (v_forward * 32), FALSE, pl);
|
||||
|
||||
int r = floor(random(0,3));
|
||||
switch (r) {
|
||||
case 0:
|
||||
Weapons_ViewAnimation(trace_fraction >= 1 ? CROWBAR_ATTACK1MISS:CROWBAR_ATTACK1HIT);
|
||||
break;
|
||||
case 1:
|
||||
Weapons_ViewAnimation(trace_fraction >= 1 ? CROWBAR_ATTACK2MISS:CROWBAR_ATTACK2HIT);
|
||||
break;
|
||||
default:
|
||||
Weapons_ViewAnimation(trace_fraction >= 1 ? CROWBAR_ATTACK3MISS:CROWBAR_ATTACK3HIT);
|
||||
}
|
||||
int r = floor(random(0,3));
|
||||
switch (r) {
|
||||
case 0:
|
||||
Weapons_ViewAnimation(trace_fraction >= 1 ? CROWBAR_ATTACK1MISS:CROWBAR_ATTACK1HIT);
|
||||
break;
|
||||
case 1:
|
||||
Weapons_ViewAnimation(trace_fraction >= 1 ? CROWBAR_ATTACK2MISS:CROWBAR_ATTACK2HIT);
|
||||
break;
|
||||
default:
|
||||
Weapons_ViewAnimation(trace_fraction >= 1 ? CROWBAR_ATTACK3MISS:CROWBAR_ATTACK3HIT);
|
||||
}
|
||||
|
||||
if (trace_fraction >= 1.0) {
|
||||
pl.w_attack_next = 0.5f;
|
||||
} else {
|
||||
pl.w_attack_next = 0.25f;
|
||||
}
|
||||
#else
|
||||
Weapons_MakeVectors();
|
||||
vector src = pl.origin + pl.view_ofs;
|
||||
traceline(src, src + (v_forward * 32), FALSE, pl);
|
||||
if (trace_fraction >= 1.0) {
|
||||
pl.w_attack_next = 0.5f;
|
||||
} else {
|
||||
pl.w_attack_next = 0.25f;
|
||||
}
|
||||
|
||||
if (self.flags & FL_CROUCHING)
|
||||
#ifdef SSQC
|
||||
if (pl.flags & FL_CROUCHING)
|
||||
Animation_PlayerTopTemp(ANIM_SHOOTCROWBAR, 0.5f);
|
||||
else
|
||||
Animation_PlayerTopTemp(ANIM_CR_SHOOTCROWBAR, 0.42f);
|
||||
|
@ -108,9 +101,7 @@ void w_crowbar_primary(void)
|
|||
Weapons_PlaySound(pl, CHAN_WEAPON, "weapons/cbar_miss1.wav", 1, ATTN_NORM);
|
||||
|
||||
if (trace_fraction >= 1.0) {
|
||||
pl.w_attack_next = 0.5f;
|
||||
} else {
|
||||
pl.w_attack_next = 0.25f;
|
||||
Effect_Impact(IMPACT_MELEE, trace_endpos, trace_plane_normal);
|
||||
|
||||
if (trace_ent.takedamage) {
|
||||
|
@ -147,7 +138,6 @@ void w_crowbar_reload(void)
|
|||
}
|
||||
void w_crowbar_release(void)
|
||||
{
|
||||
#ifdef CSQC
|
||||
player pl = (player)self;
|
||||
if (pl.w_idle_next) {
|
||||
return;
|
||||
|
@ -155,7 +145,6 @@ void w_crowbar_release(void)
|
|||
|
||||
Weapons_ViewAnimation(CROWBAR_IDLE);
|
||||
pl.w_idle_next = 15.0f;
|
||||
#endif
|
||||
}
|
||||
|
||||
float w_crowbar_aimanim(void)
|
||||
|
|
|
@ -44,6 +44,14 @@ string w_egon_deathmsg(void)
|
|||
return "";
|
||||
}
|
||||
|
||||
void w_egon_pickup(void)
|
||||
{
|
||||
#ifdef SSQC
|
||||
player pl = (player)self;
|
||||
pl.ammo_uranium = bound(0, pl.ammo_uranium +20, 100);
|
||||
#endif
|
||||
}
|
||||
|
||||
void w_egon_draw(void)
|
||||
{
|
||||
player pl = (player)self;
|
||||
|
@ -66,17 +74,32 @@ void w_egon_primary(void)
|
|||
return;
|
||||
}
|
||||
|
||||
/* Ammo check */
|
||||
#ifdef CSQC
|
||||
if (pl.a_ammo2 <= 0) {
|
||||
return;
|
||||
}
|
||||
#else
|
||||
if (pl.ammo_uranium <= 0) {
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CSQC
|
||||
if (Weapons_GetAnimation() == EGON_IDLE1)
|
||||
Weapons_ViewAnimation(EGON_ALTFIREON);
|
||||
else if (Weapons_GetAnimation() == EGON_ALTFIREON)
|
||||
Weapons_ViewAnimation(EGON_ALTFIRECYCLE);
|
||||
|
||||
pl.a_ammo2--;
|
||||
#else
|
||||
Weapons_MakeVectors();
|
||||
vector src = Weapons_GetCameraPos();
|
||||
vector endpos = src + v_forward * 1024;
|
||||
traceline(src, endpos, FALSE, pl);
|
||||
Damage_Radius(trace_endpos, pl, 10, 64, TRUE);
|
||||
Damage_Radius(trace_endpos, pl, 14, 64, TRUE);
|
||||
pl.ammo_uranium--;
|
||||
Weapons_UpdateAmmo(pl, __NULL__, pl.ammo_uranium, __NULL__);
|
||||
#endif
|
||||
|
||||
pl.w_attack_next = 0.2f;
|
||||
|
@ -111,6 +134,7 @@ void w_egon_crosshair(void)
|
|||
static vector cross_pos;
|
||||
cross_pos = (video_res / 2) + [-12,-12];
|
||||
drawsubpic(cross_pos, [24,24], "sprites/crosshairs.spr_0.tga", [72/128,48/128], [0.1875, 0.1875], [1,1,1], 1, DRAWFLAG_NORMAL);
|
||||
HUD_DrawAmmo2();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -143,7 +167,7 @@ weapon_t w_egon =
|
|||
w_egon_release,
|
||||
w_egon_crosshair,
|
||||
w_egon_precache,
|
||||
__NULL__,
|
||||
w_egon_pickup,
|
||||
w_egon_vmodel,
|
||||
w_egon_wmodel,
|
||||
w_egon_pmodel,
|
||||
|
|
|
@ -19,6 +19,8 @@ enum
|
|||
GAUSS_DRAW
|
||||
};
|
||||
|
||||
void w_gauss_release(void);
|
||||
|
||||
void w_gauss_precache(void)
|
||||
{
|
||||
precache_model("models/v_gauss.mdl");
|
||||
|
@ -48,11 +50,18 @@ string w_gauss_deathmsg(void)
|
|||
return "";
|
||||
}
|
||||
|
||||
void w_gauss_pickup(void)
|
||||
{
|
||||
#ifdef SSQC
|
||||
player pl = (player)self;
|
||||
pl.ammo_uranium = bound(0, pl.ammo_uranium +20, 100);
|
||||
#endif
|
||||
}
|
||||
|
||||
void w_gauss_draw(void)
|
||||
{
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(GAUSS_DRAW);
|
||||
#else
|
||||
#ifdef SSQC
|
||||
player pl = (player)self;
|
||||
Weapons_UpdateAmmo(pl, __NULL__, pl.ammo_uranium, __NULL__);
|
||||
#endif
|
||||
|
@ -202,8 +211,23 @@ void w_gauss_primary(void)
|
|||
return;
|
||||
}
|
||||
|
||||
/* Ammo check */
|
||||
#ifdef CSQC
|
||||
if (pl.a_ammo2 < 2) {
|
||||
return;
|
||||
}
|
||||
#else
|
||||
if (pl.ammo_uranium < 2) {
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
Weapons_ViewAnimation(GAUSS_FIRE2);
|
||||
#ifdef CSQC
|
||||
pl.a_ammo2 -= 2;
|
||||
#else
|
||||
pl.ammo_uranium -= 2;
|
||||
Weapons_UpdateAmmo(pl, __NULL__, pl.ammo_uranium, __NULL__);
|
||||
#endif
|
||||
w_gauss_fire(1);
|
||||
|
||||
|
@ -216,7 +240,7 @@ void w_gauss_secondary(void)
|
|||
|
||||
#ifdef CSQC
|
||||
if (pl.a_ammo3)
|
||||
soundupdate(pl, CHAN_WEAPON, "", 2, ATTN_NORM, 100 + (200 * (pl.a_ammo2/255)), 0, 0);
|
||||
soundupdate(pl, CHAN_WEAPON, "", 2, ATTN_NORM, 100 + (200 * (pl.a_ammo1/255)), 0, 0);
|
||||
#endif
|
||||
|
||||
if (pl.w_attack_next) {
|
||||
|
@ -224,75 +248,98 @@ void w_gauss_secondary(void)
|
|||
}
|
||||
pl.w_attack_next = 0.1f;
|
||||
|
||||
/* Ammo check */
|
||||
#ifdef CSQC
|
||||
if (pl.a_ammo2 <= 0) {
|
||||
if (pl.a_ammo3 > 0) {
|
||||
w_gauss_release();
|
||||
}
|
||||
return;
|
||||
}
|
||||
#else
|
||||
if (pl.ammo_uranium <= 0) {
|
||||
if (pl.a_ammo3 > 0) {
|
||||
w_gauss_release();
|
||||
}
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CSQC
|
||||
if (pl.a_ammo1 < 255)
|
||||
pl.a_ammo2--;
|
||||
#else
|
||||
if (pl.a_ammo1 < 255)
|
||||
pl.ammo_uranium--;
|
||||
Weapons_UpdateAmmo(pl, pl.a_ammo1, pl.ammo_uranium, pl.a_ammo3);
|
||||
#endif
|
||||
|
||||
/* Set pitch sound shift */
|
||||
pl.a_ammo2 += 16;
|
||||
if (pl.a_ammo2 > 255) {
|
||||
pl.a_ammo2 = 255;
|
||||
pl.a_ammo1 += 16;
|
||||
if (pl.a_ammo1 > 255) {
|
||||
pl.a_ammo1 = 255;
|
||||
}
|
||||
|
||||
if (pl.a_ammo3 == 1) {
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(GAUSS_SPIN);
|
||||
#endif
|
||||
pl.a_ammo3 = 2;
|
||||
pl.w_idle_next = 0.0f;
|
||||
} else if (!pl.a_ammo3) {
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(GAUSS_SPINUP);
|
||||
#ifdef CSQC
|
||||
sound(pl, CHAN_WEAPON, "ambience/pulsemachine.wav", 2, ATTN_NORM);
|
||||
#endif
|
||||
pl.a_ammo3 = 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void w_gauss_release(void)
|
||||
{
|
||||
player pl = (player)self;
|
||||
if (pl.w_idle_next > 0.0) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* Reset the pitch sound shift */
|
||||
pl.a_ammo1 = 0;
|
||||
|
||||
if (pl.a_ammo3 == 1) {
|
||||
pl.w_attack_next = 0.0f;
|
||||
pl.w_idle_next = 4.0f;
|
||||
w_gauss_primary();
|
||||
pl.a_ammo3 = 0;
|
||||
return;
|
||||
} else if (pl.a_ammo3 == 2) {
|
||||
w_gauss_fire(0);
|
||||
Weapons_ViewAnimation(GAUSS_FIRE1);
|
||||
|
||||
#ifdef CSQC
|
||||
soundupdate(pl, CHAN_WEAPON, "", -1, ATTN_NORM, 0, 0, 0);
|
||||
#endif
|
||||
pl.w_attack_next = 1.5f;
|
||||
pl.w_idle_next = 4.0f;
|
||||
pl.a_ammo3 = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
int r = floor(random(0,3));
|
||||
switch (r) {
|
||||
case 0:
|
||||
Weapons_ViewAnimation(GAUSS_IDLE1);
|
||||
break;
|
||||
case 1:
|
||||
Weapons_ViewAnimation(GAUSS_IDLE2);
|
||||
break;
|
||||
case 2:
|
||||
Weapons_ViewAnimation(GAUSS_FIDGET);
|
||||
break;
|
||||
}
|
||||
pl.w_idle_next = 3.0f;
|
||||
}
|
||||
|
||||
void w_gauss_reload(void)
|
||||
{
|
||||
|
||||
}
|
||||
void w_gauss_release(void)
|
||||
{
|
||||
player pl = (player)self;
|
||||
if (pl.w_idle_next > 0.0) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* Reset the pitch sound shift */
|
||||
pl.a_ammo2 = 0;
|
||||
|
||||
if (pl.a_ammo3 == 1) {
|
||||
pl.w_attack_next = 0.0f;
|
||||
pl.w_idle_next = 4.0f;
|
||||
w_gauss_primary();
|
||||
pl.a_ammo3 = 0;
|
||||
return;
|
||||
} else if (pl.a_ammo3 == 2) {
|
||||
w_gauss_fire(0);
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(GAUSS_FIRE1);
|
||||
soundupdate(pl, CHAN_WEAPON, "", -1, ATTN_NORM, 0, 0, 0);
|
||||
#endif
|
||||
pl.w_attack_next = 1.5f;
|
||||
pl.w_idle_next = 4.0f;
|
||||
pl.a_ammo3 = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
int r = floor(random(0,3));
|
||||
switch (r) {
|
||||
case 0:
|
||||
Weapons_ViewAnimation(GAUSS_IDLE1);
|
||||
pl.w_idle_next = 10.0f;
|
||||
break;
|
||||
case 1:
|
||||
Weapons_ViewAnimation(GAUSS_IDLE2);
|
||||
pl.w_idle_next = 10.0f;
|
||||
break;
|
||||
case 2:
|
||||
Weapons_ViewAnimation(GAUSS_FIDGET);
|
||||
pl.w_idle_next = 3.0f;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void w_gauss_crosshair(void)
|
||||
|
@ -301,6 +348,7 @@ void w_gauss_crosshair(void)
|
|||
static vector cross_pos;
|
||||
cross_pos = (video_res / 2) + [-12,-12];
|
||||
drawsubpic(cross_pos, [24,24], "sprites/crosshairs.spr_0.tga", [48/128,48/128], [0.1875, 0.1875], [1,1,1], 1, DRAWFLAG_NORMAL);
|
||||
HUD_DrawAmmo2();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -333,7 +381,7 @@ weapon_t w_gauss =
|
|||
w_gauss_release,
|
||||
w_gauss_crosshair,
|
||||
w_gauss_precache,
|
||||
__NULL__,
|
||||
w_gauss_pickup,
|
||||
w_gauss_vmodel,
|
||||
w_gauss_wmodel,
|
||||
w_gauss_pmodel,
|
||||
|
|
|
@ -53,18 +53,15 @@ void w_glock_pickup(void)
|
|||
|
||||
void w_glock_draw(void)
|
||||
{
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(GLOCK_DRAW);
|
||||
#else
|
||||
#ifdef SSQC
|
||||
player pl = (player)self;
|
||||
Weapons_UpdateAmmo(pl, pl.glock_mag, pl.ammo_9mm, __NULL__);
|
||||
#endif
|
||||
}
|
||||
void w_glock_holster(void)
|
||||
{
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(GLOCK_HOLSTER);
|
||||
#endif
|
||||
}
|
||||
void w_glock_primary(void)
|
||||
{
|
||||
|
@ -79,12 +76,6 @@ void w_glock_primary(void)
|
|||
return;
|
||||
}
|
||||
|
||||
if (pl.a_ammo1) {
|
||||
Weapons_ViewAnimation(GLOCK_SHOOT);
|
||||
} else {
|
||||
Weapons_ViewAnimation(GLOCK_SHOOT_EMPTY);
|
||||
}
|
||||
|
||||
Weapons_ViewPunchAngle([-2,0,0]);
|
||||
#else
|
||||
if (!pl.glock_mag) {
|
||||
|
@ -104,6 +95,12 @@ void w_glock_primary(void)
|
|||
Weapons_UpdateAmmo(pl, pl.glock_mag, pl.ammo_9mm, __NULL__);
|
||||
#endif
|
||||
|
||||
if (pl.a_ammo1) {
|
||||
Weapons_ViewAnimation(GLOCK_SHOOT);
|
||||
} else {
|
||||
Weapons_ViewAnimation(GLOCK_SHOOT_EMPTY);
|
||||
}
|
||||
|
||||
pl.w_attack_next = 0.3f;
|
||||
pl.w_idle_next = 5.0f;
|
||||
}
|
||||
|
@ -120,12 +117,6 @@ void w_glock_secondary(void)
|
|||
return;
|
||||
}
|
||||
|
||||
if (pl.a_ammo1) {
|
||||
Weapons_ViewAnimation(GLOCK_SHOOT);
|
||||
} else {
|
||||
Weapons_ViewAnimation(GLOCK_SHOOT_EMPTY);
|
||||
}
|
||||
|
||||
Weapons_ViewPunchAngle([-2,0,0]);
|
||||
#else
|
||||
if (!pl.glock_mag) {
|
||||
|
@ -146,6 +137,12 @@ void w_glock_secondary(void)
|
|||
Weapons_UpdateAmmo(pl, pl.glock_mag, pl.ammo_9mm, __NULL__);
|
||||
#endif
|
||||
|
||||
if (pl.a_ammo1) {
|
||||
Weapons_ViewAnimation(GLOCK_SHOOT);
|
||||
} else {
|
||||
Weapons_ViewAnimation(GLOCK_SHOOT_EMPTY);
|
||||
}
|
||||
|
||||
pl.w_attack_next = 0.2f;
|
||||
pl.w_idle_next = 5.0f;
|
||||
}
|
||||
|
@ -163,11 +160,6 @@ void w_glock_reload(void)
|
|||
return;
|
||||
}
|
||||
|
||||
if (pl.a_ammo1) {
|
||||
Weapons_ViewAnimation(GLOCK_RELOAD);
|
||||
} else {
|
||||
Weapons_ViewAnimation(GLOCK_RELOAD_EMPTY);
|
||||
}
|
||||
#else
|
||||
if (pl.glock_mag >= 18) {
|
||||
return;
|
||||
|
@ -180,12 +172,17 @@ void w_glock_reload(void)
|
|||
Weapons_UpdateAmmo(pl, pl.glock_mag, pl.ammo_9mm, __NULL__);
|
||||
#endif
|
||||
|
||||
if (pl.a_ammo1) {
|
||||
Weapons_ViewAnimation(GLOCK_RELOAD);
|
||||
} else {
|
||||
Weapons_ViewAnimation(GLOCK_RELOAD_EMPTY);
|
||||
}
|
||||
|
||||
pl.w_attack_next = 2.0f;
|
||||
pl.w_idle_next = 10.0f;
|
||||
}
|
||||
void w_glock_release(void)
|
||||
{
|
||||
#ifdef CSQC
|
||||
player pl = (player)self;
|
||||
if (pl.w_idle_next > 0) {
|
||||
return;
|
||||
|
@ -204,7 +201,6 @@ void w_glock_release(void)
|
|||
break;
|
||||
}
|
||||
pl.w_idle_next = 10.0f;
|
||||
#endif
|
||||
}
|
||||
|
||||
float w_glock_aimanim(void)
|
||||
|
|
|
@ -53,9 +53,8 @@ string w_hornetgun_deathmsg(void)
|
|||
|
||||
void w_hornetgun_draw(void)
|
||||
{
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(HORNETGUN_DRAW);
|
||||
#else
|
||||
#ifdef SSQC
|
||||
player pl = (player)self;
|
||||
Weapons_UpdateAmmo(pl, __NULL__, pl.ammo_hornet, __NULL__);
|
||||
#endif
|
||||
|
@ -91,6 +90,37 @@ void w_hornetgun_shoothornet(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
void w_hornetgun_release(void)
|
||||
{
|
||||
player pl = (player)self;
|
||||
|
||||
if (pl.w_idle_next) {
|
||||
return;
|
||||
}
|
||||
|
||||
int r;
|
||||
r = floor(random(0,3));
|
||||
switch (r) {
|
||||
case 0:
|
||||
Weapons_ViewAnimation(HORNETGUN_IDLE);
|
||||
break;
|
||||
case 1:
|
||||
Weapons_ViewAnimation(HORNETGUN_FIDGET1);
|
||||
break;
|
||||
default:
|
||||
Weapons_ViewAnimation(HORNETGUN_FIDGET2);
|
||||
break;
|
||||
}
|
||||
|
||||
#ifdef CSQC
|
||||
pl.a_ammo2 = bound(0, pl.a_ammo2 + 1, 8);
|
||||
#else
|
||||
pl.ammo_hornet = bound(0, pl.ammo_hornet + 1, 8);
|
||||
Weapons_UpdateAmmo(pl, __NULL__, pl.ammo_hornet, __NULL__);
|
||||
#endif
|
||||
pl.w_idle_next = 1.0f;
|
||||
}
|
||||
|
||||
void w_hornetgun_primary(void)
|
||||
{
|
||||
player pl = (player)self;
|
||||
|
@ -98,15 +128,34 @@ void w_hornetgun_primary(void)
|
|||
return;
|
||||
}
|
||||
|
||||
/* Ammo check */
|
||||
#ifdef CSQC
|
||||
if (pl.a_ammo2 <= 0) {
|
||||
w_hornetgun_release();
|
||||
return;
|
||||
}
|
||||
#else
|
||||
if (pl.ammo_hornet <= 0) {
|
||||
w_hornetgun_release();
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef SSQC
|
||||
w_hornetgun_shoothornet();
|
||||
Weapons_PlaySound(pl, CHAN_WEAPON, sprintf("agrunt/ag_fire%d.wav", floor(random(1,4))), 1, ATTN_NORM);
|
||||
|
||||
pl.ammo_hornet--;
|
||||
Weapons_UpdateAmmo(pl, __NULL__, pl.ammo_hornet, __NULL__);
|
||||
#else
|
||||
Weapons_ViewAnimation(HORNETGUN_SHOOT);
|
||||
pl.a_ammo2--;
|
||||
#endif
|
||||
|
||||
Weapons_ViewAnimation(HORNETGUN_SHOOT);
|
||||
|
||||
pl.w_attack_next = 0.25;
|
||||
pl.w_idle_next = 2.5f;
|
||||
pl.w_idle_next = 1.0f;
|
||||
}
|
||||
void w_hornetgun_secondary(void)
|
||||
{
|
||||
|
@ -115,53 +164,45 @@ void w_hornetgun_secondary(void)
|
|||
return;
|
||||
}
|
||||
|
||||
#ifdef SSQC
|
||||
w_hornetgun_shoothornet();
|
||||
Weapons_PlaySound(pl, CHAN_WEAPON, sprintf("agrunt/ag_fire%d.wav", floor(random(1,4))), 1, ATTN_NORM);
|
||||
/* Ammo check */
|
||||
#ifdef CSQC
|
||||
if (pl.a_ammo2 <= 0) {
|
||||
w_hornetgun_release();
|
||||
return;
|
||||
}
|
||||
#else
|
||||
Weapons_ViewAnimation(HORNETGUN_SHOOT);
|
||||
if (pl.ammo_hornet <= 0) {
|
||||
w_hornetgun_release();
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef SSQC
|
||||
pl.ammo_hornet--;
|
||||
w_hornetgun_shoothornet();
|
||||
Weapons_PlaySound(pl, CHAN_WEAPON, sprintf("agrunt/ag_fire%d.wav", floor(random(1,4))), 1, ATTN_NORM);
|
||||
Weapons_UpdateAmmo(pl, __NULL__, pl.ammo_hornet, __NULL__);
|
||||
#else
|
||||
pl.a_ammo2--;
|
||||
#endif
|
||||
|
||||
Weapons_ViewAnimation(HORNETGUN_SHOOT);
|
||||
|
||||
pl.w_attack_next = 0.1;
|
||||
pl.w_idle_next = 2.5f;
|
||||
pl.w_idle_next = 1.0f;
|
||||
}
|
||||
void w_hornetgun_reload(void)
|
||||
{
|
||||
|
||||
}
|
||||
void w_hornetgun_release(void)
|
||||
{
|
||||
player pl = (player)self;
|
||||
|
||||
if (pl.w_idle_next) {
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef CSQC
|
||||
int r;
|
||||
|
||||
r = floor(random(0,3));
|
||||
|
||||
switch (r) {
|
||||
case 0:
|
||||
Weapons_ViewAnimation(HORNETGUN_IDLE);
|
||||
break;
|
||||
case 1:
|
||||
Weapons_ViewAnimation(HORNETGUN_FIDGET1);
|
||||
break;
|
||||
default:
|
||||
Weapons_ViewAnimation(HORNETGUN_FIDGET2);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
pl.w_idle_next = 2.5f;
|
||||
}
|
||||
void w_hornetgun_crosshair(void)
|
||||
{
|
||||
#ifdef CSQC
|
||||
static vector cross_pos;
|
||||
cross_pos = (video_res / 2) + [-12,-12];
|
||||
drawsubpic(cross_pos, [24,24], "sprites/crosshairs.spr_0.tga", [72/128,24/128], [0.1875, 0.1875], [1,1,1], 1, DRAWFLAG_NORMAL);
|
||||
HUD_DrawAmmo2();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -57,9 +57,8 @@ string w_mp5_deathmsg(void)
|
|||
|
||||
void w_mp5_draw(void)
|
||||
{
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(MP5_DRAW);
|
||||
#else
|
||||
#ifdef SSQC
|
||||
player pl = (player)self;
|
||||
Weapons_UpdateAmmo(pl, pl.mp5_mag, pl.ammo_9mm, pl.ammo_m203_grenade);
|
||||
#endif
|
||||
|
@ -67,9 +66,7 @@ void w_mp5_draw(void)
|
|||
|
||||
void w_mp5_holster(void)
|
||||
{
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(MP5_DRAW);
|
||||
#endif
|
||||
}
|
||||
|
||||
void w_mp5_primary(void)
|
||||
|
@ -90,14 +87,14 @@ void w_mp5_primary(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
if (random() < 0.5) {
|
||||
Weapons_ViewAnimation(MP5_FIRE1);
|
||||
} else {
|
||||
Weapons_ViewAnimation(MP5_FIRE2);
|
||||
}
|
||||
|
||||
/* Actual firing */
|
||||
#ifdef CSQC
|
||||
if (random() < 0.5) {
|
||||
Weapons_ViewAnimation(MP5_FIRE1);
|
||||
} else {
|
||||
Weapons_ViewAnimation(MP5_FIRE2);
|
||||
}
|
||||
|
||||
pl.a_ammo1--;
|
||||
Weapons_ViewPunchAngle([random(-2, 2),0,0]);
|
||||
#else
|
||||
|
@ -134,7 +131,6 @@ void w_mp5_secondary(void)
|
|||
if (pl.a_ammo3 <= 0) {
|
||||
return;
|
||||
}
|
||||
Weapons_ViewAnimation(MP5_GRENADE);
|
||||
Weapons_ViewPunchAngle([-10,0,0]);
|
||||
pl.a_ammo3--;
|
||||
#else
|
||||
|
@ -167,7 +163,7 @@ void w_mp5_secondary(void)
|
|||
pl.ammo_m203_grenade--;
|
||||
Weapons_UpdateAmmo(pl, pl.mp5_mag, pl.ammo_9mm, pl.ammo_m203_grenade);
|
||||
#endif
|
||||
|
||||
Weapons_ViewAnimation(MP5_GRENADE);
|
||||
pl.w_attack_next = 1.0f;
|
||||
pl.w_idle_next = 10.0f;
|
||||
}
|
||||
|
@ -196,9 +192,9 @@ void w_mp5_reload(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(MP5_RELOAD);
|
||||
#else
|
||||
|
||||
#ifdef SSQC
|
||||
Weapons_ReloadWeapon(pl, player::mp5_mag, player::ammo_9mm, 50);
|
||||
Weapons_UpdateAmmo(pl, pl.mp5_mag, pl.ammo_9mm, pl.ammo_m203_grenade);
|
||||
#endif
|
||||
|
@ -209,7 +205,6 @@ void w_mp5_reload(void)
|
|||
|
||||
void w_mp5_release(void)
|
||||
{
|
||||
#ifdef CSQC
|
||||
player pl = (player)self;
|
||||
if (pl.w_idle_next > 0.0) {
|
||||
return;
|
||||
|
@ -222,7 +217,6 @@ void w_mp5_release(void)
|
|||
}
|
||||
|
||||
pl.w_idle_next = 15.0f;
|
||||
#endif
|
||||
}
|
||||
|
||||
void w_mp5_crosshair(void)
|
||||
|
|
|
@ -52,9 +52,8 @@ string w_python_deathmsg(void)
|
|||
|
||||
void w_python_draw(void)
|
||||
{
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(PYTHON_DRAW);
|
||||
#else
|
||||
#ifdef SSQC
|
||||
player pl = (player)self;
|
||||
Weapons_UpdateAmmo(pl, pl.python_mag, pl.ammo_357, __NULL__);
|
||||
#endif
|
||||
|
@ -62,9 +61,7 @@ void w_python_draw(void)
|
|||
|
||||
void w_python_holster(void)
|
||||
{
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(PYTHON_HOLSTER);
|
||||
#endif
|
||||
}
|
||||
void w_python_primary(void)
|
||||
{
|
||||
|
@ -97,10 +94,9 @@ void w_python_primary(void)
|
|||
Weapons_UpdateAmmo(pl, pl.python_mag, pl.ammo_357, __NULL__);
|
||||
#else
|
||||
pl.a_ammo1--;
|
||||
Weapons_ViewAnimation(PYTHON_FIRE1);
|
||||
Weapons_ViewPunchAngle([-10,0,0]);
|
||||
#endif
|
||||
|
||||
Weapons_ViewAnimation(PYTHON_FIRE1);
|
||||
pl.w_attack_next = 0.75f;
|
||||
pl.w_idle_next = 10.0f;
|
||||
}
|
||||
|
@ -143,25 +139,21 @@ void w_python_reload(void)
|
|||
#endif
|
||||
|
||||
/* Audio-Visual bit */
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(PYTHON_RELOAD);
|
||||
#else
|
||||
#ifdef SSQC
|
||||
Weapons_ReloadWeapon(pl, player::python_mag, player::ammo_357, 6);
|
||||
Weapons_UpdateAmmo(pl, pl.python_mag, pl.ammo_357, __NULL__);
|
||||
#endif
|
||||
|
||||
pl.w_attack_next = 3.25f;
|
||||
pl.w_idle_next = 10.0f;
|
||||
}
|
||||
void w_python_release(void)
|
||||
{
|
||||
|
||||
#ifdef CSQC
|
||||
player pl = (player)self;
|
||||
if (pl.w_idle_next > Math_Time()) {
|
||||
if (pl.w_idle_next) {
|
||||
return;
|
||||
}
|
||||
|
||||
int r = floor(random(0,3));
|
||||
switch (r) {
|
||||
case 0:
|
||||
|
@ -174,9 +166,7 @@ void w_python_release(void)
|
|||
Weapons_ViewAnimation(PYTHON_IDLE3);
|
||||
break;
|
||||
}
|
||||
|
||||
pl.w_idle_next = Math_Time() + 15.0f;
|
||||
#endif
|
||||
pl.w_idle_next = 15.0f;
|
||||
}
|
||||
void w_python_crosshair(void)
|
||||
{
|
||||
|
|
|
@ -56,9 +56,8 @@ void w_rpg_pickup(void)
|
|||
|
||||
void w_rpg_draw(void)
|
||||
{
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(RPG_DRAW1);
|
||||
#else
|
||||
#ifdef SSQC
|
||||
player pl = (player)self;
|
||||
Weapons_UpdateAmmo(pl, pl.rpg_mag, pl.ammo_rocket, __NULL__);
|
||||
#endif
|
||||
|
@ -86,8 +85,9 @@ void w_rpg_primary(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(RPG_FIRE2);
|
||||
|
||||
#ifdef CSQC
|
||||
pl.a_ammo1--;
|
||||
#else
|
||||
static void Rocket_Touch(void) {
|
||||
|
@ -163,13 +163,11 @@ void w_rpg_reload(void)
|
|||
#endif
|
||||
|
||||
/* Audio-Visual Bit */
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(RPG_RELOAD);
|
||||
#else
|
||||
#ifdef SSQC
|
||||
Weapons_ReloadWeapon(pl, player::rpg_mag, player::ammo_rocket, 1);
|
||||
Weapons_UpdateAmmo(pl, pl.rpg_mag, pl.ammo_rocket, __NULL__);
|
||||
#endif
|
||||
|
||||
Weapons_ViewAnimation(RPG_RELOAD);
|
||||
|
||||
pl.w_attack_next = 2.25f;
|
||||
pl.w_idle_next = 10.0f;
|
||||
|
|
|
@ -51,15 +51,14 @@ void w_satchel_pickup(void)
|
|||
{
|
||||
#ifdef SSQC
|
||||
player pl = (player)self;
|
||||
pl.ammo_satchel = bound(0, pl.ammo_satchel + 1, 15);
|
||||
pl.ammo_satchel = bound(0, pl.ammo_satchel + 1, 5);
|
||||
#endif
|
||||
}
|
||||
|
||||
void w_satchel_draw(void)
|
||||
{
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(SATCHEL_DRAW);
|
||||
#else
|
||||
#ifdef SSQC
|
||||
player pl = (player)self;
|
||||
Weapons_UpdateAmmo(pl, pl.satchel_chg, pl.ammo_satchel, __NULL__);
|
||||
#endif
|
||||
|
@ -120,6 +119,12 @@ void w_satchel_primary(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
if (pl.a_ammo1 <= 0) {
|
||||
Weapons_ViewAnimation(RADIO_DRAW);
|
||||
} else {
|
||||
Weapons_ViewAnimation(RADIO_USE);
|
||||
}
|
||||
|
||||
#ifdef SSQC
|
||||
if (!pl.satchel_chg) {
|
||||
vector throw;
|
||||
|
@ -140,11 +145,6 @@ void w_satchel_primary(void)
|
|||
Weapons_UpdateAmmo(pl, pl.satchel_chg, pl.ammo_satchel, __NULL__);
|
||||
#else
|
||||
setmodel(pSeat->eViewModel, "models/v_satchel_radio.mdl");
|
||||
if (pl.a_ammo1 <= 0) {
|
||||
Weapons_ViewAnimation(RADIO_DRAW);
|
||||
} else {
|
||||
Weapons_ViewAnimation(RADIO_USE);
|
||||
}
|
||||
pl.a_ammo1++;
|
||||
pl.a_ammo2--;
|
||||
#endif
|
||||
|
@ -183,9 +183,10 @@ void w_satchel_secondary(void)
|
|||
pl.a_ammo1++;
|
||||
pl.a_ammo2--;
|
||||
setmodel(pSeat->eViewModel, "models/v_satchel_radio.mdl");
|
||||
Weapons_ViewAnimation(RADIO_DRAW);
|
||||
#endif
|
||||
|
||||
Weapons_ViewAnimation(RADIO_DRAW);
|
||||
|
||||
pl.w_attack_next = 1.0f;
|
||||
pl.w_idle_next = 2.5f;
|
||||
}
|
||||
|
@ -201,13 +202,11 @@ void w_satchel_release(void)
|
|||
return;
|
||||
}
|
||||
|
||||
#ifdef CSQC
|
||||
if (pl.a_ammo1 <= 0) {
|
||||
Weapons_ViewAnimation(SATCHEL_FIDGET);
|
||||
} else {
|
||||
Weapons_ViewAnimation(RADIO_FIDGET);
|
||||
}
|
||||
#endif
|
||||
pl.w_idle_next = 15.0f;
|
||||
}
|
||||
|
||||
|
|
|
@ -65,9 +65,8 @@ void w_shotgun_pickup(void)
|
|||
|
||||
void w_shotgun_draw(void)
|
||||
{
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(SHOTGUN_DRAW);
|
||||
#else
|
||||
#ifdef SSQC
|
||||
player pl = (player)self;
|
||||
Weapons_UpdateAmmo(pl, pl.shotgun_mag, pl.ammo_buckshot, __NULL__);
|
||||
#endif
|
||||
|
@ -75,9 +74,7 @@ void w_shotgun_draw(void)
|
|||
|
||||
void w_shotgun_holster(void)
|
||||
{
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(SHOTGUN_HOLSTER);
|
||||
#endif
|
||||
}
|
||||
void w_shotgun_primary(void)
|
||||
{
|
||||
|
@ -112,10 +109,10 @@ void w_shotgun_primary(void)
|
|||
pl.shotgun_mag--;
|
||||
Weapons_UpdateAmmo(pl, pl.shotgun_mag, pl.ammo_buckshot, __NULL__);
|
||||
#else
|
||||
Weapons_ViewAnimation(SHOTGUN_FIRE1);
|
||||
Weapons_ViewPunchAngle([-5,0,0]);
|
||||
pl.a_ammo1--;
|
||||
#endif
|
||||
Weapons_ViewAnimation(SHOTGUN_FIRE1);
|
||||
|
||||
pl.w_attack_next = 0.75;
|
||||
pl.w_idle_next = 2.5f;
|
||||
|
@ -153,11 +150,10 @@ void w_shotgun_secondary(void)
|
|||
pl.shotgun_mag -= 2;
|
||||
Weapons_UpdateAmmo(pl, pl.shotgun_mag, pl.ammo_buckshot, __NULL__);
|
||||
#else
|
||||
Weapons_ViewAnimation(SHOTGUN_FIRE2);
|
||||
Weapons_ViewPunchAngle([-10,0,0]);
|
||||
pl.a_ammo1 -= 2;
|
||||
#endif
|
||||
|
||||
Weapons_ViewAnimation(SHOTGUN_FIRE2);
|
||||
pl.w_attack_next = 1.5f;
|
||||
pl.w_idle_next = 2.5f;
|
||||
}
|
||||
|
@ -195,7 +191,6 @@ void w_shotgun_release(void)
|
|||
}
|
||||
|
||||
if (pl.a_ammo3 == SHOTTY_IDLE) {
|
||||
#ifdef CSQC
|
||||
int r = floor(random(0,3));
|
||||
switch (r) {
|
||||
case 0:
|
||||
|
@ -208,17 +203,14 @@ void w_shotgun_release(void)
|
|||
Weapons_ViewAnimation(SHOTGUN_IDLE3);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
pl.w_idle_next = 15.0f;
|
||||
} else if (pl.a_ammo3 == SHOTTY_RELOAD_START) {
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(SHOTGUN_START_RELOAD);
|
||||
#endif
|
||||
pl.a_ammo3 = SHOTTY_RELOAD;
|
||||
pl.w_idle_next = 0.65f;
|
||||
} else if (pl.a_ammo3 == SHOTTY_RELOAD) {
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(SHOTGUN_RELOAD);
|
||||
#ifdef CSQC
|
||||
pl.a_ammo1++;
|
||||
pl.a_ammo2--;
|
||||
|
||||
|
@ -236,9 +228,8 @@ void w_shotgun_release(void)
|
|||
#endif
|
||||
pl.w_idle_next = 0.5f;
|
||||
} else if (pl.a_ammo3 == SHOTTY_RELOAD_END) {
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(SHOTGUN_PUMP);
|
||||
#else
|
||||
#ifdef SSQC
|
||||
sound(pl, CHAN_WEAPON, "weapons/scock1.wav", 1.0, ATTN_NORM);
|
||||
#endif
|
||||
pl.a_ammo3 = SHOTTY_IDLE;
|
||||
|
|
|
@ -26,9 +26,8 @@ void w_snark_pickup(void)
|
|||
|
||||
void w_snark_draw(void)
|
||||
{
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(SNARK_DRAW);
|
||||
#else
|
||||
#ifdef SSQC
|
||||
player pl = (player)self;
|
||||
Weapons_UpdateAmmo(pl, __NULL__, pl.ammo_snark, __NULL__);
|
||||
#endif
|
||||
|
@ -56,13 +55,12 @@ void w_snark_deploy(void)
|
|||
|
||||
if (self.weapon <= 0.0 && self.aiment == __NULL__) {
|
||||
float shortest = 999999;
|
||||
for (entity ef = world; (ef = find(ef, classname, "player"));) {
|
||||
for (entity ef = world; (ef = findfloat(ef, movetype, MOVETYPE_WALK));) {
|
||||
float len = vlen(ef.origin - self.origin);
|
||||
if (len < shortest && ef.health > 0) {
|
||||
if (ef.classname != "snark" && len < shortest && ef.health > 0) {
|
||||
self.owner = __NULL__;
|
||||
self.aiment = ef;
|
||||
shortest = len;
|
||||
setsize(self, [-16,-16,0],[16,16,32]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -80,7 +78,7 @@ void w_snark_deploy(void)
|
|||
makevectors(self.angles);
|
||||
traceline(self.origin, self.origin + (v_forward * 128), 0, self);
|
||||
|
||||
if (trace_ent.classname == "player") {
|
||||
if (trace_ent.takedamage == DAMAGE_YES) {
|
||||
float pit = 100 + random(0,10);
|
||||
sound(self, CHAN_BODY, "squeek/sqk_deploy1.wav", 1.0, ATTN_NORM, pit);
|
||||
Damage_Apply(trace_ent, self, 10, trace_endpos, FALSE);
|
||||
|
@ -102,6 +100,7 @@ void w_snark_deploy(void)
|
|||
static void snark_pain(int i) { }
|
||||
entity snark = spawn();
|
||||
snark.owner = self;
|
||||
snark.classname = "snark";
|
||||
setmodel(snark, "models/w_squeak.mdl");
|
||||
makevectors(self.v_angle);
|
||||
setorigin(snark, self.origin + v_forward * 32);
|
||||
|
@ -137,9 +136,10 @@ void w_snark_primary(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
Weapons_ViewAnimation(SNARK_THROW);
|
||||
|
||||
/* Audio-Visual Bit */
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(SNARK_THROW);
|
||||
pl.a_ammo2--;
|
||||
#else
|
||||
w_snark_deploy();
|
||||
|
|
|
@ -53,9 +53,8 @@ void w_tripmine_pickup(void)
|
|||
|
||||
void w_tripmine_draw(void)
|
||||
{
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(TRIPMINE_DRAW);
|
||||
#else
|
||||
#ifdef SSQC
|
||||
player pl = (player)self;
|
||||
Weapons_UpdateAmmo(pl, __NULL__, pl.ammo_tripmine, __NULL__);
|
||||
#endif
|
||||
|
@ -175,9 +174,8 @@ void w_tripmine_primary(void)
|
|||
return;
|
||||
}
|
||||
|
||||
#ifdef CSQC
|
||||
Weapons_ViewAnimation(TRIPMINE_FIRE2);
|
||||
#else
|
||||
#ifdef SSQC
|
||||
entity mine = spawn();
|
||||
setmodel(mine, "models/v_tripmine.mdl");
|
||||
setorigin(mine, trace_endpos);
|
||||
|
@ -197,7 +195,6 @@ void w_tripmine_primary(void)
|
|||
} else {
|
||||
Weapons_UpdateAmmo(pl, __NULL__, pl.ammo_tripmine, __NULL__);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
pl.w_attack_next = 0.5f;
|
||||
|
@ -224,17 +221,15 @@ void w_tripmine_release(void)
|
|||
switch (r) {
|
||||
case 0:
|
||||
Weapons_ViewAnimation(TRIPMINE_IDLE1);
|
||||
pl.w_idle_next = 3.0f;
|
||||
break;
|
||||
case 1:
|
||||
Weapons_ViewAnimation(TRIPMINE_IDLE2);
|
||||
pl.w_idle_next = 2.0f;
|
||||
break;
|
||||
default:
|
||||
Weapons_ViewAnimation(TRIPMINE_FIDGET);
|
||||
pl.w_idle_next = 3.333333f;
|
||||
break;
|
||||
}
|
||||
pl.w_idle_next = 3.0f;
|
||||
}
|
||||
|
||||
float w_tripmine_aimanim(void)
|
||||
|
|
|
@ -167,12 +167,14 @@ void Weapons_ViewAnimation(int i)
|
|||
#ifdef CSQC
|
||||
View_PlayAnimation(i);
|
||||
#else
|
||||
WriteByte( MSG_MULTICAST, SVC_CGAMEPACKET );
|
||||
/*WriteByte( MSG_MULTICAST, SVC_CGAMEPACKET );
|
||||
WriteByte( MSG_MULTICAST, EV_VIEWMODEL );
|
||||
WriteByte( MSG_MULTICAST, i );
|
||||
msg_entity = self;
|
||||
multicast( [0,0,0], MULTICAST_ONE );
|
||||
multicast( [0,0,0], MULTICAST_ONE );*/
|
||||
#endif
|
||||
player pl = (player)self;
|
||||
pl.weapontime = 0.0f;
|
||||
}
|
||||
|
||||
#ifdef CSQC
|
||||
|
|
Loading…
Reference in a new issue