From 9368f57866c8d62ed9927410e2a2230e0a1c3b54 Mon Sep 17 00:00:00 2001 From: Robert Vollmert Date: Fri, 27 Nov 2009 17:57:40 +0100 Subject: Remove header includes from mon-place.h. --- crawl-ref/source/mon-place.h | 260 +------------------------------------------ 1 file changed, 3 insertions(+), 257 deletions(-) (limited to 'crawl-ref/source/mon-place.h') diff --git a/crawl-ref/source/mon-place.h b/crawl-ref/source/mon-place.h index 709a88045b..3512639462 100644 --- a/crawl-ref/source/mon-place.h +++ b/crawl-ref/source/mon-place.h @@ -8,264 +8,10 @@ #ifndef MONPLACE_H #define MONPLACE_H -#include "coord.h" -#include "enum.h" -#include "dungeon.h" -#include "player.h" +#include "mgen_enum.h" -enum band_type -{ - BAND_NO_BAND = 0, - BAND_KOBOLDS, - BAND_ORCS, - BAND_ORC_WARRIOR, - BAND_ORC_KNIGHT, - BAND_KILLER_BEES, // 5 - BAND_FLYING_SKULLS, - BAND_SLIME_CREATURES, - BAND_YAKS, - BAND_UGLY_THINGS, - BAND_HELL_HOUNDS, // 10 - BAND_JACKALS, - BAND_HELL_KNIGHTS, - BAND_ORC_HIGH_PRIEST, - BAND_GNOLLS, // 14 - // 15 - BAND_BUMBLEBEES = 16, - BAND_CENTAURS, - BAND_YAKTAURS, - BAND_INSUBSTANTIAL_WISPS, - BAND_OGRE_MAGE, // 20 - BAND_DEATH_YAKS, - BAND_NECROMANCER, - BAND_BALRUG, - BAND_CACODEMON, - BAND_EXECUTIONER, // 25 - BAND_HELLWING, - BAND_DEEP_ELF_FIGHTER, - BAND_DEEP_ELF_KNIGHT, - BAND_DEEP_ELF_HIGH_PRIEST, - BAND_KOBOLD_DEMONOLOGIST, // 30 - BAND_NAGAS, - BAND_WAR_DOGS, - BAND_GREY_RATS, - BAND_GREEN_RATS, - BAND_ORANGE_RATS, // 35 - BAND_SHEEP, - BAND_GHOULS, - BAND_DEEP_TROLLS, - BAND_HOGS, - BAND_HELL_HOGS, // 40 - BAND_GIANT_MOSQUITOES, - BAND_BOGGARTS, - BAND_BLINK_FROGS, - BAND_SKELETAL_WARRIORS, - BAND_DRACONIAN, // 45 - BAND_PANDEMONIUM_DEMON, - BAND_HARPIES, - BAND_ILSUIW, - BAND_AZRAEL, - BAND_DUVESSA, // 50 - BAND_KHUFU, - BAND_GOLDEN_EYE, - BAND_PIKEL, - NUM_BANDS // always last -}; - -enum demon_class_type -{ - DEMON_LESSER, // 0: Class V - DEMON_COMMON, // 1: Class II-IV - DEMON_GREATER, // 2: Class I - DEMON_RANDOM // any of the above -}; - -enum holy_being_class_type -{ - HOLY_BEING_WARRIOR // 0: Daeva or Angel -}; - -enum dragon_class_type -{ - DRAGON_LIZARD, - DRAGON_DRACONIAN, - DRAGON_DRAGON -}; - -enum proximity_type // proximity to player to create monster -{ - PROX_ANYWHERE, - PROX_CLOSE_TO_PLAYER, - PROX_AWAY_FROM_PLAYER, - PROX_NEAR_STAIRS -}; - -enum mgen_flag_type -{ - MG_PERMIT_BANDS = 0x01, - MG_FORCE_PLACE = 0x02, - MG_FORCE_BEH = 0x04, - MG_PLAYER_MADE = 0x08, - MG_PATROLLING = 0x10, - MG_BAND_MINION = 0x20 -}; - -// A structure with all the data needed to whip up a new monster. -struct mgen_data -{ - // Monster type. - monster_type cls; - - // If the monster is zombie-like, or a specialised draconian, this - // is the base monster that the monster is based on - should be - // set to MONS_NO_MONSTER when not used. - monster_type base_type; - - // Determines the behaviour of the monster after it is generated. This - // behaviour is an unholy combination of monster attitude - // (friendly, hostile) and monster initial state (asleep, wandering). - // XXX: Could use splitting up these aspects. - beh_type behaviour; - - // Who summoned this monster? Important to know for death accounting - // and the summon cap, if and when it goes in. NULL is no summoner. - actor* summoner; - - // For summoned monsters, this is a measure of how long the summon will - // hang around, on a scale of 1-6, 6 being longest. Use 0 for monsters - // that aren't summoned. - int abjuration_duration; - - // For summoned monsters this is their type of summoning, either the - // spell which summoned them or one of the values of the enumeration - // mon_summon_type in mon-util.h. - int summon_type; - - // Where the monster will be created. - coord_def pos; - - // The monster's foe, i.e. which monster it will want to attack. foe - // may be an index into the monster array (0 - (MAX_MONSTERS-1)), or - // it may be MHITYOU to indicate that the monster wants to attack the - // player, or MHITNOT, to indicate that the monster has no foe and is - // just wandering around. - unsigned short foe; - - // Generation flags from mgen_flag_type. - unsigned flags; - - // What god the monster worships, if any. Used for monsters that - // are god gifts, to indicate which god sent them, and by priest - // monsters, to indicate whose priest they are. - god_type god; - - // The number of hydra heads, the number of manticore attack volleys, - // the number of merged slime creatures, or the indicator for when - // Khufu is entombed. - // - // Note: in older versions this field was used for both this and for - // base_type. - int number; - - // The colour of the monster. - int colour; - - // A measure of how powerful the generated monster should be (for - // randomly chosen monsters), usually equal to the absolute depth - // that the player is in the dungeon. - int power; - - // How close to or far from the player the monster should be created. - // Is usually used only when the initial position (pos) is unspecified. - proximity_type proximity; - - // What place we're in, or pretending to be in, usually the place - // the player is actually in. - level_area_type level_type; - - // Some predefined vaults (aka maps) include flags to suppress random - // generation of monsters. When generating monsters, this is a mask of - // map flags to honour (such as MMT_NO_MONS to specify that we shouldn't - // randomly generate a monster inside a map that doesn't want it). These - // map flags are usually respected only when a dungeon level is being - // constructed, since at future points vault information may no longer - // be available (vault metadata is not preserved across game saves). - unsigned map_mask; - - // XXX: Also rather hackish. - int hd; - int hp; - - // XXX: Rather hackish. - std::string mname; - - // This is used to account for non-actor summoners. Blasted by an Ice - // Fiend ... summoned by the effects of Hell. - std::string non_actor_summoner; - - mgen_data(monster_type mt = RANDOM_MONSTER, - beh_type beh = BEH_HOSTILE, - actor* sner = 0, - int abj = 0, - int st = 0, - const coord_def &p = coord_def(-1, -1), - unsigned short mfoe = MHITNOT, - unsigned monflags = 0, - god_type which_god = GOD_NO_GOD, - monster_type base = MONS_NO_MONSTER, - int monnumber = 0, - int moncolour = BLACK, - int monpower = you.your_level, - proximity_type prox = PROX_ANYWHERE, - level_area_type ltype = you.level_type, - int mhd = 0, int mhp = 0, - std::string monname = "", - std::string nas = "") - - : cls(mt), base_type(base), behaviour(beh), summoner(sner), - abjuration_duration(abj), summon_type(st), pos(p), foe(mfoe), - flags(monflags), god(which_god), number(monnumber), colour(moncolour), - power(monpower), proximity(prox), level_type(ltype), map_mask(0), - hd(mhd), hp(mhp), mname(monname), non_actor_summoner(nas) - { - ASSERT(summon_type == 0 || (abj >= 1 && abj <= 6) - || mt == MONS_BALL_LIGHTNING); - } - - bool permit_bands() const { return (flags & MG_PERMIT_BANDS); } - bool force_place() const { return (flags & MG_FORCE_PLACE); } - bool needs_patrol_point() const { return (flags & MG_PATROLLING); } - - // Is there a valid position set on this struct that we want to use - // when placing the monster? - bool use_position() const { return in_bounds(pos); } - - bool summoned() const { return (abjuration_duration > 0); } - - static mgen_data sleeper_at(monster_type what, - const coord_def &where, - unsigned flags = 0) - { - return mgen_data(what, BEH_SLEEP, 0, 0, 0, where, MHITNOT, flags); - } - - static mgen_data hostile_at(monster_type mt, - std::string summoner, - bool alert = false, - int abj = 0, - int st = 0, - const coord_def &p = coord_def(-1, -1), - unsigned monflags = 0, - god_type god = GOD_NO_GOD, - monster_type base = MONS_NO_MONSTER) - - { - return mgen_data(mt, BEH_HOSTILE, 0, abj, st, p, - alert ? MHITYOU : MHITNOT, - monflags, god, base, 0, BLACK, you.your_level, - PROX_ANYWHERE, you.level_type, 0, 0, "", summoner); - } -}; +class mons_spec; +struct mgen_data; /* *********************************************************************** * Creates a monster near the place specified in the mgen_data, producing -- cgit v1.2.3-54-g00ecf