/// <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; } }
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); }
/// <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); } }
/// <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); } } }
/// <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); }
/// <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); } } }
/// <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 { } } }
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)); } } }
/// <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); } }
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); }
public void AddSkill(int skillId, bool bNeedActive, ESkillActivateType eSkillActiveType) { SkillGameData skillData = new SkillGameData(skillId); this.AddSkill(skillData, bNeedActive, eSkillActiveType); }
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; } } } }
/// <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); } }