| | |
| | |
|
| | | 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))
|
| | | {
|
| | | 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;
|
| | | }
|
| | | }
|
| | |
|
| | | // 判断是否是被封禁的技能
|
| | | if (!StatusMgr.Instance.CanAttack(_hero.ServerInstID, _skill.skillInfo.config))
|
| | | if (!StatusMgr.Instance.CanAttack(_hero.ServerInstID, _skill.skillInfo.config) && !_forceCast)
|
| | | {
|
| | | return _skill;
|
| | | }
|
| | |
| | | }
|
| | |
|
| | | if (StatusMgr.Instance.IsExist(_hero.ServerInstID, skillID))
|
| | | {
|
| | | return false;
|
| | | }
|
| | |
|
| | | // 判断是否是被封禁的技能
|
| | | if (!StatusMgr.Instance.CanAttack(_hero.ServerInstID, _skill.skillInfo.config))
|
| | | {
|
| | | return false;
|
| | | }
|
| | |
| | | GA_Hero _hero = PlayerDatas.Instance.hero;
|
| | | if (_hero == null
|
| | | || _hero.ActorInfo.serverDie
|
| | | || !_hero.CanCastSkill()
|
| | | || !_hero.CanCommonAtk())
|
| | | || !_hero.CanCastSkill())
|
| | | {
|
| | | return;
|
| | | }
|
| | |
| | | return;
|
| | | }
|
| | |
|
| | | if (_skill.skillInfo.config.FuncType == 8)
|
| | | {
|
| | | if (!_hero.CanCommonAtk())
|
| | | {
|
| | | return;
|
| | | }
|
| | | }
|
| | |
|
| | | bool _forceMove = _skill.skillInfo.soFile != null && _skill.skillInfo.soFile.forceMove;
|
| | |
|
| | | if (_target == null ||
|
| | |
| | |
|
| | | Skill _skill = m_Hero.SkillMgr.Get(skillID);
|
| | |
|
| | | if (!StatusMgr.Instance.CanAttack(m_Hero.ServerInstID, _skill.skillInfo.config))
|
| | | int _expertSkill = 0;
|
| | | bool _forceCast = false;
|
| | | if (tsModel.TryGetExpertSkill(skillID, out _expertSkill))
|
| | | {
|
| | | 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;
|
| | | }
|
| | | }
|
| | |
|
| | | if ((!StatusMgr.Instance.CanAttack(m_Hero.ServerInstID, _skill.skillInfo.config) || m_Hero.IsStun()) && !_forceCast)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
| | |
|
| | | 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))
|
| | | {
|
| | |
| | | {
|
| | | return !MapArea.IsInMapArea(CurMapArea, MapArea.E_Type.Safe)
|
| | | && !MapArea.IsInMapArea(CurMapArea, MapArea.E_Type.RebornSafe)
|
| | | && !IsStun()
|
| | | && !IsHurt()
|
| | | && !IsDaZuo()
|
| | | && State != E_ActorState.Roll
|
| | |
| | | var forbid = !StatusMgr.Instance.CanCastSkill(PlayerDatas.Instance.baseData.PlayerID); |
| | | for (int i = 0; i <= 8; i++) |
| | | { |
| | | if (placeSkillMap.ContainsKey(i)) |
| | | { |
| | | int _skillId = placeSkillMap[i]; |
| | | var _tsModel = ModelCenter.Instance.GetModel<TreasureSkillModel>(); |
| | | if (_tsModel.TryGetExpertSkill(_skillId, out _skillId)) |
| | | { |
| | | int _level = 0; |
| | | if (_tsModel.TryGetExpertActiveLevel(_skillId, out _level)) |
| | | { |
| | | _skillId += (_level - 1); |
| | | } |
| | | var _skillInfo = SkillHelper.Instance.Get(_skillId); |
| | | SkillHelper.EffectValue _effectValue; |
| | | if (_skillInfo.effectValue.TryGetValue(4093, out _effectValue)) |
| | | { |
| | | if (forbid) |
| | | { |
| | | continue; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | var skillForbid = GetSkillForbid(i); |
| | | skillForbid.value = forbid; |
| | | } |