#ifndef __STD_HOSPITAL_H #define __STD_HOSPITAL_H #define HOSPITAL_ALIGNMENT_INHERIT "/std/hospital/alignment" #define REGEN_TIME (1 * 60 * 60) #define DEFAULT_MAX_CACHE 10 /** * This controls where the hospital will log to by default if a logging * directory is not set. */ #define DEFAULT_LOG_DIRECTORY "/log" /** * This defines the default population for a group of NPCs if a default * is not set. */ #define DEFAULT_POPULATION 3 #define MINIMUM_DEATH_REGEN 3 /** * How often we recheck the population to make sure 0's etc have not snuck * in. */ #define POPULATION_UPDATE_TIME 15 * 60 /** * This class stores information about a regenerated NPC. * @param type the type of NPC that is to be regenerated * @param load_position the file name of the room where the NPC will * regenerate. */ class regenerated_npc { string type; string load_position; } /** * This class stores all the information about a zone. * @param wealth The wealthiness of the zone (unused) * @param busy The business of the zone. ie. how frequently NPCs should be * created. * @param npc_chance The total chances for an npc in this zone. * @param npcs A list of the NPCs that are members of this zone. * @param group_chance The total chances for a group in this zone. * @param groups A list of the groups of NPCs in this zone. * @param zone_chance The total chances for a zone in this zone. * @param zones A list of the zones within this zone. */ class zone_info { int wealth; int busy; int npc_chance; mapping npcs; int group_chance; mapping groups; int zone_chance; mapping zones; } /** * This class stores all the information about unique NPCs. * @param next_regen_time When this npc will next regenerate. */ class unique_npc { int next_regen_time; } /** * This class stores all the information about a particular NPC. * * @param path The relative path of the NPC * @param unique Is the NPC unique? * @param delay The regeneration delay for this NPC * @param transient If this NPC is transient. * @param nocturnal If this NPC is nocturnal. * @param diurnal If this NPC is diurnal. * @param seasonal A list of seasons during which this NPC is active. * @param max_population How many of these NPCs can exist at a time. * @param move_zones The move zones for this NPC * @param commands Commands to be executed by the NPC when it is created. * @param population A cache of the current population * @param no_deaths The number of recorded deaths * @param no_created The number of these NPCs we've created * @param no_reused How many of these NPCs have been reused (recycled) * @param next_update When the population data will next be updated. */ class npc_info { string path; int unique; int delay; // used by unique npcs int transient; int nocturnal; int diurnal; string* seasonal; int max_population; string* move_zones; string* commands; // Tracking information object* population; int no_deaths; int no_created; int no_reused; int next_update; } /** * This class stores all the information about an NPC group. * * @param move_zones The move zones for this NPC * @param npcs A list of the NPCs within this group. * @param npc_commands A list of commands to be executed on each of the group * members when the group is created. * @param protect Should these group members protect each other. * @param defend Should these group members defend each other. * @param transient Should these group members be considered transient. * @param max_population How many of these NPCs can exist at a time. * @param storage A cache of the population of NPCs in this group. * @param no_creates The number of these NPCs we've created * @param next_update When the population data will next be updated. */ class group_info { string* move_zones; // This is a list of npcs with a name as the key and a quantity as the value. mapping npcs; mapping npc_commands; int protect; int defend; int transient; int max_population; // Tracking details. mixed* storage; int no_creates; int next_update; } // These are old defines from some old hospital which AFAIK isn't actually // being used anymore. Nevertheless, retained for backwards compatibility. /* * Defines for hospitals on Discworld */ #define MONSTER "/obj/monster" // the max number of named living objects. This is used to keep the regen // rate under control. #define MAX_NAMED_LIVING 600 #define MAX_AM_LIVING 450 // Due to the way the hospital works in KLK this is the number of // hospital NPCs other npcs aren't counted. #define MAX_DJEL_LIVING 100 #endif // __STD_HOSPITAL_H