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); }
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)); }); }
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)); }
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>(); }
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>(); }
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); }
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>(); }
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>(); }
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>(); }
protected abstract void PrepareQuest(QuestsList prerequisites, TasksList tasks, HintsList hints);
protected abstract void PrepareQuest(QuestsList prerequisites, RequirementsList requirements);