Sting vs level teleport's "materialize" message

When level teleporting, Sting/Orcrish/Grimtooth would start or stop
glowing based on occupants of the new level before "you materialize
on another level".  That wasn't necessarily incorrect for the glow
stopping but was clearly wrong for it starting.  This fix uses a flag
as a hack to avoid finding and changing all the calls to docrt() and
see_monsters().  It ought to be fixed properly....
This commit is contained in:
PatR
2020-04-27 05:09:19 -07:00
parent 09f9b3598f
commit c67f1dd710
4 changed files with 30 additions and 10 deletions

View File

@@ -1295,12 +1295,19 @@ see_monsters()
if (Warn_of_mon && (g.context.warntype.obj & mon->data->mflags2) != 0L)
new_warn_obj_cnt++;
}
/*
* Make Sting glow blue or stop glowing if required.
*/
if (new_warn_obj_cnt != g.warn_obj_cnt) {
Sting_effects(new_warn_obj_cnt);
g.warn_obj_cnt = new_warn_obj_cnt;
/* message sequencing: when changing levels via level teleport,
the start-glow/stop-glow message from Sting_effects() would come
too soon so we suppress it for docrt() -> see_monsters() then
reenable it and call see_monsters() a second time */
if (!iflags.no_glow) {
/*
* Make Sting glow blue or stop glowing if required.
*/
if (new_warn_obj_cnt != g.warn_obj_cnt) {
Sting_effects(new_warn_obj_cnt);
g.warn_obj_cnt = new_warn_obj_cnt;
}
}
/* when mounted, hero's location gets caught by monster loop */