1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. Updated Resource Submission Rules: All model & skin resource submissions must now include an in-game screenshot. This is to help speed up the moderation process and to show how the model and/or texture looks like from the in-game camera.
    Dismiss Notice
  3. DID YOU KNOW - That you can unlock new rank icons by posting on the forums or winning contests? Click here to customize your rank or read our User Rank Policy to see a list of ranks that you can unlock. Have you won a contest and still havn't received your rank award? Then please contact the administration.
    Dismiss Notice
  4. The poll for Hive's 12th Concept Art Contest is up! Go cast your vote for your favourite genie!
    Dismiss Notice
  5. Travel to distant realms and encounter scenes unknown to the common folk. The Greatest of Adventures is upon us with the 8th Cinematic Contest. Join in on a fun ride.
    Dismiss Notice
  6. The 18th Icon Contest is ON! Choose any ingame unit and give him/her Hero abilities. Good luck to all.
    Dismiss Notice
  7. Contestants are to create a scene set in the Stone Age. Come and see what you can come up with. We wish you the best of luck!
    Dismiss Notice
  8. Colour outside the lines! Techtree Contest #13 is a go. The contest is optionally paired.
    Dismiss Notice
  9. Greetings cerebrates, our Swarm needs new spawners that will have numerous children. Join the HIVE's 31st Modeling Contest - Spawners and Spawned! The contest is optionally paired.
    Dismiss Notice
  10. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

Bone Armor 1.14.2

Submitted by Devalut
This bundle is marked as approved. It works and satisfies the submission rules.

  • Preview 1 - Using Modified Spirit Touch Model by Hermit
    [​IMG]

    Preview 2 - Using Hexagon Shield Model by Hermit
    [​IMG]

    Preview 3 - Using Vanilla Spirit Touch Model [with ZERO model edits] by Blizzard with purely triggered modifications to yaw & pitch.
    See "how to install tab" for step by step instructions for similar models to Spirit touch (i.e. Lasers using revive)

    [​IMG]


    Showing Shield Life!
    [​IMG]

    Woah Nelly - Boolean Tweaking and their results!

    Fading Effect on Segments
    (experiment as this affects only the textures of the model not particles!)
    (gif is being dumb)

    Shrinking Effect on Segments
    [​IMG]

    SEM - Simple Effect Mode (Note Fade & shrinking do work this SEM!)
    [​IMG]

  • [​IMG]
    [​IMG]

  • Damage Engine 5.1.3.1
    • Damage Detection
    Unit Indexer
    • Indexing strictly for Bone Armor, Damage Engine no longer requires it




  • 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
        • -------- --------
        • -------- Spell stat values --------
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
          • Then - Actions
            • -------- Stacking --------
            • -------- Set to true to allow for "Stacking" of shield values when cast on the same unit consecutively --------
            • Set BAmr_Boolean[0] = True
            • -------- --------
            • -------- 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 --------
        • -------- --------
        • -------- This value determines the "Flavour" of the Shield, the number corresponds with the options below, match it to get the intended effect --------
        • Set BAmr_Flavor = 23
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
          • Then - Actions
            • -------- Flavors --------
            • -------- --------
            • -------- 23 --------
            • -------- Lime / Necro --------
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • BAmr_Flavor Equal to 23
              • Then - Actions
                • Set BAmr_Flavor_Path[0] = Abilities\Weapons\NecromancerMissile\NecromancerMissile.mdl
                • Set BAmr_Flavor_Path[1] = Abilities\Spells\Undead\RaiseSkeletonWarrior\RaiseSkeleton.mdl
                • Set BAmr_Flavor_Path[2] = Abilities\Spells\Undead\RaiseSkeletonWarrior\RaiseSkeleton.mdl
                • Set BAmr_Flavor_Path[3] = BoneArmorCasterTC.mdx
              • Else - Actions
            • -------- 23 --------
            • -------- --------
            • -------- 1 --------
            • -------- Red / Fire --------
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • BAmr_Flavor Equal to 1
              • Then - Actions
                • Set BAmr_Flavor_Path[0] = Abilities\Weapons\FireBallMissile\FireBallMissile.mdl
                • Set BAmr_Flavor_Path[1] = Abilities\Spells\Items\AIfb\AIfbSpecialArt.mdl
                • Set BAmr_Flavor_Path[2] = Abilities\Spells\Items\AIfb\AIfbSpecialArt.mdl
                • Set BAmr_Flavor_Path[3] = BoneArmorCasterTC.mdx
              • Else - Actions
            • -------- 1 --------
            • -------- --------
            • -------- 2 --------
            • -------- Blue / Frost --------
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • BAmr_Flavor Equal to 2
              • Then - Actions
                • Set BAmr_Flavor_Path[0] = Abilities\Spells\Other\FrostBolt\FrostBoltMissile.mdl
                • Set BAmr_Flavor_Path[1] = Abilities\Spells\Undead\FrostNova\FrostNovaTarget.mdl
                • Set BAmr_Flavor_Path[2] = Abilities\Spells\Undead\FrostNova\FrostNovaTarget.mdl
                • Set BAmr_Flavor_Path[3] = BoneArmorCasterTC.mdx
              • Else - Actions
            • -------- 2 --------
            • -------- --------
            • -------- 3 --------
            • -------- Teal / Ocean --------
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • BAmr_Flavor Equal to 3
              • Then - Actions
                • Set BAmr_Flavor_Path[0] = Abilities\Weapons\SeaElementalMissile\SeaElementalMissile.mdl
                • Set BAmr_Flavor_Path[1] = Abilities\Spells\Other\CrushingWave\CrushingWaveDamage.mdl
                • Set BAmr_Flavor_Path[2] = Abilities\Spells\Other\CrushingWave\CrushingWaveDamage.mdl
                • Set BAmr_Flavor_Path[3] = BoneArmorCasterTC.mdx
              • Else - Actions
            • -------- 3 --------
            • -------- --------
            • -------- 4 --------
            • -------- Purple / Ooze? --------
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • BAmr_Flavor Equal to 4
              • Then - Actions
                • Set BAmr_Flavor_Path[0] = Abilities\Weapons\SludgeMissile\SludgeMissile.mdl
                • Set BAmr_Flavor_Path[1] = Abilities\Spells\Undead\DarkRitual\DarkRitualTarget.mdl
                • Set BAmr_Flavor_Path[2] = Abilities\Spells\Items\AIil\AIilTarget.mdl
                • Set BAmr_Flavor_Path[3] = BoneArmorCasterTC.mdx
              • Else - Actions
            • -------- 4 --------
            • -------- --------
            • -------- 5 --------
            • -------- Yellow / Holy --------
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • BAmr_Flavor Equal to 5
              • Then - Actions
                • Set BAmr_Flavor_Path[0] = Abilities\Weapons\FaerieDragonMissile\FaerieDragonMissile.mdl
                • Set BAmr_Flavor_Path[1] = Abilities\Spells\Human\HolyBolt\HolyBoltSpecialArt.mdl
                • Set BAmr_Flavor_Path[2] = Abilities\Spells\Other\HealingSpray\HealBottleMissile.mdl
                • Set BAmr_Flavor_Path[3] = BoneArmorCasterTC.mdx
              • Else - Actions
            • -------- 5 --------
            • -------- --------
            • -------- 6 --------
            • -------- Orange / Drunk --------
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • BAmr_Flavor Equal to 6
              • Then - Actions
                • Set BAmr_Flavor_Path[0] = Abilities\Spells\Other\StrongDrink\BrewmasterMissile.mdl
                • Set BAmr_Flavor_Path[1] = Abilities\Spells\Orc\SpiritLink\SpiritLinkZapTarget.mdl
                • Set BAmr_Flavor_Path[2] = Abilities\Spells\Human\Feedback\SpellBreakerAttack.mdl
                • Set BAmr_Flavor_Path[3] = BoneArmorCasterTC.mdx
              • Else - Actions
            • -------- 6 --------
            • -------- --------
            • -------- 7 --------
            • -------- Green / Nature --------
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • BAmr_Flavor Equal to 7
              • Then - Actions
                • Set BAmr_Flavor_Path[0] = Abilities\Weapons\KeeperGroveMissile\KeeperGroveMissile.mdl
                • Set BAmr_Flavor_Path[1] = Objects\Spawnmodels\NightElf\EntBirthTarget\EntBirthTarget.mdl
                • Set BAmr_Flavor_Path[2] = Objects\Spawnmodels\NightElf\EntBirthTarget\EntBirthTarget.mdl
                • Set BAmr_Flavor_Path[3] = BoneArmorCasterTC.mdx
              • Else - Actions
            • -------- 7 --------
            • -------- --------
            • -------- 8 --------
            • -------- Pink / Darkness --------
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • BAmr_Flavor Equal to 8
              • Then - Actions
                • Set BAmr_Flavor_Path[0] = Abilities\Weapons\VoidWalkerMissile\VoidWalkerMissile.mdl
                • Set BAmr_Flavor_Path[1] = Abilities\Spells\Undead\OrbOfDeath\AnnihilationMissile.mdl
                • Set BAmr_Flavor_Path[2] = Abilities\Spells\Undead\OrbOfDeath\AnnihilationMissile.mdl
                • Set BAmr_Flavor_Path[3] = BoneArmorCasterTC.mdx
              • Else - Actions
            • -------- 8 --------
            • -------- --------
            • -------- Flavors --------
          • Else - Actions
        • -------- This value determines the "Flavour" of the Shield, the number corresponds with the options below, match it to get the intended effect --------
        • -------- --------
        • -------- --------
        • -------- 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_EFFECTPATH[0] = BAmr_Flavor_Path[0]
            • -------- This path denotes what form the orbiting segments will take. --------
            • -------- --------
            • -------- This value indicates what effect will occur when the segments are first spawned --------
            • -------- see the "Flavor Section" to customize numerous effect loadouts --------
            • Set BAmr_EFFECTPATH[1] = BAmr_Flavor_Path[1]
            • -------- 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 --------
            • -------- see the "Flavor Section" to customize numerous effect loadouts --------
            • Set BAmr_EFFECTPATH[2] = BAmr_Flavor_Path[2]
            • -------- 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 --------
            • -------- see the "Flavor Section" to customize numerous effect loadouts --------
            • Set BAmr_EFFECTPATH[3] = BAmr_Flavor_Path[3]
            • -------- 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
                • -------- --------
                • -------- 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_Boolean[1] = False
                • -------- --------
                • -------- Offset will determine how far away the Special effect will be created from the enchanted target --------
                • -------- PLAYER COLOUR --------
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • BAmr_Boolean[1] Equal to False
                  • Then - Actions
                    • Set BAmr_SPEF_VALUE[0] = (Real(BAmr_Flavor))
                  • Else - Actions
                • -------- --------
                • -------- Offset will determine how far away the Special effect will be created from the enchanted target --------
                • -------- OFFSET --------
                • Set BAmr_SPEF_VALUE[1] = 85.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. --------
                • -------- HEIGHT --------
                • Set BAmr_SPEF_VALUE[2] = 65.00
                • -------- Height will determine at what height the Special effect will be created, starting from the enchanted target's current height --------
                • -------- --------
                • -------- Scale will determine the percentage of scale the Special effect will have --------
                • -------- SCALE --------
                • Set BAmr_SPEF_VALUE[3] = 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 --------
                • -------- TIMESCALE --------
                • Set BAmr_SPEF_VALUE[4] = 7.50
                • -------- Timescale will determine the speed of the special effect's animation --------
                • -------- --------
                • -------- 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_VALUE[5] = 255.00
                • Set BAmr_SPEF_VALUE[6] = 255.00
                • Set BAmr_SPEF_VALUE[7] = 255.00
                • -------- 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) --------
                • -------- --------
                • -------- 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 ), 1.57 = 90 degrees, 3.14 = 180 degrees, etc --------
                • -------- 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 8 - 10 is YAW, PITCH, ROLL --------
                • -------- --------
                • Set BAmr_SPEF_VALUE[8] = 0.00
                • -------- YAW --------
                • -------- --------
                • Set BAmr_SPEF_VALUE[9] = 0.00
                • -------- PITCH --------
                • -------- --------
                • Set BAmr_SPEF_VALUE[10] = 0.00
                • -------- ROLL --------
                • -------- --------
                • -------- YPR will determine in order of apperance, Yaw, Pitch, & Roll. --------
                • -------- --------
                • -------- This Value checks whether or not the Shield flare intensity will match the shield's current health --------
                • Set BAmr_Boolean[2] = False
                • -------- If Above Boolean is true, this handles the minimum the shield will fade to. --------
                • -------- --------
                • Set BAmr_SPEF_VALUE[12] = 25.00
                • -------- --------
              • Else - Actions
            • -------- Values contained within directly influence the "shield flare" effect governed by BAmr_EFFECTPATH[3] --------
            • -------- --------
          • Else - Actions
        • -------- Special effects & related values --------
        • -------- --------
        • -------- Segement Configuration --------
        • 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_SEGMENT_SPAWNED = 3
            • -------- --------
            • -------- This value indicates how far away the "segments" orbit away from the enchanted Target. --------
            • -------- SEGMENT ORBIT OFFSET --------
            • Set BAmr_SEG_VALUE[1] = 60.00
            • -------- This value indicates how far away the segments spawn from the their target --------
            • -------- SEGMENT SPAWN OFFSET --------
            • Set BAmr_SEG_VALUE[2] = 120.00
            • -------- --------
            • -------- This value indicates at what height the segment will be at in addition the the unit's flying height --------
            • -------- SEGMENT HEIGHT --------
            • Set BAmr_SEG_VALUE[3] = 65.00
            • -------- --------
            • -------- This value indicates how far apart the segements will spawn from, this is default to a 360 --------
            • -------- SEGMENT RADIUS TOTAL (I.e. don't change unless you are sure) --------
            • Set BAmr_SEG_VALUE[4] = 360.00
            • -------- --------
            • -------- This value indicates where the segments will be offset from --------
            • Set BAmr_SEGMENT_SPAWN = 1
            • -------- 1 (DEFAULT) Caster's Position --------
            • -------- 2 Target's Position --------
            • -------- --------
            • -------- This value indicates how fast the "segments" orbit around the enchanted Target. --------
            • -------- SEGMENT ORBIT SPEED --------
            • Set BAmr_SEG_VALUE[5] = 1.00
            • -------- --------
            • -------- This value indicates how fast the "segments" intially move towards the enchanted Target. --------
            • -------- SEGMENT MISSILE SPEED --------
            • Set BAmr_SEG_VALUE[6] = 18.00
            • -------- --------
            • -------- This value Indicates the size of the individual segments --------
            • -------- SEGMENT SIZE --------
            • Set BAmr_SEG_VALUE[7] = 1.00
            • -------- --------
            • -------- Sets the segments lowest size from damage, the boolean below needs to be set to true for this to take any affect --------
            • -------- the value below is how small the segment will shrink to as to avoid making it dissapear all together before the segment threshold damage is reached. --------
            • -------- SEGMENT "SHRINK" EFFECT MINIMUM --------
            • Set BAmr_SEG_VALUE[8] = 0.05
            • -------- --------
            • Set BAmr_Boolean[3] = False
            • -------- The value above directly is dependent on the boolean above being set to true --------
            • -------- --------
            • -------- the value below is how small the segment will shrink to as to avoid making it dissapear all together before the segment threshold damage is reached. --------
            • Set BAmr_SEG_VALUE[9] = 5.00
            • -------- SEGMENT "DIM" EFFECT MINIMUM --------
            • -------- --------
            • Set BAmr_Boolean[4] = False
            • -------- If Above Boolean is true, then segments will dim based on how much damage they have taken --------
            • -------- --------
            • -------- This value corresponds to the segment's "Alpha" i,e. sorta like transparency, do experiment as ribbons and particles will not be affected on the missile... --------
            • -------- SEGMENT ALPHA (TEXTURE TRANSPARENCY) --------
            • Set BAmr_SEG_VALUE[10] = 255.00
            • -------- --------
            • -------- RGB value from 0 - 255 will determine what colors will be present in the special effect (note this requires a lot of experimentation) --------
            • -------- from 11 -13 is RED, GREEN, BLUE --------
            • Set BAmr_SEG_VALUE[11] = 255.00
            • Set BAmr_SEG_VALUE[12] = 255.00
            • Set BAmr_SEG_VALUE[13] = 255.00
            • -------- 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) --------
            • -------- --------
            • -------- YPR will determine in order of apperance, Yaw, Pitch, & Roll WHEN ORBITING --------
            • -------- The Values are calculated as (( X * 3.14 ) / 180 ), 1.57 = 90 degrees, 3.14 = 180 degrees, etc --------
            • -------- from 14, 15, & 16 is YAW, PITCH, ROLL --------
            • -------- --------
            • Set BAmr_SEG_VALUE[14] = 1.57
            • -------- YAW --------
            • -------- --------
            • Set BAmr_SEG_VALUE[15] = 0.00
            • -------- PITCH --------
            • -------- --------
            • Set BAmr_SEG_VALUE[16] = 0.00
            • -------- ROLL --------
            • -------- --------
            • -------- YPR will determine in order of apperance, Yaw, Pitch, & Roll. --------
            • -------- --------
            • -------- YPR will determine in order of apperance, Yaw, Pitch, & Roll ON INITIAL CAST AND CLOSING DISTANCE --------
            • -------- The Values are calculated as (( X * 3.14 ) / 180 ), 1.57 = 90 degrees, 3.14 = 180 degrees, etc --------
            • -------- from 17, 18, & 19 is YAW, PITCH, ROLL --------
            • -------- --------
            • Set BAmr_SEG_VALUE[17] = 0.00
            • -------- YAW --------
            • -------- --------
            • Set BAmr_SEG_VALUE[18] = 0.00
            • -------- PITCH --------
            • -------- --------
            • Set BAmr_SEG_VALUE[19] = 0.00
            • -------- ROLL --------
            • -------- --------
            • -------- YPR will determine in order of apperance, Yaw, Pitch, & Roll. --------
            • -------- --------
            • -------- The value BAmr_EFFECTPATH[4] refers to what buff will be placed overhead of the unit in place of segments --------
            • Set BAmr_EFFECTPATH[4] = Abilities\Weapons\NecromancerMissile\NecromancerMissile.mdl
            • -------- SIMPLE EFFECT MODE --------
            • -------- --------
            • Set BAmr_Boolean[5] = False
            • -------- The value above directly is dependent on the boolean above being set to true --------
            • -------- This alternative mode will be subject to "Dimming" & "Shrinking" if the options are set to true. --------
            • -------- (i.e. 4x basic value (Default 65), effect will appear roughly over head, blizzard please add Unit model height! --------
            • -------- If BAmr_Boolean[5] is set to true, segments will not spawn and instead be an overhead buff --------
            • -------- --------
            • -------- Any changes made while SEM (Simple Effect Mode) is active must be below the basic default variables above to make intented changes ) --------
            • -------- --------
            • -------- SEMode Height of Effect --------
            • Set BAmr_SEG_VALUE[20] = 180.00
            • -------- --------
            • -------- SEMode Roll of Stationary/Orbiting Effect --------
            • -------- (i.e.4.71 radian's less than Default 4.71 radians, making the effect appear to follow facing of enchanted unit --------
            • Set BAmr_SEG_VALUE[21] = 0.00
            • -------- --------
            • -------- This value Indicates the size of the individual segments --------
            • -------- SEGMENT SIZE --------
            • Set BAmr_SEG_VALUE[22] = 1.50
          • 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 Albatross 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_ATTRIBUTE[1] = ((Real((Strength of BAmr_Caster (Include bonuses)))) x BAmr_ATT_BONUS[1])
        • Set BAmr_ATTRIBUTE[2] = ((Real((Agility of BAmr_Caster (Include bonuses)))) x BAmr_ATT_BONUS[2])
        • Set BAmr_ATTRIBUTE[3] = ((Real((Intelligence of BAmr_Caster (Include bonuses)))) x BAmr_ATT_BONUS[3])
        • Set BAmr_Real[0] = ((BAmr_BASE_HP + BAmr_LVL_HP_BONUS[(Level of BAmr_SPELL for BAmr_Caster)]) + (BAmr_ATTRIBUTE[1] + (BAmr_ATTRIBUTE[2] + BAmr_ATTRIBUTE[3])))
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • BAmr_Boolean[0] Equal to False
          • Then - Actions
            • Set BAmr_Health[BAmr_Akey] = BAmr_Real[0]
          • Else - Actions
            • Set BAmr_Health[BAmr_Akey] = (BAmr_Health[BAmr_Akey] + BAmr_Real[0])
        • Set BAmr_Max[BAmr_Akey] = BAmr_Health[BAmr_Akey]
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • BAmr_Boolean[5] Equal to False
          • Then - Actions
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • BAmr_Segment_Missile_Type[BAmr_Akey] Not equal to Default
              • Then - Actions
                • Set BAmr_Seg_CValue = BAmr_Akey
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • BAmr_Segment_Missile_State[BAmr_Seg_CValue] Not equal to Alive
                  • Then - Actions
                    • Set BAmr_Point[3] = (Point((Position - X of BAmr_SegmentMissile[BAmr_Seg_CValue]), (Position - Y of BAmr_SegmentMissile[BAmr_Seg_CValue])))
                    • Set BAmr_Segment_Missile_State[BAmr_Seg_CValue] = Dead
                    • Special Effect - Create a special effect at BAmr_Point[3] using BAmr_EFFECTPATH[1]
                    • Special Effect - Set Position of (Last created special effect) to x: (Position - X of BAmr_SegmentMissile[BAmr_Seg_CValue]), y: (Position - Y of BAmr_SegmentMissile[BAmr_Seg_CValue]), z: (Position - Z of BAmr_SegmentMissile[BAmr_Seg_CValue])
                    • Special Effect - Destroy (Last created special effect)
                    • Custom script: call RemoveLocation(udg_BAmr_Point[3])
                    • Special Effect - Destroy BAmr_SegmentMissile[BAmr_Seg_CValue]
                  • Else - Actions
              • Else - Actions
            • Set BAmr_Segment_Missile_Type[BAmr_Akey] = Default
            • Set BAmr_Segment_Count[BAmr_Akey] = BAmr_SEGMENT_SPAWNED
            • Set BAmr_Total[BAmr_Akey] = 0.00
            • For each (Integer BAmr_Loop) from 1 to BAmr_Segment_Count[BAmr_Akey], do (Actions)
              • Loop - Actions
                • Set BAmr_Seg_CValue = ((BAmr_Segment_Count[BAmr_Akey] x BAmr_Akey) + (BAmr_Loop - 1))
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • BAmr_Segment_Missile_State[BAmr_Seg_CValue] Not equal to Alive
                  • Then - Actions
                    • Set BAmr_Point[3] = (BAmr_Point[BAmr_SEGMENT_SPAWN] offset by BAmr_SEG_VALUE[2] towards ((BAmr_SEG_VALUE[4] / (Real(BAmr_Segment_Count[BAmr_Akey]))) x (Real(BAmr_Loop))) degrees)
                    • Special Effect - Create a special effect at BAmr_Point[3] using BAmr_EFFECTPATH[0]
                    • Set BAmr_SegmentMissile[BAmr_Seg_CValue] = (Last created special effect)
                    • Special Effect - Set Scale of BAmr_SegmentMissile[BAmr_Seg_CValue] to BAmr_SEG_VALUE[7]
                    • Special Effect - Set Color of BAmr_SegmentMissile[BAmr_Seg_CValue] to r: (Integer(BAmr_SEG_VALUE[11])), g: (Integer(BAmr_SEG_VALUE[12])), b: (Integer(BAmr_SEG_VALUE[13]))
                    • Set BAmr_Segment_Missile_State[BAmr_Seg_CValue] = Alive
                  • Else - Actions
                    • Set BAmr_Point[3] = (Point((Position - X of BAmr_SegmentMissile[BAmr_Seg_CValue]), (Position - Y of BAmr_SegmentMissile[BAmr_Seg_CValue])))
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • BAmr_Boolean[3] Equal to True
                  • Then - Actions
                    • Special Effect - Set Scale of BAmr_SegmentMissile[BAmr_Seg_CValue] to BAmr_SEG_VALUE[7]
                  • Else - Actions
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • BAmr_Boolean[4] Equal to True
                  • Then - Actions
                    • Special Effect - Set Alpha of BAmr_SegmentMissile[BAmr_Seg_CValue] to (Integer(BAmr_SEG_VALUE[10]))
                  • Else - Actions
                • 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])
          • Else - Actions
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • BAmr_Segment_Missile_Type[BAmr_Akey] Equal to Default
              • Then - Actions
                • For each (Integer BAmr_Loop) from 1 to BAmr_Segment_Count[BAmr_Akey], do (Actions)
                  • Loop - Actions
                    • Set BAmr_Seg_CValue = ((BAmr_Segment_Count[BAmr_Akey] x BAmr_Akey) + (BAmr_Loop - 1))
                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      • If - Conditions
                        • BAmr_Segment_Missile_State[BAmr_Seg_CValue] Equal to Alive
                      • Then - Actions
                        • Set BAmr_Point[3] = (Point((Position - X of BAmr_SegmentMissile[BAmr_Seg_CValue]), (Position - Y of BAmr_SegmentMissile[BAmr_Seg_CValue])))
                        • Set BAmr_Segment_Missile_State[BAmr_Seg_CValue] = Dead
                        • Special Effect - Destroy BAmr_SegmentMissile[BAmr_Seg_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])
                      • Else - Actions
              • Else - Actions
            • Set BAmr_Segment_Missile_Type[BAmr_Akey] = <Empty String>
            • Set BAmr_Seg_CValue = BAmr_Akey
            • Set BAmr_Segment_Missile_Type[BAmr_Seg_CValue] = SEM
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • BAmr_Segment_Missile_State[BAmr_Seg_CValue] Not equal to Alive
              • Then - Actions
                • Set BAmr_Point[3] = BAmr_Point[1]
                • Special Effect - Create a special effect at BAmr_Point[3] using BAmr_EFFECTPATH[4]
                • Set BAmr_SegmentMissile[BAmr_Seg_CValue] = (Last created special effect)
                • Special Effect - Set Scale of BAmr_SegmentMissile[BAmr_Seg_CValue] to BAmr_SEG_VALUE[22]
                • Special Effect - Set Color of BAmr_SegmentMissile[BAmr_Seg_CValue] to r: (Integer(BAmr_SEG_VALUE[11])), g: (Integer(BAmr_SEG_VALUE[12])), b: (Integer(BAmr_SEG_VALUE[13]))
                • Set BAmr_Segment_Missile_State[BAmr_Seg_CValue] = Alive
              • Else - Actions
                • Set BAmr_Point[3] = (Point((Position - X of BAmr_SegmentMissile[BAmr_Seg_CValue]), (Position - Y of BAmr_SegmentMissile[BAmr_Seg_CValue])))
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • BAmr_Boolean[3] Equal to True
              • Then - Actions
                • Special Effect - Set Scale of BAmr_SegmentMissile[BAmr_Seg_CValue] to BAmr_SEG_VALUE[22]
              • Else - Actions
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • BAmr_Boolean[4] Equal to True
              • Then - Actions
                • Special Effect - Set Alpha of BAmr_SegmentMissile[BAmr_Seg_CValue] to (Integer(BAmr_SEG_VALUE[10]))
              • Else - Actions
            • 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_Instances = (BAmr_Instances + 1)
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • BAmr_Instances Equal to 1
          • Then - Actions
            • Trigger - Turn on BAmr Periodic <gen>
            • Trigger - Turn on BAmr Block <gen>
          • Else - Actions

    BAmr Block
    • BAmr Block
      • Events
        • Game - DamageModifierEvent becomes Equal to 4.00
      • Conditions
        • (DamageEventTarget has buff BAmr_BUFF) Equal to True
      • Actions
        • Set BAmr_Akey = (Custom value of DamageEventTarget)
        • Set BAmr_DMG_Event = BAmr_Health[BAmr_Akey]
        • -------- --------
        • -------- Damage "Flare" effect --------
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
          • Then - Actions
            • Set BAmr_Point[1] = (Position of DamageEventTarget)
            • Set BAmr_Point[2] = (Position of DamageEventSource)
            • Special Effect - Create a special effect at (BAmr_Point[1] offset by BAmr_SPEF_VALUE[1] towards (Angle from BAmr_Point[1] to BAmr_Point[2]) degrees) using BAmr_EFFECTPATH[3]
            • Set BAmr_SPEF = (Last created special effect)
            • Custom script: set udg_BAmr_Spef_Current_Height[udg_BAmr_Akey] = GetLocationZ(udg_BAmr_Point[1])
            • Special Effect - Set Position - Z of BAmr_SPEF to ((BAmr_Spef_Current_Height[BAmr_Akey] + BAmr_SPEF_VALUE[2]) + (Current flying height of DamageEventTarget))
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • BAmr_Boolean[1] Equal to True
              • Then - Actions
                • Special Effect - Set Color of BAmr_SPEF to color of (Owner of DamageEventTarget)
              • Else - Actions
                • Special Effect - Set Color of BAmr_SPEF to color of (Player((Integer(BAmr_SPEF_VALUE[0]))))
            • Special Effect - Set Color of BAmr_SPEF to r: (Integer(BAmr_SPEF_VALUE[5])), g: (Integer(BAmr_SPEF_VALUE[6])), b: (Integer(BAmr_SPEF_VALUE[7]))
            • Special Effect - Set Scale of BAmr_SPEF to BAmr_SPEF_VALUE[3]
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • BAmr_Boolean[2] Equal to True
              • Then - Actions
                • Set BAmr_Real[1] = (BAmr_Health[BAmr_Akey] / (BAmr_Max[BAmr_Akey] / 255.00))
                • If (BAmr_Real[1] Less than BAmr_SPEF_VALUE[11]) then do (Set BAmr_Real[1] = BAmr_SPEF_VALUE[11]) else do (Do nothing)
                • Special Effect - Set Alpha of BAmr_SPEF to (Integer(BAmr_Real[1]))
              • Else - Actions
            • Special Effect - Set Time Scale of BAmr_SPEF to BAmr_SPEF_VALUE[4]
            • Special Effect - Set Orientation of BAmr_SPEF to yaw: (BAmr_SPEF_VALUE[8] + (Radians((Angle from BAmr_Point[1] to BAmr_Point[2])))), pitch: BAmr_SPEF_VALUE[9], roll: BAmr_SPEF_VALUE[10]
            • Special Effect - Destroy BAmr_SPEF
            • Custom script: call RemoveLocation(udg_BAmr_Point[1])
            • Custom script: call RemoveLocation(udg_BAmr_Point[2])
          • Else - Actions
        • -------- --------
        • -------- This sets the damage of spells and physical attacks, it will ignore rates below zero allowing you to set strictly spell shields or physical sheilds! --------
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • IsDamageSpell Equal to True
          • Then - Actions
            • If (BAmr_RESIST_SPELL Equal to 0.00) then do (Skip remaining actions) else do (Set DamageEventAmount = (DamageEventAmount x BAmr_RESIST_SPELL))
          • Else - Actions
            • If (BAmr_RESIST_PHYSICAL Equal to 0.00) then do (Skip remaining actions) else do (Set DamageEventAmount = (DamageEventAmount x BAmr_RESIST_PHYSICAL))
        • -------- --------
        • -------- This sets the damage to the percentage that the spell will absorb --------
        • Set DamageEventAmount = (DamageEventAmount x BAmr_ABSORBTION_PERCENTAGE)
        • -------- --------
        • Set BAmr_Total[BAmr_Akey] = (BAmr_Total[BAmr_Akey] + DamageEventAmount)
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • DamageEventAmount Less than (BAmr_DMG_Event - 0.01)
          • Then - Actions
            • Set BAmr_DMG_Event = (BAmr_DMG_Event - DamageEventAmount)
            • Set DamageEventPrevAmt = DamageEventAmount
            • Set DamageEventAmount = (DamageEventAmount - (DamageEventAmount x BAmr_ABSORBTION_PERCENTAGE))
            • If (DamageEventAmount Less than 0.00) then do (Set DamageEventAmount = 0.00) else do (Do nothing)
            • If (DamageEventAmount Greater than 0.00) then do (Set DamageEventType = DamageEventType) else do (Set DamageEventType = DamageTypeBlocked)
            • Set BAmr_Health[BAmr_Akey] = BAmr_DMG_Event
          • Else - Actions
            • Unit - Remove BAmr_BUFF buff from DamageEventTarget
            • Set DamageEventAmount = (DamageEventAmount - BAmr_DMG_Event)
            • Set DamageEventType = DamageTypeReduced
            • Set BAmr_Health[BAmr_Akey] = 0.00
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • BAmr_Segment_Missile_Type[BAmr_Akey] Equal to Default
          • Then - Actions
            • For each (Integer BAmr_Loop) from 1 to BAmr_Segment_Count[BAmr_Akey], do (Actions)
              • Loop - Actions
                • Set BAmr_Seg_CValue = ((BAmr_Segment_Count[BAmr_Akey] x BAmr_Akey) + (BAmr_Loop - 1))
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • BAmr_Total[BAmr_Akey] Greater than (BAmr_Max[BAmr_Akey] - ((BAmr_Max[BAmr_Akey] / (Real(BAmr_Segment_Count[BAmr_Akey]))) x (Real((BAmr_Loop - 1)))))
                  • Then - Actions
                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      • If - Conditions
                        • BAmr_Segment_Missile_State[BAmr_Seg_CValue] Equal to Alive
                      • Then - Actions
                        • Set BAmr_Point[3] = (Point((Position - X of BAmr_SegmentMissile[BAmr_Seg_CValue]), (Position - Y of BAmr_SegmentMissile[BAmr_Seg_CValue])))
                        • Set BAmr_Segment_Missile_State[BAmr_Seg_CValue] = Dead
                        • Special Effect - Destroy BAmr_SegmentMissile[BAmr_Seg_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])
                      • Else - Actions
                  • Else - Actions
                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      • If - Conditions
                        • (BAmr_Health[BAmr_Akey] - ((BAmr_Max[BAmr_Akey] / (Real(BAmr_Segment_Count[BAmr_Akey]))) x (Real((BAmr_Loop - 1))))) Less than or equal to (BAmr_Max[BAmr_Akey] / (Real(BAmr_Segment_Count[BAmr_Akey])))
                        • BAmr_Segment_Missile_State[BAmr_Seg_CValue] Equal to Alive
                        • Or - Any (Conditions) are true
                          • Conditions
                            • BAmr_Boolean[3] Equal to True
                            • BAmr_Boolean[4] Equal to True
                      • Then - Actions
                        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          • If - Conditions
                            • BAmr_Boolean[3] Equal to True
                          • Then - Actions
                            • Set BAmr_Real[2] = ((BAmr_Health[BAmr_Akey] - ((BAmr_Max[BAmr_Akey] / (Real(BAmr_Segment_Count[BAmr_Akey]))) x (Real((BAmr_Loop - 1))))) / ((BAmr_Max[BAmr_Akey] / (Real(BAmr_Segment_Count[BAmr_Akey]))) / BAmr_SEG_VALUE[7]))
                            • If (BAmr_Real[2] Less than BAmr_SEG_VALUE[8]) then do (Set BAmr_Real[2] = BAmr_SEG_VALUE[8]) else do (Do nothing)
                            • Special Effect - Set Scale of BAmr_SegmentMissile[BAmr_Seg_CValue] to BAmr_Real[2]
                          • Else - Actions
                        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          • If - Conditions
                            • BAmr_Boolean[4] Equal to True
                          • Then - Actions
                            • Set BAmr_Real[3] = ((BAmr_Health[BAmr_Akey] - ((BAmr_Max[BAmr_Akey] / (Real(BAmr_Segment_Count[BAmr_Akey]))) x (Real((BAmr_Loop - 1))))) / ((BAmr_Max[BAmr_Akey] / (Real(BAmr_Segment_Count[BAmr_Akey]))) / BAmr_SEG_VALUE[10]))
                            • If (BAmr_Real[3] Less than BAmr_SEG_VALUE[9]) then do (Set BAmr_Real[3] = BAmr_SEG_VALUE[9]) else do (Do nothing)
                            • Special Effect - Set Alpha of BAmr_SegmentMissile[BAmr_Seg_CValue] to (Integer(BAmr_Real[3]))
                          • Else - Actions
                      • Else - Actions
          • Else - Actions
            • Set BAmr_Seg_CValue = BAmr_Akey
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • BAmr_Boolean[3] Equal to True
              • Then - Actions
                • Set BAmr_Real[2] = (BAmr_Health[BAmr_Seg_CValue] / (BAmr_Max[BAmr_Seg_CValue] / BAmr_SEG_VALUE[22]))
                • If (BAmr_Real[2] Less than BAmr_SEG_VALUE[8]) then do (Set BAmr_Real[2] = BAmr_SEG_VALUE[8]) else do (Do nothing)
                • Special Effect - Set Scale of BAmr_SegmentMissile[BAmr_Seg_CValue] to BAmr_Real[2]
              • Else - Actions
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • BAmr_Boolean[4] Equal to True
              • Then - Actions
                • Set BAmr_Real[3] = (BAmr_Health[BAmr_Seg_CValue] / (BAmr_Max[BAmr_Seg_CValue] / BAmr_SEG_VALUE[10]))
                • If (BAmr_Real[3] Less than BAmr_SEG_VALUE[9]) then do (Set BAmr_Real[3] = BAmr_SEG_VALUE[9]) else do (Do nothing)
                • Special Effect - Set Alpha of BAmr_SegmentMissile[BAmr_Seg_CValue] to (Integer(BAmr_Real[3]))
              • 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
                • Set BAmr_Point[1] = (Position of BAmr_Picked_Unit)
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • BAmr_Segment_Missile_Type[BAmr_Akey] Equal to Default
                  • Then - Actions
                    • For each (Integer BAmr_Loop) from 1 to BAmr_Segment_Count[BAmr_Akey], do (Actions)
                      • Loop - Actions
                        • Set BAmr_Seg_CValue = ((BAmr_Segment_Count[BAmr_Akey] x BAmr_Akey) + (BAmr_Loop - 1))
                        • Set BAmr_Point[3] = (Point((Position - X of BAmr_SegmentMissile[BAmr_Seg_CValue]), (Position - Y of BAmr_SegmentMissile[BAmr_Seg_CValue])))
                        • Custom script: set udg_BAmr_Spef_Current_Height[udg_BAmr_Seg_CValue] = GetLocationZ(udg_BAmr_Point[1])
                        • 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_SEG_VALUE[1] + 15.00)
                          • Then - Actions
                            • -------- ORBITING --------
                            • Set BAmr_Current_Rot_Speed[BAmr_Akey] = (BAmr_Current_Rot_Speed[BAmr_Akey] + BAmr_SEG_VALUE[5])
                            • Set BAmr_Point[2] = (BAmr_Point[1] offset by BAmr_SEG_VALUE[1] towards (((360.00 / (Real(BAmr_SEGMENT_SPAWNED))) x (Real(BAmr_Loop))) + BAmr_Current_Rot_Speed[BAmr_Akey]) degrees)
                            • Special Effect - Set Position of BAmr_SegmentMissile[BAmr_Seg_CValue] to x: (X of BAmr_Point[2]), y: (Y of BAmr_Point[2]), z: ((BAmr_Spef_Current_Height[BAmr_Seg_CValue] + BAmr_SEG_VALUE[3]) + (Current flying height of BAmr_Picked_Unit))
                            • Special Effect - Set Orientation of BAmr_SegmentMissile[BAmr_Seg_CValue] to yaw: (BAmr_SEG_VALUE[14] + (Radians((Angle from BAmr_Point[1] to BAmr_Point[2])))), pitch: BAmr_SEG_VALUE[15], roll: BAmr_SEG_VALUE[16]
                          • Else - Actions
                            • -------- TRAVELING --------
                            • Set BAmr_Point[2] = (BAmr_Point[3] offset by BAmr_SEG_VALUE[6] towards (Angle from BAmr_Point[3] to BAmr_Point[1]) degrees)
                            • Special Effect - Set Position of BAmr_SegmentMissile[BAmr_Seg_CValue] to x: (X of BAmr_Point[2]), y: (Y of BAmr_Point[2]), z: ((BAmr_Spef_Current_Height[BAmr_Seg_CValue] + BAmr_SEG_VALUE[3]) + (Current flying height of BAmr_Picked_Unit))
                            • Special Effect - Set Orientation of BAmr_SegmentMissile[BAmr_Seg_CValue] to yaw: (BAmr_SEG_VALUE[17] + (Radians((Angle from BAmr_Point[3] to BAmr_Point[2])))), pitch: BAmr_SEG_VALUE[18], roll: BAmr_SEG_VALUE[19]
                        • -------- --------
                        • Custom script: call RemoveLocation(udg_BAmr_Point[2])
                        • Custom script: call RemoveLocation(udg_BAmr_Point[3])
                  • Else - Actions
                    • Set BAmr_Seg_CValue = BAmr_Akey
                    • Set BAmr_Point[3] = (Point((Position - X of BAmr_SegmentMissile[BAmr_Akey]), (Position - Y of BAmr_SegmentMissile[BAmr_Akey])))
                    • Custom script: set udg_BAmr_Spef_Current_Height[udg_BAmr_Akey] = GetLocationZ(udg_BAmr_Point[1])
                    • 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_SEG_VALUE[1] + 15.00)
                      • Then - Actions
                        • -------- ON UNIT --------
                        • Set BAmr_Current_Rot_Speed[BAmr_Akey] = (BAmr_Current_Rot_Speed[BAmr_Akey] + BAmr_SEG_VALUE[5])
                        • Special Effect - Set Position of BAmr_SegmentMissile[BAmr_Akey] to x: (X of BAmr_Point[1]), y: (Y of BAmr_Point[1]), z: ((BAmr_Spef_Current_Height[BAmr_Akey] + BAmr_SEG_VALUE[20]) + (Current flying height of BAmr_Picked_Unit))
                        • Special Effect - Set Orientation of BAmr_SegmentMissile[BAmr_Seg_CValue] to yaw: ((((Facing of BAmr_Picked_Unit) x 3.14) / 180.00) - BAmr_SEG_VALUE[21]), pitch: BAmr_SEG_VALUE[15], roll: BAmr_SEG_VALUE[16]
                      • Else - Actions
                        • -------- TRAVELING --------
                        • Set BAmr_Point[2] = (BAmr_Point[3] offset by BAmr_SEG_VALUE[6] towards (Angle from BAmr_Point[3] to BAmr_Point[1]) degrees)
                        • Special Effect - Set Position of BAmr_SegmentMissile[BAmr_Akey] to x: (X of BAmr_Point[2]), y: (Y of BAmr_Point[2]), z: ((BAmr_Spef_Current_Height[BAmr_Akey] + BAmr_SEG_VALUE[20]) + (Current flying height of BAmr_Picked_Unit))
                        • Special Effect - Set Orientation of BAmr_SegmentMissile[BAmr_Seg_CValue] to yaw: ((((Angle from BAmr_Point[3] to BAmr_Point[2]) x 3.14) / 180.00) + BAmr_SEG_VALUE[16]), pitch: BAmr_SEG_VALUE[18], roll: BAmr_SEG_VALUE[19]
                    • Custom script: call RemoveLocation(udg_BAmr_Point[2])
                    • Custom script: call RemoveLocation(udg_BAmr_Point[3])
                    • -------- --------
                • Custom script: call RemoveLocation(udg_BAmr_Point[1])
              • Else - Actions
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • BAmr_Segment_Missile_Type[BAmr_Akey] Equal to Default
                  • Then - Actions
                    • For each (Integer BAmr_Loop) from 1 to BAmr_Segment_Count[BAmr_Akey], do (Actions)
                      • Loop - Actions
                        • Set BAmr_Seg_CValue = ((BAmr_Segment_Count[BAmr_Akey] x BAmr_Akey) + (BAmr_Loop - 1))
                        • Set BAmr_Health[BAmr_Akey] = 0.00
                        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          • If - Conditions
                            • BAmr_Segment_Missile_State[BAmr_Seg_CValue] Equal to Alive
                          • Then - Actions
                            • Set BAmr_Point[3] = (Point((Position - X of BAmr_SegmentMissile[BAmr_Seg_CValue]), (Position - Y of BAmr_SegmentMissile[BAmr_Seg_CValue])))
                            • Set BAmr_Segment_Missile_State[BAmr_Seg_CValue] = Dead
                            • Special Effect - Destroy BAmr_SegmentMissile[BAmr_Seg_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])
                          • Else - Actions
                  • Else - Actions
                    • Set BAmr_Seg_CValue = BAmr_Akey
                    • Set BAmr_Point[3] = (Point((Position - X of BAmr_SegmentMissile[BAmr_Seg_CValue]), (Position - Y of BAmr_SegmentMissile[BAmr_Seg_CValue])))
                    • Set BAmr_Segment_Missile_State[BAmr_Seg_CValue] = Dead
                    • Set BAmr_Health[BAmr_Seg_CValue] = 0.00
                    • Special Effect - Destroy BAmr_SegmentMissile[BAmr_Seg_CValue]
                    • Special Effect - Create a special effect at BAmr_Point[3] using BAmr_EFFECTPATH[1]
                    • Special Effect - Set Position of (Last created special effect) to x: (Position - X of BAmr_SegmentMissile[BAmr_Seg_CValue]), y: (Position - Y of BAmr_SegmentMissile[BAmr_Seg_CValue]), z: (Position - Z of BAmr_SegmentMissile[BAmr_Seg_CValue])
                    • 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_Instances = (BAmr_Instances - 1)
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • BAmr_Instances 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:
    1A: Copy Pasta Damage Engine Folder over to your trigger editor in your map
    see Bribe's Damage Engine 5.1.1.1 for more details

    Step 2 - Install Bribe's Unit Indexer
    2A - Copy Pasta Unit Indexer Folder over to your trigger editor in your map

    Step 3 - 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

    Step 4 [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"

    More testing is required for this option, continue on your own time. (Note that Yaw & Roll essentially flipped in the current patch!)
    Step 5 [OPTIONAL] - how 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 that inspired me to make this.

    Foopad - for his work on my original request loooong time ago for a damage shield ability (Aka Ruined flesh from age of conan game.) back when us GUI dudes were banging rocks together.

    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)

    Hermit AGAIN - for his Hexagon Shield Model - Allowing not only player colours as per the previous model, but with fancy futuristic animated hexagons perfect for any Protoss shield!

    Vexorian - Excellent dummy model (Retired, using special effects to avoid using dummies)

    Looking_For_Help - Hashtable variant damage system

    MyPad - Suggesting to add "Stacking" & fixing the casting effect bug.

    Spellbound - Suggesting RGB Addition to Segments

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


  • Release 1.14-2 - 2019-06-17 - 11:27aM PST
    - Minor updated to Damage Engine 5.1.3.1

    Inform me of bugs please, frostboot hungers...

    Previous changelog
    Release 1.14-1 - 2019-06-09 - 8:44PM PST

    - Minor updated to Damage Engine 5.1.1.1
    - Minor Fixed Special effect from spawning in the middle of map! (Whoopsie)

    ==========================

    Release 1.14 - 2019-05-29 - 7:37PM PST
    • Major: uses new Damage Engine 5.0.0.0

    • Minor: Unit Indexer is no longer required by damage engine but I will release futher updates of the hashtables version
    • Minor Fixed Speical Effect orientation to match current patch changes
      - Changes can be found in Config, Block, & Periodic where the it pertains to the special effect "Orientation" essentially instead of modifying roll the update has changed it to yaw

    ----------------------------------------------------------------------------------------------------

    Release1.13.1 2019-05-01 at 4:49PM (PST)
    - Bugfix on Shield Life Display (Not required!) - Destroying a segment would result in the floating text lingering...

    ----------------------------------------------------------------------------------------------------

    Release 1.13 - 2019-04-30 at 3:00pm (PST)
    - Major -
    1. Added SEM - Simple Effect Mode, turns off the floating segments and makes it a singular effect overhead the target, Fade & Shrinking effects will still work provided the effect is not attached as special effect modification does not work on attached special effects. (Please refer to turtle of the cosmos for why blizzard has done this)
    2. Added Shield Life display option to test map tome, this displays the individual life of segments (i.e. 300 total shields will result in 100 each (assuming default values)
    -Minor-
    1. Overhauled triggers to include SEM
    2. Added SEM modifcations to bottom of Config, i.e. defaults for regular segments will not work for SEM, if SEM is on these modifications will overwrite allowing you to choose which one you want, note this is rather buggy on the Shield Life Display so do be careful!
    3. Angrily stared at variables in config to make sure nothing is duplicated or not connected to values elsewhere in the main triggers.
    4. Added some Boolean commands as I (can't be arsed)felt they didn't need to be added to the options, Type "Bones" followed directly with "Stack", "Skins", "Dim", "Fade", or "SEM" to toggled the respective Booleans found in the configuration. (example "BonesStack")

    • Details of Commands:
      Stack - Toggle Shield Stacking boolean, shields will now simply add the base cast on the current shield of the target

      Skins - Toggle Player Colour Shield Flare, default is set to chosen flavor, if toggled it will be set to player color

      Dim - Toggle Shield Flare "Dimming", Shield Flare will dim based on health of the shield

      Fade - Toggle Fade of Segments, Segments will fade based on health of the shield

      SEM - Toggle SEM, SEM removes the orbiting segments and creates only one overhead effect. (Might be buggy? Be Wary if you see anything!)
    ----------------------------------------------------------------------------------------------------

    Release 1.12 - 2019-04-25 at 9:22pm (PST)
    - Major -
    1. Added seperate Yaw, Pitch, & Roll to Travel and Orbit of segments movements.

    2. Added RGB Color customizations for segments, this already exists for the shield "flare" but I never thought to do so with the segments, Thanks Spellbound!

    3. Added "Dimming" & "Shrinking" of segments based on how much damage the individual segments have received, (Turn on the corresponding boolean to see!)
    -Minor-
    1. Merged redundant varibles into an arrayed variable (BAmr_SEG_VALUE[X])

    2. Cast & Block have been reworked slightly to incorperate the new "Dimming" & "Shrinking" changes to segments
    ----------------------------------------------------------------------------------------------------

    Release 1.11 - 2019-04-04 at 6:18pm (PST)
    • Bugfix - Special effect not ocurring when casting on unit with all segments active
    • Major - Added Stacking Boolean, casting on the same unit will Stack the value instead of resetting it, you can test this by turning on the "Check shield value" trigger (default off) and pressing ESC with a selected & shielded unit. *Credits to MyPad for the suggestion*
    • Minor bugfix, BAmr_Boolean[2] wasn't connected to the option in Block trigger
    • Minor bugfix, Remove Duplicate creation of special fx in cast trigger
    ----------------------------------------------------------------------------------------------------

    Release 1.10 - 2019-03-03 at 9:45am (PST)
    • Major: Segments are no longer dummy units, they are now special effects!
    • Major: Flavour Selection: I.e. @Pinzu's idea, Pre-selected "themes" over the special effects used by the spell
    • Major?: Damage Flare Intensity Boolean - I.e. hitting a unit with a low shield health will make the shield flare look darker and dimmer - (Included Threshold variable to make sure it doesn't go below 50.00 and dissapear before the shield ends.)
    • Minor: merged some redundant values into single variables.
    ----------------------------------------------------------------------------------------------------

    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.
    • fixed casting stats, strength stat was being added due to a ( * ) being a ( + )
    ----------------------------------------------------------------------------------------------------
    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

  • Bone Armor 1.13.1 | HIVE


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

Bone Armor 1.14.2 (Map)

  1. ColourWolfe

    ColourWolfe

    Joined:
    Oct 25, 2018
    Messages:
    22
    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:
    778
    Resources:
    2
    Spells:
    2
    Resources:
    2
    Let me know if there's something I can change
     
  3. Pinzu

    Pinzu

    Joined:
    Nov 30, 2007
    Messages:
    1,173
    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:
    778
    Resources:
    2
    Spells:
    2
    Resources:
    2
    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,173
    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:
    778
    Resources:
    2
    Spells:
    2
    Resources:
    2
    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:
    22
    Resources:
    0
    Resources:
    0
    Rainbow variation looks dope!
     
  8. Chaosy

    Chaosy

    Joined:
    Jun 9, 2011
    Messages:
    10,608
    Resources:
    18
    Maps:
    1
    Spells:
    11
    Tutorials:
    6
    Resources:
    18
    That is a freaking clever way to use a spell effect
     
  9. Sieben

    Sieben

    Joined:
    Nov 23, 2013
    Messages:
    642
    Resources:
    0
    Resources:
    0
    This spell is awesome! It's exactly what I needed. Thank you!
     
  10. Devalut

    Devalut

    Joined:
    Feb 9, 2009
    Messages:
    778
    Resources:
    2
    Spells:
    2
    Resources:
    2
  11. Nudl9

    Nudl9

    Joined:
    Nov 9, 2006
    Messages:
    2,072
    Resources:
    25
    Icons:
    11
    Skins:
    1
    Maps:
    13
    Resources:
    25
    The unit indexer overwrites custom values of units which is bad for this spell if your map relies on it.
     
  12. Devalut

    Devalut

    Joined:
    Feb 9, 2009
    Messages:
    778
    Resources:
    2
    Spells:
    2
    Resources:
    2
    KILLCIDE suggested using hashtables, perhaps that should be in the next update.
    Thank you for the reply Nudl9, do you mind giving my submission a rating so far?
     
  13. Nudl9

    Nudl9

    Joined:
    Nov 9, 2006
    Messages:
    2,072
    Resources:
    25
    Icons:
    11
    Skins:
    1
    Maps:
    13
    Resources:
    25
    Yeah no problem.
    I was thinking about using the spell, but the custom value thingy was a bit of a dealbreaker for me.
     
  14. Devalut

    Devalut

    Joined:
    Feb 9, 2009
    Messages:
    778
    Resources:
    2
    Spells:
    2
    Resources:
    2
    I'll see if I can't get this done tonight, if you have any other ideas let me know.

    ETA: I've just remembered that Unit Indexer is required for the damage detection, will this still cause you problems?

    ETA: This might take longer than a couple nights..
     
    Last edited: Mar 10, 2019
  15. Clanzion

    Clanzion

    Joined:
    Jul 4, 2016
    Messages:
    384
    Resources:
    0
    Resources:
    0
    Great spell, been needing this for some time now. Skips needing me to code my own. Thanks!
     
  16. Devalut

    Devalut

    Joined:
    Feb 9, 2009
    Messages:
    778
    Resources:
    2
    Spells:
    2
    Resources:
    2
    Last edited: Mar 17, 2019
  17. Nudl9

    Nudl9

    Joined:
    Nov 9, 2006
    Messages:
    2,072
    Resources:
    25
    Icons:
    11
    Skins:
    1
    Maps:
    13
    Resources:
    25
    Fucking sweet.
     
  18. Nudl9

    Nudl9

    Joined:
    Nov 9, 2006
    Messages:
    2,072
    Resources:
    25
    Icons:
    11
    Skins:
    1
    Maps:
    13
    Resources:
    25
    I made some tweaks to it and i gotta say i'm pretty happy with the results.
    Great work on the spell.

    I took the Poor Yorrick model and removed the missile sound and made it a little bigger.
    Instead of the green skulls, which looked rather intrusive if you have many units on screen.
     

    Attached Files:

  19. Devalut

    Devalut

    Joined:
    Feb 9, 2009
    Messages:
    778
    Resources:
    2
    Spells:
    2
    Resources:
    2
    Sweet, perhaps you could make it six segments and simply alternate between the Yorick model and that hidden bone model (SharedModels\Bones1) I think, I.e. 3 yoricks & 3 spinning bones.

    Also what project are you using It in I'd love to see!
    ETA: Nvm, I recognize the minimap Battle Royal!

    ETA2: You can modify the special effect scale if it's too small btw, just add the line under the cast portion when the special effect for the missile is created.
     
    Last edited: Mar 23, 2019