feat(fight): 添加擂台系统相关功能与协议支持 新增了擂台系统相关的消息结构体和处理逻辑,包括: - 添加了多个与擂台交互的命令结构体(如 ARENA_SET_OWENR、ARENA_FIGHT_OWENR 等) - 实现了玩家发送擂台信息的方法 Send_ARENA_GET_INFO - 在 Space 结构中增加了擂台相关信息及操作方法 Can_ARENA 和 UP_ARENA - 修复了一个伤害计算公式错误,将乘法修正为除法 - 当
44 lines
866 B
Go
44 lines
866 B
Go
package effect
|
||
|
||
import (
|
||
"blazing/logic/service/fight/action"
|
||
"blazing/logic/service/fight/input"
|
||
"blazing/logic/service/fight/node"
|
||
|
||
"github.com/shopspring/decimal"
|
||
)
|
||
|
||
/**
|
||
* n回合内,每次造成伤害的1/m会恢复自己的体力
|
||
*/
|
||
|
||
func init() {
|
||
t := &Effect89{
|
||
EffectNode: node.EffectNode{},
|
||
}
|
||
// t.Duration(-1) //设置成无限回合,到回合数就停止
|
||
input.InitEffect(input.EffectType.Skill, 89, t)
|
||
|
||
}
|
||
|
||
type Effect89 struct {
|
||
node.EffectNode
|
||
}
|
||
|
||
// 默认添加回合
|
||
func (e *Effect89) SetArgs(t *input.Input, a ...int) {
|
||
|
||
e.EffectNode.SetArgs(t, a...)
|
||
e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0])
|
||
|
||
}
|
||
func (e *Effect89) Skill_Useed() bool {
|
||
if !e.Hit() {
|
||
return true
|
||
}
|
||
|
||
e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.DamageZone.Damage.Div(decimal.NewFromInt(int64(e.Args()[1]))))
|
||
|
||
return true
|
||
}
|