Viewing Issue Simple Details Jump to Notes ] Wiki ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0011171 [DCSS] Bug Report minor have not tried 2017-08-04 00:30 2018-12-30 17:23
Reporter damerell View Status public  
Assigned To ebering
Priority normal Resolution done  
Status closed   Product Branch 0.21 ancient branch
Summary 0011171: Friendly OCS creates travel exclusion.
Description "Marking area around the orange crystal statue as unsafe for travelling."

The OCS was friendly; created by an Enslave Soul-ed Mara. I'm afraid I don't know if this is a bug or by design (eg because the area around it is dangerous even though it is is nominally allied).
Additional Information
Tags newbie friendly
Attached Files

- Relationships

-  Notes
(0031750)
neil (administrator)
2017-08-04 23:50
edited on: 2017-08-04 23:56

Investigated this a bit, and it turns out that the exclusion is actually around the *original* (hostile) OCS.

When Mara clones a monster (_mons_summon_monster_illusion), the target's attitude is temporarily changed to Mara's attitude, then the monster is cloned, then its original attitude is restored. The problem is that clone_mons does a viewwindow(), which results in the exclusion around the original monster being deleted (because it is not hostile). The exclusion is then restored when the monster's attitude is changed back to hostile: That is what causes the message.

The "temporarily change attitude then restore" is done so that the new monster is created with the correct attitude, to keep Arena mode bookkeeping in sync. It doesn't happen with phantom mirror, because phantom mirror changes the clone's attitude after it is created. The Arena thing is not relevant in that case, since monsters can't use phantom mirrors.

I see a few possible solutions:

  1. Create the monster with the wrong attitude, then change it after creation and fix up the arena bookkeeping at that time.
  2. Add a flag parameter to clone_mons that says not to do viewwindow(). Then do the viewwindow() in _mons_summon_monster_illusion.
  3. Add a parameter to clone_mons for the attitude of the new monster.

I suspect 3 is the simplest solution. The difficulty is that there is not really a good way to provide a default for that parameter, unless we either use an int instead of the enum (ugh), or add a new enumerator ATT_SAME to mon_attitude_type.

(0031811)
johnstein (reporter)
2017-09-02 18:29

I've started working this one but I'm not ready with a PR quite yet.
(0031812)
johnstein (reporter)
2017-09-04 09:59

PR at: https://github.com/crawl/crawl/pull/608 [^]
(0031936)
mibe420 (reporter)
2017-11-22 07:29

Hi! I have just experienced the same bug with Gozag's bribe branch and an obsidian statue.

The obsidian statue stares, then turns away, jangling a coin purse.

Here: an obsidian statue (peaceful)

I manually remove the exclusion, and the game automatically recreates it as soon as i exit the 'X' screen.
(0032704)
RoGGa (reporter)
2018-10-20 19:56

fixed in: https://github.com/crawl/crawl/commit/6ff198fc0bf70f33718c861d507e8fefa423a4d7 [^]

- Issue History
Date Modified Username Field Change
2017-08-04 00:30 damerell New Issue
2017-08-04 23:50 neil Note Added: 0031750
2017-08-04 23:50 neil Status new => confirmed
2017-08-04 23:55 neil Note Edited: 0031750
2017-08-04 23:55 neil Note Edited: 0031750
2017-08-04 23:56 neil Note Edited: 0031750
2017-08-05 00:32 neil Tag Attached: newbie friendly
2017-09-02 18:29 johnstein Note Added: 0031811
2017-09-04 09:59 johnstein Note Added: 0031812
2017-11-22 07:29 mibe420 Note Added: 0031936
2018-10-20 19:56 RoGGa Note Added: 0032704
2018-10-20 20:02 ebering Status confirmed => resolved
2018-10-20 20:02 ebering Resolution open => done
2018-10-20 20:02 ebering Assigned To => ebering
2018-12-30 17:23 damerell Status resolved => closed


Mantis 1.1.8[^]
Copyright © 2000 - 2009 Mantis Group
Powered by Mantis Bugtracker