summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-02-22 20:15:47 -0500
committerBen Boeckel <MathStuf@gmail.com>2009-02-22 20:15:47 -0500
commit7883e40cd8dbe3195ccc0ebe2816098217fde583 (patch)
tree76c55e916868b1c383e58234871c03d35b23f26a
parentde3f4a4a015f716a3ac91d794a6e8a5fd43ae37a (diff)
downloadsigen-7883e40cd8dbe3195ccc0ebe2816098217fde583.tar.gz
sigen-7883e40cd8dbe3195ccc0ebe2816098217fde583.tar.xz
sigen-7883e40cd8dbe3195ccc0ebe2816098217fde583.zip
Added Move script handling to TeamMember
-rw-r--r--sigencore/TeamMember.cpp17
-rw-r--r--sigencore/TeamMember.h4
2 files changed, 21 insertions, 0 deletions
diff --git a/sigencore/TeamMember.cpp b/sigencore/TeamMember.cpp
index 2fa7ad98..4f3937db 100644
--- a/sigencore/TeamMember.cpp
+++ b/sigencore/TeamMember.cpp
@@ -558,6 +558,19 @@ bool Sigencore::TeamMember::addMove(Sigscript::MoveWrapper* move)
}
if (canLearn && (m_moves.size() < m_sigmod->rules()->maxMoves()) && !m_moves.contains(move))
{
+ Team* team = qobject_cast<Team*>(m_containment);
+ if (team)
+ {
+ ObjectMap worldObjects;
+ worldObjects["move"] = move;
+ worldObjects["owner"] = this;
+ worldObjects["client"] = team->player();
+ worldObjects["sigmod"] = m_sigmod;
+ worldObjects["world"] = team->player()->world();
+ Kross::Action* worldAction = runScript(QUuid::createUuid(), move->worldScript(), worldObjects, m_moveWorldScripts);
+ m_moveWorldScriptsMap[move] = worldAction;
+ worldAction->trigger();
+ }
m_moves.append(move);
emit(moveAdded(move));
return true;
@@ -569,6 +582,10 @@ bool Sigencore::TeamMember::removeMove(Sigscript::MoveWrapper* move)
{
if (m_moves.contains(move) && (1 < m_moves.size()))
{
+ delete m_moveBattleScriptsMap[move];
+ m_moveBattleScriptsMap.remove(move);
+ delete m_moveWorldScriptsMap[move];
+ m_moveWorldScriptsMap.remove(move);
m_moves.removeOne(move);
emit(moveRemoved(move));
return true;
diff --git a/sigencore/TeamMember.h b/sigencore/TeamMember.h
index b0088873..0897c839 100644
--- a/sigencore/TeamMember.h
+++ b/sigencore/TeamMember.h
@@ -225,11 +225,15 @@ class SIGENCORE_EXPORT TeamMember : public Sigscript::Config
Kross::ActionCollection* m_abilityBattleScripts;
Kross::ActionCollection* m_abilityWorldScripts;
+ Kross::ActionCollection* m_moveBattleScripts;
+ Kross::ActionCollection* m_moveWorldScripts;
Kross::ActionCollection* m_statusBattleScripts;
Kross::ActionCollection* m_statusWorldScripts;
QMap<Sigscript::AbilityWrapper*, Kross::Action*> m_abilityBattleScriptsMap;
QMap<Sigscript::AbilityWrapper*, Kross::Action*> m_abilityWorldScriptsMap;
+ QMap<Sigscript::MoveWrapper*, Kross::Action*> m_moveBattleScriptsMap;
+ QMap<Sigscript::MoveWrapper*, Kross::Action*> m_moveWorldScriptsMap;
QMap<Sigscript::StatusWrapper*, Kross::Action*> m_statusBattleScriptsMap;
QMap<Sigscript::StatusWrapper*, Kross::Action*> m_statusWorldScriptsMap;