Skip to content

Prevent grinding that arises from food clock bypasses #852

Description

@HangryHippo

Getting players to push forward is probably a good idea. Currently, the prospect of a reward from exploration in the form of items and a punishment in the form of the food clock are the means by which we nudge players forward. However, these two game mechanics can be overcome. With enough healing, players can bypass the food clock. Once players bypass the food clock, they can wait until monsters with items periodically spawn. Both the carrot and stick have been foiled. The game then changes from a "make do with what you can find" game into a "force some item(s) to drop" (i.e. force/choose a build) game.

Several solutions have been proposed which come with their own problems. Disabling healing while starving will punish non-grindy uses of healing while starving. Stopping item spawns after a certain number comes with the difficulty of figuring out the precise cutoff point.

I think I have a better solution. Roughly, check to see whether the player has positive nutrition before progressing or dispensing a reward. Additionally, as being paralyzed allows the player to pass turns without spending nutrition, also check that the player is unparalyzed.

There are two parts that need fixing. The first is wear-identification (armor, rings). The second is item generation from periodic spawns. I think weapon identification (from 20 kills) is okay since players do engage with the game.

Here's what a fix looks like for the first part (wear-ID). Add && ((player.status[STATUS_NUTRITION] > 0) && !(player.status[STATUS_PARALYZED])) to the first conditional check in processIncrementalAutoID in Time.c, before theItem->charges--;

As for the second part (items from periodic spawns), I'm not sure how to go about fixing this which is why this is a git issue rather than a PR.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions