I don't believe this is a problem, because the only place artifact power is used is in randart generation, where all brands and slays are assumed known anyway.
For similar reasons, the slay cache being broken doesn't matter much - it just means it's not used when an individual ego item is being assessed for price, while its main use is speeding up stats gathering (where, again, all slays and brands are assumed known).
I'm not planning to do anything about either of these at this stage, or about the various ID crashes, because the rune-based ID branch changes a lot of the relevant code.
4.1 feature branches
Collapse
X
-
While implementing object knowledge for my variant, I saw a difference in the code for make_fake_artifact(), which is used for artifact knowledge menus and artifact power: at the end, my code does
which seems logical, since slay_power() will only use the known brands and slays to evaluate the power of brands/slays. This means brands and slays never contribute to artifact power...Code:/* Learn brands and slays */ object_know_brands_and_slays(obj);Leave a comment:
-
Slay cache is broken again in the latest version. The old code was doing a check vs known brands/slays:
The new code does:Code:if (brands_are_equal(obj->brands, slay_cache[i].brands, TRUE) && slays_are_equal(obj->slays, slay_cache[i].slays, TRUE))...
Since the check is vs known brands/slays, it probably should be:Code:if (brands_are_equal(obj->brands, slay_cache[i].brands) && slays_are_equal(obj->slays, slay_cache[i].slays))...
Code:if (brands_are_equal(obj->known->brands, slay_cache[i].brands) && slays_are_equal(obj->known->slays, slay_cache[i].slays))...
Leave a comment:
-
Nevermind... the current behavior is correct. It's consistent with ignored objects, which are sensed by fuzzy detection, but disappear from view only when in LOS.Leave a comment:
-
-
BTW: "unreavealing" an object via detection is a overkill. I'd much rather have the spell do "object belief" rather than "object knowledge."Leave a comment:
-
So I want
and then only give messages and become aware of mimics if obvious is true, right?Code:/* Effect observed */ if (obj->known && !ignore_item_ok(obj) && cave_isseen(cave, y, x)) { obvious = true; ... }Leave a comment:
-
Objects wiped by effects out of LOS of the character are noticed, which kinda opposes the whole knowledge stuff. Like objects picked up/crushed by monsters, they should stay in the player's knowledge until in LOS or unrevealed via detection.
Function project_o() still states this clearly:
And the code does:Hack -- effects on objects which are memorized but not in view are also seen.
"known" should probably been replaced by "seen"...Code:/* Effect "observed" */ if (obj->known && !ignore_item_ok(obj)) { obvious = true; ... }Leave a comment:
-
Fuzzy detected objects probably have the wrong prefix when displaying the object list.
was changed to:Code:if (entry->object->marked == MARK_AWARE)
which is the new code for "seen" objects. This line should probably be:Code:if (entry->object->kind == entry->object->known->kind)
Code:if (entry->object->kind != entry->object->known->kind)
Leave a comment:
-
-
Fuzzy detection doesn't update object knowledge when something has disappeared from cave (player casts sense objects, monster picks up something, player casts sense objects again). Maybe it should, unless "fuzzy" also includes player knowledge...Leave a comment:
-
Bug found
I received an Assertion failed! error
File: obj-identify.c
Line:579
Expression: obj->known
Savefile with error is attached.Attached FilesLeave a comment:
-
Glad you mentioned that. I was getting ready to give it a shot. Well done!Leave a comment:
-
Well, the bad news is that that's two weekends where I did no bugfixing on master or 4.0.4. The good news is that I have a rune-based ID branch that seems to basically work.
So the plan from here is to have a new build of something some time soon. Probably.Leave a comment:
-
Another object-ID bug. Fired assertion at obj-identify line 157. I will try to trap this next time.Leave a comment:
Leave a comment: