Ejemplo n.º 1
0
    public override void Execute(GameCommandTrigger trigger)
    {
        Player player = trigger.Session.Player;

        int trophyId = trigger.Get <int>("trophyId");
        int amount   = trigger.Get <int>("amount");

        if (trophyId == 0)
        {
            trigger.Session.Send(NoticePacket.Notice("Type an trophy id!", NoticeType.Chat));
            return;
        }

        if (!player.TrophyData.ContainsKey(trophyId))
        {
            player.TrophyData[trophyId] = new(player.CharacterId, player.AccountId, trophyId);
        }

        player.TrophyData[trophyId].AddCounter(trigger.Session.Player, amount);

        player.TrophyData.TryGetValue(trophyId, out Trophy trophy);

        trigger.Session.Send(TrophyPacket.WriteUpdate(trophy));
        DatabaseManager.Trophies.Update(trophy);

        trigger.Session.Send(NoticePacket.Notice("Done!", NoticeType.Chat));
    }
Ejemplo n.º 2
0
        public override void Execute(GameCommandTrigger trigger)
        {
            int id = trigger.Get <int>("id");

            if (SkillMetadataStorage.GetSkill(id) == null)
            {
                trigger.Session.SendNotice($"No skill found with id: {id}");
                return;
            }

            short level = trigger.Get <short>("level") <= 10 && trigger.Get <short>("level") != 0 ? trigger.Get <short>("level") : (short)1;
            // The Status packet needs this in miliseconds, we are converting them here for the user to just input the actual seconds.
            int duration = trigger.Get <int>("duration") <= 3600 && trigger.Get <int>("duration") != 0 ? trigger.Get <int>("duration") * 1000 : 10000;
            int stacks   = trigger.Get <int>("stacks") == 0 ? 1 : trigger.Get <int>("stacks");

            SkillCast skillCast = new SkillCast(id, level);

            if (skillCast.IsBuffToOwner() || skillCast.IsBuffToEntity() || skillCast.IsBuffShield() || skillCast.IsGM() || skillCast.IsGlobal() || skillCast.IsHealFromBuff())
            {
                Status status = new Status(skillCast, trigger.Session.FieldPlayer.ObjectId, trigger.Session.FieldPlayer.ObjectId, stacks);
                StatusHandler.Handle(trigger.Session, status);
                return;
            }

            trigger.Session.SendNotice($"Skill with id: {id} is not a buff to the owner.");
        }
Ejemplo n.º 3
0
    public override void Execute(GameCommandTrigger trigger)
    {
        int questId = trigger.Get <int>("id");

        if (questId == 0)
        {
            trigger.Session.SendNotice("Type an quest id.");
            return;
        }
        QuestMetadata quest = QuestMetadataStorage.GetMetadata(questId);

        if (quest == null)
        {
            trigger.Session.Send(NoticePacket.Notice($"Quest not found with id: {questId.ToString().Color(Color.Aquamarine)}.", NoticeType.Chat));
            return;
        }
        if (trigger.Session.Player.QuestData.ContainsKey(questId))
        {
            trigger.Session.Send(NoticePacket.Notice($"You already have quest: {questId.ToString().Color(Color.Aquamarine)}.", NoticeType.Chat));
            return;
        }

        trigger.Session.Player.QuestData.Add(questId, new(trigger.Session.Player, quest, QuestState.Started, TimeInfo.Now()));
        trigger.Session.Send(QuestPacket.AcceptQuest(questId));
    }
Ejemplo n.º 4
0
    public override void Execute(GameCommandTrigger trigger)
    {
        Player player    = trigger.Session.Player;
        bool   mapIsHome = player.MapId == (int)Map.PrivateResidence;

        if (!mapIsHome)
        {
            return;
        }

        Home home = GameServer.HomeManager.GetHomeById(player.VisitingHomeId);

        if (home.AccountId != player.AccountId)
        {
            return;
        }

        string[] args = trigger.Get <string[]>("message");

        if (args is null)
        {
            trigger.Session.FieldManager.BroadcastPacket(HomeActionPacket.HostAlarm(string.Empty));
            return;
        }

        StringBuilder message = new();

        foreach (string arg in args[1..])
Ejemplo n.º 5
0
    public override void Execute(GameCommandTrigger trigger)
    {
        byte option = trigger.Get <byte>("option");
        byte red    = trigger.Get <byte>("red");
        byte green  = trigger.Get <byte>("green");
        byte blue   = trigger.Get <byte>("blue");

        if (red is 0 && green is 0 && blue is 0)
        {
            trigger.Session.SendNotice(Usage);
            return;
        }

        switch (option)
        {
        case 0:
            trigger.Session.FieldManager.BroadcastPacket(FieldPropertyPacket.ChangeAmbientLight(red, green, blue));
            break;

        case 1:
            trigger.Session.FieldManager.BroadcastPacket(FieldPropertyPacket.ChangeDirectionalLight(red, green, blue));
            break;

        default:
            trigger.Session.SendNotice($"Invalid option: {option}");
            break;
        }
    }
Ejemplo n.º 6
0
        public override void Execute(GameCommandTrigger trigger)
        {
            int mobId = trigger.Get <int>("id");

            if (NpcMetadataStorage.GetNpc(mobId) == null)
            {
                trigger.Session.Send(NoticePacket.Notice($"No MOB was found with the id: {mobId.ToString().Color(Color.DarkOliveGreen)}", NoticeType.Chat));
                return;
            }
            Mob mob = new Mob(mobId)
            {
                Animation = trigger.Get <short>("ani"),
                ZRotation = trigger.Get <short>("dir")
            };

            IFieldObject <Mob> fieldMob = trigger.Session.FieldManager.RequestFieldObject(mob);
            CoordF             coord    = trigger.Get <CoordF>("coord");

            if (coord == default)
            {
                fieldMob.Coord = trigger.Session.FieldPlayer.Coord;
            }
            else
            {
                fieldMob.Coord = coord;
            }
            trigger.Session.FieldManager.AddMob(fieldMob);
        }
Ejemplo n.º 7
0
    public override void Execute(GameCommandTrigger trigger)
    {
        Player player    = trigger.Session.Player;
        bool   mapIsHome = player.MapId == (int)Map.PrivateResidence;

        if (!mapIsHome)
        {
            return;
        }

        Home home = GameServer.HomeManager.GetHomeById(player.VisitingHomeId);

        if (home.AccountId != player.AccountId)
        {
            return;
        }

        string[] args = trigger.Get <string[]>("options");

        if (args is null)
        {
            trigger.Session.Send(HomeActionPacket.SurveyMessage());
            return;
        }

        string[] options = args[1..];
Ejemplo n.º 8
0
    public override void Execute(GameCommandTrigger trigger)
    {
        Player    player      = trigger.Session.Player;
        Character fieldPlayer = player.FieldPlayer;

        int  mountId = trigger.Get <int>("mountId");
        byte enable  = trigger.Get <byte>("enable");

        if (enable is 0)
        {
            player.Mount = null; // Remove mount from player
            trigger.Session.FieldManager.BroadcastPacket(MountPacket.StopRide(fieldPlayer, true));
            trigger.Session.Send(KeyTablePacket.SendHotbars(player.GameOptions));
            return;
        }

        IFieldObject <Mount> fieldMount = trigger.Session.FieldManager.RequestFieldObject(new Mount
        {
            Type = RideType.Default,
            Id   = mountId,
            Uid  = 0
        });

        fieldMount.Value.Players[0] = fieldPlayer;
        player.Mount = fieldMount;

        trigger.Session.FieldManager.BroadcastPacket(MountPacket.StartRide(fieldPlayer));
    }
Ejemplo n.º 9
0
    public override void Execute(GameCommandTrigger trigger)
    {
        bool enable = trigger.Get <byte>("enable") == 1;

        if (!enable)
        {
            trigger.Session.Send(TimeScalePacket.SetTimeScale(false, 0, 0, 0, 0));
            return;
        }

        float        startScale   = trigger.Get <float>("startScale");
        float        endScale     = trigger.Get <float>("endScale");
        float        duration     = trigger.Get <float>("duration");
        byte         interpolator = trigger.Get <byte>("interpolator");
        bool         broadcast    = trigger.Get <byte>("broadcast") == 1;
        PacketWriter packet       = TimeScalePacket.SetTimeScale(true, startScale, endScale, duration, interpolator);

        if (broadcast)
        {
            trigger.Session.FieldManager.BroadcastPacket(packet);
            return;
        }

        trigger.Session.Send(packet);
    }
Ejemplo n.º 10
0
    public override void Execute(GameCommandTrigger trigger)
    {
        Player player = trigger.Session.Player;

        player.Levels.SetLevel(90);
        player.Levels.SetPrestigeLevel(100);
        player.Wallet.Meso.SetAmount(10000000000);   // 10B
        player.Account.Meret.SetAmount(10000000000); // 10B

        // Stickers
        for (int i = 1; i < 7; i++)
        {
            if (player.ChatSticker.Any(x => x.GroupId == i))
            {
                continue;
            }

            trigger.Session.Send(ChatStickerPacket.AddSticker(21100000 + i, i));
            player.ChatSticker.Add(new((byte)i, 9223372036854775807));
        }

        List <int> emotes = SkillMetadataStorage.GetEmotes();

        foreach (int emoteId in emotes)
        {
            // Broken emotes
            if (emoteId is >= 90200032 and <= 90200036)
            {
                continue;
            }

            if (player.Emotes.Contains(emoteId))
            {
                continue;
            }

            player.Emotes.Add(emoteId);

            trigger.Session.Send(EmotePacket.LearnEmote(emoteId));
        }

        List <TitleMetadata> titles = TitleMetadataStorage.GetAll();

        foreach (TitleMetadata title in titles)
        {
            int titleId = title.Id;
            if (player.Titles.Contains(titleId))
            {
                continue;
            }

            player.Titles.Add(titleId);

            trigger.Session.Send(UserEnvPacket.AddTitle(titleId));
        }

        DatabaseManager.Characters.Update(player);
        trigger.Session.Send(NoticePacket.Notice("Done!", NoticeType.Chat));
    }
Ejemplo n.º 11
0
    public override void Execute(GameCommandTrigger trigger)
    {
        string[] command = trigger.Get <string[]>("map");
        if (command is null)
        {
            return;
        }

        string[] map = command[1..];
Ejemplo n.º 12
0
    public override void Execute(GameCommandTrigger trigger)
    {
        List <Player> players       = GameServer.PlayerManager.GetAllPlayers();
        StringBuilder stringBuilder = new();

        stringBuilder.Append("Online players:".Color(Color.DarkOrange).Bold() + "\n");
        stringBuilder.Append(string.Join(", ", players.Select(p => p.Name)));

        trigger.Session.Send(NoticePacket.Notice(stringBuilder.ToString(), NoticeType.Chat));
    }
Ejemplo n.º 13
0
        public override void Execute(GameCommandTrigger trigger)
        {
            int exp = trigger.Get <int>("exp");

            if (exp > 0)
            {
                trigger.Session.Player.Levels.GainExp(exp);
                return;
            }
            trigger.Session.SendNotice("Exp must be a number or more than 0.");
        }
Ejemplo n.º 14
0
        public override void Execute(GameCommandTrigger trigger)
        {
            short level = trigger.Get <short>("level");

            if (level > 0)
            {
                trigger.Session.Player.Levels.SetLevel(level);
                return;
            }
            trigger.Session.SendNotice("Level must be a number or more than 0.");
        }
Ejemplo n.º 15
0
    public override void Execute(GameCommandTrigger trigger)
    {
        string weather = trigger.Get <string>("weatherType");

        if (!Enum.TryParse(weather, ignoreCase: true, out WeatherType weatherType))
        {
            trigger.Session.SendNotice($"Available weathers: {WeatherTypes}");
            return;
        }

        trigger.Session.FieldManager.BroadcastPacket(FieldPropertyPacket.ChangeWeather(weatherType));
    }
Ejemplo n.º 16
0
    public override void Execute(GameCommandTrigger trigger)
    {
        int noticeId = trigger.Get <int>("noticeId");

        if (!Enum.IsDefined(typeof(SystemNotice), noticeId))
        {
            trigger.Session.SendNotice("Invalid notice id.");
            return;
        }

        trigger.Session.Send(NoticePacket.Notice((SystemNotice)noticeId, NoticeType.Chat));
    }
Ejemplo n.º 17
0
        public override void Execute(GameCommandTrigger trigger)
        {
            CoordF coordF = trigger.Get <CoordF>("pos");

            if (coordF == default)
            {
                trigger.Session.SendNotice(trigger.Session.FieldPlayer.Coord.ToString());
                return;
            }
            trigger.Session.Player.Coord = coordF;
            trigger.Session.Send(UserMoveByPortalPacket.Move(trigger.Session.FieldPlayer, coordF, trigger.Session.Player.Rotation));
        }
Ejemplo n.º 18
0
    public override void Execute(GameCommandTrigger trigger)
    {
        if (trigger.Session.Player.GmFlags.Contains("oneshot"))
        {
            trigger.Session.Player.GmFlags.Remove("oneshot");
            trigger.Session.SendNotice("Oneshot mode disabled.");
            return;
        }

        trigger.Session.Player.GmFlags.Add("oneshot");
        trigger.Session.SendNotice("Oneshot mode enabled.");
    }
Ejemplo n.º 19
0
    public override void Execute(GameCommandTrigger trigger)
    {
        string type = trigger.Get <string>("type");

        string[] command = trigger.Get <string[]>("name");
        if (string.IsNullOrEmpty(type) || !Options.Contains(type) || command is null)
        {
            trigger.Session.SendNotice($"Usage: /find [{string.Join("/", Options)}] [name]");
            return;
        }

        string[] args = command[1..];
Ejemplo n.º 20
0
    public override void Execute(GameCommandTrigger trigger)
    {
        int questId = trigger.Get <int>("id");

        if (questId == 0)
        {
            trigger.Session.SendNotice("Please type an quest id");
            return;
        }
        if (!QuestMetadataStorage.IsValid(questId))
        {
            trigger.Session.Send(NoticePacket.Notice($"Quest not found with id: {questId.ToString().Color(Color.Aquamarine)}.", NoticeType.Chat));
            return;
        }

        Player player = trigger.Session.Player;

        if (!player.QuestData.TryGetValue(questId, out QuestStatus questStatus))
        {
            questStatus = new(player, QuestMetadataStorage.GetMetadata(questId));
            player.QuestData.Add(questId, questStatus);
        }
        questStatus.State             = QuestState.Finished;
        questStatus.StartTimestamp    = TimeInfo.Now();
        questStatus.CompleteTimestamp = TimeInfo.Now();
        player.Levels.GainExp(questStatus.Reward.Exp);
        player.Wallet.Meso.Modify(questStatus.Reward.Money);

        foreach (QuestRewardItem reward in questStatus.RewardItems)
        {
            Item newItem = new(reward.Code)
            {
                Amount = reward.Count,
                Rarity = reward.Rank
            };
            if (newItem.RecommendJobs.Contains(player.Job) || newItem.RecommendJobs.Contains(0))
            {
                player.Inventory.AddItem(trigger.Session, newItem, true);
            }
        }
        DatabaseManager.Quests.Update(questStatus);
        trigger.Session.Send(QuestPacket.CompleteQuest(questId, true));

        // Add next quest
        IEnumerable <KeyValuePair <int, QuestMetadata> > questList = QuestMetadataStorage.GetAllQuests().Where(x => x.Value.Require.RequiredQuests.Contains(questId));

        foreach ((int id, QuestMetadata quest) in questList)
        {
            player.QuestData.Add(id, new(player, quest));
        }
    }
}
Ejemplo n.º 21
0
    public override void Execute(GameCommandTrigger trigger)
    {
        string[] args = trigger.Get <string[]>("id");

        if (args == null || args.Length <= 1)
        {
            trigger.Session.Send(NoticePacket.Notice("No events provided. Choose one through three events. \n" +
                                                     "1 = OX Quiz \n" +
                                                     "2 = Trap Master \n" +
                                                     "3 = Spring Beach \n" +
                                                     "4 = Crazy Runner \n" +
                                                     "5 = Final Survivor \n" +
                                                     "6 = Ludibrium Escape \n" +
                                                     "7 = Dance Dance Stop \n" +
                                                     "8 = Crazy Runner Shanghai \n" +
                                                     "9 = Hide And Seek \n" +
                                                     "10 = Red Arena \n" +
                                                     "11 = Blood Mine \n" +
                                                     "12 = Treasure Island \n" +
                                                     "13 = Christmas Dance Dance Stop", NoticeType.Chat));
            return;
        }

        GlobalEvent globalEvent = new();

        byte[] eventIds = Array.ConvertAll(args[1].Split(","), byte.Parse);
        if (eventIds.Length > 3)
        {
            trigger.Session.Send(NoticePacket.Notice("Too many events chosen. Please choose only between one and three.", NoticeType.Chat));
            return;
        }

        foreach (byte eventId in eventIds)
        {
            if (Enum.IsDefined(typeof(GlobalEventType), eventId))
            {
                globalEvent.Events.Add((GlobalEventType)eventId);
            }
        }

        if (globalEvent.Events.Count == 1)
        {
            globalEvent.Events.Insert(0, GlobalEventType.none);
            globalEvent.Events.Insert(2, GlobalEventType.none);
        }
        else if (globalEvent.Events.Count == 2)
        {
            globalEvent.Events.Insert(2, GlobalEventType.none);
        }

        globalEvent.Start();
    }
Ejemplo n.º 22
0
    public override void Execute(GameCommandTrigger trigger)
    {
        // TODO: Check if the command is being executed in party chat.
        Player player    = trigger.Session.Player;
        bool   mapIsHome = player.MapId == (int)Map.PrivateResidence;

        if (!mapIsHome)
        {
            return;
        }

        trigger.Session.FieldManager.BroadcastPacket(HomeActionPacket.Roll(trigger.Session.Player, Random.Shared.Next(100)));
    }
Ejemplo n.º 23
0
    public override void Execute(GameCommandTrigger trigger)
    {
        int gravity = (int)Math.Round(trigger.Get <float>("gravity"));

        gravity = Math.Min(gravity * 40, 400);
        if (gravity < 0)
        {
            gravity = 0;
        }

        trigger.Session.FieldManager.BroadcastPacket(FieldPropertyPacket.ChangeGravity(gravity * -1));
        trigger.Session.FieldManager.BroadcastPacket(NoticePacket.Notice(SystemNotice.GravityChanged, NoticeType.Chat));
    }
Ejemplo n.º 24
0
    public override void Execute(GameCommandTrigger trigger)
    {
        Player player = trigger.Session.Player;
        IFieldActor <Player> fieldPlayer  = player.FieldPlayer;
        FieldManager         fieldManager = trigger.Session.FieldManager;

        bool mapIsHome = player.MapId == (int)Map.PrivateResidence;

        if (!mapIsHome)
        {
            return;
        }

        Home home = GameServer.HomeManager.GetHomeById(player.VisitingHomeId);

        if (home.AccountId != player.AccountId)
        {
            return;
        }

        IFieldObject <GuideObject> ballObject = fieldManager.State.Guide.Values.FirstOrDefault(x => x.Value.IsBall);

        if (ballObject is not null)
        {
            fieldManager.RemoveGuide(ballObject);
            fieldManager.BroadcastPacket(HomeActionPacket.RemoveBall(ballObject));
            return;
        }

        int size = trigger.Get <int>("size");

        size = Math.Min(30 + size * 30, 330);
        if (size < 0)
        {
            size = 60;
        }

        GuideObject ball = new(0, player.CharacterId)
        {
            IsBall = true
        };
        IFieldObject <GuideObject> fieldObject = fieldManager.RequestFieldObject(ball);

        fieldObject.Coord    = CoordF.From(fieldPlayer.Coord.X, fieldPlayer.Coord.Y, fieldPlayer.Coord.Z + Block.BLOCK_SIZE * 2);
        fieldObject.Rotation = CoordF.From(0, 0, size);

        fieldManager.AddGuide(fieldObject);

        fieldManager.BroadcastPacket(HomeActionPacket.AddBall(fieldObject));
    }
}
Ejemplo n.º 25
0
    public override void Execute(GameCommandTrigger trigger)
    {
        string[] args = trigger.Get <string[]>("message");

        if (args == null || args.Length <= 1)
        {
            trigger.Session.SendNotice("No message provided.");
            return;
        }

        string message = CommandHelpers.BuildString(args, trigger.Session.Player.Name);

        MapleServer.BroadcastPacketAll(NoticePacket.Notice(message));
    }
Ejemplo n.º 26
0
    public override void Execute(GameCommandTrigger trigger)
    {
        string      currencyName = trigger.Get <string>("name");
        long        amount       = trigger.Get <long>("amount");
        GameSession session      = trigger.Session;

        if (string.IsNullOrEmpty(currencyName))
        {
            session.SendNotice("No currency type were found. Try one of the list.");
            session.Send(NoticePacket.Notice("valor, treva, rue, havi, meso, meret, mesotoken".Color(Color.DarkOrange), NoticeType.Chat));
            return;
        }
        if (amount <= 0)
        {
            session.SendNotice("Amount must be more than 0 to add.");
            return;
        }

        switch (currencyName)
        {
        case "valor":
            session.Player.Wallet.ValorToken.SetAmount(amount);
            break;

        case "treva":
            session.Player.Wallet.Treva.SetAmount(amount);
            break;

        case "rue":
            session.Player.Wallet.Rue.SetAmount(amount);
            break;

        case "havi":
            session.Player.Wallet.HaviFruit.SetAmount(amount);
            break;

        case "meso":
            session.Player.Wallet.Meso.SetAmount(amount);
            break;

        case "meret":
            session.Player.Account.Meret.SetAmount(amount);
            break;

        case "mesotoken":
            session.Player.Account.MesoToken.SetAmount(amount);
            break;
        }
    }
Ejemplo n.º 27
0
    public override void Execute(GameCommandTrigger trigger)
    {
        string jobName  = trigger.Get <string>("job");
        byte   awakened = trigger.Get <byte>("awakened");

        Player player = trigger.Session.Player;
        IFieldObject <Player> fieldPlayer = trigger.Session.Player.FieldPlayer;

        long     activeSkillTabId = player.ActiveSkillTabId;
        SkillTab skillTab         = player.SkillTabs.First(tab => tab.TabId == activeSkillTabId);

        if (string.IsNullOrEmpty(jobName))
        {
            string[] classes = Enum.GetNames(typeof(Job));

            player.Session.Send(NoticePacket.Notice("You have to give a classname and specifiy awakening (1 or 0)\nAvailable classes:\n".Bold().Color(Color.DarkOrange) +
                                                    $"{string.Join(", ", classes).Color(Color.Aquamarine)}", NoticeType.Chat));

            return;
        }

        Job job = Job.None;

        if (!Enum.TryParse(jobName, true, out job))
        {
            player.Session.SendNotice($"{jobName} is not a valid class name");
            return;
        }

        if (job == Job.None)
        {
            player.Session.SendNotice("None is not a valid class");
            return;
        }

        if (job != player.Job)
        {
            DatabaseManager.SkillTabs.Delete(skillTab.Uid);
            SkillTab newSkillTab = new(player.CharacterId, job, skillTab.TabId, skillTab.Name);

            player.SkillTabs[player.SkillTabs.IndexOf(skillTab)] = newSkillTab;
            player.Job = job;
        }

        player.Awakened = awakened == 1;

        trigger.Session.Send(JobPacket.SendJob(fieldPlayer));
    }
        public override void Execute(GameCommandTrigger trigger)
        {
            int questId = trigger.Get <int>("id");

            if (questId == 0)
            {
                trigger.Session.SendNotice("Please type an quest id");
                return;
            }
            if (!QuestMetadataStorage.IsValid(questId))
            {
                trigger.Session.Send(NoticePacket.Notice($"Quest not found with id: {questId.ToString().Color(Color.Aquamarine)}.", NoticeType.Chat));
                return;
            }
            QuestStatus questStatus = trigger.Session.Player.QuestList.FirstOrDefault(x => x.Basic.Id == questId);

            if (questStatus == null)
            {
                questStatus = new QuestStatus(trigger.Session.Player, QuestMetadataStorage.GetMetadata(questId));
                trigger.Session.Player.QuestList.Add(questStatus);
            }
            questStatus.Completed         = true;
            questStatus.CompleteTimestamp = DateTimeOffset.Now.ToUnixTimeSeconds();
            trigger.Session.Player.Levels.GainExp(questStatus.Reward.Exp);
            trigger.Session.Player.Wallet.Meso.Modify(questStatus.Reward.Money);

            foreach (QuestRewardItem reward in questStatus.RewardItems)
            {
                Item newItem = new Item(reward.Code)
                {
                    Amount = reward.Count,
                    Rarity = reward.Rank
                };
                if (newItem.RecommendJobs.Contains(trigger.Session.Player.Job) || newItem.RecommendJobs.Contains(0))
                {
                    InventoryController.Add(trigger.Session, newItem, true);
                }
            }
            trigger.Session.Send(QuestPacket.CompleteQuest(questId, true));

            // Add next quest
            IEnumerable <KeyValuePair <int, QuestMetadata> > questList = QuestMetadataStorage.GetAllQuests().Where(x => x.Value.Require.RequiredQuests.Contains(questId));

            foreach (KeyValuePair <int, QuestMetadata> kvp in questList)
            {
                trigger.Session.Player.QuestList.Add(new QuestStatus(trigger.Session.Player, kvp.Value));
            }
        }
Ejemplo n.º 29
0
        public override void Execute(GameCommandTrigger trigger)
        {
            int trophyId = trigger.Get <int>("trophyId");
            int amount   = trigger.Get <int>("amount");

            if (trophyId == 0)
            {
                trigger.Session.Send(NoticePacket.Notice("Type an trophy id!", NoticeType.Chat));
                return;
            }
            trigger.Session.Player.TrophyUpdate(trophyId, amount);

            trigger.Session.Player.TrophyData.TryGetValue(trophyId, out Trophy trophy);
            DatabaseManager.Trophies.Update(trophy);
            trigger.Session.Send(NoticePacket.Notice("Done!", NoticeType.Chat));
        }
Ejemplo n.º 30
0
        public override void Execute(GameCommandTrigger trigger)
        {
            int   id    = trigger.Get <int>("id");
            short level = trigger.Get <short>("level") > 0 ? trigger.Get <short>("level") : (short)1;

            if (SkillMetadataStorage.GetSkill(id) == null)
            {
                trigger.Session.SendNotice($"Skill with id: {id} is not defined.");
                return;
            }

            SkillCast             skillCast = new SkillCast(id, level, GuidGenerator.Long(), trigger.Session.ServerTick, trigger.Session.FieldPlayer.ObjectId, trigger.Session.ClientTick);
            CoordF                empty     = CoordF.From(0, 0, 0);
            IFieldObject <Player> player    = trigger.Session.FieldPlayer;

            trigger.Session.FieldManager.BroadcastPacket(SkillUsePacket.SkillUse(skillCast, player.Coord, empty, empty));
        }