diff options
Diffstat (limited to 'sigencore/TeamMember.cpp')
| -rw-r--r-- | sigencore/TeamMember.cpp | 17 |
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; |
