.float sprite_height; .void() attack_melee; .float() attack_ranged; .float() checkattack; .float spawner_monstercount; .float monster_respawned; // used to make sure we're not recounting respawned monster stats float monsters_spawned; const float MONSTERSKILL_NOTEASY = 256; // monster will not spawn on skill <= 2 const float MONSTERSKILL_NOTMEDIUM = 512; // monster will not spawn on skill 3 const float MONSTERSKILL_NOTHARD = 1024; // monster will not spawn on skill 4 const float MONSTERSKILL_NOTINSANE = 2048; // monster will not spawn on skill 5 const float MONSTERSKILL_NOTNIGHTMARE = 4096; // monster will not spawn on skill >= 6 const float MONSTERFLAG_NORESPAWN = 2; const float MONSTERFLAG_MINIBOSS = 64; // monster spawns as mini-boss (also has a chance of naturally becoming one) const float MONSTERFLAG_NOWANDER = 128; // disable wandering around (currently unused) const float MONSTERFLAG_APPEAR = 256; // delay spawn until triggered const float MONSTERFLAG_GIANT = 512; // experimental giant monsters feature const float MONSTERFLAG_SPAWNED = 1024; // flag for spawned monsters .float msound_delay; // restricts some monster sounds .string msound_idle; .string msound_death; .string msound_attack_melee; .string msound_attack_ranged; .string msound_spawn; .string msound_sight; .string msound_pain; .void() monster_spawnfunc; .void() monster_die; .void() monster_delayedattack; .float monster_movestate; // used to tell what the monster is currently doing const float MONSTER_MOVE_OWNER = 1; // monster will move to owner if in range, or stand still const float MONSTER_MOVE_WANDER = 2; // monster will ignore owner & wander around const float MONSTER_MOVE_SPAWNLOC = 3; // monster will move to its spawn location when not attacking const float MONSTER_MOVE_NOMOVE = 4; // monster simply stands still const float MONSTER_MOVE_ENEMY = 5; // used only as a movestate float enemy_range () { return vlen(self.enemy.origin - self.origin); } float MONSTER_STATE_ATTACK_LEAP = 1; // the start of something big?