Well, I just recently learned this myself, so I'll give you a brief explanation. (Turned into a Tut! I went overboard...)
First of all, it's triggers (I will continue with the assumption that you knew that, because if you didn't I will feel bad).
You will need some variables. First of all, for the Exclamation Points, you'll need one like this:
Name: ExMark
Type: Special Effect
Array: Yes
Default: None
For the Quests themselves, you'll need:
Name: Quest
Type: Quest
Array: Yes
Default: None
Name: QuestCounter
Type: Integer
Array: No
Default: 0 (Default)
First you need to make the "!" on the quest giver after a certain event like:
-
Hero Level 2
-
Events
-
Unit - A unit Gains a level
-
Conditions
-
(Level of (Triggering unit)) Equal to (==) 2
-
Actions
-
Special Effect - Create a special effect attached to the overhead of (>Quest Giver<) using Abilities\Spells\Other\TalkToMe\TalkToMe.mdl
-
Set ExMark[1] = (Last created special effect)
Make two more Triggers called:
Quest Progression
Turning in the Quest
Then to pick up the quest, you need to do something along these lines:
-
Picking Up the Quest
-
Events
-
Player - Player 1 (Red) Selects a unit
-
Conditions
-
(Triggering unit) Equal to (==) (>Pick You're Quest Giver<)
-
((>Region Quest Giver is In<) contains UnitHero) Equal to (==) True
-
Actions
-
-------- First Set Up You're Quest in Quest Log --------
-
Quest - Create a Required quest titled >Quest Name< with the description >Quest Information<, using icon path >Choose Icon That Goes Along with Quest<
-
-------- Second Create a Quest (Array) Varriable --------
-
Set Quest[1] = (Last created quest)
-
-------- Display a Message showing the quest has been discovered, similar to the one I have created here. --------
-
Quest - Display to (All players) the Quest Discovered message: |cffffd700Quest Dis...
-
-------- Destroy the ! above the Quest givers head --------
-
Special Effect - Destroy ExMark[1]
-
-------- Turn On the Next Trigger allowing for the player to start the progress of the quest --------
-
Trigger - Turn on Quest Progression <gen>
-
-------- Turn off this trigger so the play can't pick it up again. --------
-
Trigger - Turn off (This trigger)
For progression, this is where it will vary from quest to quest, here I'm going to go with a simple "Kill x amount of units" quest, so I'll show that:
-
Quest Progression
-
Events
-
Conditions
-
(Unit-type of (Triggering unit)) Equal to (==) (>Creeps Being Killed for Quest<)
-
Actions
-
-------- Create a 'Quest Counter' using a Integer Variable, this will allow for the game to track how many creeps you've killed --------
-
-------- 'Quest Counter' is an example --------
-
Set QuestCounter = (QuestCounter + 1)
-
-------- This first If/Then/Else shows the progress till it reaches the max amount of creeps that need to be killed --------
-
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
QuestCounter Less than (<) (>Number of Creeps you want the hero to kill<)
-
Then - Actions
-
-------- This clears all messages.(You don't need to change this at all) --------
-
Cinematic - Clear the screen of text messages for (All players)
-
-------- Read each item within this trigger to see what to do. --------
-
Game - Display to (All players) the text: (>Name of Creeps Being Killed<: + ((String((>You're 'Quest Counter' Goes Here<))) + / >Number of creeps you want the hero to kill<))
-
Else - Actions
-
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
QuestCounter Equal to (==) (>Number of Creeps you want the hero to kill<)
-
Then - Actions
-
-------- This marks you're quest as complete --------
-
Quest - Mark Quest[1] as Completed
-
-------- This clears all messages.(You don't need to change this at all) --------
-
Cinematic - Clear the screen of text messages for (All players)
-
-------- Display a Message showing the quest has been updated, similar to the one I have created here. --------
-
Quest - Display to (All players) the Quest Update message: |cffffd700Quest Upd...
-
-------- Put another ! above the Quest Giver here --------
-
Special Effect - Create a special effect attached to the overhead of (>Quest Giver<) using Abilities\Spells\Other\TalkToMe\TalkToMe.mdl
-
-------- Set the Last Created Special Effect to ANOTHER Special Effect (Array) Varriable --------
-
Set ExMark[2] = (Last created special effect)
-
Else - Actions
You will notice that I used a separate Array for the ExMark variable. This needs to be done (So I have been told, I'll stick to what I've been told, ^^) or it will cause mayhem. Next up is to turn in the quest:
-
Turning In the Quest
-
Events
-
Player - Player 1 (Red) Selects a unit
-
Conditions
-
QuestCounter Equal to (==) (>Number of Creeps you want the hero to kill<)
-
(Triggering unit) Equal to (==) (>Pick You're Quest Giver<)
-
((>Region Quest Giver is In<) contains UnitHero) Equal to (==) True
-
Actions
-
-------- Destroy the Special Effect --------
-
Special Effect - Destroy ExMark[2]
-
-------- Display to the Player the quest has been completed --------
-
Quest - Display to (All players) the Quest Completed message: |cffffd700Quest Com...
-
-------- Destroy the Quest --------
-
Quest - Destroy Quest[1]
-
-------- If the player gets gold from quest give here --------
-
Player - Set Player 1 (Red) Current gold to ((Player 1 (Red) Current gold) + (Amount of Gold Quest Gives))
-
-------- If the player gets experience from quest give here --------
-
Hero - Add 75 experience to UnitHero, Show level-up graphics
-
-------- The next 4 lines deal with text that shows up showing the amount of exp the player got (You only need to mess with the first one) --------
-
Floating Text - Create floating text that reads + >Amount of Exp He... above UnitHero with Z offset 0.00, using font size 13.00, color (50.00%, 0.00%, 50.00%), and 0.00% transparency
-
Floating Text - Change (Last created floating text): Disable permanence
-
Floating Text - Change the lifespan of (Last created floating text) to 3.00 seconds
-
Floating Text - Change the fading age of (Last created floating text) to 1.00 seconds
-
Floating Text - Set the velocity of (Last created floating text) to 65.00 towards 90.00 degrees
-
-------- If you want you can reset the 'Quest Counter' and use it again for a different quest* --------
-
Set QuestCounter = 0
-
-------- Then turn off these 2 triggers --------
-
Trigger - Turn off Quest Progression <gen>
-
Trigger - Turn off (This trigger)
*This is what my buddy told me, I have not actually tested this out for myself, so I am not 100% sure of it's validity. I haven't messed with the Triggers themselves too much, I only created the "Details" of the quests for my buddy, so if this is false, I apologize.
That should help. I've attached the map my buddy sent me with the Templates for the "Killing x Creeps" and "Acquiring an Item" types of quests. I hope that this is of help to you. For other kinds of quests, you'll have to fool around with it, but this should get you started (it did for me!) Oh and...don't mind the little camp on the map. I was bored and did some quick terraining and that happened to be the map that was open at the time, lol.
Furthermore, I apologize if some of that looks strange to you, as I use NewGen instead of regular WE (which is epic fail for Terrainers, imo).