private void OnDonateAllianceUnitMessageReceived(DonateAllianceUnitMessage message) { if (this.m_session.Alliance != null) { Alliance alliance = this.m_session.Alliance; LogicCombatItemData unitData = message.GetAllianceUnitData(); if (!unitData.IsDonationDisabled()) { if (message.UseQuickDonate()) { if (!LogicDataTables.GetGlobals().EnableQuickDonate() || this.m_session.LogicClientAvatar.GetDiamonds() < unitData.GetDonateCost()) { return; } } else { if (this.m_session.LogicClientAvatar.GetUnitCount(unitData) <= 0) { return; } } if (alliance.StreamEntryList.IndexOf(message.GetStreamId()) != -1) { StreamEntry streamEntry = StreamManager.GetAllianceStream(message.GetStreamId()); if (streamEntry.GetStreamEntryType() == StreamEntryType.DONATE) { DonateStreamEntry donateStreamEntry = (DonateStreamEntry)streamEntry; if (donateStreamEntry.CanAddDonation(this.m_session.AccountId, message.GetAllianceUnitData(), alliance.Header.GetAllianceLevel())) { donateStreamEntry.AddDonation(this.m_session.AccountId, unitData, this.m_session.LogicClientAvatar.GetUnitUpgradeLevel(unitData)); donateStreamEntry.SetDonationPendingRequestCount(donateStreamEntry.GetDonationPendingRequestCount() + 1); StreamManager.Save(donateStreamEntry); alliance.UpdateStreamEntry(donateStreamEntry); if (message.UseQuickDonate()) { this.m_session.LogicClientAvatar.CommodityCountChangeHelper(0, unitData, -1); } LogicDonateAllianceUnitCommand logicDonateAllianceUnitCommand = new LogicDonateAllianceUnitCommand(); logicDonateAllianceUnitCommand.SetData(unitData, streamEntry.GetId(), message.UseQuickDonate()); ServerMessageManager.SendMessage(new GameAllowServerCommandMessage { AccountId = this.m_session.AccountId, ServerCommand = logicDonateAllianceUnitCommand }, 9); } } } } } }