From 8c81100c8ff5d2e90dabcafbec59a5d45f9841c8 Mon Sep 17 00:00:00 2001
From: client_Hale <339726288@qq.com>
Date: 星期三, 22 五月 2019 16:16:08 +0800
Subject: [PATCH] 382 战斗效果值实现
---
Fight/Actor/Skill/AttackHandler.cs | 141 +++++++++++++++++++++++++++++++++++++---------
1 files changed, 112 insertions(+), 29 deletions(-)
diff --git a/Fight/Actor/Skill/AttackHandler.cs b/Fight/Actor/Skill/AttackHandler.cs
index 27ea169..446de46 100644
--- a/Fight/Actor/Skill/AttackHandler.cs
+++ b/Fight/Actor/Skill/AttackHandler.cs
@@ -11,6 +11,7 @@
public static void HandlerAttackTarget(GActorFight attacker,
GActorFight target,
int hurtValue,
+ int realHurtValue,
byte attackType,
int skillID,
int soConfigID,
@@ -132,7 +133,13 @@
if (CheckPull(attacker, target, soConfig.bodyControlId))
{
- target.StartBeatBack(attacker.ServerInstID, soConfig.bodyControlId, MathUtility.ForwardXZ(target.Pos, attacker.Pos), (HurtAttackType)attackType);
+ float _extDis = 0;
+ SkillHelper.EffectValue _effectValue;
+ if (_skill.skillInfo.effectValue.TryGetValue(4015, out _effectValue))
+ {
+ _extDis += _effectValue.value1 * .5f;
+ }
+ target.StartBeatBack(attacker.ServerInstID, soConfig.bodyControlId, MathUtility.ForwardXZ(target.Pos, attacker.Pos), (HurtAttackType)attackType, _extDis);
}
}
@@ -234,7 +241,7 @@
if (_doReduceHp)
{
- target.ActorInfo.ReduceHp((uint)hurtValue);
+ target.ActorInfo.ReduceHp((uint)realHurtValue);
}
if (target.ServerInstID == PlayerDatas.Instance.baseData.PlayerID)
@@ -348,6 +355,7 @@
bool _isZhuxianHit = false;
SkillHelper.EffectValue _effectValue;
+ SkillHelper.SkillInfo _skillInfo;
float _aAtkSkillPer = 0;
int _atkSkillValue = 0;
@@ -550,7 +558,7 @@
}
#region 4094,4507 澧炲姞鏆村嚮姒傜巼
- if (skill.skillInfo.effectValue.TryGetValue(4094, out _effectValue))
+ if (attacker.SkillMgr.TryGetPassiveEffectValue(4094, out _effectValue, out _skillInfo))
{
bool _vaild = true;
if (_effectValue.value2 != 0)
@@ -566,7 +574,7 @@
}
}
- if (skill.skillInfo.effectValue.TryGetValue(4507, out _effectValue))
+ if (StatusMgr.Instance.TryGetSkillEffectValue(attacker.ServerInstID, 4507, out _effectValue))
{
bool _vaild = true;
if (_effectValue.value2 == 1)
@@ -586,12 +594,35 @@
}
if (_vaild)
{
- if (_vaild)
- {
- _aSuperHitRate += _effectValue.value1;
- }
+ _aSuperHitRate += _effectValue.value1;
}
}
+
+ if (StatusMgr.Instance.TryGetSkillEffectValue(attacker.ServerInstID, 4526, out _effectValue))
+ {
+ bool _vaild = true;
+ if (_effectValue.value2 == 1)
+ {
+ if (attacker.SelectTarget == null
+ || attacker.SelectTarget.ServerInstID != target.ServerInstID)
+ {
+ _vaild = false;
+ }
+ }
+ if (_effectValue.value3 == 1)
+ {
+ if (skill.skillInfo.config.FuncType != (int)E_SkillFuncType.NormalAttack
+ && skill.skillInfo.config.FuncType != (int)E_SkillFuncType.FaBaoActiveSkill)
+ {
+ _vaild = false;
+ }
+ }
+ if (_vaild)
+ {
+ _aZhuXianHitRate += _effectValue.value1;
+ }
+ }
+
#endregion
_isMiss = IsMiss(_hitRate, _missRate);
@@ -685,7 +716,13 @@
}
}
- if (attacker.SkillMgr.TryGetPassiveEffectValue(4083, out _effectValue))
+ if (attacker.SkillMgr.TryGetPassiveEffectValue(4075, out _effectValue, out _skillInfo))
+ {
+ float _val = (PlayerDatas.Instance.extersion.battleValEx1 - 10000) * _effectValue.value1;
+ _superHitAdd += _val;
+ }
+
+ if (attacker.SkillMgr.TryGetPassiveEffectValue(4083, out _effectValue, out _skillInfo))
{
bool _vaild = true;
if (_effectValue.value2 == 1)
@@ -717,7 +754,7 @@
|| skill.skillInfo.config.HurtType == 0)
{
// 澶勭悊鏈韩鐨勬妧鑳�
- CalculateSkillEffect(attacker, target, skill.skillInfo, ref _aDamagePer, ref _aAtkSkillPer, ref _atkSkillValue, ref _aIceAtk, ref _aFinalHurt, ref _superHitAdd, _isCrit);
+ CalculateSkillEffect(attacker, target, skill.skillInfo, ref _aDamagePer, ref _aAtkSkillPer, ref _atkSkillValue, ref _aIceAtk, ref _aFinalHurt, ref _superHitAdd, ref _aDamagePVE, _isCrit);
// 澶勭悊sp鎶�鑳�
List<SkillHelper.SkillInfo> _spSkillList = SkillHelper.Instance.GetSpSkill(skill.id);
@@ -726,7 +763,7 @@
{
for (int i = 0; i < _spSkillList.Count; ++i)
{
- CalculateSkillEffect(attacker, target, _spSkillList[i], ref _aDamagePer, ref _aAtkSkillPer, ref _atkSkillValue, ref _aIceAtk, ref _aFinalHurt, ref _superHitAdd, _isCrit);
+ CalculateSkillEffect(attacker, target, _spSkillList[i], ref _aDamagePer, ref _aAtkSkillPer, ref _atkSkillValue, ref _aIceAtk, ref _aFinalHurt, ref _superHitAdd, ref _aDamagePVE, _isCrit);
}
}
}
@@ -852,7 +889,8 @@
}
SkillHelper.EffectValue _effectValue;
- if (_hero.SkillMgr.TryGetPassiveEffectValue(4081, out _effectValue))
+ SkillHelper.SkillInfo _skillInfo;
+ if (_hero.SkillMgr.TryGetPassiveEffectValue(4081, out _effectValue, out _skillInfo))
{
if (_effectValue.value2 == 1)
{
@@ -897,16 +935,20 @@
return actor.ActorInfo.RealHp * 1f / actor.ActorInfo.RealMaxHp;
}
- private static void CalculateSkillEffect(GActorFight attacker, GActorFight target, SkillHelper.SkillInfo skillInfo,
+ private static void CalculateSkillEffect(GActorFight attacker,
+ GActorFight target,
+ SkillHelper.SkillInfo skillInfo,
ref int _aDamagePer,
ref float _aAtkSkillPer,
ref int _atkSkillValue,
ref int _aIceAtk,
ref int _aFinalHurt,
ref float _aSuperHitAdd,
+ ref int _aDamagePVE,
bool _isCrit)
{
SkillHelper.EffectValue _effectValue;
+ SkillHelper.SkillInfo _skillInfo;
#region 浼ゅ澧炲姞
if (skillInfo.effectValue.TryGetValue(1062, out _effectValue))
@@ -931,7 +973,39 @@
if (attacker is GA_Hero)
{
- if (attacker.SkillMgr.TryGetPassiveEffectValue(4086, out _effectValue))
+ if (attacker.SkillMgr.TryGetPassiveEffectValue(4102, out _effectValue, out _skillInfo))
+ {
+ int _val = _effectValue.value1;
+ int _needCount = _effectValue.value2;
+ bool _valid = true;
+ if (attacker.SkillMgr.TryGetPassiveEffectValue(4092, out _effectValue, out _skillInfo))
+ {
+ if (_effectValue.value2 == 0)
+ {
+ if (PlayerDatas.Instance.baseData.yinjiCount != _needCount)
+ {
+ _valid = false;
+ }
+ }
+ else if (_effectValue.value2 == 1)
+ {
+ if (PlayerDatas.Instance.baseData.yinjiCount == 0
+ || PlayerDatas.Instance.baseData.yinjiCount < _effectValue.value1)
+ {
+ _valid = false;
+ }
+ }
+ }
+ if (_valid)
+ {
+ if (PlayerDatas.Instance.baseData.yinjiCount > _needCount)
+ {
+ _aDamagePVE += _val;
+ }
+ }
+ }
+
+ if (attacker.SkillMgr.TryGetPassiveEffectValue(4086, out _effectValue, out _skillInfo))
{
bool _vaild = true;
if (_effectValue.value3 == 1)
@@ -951,7 +1025,7 @@
}
}
- if (attacker.SkillMgr.TryGetPassiveEffectValue(4087, out _effectValue))
+ if (attacker.SkillMgr.TryGetPassiveEffectValue(4087, out _effectValue, out _skillInfo))
{
if (PlayerDatas.Instance.baseData.yinjiCount > _effectValue.value2)
{
@@ -959,12 +1033,12 @@
}
}
- if (attacker.SkillMgr.TryGetPassiveEffectValue(4088, out _effectValue))
+ if (attacker.SkillMgr.TryGetPassiveEffectValue(4088, out _effectValue, out _skillInfo))
{
int _per = _effectValue.value1;
int _needCount = _effectValue.value2;
bool _valid = true;
- if (attacker.SkillMgr.TryGetPassiveEffectValue(4092, out _effectValue))
+ if (attacker.SkillMgr.TryGetPassiveEffectValue(4092, out _effectValue, out _skillInfo))
{
if (_effectValue.value2 == 0)
{
@@ -990,7 +1064,7 @@
}
}
- if (attacker.SkillMgr.TryGetPassiveEffectValue(4015, out _effectValue))
+ if (attacker.SkillMgr.TryGetPassiveEffectValue(4015, out _effectValue, out _skillInfo))
{
if (target.ActorInfo.status4012.ContainsKey((byte)_effectValue.value2))
{
@@ -998,6 +1072,15 @@
if (StatusMgr.Instance.IsBurning(target.ServerInstID, _selfSID))
{
_aAtkSkillPer += _effectValue.value1;
+
+ if (attacker.SkillMgr.TryGetPassiveEffectValue(4538, out _effectValue, out _skillInfo))
+ {
+ _aDamagePVE += _effectValue.value1;
+ }
+ if (attacker.SkillMgr.TryGetPassiveEffectValue(4002, out _effectValue, out _skillInfo))
+ {
+ _aDamagePVE += _effectValue.value1;
+ }
}
}
}
@@ -1014,13 +1097,13 @@
}
}
- if (attacker.SkillMgr.TryGetPassiveEffectValue(4098, out _effectValue))
+ if (attacker.SkillMgr.TryGetPassiveEffectValue(4098, out _effectValue, out _skillInfo))
{
- var _skillInfo = SkillHelper.Instance.Get(_effectValue.value2);
- if (_skillInfo != null)
+ var _skillInfo1 = SkillHelper.Instance.Get(_effectValue.value2);
+ if (_skillInfo1 != null)
{
SkillHelper.EffectValue _tmpEffectValue;
- if (_skillInfo.effectValue.TryGetValue(4012, out _tmpEffectValue))
+ if (_skillInfo1.effectValue.TryGetValue(4012, out _tmpEffectValue))
{
if (target.ActorInfo.status4012.ContainsKey((byte)_tmpEffectValue.value1))
{
@@ -1033,7 +1116,7 @@
}
}
- if (attacker.SkillMgr.TryGetPassiveEffectValue(4096, out _effectValue))
+ if (attacker.SkillMgr.TryGetPassiveEffectValue(4096, out _effectValue, out _skillInfo))
{
if (StatusMgr.Instance.IsExist(target.ServerInstID, _effectValue.value3))
{
@@ -1044,7 +1127,7 @@
}
// 4005 姒傜巼澧炲姞鏀诲嚮(鎶�鑳�)浼ゅ涓囧垎鐜�
- if (skillInfo.effectValue.TryGetValue(4005, out _effectValue))
+ if (attacker.SkillMgr.TryGetPassiveEffectValue(4005, out _effectValue, out _skillInfo))
{
if (Random.Range(0, 10000) < _effectValue.value2)
{
@@ -1059,7 +1142,7 @@
}
// 4035 澧炲姞鎶�鑳戒激瀹充竾鍒嗙巼
- if (skillInfo.effectValue.TryGetValue(4035, out _effectValue))
+ if (attacker.SkillMgr.TryGetPassiveEffectValue(4035, out _effectValue, out _skillInfo))
{
bool _isValid = true;
var _mapConfig = MapConfig.Get(PlayerDatas.Instance.baseData.MapID);
@@ -1085,7 +1168,7 @@
}
// 4011 鏆村嚮鏃跺鍔犳妧鑳戒激瀹�
- if (skillInfo.effectValue.TryGetValue(4011, out _effectValue))
+ if (attacker.SkillMgr.TryGetPassiveEffectValue(4011, out _effectValue, out _skillInfo))
{
if (_isCrit)
{
@@ -1101,7 +1184,7 @@
}
// 4015 鐩爣澶勪簬XX鐘舵�佹彁楂樻妧鑳戒激瀹�
- if (skillInfo.effectValue.TryGetValue(4015, out _effectValue))
+ if (attacker.SkillMgr.TryGetPassiveEffectValue(4015, out _effectValue, out _skillInfo))
{
if (target.ActorInfo.GetStatusCount((byte)_effectValue.value2, attacker.ServerInstID) > 0)
{
@@ -1117,7 +1200,7 @@
}
// 4025 鏀诲嚮闄勫姞鐪熷疄浼ゅ
- if (skillInfo.effectValue.TryGetValue(4025, out _effectValue))
+ if (attacker.SkillMgr.TryGetPassiveEffectValue(4025, out _effectValue, out _skillInfo))
{
_aIceAtk += _effectValue.value1;
@@ -1192,7 +1275,7 @@
#region 鏆村嚮浼ゅ澧炲姞
// 4007 鏆村嚮鏃跺鍔犳毚鍑诲��, 澧炲姞鏆村嚮鍊间竾鍒嗙巼, 铏氳鍒ゆ柇鑷繁韬笂鏄惁鏈夐厤缃殑buff
- if (skillInfo.effectValue.TryGetValue(4007, out _effectValue))
+ if (attacker.SkillMgr.TryGetPassiveEffectValue(4007, out _effectValue, out _skillInfo))
{
bool _condition = true;
--
Gitblit v1.8.0