TripleA Logo TripleA Forum
    • TripleA Website
    • Categories
    • Recent
    • Popular
    • Users
    • Groups
    • Tags
    • Register
    • Login

    Allow unit property “givesMovement” to use variable lists

    Scheduled Pinned Locked Moved Feature Requests & Ideas
    15 Posts 3 Posters 3.4k Views 3 Watching
    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.
    • redrumR Offline
      redrum Admin @Cernel
      last edited by redrum

      @Cernel You need multiple options for options like givesMovement because often you have something like an airBase giving different bonus movement to different types of air units (this is what TWW does currently). So with the update, TWW would still need to have multiple givesMovement just less than it does now. You would need to allow further chaining of multiple movement amounts then list of units in a single line otherwise.

              <attachment name="unitAttachment" attachTo="germanAirfield" javaClass="UnitAttachment" type="unitType">
                  <option name="isInfrastructure" value="true"/>
                  <option name="movement" value="0"/>
                  <option name="attack" value="0"/>
                  <option name="defense" value="0"/>
                  <option name="canBeDamaged" value="true"/>
                  <option name="maxDamage" value="8"/>
                  <option name="maxOperationalDamage" value="5"/>
                  <option name="canDieFromReachingMaxDamage" value="true"/>
                  <option name="isAirBase" value="true"/>
                  <option name="isConstruction" value="true"/>
                  <option name="constructionType" value="Airfield"/>
                  <option name="constructionsPerTerrPerTypePerTurn" value="3"/>
                  <option name="maxScrambleCount" value="2"/>
                  <option name="maxConstructionsPerTypePerTerr" value="3"/>
                  <option name="givesMovement" value="2:germanFighter:germanNavalFighter"/>
                  <option name="givesMovement" value="4:germanAdvancedFighter"/>
                  <!-- <option name="givesMovement" value="2:germanNavalFighter"/> -->
                  <option name="givesMovement" value="4:germanAdvancedNavalFighter"/>
                  <option name="givesMovement" value="3:germanTacticalBomber"/>
                  <option name="givesMovement" value="5:germanAdvancedTacticalBomber"/>
                  <option name="givesMovement" value="4:germanStrategicBomber"/>
                  <option name="givesMovement" value="6:germanHeavyStrategicBomber"/>
                  <option name="givesMovement" value="3:germanAirTransport"/>
                  <option name="givesMovement" value="2:germanRocket"/>
                  <option name="givesMovement" value="4:germanAdvancedRocket"/>
                  <option name="givesMovement" value="2:italianFighter"/>
                  <option name="givesMovement" value="4:italianAdvancedFighter"/>
                  <option name="givesMovement" value="2:italianNavalFighter"/>
                  <option name="givesMovement" value="4:italianAdvancedNavalFighter"/>
                  <option name="givesMovement" value="3:italianTacticalBomber"/>
                  <option name="givesMovement" value="5:italianAdvancedTacticalBomber"/>
                  <option name="givesMovement" value="4:italianStrategicBomber"/>
                  <option name="givesMovement" value="6:italianHeavyStrategicBomber"/>
                  <option name="givesMovement" value="3:italianAirTransport"/>
                  <option name="givesMovement" value="2:italianRocket"/>
                  <option name="givesMovement" value="4:italianAdvancedRocket"/>
                  <option name="givesMovement" value="2:japaneseFighter"/>
                  <option name="givesMovement" value="4:japaneseAdvancedFighter"/>
                  <option name="givesMovement" value="2:japaneseNavalFighter"/>
                  <option name="givesMovement" value="4:japaneseAdvancedNavalFighter"/>
                  <option name="givesMovement" value="3:japaneseTacticalBomber"/>
                  <option name="givesMovement" value="5:japaneseAdvancedTacticalBomber"/>
                  <option name="givesMovement" value="4:japaneseStrategicBomber"/>
                  <option name="givesMovement" value="6:japaneseHeavyStrategicBomber"/>
                  <option name="givesMovement" value="3:japaneseAirTransport"/>
                  <option name="givesMovement" value="2:japaneseRocket"/>
                  <option name="givesMovement" value="4:japaneseAdvancedRocket"/>
                  <option name="givesMovement" value="2:russianFighter"/>
                  <option name="givesMovement" value="4:russianAdvancedFighter"/>
                  <option name="givesMovement" value="2:russianNavalFighter"/>
                  <option name="givesMovement" value="4:russianAdvancedNavalFighter"/>
                  <option name="givesMovement" value="3:russianTacticalBomber"/>
                  <option name="givesMovement" value="5:russianAdvancedTacticalBomber"/>
                  <option name="givesMovement" value="4:russianStrategicBomber"/>
                  <option name="givesMovement" value="6:russianHeavyStrategicBomber"/>
                  <option name="givesMovement" value="3:russianAirTransport"/>
                  <option name="givesMovement" value="2:russianRocket"/>
                  <option name="givesMovement" value="4:russianAdvancedRocket"/>
                  <option name="givesMovement" value="2:britishFighter"/>
                  <option name="givesMovement" value="4:britishAdvancedFighter"/>
                  <option name="givesMovement" value="2:britishNavalFighter"/>
                  <option name="givesMovement" value="4:britishAdvancedNavalFighter"/>
                  <option name="givesMovement" value="3:britishTacticalBomber"/>
                  <option name="givesMovement" value="5:britishAdvancedTacticalBomber"/>
                  <option name="givesMovement" value="4:britishStrategicBomber"/>
                  <option name="givesMovement" value="6:britishHeavyStrategicBomber"/>
                  <option name="givesMovement" value="3:britishAirTransport"/>
                  <option name="givesMovement" value="2:britishRocket"/>
                  <option name="givesMovement" value="4:britishAdvancedRocket"/>
                  <option name="givesMovement" value="2:americanFighter"/>
                  <option name="givesMovement" value="4:americanAdvancedFighter"/>
                  <option name="givesMovement" value="2:americanNavalFighter"/>
                  <option name="givesMovement" value="4:americanAdvancedNavalFighter"/>
                  <option name="givesMovement" value="3:americanTacticalBomber"/>
                  <option name="givesMovement" value="5:americanAdvancedTacticalBomber"/>
                  <option name="givesMovement" value="4:americanStrategicBomber"/>
                  <option name="givesMovement" value="6:americanHeavyStrategicBomber"/>
                  <option name="givesMovement" value="3:americanAirTransport"/>
                  <option name="givesMovement" value="2:americanRocket"/>
                  <option name="givesMovement" value="4:americanAdvancedRocket"/>
                  <option name="givesMovement" value="2:chineseFighter"/>
                  <option name="givesMovement" value="3:chineseTacticalBomber"/>
                  <option name="givesMovement" value="2:brazilianFighter"/>
                  <option name="givesMovement" value="2:spanishFighter"/>
                  <option name="givesMovement" value="2:swedishFighter"/>
                  <option name="givesMovement" value="2:turkishFighter"/>
                  <option name="requiresUnits" value="germanCombatEngineer"/>
                  <option name="consumesUnits" value="1:Material"/>
                  <option name="destroyedWhenCapturedBy" value="China:Russia:Germany:Britain:Italy:Japan:Usa:Spain:Sweden:Turkey:Brazil"/>
              </attachment>
      

      TripleA Developer with a Passion for AI: https://forums.triplea-game.org/topic/105/ai-development-discussion-and-feedback

      C 1 Reply Last reply Reply Quote 0
      • C Offline
        Cernel Moderators @redrum
        last edited by

        @redrum Ok, but, that way, can you somehow change such things with triggers, for example changing this:

                    <option name="givesMovement" value="2:germanFighter:germanNavalFighter"/>
                    <option name="givesMovement" value="4:germanAdvancedFighter"/>
                    <option name="givesMovement" value="4:germanAdvancedNavalFighter"/>
                    <option name="givesMovement" value="3:germanTacticalBomber"/>
                    <option name="givesMovement" value="5:germanAdvancedTacticalBomber"/>
                    <option name="givesMovement" value="4:germanStrategicBomber"/>
                    <option name="givesMovement" value="6:germanHeavyStrategicBomber"/>
                    <option name="givesMovement" value="3:germanAirTransport"/>
                    <option name="givesMovement" value="2:germanRocket"/>
                    <option name="givesMovement" value="4:germanAdvancedRocket"/>
                    <option name="givesMovement" value="2:italianFighter"/>
                    <option name="givesMovement" value="4:italianAdvancedFighter"/>
                    <option name="givesMovement" value="2:italianNavalFighter"/>
                    <option name="givesMovement" value="4:italianAdvancedNavalFighter"/>
                    <option name="givesMovement" value="3:italianTacticalBomber"/>
                    <option name="givesMovement" value="5:italianAdvancedTacticalBomber"/>
                    <option name="givesMovement" value="4:italianStrategicBomber"/>
                    <option name="givesMovement" value="6:italianHeavyStrategicBomber"/>
                    <option name="givesMovement" value="3:italianAirTransport"/>
                    <option name="givesMovement" value="2:italianRocket"/>
                    <option name="givesMovement" value="4:italianAdvancedRocket"/>
                    <option name="givesMovement" value="2:japaneseFighter"/>
                    <option name="givesMovement" value="4:japaneseAdvancedFighter"/>
                    <option name="givesMovement" value="2:japaneseNavalFighter"/>
                    <option name="givesMovement" value="4:japaneseAdvancedNavalFighter"/>
                    <option name="givesMovement" value="3:japaneseTacticalBomber"/>
                    <option name="givesMovement" value="5:japaneseAdvancedTacticalBomber"/>
                    <option name="givesMovement" value="4:japaneseStrategicBomber"/>
                    <option name="givesMovement" value="6:japaneseHeavyStrategicBomber"/>
                    <option name="givesMovement" value="3:japaneseAirTransport"/>
                    <option name="givesMovement" value="2:japaneseRocket"/>
                    <option name="givesMovement" value="4:japaneseAdvancedRocket"/>
                    <option name="givesMovement" value="2:russianFighter"/>
                    <option name="givesMovement" value="4:russianAdvancedFighter"/>
                    <option name="givesMovement" value="2:russianNavalFighter"/>
                    <option name="givesMovement" value="4:russianAdvancedNavalFighter"/>
                    <option name="givesMovement" value="3:russianTacticalBomber"/>
                    <option name="givesMovement" value="5:russianAdvancedTacticalBomber"/>
                    <option name="givesMovement" value="4:russianStrategicBomber"/>
                    <option name="givesMovement" value="6:russianHeavyStrategicBomber"/>
                    <option name="givesMovement" value="3:russianAirTransport"/>
                    <option name="givesMovement" value="2:russianRocket"/>
                    <option name="givesMovement" value="4:russianAdvancedRocket"/>
                    <option name="givesMovement" value="2:britishFighter"/>
                    <option name="givesMovement" value="4:britishAdvancedFighter"/>
                    <option name="givesMovement" value="2:britishNavalFighter"/>
                    <option name="givesMovement" value="4:britishAdvancedNavalFighter"/>
                    <option name="givesMovement" value="3:britishTacticalBomber"/>
                    <option name="givesMovement" value="5:britishAdvancedTacticalBomber"/>
                    <option name="givesMovement" value="4:britishStrategicBomber"/>
                    <option name="givesMovement" value="6:britishHeavyStrategicBomber"/>
                    <option name="givesMovement" value="3:britishAirTransport"/>
                    <option name="givesMovement" value="2:britishRocket"/>
                    <option name="givesMovement" value="4:britishAdvancedRocket"/>
                    <option name="givesMovement" value="2:americanFighter"/>
                    <option name="givesMovement" value="4:americanAdvancedFighter"/>
                    <option name="givesMovement" value="2:americanNavalFighter"/>
                    <option name="givesMovement" value="4:americanAdvancedNavalFighter"/>
                    <option name="givesMovement" value="3:americanTacticalBomber"/>
                    <option name="givesMovement" value="5:americanAdvancedTacticalBomber"/>
                    <option name="givesMovement" value="4:americanStrategicBomber"/>
                    <option name="givesMovement" value="6:americanHeavyStrategicBomber"/>
                    <option name="givesMovement" value="3:americanAirTransport"/>
                    <option name="givesMovement" value="2:americanRocket"/>
                    <option name="givesMovement" value="4:americanAdvancedRocket"/>
                    <option name="givesMovement" value="2:chineseFighter"/>
                    <option name="givesMovement" value="3:chineseTacticalBomber"/>
                    <option name="givesMovement" value="2:brazilianFighter"/>
                    <option name="givesMovement" value="2:spanishFighter"/>
                    <option name="givesMovement" value="2:swedishFighter"/>
                    <option name="givesMovement" value="2:turkishFighter"/>
        

        to this:

        
                    <option name="givesMovement" value="4:germanFighter:germanNavalFighter"/>
                    <option name="givesMovement" value="8:germanAdvancedFighter"/>
                    <option name="givesMovement" value="8:germanAdvancedNavalFighter"/>
                    <option name="givesMovement" value="6:germanTacticalBomber"/>
                    <option name="givesMovement" value="10:germanAdvancedTacticalBomber"/>
                    <option name="givesMovement" value="8:germanStrategicBomber"/>
                    <option name="givesMovement" value="14:germanHeavyStrategicBomber"/>
                    <option name="givesMovement" value="6:germanAirTransport"/>
                    <option name="givesMovement" value="4:germanRocket"/>
                    <option name="givesMovement" value="8:germanAdvancedRocket"/>
                    <option name="givesMovement" value="4:italianFighter"/>
                    <option name="givesMovement" value="8:italianAdvancedFighter"/>
                    <option name="givesMovement" value="4:italianNavalFighter"/>
                    <option name="givesMovement" value="8:italianAdvancedNavalFighter"/>
                    <option name="givesMovement" value="6:italianTacticalBomber"/>
                    <option name="givesMovement" value="10:italianAdvancedTacticalBomber"/>
                    <option name="givesMovement" value="8:italianStrategicBomber"/>
                    <option name="givesMovement" value="14:italianHeavyStrategicBomber"/>
                    <option name="givesMovement" value="6:italianAirTransport"/>
                    <option name="givesMovement" value="4:italianRocket"/>
                    <option name="givesMovement" value="8:italianAdvancedRocket"/>
                    <option name="givesMovement" value="4:japaneseFighter"/>
                    <option name="givesMovement" value="8:japaneseAdvancedFighter"/>
                    <option name="givesMovement" value="4:japaneseNavalFighter"/>
                    <option name="givesMovement" value="8:japaneseAdvancedNavalFighter"/>
                    <option name="givesMovement" value="6:japaneseTacticalBomber"/>
                    <option name="givesMovement" value="10:japaneseAdvancedTacticalBomber"/>
                    <option name="givesMovement" value="8:japaneseStrategicBomber"/>
                    <option name="givesMovement" value="14:japaneseHeavyStrategicBomber"/>
                    <option name="givesMovement" value="6:japaneseAirTransport"/>
                    <option name="givesMovement" value="4:japaneseRocket"/>
                    <option name="givesMovement" value="8:japaneseAdvancedRocket"/>
                    <option name="givesMovement" value="4:russianFighter"/>
                    <option name="givesMovement" value="8:russianAdvancedFighter"/>
                    <option name="givesMovement" value="4:russianNavalFighter"/>
                    <option name="givesMovement" value="8:russianAdvancedNavalFighter"/>
                    <option name="givesMovement" value="6:russianTacticalBomber"/>
                    <option name="givesMovement" value="10:russianAdvancedTacticalBomber"/>
                    <option name="givesMovement" value="8:russianStrategicBomber"/>
                    <option name="givesMovement" value="14:russianHeavyStrategicBomber"/>
                    <option name="givesMovement" value="6:russianAirTransport"/>
                    <option name="givesMovement" value="4:russianRocket"/>
                    <option name="givesMovement" value="8:russianAdvancedRocket"/>
                    <option name="givesMovement" value="4:britishFighter"/>
                    <option name="givesMovement" value="8:britishAdvancedFighter"/>
                    <option name="givesMovement" value="4:britishNavalFighter"/>
                    <option name="givesMovement" value="8:britishAdvancedNavalFighter"/>
                    <option name="givesMovement" value="6:britishTacticalBomber"/>
                    <option name="givesMovement" value="10:britishAdvancedTacticalBomber"/>
                    <option name="givesMovement" value="8:britishStrategicBomber"/>
                    <option name="givesMovement" value="14:britishHeavyStrategicBomber"/>
                    <option name="givesMovement" value="6:britishAirTransport"/>
                    <option name="givesMovement" value="4:britishRocket"/>
                    <option name="givesMovement" value="8:britishAdvancedRocket"/>
                    <option name="givesMovement" value="4:americanFighter"/>
                    <option name="givesMovement" value="8:americanAdvancedFighter"/>
                    <option name="givesMovement" value="4:americanNavalFighter"/>
                    <option name="givesMovement" value="8:americanAdvancedNavalFighter"/>
                    <option name="givesMovement" value="6:americanTacticalBomber"/>
                    <option name="givesMovement" value="10:americanAdvancedTacticalBomber"/>
                    <option name="givesMovement" value="8:americanStrategicBomber"/>
                    <option name="givesMovement" value="14:americanHeavyStrategicBomber"/>
                    <option name="givesMovement" value="6:americanAirTransport"/>
                    <option name="givesMovement" value="4:americanRocket"/>
                    <option name="givesMovement" value="8:americanAdvancedRocket"/>
                    <option name="givesMovement" value="4:chineseFighter"/>
                    <option name="givesMovement" value="6:chineseTacticalBomber"/>
                    <option name="givesMovement" value="4:brazilianFighter"/>
                    <option name="givesMovement" value="4:spanishFighter"/>
                    <option name="givesMovement" value="4:swedishFighter"/>
                    <option name="givesMovement" value="4:turkishFighter"/>
        

        during the game?

        redrumR 1 Reply Last reply Reply Quote 0
        • redrumR Offline
          redrum Admin @Cernel
          last edited by redrum

          @Cernel I believe you can. givesMovement is essentially a list in the engine so you can use -reset- to clear then add multiple lines to it to achieve your example.

              <!-- Clarification on changing properties and resetting/clearing of properties. (Any property not in this list overwrites itself if you set it multiple times)
          				The following attachments may have MULTIPLE instances, meaning that they are adding to some variable, meaning that they may be cleared/reset by triggers if you want to (by prefixing with "-reset-"):
          				Unit Attachments:
          					canBeGivenByTerritoryTo
          					canBeCapturedOnEnteringBy
          					destroyedWhenCapturedBy 
          					destroyedWhenCapturedFrom (Can't be used by triggers, use destroyedWhenCapturedBy instead)
          					requiresUnits
          					repairsUnits
          					givesMovement
          

          TripleA Developer with a Passion for AI: https://forums.triplea-game.org/topic/105/ai-development-discussion-and-feedback

          C 1 Reply Last reply Reply Quote 1
          • C Offline
            Cernel Moderators @redrum
            last edited by

            @redrum Ok, but if reset before an addition of a "givesMovement" option would delete all current ones, then can I make multiple of those, firing at the same time, or would they reset what the ones firing at the same time did? I could test it, but I'm more interested to know what is intended. All I understand from that is that I can reset and add a single instance or add additional without resetting, but can I reset and add multiple, without each new one resetting everything?

            What I understand, in practice is that, if I have something like this:

                        <option name="givesMovement" value="2:germanFighter:germanNavalFighter"/>
                        <option name="givesMovement" value="4:germanAdvancedFighter"/>
            

            I can add another case, without reset, getting something like this:

                        <option name="givesMovement" value="2:germanFighter:germanNavalFighter"/>
                        <option name="givesMovement" value="4:germanAdvancedFighter"/>
                        <option name="givesMovement" value="4:germanAdvancedNavalFighter"/>
            

            Or, if I reset, I would remove what is there, and get something like this:

                        <option name="givesMovement" value="4:germanAdvancedNavalFighter"/>
            

            But pos2 is not clear about what would be the process if starting from this:

                        <option name="givesMovement" value="2:germanFighter:germanNavalFighter"/>
                        <option name="givesMovement" value="4:germanAdvancedFighter"/>
            

            I want to get this:

                        <option name="givesMovement" value="4:germanFighter:germanNavalFighter"/>
                        <option name="givesMovement" value="8:germanAdvancedFighter"/>
            

            I know I could do a trigger chain with the first one resetting and adding the first line and the second one adding the second line without resetting, but here I'm talking about no workarounds.

            redrumR 1 Reply Last reply Reply Quote 0
            • redrumR Offline
              redrum Admin @Cernel
              last edited by

              @Cernel Uh, not sure exactly what you are asking but after you reset it you can then add multiple instances as long as you don't reset it again.

              TripleA Developer with a Passion for AI: https://forums.triplea-game.org/topic/105/ai-development-discussion-and-feedback

              C 1 Reply Last reply Reply Quote 0
              • C Offline
                Cernel Moderators @redrum
                last edited by

                @redrum Right, but resetting is integrated in adding, and triggers are displayed in no particular order in history, and supposedly fire at the same time, if they do. So, I'm talking doing it before or after a same phase. I know I could reset on a phase and, then, add all I want, without resetting, in a phase thereafter, but that is a workaround.

                C 1 Reply Last reply Reply Quote 0
                • C Offline
                  Cernel Moderators @Cernel
                  last edited by

                  @Cernel For example, I see I could do it by having a trigger that reset and adds the first line and also activates a number of other triggers that add the remaining lines without resetting, and I suppose that would work, but it would be a workaround, so I was curious if there was a proper process for changing or anyways managing multiple options with the same name, for example doubling all "givesMovement" of TWW.

                  redrumR 1 Reply Last reply Reply Quote 0
                  • redrumR Offline
                    redrum Admin @Cernel
                    last edited by

                    @Cernel I believe you can just do it all in the same trigger and that the trigger should always execute the lines as they are listed so something like this (I haven't tested this):

                        <attachment name="triggerAttachmentExample" attachTo="Germany" javaClass="TriggerAttachment" type="player">
                          <option name="conditions" value="someCondition"/>
                          <option name="unitType" value="germanAirfield"/>
                          <option name="unitProperty" value="givesMovement" count="-reset-:4:germanFighter:germanNavalFighter"/>
                          <option name="unitProperty" value="givesMovement" count="8:germanAdvancedFighter"/>
                        </attachment>
                    

                    TripleA Developer with a Passion for AI: https://forums.triplea-game.org/topic/105/ai-development-discussion-and-feedback

                    C 1 Reply Last reply Reply Quote 1
                    • C Offline
                      Cernel Moderators @redrum
                      last edited by

                      @redrum Ah, ok, I didn't know that the lines of a trigger were meant to be a sequence, not just a set. I will eventually test that, and see if it works, as I intend to eventually do something where you have different bonus for combat and non combat movement. Then I suppose updating pos2, if we can assume that is the proper process, as currently I've no idea how any normal mapmaker can really understand that out of this description alone.

                      The following attachments may have MULTIPLE instances, meaning that they are adding to some variable, meaning that they may be cleared/reset by triggers if you want to (by prefixing with "-reset-")
                      
                      1 Reply Last reply Reply Quote 0
                      • FrostionF Offline
                        Frostion Admin
                        last edited by

                        @redrum I tried the latest pre-release and it seems to work now 😊 Great Work!

                        Map maker of: Star Wars: Galactic War + Star Wars: Tatooine War + Caribbean Trade War + Dragon War + Age of Tribes + Star Trek: Dilithium War + Iron War + Iron War: Europe + Warcraft: War Heroes

                        1 Reply Last reply Reply Quote 2

                        Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                        Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                        With your input, this post could be even better 💗

                        Register Login
                        • 1 / 1
                        • First post
                          Last post
                        Copyright © 2016-2018 TripleA-Devs | Powered by NodeBB Forums