1. Spellmasons
  2. News

Spellmasons News

New Champion Modifiers!

Update v1.49.3


New champion modifiers, a new spell that allows you to sell your unwanted spells for more SP, and lots of fixes and balancing.

Changelog

  • New Content

  • Add 3 new Champion modifiers: Curse Immunity, Unstable, and Double Damage
    Thanks Hex Obsidian for the "Displace" Champion Modifier idea
    Thanks Xulqulyat for "Curse Immunity"

  • Add "Sell" spell which allows you to exchange spells for SP
    Thanks to @Vintage the skulldog, @Xulqelyat, and @Cake
  • Balance Changes

    Remove random discount on Runes.
    Based on community feedback, discounts encouraged un-fun min-maxing where players would wait for the perfect discount, leading to regret when buying without one. Instead, we'll focus on providing more ways to earn extra SP.
  • Optimizations

  • Improve Siphon Spell (Bogiac's Spells mod) to not lag the game

  • Community Servers now have a unit and pickup limit (1000 and 500 respectively) to prevent crashes affecting other players.

    If the limit is reached, dead bodies will decay to make room for new units; if there are no dead bodies, extra units beyond the limit will be merged. I believe this will result in a happy medium of non-crashing servers and also not affect the gameplay for players who want to push the game reeeeeeally hard.

    Self-hosted servers (LAN or otherwise) have no limit and you can push it to the absolute limit of your available CPU and memory :)
  • User Experience (UX)

    Show mana cost for clones of taught spells
    Thanks @Brian for the suggestion
  • User Interface (UI)

    Improve mana badge icon
  • Major Fixes

    Determine rune cost on client
    Fixes "runes being undone" issue in multiplayer
  • Bug Fixes

  • Prevent Connect from targeting already targeted units (improves spell effectiveness)
  • Dead units no longer block spawning
  • Clones now use mana when casting
  • Fix audio for Ancient
  • Prevent Goru and Priest from resurrecting decoys, which confused players who assumed decoys were allies
    Thanks @Yasu

v1.48.1 Hotfix: Fixes broken Deathmason, spawn points, and more

Welp the most recent build broke a few important things, but fortunately they are now resolved on v1.48.1!

The biggest fix:
Multiple places that needed to find spawn locations such as Deathmason portals, summoner teleport, summoner minion spawn locations, changeling rune and more were broken.
This is now fixed.
Thanks @Godspeed, @Xeno, @Bogiac, @Falontani, and @Haze for reports

fix: Allow cloning pickups multiple times
fix: space in save name ends turn
Thanks @Haze

fix: Death Wager to work when
greater than full HP.
Thanks @Xulqelyat

fix: Book glow to only occur
when player has stat points.
Before, DareDevil would make the book glow which was an obnoxious exception.
Now it will only show as glowing
if you have points unspent.


Also I've been trying to add some "Juice" to the game and design to improve the "Feel" so there's a few improvements here:
  • Add glow to prediction circles
  • Make unit outline size relative to zoom so the outline doesn't look super chunky from far away and super thin when close up
  • Add drop shadow and movement to cards
  • Add subtle movement to the main menu characters


Thank you everyone from discord for reporting these significant issues!

Intelligent Clones!

The new "Teach" spell allows you to instruct any cloned Spellmasons to use a spell combination for their default behavior!
Add "Teach" to the start of a spell combo and the rest of the spell will become the new spell of any targeted Spellmason NPC!

New mod: Bogiac's Spells!

Vastly improved FPS for the following Target Spells (especially when targeting TONs of units):
optimize: Clone FPS
optimize: Target Similar and Target Kind
optimize: Connect

Improved mod API
mod-api: Expose Obstacle in the API
mod-api: Expose seedrandom in the rand export for the API
mod-api: Add Upgrade.ts to spellmasons api
so that modded spells can grant other spells to player
Thanks @Rosan
mod-api: onLiquid event
The onLiquid event is called when a unit either first enters liquid, starts a turn in liquid or exits liquid.
For the first two scenarios `currentlyInLiquid` will be true, when exiting liquid, it will be false.
This is for the modder Rosan!
admin-toolbar: Add hotbar shortcut to give all cards
from a mod

Other Improvements
juice: Improve resurrect animation with outer glow (lightsaber style)
juice: Add a small pause after merge
and swap so you can take in what just happened

fix: BountyGolem's not triggering bounties
when they kill an enemy with a bounty.
Thanks Scojbo!

Update v1.45.2


This patch contains LOTS of FPS optimizations and bug fixes! There's still more optimizations on the horizon but I wanted to get these into your hands!

Optimizations:
- Optimize: floating text so if there are more than 20 of
a single kind it will just aggregate a message
Thanks Xulqelyat!

- optimize: Target Circle

- optimize: Target Column

- optim: Throttle skybeam
This massively increases efficiency for when lots of enemies are teleported to the same place all at once.
Hugely reduces lag.

- optimization: Update server to run entirely on bun.sh
rather than just websocketpie (this should make many things on the server faster)

Gameplay Balances:
- balance: onKillResurrect Rune
to make it less high %. It was way too high (50% max is too much)
and you could get there too cheaply.
Thanks Xulqelyat!

- balance: Exploit: Repeated self rez for infinite mana
Prevent resurrecting player units more than once in one turn to disallow infinite mana exploit where resurrecting yourself gives you mana

- balance: Change Death Wager cost
"Reset all spell costs back to their default. Sets your current health to 1. You must be at max health to cast. This spell must be cast alone."

So it will no longer affect max health (no permanent effect).
I think this will make it much more viable and strategic.

fix: Always updateCardBadges after cast so spells like DeathWager that affect card costs will show the proper badges.
Thanks Jace, SquishyFish, Monarch and Xeno!


Bug Fixes
- fix: Un "frontload" plus radius
because it is in contradiction to how the spell's copy describes it and also users may want to use it more surgically.
Thanks Darth_Dan!

- fix: last will to only notify if it's able
to spawn a potion.
Thanks Darth_Dan!

- fix: prevent projectiles from colliding with caster
(because you can step in front of your own stream of arrows)
Thanks Xulqelyat!

- fix: Prevent infinite recursion with takeDamage events
Once the takeDamage events start to process, any further damage cannot retrigger takeDamage events
This ensures that a unit's onDamage events can't reflect damage back on itself which would cause infinite recursion
Removes `hasRedirectedDamage` which is no longer necessary due to this new method of `takingPureDamage` which covers
that case too
Also fix prediction units from having a ref to themself via prediction copy, only real units should have that ref.
Thanks Xulqelyat!

- fix: Prediction purify from actually removing
soul shard haver from units when soul shard owner was hovered
with prediction purify.

- fix: Far Gazer not showing stamina change on upgrade

- fix: Res immune applies to players only

- fix: Update mana badges when clearing
queued spell.

- fix: Logging death on prediction instead of only on real
Thanks Darth_Dan!

- fix: Increase potion spawn radius on alchemist so it
doesn't spawn on top of you

- fix: Increase spawn radius for purple portal
so that it doesn't spawn too close to you causing it to trigger immediately
In multiplayer, this made the game advance as soon as you cast the last kill spell.
Thanks @Jackson

- fix: findValidSpawn to use hex
so we don't get unexpected far-away clones

- fix: Remove "Choose a place to spawn" if player is already spawned on load

- fix: Prevent competing Goru's from using each other's
primed corpses.
Thanks FfrankF!

- fix UI: Unit attack range circle not moving with them

- fix: Server Loop: "Could not find valid spawn..."
To address infinite loop that reported 'Could not find valid spawn point in radius'
over and over, if no spawn point is found just return the center.

- fix Server Crash: If headless has to emergency exit force moves
clear all force moves so that they don't continue to emergency exit next time the function is called.

- dev: Drastically speed up starting up headless server using bun.
- fix: Save remembers camera location

Performance Optimizations!

Backwards Compatibility warning
Some of the optimizations in this update are not backwards compatible with
old save files. If you still want to play on an old save, you can do so by
right clicking on Spellmasons in your Steam library, choosing "Properties" >
then "Betas" then v1.43.4 and restart Steam. This will ensure your client is
on the previous update instead of this one.


FPS Optimizations

The game now runs a lot better when there are tons of units on screen.
A few notable changes went into this:
1. Individual sprite outlines have been moved to outline the entire unit container.
Not only does this look much cooler in crowds but it also makes a MASSIVE difference in
FPS when there are over 1000 units on screen. If you still want individual unit outlines
(optionally with different colors and custom thickness, it is still available in the Accessibility
2. Dynamically colored sprites (such as Blood Golem, Blood Archer, Dark Priest, etc) now have their
own sprites instead of being dynamically tinted at runtime. This saves on FPS.
menu but it will slow the game down when there are many units on screen.)
3. Spellmasons is constantly predicting what will happen next turn. When there are over 1000 units
on the screen, this would really bog down the FPS. Significant prediction enhancements have
been made for enemy unit targeting to resolve this issue.
4. Card mana and health badges are no longer updated when predictions run. This was a totally superfluous
function call left over from long ago and will improve FPS. They are still updated when they need to
be like when a spell is added, removed, etc.

Other changes:

Content: New spells "Give bounty" and "Target bounty"

fix: removePickup actually removing
pickup emitter and doing other cleanup even when `prediction = true`

Thanks Hex Obsidian

fix: Prevent multiple runPrediction calls from triggering simultaneously

fix: Don't change player unit movespeed when slowed, only stamina
otherwise it makes their movement jittery due to how multiplayer handles player movement.
Fixes super speed when units were "slowed"

Thanks Monarch and Xulqelyat

fix: conserve to not always working correctly

fix: Fully overwrite players array
when loading a saved game.
This fixes the case where playing a game with more players and then loading a game with less would leave you with ghost player objects that would softlock the game.
Allow multiplayer saves to be played in a singleplayer context (as hotseat).

fix: Add protections to prevent changing a player unit's faction to enemy
Thanks FfrankF, evilcuttlefish and HeyShadowPhoenix

fix: Black Coin desync on Multi
Any time getUniqueSeedString is called with globalThis.player on the server it will desync compared to clients.

fix: Show prediction markers on prediction units
This fixes the issue where cloned units wouldn't show
prediction markers because the unitsPrediction array wasn't
the one being iterated.

fix: runPredictions while player is spawning

Otherwise predictions don't update while choosing a spawn location

fix: unit attention markers persisting after death

fix: infinite mana merge exploit

Limit changeling to 1 max.
Prevent stacking teleport in the same location to spawn a bunch of changelings
and make units that recieve merge immune for 2 turns to prevent infinite mana growth

Closes #1108