i7 / kerkerkruip

Kerkerkruip - the interactive fiction roguelike game
kerkerkruip.org
83 stars 13 forks source link

Shimmering weapons not done yet #366

Open mciul opened 9 years ago

mciul commented 9 years ago

I just realized that the shimmering weapons intended for Arena of the Fallen are missing their most special behaviors.

Many special weapons like the minotaur's axe and the sword of light have rules that apply only to them. Making a copy of them will not allow the rules to work.

Some ideas for solving this problem:

I've been reading The Codeless Code and I'm sitting here thinking, "what would Java Master Banzen do?" This is exactly the kind of dilemma they talk about all the time in there.

Anyway, whoever has any thoughts about solving this, please chime in!

mciul commented 9 years ago

I think I'm going to get rid of shimmering, at least temporarily, and yank weapons from the dungeon if anybody wants them back. But I'd still like to hear from everyone.

VictorGijsbers commented 8 years ago

What's the status of this? I can see the problem with shimmering weapons. I can also see the problem with reuing weapons from the dungeon, because (a) the player might be using them, and (b) all kinds of things might have happened to those weapons -- including size changes and material changes...

mciul commented 8 years ago

I'll look into it.

mciul commented 8 years ago

Currently, all code for shimmering weapons has been removed. I have some TODOs in my tests to check weapon behavior in Arena of the Fallen, etc.

It looks like the intended behavior is that weapons disappear from their current location when someone is revived in an arena. I'm not sure whether weapons from all possible starting kits do this or just the selected starting kit. That would be a good thing to test. Here is the phrase that generates text when a weapon is removed from somewhere else. The way it's phrased tells me this was adapted from the shimmer-weapon code:

To decide which object is the version of (item - a thing) available to (guy - a person):
    [now item is the original version of item;]
    if item is npc-owned and item is not enclosed by guy:
        if the location of the item is the location:
            say "[The item] [flicker] out of existence[if the location of guy is the location], and [reappear] in the possession of [the guy][end if]!";
        remove the item from play;
    decide on item.

Another thing to test would be to see if this phrase ever runs on something that is not npc-owned, and find out what happens then.

mciul commented 8 years ago

I just got an idea for how we could handle shimmer-clones more gracefully: Instead of all the "random readied weapon enclosed by the global defender" type of work we've been doing, add global variables for "the attack weapon" and "the defensive weapon." These could be set up by rules that handle shimmering and replace clones with the originals.

What do people think? Is it worth it?

mciul commented 8 years ago

You know it just occurred to me that I've already implemented a "current weapon of [person]" phrase. It might be less work than I thought to do this. But I'll still need to look into it...

It would have to apply to clothing too, though. Maybe there still is a long way to go.

mciul commented 6 years ago

What if we made the adamantine blade a kind, and just gave one to everyone?

VictorGijsbers commented 6 years ago

That would be good. For most enemies, this could be a substantial improvement, but that's okay for something like the Arena of the Fallen.

mciul commented 6 years ago

Cool. And by everyone, I meant "creatures who usually get a non-natural weapon"

VictorGijsbers commented 6 years ago

Yes, of course. I took that as implicit in the proposal. ;-)

("The ravenous armadillo has found a crazy scientist willing to replace its bony tail club with an adamantine sword!")