Class EventInstanceManager

java.lang.Object
scripting.EventInstanceManager

public class EventInstanceManager extends Object
單一事件(PQ/副本/Boss 挑戰)執行中的實例管理器,負責維護參與角色、怪物、地圖與計時器的生命週期。

每個 EventManager 可同時持有多個具名的 EventInstanceManager(以 WeakHashMap 儲存); 本類別持有該實例的玩家清單(chars)、離線玩家 ID(dced)、怪物清單(mobs)、 擊殺計數(killCount)、所使用的地圖 ID 列表,以及 ScheduledFuture 計時器。

關鍵協作者:

  • EventManager:建立並持有本實例,提供腳本 Invocable 以回呼事件函式。
  • MapleCharacter:透過 setEventInstance 與本實例雙向關聯。
  • ScriptEnginestrackStructuralLock 包覆 ReentrantReadWriteLock,防止 GraalJS 引擎 serialized() 代理在持結構鎖時同步進入腳本 Context 而造成死結。
  • Timer.EventTimer:排程事件逾時或週期性回呼。
  • Constructor Details

    • EventInstanceManager

      public EventInstanceManager(EventManager em, String name, int channel)
  • Method Details

    • registerPlayer

      public void registerPlayer(MapleCharacter chr)
    • changedMap

      public void changedMap(MapleCharacter chr, int mapid)
    • timeOut

      public void timeOut(long delay, EventInstanceManager eim)
    • stopEventTimer

      public void stopEventTimer()
    • restartEventTimer

      public void restartEventTimer(long time)
    • startEventTimer

      public void startEventTimer(long time)
    • isTimerStarted

      public boolean isTimerStarted()
    • getTimeLeft

      public long getTimeLeft()
    • registerParty

      public void registerParty(MapleParty party, MapleMap map)
    • unregisterPlayer

      public void unregisterPlayer(MapleCharacter chr)
    • disposeIfPlayerBelow

      public final boolean disposeIfPlayerBelow(byte size, int towarp)
    • saveBossQuest

      public final void saveBossQuest(int points)
    • saveNX

      public final void saveNX(int points)
    • getPlayers

      public List<MapleCharacter> getPlayers()
    • getDisconnected

      public List<Integer> getDisconnected()
    • getPlayerCount

      public final int getPlayerCount()
    • registerMonster

      public void registerMonster(MapleMonster mob)
    • unregisterMonster

      public void unregisterMonster(MapleMonster mob)
    • playerKilled

      public void playerKilled(MapleCharacter chr)
    • revivePlayer

      public boolean revivePlayer(MapleCharacter chr)
    • playerDisconnected

      public void playerDisconnected(MapleCharacter chr, int idz)
    • monsterKilled

      public void monsterKilled(MapleCharacter chr, MapleMonster mob)
      Parameters:
      chr -
      mob -
    • isRecordDamage

      public boolean isRecordDamage()
      取得傷害記錄開關狀態。
      Returns:
      true 表示已啟用 monsterDamaged(MapleCharacter, MapleMonster, int) 的傷害記錄回呼
    • setRecordDamage

      public void setRecordDamage(boolean recordDamage)
      設定傷害記錄開關。事件腳本須呼叫 setRecordDamage(true) 才會啟用 monsterDamaged(MapleCharacter, MapleMonster, int) 回呼。
      Parameters:
      recordDamage - 是否啟用傷害記錄
    • monsterDamaged

      public void monsterDamaged(MapleCharacter chr, MapleMonster mob, int damage)
    • addPVPScore

      public void addPVPScore(MapleCharacter chr, int score)
    • getKillCount

      public int getKillCount(MapleCharacter chr)
    • dispose_NoLock

      public void dispose_NoLock()
    • dispose

      public void dispose()
    • getChannelServer

      public ChannelServer getChannelServer()
    • getMobs

      public List<MapleMonster> getMobs()
    • giveAchievement

      public final void giveAchievement(int type)
    • broadcastPlayerMsg

      public final void broadcastPlayerMsg(int type, String msg)
    • newPair

      public final List<Pair<Integer,String>> newPair()
    • addToPair

      public void addToPair(List<Pair<Integer,String>> e, int e1, String e2)
    • newPair_chr

      public final List<Pair<Integer, MapleCharacter>> newPair_chr()
    • addToPair_chr

      public void addToPair_chr(List<Pair<Integer, MapleCharacter>> e, int e1, MapleCharacter e2)
    • broadcastPacket

      public final void broadcastPacket(byte[] p)
    • broadcastTeamPacket

      public final void broadcastTeamPacket(byte[] p, int team)
    • createInstanceMap

      public final MapleMap createInstanceMap(int mapid)
    • createInstanceMapS

      public final MapleMap createInstanceMapS(int mapid)
    • setInstanceMap

      public final MapleMap setInstanceMap(int mapid)
    • getMapFactory

      public final MapleMapFactory getMapFactory()
    • getMapInstance

      public final MapleMap getMapInstance(int args)
    • schedule

      public final void schedule(String methodName, long delay)
    • getName

      public final String getName()
    • setProperty

      public final void setProperty(String key, String value)
    • setProperty

      public final Object setProperty(String key, String value, boolean prev)
    • getProperty

      public final String getProperty(String key)
    • getProperties

      public final Properties getProperties()
    • leftParty

      public final void leftParty(MapleCharacter chr)
    • disbandParty

      public final void disbandParty()
    • finishPQ

      public final void finishPQ()
    • removePlayer

      public final void removePlayer(MapleCharacter chr)
    • registerCarnivalParty

      public final void registerCarnivalParty(MapleCharacter leader, MapleMap map, byte team)
    • onMapLoad

      public void onMapLoad(MapleCharacter chr)
    • isLeader

      public boolean isLeader(MapleCharacter chr)
    • registerSquad

      public void registerSquad(MapleSquad squad, MapleMap map, int questID)
    • isDisconnected

      public boolean isDisconnected(MapleCharacter chr)
    • removeDisconnected

      public void removeDisconnected(int id)
    • getEventManager

      public EventManager getEventManager()
    • applyBuff

      public void applyBuff(MapleCharacter chr, int id)
    • applySkill

      public void applySkill(MapleCharacter chr, int id)
    • PQClearEffect

      public void PQClearEffect()