[DIS] More NPCs Using Existing Content

Content and general development discussion, including quest scripts and server code. TMW Classic is a project comprising the Legacy tmwAthena server & the designated improved engine server based on evolHercules.


Forum rules

This forum houses many years of development, tracing back to some of the earliest posts that exist on the board.

Its current use is for the continued development of the server and game it has always served: TMW Classic.

Post Reply
User avatar
Wombat
TMW Adviser
TMW Adviser
Posts: 1532
Joined: 08 Aug 2008, 16:31

[DIS] More NPCs Using Existing Content

Post by Wombat »

I'd like to create and see implemented more NPCs with existing content in the game. To do this, we could create some guidelines for the NPCs that aren't too complex. Here is an example:

Baselevel 1:
Quests: Talk to one NPC and fetch an item, Collect 5-20 monster drops from this list: blah blah
1,000 xp, 1,000 gold or item from the following list: blah blah

Baselevel 20:
Quests: Talk to one or more NPCs and fetch an item, Collect 5-50 monster drops from this list: blah blah
2,000 xp, 2,000 gold or item from the following list: blah blah

Baselevel 40:
Quests: Talk to two or more NPCs and fetch an item, Collect 10-50 monster drops from this list: blah blah
5,000 xp, 5,000 gold or item from the following list: blah blah

Baselevel 60:
Quests: Talk to three or more NPCs and fetch an item, Collect 10-50 monster drops from this list: blah blah
20,000 xp, 20,000 gold or item from the following list: blah blah

Baselevel 80:
Quests: Talk to 5 or more NPCs and fetch an item, Collect 20-50 monster drops from this list: blah blah
40,000 xp, 40,000 gold or item from the following list: blah blah

Obviously this is just an example list, but a discussion on this could help define the parameters for NPC creation. The NPCs created under this project would have a game life of two seasons (or more, depending on desire) and then could be recycled so other NPCs could replace them to encourage people to keep scripting.

Although I suggest only a couple simple quest concepts here, more concepts can be added. This project is meant to deepen what is available to do in the game and keep players, new and old, busy. Each town could also have a "gossip" NPC that would inform people of new NPCs in town that players could talk to and perhaps give a synopsis of what the new NPCs are about.

The main idea is to loosen standards of quest complexity and encourage more NPC script writers to grow more complex with experience. It is also to provide acceptable game balance parameters for the script writers so they aren't drafting easy quests.

Maybe also provide a different path for some items. An example could be a Baselevel 40 quest that also provides the Bone Knife, but requires the players to talk to several NPCs in dangerous areas instead of gathering monster drops. It would prevent them from getting Kfahr's Bone Knife and perhaps would give less experience upon completion.

Just some ideas to start this discussion.
Current character is "Abolish".
Ceros
Warrior
Warrior
Posts: 262
Joined: 17 Aug 2009, 16:03

Re: [DIS] More NPCs Using Existing Content

Post by Ceros »

Wombat:

I recently was talking to Freeyorp regarding a quest I was finishing up (look for a monocle to be out there, sometime) and he expressed he was very tired of the 'fetch' quests, in which we have to gather # of X and bring it to Y NPC. I know in a conversation with fate, the same point was raised. I believe the desire of the Dev team is to move away from the fetch quests into more complex and new quests.

While personally I don't have anything against fetch quests, we should try and come up with new quest types. In order to come up with new quests, we need to compile a list of existing quest types. Also, in order to help out those new to scripting, we should set to break down each type of quest and show how it works, so that they can script each type of quest by their own. Sort of a 'scripting tutorial' for each type of tutorial. I believe that currently, the biggest problem in the game from a player's point of view is new content. New content doesn't have to be new and exciting, but it helps.


Here is my list of quest types:

Code: Select all

Quest Type					Example Quest
===========			     =============
Fetch					  	Kafar's Bone Knife Quest
Narrow it Down			  Green Dye Quest
Interview					 Robberies in Hurnscald Quest
Take X to Location		 Purify the Lake Quest
Kill X Quest				 Ishi's Monster Points Quest
PRNG/Random Chance		 Forest Bow Quest
These are currently the only quest types I can see in the game. We should work towards creating new types. I've worked with Freeyorp to make a "Find and Kill" type quest (think of it as hide and seek with a Jacko-type monster) where a monster is randomly spawned across several maps and players have to find and kill it.

I've also discussed making a timed quest, in which you have take something and go from x location to y location in a certain amount of time or you fail the quest. Currently, there's some problems getting it to script out, which brings up a good point. Try and keep the quest ideas reasonable, because someone is going to have to figure out how to script it.

So let's see what we can come up with for new, innovative quest types.
Image
User avatar
Wombat
TMW Adviser
TMW Adviser
Posts: 1532
Joined: 08 Aug 2008, 16:31

Re: [DIS] More NPCs Using Existing Content

Post by Wombat »

I have heard both fate and Freeyorp and while I do agree, I also think in order to introduce people we need to use what exists as well as expand into more complex quests.

Here is a tutorial I've started to help myself and others learn basic NPC scripting using eAthena (link).

Though I again see your point and those of others, I also think there really isn't enough quests to be "tired" of any quest type. Throw a dozen more of these tiresome quests onto the map and then slowly replace them with better quests. If people draft something better now, that's great. Right now we've got just over 30 quests and we can afford to be less picky as long as the script and the NPC story isn't horrible.
Current character is "Abolish".
User avatar
Jaxad0127
Manasource
Manasource
Posts: 4209
Joined: 01 Nov 2007, 17:35
Location: Internet

Re: [DIS] More NPCs Using Existing Content

Post by Jaxad0127 »

Ceros wrote:

Code: Select all

Quest Type					Example Quest
===========			     =============
...
PRNG/Random Chance		 Forest Bow Quest
That's another gather quest, IMO. Just that the amount to gather is unknown.
Ceros wrote:I've also discussed making a timed quest, in which you have take something and go from x location to y location in a certain amount of time or you fail the quest. Currently, there's some problems getting it to script out, which brings up a good point. Try and keep the quest ideas reasonable, because someone is going to have to figure out how to script it.
Timed quests will be easier under TMWServ.
Image
User avatar
octalot
Novice
Novice
Posts: 214
Joined: 23 Sep 2008, 19:15

Re: [DIS] More NPCs Using Existing Content

Post by octalot »

Another type would be a terrain-search or orienteering quest.

Find all the wells in the desert; find all the exits from a cave with many exits etc. Last Christmas' reinboo quest would be an example.
User avatar
SpamMaster
Novice
Novice
Posts: 79
Joined: 18 Sep 2009, 22:29
Location: Spammiland

Re: [DIS] More NPCs Using Existing Content

Post by SpamMaster »

An idea I devised a while back. Note at the outset it will only work if NPCs are able to have:
  • Timers; eg they say something different after 3600 seconds.
  • Counters; eg every time you say "STFU" the 'hate' counter gets +1 (and +5 for "***U")
So, here goes a possible attempt at a 'Flowerpot' NPC. With it, players can grow herbs! Or other plants, whatever. I hope it makes sense. Please note the coding isn't correct, it's more the layout I'm getting at...

Code: Select all

If Status = plant-pot_empty goto L_Pot_Empty
If Status = plant-pot_soil goto L_Pot_Soil
If Status = plant-pot_mauve goto L_Pot_Mauve2
If Status = plant-pot_cobalt goto L_Pot_Cobalt2
If Status = plant-pot_gamboge goto L_Pot_Gamboge2
If Status = plant-pot_alizarin goto L_Pot_Alizarin2


L_Pot_Empty
 msg "The pot is empty. Do you want to fill it with soil?"
 list
 - "Yes" goto L_Pot_Fill
 - "No"
close;

L_Pot_Fill
 if item 'soil' 1< goto L_No_Soil
 msg "You fill the pot with soil."
 player lose item 'soil' 1
 set status @plant-pot_soil
 goto L_Pot_Soil
close;

L_No_Soil
 msg "You have no soil to fill the pot with!"
 msg "Come back when you have some."
close;

L_Pot_Soil
 msg "The pot is filled with soil."
 msg "Do you want to plant a cutting in the pot?"
 list
 - "Yes" goto L_Pot_Cuttings
 - "No"
close;

L_Pot_Cuttings
 msg "What type of herb would you like to grow?"
 list
 - "Mauve" goto L_Pot_Mauve1
 - "Cobalt" goto L_Pot_Cobalt1
 - "Gamboge" goto L_Pot_Gamboge1
 - "Alizarin" goto L_Pot_Alizarin1
 - "None, thanks"
close;

L_Pot_Mauve1
 if item 'mauve herb' 5< goto L_Pot_Noherb
 msg "You plant some Mauve cuttings in the pot."
 player lose item 'mauve herb' 5
 msg "Make sure you water it every ten minutes!"
 set status @plant-pot_mauve
 start_timer
close;

L_Pot_Cobalt1
 if item 'cobalt herb' 5< goto L_Pot_Noherb
 msg "You plant some Cobalt cuttings in the pot."
 player lose item 'cobalt herb' 5
 msg "Make sure you water it every ten minutes!"
 set status @plant-pot_cobalt
 start_timer
close;

L_Pot_Gamboge1
 if item 'gamboge herb' 5< goto L_Pot_Noherb
 msg "You plant some Gamboge cuttings in the pot."
 player lose item 'gamboge herb' 5
 msg "Make sure you water it every ten minutes!"
 set status @plant-pot_gamboge
 start_timer
close;

L_Pot_Alizarin1
 if item 'alizarin herb' 5< goto L_Pot_Noherb
 msg "You plant some Alizarin cuttings in the pot."
 player lose item 'alizarin herb' 5
 msg "Make sure you water it every ten minutes!"
 set status @plant-pot_alizarin
 start_timer
close;

L_Pot_Noherb
 msg "I'm sorry, you don't have enough of that herb! You need at least five."
close;

L_Pot_Mauve2
 msg "There is a Mauve Plant in the pot."
 if_count 'water' 3> goto L_Mauve_Harvest
 if_timer 900> goto L_Plant_Toodry
 if_timer 600< goto L_Plant_Toowet
 msg "Do you want to water your Mauve plant?"
 list
 - "Yes" goto L_Plant_Watered
 - "No"
close;

L_Pot_Cobalt2
 msg "There is a Cobalt Plant in the pot."
 if_count 'water' 3> goto L_Cobalt_Harvest
 if_timer 900> goto L_Plant_Toodry
 if_timer 600< goto L_Plant_Toowet
 msg "Do you want to water your Cobalt plant?"
 list
 - "Yes" goto L_Plant_Watered
 - "No"
close;

L_Pot_Gamboge2
 msg "There is a Gamboge Plant in the pot."
 if_count 'water' 3> goto L_Gamboge_Harvest
 if_timer 900> goto L_Plant_Toodry
 if_timer 600< goto L_Plant_Toowet
 msg "Do you want to water your Gamboge plant?"
 list
 - "Yes" goto L_Plant_Watered
 - "No"
close;

L_Pot_Alizarin2
 msg "There is an Alizarin Plant in the pot."
 if_count 'water' 3> goto L_Alizarin_Harvest
 if_timer 900> goto L_Plant_Toodry
 if_timer 600< goto L_Plant_Toowet
 msg "Do you want to water your Alizarin plant?"
 list
 - "Yes" goto L_Plant_Watered
 - "No"
close;

L_Plant_Toodry
 if_count 'toodry' 1> goto L_Plant_Deaddry
 msg "The plant is alive, but a little dry."
 msg "Do you want to water your plant?"
 list
 - "Yes" goto L_Plant_Drywaterered
 - "No"
close;

L_Plant_Toowet
 if_count 'toowet' 1> goto L_Plant_Deadwet
 msg "Do you want to water your plant?"
 list
 - "Yes" goto L_Plant_Wetwatered
 - "No"
close;

L_Plant_Watered
 if item 'bottle of water' 1< goto L_Pot_Nowater
 msg "You water your plant."
 add_count 'water' 1
 set_timer 0
close;

L_Plant_Drywatered
 if item 'bottle of water' 1< goto L_Pot_Nowater
 add_count 'toodry' 1
 msg "You water your plant."
 add_count 'water' 1
 set_timer 0
close;

L_Plant_Wetwatered
 if item 'bottle of water' 1< goto L_Pot_Nowater
 add_count 'toowet' 1
 msg "You water your plant."
 add_count 'water' 1
 set_timer 0
close;

L_Pot_Nowater
 msg "You need a bottle of water to do that."
 msg "Come back with one quickly, before your plant dries out!"
close;

L_Plant_Deaddry
 msg "Your plant has died from lack of water."
 set_status @plant-pot_empty
close;

L_Plant_Deadwet
 msg "Your plant has died from too much water."
 set_status @plant-pot_empty
close;

L_Mauve_Harvest
 msg "Your Mauve plant is ready to harvest!"
 list
 - "Harvest the Mauve plant" goto L_Mauve_Done
 - "Leave the plant alone"
close;

L_Cobalt_Harvest
 msg "Your Cobalt plant is ready to harvest!"
 list
 - "Harvest the Cobalt plant" goto L_Cobalt_Done
 - "Leave the plant alone"
close;

L_Gamboge_Harvest
 msg "Your Gamboge plant is ready to harvest!"
 list
 - "Harvest the Gamboge plant" goto L_Gamboge_Done
 - "Leave the plant alone"
close;

L_Alizarin_Harvest
 msg "Your Alizarin plant is ready to harvest!"
 list
 - "Harvest the Alizarin plant" goto L_Alizarin_Done
 - "Leave the plant alone"
close;

L_Mauve_Done
 msg "You harvest the Mauve plant."
 set_status @plant-pot_empty
 player get item 'Mauve herb' 100
close;

L_Cobalt_Done
 msg "You harvest the Cobalt plant."
 set_status @plant-pot_empty
 player get item 'Cobalt herb' 100
close;

L_Gamboge_Done
 msg "You harvest the Gamboge plant."
 set_status @plant-pot_empty
 player get item 'Gamboge herb' 100
close;

L_Alizarin_Done
 msg "You harvest the Alizarin plant."
 set_status @plant-pot_empty
 player get item 'Alizarin herb' 100
close;
Have a spamful evening, sir.
Post Reply