00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef INCL_MONSTERS
00022 #define INCL_MONSTERS 1
00023
00024 #include "actors.h"
00025
00026
00027
00028
00029
00030 class Monster_actor : public Npc_actor
00031 {
00032 static Monster_actor *in_world;
00033
00034 Monster_actor *next_monster, *prev_monster;
00035 Animator *animator;
00036 void link_in();
00037 void link_out();
00038 public:
00039 Monster_actor(const std::string &nm, int shapenum, int num = -1,
00040 int uc = -1);
00041 virtual ~Monster_actor();
00042
00043 static Monster_actor *create(int shnum);
00044 static Monster_actor *create(int shnum, Tile_coord pos,
00045 int sched = -1, int align = (int) Actor::neutral,
00046 bool tempoary = true, bool equipment = true);
00047
00048 static Monster_actor *get_first_in_world()
00049 { return in_world; }
00050 Monster_actor *get_next_in_world()
00051 { return next_monster; }
00052 static void delete_all();
00053 static void give_up()
00054 { in_world = 0; }
00055 virtual int move_aside(Actor* for_actor, int dir)
00056 { return 0; }
00057
00058 virtual void paint();
00059
00060 virtual int step(Tile_coord t, int frame);
00061
00062 virtual void remove_this(int nodel = 0);
00063
00064 virtual void move(int newtx, int newty, int newlift);
00065
00066 virtual bool add(Game_object *obj, bool dont_check = false,
00067 bool combine = false);
00068 virtual int get_armor_points();
00069
00070 virtual Weapon_info *get_weapon(int& points, int& shape);
00071 virtual int is_monster()
00072 { return 1; }
00073 virtual void die(Actor *attacker);
00074 void write(DataSource* nfile);
00075 };
00076
00077 #endif