Temple of The Roguelike Forums
Players => 7DRLs => Topic started by: jtolmar on March 04, 2017, 06:55:14 PM
You can now play it at http://noisyowl.com/herotrap/ (http://noisyowl.com/herotrap/). Or the competition version http://noisyowl.com/herotrap/7drl/ (http://noisyowl.com/herotrap/7drl/)
Original post follows. You can find the post where I announced it, and thus any post-release discussion, on page three.
I'm using this 7DRL to get back into the roguelike dev scene after a long absence (and a screen name change).
My goals for the week are:
- Make a traditional roguelike, but the very first monster kills you if you try to melee it to death.
- Show off some fancy generator tech I never got around to releasing.
- Prove to myself that I can still make something unreasonably big in a short time (I used to have a bit of a reputation for it).
As a base, I'm using rot.js and an abandoned roguelike that I was working on last year.
I also have a fair chunk of design notes, which has a great selection of monster notes and a sparse, handwavey section on item notes.
I plan to start actual development after lunch.
About three hours in. I copied all the monsters from my design doc into the game (just character/color/name/description, not implementation), did some code cleanup (notably I simplified that tutorial's TaskActor), and got to work on implementing monsters.
Monsters represented with capital letters are things you should avoid or cheese to death, and never fight in a straight battle. Monsters with lower case letters may be threatening and nuanced, but you should usually be able to beat them for free with proper application of melee bump attacks. Within both of these classes, monsters are divided into easy/medium/hard groups for how deep I want them to show up in the dungeon.
The first monster in the game is guaranteed to be an easy capital-letter monster. I've done four of those so far:
- Golems are near-indestructible and hit quite hard, but move at half speed and are easily avoided
- Krakens are tough and hit very hard, but they're confined to lakes
- Saws are tough, hit extremely hard, and spawn in high numbers, but they just bounce back and forth in a fixed path so you can avoid them easily
- Hieroglyphs are tough and hit very hard, but they're confined to the insides of walls
Here's a gif of some saws and hieroglyphs: http://i.imgur.com/JN0q4RS.gif (http://i.imgur.com/JN0q4RS.gif). So that's looking great, but the gif is a bit of a lie because I haven't updated the level generator yet and usually you find krakens and hieroglyphs stranded in places they shouldn't be: http://i.imgur.com/k7Idf7Y.png (http://i.imgur.com/k7Idf7Y.png). This will be my next priority.
Easy lowercase monsters I've completed are zombies (slow, hoardy), quails (fast, possibly overpowered), fungus (harmless, replicates, behaves closer to the coding cookies tutorial than to my plan but I think I'm leaving that alone for time), and ghosts (basically the Pacorepkin monster from Shiren). I've finished two hard monsters (wraiths and Jabberwocks) that were just statistically different from one of these.
Added the ability for monsters to bring the appropriate type of level generation with them, and added a bunch of room types to go along with that.
Now you can see Krakens in lakes and ghosts in graveyards:
And here are quail nests and the columny areas that golems spawn in: (I couldn't get a better shot because I kept getting ganked by quails in this build.)
I've also added two more easy capital monsters: Unicorns don't bother you unless you attack them, then they maul you to bits. Imps stalk you but refuse to take the last step to get adjacent to you. I'm not completely satisfied with either - I feel like the unicorn needs more personality and the imp is actually much too hard - but more tweaking will probably help.
Did some detail work on the level generator where it was bugging me. Now the first floor has lots of grassy stuff going on:
The stairs have their own rooms (though a wall may have been destroyed by an adjacent room): http://i.imgur.com/5TRa0lR.png (http://i.imgur.com/5TRa0lR.png)
And I switched the items over to this game's basic pool, instead of some other game's item pool with much higher stats. This came with a hunt for fun unicode: http://i.imgur.com/buaozpO.png (http://i.imgur.com/buaozpO.png)
Finally, I added the ability for monsters to shoot projectiles, and with that a simple animation system that I'm not going to attempt to catch in a screenshot, and with that I broke the messaging system so half the messages fail to render. Whoops. I'll get to that eventually.
New medium-difficulty monsters (capitalization matters):
And one more hard-difficulty monster, centaurs are really just fast elves.
- Trolls are entirely vanilla for now. The plan is to make them ignore weapons and fall over to most other things, but I need other things first.
- Oklob Plants are imported from DCSS. These ones don't have acid attacks, they just hit really hard and don't move. Currently since the FOV algorithm isn't symmetric they can get some unfair snipes off. I'll have to fix that.
- elves have a ranged bow attack. I plan to add a bit to their AI so they run away while waiting for the cooldown.
- Eggs just sit there unless you spend too long standing around next to them, or damage one. You can run past one without it hatching, but just barely. Even knowing the exact mechanics, I find egg rooms horrifying.
- Yellowjackets spawn from Eggs and don't generate on their own. They're almost as tough as Jabberwocks (which are hard-tier) and can spawn in higher numbers, so don't mess with Eggs.
The medium-tier monsters are getting too difficult to handle without magic items, so I can't really tune the floor difficulty (the easy floors are rough but achievable with just a sword, which seems right). I'm going to start working on item mechanics soon, though I'll also mix in more work on medium-strength monsters, because the level generator will work better if I have at least 5 medium-capital and 5 medium-lowercase monsters.
Added a few monsters. Here you can see the mess you get if you spawn Liches on floor 1 and run around a while:
New medium monsters:
And Liches are a hard version of Necromancers with an expanded summon list (includes medium lowercase and Golems). Later they'll have Brogue-like phylactery behavior.
- harpies will jump over you if there are monsters piled up behind them. This is borrowed from Shiren's Floor Dragons, but making them appear in swarms makes the effect much more common and nasty.
- infernals teleport towards you, similar to Dar Blademasters in Brogue.
- Necromancers are pretty easy to kill, unlike most capital monsters, but they summon gobs of lesser monsters (easy lowercase) and are hard to get to
I consider the details in this post to be more spoilery than usual, so if you're already interested in playing this (I'm flattered), and don't want to be spoiled, I'd skip over the quoted chunk. (Also, if this forum has a spoiler function I missed, I'd appreciate knowing how to use it.)
One of the big tricks I'm doing here, which doesn't show up in screenshots, is how I randomize the dungeon's contents. It's 26 floors long, and each floor introduces a new monster, but I have plans for up to 52 monster types (my goal for 7DRL is to implement between 34 and 44). This means some monsters don't appear each game. Instead I shuffle the monster list at the game start, and pick four Easy, four easy, five Medium, five medium, four Hard, and four hard monsters.
I want to do something similar for items, but making more than an entire roguelike's worth of interesting items is even harder than doing it with monsters. So my solution is to make boring redundant groups of items and only include one per group, thus making them no longer boring and redundant, and making the item identification game funky.
That means that I can code a fire effect, put it on a potion (Brogue's potion of incineration), a sword (flaming sword!), an armor (Brogue's armor of immolation, a bad item), a staff/wand, or scroll. But then I'd only include one (maybe two) of those in a given game. I really like what this does to the item identification game - it effectively puts all the items in the same pool so the mysteries last longer.
If anybody can think of a reasonable effect for a Sword of Telepathy, Sword of Fire Immunity, or Sword of Respiration, I'd appreciate it. They're all weird to apply to yourself when you hit something, and all too minor to make a good cursed item (unlike the Sword of Invisibility, which is awful).
Looks great so far. I'll be keen to give this one a go when it's ready
Certainly a lot more ambitious that what I'm hoping to achieve this week.
Sword of Telepathy idea: killing a monster with it grants you vision/location knowledge of that monster type for X turns?
Did enough medium-difficulty monsters to satisfy the level generator. A few more would help, since right now it's picking five random choices from a list of five, but it's enough for me to be working on playability now.
- Faceless - can only see you if you're moving. Waiting for it to go away was tedious with the old wandering behavior (random adjacent) so I replaced that with purposeful wandering (A* to random tile). Then it wasn't hanging out in its creepy columny area well enough, so I made them patrol an area. Then I replaced the wandering AI of most monsters with variants on that, because it's awesome.
- lizard - a big poisonous lizard. Currently separate applications of poison stack, which is brutal, and I probably need to change it, but I'll wait until I have items so I can be actually playtesting. I also made Yellowjackets poisonous.
- ur - a shaggy humanoid. They have a knockback attack that sends you flying quite a distance, possibly into more trouble.
The Faceless ended up being quite a bit easier to avoid than I expected so I swapped its slot with the Imp (a former easy-tier monster that was too cruel).
Looks great so far. I'll be keen to give this one a go when it's readyThanks!
Certainly a lot more ambitious that what I'm hoping to achieve this week.
I feel like every 7DRL should have exactly one ambitious thing, and coding a new engine from scratch (which it sounds like you're doing) counts. One of the more popular ambitions is making a big genre twist, and I don't think my "capital letter monsters" concept counts because I finished it in the first three hours. So my ambitious thing has to be content.
Sword of Telepathy idea: killing a monster with it grants you vision/location knowledge of that monster type for X turns?That's great, I like the idea of picking monster types based on kills. It also gives me an idea for a Sword of Clairvoyance - it gives you vision of the dead monster's nest.
Fixed some bugs with hieroglyphs and saws that cropped up at some point (saws stopped attacking the player and I'm not clear why they worked previously). Hieroglyphs and Krakens will now attempt to teleport to a nearby valid square if they've spawned wrong. That'll be fine until I make some effect that's supposed to strand them.
I created an "effect" system to hold things items can do, made items call into the proper part of their effect, created the Blink effect, and generated some potions and scrolls with Blink. The potion actually worked on the first try, I was quite surprised. The scroll initially tried to repeatedly blink things that landed in the effect radius on the first try, which was confusing to look at, but fairly easy to sort out.
Scrolls of Blink are pure chaos. Here I tried to get a before and after of using them to shuffle Krakens around between different lakes, but forgot it'd send me to the other side of the map too. I'm pretty sure the Kraken in the second shot that doesn't look like it moved is actually the Kraken that was stuck in the 1x1 lake in the first shot.
I still need to wire armor, weapons, staves, and scrolls to their effects. Armor and weapons will be fairly easy. Staves and scrolls need me to make a targeting UI which is more of a pain.
I haven't done the generator or item-id portions, since I only have one effect. The generator portion looks pretty straightforward, item-id looks fiddly. Once I got all the infrastructure in place it only took about an hour to make Blink, though, which is fairly encouraging. An hour a piece would be too much, but this sort of thing tends to accelerate a bit as you have more code to play with.
Just couldn't take being ganked by birds anymore.
Just couldn't take being ganked by birds anymore.
Awww. I was finding that amusing :)
I was a little worried about completing the 7DRL and decided to take a detour from items and finish off a minimum number of enemies. The plan is to get barely enough enemies for every region and make going down the stairs on floor 26 abruptly win the game. Once that's done it's technically a complete game and I can focus on making it actually winnable.
New hard enemies:
This puts the hard-lowercase count to 4 (with wraiths and centaurs), which is my quota. That means just two more hard-capital monsters and a win screen to call this a "game."
- ogre - they like to hit you on the head with their clubs. Dizzying attack
- vile - a time gremlin. Killing one slows everything within a 5-tile radius
I need to do something to make status effects easier to understand; right now it's very opaque. I'll probably note them next to the HP display. Dizziness sometimes steals your turn, and I don't have anything in place to show what's happening in the interim, so that's pretty confusing too. I'm likely to leave that alone for 7DRL though.
Awww. I was finding that amusing :)I was having fun complaining about them. But I decreased their attack from 3 to 2 and they're still the most dangerous easy-lowercase monster by a fair margin, so I think I made the right call.
Added a wizard mode. It makes everything explored/visible, makes you invincible, allows you to go downstairs without stairs, and turns the @ sign purple. It's not a final feature, but it's going to make testing lower floors a little easier. So if you see any screenshots with a purple @, know that I'm a cheating cheater who cheats.
I figured out a simple generator change that will help give lower floors a different character from the rest. You may have noticed that the game is loosely on a 5x5 grid. I now randomly skip an increasing number of the grid's filler rooms as you go down in the level. Nearby rooms will claim the missing territory and get bigger on their own, because this generator never actually relied on there being a grid at all.
Here's the fourth or fifth floor (who knows), first before the change, and second with the effect cranked up all the way.
Rough sketch of what a dungeon quail looks like. So we're all on the same page. (Also because I enjoy trolling my ornithologist friend.)
Finished the last of the monster quota! New Hard monsters:
- Phantom - A fairly generic capital-hard monster, rather like a Troll, but it appears like another monster until you damage it or it attacks. Since the monsters in this game mostly have unique behaviors, it's actually rather easy to see it coming if you're paying attention.
- Exchanger - An evil wizard who mastered transmutation magic. Fairly fragile for a capital monster, like a Necromancer. Repeatedly casts Polymorph on the weakest monster it can see. This is basically the most evil thing imaginable. It needs quite a bit more polish but I think it's good enough to ruin someone's day, which is all I really need here.
A shot after wandering around in a room full of exchangers and zombies for a while:
Also fixed the message bug (poorly). You can't see that though since I'm only taking screens of the left half of the game so things fit in a forum layout.
Hero Trap now has a(n excuse) plot and a victory screen. You can win (ignoring that my HP is usually well into the negatives by the end even using wizard mode to descend straight through the dungeon), so now it's a real game.
I want to do a bit of playability stuff next - description screens, showing current status effects, making better use of my side panel. And then more items, even though I keep saying those are next.
That quail is BADASS!
Didn't get as much done tonight as I wanted. I might "cheat" and take a day off work later this week for extra time.
Did about half of the sidepanel rewrite stuff I wanted. Multi-pickup still goes into a full screen window. I might swap the game to a one-item-per-tile system rather than bothering with that (Brogue and Shiren, my main influences, both get away with it). Didn't get to targetting UI, which is needed for staves and descriptions.
Implemented "flee" AI behavior using slightly sillier techniques than I wanted. I could do better if I was using my own pathfinding instead of rot.js's, but I'm trying not to get too potholed on technical purity here. It does actually accomplish its goals a large percent of the time so I can't complain too much. "flee" is the critical component of "harass," an AI behavior that toggles between hunt/flee based on whether a blast (summon, exchange, or bow) is on cooldown. This makes elves, centaurs, Necromancers, Liches, and Exchangers all much more clever.
I did triage my item list. I identified a list of nine simple item effects (five in a pinch) that would make this a functioning game, and I could balance it by cranking up their generation rates.
That quail is BADASS! :D
Did the description UI and panel.
I should update the quail description.
Made targettable items. It's connected to the UI via a sea of spaghetti code, but the API it presents to the items is fine.
Got a little sidetracked by level generator tweaks. I made it so floors get both branchier and more full of dead ends as you go, which was a really quick change using already-existing code. Then I tried to make the stairs spawn far from each other, which was a bit of an odyssey, and there's some things I'm not proud of in there, but it works.
I planned on doing quite a few items tonight. Hopefully it's faster now that everything is in place.
There's certain moments in games that become rights of passage for their players. This game just grew a new one, making three.
1. Get killed by the first monster even though I told you not to.
2. Get ganked by quails.
3. Find out what a Sword of Blinking or Armor of Blinking does the hard way.
Finished teleport items. Teleportation longer range than blinking. But more importantly, the sword of blinking and sword of teleportation have different interpretations about what sort of behavior they should have.
Finished healing items. The scroll of healing is actually one of my favorite items in a roguelike - it heals everything in LOS and is about as effective as a potion of healing. Which is pretty nearly strictly worse, but it's an interesting problem, and if you find a scroll of healing that means you won't find any potions of healing this game and you'll just have to deal with it.
Half-finished poison items. I wasn't really expecting these to be the thing that exposes a hundred bugs. I had enemies that stuck around on the map in a zombie-state after dying, a large variety of crashes, and I definitely need to fix status stacking because some of these items are silly.
My goal for last night was nine (not four) items and pieces of item identification/generation, so I'm behind schedule. The plan for later today was gasses and fire (Brogue-ish rules). I may skip those to catch up, though I think that actually causes more problems down the line.
I stopped reading the thread after a while because it got too exciting and I want to wait to play the game to find out more. Everything here sounds amazing!
It also looks amazng! These screenshots are truly gorgeous.
Can't guarantee they go into the game, but I could still use suggestions for what a Sword of Fire Resistance or a Sword of Levitation does. Granting the intrinsic to the wearer is taken, and applying the buff each time you hit something is boring.
I stopped reading the thread after a while because it got too exciting and I want to wait to play the game to find out more. Everything here sounds amazing!Thanks! PS: Love the podcast. One of the episodes - where I was mentioned under an old screen name for something I forgot I did - was part of why I decided to do 7DRL this year.
Also obviously the game's title is taken from an episode.
It also looks amazng! These screenshots are truly gorgeous.Thanks! It's ascii so anyone can do it, here are my secrets:
1. Use a modern font and a large size
2. Force square tile aspect ratio
3. Pick a really good color palette. I'm using DawnBringer's 16 color palette: http://pixeljoint.com/forum/forum_posts.asp?TID=12795 (http://pixeljoint.com/forum/forum_posts.asp?TID=12795)
The large font is helped by all the work I've put into making a generation algorithm that performs alright for small dungeons. But I think the biggest thing is that DB16 is cruise control for pretty.
Added natural life regeneration (yes it's been missing this long) and got to floor 10 without items. So the game isn't totally impossible.
Added the level generation / item identification pieces to:
- Associate a base item type with an effect and an unidentified description, combining properties (orange potions have orange glyphs!)
- Figure out the spawn rate of that new item
- Distribute that item in the right quantities to the correct floors
Items theoretically have identified/unidentified descriptions but nothing actually toggles the identification bit yet. So you can learn that a milky potion is poison the old fashioned way and write it down. But I would prefer to be kind and use-ID everything pretty quickly here.
I'm going to take a bit of a break and try to do a second round of development tonight.
Added gasses. Brogue-style. Mine generally last a lot less time than Brogue's, though in many other respects they're very similar.
b stands for something I stole from Brogue.
Zombies got you surrounded?
I know, use a scroll of immolation!
(Yes I died to the resulting inferno.)
But square fonts have own disadvantages - for example, they are not looking good as text, due spacing. I see libtcod roguelikes with square fonts that spacing between letters was just too big - i t i s j u s t u n co m f o r t a b l e t o r e a d s u c h a t e x t . Altought, seems that your font is very readable as text.
That colour palette is pretty nice, I never thought about limiting number of colours and tones.
Added damaging item effects - blasting, cleaving, fire. These probably need tweaking. Also I've been neglecting animation and message queues on all the effects, and they really need it.
Globally lowered the monster spawn rate. I might change it back, but previously floors 4+ were really crowded.
Remaining engine work is the identification system and reworking statuses. Then it's all content and polish. The plan was content tonight, polish tomorrow, and last minute panic / polish / packaging it up on Saturday morning. So I need to squeeze some engine work into there somehow.
But square fonts have own disadvantages - for example, they are not looking good as text, due spacing. I see libtcod roguelikes with square fonts that spacing between letters was just too big - i t i s j u s t u n co m f o r t a b l e t o r e a d s u c h a t e x t .That's true. And indeed, large blocks of text in my game look like ass. But the majority of the game isn't these so it's an acceptable tradeoff.
A better approach would be to switch back and forth between console style and variable width, which I'd consider if I was writing my own rendering engine, but I'm not rewriting rot.js this week.
Caught up on effect animations and messages. Added item identification and caught up on those messages. Phew!
Rewrote the way certain messages are broadcast - instead of the 5-radius thing from the Coding Cookies tutorial, it now checks the entity's sensory mixin.
Rewrote the FOV actually displayed to the player. Instead of computing a FOV that happens to be the same as the player's, it checks the player's sense mixins. This will be important when I start trying to figure out how clairvoyance works. In the process I accidentally made the game incredibly slow as it computes full FOV from the player to check each tile. I added a dumb cache instead of actually fixing this, which means the game is now faster than before I introduced the bug.
Way behind on my plans to do content stuff tonight. But I did fix up statuses, messages, a bunch of polish things, and get vision-enabling status effects working.
This lead to the creation of one of my new favorite items: the wand of clairvoyance. This is my favorite in the same sense as a scroll of healing: it's actually worse than common items in sensible roguelikes.
Here's a screenshot. I'm about to zap my wand at the target.
And now I can see around that corner!
Went through my polish list and realized most of it was already done. So I guess tonight is the pile of content night.
Made unicorns a little less dumb. I was also going to make all pathfinding smarter but the rot.js A* only supports weights of 1 even though it's like a three line change to support higher ones. Going to avoid rewriting it or patching the library.
Tweaked oklob plants. Now they're weaker in a lot of ways, but briefly paralyze you.
Switched the entire game to one item per tile. I use Shiren-like rules (dropped items go somewhere nearby) instead of Brogue-like rules (dropped items swap). It's probably possible to teleport an item through a wall.
Removed the stairs keys in favor of stairs just activating when you touch them. Made stairs a little safer in various sneaky ways. Completely broke the game's messaging system (AGAIN) and wasted heaps of time on that.
Added several new monsters (D, B, j, s, p, y, r). Most of those are for deeper depths. I now have just barely enough monsters that every monster in the game is non-guaranteed.
I think all that remains at this point is:
- Package it up, make sure my server is still working, all that crap.
- Write as many items as I can in the remaining 16 hours (which includes when I should sleep).
- Balance test. (lol like that's happening in any real capacity)
It's a little later at night than it should be, but the item effect count is up to 15 and it's actually starting to feel like a real game.
I've seen a couple of disconnected dungeons pop up recently, which is concerning. I have an incredibly cheesy solution in mind if it comes to that though.
Okay, you can play this game now!
It has been tested in Chrome on someone's macbook and my janky outdated Linux laptop. I know that I did something IE doesn't like somewhere along the line. It's also possible that a missing unicode glyph makes something invisible in some other environment; I only had to swap one for my friend with the mac but maybe something else has a harder time.
I still have a little bit of time left and reserve the right to do bugfixes, balance tweaks, or add an entire new item in that time as I see fit.
Also I'd like to note that I got to floor 14 on roughly this build (actually harder) after a few tries. I'm not sure if it's actually winnable (floors 20 and deeper) are ridiculous, but I think it might be.
Edit: That's it, time's up. I did a few bugfixes in that last hour. Here's the competition version (I may modify the other version eventually). http://noisyowl.com/herotrap/7drl/ (http://noisyowl.com/herotrap/7drl/)
Hit depth 15. So that's the new number to beat.
I've found enough crash bugs in the 7DRL version (http://noisyowl.com/herotrap/7drl (http://noisyowl.com/herotrap/7drl)) including a few crash bugs that I'd recommend sticking with the one I'm updating (http://noisyowl.com/herotrap/ (http://noisyowl.com/herotrap/)).
As far as I know/remember, the only updates have been bug fixes and a really simple change to enemy scheduling. I'll make another archived patch before trying anything that involves adding content.
Also, I was wondering if anyone would be interested in a design postmortem.
I've now forked the game into three versions:
- Current (/herotrap) - Unrestricted development. It even has a changelog.
- 7DRL (/herotrap/7drl) - Bugfixes only. I even went back and reverted my monster schedule improvement.
- Unpatched (/herotrap/7drl/unpatched) - Original 7DRL as of the deadline. You can crash the game by reading a scroll of blink to a Hieroglyph, most of the items of cleaving break the menu, and more!
You don't need to know any of these things, because there are links between them. Except on the unpatched version, because I'm not even touching the container page.
Finally, Rogueliker was kind enough to post a video of him playing the game! https://www.youtube.com/watch?v=XCd_I-hAqkg (https://www.youtube.com/watch?v=XCd_I-hAqkg). Exciting. Additionally, both myself and a user on reddit have reached floor 22. So even the 7DRL version is probably beatable, albeit really hard.
I wanted to ask: can we expect to see a monster similar to Brogue's monkeys? They could make quite a nice easy monster.
Thinking about it, a monster that can polymorph items / teleport items from inventory, but is slow and thus can be generally avoided, could also be an interesting encounter. :D
(BTW, I'm the same kangaroo from reddit. :) )
Haha, I think you haven't played recently, ;). I added four item-hate monsters yesterday, and monkeys are among them!
Polymorphing items is interesting as an item destruction mechanic. I haven't done item destruction yet (even the classic item-destroying monster I just does something else), though I'm not completely opposed to it. Shiren The Wanderer has a monster that turns your items into riceballs, and it's one of my favorite roguelike monsters. However, in Hero Trap specifically I think an unlucky roll on an item destruction could make the game unwinnable really easily.
Welcome to this forum! Definitely looking forward to your feedback on some recent changes (new monsters, troll nerf).
Finally beat my own game.
I think my last balance patch made a few mid-to-late capital monsters too easy, as a lot of this win came from stats. I'm also thinking of removing an armor tier, as currently mithril is just a little too good.
Haha, I think you haven't played recently, ;).
I'm caught red handed. :P Yeah, I was travelling these past few days - it's great to get yourself outside for a night or two. :)
Shiren The Wanderer has a monster that turns your items into riceballs, and it's one of my favorite roguelike monsters.
I haven't played Shiren, but that does sound good. Monsters whose attack can sometimes actually be beneficial to the player are cool. :) In Ragnarok/Valhalla, for example, there is a mage whose spells polymorph your inventory - a true disaster if you get your equipment and priced scrolls tunred into junk, but you can also drop everything but junk and do some third-party assisted polypiling for better items. I personally like such trade-offs.
However, in Hero Trap specifically I think an unlucky roll on an item destruction could make the game unwinnable really easily.
Yeah, that's definitely true.
Finally beat my own game.
Wow, congratulations! :)