- Quest Creation: Rescuing Units -

Level 3
Joined
Dec 9, 2019
Messages
11
Relevance: 2/5

I'm trying to make a Rescue type of Quest, where I want to 20 units in total to be rescued, an event that start with entering unit in a certain region where the rescuable units are, condition as entering unit equal the hero I'm playing with, and the actions as you normally would presume (Unihide, Unpause, right-click hero, change ownership to), when the ownership changes I put to run the respective quest to update it (which I think is the real - REAL - problem of all this trigger sequence, but I haven't managed to fully understand where it went wrong).

To better understanding, here follows the trigger I refered as the Event of Entering on the Region:

  • Events
    • Unit - A unit enters Druid2<gen>
  • Conditions
    • Malfurion0194<gen> Equal to (Entering unit)
  • Actions
    • Trigger - Turn off (This trigger)
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
        • (Druid of the Claw (Night Elf Form) 0182<gen> is alive) Equal to True
        • Malfurion 0194<gen> Equal to (Entering unit) named Fandral Saghelm
    • Then - Actions
      • Cinematic - Send transmission to (All players) from Malfurion 0194<gen> named Fandral Staghelm: Play No sound and display Avast! The waking w... Modify duration: Add 0.00 seconds and Wait
      • Wait 1.00 seconds
      • Sound - Play DoorSlam1<gen>
      • Unit - Unhide Druid of the Talon (Night Elf Form) 0300<gen>
      • Unit - Unhide Druid of the Talon (Night Elf Form) 0182<gen>
      • Unit - Unhide Druid of the Talon (Night Elf Form) 0298<gen>
      • Unit - Unhide Druid of the Talon (Night Elf Form) 0183<gen>
      • Unit - Unhide Druid of the Talon (Night Elf Form) 0299<gen>
      • Unit - Unpause Druid of the Talon (Night Elf Form) 0300<gen>
      • Unit - Unpause Druid of the Talon (Night Elf Form) 0182<gen>
      • Unit - Unpause Druid of the Talon (Night Elf Form) 0298<gen>
      • Unit - Unpause Druid of the Talon (Night Elf Form) 0183<gen>
      • Unit - Unpause Druid of the Talon (Night Elf Form) 0299<gen>
      • Sound - Play DruidOfTheClawWarcry1<gen> at 100.00% volume, attached to Druid of the Claw (Night Elf Form) 0182<gen>
    • Else - Actions
    • Unit - Order Druid of the Talon (Night Elf Form) 0182<gen> to Right-Click Malfurion 0194<gen>
    • Unit - Order Druid of the Talon (Night Elf Form) 0300<gen> to Right-Click Malfurion 0194<gen>
    • Unit - Order Druid of the Talon (Night Elf Form) 0298<gen> to Right-Click Malfurion 0194<gen>
    • Unit - Order Druid of the Talon (Night Elf Form) 0183<gen> to Right-Click Malfurion 0194<gen>
    • Unit - Order Druid of the Talon (Night Elf Form) 0299<gen> to Right-Click Malfurion 0194<gen>
    • Trigger - Add RallyForces Update<gen> to the trigger queue (Checking conditions)
    • Trigger - Turn off (This trigger)
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • (RallyForces Update<gen> is queued) Equal to True
    • Then - Actions
    • Else - Actions
      • Trigger - Run RallyForces Update<gen> (checking conditions)
  • Wait 0.50 seconds

I am an amatuer who is begning now, but I think there's no problem with this trigger of the event, when I start the came its iniatiallize perfectly, the only thing that doesn't trigger is the quest update (Msg, etc), so, it makes me think that the culprint is on the Quest Update Trigger, which follows:

  • Events
    • Unit - A unit owned by Neutral Passive Changes owner
    • Unit - A unit owned by Neutral Passive is rescued
  • Conditions
    • (Ownership-changed unit) Equal to Druid of the Talon (Night Elf Form) 0299<gen>
    • (Ownership-changed unit) Equal to Druid of the Claw (Night Elf Form) 0183<gen>
    • (Ownership-changed unit) Equal to Druid of the Talon (Night Elf Form) 0298<gen>
    • (Ownership-changed unit) Equal to Druid of the Claw (Night Elf Form) 0182<gen>
    • (Ownership-changed unit) Equal to Druid of the Talon (Night Elf Form) 0300<gen>
  • Actions
    • Trigger - Run RallyForces Create<gen> (checking conditions
    • Quest - Mark QuestRallyTheDruids as Discovered
    • If (All Conditions are True) then do (The Actions) else do (Else Actions)
      • If - Conditions
        • (Ownership-changed unit) Equal to Druid of the Talon (Night Elf Form) 0299<gen>
        • (Ownership-changed unit) Equal to Druid of the Claw (Night Elf Form) 0183<gen>
        • (Ownership-changed unit) Equal to Druid of the Talon (Night Elf Form) 0298<gen>
        • (Ownership-changed unit) Equal to Druid of the Claw (Night Elf Form) 0182<gen>
        • (Ownership-changed unit) Equal to Druid of the Talon (Night Elf Form) 0300<gen>
    • Then - Actions
      • Quest - Change the description of QuestRallyRequeriment1 to Awake the Druids (...)
      • Quest - Display to (All players) the Quest Update message:
      • Trigger - Turn off(This trigger)
    • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • NumberDruidsFound Equal to 14
    • Then - Actions
      • Quest - Change the description of QuestRallyRequirement1 to Awake the Druids (...
      • Quest - Display to (All players) the Quest Update message:
  • Else - Actions
  • Wait Campaign quest delay seconds
  • Trigger - Remove (This trigger) from the trigger queue

I don't know where the problem is, but I'm almost completly sure that the Trigger about the creation and discovery of the quest aren't the problem, I'm confident as well that the Event Trigger isn't jinxed either, but the Update Trigger surely is.

To not show some kind of slovenliness, recorring immediatly to forums instead of looking up for tutorial or source materials which would've helped me I'll clarify that I tried to guide myself using these links:

- Ways to Rescue Units and make Quest (Which instructs how to make the Event, not the Update);

- Rescued units quest (Which focus more on the Event part, not linking it to the Update quest as I intent to do in mine);

- Rescue Trigger Issue (Which make me near of what I want, but just have the complete and discovery part, not an updating patter);

- How to make a Find that Person Quest. (Which is more likely a Escort type of a quest than what I'm trying to achiev with my current trigger);

- Basic Quest Tutorial: Quest Types and How to Accomplish them. (Which is the most helpful of them all, specifically at the topic 2.) Unit Killing, introduced me to the variable = aritimetic + 1, which I presume is where I'm failling to understand how it properly works and use); and

- Warcraft 3 World Editor Tutorial - Quest Examples (From the sequence of tutorial excellently made by Turnro, which provided a further discovering of the previous said variable, but still, I don't think I got a hold of it).

I appreciate and thank in advance any help given whatsoever.
 
Level 5
Joined
Jan 19, 2023
Messages
35
What is the point of the "If" check in the first trigger? If the units are hidden and paused they can't be dead, and you already checked the entering unit in condition.
The actions in the check are also a problem, since if the unit is dead you are issuing it an order to move, which would do nothing anyway.
Instead of having the "If" check, just unpause -> unhide -> issue order. If units are rescuable they will change ownership, if not you need the "change owner" action as well.
Then run the second trigger, and thats all you need, remove the second "If" completely.

  • Untitled Trigger 001
    • Events
      • Unit - A unit enters (Initial camera bounds)
    • Conditions
      • (Triggering unit) Equal to (Matching unit)
    • Actions
      • Trigger - Turn off (This trigger)
      • Unit - Unhide (Picked unit)
      • Unit - Unpause (Picked unit)
      • Unit - Order (Picked unit) to Right-Click (Entering unit)
      • Unit - Change ownership of (Picked unit) to Player 1 (Red) and Change color
      • Trigger - Run Untitled Trigger 002 <gen> (checking conditions)
For the second trigger, remove the events, since you will run it from the first trigger. Remove the conditions, right now they all need to be true in order for the trigger to work, and it's not possible because you are checking if one unit is five units.
Again, no need to use "If" to check the conditions of the trigger again, if its not true the trigger just won't run.
For this trigger just do the quest updates and the quest messages, and that's it.

  • Trigger - Turn off (This trigger)
  • Quest - Mark (Last created quest) as Discovered
  • Quest - Change the description of (Last created quest) to 123
I'm not sure why you check the number of druids, since that's not updated anywhere. If you are rescuing druids from multiple locations you will need to alter what I posted here, but this should be a good base.

Edit:
Sorry, I skimmed the beggining of your post and missed that you do want to rescue drudis from multiple locations.
In that case for each rescue trigger you have add an action to set your variable: NumberDruidsFound to NumberDruidsFound + "number of druids that are rescued in that region".

Then add an "If" check at the beggining of the second trigger "if var = 20" and if true mark quest as completed, update desccription, send messages and all that. If false just update the quest normally to add how many druids were rescued in the description.

Here's a map.
 

Attachments

  • Droods.w3m
    19.4 KB · Views: 2
Last edited:
Level 3
Joined
Dec 9, 2019
Messages
11
What is the point of the "If" check in the first trigger? If the units are hidden and paused they can't be dead, and you already checked the entering unit in condition.
The actions in the check are also a problem, since if the unit is dead you are issuing it an order to move, which would do nothing anyway.
Instead of having the "If" check, just unpause -> unhide -> issue order. If units are rescuable they will change ownership, if not you need the "change owner" action as well.
Then run the second trigger, and thats all you need, remove the second "If" completely.

  • Untitled Trigger 001
    • Events
      • Unit - A unit enters (Initial camera bounds)
    • Conditions
      • (Triggering unit) Equal to (Matching unit)
    • Actions
      • Trigger - Turn off (This trigger)
      • Unit - Unhide (Picked unit)
      • Unit - Unpause (Picked unit)
      • Unit - Order (Picked unit) to Right-Click (Entering unit)
      • Unit - Change ownership of (Picked unit) to Player 1 (Red) and Change color
      • Trigger - Run Untitled Trigger 002 <gen> (checking conditions)
For the second trigger, remove the events, since you will run it from the first trigger. Remove the conditions, right now they all need to be true in order for the trigger to work, and it's not possible because you are checking if one unit is five units.
Again, no need to use "If" to check the conditions of the trigger again, if its not true the trigger just won't run.
For this trigger just do the quest updates and the quest messages, and that's it.

  • Trigger - Turn off (This trigger)
  • Quest - Mark (Last created quest) as Discovered
  • Quest - Change the description of (Last created quest) to 123
I'm not sure why you check the number of druids, since that's not updated anywhere. If you are rescuing druids from multiple locations you will need to alter what I posted here, but this should be a good base.

Edit:
Sorry, I skimmed the beggining of your post and missed that you do want to rescue drudis from multiple locations.
In that case for each rescue trigger you have add an action to set your variable: NumberDruidsFound to NumberDruidsFound + "number of druids that are rescued in that region".

Then add an "If" check at the beggining of the second trigger "if var = 20" and if true mark quest as completed, update desccription, send messages and all that. If false just update the quest normally to add how many druids were rescued in the description.

Here's a map.
It work out perfectly, thank you!

And I'm sorry for this post and my ignorance, now I noticed it was much easier to manage the quantity of units rescued (or replicate it in other mechanics like itens picked or enemy units killed), thank you so much! :thumbs_up::grin:
 
Top