/************************************************************** * FFTacticsMUD : ch.h * ************************************************************** * (c) 2002 Damien Dailidenas (Trenton). All rights reserved. * **************************************************************/ #include "desc.h" #include "status.h" #include "group.h" typedef class AREA AREA; typedef class ROOM ROOM; typedef class BATTLE_AREA BATTLE_AREA; typedef class BATTLE_ROOM BATTLE_ROOM; typedef class OBJ OBJ; typedef class BATTLE BATTLE; #define PLR_LOG (A) #define PLR_OMNIPOTENT (B) #define PLR_INVIS (C) #define PLR_FROZEN (D) #define WIZ_ON (A) #define WIZ_LINKS (B) #define WIZ_DEATHS (C) #define WIZ_SECURE (D) #define WIZ_SPAM (E) #define WIZ_MEMORY (F) #define MAX_EQ_SLOTS 10 #define MAX_SKILLS 100 #define MAX_NPC_SKILLS 5 #define MAX_IGNORE 99 #define MAX_JOBS 70 #define MAX_QUEUES 50 #define MAX_BATTLES 50 class CH { public: CH *next, *next_in_room, *next_in_battle, *next_in_group, *following; DESC *desc; string name, pwd, email, ignore[MAX_IGNORE], socket, login, commands, queue[MAX_QUEUES]; unsigned long mins_total; unsigned int pks, pdeaths, mins_login, mins_ave; AREA *area; ROOM *room; BATTLE_ROOM *battle_room, *orig_room, *to_room; OBJ *objects, *eq[5]; STATUS *status_list; BATTLE *battle; GROUP *group; bool acted, moved, skill[MAX_SKILLS], confirm_delete, snooping, admin, disabled, PK, npc, battles[MAX_BATTLES]; float HPP, MPP, SpP, MAP, PAP; long act, wiznet, money, strengthen, weakness, imm, absorb, half; int timer; short sex, cjob, CT, wait, HP[2], MP[2], PA, MA, Sp, Br, Mv, Ju, Ev, Fa, lvl, exp, moves, id, birthday[2]; struct { short lvl, JP, exp, subjob, reaction, support, move; } job[MAX_JOBS]; struct { BATTLE_ROOM *target; short ctr, id; DO_ACT *action; } action; struct { DO_FUN *action; short range; } temp_action; CH(); ~CH(); void interpret(string argument); void printf(const string str, const bool sleeping=false); void printf(char *txt, ...); void restore(); void leave_battle(); void die(CH *killer=NULL); void join_group(CH *leader); void leave_group(); void map_area(const bool quiet); void print_map(const bool quiet); void to(ROOM *room); void to(BATTLE_ROOM *room); void from_room(); void from_battle_room(); void remove(OBJ *obj); void remove(STATUS *status, const bool announce = true); void clear_status(const bool announce=true); void cancel(STATUSTYPE *type, const bool announce=true); void status_update(); void stat(CH *ch); void copy(const CH *ch); void look(CH *ch); void damage(CH *victim, const short dam); void resolve_action(); void end_turn(); void retreat(); void advance(); void announce_action(); void gain_exp(); void gain_jp(); void level_up(const bool quiet=false); void equip(OBJ *obj, const short loc); void init_stats(); void print_status(CH *ch); void set_job(const short id); void restore_hp(const short x); void load_battle(); void prompt(); void print_MOTD(); void save_objects(); void save_ignored(); void save(); void load_jobs(); void load_skills(); void load_ignored(); void load_objects(); void ignore_add(const string name); void ignore_remove(const string name); void ignore_list(); void npc_turn(); void add_queue(const string str); void update_queue(); void check_battle(); string his_her(); string he_she(); string print_sector(BATTLE_ROOM *prev_room, BATTLE_ROOM *room, const bool color); string male_female(); string idle(); CH *get_ch_room(const string name); CH *get_nearest_target(const bool ally); bool physical_attack(CH *victim, short dam); bool can_see(const CH *ch); bool can_move(const ROOM *room); bool can_see(const OBJ *obj); bool move(const short dir); bool can_group(const CH *ch); bool check_evade(); bool has_skill(const string skill_name, const bool jobonly=true); bool check_reaction(CH *victim, const short trigger); bool check_ok(const bool act=false); bool move_within_range(CH *victim); bool can_be_job(const short id); bool can_equip(const OBJ *obj, const short loc); bool is_admin(); bool ignoring(const string name); short get_group_cnt(); short calculate_dam(const short K, const short loc); short distance(const CH *ch); short dir(const CH *ch); short dir(const BATTLE_ROOM *room); short get_weap_loc(); short get_hitpercent(); short get_act_range(const short id); short get_move_range(); short get_skill_id(const string name, const bool learned); OBJ *obj(const string name, const bool equipped = false); OBJ *obj(const short id, const bool equipped = false); BATTLE_ROOM *get_room_by_loc(const string str); BATTLE_ROOM *random_room(const short distance); STATUS *add(STATUSTYPE *status_type, const short ctr = 0, const short chance = 0, const bool announce = true); STATUS *status(STATUSTYPE *type); }; struct statpoint_type { long SpP, PAPlow, PAPhigh, MAPlow, MAPhigh, HPPlow, HPPhigh, MPPlow, MPPhigh; }; extern const struct statpoint_type statpoint_table[]; extern CH *ch_list; CH *get_ch args((const string name));