Author Topic: Missing Skill-Boosting Quests  (Read 2788 times)

Uadjet

  • Game Masters
  • Hydlaa Citizen
  • *
  • Posts: 237
    • View Profile
Missing Skill-Boosting Quests
« on: November 25, 2018, 07:46:45 pm »
 As most players will likely know by now, a number of skills now have quests that can be completed every x hours to boost that skill to the next level. These are quite useful for those who want to raise skills without grinding, while still allowing those who do grind to level much faster than those who only do quests. Not all skills have this option as the quests were not done or not completed, so I'm hoping we can get a few players involved and make the quests ourselves.

This thread is here to provide basic information about quest-making and to list the skills that could use new quests. When it comes time to actually work out the details we should probably take that info private so as not to provide spoilers for everyone to see.

First, there are a few links that may come in handy. I'll post a few, and if anyone else suggests a link I'll happily add it here.

First, Venalan provided some data about quest syntax/format and some examples from the game: Very Useful!!!

The thread itself has some useful information in it, so here's the link: This thing here.

Regarding art for new items: Creating Art and mods

Adding images to books and maps

Now, some skills already have quests that give them boosts. These are:
All Combat Skills
Alchemy
Baking
Cooking
Drawing
Empathy
Fishing
Harvesting
Herbal
Mace Making
Mining

Did I miss any? That leaves:

Armor Making
Blacksmith
Blades Making
Body Development
Bow Making
Brewing
Jewelry Making
Leatherworking
Lockpicking
Metallurgy
Musical Instrument
Repair Armors
Repair Weapons
Shield Making

Now, some of those fit quite well into the "make x of these and get your level" type of quest and are explained very well in their intro quests. I'd say that Armor Making, Blades Making, Bow Making, Brewing, Jewelry Making, Leatherworking, Metallurgy, and Shield Making fall into that category. We can do those just like the Mace Making or Alchemy quests, and they should do fine.

Crafting Skills

Some of the quests already in game are in pairs, so you get one quest at lower skill levels and a second quest at higher levels. This, I think, makes it easier to set up tasks with differing difficulty levels. For example, the Mace Making quests are a lower-level one where you make normal blunt weapons, and a second quest where you make platinum-steel items. I rather like that, though I'd like to set it up so that a player does the first quest at least once no matter their skill level as a kind of intro.

That leaves:

Blacksmith, Repair Armors, Repair Weapons, Body Development, Lockpicking, and Musical Instrument.

Blacksmith

Blacksmith is odd because while tons of tasks use the skill, they all also fall under another skill. Like blades making, or armor making. Other than hammering heated stocks and ingots, I can't think of anything that uses just Blacksmith. Leatherworking is similar, but at least some of the tasks use only leatherworking. So what do we do for Blacksmith? There are plenty of tasks a blacksmith might do that aren't weapon or armor related, but those activities aren't in game.

So what do we do? We could pick out some basic tasks and have the player do them. We could make up new general items made of metal that the player could do (tankards, cutlery, etc.), but that means adding a crafting book. Would be awesome, but not easy. Any thoughts?

Repair Armors/Weapons

Got a couple ideas for this. First, we can just make up new base items and give them to the player in damaged form. Is that possible? NPCs can give items of various qualities, but can the max quality and the current quality be different? Second, we could have the player actually need to learn how to repair items, and retrieve the materials needed for that task. Oilstones, waterstones, etc. The hard way would require mining for materials not currently in game OR just getting them from mining NPCs. Heck, maybe players could be sent out to gather materials for repair kits, if we can determine what's in them.

Body Development

This is all about toughness. Getting hit for damage already provides training, but there could certainly be other ways to train the skill. Long distance running? Maybe deliveries to other cities with the pterosaur travel quests disabled. Or collecting body parts from tough creatures. Tasks that require large amounts of physical exertion.

Lockpicking

This could be a lot of fun to do. I'm picturing the appropriate NPCs (blacksmiths at low level, thieves at higher level) giving tasks. They can start out with a quest explaining how locks work, and subsequent quests can be about repairing locks, then picking chests to retrieve and deliver the contents (maybe having to find the chests?), and maybe even a maze like in Menita's Puzzle where the doors are locked.

Musical Instrument

As suggested in the meeting, the player could be sent on quests to learn about music from different people/groups, and may have to do something in exchange for that knowledge. Perform basic tasks, fetch items, or just outright pay for the info with gems or whatever that person/group wants.


Okay, this is just a quick start. Hopefully it'll get the ball rolling, just a bit. Please post any thoughts you have, and we'll see how far the community can take this.  :thumbup:

Update: Nov. 25/20

Okay, a lot of those quests are done! Here's what's left:

Blacksmith
Body Development
Leatherworking
Lockpicking
Musical Instrument
Repair Armors
Repair Weapons

The repair skills are partially done and awaiting inspiration, and there's a really good musical instrument quest out there that is I think at the polishing stage. I've written two leatherworking quests, four lockpicking quests, and a body development quest that I don't ever remember doing awaiting testing. That leaves Blacksmith, which I must admit I put off because there isn't much that can be done with just that skill. Hammering stocks back into stocks is kinda it, I think, and I may be wrong about that. I have a plan for items that could be made just using Blacksmithing, but that mostly means new items, new art, and a new crafting book, and maybe a new piece of equipment. That's.. a bit much. I can still write a fetch quest as a stand-in, though.

Also, the armor skills (combat skills, I mean) have no quest that I can think of. I started writing a quest for light armor, but that was ages ago and I need to find my notes.

And seriously, I have no memory of writing the Body Development quest! Just... vague recollections of the idea behind it. It's freaking me out!  :o
« Last Edit: January 21, 2020, 08:58:36 am by Uadjet »

Uadjet

  • Game Masters
  • Hydlaa Citizen
  • *
  • Posts: 237
    • View Profile
Re: Missing Skill-Boosting Quests
« Reply #1 on: November 29, 2018, 09:06:36 pm »
Okay, I'm writing a really basic sample quest that assigns one of several tasks to a player using the glassmaking skill. Which isn't active, but the idea just popped into my head and I'm going with it. This should show you how a basic quest works, so that you don't have to poke around in other files.

The first section is the header that appears at the top of all quests.The '#' means the line is commented out, so it has no effect on what the player sees or what the server does. It's just to help people reading the raw quest file.

Code: [Select]
# Quest name: Glassblowing Training Quest.
# Quest Description: Repeatable quest to train glassblowing.
# Quest Category: Repeatables ???
# ----------------------
# Quest Items: Item name/Item description
# Item name - Description here.
# ----------------------
# Author(s): Uadjet
# Current Version: 0.1 Alpha
# Player lockout: -1 ???
# Quest lockout: 0 ???
# Prerequisites: <pre><completed quest="???"/></pre>
#----------------------
# Version history and change log
# Last edited by: Nobody, as should be obvious
# Version 0.1: Never checked, Venaland and Mordaan will likely laugh when they see it
# ---------------------

That's mostly self-explanatory, I think, and I've filled most of it out as I would for a quest I was writing. The ??? mark lines I don't really understand, but again they're all commented out so the server ignores them.

This step isn't really necessary, but you can have NPCs say things to players as they walk past. You can also check various traits about the player, so that the NPC will only say things for a specific skill level or if a quest is completed. I think. I'm mainly including it because it's a very simple introduction to one aspect of quest writing.

Code: [Select]
P: !shortrange
Glassblower McUnimplemented:

Okay, that has two lines to it. The line starting with "P:" and the line starting with the NPCs name. The P: line includes what the player says to the NPC. The trigger text. It can also read "Player gives Glassblower McUnimplemented Glass Mug" if the player walks up to the NPC in question and trades him/her/kra a glass mug. In this case, the trigger is being at short range.

The line of dialogue includes the full NPC full name (always the full name) and whatever that NPC says when the player triggers that step of a quest.

So let's try making something quest-specific.

Code: [Select]
P: !shortrange
Glassblower McUnimplemented: Damnation! I've broken another glass mug. I'm going to have to buy some more soon.

That's simple enough. If a player walks by at short range, Glassblower McUnimplemented (which seemed much cleverer when I first used it) will say that line. Easy. Now, what if we only wanted people who can actually work with glass items to get that prompt? We can add a restriction to that step. The documentation I linked to has far more examples of that kind of thing, but we'll assume the NPC knows the player has some training in glassblowing because the player has done a quest before. That line goes before the P: line. Like this:

Code: [Select]
Require completion of Introduction to Glassblowing
P: !shortrange
Glassblower McUnimplemented: Ah, $playername! I remember you. Could you give me a moment of your time?

So the first line checks to see if the player nearby (at !shortrange) has completed the quest "Introduction to Glassblowing" and if he/she/kra has it will display the dialog line. The dialog line contains "$playername", which is one of the wildcards you can use when writing quests. Enter that, and the NPC will say the player's name.

So that actually gives us examples of three different types of lines in a quest step. There's a lot more you can do with them, but they aren't too complex so far, are they?

So the player hears this and decides to see what the NPC wants. We'll now have the second step in the quest.

Code: [Select]
... NoRepeat

#Step 2.
P: give quest. quest. glass mug. glassblowing.
Menu: Did you need something?
Glassblower McUnimplemented: Yes, I'm badly in need of some new glass mugs and I was hoping you could help me.
Assign Quest

That's a nice, simple first step. First, note the '...' on the top there. That tells the server you're starting a new step in the quest. The "#Step 2." bit doesn't do that, as the '#' means that line isn't read by the server, remember? The "NoRepeat" bit means that after this step is run that particular dialog option doesn't show again. Most steps will have this, as if they didn't each dialog bubble would keep repeating. Remember what popups were like before adblocking was available? Yeah...

So the P:... part lists the various things the player could say to trigger this if they weren't using the dialog bubbles, as usual. Nothing exciting or new there.

Now the "Menu" line is new. That's what the player actually sees in the dialog bubble that they click on. That's the player's 'voice', so to speak. Here there's only one option, but we'll change that shortly. After clicking on that, the NPC responds with the line listed just under the Menu line.

Next is the line that actually starts the quest: "Assign Quest" Pretty simple, right? Well, it's simple but maybe not the best way to do it. The player actually hasn't agreed to help yet, so setting the quest as accepted is a bit premature. Let's give the player the option to say Yes or No. There are a couple ways to do that.

Code: [Select]
... NoRepeat

#Step 2.
P: give quest. quest. glass mug. glassblowing.
Menu: Did you need something?
Glassblower McUnimplemented: Yes, I'm badly in need of some new glass mugs and I was hoping you could help me.
Complete Glassblowing Training Quest step 2

... NoRepeat

#Step 3
Require completion of Glassblowing Training Quest step 2. Require no completion of Glassblowing Training Quest step 4.


... NoRepeat

#Step 4
Require completion of Glassblowing Training Quest step 2. Require no completion of Glassblowing Training Quest step 3.


I'll stop here for a moment to explain. Note that completing step 2 is a requirement for completing both step 3 and step 4, so both of those will pop up after completing step 2. You'll also see that steps 3 and 4 both require that the player not have completed the other step, so if a player does step 3, step 4 will not show up as an option. Otherwise the player could, in this case, both accept and decline the quest. I'll fill it in a bit more now:

Code: [Select]
... NoRepeat

#Step 2.
P: give quest. quest. glass mug. glassblowing.
Menu: Did you need something?
Glassblower McUnimplemented: Yes, I'm badly in need of some new glass mugs and I was hoping you could help me.
Complete Glassblowing Training Quest step 2

... NoRepeat

#Step 3
Require completion of Glassblowing Training Quest step 2. Require no completion of Glassblowing Training Quest step 4.
P: Decline. No. Nohelp.
Menu: No, I'm too busy right now.
Glassblower McUnimplemented: Oh, that's a shame. Come back later if you change your mind.
Complete Glassblowing Training Quest step 3

... NoRepeat

#Step 4
Require completion of Glassblowing Training Quest step 2. Require no completion of Glassblowing Training Quest step 3.
P: Accept. Yes. Yeshelp.
Menu: Yes, I can help you.
Glassblower McUnimplemented: Wonderful! I'll need six glass mugs as quickly as you can make them.
Complete Glassblowing Training Quest step 4. Assign Quest.

If the player chooses to help, they can continue on. If they say no, the quest is over before it began and cannot be restarted again. Not too much fun, I suppose. Perhaps if the player says "no' the NPC can give them another chance?

Code: [Select]
... NoRepeat

#Step 2.
P: give quest. quest. glass mug. glassblowing.
Menu: Did you need something?
Glassblower McUnimplemented: Yes, I'm badly in need of some new glass mugs and I was hoping you could help me.
Complete Glassblowing Training Quest step 2

... NoRepeat

#Step 3
Require completion of Glassblowing Training Quest step 2. Require no completion of Glassblowing Training Quest step 4.
P: Decline. No. Nohelp.
Menu: No, I'm too busy right now.
Glassblower McUnimplemented: Oh, that's a shame. Come back later if you change your mind.
Complete Glassblowing Training Quest step 3

... NoRepeat

#Step 4
Require completion of Glassblowing Training Quest step 2.
P: Accept. Yes. Yeshelp.
Menu: Yes, I can help you.
Glassblower McUnimplemented: Wonderful! I'll need six glass mugs as quickly as you can make them.
Complete Glassblowing Training Quest step 4. Assign Quest.

That's better. I removed the requirement that step 3 NOT be completed off step 4, so if you decline the quest once you can still go back later and say Yes. Still, there's a better way. You know how sometimes an NPC will give you a choice in conversation and no dialog bubbles from other quests will pop up? It shows only the options for that one quest. Here's how that works.

Code: [Select]
... NoRepeat

#Step 2.
P: give quest. quest. glass mug. glassblowing.
Menu: Did you need something?
Glassblower McUnimplemented: Yes, I'm badly in need of some new glass mugs and I was hoping you could help me.
P:nohelp. P: yeshelp
Menu: No, I'm too busy right now. Menu: Yes, I can help you.
Glassblower McUnimplemented: Oh, that's a shame. Come back later if you change your mind.
Glassblower McUnimplemented: Wonderful! I was worried I'd come up short during the rush.
Assign Quest

That's a little more complex to write, but in the end I think it makes things easier.  You write the P: , Menu: , and NPC: lines as normal, but after them you add an additional P: line with one entry per option the player is to be given. In this case you have only yes and no options, so the line is: "P:nohelp. P: yeshelp"

After that is a Menu: line where you enter the Dialog options that will fill the bubbles defined by the line above. In this case: "Menu: No, I'm too busy right now. Menu: Yes, I can help you."

Note that in both cases you need the "P:" and "Menu:" component for each option. You can't simply say "Menu: No, I'm too busy right now.  Yes, I can help you." That's only one entry. You need this: ""Menu: No, I'm too busy right now. Menu: Yes, I can help you.""

The lines of NPC dialog are given their own lines, but the order must match the order given in the P: and Menu: lines.

I don't know why the quest doesn't complete step 2. I'll have to ask about that.

Assuming the player chooses to continue the quest, we move on to actually giving the task required. For that we need a new step, which will be step 3 if we use the last example for step 2.

Code: [Select]
... NoRepeat

#Step 3
P: Task
Menu: What did you need me to make?
Glassblower McUnimplemented: Six glass mugs, please. As quickly as you can make them!
Complete Glassblowing Training Quest step 3

That's it. Pretty simple, right? Now you'll need a step where you hand in the items, but what if the player forgets what they were supposed to make? They could take a break from the game or just have a lot of open quests. We should add in a reminder step that will tell them what to do.

Code: [Select]
...

#Step 4
Require completion of Glassbowing Training Quest step 3.
Require no completion of Glassblowing Training Quest step 5
Require  no  possessed  amount  6  item  Glass Mug
P: Iforgot
Menu: What did you need me to make again?
Glassblower McUnimplemented: Glass mugs. Six of them. Please try to hurry.
Complete Glassblowing Training Quest step 4.

That should do it. Left out the NoRepeat bit at the top so the player can get as many reminders as necessary and put in a "require no completion" so that this option won't show up after the step where you hand in the items is completed.

Now we can add the step where we hand in the items.

Code: [Select]
... NoRepeat

#Step 5
Require completion of Glassbowing Training Quest step 3.
Require possessed amount 6 Glass Mug.
Player gives Glassblower McUnimplemented 6 Glass Mug.
Menu: Here they are.
Glassblower McUnimplemented: Thank you! Just in time for the after work rush.

So as usual we require the completion of the previous step to start this one to keep the quest nice and clean. We also require that the player actually have the required items to see this option. That's the "Require possessed amount 6 Glass Mug." bit. You'll probably notice that instead of "P: something" we have a "Player gives..." line. That's so that the player actually hands over the items needed, and is used in place of the triggering text format. Other than that, it's pretty normal. Would be nice to complete the quest, though, right?

Code: [Select]
... NoRepeat

#Step 5
Require completion of Glassbowing Training Quest step 3.
Require possessed amount 6 Glass Mug.
Player gives Glassblower McUnimplemented 6 Glass Mug.
Menu: Here they are.
Glassblower McUnimplemented: Thank you! Just in time for the after work rush.
Complete Glassblowing Training Quest step 5. Complete Glassblowing Training Quest.

There we go. Completed the step and then the quest. No rewards, though. Kinda cheap of me.

Code: [Select]
... NoRepeat

#Step 5
Require completion of Glassbowing Training Quest step 3.
Require possessed amount 6 Glass Mug.
Player gives Glassblower McUnimplemented 6 Glass Mug.
Menu: Here they are.
Glassblower McUnimplemented: Thank you! Just in time for the after work rush.
Run script give_quest_exp <<1>>.
Run script give_quest_money <<1>>.
Run script give_quest_skill <<'Glassblowing',1>>.
Complete Glassblowing Training Quest step 5. Complete Glassblowing Training Quest.

Better! Now we've added the rewards of exp, tria, and a skill point. The tria and exp rewards work with a multiplier based on character skill, stats, nostril size, and probably other things as well, so even though it says "1" you aren't giving 1 tria and 1 exp point. It's just the base reward, and entering a value of 2 would give double that.

So, putting that all together gives us:

Code: [Select]
# Quest name: Glassblowing Training Quest.
# Quest Description: Repeatable quest to train glassblowing.
# Quest Category: Repeatables ???
# ----------------------
# Quest Items: Item name/Item description
# Item name - Description here.
# ----------------------
# Author(s): Uadjet
# Current Version: 0.1 Alpha
# Player lockout: -1 ???
# Quest lockout: 0 ???
# Prerequisites: <pre><completed quest="???"/></pre>
#----------------------
# Version history and change log
# Last edited by: Nobody, as should be obvious
# Version 0.1: Never checked, Venaland and Mordaan will likely laugh when they see it
# ---------------------

Require completion of Introduction to Glassblowing
P: !shortrange
Glassblower McUnimplemented: Ah, $playername! I remember you. Could you give me a moment of your time?

... NoRepeat

#Step 2.
P: give quest. quest. glass mug. glassblowing.
Menu: Did you need something?
Glassblower McUnimplemented: Yes, I'm badly in need of some new glass mugs and I was hoping you could help me.
P:nohelp. P: yeshelp
Menu: No, I'm too busy right now. Menu: Yes, I can help you.
Glassblower McUnimplemented: Oh, that's a shame. Come back later if you change your mind.
Glassblower McUnimplemented: Wonderful! I was worried I'd come up short during the rush.
Assign Quest

... NoRepeat

#Step 3
P: Task
Menu: What did you need me to make?
Glassblower McUnimplemented: Six glass mugs, please. As quickly as you can make them!
Complete Glassblowing Training Quest step 3

...

#Step 4
Require completion of Glassbowing Training Quest step 3.
Require no completion of Glassblowing Training Quest step 5
Require  no  possessed  amount  6  item  Glass Mug
P: Iforgot
Menu: What did you need me to make again?
Glassblower McUnimplemented: Glass mugs. Six of them. Please try to hurry.
Complete Glassblowing Training Quest step 4.

... NoRepeat

#Step 5
Require completion of Glassbowing Training Quest step 3.
Require possessed amount 6 Glass Mug.
Player gives Glassblower McUnimplemented 6 Glass Mug.
Menu: Here they are.
Glassblower McUnimplemented: Thank you! Just in time for the after work rush.
Run script give_quest_exp <<1>>.
Run script give_quest_money <<1>>.
Run script give_quest_skill <<'Glassblowing',1>>.
Complete Glassblowing Training Quest step 5. Complete Glassblowing Training Quest.

Okay, that's the basic format as I understand it. I'll expand on that below by showing how to add Quest notes and how to give variable tasks as the skill quests in game already do. I might have figured out how to do the timer, but I'm not sure...
« Last Edit: November 29, 2018, 09:41:41 pm by Uadjet »

Uadjet

  • Game Masters
  • Hydlaa Citizen
  • *
  • Posts: 237
    • View Profile
Re: Missing Skill-Boosting Quests
« Reply #2 on: November 29, 2018, 10:01:10 pm »
That was a fairly long post, so I'll try to make this shorter. This is how to add the quest notes that players can use to remind themselves of what they're supposed to be doing. Probably not needed for the relatively short quest above, but what the heck.

You add Quest Notes by adding a line starting with "Questnote" just below the line containing the NPC dialog. No colon on that line, which is going to bug me. Here's a quick example from Abelia's Welcome, the quest from the tutorial.

Code: [Select]
... NoRepeat

P: start tutorial. start. start here. begin. give quest. quest.
Menu: [This is the option you need to click to start the quest.] Hi, is all this equipment yours?
Abelia Aruine: [Abelia places her broom against the table and dusts her hands off on her apron to help compose herself before smiling at you.] Why yes, yes it is. And welcome to Hydlaa, the central and main city of the top level of Yliakum! I've been told to say that to all new people I see round here. [Abelia smirks as she turns round and starts gathering items from the table behind her.] Apparently there have been attacks coming from the Stone Labyrinths recently and lots of people fled this way. It's been quiet today so far, but since it's been busy all week with new arrivals I've been half expecting a rush this afternoon as well. [She peers over her shoulder at you.] You didn't see a giant crowd of people headed this way did you? [--] [INFORMATION: To see how to interact with NPCs click on the 'HELP' icon in the toolbar and in the 'START HERE' section read the heading 'INTERACTING WITH NPCs'.] [Skipping NPC dialogue: You can speed up how quickly NPCs talk by clicking on the bubbles which appear displaying the NPCs dialogue. You should be careful about skipping forward as you might miss important information the NPC tells you.] [This text is appearing in the chat window. There are 10 tabs in total. You can display more by going to the options window in the main tool bar and under 'Interface' and then 'Chat - Tabs' select the ones you want to see.]
QuestNote Abelia welcomed you to the tutorial and asked if you had seen many people coming her way. You can go to the 'HELP' window and in the 'START HERE' section read the heading 'INTERACTING AND SPEAK WITH NPCs' to see about how to interact with NPCs.
Assign Quest.

That's not too bad. Just add a quick note every time you give the player important information or assign a task to complete, and the player will be able to find the information in the quest notes no matter how long they leave the quest. I think this shouldn't be used before the quest is actually assigned because how could it add a note to a quest that doesn't appear in your quest list? Could be wrong, but I'll play it safe.

Here's a Questnote added to the quest from the post just above:

Code: [Select]
... NoRepeat

#Step 2.
P: give quest. quest. glass mug. glassblowing.
Menu: Did you need something?
Glassblower McUnimplemented: Yes, I'm badly in need of some new glass mugs and I was hoping you could help me.
P:nohelp. P: yeshelp
Menu: No, I'm too busy right now. Menu: Yes, I can help you.
Glassblower McUnimplemented: Oh, that's a shame. Come back later if you change your mind.
Glassblower McUnimplemented: Wonderful!  I was worried I'd come up short during the rush.
Questnote Glassblower McUnimplemented needs my help in replacing some glassware.
Assign Quest

That's pretty simple. Gives the NPC name, and the purpose of the quest. It's added below the NPC line where you accept the quest (like the Assign quest line) so it would only be added if you accept the quest.

Once you get a specific task you can add another quest note, which would be added to the notes the player sees when they click on the quest.

Code: [Select]
... NoRepeat

#Step 3
P: Task
Menu: What did you need me to make?
Glassblower McUnimplemented: Six glass mugs, please. As quickly as you can make them!
Questnote Glassblower McUnimplemented has asked me to provide six glass mugs.
Complete Glassblowing Training Quest step 3

There we go. Now if the player looks at the quest notes they'll see what they're supposed to bring to the NPC.

The "don't know what I needed to bring" step doesn't add anything new, and if the player was checking quest notes they wouldn't need the reminder option to begin with.

The last stage may or not need a questnote depending on what type of quest it is. If the quest is repeatable having a note saying that you should come back later sounds like a good idea, and if the quest points the player to another person a note would be helpful there too. Other than that, I think it's optional. Here's the last step with a quest note added.

Code: [Select]
... NoRepeat

#Step 5
Require completion of Glassbowing Training Quest step 3.
Require possessed amount 6 Glass Mug.
Player gives Glassblower McUnimplemented 6 Glass Mug.
Menu: Here they are.
Glassblower McUnimplemented: Thank you! Just in time for the after work rush.
Run script give_quest_exp <<1>>.
Run script give_quest_money <<1>>.
Run script give_quest_skill <<'Glassblowing',1>>.
Questnote Glassblower thanked you for the help and suggested that you come back later in case he needed more glassware.
Complete Glassblowing Training Quest step 5. Complete Glassblowing Training Quest.

There we go. Added some quest notes so the player can check their quest log for tips. Next up I'll try to add some randomness to the tasks so that the player isn't asked to do the same thing every time.

Uadjet

  • Game Masters
  • Hydlaa Citizen
  • *
  • Posts: 237
    • View Profile
Re: Missing Skill-Boosting Quests
« Reply #3 on: November 29, 2018, 11:20:00 pm »
So I looked long and hard for an option to send the player to a randomized step and couldn't find it. I tried searching the Basic Quest Syntax document for it, but searching for the word "random" wasn't expecially helpful when the sample quest Venalan used was "Random Quest". Lots of hits, but none useful.

Eventually I realized that you can use other requirements to simulate randomness. Specifically you can allow/disallow steps from appearing by using the in-game time of day, which is bloody well good enough, I think. Here's the Require command for that:

Code: [Select]
Require  time  of  day  #-#.
The clock runs from 0-23, and doesn't wrap around so you can go "10-18" but not "22-4". There is an "OR" command using "|", so if need be you could go:

Code: [Select]
Require  time  of  day  22-23 | time of day 0-4
So the time has to be between 22 and 23 OR between 0 and 4. Since the game only checks hours that'll cover the whole span between 22 and 4 the next day without exception. Also, no need to write in the "Require" part twice. Just once at the beginning of the line.

Now to apply that tidbit of knowledge to this quest. Maybe you want the player to be asked for mugs on some occasionas, glasses on another, and some of each every once in a while. That might looks something like this:

Code: [Select]
... NoRepeat

#Step 2.
P: give quest. quest. glass mug. glassblowing.
Menu: Did you need something?
Glassblower McUnimplemented: Yes, I'm badly in need of some new glass mugs and I was hoping you could help me.
P:nohelp. P: yeshelp
Menu: No, I'm too busy right now. Menu: Yes, I can help you.
Glassblower McUnimplemented: Oh, that's a shame. Come back later if you change your mind.
Glassblower McUnimplemented: Wonderful!  I was worried I'd come up short during the rush.
Questnote Glassblower McUnimplemented needs my help in replacing some glassware.
Assign Quest

... NoRepeat

#Step 3
Require  time  of  day  0-9.
P: Task
Menu: What did you need me to make?
Glassblower McUnimplemented: Six glass mugs, please. As quickly as you can make them!
Questnote Glassblower McUnimplemented has asked me to provide six glass mugs.
Complete Glassblowing Training Quest step 3

#Step 4
Require  time  of  day  10-19.
P: Task
Menu: What did you need me to make?
Glassblower McUnimplemented: Ten glasses, please. As quickly as you can make them!
Questnote Glassblower McUnimplemented has asked me to provide ten glasses.
Complete Glassblowing Training Quest step 4

#Step 5
Require  time  of  day  20-23.
P: Task
Menu: What did you need me to make?
Glassblower McUnimplemented: Three glass mugs and five glasses, please. As quickly as you can make them!
Questnote Glassblower McUnimplemented has asked me to provide three glass mugs and five glasses.
Complete Glassblowing Training Quest step 5

There we go. Three different requests, each with its own step. I made the requests for only mugs or only glasses take up 10 hours each and the mixture option only taking up 4 hours, but that's just me being stubborn. There's no reason why the different tasks shouldn't be assigned the same amount of time during the PS day.

Now, if we've got different tasks the player might be assigned we need different steps to accept those items. We'll also need a step for each option to remind the player of what they should make. So for each different task we need three steps: A step that assigns the task, a reminder step, and a completion step.

Note: For simplicity's sake I'll group the steps by task, so the order goes: Get task A, Reminder of task A, complete task A, get task B, etc.  I could do all of the task assignment steps first, then the reminders, then the completion steps, but that would require a lot more jumping around and I think I might go mad if I try that.

Code: [Select]
... NoRepeat

#Step 3
Require  time  of  day  0-9.
P: Task
Menu: What did you need me to make?
Glassblower McUnimplemented: Six glass mugs, please. As quickly as you can make them!
Questnote Glassblower McUnimplemented has asked me to provide six glass mugs.
Complete Glassblowing Training Quest step 3

...

#Step 4
Require completion of Glassbowing Training Quest step 3.
Require no completion of Glassblowing Training Quest step 5
Require  no  possessed  amount  6  item  Glass Mug
P: Iforgot. 6 Glass Mugs
Menu: What did you need me to make again?
Glassblower McUnimplemented: Glass mugs. Six of them. Please try to hurry.
Complete Glassblowing Training Quest step 4.

... NoRepeat

#Step 5
Require completion of Glassbowing Training Quest step 3.
Require possessed amount 6 Glass Mug.
Player gives Glassblower McUnimplemented 6 Glass Mug.
Menu: Here they are.
Glassblower McUnimplemented: Thank you! Just in time for the after work rush.
Run script give_quest_exp <<1>>.
Run script give_quest_money <<1>>.
Run script give_quest_skill <<'Glassblowing',1>>.
Questnote Glassblower thanked you for the help and suggested that you come back later in case he needed more glassware.
Complete Glassblowing Training Quest step 5. Complete Glassblowing Training Quest./code]

That'll do for one task. The first step listed gives the assignment and adds a quest note telling the player what to make. The second step shows if the player hasnt' got the items and hasn't handed them in already, and tells them what to make again. And lacks the NoRepeat bit so the player can get multiple reminders. The last step checks the step that gives the assignment, makes sure the player has the items before showing up, and completes the quest.

Now we'll add in the other two tasks:

[code]... NoRepeat

#Step 3
Require  time  of  day  0-9.
P: Task 1
Menu: What did you need me to make?
Glassblower McUnimplemented: Six glass mugs, please. As quickly as you can make them!
Questnote Glassblower McUnimplemented has asked me to provide six glass mugs.
Complete Glassblowing Training Quest step 3

...

#Step 4
Require completion of Glassbowing Training Quest step 3.
Require no completion of Glassblowing Training Quest step 5
Require  no  possessed  amount  6  item  Glass Mug
P: Iforgot. 6 Glass Mugs
Menu: What did you need me to make again?
Glassblower McUnimplemented: Glass mugs. Six of them. Please try to hurry.
Complete Glassblowing Training Quest step 4.

... NoRepeat

#Step 5
Require completion of Glassbowing Training Quest step 3.
Require possessed amount 6 Glass Mug.
Player gives Glassblower McUnimplemented 6 Glass Mug.
Menu: Here they are.
Glassblower McUnimplemented: Thank you! Just in time for the after work rush.
Run script give_quest_exp <<1>>.
Run script give_quest_money <<1>>.
Run script give_quest_skill <<'Glassblowing',1>>.
Questnote Glassblower thanked you for the help and suggested that you come back later in case he needed more glassware.
Complete Glassblowing Training Quest step 5. Complete Glassblowing Training Quest.

... NoRepeat

#Step 6
Require  time  of  day  10-19.
P: Task 2
Menu: What did you need me to make?
Glassblower McUnimplemented: Ten glass cups, please. As quickly as you can make them!
Questnote Glassblower McUnimplemented has asked me to provide ten glass cups.
Complete Glassblowing Training Quest step 6

...

#Step 7
Require completion of Glassbowing Training Quest step 6.
Require no completion of Glassblowing Training Quest step 8
Require  no  possessed  amount  10  item  Glass Cup
P: Iforgot. 10 Glass Cup
Menu: What did you need me to make again?
Glassblower McUnimplemented: Glass Cups. Ten of them. Please try to hurry.
Complete Glassblowing Training Quest step 7.

... NoRepeat

#Step 8
Require completion of Glassbowing Training Quest step 6.
Require possessed amount 10 Glass Cup.
Player gives Glassblower McUnimplemented 10 Glass Cup.
Menu: Here they are.
Glassblower McUnimplemented: Thank you! Just in time for the after work rush.
Run script give_quest_exp <<1>>.
Run script give_quest_money <<1>>.
Run script give_quest_skill <<'Glassblowing',1>>.
Questnote Glassblower thanked you for the help and suggested that you come back later in case he needed more glassware.
Complete Glassblowing Training Quest step 8. Complete Glassblowing Training Quest.

... NoRepeat

#Step 9
Require  time  of  day  20-23.
P: Task 3
Menu: What did you need me to make?
Glassblower McUnimplemented: Three glass mugs and five glass cups, please. As quickly as you can make them!
Questnote Glassblower McUnimplemented has asked me to provide three glass mugs and five glass cups.
Complete Glassblowing Training Quest step 9

...

#Step 10
Require completion of Glassbowing Training Quest step 9.
Require no completion of Glassblowing Training Quest step 11.
Require  no  possessed  amount  3 item Glass Mug | no possessed amount item 5 Glass Cup
P: Iforgot. 3 Glass Mugs. 5 Glass Cups
Menu: What did you need me to make again?
Glassblower McUnimplemented: Three glass mugs and five glass cups, please. Please try to hurry.
Complete Glassblowing Training Quest step 10.

... NoRepeat

#Step 11
Require completion of Glassbowing Training Quest step 9.
Require possessed amount 3 Glass Mug.
Require possessed amount 5 Glass Cup.
Player gives Glassblower McUnimplemented 3 Glass Mug.
Player gives Glassblower McUnimplemented 5 Glass Cup.
Menu: Here they are.
Glassblower McUnimplemented: Thank you! Just in time for the after work rush.
Run script give_quest_exp <<1>>.
Run script give_quest_money <<1>>.
Run script give_quest_skill <<'Glassblowing',1>>.
Questnote Glassblower thanked you for the help and suggested that you come back later in case he needed more glassware.
Complete Glassblowing Training Quest step 5. Complete Glassblowing Training Quest.

Okay, that's a quest with three branches/tasks that they player might get. Given that I'm figuring this out as I go, it's not too bad.

One thing I am wondering about is if I should be blocking out the other task assignment steps. For example, if the time of day tells the server to go to step 3 and assign that, then the player walks away for a few in game hours, might they talk to Glassblower again and get assigned step 6 for a brand new task? I'll have to ask about that. If it is necessary, it just means adding lines to each step that assigns a task (3, 6, and 9 above) that say not to show that step if one of the other two has been completed.

For those who are wondering, the quest would currently look like this:

Code: [Select]
# Quest name: Glassblowing Training Quest.
# Quest Description: Repeatable quest to train glassblowing.
# Quest Category: Repeatables ???
# ----------------------
# Quest Items: Item name/Item description
# Item name - Description here.
# ----------------------
# Author(s): Uadjet
# Current Version: 0.1 Alpha
# Player lockout: -1 ???
# Quest lockout: 0 ???
# Prerequisites: <pre><completed quest="???"/></pre>
#----------------------
# Version history and change log
# Last edited by: Nobody, as should be obvious
# Version 0.1: Never checked, Venaland and Mordaan will likely laugh when they see it
# ---------------------


Require completion of Introduction to Glassblowing
P: !shortrange
Glassblower McUnimplemented: Ah, $playername! I remember you. Could you give me a moment of your time?

... NoRepeat

#Step 2.
P: give quest. quest. glass mug. glassblowing.
Menu: Did you need something?
Glassblower McUnimplemented: Yes, I'm badly in need of some new glass mugs and I was hoping you could help me.
P:nohelp. P: yeshelp
Menu: No, I'm too busy right now. Menu: Yes, I can help you.
Glassblower McUnimplemented: Oh, that's a shame. Come back later if you change your mind.
Glassblower McUnimplemented: Wonderful!  I was worried I'd come up short during the rush.
Questnote Glassblower McUnimplemented needs my help in replacing some glassware.
Assign Quest

... NoRepeat

#Step 3
Require  time  of  day  0-9.
Require no completion of Glassblowing Training Quest step 6
Require no completion of Glassblowing Training Quest step 9
P: Task 1
Menu: What did you need me to make?
Glassblower McUnimplemented: Six glass mugs, please. As quickly as you can make them!
Questnote Glassblower McUnimplemented has asked me to provide six glass mugs.
Complete Glassblowing Training Quest step 3

...

#Step 4
Require completion of Glassbowing Training Quest step 3.
Require no completion of Glassblowing Training Quest step 5
Require  no  possessed  amount  6  item  Glass Mug
P: Iforgot. 6 Glass Mugs
Menu: What did you need me to make again?
Glassblower McUnimplemented: Glass mugs. Six of them. Please try to hurry.
Complete Glassblowing Training Quest step 4.

... NoRepeat

#Step 5
Require completion of Glassbowing Training Quest step 3.
Require possessed amount 6 Glass Mug.
Player gives Glassblower McUnimplemented 6 Glass Mug.
Menu: Here they are.
Glassblower McUnimplemented: Thank you! Just in time for the after work rush.
Run script give_quest_exp <<1>>.
Run script give_quest_money <<1>>.
Run script give_quest_skill <<'Glassblowing',1>>.
Questnote Glassblower thanked you for the help and suggested that you come back later in case he needed more glassware.
Complete Glassblowing Training Quest step 5. Complete Glassblowing Training Quest.

... NoRepeat

#Step 6
Require  time  of  day  10-19.
Require no completion of Glassblowing Training Quest step 3
Require no completion of Glassblowing Training Quest step 9
P: Task 2
Menu: What did you need me to make?
Glassblower McUnimplemented: Ten glass cups, please. As quickly as you can make them!
Questnote Glassblower McUnimplemented has asked me to provide ten glass cups.
Complete Glassblowing Training Quest step 6

...

#Step 7
Require completion of Glassbowing Training Quest step 6.
Require no completion of Glassblowing Training Quest step 8
Require  no  possessed  amount  10  item  Glass Cup
P: Iforgot. 10 Glass Cup
Menu: What did you need me to make again?
Glassblower McUnimplemented: Glass Cups. Ten of them. Please try to hurry.
Complete Glassblowing Training Quest step 7.

... NoRepeat

#Step 8
Require completion of Glassbowing Training Quest step 6.
Require possessed amount 10 Glass Cup.
Player gives Glassblower McUnimplemented 10 Glass Cup.
Menu: Here they are.
Glassblower McUnimplemented: Thank you! Just in time for the after work rush.
Run script give_quest_exp <<1>>.
Run script give_quest_money <<1>>.
Run script give_quest_skill <<'Glassblowing',1>>.
Questnote Glassblower thanked you for the help and suggested that you come back later in case he needed more glassware.
Complete Glassblowing Training Quest step 8. Complete Glassblowing Training Quest.

... NoRepeat

#Step 9
Require  time  of  day  20-23.
Require no completion of Glassblowing Training Quest step 6
Require no completion of Glassblowing Training Quest step 3
P: Task 3
Menu: What did you need me to make?
Glassblower McUnimplemented: Three glass mugs and five glass cups, please. As quickly as you can make them!
Questnote Glassblower McUnimplemented has asked me to provide three glass mugs and five glass cups.
Complete Glassblowing Training Quest step 9

...

#Step 10
Require completion of Glassbowing Training Quest step 9.
Require no completion of Glassblowing Training Quest step 11.
Require  no  possessed  amount  3 item Glass Mug | no possessed amount item 5 Glass Cup
P: Iforgot. 3 Glass Mugs. 5 Glass Cups
Menu: What did you need me to make again?
Glassblower McUnimplemented: Three glass mugs and five glass cups, please. Please try to hurry.
Complete Glassblowing Training Quest step 10.

... NoRepeat

#Step 11
Require completion of Glassbowing Training Quest step 9.
Require possessed amount 3 Glass Mug.
Require possessed amount 5 Glass Cup.
Player gives Glassblower McUnimplemented 3 Glass Mug.
Player gives Glassblower McUnimplemented 5 Glass Cup.
Menu: Here they are.
Glassblower McUnimplemented: Thank you! Just in time for the after work rush.
Run script give_quest_exp <<1>>.
Run script give_quest_money <<1>>.
Run script give_quest_skill <<'Glassblowing',1>>.
Questnote Glassblower thanked you for the help and suggested that you come back later in case he needed more glassware.
Complete Glassblowing Training Quest step 5. Complete Glassblowing Training Quest.

Uadjet

  • Game Masters
  • Hydlaa Citizen
  • *
  • Posts: 237
    • View Profile
Re: Missing Skill-Boosting Quests
« Reply #4 on: November 29, 2018, 11:33:21 pm »
That takes care of the basic format, 'randomizing' tasks, and quest notes. Those are basically the things that I think I know well enough to use. I'm not entirely clear, however, on how to make a quest repeatable. Well, I basically have no idea. Leaving the "NoRepeat" out would mean those dialog options would keep showing up during each run-through of the quest, which is no good.

Two things occur to me. First, there is the "Run script" option that might be used to reset a quest. Tricky thing is it isn't used at the end of a repeatable quest, as the steps completed in one of those quests remain set until you accept the quest again. But if you have to accept a quest to reset a quest, how do you make it appear so that it can be accepted?

Second, there is the option of setting a timer within a quest that makes you wait x amount of minutes before continuing. Is that what's used to prevent the mysteriously repeatable quest from appearing too soon? From what i understand, the timer sets an invisible effect on the player. The next step won't be available while that timer is in effect. It looks like this:

Code: [Select]
Run  script  give_quest_timeout  <<‘Name  of  timer  goes  here',x>> 
So a condition could be added on the first step like this:

Code: [Select]
... NoRepeat

#Step 2
Require no active magic Quest waiting timer.
P: give quest. quest. glass mug. glassblowing.
Menu: Did you need something?
Glassblower McUnimplemented: Yes, I'm badly in need of some new glass mugs and I was hoping you could help me.
P:nohelp. P: yeshelp
Menu: No, I'm too busy right now. Menu: Yes, I can help you.
Glassblower McUnimplemented: Oh, that's a shame. Come back later if you change your mind.
Glassblower McUnimplemented: Wonderful!  I was worried I'd come up short during the rush.
Questnote Glassblower McUnimplemented needs my help in replacing some glassware.
Assign Quest

Again, something I'll have to ask about.

Migg

  • Hydlaa Citizen
  • *
  • Posts: 223
    • View Profile
Re: Missing Skill-Boosting Quests
« Reply #5 on: November 30, 2018, 03:44:39 pm »
On a topic that predominates Migg's interests in-game:

Musical Instrument

As suggested in the meeting, the player could be sent on quests to learn about music from different people/groups, and may have to do something in exchange for that knowledge. Perform basic tasks, fetch items, or just outright pay for the info with gems or whatever that person/group wants.

I have not gone about trying to write a script about this since I would first like to know if it is doable, but here are some thoughts I'd like to know more info on (tried to withhold as many details as possible):
  • Player has to retrieve an item from an NPC X and return it to NPC Y to gain a skill level. What could that item be, and how could it be checked? Does it need to be a unique quest item? Could it be a normal music sheet filled with some music (i.e. not a blank music sheet) that X delivers to the player?
  • Could a quest involve a "Bring me N music sheets you have written" with the requirement that these sheets have at least one note inscribed on them (to prove the player at least knows how to open a music sheet in the in-game editor, add a note to it and save)? Is it possible to check who wrote a sheet? (not a public music sheet)
I am assuming (based on existing quests) that requests like "bring me N blank music sheets" or "Get me whatever musical instrument" are doable.

In general I would prefer that the player can get more than one quest and that each is given by a different NPC, but since these have to be repeatable, the mechanics I would prefer are that you should be able to, say, do quest A and then quest B after 6 hours and then quest C after 6 more hours, but if you repeatedly do quest A without doing B or C in between you would need to wait, say, 12 hours. I realize you can just set the repetition delay for each of A, B and C to 12 hours, but that is not the same, since then I could do A, B and C with no delay between them, or even concurrently, and then wait 12 hours till I do them again (which allows me to get one skill level every 4 hours on average instead of 6 hours minimum).

I know I could find the answers by studying the quest syntax notes, but guess I am too lazy to do my homework right now  :-[ so just asking if someone can answer off the top of their head  :)

Uadjet

  • Game Masters
  • Hydlaa Citizen
  • *
  • Posts: 237
    • View Profile
Re: Missing Skill-Boosting Quests
« Reply #6 on: November 30, 2018, 07:07:48 pm »
On a topic that predominates Migg's interests in-game:

I have not gone about trying to write a script about this since I would first like to know if it is doable, but here are some thoughts I'd like to know more info on (tried to withhold as many details as possible):
  • Player has to retrieve an item from an NPC X and return it to NPC Y to gain a skill level. What could that item be, and how could it be checked? Does it need to be a unique quest item? Could it be a normal music sheet filled with some music (i.e. not a blank music sheet) that X delivers to the player?

You can check for any item in the game, not just unique quest items. There are quests that look for apples, after all.  :D Checking for music could be harder. The server can certainly check for a blank musical score, but one that has been written in and renamed? I'm not sure. I did a test and renamed a generic item I was sent to get by a quest. The quest giver wouldn't accept the renamed item, but gave a different error than the "you don't have it" type message. Something about having too many types of that item, even though I only had the one. 

  • Could a quest involve a "Bring me N music sheets you have written" with the requirement that these sheets have at least one note inscribed on them (to prove the player at least knows how to open a music sheet in the in-game editor, add a note to it and save)? Is it possible to check who wrote a sheet? (not a public music sheet)

I think we can only check for number of items in a stack, unfortunately, and I don't see a way to check who wrote/crafted an item.

I am assuming (based on existing quests) that requests like "bring me N blank music sheets" or "Get me whatever musical instrument" are doable.

Oh, yes. Both of those are easily doable.

In general I would prefer that the player can get more than one quest and that each is given by a different NPC, but since these have to be repeatable, the mechanics I would prefer are that you should be able to, say, do quest A and then quest B after 6 hours and then quest C after 6 more hours, but if you repeatedly do quest A without doing B or C in between you would need to wait, say, 12 hours. I realize you can just set the repetition delay for each of A, B and C to 12 hours, but that is not the same, since then I could do A, B and C with no delay between them, or even concurrently, and then wait 12 hours till I do them again (which allows me to get one skill level every 4 hours on average instead of 6 hours minimum).

::|

Ummm... I dunno. That's...tricky. Obviously we can set timers so that people have to wait x hours to redo a quest. I'm just waiting on a Dev to explain how. I've asked for access to Assisting Gardr, but I don't have the permissions to view quests in the Dev Console (GM's don't have access to that) and I'll have to pester Venalan or Mordaan to see if they can get me a txt version of that quest. Timers set an invisible buff and quests can check to see if that buff is active or not. I'm assuming that's how the quest restart delay is handled, though I'm not sure. The wording of the documentation Ven provided makes me think that multiple quests could set/check one timer, but I'd have to ask.

I know I could find the answers by studying the quest syntax notes, but guess I am too lazy to do my homework right now  :-[ so just asking if someone can answer off the top of their head  :)

Well, I can't technically give you real answers, but I made some relevant-sounding noises.  ;D

Migg

  • Hydlaa Citizen
  • *
  • Posts: 223
    • View Profile
Re: Missing Skill-Boosting Quests
« Reply #7 on: December 01, 2018, 02:13:44 pm »
Your help is greatly appreciated, Uadjet  \\o// \\o// \\o//, even if it's of the generic audible encouragement type. If tests can be combined with "AND" and "OR" operators, and multiple timers set, perhaps a scheme could be devised to achieve what I want, once you figure out how these commands are supposed to work. Is there some way to actually test these, or does one just have to rely on a dev uploading the quest to the server (and probably debugging it as well)?

Nightflyer0ne

  • Hydlaa Resident
  • *
  • Posts: 69
    • View Profile
Re: Missing Skill-Boosting Quests
« Reply #8 on: December 01, 2018, 09:25:38 pm »
What happens if two different people come up with different quests for the same skill?
Giving my multiple personalities some playground space, one alt at a time. ;)

Uadjet

  • Game Masters
  • Hydlaa Citizen
  • *
  • Posts: 237
    • View Profile
Re: Missing Skill-Boosting Quests
« Reply #9 on: December 01, 2018, 10:19:01 pm »
Well, it kinda depends on the skill. If two people did a crafting repeatable like the ones already in game they might not be able to be merged. That's one of the main reasons I posted this thread, actually.  Now if it's a skill that isn't all about crafting items the quest would require a little more creativity, and in that case it would be easier to combine the ideas or just use both.

Migg

  • Hydlaa Citizen
  • *
  • Posts: 223
    • View Profile
Re: Missing Skill-Boosting Quests
« Reply #10 on: December 02, 2018, 03:17:55 pm »
Couldn't you just use both quests instead of merging, but have them apply to different skill levels? That way all proposed quests can be added to the game. Alternatively, you can use these as questlines given by the same NPC at random, but I would prefer to have more than one NPC give quests for a skill, since there are more than one NPC interested in any particular craft or activity.


Nightflyer0ne

  • Hydlaa Resident
  • *
  • Posts: 69
    • View Profile
Re: Missing Skill-Boosting Quests
« Reply #11 on: December 04, 2018, 02:37:49 am »
I think it will depend on how similar the quests are to each other, but I couldn't say for sure.
Giving my multiple personalities some playground space, one alt at a time. ;)

Uadjet

  • Game Masters
  • Hydlaa Citizen
  • *
  • Posts: 237
    • View Profile
Re: Missing Skill-Boosting Quests
« Reply #12 on: December 05, 2018, 07:25:06 pm »
Yes, having two quests is an option. There is already one skill that has two repeatable quests that can grant a level. The only thing we'd need to do is make sure that the timers are longer to balance out how quickly the skill can advance using quests. I don't think we'd have to double the length of the timer, as the two quests I mentioned aren't double the usual timer length, just a few hours longer.

Uadjet

  • Game Masters
  • Hydlaa Citizen
  • *
  • Posts: 237
    • View Profile
Re: Missing Skill-Boosting Quests
« Reply #13 on: December 05, 2018, 09:55:37 pm »
Okay, just a few thoughts that come to me while I was working on things.

First off, plan out your steps before you actually start writing the quest in the proper syntax. Very important, as having to alter what happens at a certain step can cause errors in other parts of the quest that rely on that step.

Second, I've found it easier to group all steps for one task together and establish clear patterns. For example:

Code: [Select]
Step 1 - Quest acquired
Step 2 - Task 1 assigned
Step 3 - Task 1 reminder
Step 4 - Task 1 completed
Step 5 - Task 2 assigned
Step 6 - Task 2 reminder
Step 7 - Task 2 completed
Step 8 - Task 3 assigned
etc.

That seems to be the easiest way to to do things, as it keeps all steps near their related steps.

Third, it seems easier much of the time to work on a 'set' of steps all at the same time instead of fully writing each step and then moving on to the next. Here's what I mean: First, I copy/paste in some basic step blocks like these:
Code: [Select]

#Step
Require
P:
Menu:
NPC:
Questnote
Complete

... NoRepeat

#Step
Require
P:
Menu:
NPC:
Questnote
Complete

... NoRepeat

#Step
Require
P:
Menu:
NPC:
Questnote
Complete

... NoRepeat

#Step
Require
P:
Menu:
NPC:
Questnote
Complete

Then I number the steps and enter the trigger text lines, which are also useful as reminders of what each step should be about.
Code: [Select]
#Step 1
Require
P: Give me a quest
Menu:
NPC:
Questnote
Complete

... NoRepeat

#Step 2
Require
P: Get Task 1
Menu:
NPC:
Questnote
Complete

... NoRepeat

#Step 3
Require
P: Reminder task 1
Menu:
NPC:
Questnote
Complete

... NoRepeat

#Step 4
Require
P: Complete task 1
Menu:
NPC:
Questnote
Complete

Now that each step is nicely labeled, I can write in the dialog. Player dialog in the Menu lines, and NPC responses to that dialog in the NPC lines (with the NPC's full name in place of NPC).

Code: [Select]
#Step 1
Require
P: Give me a quest
Menu: I'm bored. Got anything for me to do?
NPC: Gee, there's the attitude that I love. Have time to run an errand for me?
P: Nohelp. P: Yeshelp.
Menu: Nah, I'll just go whack a dummy for a bit. Menu: Sure, why not?
NPC: Whatever. Stop bothering me.
NPC: Okay. I'm sure I can think of something for you to do.
Questnote
Complete

... NoRepeat

#Step 2
Require
P: Get Task 1
Menu: So, what do you need done?
NPC: Nothing much. Just get me three steel stock.
Questnote
Complete

... NoRepeat

#Step 3
Require
P: Reminder task 1
Menu: What did you need again?
NPC: Three steel stock. What, you lose count at two?
Questnote
Complete

... NoRepeat

#Step 4
Require
P: Complete task 1
Menu: Here it is.
NPC: Great. Just in time.
Questnote
Complete

Okay, real quest dialog should be better than that, but it'll do for now. Once that's all in I want to add in some of the technical parts. Completing steps, setting which steps are required, assigning and completing the quest, etc. Oh, and removing the NoRepeat from the reminder line, as players should be able to use that as often as they need to.

Code: [Select]
#Step 1
P: Give me a quest
Menu: I'm bored. Got anything for me to do?
NPC: Gee, there's the attitude that I love. Have time to run an errand for me?
P: Nohelp. P: Yeshelp.
Menu: Nah, I'll just go whack a dummy for a bit. Menu: Sure, why not?
NPC: Whatever. Stop bothering me.
NPC: Okay. I'm sure I can think of something for you to do.
Questnote
Complete Random Quest step 1. Assign Quest.

... NoRepeat

#Step 2
Require completion of Random Quest step 1
P: Get Task 1
Menu: So, what do you need done?
NPC: Nothing much. Just get me three steel stock.
Questnote
Complete random quest step 2

...

#Step 3
Require completion of Random Quest step 2
Require no possessed amount 3 item Steel Stock
P: Reminder task 1
Menu: What did you need again?
NPC: Three steel stock. What, you lose count at two?
Questnote
Complete Random Quest step 3

... NoRepeat

#Step 4
Require completion of Random Quest step 2
Require possessed amount 3 item Steel Stock
P: Complete task 1
Menu: Here it is.
NPC: Great. Just in time.
Questnote
Run script give_quest_exp <<2>>.
Run script give_quest_money <<2>>.
Complete Random Quest step 4. Complete Random Quest.

Okay, that looks good. Added in step requirements to make sure the player only sees the right options at the right time. Added in rewards, because players like those. Now I can add in the questnotes. Could have done those after adding in dialog, and that would have worked just fine too.

Code: [Select]
#Step 1
P: Give me a quest
Menu: I'm bored. Got anything for me to do?
NPC: Gee, there's the attitude that I love. Have time to run an errand for me?
P: Nohelp. P: Yeshelp.
Menu: Nah, I'll just go whack a dummy for a bit. Menu: Sure, why not?
NPC: Whatever. Stop bothering me.
NPC: Okay. I'm sure I can think of something for you to do.
Questnote NPC wants me to do something.
Complete Random Quest step 1. Assign Quest.

... NoRepeat

#Step 2
Require completion of Random Quest step 1
P: Get Task 1
Menu: So, what do you need done?
NPC: Nothing much. Just get me three steel stock.
Questnote NPC wants three steel stocks.
Complete random quest step 2

...

#Step 3
Require completion of Random Quest step 2
Require no possessed amount 3 item Steel Stock
P: Reminder task 1
Menu: What did you need again?
NPC: Three steel stock. What, you lose count at two?
Complete Random Quest step 3

... NoRepeat

#Step 4
Require completion of Random Quest step 2
Require possessed amount 3 item Steel Stock
P: Complete task 1
Menu: Here it is.
NPC: Great. Just in time.
Run script give_quest_exp <<2>>.
Run script give_quest_money <<2>>.
Complete Random Quest step 4. Complete Random Quest.

There we go. The step that assigns the quest gets a note about what the quest is and who gave it, and the step that assigns the task gets a note saying what that NPC wants. No need to add a questnote to the reminder step, as that might cause issues if the player chooses it more than once, and the quest completion step has no need of one either.

Now if I need to add another task, I can look at steps 2-4 and think of them as one task block. Adding another task should probably use the same number of steps just to keep things simple, so the next task would be the 5-7 block. I can work on one block at a time so I don't forget what task I'm working on.

That's all for now. If I think of something else I'll post it here.

Uadjet

  • Game Masters
  • Hydlaa Citizen
  • *
  • Posts: 237
    • View Profile
Re: Missing Skill-Boosting Quests
« Reply #14 on: December 16, 2018, 03:03:06 am »
Okay, found a few mistakes in that last post. I didn't use periods at the end of  each line, which may cause an issue. Also, I didn't set up the step where you hand in the items properly. I checked for them, but I didn't add in the part where the player actually gives them to the NPC.  :-[

Also, I think I figured out how the timer works and how to set quests as repeatable. The timer wasn't too hard, assuming a timer that causes a delay between quests works the same as a timer that causes a delay during a quest. As for the repeatable part, it finally occurred to me that instead of a command to make a quest repeatable, it's possible that all quests would be repeatable but for a simple command to block the quest from appearing if you've already done it. Much simpler.

Here's what I would do now for the intro line and the first task:

Code: [Select]
#Step 1
Require no active magic Glassblowing_Repeatable_Lockout.
P: Give me a quest.
Menu: I'm bored. Got anything for me to do?
Glassblower McUnimplemented: Gee, there's the attitude that I love. Have time to run an errand for me?
P: Nohelp. P: Yeshelp.
Menu: Nah, I'll just go whack a dummy for a bit. Menu: Sure, why not?
Glassblower McUnimplemented: Whatever. Stop bothering me.
Glassblower McUnimplemented: Okay. I'm sure I can think of something for you to do.
Questnote NPC wants me to do something.
Complete Random Quest step 1. Assign Quest.

... NoRepeat

#Step 2
Require completion of Random Quest step 1.
P: Get Task 1
Menu: So, what do you need done?
Glassblower McUnimplemented: Nothing much. Just get me three steel stock.
Questnote NPC wants three steel stocks.
Complete random quest step 2.

...

#Step 3
Require completion of Random Quest step 2.
Require no completion of Random Quest step 4.
Require no possessed amount 3 item Steel Stock.
P: Reminder task 1.
Menu: What did you need again?
Glassblower McUnimplemented: Three steel stock. What, you lose count at two?
Complete Random Quest step 3.

... NoRepeat

#Step 4
Require completion of Random Quest step 2.
Require possessed amount 3 item Steel Stock.
Player gives Glassblower McUnimplemented 3 Steel Stock.
Menu: Here it is.
Glassblower McUnimplemented: Great. Just in time.
Run script give_quest_exp <<2>>.
Run script give_quest_money <<2>>.
run script give_quest_skill <<'Glassblowing',1>>
Run script give_quest_timeout <<‘Glassblowing_Repeatable_Lockout',480>>
Complete Random Quest step 4. Complete Random Quest.

There we go. Added the timer being set on the step that completes the quest and checked for it on the first line. If I wanted the quest to NOT be repeatable I'd leave the timer off and add a line to the first step like:

Code: [Select]
Require no completion of Random Quest.
Checking for the completion of itself should prevent a quest from popping up again. Ever. Still, I can see completed quests when I talk to NPCs. I get an error message if I try to restart a non-repeatable quest, but I don't think I should even see the option if it works this way. Ah, well. I'll pester a Dev at the next meeting.  ;D