Esempio n. 1
0
        void GenerateInteractivePlot()
        {
            foreach (var trigger in CellTriggerManager.Instance.GetCellTriggers())
            {
                if (trigger.Type != "Teleport")
                {
                    continue;
                }

                var interactive = m_interactivesSpawns.Values.FirstOrDefault(x => x.MapId == trigger.MapId && x.CellId == trigger.CellId &&
                                                                             x.TemplateId == null && !x.CustomSkills.Any());

                if (interactive == null)
                {
                    continue;
                }

                var skillId = m_idProviderSkill.Pop();
                var skill   = new InteractiveCustomSkillRecord
                {
                    Id               = skillId,
                    Type             = "Teleport",
                    CustomTemplateId = 339,
                    Parameter0       = trigger.Parameter1, //MapId
                    Parameter1       = trigger.Parameter0, //CellId
                    Condition        = trigger.Condition
                };

                interactive.CustomSkills.Add(skill);
            }
        }
Esempio n. 2
0
        public Party CreateClassical()
        {
            var group = new Party(m_idProvider.Pop());

            AddEntity(group.Id, group);

            return(group);
        }
Esempio n. 3
0
        public FightDuel CreateDuel(Map map)
        {
            var challengersTeam = new FightPlayerTeam(TeamEnum.TEAM_CHALLENGER, map.GetRedFightPlacement());
            var defendersTeam   = new FightPlayerTeam(TeamEnum.TEAM_DEFENDER, map.GetBlueFightPlacement());

            var fight = new FightDuel(m_idProvider.Pop(), map, defendersTeam, challengersTeam);

            AddEntity(fight.Id, fight);

            return(fight);
        }
Esempio n. 4
0
        public Guild CreateGuild(string name)
        {
            lock (m_lock)
            {
                var id = m_idProvider.Pop();

                var record = new GuildRecord
                {
                    Id                    = id,
                    Name                  = name,
                    CreationDate          = DateTime.Now,
                    IsNew                 = true,
                    Experience            = 0,
                    Boost                 = 0,
                    Prospecting           = 100,
                    Wisdom                = 0,
                    Pods                  = 1000,
                    MaxTaxCollectors      = 1,
                    EmblemBackgroundColor = Color.White.ToArgb(),
                    EmblemBackgroundShape = 1,
                    EmblemForegroundColor = Color.Black.ToArgb(),
                    EmblemForegroundShape = 1,
                    Spells                = new int[0],
                };

                var guild = new Guild(record, new GuildMember[0]);
                m_guilds.Add(guild.Id, guild);

                return(guild);
            }
        }
Esempio n. 5
0
        public void AddItem(ItemTemplate template, uint amount)
        {
            var item = Items.FirstOrDefault(x => x.Template == template);

            if (item != null)
            {
                item.Stack += amount;
                OnItemMoved(item, true, (int)amount);
            }
            else
            {
                item = new NpcTradeItem(m_idProvider.Pop(), template, amount);
                AddItem(item);
                OnItemMoved(item, false, (int)amount);
            }
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        public FakeClient AddAndConnectClient()
        {
            var client = new FakeClient(m_idProvider.Pop());

            m_clients.Add(client);

            if (!m_fakeAccountsId.Contains(client.Id))
            {
                var account = new AccountData()
                {
                    Login           = AccountName + client.Id,
                    PasswordHash    = AccountPassword.GetMD5(),
                    Nickname        = AccountName + client.Id,
                    UserGroupId     = FakeUserGroup,
                    AvailableBreeds = BreedManager.AvailableBreeds,
                    SecretQuestion  = "fakeclient",
                    SecretAnswer    = "fakeclient",
                    Lang            = "fr",
                };

                var msg = new CreateAccountMessage();
                msg.Account = account;

                IPCAccessor.Instance.SendRequest(msg, x =>
                {
                    m_fakeAccountsId.Add(client.Id);
                    client.Connect(IP, Port);
                    client.Disconnected += OnClientDisconnected;
                }, x =>
                {
                    client.Disconnect();
                    m_clients.Remove(client);
                });
            }
            else
            {
                client.Connect(IP, Port);
                client.Disconnected += OnClientDisconnected;
            }


            return(client);
        }
Esempio n. 8
0
        public override void Initialize()
        {
            m_idProvider    = new UniqueIdProvider(1);
            m_bidHouseItems = new ConcurrentList <BidHouseItem>(Database.Query <BidHouseItemRecord>(BidHouseItemRelator.FetchQuery).Select(x => new BidHouseItem(x)));

            foreach (var item in m_bidHouseItems)
            {
                var category = GetBidHouseCategory(item);

                if (category == null)
                {
                    category = new BidHouseCategory(m_idProvider.Pop(), item);
                    m_bidHouseCategories.Add(category);
                }

                category.Items.Add(item);
            }

            World.Instance.RegisterSaveableInstance(this);
        }
Esempio n. 9
0
        public void AddBidHouseItem(BidHouseItem item)
        {
            m_bidHouseItems.Add(item);

            var category    = GetBidHouseCategory(item);
            var newCategory = false;

            if (category == null)
            {
                category = new BidHouseCategory(m_idProvider.Pop(), item);
                m_bidHouseCategories.Add(category);

                newCategory = true;
            }

            category.Items.Add(item);

            var handler = ItemAdded;

            if (handler != null)
            {
                handler(item, category, newCategory);
            }
        }
Esempio n. 10
0
 public int PopSpawnId()
 {
     return(m_idProviderSpawn.Pop());
 }
Esempio n. 11
0
 public int PopId()
 {
     return(m_idProvider.Pop());
 }
Esempio n. 12
0
 public int PopNextDropItemId()
 {
     return(m_dropItemIdPopper.Pop());
 }
Esempio n. 13
0
 public ClassicalParty CreateParty(Character leader)
 {
     return(new ClassicalParty(IdProvider.Pop(), leader));
 }
Esempio n. 14
0
 public short PopNextMarkId()
 {
     return((short)m_markIdPopper.Pop());
 }
Esempio n. 15
0
 public static uint PopUID()
 {
     lock (Locker)
         return((uint)UIDPoper.Pop());
 }