1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. The poll for our 11th Music Contest is up! Help us choose the most awesome cinematic tracks by casting a vote!
    Dismiss Notice
  3. Melee Mapping contest #3 - Poll is up! Vote for the best 4v4 melee maps!
    Dismiss Notice
  4. The 30th edition of the Modeling Contest is finally up! The Portable Buildings need your attention, so come along and have a blast!
    Dismiss Notice
  5. The Aftermath has been revealed for the 19th Terraining Contest! Be sure to check out the Results and see what came out of it.
    Dismiss Notice

Bone Armor 1.09

Submitted by Devalut
This bundle is marked as pending. It has not been reviewed by a staff member yet.



  • BAmr Config
    • BAmr Config
      • Events
        • Map initialization
      • Conditions
      • Actions
        • -------- This value represents how often the BAmr Peridic will run. --------
        • Set BAmr_PERIODIC = 0.03
        • Trigger - Add to BAmr Periodic <gen> the event (Time - Every BAmr_PERIODIC seconds of game time)
        • -------- --------
        • -------- This value indicates what spell is being used by the caster --------
        • Set BAmr_SPELL = Bone Armor BAmr
        • -------- --------
        • -------- This value indicates which buff will be detected when the enchanted unit is struck, and which buff the enchanted unit needs to keep the effect going. --------
        • Set BAmr_BUFF = Bone Armor BAmr
        • -------- --------
        • -------- This value indicates what unit will be used as a "segment" in bone armor that rotates around the enchanted Target. --------
        • Set BAmr_SEGMENT_UNITTYPE = Orbitunit BAmr
        • -------- --------
        • -------- Spell stat values --------
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
          • Then - Actions
            • -------- This indicates the base value for the shield --------
            • Set BAmr_BASE_HP = 100.00
            • -------- This indicates the base value for the shield --------
            • -------- --------
            • -------- This value will determine the increase in shield health if the hero invests skill points into the Ability --------
            • Set BAmr_LVL_HP_BONUS[1] = 200.00
            • Set BAmr_LVL_HP_BONUS[2] = 400.00
            • Set BAmr_LVL_HP_BONUS[3] = 600.00
            • -------- This value will determine the increase in shield health if the hero invests skill points into the Ability --------
            • -------- --------
            • -------- This value decides what percentage of the caster's Strength will be used to boost Bone Armor's Health (Default: 0.00) --------
            • Set BAmr_ATT_BONUS[1] = 0.00
            • -------- This value decides what percentage of the caster's Agility will be used to boost Bone Armor's Health (Default: 0.00) --------
            • Set BAmr_ATT_BONUS[2] = 0.00
            • -------- This value decides what percentage of the caster's Intelligence will be used to boost Bone Armor's Health (Default: 0.00) --------
            • Set BAmr_ATT_BONUS[3] = 0.00
            • -------- --------
            • -------- This value denotes of what percentage of the damage will be taken by the shield. Default:1.00 (100%) --------
            • -------- Example: 0.5 means only 50% of incoming damage will be taken by the shield and will be dealt to the unit --------
            • Set BAmr_ABSORBTION_PERCENTAGE = 1.00
            • -------- --------
            • -------- These two values determine what percentage of physical or Spell damage it will resist. Default: 1.00 (100%) --------
            • -------- Not to be confused with the previous value --------
            • -------- Example: Spell Resist at 2.00 means that spell damage will deal 200% more damage --------
            • -------- Setting either of these values to 0.00 will ignore that type of damage --------
            • Set BAmr_RESIST_SPELL = 1.00
            • Set BAmr_RESIST_PHYSICAL = 1.00
            • -------- --------
          • Else - Actions
        • -------- Spell stat values --------
        • -------- --------
        • -------- Special effects & related values --------
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
          • Then - Actions
            • -------- This path denotes what form the orbiting segments will take. --------
            • Set BAmr_SEGMENT_MODEL_PATH = Abilities\Weapons\NecromancerMissile\NecromancerMissile.mdl
            • -------- This path denotes what form the orbiting segments will take. --------
            • -------- --------
            • -------- This value indicates what effect will occur when the segments are first spawned --------
            • Set BAmr_EFFECTPATH[1] = Abilities\Spells\Undead\RaiseSkeletonWarrior\RaiseSkeleton.mdl
            • -------- This value indicates what effect will occur when the segments are first spawned --------
            • -------- --------
            • -------- This value indicates what effect will occur when the segments are destroyed --------
            • Set BAmr_EFFECTPATH[2] = Abilities\Spells\Undead\RaiseSkeletonWarrior\RaiseSkeleton.mdl
            • -------- This value indicates what effect will occur when the segments are destroyed --------
            • -------- --------
            • -------- This value indicates what effect will occur when the enchanted unit is struck --------
            • Set BAmr_EFFECTPATH[3] = BoneArmorCasterTC.mdl
            • -------- This value indicates what effect will occur when the enchanted unit is struck --------
            • -------- --------
            • -------- Values contained within directly influence the "shield flare" effect governed by BAmr_EFFECTPATH[3] --------
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
              • Then - Actions
                • -------- --------
                • -------- Offset will determine how far away the Special effect will be created from the enchanted target --------
                • Set BAmr_SPEF_OFFSET = 75.00
                • -------- Offset will determine how far away the Special effect will be created from the enchanted target --------
                • -------- --------
                • -------- Height will determine at what height the Special effect will be created, starting from the enchanted target's current height & Z Height. --------
                • Set BAmr_SPEF_HEIGHT = 65.00
                • -------- Height will determine at what height the Special effect will be created, starting from the enchanted target's current height --------
                • -------- --------
                • -------- This Value determines whether or not you want the "Shield Flare Effect" to match the player's colour or to a specific colour --------
                • Set BAmr_SPEF_COLOUR_MATCH_PLAYER = False
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • BAmr_SPEF_COLOUR_MATCH_PLAYER Equal to False
                  • Then - Actions
                    • Set BAmr_SPEF_SPECIFIC_COLOUR = Player 23 (Emerald)
                  • Else - Actions
                • -------- --------
                • -------- RGB value from 0 - 255 will determine what colors will be present in the special effect (note this requires a lot of experimentation) --------
                • -------- from 1 - 3 is RED, GREEN, BLUE --------
                • Set BAmr_SPEF_RGB[1] = 255
                • Set BAmr_SPEF_RGB[2] = 255
                • Set BAmr_SPEF_RGB[3] = 255
                • -------- from 1 - 3 is RED, GREEN, BLUE --------
                • -------- RGB value from 0 - 255 will determine what colors will be present in the special effect (note this requires a lot of experimentation) --------
                • -------- --------
                • -------- Scale will determine the percentage of scale the Special effect will have --------
                • Set BAmr_SPEF_SCALE = 0.90
                • -------- Scale will determine the percentage of scale the Special effect will have --------
                • -------- --------
                • -------- Timescale will determine the speed of the special effect's animation --------
                • Set BAmr_SPEF_TIMESCALE = 5.00
                • -------- Timescale will determine the speed of the special effect's animation --------
                • -------- --------
                • -------- YPR will determine in order of apperance, Yaw, Pitch, & Roll. --------
                • -------- Thanks to Hermit, the model provided already has an orienation to 90 degrees we need not add it, but I will leave these all the same for interesting effects! --------
                • -------- The Values are calculated as (( X * 3.14 ) / 180 ), X being the value below --------
                • -------- To flip normally horizontal models like the default spirit touch, all values below must be set to 1.57 or ((90 x 3.14 /) 180) --------
                • -------- from 1 - 3 is YAW, PITCH, ROLL --------
                • Set BAmr_SPEF_YPR[1] = 0.00
                • -------- --------
                • Set BAmr_SPEF_YPR[2] = 0.00
                • -------- --------
                • Set BAmr_SPEF_YPR[3] = 0.00
                • -------- YPR will determine in order of apperance, Yaw, Pitch, & Roll. --------
                • -------- --------
              • Else - Actions
            • -------- Values contained within directly influence the "shield flare" effect governed by BAmr_EFFECTPATH[3] --------
            • -------- --------
          • Else - Actions
        • -------- Special effects & related values --------
        • -------- --------
        • -------- Segement orbit values --------
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
          • Then - Actions
            • -------- --------
            • -------- This value indicates how "segments" will orbit around the enchanted Target. --------
            • Set BAmr_SEGMENTS = 3
            • -------- --------
            • -------- This value indicates how far away the "segments" orbit away from the enchanted Target. --------
            • Set BAmr_ROTATION_DISTANCE = 60.00
            • -------- This value indicates how far away the segments spawn from the their target --------
            • Set BAmr_SPAWN_SEGMENT_OFFSET = 120.00
            • -------- --------
            • -------- This value indicates at what height the segment will be at in addition the the unit's flying height --------
            • Set BAmr_SEGMENT_HEIGHT = 15.00
            • -------- --------
            • -------- This value indicates how far apart the segements will spawn from, this is default to a 360 --------
            • Set BAmr_SPAWN_SEGMENT_ANGLE = 360.00
            • -------- --------
            • -------- This value indicates where the segments will be offset from --------
            • Set BAmr_SPAWN_SEGMENT_WHERE = 1
            • -------- 1 (DEFAULT) Caster's Position --------
            • -------- 2 Target's Position --------
            • -------- --------
            • -------- This value indicates how fast the "segments" orbit around the enchanted Target. --------
            • Set BAmr_ROTATION_SPEED = 1.00
            • -------- --------
            • -------- This value indicates how fast the "segments" intially move towards the enchanted Target. --------
            • Set BAmr_MISSILE_SPEED = 18.00
          • Else - Actions
        • -------- Segement orbit values --------
        • -------- --------
        • -------- Preload --------
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
          • Then - Actions
            • Set BAmr_Point[1] = (Center of (Playable map area))
            • Unit - Create 1 BAmr_SEGMENT_UNITTYPE for Neutral Passive at BAmr_Point[1] facing Default building facing degrees
            • Set BAmr_Target = (Last created unit)
            • Unit - Add BAmr_SPELL to BAmr_Target
            • Unit - Add a 0.03 second Generic expiration timer to BAmr_Target
            • Custom script: call RemoveLocation(udg_BAmr_Point[1])
          • Else - Actions
        • -------- Preload --------

    BAmr Cast
    • BAmr Cast
      • Events
        • Unit - A unit Starts the effect of an ability
      • Conditions
        • (Ability being cast) Equal to BAmr_SPELL
      • Actions
        • Set BAmr_Caster = (Triggering unit)
        • Set BAmr_Target = (Target unit of ability being cast)
        • Set BAmr_Point[1] = (Position of BAmr_Caster)
        • Set BAmr_Point[2] = (Position of BAmr_Target)
        • Set BAmr_Akey = (Custom value of BAmr_Target)
        • Set BAmr_STRENGTH = ((Real((Strength of BAmr_Caster (Include bonuses)))) + BAmr_ATT_BONUS[1])
        • Set BAmr_AGILITY = ((Real((Agility of BAmr_Caster (Include bonuses)))) x BAmr_ATT_BONUS[2])
        • Set BAmr_INTELLIGENCE = ((Real((Intelligence of BAmr_Caster (Include bonuses)))) x BAmr_ATT_BONUS[3])
        • Set BAmr_Health[BAmr_Akey] = ((BAmr_BASE_HP + BAmr_LVL_HP_BONUS[(Level of BAmr_SPELL for BAmr_Caster)]) + (BAmr_STRENGTH + (BAmr_AGILITY + BAmr_INTELLIGENCE)))
        • Set BAmr_Max[BAmr_Akey] = BAmr_Health[BAmr_Akey]
        • Set BAmr_Segment_Count[BAmr_Akey] = BAmr_SEGMENTS
        • Set BAmr_Total[BAmr_Akey] = 0.00
        • For each (Integer BAmr_Integer) from 1 to BAmr_Segment_Count[BAmr_Akey], do (Actions)
          • Loop - Actions
            • Set BAmr_SegUnit_CValue = ((BAmr_Segment_Count[BAmr_Akey] x BAmr_Akey) + (BAmr_Integer - 1))
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • (BAmr_SegmentUnit[BAmr_SegUnit_CValue] is dead) Equal to True
              • Then - Actions
                • Set BAmr_Point[3] = (BAmr_Point[BAmr_SPAWN_SEGMENT_WHERE] offset by BAmr_SPAWN_SEGMENT_OFFSET towards ((BAmr_SPAWN_SEGMENT_ANGLE / (Real(BAmr_Segment_Count[BAmr_Akey]))) x (Real(BAmr_Integer))) degrees)
                • Unit - Create 1 BAmr_SEGMENT_UNITTYPE for Neutral Passive at BAmr_Point[3] facing (Angle from BAmr_Point[3] to BAmr_Point[1]) degrees
                • Set BAmr_SegmentUnit[BAmr_SegUnit_CValue] = (Last created unit)
                • Set BAmr_Bkey = (Custom value of BAmr_SegmentUnit[BAmr_SegUnit_CValue])
                • Special Effect - Create a special effect attached to the chest of BAmr_SegmentUnit[BAmr_SegUnit_CValue] using BAmr_SEGMENT_MODEL_PATH
                • Set BAmr_Segment_SPEF_MODEL[BAmr_Bkey] = (Last created special effect)
              • Else - Actions
                • Set BAmr_Point[3] = (Position of BAmr_SegmentUnit[BAmr_SegUnit_CValue])
            • Special Effect - Create a special effect at BAmr_Point[3] using BAmr_EFFECTPATH[1]
            • Special Effect - Destroy (Last created special effect)
            • Custom script: call RemoveLocation(udg_BAmr_Point[3])
        • Custom script: call RemoveLocation(udg_BAmr_Point[1])
        • Custom script: call RemoveLocation(udg_BAmr_Point[2])
        • Unit Group - Add BAmr_Target to BAmr_GROUP
        • Set BAmr_UnitG_Count = (BAmr_UnitG_Count + 1)
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • BAmr_UnitG_Count Equal to 1
          • Then - Actions
            • Trigger - Turn on BAmr Periodic <gen>
            • Trigger - Turn on BAmr Block <gen>
          • Else - Actions

    BAmr Block
    • BAmr Cast
      • Events
        • Unit - A unit Starts the effect of an ability
      • Conditions
        • (Ability being cast) Equal to BAmr_SPELL
      • Actions
        • Set BAmr_Caster = (Triggering unit)
        • Set BAmr_Target = (Target unit of ability being cast)
        • Set BAmr_Point[1] = (Position of BAmr_Caster)
        • Set BAmr_Point[2] = (Position of BAmr_Target)
        • Set BAmr_Akey = (Custom value of BAmr_Target)
        • Set BAmr_STRENGTH = ((Real((Strength of BAmr_Caster (Include bonuses)))) + BAmr_ATT_BONUS[1])
        • Set BAmr_AGILITY = ((Real((Agility of BAmr_Caster (Include bonuses)))) x BAmr_ATT_BONUS[2])
        • Set BAmr_INTELLIGENCE = ((Real((Intelligence of BAmr_Caster (Include bonuses)))) x BAmr_ATT_BONUS[3])
        • Set BAmr_Health[BAmr_Akey] = ((BAmr_BASE_HP + BAmr_LVL_HP_BONUS[(Level of BAmr_SPELL for BAmr_Caster)]) + (BAmr_STRENGTH + (BAmr_AGILITY + BAmr_INTELLIGENCE)))
        • Set BAmr_Max[BAmr_Akey] = BAmr_Health[BAmr_Akey]
        • Set BAmr_Segment_Count[BAmr_Akey] = BAmr_SEGMENTS
        • Set BAmr_Total[BAmr_Akey] = 0.00
        • For each (Integer BAmr_Integer) from 1 to BAmr_Segment_Count[BAmr_Akey], do (Actions)
          • Loop - Actions
            • Set BAmr_SegUnit_CValue = ((BAmr_Segment_Count[BAmr_Akey] x BAmr_Akey) + (BAmr_Integer - 1))
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • (BAmr_SegmentUnit[BAmr_SegUnit_CValue] is dead) Equal to True
              • Then - Actions
                • Set BAmr_Point[3] = (BAmr_Point[BAmr_SPAWN_SEGMENT_WHERE] offset by BAmr_SPAWN_SEGMENT_OFFSET towards ((BAmr_SPAWN_SEGMENT_ANGLE / (Real(BAmr_Segment_Count[BAmr_Akey]))) x (Real(BAmr_Integer))) degrees)
                • Unit - Create 1 BAmr_SEGMENT_UNITTYPE for Neutral Passive at BAmr_Point[3] facing (Angle from BAmr_Point[3] to BAmr_Point[1]) degrees
                • Set BAmr_SegmentUnit[BAmr_SegUnit_CValue] = (Last created unit)
                • Set BAmr_Bkey = (Custom value of BAmr_SegmentUnit[BAmr_SegUnit_CValue])
                • Special Effect - Create a special effect attached to the chest of BAmr_SegmentUnit[BAmr_SegUnit_CValue] using BAmr_SEGMENT_MODEL_PATH
                • Set BAmr_Segment_SPEF_MODEL[BAmr_Bkey] = (Last created special effect)
              • Else - Actions
                • Set BAmr_Point[3] = (Position of BAmr_SegmentUnit[BAmr_SegUnit_CValue])
            • Special Effect - Create a special effect at BAmr_Point[3] using BAmr_EFFECTPATH[1]
            • Special Effect - Destroy (Last created special effect)
            • Custom script: call RemoveLocation(udg_BAmr_Point[3])
        • Custom script: call RemoveLocation(udg_BAmr_Point[1])
        • Custom script: call RemoveLocation(udg_BAmr_Point[2])
        • Unit Group - Add BAmr_Target to BAmr_GROUP
        • Set BAmr_UnitG_Count = (BAmr_UnitG_Count + 1)
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • BAmr_UnitG_Count Equal to 1
          • Then - Actions
            • Trigger - Turn on BAmr Periodic <gen>
            • Trigger - Turn on BAmr Block <gen>
          • Else - Actions

    BAmr Periodic
    • BAmr Periodic
      • Events
      • Conditions
      • Actions
        • Unit Group - Pick every unit in BAmr_GROUP and do (Actions)
          • Loop - Actions
            • Set BAmr_Picked_Unit = (Picked unit)
            • Set BAmr_Akey = (Custom value of BAmr_Picked_Unit)
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • (BAmr_Picked_Unit is alive) Equal to True
                • (BAmr_Picked_Unit has buff BAmr_BUFF) Equal to True
              • Then - Actions
                • For each (Integer BAmr_Integer) from 1 to BAmr_Segment_Count[BAmr_Akey], do (Actions)
                  • Loop - Actions
                    • Set BAmr_SegUnit_CValue = ((BAmr_Segment_Count[BAmr_Akey] x BAmr_Akey) + (BAmr_Integer - 1))
                    • Set BAmr_Point[1] = (Position of BAmr_Picked_Unit)
                    • Set BAmr_Point[3] = (Position of BAmr_SegmentUnit[BAmr_SegUnit_CValue])
                    • Animation - Change BAmr_SegmentUnit[BAmr_SegUnit_CValue] flying height to ((Current flying height of BAmr_Picked_Unit) + BAmr_SEGMENT_HEIGHT) at 0.00
                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      • If - Conditions
                        • (Distance between BAmr_Point[1] and BAmr_Point[3]) Less than (BAmr_ROTATION_DISTANCE + 15.00)
                      • Then - Actions
                        • Set BAmr_Current_Rot_Speed[BAmr_Akey] = (BAmr_Current_Rot_Speed[BAmr_Akey] + BAmr_ROTATION_SPEED)
                        • Set BAmr_Point[2] = (BAmr_Point[1] offset by BAmr_ROTATION_DISTANCE towards (((360.00 / (Real(BAmr_Segment_Count[BAmr_Akey]))) x (Real(BAmr_Integer))) + BAmr_Current_Rot_Speed[BAmr_Akey]) degrees)
                        • Unit - Move BAmr_SegmentUnit[BAmr_SegUnit_CValue] instantly to BAmr_Point[2], facing (Angle from BAmr_Point[3] to BAmr_Point[2]) degrees
                      • Else - Actions
                        • Set BAmr_Point[2] = (BAmr_Point[3] offset by BAmr_MISSILE_SPEED towards (Facing of BAmr_SegmentUnit[BAmr_SegUnit_CValue]) degrees)
                        • Unit - Move BAmr_SegmentUnit[BAmr_SegUnit_CValue] instantly to BAmr_Point[2], facing (Angle from BAmr_Point[3] to BAmr_Point[1]) degrees
                    • Custom script: call RemoveLocation(udg_BAmr_Point[1])
                    • Custom script: call RemoveLocation(udg_BAmr_Point[2])
                    • Custom script: call RemoveLocation(udg_BAmr_Point[3])
                    • -------- --------
              • Else - Actions
                • For each (Integer BAmr_Integer) from 1 to BAmr_Segment_Count[BAmr_Akey], do (Actions)
                  • Loop - Actions
                    • Set BAmr_SegUnit_CValue = ((BAmr_Segment_Count[BAmr_Akey] x BAmr_Akey) + (BAmr_Integer - 1))
                    • Set BAmr_Bkey = (Custom value of BAmr_SegmentUnit[BAmr_SegUnit_CValue])
                    • Special Effect - Destroy BAmr_Segment_SPEF_MODEL[BAmr_Bkey]
                    • Unit - Remove BAmr_SegmentUnit[BAmr_SegUnit_CValue] from the game
                    • Set BAmr_Point[3] = (Position of BAmr_SegmentUnit[BAmr_SegUnit_CValue])
                    • Special Effect - Create a special effect at BAmr_Point[3] using BAmr_EFFECTPATH[2]
                    • Special Effect - Destroy (Last created special effect)
                    • Custom script: call RemoveLocation(udg_BAmr_Point[3])
                • Unit Group - Remove BAmr_Picked_Unit from BAmr_GROUP
                • Set BAmr_UnitG_Count = (BAmr_UnitG_Count - 1)
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • BAmr_UnitG_Count Less than 1
                  • Then - Actions
                    • Trigger - Turn off BAmr Periodic <gen>
                    • Trigger - Turn off BAmr Block <gen>
                  • Else - Actions
                • -------- --------


  • Import Bone Armor in your map!

    Step 0 REQUIRED - Under Preferences, make sure you have "Automatically create unknown variables while pasting trigger data" checked

    Step 1 - Install Bribe's Damage Engine into your map:
    see Bribe's Damage Engine 3.8.0.0 for more details

    Step 2 - Install Bone Armor
    2A Copy & paste the Bone Armor folder into your map
    2B Copy the Bone Armor Ability from Object Editor, and set it to the variable BArmr_SPELL
    2C Copy the Bone Armor Buff from Object Editor, and set it to the variable BArmr_BUFF
    2D Copy the OrbitUnit Unit from Object Editor, and set it to the variable BArmr_SEGMENT_UNITTYPE

    Step 3 [OPTIONAL] - Installing the Modified Spirit Touch model for Player Coloured damage flare
    3A - Export the model "BoneArmorCasterTC.mdx" to a safe location
    3B - In your New map open "Import manager" [directly next to the test map button!]
    3C - Click the "Import File"
    3D - navigate to the "BoneArmorCasterTC.mdx" file location and select it
    3E - double click on the newly added "war3mapImported\BoneArmorCasterTC.mdx" and tick "Use custom path"
    3F - remove "war3mapImported\" leaving behind only "BoneArmorCasterTC.mdx", copy this and click okay!
    3G - Navigate to Triggers and BAmr Config to
    • Set BAmr_EFFECTPATH[3]

    and paste "BoneArmorCasterTC.mdx"

    Step 3.5 [OPTIONAL] - Installing the Vexxorian dummy model for trigger controlled model pathing
    3.5A - Export the model "Vexxoriandummy.mdx" to a safe location
    3.5B - In your New map open "Import manager" [directly next to the test map button!]
    3.5C - Click the "Import File"
    3.5D - navigate to the "Vexxoriandummy.mdx" file location and select it
    3.5E - double click on the newly added "war3mapImported\Vexxoriandummy.mdx" and tick "Use custom path"
    3.5F - remove "war3mapImported\" leaving behind only "Vexxoriandummy.mdx", copy this and click okay!
    3.5G - Navigate to Orbitunit in the object editor, in the field "Art - Model File", open this and paste "Vexxoriandummy.mdx"

    Step 4 [Option to use default spirit touch or other effects that are orientated straight up]
    4A - Navigate to Triggers and BAmr Config to the variable
    • Set BAmr_EFFECTPATH[3]

    and paste any effect path you wish
    4B - still in BAmr Config go to the
    • Set BAmr_SPEF_YPR[1]

    and set it to "1.57" (this bends the model to a 90 degree orientation)
    4C - repeat previous step for
    • Set BAmr_SPEF_YPR[2]
    and leaving
    • Set BAmr_SPEF_YPR[3]
    to 0.00
    4D - Note that we set
    • Set BAmr_SPEF_YPR[2]
    as Pitch will not mimic the warcraft 3 style of degrees as "90 for north, 0 for east." and must instead have 1.57 added [essentially ((90 x 3.14) / 180) = 1.57]


  • Bribe - for his ever-so-useful-systems that make my life so much easier!

    KILLCIDE - for his patience and our time cleaning up my triggers

    D4rk_G4ND4LF - for his earlier attempts at damage shields

    Foopad - for his work on my original request for a damage shield ability (Aka Ruined flesh from age of conan game.)

    Weep - for his Early Damage detection system

    Pinzu - for the player colour shield flare suggestion (Added in Bone Armor 1.08)

    Hermit - for his Spirit Touch model allowing for different shield flare colours. (Added in Bone Armor 1.08)[/SIZE]

    Vexorian - Excellent dummy model

    Blizzard & Diablo 2 - My inspiration *cough* BLATANT RIP *cough* from the Necromancer's Abilities, and their wonderful editor that still manages to entertain me +16 years later.


  • Release 1.09 - 2019-02-20 at 12:45am (PST)
    • Major: Added Vexorian dummy model to allow complete trigger control over the orbiting units model path - [Credits to Vexorian & Pinzu for the idea!]
    Minor changes:
    • added BAmr_SEGMENT_MODEL_PATH to config - For use with the newly added dummy model
    • added BAmr_Bkey - exclusive for the segment units as a way to access Unit indexing, it appears in BAmr Cast/Block/Periodic for both the initial creation and the clean up after the unit has been cleared
    • made segment units into neutral passive as their ownership seemed pointless and simply added to end game score.

    Previous changelog
    Release 1.08 - 2019-02-03 at 10:23pm
    • Major: Added new Spirit touch with player colour variability [Credits to Hermit! for the model & Pinzu for the idea!]
    • Minor: Added Boolean to decide if you want damage target's player colour or a specific one.
    • Minor: Added Specific Player Colour Variable if the above boolean is set to false (I.e player blue will create a orange flare effect when hit.)
    • Major: Added Segment flying height and changed them to flying types allowing for segments to actually orbit near the unit instead of on the ground [Credits to Hermit for noticing]
    --------------------------------------------------------------------------------------------------
    Release 1.07 - 2019-01-21 at 1:13 AM

    Changelog:

    • Minor: added current unit height and their current position's terrain height to make it so the Special effect on hit will not sink into the ground. (it still does slightly but I'm not sure how to fix it...)
    • Minor: redid commands into spellbook with four abilities
    • Minor: redid damage text to show accumulated damaged (occasionally bugs but have it off by default, lost on how it's being silly but it's pretty messy)
    • Minor: changed DamageEventAmount calculation in BAmr Block to
      • [​IMG]Set DamageEventAmount = (DamageEventAmount - (DamageEventAmount x BAmr_ABSORBTION_PERCENTAGE))
      from
      • [​IMG]Set DamageEventAmount = (DamageEventPrevAmt - (DamageEventPrevAmt x BAmr_ABSORBTION_PERCENTAGE))
      since the target was healing off the damage when enchanted.
    • Minor: Replaced all instances of Variables named BArmr to BAmr
    --------------------------------------------------------------------------------------------------
    Release 1.06 - 2019-01-12 at 6:20 PM

    Changelog:

    Major Additions:
    • Added BAmr_EFFECTPATH[1-3], allows for seperate spawn effect, destroyed effect, and damage effect.
    • Added Configuration for Destroyed & Damage Effect Path
    • Added Damage Effect in BAmr Block
    • Added BAmr_SPEF - to avoid using (Last created special effect)
    • Added Configuration for Damaged Effect's: Offset, Height, RGB Color Value, Scale, Timescale, Yaw/Pitch/Roll
    • Organized BAmr Config for cleaner look
    Minor Additions in "Not Required":
    • Added install instructions
    • Added Commands for toggling Damage text & spawning of random hostile creeps
    • Added Selection of the test hero on startup as well as message for previously mentioned commands
    • Added Mouse tracking move for location point of spawning hostiles via commands.

    --------------------------------------------------------------------------------------------------
    Release 1.05 - 2019-01-03 at 7:55 PM
    • FINISHED - BAmr_Periodic Variable & Trigger add in Init added! (Neat!)
    • FINISHED - Removed BAmr_PreloadUnit used BAmr_Target instead
    --------------------------------------------------------------------------------------------------
    Release 1.04 - 2019-01-03 at 7:55 PM
    (Happy New Year!)
    Changelog:

    • FINISHED - BAmr_Preload_Unit Variable for preloader in BAmr Config - Added!
    • FINISHED - BAmr_STR/AGI/INT = Hero S/A/I x BAmr_Attribute_Bonus - Added!
    • FINISHED - If&Else checking if Segment unit is still alive, will spawn replacements if needed otherwise it will simply use the spawn effect on exisiting.
    • FINISHED - BAmr_Segment_Custom_Value Added, (wow this makes it much easier)
    • FINISHED - BAmr_UnitG_Count, replaced in BAmr Cast & Periodic
    • FINISHED- Put the conditions on BAmr Periodic (has buff? / Is alive?) together
    • FINISHED - Still don't know how to make a variable for periodic (won't use "Real" or "Timer") (Screenie)
    • FINISHED? - Segments will fly off if not above %125, especially so when the unit starts moving, (Black Magic Numbers)
    • FINISHED- Oops - Old habit of using hashtables since variables didn't work to well with them
    • UNSURE - I'm not quite sure what you're referring to but I changed the BAmr_LVL_BONUS to an Array with preset levels in BAmr Config
    --------------------------------------------------------------------------------------------------
    Release v1.03 - 2018-12-29 at 11:25 PM
    Changelog:

    • FINISHED - Trigger Prefix changed: (BAmr X > BA X )
    • FINISHED - Added BAmr_Caster/Target/Picked_Unit to handle repetitive function calls.
    • FINISHED? - Added BAmr_Offset/Angle/Where for segment spawn point configuration.
    • FINISHED - Added BAmr_Integer to replace any usage of ( Integer A )
    • FINISHED - Added Toggles for block & periodic on cast & group clear
    • UNFINISHED - Still don't know how to make a variable for periodic (won't use "Real" or "Timer")
    • FINISHED - Put the conditions on BAmr Periodic (has buff? / Is alive?) together
    Added configuration:
    - BAmr_Absorbtion_% (Damage % that is handled by the shield and left for the target to deal with)

    ---------------------------------------------------------------
    Release v1.02 - 2018-12-27 at X AM
    Changelog:

    • FINISHED - Trigger Prefix changed: (BAmr X > BA X )
    • FINISHED - Added BAmr_Caster/Target/Picked_Unit to handle repetitive function calls.
    • FINISHED - Added BAmr_Offset/Angle/Where for segment spawn point configuration.
    • FINISHED - Added BAmr_Integer to replace any usage of ( Integer A )
    • FINISHED - Added Toggles for block & periodic on cast & group clear
    • UNFINISHED - Still don't know how to make a variable for periodic (won't use "Real" or "Timer")
    • FINISHED - Put the conditions on BAmr Periodic (has buff? / Is alive?) together
    Added configuration:
    - BAmr_Absorbtion_% (Damage % that is handled by the shield and left for the target to deal with)

    Removed:
    All the comments since it's the only thing I think KILLCIDE was referring to when he made the claim that I didn't read the Guides he suggested.

    ---------------------------------------------------------------
    Release v1.01 - 2018-12-24 at 8:50 AM
    Changelog:
    • FINISHED - (Cast --> BA Main Cast).
    • FINISHED - (BArmr > BA_X).
    • FINISHED - See "Added Configuration below.
    • FINISHED - (BArmr > Temp_X).
    • FINISHED - See below
    Added Configuration for:
    - Base shield health
    - Shield health bonus per level
    - Attribute bonus
    - Spell/Physical resistance
    - Unittype for Segment
    - Number of Segments
    - Rotation Distance
    - Rotation Speed
    - Missile speed (How fast the segments move to enclose the unit)

    ---------------------------------------------------------------
    Release v1.00 - 2018-12-24 at 4:44 AM


Please let me know your thoughts, I would take any feedback on to improve bone armor.
Contents

Bone Armor 1.09 (Map)

  1. ColourWolfe

    ColourWolfe

    Joined:
    Oct 25, 2018
    Messages:
    8
    Resources:
    0
    Resources:
    0
    Been looking for an easy-to-use shield spell for a while now, thanks!

    The SFX are lovely!
     
  2. Devalut

    Devalut

    Joined:
    Feb 9, 2009
    Messages:
    452
    Resources:
    0
    Resources:
    0
    Let me know if there's something I can change
     
  3. Pinzu

    Pinzu

    Joined:
    Nov 30, 2007
    Messages:
    1,160
    Resources:
    3
    Spells:
    2
    Tutorials:
    1
    Resources:
    3
    Is it possible to have different shield colors for different spells or players?
     
  4. Devalut

    Devalut

    Joined:
    Feb 9, 2009
    Messages:
    452
    Resources:
    0
    Resources:
    0
    Thanks for the suggestion!

    Do you mean the skulls or the shield flare when an enchanted unit takes damage?

    I changed the colour using the special effects alpha (25 r 255 g 25 b) the special effects will always keep a tinge of their former colour.
    I haven't tried the player colour option in the special effects, I believe it only effects that already have player colouring attached (Ex: moon priestess arrow)

    I'll request a spirit touch model that is player coloured and bent 90 degrees if the all else fails.
     
  5. Pinzu

    Pinzu

    Joined:
    Nov 30, 2007
    Messages:
    1,160
    Resources:
    3
    Spells:
    2
    Tutorials:
    1
    Resources:
    3
    You could store orb and shield coloring in an array and just chose accordingly to configuration. So a nature shield would create a green shield and have green orbs, orange shield and orange orbs, blue shielf and ice orbs and so on.

    I don't mean just changing the color, I mean creating copies based on the same trigger and some easy configuration.

    Spell[0] = Necro
    ColorR[0] = 45
    ColorG[0] = 255
    ColorB[0] = 45
    Orb[0] = Skull
    ...

    Spell[1] = Nature
    ColorR[0] = 255
    ColorG[0] = 100
    ColorB[0] = 40
    Orb[1] = Nature's Orb
    ...

    So when spell[0] is cast you have a set of effects and when spell[1] is cast another.


    Just an idea, havent' looked all that deeply into your trigger. ^^
     
    Last edited: Feb 1, 2019
  6. Devalut

    Devalut

    Joined:
    Feb 9, 2009
    Messages:
    452
    Resources:
    0
    Resources:
    0
    Very neat I'll do some tests later tonight

    ETA:
    (To my knowledge): I would need to add a dummy model to carry multiple unit model support, and I want to avoid making the installation process too complicated.
    If you know of an alternative method let me know.

    Also changing the alphas (I tried making yellow, red & purple.) the flare looks off and very much discoloured.


    ETA: Hermit - Has Submitted this Spirit Touch Model which will allow for recolouring surpassing the default blue variant in terms of customization, I will add it to the next version here later today and add the options into the Bone Armor Config for multiple player colours.
     
    Last edited: Feb 3, 2019
  7. ColourWolfe

    ColourWolfe

    Joined:
    Oct 25, 2018
    Messages:
    8
    Resources:
    0
    Resources:
    0
    Rainbow variation looks dope!