private static void HandleUpgradeBuff(GameSession session, PacketReader packet) { int buffId = packet.ReadInt(); Guild guild = GameServer.GuildManager.GetGuildById(session.Player.Guild.Id); if (guild == null) { return; } GuildBuff buff = guild.Buffs.First(x => x.Id == buffId); // get next level's data GuildBuffLevel metadata = GuildBuffMetadataStorage.GetGuildBuffLevelData(buffId, buff.Level + 1); GuildPropertyMetadata guildProperty = GuildPropertyMetadataStorage.GetMetadata(guild.Exp); if (guildProperty.Level < metadata.LevelRequirement) { return; } if (guild.Funds < metadata.UpgradeCost) { return; } guild.ModifyFunds(session, guildProperty, -metadata.UpgradeCost); buff.Level++; guild.BroadcastPacketGuild(GuildPacket.UpgradeBuff(buffId, buff.Level, session.Player.Name)); }
private static void HandleUseBuff(GameSession session, PacketReader packet) { int buffId = packet.ReadInt(); Guild guild = GameServer.GuildManager.GetGuildById(session.Player.Guild.Id); if (guild == null) { return; } int buffLevel = guild.Buffs.FirstOrDefault(x => x.Id == buffId).Level; GuildBuffLevel buff = GuildBuffMetadataStorage.GetGuildBuffLevelData(buffId, buffLevel); if (buff == null) { return; } if (buffId > 1000) { if (!session.Player.Wallet.Meso.Modify(-buff.Cost)) { return; } } else { if (buff.Cost > guild.Funds) { return; } guild.Funds -= buff.Cost; } session.Send(GuildPacket.ActivateBuff(buffId)); session.Send(GuildPacket.UseBuffNotice(buffId)); }