Added taunts, visible on Quake 2 player models. Same wave X commands apply.
This commit is contained in:
parent
21c8c88ec8
commit
a74f5242a4
5 changed files with 83 additions and 0 deletions
|
@ -39,6 +39,7 @@ 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");
|
||||
|
@ -412,6 +413,11 @@ void CSQC_Parse_Event(void)
|
|||
float fHeader = readbyte();
|
||||
|
||||
switch (fHeader) {
|
||||
case EV_TAUNT:
|
||||
#ifdef VALVE
|
||||
Animation_Q2PlayerTaunt();
|
||||
#endif
|
||||
break;
|
||||
case EV_FADE:
|
||||
Fade_Parse();
|
||||
break;
|
||||
|
@ -519,6 +525,12 @@ 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;
|
||||
|
|
|
@ -25,6 +25,7 @@ enum {
|
|||
EV_MODELGIB,
|
||||
EV_CAMERATRIGGER,
|
||||
EV_ORBITUARY,
|
||||
EV_TAUNT,
|
||||
EV_CHAT,
|
||||
EV_CHAT_TEAM,
|
||||
EV_CHAT_VOX,
|
||||
|
|
|
@ -20,3 +20,24 @@ 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
|
||||
}
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#define QWSSQC
|
||||
#define VALVE
|
||||
#define SCIHUNT
|
||||
|
||||
#includelist
|
||||
../builtins.h
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#ifdef CSQC
|
||||
.float frame_last;
|
||||
.float baseframe_last;
|
||||
.float q2frameoverride;
|
||||
#else
|
||||
.float subblendfrac;
|
||||
.float subblend2frac;
|
||||
|
@ -27,6 +28,41 @@ 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
|
||||
|
@ -58,6 +94,9 @@ void Animation_Q2PlayerUpdate_Run(int id)
|
|||
|
||||
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 ) {
|
||||
|
@ -75,6 +114,15 @@ void Animation_Q2PlayerUpdate(void)
|
|||
}
|
||||
}
|
||||
|
||||
#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
|
||||
|
|
Loading…
Reference in a new issue