From 94ee6ef1296c8d9be1e3524a196b7950b07edaae Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 5 Sep 2022 14:54:38 +0800 Subject: [PATCH] 1 --- server/gameserver/attr.cc | 32 ++++++++++++++++++++++++++++++++ server/gameserver/attr.h | 22 ++++++++++++++++++++++ server/gameserver/creature.h | 2 ++ 3 files changed, 56 insertions(+) diff --git a/server/gameserver/attr.cc b/server/gameserver/attr.cc index 422726bb..c4b12970 100644 --- a/server/gameserver/attr.cc +++ b/server/gameserver/attr.cc @@ -1,3 +1,35 @@ #include "precompile.h" #include "attr.h" + +float Attr::CalcDmg(Creature* target, int weapon_uniid) +{ + float total_atk = (GetTotalAtk() / 100 + 1) * GetWeaponAtk(); + float normal_dmg = total_atk * (1 - target->attr->GetDef() / 1000); +} + +float Attr::GetDef() +{ + return 0; +} + +float Attr::GetHeroTotalAtk() +{ + return 0; +} + +float Attr::GetWeaponAtk() +{ + return 0; +} + +bool Attr::IsCrit() +{ + return true; +} + + +bool Attr::IsDodge() +{ + return true; +} diff --git a/server/gameserver/attr.h b/server/gameserver/attr.h index efa53514..de6896d4 100644 --- a/server/gameserver/attr.h +++ b/server/gameserver/attr.h @@ -2,8 +2,30 @@ #include "weakptr.h" +/* + 子弹命中逻辑 + 1、计算总攻击力 + 2、计算普通伤害 + 3、判断是否暴击(百分比系数),对方是否闪避(系数) + 4、得到实际伤害 + + 免伤后伤害=实际伤害*(1-免伤率) + 吸血值=吸血系数*实际伤害 + + */ + class Attr { + public: + float CalcDmg(Creature* target, int weapon_uniid); + + float GetDef(); + private: + float GetHeroTotalAtk(); + float GetWeaponAtk(); + bool IsCrit(); + bool IsDodge(); + private: CreatureWeakPtr owner_; }; diff --git a/server/gameserver/creature.h b/server/gameserver/creature.h index a9af69fe..b3d64012 100644 --- a/server/gameserver/creature.h +++ b/server/gameserver/creature.h @@ -5,6 +5,7 @@ #include "trigger.h" #include "ability.h" #include "weapon.h" +#include "attr.h" #include "cs_proto.pb.h" @@ -90,6 +91,7 @@ class Creature : public MoveableEntity bool playing_skill = false; int power_idx = -1; int hold_shield_hp = 0; + Attr* attr = nullptr; Weapon second_weapon; a8::Vec2 context_pos;