Ejemplo n.º 1
0
 public void MFSMCastSkillBegin(int netId, E_MonsterSkill skill, SkillParam sp)
 {
     // client
     m_networkService.SendServerCommand(SC_ApplyAllCastSkillBegin.Instance(
                                            EM_Sight.s_instance.GetInSightCharacterNetworkId(netId, false),
                                            netId,
                                            skill.m_SkillId,
                                            sp.GetNo()));
 }
Ejemplo n.º 2
0
            public override MFSMStateBase GetNextState(E_Monster self)
            {
                if (self.m_IsDead)
                {
                    return(m_mfsm.m_dead);
                }
                if (self.m_IsFaint)
                {
                    return(m_mfsm.m_faint);
                }
                if (self.m_HighestHatredTargetNetId == -1)
                {
                    return(m_mfsm.m_autoMove);
                }
                if (self.m_IsSilent)
                {
                    return(null);
                }
                var unit = EM_Sight.s_instance.GetUnitVisibleByNetworkId(self.m_HighestHatredTargetNetId);

                if (unit == null)
                {
                    return(null);
                }
                // 尝试对仇恨最高的目标释放技能
                E_MonsterSkill skill;

                if (EM_MonsterSkill.s_instance.GetRandomValidSkill(self.m_MonsterId, out skill))
                {
                    var spg = SkillParamGeneratorBase.GetSpg(skill.m_AimType);
                    if (spg.InCastRange(self, skill.m_CastRange, unit))
                    {
                        SkillParam sp        = spg.GetSkillParam(self, unit);
                        var        castState = m_mfsm.m_castFront;
                        castState.Reset(skill, sp);
                        return(castState);
                    }
                }
                return(null);
            }
Ejemplo n.º 3
0
 public void MFSMSkillSettle(E_Monster monster, E_MonsterSkill skill, SkillParam sp)
 {
     GL_BattleSettle.s_instance.NotifySkillSettle(monster, skill, sp);
 }
 public void NotifySkillSettle(E_Unit self, E_MonsterSkill skill, SkillParam parm)
 {
     NotifySkillSettle(self, skill, m_targetStage.GetTargetList(self, skill, parm));
 }
            public IReadOnlyList <E_Unit> GetTargetList(E_Unit self, E_MonsterSkill skill, SkillParam skillParm)
            {
                EffectTargetChooserBase targetChooser = m_targetChooserDict[skill.m_AimType];

                targetChooser.Reset(skill.m_TargetCamp, skill.m_TargetNumber, skill.m_DamageParamList);
                targetChooser.GetEffectTargets(self, skillParm, m_targetList);
                return(m_targetList);
            }
Ejemplo n.º 6
0
 public void Reset(E_MonsterSkill skill, SkillParam parm)
 {
     m_skill      = skill;
     m_skillParam = parm;
     m_timer      = skill.m_CastFrontTime;
 }