4.1 feature branches

Collapse
X
 
  • Time
  • Show
Clear All
new posts

  • Nick
    replied
    Originally posted by PowerWyrm
    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

    Code:
        /* Learn brands and slays */
        object_know_brands_and_slays(obj);
    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...
    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.

    Leave a comment:


  • PowerWyrm
    replied
    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

    Code:
        /* Learn brands and slays */
        object_know_brands_and_slays(obj);
    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...

    Leave a comment:


  • PowerWyrm
    replied
    Slay cache is broken again in the latest version. The old code was doing a check vs known brands/slays:

    Code:
    if (brands_are_equal(obj->brands, slay_cache[i].brands, TRUE) && slays_are_equal(obj->slays, slay_cache[i].slays, TRUE))...
    The new code does:

    Code:
    if (brands_are_equal(obj->brands, slay_cache[i].brands) && slays_are_equal(obj->slays, slay_cache[i].slays))...
    Since the check is vs known brands/slays, it probably should be:

    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:


  • PowerWyrm
    replied
    Originally posted by PowerWyrm
    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...
    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:


  • PowerWyrm
    replied
    Originally posted by Nick
    So I want
    Code:
    			/* Effect observed */
    			if (obj->known && !ignore_item_ok(obj) && cave_isseen(cave, y, x)) {
    				obvious = true;
    				...
    			}
    and then only give messages and become aware of mimics if obvious is true, right?
    Exactly that.

    Leave a comment:


  • Pete Mack
    replied
    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:


  • Nick
    replied
    Originally posted by PowerWyrm
    Code:
    			/* Effect "observed" */
    			if (obj->known && !ignore_item_ok(obj)) {
    				obvious = true;
    				...
    			}
    "known" should probably been replaced by "seen"...
    So I want
    Code:
    			/* Effect observed */
    			if (obj->known && !ignore_item_ok(obj) && cave_isseen(cave, y, x)) {
    				obvious = true;
    				...
    			}
    and then only give messages and become aware of mimics if obvious is true, right?

    Leave a comment:


  • PowerWyrm
    replied
    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:

    Hack -- effects on objects which are memorized but not in view are also seen.
    And the code does:

    Code:
    			/* Effect "observed" */
    			if (obj->known && !ignore_item_ok(obj)) {
    				obvious = true;
    				...
    			}
    "known" should probably been replaced by "seen"...

    Leave a comment:


  • PowerWyrm
    replied
    Fuzzy detected objects probably have the wrong prefix when displaying the object list.

    Code:
    if (entry->object->marked == MARK_AWARE)
    was changed to:

    Code:
    if (entry->object->kind == entry->object->known->kind)
    which is the new code for "seen" objects. This line should probably be:

    Code:
    if (entry->object->kind != entry->object->known->kind)

    Leave a comment:


  • Nick
    replied
    Originally posted by bdgamer
    I received an Assertion failed! error

    File: obj-identify.c
    Line:579
    Expression: obj->known

    Savefile with error is attached.
    What were you doing when you got the error, and what had happened from where you made the savefile?

    Leave a comment:


  • PowerWyrm
    replied
    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:


  • bdgamer
    replied
    Bug found

    I received an Assertion failed! error

    File: obj-identify.c
    Line:579
    Expression: obj->known

    Savefile with error is attached.
    Attached Files

    Leave a comment:


  • Pete Mack
    replied
    Glad you mentioned that. I was getting ready to give it a shot. Well done!

    Leave a comment:


  • Nick
    replied
    Originally posted by Nick
    I should catch up with some of the bugs in this thread on the weekend, with luck.
    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:


  • Pete Mack
    replied
    Another object-ID bug. Fired assertion at obj-identify line 157. I will try to trap this next time.

    Leave a comment:

Working...
😀
😂
🥰
😘
🤢
😎
😞
😡
👍
👎