/* $Id: clan.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 _CLAN_H_ #define _CLAN_H_ /*---------------------------------------------------------------------- * clan stuff (clan.c) */ #include "stock.h" #define CLAN_NONE 0 /* Clan status */ #define CLAN_LEADER 2 #define CLAN_SECOND 1 #define CLAN_COMMONER 0 #define CLAN_NEWBIE 3 #define CLAN_VETERAN 4 #define CLAN_ELITE 5 /* Clan politics */ #define DIP_ALLY 4 #define DIP_MISTRUST 3 #define DIP_WAR 2 #define DIP_PEACE 1 #define DIP_NEUTRAL 0 #define ALLIANCE_RESTRICT 0 #define ALLIANCE_ALLOW 1 // clan member structure for clanlist command struct clan_member { struct clan_member * next ; const char * name ; const char * last_login ; int rank ; int level ; int alignment ; int ethos ; }; typedef struct clan_stat_data CLAN_STAT_DATA; struct clan_stat_data { // quests int quest_requested; int quest_completed; // global quests int gq_join; int gq_completed; // wars int wars_join; int wars_win; // kills int mobs_killed; int pc_killed_by_mobs; int PK_count; int PK_on_CR; int PK_clan_defence; int death_clan_defence; int PK_clan_attack; // number of kills where raiding int death_clan_attack; // number of deaths when raiding enemy clans // clanbank int dep_gold; int dep_qp; int dep_bp; int dep_gem; int dep_rgem; int dep_bgem; int dep_mgem; int dep_ygem; int dep_ggem; int dep_wgem; int with_gold; int with_qp; int with_bp; int with_gem; int with_rgem; int with_bgem; int with_mgem; int with_ygem; int with_ggem; int with_wgem; char * best_explorer_name; int best_explored_count; char * best_gq_win_name; int best_gq_win_count; char * best_quest_win_name; int best_quest_win_count; }; /* * Clan structure */ struct clan_t { const char *name; /* clan name */ const char *file_name; /* file name */ int recall_vnum; /* recall room vnum */ const char *msg_prays; /* what to print in clanrecall */ const char *msg_vanishes; varr skills; /* clan skills */ flag64_t flags; /* clan flags */ long item_time; /* time without clan item */ int obj_vnum; /* unused (for a while) */ int mark_vnum; /* vnum clan mark */ int altar_vnum; int altar_trophy_vnum; OBJ_DATA * altar_ptr; OBJ_DATA * altar_trp; OBJ_DATA * obj_ptr; int bank_questp; int bank_gold; int bank_bonus; int bank_gems; int bank_rgems; int bank_bgems; int bank_ggems; int bank_mgems; int bank_wgems; int bank_ygems; int item_at; int diplomacy[MAX_CLANS]; int clan_align; // for diplomacy. do't allow good + evil clans ally int max_clan_members; int cur_clan_members; int min_clan_level; flag64_t allow_alliance; struct clan_member * member_list; int standard_areaguard_vnum; int veteran_areaguard_vnum; int elite_areaguard_vnum; int areacontrol_rating; // don't know yet rooms/totalrooms * tick // or areas*ticks or somthing else... int energy; flag64_t conq_flags; CHAR_DATA * advisor; CHAR_DATA * spy; CHAR_DATA * transporter; int conquered_areas; int area_energy_this_tick; int earned_energy_this_tick; CLAN_STAT_DATA history; STOCK_DATA clan_stock; }; /* clan flags */ #define CLAN_HIDDEN (A) /* clan will not appear in who */ #define CLAN_RULERS (B) /* clan which keeping law */ #define CLAN_HATE_MAGIC (C) /* clan which not use magic */ #define CLAN_LOVE_MAGIC (D) /* clan which use magic */ #define CLAN_CAN_SEE (E) /* clan which buy visibility */ #define CLAN_CHANGED (Z) clan_t *clan_new (void); void clan_free (clan_t*); int cln_lookup (const char* name); const char *clan_name (int cn); void check_clan_item (clan_t*); OBJ_DATA *get_clan_altar (clan_t *clan); OBJ_DATA *get_clan_item (clan_t *clan); bool is_clan_item_in_altar (clan_t *clan); bool is_clan_item_at_enemy (clan_t *clan); void check_clans (void); clan_t *is_clan_item (OBJ_DATA *obj); bool is_clan_item_ok (CHAR_DATA *ch); clan_t *is_clan_altar (OBJ_DATA *obj); int get_clan_max_percent (CHAR_DATA *ch, int sn, int skill); extern varr clans; #define CLAN(cn) ((clan_t*) VARR_GET(&clans, cn)) #define clan_lookup(cn) ((clan_t*) varr_get(&clans, cn)) #define IS_CLAN_SKILL(sk) (IS_SET(sk->group, GROUP_CLAN)) struct clan_skill_t { int sn; /* skill number. leave this field first */ /* in order sn_vlookup to work properly */ int level; /* level at which skill become available */ int percent; /* initial percent */ }; #define clan_skill_lookup(clan, sn) \ ((clan_skill_t*) varr_bsearch(&clan->skills, &sn, cmpint)) typedef struct clanbank_cmds CLANBANK_CMD; DECLARE_DO_FUN(clanbank_help ); //DECLARE_DO_FUN(clanbank_deposit ); //DECLARE_DO_FUN(clanbank_transaction); //DECLARE_DO_FUN(clanbank_withdraw ); //DECLARE_DO_FUN(clanbank_balance ); struct clanbank_cmds { char *name ; // command name DO_FUN* fun ; // command function int clan_level ; }; #endif