From 9295e4fb393749bedc6ccdbe99c5147435949d35 Mon Sep 17 00:00:00 2001 From: dshaligram Date: Mon, 29 Jan 2007 15:42:46 +0000 Subject: 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 --- crawl-ref/source/mapdef.cc | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) (limited to 'crawl-ref/source/mapdef.cc') 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); -- cgit v1.2.3-54-g00ecf