Пример #1
0
        public static string GetReward(this QuestRewardType type, int pokemonId, int amount, ItemId item, bool isDitto = false, bool isShiny = false)
        {
            var rewardKey = "quest_reward_" + Convert.ToInt32(type);

            switch (type)
            {
            case QuestRewardType.AvatarClothing:
            case QuestRewardType.Quest:
                return(Translator.Instance.Translate(rewardKey));

            case QuestRewardType.Candy:
                return(Translator.Instance.Translate(rewardKey, amount));

            case QuestRewardType.Experience:
                return(Translator.Instance.Translate(rewardKey, amount));

            case QuestRewardType.Item:
                var itemName = Translator.Instance.GetItem(item);
                return(Translator.Instance.Translate(rewardKey, amount, itemName));

            case QuestRewardType.PokemonEncounter:
                return((isShiny ? $"**SHINY** " : "") + Translator.Instance.GetPokemonName(isDitto ? 132 : pokemonId));

            case QuestRewardType.Stardust:
                return(Translator.Instance.Translate(rewardKey, amount));
            }

            return("Unknown");
        }
Пример #2
0
        public static string GetReward(this QuestRewardType type, int pokemonId, int amount, ItemId item, bool isDitto = false, bool isShiny = false)
        {
            switch (type)
            {
            case QuestRewardType.AvatarClothing:
                return("Avatar Clothing");

            case QuestRewardType.Candy:
                return($"{amount.ToString("N0")} Rare Candy");

            case QuestRewardType.Experience:
                return($"{amount.ToString("N0")} XP");

            case QuestRewardType.Item:
                return($"{amount.ToString("N0")} {item.ToString().Replace("_", " ")}");

            case QuestRewardType.PokemonEncounter:
                return((isShiny ? $"**SHINY** " : "") + Database.Instance.Pokemon[isDitto ? 132 : pokemonId].Name);

            case QuestRewardType.Quest:
                return("Quest");

            case QuestRewardType.Stardust:
                return($"{amount.ToString("N0")} Stardust");
            }

            return("Unknown");
        }
Пример #3
0
 /// <summary>
 /// Converts the specified quest reward type.
 /// </summary>
 /// <param name="questRewardType">Type of the quest reward.</param>
 /// <returns>The converted value.</returns>
 public static RewardType Convert(this QuestRewardType questRewardType)
 {
     return(questRewardType switch
     {
         QuestRewardType.Item => RewardType.Item,
         QuestRewardType.Experience => RewardType.Experience,
         QuestRewardType.Money => RewardType.Money,
         QuestRewardType.GensAttribution => RewardType.GensContribution,
         QuestRewardType.Undefined => RewardType.None,
         _ => throw new ArgumentException($"Unknown reward type {questRewardType}.")
     });
Пример #4
0
    public Quest(QuestType questType, int target, QuestRewardType rewardType, int reward, string rewardImagePath)
    {
        this.questType       = questType;
        this.target          = target;
        this.rewardAmount    = reward;
        this.rewardType      = rewardType;
        this.rewardImagePath = rewardImagePath;

        switch (questType)
        {
        case QuestType.GATHERING_BUILDING_MATERIALS:
            this.title       = "Piling up!";
            this.description = "Gather building materials";
            break;

        case QuestType.GATHERING_COINS:
            this.title       = "Coinspiration theory!";
            this.description = "Gather a number of coins.";
            break;

        case QuestType.FEED_FOOD:
            this.title       = "Gluttony!";
            this.description = "Feed your pet a number of food items.";
            break;

        case QuestType.FIND_SEEDS:
            this.title       = "Need for seed!";
            this.description = "Gather seeds of any type.";
            break;

        case QuestType.GAIN_EXPERIENCE:
            this.title       = "Leveling up!";
            this.description = "Gain a number of experience points.";
            break;

        case QuestType.WALK:
            this.title       = "Walk in the park!";
            this.description = "Take a number of steps.";
            break;

        case QuestType.HARVEST:
            this.title       = "Farm plot hot shot!";
            this.description = "Harvest produce from your farm plots a number of times.";
            break;

        case QuestType.MARKERS:
            this.title       = "Mark my world!";
            this.description = "Find and activate a number of markers in the world.";
            break;
        }

        initQuestListener();
    }
Пример #5
0
        private QuestReward LoadReward(XElement element)
        {
            QuestRewardType rewardType = element.GetEnum <QuestRewardType>("type");

            switch (rewardType)
            {
            case QuestRewardType.credits: {
                QuestReward creditsReward = new QuestReward();
                creditsReward.Load(element);
                return(creditsReward);
            }

            case QuestRewardType.exp: {
                QuestReward expReward = new QuestReward();
                expReward.Load(element);
                return(expReward);
            }

            case QuestRewardType.nebula_credits: {
                QuestReward nebCreditsReward = new QuestReward();
                nebCreditsReward.Load(element);
                return(nebCreditsReward);
            }

            case QuestRewardType.item: {
                InventoryObjectType inventoryObjectType = element.GetEnum <InventoryObjectType>("inventory_type");
                switch (inventoryObjectType)
                {
                case InventoryObjectType.Scheme: {
                    SchemeItemQuestReward schemeReward = new SchemeItemQuestReward();
                    schemeReward.Load(element);
                    return(schemeReward);
                }

                case InventoryObjectType.Material: {
                    MaterialItemQuestReward materialReward = new MaterialItemQuestReward();
                    materialReward.Load(element);
                    return(materialReward);
                }

                case InventoryObjectType.Weapon: {
                    WeaponItemQuestReward weaponReward = new WeaponItemQuestReward();
                    weaponReward.Load(element);
                    return(weaponReward);
                }
                }
                break;
            }
            }
            return(null);
        }
Пример #6
0
        public void SelectQuestReward(int _reward, QuestRewardType _type)
        {
            if (!rewardTypes[_reward].HasFlag(_type))
            {
                Debug.LogError("Wrong selection for this quest reward!");
                return;
            }

            //Bitwise And Not(_type) operation with clear flag to ignore previous Primary/Secondary flag.
            if (selectedRewardTypes[_reward].HasFlag(_type))
            {
                selectedRewardTypes[_reward] &= ~(QuestRewardType.Clear_Flag);
            }
            selectedRewardTypes[_reward] |= _type;
        }
Пример #7
0
    public static int getRewardTypeConversionRate(QuestRewardType rewardType)
    {
        switch (rewardType)
        {
        case QuestRewardType.BUILDING_MATERIALS:
            return(1);

        case QuestRewardType.COINS:
            return(2);

        case QuestRewardType.EXPERIENCE:
            return(5);
        }

        return(1);
    }
Пример #8
0
    public static string getRewardTypeImagePath(QuestRewardType rewardType)
    {
        switch (rewardType)
        {
        case QuestRewardType.BUILDING_MATERIALS:
            return("Augotchi/Image/Reward/Icon_BM");

        case QuestRewardType.COINS:
            return("Augotchi/Image/Reward/Icon_Coin");

        case QuestRewardType.EXPERIENCE:
            return("Augotchi/Image/Reward/Icon_XP");

        case QuestRewardType.GARDEN_DECOR:
            return("Augotchi/Image/Reward/Icon_Decor");
        }

        return("Augotchi/Image/Whiskers");
    }
Пример #9
0
        /// <inheritdoc />
        public void Show(Player receiver, QuestRewardType reward, int value, AttributeDefinition?attributeReward)
        {
            var receiverId = receiver.GetId(this.player);

            switch (reward)
            {
            case QuestRewardType.LevelUpPoints:
                this.player.Connection?.SendLegacyQuestReward(receiverId, LegacyQuestReward.QuestRewardType.LevelUpPoints, (byte)value);
                break;

            case QuestRewardType.CharacterEvolutionFirstToSecond:
                this.player.Connection?.SendLegacyQuestReward(receiverId, LegacyQuestReward.QuestRewardType.CharacterEvolutionFirstToSecond, (byte)(this.player.SelectedCharacter !.CharacterClass !.Number << 3));
                break;

            case QuestRewardType.CharacterEvolutionSecondToThird:
                this.player.Connection?.SendLegacyQuestReward(receiverId, LegacyQuestReward.QuestRewardType.CharacterEvolutionSecondToThird, (byte)(this.player.SelectedCharacter !.CharacterClass !.Number << 3));
                break;

            case QuestRewardType.Attribute:
                if (attributeReward == Stats.IsSkillComboAvailable)
                {
                    this.player.Connection?.SendLegacyQuestReward(receiverId, LegacyQuestReward.QuestRewardType.ComboSkill, 0);
                }

                if (attributeReward == Stats.PointsPerLevelUp)
                {
                    var questLevel = this.player.GetQuestState(QuestConstants.LegacyQuestGroup)?.ActiveQuest?.MinimumCharacterLevel ?? 220;
                    var points     = (this.player.Level - questLevel) * value;
                    this.player.Connection?.SendLegacyQuestReward(receiverId, LegacyQuestReward.QuestRewardType.LevelUpPointsPerLevelIncrease, (byte)points);
                }

                break;

            default:
                this.player.Logger.LogDebug("Unknown quest reward: {0}", reward);
                break;
            }
        }
Пример #10
0
 public QuestReward(GS.Data.ObjectData _data = null, QuestRewardType _type = QuestRewardType.Primary, int _rewardSize = 1)
 {
     data       = _data;
     type       = _type;
     rewardSize = _rewardSize;
 }
Пример #11
0
 public void GetSelected(out QuestLink _link, out QuestRewardType _types)
 {
     _link  = quests[selectedQuest];
     _types = selectedRewardTypes[selectedQuest];
 }
Пример #12
0
 public QuestReward(byte atObjective, int id, int amount, QuestRewardType type)
 {
     AtObjective = atObjective;
     Type = type;
     Amount = amount;
     ID = id;
 }
Пример #13
0
    public static Quest generateQuest()
    {
        QuestRewardType rewardType = (QuestRewardType)UnityEngine.Random.Range(0, Enum.GetNames(typeof(QuestRewardType)).Length);

        QuestType questType         = 0;
        bool      questAlreadyInLog = false;

        do
        {
            questAlreadyInLog = false;

            questType = (QuestType)UnityEngine.Random.Range(0, Enum.GetNames(typeof(QuestType)).Length);

            foreach (Quest q in PetKeeper.pet.questLog)
            {
                if (q.questType == questType)
                {
                    questAlreadyInLog = true;
                }
            }
        } while (questAlreadyInLog);

        Quest toReturn = null;

        switch (questType)
        {
        case QuestType.FEED_FOOD:
            int rnd = UnityEngine.Random.Range(1, 4);
            toReturn = new Quest(
                QuestType.FEED_FOOD,
                rnd * 5,
                rewardType,
                rewardType == QuestRewardType.GARDEN_DECOR ? 1 : rnd * 20 * getRewardTypeConversionRate(rewardType),
                getRewardTypeImagePath(rewardType)
                );
            break;

        case QuestType.FIND_SEEDS:
            rnd      = UnityEngine.Random.Range(3, 7);
            toReturn = new Quest(
                QuestType.FIND_SEEDS,
                rnd * 4,
                rewardType,
                rewardType == QuestRewardType.GARDEN_DECOR ? 1 : rnd * 10 * getRewardTypeConversionRate(rewardType),
                getRewardTypeImagePath(rewardType)
                );
            break;

        case QuestType.GAIN_EXPERIENCE:
            rnd      = UnityEngine.Random.Range(2, 11);
            toReturn = new Quest(
                QuestType.GAIN_EXPERIENCE,
                rnd * 500,
                rewardType,
                rewardType == QuestRewardType.GARDEN_DECOR ? 1 : rnd * 10 * getRewardTypeConversionRate(rewardType),
                getRewardTypeImagePath(rewardType)
                );
            break;

        case QuestType.GATHERING_BUILDING_MATERIALS:
            rnd      = UnityEngine.Random.Range(1, 5);
            toReturn = new Quest(
                QuestType.GATHERING_BUILDING_MATERIALS,
                rnd * 25,
                rewardType,
                rewardType == QuestRewardType.GARDEN_DECOR ? 1 : rnd * 10 * getRewardTypeConversionRate(rewardType),
                getRewardTypeImagePath(rewardType)
                );
            break;

        case QuestType.GATHERING_COINS:
            rnd      = UnityEngine.Random.Range(1, 11);
            toReturn = new Quest(
                QuestType.GATHERING_COINS,
                rnd * 50,
                rewardType,
                rewardType == QuestRewardType.GARDEN_DECOR ? 1 : rnd * 10 * getRewardTypeConversionRate(rewardType),
                getRewardTypeImagePath(rewardType)
                );
            break;

        case QuestType.WALK:
            rnd      = UnityEngine.Random.Range(1, 7);
            toReturn = new Quest(
                QuestType.WALK,
                rnd * 500,
                rewardType,
                rewardType == QuestRewardType.GARDEN_DECOR ? 1 : rnd * 10 * getRewardTypeConversionRate(rewardType),
                getRewardTypeImagePath(rewardType)
                );
            break;

        case QuestType.HARVEST:
            rnd      = UnityEngine.Random.Range(3, 10);
            toReturn = new Quest(
                QuestType.HARVEST,
                rnd,
                rewardType,
                rewardType == QuestRewardType.GARDEN_DECOR ? 1 : rnd * 25 * getRewardTypeConversionRate(rewardType),
                getRewardTypeImagePath(rewardType)
                );
            break;

        case QuestType.MARKERS:
            rnd      = UnityEngine.Random.Range(3, 7);
            toReturn = new Quest(
                QuestType.MARKERS,
                rnd * 5,
                rewardType,
                rewardType == QuestRewardType.GARDEN_DECOR ? 1 : rnd * 5 * getRewardTypeConversionRate(rewardType),
                getRewardTypeImagePath(rewardType)
                );
            break;
        }

        return(toReturn);
    }