1. We have added a Gift Upgrades feature that allows you to gift an account upgrade to another member, just in time for the holiday season. You can see the gift option when going to the Account Upgrades screen, or on any user profile screen.
    Dismiss Notice

Buildings Require Local Resources Utility

Discussion in 'Civ6 - Utilities, Code Snippets & Art Assets' started by LeeS, Jan 5, 2017.

  1. UncivilizedGuy

    UncivilizedGuy Civ is brain candy.

    Joined:
    May 24, 2012
    Messages:
    760
    Location:
    City State of Los Angeles
    LeeS, I'm experiencing a bug. Dummy buildings are appearing when the prerequisites have not been met. I have made no alterations to your code. Followed your instructions exactly. The only other mod that I have activated is MOAR units. Here are three examples of the problem:

    1. I created multiple dummy buildings that require resources and a base game building.
    The Market requires one of these dummy buildings to be be built.
    I meet the requirements for one of the dummy buildings like the Bakery which requires Wheat or Rice and the Granary. The Market unlocks and I begin building the building.
    Then about two turns later all of the other Market prereq dummy buildings appear in the city even though their prereqs don't exist.
    This was happening consistently. I had to remove the Market prereqs.

    2. The Field Cannon requires the dummy building called the Siege Factory or the Palace.
    The Siege Factory requires a Blacksmith(dummy) or Bronzesmith(dummy) and Niter.
    The Blacksmith builds if Iron is improved and the Bronzesmith builds Copper is improved.
    In this situation the only prereq that existed was the Palace and improved Niter. I had no Copper or Iron.
    I begin constructing the Field Cannon when the Siege Factory suddenly appears with no explanation.

    3. Sometimes the dummy buildings randomly appear in cities when the prereqs don't exist. Then one or two turns later they disappear. This happens frequently.
    One example: I settled a new city and a dummy building (Goldsmith) appeared immediately. The prereq building (Theater) wasn't constructed and no resources (Diamonds, Copper, Silver) were improved. The required resources didn't even exist around the city. I checked the city two turns later and the dummy building disappeared from the city list.
     
  2. LeeS

    LeeS Imperator

    Joined:
    Jul 23, 2013
    Messages:
    5,733
    Location:
    Illinois, USA
  3. UncivilizedGuy

    UncivilizedGuy Civ is brain candy.

    Joined:
    May 24, 2012
    Messages:
    760
    Location:
    City State of Los Angeles
    LeeS, Here is my mod. If you have a moment I'd appreciate it if you can look at it. Hopefully it's something simple I overlooked. Thanks
     

    Attached Files:

  4. LeeS

    LeeS Imperator

    Joined:
    Jul 23, 2013
    Messages:
    5,733
    Location:
    Illinois, USA
    Hmmm. You're trying to use the utility in a way I never even remotely considered.

    From OP:

    Creating a Dummy and Real Building Where The Dummy Will Act As a Prereq For the Real Building:
    • Item #3-2 : If for example you want the real building (such as the BUILDING_STONEWORKS) to also require another real building already exist in the city (such as the BUILDING_WORKSHOP), the utility has a built-in method to accomplish this, which will be discussed later. In all cases, however, the dummy building must be the one and only prerequisite listed in the <BuildingPrereqs> table.

    You can have multiple different "normal" buildings listed as PreReqs for a Dummy under table <DummyUnlocker_RequiresBuildingPreReqORS> and you can have multiple resources listed for the same dummy building under tables <DummyUnlocker_LocalResources> and <DummyUnlocker_ImprovedLocalResources>, but there must be a 1-to-1 correspondance between a "normal" building and its unlocker in table <BuildingPrereqs>. This constraint also applies when the "real" building is another dummy, but as noted below the code is not even remotely written to handle this sort of thing.
    • one dummy building can act as the prerequisite for multiple "real" buildings, but no "real" building should ever have more than one dummy as its unlocker.
    • one dummy building can act as the prerequisite for multiple units
    Also the code is not written to deal with one dummy acting as an unlocker to another dummy in a string-of-unlocks set-up as you are attempting. If the building is listed in tables <DummyUnlocker_LocalResources> and <DummyUnlocker_ImprovedLocalResources>, the code attempts to place the building based on the presence of the resources stated and upon whether or not the required improvement is present in the case of <DummyUnlocker_ImprovedLocalResources>. So if the code processes the prereq building (1st dummy) in this setup after the dummy which is being unlocked by the prereq (2nd dummy), then you will likely get cases of the 2nd dummy first being added, and then later on being removed, depending on what causes the code to rerun for a given city.

    Table <DummyUnlocker_RequiresBuildingPreReqORS> is coded under the assumption that anything listed as a BuildingType is a dummy that will unblock a real building or a unit, and that anything listed as a PrereqBuilding is a normal (or "real") building the player selects as a construction project in their cities.

    You can use the dummies as you are to give an instant yield-effect in the city if the resource is present, but for purposes of a dummy unlocking buildings you must have one "real" building using one "dummy" building as its prerequisite, and you cannot have two dummy buildings linked to each other in the <BuildingPrereqs> table.
     
  5. UncivilizedGuy

    UncivilizedGuy Civ is brain candy.

    Joined:
    May 24, 2012
    Messages:
    760
    Location:
    City State of Los Angeles
    Thanks for clearing things up. Makes sense. Thanks again for taking a look. I tend to think big when I start building a mod then reality always kicks me the face:wallbash:. Some day I will learn Lua so that I can make mods that match my imagination.;)
     
  6. UncivilizedGuy

    UncivilizedGuy Civ is brain candy.

    Joined:
    May 24, 2012
    Messages:
    760
    Location:
    City State of Los Angeles
    FYI, Here is a status of what I have done. I made the proper corrections so that the real buildings require only one dummy building. I also created 4 generations (Classical, Renaissance, Industrial, Atomic) of industry related buildings and evenly distrubuted resource requirements amongst each generation.

    A bug continues to occur though. I have 3rd and 4th generation dummy buildings that are improperly building without the correct prerequisites. Both of the buildings have in common the resource prerequisites Cattle, Horses, and Sheep. The buildings are constructing over and over in other civs. I know this because I get the notifications every turn. These two dummy buildings require later era buildings but are appearing early in the game.
     
  7. LeeS

    LeeS Imperator

    Joined:
    Jul 23, 2013
    Messages:
    5,733
    Location:
    Illinois, USA
    Try using PrereqTech="TECH_FUTURE_TECH" in the definitions of all dummy buildings instead of MustPurchase="true". I've gone to using that as part of the newer better Buildings Are Fun system and this seems to work more effectively to keep the AI from trying to construct dummy buildings.

    MustPurchase="true" without providing a PurchaseYield designation does not in and of itself appear to work in all cases to keep the AI from attempting to construct a dummy building.

    Are you linking one dummy building to another dummy building in this table?
    Code:
    CREATE TABLE IF NOT EXISTS 
        DummyUnlocker_RequiresBuildingPreReqORS (
        BuildingType	text		REFERENCES Buildings(BuildingType)		default null,
        PrereqBuilding	text		REFERENCES Buildings(BuildingType)		default null,
        CustomModId		text);
    The lua code is written under the presumption that the building stated as PrereqBuilding is a "real" building that a player constructs or purchases in the normal way in thier cities, and that the building stated as BuildingType is a dummy that the code will place into the city when conditions are correct.

    Also bear in mind that the lua code pays no actual attention to anything stated as a PrereqTech or PrereqCivic for any building listed as a BuildingType in tables DummyUnlocker_LocalResources, DummyUnlocker_ImprovedLocalResources, and DummyUnlocker_RequiresBuildingPreReqORS but does presume these are dummy buildings that are acting as unlocker Prereqs for some other thing (unit or building).
     
  8. UncivilizedGuy

    UncivilizedGuy Civ is brain candy.

    Joined:
    May 24, 2012
    Messages:
    760
    Location:
    City State of Los Angeles
    I reorganized my mod so that dummy buildings only require a real building and some resources. There is no linking between dummy buildings. I did discover that prereqtech and prereqcivic have no impact. I placed the dummy buildings in the same techs as there prereq buildings for aesthetics. I will give PrereqTech="TECH_FUTURE_TECH" a try. Thanks again.
     
  9. Infixo

    Infixo Warlord

    Joined:
    Jan 9, 2016
    Messages:
    2,285
    Gender:
    Male
    Location:
    Warsaw
    Don't know if you've already found out but there's Plot:IsImprovementPillaged() available. And if you want to actually pillage it, you can use ImprovementBuilder:SetImprovementPillaged(pPlot, bPillaged).
     
  10. LeeS

    LeeS Imperator

    Joined:
    Jul 23, 2013
    Messages:
    5,733
    Location:
    Illinois, USA
    In GameplayScript you get a nil function error from trying to use Plot:IsImprovementPillaged() . Or you would before the last patch. As far as I know the patch did not affect any other existing lua plot, unit, city, etc., methods, so I would guess the Plot:IsImprovementPillaged() function was not affected.

    Have you found that it now works in GameplayScripts ?
     
  11. Infixo

    Infixo Warlord

    Joined:
    Jan 9, 2016
    Messages:
    2,285
    Gender:
    Male
    Location:
    Warsaw
  12. Gedemon

    Gedemon Modder Moderator

    Joined:
    Oct 4, 2004
    Messages:
    7,931
    Location:
    France
    @LeeS have you tried ObsoleteEra="ERA_ANCIENT" instead of the future tech requirement to prevent the AI (and human) to build it ?
     
  13. LeeS

    LeeS Imperator

    Joined:
    Jul 23, 2013
    Messages:
    5,733
    Location:
    Illinois, USA
    No. But in using that column in building definitions such as these:
    Code:
    <Row BuildingType="BUILDING_LRS_AMENITY0"
    	Name="LOC_BUILDING_LRS_AMENITY0_NAME"
    	Description="LOC_BUILDING_LRS_AMENITY0_DESCRIPTION"
    	PrereqDistrict="DISTRICT_CITY_CENTER"
    	Cost="65" PurchaseYield="YIELD_GOLD"
    	Entertainment="1" AdvisorType="ADVISOR_GENERIC"
    	ObsoleteEra="ERA_CLASSICAL" />
    It appears the column is used like civ5's MaxStartEra, which if so would want to remove the building from the game.

    I'm currently putting together the instructions for a more Belts & Suspenders system of defining dummy buildings and keeping both the AI and the Human from trying to use them. It's the system I am using in LeeS' Buildings Are Fun
    • The dummy buildings portion of the instructions is as this (this may change a bit once I am ready to add a "Utilities" thread to the forum).
    • The systems in Buildings Are Fun will supercede the current utility (but everything is coded so that the two systems can work side by side and not interfere with each other for the convenience of any modders who have been using this Local Resources Only utility).
    • The descriptions of where to find the files is a little off from the contents of the current downloadable mod because I am working through simplifying the folder structures and the like within the mod to make it easier to people to find and use the piece parts of the Buildings Are Fun mode/utility within their own mods.
    Spoiler preview :
    1. General Description
      1. This Creating and Hiding Dummy Buildings system can be used whether or not you as a mod-maker need or are interested in any of the other systems within this utility
      2. The system presents a slightly different method of defining a dummy building than has previously been advocated by me (or others, I think) in terms of prerequisites techs (etc.) for a dummy building
      3. The system adds a new column to the Buildings table that is used as a boolean flag for the remainder of the system (and for the other systems of the utility) to directly identify than a specific building is in fact a dummy building
      4. A belts and suspenders approach is used to keep the AI (and the human) from selecting a dummy building as a construction project within a city.
        1. Dummy Buildings are given a PrereqTech of "TECH_FUTURE_TECH". In and of itself this keeps the AI and the Human from even being able to try to construct a dummy building for the vast majority of any single game.
        2. Dummy Buildings are given a Cost of "10000". This keeps the AI from being able to insta-build (or 1-turn build) a dummy building: this affords the other parts of the system an opportunity to detect an attempt to construct a dummy building, remove it from the AI (or human player's) city qeue, and thereby avoid a situation wherein an AI is uselessly spending time constructing a building that will likely be removed from the city next turn anyway.
        3. Dummy Buildings are not given a PurchaseYield designation
        4. As Fail-Safe measures, Dummy Buildings are given valid designations for Name and Description
        5. Dummy Buildings are always given a PrereqDistrict of "DISTRICT_CITY_CENTER"
        6. The definition of a dummy building example is thus as:
          Code:
          <GameInfo>
          	<Types>
          		<Row Type="BUILDING_STONEWORKS_LRS_UNLOCKER"
          			Kind="KIND_BUILDING" />
          	</Types>
          	<Buildings>
          		<Row BuildingType="BUILDING_STONEWORKS_LRS_UNLOCKER"
          			Name="LOC_BUILDING_STONEWORKS_LRS_UNLOCKER_NAME"
          			Description="LOC_BUILDING_STONEWORKS_LRS_UNLOCKER_DESCRIPTION"
          			PrereqDistrict="DISTRICT_CITY_CENTER" Cost="10000"
          			PrereqTech="TECH_FUTURE_TECH" IsDummy="true" />
          	</Buildings>
          </GameInfo>
        7. To keep a dummy building from showing in the civilopedia, we add to this definition:
          Code:
          <GameInfo>
          	<Types>
          		<Row Type="BUILDING_STONEWORKS_LRS_UNLOCKER"
          			Kind="KIND_BUILDING" />
          	</Types>
          	<Buildings>
          		<Row BuildingType="BUILDING_STONEWORKS_LRS_UNLOCKER"
          			Name="LOC_BUILDING_STONEWORKS_LRS_UNLOCKER_NAME"
          			Description="LOC_BUILDING_STONEWORKS_LRS_UNLOCKER_DESCRIPTION"
          			PrereqDistrict="DISTRICT_CITY_CENTER" Cost="10000"
          			PrereqTech="TECH_FUTURE_TECH" IsDummy="true" />
          	</Buildings>
          	<CivilopediaPageExcludes>
          		<Row SectionId="BUILDINGS" PageId="BUILDING_STONEWORKS_LRS_UNLOCKER"/>
          	</CivilopediaPageExcludes>
          </GameInfo>
          It is also necessary to follow-through and assign an Icon in the IconDefinitions and to give a valid setting for "LOC_BUILDING_STONEWORKS_LRS_UNLOCKER_NAME" and "LOC_BUILDING_STONEWORKS_LRS_UNLOCKER_DESCRIPTION" in the localized text.
        8. An lua file is included as part of the utility for Creating and Hiding Dummy Buildings that then keeps any building defined as IsDummy="true" from being added as a city's selected construction item.
        9. A further file is included that creates code in the game's database that tends to make the AI players not value dummy buildings as anything to construct within a city.
      5. The other files included as part of the system are all for the "hiding from human view" part of the system.
      6. All you as the mod-maker do is add and activate the pre-packaged files as instructed, and then you define your dummy buildings as shown in the example. You do not need to edit any of the pre-packaged files.
    2. Files Needed
      • Folder Designations are for the folders within the mod LeeS' Buildings Are Fun
      • You do not have to keep the folder structure I am using when you add these files to your mod. Only the activation methods to be shown are important.
      1. SQL/BuildingsTableAlter.sql
      2. SQL/AI_FavoredItems.sql
      3. All of the files within folder LUA/ReplacerFiles/
        1. CityPanelOverview.lua
        2. CitySupport.lua
        3. CivilopediaPage_Building.lua
        4. PlotToolTip.lua
        5. ProductionPanel.lua
        6. ToolTipHelper.lua
      4. LUA/UtilityImplementationScripts/KeepAIFromBuildingDummies.lua
    3. Activations Required for the Files Needed
      1. SQL/BuildingsTableAlter.sql
        1. You need to copy this file exactly as it is and make no changes to it whatsoever
        2. You need to activate it as an InGameActions action UpdateDatabase, as like this in the modinfo file
          Code:
            <InGameActions>
              <UpdateDatabase id="SQL_AlterBuildingsTable">
                <File>SQL/BuildingsTableAlter.sql</File>
              </UpdateDatabase>
            </InGameActions>
          Or as like this in Modbuddy:
          Spoiler :
        3. This file needs to be added under its own UpdateDatabase without any other file within the same action, and it needs to be listed before any other update database actions within your mod.
          • There is no way we can check from SQL whether a column already exists within a table.
          • If some other mod using this system loads into the game before your mod loads into the game, your copy of file BuildingsTableAlter.sql will be seen to have a fatal error for attempting to add a column already part of table Buildings.
          • All we can do is attempt to add the column we want, and to set-up our mods so that when the desired column has already been added by another mod, the error we will get related to our mod will not cascade and take out other portions of our code.
          • When the column has already been added by another mod, then the entire file that includes the command to add the new column to the table is considered bad code. Because of the way civ6 trreats all the files within an individual UpdateDatabase action as a single unity when one file within the action encounters a fatal error, this will also cause any other files within the same action to fail if they have not already loaded into the game successfully. By keeping only the code for altering the existing Buildings xml-table within this UpdateDatabase action we ensure that no other code needed by our mod will fail because of the duplicate attempt to add a column of the same name to the same table.
          • This is why we want file BuildingsTableAlter.sql to be activated within its own action without any other files included in the same action. If a given user has multiple mods all using this system they will get multiple errors in the database log related to trying to add a column that already exists within a game-table, but this will be the only effect. The first mod of such a group of mods that loads into the game will successfully add the column all the other mods need.
      2. SQL/AI_FavoredItems.sql
        1. this file needs to be added as-is without alterations to an UpdateDatabase -- InGameActions action. In order to work properly you need to make sure this file is loaded after all you files that define dummy buildings for your mod. I do it like this at the end of my modinfo file as one of the last actions the LeeS' Buildings Are Fun mod does:
          Code:
            <InGameActions>
              ....various snipped lines....
              <UpdateDatabase id="AIFavoredItems">
                <File>SQL/AI_FavoredItems.sql</File>
              </UpdateDatabase>
              <AddGameplayScripts id="LUA_Building_PrereqBuildingANDS">
                <File>LUA/UtilityImplementationScripts/Building_PreeReqBuildingANDS.lua</File>
              </AddGameplayScripts>
              <AddGameplayScripts id="LUA_CityNearbyTerrainImplementations">
                <File>LUA/UtilityImplementationScripts/DummyUnlockerBuildingsScript.lua</File>
              </AddGameplayScripts>
            </InGameActions>
          
          Note that the only thing listed below this file is the activation for a couple of lua files. All you file activations for other xml and sql code would come after the implementation of SQL/BuildingsTableAlter.sql and before this final "clean-up" action for SQL/AI_FavoredItems.sql.
      3. All of the files within folder LUA/ReplacerFiles/ should be set as ImportFiles under an InGameActions action, as like this within a modinfofile:
        Code:
          <InGameActions>
            <ImportFiles id="Import_LUA_Replacers">
              <File>LUA/ReplacerFiles/CityPanelOverview.lua</File>
              <File>LUA/ReplacerFiles/CitySupport.lua</File>
              <File>LUA/ReplacerFiles/CivilopediaPage_Building.lua</File>
              <File>LUA/ReplacerFiles/PlotToolTip.lua</File>
              <File>LUA/ReplacerFiles/ProductionPanel.lua</File>
              <File>LUA/ReplacerFiles/ToolTipHelper.lua</File>
            </ImportFiles>
          </InGameActions>
        And as like this in ModBuddy:
        Spoiler :
        • some or all of these files might also be re-written by any of the "better UI mods" that are currently popular, or your mod might over-write the files for these mods.
        • if the other "better UI mod(s)" over-write these files the worse thing that will happen is that the dummy buildings will no longer be hidden from view to the human player. There will not be an actual in-game effect from this.
        • if these versions of these files over-write the same files used be one of the "better UI mods" that are currently popular, then the user won't get the nifty new user interfaces they are used to, they will get the standard ones the game uses with the differences I have added to hide the dummy buildings. (hilarious (?) claims of broken mods may ensue, but again no other real effect should occur).
      4. LUA/UtilityImplementationScripts/KeepAIFromBuildingDummies.lua
        1. this file needs to be added as-is without alterations to an AddGameplayScripts -- InGameActions action, like this in a modinfo file:
          Code:
            <InGameActions>
              <AddGameplayScripts id="LUA_Gameplay_AI_CannotBuildDummies">
                <File>LUA/UtilityImplementationScripts/KeepAIFromBuildingDummies.lua</File>
              </AddGameplayScripts>
              ....other stuff.....
            </InGameActions>
          Or as like this in Modbuddy:
          Spoiler :

          • sorry that the file-name is a little hard to see in the files list of the action because of the length of the folder-path. I am not sure if there's anything you can do to make the box show bigger in modbuddy.
        2. note that this is actually the 1st action of the mod. This is to try to make the lua code within this file execute before any other code using the same lua "game event".
        3. It does not matter that the lua code is listed before any of the sql/xml code within the mod. Changes and additions from sql or xml files are added to the game's database before any "in-game" lua script actually executes, whether the lua script is for user interface or is for a direct gameplay effect script.
    4. New Game-Tables Used By the Sub-System
      1. None. It merely adds a column to the existing Buildings table.
    5. File Edits Needed to "Hook" Your Mod Into the Sub-System
      1. You do not need to edit any of the files mentioned under Files Needed
      2. You just need to add a file (or files) that define your dummy buildings. If using some or all of the other parts of this utility, you should use the example given as a template for defining the dummy building, and then follow the instructions within each of the other sub-systems for making a given dummy building work within one of the other sub-systems.
    6. %%%%%%%%%%%%%%%%%%%___________stuff
    7. %%%%%%%%%%%%%%%%%%%___________stuff
    8. %%%%%%%%%%%%%%%%%%%___________stuff
    Return to the Utility Sub-Systems Menu
     
  14. UncivilizedGuy

    UncivilizedGuy Civ is brain candy.

    Joined:
    May 24, 2012
    Messages:
    760
    Location:
    City State of Los Angeles
    @LeeS Well Mr. LeeS I remember having this discussion with you last year. I finally found a way to have Resources as a prerequisite for Buildings without the use of dummy buildings using just a modifier. I have a feeling this modifier didn't exist when we first began this discussion. I'm sure we would have noticed it.
    Basically the free building appears when all of the requirements are met. This works with the BuildingModifiers and DistrictModifiers tables. The building is set to Must Purchase=true with a very high building cost to prevent anyone from purchasing or building it. Here is an example:

    Spoiler :

    <GameInfo>
    <Types>
    <Row Type="BUILDING_SMITHING_INDUSTRY" Kind="KIND_BUILDING" />
    </Types>

    <Buildings>
    <Row BuildingType="BUILDING_SMITHING_INDUSTRY" Name="Smithing Industry"
    PrereqTech="TECH_IRON_WORKING" PrereqDistrict="DISTRICT_CITY_CENTER" PurchaseYield="YIELD_GOLD" Cost="5000" MustPurchase="1"
    AdvisorType="ADVISOR_GENERIC" CitizenSlots="1" />
    </Buildings>

    <BuildingModifiers>
    <Row>
    <BuildingType>BUILDING_MARKET</BuildingType>
    <ModifierId>BUILDING_BUILD_SMITHING_INDUSTRY</ModifierId>
    </Row>
    </BuildingModifiers>

    <Modifiers>
    <Row>
    <ModifierId>BUILDING_BUILD_SMITHING_INDUSTRY</ModifierId>
    <ModifierType>MODIFIER_SINGLE_CITY_GRANT_BUILDING_IN_CITY</ModifierType> <SubjectRequirementSetId>REQUIREMENT_PLAYER_HAS_SMITHING_REQ</SubjectRequirementSetId>
    <RunOnce>true</RunOnce>
    </Row>
    </Modifiers>

    <ModifierArguments>
    <Row>
    <ModifierId>BUILDING_BUILD_SMITHING_INDUSTRY</ModifierId>
    <Name>BuildingType</Name>
    <Value>BUILDING_SMITHING_INDUSTRY</Value>
    </Row>
    <Row>
    <ModifierId>BUILDING_BUILD_SMITHING_INDUSTRY</ModifierId>
    <Name>Amount</Name>
    <Value>1</Value>
    </Row>
    </ModifierArguments>

    <RequirementSets>
    <Row>
    <RequirementSetId>REQUIREMENT_PLAYER_HAS_SMITHING_REQ</RequirementSetId>
    <RequirementSetType>REQUIREMENTSET_TEST_ALL</RequirementSetType>
    </Row>
    <Replace>
    <RequirementSetId>REQUIREMENT_PLAYER_HAS_COPPER</RequirementSetId>
    <RequirementSetType>REQUIREMENTSET_TEST_ANY</RequirementSetType>
    </Replace>
    <Replace>
    <RequirementSetId>REQUIREMENT_PLAYER_HAS_IRON</RequirementSetId>
    <RequirementSetType>REQUIREMENTSET_TEST_ANY</RequirementSetType>
    </Replace>
    </RequirementSets>

    <RequirementSetRequirements>
    <Row>
    <RequirementSetId>REQUIREMENT_PLAYER_HAS_SMITHING_REQ</RequirementSetId>
    <RequirementId>GI_REQUIRES_OWNED_IRON</RequirementId>
    </Row>
    <Row>
    <RequirementSetId>REQUIREMENT_PLAYER_HAS_SMITHING_REQ</RequirementSetId>
    <RequirementId>GI_REQUIRES_OWNED_COPPER</RequirementId>
    </Row>
    <Row>
    <RequirementSetId>REQUIREMENT_PLAYER_HAS_SMITHING_REQ</RequirementSetId>
    <RequirementId>GI_REQUIRES_OWNED_IRON_WORKING</RequirementId>
    </Row>
    <Replace>
    <RequirementSetId>REQUIREMENT_PLAYER_HAS_COPPER</RequirementSetId>
    <RequirementId>GI_REQUIRES_OWNED_COPPER</RequirementId>
    </Replace>
    <Replace>
    <RequirementSetId>REQUIREMENT_PLAYER_HAS_IRON</RequirementSetId>
    <RequirementId>GI_REQUIRES_OWNED_IRON</RequirementId>
    </Replace>
    </RequirementSetRequirements>

    <Requirements>

    <Row>
    <RequirementId>GI_REQUIRES_OWNED_IRON_WORKING</RequirementId>
    <RequirementType>REQUIREMENT_PLAYER_HAS_TECHNOLOGY</RequirementType>
    </Row>
    <Replace>
    <RequirementId>GI_REQUIRES_OWNED_COPPER</RequirementId>
    <RequirementType>REQUIREMENT_PLAYER_HAS_RESOURCE_OWNED</RequirementType>
    </Replace>
    <Replace>
    <RequirementId>GI_REQUIRES_OWNED_IRON</RequirementId>
    <RequirementType>REQUIREMENT_PLAYER_HAS_RESOURCE_OWNED</RequirementType>
    </Replace>
    </Requirements>

    <RequirementArguments>

    <Row>
    <RequirementId>GI_REQUIRES_OWNED_IRON_WORKING</RequirementId>
    <Name>TechnologyType</Name>
    <Value>TECH_IRON_WORKING</Value>
    </Row>
    <Replace>
    <RequirementId>GI_REQUIRES_OWNED_COPPER</RequirementId>
    <Name>ResourceType</Name>
    <Value>RESOURCE_COPPER</Value>
    </Replace>
    <Replace>
    <RequirementId>GI_REQUIRES_OWNED_IRON</RequirementId>
    <Name>ResourceType</Name>
    <Value>RESOURCE_IRON</Value>
    </Replace>
    </RequirementArguments>

    </GameInfo>
     
    Last edited: Jul 4, 2018

Share This Page