```
feat(player): 添加 UseCoins 方法统一处理玩家金币消耗逻辑 重构购买物品和变更外观功能,使用 UseCoins 方法替代手动操作 Coins 字段, 确保金币扣除的安全性和一致性。同时修复可能因并发导致的金币超扣问题。 此外,调整部分战斗系统接口参数传递方式,将 DamageZone 指
This commit is contained in:
@@ -123,7 +123,23 @@ func (f *FightC) copypet(t *info.BattlePetEntity) *info.BattlePetEntity {
|
||||
//回合有先手方和后手方,同时有攻击方和被攻击方
|
||||
|
||||
func (f *FightC) enterturn(fattack, sattack *action.SelectSkillAction) {
|
||||
//双方首发精灵登场时,依挑战方机制:房主方先判定,挑战方后判定
|
||||
//双方非首发精灵登场时,根据切换先后判定(看手速)
|
||||
// 神罗、圣华登场时魂免,“登场时xx”等效果
|
||||
//阿枫的效果也在这里判断
|
||||
|
||||
f.Our.Exec(func(t input.Effect) bool { //回合开始前
|
||||
|
||||
//结算状态
|
||||
t.Turn_Start(fattack, sattack)
|
||||
return true
|
||||
})
|
||||
f.Opp.Exec(func(t input.Effect) bool { //回合开始前
|
||||
|
||||
//结算状态
|
||||
t.Turn_Start(fattack, sattack)
|
||||
return true
|
||||
})
|
||||
// 伤害值
|
||||
|
||||
// 根据攻击方归属设置当前战斗的主/次攻击方属性
|
||||
@@ -141,7 +157,6 @@ func (f *FightC) enterturn(fattack, sattack *action.SelectSkillAction) {
|
||||
|
||||
f.First.ResetAttackValue()
|
||||
f.Second.ResetAttackValue()
|
||||
|
||||
if fattack != nil {
|
||||
//是否miss都应该施加解析effect
|
||||
f.First.Parseskill(f.Second, fattack) //解析到临时数据
|
||||
@@ -182,18 +197,7 @@ func (f *FightC) enterturn(fattack, sattack *action.SelectSkillAction) {
|
||||
}
|
||||
}
|
||||
var attacker, defender *input.Input
|
||||
f.First.Exec(func(t input.Effect) bool { //回合开始前
|
||||
|
||||
//结算状态
|
||||
t.Turn_Start()
|
||||
return true
|
||||
})
|
||||
f.Second.Exec(func(t input.Effect) bool { //回合开始前
|
||||
|
||||
//结算状态
|
||||
t.Turn_Start()
|
||||
return true
|
||||
})
|
||||
//开始回合操作
|
||||
for i := 0; i < 2; i++ {
|
||||
var oldskill *info.SkillEntity //原始技能
|
||||
@@ -214,13 +218,16 @@ func (f *FightC) enterturn(fattack, sattack *action.SelectSkillAction) {
|
||||
if oldskill != nil {
|
||||
fmt.Println("开始攻击威力", oldskill.Power)
|
||||
}
|
||||
//是否miss都应该施加解析effect
|
||||
|
||||
canuseskill := attacker.Exec(func(t input.Effect) bool { //这个是能否使用技能
|
||||
//结算状态
|
||||
//然后这里还可以处理自爆类
|
||||
t.Ctx().SkillEntity = currentskill
|
||||
return t.Skill_Hit_Pre() //返回本身结算,如果false,说明不能使用技能了
|
||||
return t.Skill_Hit_Pre(fattack, sattack) //返回本身结算,如果false,说明不能使用技能了
|
||||
|
||||
})
|
||||
|
||||
// 结算状态
|
||||
// 然后这里还可以处理自爆类
|
||||
if canuseskill && //
|
||||
@@ -260,9 +267,7 @@ func (f *FightC) enterturn(fattack, sattack *action.SelectSkillAction) {
|
||||
//技能使用后
|
||||
defender.Exec(func(t input.Effect) bool {
|
||||
t.Ctx().SkillEntity = currentskill
|
||||
t.Ctx().DamageZone = &info.DamageZone{
|
||||
Damage: attacker.DamageZone.Damage,
|
||||
}
|
||||
|
||||
t.Skill_Use_ex()
|
||||
|
||||
return true
|
||||
@@ -271,9 +276,7 @@ func (f *FightC) enterturn(fattack, sattack *action.SelectSkillAction) {
|
||||
//技能使用后
|
||||
attacker.Exec(func(t input.Effect) bool { //技能使用后的我方效果
|
||||
t.Ctx().SkillEntity = currentskill
|
||||
t.Ctx().DamageZone = &info.DamageZone{
|
||||
Damage: attacker.DamageZone.Damage,
|
||||
}
|
||||
|
||||
t.Skill_Useed()
|
||||
|
||||
return true
|
||||
|
||||
Reference in New Issue
Block a user