muddy/
muddy/CVS/
muddy/area/
muddy/area/CVS/
muddy/clans/CVS/
muddy/classes/CVS/
muddy/doc/
muddy/doc/CVS/
muddy/etc/CVS/
muddy/etc/i3/
muddy/etc/i3/CVS/
muddy/imc/CVS/
muddy/lang/CVS/
muddy/licenses/CVS/
muddy/msgdb/CVS/
muddy/new/CVS/
muddy/notes/
muddy/player/
muddy/races/CVS/
muddy/religions/CVS/
muddy/src/CVS/
muddy/src/comm/CVS/
muddy/src/db/CVS/
muddy/src/intermud/
muddy/src/intermud/CVS/
muddy/src/irc/CVS/
muddy/src/olc/CVS/
/* $Id: conquer.h,v 1.666 2004/09/20 10:49:47 shrike Exp $ */
 
 /************************************************************************************
 *    Copyright 2004 Astrum Metaphora consortium                                    *
 *                                                                                  *
 *    Licensed under the Apache License, Version 2.0 (the "License");               *
 *    you may not use this file except in compliance with the License.              *
 *    You may obtain a copy of the License at                                       *
 *                                                                                  *
 *    http://www.apache.org/licenses/LICENSE-2.0                                    *
 *                                                                                  *
 *    Unless required by applicable law or agreed to in writing, software           *
 *    distributed under the License is distributed on an "AS IS" BASIS,             *
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.      *
 *    See the License for the specific language governing permissions and           *
 *    limitations under the License.                                                *
 *                                                                                  *
 ************************************************************************************/


#ifndef _CONQUER_H
#define _CONQUER_H

// typedef
// command data
struct cmd_data 
{
    char *name;
    void (*do_fn) ( CHAR_DATA *ch, const char* arg );
    int min_position;
    int level;
    int quest_price; // price in qp
    int gold_price;  // price in gold
    int min_clan_status;
    int extra; // keep_hide or not
};
typedef struct cmd_data CMD_DATA;

#define CONQ_FILE_NAME            "conquered.lst"
#define CONQ_CONFIG_FILE          "conquer.conf"

// explore requirement constants
#define EXPLORE_NOT_REQ           0
#define EXPLORE_GUARDROOMS_REQ    1
#define EXPLORE_ALL_AREA_REQ      2

// altar stuff
// positions in area_data->altars and ->priests
#define ALTAR_GREED_POS           0
#define ALTAR_HASTE_POS           1
#define ALTAR_MAGIC_POS           2
#define ALTAR_TRAVEL_POS          3
#define ALTAR_TRANQUILITY_POS     4
#define ALTAR_SUMMONING_POS       5
#define ALTAR_IMMOBILITY_POS      6
#define OUTPOST_POS               7
#define ALTAR_REGENERATION_POS    8
#define ALTAR_EXPERIENCE_POS      9
#define ALTAR_NEGATION_POS        10

//type of hp/mana/moves and bonus modification
#define GAIN_HP                   1
#define GAIN_MANA                 2
#define GAIN_MOVES                3

#define GLOBAL_QUEST_REWARD       4

#define QUEST_REWARD_GOLD         5
#define QUEST_REWARD_QP           6

// areaguard ranks
#define AREAGUARD_STANDARD        0
#define AREAGUARD_VETERAN         1
#define AREAGUARD_ELITE           2

// clan flags 
#define CLAN_WITH_ADVISOR         (A)        // clan which have bought advisor
#define CLAN_WITH_SPY             (B)        // clan which have bought area spy
#define CLAN_WITH_TRANSPORTER     (C)        // clan which have bought mage-transporter
#define CLAN_CAN_CONQUER          (D)        // clan can conquer area

// command permissioms
#define CONQ_ALL                  0        // commands available for all players
#define CONQ_CLAN                 1        // only for clan members
#define CONQ_ELITE                2        // elite and clan leadres
#define CONQ_LEADERS              3        // leader and second

// extra
#define CONQCMD_KEEP_HIDE         (A)      // ch keeps hide/fade etc
#define CONQCMD_IF_PERMITTED      (B)      // only for clans with CLAN_CAN_CONQUER flag
#define CONQCMD_RUS               (C)      // russian command
#define CONQCMD_REUSE_ARG         (D)      // do not consume argument

// altar building options
#define ALTAR_NO_BR               (A)      // clans with CLAN_HATE_MAGIC flag can't build altar
#define ALTAR_NO_CLANAREA         (B)      // altar can't be built in clanarea

// level bonus for summoned mobiles
#define LEVEL_BONUS               number_range (1,3)

// exported functions
void areacontrol_handle_death(CHAR_DATA *ch, CHAR_DATA *victim);
void areacontrol_update (void);
void load_conquered_areas ();
void save_conquered_areas ();
int  areacontrol_modify_gain (CHAR_DATA *ch, int gain, int type);
int  get_world_free_energy(void);
void put_world_free_energy(int new_value); 
void conquer_read_config ( void );

bool parse_command (CHAR_DATA *ch, const char *argument, CMD_DATA cmd_table[]);
void show_command_list (CHAR_DATA *ch, CMD_DATA cmd_table[]); 
bool altar_works (CHAR_DATA * ch, int type);

#endif