summaryrefslogtreecommitdiffstats
path: root/sigencore/TeamMember.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sigencore/TeamMember.cpp')
-rw-r--r--sigencore/TeamMember.cpp17
1 files changed, 17 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;