Weapon prediction experiments

This commit is contained in:
Marco Cawthorne 2019-08-20 08:53:57 -07:00
parent 13d8f50df9
commit f8058ceeb0
46 changed files with 826 additions and 965 deletions

View file

@ -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

View file

@ -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;

View file

@ -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
}

View file

@ -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;

View file

@ -69,7 +69,6 @@ valve/view.c
view.c
damage.c
chat.c
corpse.c
vgui.cpp
rewolf/hud.c

View file

@ -70,7 +70,6 @@ valve/view.c
view.c
damage.c
chat.c
corpse.c
vgui.cpp
valve/hud.c

View file

@ -66,7 +66,6 @@ valve/view.c
view.c
damage.c
chat.c
corpse.c
vgui.cpp
valve/hud.c

View file

@ -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();

View file

@ -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);

View file

@ -26,8 +26,6 @@ enum {
EV_CAMERATRIGGER,
EV_ORBITUARY,
EV_SPEAK,
EV_TAUNT,
EV_CORPSE,
EV_CHAT,
EV_CHAT_TEAM,
EV_CHAT_VOX,

View 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;
}
}
}

View file

@ -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

View file

@ -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
}

View file

@ -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

View file

@ -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");

View file

@ -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

View file

@ -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

View file

@ -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];

View file

@ -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;

View file

@ -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

View file

@ -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);
}
}
}
}
}

View 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);
}

View file

@ -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);

View file

@ -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;
}

View file

@ -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;

View file

@ -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;
}

View file

@ -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)

View file

@ -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)

View file

@ -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);

View file

@ -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;
}
}

View file

@ -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);

View file

@ -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;

View file

@ -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)
{

View file

@ -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)

View file

@ -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,

View file

@ -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,

View file

@ -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)

View file

@ -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
}

View file

@ -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)

View file

@ -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)
{

View file

@ -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;

View file

@ -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;
}

View file

@ -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;

View file

@ -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();

View file

@ -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)

View file

@ -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