summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-02-12 03:57:06 -0500
committerBen Boeckel <MathStuf@gmail.com>2009-02-12 03:57:06 -0500
commitb10521502afe43f18f9082bb77478d2f2ca5069e (patch)
treef5ee5c7a07bfd07d47426870496a7dbb17ec7e7a
parent23ba853a90c701c6b8c5c8471193b027fd2ac9df (diff)
Fixed Arena to get the client from the TeamMember instead of having TeamMember store it
-rw-r--r--sigencore/Arena.cpp24
1 files changed, 14 insertions, 10 deletions
diff --git a/sigencore/Arena.cpp b/sigencore/Arena.cpp
index 088c8349..a62150d4 100644
--- a/sigencore/Arena.cpp
+++ b/sigencore/Arena.cpp
@@ -22,6 +22,7 @@
#include "Client.h"
#include "Player.h"
#include "RunScript.h"
+#include "Team.h"
// Sigscript includes
#include "../sigscript/ItemWrapper.h"
@@ -123,12 +124,15 @@ QList<Sigencore::Client*> Sigencore::Arena::teamPlayers(const int team) const
Sigencore::Player* Sigencore::Arena::player(TeamMember* teamMember) const
{
- return qobject_cast<Player*>(teamMember->client());
+ Team* team = qobject_cast<Team*>(teamMember->containment());
+ if (team)
+ return team->player();
+ return NULL;
}
int Sigencore::Arena::team(TeamMember* teamMember) const
{
- return team(teamMember->client());
+ return team(player(teamMember));
}
int Sigencore::Arena::team(Client* client) const
@@ -184,7 +188,7 @@ void Sigencore::Arena::setWeather(TeamMember* teamMember, Sigscript::WeatherWrap
objects["weather"] = weather;
objects["sigmod"] = m_sigmod;
objects["owner"] = teamMember;
- objects["client"] = teamMember->client();
+ objects["client"] = player(teamMember);
Kross::Action* action = runScript(QString("arena-weather-%1").arg(QUuid::createUuid().toString()), weather->script(), objects, m_actions);
m_weathers[weather] = action;
action->trigger();
@@ -287,7 +291,7 @@ void Sigencore::Arena::handleAction(TeamMember* teamMember, TeamMember::Action a
ObjectMap objects;
objects["arena"] = this;
objects["owner"] = teamMember;
- objects["client"] = teamMember->client();
+ objects["client"] = player(teamMember);
objects["sigmod"] = m_sigmod;
for (int i = 0; i < data.second.size(); ++i)
objects[QString("target%1").arg(i)] = findMember(data.second[i]);
@@ -306,7 +310,7 @@ void Sigencore::Arena::handleAction(TeamMember* teamMember, TeamMember::Action a
{
ObjectMap objects;
objects["arena"] = this;
- objects["client"] = teamMember->client();
+ objects["client"] = player(teamMember);
objects["sigmod"] = m_sigmod;
for (int i = 0; i < data.second.size(); ++i)
objects[QString("target%1").arg(i)] = findMember(data.second[i]);
@@ -317,16 +321,16 @@ void Sigencore::Arena::handleAction(TeamMember* teamMember, TeamMember::Action a
}
case TeamMember::Switch:
{
- Player* player = qobject_cast<Player*>(teamMember->client());
- if (player)
- player->switchOut(teamMember, player->findMember(data.second[0]));
+ Player* self = player(teamMember);
+ if (self)
+ self->switchOut(teamMember, self->findMember(data.second[0]));
break;
}
case TeamMember::Run:
{
if (!m_isWild)
break;
- Player* self = qobject_cast<Player*>(teamMember->client());
+ Player* self = player(teamMember);
const int numFlee = self->active().size();
Sigcore::Fraction selfRunChance;
self->valueOfType("runchance", &selfRunChance);
@@ -362,7 +366,7 @@ void Sigencore::Arena::handleAction(TeamMember* teamMember, TeamMember::Action a
ObjectMap objects;
objects["arena"] = this;
objects["owner"] = teamMember;
- objects["client"] = teamMember->client();
+ objects["client"] = player(teamMember);
objects["sigmod"] = m_sigmod;
for (int i = 0; i < data.second.size(); ++i)
objects[QString("target%1").arg(i)] = findMember(data.second[i]);