public LearnGuildSkillResult TryLearnSkill(GuildSkillId skillId, out GuildSkill skill) { skill = Skills[(int)skillId]; if (skill != null) { if (skill.IsMaxLevel) { return(LearnGuildSkillResult.ThisIsTheMaxLevelOfSkill); } //todo get real learn cost levelupSkill if (!SubstractGuildPoints(skill.NextLearnCost)) { return(LearnGuildSkillResult.IncifitientPoints); } Skills[(int)skillId].Level++; } else { if (!SubstractGuildPoints(GuildSkillTemplate.Templates[(int)skillId].LearnCosts[1])) { return(LearnGuildSkillResult.IncifitientPoints); } RealmServer.IOQueue.AddMessage(() => { var s = new GuildSkill(this, skillId); Skills[(int)skillId] = s; s.CreateLater(); }); } Asda2GuildHandler.SendGuildSkillStatusChangedResponse(skill, ClanSkillStatus.Learned); return(LearnGuildSkillResult.Ok); }
public LearnGuildSkillResult TryLearnSkill(GuildSkillId skillId, out GuildSkill skill) { skill = this.Skills[(int)skillId]; if (skill != null) { if (skill.IsMaxLevel) { return(LearnGuildSkillResult.ThisIsTheMaxLevelOfSkill); } if (!this.SubstractGuildPoints(skill.NextLearnCost)) { return(LearnGuildSkillResult.IncifitientPoints); } ++this.Skills[(int)skillId].Level; Asda2GuildHandler.SendGuildSkillStatusChangedResponse(skill, ClanSkillStatus.Learned); } else { if (!this.SubstractGuildPoints(GuildSkillTemplate.Templates[(int)skillId].LearnCosts[1])) { return(LearnGuildSkillResult.IncifitientPoints); } ServerApp <WCell.RealmServer.RealmServer> .IOQueue.AddMessage((Action)(() => { GuildSkill guildSkill = new GuildSkill(this, skillId); this.Skills[(int)skillId] = guildSkill; guildSkill.CreateLater(); Asda2GuildHandler.SendGuildSkillStatusChangedResponse(guildSkill, ClanSkillStatus.Learned); })); } return(LearnGuildSkillResult.Ok); }
public void updateGuildSkill(int skillLevel, string skillSid) { if (guildSkills == null) { guildSkills = new List <GuildSkill> (); GuildSkill skill = new GuildSkill(skillSid, skillLevel); guildSkills.Add(skill); } else { for (int i = 0; i < guildSkills.Count; i++) { if (guildSkills [i].sid == skillSid) { guildSkills [i].level = skillLevel; break; } else if (i == guildSkills.Count - 1) { GuildSkill skill = new GuildSkill(skillSid, skillLevel); guildSkills.Add(skill); } } } }
private GuildSkill TransformGuildSkill(Data.Repositories.Contracts.Classes.GuildSkill skill) { if (skill == null) { return(null); } var ret = new GuildSkill { Point = skill.Point }; using (var ms = new MemoryStream(skill.Skill)) { using (var br = new BinaryReader(ms)) { var l = new List <SkillEntry>(); for (var i = 0; i < ms.Length / 4; i++) { var se = new SkillEntry { SkillId = br.ReadInt16(), Level = br.ReadInt16() }; l.Add(se); } ret.Skills = l.ToArray(); } } return(ret); }
private void MakeCache() { if (dirtyDataId != dataId || dirtyType != type || dirtyLevel != level) { dirtyDataId = dataId; dirtyType = type; dirtyLevel = level; cacheSkill = null; cacheItem = null; cacheGuildSkill = null; cacheBuff = default(Buff); cacheDuration = 0; cacheRecoveryHp = 0; cacheRecoveryMp = 0; cacheRecoveryStamina = 0; cacheRecoveryFood = 0; cacheRecoveryWater = 0; cacheIncreaseStats = new CharacterStats(); cacheIncreaseAttributes = null; cacheIncreaseResistances = null; cacheIncreaseDamages = null; cacheDamageOverTimes = null; switch (type) { case BuffType.SkillBuff: case BuffType.SkillDebuff: if (GameInstance.Skills.TryGetValue(dataId, out cacheSkill) && cacheSkill != null) { cacheBuff = type == BuffType.SkillBuff ? cacheSkill.buff : cacheSkill.debuff; } break; case BuffType.PotionBuff: if (GameInstance.Items.TryGetValue(dataId, out cacheItem) && cacheItem != null) { cacheBuff = cacheItem.buff; } break; case BuffType.GuildSkillBuff: if (GameInstance.GuildSkills.TryGetValue(dataId, out cacheGuildSkill) && cacheGuildSkill != null) { cacheBuff = cacheGuildSkill.buff; } break; } cacheDuration = cacheBuff.GetDuration(level); cacheRecoveryHp = cacheBuff.GetRecoveryHp(level); cacheRecoveryMp = cacheBuff.GetRecoveryMp(level); cacheRecoveryStamina = cacheBuff.GetRecoveryStamina(level); cacheRecoveryFood = cacheBuff.GetRecoveryFood(level); cacheRecoveryWater = cacheBuff.GetRecoveryWater(level); cacheIncreaseStats = cacheBuff.GetIncreaseStats(level); cacheIncreaseAttributes = cacheBuff.GetIncreaseAttributes(level); cacheIncreaseResistances = cacheBuff.GetIncreaseResistances(level); cacheIncreaseDamages = cacheBuff.GetIncreaseDamages(level); cacheDamageOverTimes = cacheBuff.GetDamageOverTimes(level); } }
public void createGuildSkill(GuildSkill skill) { if (guildSkills == null) { guildSkills = new List <GuildSkill> (); } guildSkills.Add(skill); }
public void initInfo(string sid, GuildCollegeWindow win) { this.sid = sid; this.win = win; skillSample = GuildSkillSampleManager.Instance.getGuildSkillSampleBySid(StringKit.toInt(sid)); skill = GuildManagerment.Instance.getGuildSkillBySid(sid); skillName = skillSample.icon; updateInfo(); }
/// <summary> /// Initialize the Guild after loading from DB /// </summary> internal void InitAfterLoad() { var ranks = GuildRank.FindAll(this); if (ranks.Length == 0) { log.Warn(string.Format("Guild {0} did not have ranks - Recreating default Ranks.", this)); m_ranks = GuildMgr.CreateDefaultRanks(this); } else { m_ranks = new ImmutableList <GuildRank>(ranks.OrderBy(rank => rank.RankIndex)); } foreach (var rank in m_ranks) { rank.InitRank(); } var members = GuildMember.FindAll(Id); foreach (var gm in members) { gm.Init(this, World.GetCharacter((uint)gm.CharacterLowId)); Members.Add(gm.Id, gm); } var skills = GuildSkill.FindAll(this); foreach (var guildSkill in skills) { guildSkill.InitAfterLoad(this); if (Skills[(int)guildSkill.Id] == null) { Skills[(int)guildSkill.Id] = guildSkill; } else { guildSkill.DeleteLater(); } } m_leader = this[LeaderLowId]; if (m_leader == null) { OnNoLeaderFound(); } if (m_leader != null) { Register(); } }
/// <summary>Initialize the Guild after loading from DB</summary> internal void InitAfterLoad() { GuildRank[] all = GuildRank.FindAll(this); if (all.Length == 0) { Guild.log.Warn(string.Format("Guild {0} did not have ranks - Recreating default Ranks.", (object)this)); this.m_ranks = GuildMgr.CreateDefaultRanks(this); } else { this.m_ranks = new ImmutableList <GuildRank>( (IEnumerable <GuildRank>)((IEnumerable <GuildRank>)all).OrderBy <GuildRank, int>( (Func <GuildRank, int>)(rank => rank.RankIndex))); } foreach (GuildRank rank in this.m_ranks) { rank.InitRank(); } foreach (GuildMember guildMember in GuildMember.FindAll(this.Id)) { guildMember.Init(this, World.GetCharacter((uint)guildMember.CharacterLowId)); this.Members.Add(guildMember.Id, guildMember); } foreach (GuildSkill record in GuildSkill.FindAll(this)) { record.InitAfterLoad(this); if (this.Skills[(int)record.Id] == null) { this.Skills[(int)record.Id] = record; } else { record.DeleteLater(); } } this.m_leader = this[this.LeaderLowId]; if (this.m_leader == null) { this.OnNoLeaderFound(); } if (this.m_leader == null) { return; } this.Register(); }
/// <summary>Initialize the Guild after loading from DB</summary> internal void InitAfterLoad() { GuildRank[] all = GuildRank.FindAll(this); if (all.Length == 0) { log.Warn(string.Format("Guild {0} did not have ranks - Recreating default Ranks.", this)); m_ranks = GuildMgr.CreateDefaultRanks(this); } else { m_ranks = new ImmutableList <GuildRank>( all.OrderBy( rank => rank.RankIndex)); } foreach (GuildRank rank in m_ranks) { rank.InitRank(); } foreach (GuildMember guildMember in GuildMember.FindAll(Id)) { guildMember.Init(this, World.GetCharacter((uint)guildMember.CharacterLowId)); Members.Add(guildMember.Id, guildMember); } foreach (GuildSkill record in GuildSkill.FindAll(this)) { record.InitAfterLoad(this); if (Skills[(int)record.Id] == null) { Skills[(int)record.Id] = record; } else { record.DeleteLater(); } } m_leader = this[LeaderLowId]; if (m_leader == null) { OnNoLeaderFound(); } if (m_leader == null) { return; } Register(); }
private void MakeCache() { if (dirtyDataId != dataId) { dirtyDataId = dataId; cacheSkill = null; cacheGuildSkill = null; switch (type) { case SkillUsageType.Skill: GameInstance.Skills.TryGetValue(dataId, out cacheSkill); break; case SkillUsageType.GuildSkill: GameInstance.GuildSkills.TryGetValue(dataId, out cacheGuildSkill); break; } } }
//是否可以学习或升级技能 public bool isUpLearnGuildSkill(string uid) { GuildSkillSample sample = GuildSkillSampleManager.Instance.getGuildSkillSampleBySid(StringKit.toInt(uid)); if (getBuildLevel(GuildManagerment.COLLEGE) < sample.openLevel) { UiManager.Instance.openDialogWindow <MessageWindow> ((win) => { win.initWindow(1, LanguageConfigManager.Instance.getLanguage("s0093"), null, LanguageConfigManager.Instance.getLanguage("Guild_55"), null); }); return(false); } GuildSkill skill = getGuildSkillBySid(uid); if (skill != null && skill.level >= getBuildLevel(GuildManagerment.COLLEGE)) { UiManager.Instance.openDialogWindow <MessageWindow> ((win) => { win.initWindow(1, LanguageConfigManager.Instance.getLanguage("s0093"), null, LanguageConfigManager.Instance.getLanguage("Guild_72"), null); }); return(false); } int cost = 0; if (skill != null) { cost = sample.costs [skill.level]; } else { cost = sample.costs [0]; } if (guild.contributioning >= cost) { return(true); } else { UiManager.Instance.openDialogWindow <MessageWindow> ((win) => { win.initWindow(1, LanguageConfigManager.Instance.getLanguage("s0093"), null, LanguageConfigManager.Instance.getLanguage("Guild_54"), null); }); return(false); } }
public override void read(ErlKVMessage message) { ErlType type = message.getValue("msg") as ErlType; ErlArray array = type as ErlArray; if (array.Value.Length > 0) { //断线重连后先清理一次公会技能,不然会反复ADD,增加战斗力 fix YXZH-3962 GuildManagerment.Instance.clearGuildSkillList(); for (int i = 0; i < array.Value.Length; i++) { ErlArray temp = array.Value[i] as ErlArray; GuildSkill skill = new GuildSkill(temp.Value[0].getValueString(), StringKit.toInt(temp.Value[1].getValueString())); GuildManagerment.Instance.createGuildSkill(skill); } } if (callback != null) { callback(); } }
private static void LoadGameLibraries() { Count = MapLibs.Length + Monsters.Length + Gates.Length + NPCs.Length + CArmours.Length + CHair.Length + CWeapons.Length + CWeaponEffect.Length + AArmours.Length + AHair.Length + AWeaponsL.Length + AWeaponsR.Length + ARArmours.Length + ARHair.Length + ARWeapons.Length + ARWeaponsS.Length + CHumEffect.Length + AHumEffect.Length + ARHumEffect.Length + Mounts.Length + Fishing.Length + Pets.Length + Transform.Length + TransformMounts.Length + TransformEffect.Length + TransformWeaponEffect.Length + 17; Dragon.Initialize(); Progress++; BuffIcon.Initialize(); Progress++; Help.Initialize(); Progress++; MiniMap.Initialize(); Progress++; MagIcon.Initialize(); Progress++; MagIcon2.Initialize(); Progress++; Magic.Initialize(); Progress++; Magic2.Initialize(); Progress++; Magic3.Initialize(); Progress++; MagicC.Initialize(); Progress++; Effect.Initialize(); Progress++; GuildSkill.Initialize(); Progress++; Background.Initialize(); Progress++; Deco.Initialize(); Progress++; Items.Initialize(); Progress++; StateItems.Initialize(); Progress++; FloorItems.Initialize(); Progress++; for (int i = 0; i < MapLibs.Length; i++) { if (MapLibs[i] == null) { MapLibs[i] = new MLibrary(""); } else { MapLibs[i].Initialize(); } Progress++; } for (int i = 0; i < Monsters.Length; i++) { Monsters[i].Initialize(); Progress++; } for (int i = 0; i < Gates.Length; i++) { Gates[i].Initialize(); Progress++; } for (int i = 0; i < NPCs.Length; i++) { NPCs[i].Initialize(); Progress++; } for (int i = 0; i < CArmours.Length; i++) { CArmours[i].Initialize(); Progress++; } for (int i = 0; i < CHair.Length; i++) { CHair[i].Initialize(); Progress++; } for (int i = 0; i < CWeapons.Length; i++) { CWeapons[i].Initialize(); Progress++; } for (int i = 0; i < CWeaponEffect.Length; i++) { CWeaponEffect[i].Initialize(); Progress++; } for (int i = 0; i < AArmours.Length; i++) { AArmours[i].Initialize(); Progress++; } for (int i = 0; i < AHair.Length; i++) { AHair[i].Initialize(); Progress++; } for (int i = 0; i < AWeaponsL.Length; i++) { AWeaponsL[i].Initialize(); Progress++; } for (int i = 0; i < AWeaponsR.Length; i++) { AWeaponsR[i].Initialize(); Progress++; } for (int i = 0; i < ARArmours.Length; i++) { ARArmours[i].Initialize(); Progress++; } for (int i = 0; i < ARHair.Length; i++) { ARHair[i].Initialize(); Progress++; } for (int i = 0; i < ARWeapons.Length; i++) { ARWeapons[i].Initialize(); Progress++; } for (int i = 0; i < ARWeaponsS.Length; i++) { ARWeaponsS[i].Initialize(); Progress++; } for (int i = 0; i < CHumEffect.Length; i++) { CHumEffect[i].Initialize(); Progress++; } for (int i = 0; i < AHumEffect.Length; i++) { AHumEffect[i].Initialize(); Progress++; } for (int i = 0; i < ARHumEffect.Length; i++) { ARHumEffect[i].Initialize(); Progress++; } for (int i = 0; i < Mounts.Length; i++) { Mounts[i].Initialize(); Progress++; } for (int i = 0; i < Fishing.Length; i++) { Fishing[i].Initialize(); Progress++; } for (int i = 0; i < Pets.Length; i++) { Pets[i].Initialize(); Progress++; } for (int i = 0; i < Transform.Length; i++) { Transform[i].Initialize(); Progress++; } for (int i = 0; i < TransformEffect.Length; i++) { TransformEffect[i].Initialize(); Progress++; } for (int i = 0; i < TransformWeaponEffect.Length; i++) { TransformWeaponEffect[i].Initialize(); Progress++; } for (int i = 0; i < TransformMounts.Length; i++) { TransformMounts[i].Initialize(); Progress++; } Loaded = true; }
public void Decode(MaplePacket pPacket) { ID = pPacket.ReadInt(); Name = pPacket.ReadString(); for (byte i = 0; i < 5; i++) { Ranks[i] = pPacket.ReadString(); } Players = pPacket.ReadByte(); Members = new List <GuildMember>(); for (byte i = 0; i < Players; i++) { var id = pPacket.ReadInt(); // Player ID Members.Add(new GuildMember() { CharacterID = id }); } for (byte i = 0; i < Players; i++) { GuildMember tmp = Members[i]; pPacket.ReadString(13); // Name pPacket.ReadInt(); // Job ID pPacket.ReadInt(); // Level OR -1 tmp.Rank = (byte)pPacket.ReadInt(); // Guild Rank pPacket.ReadInt(); // Online pPacket.ReadInt(); // Alliance Rank tmp.Contribution = pPacket.ReadInt(); // Contribution } Capacity = (byte)pPacket.ReadInt(); Background = pPacket.ReadShort(); BackgroundColor = pPacket.ReadByte(); Foreground = pPacket.ReadShort(); ForegroundColor = pPacket.ReadByte(); Notice = pPacket.ReadString(); Points = pPacket.ReadInt(); pPacket.ReadInt(); // Today's points AllianceID = pPacket.ReadInt(); pPacket.ReadByte(); // Unk pPacket.ReadShort(); // Herp Skills = new List <GuildSkill>(); var skills = pPacket.ReadShort(); // Buffs for (var i = 0; i < skills; i++) { GuildSkill gb = new GuildSkill() { SkillID = pPacket.ReadInt(), Level = pPacket.ReadShort(), BoughtAt = pPacket.ReadLong(), BoughtBy = pPacket.ReadString(), Unknown = pPacket.ReadString() }; Skills.Add(gb); } }
public GuildSkillTuple(GuildSkill guildSkill, short targetLevel) { this.guildSkill = guildSkill; this.targetLevel = targetLevel; }
public void Decode(MaplePacket pPacket) { ID = pPacket.ReadInt(); Name = pPacket.ReadString(); for (byte i = 0; i < 5; i++) Ranks[i] = pPacket.ReadString(); Players = pPacket.ReadByte(); Members = new List<GuildMember>(); for (byte i = 0; i < Players; i++) { var id = pPacket.ReadInt(); // Player ID Members.Add(new GuildMember() { CharacterID = id }); } for (byte i = 0; i < Players; i++) { GuildMember tmp = Members[i]; pPacket.ReadString(13); // Name pPacket.ReadInt(); // Job ID pPacket.ReadInt(); // Level OR -1 tmp.Rank = (byte)pPacket.ReadInt(); // Guild Rank pPacket.ReadInt(); // Online pPacket.ReadInt(); // Alliance Rank tmp.Contribution = pPacket.ReadInt(); // Contribution } Capacity = (byte)pPacket.ReadInt(); Background = pPacket.ReadShort(); BackgroundColor = pPacket.ReadByte(); Foreground = pPacket.ReadShort(); ForegroundColor = pPacket.ReadByte(); Notice = pPacket.ReadString(); Points = pPacket.ReadInt(); pPacket.ReadInt(); // Today's points AllianceID = pPacket.ReadInt(); pPacket.ReadByte(); // Unk pPacket.ReadShort(); // Herp Skills = new List<GuildSkill>(); var skills = pPacket.ReadShort(); // Buffs for (var i = 0; i < skills; i++) { GuildSkill gb = new GuildSkill() { SkillID = pPacket.ReadInt(), Level = pPacket.ReadShort(), BoughtAt = pPacket.ReadLong(), BoughtBy = pPacket.ReadString(), Unknown = pPacket.ReadString() }; Skills.Add(gb); } }