gameActorStateMonsterStuck.lua 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. local gameActorState = require( "actor/gameActorState")
  2. local gameActorStateMonsterStuck = class('gameActorStateMonsterStuck', gameActorState)
  3. function gameActorStateMonsterStuck:ctor()
  4. gameActorStateMonsterStuck.super.ctor(self)
  5. end
  6. function gameActorStateMonsterStuck:Tick(dt, monster)
  7. monster.mCurrentActT = monster.mCurrentActT-dt
  8. if monster.mCurrentActT <= 0.00001 then
  9. if monster.mActionHandler then
  10. monster.mActionHandler:handleActionCompleted( monster, global.MMO.ACTION_STUCK )
  11. end
  12. end
  13. end
  14. function gameActorStateMonsterStuck:OnEnter(monster)
  15. local mapProxy = global.Facade:retrieveProxy(global.ProxyTable.Map)
  16. local stuckTimeMS = (mapProxy:GetStuckActionTime() or 200) / 1000
  17. local currentActT = stuckTimeMS
  18. if monster:GetIsFullSpeedup() then
  19. currentActT = stuckTimeMS / global.MMO.DEFAULT_MUCH_FAST_TIME
  20. elseif monster:GetIsSpeedup() then
  21. currentActT = stuckTimeMS / global.MMO.DEFAULT_FAST_TIME_RATE
  22. end
  23. monster.mCurrentActT = currentActT
  24. end
  25. function gameActorStateMonsterStuck:OnExit(actor)
  26. end
  27. function gameActorStateMonsterStuck:ChangeState(newState, monster, isTerminate)
  28. monster.mCurrentState = newState
  29. return true
  30. end
  31. function gameActorStateMonsterStuck:GetStateID()
  32. return global.MMO.ACTION_STUCK
  33. end
  34. return gameActorStateMonsterStuck