/*************************************************************************** * Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, * * Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. * * * * Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael * * Chastain, Michael Quan, and Mitchell Tse. * * * * In order to use any part of this Merc Diku Mud, you must comply with * * both the original Diku license in 'license.diku' as well the Merc * * license in 'license.merc'. In particular, you may not remove either * * of these copyright notices. * * * * Much time and thought has gone into this software and you are * * benefitting. We hope that you share your changes too. What goes * * around, comes around. * ***************************************************************************/ /* MurkMUD++ - A Windows compatible, C++ compatible Merc 2.2 Mud. \author Jon A. Lambert \date 08/30/2006 \version 1.4 \remarks This source code copyright (C) 2005, 2006 by Jon A. Lambert All rights reserved. Use governed by the MurkMUD++ public license found in license.murk++ */ #ifndef CHARACTER_HPP #define CHARACTER_HPP #include "baseobject.hpp" /* * One character (PC or NPC). */ class Character : public BaseObject { public: Character *master; Character *leader; Character *fighting; Character *reply; SPEC_FUN *spec_fun; MobPrototype *pIndexData; Descriptor *desc; std::list<Affect *> affected; Note *pnote; std::list<Object *> carrying; Room *in_room; Room *was_in_room; PCData *pcdata; std::string long_descr; std::string prompt; sh_int sex; sh_int klass; sh_int race; int level; sh_int trust; bool wizbit; int played; time_t logon; time_t save_time; time_t last_note; sh_int timer; int wait; int hit; int max_hit; int mana; int max_mana; int move; int max_move; int gold; int exp; int actflags; int affected_by; sh_int position; sh_int practice; sh_int carry_weight; sh_int carry_number; sh_int saving_throw; sh_int alignment; sh_int hitroll; sh_int damroll; sh_int armor; sh_int wimpy; sh_int deaf; MobProgramActList *mpact; /* Used by MOBprogram */ int mpactnum; /* Used by MOBprogram */ Character(); ~Character(); #define CMD_DECL #include "cmd_list.hpp" void do_mpstat(std::string argument); void do_mpasound(std::string argument); void do_mpkill(std::string argument); void do_mpjunk(std::string argument); void do_mpechoaround(std::string argument); void do_mpechoat(std::string argument); void do_mpecho(std::string argument); void do_mpmload(std::string argument); void do_mpoload(std::string argument); void do_mppurge(std::string argument); void do_mpgoto(std::string argument); void do_mpat(std::string argument); void do_mptransfer(std::string argument); void do_mpforce(std::string argument); #define SPELL_DECL #include "spell_list.hpp" bool is_npc(); bool is_awake(); bool is_good(); bool is_evil(); bool is_neutral(); bool is_affected(int flg); int get_ac(); int get_hitroll(); int get_damroll(); int get_curr_str(); int get_curr_int(); int get_curr_wis(); int get_curr_dex(); int get_curr_con(); int get_age(); int can_carry_n(); int can_carry_w(); int get_trust(); bool is_immortal(); bool is_hero(); int is_outside(); void wait_state(int npulse); int mana_cost(int sn); bool saves_spell (int lvl); std::string describe_to (Character* looker); Object * get_eq_char (int iWear); void affect_modify (Affect * paf, bool fAdd); bool can_see (Character * victim); bool can_see_obj (Object * obj); void unequip_char (Object * obj); void char_from_room (); void char_to_room (Room * pRoomIndex); void send_to_char (const std::string & txt); void interpret (std::string argument); bool check_social (const std::string & command, const std::string & argument); void set_title (const std::string & title); bool is_switched (); void advance_level (); bool mp_commands (); void gain_exp(int gain); int hit_gain (); int mana_gain (); int move_gain (); void add_follower (Character * master); void stop_follower(); void die_follower(); void update_pos (); void set_fighting (Character * victim); bool check_blind (); bool has_key (int key); void affect_to_char (Affect * paf); void affect_remove (Affect * paf); void affect_strip (int sn); bool has_affect (int sn); void affect_join (Affect * paf); bool remove_obj (int iWear, bool fReplace); void wear_obj (Object * obj, bool fReplace); void equip_char (Object * obj, int iWear); void act (const std::string & format, const void *arg1, const void *arg2, int type); bool can_drop_obj (Object * obj); Object * get_obj_wear (const std::string & argument); Object * get_obj_carry (const std::string & argument); Object * get_obj_here (const std::string & argument); void fwrite_char (std::ofstream & fp); void append_file (const char *file, const std::string & str); Character * get_char_room (const std::string & argument); Character * get_char_world (const std::string & argument); Object * get_obj_list (const std::string & argument, std::list<Object *> & list); Object * get_obj_world (const std::string & argument); void save_char_obj (); void fread_char (std::ifstream & fp); void gain_condition (int iCond, int value); void stop_fighting (bool fBoth); int find_door (const std::string & arg); void get_obj (Object * obj, Object * container); void extract_char (bool fPull); void extract_char_old (bool fPull); void stop_idling (); void show_list_to_char (std::list<Object *> & list, bool fShort, bool fShowNothing); void show_char_to_char_0 (Character * victim); void show_char_to_char_1 (Character * victim); void show_char_to_char (std::list<Character *> & list); void move_char (int door); bool is_gagged(std::string & nm); }; #endif // CHARACTER_HPP