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

Simple Quest System v1.1

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
Simple Quest System


What does this system:

This is a quest system, which allows you to easily create quests.
It works with floating texts for the unit talk and includes a quest multiboard.
Currently supports killquests, collectquests and talk quests.

The system uses the custom values of the quest givers and of the units, you
have to talk to in talking quests, so it won't work with maps that use custom values
on this units!
Why use this system:

If you want to have a lot of quests in your map, this system is a fast way of creating them quickly.
You just need to set a few variables per quests.
This system is full GUI.


Set up the different things for your quest here.
  • InitQuests
    • Events
    • Conditions
    • Actions
      • -------- Kill Me Quests --------
      • -------- Thieves --------
      • Set Quest_Counter = 1
      • Set Quest_Required[Quest_Counter] = 10
      • Set Quest_Killed[Quest_Counter] = 0
      • Set Quest_Mobs1[Quest_Counter] = Dieb
      • Set Quest_Mobs2[Quest_Counter] = Brigant
      • Set Quest_MinLevel[Quest_Counter] = 1
      • Set Quest_Name[Quest_Counter] = [1+] Bad guys
      • Set Quest_Task[Quest_Counter] = Kill thieves
      • Set Quest_Description[Quest_Counter] = (Quest_Task[Quest_Counter] + ( (0/ + ((String(Quest_Required[Quest_Counter])) + ))))
      • Set Quest_Unit[Quest_Counter] = Paladin 0002 <gen>
      • Unit - Set the custom value of Quest_Unit[Quest_Counter] to Quest_Counter
      • Quest - Create a Optional quest titled Quest_Name[Quest_Counter] with the description Slay 10 thieves in ..., using icon path ReplaceableTextures\CommandButtons\BTNBanditSpearThrower.blp
      • Quest - Disable (Last created quest)
      • Set Quest_Quest[Quest_Counter] = (Last created quest)
      • Special Effect - Create a special effect attached to the overhead of Quest_Unit[Quest_Counter] using Abilities\Spells\Other\TalkToMe\TalkToMe.mdl
      • Set Quest_Exclamark[Quest_Counter] = (Last created special effect)
      • Set Quest_Floating[Quest_Counter] = This terrible thieves. Every night they steal some of our goods. You seem to be strong. Please kill them!
      • Set Quest_FloatingComplete[Quest_Counter] = You killed them? So we don't have to fear them anymore? God may bless you...
      • Set Quest_RewardExp[Quest_Counter] = 500
      • Set Quest_RewardGold[Quest_Counter] = 20
      • -------- Murlocs --------
      • Set Quest_Counter = (Quest_Counter + 1)
      • Set Quest_Required[Quest_Counter] = 15
      • Set Quest_Killed[Quest_Counter] = 0
      • Set Quest_Mobs1[Quest_Counter] = Murloc-Läufer
      • Set Quest_Mobs2[Quest_Counter] = No unit-type
      • Set Quest_MinLevel[Quest_Counter] = 5
      • Set Quest_Name[Quest_Counter] = [5+] Murloc Hunting
      • Set Quest_Task[Quest_Counter] = Hunt Murlocs
      • Set Quest_Description[Quest_Counter] = (Quest_Task[Quest_Counter] + ( (0/ + ((String(Quest_Required[Quest_Counter])) + ))))
      • Set Quest_Unit[Quest_Counter] = Scharfschütze 0006 <gen>
      • Unit - Set the custom value of Quest_Unit[Quest_Counter] to Quest_Counter
      • Quest - Create a Optional quest titled Quest_Name[Quest_Counter] with the description Hunt 15 Murlocs at ..., using icon path ReplaceableTextures\CommandButtons\BTNMurloc.blp
      • Quest - Disable (Last created quest)
      • Set Quest_Quest[Quest_Counter] = (Last created quest)
      • Special Effect - Create a special effect attached to the overhead of Quest_Unit[Quest_Counter] using Abilities\Spells\Other\TalkToMe\TalkToMe.mdl
      • Set Quest_Exclamark[Quest_Counter] = (Last created special effect)
      • Set Quest_Floating[Quest_Counter] = I am the master in murloc hunting! You think you can hunt them too? Then kill 15 of them and come back to me!
      • Set Quest_FloatingComplete[Quest_Counter] = Nice job! Here take this gold.
      • Set Quest_RewardExp[Quest_Counter] = 350
      • Set Quest_RewardGold[Quest_Counter] = 500
      • -------- Talk to me Quests --------
      • -------- Money maker --------
      • Set Quest_Counter = (Quest_Counter + 1)
      • Set Quest_Required[Quest_Counter] = 1
      • Set Quest_Killed[Quest_Counter] = 0
      • Set Quest_MinLevel[Quest_Counter] = 1
      • Set Quest_Name[Quest_Counter] = [1+] Money Maker
      • Set Quest_Task[Quest_Counter] = Talk to the Mountainking
      • Set Quest_Description[Quest_Counter] = Ask the mountainking, if the sorceress can have more money for her work.
      • Set Quest_ReturnDesc[Quest_Counter] = Return to the sorceress
      • Set Quest_Unit[Quest_Counter] = Zauberin 0007 <gen>
      • Set Quest_TargetFriend[Quest_Counter] = Bergkönig 0008 <gen>
      • Unit - Set the custom value of Quest_Unit[Quest_Counter] to Quest_Counter
      • Unit - Set the custom value of Quest_TargetFriend[Quest_Counter] to Quest_Counter
      • Quest - Create a Optional quest titled Quest_Name[Quest_Counter] with the description The sorceress needs..., using icon path ReplaceableTextures\CommandButtons\BTNPeon.blp
      • Quest - Disable (Last created quest)
      • Set Quest_Quest[Quest_Counter] = (Last created quest)
      • Special Effect - Create a special effect attached to the overhead of Quest_Unit[Quest_Counter] using Abilities\Spells\Other\TalkToMe\TalkToMe.mdl
      • Set Quest_Exclamark[Quest_Counter] = (Last created special effect)
      • Set Quest_Floating[Quest_Counter] = Hey you! I am too lazy to ask my boss if I could get more money for my work... Please aks him for me. My boss is the mountain king.
      • Set Quest_FloatingTarget[Quest_Counter] = More money? She does NOTHING! Tell her, if she wants money, she should do her work properly!
      • Set Quest_FloatingComplete[Quest_Counter] = Too bad... Now I will die because Iam too poor.
      • Set Quest_RewardExp[Quest_Counter] = 10
      • -------- Bring me Item Quests --------
      • -------- Steal from Thieves --------
      • Set Quest_Counter = (Quest_Counter + 1)
      • Set Quest_Required[Quest_Counter] = 3
      • Set Quest_Killed[Quest_Counter] = 0
      • Set Quest_NeededItem[Quest_Counter] = Käse
      • Set Quest_MinLevel[Quest_Counter] = 6
      • Set Quest_Name[Quest_Counter] = [6+] Steal from Thieves
      • Set Quest_Task[Quest_Counter] = Steal 3 Cheese
      • Set Quest_Description[Quest_Counter] = (Quest_Task[Quest_Counter] + ( (0/ + ((String(Quest_Required[Quest_Counter])) + ))))
      • Set Quest_Unit[Quest_Counter] = Arbeiter 0004 <gen>
      • Unit - Set the custom value of Quest_Unit[Quest_Counter] to Quest_Counter
      • Unit - Add Inventory to Quest_Unit[Quest_Counter]
      • Quest - Create a Optional quest titled Quest_Name[Quest_Counter] with the description Get food for the pe..., using icon path ReplaceableTextures\CommandButtons\BTNCheese.blp
      • Quest - Disable (Last created quest)
      • Set Quest_Quest[Quest_Counter] = (Last created quest)
      • Special Effect - Create a special effect attached to the overhead of Quest_Unit[Quest_Counter] using Abilities\Spells\Other\TalkToMe\TalkToMe.mdl
      • Set Quest_Exclamark[Quest_Counter] = (Last created special effect)
      • Set Quest_Floating[Quest_Counter] = I am hungry, but the thieves steal us all our cheese. Could you please get us back our cheese?
      • Set Quest_FloatingComplete[Quest_Counter] = Food! Thank you!
      • Set Quest_RewardExp[Quest_Counter] = 1000
      • Set Quest_RewardGold[Quest_Counter] = 1
and for following quests here:
  • Following Quests
    • Events
    • Conditions
    • Actions
      • -------- Following Quests --------
      • -------- Ogres Follow2 --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Quest_Following[(Custom value of (Target unit of issued order))] Equal to 3
        • Then - Actions
          • Set Quest_Counter = (Quest_Counter + 1)
          • Set Quest_Required[Quest_Counter] = 1
          • Set Quest_Killed[Quest_Counter] = 0
          • Set Quest_Mobs1[Quest_Counter] = Oger-Lord
          • Set Quest_Mobs2[Quest_Counter] = No unit-type
          • Set Quest_MinLevel[Quest_Counter] = 1
          • Set Quest_Name[Quest_Counter] = [1+] A twin headed problem
          • Set Quest_Task[Quest_Counter] = Kill the Ogre lord
          • Set Quest_Description[Quest_Counter] = (Quest_Task[Quest_Counter] + ( (0/ + ((String(Quest_Required[Quest_Counter])) + ))))
          • Set Quest_Unit[Quest_Counter] = Paladin 0002 <gen>
          • Unit - Set the custom value of Quest_Unit[Quest_Counter] to Quest_Counter
          • Quest - Create a Optional quest titled Quest_Name[Quest_Counter] with the description Kill the Ogre lord ..., using icon path ReplaceableTextures\CommandButtons\BTNBanditSpearThrower.blp
          • Quest - Disable (Last created quest)
          • Set Quest_Quest[Quest_Counter] = (Last created quest)
          • Special Effect - Create a special effect attached to the overhead of Quest_Unit[Quest_Counter] using Abilities\Spells\Other\TalkToMe\TalkToMe.mdl
          • Set Quest_Exclamark[Quest_Counter] = (Last created special effect)
          • Set Quest_Floating[Quest_Counter] = I know you would help us again. But this time it should be not as hard as last time. The ogres need a ogre lord to survive, else they die. Kill this lord please.
          • Set Quest_FloatingComplete[Quest_Counter] = Now we have no more problems! Thank you so much!
          • Set Quest_RewardExp[Quest_Counter] = 500
          • Set Quest_RewardGold[Quest_Counter] = 500
        • Else - Actions
      • -------- Good News Follow1 --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Quest_Following[(Custom value of (Target unit of issued order))] Equal to 2
        • Then - Actions
          • Set Quest_Counter = (Quest_Counter + 1)
          • Set Quest_Required[Quest_Counter] = 1
          • Set Quest_Killed[Quest_Counter] = 0
          • Set Quest_MinLevel[Quest_Counter] = 1
          • Set Quest_Name[Quest_Counter] = [1+] Good News
          • Set Quest_Task[Quest_Counter] = Talk to the Soldier
          • Set Quest_Description[Quest_Counter] = Tell the soldier the good news
          • Set Quest_ReturnDesc[Quest_Counter] = Return to the Paladin
          • Set Quest_Unit[Quest_Counter] = Paladin 0002 <gen>
          • Set Quest_TargetFriend[Quest_Counter] = Soldat 0000 <gen>
          • Unit - Set the custom value of Quest_Unit[Quest_Counter] to Quest_Counter
          • Unit - Set the custom value of Quest_TargetFriend[Quest_Counter] to Quest_Counter
          • Quest - Create a Optional quest titled Quest_Name[Quest_Counter] with the description Tell the soldier th..., using icon path ReplaceableTextures\CommandButtons\BTNPeon.blp
          • Quest - Disable (Last created quest)
          • Set Quest_Quest[Quest_Counter] = (Last created quest)
          • Special Effect - Create a special effect attached to the overhead of Quest_Unit[Quest_Counter] using Abilities\Spells\Other\TalkToMe\TalkToMe.mdl
          • Set Quest_Exclamark[Quest_Counter] = (Last created special effect)
          • Set Quest_Floating[Quest_Counter] = You solved the thief problem! Please tell the soldier the good news!
          • Set Quest_FloatingTarget[Quest_Counter] = No more thieves? Excellent! Now we just have to kill the ogres...
          • Set Quest_FloatingComplete[Quest_Counter] = Ogres? Here? Well, you did your job well, would you take this task, too?
          • Set Quest_RewardExp[Quest_Counter] = 10
          • Set Quest_Following[Quest_Counter] = 3
        • Else - Actions
      • -------- Other Work Follow1 --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Quest_Following[(Custom value of (Target unit of issued order))] Equal to 1
        • Then - Actions
          • Set Quest_Counter = (Quest_Counter + 1)
          • Set Quest_Required[Quest_Counter] = 7
          • Set Quest_Killed[Quest_Counter] = 0
          • Set Quest_Mobs1[Quest_Counter] = Feuer-Geist
          • Set Quest_Mobs2[Quest_Counter] = (Unit-type of No unit)
          • Set Quest_MinLevel[Quest_Counter] = 10
          • Set Quest_Name[Quest_Counter] = [10+] Do other people's work
          • Set Quest_Task[Quest_Counter] = Kills Fire Ghosts
          • Set Quest_Description[Quest_Counter] = (Quest_Task[Quest_Counter] + ( (0/ + ((String(Quest_Required[Quest_Counter])) + ))))
          • Set Quest_Unit[Quest_Counter] = Bergkönig 0008 <gen>
          • Unit - Set the custom value of Quest_Unit[Quest_Counter] to Quest_Counter
          • Quest - Create a Optional quest titled Quest_Name[Quest_Counter] with the description Kill 7 Fire ghosts ..., using icon path ReplaceableTextures\CommandButtons\BTNFireForTheCannon.blp
          • Quest - Disable (Last created quest)
          • Set Quest_Quest[Quest_Counter] = (Last created quest)
          • Special Effect - Create a special effect attached to the overhead of Quest_Unit[Quest_Counter] using Abilities\Spells\Other\TalkToMe\TalkToMe.mdl
          • Set Quest_Exclamark[Quest_Counter] = (Last created special effect)
          • Set Quest_Floating[Quest_Counter] = Do you want a job? This sorceress does nothing for me, and I need to kill those Fire ghosts west from here. ... What? Why? Don't ask questions! Just do your job!
          • Set Quest_FloatingComplete[Quest_Counter] = Great! Thank you.
          • Set Quest_RewardExp[Quest_Counter] = 500
          • Set Quest_RewardGold[Quest_Counter] = 1500
        • Else - Actions

[trigger=Talk to Target Unit]GetFinishQuests
Events
Unit - A unit Is issued an order targeting an object
Conditions
((Rect centered at (Position of (Target unit of issued order)) with size (500.00, 500.00)) contains (Ordered unit)) Equal to True
Quest_Unit[(Custom value of (Target unit of issued order))] Equal to (Target unit of issued order)
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Quest_Quest[(Custom value of (Target unit of issued order))] is enabled) Equal to False
Then - Actions
Floating Text - Create floating text that reads Quest_Floating[(Custom value of (Target unit of issued order))] above (Target unit of issued order) with Z offset 0.00, using font size 8.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
Floating Text - Change (Last created floating text): Disable permanence
Floating Text - Change the fading age of (Last created floating text) to 6.00 seconds
Floating Text - Change the lifespan of (Last created floating text) to 7.00 seconds
Special Effect - Destroy Quest_Exclamark[(Custom value of (Target unit of issued order))]
Quest - Enable Quest_Quest[(Custom value of (Target unit of issued order))]
Quest - Flash the quest dialog button
Cinematic - Clear the screen of text messages for (All players)
Game - Display to (All players) for 7.00 seconds the text: (|cff2222ffQuest Acquired|r: + Quest_Name[(Custom value of (Target unit of issued order))])
Game - Display to (All players) for 7.00 seconds the text: Quest_Description[(Custom value of (Target unit of issued order))]
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Quest_TargetFriend[(Custom value of (Target unit of issued order))] Not equal to No unit
Then - Actions
Special Effect - Create a special effect attached to the overhead of Quest_TargetFriend[(Custom value of (Target unit of issued order))] using Objects\RandomObject\RandomObject.mdl
Set Quest_Exclamark[(Custom value of (Target unit of issued order))] = (Last created special effect)
Else - Actions
Multiboard - Change the number of rows for Questboard to ((Number of rows in Questboard) + 1)
Set Quest_MbRow[(Custom value of (Target unit of issued order))] = (Number of rows in Questboard)
Set MB_Col1[(Number of rows in Questboard)] = Quest_Name[(Custom value of (Target unit of issued order))]
Multiboard - Set the text for Questboard item in column 1, row (Number of rows in Questboard) to MB_Col1[(Number of rows in Questboard)]
Set MB_Col2[(Number of rows in Questboard)] = Quest_Task[(Custom value of (Target unit of issued order))]
Multiboard - Set the text for Questboard item in column 2, row (Number of rows in Questboard) to MB_Col2[(Number of rows in Questboard)]
Set MB_Col3[(Number of rows in Questboard)] = ((String(Quest_Killed[(Custom value of (Target unit of issued order))])) + (/ + (String(Quest_Required[(Custom value of (Target unit of issued order))]))))
Multiboard - Set the text for Questboard item in column 3, row (Number of rows in Questboard) to MB_Col3[(Number of rows in Questboard)]
Multiboard - Set the display style for Questboard item in column 0, row 0 to Show text and Hide icons
Multiboard - Set the width for Questboard item in column 1, row 0 to 17.00% of the total screen width
Multiboard - Set the width for Questboard item in column 2, row 0 to 11.00% of the total screen width
Multiboard - Set the width for Questboard item in column 3, row 0 to 5.00% of the total screen width
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Quest_Required[(Custom value of (Target unit of issued order))] Equal to Quest_Killed[(Custom value of (Target unit of issued order))]
(Quest_Quest[(Custom value of (Target unit of issued order))] is completed) Equal to False
Then - Actions
Floating Text - Create floating text that reads Quest_FloatingComplete[(Custom value of (Target unit of issued order))] above (Target unit of issued order) with Z offset 0.00, using font size 8.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
Floating Text - Change (Last created floating text): Disable permanence
Floating Text - Change the fading age of (Last created floating text) to 6.00 seconds
Floating Text - Change the lifespan of (Last created floating text) to 7.00 seconds
Special Effect - Destroy Quest_Exclamark[(Custom value of (Target unit of issued order))]
Quest - Mark Quest_Quest[(Custom value of (Target unit of issued order))] as Completed
Game - Display to (All players) for 7.00 seconds the text: (|cff2222ffCompleted|r: + Quest_Name[(Custom value of (Target unit of issued order))])
Sound - Play GoodJob <gen>
Set Quest_RewardGrp = (Units in (Playable map area)((Hero level of (Matching unit)) Greater than or equal to Quest_MinLevel[(Custom value of (Target unit of issued order))]))
Custom script: set bj_wantDestroyGroup = true
Unit Group - Pick every unit in (Units in (Playable map area)(((Hero level of (Matching unit)) Greater than or equal to Quest_MinLevel[(Custom value of (Target unit of issued order))]) and (((Owner of (Matching unit)) controller) Equal to User))) and do (Actions)
Loop - Actions
Game - Display to (All players) the text: (Quest Reward: + (((String(Quest_RewardExp[(Custom value of (Target unit of issued order))])) + exp, ) + ((String(Quest_RewardGold[(Custom value of (Target unit of issued order))])) + gold!)))
Hero - Add Quest_RewardExp[(Custom value of (Target unit of issued order))] experience to (Picked unit), Show level-up graphics
Player - Add Quest_RewardGold[(Custom value of (Target unit of issued order))] to (Owner of (Picked unit)) Current gold
For each (Integer A) from Quest_MbRow[(Custom value of (Target unit of issued order))] to ((Number of rows in Questboard) - 1), do (Actions)
Loop - Actions
Set MB_Col1[(Integer A)] = MB_Col1[((Integer A) + 1)]
Multiboard - Set the text for Questboard item in column 1, row (Integer A) to MB_Col1[(Integer A)]
Set MB_Col2[(Integer A)] = MB_Col2[((Integer A) + 1)]
Multiboard - Set the text for Questboard item in column 2, row (Integer A) to MB_Col2[(Integer A)]
Set MB_Col3[(Integer A)] = MB_Col3[((Integer A) + 1)]
Multiboard - Set the text for Questboard item in column 3, row (Integer A) to MB_Col3[(Integer A)]
For each (Integer B) from 1 to Quest_Counter, do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Quest_MbRow[(Integer B)] Greater than Quest_MbRow[(Custom value of (Target unit of issued order))]
Then - Actions
Set Quest_MbRow[(Integer B)] = (Quest_MbRow[(Integer B)] - 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Quest_Killed[(Integer B)] Equal to Quest_Required[(Integer B)]
Then - Actions
Multiboard - Set the color for Questboard item in column 0, row Quest_MbRow[(Integer B)] to (0.00%, 100.00%, 0.00%) with 0.00% transparency
Else - Actions
Multiboard - Set the color for Questboard item in column 0, row Quest_MbRow[(Integer B)] to (100.00%, 100.00%, 100.00%) with 0.00% transparency
Else - Actions
Multiboard - Change the number of rows for Questboard to ((Number of rows in Questboard) - 1)
Set Quest_MbRow[(Custom value of (Target unit of issued order))] = 0
If (Quest_Following[(Custom value of (Target unit of issued order))] Not equal to 0) then do (Trigger - Run Following Quests <gen> (checking conditions)) else do (Do nothing)
Else - Actions

[/trigger]

This triggers change your quest progress...

[trigger=... after kills]
Killme Kills
Events
Unit - A unit Dies
Conditions
(Owner of (Triggering unit)) Equal to Player 12 (Brown)
Actions
For each (Integer A) from 1 to Quest_Counter, do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Triggering unit)) Equal to Quest_Mobs1[(Integer A)]
(Unit-type of (Triggering unit)) Equal to Quest_Mobs2[(Integer A)]
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Quest_Quest[(Integer A)] is enabled) Equal to True
Quest_Killed[(Integer A)] Not equal to Quest_Required[(Integer A)]
Then - Actions
Set Quest_Killed[(Integer A)] = (Quest_Killed[(Integer A)] + 1)
Set Quest_Description[(Integer A)] = (Quest_Task[(Integer A)] + (( ( + ((String(Quest_Killed[(Integer A)])) + /)) + ((String(Quest_Required[(Integer A)])) + ))))
Game - Display to (All players) for 7.00 seconds the text: (|cff2222ffQuest Updated|r: + Quest_Name[(Integer A)])
Game - Display to (All players) for 7.00 seconds the text: Quest_Description[(Integer A)]
Set MB_Col3[Quest_MbRow[(Integer A)]] = ((String(Quest_Killed[(Integer A)])) + (/ + (String(Quest_Required[(Integer A)]))))
Multiboard - Set the text for Questboard item in column 3, row Quest_MbRow[(Integer A)] to MB_Col3[Quest_MbRow[(Integer A)]]
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Quest_Killed[(Integer A)] Equal to Quest_Required[(Integer A)]
Then - Actions
Special Effect - Create a special effect attached to the overhead of Quest_Unit[(Integer A)] using Objects\RandomObject\RandomObject.mdl
Set Quest_Exclamark[(Integer A)] = (Last created special effect)
Multiboard - Set the color for Questboard item in column 0, row Quest_MbRow[(Integer A)] to (0.00%, 100.00%, 0.00%) with 0.00% transparency
Else - Actions
Else - Actions
Else - Actions
[/trigger]

[trigger=... after talking]
Talktome Talks
Events
Unit - A unit Is issued an order targeting an object
Conditions
((Rect centered at (Position of (Target unit of issued order)) with size (500.00, 500.00)) contains (Ordered unit)) Equal to True
Quest_TargetFriend[(Custom value of (Target unit of issued order))] Equal to (Target unit of issued order)
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Quest_Quest[(Custom value of (Target unit of issued order))] is enabled) Equal to True
Quest_Killed[(Custom value of (Target unit of issued order))] Not equal to Quest_Required[(Custom value of (Target unit of issued order))]
Then - Actions
Floating Text - Create floating text that reads Quest_FloatingTarget[(Custom value of (Target unit of issued order))] above (Target unit of issued order) with Z offset 0.00, using font size 8.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
Floating Text - Change (Last created floating text): Disable permanence
Floating Text - Change the fading age of (Last created floating text) to 8.00 seconds
Floating Text - Change the lifespan of (Last created floating text) to 10.00 seconds
Set Quest_Killed[(Custom value of (Target unit of issued order))] = 1
Special Effect - Destroy Quest_Exclamark[(Custom value of (Target unit of issued order))]
Special Effect - Create a special effect attached to the overhead of Quest_Unit[(Integer A)] using Objects\RandomObject\RandomObject.mdl
Set Quest_Exclamark[(Integer A)] = (Last created special effect)
Game - Display to (All players) for 7.00 seconds the text: (|cff2222ffQuest Updated|r: + Quest_Name[(Custom value of (Target unit of issued order))])
Game - Display to (All players) for 7.00 seconds the text: Quest_ReturnDesc[(Custom value of (Target unit of issued order))]
Set MB_Col3[Quest_MbRow[(Custom value of (Target unit of issued order))]] = ((String(Quest_Killed[(Custom value of (Target unit of issued order))])) + (/ + (String(Quest_Required[(Custom value of (Target unit of issued order))]))))
Multiboard - Set the text for Questboard item in column 3, row Quest_MbRow[(Custom value of (Target unit of issued order))] to MB_Col3[Quest_MbRow[(Custom value of (Target unit of issued order))]]
Multiboard - Set the color for Questboard item in column 0, row Quest_MbRow[(Custom value of (Target unit of issued order))] to (0.00%, 100.00%, 0.00%) with 0.00% transparency
Else - Actions

[/trigger]

[trigger= ... after collecting items]
Bringmeitems Items
Events
Unit - A unit Acquires an item
Conditions
Actions
For each (Integer A) from 1 to Quest_Counter, do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Item-type of (Item being manipulated)) Equal to Quest_NeededItem[(Integer A)]
(Triggering unit) Equal to Quest_Unit[(Integer A)]
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Quest_Quest[(Integer A)] is enabled) Equal to True
Quest_Killed[(Integer A)] Not equal to Quest_Required[(Integer A)]
Then - Actions
Set Quest_Killed[(Integer A)] = (Quest_Killed[(Integer A)] + 1)
Set Quest_Description[(Integer A)] = (Quest_Task[(Integer A)] + (( ( + ((String(Quest_Killed[(Integer A)])) + /)) + ((String(Quest_Required[(Integer A)])) + ))))
Game - Display to (All players) for 7.00 seconds the text: (|cff2222ffQuest Updated|r: + Quest_Name[(Integer A)])
Game - Display to (All players) for 7.00 seconds the text: Quest_Description[(Integer A)]
Set MB_Col3[Quest_MbRow[(Integer A)]] = ((String(Quest_Killed[(Integer A)])) + (/ + (String(Quest_Required[(Integer A)]))))
Multiboard - Set the text for Questboard item in column 3, row Quest_MbRow[(Integer A)] to MB_Col3[Quest_MbRow[(Integer A)]]
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Quest_Killed[(Integer A)] Equal to Quest_Required[(Integer A)]
Then - Actions
Special Effect - Create a special effect attached to the overhead of Quest_Unit[(Integer A)] using Objects\RandomObject\RandomObject.mdl
Set Quest_Exclamark[(Integer A)] = (Last created special effect)
Multiboard - Set the color for Questboard item in column 0, row Quest_MbRow[(Integer A)] to (0.00%, 100.00%, 0.00%) with 0.00% transparency
Else - Actions
Else - Actions
Else - Actions
[/trigger]



v1.0

-release
v1.1

-the system now supports Following Quests
-fixed 2 bugs that displayed wrong questionmarks

Keywords:
Quest, System, GUI, Multiboard
Contents

Simple Quest System (Map)

Reviews
12th Dec 2015 IcemanBo: Too long time as NeedsFix. Rejected. 19:44, 17th Jun 2010 The_Reborn_Devil: You got some messed up custom script in your map so it doesn't compile. Fix this. Status: Rejected until updated Rating: N/A PM me or...

Moderator

M

Moderator

12th Dec 2015
IcemanBo: Too long time as NeedsFix. Rejected.

19:44, 17th Jun 2010
The_Reborn_Devil:

You got some messed up custom script in your map so it doesn't compile. Fix this.


Status: Rejected until updated
Rating: N/A

PM me or another mod once you've updated this to get it reviewed again. Have a nice day!
 
Level 12
Joined
May 21, 2009
Messages
994
Remove the DoNothing() function it doesnt do anything and its just a waste.. I wouldnt download right now since i dont got time to check it sry :/ but i'll download another day and review it.. From triggering it seems nice and dont seem to have any leaks. so i give the trigger 3.5/5 - 3.5 because it aint jass :)
 
Level 3
Joined
Feb 23, 2009
Messages
16
Code looks good and clear, only bad thing I found is that you use the custom value.

*testing*

Ok, it does what it should, but is it possible to create more-step-quests?
Like:
1.) Go to Mountain King and deliver him a message.
2.) Come back with the information he gave you
3.) go there.
4.) go here
...

Not realy useful for me, but perhaps others can use it :)
 
Level 7
Joined
Sep 8, 2011
Messages
211
I really like this script actually, seems pretty straight forward. It is annoying that the talking quests require you to go back to your original quest giver, they should be two separate things.

Also is there anyway I can set triggers off or give items when the quest is handed it? For instance when the player speaks to the guard to hand in the quest, the guard will give the player a health potion then run off and defend an outpost.

If you can please let me know asap, that would be amazing! :). Apart from that, this system has been extremely helpful for me, thank you so much ^^

Edit: The Item quest doesn't seem to be working either.
 
Last edited:
Top