mirror of
https://github.com/FlourishingWorld/hk4e.git
synced 2026-02-23 14:32:27 +08:00
技能开始耐力消耗
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
AvatarSkillId,AbilityName,,,,CostStamina,CostElemType,CostElemVal,,,,,,,,,,,,,,,,,,,,
|
AvatarSkillId,AbilityName,,,,CostStamina,CostElemType,CostElemVal,,,,,,,,,,,,,,,,,,,,
|
||||||
int32,string,,,,int32,int32,int32,,,,,,,,,,,,,,,,,,,,
|
int32,string,,,,int32,int32,int32,,,,,,,,,,,,,,,,,,,,
|
||||||
ID,Ability名称,是远程,技能CD,无视冷却缩减属性,消耗体力,消耗能量类型,消耗能量值,可累积次数,TriggerID,索敌范围,索敌公式权重1,索敌公式权重2,索敌公式权重3,索敌公式权重4,是默认镜头,支持按钮拖动,是否显示箭头,是否监控状态,默认锁定,图标名称,升级技能组ID,技能能量键值,消耗能量最小值,CanDoSkill为false强制可用,处理冷却所属技能槽,是否存档,shareCDID
|
ID,Ability名称,是远程,技能CD,无视冷却缩减属性,消耗体力,消耗能量类型,消耗能量值,可累积次数,TriggerID,索敌范围,索敌公式权重1,索敌公式权重2,索敌公式权重3,索敌公式权重4,是默认镜头,支持按钮拖动,是否显示箭头,是否监控状态,默认锁定,图标名称,升级技能组ID,技能能量键值,消耗能量最小值,CanDoSkill为false强制可用,处理冷却所属技能槽,是否存档,shareCDID
|
||||||
10001,,,0,,1,,,1,0,CircleLockEnemyR5H6HC,1,1,0.3,0,1,,,,,,0,,,,,,
|
10001,,,0,,1,,,1,0,CircleLockEnemyR5H6HC,1,1,0.3,0,1,,,,,,0,,,,,,
|
||||||
10002,,,0,,1,,,1,0,CircleLockEnemyR5H6HC,1,1,0.3,0,1,,,,,,0,,,,,,
|
10002,,,0,,1,,,1,0,CircleLockEnemyR5H6HC,1,1,0.3,0,1,,,,,,0,,,,,,
|
||||||
10003,,,0,,1,,,1,0,CircleLockEnemyR5H6HC,1,1,0.3,0,1,,,,,,0,,,,,,
|
10003,,,0,,1,,,1,0,CircleLockEnemyR5H6HC,1,1,0.3,0,1,,,,,,0,,,,,,
|
||||||
@@ -11,7 +11,7 @@ ID,Ability
|
|||||||
10102,,,10,,0,,,1,0,CircleLockEnemyR5H6HC,1,1,0.3,0,1,,,,,,0,,,,,,
|
10102,,,10,,0,,,1,0,CircleLockEnemyR5H6HC,1,1,0.3,0,1,,,,,,0,,,,,,
|
||||||
10111,,,0,,10,,,1,11,CircleLockEnemy,1,1,0.3,0,1,,,,,,0,,,,,,
|
10111,,,0,,10,,,1,11,CircleLockEnemy,1,1,0.3,0,1,,,,,,0,,,,,,
|
||||||
10012,,,2,,0,,,1,2,CircleLockEnemyR15H10HC,1,1,0.3,0,1,,,,,,0,,,,,,
|
10012,,,2,,0,,,1,2,CircleLockEnemyR15H10HC,1,1,0.3,0,1,,,,,,0,,,,,,
|
||||||
10013,,,0,,1,,,1,3,CircleLockEnemyR5H6HC,1,1,0.3,0,,1,1,,,,233,,,1,,,
|
10013,,,0,,15,,,1,3,CircleLockEnemyR5H6HC,1,1,0.3,0,,1,1,,,,233,,,1,,,
|
||||||
10014,,,8,,0,4,30,1,5,CircleLockEnemyR15H10HC,1,1,0.3,0,1,,,,,,0,,,,,,
|
10014,,,8,,0,4,30,1,5,CircleLockEnemyR15H10HC,1,1,0.3,0,1,,,,,,0,,,,,,
|
||||||
10015,,,8,,0,,,1,4,CircleLockEnemyR15H10HC,1,1,0.3,0,1,,,,,,0,,,,,,
|
10015,,,8,,0,,,1,4,CircleLockEnemyR15H10HC,1,1,0.3,0,1,,,,,,0,,,,,,
|
||||||
10016,,,0,,0,,,1,4,CircleLockEnemyR5H6HC,1,1,0.3,0,1,,,,,,0,,,,,,
|
10016,,,0,,0,,,1,4,CircleLockEnemyR5H6HC,1,1,0.3,0,1,,,,,,0,,,,,,
|
||||||
@@ -178,7 +178,7 @@ ID,Ability
|
|||||||
10403,Diluc_FireCross,,12,,0,5,40,1,5,CircleLockEnemyR15H10HC,1,1,0.3,0,1,,,,,,3639,,,,,,
|
10403,Diluc_FireCross,,12,,0,5,40,1,5,CircleLockEnemyR15H10HC,1,1,0.3,0,1,,,,,,3639,,,,,,
|
||||||
10411,Avatar_Mona_ExtraAttack,,0,,0,,,1,0,CircleLockEnemyR15H10HC,1,1,0.3,0,1,,,,,,4131,,,,,,
|
10411,Avatar_Mona_ExtraAttack,,0,,0,,,1,0,CircleLockEnemyR15H10HC,1,1,0.3,0,1,,,,,,4131,,,,,,
|
||||||
10412,,,12,,0,,,1,2,CircleLockEnemyR15H10HC,1,1,0.3,0,1,,,,,,4132,,,,,,
|
10412,,,12,,0,,,1,2,CircleLockEnemyR15H10HC,1,1,0.3,0,1,,,,,,4132,,,,,,
|
||||||
10413,,,0,,1,,,1,3,CircleLockEnemyR5H6HC,1,1,0.3,0,,1,1,,,,4133,,,1,,,
|
10413,,,0,,15,,,1,3,CircleLockEnemyR5H6HC,1,1,0.3,0,,1,1,,,,4133,,,1,,,
|
||||||
10415,,,15,,0,2,60,1,5,CircleLockEnemyR15H10HC,1,1,0.3,0,1,,,,,,4139,,,,,,
|
10415,,,15,,0,2,60,1,5,CircleLockEnemyR15H10HC,1,1,0.3,0,1,,,,,,4139,,,,,,
|
||||||
10421,Avatar_Keqing_ExtraAttack,,0,,0,,,1,0,CircleLockEnemyR5H6HC,1,1,0.3,0,1,,,,,,4231,,,,,,
|
10421,Avatar_Keqing_ExtraAttack,,0,,0,,,1,0,CircleLockEnemyR5H6HC,1,1,0.3,0,1,,,,,,4231,,,,,,
|
||||||
10422,,,7.5,,0,,,1,2,CircleLockEnemyR15H10HC,1,1,0.3,0,1,,,,,,4232,,,,,,
|
10422,,,7.5,,0,,,1,2,CircleLockEnemyR15H10HC,1,1,0.3,0,1,,,,,,4232,,,,,,
|
||||||
@@ -298,13 +298,13 @@ ID,Ability
|
|||||||
10713,,,3,,0,,,1,2,CircleLockEnemyR8H6HC,1,1,0.3,0,1,,,,,,0,,,,2,,
|
10713,,,3,,0,,,1,2,CircleLockEnemyR8H6HC,1,1,0.3,0,1,,,,,,0,,,,2,,
|
||||||
10715,,,20,,0,4,80,1,5,CircleLockEnemyR8H6HC,1,1,0.3,0,1,,,,,,7139,,,,,,
|
10715,,,20,,0,4,80,1,5,CircleLockEnemyR8H6HC,1,1,0.3,0,1,,,,,,7139,,,,,,
|
||||||
10721,Avatar_Candace_ExtraAttack,,0,,0,,,1,0,CircleLockEnemyR5H6HC,1,1,0.3,0,1,,,,,,7231,,,,,,
|
10721,Avatar_Candace_ExtraAttack,,0,,0,,,1,0,CircleLockEnemyR5H6HC,1,1,0.3,0,1,,,,,,7231,,,,,,
|
||||||
10722,·,,6,,0,,,1,2,CircleLockEnemyR8H6HC,1,1,0.3,0,1,2,1,,,,7232,,,,,,
|
10722,·,,6,,0,,,1,2,CircleLockEnemyR8H6HC,1,1,0.3,0,1,2,1,,,,7232,,,,,,
|
||||||
10725,,,15,,0,2,60,1,5,CircleLockEnemyR8H6HC,1,1,0.3,0,1,,,,,,7239,,,,,,
|
10725,,,15,,0,2,60,1,5,CircleLockEnemyR8H6HC,1,1,0.3,0,1,,,,,,7239,,,,,,
|
||||||
10731,Avatar_Nahida_ExtraAttack,,0,,0,,,1,0,CircleLockEnemyR10H6HC,1,1,0.3,0,1,,,,,,7331,,,,,,
|
10731,Avatar_Nahida_ExtraAttack,,0,,0,,,1,0,CircleLockEnemyR10H6HC,1,1,0.3,0,1,,,,,,7331,,,,,,
|
||||||
10732,·,,5,,0,,,1,2,CircleLockEnemyR8H6HC,1,1,0.3,0,1,,,,,,7332,,,,,,
|
10732,·,,5,,0,,,1,2,CircleLockEnemyR8H6HC,1,1,0.3,0,1,,,,,,7332,,,,,,
|
||||||
10735,,,13.5,,0,3,50,1,5,CircleLockEnemyR15H10HC,1,1,0.3,0,1,,,,,,7339,,,,,,
|
10735,,,13.5,,0,3,50,1,5,CircleLockEnemyR15H10HC,1,1,0.3,0,1,,,,,,7339,,,,,,
|
||||||
10741,Avatar_Layla_ExtraAttack,,0,,0,,,1,0,CircleLockEnemyR5H6HC,1,1,0.3,0,1,,,,,,7431,,,,,,
|
10741,Avatar_Layla_ExtraAttack,,0,,0,,,1,0,CircleLockEnemyR5H6HC,1,1,0.3,0,1,,,,,,7431,,,,,,
|
||||||
10742,·,,12,,0,,,1,2,CircleLockEnemyR8H6HC,1,1,0.3,0,1,,,,,,7432,,,,,,
|
10742,·,,12,,0,,,1,2,CircleLockEnemyR8H6HC,1,1,0.3,0,1,,,,,,7432,,,,,,
|
||||||
10745,,,12,,0,5,40,1,5,CircleLockEnemyR15H10HC,1,1,0.3,0,1,,,,,,7439,,,,,,
|
10745,,,12,,0,5,40,1,5,CircleLockEnemyR15H10HC,1,1,0.3,0,1,,,,,,7439,,,,,,
|
||||||
20001,Dvalin_S01_AirGun,,0,,999999,,,1,0,CircleLockEnemyR10,1,1,0.3,0,1,2,1,,,,0,,,,,,
|
20001,Dvalin_S01_AirGun,,0,,999999,,,1,0,CircleLockEnemyR10,1,1,0.3,0,1,2,1,,,,0,,,,,,
|
||||||
20002,Dvalin_S01_AirGun,,0,,0,,,1,0,CircleLockEnemyR10,1,1,0.3,0,1,2,1,,,,0,,,,,,
|
20002,Dvalin_S01_AirGun,,0,,0,,,1,0,CircleLockEnemyR10,1,1,0.3,0,1,2,1,,,,0,,,,,,
|
||||||
|
|||||||
|
@@ -21,11 +21,13 @@ type StaminaCost struct {
|
|||||||
SKIFF int32 // 游艇行驶
|
SKIFF int32 // 游艇行驶
|
||||||
STANDBY int32 // 站立
|
STANDBY int32 // 站立
|
||||||
WALK int32 // 走路
|
WALK int32 // 走路
|
||||||
// 战斗技能
|
// 武器消耗默认值
|
||||||
FIGHT_SWORD_ONE_HAND int32 // 单手剑
|
FIGHT_SWORD_ONE_HAND int32 // 单手剑
|
||||||
FIGHT_POLE int32 // 长枪
|
FIGHT_POLE int32 // 长枪
|
||||||
FIGHT_CATALYST int32 // 法器
|
FIGHT_CATALYST int32 // 法器
|
||||||
FIGHT_CLAYMORE_PER int32 // 双手剑 (每秒消耗)
|
FIGHT_CLAYMORE_PER int32 // 双手剑 (每秒消耗)
|
||||||
|
// 技能开始消耗 (目前仅发现绫华与莫娜的冲刺会有开始消耗)
|
||||||
|
SKILL_START map[uint32]int32 // [skillId]消耗值
|
||||||
}
|
}
|
||||||
|
|
||||||
func InitStaminaCostConst() {
|
func InitStaminaCostConst() {
|
||||||
@@ -51,4 +53,8 @@ func InitStaminaCostConst() {
|
|||||||
StaminaCostConst.FIGHT_POLE = -2500
|
StaminaCostConst.FIGHT_POLE = -2500
|
||||||
StaminaCostConst.FIGHT_CATALYST = -5000
|
StaminaCostConst.FIGHT_CATALYST = -5000
|
||||||
StaminaCostConst.FIGHT_CLAYMORE_PER = -4000
|
StaminaCostConst.FIGHT_CLAYMORE_PER = -4000
|
||||||
|
StaminaCostConst.SKILL_START = map[uint32]int32{
|
||||||
|
10013: -1000, // 绫华冲刺(霰步)
|
||||||
|
10413: -1000, // 莫娜冲刺(虚实流动)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -243,7 +243,7 @@ func (t *TickManager) onTick200MilliSecond(now int64) {
|
|||||||
// 耐力消耗
|
// 耐力消耗
|
||||||
for _, world := range WORLD_MANAGER.worldMap {
|
for _, world := range WORLD_MANAGER.worldMap {
|
||||||
for _, player := range world.playerMap {
|
for _, player := range world.playerMap {
|
||||||
GAME_MANAGER.StaminaHandler(player)
|
GAME_MANAGER.SustainStaminaHandler(player)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ func (g *GameManager) CombatInvocationsNotify(player *model.Player, payloadMsg p
|
|||||||
sceneEntity.lastMoveReliableSeq = entityMoveInfo.ReliableSeq
|
sceneEntity.lastMoveReliableSeq = entityMoveInfo.ReliableSeq
|
||||||
|
|
||||||
// 处理耐力消耗
|
// 处理耐力消耗
|
||||||
g.HandleStamina(player, motionInfo.State)
|
g.ImmediateStamina(player, motionInfo.State)
|
||||||
|
|
||||||
player.CombatInvokeHandler.AddEntry(entry.ForwardType, entry)
|
player.CombatInvokeHandler.AddEntry(entry.ForwardType, entry)
|
||||||
case proto.CombatTypeArgument_COMBAT_TYPE_ARGUMENT_ANIMATOR_STATE_CHANGED:
|
case proto.CombatTypeArgument_COMBAT_TYPE_ARGUMENT_ANIMATOR_STATE_CHANGED:
|
||||||
@@ -280,8 +280,8 @@ func (g *GameManager) EvtDoSkillSuccNotify(player *model.Player, payloadMsg pb.M
|
|||||||
}
|
}
|
||||||
logger.LOG.Debug("EvtDoSkillSuccNotify: %v", req)
|
logger.LOG.Debug("EvtDoSkillSuccNotify: %v", req)
|
||||||
|
|
||||||
// 记录耐力消耗的技能id 技能持续消耗需要这个获取到技能id
|
// 处理技能开始的耐力消耗
|
||||||
player.StaminaInfo.SetLastSkill(req.CasterId, req.SkillId)
|
g.SkillStartStamina(player, req.CasterId, req.SkillId)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *GameManager) EvtAvatarEnterFocusNotify(player *model.Player, payloadMsg pb.Message) {
|
func (g *GameManager) EvtAvatarEnterFocusNotify(player *model.Player, payloadMsg pb.Message) {
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ func (g *GameManager) HandleAbilityStamina(player *model.Player, entry *proto.Ab
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 处理持续耐力消耗
|
// 处理持续耐力消耗
|
||||||
g.HandleSkillSustainStamina(player)
|
g.SkillSustainStamina(player, costStamina.IsSwim)
|
||||||
case proto.AbilityInvokeArgument_ABILITY_INVOKE_ARGUMENT_META_MODIFIER_CHANGE:
|
case proto.AbilityInvokeArgument_ABILITY_INVOKE_ARGUMENT_META_MODIFIER_CHANGE:
|
||||||
// 普通角色重击耐力消耗
|
// 普通角色重击耐力消耗
|
||||||
world := WORLD_MANAGER.GetWorldByID(player.WorldId)
|
world := WORLD_MANAGER.GetWorldByID(player.WorldId)
|
||||||
@@ -37,7 +37,7 @@ func (g *GameManager) HandleAbilityStamina(player *model.Player, entry *proto.Ab
|
|||||||
abilityNameHashCode := uint32(0)
|
abilityNameHashCode := uint32(0)
|
||||||
for _, ability := range worldAvatar.abilityList {
|
for _, ability := range worldAvatar.abilityList {
|
||||||
if ability.InstancedAbilityId == entry.Head.InstancedAbilityId {
|
if ability.InstancedAbilityId == entry.Head.InstancedAbilityId {
|
||||||
logger.LOG.Error("%v", ability)
|
//logger.LOG.Error("%v", ability)
|
||||||
abilityNameHashCode = ability.AbilityName.GetHash()
|
abilityNameHashCode = ability.AbilityName.GetHash()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -56,7 +56,7 @@ func (g *GameManager) HandleAbilityStamina(player *model.Player, entry *proto.Ab
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 重击对应的耐力消耗
|
// 重击对应的耐力消耗
|
||||||
g.HandleChargedAttackStamina(player, worldAvatar, avatarAbility)
|
g.ChargedAttackStamina(player, worldAvatar, avatarAbility)
|
||||||
default:
|
default:
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@@ -107,8 +107,8 @@ func (g *GameManager) SceneAvatarStaminaStepReq(player *model.Player, payloadMsg
|
|||||||
g.SendMsg(cmd.SceneAvatarStaminaStepRsp, player.PlayerID, player.ClientSeq, sceneAvatarStaminaStepRsp)
|
g.SendMsg(cmd.SceneAvatarStaminaStepRsp, player.PlayerID, player.ClientSeq, sceneAvatarStaminaStepRsp)
|
||||||
}
|
}
|
||||||
|
|
||||||
// HandleStamina 处理即时耐力消耗
|
// ImmediateStamina 处理即时耐力消耗
|
||||||
func (g *GameManager) HandleStamina(player *model.Player, motionState proto.MotionState) {
|
func (g *GameManager) ImmediateStamina(player *model.Player, motionState proto.MotionState) {
|
||||||
// 玩家暂停状态不更新耐力
|
// 玩家暂停状态不更新耐力
|
||||||
if player.Pause {
|
if player.Pause {
|
||||||
return
|
return
|
||||||
@@ -144,8 +144,8 @@ func (g *GameManager) HandleStamina(player *model.Player, motionState proto.Moti
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// HandleSkillSustainStamina 处理技能持续时的耐力消耗
|
// SkillSustainStamina 处理技能持续时的耐力消耗
|
||||||
func (g *GameManager) HandleSkillSustainStamina(player *model.Player) {
|
func (g *GameManager) SkillSustainStamina(player *model.Player, isSwim bool) {
|
||||||
staminaInfo := player.StaminaInfo
|
staminaInfo := player.StaminaInfo
|
||||||
skillId := staminaInfo.LastSkillId
|
skillId := staminaInfo.LastSkillId
|
||||||
|
|
||||||
@@ -186,17 +186,17 @@ func (g *GameManager) HandleSkillSustainStamina(player *model.Player) {
|
|||||||
pastTime := time.Now().UnixMilli() - staminaInfo.LastSkillTime
|
pastTime := time.Now().UnixMilli() - staminaInfo.LastSkillTime
|
||||||
// 根据配置以及距离上次的时间计算消耗的耐力
|
// 根据配置以及距离上次的时间计算消耗的耐力
|
||||||
costStamina = int32(float64(pastTime) / 1000 * float64(costStamina))
|
costStamina = int32(float64(pastTime) / 1000 * float64(costStamina))
|
||||||
logger.LOG.Debug("stamina skill sustain, skillId: %v, cost: %v", skillId, costStamina)
|
logger.LOG.Debug("stamina skill sustain, skillId: %v, cost: %v, isSwim: %v", skillId, costStamina, isSwim)
|
||||||
|
|
||||||
// 根据配置以及距离上次的时间计算消耗的耐力
|
// 根据配置以及距离上次的时间计算消耗的耐力
|
||||||
g.UpdateStamina(player, costStamina)
|
g.UpdateStamina(player, costStamina)
|
||||||
|
|
||||||
// 记录最后释放的技能
|
// 记录最后释放技能的时间
|
||||||
player.StaminaInfo.SetLastSkill(staminaInfo.LastCasterId, staminaInfo.LastSkillId)
|
player.StaminaInfo.LastSkillTime = time.Now().UnixMilli()
|
||||||
}
|
}
|
||||||
|
|
||||||
// HandleChargedAttackStamina 处理重击技能即时耐力消耗
|
// ChargedAttackStamina 处理重击技能即时耐力消耗
|
||||||
func (g *GameManager) HandleChargedAttackStamina(player *model.Player, worldAvatar *WorldAvatar, skillData *gdconf.AvatarSkillData) {
|
func (g *GameManager) ChargedAttackStamina(player *model.Player, worldAvatar *WorldAvatar, skillData *gdconf.AvatarSkillData) {
|
||||||
// 获取现行角色的配置表
|
// 获取现行角色的配置表
|
||||||
avatarDataConfig, ok := gdconf.CONF.AvatarDataMap[int32(worldAvatar.avatarId)]
|
avatarDataConfig, ok := gdconf.CONF.AvatarDataMap[int32(worldAvatar.avatarId)]
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -229,13 +229,31 @@ func (g *GameManager) HandleChargedAttackStamina(player *model.Player, worldAvat
|
|||||||
|
|
||||||
// 根据配置消耗耐力
|
// 根据配置消耗耐力
|
||||||
g.UpdateStamina(player, costStamina)
|
g.UpdateStamina(player, costStamina)
|
||||||
|
|
||||||
// 记录最后释放的技能
|
|
||||||
player.StaminaInfo.SetLastSkill(worldAvatar.avatarEntityId, uint32(skillData.AvatarSkillId))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// StaminaHandler 处理持续耐力消耗
|
// SkillStartStamina 处理技能开始时的即时耐力消耗
|
||||||
func (g *GameManager) StaminaHandler(player *model.Player) {
|
func (g *GameManager) SkillStartStamina(player *model.Player, casterId uint32, skillId uint32) {
|
||||||
|
staminaInfo := player.StaminaInfo
|
||||||
|
|
||||||
|
// 获取该技能开始时所需消耗的耐力
|
||||||
|
costStamina := constant.StaminaCostConst.SKILL_START[skillId]
|
||||||
|
logger.LOG.Debug("skill start stamina, skillId: %v, cost: %v", skillId, costStamina)
|
||||||
|
|
||||||
|
// 距离上次处理技能开始耐力消耗过去的时间
|
||||||
|
pastTime := time.Now().UnixMilli() - staminaInfo.LastSkillTime
|
||||||
|
// 上次触发的技能相同则每400ms触发一次消耗
|
||||||
|
if staminaInfo.LastSkillId == skillId && pastTime < 400 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 根据配置消耗耐力
|
||||||
|
g.UpdateStamina(player, costStamina)
|
||||||
|
|
||||||
|
// 记录最后释放的技能
|
||||||
|
player.StaminaInfo.SetLastSkill(casterId, skillId)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SustainStaminaHandler 处理持续耐力消耗
|
||||||
|
func (g *GameManager) SustainStaminaHandler(player *model.Player) {
|
||||||
// 玩家暂停状态不更新耐力
|
// 玩家暂停状态不更新耐力
|
||||||
if player.Pause {
|
if player.Pause {
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user