| | |
| | | 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
|
| | | };
|
| | |
| | | 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
|
| | | };
|
| | |
| | | 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_"; |
| | |
| | | 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) |
| | |
| | | _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) |
| | |
| | | using UnityEditor;
|
| | | #endif
|
| | |
|
| | | [XLua.LuaCallCSharp]
|
| | | public class InstanceResourcesLoader
|
| | | {
|
| | | public static readonly string raceSuffix = "Prefab_Race_";
|
| | |
| | | }
|
| | |
|
| | | 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()
|
| | |
| | | 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;
|
| | | }
|
| | |
| | | }
|
| | |
|
| | | // 判断是否是被封禁的技能
|
| | | if (!StatusMgr.Instance.CanAttack(_hero.ServerInstID, _skill.skillInfo.config.SkillOfSeries))
|
| | | if (!StatusMgr.Instance.CanAttack(_hero.ServerInstID, _skill.skillInfo.config))
|
| | | {
|
| | | return false;
|
| | | }
|
| | |
| | |
|
| | | 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;
|
| | | }
|
| | |
| | | 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;
|
| | | }
|
| | |
| | | public static void HandlerAttackTarget(GActorFight attacker,
|
| | | GActorFight target,
|
| | | int hurtValue,
|
| | | int realHurtValue,
|
| | | byte attackType,
|
| | | int skillID,
|
| | | int soConfigID,
|
| | |
| | |
|
| | | 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);
|
| | | }
|
| | | }
|
| | |
|
| | |
| | |
|
| | | if (_doReduceHp)
|
| | | {
|
| | | target.ActorInfo.ReduceHp((uint)hurtValue);
|
| | | target.ActorInfo.ReduceHp((uint)realHurtValue);
|
| | | }
|
| | |
|
| | | if (target.ServerInstID == PlayerDatas.Instance.baseData.PlayerID)
|
| | |
| | | bool _isZhuxianHit = false;
|
| | |
|
| | | SkillHelper.EffectValue _effectValue;
|
| | | SkillHelper.SkillInfo _skillInfo;
|
| | |
|
| | | float _aAtkSkillPer = 0;
|
| | | int _atkSkillValue = 0;
|
| | |
| | | }
|
| | |
|
| | | #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)
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | if (skill.skillInfo.effectValue.TryGetValue(4507, out _effectValue))
|
| | | if (StatusMgr.Instance.TryGetSkillEffectValue(attacker.ServerInstID, 4507, out _effectValue))
|
| | | {
|
| | | bool _vaild = true;
|
| | | if (_effectValue.value2 == 1)
|
| | |
| | | }
|
| | | 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);
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | 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)
|
| | |
| | | || 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);
|
| | |
| | | {
|
| | | 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);
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | }
|
| | |
|
| | | 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)
|
| | | {
|
| | |
| | | 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))
|
| | |
| | |
|
| | | 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)
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | if (attacker.SkillMgr.TryGetPassiveEffectValue(4087, out _effectValue))
|
| | | if (attacker.SkillMgr.TryGetPassiveEffectValue(4087, out _effectValue, out _skillInfo))
|
| | | {
|
| | | if (PlayerDatas.Instance.baseData.yinjiCount > _effectValue.value2)
|
| | | {
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | 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)
|
| | | {
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | if (attacker.SkillMgr.TryGetPassiveEffectValue(4015, out _effectValue))
|
| | | if (attacker.SkillMgr.TryGetPassiveEffectValue(4015, out _effectValue, out _skillInfo))
|
| | | {
|
| | | if (target.ActorInfo.status4012.ContainsKey((byte)_effectValue.value2))
|
| | | {
|
| | |
| | | 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;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | 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))
|
| | | {
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | if (attacker.SkillMgr.TryGetPassiveEffectValue(4096, out _effectValue))
|
| | | if (attacker.SkillMgr.TryGetPassiveEffectValue(4096, out _effectValue, out _skillInfo))
|
| | | {
|
| | | if (StatusMgr.Instance.IsExist(target.ServerInstID, _effectValue.value3))
|
| | | {
|
| | |
| | | }
|
| | |
|
| | | // 4005 概率增加攻击(技能)伤害万分率
|
| | | if (skillInfo.effectValue.TryGetValue(4005, out _effectValue))
|
| | | if (attacker.SkillMgr.TryGetPassiveEffectValue(4005, out _effectValue, out _skillInfo))
|
| | | {
|
| | | if (Random.Range(0, 10000) < _effectValue.value2)
|
| | | {
|
| | |
| | | }
|
| | |
|
| | | // 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);
|
| | |
| | | }
|
| | |
|
| | | // 4011 暴击时增加技能伤害
|
| | | if (skillInfo.effectValue.TryGetValue(4011, out _effectValue))
|
| | | if (attacker.SkillMgr.TryGetPassiveEffectValue(4011, out _effectValue, out _skillInfo))
|
| | | {
|
| | | if (_isCrit)
|
| | | {
|
| | |
| | | }
|
| | |
|
| | | // 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)
|
| | | {
|
| | |
| | | }
|
| | |
|
| | | // 4025 攻击附加真实伤害
|
| | | if (skillInfo.effectValue.TryGetValue(4025, out _effectValue))
|
| | | if (attacker.SkillMgr.TryGetPassiveEffectValue(4025, out _effectValue, out _skillInfo))
|
| | | {
|
| | | _aIceAtk += _effectValue.value1;
|
| | |
|
| | |
| | | #region 暴击伤害增加
|
| | |
|
| | | // 4007 暴击时增加暴击值, 增加暴击值万分率, 虚要判断自己身上是否有配置的buff
|
| | | if (skillInfo.effectValue.TryGetValue(4007, out _effectValue))
|
| | | if (attacker.SkillMgr.TryGetPassiveEffectValue(4007, out _effectValue, out _skillInfo))
|
| | | {
|
| | | bool _condition = true;
|
| | |
|
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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)
|
| | |
| | | _skill = SkillHelper.Instance.Get(_id);
|
| | | if (_skill.effectValue.TryGetValue(id, out effectValue))
|
| | | {
|
| | | skill = _skill;
|
| | | return true;
|
| | | }
|
| | | }
|
| | | effectValue = default(SkillHelper.EffectValue);
|
| | | skill = null;
|
| | | return false;
|
| | | }
|
| | |
|
| | |
| | |
|
| | | GActorFight _target = null;
|
| | | int _hurtTotalValue = 0;
|
| | | int _realHurtValue = 0;
|
| | |
|
| | | m_NpcPosList.Clear();
|
| | |
|
| | |
| | | }
|
| | |
|
| | | _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,
|
| | |
| | | }
|
| | |
|
| | | _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,
|
| | |
| | | }
|
| | |
|
| | | _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);
|
| | |
| | | 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;
|
| | | }
|
| | |
| | | RuntimeAnimatorController _controller = null; |
| | | if (m_LoadDefaultRes) |
| | | { |
| | | _controller = InstanceResourcesLoader.LoadDefaultMobAnimatorController_Func(); |
| | | _controller = AnimatorControllerLoader.LoadDefaultMobAnimatorController_Func(); |
| | | } |
| | | else |
| | | { |
| | |
| | | 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);
|
| | |
|
| | |
| | | }
|
| | |
|
| | | m_AttackerSID = attacker;
|
| | | m_LimitDistance = _config.limitDistance;
|
| | | m_LimitDistance = _config.limitDistance + ExtDis;
|
| | | m_PushOrPull = _config.pushOrPull;
|
| | |
|
| | | if (!m_PushOrPull)
|
| | |
| | | {
|
| | | if (this is GA_Pet)
|
| | | {
|
| | | _controller = InstanceResourcesLoader.LoadDefaultMobAnimatorController_Pet();
|
| | | _controller = AnimatorControllerLoader.LoadDefaultMobAnimatorController_Pet();
|
| | | }
|
| | | else
|
| | | {
|
| | | _controller = InstanceResourcesLoader.LoadDefaultMobAnimatorController_Fight();
|
| | | _controller = AnimatorControllerLoader.LoadDefaultMobAnimatorController_Fight();
|
| | | }
|
| | | }
|
| | | else
|
| | |
| | | RuntimeAnimatorController _controller = null;
|
| | | if (m_SheepIsDefaultNpc)
|
| | | {
|
| | | _controller = InstanceResourcesLoader.LoadDefaultMobAnimatorController_Fight();
|
| | | _controller = AnimatorControllerLoader.LoadDefaultMobAnimatorController_Fight();
|
| | | }
|
| | | else
|
| | | {
|
| | |
| | | RuntimeAnimatorController _controller = null;
|
| | | if (m_LoadDefaultRes)
|
| | | {
|
| | | _controller = InstanceResourcesLoader.LoadDefaultMobAnimatorController_Func();
|
| | | _controller = AnimatorControllerLoader.LoadDefaultMobAnimatorController_Func();
|
| | | }
|
| | | else
|
| | | {
|
| | |
| | | RuntimeAnimatorController _controller = null;
|
| | | if (m_LoadDefaultHorse)
|
| | | {
|
| | | _controller = InstanceResourcesLoader.LoadDefaultMobAnimatorController_Horse();
|
| | | _controller = AnimatorControllerLoader.LoadDefaultMobAnimatorController_Horse();
|
| | | }
|
| | | else
|
| | | {
|
| | |
| | | }
|
| | | }
|
| | |
|
| | |
|
| | |
|
| | | private void HandleAutoFight()
|
| | | {
|
| | | DungeonModel _dungeonModel = ModelCenter.Instance.GetModel<DungeonModel>();
|
| | |
| | | { |
| | | 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); |
| | |
| | | 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); |
| | |
| | | |
| | | { |
| | | 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); |
| | | |
| | | |
| | |
| | | |
| | | } |
| | | |
| | | [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!"); |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 453eacef8d1aca54d94a552482bebc20 |
| | | timeCreated: 1557818434 |
| | | timeCreated: 1558494859 |
| | | licenseType: Pro |
| | | MonoImporter: |
| | | serializedVersion: 2 |