Index of /quest/

      Name                                                                             Last modified         Size  Description
   
up Parent Directory 17-Feb-2021 01:58 - unknown CHECKSUM.MD5 17-Feb-2021 01:54 4k unknown Makefile 17-Feb-2021 01:54 4k [TXT] ammo.c 17-Feb-2021 01:54 4k [TXT] armor.c 17-Feb-2021 01:54 4k [TXT] color.h 17-Feb-2021 01:54 4k [TXT] defaults.h 17-Feb-2021 01:54 4k [TXT] food.c 17-Feb-2021 01:54 4k [TXT] main.c 17-Feb-2021 01:54 4k [TXT] monster.c 17-Feb-2021 01:54 8k [CMP] quest-item-gen-1.2.tar.gz 17-Feb-2021 01:55 12k [CMP] quest.7.gz 17-Feb-2021 01:55 4k [TXT] weapon.c 17-Feb-2021 01:55 4k

QUESTCORE ITEM GENERATOR
------------------------

Version 1.2
2/16/2021
http://www.centaur.pw


ABOUT
-----

This is an interactive program for use with a LambdaMOO server running the QuestCore2 database to
generate script files used to create weapons, ammunition, armor, food, and monsters. Script files
can be read directly into the server.

	Download QuestCore2 : http://www.centaur.pw/questcore/QuestCore2.db.gz
	Download LambdaMOO  : http://www.centaur.pw/satyr/lmc-night.tar.gz

	QuestCore Manual    : http://www.centaur.pw/questcore/QuestCore_Manual.txt

TABLE OF CONTENTS
-----------------

1. Compiling & Installation
2. Command Line Parameters
3. Menu Interface
4. Weapon Generator
5. Ammunition Generator
6. Armor Generator
7. Food Generator
8. Monster Generator
9. Script Usage

1. COMPILING & INSTALLATION
---------------------------

To compile the 'quest' binary:

	$ make

To move the 'quest' binary to /usr/bin and copy the manual page file
'quest.7.gz' to /usr/share/man/man7:

	$ make install

To remove the object files generated by make:

	$ make clean

To delete the installed binary and manual:

	$ make uninstall

2. COMMAND LINE PARAMETERS
--------------------------

If 'quest' is invoked with a parameter, it will begin creating a new item
based on the parameter. This may be a weapon, armor, food, or monster item.

Accepted parameters are:

	weapon (or w)
	armor (or a)
	food (or f)
	monster (or m)

Examples:

	$ quest weapon		$ quest w
	$ quest armor		$ quest a
	$ quest food		$ quest f
	$ quest monster		$ quest m

The program will terminate when it is finished creating the item.

When invoked with no parameter, the program will start in the menu interface.

See the final paragraph in the next section for information on setting the output file.

3. MENU INTERFACE
-----------------

The program remains in the menu interface until the 'quit' (or 'q') command is received.

'quest' only starts in the menu interface when invoked with no argument, e.g.:

	$ quest

The commands available in the menu function are the same as the parameters accepted by the
program when invoked:

	w - Create weapon
	o - Create ammo
	a - Create armor
	f - Create food
	m - Create monster
	q - Exit program

Each command may also be typed in long form, as 'weapon', 'armor', 'food', 'monster', and 'quit'
respectively.

The 'help' (or '?') command can be used within the menu interface to display the menu. This is
also displayed when pressing [Enter] without a command.

You will be prompted for a file name. Files are only created or appended to; they are never
overwritten. For each different type of item, the default file displayed at the prompt may be
used by pressing [Enter]. If a full path is not provided, the file is created or opened in the
current working directory.

4. WEAPON GENERATOR
-------------------

The following information is prompted for when creating a weapon:

	Weapon Name		- The name of the weapon
	Global Variable Name	- The property to be created on #0 for the new object
	Description		- A description of the weapon, up to 128 characters
	Projectile		- Set to 0: Melee weapon; no ammunition required
				- Set to 1: Projectile weapon requiring ammunition
	Ammo			- Object number of the ammunition parent needed for the weapon
	Maximum Load		- Maximum number of rounds the weapon can contain
				  (Ammo and Maximum Load are only prompted for if Projectile is set to 1.)
	Action String		- The verb shown in text when attacking with the weapon, e.g. 'swing'
				  will set the verbage to " % %p %D at ", where %p is the
				  player's possessive pronoun and %D is the name of the weapon
				  For example: Centaur swings his Long Sword at Goblin.
	Damage			- The damage done by the weapon must be a decimal, e.g. 2.0, 3.5
	Can Stun		- Set to 0: Weapon cannot stun; Set to 1: Weapon can stun
	Can Paralyze		- Set to 0: Weapon cannot paralyze; Set to 1: Weapon can paralyze
	Value			- The value in gold of the weapon must be a decimal, e.g. 15.0, 33.5

Example (Melee)
---------------

The following input for each of the prompts:

	Weapon Name: Short Sword
	Global Variable Name for #0: shortsword
	Description: A short sword made of steel.
	Projectile: 0
	Action String: swing
	Damage (decimal): 3.5
	Can Stun (0 or 1): 1
	Can Paralyze (0 or 1): 0
	Value (decimal): 15.0

will generate and append the following script to the output file:

	@create $weapon named Short Sword
	@desc Sho as A short sword made of steel.
	@set Sho.shoots to 0
	@set Sho.usage_verbage to " % %p %D at "
	@set Sho.damage_base to 3.5
	@set Sho.can_stun to 1
	@set Sho.can_paralyse to 0
	@set Sho.value_base to 15.0
	@chmod Sho rf
	;add_property(#0, "shortsword", max_object(), {player, "rc"})
	;move($shortsword, $nothing)
	@kgen $shortsword

Example (Projectile)
--------------------

The following input for each of the prompts:

	Weapon Name: Long Bow
	Global Variable Name for #0: longbow
	Description: A curved wooden long bow.
	Projectile (0 or 1): 1
	Ammo (#obj): #275
	Maximum Load: 1
	Action String: shoot
	Damage (decimal): 8.0
	Can Stun (0 or 1): 1
	Can Paralyze (0 or 1): 0
	Value (decimal): 20.0

will generate and append the following script to the output file:

	@create $weapon named Long Bow
	@desc Lon as A curved wooden long bow.
	@set Lon.shoots to 1
	@set Lon.ammo_type to #275
	@set Lon.max_load to 1
	@set Lon.shoot_verbage to " % %p %D at "
	@set Lon.projectile_dam to 8.0
	@set Lon.can_stun to 1
	@set Lon.can_paralyse to 0
	@set Lon.value_base to 20.0
	@chmod Lon rf
	;add_property(#0, "longbow", max_object(), {player, "rc"})
	;move($longbow, $nothing)
	@kgen $longbow
	

5. AMMUNITION GENERATOR
-----------------------

The following information is prompted for when creating ammunition:

	Ammo Name		- The name of the armor
	Global Variable Name	- The property to be created on #0 for the new object
	Description		- A description of the ammunition, up to 128 characters
	Rounds			- Number of rounds before the object is depleted
	Value			- The value in gold of the ammunition must be a decimal

Example
-------

The following input for each of the prompts:

	Ammo Name: Quiver of Arrows
	Global Variable Name for #0: arrow_quiver
	Description: A leather quiver for carrying arrows on one's back.
	Rounds: 12
	Value (decimal): 8.0

will generate and append the following script to the output file:

	@create $ammo named Quiver of Arrows
	@desc Qui as A leather quiver for carrying arrows on one's back.
	@set Qui.rounds to 12
	@set Qui.value_base to 8.0
	@chmod Qui rf
	;add_property(#0, "arrow_quiver", max_object(), {player, "rc"})
	;move($arrow_quiver, $nothing)

6. ARMOR GENERATOR
------------------

The following information is prompted for when creating armor:

	Armor Name		- The name of the armor
	Global Variable Name	- The property to be created on #0 for the new object
	Description		- A description of the armor, up to 128 characters
	Body Area		- Part of the body the armor is worn on, e.g. 'torso'
	Armor			- Armor bonus provided by the armor must be a decimal
	Value			- The value in gold of the armor must be a decimal

Example
-------

The following input for each of the prompts:

	Armor Name: Leather Armor
	Global Variable Name for #0: leather
	Description: A suit made of several layers of thick leather.
	Body Area: body
	Armor (decimal): 3.0
	Value (decimal): 20.0

will generate and append the following script to the output file:

	@create $clothing named Leather Armor
	@desc Lea as A suit made of several layers of thick leather.
	@set Lea.body_area to "body"
	@set Lea.armor to 3.0
	@set Lea.value_base to 20.0
	@chmod Lea rf
	;add_property(#0, "leather", max_object(), {player, "rc"})
	;move($leather, $nothing)
	@kgen $leather
	

7. FOOD GENERATOR
-----------------

The following information is prompted for when creating food:

	Food Name		- The name of the food
	Global Variable Name	- The property to be created on #0 for the new object
	Description		- A description of the food, up to 128 characters
	Units			- Number of times the food can be consumed
	Solid			- Set to 0: liquid (uses 'drink'); Set to 1: solid (uses 'eat')
	Heals			- Life healed when the food is consumed must be a decimal
	Value			- The value in gold of the food must be a decimal

Example
-------

The following input for each of the prompts:

	Food Name: Bread
	Global Variable Name for #0: bread
	Description: A small loaf of bread.
	Units: 2
	Solid (0 or 1): 1
	Heals (decimal): 3.0
	Value (decimal): 2.0

will generate and append the following script to the output file:

	@create $food2 named Bread
	@desc Bre as A small loaf of bread.
	@set Bre.units to 2
	@set Bre.solid to 1
	@set Bre.healing to 3.0
	@set Bre.value_base to 2.0
	@chmod Bre rf
	;add_property(#0, "bread", max_object(), {player, "rc"})
	;move($bread, $nothing)
	

8. MONSTER GENERATOR
--------------------

The following information is prompted for when creating a monster:

	Monster Name		- The name of the monster
	Global Variable Name	- The property to be created on #0 for the new object
	Description		- A description of the monster, up to 128 characters
	Spawn Message		- Message displayed when the monster spawns, e.g.
				  '%N wanders nearby.', where %N is the name of the monster
				  For example: Orc wanders nearby.
	Death Message		- Message displayed when the monster dies, e.g.
				  '%N dies.', where %N is the name of the monster
				  For example: Orc dies.
	Strength		- Strength stat of the monster; integer or decimal
	Dexterity		- Dexterity stat of the monster; integer or decimal
	Intelligence		- Intelligence stat of the monster; integer or decimal
	Health			- Health stat of the monster; integer or decimal
	Combat			- Combat skill of the monster; integer or decimal
	XP			- Experience points gained by killing the monster must be an integer
	Gold			- Gold gained by killing the monster must be a decimal
	Hostility		- Hostility of the monster must be an integer between 0 and 6:
				  0: does not attack
				  1: returns attack
				  2-6: aggressive; higher number increases aggression level
	Natural Defense		- Natural (unarmed) weapon of the monster must between 0 and 2:
				  0: bite
				  1: claw
				  2: hand
	Can Wander		- Set to 0: monster cannot move; Set to 1: monster can move  
	Picks Up Items		- Set to 0: monster will not pick up items; Set to 1: monster will pick up
				  nearby items
	Can Be Eaten		- Set to 0: monster cannot be eaten; Set to 1: monster can be eaten
	Magic Immunity		- Set to 0: monster is not immune to magic; Set to 1: monster is immune to magic
	Health From Eating	- Life gained from eating the monster must be a decimal
				  (This is only prompted for if 'Can Be Eaten' is set to 1.)
	Rot Time		- Time until the dead monster disappears given in seconds must
				  be an integer
	Respawn Time		- Time until the dead monster respawns given in seconds must
				  be an integer
	Weapons			- List of object numbers of weapons a monster can use, e.g.
				  '#301, #302, #303' with each object being a weapon parent

Example
-------

The following input for each of the prompts:

	Monster Name: Orc
	Global Variable Name for #0: orc
	Description: An ugly green and pig-like humanoid.
	Spawn Message: %N wanders nearby.
	Death Message: %N dies.
	Strength: 13
	Dexterity: 8.5
	Intelligence: 6.0
	Health: 14
	Combat: 1.4
	XP: 30
	Gold (decimal): 1.0
	Hostility (0 to 6): 4
	Natural Defense (0 to 2): 2
	Can Wander (0 or 1): 0
	Picks Up Items (0 or 1): 1
	Can Be Eaten (0 or 1): 1
	Magic Immunity (0 or 1): 0
	Health From Eating (decimal): 1.0
	Rot Time (seconds): 25
	Respawn Time (seconds): 35
	Weapons: (#obj1, #...): #301, #302, #303

will generate and append the following script to the output file:

	@create $monster named Orc
	@desc Orc as An ugly green and pig-like humanoid.
	@birth_msg Orc is "%N wanders nearby."
	@death_msg Orc is "%N dies."
	@str Orc is 13
	@dex Orc is 8.5
	@int Orc is 6.0
	@hea Orc is 14
	@com Orc is 1.4
	@set Orc.exp to 30
	@set Orc.startmoney to {{"gold", 1.0}}
	@set Orc.money to {{"gold", 1.0}}
	@set Orc.hostility to 4
	@set Orc.natural_def to 2
	@set Orc.wander_ok to 0
	@set Orc.greedy to 1
	@set Orc.edible to 1
	@set Orc.magic_immunity to 0
	@set Orc.eat_heal to 1.0
	@set Orc.rot_time to 25
	@set Orc.gestate to 35
	@set Orc.weapon_types to {#301, #302, #303}
	@chmod Orc rf
	;add_property(#0, "orc", max_object(), {player, "rc"})
	;move($orc, $nothing)
	@kgen $orc
	

9. SCRIPT USAGE
---------------

The files generated on the machine can be viewed in any editor, and copied and pasted into a terminal
window connected to a QuestCore2 database.

If the file is on the same machine as the server in a directory accessible by the server, a new
command may be added to load it directly into the server.

Loading files will require the File Utilities Package version 1.8 or higher. This is included in the link
for the server software in the ABOUT section of this file.

Add a property to the user which will point to a directory:

	@prop $wiz.pwd "/srv/questcore2"

Add a verb called @getfile (or @getf) for use by wizards:

	@verb $wiz:@getf*ile any any any rxd #2

Set the code for the new command:

	@program $wiz:@getf
	if (length(args) != 2 && length(args) != 1)
	  return player:tell("Usage: ", verb, " [path] ");
	endif
	if (length(args) == 2)
	  path = args[1];
	  file = args[2];
	elseif (length(args) == 1)
	  path = player.pwd;
	  file = args[1];
	endif
	if (!fileexists(path, file))
	  return player:tell("File not found.");
	endif
	for x in (fileread(path, file))
	  force_input(player, x);
	endfor
	.

If the command was programmed successfully, you can load a script file on the same machine as the
server directly using @getfile.

Example
-------

	@getfile Orc
	@getfile /home/centaur/scripts ShortSword

Note: If a directory is provided, there must be a space between a directory and a file name.
      Directory and file name are case-sensitive.
Proudly Served by LiteSpeed Web Server at centel.cc Port 443