DEVs: Request for Enhancement for Modders

- And Probably DEVs Too!

One technique I have used on a product I worked on was something we called, "Event_Exits".  What these did was whenever a significant event occurred in processing, the code would look for the presence of a script file by a predetermined name.  If one was found, it would execute it.

What would be a great tool for both the DEVs and for Modders would be a similar piece of code in FE.  Whenever events occur, just go out and look for an appropriate EventExit tag.  I would think this would be fairly easy to code though it might be time consuming getting it placed everywhere an event occurs.  But I think this could save you guys a lot of time long term. 

Examples To Demo Concept (actual implementation at the discretion of the DEVs):

<EventExits>
    <EventExit>
       <Equipped_Primary_Weapon> <!-- Fires when item equipped in primary weapon slot -->

          <!-- Some assignment of a trait or other check-->
          <HasAbility Id="Placeholder">     <!-- NEW TAG:  It'd be cool if spells and items used this also -->
               <!-- If the Unit has an ability bonus by that name do what is inside this node -->
          </HasAbility>

          <NotHasAbility Id="Placeholder">  <!-- NEW TAG:  It'd be cool if spells and items used this also -->
               <!-- If the Unit DOES NOT have an ability bonus by that name do what is inside this node -->
          </NotHasAbility>

          <HasAbility Id="EquippedWeapon_Sword">        <!--This trait granted by sword when sword is equipped-->
            <NotHasAbility Id="Blood_MancerAbility">    <!--Mancers don't get this bonus-->
              <NotHasAbility Id="Blood_TrogAbility">    <!--nor do Trogs-->
                <HasAbility Id="Swordsman2Ability">     <!--If has this ability, -->
                  <GameModifier>                        <!--adds a 10% bonus to Dodge if sword equipped -->
                    <ModType>Unit</ModType>
                    <Attribute>AdjustUnitStat</Attribute>
                    <StrVal>UnitStat_Dodge</StrVal>
                    <Calculate InternalName="Calc1" ValueOwner="CastingUnit">
                        <Expression><![CDATA[[UnitStat_Dodge] * 0.1]]></Expression>
                    </Calculate>
                    <Calculate InternalName="Value">
                        <Expression><![CDATA[[Calc1] + 1]]></Expression>
                    </Calculate>
                  </GameModifier>
                  <GameModifier>                        
                    <ModType>AddRaceAttribute</ModType>       <!-- NEW ModType: It'd be cool if spells and items used this also -->
                    <Attribute>MySwordAbility</Attribute>     <!-- Adds mod defined attri to entire race.  "RemoveRaceAttribute" also option -->
                  </GameModifier>
                  <GameModifier>                        
                    <ModType>RemoveUnitAttribute</ModType>   <!-- NEW ModType: It'd be cool if spells and items used this also -->
                    <Attribute>MyAxeAbility</Attribute>      <!-- Removes this attribute from the unit  "AddUnitAttribute" also option -->
                  </GameModifier>
                </HasAbility>
              </NotHasAbility>
            </NotHasAbility>
          </HasAbility>
        <Return>                 <!--NEW TAG: Return tag forces return to program and returns Value-->
            <Value>True</Value>  <!--If this value is false, event failed.  If true, succeeded.-->
        </Return>
        </Equipped_Primary_Weapon>
    </EventExit>
    <EventExit>
        <Entered_River_Tile>  <!-- Fires when unit enters a tile containing a river -->
            <!-- Some assignment of a trait or other check-->
            <HasAbility Id="FearOfWaterAbility">  <!--New or modder defined trait assigned by a new Water Spell-->
              <Return>                            <!--Having FearOfWater, can't enter river tiles-->
                  <Value>False</Value>  <!--If this value is false, event failed-->
              </Return>
            </HasAbility>
            <HasAbility Id="Blood_TarthAbility">  <!-- For Tarth Only -->
              <HasAbility Id="ShardTemple_Water">  <!-- Ability assigned when Temple completed on Water Shard -->
                <GameModifier>
                  <ModType>Unit</ModType>           <!-- Net effect: If Tarth and has Water Temple, heals  -->
                  <Attribute>CurHealth</Attribute>  <!-- 25% of current damage -->
                  <Calculate InternalName="Calc1" ValueOwner="CastingUnit">
                      <Expression><![CDATA[[UnitStat_Dodge]]]></Expression>
                  </Calculate>
                  <Calculate InternalName="Calc2" ValueOwner="CastingUnit">
                      <Expression><![CDATA[[CurHealth]]]></Expression>
                  </Calculate>
                  <Calculate InternalName="Calc3" ValueOwner="CastingUnit">
                    <Expression><![CDATA[[Calc1] - [Calc2]]]></Expression>
                  </Calculate>
                  <Calculate InternalName="Value">
                      <Expression><![CDATA[[Calc3] / 4]]></Expression>
                  </Calculate>
                </GameModifier>
              </HasAbility>
            </HasAbility>
            <Return>                 <!--Return tag forces return to program and returns Value-->
                <Value>True</Value>  <!--If this value is false, event failed-->
            </Return>
        </Entered_River_Tile>
     </EventExit>
</EventExits>

1,980 views 0 replies