Exemplo n.º 1
0
        public override bool Check(MapleCharacter chr, int npcId, MapleQuest quest)
        {
            switch (Type)
            {
            case QuestRequirementType.end:
                return(DateTime.UtcNow <= Date);

            default:
                ServerConsole.Warning("No check handler for " + Type.ToString());
                break;
            }
            return(false);
        }
Exemplo n.º 2
0
        public override bool Check(MapleCharacter chr, int npcId, MapleQuest quest)
        {
            switch (Type)
            {
            case QuestRequirementType.lvmin:
                return(chr.Level >= Data);

            case QuestRequirementType.lvmax:
                return(chr.Level <= Data);

            case QuestRequirementType.npc:
                return(npcId == Data);

            case QuestRequirementType.interval:
                return(true);    //todo: quest is repeatable

            case QuestRequirementType.pettamenessmin:
                return(true);                        //todo: chr.GetPet(0).Tameness >= Data;

            case QuestRequirementType.questComplete: //amount of quests completed
                return(chr.CompletedQuestCount >= Data);

            case QuestRequirementType.pop:     //fame
                return(chr.Fame >= Data);

            case QuestRequirementType.charmMin:
                return(chr.Charisma >= Data);

            case QuestRequirementType.senseMin:
                return(chr.Sense >= Data);

            case QuestRequirementType.craftMin:
                return(chr.Craft >= Data);

            case QuestRequirementType.willMin:
                return(chr.Will >= Data);

            case QuestRequirementType.charismaMin:
                return(chr.Charisma >= Data);

            case QuestRequirementType.insightMin:
                return(chr.Insight >= Data);

            default:
                ServerConsole.Warning("No check handler for " + Type.ToString());
                break;
            }
            return(false);
        }
Exemplo n.º 3
0
        public int GetDrop(MapleCharacter killer)
        {
            var mi           = MapleMonsterInformationProvider.Instance;
            var lastAssigned = -1;
            var minChance    = 1;
            var dl           = mi.RetrieveDropChances(Id);

            foreach (var d in dl)
            {
                if (d.Chance > minChance)
                {
                    minChance = d.Chance;
                }
            }
            foreach (var d in dl)
            {
                d.AssignedRangeStart  = lastAssigned + 1;
                d.AssignedRangeLength = (int)Math.Ceiling(1.0 / d.Chance * minChance);
                lastAssigned         += d.AssignedRangeLength;
            }
            var c = (int)(Randomizer.NextDouble() * minChance);

            foreach (var d in dl)
            {
                var itemid = d.ItemId;
                if ((c >= d.AssignedRangeStart) && (c < d.AssignedRangeStart + d.AssignedRangeLength))
                {
                    if (d.QuestId != 0)
                    {
                        if (killer.GetQuest(MapleQuest.GetInstance(d.QuestId)).Status == MapleQuestStatusType.Started)
                        {
                            return(itemid);
                        }
                    }
                    else
                    {
                        return(itemid);
                    }
                }
            }
            return(-1);
        }
Exemplo n.º 4
0
        public static void UpdateQuest(string[] split, MapleClient c)
        {
            string data = split[2];
            ushort questId;

            if (ushort.TryParse(split[1], out questId))
            {
                MapleQuest quest = c.Account.Character.GetQuest(questId);
                if (quest != null)
                {
                    quest.Data = data;
                    c.SendPacket(quest.Update());
                }
                else
                {
                    quest = new MapleQuest(DataBuffer.GetQuestById(questId), MapleQuestStatus.InProgress, data);
                    c.Account.Character.AddQuest(quest, questId);
                }
            }
        }
Exemplo n.º 5
0
        public override bool Check(MapleCharacter chr, int npcId, MapleQuest quest)
        {
            switch (Type)
            {
            case QuestRequirementType.item:
                foreach (var itemPair in Data)
                {
                    if (!chr.Inventory.HasItem(itemPair.Key, itemPair.Value))
                    {
                        return(false);
                    }
                }
                return(true);

            case QuestRequirementType.mob:
                foreach (var mobPair in Data)
                {
                    if (!quest.MonsterKills.ContainsKey(mobPair.Key) || quest.MonsterKills[mobPair.Key] < mobPair.Value)
                    {
                        return(false);
                    }
                }
                return(true);

            case QuestRequirementType.quest:
                foreach (var questPair in Data)
                {
                    if (!chr.HasCompletedQuest(questPair.Key))
                    {
                        return(false);
                    }
                }
                return(true);

            default:
                ServerConsole.Warning("No check handler for " + Type.ToString());
                break;
            }
            return(false);
        }
Exemplo n.º 6
0
        public override bool Check(MapleCharacter chr, int npcId, MapleQuest quest)
        {
            switch (Type)
            {
            case QuestRequirementType.job:
                return(Data.Where(i => i == chr.Job).Any());

            case QuestRequirementType.fieldEnter:
                return(Data.Where(i => i == chr.MapId).Any());

            case QuestRequirementType.pet:
                return(true);    //todo:

            /*
             * return Data.Where(x => x == chr.GetPet(0).ItemId).Any();
             */
            default:
                ServerConsole.Warning("No check handler for " + Type.ToString());
                break;
            }
            return(false);
        }
 public bool IsQuestFinished(int id)
 => Player.GetQuest(MapleQuest.GetInstance(id)).Status == MapleQuestStatusType.Completed;
 public bool IsQuestActive(int id)
 => Player.GetQuest(MapleQuest.GetInstance(id)).Status == MapleQuestStatusType.Started;
 public MapleQuestStatusType GetQuestStatus(int id) => Player.GetQuest(MapleQuest.GetInstance(id)).Status;
Exemplo n.º 10
0
 public override bool Check(MapleCharacter chr, int npcId, MapleQuest quest)
 {
     //TODO: run quest script
     return(true);
 }
Exemplo n.º 11
0
 public virtual bool Check(MapleCharacter chr, int npcId, MapleQuest quest)
 {
     return(false);
 }