A
          / \      _             Play Now                         Nemesis on fb
          | |     | |  _______   _        _   _______    _______   _    _______
          | |\    | | |   ____| |  \    /  | |   ____|  /   ____| | |  /   ____|
 /-------/-------------------------------------------------------------------,
O= Home <=XX|  About  News  Pics  Adventurers  Wizards  Download  Connect     >
 \-------\-------------------------------------------------------------------'
          | |   \   | |  |____  | |      | | |  |____   ___ \  \  | |  ___ \  \
          | |     \_| |_______| |_|      |_| |_______| |_______/  |_| |_______/
          \ /
           V  

Documentation Area

Document Path: /doc/build/guilds


The new guild system, done by lynX and Junky.

Don't panic. Most of the guild system is already done! There is a generic
Guild object, /obj/guild, ready to inherit. All you have to do is produce
the 'soul' for your guild, with all those fancy skills your students will
have to learn and practice, and a few other things...
Wanna make your own guild now?

How to do a guild:
    Read 'help career' about the backgrounds.
    Talk with your admin and say what you have in project!
    If you then get a /guild/<guild-identification-code> directory,
    you can do this:

The master.c (main object for the guild):
a)	inherit "obj/guild".
	This automatically includes an inherit of "obj/room".
b)	#include "guild.h"
c)	#define NO_INHERIT, then #include "room.h" or "loc.h"
	and setup your exits the usual way.
d)	make an extra_reset function, that calls get_id() and
	clones your guild's bulletin board (Each guild has its own board).
e)	Use the explain_commands() function to show a list of commands
	available in the guild. You must stick to it since it might change
	if the guild system changes. The function can be called from an
	extra_long, or by overriding the standard long(), or by putting
	some sign in the guild that calls the function when looked at.
f)	Write a function make_title(player_object) to return a title for
	a player, using the player's level and gender data.
	Some examples:
		"the apprentice mage" -> "the powerful druid",
		"the witch" -> "the master sorceress",
		"the simple peasant" -> "the rich landlord",
		"the shop assistant" -> "the experienced merchandizer"

All the basic guild functions, advance, cost, list quests, join guild and
even banish are automatically activated by the main guild object (obj/guild),
it even takes care of checking if a person is a member of your guild or not,
and to let a character join it only once, and only when he may.

Functions you can add to your master.c:
may_join(this_player)
	Here you can decide further, if a person is worth becoming a member
	of your honourable guild! For instance you might decide to not let
	any dwarves join your magicians guild. Or whatever else.

has_joined(this_player)
	When a character has joined your guild he automatically gets
	a clone of your guild soul. If you want to do some more,
	like handing him some instructions or rules, use this function.

may_advance(this_player)
	This gets called each time a member of your guild wants to
	advance to the next level. Use this function to add further
	checking, for instance if he has practised his skills, or
	solved some special quest.

has_advanced(this_player)
	Here you can do something when he's raised his level, like
	adding new abilities, and informing him about them.

Functions you can make use of within master.c:
query_id()
	returns the identification code of your guild.
is_member()
	returns 1 if a person is member of your guild, or 0 if not,
	and tells him he's not with a write().

About the soul.c:
a)	inherit "obj/guild_item";
b)	If you have variables that need to be backup'ed for each player,
	make use of the new storage system, see 'man player_data'.
c)	Add all of your fancy special functions now! :-)

Questions?   Mail to Junky or lynX.


This page was generated in LPC

Imprint / Impressum