X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;ds=sidebyside;f=qcsrc%2Fcommon%2Fanimdecide.qc;h=b53a9ba0e9cbf6123d7438736785e8206200358a;hb=ba78d7ca6e4c5335515fa66b3572661b90a2449d;hp=84e395aa24c35c8883664e666ee29f9e7e3c0b81;hpb=cc8753bb7a4b4f901de8f489c03ec1d147854a33;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/animdecide.qc b/qcsrc/common/animdecide.qc index 84e395aa2..b53a9ba0e 100644 --- a/qcsrc/common/animdecide.qc +++ b/qcsrc/common/animdecide.qc @@ -1,55 +1,48 @@ #include "animdecide.qh" -#include "monsters/all.qh" +#include #if defined(SVQC) #include "util.qh" #include "../server/defs.qh" #endif -bool monsters_animoverride(entity e) +bool monsters_animoverride(entity this) { Monster monster_id = NULL; - for(int i = MON_FIRST; i <= MON_LAST; ++i) - { - entity mon = get_monsterinfo(i); - - //if(substring(e.model, 0, strlen(mon.model) - 4) == substring(mon.model, 0, strlen(mon.model) - 4)) - if(e.model == mon.model) - { - monster_id = mon; - break; - } - } + FOREACH(Monsters, it != MON_Null && it.m_model.model_str() == this.model, { + monster_id = it; + break; + }); if(!monster_id) { return false; } - monster_id.mr_anim(monster_id); + monster_id.mr_anim(monster_id, this); vector none = '0 0 0'; - e.anim_duckwalk = e.anim_walk; - e.anim_duckjump = animfixfps(e, '5 1 10', none); - e.anim_duckidle = e.anim_idle; - e.anim_jump = animfixfps(e, '8 1 10', none); - e.anim_taunt = animfixfps(e, '12 1 0.33', none); - e.anim_runbackwards = e.anim_run; - e.anim_strafeleft = e.anim_run; - e.anim_straferight = e.anim_run; - e.anim_forwardright = e.anim_run; - e.anim_forwardleft = e.anim_run; - e.anim_backright = e.anim_run; - e.anim_backleft = e.anim_run; - e.anim_duckwalkbackwards = e.anim_walk; - e.anim_duckwalkstrafeleft = e.anim_walk; - e.anim_duckwalkstraferight = e.anim_walk; - e.anim_duckwalkforwardright = e.anim_walk; - e.anim_duckwalkforwardleft = e.anim_walk; - e.anim_duckwalkbackright = e.anim_walk; - e.anim_duckwalkbackleft = e.anim_walk; + this.anim_duckwalk = this.anim_walk; + this.anim_duckjump = animfixfps(this, '5 1 10', none); + this.anim_duckidle = this.anim_idle; + this.anim_jump = animfixfps(this, '8 1 10', none); + this.anim_taunt = animfixfps(this, '12 1 0.33', none); + this.anim_runbackwards = this.anim_run; + this.anim_strafeleft = this.anim_run; + this.anim_straferight = this.anim_run; + this.anim_forwardright = this.anim_run; + this.anim_forwardleft = this.anim_run; + this.anim_backright = this.anim_run; + this.anim_backleft = this.anim_run; + this.anim_duckwalkbackwards = this.anim_walk; + this.anim_duckwalkstrafeleft = this.anim_walk; + this.anim_duckwalkstraferight = this.anim_walk; + this.anim_duckwalkforwardright = this.anim_walk; + this.anim_duckwalkforwardleft = this.anim_walk; + this.anim_duckwalkbackright = this.anim_walk; + this.anim_duckwalkbackleft = this.anim_walk; // these anims ought to stay until stopped explicitly by weaponsystem - e.anim_shoot_z = 0.001; - e.anim_melee_z = 0.001; + this.anim_shoot_z = 0.001; + this.anim_melee_z = 0.001; return true; } @@ -66,6 +59,8 @@ void animdecide_load_if_needed(entity e) return; } +#define ANIM_VEC(a, frames, rate) anim_vec(ANIM_##a, mdlidx, frames, rate) + vector none = '0 0 0'; e.anim_die1 = animfixfps(e, ANIM_VEC(die1, 1, 0.5), none); // 2 seconds e.anim_die2 = animfixfps(e, ANIM_VEC(die2, 1, 0.5), none); // 2 seconds @@ -96,6 +91,8 @@ void animdecide_load_if_needed(entity e) e.anim_duckwalkbackright = animfixfps(e, ANIM_VEC(duckwalkbackright, 1, 1), ANIM_VEC(duckwalk, 1, 1)); e.anim_duckwalkbackleft = animfixfps(e, ANIM_VEC(duckwalkbackleft , 1, 1), ANIM_VEC(duckwalk, 1, 1)); +#undef ANIM_VEC + // these anims ought to stay until stopped explicitly by weaponsystem e.anim_shoot_z = 0.001; e.anim_melee_z = 0.001; @@ -267,7 +264,7 @@ void animdecide_setimplicitstate(entity e, float onground) // it slightly less likely to "hit two keys at once", so let's do this // here too - if(vlen(v) > 10) + if(vdist(v, >, 10)) { if(v.x > fabs(v.y) * 0.5) s |= ANIMIMPLICITSTATE_FORWARD;