Multiple questions

hopy

Active Member
Reaction score
64
As usual I've saved all my questions so that I can place all of them into one thread, thus preventing spam and makes it a bit easyr to keep track of everything. :p

I'll add the solutions I get below the questions when it's solved for people who have the same problem. I guess this could come in handy for some person at some time.


Question one: The Undispellable Debuff. - Solved, thank you.

I guess this might be a bit of a nooby question but, how do I make sure a debuff (a custom faerie fire in this case) undispellable, not affected by spell steal etc?

It's supposed to reveal a players hero afther his/her townhall has been destroyed. I guess this could be done using triggers to reveal the unit, but I wanted the debuff to remind people they are visable without having to spam them messages. :p

1. An undispelable buff is tricky. You can add an aura with a Disabled Spell Book which targets only self and then trigger the effect (by sharing vision of the unit through triggers), but this method will not work on units that transform (e.g. Metamorphosis) because auras bug when cast by transformed units. Alternatively, you can add a buff that isn't dispelable (such as Drunken Haze or Shadowstrike) but it will still be removeable by things like Invulnerability and Spell Immunity. The best solution would be not to use a buff for an effect you don't want to be removed.

Question two: Trigger events. - Still need some help please.

This is my most important question, realy need some help on this one. :p

Well, the problem is: Since I have 4 teleporters on my map (North, west, south and east) I use a selection Dialog thingy to let the players choose were to go, for I have not found a better way of doing this yet.

It usualy works, BUT when a Second Player (for example: Player 2) enters a teleporter region while the Other Player (For example: Player 1) is still buisy selecting were to teleport to the Second Player (player 2) will get an empty dialog window without any buttons.

The main trigger looks like this:
Trigger:
  • Teleporter S
    • Events
      • Unit - A unit enters Waygate South <gen>
    • Conditions
      • ((Triggering unit) is A Hero) Equal to True
      • ((Triggering unit) has buff [Teleporter] ) Equal to False
    • Actions
      • Dialog - Clear Teleporter2[(Player number of (Owner of (Triggering unit)))]
      • Dialog - Change the title of Teleporter2[(Player number of (Owner of (Triggering unit)))] to Teleport to
      • Dialog - Create a dialog button for Teleporter2[(Player number of (Owner of (Triggering unit)))] labelled North
      • Set Teleport_North_West = (Last created dialog Button)
      • Dialog - Create a dialog button for Teleporter2[(Player number of (Owner of (Triggering unit)))] labelled East
      • Set Teleport_North_East = (Last created dialog Button)
      • Dialog - Create a dialog button for Teleporter2[(Player number of (Owner of (Triggering unit)))] labelled West
      • Set Teleport_South_East = (Last created dialog Button)
      • Dialog - Create a dialog button for Teleporter2[(Player number of (Owner of (Triggering unit)))] labelled Cancel
      • Set Teleport_Cancel = (Last created dialog Button)
      • Dialog - Show Teleporter for (Owner of (Triggering unit))
      • Set Teleport_Hero[(Player number of (Owner of (Triggering unit)))] = (Triggering unit)


Well now, so far everything would be ok, but... in the next trigger which is supposed to trigger when a player presses a button in the dialog I cannot select the (Player number of (Owner of (Triggering unit))) which would just be (Triggering Player) in this case.

Trigger:
  • North
    • Events
      • Dialog - A dialog button is clicked for Teleporter


How can I get this to work? Are there different way's of making dialogs for multiple players at once? In short: How can I select the Array in the Event of the second trigger.


Question three: Movement speed reduced to 0%. - Solved, thank you.
Is it posible to reduce a units movement speed to 0? Making them unable to move but still be able to cast spells, attack etc.

I tried achieving this by casting a cripple with a movement speed reducement of 10.00. however the units still moved with what looked like 50% speed or something.

I also couldn't find this option anywere in the triggers, Does anyone have any idea how to create this?

you have to set this in gameplay constants. there is a value for the min and max movement speed of units. by default the min movement speed is set to 150, that means even with movement speed reduction the speed cannot drop below 150. set this to 0 and your spells can decrease movement speed until the target is unmoveable.

Question four: Tornadow of Flame. - Solved, thank you.

Alway's those weird ability's that just dont want to work.
>> The Shaman combines his powers over Wind and Fire to create a Tornado of Flames that burns nearby enemy units and buildings each second, and leaves a trail of flames behinde it. The Shaman has to stay channeling to maintain the spel.

Trigger:
  • Flame Tornado
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Tornado of Flames [Shammy]
    • Actions
      • Wait 0.50 game-time seconds
      • Set TF_Group = (Units owned by (Owner of (Triggering unit)) of type Tornado)
      • Unit Group - Pick every unit in TF_Group and do (Actions)
        • Loop - Actions
          • Set TF_Unit = (Picked unit)
          • Unit - Set level of Permanent Immolation (Neutral Hostile 1) for TF_Unit to (Level of Tornado of Flames [Shammy] for (Triggering unit))
          • For each (Integer A) from 1 to (3 + (Level of Tornado of Flames [Shammy] for (Triggering unit))), do (Actions)
            • Loop - Actions
              • Wait 5.00 game-time seconds
              • Set ToF_Point = (Position of TF_Unit)
              • Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at ToF_Point facing Default building facing degrees
              • Unit - Add Flame Strike [Tornado] [Shammy] to (Last created unit)
              • Unit - Set level of Flame Strike [Tornado] [Shammy] for (Last created unit) to (Level of Tornado of Flames [Shammy] for (Triggering unit))
              • Unit - Order (Last created unit) to Human Blood Mage - Flame Strike ToF_Point
              • Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
              • Custom script: call RemoveLocation (udg_ToF_Point)
      • Custom script: call DestroyGroup (udg_TF_Group)


-> So, what it's supposed to do?: Create a custom Fire Strike at the location of the Tornadow.
-> What it does now?: Nothing at all.

Am I just blind? Anyone see a problem with this trigger.

3. Well first of all, stop using game-time seconds because it's not more accurate than wait actions (it's always about 0.10 to 0.30 seconds off) and if you want accuracity, use a timer. Game-time seconds are affected by the speed setting that can be set when hosting the game, and if the player does this it will screw your trigger over.

What's causing your trigger to bug is the fact that you have a wait action inside a loop using a global variable (Integer A). I've written a tutorial on why your loop bugs here. Alternatively, you could use a periodic time event instead, as that would be more precise.

Question five: Some Names. - Still need some help please.

I'm horrible at coming up with cool names. Sometimes I get some brilliant idea's, but I've been trying to get some nice names for these things for ages now, and I usualy don't ask for help on this kind of things bit I'm realy sick of it now and I want it to be finished. :p

What I need names for:
- An upgrade for a Spider unit to increase its movement speed. So far it's called: 8-leg speed .. which is ... Bleh.
Description: Increases the movement speed of Spiderlings.
Icon: Spider Ring (can change this if anyone has nice idea's)

- A sheep unit ability. So far it's called: Sheep Speed which is ... bleh as well ... and unlogical.
Description: Increases the movement and health regeneration speed of the Sheeps.
Icon: Endurance Aura (can change this if anyone has nice idea's)

- A Fel Hunter / Fel Beast / Hellhound etc hero names.
The Class is named: Mana Hunter, and it's based on ... draining mana and dispelling and stuff. Icon: Fel Hunter
So ... if you had a pet Fel Beast, what would you call it?

- A Dreanai weapon and armor upgrade name. So far it's called: Iron Forged Weapons because I just copie pasted the human upgrade and couldn't think of any names ... at all. I tried reading Wowwiki for idea's but didn't get any idea's at all. xD

The Dreanai use mainly those weird Axe/scythe weapons in WIII and claws. I cant think of any special kind of Material the Dreanai would use or Enchantments they would place upon their weapons to make them stronger. Any idea's?


Thanks in advance for any help, and +rep to anyone who solves one of these questions for me. :)

(Small thing: Anyone know a program that allows your PC to play .acm files?)
 

Accname

2D-Graphics enthusiast
Reaction score
1,462
Question 1).
One solution might be playing around with the "priority for spell steal" (apri) value of the spell you have. though i never looked at this data it might be important for the solution of your problem, but dont ask me how this works.
however this will only help for spell steal not for dispell for example.

another way around could be triggering the effect as you said and adding a custom ability which is passive giving a buff to self (like a tornado slow aura (hidden button even without spellbook) without any effect).

Question 3).
you have to set this in gameplay constants. there is a value for the min and max movement speed of units. by default the min movement speed is set to 150, that means even with movement speed reduction the speed cannot drop below 150. set this to 0 and your spells can decrease movement speed until the target is unmoveable.
i would suggest using tornado slow aura as a passive ability for this.
 

hopy

Active Member
Reaction score
64
Question 3).
you have to set this in gameplay constants. there is a value for the min and max movement speed of units. by default the min movement speed is set to 150, that means even with movement speed reduction the speed cannot drop below 150. set this to 0 and your spells can decrease movement speed until the target is unmoveable.
i would suggest using tornado slow aura as a passive ability for this.

Alright, this sounds great. But I gues there's a reason Blizz put that option in the game. Like... Most likely to prevent multiple slows and stuff ... anyway's I'll try this out and see if I encounter any problems. :) Thank you
 

Accname

2D-Graphics enthusiast
Reaction score
1,462
Question 2).
well, i dont know much about dialogues, most probably because i hate them i believe. the problem i have with dialogues is mainly that they stop players chat, well but thats offtopic i guess.

my suggestion (only suggestion i dont know for sure) would be for you to make a seperate dialogue variable (like Teleporter[playernumber of (triggering player))]) for each player.
when a dialogue button for a specific dialogue is clicked you know which player did it because each player got his/her own dialogue.
 

hopy

Active Member
Reaction score
64
Question 2).
well, i dont know much about dialogues, most probably because i hate them i believe. the problem i have with dialogues is mainly that they stop players chat, well but thats offtopic i guess.

my suggestion (only suggestion i dont know for sure) would be for you to make a seperate dialogue variable (like Teleporter[playernumber of (triggering player))]) for each player.
when a dialogue button for a specific dialogue is clicked you know which player did it because each player got his/her own dialogue.

face palm
That was exactly what I was doing :p

Trigger:
  • Teleporter S
    • Events
      • Unit - A unit enters Waygate South <gen>
    • Conditions
      • ((Triggering unit) is A Hero) Equal to True
      • ((Triggering unit) has buff [Teleporter] ) Equal to False
    • Actions
      • Dialog - Clear Teleporter2[(<b>Player number of (Owner of (Triggering unit)))</b>]
      • Dialog - Change the title of Teleporter2[<b>(Player number of (Owner of (Triggering unit)))</b>] to Teleport to
      • Dialog - Create a dialog button for Teleporter2[<b>(Player number of (Owner of (Triggering unit)))</b>] labelled North
      • Set Teleport_North_West = (Last created dialog Button)
      • Dialog - Create a dialog button for Teleporter2[<b>(Player number of (Owner of (Triggering unit)))</b>] labelled East
      • Set Teleport_North_East = (Last created dialog Button)
      • Dialog - Create a dialog button for Teleporter2[<b>(Player number of (Owner of (Triggering unit)))</b>] labelled West
      • Set Teleport_South_East = (Last created dialog Button)
      • Dialog - Create a dialog button for Teleporter2[<b>(Player number of (Owner of (Triggering unit)))</b>] labelled Cancel
      • Set Teleport_Cancel = (Last created dialog Button)
      • Dialog - Show Teleporter for (Owner of (Triggering unit))
      • Set Teleport_Hero[(Player number of (Owner of (Triggering unit)))] = (Triggering unit)

The problem is, as mentioned above, that in the second trigger (The "Player presses a dialog button" trigger) it's imposible to select the "Triggering Player" part.

So ... when I try that I can only select the Variable: Teleporter2[And I cannot select the stuff I want here]
 

canons200

New Member
Reaction score
50
question 2) try alternative method? instead of dialog, create another place as teleport zone, if your unit enter the waygate, send him to the teleport zone, then from there, create more waygate which will enable you to teleport to east,south,west and north?

question 4) try to store your dummy as variable, not last created unit, and order the variable to do action.

i am hopeless in setting name, mostly i will just form the name from the outlook or the shape.
 

hopy

Active Member
Reaction score
64
First of all, thank you for the reply. Sorry for replying a bit late but I'm usualy asleep at 5am :p

question 2) try alternative method? instead of dialog, create another place as teleport zone, if your unit enter the waygate, send him to the teleport zone, then from there, create more waygate which will enable you to teleport to east,south,west and north?
Yea I tought of that too, but I dont realy have enough space in my map for an entire teleporter zone. And since I've seen multiple dialogs at once in other maps befor (Kodo tag xtreme for example) I tought this methode would be best.

And I have this very same problem with another trigger, which is a timer... but once again I cannot select "Timer[1] expires" or something in the event.

question 4) try to store your dummy as variable, not last created unit, and order the variable to do action.
I'm not 100% sure how this should help ... since the variable would just be the same as (Last created unit), and a new dummy unit is created every loop. But I'll try it out.

i am hopeless in setting name, mostly i will just form the name from the outlook or the shape.

Yea, I usualy try that as well, or look on Wowwiki or stuff for inspiration. But I realy cant think of anything at all. :p
 

Happysmiley

New Member
Reaction score
22
I'm not sure if anyone said this before, but for your flame tornado ability, waits inside loops won't work. Create a trigger with a periodic event instead and use the first trigger to run the periodic event one. This should work better :)
 

hopy

Active Member
Reaction score
64
I'm not sure if anyone said this before, but for your flame tornado ability, waits inside loops won't work. Create a trigger with a periodic event instead and use the first trigger to run the periodic event one. This should work better :)

Realy? I once heared about that... but later people told me waits did work in loops, so I wasn't sure. xD I'll try that, thank you very much
 

Accname

2D-Graphics enthusiast
Reaction score
1,462
waits do work in loops.
however most variables like attacked unit / target unit of issued ability / etc etc might be overwritten or nulled, and the trigger will not be multi instanceable.
 

hopy

Active Member
Reaction score
64
waits do work in loops.
however most variables like attacked unit / target unit of issued ability / etc etc might be overwritten or nulled, and the trigger will not be multi instanceable.

D:
There we go again xD people tell me waits dont work and than someone else tells me it does work. :p Very confusing. D:

However, the Variables cant be overwritten in this trigger because:
- The tornadow is saved in the variable TF_Unit
- This is the only running trigger
- There are NO waits between the actions that use: "last created unit", "Triggering Unit" or "Picked Unit"

4:
Tornado of Fire:
Does the TF_Unit have the ability?

Yea he does have it, he gets it in the trigger.

Trigger:
  • Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at ToF_Point facing Default building facing degrees
    • Unit - Add Flame Strike [Tornado] [Shammy] to (Last created unit)
    • Unit - Set level of Flame Strike [Tornado] [Shammy] for (Last created unit) to (Level of Tornado of Flames [Shammy] for (Triggering unit))
 

NotInTheFace

Member
Reaction score
17
The other variable that could be overwritten is the Integer A variable that's used behind the scenes. This is especially bad because it could cause the loop to never terminate.

But since you said it's the only trigger running, the problem must lie elsewhere.

Off the top of my head, I saw one thing that could be causing problems. IIRC permanent immolation doesn't change its effects if you change its level, so that part of the trigger won't do anything.

I think the flame strikes should be happening though, as long as the caster is still channeling the tornado after 5.5/10.5/15.5/20.5 seconds. Not sure what location would be returned if the tornado is gone.
 

NotInTheFace

Member
Reaction score
17
I have verified that it's the wait inside of the loop that's causing the trigger to not work. Here's what I did:

Trigger:
  • Tornado
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Tornado
    • Actions
      • Wait 0.50 game-time seconds
      • Set TF_Group = (Units owned by (Owner of (Triggering unit)) of type Tornado)
      • Custom script: call BJDebugMsg(&quot;Got Group&quot;)
      • Unit Group - Pick every unit in TF_Group and do (Actions)
        • Loop - Actions
          • Custom script: call BJDebugMsg(&quot;In ForGroup&quot;)
          • Custom script: call BJDebugMsg(&quot;Trigger Unit is &quot; + GetUnitName(GetTriggerUnit()))
          • Set TF_Unit = (Picked unit)
          • Custom script: call BJDebugMsg(&quot;Tornado Unit is &quot; + GetUnitName(udg_TF_Unit))
          • For each (Integer A) from 1 to (3 + (Level of Tornado for (Triggering unit))), do (Actions)
            • Loop - Actions
              • Custom script: call BJDebugMsg(&quot;In Loop&quot;)
              • Custom script: call BJDebugMsg(&quot;Trigger Unit is &quot; + GetUnitName(GetTriggerUnit()))
              • Custom script: call BJDebugMsg(&quot;Tornado Unit is &quot; + GetUnitName(udg_TF_Unit))
              • Wait 5.00 game-time seconds
              • Custom script: call BJDebugMsg(&quot;After Wait&quot;)
              • Custom script: call BJDebugMsg(&quot;Trigger Unit is &quot; + GetUnitName(GetTriggerUnit()))
              • Custom script: call BJDebugMsg(&quot;Tornado Unit is &quot; + GetUnitName(udg_TF_Unit))
              • Set ToF_Point = (Position of TF_Unit)
              • Custom script: call BJDebugMsg(&quot;Tornado Location is &quot; + R2S(GetLocationX(udg_ToF_Point)) + &quot;, &quot; + R2S(GetLocationY(udg_ToF_Point)))
              • Unit - Create 1 Rockfall Dummy for (Owner of (Triggering unit)) at ToF_Point facing Default building facing degrees
              • Unit - Add Flame Strike to (Last created unit)
              • Unit - Set level of Flame Strike for (Last created unit) to (Level of Tornado for (Triggering unit))
              • Unit - Order (Last created unit) to Human Blood Mage - Flame Strike ToF_Point
              • Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
              • Custom script: call RemoveLocation(udg_ToF_Point)
      • Custom script: call DestroyGroup(udg_TF_Group)

The "In Loop" message comes out, but the "After Wait" message never does.
 

Bogrim

y hello thar
Reaction score
154
1. An undispelable buff is tricky. You can add an aura with a Disabled Spell Book which targets only self and then trigger the effect (by sharing vision of the unit through triggers), but this method will not work on units that transform (e.g. Metamorphosis) because auras bug when cast by transformed units. Alternatively, you can add a buff that isn't dispelable (such as Drunken Haze or Shadowstrike) but it will still be removeable by things like Invulnerability and Spell Immunity. The best solution would be not to use a buff for an effect you don't want to be removed.

2. I haven't worked with Dialogs before so I can't give you a precise answer to your second question, but Dialog Buttons are saved as variables as well, so essentially I'd suggest you just use 4 variables and 4 triggers. For instance:
Trigger:
  • Dialog
    • Events
      • Dialog - A dialog button is clicked for Dialog
    • Conditions
      • (Clicked dialog button) Equal to Dialog_Button_North[(Player number of (Triggering player))]


3. Well first of all, stop using game-time seconds because it's not more accurate than wait actions (it's always about 0.10 to 0.30 seconds off) and if you want accuracity, use a timer. Game-time seconds are affected by the speed setting that can be set when hosting the game, and if the player does this it will screw your trigger over.

What's causing your trigger to bug is the fact that you have a wait action inside a loop using a global variable (Integer A). I've written a tutorial on why your loop bugs here. Alternatively, you could use a periodic time event instead, as that would be more precise.

5. Use Wikipedia.com and Thesaurus.com to find names for your skills. For instance, search for spiders on wikipedia and find some key word in regards to their movement. ("Light Carapaces").
 

hopy

Active Member
Reaction score
64
1. An undispelable buff is tricky. You can add an aura with a Disabled Spell Book which targets only self and then trigger the effect (by sharing vision of the unit through triggers), but this method will not work on units that transform (e.g. Metamorphosis) because auras bug when cast by transformed units. Alternatively, you can add a buff that isn't dispelable (such as Drunken Haze or Shadowstrike) but it will still be removeable by things like Invulnerability and Spell Immunity. The best solution would be not to use a buff for an effect you don't want to be removed.

Thats to bad, was kinda hoping there was an option like for Spellsteal and such. Thank you.

2. I haven't worked with Dialogs before so I can't give you a precise answer to your second question, but Dialog Buttons are saved as variables as well, so essentially I'd suggest you just use 4 variables and 4 triggers. For instance:
Trigger:
  • Dialog
    • Events
      • Dialog - A dialog button is clicked for Dialog
    • Conditions
      • (Clicked dialog button) Equal to Dialog_Button_North[(Player number of (Triggering player))]


This would just make different buttons for everyone but ... wouldn't the Dialog itself be overwritten was well?

I'll have to open my WE first so I can check this. :p Slow PC's ftl. D:

-------------------------------------------------
Edit:
I just noticed that a Dialog trigger usualy starts with:

Trigger:
  • Teleporter S
    • Events
      • Unit - A unit enters Waygate South &lt;gen&gt;
    • Conditions
      • ((Triggering unit) is A Hero) Equal to True
      • ((Triggering unit) has buff [Teleporter] ) Equal to False
    • Actions
      • Dialog - Clear Teleporter2[(Player number of (Owner of (Triggering unit)))

The Clear Teleporter2 part ... shouldn't that Clear every Dialog that uses Dialog 2? I'm not sure ... I havn't tested it yet because I can only test this with 2 players I think (Cant move while a dialog is active)
So I think that even if I replace all those buttons it would still wouldn't work, not sure though.
-------------------------------------------------

3. Well first of all, stop using game-time seconds because it's not more accurate than wait actions (it's always about 0.10 to 0.30 seconds off) and if you want accuracity, use a timer. Game-time seconds are affected by the speed setting that can be set when hosting the game, and if the player does this it will screw your trigger over.

What's causing your trigger to bug is the fact that you have a wait action inside a loop using a global variable (Integer A). I've written a tutorial on why your loop bugs here. Alternatively, you could use a periodic time event instead, as that would be more precise.
So basicly the Intreger A loop will be overwritten I'm guessing?

I'll read your tutorial. :p Thank you very much.

5. Use Wikipedia.com and Thesaurus.com to find names for your skills. For instance, search for spiders on wikipedia and find some key word in regards to their movement. ("Light Carapaces").

Yea I had already searched on Wowwiki for stuff like this, but I hadn't tought of Wikipedia and stuff yet. :p

Doubt I will find any cool Dreanai upgrades names there but still, I'll keep on searching.


Thank you very much for the help. +rep
 

Failenx

TH.net Regular
Reaction score
7
I'm not sure if anyone has asked this, but is the variable array size for your dialogue set to the amount of players that are going to be using the teleporter.. (example: if you have 8 players that are able to use the teleporter, then it should be set to 8).

A lot of problems I've had have been solved like this, always an array size problem for me :p
 

hopy

Active Member
Reaction score
64
I'm not sure if anyone has asked this, but is the variable array size for your dialogue set to the amount of players that are going to be using the teleporter.. (example: if you have 8 players that are able to use the teleporter, then it should be set to 8).

A lot of problems I've had have been solved like this, always an array size problem for me :p

Well, I never realy understood what that array size was for in the variable editor.

But, the problem was that in the 2nd trigger I cannot select a Array for the Teleporter Variable.
 

Failenx

TH.net Regular
Reaction score
7
Well, I never realy understood what that array size was for in the variable editor.

But, the problem was that in the 2nd trigger I cannot select a Array for the Teleporter Variable.

Ah okay, I know how to fix this problem, it's just that I don't have the editor right now.. I will post it later today, sometime in the afternoon.

You mean you can't select the array as an event?


If so, I definately will be able to solve this problem, just wait till' I get home :p
 

hopy

Active Member
Reaction score
64
You mean you can't select the array as an event?

Exactly, I need this for both a Dialog (posted above) and for a Timer.
The trigger editor just doesn't allow me to set the Array numbers for the Variable in the Event area.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top