• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Hunter's Mark v1.2

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
  • Like
Reactions: SadOnix and Thor
Hunter's Mark


Ability: hunter's mark
Level: 1/2/3/4

Effect: places the hunter's mark on the target, increasing the ranged attack power of all attackers against that target by 18/30/42/54. In addition, the target of this ability can always be seen by the hunter whether it turns invisible. Lasts for 20 seconds.

Cast range: 1000.
Cooldown: 1 second.
Mana cost: 80.


All instructions and others are into the map!!!

THE ORIGINAL ABILITY ALLOWS ONLY RANGED ATTACKS // I can't make this condition... :C

Comment if you find a LEAK, BUG, ERROR, etc. THANKS!!!

If you can, post the triggers please (I have the World Editor in spanish)



v1.0
____•First release
v1.1
____•Changed interval of "HM0003" trigger from 0.03 to 1.00
____•Added a new configurable variable:
Set SpellEventTrigger[1] = HM0001 <gen>
____•Added some unconfigurable variables
v1.2
____•Now the ability has only a target per hunter (hero)



Keywords:
wow, hunter, hunter's mark, mark, world, of, warcraft, world of warcraft, spell, amplifiews the damage, spell, blizzlike, nice, pretty, woman, liked,
Contents

Rainbow - Bribe's test map (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. 22:05, 20th Jul 2012 Magtheridon96: GetUnitLoc( ... ) creates a location object, and you aren't destroying it. Since you're using the custom scripts, you might as well avoid the BJs...

Moderator

M

Moderator

12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.

22:05, 20th Jul 2012
Magtheridon96:

  • GetUnitLoc( ... ) creates a location object, and you aren't destroying it. Since you're using the custom scripts, you might as well avoid the BJs. Also, currently, if s is not set to the string, it will crash the thread. This might also desync a game because the string table might not be in perfect sync for all players. This is how it's done in JASS:

    JASS:
    set tt = CreateTextTag()
                call SetTextTagPos(tt, GetUnitX(udg_DamageEventTarget), GetUnitY(udg_DamageEventTarget), 160)
                call SetTextTagText(tt, I2S(R2I(udg_DamageEventAmount)) + "!", 0.023)
                call SetTextTagColor(tt, 229, 0, 0, 0)
                call SetTextTagPermanent(tt, false)
                call SetTextTagVelocity(tt, 0, 0.0355)
                call SetTextTagVisibility(tt, GetLocalPlayer() == GetOwningPlayer(udg_DamageEventSource))
                call SetTextTagFadepoint(tt, 0.3)
                call SetTextTagLifespan(tt, 0.5)
                set tt = null

    I'm sure you can just put that into custom scripts. <:
  • The periodic trigger adds 0.03 to the duration variables, and yet it only runs once every second =o
  • You don't need to null the globals :/
  • The custom font and models in the testmap are not really necessary. I'll allow them to stay since you gave credits and since the file is only 180KB which is acceptable.
  • Since you're using GUI SpellEvent, you should at least remind the user to modify the index you're using to register the ability.
 
Level 19
Joined
Aug 8, 2007
Messages
2,765
Not looking at the spell, basing off of the tooltip, its just too simple. Is it object-only or is the enhanced damage done by triggers? either way, its just too simple
 
Level 19
Joined
Aug 8, 2007
Messages
2,765
People really need to read the triggers before they spout total shit. Go ahead take a look. A lot of effort was put into this spell, and above all it was done perfectly.
KhaosMachine, post the necessary triggers.

Are you looking at the systems he used? because he didnt make those. Other than that, its kinda inefficient and i have no idea what all this triggering is for when its so simple to do

  • HM0001
    • Events
    • Conditions
    • Actions
      • Set TempPlayer = (Triggering player)
      • Set ID = (Custom value of (Target unit of ability being cast))
      • Set HM_Unit_Target[ID] = (Target unit of ability being cast)
      • Set HM_Integer_Level[ID] = (Level of HM_Ability_Hero for (Triggering unit))
      • Set TargetPoint = (Position of HM_Unit_Target[ID])
      • Set HM_Time[ID] = 0.00
      • Custom script: call UnitRemoveAbility(udg_HM_Unit_Target[udg_ID], udg_HM_Buff)
      • Unit - Create 1 HM_UnitType_DummyCaster for TempPlayer at (Position of HM_Unit_Target[ID]) facing Default building facing degrees
      • Set TempUnit = (Last created unit)
      • Unit - Add Hunter's mark (unit) to TempUnit
      • Custom script: call IssueTargetOrder(udg_TempUnit, udg_HM_String_Order, udg_HM_Unit_Target[udg_ID])
      • Unit - Add a 0.50 second Generic expiration timer to TempUnit
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (HM_UnitGroup is empty) Equal to True
        • Then - Actions
          • Trigger - Turn on HM0003 <gen>
        • Else - Actions
      • Unit Group - Add HM_Unit_Target[ID] to HM_UnitGroup
      • Set TempUnit = No unit
      • Custom script: call RemoveLocation(udg_TargetPoint)
What is the point of this? to put the buff on the unit? Why cant you just use the buff of the ability...?

  • HM0003
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in HM_UnitGroup and do (Actions)
        • Loop - Actions
          • Set ID = (Custom value of (Picked unit))
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • HM_Time[ID] Less than or equal to HM_Real_Duration[HM_Integer_Level[ID]]
              • (HM_Unit_Target[ID] is alive) Equal to True
            • Then - Actions
              • Set HM_Time[ID] = (HM_Time[ID] + 0.03)
            • Else - Actions
              • Unit Group - Remove (Picked unit) from HM_UnitGroup
              • Custom script: call UnitRemoveAbility(udg_HM_Unit_Target[udg_ID], udg_HM_Buff)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (HM_UnitGroup is empty) Equal to True
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
Instead of these two triggers, cant you just set the buff of the ability to the buff used to increase damage? That would easily avoid all of this extra triggering. Essentially, its not changing anything, because you can still set the duration on the faerie fire ability.


e/ the base ability is channel. easier to switch that to slow/inner/faerie to produce the effects
 
Level 8
Joined
Dec 30, 2011
Messages
134
Are you looking at the systems he used? because he didnt make those. Other than that, its kinda inefficient and i have no idea what all this triggering is for when its so simple to do

  • HM0001
    • Events
    • Conditions
    • Actions
      • Set TempPlayer = (Triggering player)
      • Set ID = (Custom value of (Target unit of ability being cast))
      • Set HM_Unit_Target[ID] = (Target unit of ability being cast)
      • Set HM_Integer_Level[ID] = (Level of HM_Ability_Hero for (Triggering unit))
      • Set TargetPoint = (Position of HM_Unit_Target[ID])
      • Set HM_Time[ID] = 0.00
      • Custom script: call UnitRemoveAbility(udg_HM_Unit_Target[udg_ID], udg_HM_Buff)
      • Unit - Create 1 HM_UnitType_DummyCaster for TempPlayer at (Position of HM_Unit_Target[ID]) facing Default building facing degrees
      • Set TempUnit = (Last created unit)
      • Unit - Add Hunter's mark (unit) to TempUnit
      • Custom script: call IssueTargetOrder(udg_TempUnit, udg_HM_String_Order, udg_HM_Unit_Target[udg_ID])
      • Unit - Add a 0.50 second Generic expiration timer to TempUnit
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (HM_UnitGroup is empty) Equal to True
        • Then - Actions
          • Trigger - Turn on HM0003 <gen>
        • Else - Actions
      • Unit Group - Add HM_Unit_Target[ID] to HM_UnitGroup
      • Set TempUnit = No unit
      • Custom script: call RemoveLocation(udg_TargetPoint)
What is the point of this? to put the buff on the unit? Why cant you just use the buff of the ability...?

  • HM0003
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in HM_UnitGroup and do (Actions)
        • Loop - Actions
          • Set ID = (Custom value of (Picked unit))
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • HM_Time[ID] Less than or equal to HM_Real_Duration[HM_Integer_Level[ID]]
              • (HM_Unit_Target[ID] is alive) Equal to True
            • Then - Actions
              • Set HM_Time[ID] = (HM_Time[ID] + 0.03)
            • Else - Actions
              • Unit Group - Remove (Picked unit) from HM_UnitGroup
              • Custom script: call UnitRemoveAbility(udg_HM_Unit_Target[udg_ID], udg_HM_Buff)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (HM_UnitGroup is empty) Equal to True
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
Instead of these two triggers, cant you just set the buff of the ability to the buff used to increase damage? That would easily avoid all of this extra triggering. Essentially, its not changing anything, because you can still set the duration on the faerie fire ability.


e/ the base ability is channel. easier to switch that to slow/inner/faerie to produce the effects

Man please, first read the Tool Tip, then test the Spell and last comment that you want... I use Faerie Fire because with that buff you CAN SEE THE TARGET IF HE IS OUT OF VISIBILITY RANGE O IS INVISIBLE... ;)
 
Level 19
Joined
Aug 8, 2007
Messages
2,765
Man please, first read the Tool Tip, then test the Spell and last comment that you want... I use Faerie Fire because with that buff you CAN SEE THE TARGET IF HE IS OUT OF VISIBILITY RANGE O IS INVISIBLE... ;)

so use the faerie fire buff as the buff that marks the increase of damage/!?!?!?!?!?!?
 
Are you sure? I don't need to null global variableS? :S:S:S:

With other spells other people asked me to do IT.. If you can explain me why that ? Thank you very much..

There is a difference between nulling and removing.
People probably asked you to remove leaks.
Example:
  • Custom script: call RemoveLocation(udg_YouLoc)
Nulling is when you set something = nothing like
  • Set udg_Unit = No Unit
But remember, you must null local variables (Not directly in gui so don't worry about it)
Also don't double post. People will get on your case for that xD
 
Top