• 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.

Posion Nova Skill

Status
Not open for further replies.

311

311

Level 4
Joined
May 12, 2019
Messages
73
Would a poison nova skill (just the artwork) be easy to make?
I just want poison (chimera acid most likely) to spread in a circle from me.
wasn't able to find anything in spells, but as far as damage, that should easy since I see other spells I can use as a base, so its just the animation I want

(Deleted previous question because it was able to be solved, and couldn't find how to delete thread, so just made a new question completely.
Deleted old attachment, as it had nothing to do with the new question and was unrelated sorry about that.

as far as my old trigger I had issues with it was solved with this, so it ended up being pretty easy (again this has nothing to do with my poison nova at all)
1657681548882.png
 
Last edited:

Dr Super Good

Spell Reviewer
Level 64
Joined
Jan 18, 2005
Messages
27,287
First trigger image fails because the range 51 to 79 inclusive is not covered by statements (no actions run).
Second trigger image fails because the tests use a random number in a range to test against a random number in another range so is very unlikely to pass.

What you want to do is use a chain of if-then-else actions (the ones with a condition and 2 action blocks) where the next test is run nested in the else block. It becomes highly unreadable but does the logic you want since the else statement will only be executed if the random number is outside the range of the current test. You would then test if the number is less than or equal to the 50, 70, 85, 95 in sequence. The last one, less than or equal to 100, is always true and can only be reached if all other tests fail and so does not need to be checked.

In JASS or Lua it is possible to do this in a much more readable way by using the else-if functionality rather than having to nest.

A more readable way in GUI would be to data feed the system from arrays representing a list of ranges and outcomes and use a loop that tests the random number for each element in the list. This avoids the ugly block nesting but does require an initialisation trigger to setup the data.
 

Dr Super Good

Spell Reviewer
Level 64
Joined
Jan 18, 2005
Messages
27,287
This is a double post due to topic creator changing question after initial post.
Would a poison nova skill (just the artwork) be easy to make?
I just want poison (chimera acid most likely) to spread in a circle from me.
wasn't able to find anything in spells, but as far as damage, that should easy since I see other spells I can use as a base, so its just the animation I want
There should be some in the spell section, if the search works...

There are two ways to make it. The first would be to fire a lot of projectiles using a projectile system in a ring around the unit and then use those to apply impact damage. An example of such projectiles could be a modified shockwave spell cast by dummies instead of a system.

The other approach would be to fire projectiles as graphic dummies in a nova shape, and then apply the damage by increasing a search radius centred at the cast location over time. To prevent double damage a unit group is used to track those units which are damaged by the cast and only units not in that group have the damage applied to them.
 

311

311

Level 4
Joined
May 12, 2019
Messages
73
the 1st system, how would I make it so they shoot in a circle around me outward? (easy or something that requires jass/scripting?) (the damage doesn't matter) as I would just use howl of terror as a base skill, set the life regen to -HP, and now they drain so much HP over the duration, so I don't need to trigger the damage at all, and get the exact effect I want for damage
 

311

311

Level 4
Joined
May 12, 2019
Messages
73
I know how to create invisible dummy units and cast an ability(I think), but what coordinates would I need to do a perfect circle?
 
Level 45
Joined
Feb 27, 2007
Messages
5,578
Point with Polar Offset ("polar projection" is what this mathematical operation is called) takes a source point and creates a new point for you given a distance and angle from the source point. You split the 360 degrees of the circle up into N segments each covering 360/N degrees and project outward the same distance using a For each integer... looop. This will give you N points that form a circle:
  • Set N = 16
  • Set Radius = 250.00
  • Set ArcAngle = (360.00 / Real(N))
  • Set Center = (Center of (Playable Map Area))
  • For each (Integer A) from 1 to N do (Actions)
    • Loop - Actions
      • Set TempPoint = (Center offset by Radius towards (ArcAngle x (Real(Integer A))) degrees)
      • -------- Do something with TempPoint here --------
      • Custom script: call RemoveLocation(udg_TempPoint)
  • Custom script: call RemoveLocation(udg_Center)
Note that this circle of N points always has one point directly east of the starting location (because east is the direction of 0 degrees), from which all the other points are spaced evenly. This likely doesn't matter at all for large values of N, but for small values (N <= 5, say) it may be noticeably 'weird'. For N = 3, for example, it will always look like this:
Code:
-   
     -
-
And never like this:
Code:
   - 

-     -
This can be changed by defining a starting direction and then incrementing your angle from there:
  • Set N = 16
  • Set Radius = 250.00
  • Set Center = (Center of (Playable Map Area))
  • Set StartDirection = (Random point in (Playable Map Area))
  • Set ArcAngle = (360.00 / Real(N))
  • Set StartAngle = (Angle between Center and StartDirection)
  • For each (Integer A) from 1 to N do (Actions)
    • Loop - Actions
      • Set TempPoint = (Center offset by Radius towards (StartAngle + (ArcAngle x (Real(Integer A)))) degrees)
      • -------- Do something with TempPoint here --------
      • Custom script: call RemoveLocation(udg_TempPoint)
  • Custom script: call RemoveLocation(udg_Center)
  • Custom script: call RemoveLocation(udg_StartDirection)
Again, this matters little for values of N that are sufficiently large as to not be noticeable.
 
Status
Not open for further replies.
Top