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:
ac_stef
2008-09-11 16:28:56 +00:00
parent 9e9712a7e2
commit 675e248a05
10 changed files with 308 additions and 225 deletions
+18 -16
View File
@@ -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;
}