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/GameActor/GActorNpcNoFight.cs | 2
Fight/Actor/State/SMB/STM_BaseAttack.cs | 9 +
Fight/Actor/Skill/AttackHandler.cs | 141 ++++++++++++++++++----
Fight/GameActor/GA_Guard.cs | 2
Fight/Actor/Skill/SkillManager.cs | 5
Fight/Actor/HeroBehaviour.cs | 4
Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0614_tagUseSkillPos.cs | 4
Fight/Stage/Dungeon/DungeonStage.cs | 2
Lua/Gen/StatusMgrWrap.cs.meta | 2
Core/ResModule/AnimatorControllerLoader.cs | 62 ++++------
Fight/Actor/AI/HeroAI_Base.cs | 4
Fight/Actor/Skill/FlyObject/FlyObject.cs | 7
Fight/GameActor/GActorNpcFight.cs | 6
Core/ResModule/InstanceResourcesLoader.cs | 25 ----
Lua/Gen/StatusMgrWrap.cs | 52 ++++++++
Fight/Actor/Status/StatusMgr.cs | 16 ++
Fight/GameActor/GActorFight.cs | 4
Fight/GameActor/GActorPlayerBase.cs | 2
18 files changed, 232 insertions(+), 117 deletions(-)
diff --git a/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0614_tagUseSkillPos.cs b/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0614_tagUseSkillPos.cs
index 1a73f84..003d4e4 100644
--- a/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0614_tagUseSkillPos.cs
+++ b/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0614_tagUseSkillPos.cs
@@ -283,7 +283,7 @@
ObjID = _sTarget.ObjID,
clientInstID = GAMgr.Instance.GetCIDBySID(_cTarget.ServerInstID),
ObjType = _sTarget.ObjType,
- HurtHP = (uint)(_cTarget.ActorInfo.RealHp - (_sTarget.CurHP + _sTarget.CurHPEx * GActorInfo.FullHp)),
+ HurtHP = _sTarget.HurtHP,
CurHP = _sTarget.CurHP,
AttackType = _sTarget.AttackType
};
@@ -721,7 +721,7 @@
ObjID = _sTarget.ObjID,
clientInstID = GAMgr.Instance.GetCIDBySID(_cTarget.ServerInstID),
ObjType = _sTarget.ObjType,
- HurtHP = (uint)(_cTarget.ActorInfo.RealHp - (_sTarget.CurHP + _sTarget.CurHPEx * GActorInfo.FullHp)),
+ HurtHP = _sTarget.HurtHP,
CurHP = _sTarget.CurHP,
AttackType = _sTarget.AttackType
};
diff --git a/Core/ResModule/AnimatorControllerLoader.cs b/Core/ResModule/AnimatorControllerLoader.cs
index c2602ea..2f06e1a 100644
--- a/Core/ResModule/AnimatorControllerLoader.cs
+++ b/Core/ResModule/AnimatorControllerLoader.cs
@@ -5,9 +5,9 @@
using UnityEditor;
#endif
+[XLua.LuaCallCSharp]
public class AnimatorControllerLoader
{
-
public static readonly string controllerSuffix = "AnimatorController_";
public static readonly string controllerUISuffix = "AnimatorController_UI_";
public static readonly string controllerShowSuffix = "AnimatorController_Show_";
@@ -51,9 +51,32 @@
return _animationClip;
}
+ public static RuntimeAnimatorController LoadDefaultMobAnimatorController_Fight()
+ {
+ return AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix,
+ GeneralDefine.ModeDefaultConfig[1][1].Replace("Prefab_Race_", ""));
+ }
+
+ public static RuntimeAnimatorController LoadDefaultMobAnimatorController_Func()
+ {
+ return AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix,
+ GeneralDefine.ModeDefaultConfig[0][1].Replace("Prefab_Race_", ""));
+ }
+
+ public static RuntimeAnimatorController LoadDefaultMobAnimatorController_Horse()
+ {
+ return AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix,
+ GeneralDefine.ModeDefaultConfig[3][1].Replace("Prefab_Horse_", ""));
+ }
+
+ public static RuntimeAnimatorController LoadDefaultMobAnimatorController_Pet()
+ {
+ return AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix,
+ GeneralDefine.ModeDefaultConfig[2][1].Replace("Prefab_Race_", ""));
+ }
+
public static RuntimeAnimatorController Load(string suffix, int id)
{
- RuntimeAnimatorController _controller = null;
ModelResConfig _modelRes = ModelResConfig.Get(id);
string _name = _modelRes.ResourcesName;
if (_name.IndexOf('/') != -1)
@@ -61,40 +84,7 @@
_name = _name.Substring(0, _modelRes.ResourcesName.IndexOf('/'));
}
- if (AssetSource.mobFromEditor)
- {
-#if UNITY_EDITOR
-
- string _resourcesPath = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath,
- "mob/",
- _name,
- "/",
- suffix,
- _name,
- ".controller");
-
- _controller = AssetDatabase.LoadAssetAtPath<RuntimeAnimatorController>(_resourcesPath);
-
-#endif
- }
- else
- {
- string _bundleName = StringUtility.Contact(ResourcesPath.MOB_FOLDER_NAME,
- ResourcesPath.MOB_SUFFIX,
- _name);
-
- string _assetName = StringUtility.Contact(suffix, _name);
- AssetInfo _assetInfo = new AssetInfo(_bundleName, _assetName);
-
- _controller = AssetBundleUtility.Instance.Sync_LoadAsset(_assetInfo) as RuntimeAnimatorController;
- }
-
- if (_controller == null)
- {
- DebugEx.LogErrorFormat("AnimatorControllerLoader.Load() => 鍔犺浇涓嶅埌璧勬簮: {0}_{1}.", suffix, _name);
- }
-
- return _controller;
+ return LoadMobController(suffix, _name);
}
public static RuntimeAnimatorController LoadMobController(string suffix, string _name)
diff --git a/Core/ResModule/InstanceResourcesLoader.cs b/Core/ResModule/InstanceResourcesLoader.cs
index 657d8f3..086b21a 100644
--- a/Core/ResModule/InstanceResourcesLoader.cs
+++ b/Core/ResModule/InstanceResourcesLoader.cs
@@ -5,6 +5,7 @@
using UnityEditor;
#endif
+[XLua.LuaCallCSharp]
public class InstanceResourcesLoader
{
public static readonly string raceSuffix = "Prefab_Race_";
@@ -53,30 +54,6 @@
}
return LoadModelPrefab(raceSuffix, _m.MODE);
- }
-
- public static RuntimeAnimatorController LoadDefaultMobAnimatorController_Fight()
- {
- return AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix,
- GeneralDefine.ModeDefaultConfig[1][1].Replace("Prefab_Race_", ""));
- }
-
- public static RuntimeAnimatorController LoadDefaultMobAnimatorController_Func()
- {
- return AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix,
- GeneralDefine.ModeDefaultConfig[0][1].Replace("Prefab_Race_", ""));
- }
-
- public static RuntimeAnimatorController LoadDefaultMobAnimatorController_Horse()
- {
- return AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix,
- GeneralDefine.ModeDefaultConfig[3][1].Replace("Prefab_Horse_", ""));
- }
-
- public static RuntimeAnimatorController LoadDefaultMobAnimatorController_Pet()
- {
- return AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix,
- GeneralDefine.ModeDefaultConfig[2][1].Replace("Prefab_Race_", ""));
}
public static GameObject LoadDefaultFightNPC()
diff --git a/Fight/Actor/AI/HeroAI_Base.cs b/Fight/Actor/AI/HeroAI_Base.cs
index ea00474..76eb8e4 100644
--- a/Fight/Actor/AI/HeroAI_Base.cs
+++ b/Fight/Actor/AI/HeroAI_Base.cs
@@ -89,7 +89,7 @@
if (_skill != null && _skill.skillInfo != null && _skill.skillInfo.config != null)
{
// 鍒ゆ柇鏄惁鏄灏佺鐨勬妧鑳�
- if (!StatusMgr.Instance.CanAttack(_hero.ServerInstID, _skill.skillInfo.config.SkillOfSeries))
+ if (!StatusMgr.Instance.CanAttack(_hero.ServerInstID, _skill.skillInfo.config))
{
return _skill;
}
@@ -146,7 +146,7 @@
}
// 鍒ゆ柇鏄惁鏄灏佺鐨勬妧鑳�
- if (!StatusMgr.Instance.CanAttack(_hero.ServerInstID, _skill.skillInfo.config.SkillOfSeries))
+ if (!StatusMgr.Instance.CanAttack(_hero.ServerInstID, _skill.skillInfo.config))
{
return false;
}
diff --git a/Fight/Actor/HeroBehaviour.cs b/Fight/Actor/HeroBehaviour.cs
index 6ca20d8..460e654 100644
--- a/Fight/Actor/HeroBehaviour.cs
+++ b/Fight/Actor/HeroBehaviour.cs
@@ -104,7 +104,7 @@
Skill _skill = m_Hero.SkillMgr.Get(skillID);
- if (!StatusMgr.Instance.CanAttack(m_Hero.ServerInstID, _skill.skillInfo.config.SkillOfSeries))
+ if (!StatusMgr.Instance.CanAttack(m_Hero.ServerInstID, _skill.skillInfo.config))
{
return;
}
@@ -299,7 +299,7 @@
skillId = m_Hero.GetCommonSkillID(curComAtkIndex);
_skill = m_Hero.SkillMgr.Get(skillId);
- if (!StatusMgr.Instance.CanAttack(m_Hero.ServerInstID, _skill.skillInfo.config.SkillOfSeries))
+ if (!StatusMgr.Instance.CanAttack(m_Hero.ServerInstID, _skill.skillInfo.config))
{
return -1;
}
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;
diff --git a/Fight/Actor/Skill/FlyObject/FlyObject.cs b/Fight/Actor/Skill/FlyObject/FlyObject.cs
index 47cadb2..0650f79 100644
--- a/Fight/Actor/Skill/FlyObject/FlyObject.cs
+++ b/Fight/Actor/Skill/FlyObject/FlyObject.cs
@@ -149,8 +149,8 @@
if (_chkDistSqrt < _chkRange * _chkRange)
{
int _hurtValue = (int)(m_Config.floodPercent * Constants.F_DELTA * m_HurtClientList[i].HurtHP);
-
- AttackHandler.HandlerAttackTarget(m_Owner, _target, _hurtValue, m_HurtClientList[i].AttackType, m_InitInfo.skillId, m_InitInfo.configId, m_Config, _target.ActorInfo.serverDie);
+ int _realHurtValue = (int)((_target.ActorInfo.RealHp - m_HurtClientList[i].CurHP) * (m_Config.floodPercent * Constants.F_DELTA));
+ AttackHandler.HandlerAttackTarget(m_Owner, _target, _hurtValue, _realHurtValue, m_HurtClientList[i].AttackType, m_InitInfo.skillId, m_InitInfo.configId, m_Config, _target.ActorInfo.serverDie);
m_HasHitTargetIDList.Add(m_HurtClientList[i].clientInstID);
m_IdToLastHitTime[_target.ClientInstID] = Time.time;
@@ -190,8 +190,9 @@
if (_chkDistSqrt < _chkRange * _chkRange)
{
int _hurtValue = (int)(m_Config.floodPercent * Constants.F_DELTA * m_HurtServerList[i].HurtHP);
+ int _realHurtValue = (int)((_target.ActorInfo.RealHp - m_HurtClientList[i].CurHP) * (m_Config.floodPercent * Constants.F_DELTA));
- AttackHandler.HandlerAttackTarget(m_Owner, _target, _hurtValue, m_HurtServerList[i].AttackType, m_InitInfo.skillId, m_InitInfo.configId, m_Config, _target.ActorInfo.serverDie);
+ AttackHandler.HandlerAttackTarget(m_Owner, _target, _hurtValue, _realHurtValue, m_HurtServerList[i].AttackType, m_InitInfo.skillId, m_InitInfo.configId, m_Config, _target.ActorInfo.serverDie);
m_HasHitTargetIDList.Add(m_HurtServerList[i].clientInstID);
m_IdToLastHitTime[_target.ClientInstID] = Time.time;
diff --git a/Fight/Actor/Skill/SkillManager.cs b/Fight/Actor/Skill/SkillManager.cs
index 83761b2..9145b40 100644
--- a/Fight/Actor/Skill/SkillManager.cs
+++ b/Fight/Actor/Skill/SkillManager.cs
@@ -43,7 +43,8 @@
m_PassiveSkill = new List<int>();
}
- public bool TryGetPassiveEffectValue(int id, out SkillHelper.EffectValue effectValue)
+ public bool TryGetPassiveEffectValue(int id, out SkillHelper.EffectValue effectValue,
+ out SkillHelper.SkillInfo skill)
{
SkillHelper.SkillInfo _skill;
foreach (var _id in m_PassiveSkill)
@@ -51,10 +52,12 @@
_skill = SkillHelper.Instance.Get(_id);
if (_skill.effectValue.TryGetValue(id, out effectValue))
{
+ skill = _skill;
return true;
}
}
effectValue = default(SkillHelper.EffectValue);
+ skill = null;
return false;
}
diff --git a/Fight/Actor/State/SMB/STM_BaseAttack.cs b/Fight/Actor/State/SMB/STM_BaseAttack.cs
index 5f185a5..c418afd 100644
--- a/Fight/Actor/State/SMB/STM_BaseAttack.cs
+++ b/Fight/Actor/State/SMB/STM_BaseAttack.cs
@@ -624,6 +624,7 @@
GActorFight _target = null;
int _hurtTotalValue = 0;
+ int _realHurtValue = 0;
m_NpcPosList.Clear();
@@ -650,10 +651,11 @@
}
_hurtTotalValue = (int)(m_CacheSkill.hurtServerList[i].HurtHP * _floodPercent);
-
+ _realHurtValue = (int)((_target.ActorInfo.RealHp - m_CacheSkill.hurtServerList[i].CurHP) * _floodPercent);
AttackHandler.HandlerAttackTarget(_fight,
_target,
_hurtTotalValue,
+ _realHurtValue,
m_CacheSkill.hurtServerList[i].AttackType,
m_CacheSkill.id,
id,
@@ -687,10 +689,12 @@
}
_hurtTotalValue = Mathf.CeilToInt(m_CacheSkill.hurtClientList[i].HurtHP * _floodPercent);
+ _realHurtValue = (int)((_target.ActorInfo.RealHp - m_CacheSkill.hurtClientList[i].CurHP) * _floodPercent);
AttackHandler.HandlerAttackTarget(_fight,
_target,
_hurtTotalValue,
+ _realHurtValue,
m_CacheSkill.hurtClientList[i].AttackType,
m_CacheSkill.id,
id,
@@ -719,8 +723,9 @@
}
_hurtTotalValue = (int)(m_CacheSkill.hurtClntFightNpcList[i].HurtHP * _floodPercent);
+ _realHurtValue = (int)((_target.ActorInfo.RealHp - m_CacheSkill.hurtClientList[i].CurHP) * _floodPercent);
- AttackHandler.HandlerAttackTarget(_fight, _target, _hurtTotalValue,
+ AttackHandler.HandlerAttackTarget(_fight, _target, _hurtTotalValue, _realHurtValue,
m_CacheSkill.hurtClntFightNpcList[i].AttackType,
m_CacheSkill.id, id, _sweepHit,
_target.ActorInfo.serverDie && m_IsLastHitFrame);
diff --git a/Fight/Actor/Status/StatusMgr.cs b/Fight/Actor/Status/StatusMgr.cs
index 2c6b6ae..bd0f4b0 100644
--- a/Fight/Actor/Status/StatusMgr.cs
+++ b/Fight/Actor/Status/StatusMgr.cs
@@ -583,14 +583,26 @@
return true;
}
- public bool CanAttack(uint sid, int skillSeries)
+ public bool CanAttack(uint sid, SkillConfig _config)
{
+ var _actorFight = GAMgr.Instance.GetBySID(sid) as GActorFight;
+ SkillHelper.EffectValue _effectValue;
+ SkillHelper.SkillInfo _skillInfo;
+
+ if (_actorFight.SkillMgr.TryGetPassiveEffectValue(4093, out _effectValue, out _skillInfo))
+ {
+ if (_skillInfo.config.ExAttr1 == _config.SkillID)
+ {
+ return true;
+ }
+ }
+
List<Status_Base> _list = null;
if (m_StatusDict.TryGetValue(sid, out _list))
{
for (int i = 0; i < _list.Count; ++i)
{
- if (!_list[i].CanAttack(skillSeries))
+ if (!_list[i].CanAttack(_config.SkillOfSeries))
{
return false;
}
diff --git a/Fight/GameActor/GA_Guard.cs b/Fight/GameActor/GA_Guard.cs
index 15ac7be..a3f4a88 100644
--- a/Fight/GameActor/GA_Guard.cs
+++ b/Fight/GameActor/GA_Guard.cs
@@ -331,7 +331,7 @@
RuntimeAnimatorController _controller = null;
if (m_LoadDefaultRes)
{
- _controller = InstanceResourcesLoader.LoadDefaultMobAnimatorController_Func();
+ _controller = AnimatorControllerLoader.LoadDefaultMobAnimatorController_Func();
}
else
{
diff --git a/Fight/GameActor/GActorFight.cs b/Fight/GameActor/GActorFight.cs
index 6ec4096..1eb6b84 100644
--- a/Fight/GameActor/GActorFight.cs
+++ b/Fight/GameActor/GActorFight.cs
@@ -203,7 +203,7 @@
private float m_LimitDistance;
private float m_AddPer;
- public void StartBeatBack(uint attacker, int configID, Vector3 direction, HurtAttackType atkType = HurtAttackType.Normal)
+ public void StartBeatBack(uint attacker, int configID, Vector3 direction, HurtAttackType atkType = HurtAttackType.Normal, float ExtDis = 0f)
{
SoBodyControl _config = ScriptableObjectLoader.LoadSoBodyControl(configID);
@@ -213,7 +213,7 @@
}
m_AttackerSID = attacker;
- m_LimitDistance = _config.limitDistance;
+ m_LimitDistance = _config.limitDistance + ExtDis;
m_PushOrPull = _config.pushOrPull;
if (!m_PushOrPull)
diff --git a/Fight/GameActor/GActorNpcFight.cs b/Fight/GameActor/GActorNpcFight.cs
index 9cd8c51..42d72a5 100644
--- a/Fight/GameActor/GActorNpcFight.cs
+++ b/Fight/GameActor/GActorNpcFight.cs
@@ -551,11 +551,11 @@
{
if (this is GA_Pet)
{
- _controller = InstanceResourcesLoader.LoadDefaultMobAnimatorController_Pet();
+ _controller = AnimatorControllerLoader.LoadDefaultMobAnimatorController_Pet();
}
else
{
- _controller = InstanceResourcesLoader.LoadDefaultMobAnimatorController_Fight();
+ _controller = AnimatorControllerLoader.LoadDefaultMobAnimatorController_Fight();
}
}
else
@@ -817,7 +817,7 @@
RuntimeAnimatorController _controller = null;
if (m_SheepIsDefaultNpc)
{
- _controller = InstanceResourcesLoader.LoadDefaultMobAnimatorController_Fight();
+ _controller = AnimatorControllerLoader.LoadDefaultMobAnimatorController_Fight();
}
else
{
diff --git a/Fight/GameActor/GActorNpcNoFight.cs b/Fight/GameActor/GActorNpcNoFight.cs
index 5f83da4..1261aeb 100644
--- a/Fight/GameActor/GActorNpcNoFight.cs
+++ b/Fight/GameActor/GActorNpcNoFight.cs
@@ -218,7 +218,7 @@
RuntimeAnimatorController _controller = null;
if (m_LoadDefaultRes)
{
- _controller = InstanceResourcesLoader.LoadDefaultMobAnimatorController_Func();
+ _controller = AnimatorControllerLoader.LoadDefaultMobAnimatorController_Func();
}
else
{
diff --git a/Fight/GameActor/GActorPlayerBase.cs b/Fight/GameActor/GActorPlayerBase.cs
index acbf2e9..f05b804 100644
--- a/Fight/GameActor/GActorPlayerBase.cs
+++ b/Fight/GameActor/GActorPlayerBase.cs
@@ -1665,7 +1665,7 @@
RuntimeAnimatorController _controller = null;
if (m_LoadDefaultHorse)
{
- _controller = InstanceResourcesLoader.LoadDefaultMobAnimatorController_Horse();
+ _controller = AnimatorControllerLoader.LoadDefaultMobAnimatorController_Horse();
}
else
{
diff --git a/Fight/Stage/Dungeon/DungeonStage.cs b/Fight/Stage/Dungeon/DungeonStage.cs
index 88ea215..d634874 100644
--- a/Fight/Stage/Dungeon/DungeonStage.cs
+++ b/Fight/Stage/Dungeon/DungeonStage.cs
@@ -298,8 +298,6 @@
}
}
-
-
private void HandleAutoFight()
{
DungeonModel _dungeonModel = ModelCenter.Instance.GetModel<DungeonModel>();
diff --git a/Lua/Gen/StatusMgrWrap.cs b/Lua/Gen/StatusMgrWrap.cs
index fcb352a..276e9f8 100644
--- a/Lua/Gen/StatusMgrWrap.cs
+++ b/Lua/Gen/StatusMgrWrap.cs
@@ -21,7 +21,7 @@
{
ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
System.Type type = typeof(StatusMgr);
- Utils.BeginObjectRegister(type, L, translator, 0, 23, 5, 5);
+ Utils.BeginObjectRegister(type, L, translator, 0, 24, 5, 5);
Utils.RegisterFunc(L, Utils.METHOD_IDX, "Init", _m_Init);
Utils.RegisterFunc(L, Utils.METHOD_IDX, "Request", _m_Request);
@@ -46,6 +46,7 @@
Utils.RegisterFunc(L, Utils.METHOD_IDX, "IsInvincible", _m_IsInvincible);
Utils.RegisterFunc(L, Utils.METHOD_IDX, "IsInvisible", _m_IsInvisible);
Utils.RegisterFunc(L, Utils.METHOD_IDX, "TryGetSkillEffectValue", _m_TryGetSkillEffectValue);
+ Utils.RegisterFunc(L, Utils.METHOD_IDX, "IsBurning", _m_IsBurning);
Utils.RegisterFunc(L, Utils.GETTER_IDX, "ZhongJiDict", _g_get_ZhongJiDict);
@@ -685,9 +686,9 @@
{
uint _sid = LuaAPI.xlua_touint(L, 2);
- int _skillSeries = LuaAPI.xlua_tointeger(L, 3);
+ SkillConfig __config = (SkillConfig)translator.GetObject(L, 3, typeof(SkillConfig));
- bool gen_ret = gen_to_be_invoked.CanAttack( _sid, _skillSeries );
+ bool gen_ret = gen_to_be_invoked.CanAttack( _sid, __config );
LuaAPI.lua_pushboolean(L, gen_ret);
@@ -792,6 +793,51 @@
}
+ [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+ static int _m_IsBurning(RealStatePtr L)
+ {
+ try {
+
+ ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+
+
+ StatusMgr gen_to_be_invoked = (StatusMgr)translator.FastGetCSObj(L, 1);
+
+
+ int gen_param_count = LuaAPI.lua_gettop(L);
+
+ if(gen_param_count == 3&& LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 2)&& LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 3))
+ {
+ uint _targetSID = LuaAPI.xlua_touint(L, 2);
+ uint _attackSID = LuaAPI.xlua_touint(L, 3);
+
+ bool gen_ret = gen_to_be_invoked.IsBurning( _targetSID, _attackSID );
+ LuaAPI.lua_pushboolean(L, gen_ret);
+
+
+
+ return 1;
+ }
+ if(gen_param_count == 2&& LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 2))
+ {
+ uint _targetSID = LuaAPI.xlua_touint(L, 2);
+
+ bool gen_ret = gen_to_be_invoked.IsBurning( _targetSID );
+ LuaAPI.lua_pushboolean(L, gen_ret);
+
+
+
+ return 1;
+ }
+
+ } catch(System.Exception gen_e) {
+ return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+ }
+
+ return LuaAPI.luaL_error(L, "invalid arguments to StatusMgr.IsBurning!");
+
+ }
+
diff --git a/Lua/Gen/StatusMgrWrap.cs.meta b/Lua/Gen/StatusMgrWrap.cs.meta
index 2d7d461..5ce08a1 100644
--- a/Lua/Gen/StatusMgrWrap.cs.meta
+++ b/Lua/Gen/StatusMgrWrap.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 453eacef8d1aca54d94a552482bebc20
-timeCreated: 1557818434
+timeCreated: 1558494859
licenseType: Pro
MonoImporter:
serializedVersion: 2
--
Gitblit v1.8.0