Пример #1
0
 static void EventInitialize()
 {
     EventManager = new EventManagement();
     EventManager
     .AddEvent(Events.Events.BloodCastle, new BloodCastles())
     .AddEvent(Events.Events.DevilSquared, new DevilSquares())
     .AddEvent(Events.Events.Kanturu, new Kanturu())
     .AddEvent(Events.Events.ChaosCastle, new ChaosCastles());
     LuckyCoins.Initialize();
     EventChips.Initialize();
 }
Пример #2
0
 static void EventInitialize()
 {
     EventManager = new EventManagement();
     EventManager
     .AddEvent(Events.Events.BloodCastle, new BloodCastles())
     .AddEvent(Events.Events.DevilSquared, new DevilSquares())
     .AddEvent(Events.Events.Kanturu, new Kanturu())
     .AddEvent(Events.Events.ChaosCastle, new ChaosCastles())
     .AddEvent(Events.Events.Crywolf, new Crywolf())
     .AddEvent(Events.Events.ImperialGuardian, new ImperialGuardian())
     //.AddEvent(Events.Events.DoubleGoer, new DoubleGoer())
     ;
     LuckyCoins.Initialize();
     EventChips.Initialize();
 }
Пример #3
0
 static void EventInitialize()
 {
     LuckyCoins.Initialize();
     EventChips.Initialize();
     BloodCastles.Initialize();
 }
Пример #4
0
        public async Task CTalk(GSSession session, CTalk message)
        {
            var npcs        = ResourceCache.Instance.GetNPCs();
            var ObjectIndex = message.Number.ShufleEnding();
            var obj         = MonstersMng.Instance.GetMonster(ObjectIndex);
            var @char       = session.Player.Character;

            if (npcs.TryGetValue(obj.Info.Monster, out var npc))
            {
                if (npc.Shop != null)
                {
                    session.Player.Window = npc.Shop.Storage;
                    await session.SendAsync(new STalk { Result = 0 });

                    await session.SendAsync(new SShopItemList(npc.Shop.Storage.GetInventory()) { ListType = 0 });

                    await session.SendAsync(new STax { Type = TaxType.Shop, Rate = 4 });
                }
                else if (npc.Warehouse)
                {
                    session.Player.Window = session.Player.Account.Vault;
                    session.Player.Character.Inventory.Lock = true;

                    await session.SendAsync(new SNotice(NoticeType.Blue, $"Active Vault: " + (session.Player.Account.ActiveVault + 1)));

                    await session.SendAsync(new STalk { Result = 2 });

                    await session.SendAsync(new SShopItemList(session.Player.Account.Vault.GetInventory()));

                    await session.SendAsync(new SWarehouseMoney(session.Player.Account.VaultMoney, session.Player.Character.Money));
                }
                else if (npc.GuildMaster)
                {
                    GuildManager.NPCTalk(session.Player);
                }
                else if (npc.EventChips)
                {
                    EventChips.NPCTalk(session.Player);
                }
                else if (npc.MessengerAngel)
                {
                    BloodCastles.MessengerAngelTalk(session.Player);
                }
                else if (npc.KingAngel)
                {
                    BloodCastles.AngelKingTalk(session.Player);
                }
                else if (npc.Window != 0)
                {
                    await session.SendAsync(new STalk { Result = npc.Window });

                    if (npc.Window == 3) // ChaosMachine
                    {
                        session.Player.Character.Inventory.Lock = true;
                        session.Player.Window = session.Player.Character.Inventory.ChaosBox;
                    }
                }
                else if (npc.Buff != 0)
                {
                    @char.Spells.SetBuff((SkillStates)npc.Buff, TimeSpan.FromSeconds(120));
                }
                else if (npc.Quest != 0xffff)
                {
                    var quest = @char.Quests.Find(obj.Info.Monster);

                    if (quest == null)
                    {
                        await session.SendAsync(new SChatTarget(ObjectIndex, "I don't have Quest for you"));

                        return;
                    }

                    var details = quest.Details;
                    Logger.ForAccount(session)
                    .Information("Talk to QuestNPC: {0}, Found Quest:{1}, State:{2}", obj.Info.Name, details.Name, quest.State);
                    await session.SendAsync(new SSetQuest { Index = (byte)quest.Index, State = quest.StateByte });
                }
            }
            else
            {
                Logger.ForAccount(session)
                .Debug("Talk to unasigned NPC {0}", obj.Info.Monster);
                await session.SendAsync(new SChatTarget(ObjectIndex, "Have a good day"));
            }
        }