#ifndef __SYS__INHUME
#define __SYS__INHUME
// many things in the AM guild use this file directly after
// <morpork.h>, which #defines LOG.
#ifdef LOG
#undef LOG
#endif
#undef DEBUG // Define to start logging skills info to LOGFILE. undefine for normal use.
// #define NOKILL // For testing purposes -- noone will attack or die if this is defined
#define INHUME "/obj/handlers/secure_handlers/inhume"
#define NO_INHUME_PROP "cannot inhume"
#define NO_CONTRACT_PROP "cannot place contracts"
// These defines are for the inhume handler...
#define LOGDIR "/log/secure/assassins/"
#define LOG ( LOGDIR + "INHUME" )
#define INHUMED ( LOGDIR + "INHUMED" )
#define RECEIPTS ( LOGDIR + "INHUME_RECEIPTS" )
#define LOGFILE ( LOGDIR + "inhume_debug" )
#define PLAY_LOG ( LOGDIR + "play_inhume_debug" )
#define TM_LOG ( LOGDIR + "INHUME_TMS" )
#define NPC_LOG ( LOGDIR + "NPC_CONTRACTS" )
/**
* This class keeps track of all the contract details.
* @member status Requested, Validated, Informed, Active, or Special
* @member bastard The name of the person who requested/paid for it
* @member value Cost of the contract, in money units (4 units = 1 AM pence)
* @member time Time progress was last made
* @member reveal Whether or not the requestor wants their identity revealed
* @member message Message if any to be passed on to the victim
* @member name String to be displayed on the receipt as the requestor's name
* @member place Office where the contract was requested.
* @member nodeath 1 if no life will be lost when the contract is closed,
* 0 otherwise. (0 is normal)
* @member originator The person who originally requested the contract,
* if different from the current bastard.
*/
//Size of contract class without location
#define CONTRACT_NO_LOCATION 10
class contract {
int status;
string bastard;
int value;
int time;
int reveal;
string message;
string name;
string place; //This is for money.
int nodeath;
string originator;
string location; //This is for location!
} /* class contract */
#define EXP_TIME 2419200 // 28 days
#define TAXES 40 // how much they steal in taxes
#define SURCHARGE 10 // service charge for timed-out contracts
#define NOTME_MULT 1.1 // How much extra if you pay for a
// contract someone else requested.
#define MIN_LEVEL 50 // minimum level for a contract
#define PK_MULT 0 // how much extra nonPKs cost
// 0 indicates disallowed
#define COST_MULT ( 5 * 400 ) // how much per level 400 = 1$AM
#define COST_GUILD ( 6 * 400 ) // Premium rate for contracts on
// guild members.
#define MAXTIMES 4 // how many times can you inhume
// an NPC.
#define NO_DEATH_MULT 0.5 // How much less you pay for a contract
// that doesn't cause the victim to lose
// a life.
/* failure values when validating contracts */
#define LOW -1
#define NON_KILLER -2
#define CRE -3
#define TOO_SOON -4
/* status values for contracts */
#define REQUESTED 0
#define VALIDATED 1
#define INFORMED 2
#define ACTIVE 3
#define SPECIAL 4
/* type defines for collect classes */
#define INHUME_COLLECT_NONE 0
#define INHUME_COLLECT_REFUND 1
#define INHUME_COLLECT_WAGES 2
#define INHUME_COLLECT_MIXED 3
/* defines for checking whether an assassin can handle PK contracts */
#define INHUME_PK_THRESH_GUILD_LEVEL 175
#define INHUME_PK_THRESH_NUM_CONTRACTS 4
#define INHUME_PK_THRESH_AGE_DAYS 10
/* Rate at which a given player can be inhumed. */
#define REPEAT_RATE ( 60 * 60 * 24 * 7 * 2 ) // 2 weeks
/* Time before an npc will start working on a player contract */
#define NPC_TIME ( 60 * 60 * 24 * 7 * 2 ) // 2 weeks
/* Number of crimes a player has to commit before they become
inhume-on-sight on Guild grounds */
#define INHUME_ON_SIGHT_THRESH 10
/* How long it takes crime-free to have your crime count drop by one */
#define INHUME_CRIME_EXPIRY_TIME ( 60 * 60 * 24 * 3 )
/* How long you have to wait before another contract can pop up on this NPC */
#define INHUME_NPC_WAIT_TIME ( 60 * 60 * 12 )
#endif /* __SYS__INHUME */