+#ifndef SV_MONSTERS_H
+#define SV_MONSTERS_H
+
+#if defined(CSQC)
+#elif defined(MENUQC)
+#elif defined(SVQC)
+ #include "../util-pre.qh"
+ #include "../../server/sys-pre.qh"
+ #include "../../dpdefs/progsdefs.qc"
+ #include "../../dpdefs/dpextensions.qc"
+ #include "../../server/sys-post.qh"
+ #include "../../warpzonelib/anglestransform.qh"
+ #include "../../warpzonelib/mathlib.qh"
+ #include "../../warpzonelib/common.qh"
+ #include "../../warpzonelib/util_server.qh"
+ #include "../../warpzonelib/server.qh"
+ #include "../constants.qh"
+ #include "../stats.qh"
+ #include "../teams.qh"
+ #include "../util.qh"
+ #include "../nades.qh"
+ #include "../buffs.qh"
+ #include "../test.qh"
+ #include "../counting.qh"
+ #include "../urllib.qh"
+ #include "../command/markup.qh"
+ #include "../command/rpn.qh"
+ #include "../command/generic.qh"
+ #include "../command/shared_defs.qh"
+ #include "../net_notice.qh"
+ #include "../animdecide.qh"
+ #include "monsters.qh"
+#endif
+
.string spawnmob;
.float monster_attack;
-float monster_skill;
-
.entity monster_owner; // new monster owner entity, fixes non-solid monsters
-.float monstercount; // per player monster count
.float stat_monsters_killed; // stats
.float stat_monsters_total;
void monsters_setstatus(); // monsters.qc
.float monster_moveflags; // checks where to move when not attacking
+.float wander_delay;
+.float wander_distance;
+
+.float monster_lifetime;
+
+.float spider_slowness; // special spider timer
+
+void monster_remove(entity mon); // removes a monster
+
.float(float attack_type) monster_attackfunc;
-const float MONSTER_ATTACK_MELEE = 1;
-const float MONSTER_ATTACK_RANGED = 2;
+const int MONSTER_ATTACK_MELEE = 1;
+const int MONSTER_ATTACK_RANGED = 2;
+
+.float monster_skill;
+const float MONSTER_SKILL_EASY = 1;
+const float MONSTER_SKILL_MEDIUM = 3;
+const float MONSTER_SKILL_HARD = 5;
+const float MONSTER_SKILL_INSANE = 7;
+const float MONSTER_SKILL_NIGHTMARE = 10;
.float fish_wasdrowning; // used to reset a drowning fish's angles if it reaches water again
_MSOUND(melee) \
_MSOUND(pain) \
_MSOUND(spawn) \
- _MSOUND(idle)
+ _MSOUND(idle)
#define _MSOUND(m) .string monstersound_##m;
ALLMONSTERSOUNDS
float GetMonsterSoundSampleField_notFound;
-.float monster_respawned; // used to make sure we're not recounting respawned monster stats
-
-const float MONSTERSKILL_NOTEASY = 256; // monster will not spawn on skill <= 1
-const float MONSTERSKILL_NOTMEDIUM = 512; // monster will not spawn on skill 2
-const float MONSTERSKILL_NOTHARD = 1024; // monster will not spawn on skill >= 3
+const int MONSTERSKILL_NOTEASY = 256; // monster will not spawn on skill <= 1
+const int MONSTERSKILL_NOTMEDIUM = 512; // monster will not spawn on skill 2
+const int MONSTERSKILL_NOTHARD = 1024; // monster will not spawn on skill >= 3
// new flags
-const float MONSTERFLAG_APPEAR = 2; // delay spawn until triggered
-const float MONSTERFLAG_NORESPAWN = 4;
-const float MONSTERFLAG_FLY_VERTICAL = 8; // fly/swim vertically
-const float MONSTERFLAG_INFRONT = 32; // only check for enemies infront of us
-const float MONSTERFLAG_MINIBOSS = 64; // monster spawns as mini-boss (also has a chance of naturally becoming one)
-const float MONSTERFLAG_SPAWNED = 16384; // flag for spawned monsters
-
-.void() monster_spawnfunc;
-
-.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
-
-const float MONSTER_STATE_ATTACK_LEAP = 1;
-const float MONSTER_STATE_ATTACK_MELEE = 2;
-
+const int MONSTERFLAG_APPEAR = 2; // delay spawn until triggered
+const int MONSTERFLAG_NORESPAWN = 4;
+const int MONSTERFLAG_FLY_VERTICAL = 8; // fly/swim vertically
+const int MONSTERFLAG_INFRONT = 32; // only check for enemies infront of us
+const int MONSTERFLAG_MINIBOSS = 64; // monster spawns as mini-boss (also has a chance of naturally becoming one)
+const int MONSTERFLAG_INVINCIBLE = 128; // monster doesn't take damage (may be used for map objects & temporary monsters)
+const int MONSTERFLAG_SPAWNED = 16384; // flag for spawned monsters
+const int MONSTERFLAG_RESPAWNED = 32768; // flag for re-spawned monsters
+
+.int monster_movestate; // used to tell what the monster is currently doing
+const int MONSTER_MOVE_OWNER = 1; // monster will move to owner if in range, or stand still
+const int MONSTER_MOVE_WANDER = 2; // monster will ignore owner & wander around
+const int MONSTER_MOVE_SPAWNLOC = 3; // monster will move to its spawn location when not attacking
+const int MONSTER_MOVE_NOMOVE = 4; // monster simply stands still
+const int MONSTER_MOVE_ENEMY = 5; // used only as a movestate
+
+const int MONSTER_STATE_ATTACK_LEAP = 1;
+const int MONSTER_STATE_ATTACK_MELEE = 2;
+#endif
\ No newline at end of file