summaryrefslogtreecommitdiffstats
path: root/sigencore/TeamMember.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sigencore/TeamMember.cpp')
-rw-r--r--sigencore/TeamMember.cpp50
1 files changed, 31 insertions, 19 deletions
diff --git a/sigencore/TeamMember.cpp b/sigencore/TeamMember.cpp
index 3f093b7e..ef8538ba 100644
--- a/sigencore/TeamMember.cpp
+++ b/sigencore/TeamMember.cpp
@@ -532,18 +532,21 @@ void Sigencore::TeamMember::teachMove(Sigscript::MoveWrapper* move)
void Sigencore::TeamMember::makeActive(Arena* arena)
{
- m_timer = 0;
- QList<Sigscript::StatusWrapper*> statuses = m_status.uniqueKeys();
+ // TODO
+ Team* team = qobject_cast<Team*>(this->containment());
+ QList<Sigscript::StatusWrapper*> statuses = m_status.keys();
foreach (Sigscript::StatusWrapper* status, statuses)
{
const Sigcore::Script script = status->battleScript();
if (!script.script().isEmpty())
{
- Kross::Action* action = new Kross::Action(Kross::Manager::self().actionCollection()->collection("status"), QUuid::createUuid().toString());
- action->setInterpreter(script.interpreter());
- action->setCode(script.script().toUtf8());
- action->addObject(arena, "arena");
- action->addObject(this, "owner");
+ ObjectMap objects;
+ objects["arena"] = arena;
+ objects["sigmod"] = m_sigmod;
+ if (team)
+ objects["client"] = team->player();
+ objects["owner"] = this;
+ Kross::Action* action = runScript(QUuid::createUuid().toString(), script, objects, Kross::Manager::self().actionCollection()->collection("status"));
action->trigger();
m_statusBattleScripts.append(action);
}
@@ -554,25 +557,34 @@ void Sigencore::TeamMember::makeActive(Arena* arena)
const Sigcore::Script script = ability->battleScript();
if (!script.script().isEmpty())
{
- Kross::Action* action = new Kross::Action(Kross::Manager::self().actionCollection()->collection("ability"), QUuid::createUuid().toString());
- action->setInterpreter(script.interpreter());
- action->setCode(script.script().toUtf8());
- action->addObject(arena, "arena");
- action->addObject(this, "owner");
+ ObjectMap objects;
+ objects["arena"] = arena;
+ objects["sigmod"] = m_sigmod;
+ if (team)
+ objects["client"] = team->player();
+ objects["owner"] = this;
+ Kross::Action* action = runScript(QUuid::createUuid().toString(), script, objects, Kross::Manager::self().actionCollection()->collection("ability"));
action->trigger();
m_abilityBattleScripts.append(action);
}
}
+ m_arena = arena;
}
-void Sigencore::TeamMember::leaveArena()
+void Sigencore::TeamMember::exitArena()
{
- Kross::ActionCollection* collection = Kross::Manager::self().actionCollection()->collection("status");
- foreach (Kross::Action* action, m_statusBattleScripts)
- collection->removeAction(action);
- collection = Kross::Manager::self().actionCollection()->collection("ability");
- foreach (Kross::Action* action, m_abilityBattleScripts)
- collection->removeAction(action);
+ // TODO
+ qDeleteAll(m_statusBattleScripts);
+ m_statusBattleScripts.clear();
+ qDeleteAll(m_abilityBattleScripts);
+ m_abilityBattleScripts.clear();
+ for (int i = Sigmod::ST_Attack; i <= Sigmod::ST_Evasion; ++i)
+ {
+ const QString entry = QString("stat-stages-%1").arg((m_sigmod->rules()->specialSplit() ? Sigmod::StatGSCStr : Sigmod::StatRBYStr)[i]);
+ if (options(entry) & Temporary)
+ removeValue(entry, false);
+ }
+ m_arena = NULL;
}
void Sigencore::TeamMember::writeBack()