diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2009-02-12 03:57:06 -0500 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2009-02-12 03:57:06 -0500 |
| commit | b10521502afe43f18f9082bb77478d2f2ca5069e (patch) | |
| tree | f5ee5c7a07bfd07d47426870496a7dbb17ec7e7a | |
| parent | 23ba853a90c701c6b8c5c8471193b027fd2ac9df (diff) | |
Fixed Arena to get the client from the TeamMember instead of having TeamMember store it
| -rw-r--r-- | sigencore/Arena.cpp | 24 |
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]); |
