Skip to content

Conversation

@Caladius
Copy link
Contributor

@Caladius Caladius commented Oct 2, 2025

This forces you to obtain an Enemy Soul Item before the Enemy will spawn in the world, similar to Boss Souls.

All Soul'd enemies will be invincible by default, once you obtain their soul they will take damage as normal.

  • This adds a new VB_APPLY_DAMAGE_TO_ACTOR (thanks Proxy) that is used to negate damage as needed. In the future this can also be used with Damage modifiers. (we have one currently that can be updated in a separate PR.

The goal is for this to go along with #1282 but can be played alone if desired.

Enemies Remaining:

  • Like-Like (Highly Segmented)
  • Freezard
  • Red Bubble
  • Flying pot
  • Nejiron
  • Blue Bubble

Somethings to Note:

  • - Stalchild Eyes will disappear in some situations like having a Junk Item on the shelf under it in a shop (investigating).
  • I thought I had more for here but guess not... Have fun!

Build Artifacts

Copy link
Contributor

@Eblo Eblo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would love to test, but the builds broke because of references to Matrix_NewMtx. Left suggestions for cleanup as well as questions.

Copy link
Contributor

@Eblo Eblo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thoughts:

  • Some enemies are excluded. It almost seems like mini-bosses are intentional, but some of those are included. What is the reasoning? I imagine getting locked in a room where the only way out is to defeat all enemies is part of it, but that's functionally no different from how boss souls already work.
  • CanKillEnemy must return false if the requested enemy's soul is not acquired, just like boss souls. Maybe this can be simplified with an early return, using soulMap in some way.
  • Places where enemies are a nuisance need not be defeated, such as the Bad Bat Tree of Doom, are more permissive if the relevant souls are not acquired. I don't think this is a problem, just worth noting.

Copy link
Contributor

@mckinlee mckinlee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since I was already in the code, I made note of a few things. Nothing crazy. That aside, this is really cool and I can't wait to see this partnered with the other shuffles!

Copy link
Contributor

@Eblo Eblo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure what, but something about the way this was done causes it to only work if boss souls are also shuffled. If one tries to only shuffle enemy souls, glitchless seeds will fail to generate, and no logic seeds will generate but with no souls actually in the pool.

I haven't exhaustively tested everything, but it seems like Eeno souls simply are not in my seed. Eeno drops contained a major item, but there was no way for me to defeat one to get it.

On the flip side, aside from Real Bombchus, I didn't happen upon any enemies that I could defeat without having their souls first. Octoroks and ChuChus even shrugged off ice arrows.

@mckinlee
Copy link
Contributor

mckinlee commented Nov 8, 2025

I'm not sure what, but something about the way this was done causes it to only work if boss souls are also shuffled. If one tries to only shuffle enemy souls, glitchless seeds will fail to generate, and no logic seeds will generate but with no souls actually in the pool.

I haven't exhaustively tested everything, but it seems like Eeno souls simply are not in my seed. Eeno drops contained a major item, but there was no way for me to defeat one to get it.

On the flip side, aside from Real Bombchus, I didn't happen upon any enemies that I could defeat without having their souls first. Octoroks and ChuChus even shrugged off ice arrows.

It doesn't look like the enemy soul items are added to the item pool, so the generator can't place them anywhere. Logic still expects those flags, so "enemy souls only" fails since the pool lacks any soul items, yet damage is gated on the corresponding INF flag explains why actors seem to be near invulnerable. I think we just need to mirror the boss souls block around lines 241 to 249 of OnFileCreate.cpp, maybe?

…fix up Boss Souls shuffling as it was needed to cleanly shuffle Enemy Souls.
@Eblo Eblo mentioned this pull request Nov 11, 2025
31 tasks
Copy link
Contributor

@Eblo Eblo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Performed some cursory testing and review. This is far from exhaustive, and the main reason for that is that incoming enemy drops work will impact the direction on this.

Ideally we have some visual distinction to know that an enemy is in a soulless state, but I realize finding some one-size-fits-all adjustment is easier said than done. A translucent effect would be nice, but difficult. A lazy answer would be to draw sparkles after rendering the enemy normally, like we do to distinguish progressive magic from refills, or literally nothing.

RI(RI_SOUL_STALCHILD, "the", "Soul of Stalchildren", RITYPE_MAJOR, ITEM_NONE, GI_NONE, GID_NONE),
RI(RI_SOUL_TEKTITE, "the", "Soul of Tektites", RITYPE_MAJOR, ITEM_NONE, GI_NONE, GID_NONE),
RI(RI_SOUL_TWINMOLD, "the", "Soul of Twinmold", RITYPE_MAJOR, ITEM_NONE, GI_NONE, GID_NONE),
RI(RI_SOUL_WALLMASTER, "the", "Soul of Wallmasters", RITYPE_MAJOR, ITEM_NONE, GI_NONE, GID_NONE),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since this applies to both Wallmasters and Floormasters, is there any sort of name to capture that instead of implying Wallmasters only? There's only one Floormaster in the game, so I don't think it's worth splitting out another soul.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Soul of Hands? I dont really know how to unify them lol

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants