From c589353c1634a94b74e2f79c6146f26c9844082b Mon Sep 17 00:00:00 2001 From: UnKownOwO <80520429@qq.com> Date: Thu, 2 Feb 2023 23:26:34 +0800 Subject: [PATCH] =?UTF-8?q?=E8=83=A1=E6=A1=83=E7=AD=89=E8=A7=92=E8=89=B2?= =?UTF-8?q?=E9=87=8D=E5=87=BB=E8=80=90=E5=8A=9B=E6=B6=88=E8=80=97=E7=AD=96?= =?UTF-8?q?=E7=95=A5=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gs/game/player_stamina.go | 13 +++++++++---- gs/model/stamina.go | 1 + 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/gs/game/player_stamina.go b/gs/game/player_stamina.go index ba438a4e..c28556b4 100644 --- a/gs/game/player_stamina.go +++ b/gs/game/player_stamina.go @@ -73,12 +73,17 @@ func (g *GameManager) HandleAbilityStamina(player *model.Player, entry *proto.Ab return } // 距离技能开始过去的时间 - pastTime := time.Now().UnixMilli() - player.StaminaInfo.LastSkillTime - // 法器角色轻击也会算触发重击消耗 - // 所以通过策略判断 必须距离技能开始过去200ms才算重击 - if player.StaminaInfo.LastSkillId == uint32(avatarAbility.AvatarSkillId) && pastTime > 200 { + startPastTime := time.Now().UnixMilli() - player.StaminaInfo.LastSkillTime + // 距离上次技能消耗的时间 + changePastTime := time.Now().UnixMilli() - player.StaminaInfo.LastSkillChargeTime + // 法器角色轻击也会算触发重击消耗 胡桃等角色重击一次会多次消耗 + // 所以通过策略判断 必须距离技能开始过去200ms才算重击 两次技能耐力消耗之间需间隔500ms + + // 暂时就这样实现重击消耗 以后应该还会有更好的办法~ + if player.StaminaInfo.LastSkillId == uint32(avatarAbility.AvatarSkillId) && startPastTime > 200 && changePastTime > 500 { // 重击对应的耐力消耗 g.ChargedAttackStamina(player, worldAvatar, avatarAbility) + player.StaminaInfo.LastSkillChargeTime = time.Now().UnixMilli() } default: break diff --git a/gs/model/stamina.go b/gs/model/stamina.go index eb29047b..6c89a607 100644 --- a/gs/model/stamina.go +++ b/gs/model/stamina.go @@ -14,6 +14,7 @@ type StaminaInfo struct { LastSkillId uint32 // 最后释放的技能Id LastSkillTime int64 // 最后释放技能的时间 LastSkillStartTime int64 // 最后执行开始技能耐力消耗的时间 + LastSkillChargeTime int64 // 最后执行技能耐力消耗的时间 DrownBackDelay uint8 // 溺水返回安全点延时 }