+#include "csqcmodel_hooks.qh"
#include "mutators/events.qh"
#include "player_skeleton.qh"
#include "weapons/projectile.qh"
#include <common/animdecide.qh>
+#include <common/ent_cs.qh>
#include <common/physics/movetypes/movetypes.qh>
#include <common/viewloc.qh>
#include <lib/csqcmodel/cl_model.qh>
_setmodel(e, cvar_defstring("_cl_playermodel"));
forceplayermodels_goodmodel = e.model;
forceplayermodels_goodmodelindex = e.modelindex;
- remove(e);
+ delete(e);
}
// first, try finding it from the server
forceplayermodels_model = e.model;
forceplayermodels_modelindex = e.modelindex;
forceplayermodels_skin = autocvar__cl_playerskin;
- remove(e);
+ delete(e);
}
if(autocvar_cl_forcemyplayermodel != "" && autocvar_cl_forcemyplayermodel != forceplayermodels_mymodel)
forceplayermodels_myisgoodmodel = fexists(e.model);
forceplayermodels_mymodel = e.model;
forceplayermodels_mymodelindex = e.modelindex;
- remove(e);
+ delete(e);
}
// apply it
bool isfriend;
int cm;
cm = this.forceplayermodels_savecolormap;
- cm = (cm >= 1024) ? cm : (stof(getplayerkeyvalue(cm - 1, "colors")) + 1024);
+ cm = (cm >= 1024) ? cm : (entcs_GetClientColors(cm - 1) + 1024);
if(teamplay)
isfriend = (cm == 1024 + 17 * myteam);
// GLOWMOD AND DEATH FADING
if(this.colormap > 0)
- this.glowmod = colormapPaletteColor(((this.colormap >= 1024) ? this.colormap : stof(getplayerkeyvalue(this.colormap - 1, "colors"))) & 0x0F, true) * 2;
+ this.glowmod = colormapPaletteColor(((this.colormap >= 1024) ? this.colormap : entcs_GetClientColors(this.colormap - 1)) & 0x0F, true) * 2;
else
this.glowmod = '1 1 1';
}
int CSQCPlayer_FallbackFrame(entity this, int f)
{
+ TC(int, f);
if(frameduration(this.modelindex, f) > 0)
return f; // goooooood
if(frameduration(this.modelindex, 1) <= 0)
case 29: return 4; // anim_duckwalkbackright -> anim_duckwalk
case 30: return 4; // anim_duckwalkbackleft -> anim_duckwalk
}
- LOG_INFOF("Frame %d missing in model %s, and we have no fallback - FAIL!\n", f, this.model);
+ LOG_DEBUGF("Frame %d missing in model %s, and we have no fallback - FAIL!", f, this.model);
return f;
}
void CSQCPlayer_FallbackFrame_Apply(entity this)
void CSQCModel_AutoTagIndex_Apply(entity this)
{
if(this.tag_entity && wasfreed(this.tag_entity))
- this.tag_entity = world;
-
- WITH(entity, self, this, viewloc_SetTags());
+ this.tag_entity = NULL;
MUTATOR_CALLHOOK(TagIndex_Update, this);
bool changed = 0;
if(this.tag_entity.entnum != this.tag_networkentity)
{
- this.tag_entity = findfloat(world, entnum, this.tag_networkentity);
+ this.tag_entity = findfloat(NULL, entnum, this.tag_networkentity);
changed = 1;
}
// recursive predraw call to fix issues with forcemodels and LOD if bone indexes mismatch
if(this.tag_entity.classname == "csqcmodel")
{
- WITH(entity, this, this.tag_entity, CSQCModel_Hook_PreDraw(this, (this.entnum >= 1 && this.entnum <= maxclients)));
+ CSQCModel_Hook_PreDraw(this.tag_entity, (this.tag_entity.entnum >= 1 && this.tag_entity.entnum <= maxclients));
}
if(this.tag_entity.modelindex != this.tag_entity_lastmodelindex)
if(!this.tag_index)
{
// we need to prevent this from 'appening
- this.tag_entity = world;
+ this.tag_entity = NULL;
this.drawmask = 0;
- LOG_TRACE("h_ model lacks weapon attachment, but v_ model is attached to it\n");
+ LOG_TRACE("h_ model lacks weapon attachment, but v_ model is attached to it");
}
}
else if(this.tag_entity.isplayermodel)
}
}
-// FEATURE: EF_NODRAW workalike
-const int EF_BRIGHTFIELD = BIT(0);
-const int EF_BRIGHTLIGHT = BIT(2);
-const int EF_DIMLIGHT = BIT(3);
-const int EF_DOUBLESIDED = BIT(15);
-const int EF_NOSELFSHADOW = BIT(16);
-const int EF_DYNAMICMODELLIGHT = BIT(17);
-const int EF_RESTARTANIM_BIT = BIT(20);
-const int EF_TELEPORT_BIT = BIT(21);
-const int MF_ROCKET = BIT(0); // leave a trail
-const int MF_GRENADE = BIT(1); // leave a trail
-const int MF_GIB = BIT(2); // leave a trail
-const int MF_ROTATE = BIT(3); // rotate (bonus items)
-const int MF_TRACER = BIT(4); // green split trail
-const int MF_ZOMGIB = BIT(5); // small blood trail
-const int MF_TRACER2 = BIT(6); // orange split trail
-const int MF_TRACER3 = BIT(7); // purple trail
-.int csqcmodel_effects;
-.int csqcmodel_modelflags;
-.int csqcmodel_traileffect;
void CSQCModel_Effects_PreUpdate(entity this)
{
this.effects = this.csqcmodel_effects;
{
if (this == csqcplayer) {
if (this.csqcmodel_teleported) {
- WITH(entity, self, this, Reset_ArcBeam());
+ Reset_ArcBeam();
}
}
this.csqcmodel_effects = this.effects;
{
if(!this.snd_looping)
{
- sound(this, CH_TRIGGER_SINGLE, SND_JETPACK_FLY, VOL_BASE, autocvar_g_jetpack_attenuation);
+ sound(this, CH_TRIGGER_SINGLE, SND_JETPACK_FLY, VOL_BASE, autocvar_cl_jetpack_attenuation);
this.snd_looping = CH_TRIGGER_SINGLE;
}
}
{
if(this.snd_looping)
{
- sound(this, this.snd_looping, SND_Null, VOL_BASE, autocvar_g_jetpack_attenuation);
+ sound(this, this.snd_looping, SND_Null, VOL_BASE, autocvar_cl_jetpack_attenuation);
this.snd_looping = 0;
}
}
this.anim_saveframe2time = this.anim_frame2time;
// Note: we always consider lerpfrac "changed", as it uses fixed values every time anyway.
// This ensures that .frame etc. are always written.
- WITH(entity, self, this, CSQCModel_InterpolateAnimation_2To4_PreNote(sf | CSQCMODEL_PROPERTY_LERPFRAC));
+ CSQCModel_InterpolateAnimation_2To4_PreNote(this, sf | CSQCMODEL_PROPERTY_LERPFRAC);
this.lerpfrac = (doblend ? 0.5 : 0);
this.frame = this.anim_frame;
this.frame1time = this.anim_frame1time;
this.frame2 = this.anim_frame2;
this.frame2time = this.anim_frame2time;
- WITH(entity, self, this, CSQCModel_InterpolateAnimation_2To4_Note(sf | CSQCMODEL_PROPERTY_LERPFRAC, false));
- WITH(entity, self, this, CSQCModel_InterpolateAnimation_2To4_Do());
+ CSQCModel_InterpolateAnimation_2To4_Note(this, sf | CSQCMODEL_PROPERTY_LERPFRAC, false);
+ CSQCModel_InterpolateAnimation_2To4_Do(this);
if(doblend)
{
skeleton_from_frames(this, this.csqcmodel_isdead);