public static void HandleGuildGetInformationsMessage(WorldClient client, GuildGetInformationsMessage message) { if (client.Character.Guild != null) { switch (message.infoType) { case 1: GuildHandler.SendGuildInformationsGeneralMessage(client, client.Character.Guild); break; case 2: GuildHandler.SendGuildInformationsMembersMessage(client, client.Character.Guild); break; case 3: GuildHandler.SendGuildInfosUpgradeMessage(client, client.Character.Guild); break; case 4: GuildHandler.SendGuildInformationsPaddocksMessage(client); break; case 5: GuildHandler.SendGuildHousesInformationMessage(client); break; case 6: TaxCollectorHandler.SendTaxCollectorListMessage(client, client.Character.Guild); break; } } }
protected override void OnWinnersDetermined(FightTeam winners, FightTeam losers, bool draw) { TaxCollectorHandler.SendTaxCollectorAttackedResultMessage(TaxCollector.TaxCollectorNpc.Guild.Clients, Winners != DefendersTeam && !draw, TaxCollector.TaxCollectorNpc); if (Winners == DefendersTeam || draw) { TaxCollector.TaxCollectorNpc.RejoinMap(); } else { TaxCollector.TaxCollectorNpc.Delete(); } foreach (var defender in DefendersTeam.Fighters.Where(defender => m_defendersMaps.ContainsKey(defender)).OfType <CharacterFighter>()) { defender.Character.NextMap = m_defendersMaps[defender]; } foreach (var defender in DefendersQueue) { defender.ResetDefender(); } base.OnWinnersDetermined(winners, losers, draw); }
public override void StartPlacement() { base.StartPlacement(); this.m_isAttackersPlacementPhase = true; this.m_placementTimer = base.Map.Area.CallDelayed(FightPvT.PvTAttackersPlacementPhaseTime, new Action(this.StartDefendersPlacement)); TaxCollectorHandler.SendTaxCollectorAttackedMessage(this.TaxCollector.TaxCollectorNpc.Guild.Clients, this.TaxCollector.TaxCollectorNpc); }
protected override void OnFighterAdded(FightTeam team, FightActor actor) { if (actor is TaxCollectorFighter) { if (TaxCollector != null) { logger.Error("There is already a tax collector in this fight !"); } else { TaxCollector = (TaxCollectorFighter)actor; TaxCollector.Dead += OnTaxCollectorDeath; } } if (State == FightState.Placement && team == ChallengersTeam) { TaxCollectorHandler.SendGuildFightPlayersEnemiesListMessage( TaxCollector.TaxCollectorNpc.Guild.Clients, TaxCollector.TaxCollectorNpc, ChallengersTeam.Fighters.OfType <CharacterFighter>().Select(x => x.Character)); } base.OnFighterAdded(team, actor); }
public void RemoveTaxCollector(TaxCollectorNpc taxCollector) { this.m_taxCollectors.Remove(taxCollector); Singleton <TaxCollectorManager> .Instance.RemoveTaxCollectorSpawn(taxCollector, true); TaxCollectorHandler.SendTaxCollectorMovementRemoveMessage(taxCollector.Guild.Clients, taxCollector); }
public override void Close() { base.Close(); InventoryHandler.SendExchangeLeaveMessage(this.Character.Client, base.DialogType, false); this.Character.CloseDialog(this); this.TaxCollector.OnDialogClosed(this); this.TaxCollector.Guild.AddXP((long)this.TaxCollector.GatheredExperience); TaxCollectorHandler.SendTaxCollectorMovementMessage(this.TaxCollector.Guild.Clients, false, this.TaxCollector, this.Character.Name); this.TaxCollector.Delete(); }
public bool AddTaxCollectorSpawn(Character character) { if (!character.GuildMember.HasRight(GuildRightsBitEnum.GUILD_RIGHT_HIRE_TAX_COLLECTOR)) { character.Client.Send(new TaxCollectorErrorMessage((sbyte)TaxCollectorErrorReasonEnum.TAX_COLLECTOR_NO_RIGHTS)); return(false); } if (character.Guild.TaxCollectors.Count >= character.Guild.MaxTaxCollectors) { character.Client.Send(new TaxCollectorErrorMessage((sbyte)TaxCollectorErrorReasonEnum.TAX_COLLECTOR_MAX_REACHED)); return(false); } if (character.Position.Map.TaxCollector != null) { character.Client.Send(new TaxCollectorErrorMessage((sbyte)TaxCollectorErrorReasonEnum.TAX_COLLECTOR_ALREADY_ONE)); return(false); } m_lastRemovedTaxCollectors.Clean(); if (m_lastRemovedTaxCollectors.FirstOrDefault(x => x.First.GuildId == character.Guild.Id && x.First.MapId == character.Map.Id) != null) { character.Client.Send(new TaxCollectorErrorMessage((sbyte)TaxCollectorErrorReasonEnum.TAX_COLLECTOR_CANT_HIRE_YET)); return(false); } if (!character.Position.Map.AllowCollector) { character.Client.Send(new TaxCollectorErrorMessage((sbyte)TaxCollectorErrorReasonEnum.TAX_COLLECTOR_CANT_HIRE_HERE)); return(false); } if (character.IsInFight()) { character.Client.Send(new TaxCollectorErrorMessage((sbyte)TaxCollectorErrorReasonEnum.TAX_COLLECTOR_ERROR_UNKNOWN)); return(false); } var position = character.Position.Clone(); var taxCollectorNpc = new TaxCollectorNpc(m_idProvider.Pop(), position.Map.GetNextContextualId(), position, character.Guild, character); WorldServer.Instance.IOTaskPool.AddMessage(() => Database.Insert(taxCollectorNpc.Record)); m_taxCollectorSpawns.Add(taxCollectorNpc.GlobalId, taxCollectorNpc.Record); m_activeTaxCollectors.Add(taxCollectorNpc); taxCollectorNpc.Map.Enter(taxCollectorNpc); character.Guild.AddTaxCollector(taxCollectorNpc); TaxCollectorHandler.SendTaxCollectorMovementMessage(taxCollectorNpc.Guild.Clients, TaxCollectorMovementTypeEnum.TAX_COLLECTOR_HIRED, taxCollectorNpc, character.Id, character.Name); return(true); }
public override void StartPlacement() { base.StartPlacement(); m_isAttackersPlacementPhase = true; m_placementTimer = Map.Area.CallDelayed(PvTAttackersPlacementPhaseTime, StartDefendersPlacement); // warn guild TaxCollectorHandler.SendTaxCollectorAttackedMessage(TaxCollector.TaxCollectorNpc.Guild.Clients, TaxCollector.TaxCollectorNpc); }
protected override void OnFighterRemoved(FightTeam team, FightActor actor) { if (base.State == FightState.Placement && team == this.AttackersTeam && actor is CharacterFighter) { TaxCollectorHandler.SendGuildFightPlayersEnemyRemoveMessage(this.TaxCollector.TaxCollectorNpc.Guild.Clients, this.TaxCollector.TaxCollectorNpc, (actor as CharacterFighter).Character); } if (actor is TaxCollectorFighter && actor.IsAlive()) { (actor as TaxCollectorFighter).TaxCollectorNpc.RejoinMap(); } base.OnFighterRemoved(team, actor); }
public bool RemoveDefender(Character character) { if (!m_defendersQueue.Remove(character)) { return(false); } character.ResetDefender(); TaxCollectorHandler.SendGuildFightPlayersHelpersLeaveMessage(character.Guild.Clients, TaxCollector.TaxCollectorNpc, character); return(true); }
public FighterRefusedReasonEnum AddDefender(Character character) { FighterRefusedReasonEnum result; if (character.TaxCollectorDefendFight != null) { result = FighterRefusedReasonEnum.IM_OCCUPIED; } else { if (!this.IsAttackersPlacementPhase) { result = FighterRefusedReasonEnum.TOO_LATE; } else { if (character.Guild == null || character.Guild != this.TaxCollector.TaxCollectorNpc.Guild) { result = FighterRefusedReasonEnum.WRONG_GUILD; } else { if (this.m_defendersQueue.Count >= 7) { result = FighterRefusedReasonEnum.TEAM_FULL; } else { if (this.m_defendersQueue.Any((Character x) => x.Client.IP == character.Client.IP)) { result = FighterRefusedReasonEnum.MULTIACCOUNT_NOT_ALLOWED; } else { if (this.m_defendersQueue.Contains(character)) { result = FighterRefusedReasonEnum.MULTIACCOUNT_NOT_ALLOWED; } else { this.m_defendersQueue.Add(character); character.SetDefender(this); TaxCollectorHandler.SendGuildFightPlayersHelpersJoinMessage(character.Guild.Clients, this.TaxCollector.TaxCollectorNpc, character); result = FighterRefusedReasonEnum.FIGHTER_ACCEPTED; } } } } } } return(result); }
protected override void OnFighterRemoved(FightTeam team, FightActor actor) { if (State == FightState.Placement && team == ChallengersTeam && actor is CharacterFighter characterFighter) { TaxCollectorHandler.SendGuildFightPlayersEnemyRemoveMessage( TaxCollector.TaxCollectorNpc.Guild.Clients, TaxCollector.TaxCollectorNpc, characterFighter.Character); } if (actor is TaxCollectorFighter taxCollector && taxCollector.IsAlive()) { taxCollector.TaxCollectorNpc.RejoinMap(); } base.OnFighterRemoved(team, actor); }
public bool RemoveDefender(Character character) { bool result; if (!this.m_defendersQueue.Remove(character)) { result = false; } else { character.ResetDefender(); TaxCollectorHandler.SendGuildFightPlayersHelpersLeaveMessage(character.Guild.Clients, this.TaxCollector.TaxCollectorNpc, character); result = true; } return(result); }
public void Close() { Character.Area.UnregisterTimer(Timer); Character.CloseDialog(this); TaxCollector.OnDialogClosed(this); if (TaxCollector.IsDisposed) { return; } TaxCollectorHandler.SendGetExchangeGuildTaxCollectorMessage(TaxCollector.Guild.Clients, GetExchangeGuildTaxCollector()); InventoryHandler.SendExchangeLeaveMessage(Character.Client, DialogType, false); TaxCollector.Guild.AddXP(TaxCollector.GatheredExperience); TaxCollector.Delete(); }
protected override void OnFighterAdded(FightTeam team, FightActor actor) { if (actor is TaxCollectorFighter) { if (this.TaxCollector != null) { FightPvT.logger.Error("There is already a tax collector in this fight !"); } else { this.TaxCollector = (actor as TaxCollectorFighter); } } if (base.State == FightState.Placement && team == this.AttackersTeam) { TaxCollectorHandler.SendGuildFightPlayersEnemiesListMessage(this.TaxCollector.TaxCollectorNpc.Guild.Clients, this.TaxCollector.TaxCollectorNpc, from x in this.AttackersTeam.Fighters.OfType <CharacterFighter>() select x.Character); } base.OnFighterAdded(team, actor); }
public FighterRefusedReasonEnum AddDefender(Character character) { if (character.TaxCollectorDefendFight != null || character.IsBusy() || character.IsInFight() || character.IsInJail()) { return(FighterRefusedReasonEnum.IM_OCCUPIED); } if (!IsAttackersPlacementPhase) { return(FighterRefusedReasonEnum.TOO_LATE); } if (character.Guild == null || character.Guild.Id != TaxCollector.TaxCollectorNpc.Guild.Id) { return(FighterRefusedReasonEnum.WRONG_GUILD); } if (m_defendersQueue.Count >= PvTMaxFightersSlots) { return(FighterRefusedReasonEnum.TEAM_FULL); } if (m_defendersQueue.Any(x => x.Client.IP == character.Client.IP)) { return(FighterRefusedReasonEnum.MULTIACCOUNT_NOT_ALLOWED); } if (m_defendersQueue.Contains(character)) { return(FighterRefusedReasonEnum.MULTIACCOUNT_NOT_ALLOWED); } m_defendersQueue.Add(character); character.SetDefender(this); TaxCollectorHandler.SendGuildFightPlayersHelpersJoinMessage(character.Guild.Clients, TaxCollector.TaxCollectorNpc, character); return(FighterRefusedReasonEnum.FIGHTER_ACCEPTED); }
public static void HandleGuildGetInformationsMessage(WorldClient client, GuildGetInformationsMessage message) { if (client.Character.Guild == null) { return; } switch (message.infoType) { case (sbyte)GuildInformationsTypeEnum.INFO_GENERAL: SendGuildInformationsGeneralMessage(client, client.Character.Guild); break; case (sbyte)GuildInformationsTypeEnum.INFO_MEMBERS: SendGuildInformationsMembersMessage(client, client.Character.Guild); break; case (sbyte)GuildInformationsTypeEnum.INFO_BOOSTS: SendGuildInfosUpgradeMessage(client, client.Character.Guild); break; case (sbyte)GuildInformationsTypeEnum.INFO_PADDOCKS: SendGuildInformationsPaddocksMessage(client); break; case (sbyte)GuildInformationsTypeEnum.INFO_HOUSES: SendGuildHousesInformationMessage(client); break; case (sbyte)GuildInformationsTypeEnum.INFO_TAX_COLLECTOR_GUILD_ONLY: TaxCollectorHandler.SendTaxCollectorListMessage(client, client.Character.Guild); break; case (sbyte)GuildInformationsTypeEnum.INFO_TAX_COLLECTOR_LEAVE: TaxCollectorHandler.SendTaxCollectorListMessage(client, client.Character.Guild); break; } }
protected override void OnWinnersDetermined(FightTeam winners, FightTeam losers, bool draw) { TaxCollectorHandler.SendTaxCollectorAttackedResultMessage(this.TaxCollector.TaxCollectorNpc.Guild.Clients, base.Winners != this.DefendersTeam && !draw, this.TaxCollector.TaxCollectorNpc); if (base.Winners == this.DefendersTeam || draw) { this.TaxCollector.TaxCollectorNpc.RejoinMap(); using (System.Collections.Generic.List <Character> .Enumerator enumerator = this.m_defendersQueue.GetEnumerator()) { while (enumerator.MoveNext()) { Character current = enumerator.Current; if (this.m_defendersMaps.ContainsKey(current)) { current.NextMap = this.m_defendersMaps[current]; } } goto IL_C4; } } this.TaxCollector.TaxCollectorNpc.Delete(); IL_C4: base.OnWinnersDetermined(winners, losers, draw); }
public void AddTaxCollector(TaxCollectorNpc taxCollector) { this.m_taxCollectors.Add(taxCollector); TaxCollectorHandler.SendTaxCollectorMovementAddMessage(taxCollector.Guild.Clients, taxCollector); }
public bool TryAddTaxCollectorSpawn(Character character, bool lazySave = true) { bool result; if (!character.GuildMember.HasRight(GuildRightsBitEnum.GUILD_RIGHT_HIRE_TAX_COLLECTOR)) { TaxCollectorHandler.SendTaxCollectorErrorMessage(character.Client, TaxCollectorErrorReasonEnum.TAX_COLLECTOR_NO_RIGHTS); result = false; } else { if (character.Guild.TaxCollectors.Count <TaxCollectorNpc>() >= character.Guild.MaxTaxCollectors) { TaxCollectorHandler.SendTaxCollectorErrorMessage(character.Client, TaxCollectorErrorReasonEnum.TAX_COLLECTOR_MAX_REACHED); result = false; } else { if (character.Position.Map.TaxCollector != null) { TaxCollectorHandler.SendTaxCollectorErrorMessage(character.Client, TaxCollectorErrorReasonEnum.TAX_COLLECTOR_ALREADY_ONE); result = false; } else { if (!character.Position.Map.AllowCollector) { TaxCollectorHandler.SendTaxCollectorErrorMessage(character.Client, TaxCollectorErrorReasonEnum.TAX_COLLECTOR_CANT_HIRE_HERE); result = false; } else { if (character.IsInFight()) { TaxCollectorHandler.SendTaxCollectorErrorMessage(character.Client, TaxCollectorErrorReasonEnum.TAX_COLLECTOR_ERROR_UNKNOWN); result = false; } else { //var basePlayerItem = character.Inventory.TryGetItem(Singleton<ItemManager>.Instance.TryGetTemplate(AllianceManager.ALLIOGEMME_ID)); //character.Inventory.RemoveItem(basePlayerItem, 1, true); ObjectPosition objectPosition = character.Position.Clone(); TaxCollectorNpc taxCollectorNpc = new TaxCollectorNpc(this.m_idProvider.Pop(), objectPosition.Map.GetNextContextualId(), objectPosition, character.Guild, character.Name); if (lazySave) { ServerBase <WorldServer> .Instance.IOTaskPool.AddMessage(delegate { this.Database.Insert(taxCollectorNpc.Record); }); } else { base.Database.Insert(taxCollectorNpc.Record); } this.m_taxCollectorSpawns.Add(taxCollectorNpc.GlobalId, taxCollectorNpc.Record); this.m_activeTaxCollectors.Add(taxCollectorNpc); taxCollectorNpc.Map.Enter(taxCollectorNpc); character.Guild.AddTaxCollector(taxCollectorNpc); result = true; } } } } } return(result); }
public void RemoveTaxCollector(TaxCollectorNpc taxCollector) { m_taxCollectors.Remove(taxCollector); TaxCollectorManager.Instance.RemoveTaxCollectorSpawn(taxCollector); TaxCollectorHandler.SendTaxCollectorMovementRemoveMessage(taxCollector.Guild.Clients, taxCollector); }