Example #1
0
        // 进入状态
        public override void Enter(object param)
        {
            totalTime = 0;
            skillPart = m_SkillPart;
            if (skillPart.GetSkillPartType() == SkillPartType.SKILL_PLAYERPART)
            {
                PlayerSkillPart playerSkill = skillPart as PlayerSkillPart;
                if (playerSkill.AttackAnimState != null)
                {
                    //  playerSkill.PlaySkillAnim("Skill005", false);
                    //收招
                    string aniName = playerSkill.AttackAnimState.name + "_over";
                    if (playerSkill.Master.GetAnimationState(aniName) != null)
                    {
                        playerSkill.PlaySkillAnim(aniName, false);
                    }
                }
                else
                {
                    //Engine.Utility.Log.Trace("SkillOverState.Enter {0}技能收招动作为空!", playerSkill.GetMaster().GetName());
                }
                playerSkill.Master.SendMessage(EntityMessage.EntityCommond_IgnoreMoveAction, false);
                if (playerSkill.IsMainPlayer())
                {
                    stNextSkill       st = new stNextSkill();
                    IControllerSystem cs = playerSkill.GetCtrollerSys();
                    if (cs == null)
                    {
                        Log.Error("ExecuteCmd: ControllerSystem is null");
                        return;
                    }

                    if (cs.GetCombatRobot().Status == CombatRobotStatus.RUNNING)
                    {
                        if (playerSkill.IsCombo(playerSkill.CurSkillID))
                        {//挂机连击
                            st.curSkillID = playerSkill.CurSkillID;
                            SkillDoubleHitDataBase db = GameTableManager.Instance.GetTableItem <SkillDoubleHitDataBase>((uint)playerSkill.CurSkillID);
                            if (db != null)
                            {
                                st.nextSkillID = db.nextskillid;
                                if (db.nextskillid == db.beginskillid)
                                {//挂机第三招要收招
                                    st.nextSkillID = 0;
                                }
                                EventEngine.Instance().DispatchEvent((int)GameEventID.SKILLSYSTEM_STIFFTIMEOVER, st);
                            }
                        }
                    }
                    else
                    {//非挂机时  插入其他技能
                        st.nextSkillID = 0;
                        EventEngine.Instance().DispatchEvent((int)GameEventID.SKILLSYSTEM_STIFFTIMEOVER, st);
                    }
                }
            }
        }