gameActorStatePlayerAssassinSkill.lua 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. local gameActorState = require( "actor/gameActorState")
  2. local gameActorStatePlayerAssassinSkill = class('gameActorStatePlayerAssassinSkill', gameActorState)
  3. function gameActorStatePlayerAssassinSkill:ctor()
  4. gameActorStatePlayerAssassinSkill.super.ctor(self)
  5. end
  6. function gameActorStatePlayerAssassinSkill:Tick(dt, player)
  7. player.mCurrentActT = player.mCurrentActT - dt
  8. if 0 >= player.mCurrentActT and player.mIsConfirmed then
  9. if player.mActionHandler then
  10. player.mActionHandler:handleActionCompleted( player, global.MMO.ACTION_ASSASSIN_SKILL )
  11. end
  12. end
  13. -- confirmed timeout
  14. if player.mCurrentActT <= -5.0 then
  15. player:SetConfirmed(true)
  16. end
  17. end
  18. function gameActorStatePlayerAssassinSkill:OnEnter(player)
  19. if player.mActionHandler then
  20. player.mActionHandler:handleActionBegin( player, global.MMO.ACTION_ASSASSIN_SKILL, player.mOrient, 0 )
  21. end
  22. local clothID = player:GetAnimationID()
  23. local SkillPoxy = global.Facade:retrieveProxy(global.ProxyTable.Skill)
  24. local sex = player:GetValueByKey( global.MMO.BUFF_PLAYER_AVATAR_SEX ) or player:GetSexID()
  25. local defaultTime = SkillPoxy:GetSkillActionTime(global.MMO.ACTION_ASSASSIN_SKILL, clothID, sex) or global.MMO.DEFAULT_ASSASSIN_SKILL_TIME
  26. local attackSpeed = player:GetAttackSpeed()
  27. if SkillPoxy:GetSkillActionSpeed(global.MMO.ANIM_ASSASSIN_SKILL) == 1 then
  28. attackSpeed = player:GetMagicSpeed()
  29. end
  30. local animTime = defaultTime / attackSpeed
  31. player.mAnimTime = animTime
  32. player.mCurrentActT = animTime
  33. player:SetConfirmed(true)
  34. -- reset some data
  35. player:SetAnimPrepare( 0.0 )
  36. player:dirtyAnimFlag()
  37. end
  38. function gameActorStatePlayerAssassinSkill:OnExit(player)
  39. -- reset prepare time
  40. player:SetAnimPrepare(3)
  41. --
  42. player:SetAnimAct(global.MMO.ANIM_READY)
  43. player:dirtyAnimFlag()
  44. end
  45. function gameActorStatePlayerAssassinSkill:ChangeState(newState, player, isTerminate)
  46. player.mCurrentState = newState
  47. return true
  48. end
  49. function gameActorStatePlayerAssassinSkill:GetStateID()
  50. return global.MMO.ACTION_ASSASSIN_SKILL
  51. end
  52. return gameActorStatePlayerAssassinSkill