示例#1
0
        protected override void PrepareQuest(QuestsList prerequisites, TasksList tasks, HintsList hints)
        {
            ITextureResource icon = null;

            if (IsClient)
            {
                icon = Api.GetProtoEntity <ObjectPragmiumKingRemains>().Icon;
            }

            tasks
            .Add(TaskDestroy.Require <ObjectPragmiumKingRemains>(count: 1).WithIcon(icon));

            prerequisites
            .Add <QuestPragmiumQueenRemains>()
            .Add <QuestSandTyrantRemains>()
            .Add <QuestCookMoreFoodStage4>()
            .Add <QuestMineMoreMineralsStage4>();
        }
        protected override void PrepareQuest(QuestsList prerequisites, TasksList tasks, HintsList hints)
        {
            tasks
            .Add(TaskBuildStructure.Require <ObjectGeneratorSteam>())
            .Add(TaskBuildStructure.Require <ObjectPowerStorage>())
            .Add(TaskBuildStructure.Require <ObjectLightFloorLampSmall>());

            prerequisites
            .Add <QuestBuildChemicalLab>();

            hints
            .Add(HintGridZone)
            .Add(HintPowerStorage)
            .Add(HintGenerators)
            .Add(HintGridInformation)
            .Add(HintUnitedGrid)
            .Add(HintThresholds);
        }
示例#3
0
        protected override void PrepareQuest(QuestsList prerequisites, TasksList tasks, HintsList hints)
        {
            tasks
            .Add(TaskCraftRecipe.RequireHandRecipe <RecipeRope>())
            .Add(TaskCraftRecipe.RequireHandRecipe <RecipeAxeStone>());

            prerequisites
            .Add <QuestGatherResources>();

            hints
            .Add(() =>
            {
                var keyForButton1 = InputKeyNameHelper.GetKeyText(ClientInputManager.GetKeyForButton(GameButton.CraftingMenu));
                var keyForButton2 = InputKeyNameHelper.GetKeyText(ClientInputManager.GetKeyForButton(GameButton.InventoryMenu));

                return(string.Format(HintHotkeys, keyForButton1, keyForButton2));
            });
        }
示例#4
0
        protected override void PrepareQuest(QuestsList prerequisites, TasksList tasks, HintsList hints)
        {
            ITextureResource iconGrass = null,
                             iconTwigs = null,
                             iconStone = null;

            if (IsClient)
            {
                iconGrass = Api.GetProtoEntity <ObjectLootGrass>().Icon;
                iconTwigs = Api.GetProtoEntity <ObjectLootTwigs>().Icon;
                iconStone = Api.GetProtoEntity <ObjectLootStone>().Icon;
            }

            tasks
            .Add(TaskHaveItem.Require <ItemFibers>(count: 10).WithIcon(iconGrass))
            .Add(TaskHaveItem.Require <ItemTwigs>(count: 10).WithIcon(iconTwigs))
            .Add(TaskHaveItem.Require <ItemStone>(count: 10).WithIcon(iconStone));
        }
示例#5
0
        protected override void PrepareQuest(QuestsList prerequisites, TasksList tasks, HintsList hints)
        {
            tasks
            .Add(TaskCompleteTechGroup.Require <TechGroupChemistryT2>())
            .Add(TaskCompleteTechGroup.Require <TechGroupConstructionT2>())
            .Add(TaskCompleteTechGroup.Require <TechGroupCookingT2>())
            .Add(TaskCompleteTechGroup.Require <TechGroupDefenseT2>())
            .Add(TaskCompleteTechGroup.Require <TechGroupFarmingT2>())
            .Add(TaskCompleteTechGroup.Require <TechGroupFishingT2>())
            .Add(TaskCompleteTechGroup.Require <TechGroupIndustryT2>())
            .Add(TaskCompleteTechGroup.Require <TechGroupElectricityT2>())
            .Add(TaskCompleteTechGroup.Require <TechGroupMedicineT2>())
            .Add(TaskCompleteTechGroup.Require <TechGroupOffenseT2>());

            prerequisites
            .Add <QuestMasterHunter4>()
            .Add <QuestExploreBiomes4>();
        }
示例#6
0
        protected override void PrepareQuest(QuestsList prerequisites, TasksList tasks, HintsList hints)
        {
            // minerals without stone (as it has a separate requirement)
            var listMinerals = Api.FindProtoEntities<IProtoObjectMineral>();
            listMinerals.Remove(Api.GetProtoEntity<ObjectMineralStone>());

            tasks
                .Add(TaskVisitTile.Require<TileRocky>())
                .Add(TaskDestroy.Require(list: listMinerals, count: 3, description: this.Name)
                                .WithIcon(Api.IsClient
                                              ? ClientItemIconHelper.CreateComposedIcon(this.ShortId,
                                                                                        Api.GetProtoEntity<ObjectMineralIron>().Icon,
                                                                                        Api.GetProtoEntity<ObjectMineralCopper>().Icon)
                                              : null))
                .Add(TaskDestroy.Require<ObjectMineralStone>(count: 3, description: TaskMineStone));

            prerequisites
                .Add<QuestCraftAPickaxe>();
        }
示例#7
0
        protected sealed override void PrepareProto()
        {
            var requirements  = new RequirementsList();
            var prerequisites = new QuestsList();

            this.PrepareQuest(prerequisites, requirements);

            Api.Assert(requirements.Count >= 1, "At least one requirement required for a quest");
            Api.Assert(requirements.Count <= 256, "Max 256 requirements per quest");
            Api.Assert(prerequisites.Count <= 256, "Max 256 prerequisites per quest");

            foreach (var requirement in requirements)
            {
                requirement.Quest = this;
            }

            this.Requirements  = requirements;
            this.Prerequisites = prerequisites;
        }
    public static QuestsList CreateQuestsList()
    {
        QuestsList asset = ScriptableObject.CreateInstance <QuestsList>();

        if (!Directory.Exists(BASE_PATH))
        {
            Directory.CreateDirectory(BASE_PATH);
        }

        if (AssetDatabase.LoadAssetAtPath <QuestsList>(BASE_PATH + AKAGF_PATHS.NEW_QUESTS_LIST_BASE_NAME) == null)
        {
            AssetDatabase.CreateAsset(asset, BASE_PATH + AKAGF_PATHS.NEW_QUESTS_LIST_BASE_NAME);
            AssetDatabase.SaveAssets();
            return(asset);
        }

        Debug.Log("There is already a " + AKAGF_PATHS.NEW_QUESTS_LIST_BASE_NAME + ", change the name first, then create another one.");
        return(null);
    }
示例#9
0
        protected override void PrepareQuest(QuestsList prerequisites, RequirementsList requirements)
        {
            requirements
            .Add(RequirementHaveTechNode.Require <TechNodeClothArmor>())
            // suggest cloth hat but require any head item
            .Add(RequirementHaveItemEquipped.Require <IProtoItemEquipmentHead>(
                     string.Format(RequirementHaveItemEquipped.DescriptionFormat,
                                   Api.GetProtoEntity <ItemClothHat>().Name)))
            // suggest cloth shirt but require any chest item
            .Add(RequirementHaveItemEquipped.Require <IProtoItemEquipmentChest>(
                     string.Format(RequirementHaveItemEquipped.DescriptionFormat,
                                   Api.GetProtoEntity <ItemClothShirt>().Name)))
            // suggest cloth pants but require any legs item
            .Add(RequirementHaveItemEquipped.Require <IProtoItemEquipmentLegs>(
                     string.Format(RequirementHaveItemEquipped.DescriptionFormat,
                                   Api.GetProtoEntity <ItemClothPants>().Name)));

            prerequisites
            .Add <QuestUnlockAndBuildWorkbench>();
        }
示例#10
0
        protected override void PrepareQuest(QuestsList prerequisites, TasksList tasks, HintsList hints)
        {
            tasks
            .Add(TaskHaveItemEquipped.Require <ItemHelmetRespirator>())
            .Add(TaskVisitTile.Require <TileRuins>())
            .Add(TaskGather.Require(new IProtoObjectGatherable[]
            {
                Api.GetProtoEntity <ObjectLootCrateFood>(),
                Api.GetProtoEntity <ObjectLootCrateHightech>(),
                Api.GetProtoEntity <ObjectLootCrateIndustrial>(),
                Api.GetProtoEntity <ObjectLootCrateMedical>(),
                Api.GetProtoEntity <ObjectLootCrateMilitary>(),
                Api.GetProtoEntity <ObjectLootCrateSupply>()
            },
                                    count: 5,
                                    TaskGatherLoot));

            prerequisites
            .Add <QuestCompleteTier1Technologies>();
        }
        protected override void PrepareQuest(QuestsList prerequisites, TasksList tasks, HintsList hints)
        {
            var protoItemClothHelmet = Api.GetProtoEntity <ItemClothHelmet>();
            var protoItemClothArmor  = Api.GetProtoEntity <ItemClothArmor>();

            tasks
            .Add(TaskHaveTechNode.Require <TechNodeClothArmor>())
            // suggest cloth hat but require any head item
            .Add(TaskHaveItemEquipped.Require <IProtoItemEquipmentHead>(
                     string.Format(TaskHaveItemEquipped.DescriptionFormat,
                                   protoItemClothHelmet.Name))
                 .WithIcon(protoItemClothHelmet.Icon))
            // suggest cloth armor but require any armor item
            .Add(TaskHaveItemEquipped.Require <IProtoItemEquipmentArmor>(
                     string.Format(TaskHaveItemEquipped.DescriptionFormat,
                                   protoItemClothArmor.Name))
                 .WithIcon(protoItemClothArmor.Icon));

            prerequisites
            .Add <QuestUnlockAndBuildWorkbench>();
        }
        protected override void PrepareQuest(QuestsList prerequisites, TasksList tasks, HintsList hints)
        {
            var protoItemOilLamp           = GetProtoEntity <ItemOilLamp>();
            var protoItemBraidedHelmetLamp = GetProtoEntity <ItemBraidedHelmetLamp>();

            tasks
            .Add(TaskHaveTechNode.Require <TechNodeFloorLampOil>())
            .Add(TaskHaveTechNode.Require <TechNodeOilLamp>())
            .Add(TaskBuildStructure.Require <ObjectLightFloorLampOil>())
            .Add(TaskUseItem.Require(new IProtoItem[]
            {
                protoItemOilLamp,
                protoItemBraidedHelmetLamp
            },
                                     count: 1,
                                     description: string.Format(TaskUseItem.DescriptionFormat,
                                                                protoItemOilLamp.Name)))
            .Add(TaskHaveItem.Require <ItemCampFuel>(count: 1, isReversible: false));

            prerequisites
            .Add <QuestBuildEvaporativeFridge>();
        }
示例#13
0
        protected override void PrepareQuest(QuestsList prerequisites, TasksList tasks, HintsList hints)
        {
            tasks
            .Add(TaskSortItemsContainer.Require)
            .Add(TaskRun.Require)
            .Add(TaskCompleteCompletionistAnyEntry.Require);

            prerequisites
            .Add <QuestUnlockAndBuildWorkbench>();

            hints
            .Add(() =>
            {
                var keyForButton = ClientInputManager.GetMappingForAbstractButton(
                    WrappedButton <GameButton> .GetWrappedButton(GameButton.ContainerSort));
                return(string.Format(HintSortInventory,
                                     InputKeyNameHelper.GetKeyText(keyForButton.PrimaryKey),
                                     InputKeyNameHelper.GetKeyText(keyForButton.SecondaryKey)));
            })
            .Add(HintSprint)
            .Add(HintCompletionist);
        }
        protected override void PrepareQuest(QuestsList prerequisites, TasksList tasks, HintsList hints)
        {
            tasks
            .Add(TaskHaveTechNode.Require <TechNodeBasicBuilding>())
            .Add(TaskHaveTechNode.Require <TechNodeWoodDoor>())
            .Add(TaskBuildStructure.Require <ObjectWallWood>())
            .Add(TaskBuildStructure.Require <ObjectDoorWood>());

            prerequisites
            .Add <QuestBuildAPermanentBase>();

            hints
            .Add(() =>
            {
                var keyForButton =
                    InputKeyNameHelper.GetKeyText(
                        ClientInputManager.GetKeyForButton(GameButton.TechnologiesMenu));
                return(string.Format(HintTechMenu, keyForButton));
            })
            .Add(HintTechUnlock)
            .Add(HintLPGain);
        }
        protected override void PrepareQuest(QuestsList prerequisites, TasksList tasks, HintsList hints)
        {
            var headEquipmentExceptCloth = Api.FindProtoEntities <IProtoItemEquipmentHead>()
                                           .Where(i => !(i is ItemClothHelmet))
                                           .ToList();

            var chestEquipmentExceptCloth = Api.FindProtoEntities <IProtoItemEquipmentArmor>()
                                            .Where(i => !(i is ItemClothArmor))
                                            .ToList();

            tasks
            .Add(TaskBuildStructure.Require <ObjectArmorerWorkbench>())
            // suggest wood helmet but require any head item except the cloth one
            .Add(TaskHaveItemEquipped.Require(
                     headEquipmentExceptCloth,
                     EquipAnyHelmet))
            // suggest wood armor but require any armor item except the cloth one
            .Add(TaskHaveItemEquipped.Require(
                     chestEquipmentExceptCloth,
                     EquipAnyArmor));

            prerequisites
            .Add <QuestExploreBiomes1>();
        }
示例#16
0
 protected abstract void PrepareQuest(QuestsList prerequisites, TasksList tasks, HintsList hints);
示例#17
0
 protected abstract void PrepareQuest(QuestsList prerequisites, RequirementsList requirements);