• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

Making a spell but something wrong with angle

Status
Not open for further replies.
Level 12
Joined
Nov 3, 2013
Messages
989
Makeing a spell where caster target enemy and other units in front of caster get pushed back while caster charge forward to target.

When I got to the point where I made it so that it should affect units in a cone PBAoE instead of circle PBAoE it seems like it's smaller and slightly tilted, somehow the entire cone is shifted more to the left of the caster.

I don't get how [Snippet below] fails. :vw_wtf:

  • -------- Check if target is within min and max angle --------
    • If - Conditions
      • And - All (Conditions) are true
        • Conditions
          • (Angle from Point_Caster to TempPoint_Target[1]) Greater than or equal to (Real_CasterFaceing - 90.00)
          • (Angle from Point_Caster to TempPoint_Target[1]) Less than or equal to (Real_CasterFaceing + 90.00)
  • Ability Set Constants
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- How Often Tirgger will execute --------
      • Set Real_PushFrequency = 0.05
      • -------- Maximum push distance --------
      • Set Real_PushMaxValue = 375.00
      • -------- Push distance per trigger execution --------
      • Set Real_PushDistancePerInterval = (Real_PushMaxValue x Real_PushFrequency)
      • -------- Make loop use variable in event --------
      • Trigger - Add to Ability Loop <gen> the event (Time - Every Real_PushFrequency seconds of game time)
  • Ability
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to dsf
    • Actions
      • -------- Caster Variables --------
      • Set Unit_Caster = (Triggering unit)
      • Set Point_Caster = (Position of Unit_Caster)
      • Animation - Change Unit_Caster's animation speed to 200.00% of its original speed
      • -------- Target Variables --------
      • Set Unit_Target = (Target unit of ability being cast)
      • Set TempPoint_Target[1] = (Position of Unit_Target)
      • -------- Angle Between Caster & Target --------
      • Set Real_CasterFaceing = (Angle from Point_Caster to TempPoint_Target[1])
      • Custom script: call RemoveLocation(udg_TempPoint_Target[1])
      • Trigger - Turn on Ability Loop <gen>
  • Ability Loop
    • Events
    • Conditions
    • Actions
      • -------- Set targets --------
      • Set UnitGroup_Targets = (Units within (Real_PushMaxValue - Real_PushDistancePerInterval) of Point_Caster matching (((Matching unit) Not equal to Unit_Caster) and ((Matching unit) Not equal to Unit_Target)))
      • -------- Move targets away from caster --------
      • Unit Group - Pick every unit in UnitGroup_Targets and do (Actions)
        • Loop - Actions
          • -------- Unit from group --------
          • Set TempUnit_Target = (Picked unit)
          • -------- Current X and Y --------
          • Set TempPoint_Target[1] = (Position of TempUnit_Target)
          • -------- Check if target is within min and max angle --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • And - All (Conditions) are true
                • Conditions
                  • (Angle from Point_Caster to TempPoint_Target[1]) Greater than or equal to (Real_CasterFaceing - 90.00)
                  • (Angle from Point_Caster to TempPoint_Target[1]) Less than or equal to (Real_CasterFaceing + 90.00)
            • Then - Actions
              • -------- Future X and Y --------
              • Set TempPoint_Target[2] = (TempPoint_Target[1] offset by Real_PushDistancePerInterval towards (Angle from Point_Caster to TempPoint_Target[1]) degrees)
              • -------- Future X as real for script later --------
              • Set TempX_Target = (X of TempPoint_Target[2])
              • -------- Future Y as real for script later --------
              • Set TempY_Target = (Y of TempPoint_Target[2])
              • -------- Remove location memory leaks --------
              • Custom script: call RemoveLocation(udg_TempPoint_Target[1])
              • Custom script: call RemoveLocation(udg_TempPoint_Target[2])
              • -------- Change unit X and Y through custom script --------
              • Custom script: call SetUnitX(udg_TempUnit_Target, udg_TempX_Target)
              • Custom script: call SetUnitY(udg_TempUnit_Target, udg_TempY_Target)
              • Special Effect - Create a special effect attached to the origin of TempUnit_Target using Abilities\Spells\Human\Feedback\ArcaneTowerAttack.mdl
              • Special Effect - Destroy (Last created special effect)
            • Else - Actions
      • -------- Count to determine when spell is over --------
      • Set Real_Count = (Real_Count + 1.00)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Real_Count Equal to (2.70 / Real_PushFrequency)
        • Then - Actions
          • Set Real_Count = 0.00
          • Animation - Change Unit_Caster's animation speed to 100.00% of its original speed
          • Trigger - Turn off (This trigger)
        • Else - Actions
 
Last edited:
Never use and all condition block unless it is inside an Or all condition block.

This spell is also not MUI.

It may look off because your above variables that determine the angle of movement does not equal a division of 360 degrees. Currently the variables equal 18.75 which goes around 19.2 times for a circle. Try changing it to something that equates to 360 degrees and see if it still looks off.
 
Status
Not open for further replies.
Top