rewritten flag modes, added non-team ktf mode
git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@2521 e016b1c5-ed68-44aa-a2f7-31cac88cffde
This commit is contained in:
+18
-16
@@ -63,7 +63,7 @@ void renderentities()
|
||||
case CTFF_STOLEN:
|
||||
if(f.actor && f.actor != player1)
|
||||
{
|
||||
s_sprintfd(path)("pickups/flags/small_%s%s", m_ktf ? "" : team_string(i), m_htf ? "_htf" : m_ktf ? "ktf" : "");
|
||||
s_sprintfd(path)("pickups/flags/small_%s%s", m_ktf || m_tktf ? "" : team_string(i), m_htf ? "_htf" : m_ktf || m_tktf ? "ktf" : "");
|
||||
rendermodel(path, ANIM_FLAG|ANIM_START, 0, 1.1f, vec(f.actor->o).add(vec(0, 0, 0.3f+(sinf(lastmillis/100.0f)+1)/10)), lastmillis/2.5f, 0, 120.0f);
|
||||
}
|
||||
break;
|
||||
@@ -72,7 +72,7 @@ void renderentities()
|
||||
case CTFF_DROPPED:
|
||||
{
|
||||
entity &e = *f.flagent;
|
||||
s_sprintfd(path)("pickups/flags/%s%s", m_ktf ? "" : team_string(i), m_htf ? "_htf" : m_ktf ? "ktf" : "");
|
||||
s_sprintfd(path)("pickups/flags/%s%s", m_ktf || m_tktf ? "" : team_string(i), m_htf ? "_htf" : m_ktf || m_tktf ? "ktf" : "");
|
||||
rendermodel(path, ANIM_FLAG|ANIM_LOOP, 0, 4, vec(e.x, e.y, f.state==CTFF_INBASE ? (float)S(e.x, e.y)->floor : e.z), (float)((e.attr1+7)-(e.attr1+7)%15), 0, 120.0f);
|
||||
break;
|
||||
}
|
||||
@@ -162,9 +162,9 @@ void trypickupflag(int flag, playerent *d)
|
||||
if(f.state == CTFF_DROPPED) flagscore(f.team); // may not count!
|
||||
}
|
||||
}
|
||||
else if(m_ktf)
|
||||
else if(m_ktf || m_tktf)
|
||||
{
|
||||
if(f.state == CTFF_IDLE) return;
|
||||
if(f.state != CTFF_INBASE) return;
|
||||
flagpickup(flag);
|
||||
}
|
||||
}
|
||||
@@ -317,7 +317,7 @@ void flagpickup(int fln)
|
||||
f.actor = player1; // do this although we don't know if we picked the flag to avoid getting it after a possible respawn
|
||||
f.actor_cn = getclientnum();
|
||||
f.ack = false;
|
||||
addmsg(SV_FLAGPICKUP, "ri", f.team);
|
||||
addmsg(SV_FLAGACTION, "rii", FA_PICKUP, f.team);
|
||||
}
|
||||
|
||||
void tryflagdrop(bool manual)
|
||||
@@ -331,7 +331,7 @@ void tryflagdrop(bool manual)
|
||||
f.state = CTFF_DROPPED;
|
||||
f.ack = false;
|
||||
flagdropmillis = lastmillis+3000;
|
||||
addmsg(manual ? SV_FLAGDROP : SV_FLAGLOST, "ri", f.team);
|
||||
addmsg(SV_FLAGACTION, "rii", manual ? FA_DROP : FA_LOST, f.team);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -341,19 +341,19 @@ void flagreturn(int fln)
|
||||
flaginfo &f = flaginfos[fln];
|
||||
f.flagent->spawned = false;
|
||||
f.ack = false;
|
||||
addmsg(SV_FLAGRETURN, "ri", f.team);
|
||||
addmsg(SV_FLAGACTION, "rii", FA_RETURN, f.team);
|
||||
}
|
||||
|
||||
void flagscore(int fln)
|
||||
{
|
||||
flaginfo &f = flaginfos[fln];
|
||||
f.ack = false;
|
||||
addmsg(SV_FLAGSCORE, "ri", fln);
|
||||
addmsg(SV_FLAGACTION, "rii", FA_SCORE, f.team);
|
||||
}
|
||||
|
||||
// flag ent actions from the net
|
||||
|
||||
void flagstolen(int flag, int action, int act)
|
||||
void flagstolen(int flag, int act)
|
||||
{
|
||||
playerent *actor = act == getclientnum() ? player1 : getclient(act);
|
||||
if(!actor) return;
|
||||
@@ -362,10 +362,9 @@ void flagstolen(int flag, int action, int act)
|
||||
f.actor_cn = act;
|
||||
f.flagent->spawned = false;
|
||||
f.ack = true;
|
||||
flagmsg(flag, action);
|
||||
}
|
||||
|
||||
void flagdropped(int flag, int action, short x, short y, short z)
|
||||
void flagdropped(int flag, short x, short y, short z)
|
||||
{
|
||||
flaginfo &f = flaginfos[flag];
|
||||
if(OUTBORD(x, y)) return; // valid pos
|
||||
@@ -396,19 +395,22 @@ void flagdropped(int flag, int action, short x, short y, short z)
|
||||
if(f.flagent->z < hdr.waterlevel) f.flagent->z = (short) hdr.waterlevel;
|
||||
f.flagent->spawned = true;
|
||||
f.ack = true;
|
||||
flagmsg(flag, action);
|
||||
}
|
||||
|
||||
void flaginbase(int flag, int action, int act)
|
||||
void flaginbase(int flag)
|
||||
{
|
||||
flaginfo &f = flaginfos[flag];
|
||||
playerent *actor = act == getclientnum() ? player1 : getclient(act);
|
||||
if(actor) { f.actor = actor; f.actor_cn = act; }
|
||||
f.actor = NULL; f.actor_cn = -1;
|
||||
f.flagent->x = (ushort) f.originalpos.x;
|
||||
f.flagent->y = (ushort) f.originalpos.y;
|
||||
f.flagent->z = (ushort) f.originalpos.z;
|
||||
f.flagent->spawned = true;
|
||||
f.ack = true;
|
||||
flagmsg(flag, action);
|
||||
}
|
||||
|
||||
void flagidle(int flag)
|
||||
{
|
||||
flaginbase(flag);
|
||||
flaginfos[flag].flagent->spawned = false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user