diff options
author | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-01-29 15:42:46 +0000 |
---|---|---|
committer | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-01-29 15:42:46 +0000 |
commit | 9295e4fb393749bedc6ccdbe99c5147435949d35 (patch) | |
tree | b3e70eb49b9f5b1f93255eaca78e63254c30c89b /crawl-ref/source/mapdef.cc | |
parent | 95ae20f32661c0f904607c46471a4324ce470e34 (diff) | |
download | crawl-ref-9295e4fb393749bedc6ccdbe99c5147435949d35.tar.gz crawl-ref-9295e4fb393749bedc6ccdbe99c5147435949d35.zip |
Allow vaults to ask for a monster to be generated awake (generate_awake tag).
Add Enter as a synonym for . in targeting.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@905 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/mapdef.cc')
-rw-r--r-- | crawl-ref/source/mapdef.cc | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/crawl-ref/source/mapdef.cc b/crawl-ref/source/mapdef.cc index 87ae583cb1..a3ba920550 100644 --- a/crawl-ref/source/mapdef.cc +++ b/crawl-ref/source/mapdef.cc @@ -573,10 +573,10 @@ int mons_list::fix_demon(int demon) const return (summon_any_demon( demon )); } -int mons_list::pick_monster(mons_spec_slot &slot) +mons_spec mons_list::pick_monster(mons_spec_slot &slot) { int totweight = 0; - int pick = RANDOM_MONSTER; + mons_spec pick; for (mons_spec_list::iterator i = slot.mlist.begin(); i != slot.mlist.end(); ++i) @@ -584,30 +584,30 @@ int mons_list::pick_monster(mons_spec_slot &slot) const int weight = i->genweight; if (random2(totweight += weight) < weight) { - pick = i->mid; + pick = *i; - if (pick < 0 && i->fix_mons) - pick = i->mid = fix_demon(pick); + if (pick.mid < 0 && pick.fix_mons) + pick.mid = i->mid = fix_demon(pick.mid); } } - if (pick < 0) - pick = fix_demon(pick); + if (pick.mid < 0) + pick = fix_demon(pick.mid); if (slot.fix_slot) { slot.mlist.clear(); - slot.mlist.push_back( mons_spec(pick) ); + slot.mlist.push_back( pick ); slot.fix_slot = false; } return (pick); } -int mons_list::get_monster(int index) +mons_spec mons_list::get_monster(int index) { if (index < 0 || index >= (int) mons.size()) - return (RANDOM_MONSTER); + return mons_spec(RANDOM_MONSTER); return (pick_monster( mons[index] )); } @@ -633,6 +633,7 @@ mons_list::mons_spec_slot mons_list::parse_mons_spec(std::string spec) weight = 10; const bool fixmons = strip_tag(s, "fix_mons"); + const bool generate_awake = strip_tag(s, "generate_awake"); trim_string(s); const int mid = mons_by_name(s); @@ -643,7 +644,7 @@ mons_list::mons_spec_slot mons_list::parse_mons_spec(std::string spec) return (slot); } - slot.mlist.push_back( mons_spec(mid, weight, fixmons) ); + slot.mlist.push_back( mons_spec(mid, weight, fixmons, generate_awake) ); } return (slot); |