#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; .entity monster_owner; // new monster owner entity, fixes non-solid monsters .float stat_monsters_killed; // stats .float stat_monsters_total; float monsters_total; float monsters_killed; 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 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 .float candrop; .float attack_range; .float spawn_time; // stop monster from moving around right after spawning .string oldtarget2; .float lastshielded; .vector oldangles; .float m_armor_blockpercent; // monster sounds // copied from player sounds .float msound_delay; // temporary antilag system #define ALLMONSTERSOUNDS \ _MSOUND(death) \ _MSOUND(sight) \ _MSOUND(ranged) \ _MSOUND(melee) \ _MSOUND(pain) \ _MSOUND(spawn) \ _MSOUND(idle) #define _MSOUND(m) .string monstersound_##m; ALLMONSTERSOUNDS #undef _MSOUND float GetMonsterSoundSampleField_notFound; 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 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