diff options
Diffstat (limited to 'crawl-ref')
-rw-r--r-- | crawl-ref/source/delay.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/directn.cc | 7 | ||||
-rw-r--r-- | crawl-ref/source/enum.h | 3 | ||||
-rw-r--r-- | crawl-ref/source/externs.h | 14 | ||||
-rw-r--r-- | crawl-ref/source/items.cc | 9 | ||||
-rw-r--r-- | crawl-ref/source/items.h | 1 | ||||
-rw-r--r-- | crawl-ref/source/mon-util.cc | 10 | ||||
-rw-r--r-- | crawl-ref/source/monstuff.cc | 1 | ||||
-rw-r--r-- | crawl-ref/source/spells2.cc | 23 |
9 files changed, 42 insertions, 28 deletions
diff --git a/crawl-ref/source/delay.cc b/crawl-ref/source/delay.cc index b0605fb4ff..04173437e2 100644 --- a/crawl-ref/source/delay.cc +++ b/crawl-ref/source/delay.cc @@ -1589,7 +1589,7 @@ inline static void monster_warning(activity_interrupt_type ai, std::string text = mon->name(DESC_CAP_A); // For named monsters also mention the base type. if (!(mon->mname).empty()) - text += " " + mons_type_name(mon->type, DESC_NOCAP_THE); + text += " the " + mon->name(DESC_BASENAME); if (at.context == "thin air") { diff --git a/crawl-ref/source/directn.cc b/crawl-ref/source/directn.cc index 5b85906d81..30cad152a3 100644 --- a/crawl-ref/source/directn.cc +++ b/crawl-ref/source/directn.cc @@ -2180,9 +2180,12 @@ std::string get_monster_desc(const monsters *mon, bool full_desc, { desc = mon->name(mondtype); // For named monsters also mention the base type in the form of - // "Morbeogh the orc priest". + // "Morbeogh the orc priest", "Sigmund the human zombie". + // Note that the only difference between DESC_BASENAME and DESC_PLAIN + // is that basename will ignore mname, so the monster _must_ be named + // for this to make any sense. if (!(mon->mname).empty()) - desc += " " + mons_type_name(mon->type, DESC_NOCAP_THE); + desc += " the " + mon->name(DESC_BASENAME); } std::string weap = ""; diff --git a/crawl-ref/source/enum.h b/crawl-ref/source/enum.h index 3e242deec1..d3edde0a47 100644 --- a/crawl-ref/source/enum.h +++ b/crawl-ref/source/enum.h @@ -2729,7 +2729,8 @@ enum tutorial_event_type TUT_DONE_EXPLORE, TUT_STAIR_BRAND, TUT_EVENTS_NUM // 63 -}; // for numbers higher than 70 change size of tutorial_events in externs.h +}; +// NOTE: For numbers higher than 70 change size of tutorial_events in externs.h. enum tutorial_types { diff --git a/crawl-ref/source/externs.h b/crawl-ref/source/externs.h index d05fcff2ea..91cc735a1e 100644 --- a/crawl-ref/source/externs.h +++ b/crawl-ref/source/externs.h @@ -393,13 +393,13 @@ struct delay_queue_item struct item_def { object_class_type base_type; // basic class (ie OBJ_WEAPON) - unsigned char sub_type; // type within that class (ie WPN_DAGGER) - short plus; // +to hit, charges, corpse mon id - short plus2; // +to dam, sub-sub type for boots and helms - long special; // special stuff - unsigned char colour; // item colour - unsigned long flags; // item status flags - short quantity; // number of items + unsigned char sub_type; // type within that class (ie WPN_DAGGER) + short plus; // +to hit, charges, corpse mon id + short plus2; // +to dam, sub-sub type for boots/helms + long special; // special stuff + unsigned char colour; // item colour + unsigned long flags; // item status flags + short quantity; // number of items short x; // x-location; for inventory items = -1 short y; // y-location; for inventory items = -1 diff --git a/crawl-ref/source/items.cc b/crawl-ref/source/items.cc index 70fa4e2fe1..c8f20d1cf0 100644 --- a/crawl-ref/source/items.cc +++ b/crawl-ref/source/items.cc @@ -1012,7 +1012,7 @@ static void _origin_freeze(item_def &item, int x, int y) } } -static std::string _origin_monster_name(const item_def &item) +std::string origin_monster_name(const item_def &item) { const int monnum = item.orig_monnum - 1; if (monnum == MONS_PLAYER_GHOST) @@ -1022,11 +1022,6 @@ static std::string _origin_monster_name(const item_def &item) return mons_type_name(monnum, DESC_NOCAP_A); } -static std::string _origin_monster_desc(const item_def &item) -{ - return (_origin_monster_name(item)); -} - static std::string _origin_place_desc(const item_def &item) { return prep_branch_level_name(item.orig_place); @@ -1114,7 +1109,7 @@ std::string origin_desc(const item_def &item) else { desc += "You took " + _article_it(item) + " off " - + _origin_monster_desc(item) + " "; + + origin_monster_name(item) + " "; } } else diff --git a/crawl-ref/source/items.h b/crawl-ref/source/items.h index b9a9311e73..1be9387d4d 100644 --- a/crawl-ref/source/items.h +++ b/crawl-ref/source/items.h @@ -132,6 +132,7 @@ void origin_acquired(item_def &item, int agent); void origin_set_startequip(item_def &item); void origin_set_unknown(item_def &item); void origin_set_inventory( void (*oset)(item_def &item) ); +std::string origin_monster_name(const item_def &item); bool item_needs_autopickup(const item_def &); bool can_autopickup(); diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc index dea0163bad..1d1fed8710 100644 --- a/crawl-ref/source/mon-util.cc +++ b/crawl-ref/source/mon-util.cc @@ -1636,7 +1636,7 @@ static std::string _str_monam(const monsters& mon, description_level_type desc, // If the monster has an explicit name, return that, handling it like // a unique's name. - if (!mon.mname.empty()) + if (desc != DESC_BASENAME && !mon.mname.empty()) return mon.mname; std::string result; @@ -1773,10 +1773,10 @@ std::string mons_type_name(int type, description_level_type desc ) result += get_monster_data(type)->name; // Vowel fix: Change 'a orc' to 'an orc' - if ( result.length() >= 3 - && (result[0] == 'a' || result[0] == 'A') - && result[1] == ' ' - && is_vowel(result[2]) ) + if (result.length() >= 3 + && (result[0] == 'a' || result[0] == 'A') + && result[1] == ' ' + && is_vowel(result[2]) ) { result.insert(1, "n"); } diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc index 7973e56655..22e0b7357a 100644 --- a/crawl-ref/source/monstuff.cc +++ b/crawl-ref/source/monstuff.cc @@ -351,6 +351,7 @@ static void _place_monster_corpse(const monsters *monster) mitm[o].base_type = OBJ_UNASSIGNED; return; } + origin_set_monster(mitm[o], monster); // Don't care if 'o' is changed, and it shouldn't be (corpses don't stack). move_item_to_grid( &o, monster->x, monster->y ); diff --git a/crawl-ref/source/spells2.cc b/crawl-ref/source/spells2.cc index 3880f22b79..7c163f1d73 100644 --- a/crawl-ref/source/spells2.cc +++ b/crawl-ref/source/spells2.cc @@ -466,11 +466,24 @@ static int raise_corpse( int corps, int corx, int cory, if (!number && zombie_type == MONS_HYDRA) return (0); - create_monster( - mgen_data( - type, corps_beh, 0, - coord_def(corx, cory), corps_hit, - 0, zombie_type, number)); + int monster = create_monster( + mgen_data( + type, corps_beh, 0, + coord_def(corx, cory), corps_hit, + 0, zombie_type, number)); + + if (monster != -1) + { + const int monnum = mitm[corps].orig_monnum - 1; + if (mons_is_unique(monnum)) + { + menv[monster].mname = origin_monster_name(mitm[corps]); + // Special case for Blork the orc: shorten his name to "Blork" + // to avoid mentions of "Blork the orc the orc skeleton". + if (monnum == MONS_BLORK_THE_ORC) + menv[monster].mname = "Blork"; + } + } destroy_item(corps); } |