PWMAngband: implementing the rune-based ID branch

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • PowerWyrm
    Prophet
    • Apr 2008
    • 2986

    PWMAngband: implementing the rune-based ID branch

    After stabilizing 1.1.11, I started working on 1.1.12 for which I will look at the new additions from Angband 4.1... and the first one is rune-based ID.

    First changeset... and I'm already facing a big problem. Change in V: object knowledge is updated on walkover using the player's knowledge (known runes).

    PWMAngband scenario:
    - object is created with basic knowledge
    - player 1 (high level with full knowledge) looks at the object and gets basic knowledge
    - player 1 walks over the object, which becomes fully known
    - player 2 (low level with no knowledge) looks at the object... and gets full knowledge
    - player 2 walks over the object... which becomes unknown again

    This is clearly not working in a multiplayer environment. Sounds like the "obj->known" structure becomes obsolete with rune-based ID and should be replaced by "player->obj_k" for each player.
    PWMAngband variant maintainer - check https://github.com/draconisPW/PWMAngband (or http://www.mangband.org/forum/viewforum.php?f=9) to learn more about this new variant!
  • PowerWyrm
    Prophet
    • Apr 2008
    • 2986

    #2
    After toying around with stuff, I decided to simply add the rune-based system over the old system instead of replacing it. This means:
    - keep object knowledge, learned "by use" ("obj->known" -- useful for other players)
    - add player knowedge, learned "by use" ("player->obj_k" -- useful for a particular player)
    - transfer player knowledge on walkover, but only the known bits (in theory not required -- "player->obj_k" is set --> "obj->known" is set; "player->obj_k" is not set --> "obj->known" is unchanged)
    - redo the info/description (display info not only if "obj->known" is set, but also if "player->obj_k" is set)
    - leave objects identified in stores ("obj->known" set, "player->obj_k" not affected)

    Basically a player learns runes by use, uses player knowledge for the objects he finds and object knowledge for the objects he sees.
    PWMAngband variant maintainer - check https://github.com/draconisPW/PWMAngband (or http://www.mangband.org/forum/viewforum.php?f=9) to learn more about this new variant!

    Comment

    • PowerWyrm
      Prophet
      • Apr 2008
      • 2986

      #3
      This is pretty much a "partial" version of the auto-id flag: with an auto-id item, you learn everything on walkover; with the rune system, you learn every known rune on walkover. This means that once you've learned all the runes, you have full auto-id. I like that.
      PWMAngband variant maintainer - check https://github.com/draconisPW/PWMAngband (or http://www.mangband.org/forum/viewforum.php?f=9) to learn more about this new variant!

      Comment

      • PowerWyrm
        Prophet
        • Apr 2008
        • 2986

        #4
        I've now implemented most of the changes up to the point where consumables are IDed by use. Last thing to decide: transfer knowledge on walkover or pickup. Currently we have:

        * V:
        - knowledge on walkover
        - items are assessed and ignored if ignorable

        * PW:
        - auto-ID on walkover
        - items are ignorable if picked up with 'g' and not ignorable if picked up with ','
        - items are assessed (currently using the old pseudo-id system) shortly after pickup and ignored if ignorable

        This cannot work if I want to make auto-ID a "know all runes" flag and manage auto-ID and rune knowledge at the same time. Basically I'll have to decide between two systems:

        * transfer knowledge on walkover:
        - knowledge of carried + floor objects is updated from player knowledge (known runes or all runes if using auto-ID) on walkover
        - items are assessed and ignored if ignorable

        * transfer knowledge on pickup:
        - items are ignorable if picked up with 'g' and not ignorable if picked up with ','
        - knowledge of carried + floor objects is updated from player knowledge (known runes or all runes if using auto-ID) on pickup
        - items are assessed and ignored if ignorable

        First system: the easiest to implement, and closest to V. Only problem: it makes the "bypass ignore with ',' command" feature obsolete, since the ignoring is made on walkover. If I go this route, I'll have to examine all objects more closely and make more ignore categories, since this was the main reason for having that feature in PWMAngband.

        Second system: the closest to current PW code/old system. Harder to implement: need to move auto-ID to pickup and transfer knowledge not only for items picked up, but also for items equipped directly from the floor (and I really don't like having to pick up stuff to "auto-ID" them). I'll start by this one and see how it goes.
        PWMAngband variant maintainer - check https://github.com/draconisPW/PWMAngband (or http://www.mangband.org/forum/viewforum.php?f=9) to learn more about this new variant!

        Comment

        • PowerWyrm
          Prophet
          • Apr 2008
          • 2986

          #5
          Concerning the two systems, it seems that is is the second one that is easier to implement. I simply put the knowledge transfer into inven_carry() and that took care of everything. For walkover, I need to put transfer into move_player(), but also every time a player is "moved" and lands on an object (not mentioning psychic classes that can transfer objects from their inventory to someone else's inventory with their Telekinesis spell).

          Transfer on pickup is nice, but I don't like the idea of auto-ID on pickup -- it should be immediate. And since new curses are around the corner, I don't imagine having to pick up a cursed item to get knowledge about the curse (it could be a "curse no drop" item too).
          PWMAngband variant maintainer - check https://github.com/draconisPW/PWMAngband (or http://www.mangband.org/forum/viewforum.php?f=9) to learn more about this new variant!

          Comment

          • PowerWyrm
            Prophet
            • Apr 2008
            • 2986

            #6
            Rune-based ID has now been ported to PWMAngband. I've adapted the system to work well in a multiplayer environment.

            What has been ported:
            - Add ?? inscription for unknown runes
            - Improve player screen object property grid
            - Add rune knowledge screen
            - Give messages on learning jewellery and ego types
            - Display real damage dice/base armor class if known, otherwise display damage dice/base armor class from object kind
            - Display header in red on the player screen object property grid for vulnerabilities
            - Add an extra panel for ESP flags on the player screen object property grid (press 'm' to switch between skills/history, equipment flags and ESP flags)
            - Don't notice brands on wield (only notice when hitting a monster susceptible to the brand)
            - Transfer object knowledge on walkover
            - Don't learn the flavor of jewelry with obvious properties until all of them are learned
            - Remove IDENTIFY activation
            - Remove staves and rods of Identify, scrolls of Identify still exist but are not sold in the Alchemy Shop anymore
            - Remove IDENTIFY_PACK effect (from potions of *Enlightenment*)
            - Remove pseudo-id (PWMAngband: remove PSEUDO_ID_IMPROV, make pseudo-id automatic and immediate on walkover)
            - Make dice and ac (runes) known at birth
            - Make IDENTIFY effect (scroll + spell) identify an unknown rune on an item
            - ID flavored consumables on first use
            - Make basic lights and diggers have innate not magical properties
            - Make *Slay*s have a random power or base resist
            - Learn sustains if their item also boosts the stat
            - Identify obvious effects on abort (IDENTIFY, RECHARGE...)
            - Make devices that affect monsters require a target to ID
            - Make standard body armor to-hit penalties not part of the to-hit rune
            - Port and adapt object knowledge from Angband: transfer player knowledge (automatically notice damage dice and base armor class), set ego type if known, notice artifacts, apply auto-id, "assess" objects, ignore items eligible for ignoring
            - Replace activation on Eriril by DETECT_TREASURE
            - Remove Greater Identify and Knowledge Explosion spells
            - Remove scrolls of *Identify*
            - Prevent probability travel on grids with items
            - Prevent earthquakes placing players and monsters on grids with items
            - Give Dungeon Master full knowledge of runes
            - Rename obj-identify module to obj-knowledge
            - Add rune module
            - Handle non-magical object properties with flags

            What has NOT been ported:
            - Player knowledge for store objects (objects still get fully identified when generated in or sold to store, flavors are learned when selling flavored objects to store)
            - Pseudo-id completely removed (objects still get a feeling message on walkover or when sent via telekinesis -- this may change in the future: once the system is fully playtested, the messages/inscriptions will probably go away)
            - Runes learned on buying (since objects in stores are still fully identified, it would make the shops too powerful)
            - Birth option for knowing all runes (because it makes autoID pointless)

            Time to do some playtesting, then move to the new trap system.
            PWMAngband variant maintainer - check https://github.com/draconisPW/PWMAngband (or http://www.mangband.org/forum/viewforum.php?f=9) to learn more about this new variant!

            Comment

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