diff --git a/logic/service/fight/BattleAction.go b/logic/service/fight/BattleAction.go index c607b5c8..20f5e013 100644 --- a/logic/service/fight/BattleAction.go +++ b/logic/service/fight/BattleAction.go @@ -51,7 +51,7 @@ func (f *FightC) Compare(a, b BattleActionI) (BattleActionI, BattleActionI) { return a, b } - p2 = int(f.Opp.GetProp(4)) - int(f.Our.GetProp(4)) + p2 = int(f.Opp.GetProp(4, false)) - int(f.Our.GetProp(4, false)) if p2 > 0 { return b, a } else if p2 < 0 { diff --git a/logic/service/fight/effect/effect_damage.go b/logic/service/fight/effect/effect_damage.go index 49491029..b53fe629 100644 --- a/logic/service/fight/effect/effect_damage.go +++ b/logic/service/fight/effect/effect_damage.go @@ -14,7 +14,7 @@ type Effect0 struct { // 技能命中计算 func (this *Effect0) IsHit(opp *input.Input, skill *info.SkillEntity) { - skill.AttackTimeC() //计算命中 + skill.AttackTimeC(int(opp.GetProp(5, true))) //计算命中 } // 比如xx技能无效 diff --git a/logic/service/fight/fightc.go b/logic/service/fight/fightc.go index bd3d0d97..671e78c9 100644 --- a/logic/service/fight/fightc.go +++ b/logic/service/fight/fightc.go @@ -538,11 +538,18 @@ func (f *FightC) enterturn(fattack, sattack BattleActionI) { ret.FAttack.LostHp = uint32(f.First.Damage.IntPart()) //先手方造成血量 ret.SAttack.RemainHp = int32(f.Second.CurrentPet.Info.Hp) ret.SAttack.LostHp = uint32(f.Second.Damage.IntPart()) //后手方造成血量 - ret.FAttack.Prop.Accuracy = 6 - ret.SAttack.Prop.Accuracy = 6 - ret.SAttack.Status.Poisoned_1 = 1 - ret.FAttack.Status.Poisoned_1 = 1 - //ret.SAttack.Status.Poisoned_1 = 1 + + for i := 0; i < 6; i++ { //堆叠属性提升 + ret.FAttack.Prop[i] = int8(attacker.GetProp(i, true)) + ret.FAttack.Prop[i] = int8(defender.GetProp(i, true)) + } + for i := 0; i < 20; i++ { //堆叠状态剩余回合 + ate, _ := attacker.GetStatusEffect(i) + ret.FAttack.Status[i] = int8(ate.Duration(0)) + dte, _ := defender.GetStatusEffect(i) + ret.FAttack.Status[i] = int8(dte.Duration(0)) + } + f.Broadcast(func(ff *input.Input) { ff.Player.SendAttackValue(ret) diff --git a/logic/service/fight/info/BattlePetEntity.go b/logic/service/fight/info/BattlePetEntity.go index b8bd048f..27fc3087 100644 --- a/logic/service/fight/info/BattlePetEntity.go +++ b/logic/service/fight/info/BattlePetEntity.go @@ -173,20 +173,20 @@ func CreateBattlePetEntity(info *model.PetInfo, rand *rand.Rand) *BattlePetEntit // value 基础属性值 // stat 状态变化值(可正可负) // 返回// 返回计算后的实际属性值,确保结果至少为1 -func CalculateRealValue(value uint32, stat int) uint32 { +func CalculateRealValue(value int, stat int) int { if stat == 0 { if value <= 0 { return 1 } return value } else if stat > 0 { - r := uint32(float64(value) * (float64(stat+2) / 2.0)) + r := int(float64(value) * (float64(stat+2) / 2.0)) if r <= 0 { return 1 } return r } else { - r := uint32(float64(value) * (2.0 / float64(2-stat))) + r := int(float64(value) * (2.0 / float64(2-stat))) if r <= 0 { return 1 } diff --git a/logic/service/fight/info/BattleSkillEntity.go b/logic/service/fight/info/BattleSkillEntity.go index 1e51d26e..a7f1407b 100644 --- a/logic/service/fight/info/BattleSkillEntity.go +++ b/logic/service/fight/info/BattleSkillEntity.go @@ -213,7 +213,7 @@ func (a *SkillEntity) GetAccuracy(level int) uint32 { } if level > 6 || level == 0 { //强化等级 - return uint32(CalculateRealValue(uint32(a.Accuracy), level)) + return uint32(CalculateRealValue((a.Accuracy), level)) } var temp float64 switch level { diff --git a/logic/service/fight/input/nodemanger.go b/logic/service/fight/input/nodemanger.go index 34aa6f33..4224ed81 100644 --- a/logic/service/fight/input/nodemanger.go +++ b/logic/service/fight/input/nodemanger.go @@ -88,15 +88,20 @@ func InitPropEffect(id int, t Effect) { } // * battle_lv: atk(0), def(1), sp_atk(2), sp_def(3), spd(4), accuracy(5) -func (c *Input) GetProp(id int) uint32 { +// 是否需要真实提升 +func (c *Input) GetProp(id int, istue bool) int { //todo 插入获取前 t, ok := NodeM[id+2000000] if ok { if id < 5 { - return info.CalculateRealValue(c.CurrentPet.Info.Prop[id], t.GetMaxStack()) + if istue { + return t.GetMaxStack() + } + return info.CalculateRealValue(int(c.CurrentPet.Info.Prop[id]), t.GetMaxStack()) } - + //命中就直接返回 + return t.GetMaxStack() } //todo 插入获取后函数