NHP characterization, free camera rotation, prepping for mod support
Heya! Still at it with another monthly update. Highlights from this month include:
- Fixed a bug with uploading combats to mod.io; the files were being uploaded with invalid filenames. If you uploaded a combat in the last two months, you will likely need to re-upload it for other people to be able to play it.
- Lots of new support for NHPs being more active in narrative. They can be added as speakers in dialogue & now have their own Dossier and barks (ie short commentary on things that happen in combat).
- Free camera rotation with the middle mouse button. Wow.
I’ve also started the process of rearranging things internally to prepare for adding official mod support. Unfortunately, this means that many of the current mods will almost certainly be broken as I change systems to be more flexible and standardized. Some notes for updating your mods at the bottom of the changelog.
Content
New batch of mech tokens from Gen! Say hello to the Goliath, Operator, Scourer, Scout, Seeder, and Specter.

Character Sheet / Roster
- can set custom hologram colors for NHPs

- NHPs have their own dossier with bark lines. Add second dossier tab with biography open text field.
- barks are able to refer to their copilot (the human for NHPs, the NHP for humans)
- wrote default barks for all NHPs
- fix pilot token color auto-assign to outfit & setting skin color
- fix available pilots in the roster not updating as they get selected and deselected
- can add custom assets in the user content folder for mech frames and portraits

Mechanics
- Flying ignores engagement and can move through enemies. If we were on tabletop, you’d have enough degrees of freedom in the Z-axis to avoid most other characters, so this handwaves and assumes you’d be able to do that.
- Increase Unstoppable Force damage from 20 => 30, decrease ground block health from 20 => 15. This is one of those very rare times we’ll change a number from the CRB; it didn’t feel right that Unstoppable Force only destroyed a single ground block when stopped by ground voxels. Destroying two blocks and being able to step up to a third one means that a character can get through something 2 blocks taller than it most of the time.
- Can no longer try to jumpjet/lunge onto invalid endpoints to be able to get shunted extra tiles (sorry speedrunners)
- Restructured how False Idol works; now triggers and forces saves at the start of actions instead of everybody on the map instantly. Should also hopefully address a hard crash.
- autocooler is unique
- I learned that clearing meltdowns was errata’d to be a full action, not a free action
- cannot use free boosts while dazed
- can call Grease Monkey III supply drops even when mech is destroyed
- Deep well heat sink doesn’t prevent mathur stop from bringing you back into the DZ
- Insulated trait correctly protects against self-inflicted burn
- Scout’s rebound scan stripping hidden correctly triggers Mastermind
- Fix all statuses sometimes getting cleared (eg a Toku’s exposed) when a buff is expended (eg roland chamber)
- remove accidental +1 attack bonus for CPR
- Hive harrier maniple damage no longer applied to the entire map
- fixed jericho cover not providing cover (oops)
- Recalibrate tiles hit with blast effects, elevation-wise. Caltrops and whitewash sealant respect elevation and can wrap around setpieces.
- maneuverability jets count as an EVA system, update Kai Bioplating text to make it clear that its EVA is also intentional
- moving prone drones clears prone for them
- being at 10+ elevation no longer allows you to see through out-of-bounds walls
- safety checks at the end of every turn + round to make sure characters are in valid spaces, which should let you recover from the still-unreplicatable bug where they sometimes clip out of bounds
- knocking back a unit who’s against the edge of the map doesn’t cause them to rebound and be able to be moved in any direction
- black witch CP only ticks up once for AOE attacks
- napoleon can activate flight systems (including RBJJ) while its trueblack is up
- Summon now works even when the target is also blinded
- fix ghast nexus misses not triggering Relentless
- Turret drones count as doing the damage from their owner’s reaction for the sake of abilities that care who did damage.
- restock drone is deployed adjacent, not to sensors
- fix whitewash sealant spray not being able to target units (or stacks of units)
- Crush Targeting (and a handful of other tech actions) now correctly blocked by iceout drone
UI/Graphics
- added free rotation of the camera (default middle mouse button)

- New Omninet (prev “Community Creations”) page to manage and delete downloaded content
- fixed not being able to select + start turn for exiled units
- larger battle log that expands with screen size
- skip showing damage effect on wrecks
- investigator line shows cover
- payloads can look like any setpiece; can show 3D unit meshes in the UI
- stormbending no longer triggers a prompt for each hit target in an AOE
-
flash lock no longer queries if you want to use it for every step of the forced movement
- Archer Flush Out uses correct text for its choice
- fix double line fx for projected shield
- brace prompt says “heat” instead of “damage” when you’re getting hit with heat
- rapid boost jump jets no longer claims that it’ll be able to boost you through an out-of-bounds wall
- can’t accidentally mark Stabilize prompt/choices as “don’t show again”
- fix infinite range attack glitch for any multi-target ability
- Can no longer try to jumpjet/lunge onto invalid endpoints to be able to get shunted extra tiles (sorry speedrunners)
- hyperdense armor doesn’t show deactivate option until it’s activated
- don’t play AOE fxg for weapon attacks unless the weapon is actually an AOE
Editor
- added events to add and remove blocks/setpieces/doodads from maps
- added events for setting barks, full repairs, and and clearing statuses
- added event to toggle weather on and off
- new trigger activation to proc when you set a value in the combat state
- Added “set state” stage directions for modules & combats so dialogues can modify state directly
- added module signal receivers that can be queued up by Trigger moments or in conversations


- dialogue speakers can now be NHPs
- can set starting facing of units
- better undo/redo behavior for module editor & dialogues
- fix a number of issues with 5-person dialogue layouts
- AI doesn’t try (and fail) to deploy in zones with no tiles (ending up at 0,0)
- the first ramp (of each kind) you place down in the editor now correctly disappears when deleted
- fix nametag = NONE not being serialized
Internals & Notes For Updating Mods
- It now skips loading invalid licenses (such as from no-longer-existing mods) instead of crashing
- Updated CatalogRing to not have hardcoded manufacturers, and can handle multiple pages of overflow for any ring.
- Refactored some master-list enums into StringNames so you can add your own without modifying the definitive list. Anywhere you may have been typing things with one of these enums, they’re now just StringNames:
- Buff.BONUS_SUBTYPE
- Buff.TO
- ReactionBus.TRIGGER
- Lancer.WEAPON_TAG
- Lancer.STATUS
- Lancer.MOUNT
- There’s a python script named “update_enums_to_stringnames.py” that you can run to automatically update any resources you have from the old enums to the appropriate StringName.
- Added new MountType resource that defines the rules for a specific mount type. You will have to manually update any new frames’ mounts to point at the new resources that define the mount type.
- renamed MechMount to MountCore
- If you were using context.category, you now probably want to use the typed category_int or category_str as appropriate
- BuffSkillSave mod_type property renamed to bonus_subtype
- Lancer.DAMAGE_FLAG -> EventUnitDamage.FLAG

