public static int GetJingJiChangeHighPrioritySkill(int eOccupation, EMagicSwordTowardType eMagicSwordType) { switch (eOccupation) { case 0: return(-1); case 1: return(-1); case 2: return(-1); case 3: switch (eMagicSwordType) { case EMagicSwordTowardType.EMST_Strength: return(-1); case EMagicSwordTowardType.EMST_Intelligence: return(-1); } break; case 5: return(JingJiChangConstants.SummonerSkillFirst); } return(-1); }
public static int[] getJingJiChangeFiveCombatSkillList(int eOccupation, EMagicSwordTowardType eMagicSwordType) { switch (eOccupation) { case 0: return(JingJiChangConstants.ZhanShiFiveCombotSkillList); case 1: return(JingJiChangConstants.FaShiFiveCombotSkillList); case 2: return(JingJiChangConstants.GongJianShouFiveCombotSkillList); case 3: switch (eMagicSwordType) { case EMagicSwordTowardType.EMST_Strength: return(JingJiChangConstants.StrMagicSwordFiveCombotSkillList); case EMagicSwordTowardType.EMST_Intelligence: return(JingJiChangConstants.IntMagicSwordFiveCombotSkillList); } break; case 5: return(JingJiChangConstants.SummonerFiveCombotSkillList); } return(null); }
public bool InitMagicSwordInfo(GameClient client, EMagicSwordTowardType eType) { bool result; if (!this.IsVersionSystemOpenOfMagicSword()) { result = false; } else if (null == client) { LogManager.WriteLog(LogTypes.Error, string.Format("client不存在,初始化魔剑士信息", new object[0]), null, true); result = false; } else if (Global.AutoUpChangeLifeAndLevel(client, MagicSwordData.InitChangeLifeCount, MagicSwordData.InitLevel)) { this.AutoMaigcSwordFirstAddPoint(client, eType); this.AutoGiveMagicSwordGoods(client); this.AutoGiveMagicSwordDefaultSkillHotKey(client, eType); GlobalEventSource.getInstance().fireEvent(new PlayerLevelupEventObject(client)); result = true; } else { result = false; } return(result); }
public void AutoGiveMagicSwordDefaultSkillHotKey(GameClient client, EMagicSwordTowardType eType) { if (null != client) { string skillStr; switch (eType) { case EMagicSwordTowardType.EMST_Strength: skillStr = string.Format("0@{0}|0@{1}|0@{2}|0@{3}", new object[] { 10004, 10000, 10006, 10001 }); break; case EMagicSwordTowardType.EMST_Intelligence: skillStr = string.Format("0@{0}|0@{1}|0@{2}|0@{3}", new object[] { 10104, 10100, 10106, 10101 }); break; default: return; } string cmdStr = string.Format("{0}:{1}:{2}", client.ClientData.RoleID, 0, skillStr); client.ClientData.MainQuickBarKeys = skillStr; GameManager.DBCmdMgr.AddDBCmd(10010, cmdStr, null, client.ServerId); } }
public bool IsCanAward2MagicSword(GameClient client, int nGoodsID) { int nOcc = Global.CalcOriginalOccupationID(client); bool result; if (!this.IsMagicSword(nOcc)) { result = false; } else { SystemXmlItem systemGoods = null; if (!GameManager.SystemGoods.SystemXmlItemDict.TryGetValue(nGoodsID, out systemGoods)) { result = false; } else if (Global.GetMainOccupationByGoodsID(nGoodsID) == -1) { result = true; } else { EMagicSwordTowardType eEMSType = this.GetMagicSwordTowardType(client); int nStrength = systemGoods.GetIntValue("Strength", -1); int nIntelligence = systemGoods.GetIntValue("Intelligence", -1); EMagicSwordTowardType eEMSGoodType = EMagicSwordTowardType.EMST_Intelligence; if (nStrength >= nIntelligence) { eEMSGoodType = EMagicSwordTowardType.EMST_Strength; } result = (eEMSType == eEMSGoodType); } } return(result); }
public AttackState(GameClient player, Robot owner, FinishStateMachine FSM) { this.owner = owner; this.FSM = FSM; this.target = player; this.owner.LockObject = player.GetObjectID(); EMagicSwordTowardType eMagicSwordType = GameManager.MagicSwordMgr.GetMagicSwordTypeByWeapon(owner.getRoleDataMini().Occupation, owner.getRoleDataMini().GoodsDataList, null); this.fiveComboSkillList = JingJiChangConstants.getJingJiChangeFiveCombatSkillList(owner.getRoleDataMini().Occupation, eMagicSwordType); }
public AttackState(GameClient player, Robot owner, FinishStateMachine FSM) { this.owner = owner; this.FSM = FSM; this.target = player; this.owner.LockObject = player.GetObjectID(); //fiveComboSkillList = owner.MonsterInfo.ToOccupation == 0 ? JingJiChangConstants.ZhanShiFiveCombotSkillList : owner.MonsterInfo.ToOccupation == 1 ? JingJiChangConstants.FaShiFiveCombotSkillList : JingJiChangConstants.GongJianShouFiveCombotSkillList; // 魔剑士分支类型 EMagicSwordTowardType eMagicSwordType = GameManager.MagicSwordMgr.GetMagicSwordTypeByWeapon(owner.getRoleDataMini().Occupation, owner.getRoleDataMini().GoodsDataList); // 竞技场5连击技能列表,魔剑士需根据武器 判断 分支 [XSea 2015/5/19] fiveComboSkillList = JingJiChangConstants.getJingJiChangeFiveCombatSkillList(owner.getRoleDataMini().Occupation, eMagicSwordType); }
public static int[] GetJingJiChangeSkillList(GameClient client, int eOccupation, EMagicSwordTowardType eMagicSwordType) { List <int> ret = new List <int>(); switch (eOccupation) { case 0: ret.AddRange(JingJiChangConstants.ZhanShiSkillList); break; case 1: ret.AddRange(JingJiChangConstants.FaShiSkillList); break; case 2: ret.AddRange(JingJiChangConstants.GongJianShouSkillList); break; case 3: switch (eMagicSwordType) { case EMagicSwordTowardType.EMST_Strength: ret.AddRange(JingJiChangConstants.StrMagicSwordSkillList); break; case EMagicSwordTowardType.EMST_Intelligence: ret.AddRange(JingJiChangConstants.IntMagicSwordSkillList); break; } break; case 5: ret.AddRange(JingJiChangConstants.SummonerSkillList); break; } ret.AddRange(ZuoQiManager.getInstance().GetZuoQiSkillList(client)); return(ret.ToArray()); }
private void selectSkill(out bool isFiveCombo) { this.skillId = -1; isFiveCombo = false; if (null != this.owner.MonsterInfo.SkillIDs) { int nNextSkillID = Global.GetNextSkillID(this.prevSkillID); if (nNextSkillID > 0) { this.skillId = nNextSkillID; this.prevSkillID = nNextSkillID; } else { int index = Global.GetRandomNumber(0, this.owner.MonsterInfo.SkillIDs.Length); for (int i = index; i < this.owner.MonsterInfo.SkillIDs.Length; i++) { if (this.owner.MyMagicCoolDownMgr.SkillCoolDown(this.owner.MonsterInfo.SkillIDs[i])) { if (this.SkillNeedMagicVOk(this.owner.MonsterInfo.SkillIDs[i])) { this.skillId = this.owner.MonsterInfo.SkillIDs[i]; break; } } } if (this.skillId == -1) { for (int i = index - 1; i >= 0; i--) { if (this.owner.MyMagicCoolDownMgr.SkillCoolDown(this.owner.MonsterInfo.SkillIDs[i])) { if (this.SkillNeedMagicVOk(this.owner.MonsterInfo.SkillIDs[i])) { this.skillId = this.owner.MonsterInfo.SkillIDs[i]; } } } } if (!this.isTryHighPrioritySkill) { EMagicSwordTowardType eMagicSwordType = GameManager.MagicSwordMgr.GetMagicSwordTypeByWeapon(this.owner.getRoleDataMini().Occupation, this.owner.getRoleDataMini().GoodsDataList, null); int nFirstSkill = JingJiChangConstants.GetJingJiChangeHighPrioritySkill(this.owner.getRoleDataMini().Occupation, eMagicSwordType); if (nFirstSkill != -1) { if (this.owner.MyMagicCoolDownMgr.SkillCoolDown(nFirstSkill) && this.SkillNeedMagicVOk(nFirstSkill)) { this.skillId = nFirstSkill; } } this.isTryHighPrioritySkill = true; } this.prevSkillID = this.skillId; for (int i = 0; i < this.fiveComboSkillList.Length; i++) { if (this.fiveComboSkillList[i] == this.skillId) { isFiveCombo = true; break; } } } } }
public void AutoMaigcSwordFirstAddPoint(GameClient client, EMagicSwordTowardType eType) { if (null == client) { LogManager.WriteLog(LogTypes.Error, string.Format("client不存在,服务器无法根据参数表配置第一次给魔剑士加点", new object[0]), null, true); } else if (this.IsMagicSword(client)) { if (eType == EMagicSwordTowardType.EMST_Strength || eType == EMagicSwordTowardType.EMST_Intelligence) { int nRoleID = client.ClientData.RoleID; try { string MagicSwordInitAttrStr; if (eType == EMagicSwordTowardType.EMST_Strength) { MagicSwordInitAttrStr = GameManager.systemParamsList.GetParamValueByName("LiMJS"); } else { MagicSwordInitAttrStr = GameManager.systemParamsList.GetParamValueByName("ZhiMJS"); } string[] MagicSwordInitAttrArr = MagicSwordInitAttrStr.Split(new char[] { ',' }); if (MagicSwordInitAttrArr.Length != 4) { LogManager.WriteLog(LogTypes.Error, string.Format("魔剑士读取初始加点失败,无法创建魔剑士, RoleID={0}", nRoleID), null, true); } else { int nPoint = 0; for (int i = 0; i < MagicSwordInitAttrArr.Length; i++) { nPoint += int.Parse(MagicSwordInitAttrArr[i]); } int nTotal = Global.GetRoleParamsInt32FromDB(client, "TotalPropPoint"); int nStrength = Global.GetRoleParamsInt32FromDB(client, "PropStrength"); int nIntelligence = Global.GetRoleParamsInt32FromDB(client, "PropIntelligence"); int nDexterity = Global.GetRoleParamsInt32FromDB(client, "PropDexterity"); int nConstitution = Global.GetRoleParamsInt32FromDB(client, "PropConstitution"); int nRemainPoint = nTotal - nStrength - nIntelligence - nDexterity - nConstitution; if (nRemainPoint < nPoint) { LogManager.WriteLog(LogTypes.Error, string.Format("魔剑士初始加点不足,无法创建魔剑士, RoleID={0}", nRoleID), null, true); } else { client.ClientData.PropStrength += int.Parse(MagicSwordInitAttrArr[0]); Global.SaveRoleParamsInt32ValueToDB(client, "PropStrength", client.ClientData.PropStrength, true); client.ClientData.PropIntelligence += int.Parse(MagicSwordInitAttrArr[1]); Global.SaveRoleParamsInt32ValueToDB(client, "PropIntelligence", client.ClientData.PropIntelligence, true); client.ClientData.PropDexterity += int.Parse(MagicSwordInitAttrArr[2]); Global.SaveRoleParamsInt32ValueToDB(client, "PropDexterity", client.ClientData.PropDexterity, true); client.ClientData.PropConstitution += int.Parse(MagicSwordInitAttrArr[3]); Global.SaveRoleParamsInt32ValueToDB(client, "PropConstitution", client.ClientData.PropConstitution, true); client.ClientData.LifeV = (int)RoleAlgorithm.GetMaxLifeV(client); client.ClientData.MagicV = (int)RoleAlgorithm.GetMaxMagicV(client); if (client.ClientData.CurrentLifeV > client.ClientData.LifeV) { client.ClientData.CurrentLifeV = client.ClientData.LifeV; } if (client.ClientData.CurrentMagicV > client.ClientData.MagicV) { client.ClientData.CurrentMagicV = client.ClientData.MagicV; } GameManager.ClientMgr.NotifyUpdateEquipProps(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client); GameManager.ClientMgr.NotifySelfLifeChanged(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client); } } } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, Global.GetDebugHelperInfo(client.ClientSocket), false, false); } } } }
public EMagicSwordTowardType GetMagicSwordTypeByWeapon(int nOccu, List <GoodsData> list, GameClient client = null) { EMagicSwordTowardType result; lock (list) { EMagicSwordTowardType eType = EMagicSwordTowardType.EMST_Strength; if (!this.IsMagicSword(nOccu)) { result = EMagicSwordTowardType.EMST_Not; } else if (list == null || list.Count <= 0) { result = eType; } else { SystemXmlItem systemGoods = null; List <GoodsData> WeaponList = new List <GoodsData>(); List <GoodsData> BaseWeap = new List <GoodsData>(); List <GoodsData> RebornWeap = new List <GoodsData>(); GoodsData goodsData; for (int i = 0; i < list.Count; i++) { goodsData = list[i]; if (null != goodsData) { int GoodId = goodsData.GoodsID; if (RebornEquip.IsRebornEquipShengQi(GoodId) || RebornEquip.IsRebornEquipShengWu(GoodId)) { RebornWeap.Add(goodsData); } else { BaseWeap.Add(goodsData); } } } if (client == null) { if (BaseWeap == null || BaseWeap.Count <= 0) { return(eType); } goodsData = RebornEquip.GetMagicWeaponGoods(BaseWeap, true); } else { SceneUIClasses sceneType = Global.GetMapSceneType(client.ClientData.MapCode); if (sceneType != SceneUIClasses.ChongShengMap) { if (client.ClientData.RebornShowEquip == 0) { goodsData = RebornEquip.GetMagicWeaponGoods(BaseWeap, true); } else { if (client.ClientData.PropStrength >= client.ClientData.PropIntelligence) { return(EMagicSwordTowardType.EMST_Strength); } return(EMagicSwordTowardType.EMST_Intelligence); } } else { if (client.ClientData.PropStrength >= client.ClientData.PropIntelligence) { return(EMagicSwordTowardType.EMST_Strength); } return(EMagicSwordTowardType.EMST_Intelligence); } } if (null == goodsData) { result = eType; } else if (!GameManager.SystemGoods.SystemXmlItemDict.TryGetValue(goodsData.GoodsID, out systemGoods)) { result = eType; } else { int nStrength = systemGoods.GetIntValue("Strength", -1); int nIntelligence = systemGoods.GetIntValue("Intelligence", -1); eType = ((nStrength >= nIntelligence) ? EMagicSwordTowardType.EMST_Strength : EMagicSwordTowardType.EMST_Intelligence); result = eType; } } } return(result); }