Exemplo n.º 1
0
    /// <summary>
    /// 改变技能cd
    /// </summary>
    /// <param name="unSkillId"></param>
    /// <param name="byteCD"></param>
    public void OnSkillCDChange(int unSkillId, byte byteCD)
    {
        SkillGameData skillById = this.GetSkillById(unSkillId);

        if (skillById != null && !skillById.IsError)
        {
            skillById.CDTime = byteCD;
        }
    }
Exemplo n.º 2
0
        public static int GetAssistValue(SkillGameData skill, CharacterStats primarySkillCheck, out int leftoverAssistPoints, out int pointsUntilNextLevel, StatBreakdown breakdown = null)
        {
            int num = 0;

            AssistBreakdown    assistBreakdown           = breakdown as AssistBreakdown;
            List <PartyMember> activePrimaryPartyMembers = SingletonBehavior <PartyManager> .Instance.GetActivePrimaryPartyMembers();

            foreach (PartyMember partyMember in activePrimaryPartyMembers)
            {
                CharacterStats component = partyMember.GetComponent <CharacterStats>();

                if (component == null || component == primarySkillCheck)
                {
                    continue;
                }

                if (ScriptedInteraction.ActiveInteraction != null && !ScriptedInteraction.IsPartyMemberAvailable(ScriptedInteraction.ActiveInteraction, partyMember))
                {
                    continue;
                }

                num += component.CalculateSkill(skill, null);
                assistBreakdown?.AddHelperCharacter(component.gameObject);
            }

            for (int j = SkillManager.GameData.AssistThresholds.Length - 1; j >= 0; j--)
            {
                int threshold = SkillManager.GameData.AssistThresholds[j].Threshold;

                if (num < threshold)
                {
                    continue;
                }

                int result = StatBreakdown.AddAdditiveBonus(breakdown, SkillManager.GameData.AssistThresholds[j].AssistValue, StringTableType.Gui, 2570);
                leftoverAssistPoints = num - threshold;

                if (j < SkillManager.GameData.AssistThresholds.Length - 1)
                {
                    pointsUntilNextLevel = SkillManager.GameData.AssistThresholds[j + 1].Threshold - num;
                }
                else
                {
                    Debug.LogError("Assist points reached the top of the assist bonus table. More rows need to be defined.");
                    pointsUntilNextLevel = 0;
                }

                return(result);
            }

            leftoverAssistPoints = num;
            pointsUntilNextLevel = SkillManager.GameData.AssistThresholds[0].Threshold - leftoverAssistPoints;

            return(0);
        }
Exemplo n.º 3
0
    /// <summary>
    /// 取得技能cd
    /// </summary>
    /// <param name="skillId"></param>
    /// <returns></returns>
    public int GetSkillCD(int skillId)
    {
        SkillGameData data = this.GetSkillById(skillId);

        if (data != null)
        {
            return(data.CDTime);
        }
        else
        {
            return(-1);
        }
    }
Exemplo n.º 4
0
 /// <summary>
 /// 激活所有技能
 /// </summary>
 public void ActiveSkills()
 {
     for (int i = 0; i < this.m_listSkillData.Count; i++)
     {
         SkillGameData skillData = this.m_listSkillData[i];
         if (!skillData.IsActive)
         {
         }
         SkillBase skillBase = SkillGameManager.GetSkillBase(skillData.Id);
         if (skillBase != null)
         {
             skillBase.Active(this.m_unMasterBeastId);
         }
     }
 }
Exemplo n.º 5
0
    /// <summary>
    /// 通过技能id获取技能数据
    /// </summary>
    /// <param name="unSkillId"></param>
    /// <returns></returns>
    public SkillGameData GetSkillById(int unSkillId)
    {
        SkillGameData result;

        for (int i = 0; i < this.m_listSkillData.Count; i++)
        {
            SkillGameData skillData = this.m_listSkillData[i];
            if (skillData.Id == unSkillId)
            {
                result = skillData;
                return(result);
            }
        }
        result = SkillGameData.SkillDataError;
        return(result);
    }
Exemplo n.º 6
0
    /// <summary>
    /// 激活某个技能
    /// </summary>
    /// <param name="unSkillId"></param>
    public void ActiveSkill(int unSkillId)
    {
        SkillGameData skill = this.GetSkillById(unSkillId);

        if (skill != null && !skill.IsError)
        {
            if (!skill.IsActive)
            {
                //this.MasterBeast
            }
            SkillBase skillStrategy = SkillGameManager.GetSkillBase(skill.Id);
            if (skillStrategy != null)
            {
                skillStrategy.Active(this.m_unMasterBeastId);
            }
        }
    }
Exemplo n.º 7
0
    /// <summary>
    /// 刷新技能
    /// </summary>
    /// <param name="bNeedRebuild"></param>
    public void RefreshSkill(bool bNeedRebuild)
    {
        if (base.Prepared)
        {
            if (bNeedRebuild)
            {
                List <SkillGameData> skills = Singleton <BeastRole> .singleton.Beast.Skills;
                for (int i = 0; i < skills.Count; i++)
                {
                    SkillGameData skillData = skills[i];
                    switch (skillData.SkillType)
                    {
                    case 0:
                        base.uiBehaviour.m_Sprite_SkillQ.SetSprite(skillData.IconFile, UIManager.singleton.GetAtlasName(EnumAtlasType.Skill, skillData.IconFile));
                        break;

                    case 1:
                        base.uiBehaviour.m_Sprite_SkillW.SetSprite(skillData.IconFile, UIManager.singleton.GetAtlasName(EnumAtlasType.Skill, skillData.IconFile));
                        break;

                    case 2:
                        base.uiBehaviour.m_Sprite_SkillE.SetSprite(skillData.IconFile, UIManager.singleton.GetAtlasName(EnumAtlasType.Skill, skillData.IconFile));
                        break;

                    case 3:
                        base.uiBehaviour.m_Sprite_SkillR.SetSprite(skillData.IconFile, UIManager.singleton.GetAtlasName(EnumAtlasType.Skill, skillData.IconFile));
                        break;

                    case 4:
                        break;

                    case 5:
                        break;
                    }
                }
            }
            else
            {
            }
        }
    }
Exemplo n.º 8
0
 public void AddSkill(SkillGameData data, bool bNeedActive, ESkillActivateType eSkillACtiveType)
 {
     if (data != null)
     {
         //如果还不存在该技能
         if (!this.HasSkill(data.Id))
         {
             this.m_listSkillData.Add(data);
             if (bNeedActive)
             {
                 this.ActiveSkill(data.Id);
             }
             if (this.MasterBeast.Role)
             {
                 Singleton <BeastRole> .singleton.OnAddSkill(data.Id);
             }
         }
         else
         {
             this.m_log.Error(string.Format("m_dicSkill.ContainsKey{0} == true", data.Id));
         }
     }
 }
Exemplo n.º 9
0
 /// <summary>
 /// 释放技能
 /// </summary>
 /// <param name="skillId"></param>
 /// <param name="param"></param>
 public void OnCastSkill(int skillId, CastSkillParam param)
 {
     try
     {
         SkillGameData skillData = this.GetSkillById(skillId);
         if (skillData != null && !skillData.IsError)
         {
             foreach (var current in this.m_listSkillData)
             {
                 SkillBase skillBegin = SkillGameManager.GetSkillBase(current.Id);
                 if (skillBegin != null)
                 {
                     skillBegin.OnCastSkillBegin(this.m_unMasterBeastId, skillId);
                 }
             }
             SkillBase skill = SkillGameManager.GetSkillBase(skillData.Id);
             if (skill != null)
             {
                 param.unTargetSkillID = skillId;
                 skill.Cast(param);
             }
             foreach (var current in this.m_listSkillData)
             {
                 SkillBase skillEnd = SkillGameManager.GetSkillBase(current.Id);
                 if (skillEnd != null)
                 {
                     skillEnd.OnCastSkillBegin(this.m_unMasterBeastId, skillId);
                 }
             }
         }
     }
     catch (Exception e)
     {
         this.m_log.Fatal(e);
     }
 }
Exemplo n.º 10
0
        public static int GetAssistValue(SkillGameData skill, CharacterStats primarySkillCheck, out int leftoverAssistPoints, out int pointsUntilNextLevel, StatBreakdown breakdown = null)
        {
            if (!_configHasBeenInit)
            {
                _configHasBeenInit = true;
                _useMod            = UserConfig.GetValueAsBool("PartyAssistRangeMod", "enableMod");
            }

            int num = 0;

            AssistBreakdown    assistBreakdown           = breakdown as AssistBreakdown;
            List <PartyMember> activePrimaryPartyMembers = SingletonBehavior <PartyManager> .Instance.GetActivePrimaryPartyMembers();

            foreach (PartyMember partyMember in activePrimaryPartyMembers)
            {
                CharacterStats component = partyMember.GetComponent <CharacterStats>();

                if (component == null || component == primarySkillCheck)
                {
                    continue;
                }

                if (ScriptedInteraction.ActiveInteraction != null && !ScriptedInteraction.IsPartyMemberAvailable(ScriptedInteraction.ActiveInteraction, partyMember))
                {
                    continue;
                }

                if (!_useMod && SingletonBehavior <ConversationManager> .Instance.IsConversationOrSIRunning())
                {
                    FlowChartPlayer activeConversationForHUD = SingletonBehavior <ConversationManager> .Instance.GetActiveConversationForHUD();

                    if (activeConversationForHUD != null)
                    {
                        NPCInteraction component2 = activeConversationForHUD.OwnerObject.GetComponent <NPCInteraction>();
                        if (component2 != null && !component2.IsPartyMemberInRange(partyMember))
                        {
                            continue;
                        }
                    }
                }

                num += component.CalculateSkill(skill, null);
                assistBreakdown?.AddHelperCharacter(component.gameObject);
            }

            for (int j = SkillManager.GameData.AssistThresholds.Length - 1; j >= 0; j--)
            {
                int threshold = SkillManager.GameData.AssistThresholds[j].Threshold;

                if (num < threshold)
                {
                    continue;
                }

                int result = StatBreakdown.AddAdditiveBonus(breakdown, SkillManager.GameData.AssistThresholds[j].AssistValue, StringTableType.Gui, 2570);
                leftoverAssistPoints = num - threshold;

                if (j < SkillManager.GameData.AssistThresholds.Length - 1)
                {
                    pointsUntilNextLevel = SkillManager.GameData.AssistThresholds[j + 1].Threshold - num;
                }
                else
                {
                    Debug.LogError("Assist points reached the top of the assist bonus table. More rows need to be defined.");
                    pointsUntilNextLevel = 0;
                }

                return(result);
            }

            leftoverAssistPoints = num;
            pointsUntilNextLevel = SkillManager.GameData.AssistThresholds[0].Threshold - leftoverAssistPoints;

            return(0);
        }
Exemplo n.º 11
0
    public void AddSkill(int skillId, bool bNeedActive, ESkillActivateType eSkillActiveType)
    {
        SkillGameData skillData = new SkillGameData(skillId);

        this.AddSkill(skillData, bNeedActive, eSkillActiveType);
    }
Exemplo n.º 12
0
    public void RefreshSkill(EnumSkillType type, int skillId)
    {
        List <SkillGameData> skills = Singleton <BeastRole> .singleton.Beast.Skills;

        for (int i = 0; i < skills.Count; i++)
        {
            SkillGameData skillData = skills[i];
            if (skillId == skillData.Id)
            {
                if (skillId == 1)
                {
                    //this.uiBehaviour.m_Button_Attack.SetEnable(skillData.CDTime <= 0);
                    return;
                }
                switch (skillData.SkillType)
                {
                case 0:
                    IXUILabel cdq = base.uiBehaviour.m_Sprite_SkillQ.GetUIObject("lb_skillQ_cd") as IXUILabel;
                    if (skillData.CDTime > 0)
                    {
                        cdq.SetText(skillData.CDTime.ToString());
                        cdq.SetVisible(true);
                        this.uiBehaviour.m_Sprite_SkillQ.SetEnable(false);
                    }
                    else
                    {
                        cdq.SetVisible(false);
                        this.uiBehaviour.m_Sprite_SkillQ.SetEnable(true);
                    }
                    break;

                case 1:
                    IXUILabel cdw = base.uiBehaviour.m_Button_SkillW.GetUIObject("lb_skillW_cd") as IXUILabel;
                    if (skillData.CDTime > 0)
                    {
                        cdw.SetText(skillData.CDTime.ToString());
                        cdw.SetVisible(true);
                        base.uiBehaviour.m_Button_SkillW.SetEnable(false);
                    }
                    else
                    {
                        cdw.SetVisible(false);
                        base.uiBehaviour.m_Button_SkillW.SetEnable(true);
                    }
                    break;

                case 2:
                    IXUILabel cde = base.uiBehaviour.m_Button_SkillE.GetUIObject("lb_skillE_cd") as IXUILabel;
                    if (skillData.CDTime > 0)
                    {
                        cde.SetText(skillData.CDTime.ToString());
                        cde.SetVisible(true);
                        base.uiBehaviour.m_Sprite_SkillE.SetEnable(false);
                    }
                    else
                    {
                        cde.SetVisible(false);
                        base.uiBehaviour.m_Sprite_SkillE.SetEnable(true);
                    }
                    break;

                case 3:
                    IXUILabel cdr = base.uiBehaviour.m_Sprite_SkillR.GetUIObject("lb_skillR_cd") as IXUILabel;
                    if (cdr != null && skillData.CDTime > 0)
                    {
                        cdr.SetText(skillData.CDTime.ToString());
                        cdr.SetVisible(true);
                        base.uiBehaviour.m_Sprite_SkillR.SetEnable(false);
                    }
                    else
                    {
                        cdr.SetVisible(false);
                        base.uiBehaviour.m_Sprite_SkillR.SetEnable(true);
                    }
                    break;

                case 4:
                    break;

                case 5:
                    break;
                }
            }
        }
    }
Exemplo n.º 13
0
        /// <summary>
        /// 玩家确认选择该神兽
        /// </summary>
        /// <param name="unRoleId"></param>
        /// <param name="unBeastTypeId"></param>
        /// <param name="unBeastLevel"></param>
        /// <param name="oSkillList"></param>
        /// <param name="btIsRandom"></param>
        /// <param name="nSuitId"></param>
        public void OnPlayerSelectBeast(long unRoleId, int unBeastTypeId, int unBeastLevel, ref List <int> oSkillList, byte btIsRandom, int nSuitId)
        {
            BeastData beastData = null;

            foreach (var current in this.m_listEnemyPlayers)
            {
                for (int i = 0; i < current.Beasts.Count; i++)
                {
                    BeastData beast = current.Beasts[i];
                    if (beast.Id == unRoleId)
                    {
                        beastData         = beast;
                        beast.BeastTypeId = unBeastTypeId;
                        beast.BeastLevel  = unBeastLevel;
                        beast.IsRandom    = (btIsRandom > 0);
                        beast.SuitId      = nSuitId;
                        beast.Skills.Clear();
                        foreach (var skill in oSkillList)
                        {
                            SkillGameData data = new SkillGameData(skill);
                            beast.Skills.Add(data);
                        }
                    }
                }
            }
            foreach (var current in this.m_listOurPlayers)
            {
                for (int i = 0; i < current.Beasts.Count; i++)
                {
                    BeastData beast = current.Beasts[i];
                    if (beast.Id == unRoleId)
                    {
                        beastData         = beast;
                        beast.BeastTypeId = unBeastTypeId;
                        beast.BeastLevel  = unBeastLevel;
                        beast.IsRandom    = (btIsRandom > 0);
                        beast.SuitId      = nSuitId;
                        beast.Skills.Clear();
                        foreach (var skill in oSkillList)
                        {
                            SkillGameData data = new SkillGameData(skill);
                            beast.Skills.Add(data);
                        }
                    }
                }
            }
            if (beastData != null)
            {
                if (!beastData.IsRandom)
                {
                    DlgBase <DlgRoom, DlgRoomBehaviour> .singleton.RefreshPlayerInfo(beastData);

                    if (beastData.Id == DlgBase <DlgRoom, DlgRoomBehaviour> .singleton.CurSelectBeastId)
                    {
                    }
                }
                if (beastData.PlayerId == Singleton <PlayerRole> .singleton.ID)
                {
                    CBeastData data = new CBeastData(unBeastTypeId, 0, unBeastLevel, nSuitId);
                    data.m_oSkillList.AddRange(oSkillList);
                    data.m_oSuitList.Add(nSuitId);
                    Singleton <PlayerRole> .singleton.AddTempBeastData(data);
                }
            }
            else
            {
                this.m_log.Error("null == beastDataCur:unBeastId:" + unRoleId);
            }
            BeastData beastData1 = this.GetBeastData(unRoleId);

            if (beastData.PlayerId == Singleton <PlayerRole> .singleton.ID)
            {
                //刷新技能
                DlgBase <DlgRoom, DlgRoomBehaviour> .singleton.RefreshSkill(beastData1);
            }
        }