private void GiveGuildBattleRewardTo(int winnerGuildId) { GuildWarMapInfo mapInfo = CurrentMapInfo as GuildWarMapInfo; string mailTitle; string mailContent; int rewardGold; CurrencyAmount[] rewardCurrencies; ItemAmount[] rewardItems; Mail tempMail; foreach (IPlayerCharacterData participant in ServerUserHandlers.GetPlayerCharacters()) { if (participant.GuildId == winnerGuildId) { mailTitle = mapInfo.winMailTitle; mailContent = mapInfo.winMailContent; rewardGold = mapInfo.winRewardGold; rewardCurrencies = mapInfo.winRewardCurrencies; rewardItems = mapInfo.winRewardItems; } else { mailTitle = mapInfo.participantMailTitle; mailContent = mapInfo.participantMailContent; rewardGold = mapInfo.participantRewardGold; rewardCurrencies = mapInfo.participantRewardCurrencies; rewardItems = mapInfo.participantRewardItems; } tempMail = new Mail() { SenderId = guildWarMailSenderId, SenderName = guildWarMailSenderName, ReceiverId = participant.UserId, Title = mailTitle, Content = mailContent, Gold = rewardGold, }; foreach (CurrencyAmount currencyAmount in rewardCurrencies) { if (currencyAmount.currency == null) { continue; } tempMail.Currencies.Add(CharacterCurrency.Create(currencyAmount.currency.DataId, currencyAmount.amount)); } foreach (ItemAmount itemAmount in rewardItems) { if (itemAmount.item == null) { continue; } tempMail.Items.Add(CharacterItem.Create(itemAmount.item, 1, itemAmount.amount)); } ServerMailHandlers.SendMail(tempMail); } }
public void Update_GuildWar() { if (!IsServer || CurrentMapInfo == null || !(CurrentMapInfo is GuildWarMapInfo)) { return; } GuildWarMapInfo mapInfo = CurrentMapInfo as GuildWarMapInfo; if (!GuildWarRunning && mapInfo.IsOn) { ServerSendSystemAnnounce(mapInfo.eventStartedMessage); DefenderGuildId = 0; DefenderGuildName = string.Empty; ExpelLoserGuilds(DefenderGuildId); RegenerateMonsters(); GuildWarRunning = true; SendGuildWarStatus(); } if (GuildWarRunning && !mapInfo.IsOn) { ServerSendSystemAnnounce(mapInfo.eventEndedMessage); GuildWarRunning = false; if (DefenderGuildId > 0) { ServerSendSystemAnnounce(string.Format(mapInfo.defenderWinMessage, DefenderGuildName)); GiveGuildBattleRewardTo(DefenderGuildId); ExpelLoserGuilds(DefenderGuildId); RegenerateMonsters(); } SendGuildWarStatus(); } if (GuildWarRunning) { if ((System.DateTime.Now - LastOccupyTime).TotalMinutes >= mapInfo.battleDuration) { ServerSendSystemAnnounce(mapInfo.roundEndedMessage); LastOccupyTime = System.DateTime.Now; if (DefenderGuildId > 0) { ServerSendSystemAnnounce(string.Format(mapInfo.defenderWinMessage, DefenderGuildName)); GiveGuildBattleRewardTo(DefenderGuildId); ExpelLoserGuilds(DefenderGuildId); RegenerateMonsters(); } SendGuildWarStatus(); } } }
public void CastleOccupied(int attackerGuildId) { GuildWarMapInfo mapInfo = CurrentMapInfo as GuildWarMapInfo; LastOccupyTime = System.DateTime.Now; GuildData guild; if (attackerGuildId > 0 && ServerGuildHandlers.TryGetGuild(attackerGuildId, out guild)) { DefenderGuildId = attackerGuildId; DefenderGuildName = guild.guildName; ServerSendSystemAnnounce(string.Format(mapInfo.attackerWinMessage, DefenderGuildName)); GiveGuildBattleRewardTo(DefenderGuildId); ExpelLoserGuilds(DefenderGuildId); RegenerateMonsters(); } SendGuildWarStatus(); }