• 🏆 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!

How to make a Find that Person Quest.

How make a rescue the unit quest?


In this tutorial i will show you how to make a Quest, where you must find and escort a unit.

For my tutorial i used these units:
The Quester is the unit that gives quests
The Hero_var is the unit that takes quests
The Mountain Giant is the unit that needs to be found and escorted

1. Making an Install trigger
  • Install
    • Events
      • Time - Elapsed game time is 0.01 seconds
    • Conditions
    • Actions
      • Special Effect - Create a special effect attached to the overhead of Quester 0000 <gen> using Abilities\Spells\Other\TalkToMe\TalkToMe.mdl
      • Set QuestGivver1 = (Last created special effect)
      • Quest - Create a Optional, undiscovered quest titled Undiscoverd Quest with the description Undiscoverd Quest, using icon path ReplaceableTextures\CommandButtons\BTNMountainGiant.blp
      • Set Quest1_Quest_var = (Last created quest)
      • Set Hero_var = Thrall 0002 <gen>
That trigger creates a special effect over the units that gives quests, an Exclamation Mark. That way people will know that unit can give quests.
Then he sets a variable for the special effect.
After that the trigger creates an undiscovered quest and sets a variable for that too.
And at the end, we set who is the hero that can get the quests.

2.Making the Quest Giving trigger
  • QuestGivver1
    • Events
      • Unit - A unit comes within 580.00 of Quester 0000 <gen>
    • Conditions
      • ((Triggering unit) Equal to Hero_var) or ((Triggering unit) Equal to Mountain Giant 0001 <gen>)
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Quest1 Equal to 0) and ((Triggering unit) Not equal to Mountain Giant 0001 <gen>)
        • Then - Actions
          • Special Effect - Destroy QuestGivver1
          • Unit - Move Hero_var instantly to (Center of QuestTaker1 <gen>)
          • Unit - Make Hero_var face Quester 0000 <gen> over 0.00 seconds
          • Cinematic - Turn cinematic mode On for (Player group((Owner of (Triggering unit))))
          • Cinematic - Turn on letterbox mode (hide interface) for (Player group((Owner of (Triggering unit)))): fade out over 1.00 seconds
          • Camera - Apply QuestGiver1 <gen> for (Owner of (Triggering unit)) over 1.00 seconds
          • Cinematic - Turn subtitle display override On
          • Cinematic - Clear the screen of text messages for (Player group((Owner of (Triggering unit))))
          • Wait 2.00 seconds
          • Cinematic - Send transmission to (Player group((Owner of (Triggering unit)))) from Quester 0000 <gen> named Quester:: Play No sound and display I have lost my gian.... Modify duration: Add 0.00 seconds and Wait
          • Cinematic - Turn cinematic mode Off for (Player group((Owner of (Triggering unit))))
          • Cinematic - Turn off letterbox mode (show interface) for (Player group((Owner of (Triggering unit)))): fade in over 1.00 seconds
          • Camera - Reset camera for (Owner of (Triggering unit)) to standard game-view over 1.00 seconds
          • Set Quest1 = 1
          • Quest - Flash the quest dialog button
          • Quest - Display to (Player group((Owner of (Triggering unit)))) the Quest Discovered message: Find and bring aliv...
          • Quest - Mark Quest1_Quest_var as Discovered
          • Quest - Change the title of Quest1_Quest_var to Find the Mountain G...
          • Quest - Change the description of Quest1_Quest_var to Find and bring aliv...
          • Special Effect - Create a special effect attached to the overhead of Mountain Giant 0001 <gen> using Abilities\Spells\Other\TalkToMe\TalkToMe.mdl
          • Set QuestPersonFind1 = (Last created special effect)
        • Else - Actions
          • Trigger - Turn off QuestMountianFollow <gen>
          • Special Effect - Destroy QuestGivver1
          • Unit - Move Hero_var instantly to (Center of QuestTaker1 <gen>)
          • Unit - Move Mountain Giant 0001 <gen> instantly to (Center of QuestTaker1 <gen>)
          • Unit - Make Hero_var face Quester 0000 <gen> over 0.00 seconds
          • Unit - Make Mountain Giant 0001 <gen> face Quester 0000 <gen> over 0.00 seconds
          • Cinematic - Turn cinematic mode On for (Player group((Owner of Hero_var)))
          • Cinematic - Turn on letterbox mode (hide interface) for (Player group((Owner of Hero_var))): fade out over 1.00 seconds
          • Camera - Apply QuestGiver1 <gen> for (Owner of Hero_var) over 1.00 seconds
          • Cinematic - Turn subtitle display override On
          • Cinematic - Clear the screen of text messages for (Player group((Owner of Hero_var)))
          • Wait 2.00 seconds
          • Cinematic - Send transmission to (Player group((Owner of Hero_var))) from Quester 0000 <gen> named Quester:: Play No sound and display Tank you ! Here is .... Modify duration: Add 0.00 seconds and Wait
          • Unit - Order Mountain Giant 0001 <gen> to Move To (Position of Quester 0000 <gen>)
          • Player - Add 500 to (Owner of Hero_var) Current gold
          • Cinematic - Turn cinematic mode Off for (Player group((Owner of Hero_var)))
          • Cinematic - Turn off letterbox mode (show interface) for (Player group((Owner of Hero_var))): fade in over 1.00 seconds
          • Camera - Reset camera for (Owner of Hero_var) to standard game-view over 1.00 seconds
          • Quest - Flash the quest dialog button
          • Quest - Display to (Player group((Owner of (Triggering unit)))) the Quest Completed message: |c00959697Find and ...
          • Quest - Mark Quest1_Quest_var as Completed
          • Quest - Change the title of Quest1_Quest_var to Completed
          • Quest - Change the description of Quest1_Quest_var to Quest Completed.
          • Trigger - Turn off QuestFalied1 <gen>
          • Trigger - Turn off (This trigger)
In this trigger we do this:
When a unit gets within 580 of Quester, the trigger checks, is the unit the hero, that can take quests, or is it the unit that needs to be escorted. In ether of them, the trigger will run.

After that the trigger checks, does the hero has the quest (Quest1 Equal to 0) and that the unit is not the escorted unit.

If these conditions are true, then the hero does not have the quest and must get it. In the trigger you can see a cinematic is added. I will not explain that, as that is not the purpose of this tutorial.
At the beginning of the cinematic we destroy the Exclamation Mark Special Effect, because the quest is taken.
After the cinematic we set the variable (Quest1=1), again, because the quest is taken.
Now that the quest is discovered, we add a trigger that tells the game that it is discovered, and we display a quest discovered massage to the player. We change the description and the title of the quest as well.
At the end we add an Exclamation Mark on the unit that must be found and escorted, and set a variable for the special effect. That way the player will know when he finds the unit, that it is the right one.

But if the conditions are wrong, that means, that the player already has the quest and the escorted unit is with him.
We turn off a trigger that i will explain later.
The trigger again destroys a special effect, that will be created in another trigger.
There is a cinematic again, and in the cinematic, when the Quest Giver gives a reward, you can see an action, that gives the player 500 gold-that is the reward. Of course it can be changed to what ever you want.
At the end, we change the quest, so it can state that this quest is completed and we turn off a trigger that i will explain later and this trigger, because the player can't take the quest twice.

3.Making the Escort unit Finding trigger
  • QuestFinding1
    • Events
      • Unit - A unit comes within 300.00 of Mountain Giant 0001 <gen>
    • Conditions
      • ((Triggering unit) Equal to Hero_var) and (Quest1 Equal to 1)
    • Actions
      • Special Effect - Destroy QuestPersonFind1
      • Game - Display to (Player group((Owner of (Triggering unit)))) the text: Mountian Giant: Tak...
      • Unit - Order Mountain Giant 0001 <gen> to Follow Hero_var
      • Quest - Flash the quest dialog button
      • Quest - Display to (All players) the Quest Update message: Find and bring aliv...
      • Quest - Change the description of Quest1_Quest_var to Find and bring aliv...
      • Special Effect - Create a special effect attached to the overhead of Quester 0000 <gen> using Objects\RandomObject\RandomObject.mdl
      • Set QuestGivver1 = (Last created special effect)
      • Trigger - Turn on QuestFalied1 <gen>
      • Trigger - Turn on QuestMountianFollow <gen>
      • Trigger - Turn off (This trigger)
When a unit comes within 300 of the unit that must be found this trigger is going to be run, if the unit is the unit that gets quests and if it has the quest(Quest1=1)

The Exclamation Mark special effect on the found unit is destroyed, because the player has found it.
A text message is displayed to alert the player about him finding the unit.
The found unit is ordered to follow the unit that takes quests.
The quest is updated, because one step of it is done-Finding the unit.
A Special Effect is created over the quest giver and this time it's a question mark, because this is the final step in this quest and as i mentioned:
IN STEP 2 said:
The trigger again destroys a special effect, that will be created in another trigger.
This is the special effect that is being destroyed. Again a variable is set for the special effect.
After that two triggers are turned on, i will explain them next and this trigger is turned off, as the escorted unit cant be found again.

4.Debuging the follow order, IF a bug occurs

  • QuestMountianFollow
    • Events
      • Time - Every 2.00 seconds of game time
    • Conditions
    • Actions
      • Unit - Order Mountain Giant 0001 <gen> to Follow Hero_var
IN STEP 3 said:
After that two triggers are turned on, i will explain them next
IN STEP 2 said:
We turn off a trigger that i will explain later.
This is that trigger.
If when you test the map, the escorted unit stops following the unit taking quests, add this trigger. This usually happens if an AI is set to control the owner of the escorted unit.

5.What if the escorted unit dies?

  • QuestFalied1
    • Events
      • Unit - Mountain Giant 0001 <gen> Dies
    • Conditions
    • Actions
      • Trigger - Turn off QuestGivver1 <gen>
      • Trigger - Turn off QuestMountianFollow <gen>
      • Special Effect - Destroy QuestPersonFind1
      • Special Effect - Destroy QuestGivver1
      • Quest - Flash the quest dialog button
      • Quest - Display to (All players) the Quest Failed message: Find and bring aliv...
      • Quest - Change the description of Quest1_Quest_var to Find and bring aliv...
      • Trigger - Turn off (This trigger)
IN STEP 3 said:
After that two triggers are turned on, i will explain them next
IN STEP 2 said:
we turn off a trigger that i will explain later

This is that trigger.
If the escorted unit dies, then all triggers related to this quest must be turned off, because the quest is failed. The Special Effects are destroyed and there is a quest failed update. At the end this trigger is turned off because you cant fail the quest again.


This is all. I attached a map with this quest in it.
 

Attachments

  • Find The Mountian Giant Quest.w3x
    35.8 KB · Views: 804
Last edited:
Level 22
Joined
Feb 26, 2008
Messages
891
Yes, you should probably go through and check your spelling on this.
Also, using thing like Unit 0001 <gen> is not usually a good way to design triggers. To make this more flexible you could create the units in-game and go from there. However, if you're making an RPG or so, it probably won't make much difference.

Other than that, this tutorial looks ok. It's not wonderful, to be honest, but it's ok. I've seen worse.
To improve, I think that your explanations might be able to be a bit clearer than they are now.
 
Level 22
Joined
Feb 26, 2008
Messages
891
It might be a good idea to broaden this tutorial.

A "Find that Person" quest is rather specific, considering what the overall subject itself contains. Maybe your tutorial should be about something like, "Developing and Implementing Fun and Interesting Quests." That would leave you open to use this as an example, but also give you a new area to talk about - quest making in general.
 
Top