Links
Tags
Creators
Details
0.9.4
Compatibility
Changes

Without Honor: NPCs, Update 0.9.4
A big update. The headline: NPCs can cast now - Iron's Spells 'n Spellbooks integration landed. Plus throwable spears from other mods, provocation, friendly fire, dialogue pauses and a theatrical death. Let's go in order.
Do You Believe In Magic?
If Iron's Spells 'n Spellbooks is installed, combat gets a sixth preset - Mage. Pick it, open the Magic screen (button on the Combat tab) and build the NPC a spell loadout - the way a player fills a book, only without the book.
- A spell picker with all the icons and school colors, search and tabs "All / Original / Addons". Every spell from ISS and its addons is picked up automatically.
- Each spell has a category: attack, defense, movement, healing, buff. The mage decides what to throw by the situation - a fireball at the enemy, a teleport when in danger, a heal when an ally is hurt.
- Power and interval - the level spread of spells and the pause between casts.
- "Spells from weapon" - if the mage holds an imbued weapon, its spells join the pool automatically.
- Spellbook from Curios - drop a book into the slot and its spells feed straight into the attack pool, even without a hand-picked loadout. In the Magic screen they sit at the top of the list as purple rows marked "from book" - you can't edit them, pull the book out of the slot and they're gone.
- The mage fights hybrid: casts from range, draws a weapon up close.
Magic: school attributes
A separate Attributes screen (from Magic) - fine-tuning of magic resistance and power. Three general stats (spell power, resistance, cast speed) and two bars per each of the nine schools: resistance and power. From -100% to +100%, zero being the same as any ordinary creature. Want a fire mage who shrugs off ice? Go ahead.
Magic: supporting allies
A mage can be told to Heal allies. Then it heals and buffs not only itself but its own - other NPCs of its faction and the player it follows. Healing kicks in when an ally is hurt, buffs when they're fine, and the NPC won't re-cast a buff that's already on the target. Works with the Mage preset.
Magic: casting in dialogue
A new dialogue action - Cast spell. The NPC casts a chosen spell once on cue: at the player (projectiles aim at them) or on itself (buffs, healing, summons). For scenes, not combat - works with any preset.
Thrower: spears from other mods (thx pedantic_jennings68)
Only the vanilla trident could be thrown before. Now the Ranged preset understands modded spears too. The NPC throws their projectile with their damage and effects, and the weapon is neither consumed nor duped. If some mod misbehaves and the throw fails, the NPC quietly falls back to melee. The list can be extended with the datapack tag wh_npcs:throwable_spears.
Provocation: no more aggro from a single poke
A setting in its own Provocation window (button on the Combat tab). Any stray hit used to make the player a target. Now the NPC tolerates it - and only turns hostile past a threshold: by hit count (3 by default) or by HP taken (15% within a window), whichever comes first. Don't hit it for a while and it forgives you, going back to its business. A separate checkbox: hits from the escorted player don't aggro at all - you can clip your companion in a fight with no consequences. A player in a hostile faction tier is exempt: they're an enemy already.
Friendly fire
Two independent safeties:
- By faction - a "Members don't harm each other" checkbox in the faction editor (on by default). Arrows, spears and AoE spells no longer hit members of the same faction. A mage can cast into the crowd without mowing down its own.
- By companion - "Don't harm the escorted player" next to provocation: the NPC's projectiles and spells won't hit the player it follows. Fire through them all you like.
Direct damage; summons are out of scope for now.
Wait action (thx thewiggleduck)
A new dialogue action - a pause before the following actions. It doesn't block: the dialogue advances right away, and the actions after Wait fire N seconds later. Works in reactions too. From 0.05 to 600 seconds.
Emote before death (thx thewiggleduck)
In Reactions you can set an Emotecraft emote the NPC plays as it dies. On death it stands a hair from dying, plays the emote invulnerably (0.5 to 10 seconds) and only then drops. A looping emote is cut off by the timer. /kill kills instantly, no scene. The totem takes priority β if it saved the NPC, there's no scene. Needs Emotecraft.
Shield pose
A shield NPC finally holds the shield like a person - the arm tucks it to the body like a player blocking, instead of sticking out sideways. And shield detection went the proper Forge way: modded shields work, not just the vanilla one.
Also fixed
- The follow "shuttle." An escorting NPC fighter would finish off a mob - and on every swing turn back to the player, jittering back and forth. Now following yields in combat: the NPC calmly finishes the enemy and only then returns to you.
- Various interface improvements and code polishing.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:z3LQpsHg:ksQUjvhS"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:z3LQpsHg:ksQUjvhS"
}

