Navigation

    TripleA Logo

    TripleA Forum

    • Register
    • Login
    • Search
    • TripleA Website
    • Categories
    • Recent
    • Popular
    • Users
    • Groups
    • Tags

    Problem with foreach

    Map Making
    2
    4
    108
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • RogerCooper
      RogerCooper last edited by

      I am receiving the error

      GameParseException: Attachment has invalid variables in foreach: $NeutralArea$

      Does anyone see an error?

      <variableList>
      <variable name="MajorPower">
       <element name="Britain"/>
       <element name="Soviet_Union"/>
       <element name="United_States"/>
       <element name="Western_Europe"/>
      </variable>
      <variable name="NewUnit">
      <element name="aaGun1"/>
      <element name="APC"/>
      <element name="bomber_lr"/>
      <element name="fighter_jp"/>
      <element name="fighter_lr"/>
      <element name="fission_bomb"/>
      <element name="fusion_bomb"/>
      <element name="heavy_armor"/>
      <element name="heavy_transport"/>
      <element name="marine"/>
      <element name="nuclear_carrier"/>
      <element name="radar_cruiser"/>
      <element name="self-propelled_artillery"/>
      <element name="special_forces"/>
      <element name="submarine1"/>
      <element name="submarine2"/>
      <element name="submarine3"/>
      </variable>
      <variable name="NeutralArea">
      <element name="Afghanistan"/>
      <element name="Borneo/Celebes"/>
      <element name="Ethiopia"/>
      <element name="Finland"/>
      <element name="Iran"/>
      <element name="Ireland"/>
      <element name="Java"/>
      <element name="Rio de Oro"/>
      <element name="Spain"/>
      <element name="Sumatra"/>
      <element name="Sweden"/>
      <element name="Switzerland"/>
      <element name="Thailand"/>
      <element name="Tibet"/>
      </variable>
      </variableList>
       <!--
      <attachment name="conditionAttachmentIrelandNon_Aligned" attachTo="Non_Aligned" javaClass="games.strategy.triplea.attachments.RulesAttachment" type="player">
            <option name="directOwnershipTerritories" value="Ireland" count="1"/>
      </attachment>
      -->
      <attachment foreach="$NeutralArea$" name="conditionAttachment@NeutralArea@Non_Aligned" attachTo="Non_Aligned" javaClass="games.strategy.triplea.attachments.RulesAttachment" type="player">
            <option name="directOwnershipTerritories" value="@NeutralArea@" count="1"/>
      </attachment>
      
      Note that commented out code works.
      
      W 1 Reply Last reply Reply Quote 1
      • W
        wc_sumpton @RogerCooper last edited by

        @rogercooper

        variableList section is within attachmentList section. variableList needs its own section like resourceList, playerList, unitList.
        Most xml's have variableList section at the top prior to the map section.

        Cheers...

        RogerCooper 1 Reply Last reply Reply Quote 3
        • RogerCooper
          RogerCooper @wc_sumpton last edited by

          @wc_sumpton said in Problem with foreach:

          @rogercooper

          variableList section is within attachmentList section. variableList needs its own section like resourceList, playerList, unitList.
          Most xml's have variableList section at the top prior to the map section.

          Cheers...

          Thank you for your help. That fixed it.

          RogerCooper 1 Reply Last reply Reply Quote 0
          • RogerCooper
            RogerCooper @RogerCooper last edited by RogerCooper

            @rogercooper I want to post my complete solution as it has some tricks people might want to use. I was surprised that you can use both a cartesian join "^" and a standard join ":" in the same foreach structure.

            Another neat trick is that you can use Export/Export game.xml file to resolve all the for eaches. Useful if you want to check that the result is correct or if you need to customize some entries.

            <variableList>
            <variable name="MajorPower">
             <element name="Britain"/>
             <element name="Soviet_Union"/>
             <element name="United_States"/>
             <element name="Western_Europe"/>
            </variable>
            <variable name="NeutralArea">
            <element name="Afghanistan"/>
            <element name="Borneo/Celebes"/>
            <element name="Ethiopia"/>
            <element name="Finland"/>
            <element name="Iran"/>
            <element name="Ireland"/>
            <element name="Java"/>
            <element name="Rio de Oro"/>
            <element name="Spain"/>
            <element name="Sumatra"/>
            <element name="Sweden"/>
            <element name="Switzerland"/>
            <element name="Thailand"/>
            <element name="Tibet"/>
            </variable>
            <variable name="NeutralSetup">
            <element name="infantry"/>
            <element name="infantry"/>
            <element name="infantry:infantry"/>
            <element name="infantry:infantry:infantry"/>
            <element name="infantry:armor:fighter"/>
            <element name="infantry"/>
            <element name="infantry"/>
            <element name="infantry"/>
            <element name="infantry:infantry:infantry:infantry:armor:fighter"/>
            <element name="infantry"/>
            <element name="infantry:infantry:infantry:armor:fighter"/>
            <element name="infantry:infantry:infantry:fighter"/>
            <element name="infantry:infantry"/>
            <element name="infantry:infantry"/>
            </variable>
            </variableList>
            
            

            and

            <attachment name="conditionAttachmentEveryTurn" attachTo="United_States" javaClass="games.strategy.triplea.attachments.RulesAttachment" type="player">
            <option name="rounds" value="1-100"/>
            </attachment>
            
            <attachment foreach="$NeutralArea$" name="conditionAttachment@NeutralArea@Non_Aligned" attachTo="Non_Aligned" javaClass="games.strategy.triplea.attachments.RulesAttachment" type="player">
                  <option name="directOwnershipTerritories" value="@NeutralArea@" count="1"/>
            </attachment>
            
            <attachment foreach="$NeutralArea$" name="triggerAttachment@NeutralArea@RemoveUnits" attachTo="Non_Aligned" javaClass="games.strategy.triplea.attachments.TriggerAttachment" type="player">
            <option name="players" value="Non_Aligned"/>
            <option name="uses" value="1"/>
            <option name="removeUnits" value="@NeutralArea@:All" count="5"/>
            </attachment>
            <attachment foreach="$MajorPower$^$NeutralArea$:$NeutralSetup$" name="triggerAttachment@MajorPower@@NeutralArea@" attachTo="@MajorPower@" javaClass="games.strategy.triplea.attachments.TriggerAttachment" type="player">
            <option name="conditions" value="conditionAttachmentEveryTurn"/>
            <option name="conditions" value="conditionAttachment@NeutralArea@Non_Aligned"/>
            <option name="players" value="@MajorPower@"/>
            <option name="chance" value="1:80"/>
            <option name="chanceIncrementOnFailure" value="1"/>
            <option name="when" value="before:@MajorPower@Purchase"/>
            <option name="placement" value="@NeutralArea@:@NeutralSetup@" />
            <option name="changeOwnership" value="@NeutralArea@:Non_Aligned:@MajorPower@:false"/>
            <option name="activateTrigger" value="triggerAttachment@NeutralArea@RemoveUnits:1:false:false:false:false"/>
            <option name="uses" value="1"/>
            </attachment>
            
            
            1 Reply Last reply Reply Quote 2
            • 1 / 1
            • First post
              Last post
            Copyright © 2016-2018 TripleA-Devs | Powered by NodeBB Forums