Quest Lines

Started by Alexander, January 09, 2016, 11:19:22 AM

Previous topic - Next topic

Alexander

So I came back after a bit of a break, and was delighted to see some great progress on the game. So to start, good job to Rotem and all the players working on it.

Past the updated map, I also noticed that quests were becoming more.. user friendly and presentable. My first question would be, are Quests at a point where we can start adding quests easily?

If the answer is yes, I would like to see a string of quest lines added into the game. These would operate similar to games such as Skyrim or Fallout, where you would discover the first quest and that would set you on a path. Once you completed the first one, you keep completing each quest, till you reach the end of the quest line. Some examples of these from those games would include guild questlines (ex Mages Guild, Brotherhood of Steel, Fighters Guild, Theives Guild, The Minutemen, or the Institute). Other examples would be side quests, with less quests in the quest line (The Nirnroot Questline, Blowing up the Nuke in Megaton).

Each quest in the quest line, should reward the player appropriately, with quests farther in the quest line giving more. Rewards would always include experience, and may offer special rewards in the way of items or bonus experience, should the player complete the quest in a certain manner (ex. The quest giver teachs a spell, if they pass the test given. Extra money is given, if they protect the quest giver from robbers.)

If you'd really like to make things complex, questlines could interact with each other. Example, if you complete Quest A in a certain way, Quest B is then done differently, easier, harder, or not available at all. These might be options to add much later on, as they require a lot of source material and planning to put together. Best to get a few simple, single standing questlines done, before trying to merge them all.

Overall, this kind of update wouldn't seem too appealing to older players, as I feel most would just burn through the quests at the levels they currently are. However, this has a lot of value to newer players, who enjoying the exploring aspect of the game.

If something like this already exists, how would we start suggesting quests. Do we outline all the steps, what they players has to do, who they have to interact with? Some guidelines in this matter would be appreciated.

Rotem

Here's an example of a quest script

quest
Basilisk
name   = "To kill a Boss \[Daily]"
desc   = "The basilisk is found at the Chamber of Secrets, kill the Basilisk and any demon rat that gets in your way!"
reward = /questReward/Teleport
repeat = 864000

Kill
desc = "Kill 1 basilisk and 50 demon rats."
reqs = list("Kill Basilisk"        = 1,
            "Kill Demon Rat"       = 50)
Reward
desc = "Go back to Saratri to get your reward!"
reqs = list("Saratri" = 1)


repeat is the amount of ticks (1/10 seconds) that the quest can be repeated, if 0 it's one time if higher you can make an hourly, daily, weekly, monthly quest.

reward refers to a reward, exp, points, spells, suit yourself.

Then we have the name and desc, name is a given, the quest name, it has to be unique, NPCs use the name to attach themselves to the quest, we'll see how NPCs are in a second.

desc, at each stage of the quest, this is displayed to the user, it's also the text that adds to their quest book window, they basically have a journal very similar to Skyrim with all of the scripts from stage 1 to their current stage.




Moving onto NPCs:

Saratri
icon_state="lord"
questPointers = "To kill a Boss \[Daily]"
Talk()
set src in oview(3)
Quest(usr)


questStart(mob/Player/i_Player, questName)

var/ScreenText/s = new(i_Player, src)
s.AddText("Hey there... Did you know there's a terrible monster here called the Basilisk? I'll reward you if you kill it...")

..(i_Player, questName)

questOngoing(mob/Player/i_Player, questName)
.=..(i_Player, questName)

var/ScreenText/s = new(i_Player, src)
if(.)
s.AddText("Good job! I can't believe you pulled it off!")
else
s.AddText("Go kill the Basilisk!")

questCompleted(mob/Player/i_Player, questName)
var/ScreenText/s = new(i_Player, src)
s.AddText("Wow! I can't believe you killed the Basilisk!")


So we have ourselves a mob under mob/TalkNPC/quest, all the code will be behind scenes so we only have to define what it says and when.

questPointers are a list of quest names the NPC will give you, it can be either a list or fixed text if it's only one quest, if a list it will go from the first to the very last item in the list.

If a certain item is a daily, it will repeat it, if the daily quest was completed, it'll progress further in. If all quests are completed and no dailys can be done it'll display questCompleted with the last questName searched, questName will allow you to write text for a certain quest.

questStart occurs when the quest is given, right before it's given, in fact the "..(i_Player, questName)" is what gives the quest, this means that if we have a check for user's level or a quest pointer another NPC has we can easily tell the NPC to not hand out the quest.

questOngoing is actually 2 events at once, after a quest has started usually you return to the NPC however you may also talk to him before completing the task which is why we ask a question:

.=..(i_Player, questName), this equals to, did the player complete his task and so you have 2 outputs of whether the quest is ongoing or just finished.

As stated before, questCompleted is what occurs if the quest was already completed although this is normally only required for last quest the NPC gives.




Notes:

  • ScreenText: this takes care of the fancy quest dialogue, it supports up to 3 colored, custom text buttons, it also outputs the text to player's chat and also have the option of audio, we have plans for the community to immortalize themselves breathing life into the NPCs.
  • Pathfinding, quest system has full pathfinding support, you'll find that most areas in TWC can map a full path from A to B (Secret passages and CoS floor 2 and above excluded), normally if a quest requirement is a tag location the system adds a clickable [Path] over the on-screen quest text, players can click it and have arrows lead them to their target, all quest NPCs have a tag set to their name to make use of this.
  • It should be noted that quests were only useful with kill quests or find x drops from a monster despite supporting more options. This is because walking from point A to point B is silly easy and quests such as that are boring.
  • We also began faction-related quests of chaos/peace (the new clans that replace aurors and deatheaters alongside with guilds, I should note for the HP fans that nothing prevents you from making a guild named Aurors or Deatheaters, fan-named guilds are not a copyright breach, at least I hope so, it'd be really sad if it is).




While quests are a pretty old feature, I did set them up so that defining a new quest can be done with ease. When I added vampires I wanted the lore I write to be interesting and have more weight and so things got fancy.

I do believe we have about 60 quests already in, some of which are dailys and weeklys. We even rewarded TWC Idol winner with a quest all about him.

Alexander

Thanks for the detailed response.

Is there a public listing of Quests already in the game?

With how it works in mind, can we merely suggest quests and how they'd function here?

Or would you want us to put that together in the source?

Rotem

I don't believe the quest formatting is all that hard but do whatever feels comfortable to you, the more details you add the better. If I don't feel like writing an essay to implement a quest then it is most definitely my fault.

Basically, as long as you're not doing a:
Quote
can u pls add a quest line of 30 quests of s0me silly begger that that sends you on pointless journeys to save his family, make it funny and write stuff about his dad and mother

oh pls add potions while ur at it
You'll be all good, as long as you're not doing that. I won't be writing the quest for people while they only write 1 sentence about it. Helping with code formatting is easy, writing the content is the harder part.


I also reserve the right to not add a quest if I think there's no benefit to it or if there's some sort of unbalance in it. Or if the benefit of adding it outweigh whatever crazy feature you want to add with it.

But writing tutorials for example or converting leveling spells to quests with a spell reward, things like that are ok, doable and welcome.

Rotem

I toyed in my head with the concept of Thieves Guild from TES.

It's actually incredibly doable to have a thief/fence NPC that sends you to steal things. Currently there's no 'Gaurds' that would chase you around but making an AI that walks a certain path and if he's in view while you're trying to steal, the steal will be cancelled and gaurd adds bountry and kills you or whatever.

That takes a bit of effort to add gaurds but the rest is easy. It might be good in the future since Diagon Alley and Hogsmeade aren't maps that are very well equipped to handle it.

You'd want to have some challenge and set up NPCs a certain way. So that might require some mapper's thought. Interesting concept though!