| | |
| | |
|
| | | public abstract class HeroAI_Base
|
| | | {
|
| | | private TreasureSkillModel m_TreasureSkillModel;
|
| | | private TreasureSkillModel treasureSkillModel
|
| | | {
|
| | | get
|
| | | {
|
| | | return m_TreasureSkillModel ?? (m_TreasureSkillModel = ModelCenter.Instance.GetModel<TreasureSkillModel>());
|
| | | }
|
| | | }
|
| | |
|
| | | public static byte stopReason = 0;
|
| | |
|
| | | private SkillModel m_SkillModel;
|
| | |
| | |
|
| | | if (_skill != null && _skill.skillInfo != null && _skill.skillInfo.config != null)
|
| | | {
|
| | | int _expertSkill = 0;
|
| | | bool _forceCast = false;
|
| | |
|
| | | if (treasureSkillModel.TryGetExpertSkill(_skill.id, out _expertSkill))
|
| | | SkillHelper.EffectValue _effectValue;
|
| | | if (SkillHelper.Instance.TryGetExpertSkillEvByMainSkillID(_skill.id, 4093, out _effectValue))
|
| | | {
|
| | | int _level = 0;
|
| | | if (treasureSkillModel.TryGetExpertActiveLevel(_expertSkill, out _level))
|
| | | {
|
| | | _expertSkill += (_level - 1);
|
| | | }
|
| | | SkillHelper.EffectValue _effectValue;
|
| | | var _skillInfo = SkillHelper.Instance.Get(_expertSkill);
|
| | | if (_skillInfo.effectValue.TryGetValue(4093, out _effectValue))
|
| | | {
|
| | | _forceCast = true;
|
| | | }
|
| | | _forceCast = true;
|
| | | }
|
| | |
|
| | | // 判断是否是被封禁的技能
|
| | |
| | |
|
| | | Skill _skill = m_Hero.SkillMgr.Get(skillID);
|
| | |
|
| | | int _expertSkill = 0;
|
| | | bool _forceCast = false;
|
| | | if (tsModel.TryGetExpertSkill(skillID, out _expertSkill))
|
| | | SkillHelper.EffectValue _effectValue;
|
| | | if (SkillHelper.Instance.TryGetExpertSkillEvByMainSkillID(_skill.id, 4093, out _effectValue))
|
| | | {
|
| | | int _level = 0;
|
| | | if (tsModel.TryGetExpertActiveLevel(_expertSkill, out _level))
|
| | | {
|
| | | _expertSkill += (_level - 1);
|
| | | }
|
| | | SkillHelper.EffectValue _effectValue;
|
| | | var _skillInfo = SkillHelper.Instance.Get(_expertSkill);
|
| | | if (_skillInfo.effectValue.TryGetValue(4093, out _effectValue))
|
| | | {
|
| | | _forceCast = true;
|
| | | }
|
| | | _forceCast = true;
|
| | | }
|
| | |
|
| | | if ((!StatusMgr.Instance.CanAttack(m_Hero.ServerInstID, _skill.skillInfo.config) || m_Hero.IsStun()) && !_forceCast)
|
| | |
| | | ref uint hurtValue,
|
| | | ref byte attackType)
|
| | | {
|
| | | SkillHelper.SkillInfo _exceptSkill = null;
|
| | |
|
| | | if (attacker is GA_Hero)
|
| | | {
|
| | | int _exceptSkillId = 0;
|
| | |
|
| | | if (TsSkillModel.TryGetExpertSkill(skill.skillInfo.config.SkillID, out _exceptSkillId))
|
| | | {
|
| | | _exceptSkill = SkillHelper.Instance.Get(_exceptSkillId);
|
| | | }
|
| | | }
|
| | | SkillHelper.SkillInfo _exceptSkill = SkillHelper.Instance.GetExpertSkill(skill.id);
|
| | |
|
| | | int _hitRate = 1;
|
| | | int _missRate = 0;
|
| | |
| | | bool _isZhuxianHit = false;
|
| | |
|
| | | SkillHelper.EffectValue _effectValue;
|
| | | SkillHelper.SkillInfo _skillInfo;
|
| | |
|
| | | float _aAtkSkillPer = 0;
|
| | | int _atkSkillValue = 0;
|
| | |
| | | }
|
| | | }
|
| | |
|
| | |
|
| | |
|
| | | #endregion
|
| | | }
|
| | |
|
| | |
| | |
|
| | | int _rate = 0;
|
| | |
|
| | | int _exceptSkillId = 0;
|
| | | if (TsSkillModel.TryGetExpertSkill(skillId, out _exceptSkillId))
|
| | | _skillInfo = SkillHelper.Instance.GetExpertSkill(skillId);
|
| | | if (_skillInfo.effectValue.TryGetValue(4081, out _effectValue))
|
| | | {
|
| | | var _esSkillInfo = SkillHelper.Instance.Get(_exceptSkillId);
|
| | | if (_esSkillInfo.effectValue.TryGetValue(4081, out _effectValue))
|
| | | {
|
| | | _rate += _effectValue.value1;
|
| | | }
|
| | | _rate += _effectValue.value1;
|
| | | }
|
| | |
|
| | | var _dict = StatusMgr.Instance.ZhongJiDict;
|
| | |
| | | SkillHelper.SkillInfo _exceptSkill = null;
|
| | | if (attacker is GA_Hero)
|
| | | {
|
| | | int _exceptSkillId = 0;
|
| | |
|
| | | if (TsSkillModel.TryGetExpertSkill(skillInfo.config.SkillID, out _exceptSkillId))
|
| | | {
|
| | | _exceptSkill = SkillHelper.Instance.Get(_exceptSkillId);
|
| | | }
|
| | | _exceptSkill = SkillHelper.Instance.GetExpertSkill(skillInfo.config.SkillID);
|
| | | }
|
| | |
|
| | | #region 伤害增加
|
| | |
| | | using System;
|
| | | using Snxxz.UI;
|
| | | using System.Collections.Generic;
|
| | |
|
| | | using UnityEngine;
|
| | |
| | | [XLua.LuaCallCSharp]
|
| | | public class SkillHelper : Singleton<SkillHelper>
|
| | | {
|
| | | private TreasureSkillModel m_TreasureSkillModel;
|
| | | private TreasureSkillModel treasureSkillModel
|
| | | {
|
| | | get
|
| | | {
|
| | | return m_TreasureSkillModel ?? (m_TreasureSkillModel = ModelCenter.Instance.GetModel<TreasureSkillModel>());
|
| | | }
|
| | | }
|
| | |
|
| | | private Dictionary<int, SkillInfo> m_SkillInfoDict;
|
| | | private Dictionary<int, List<SkillInfo>> m_SkillToSpSkill;
|
| | | private Dictionary<int, int> m_SkillTypeIDToSkillID;
|
| | |
|
| | | public SkillInfo GetExpertSkill(int mainSkillId)
|
| | | {
|
| | | int _expertSkillID = 0;
|
| | | if (treasureSkillModel.TryGetExpertSkill(mainSkillId, out _expertSkillID))
|
| | | {
|
| | | int _level = 0;
|
| | | if (treasureSkillModel.TryGetExpertActiveLevel(_expertSkillID, out _level))
|
| | | {
|
| | | _expertSkillID += (_level - 1);
|
| | | }
|
| | | return SkillHelper.Instance.Get(_expertSkillID);
|
| | | }
|
| | | return null;
|
| | | }
|
| | |
|
| | | public bool TryGetExpertSkillEvByMainSkillID(int mainSkillId, int evID, out EffectValue ev)
|
| | | {
|
| | | var _skillInfo = GetExpertSkill(mainSkillId);
|
| | | if (_skillInfo != null)
|
| | | {
|
| | | if (_skillInfo.effectValue.ContainsKey(evID))
|
| | | {
|
| | | ev = _skillInfo.effectValue[evID];
|
| | | return true;
|
| | | }
|
| | | }
|
| | | ev = default(EffectValue);
|
| | | return false;
|
| | | }
|
| | |
|
| | | public void Init()
|
| | | {
|
| | | if (m_SkillInfoDict == null)
|