#Spellforge (Noita-like Spellcrafting)

1 messages · Page 3 of 1

cyan phoenix
#

No it's issue with SFP

#

I think so

inner vector
#

isnt Colony_assassin the carrier object

#

its like

#

'the spell'

#

for SFP

#

the invisible marker is for the vanilla default projectile

cyan phoenix
#

Ahhhh

#

Right so why isn't the spell spawning then hmm

#

It needs 3rd visual ?

#

I mean 3rd object?

#

seems like the marker is overwriting the visual maybe ?

inner vector
#

with OSSC?

#

because Spellforge isn't telling SFP to cast anything

#

im adding in to spellforge

#

tada.

#

I need to fix audio now

#

explosions sound seem to happen like at my location instead of at the impact

cyan phoenix
inner vector
#

I was saying

#

it was me

cyan phoenix
#

But you know I was curious if it was SFP thing anyway need to squash any bugs

inner vector
#

maybe I explained poorly

#

oh well

#

it works now!

#

few more things to fix, few more event types to add (chain on payload, chain on multicast, maybe pierce and homing?), maybe some UI polish

#

submit for week 3

#

happy days

#

redalarmno debloat passredalarm ppsweat

#

and I'm off Saturday so I'll have a WHOLE day to finish it up for week 3

cyan phoenix
#

having a full day to work on a mod is indeed good

magic moat
#

Hell yeah!

inner vector
#

I'll try to squeak out the sound fix before sleep

#

oh

#

its SFP.

#

OSSC has the same issue

cyan phoenix
#

Can you record exactly, so I can fix it

inner vector
#

vanilla fireball

#

OSSC cast -> explode way out of earshot -> loud
Vanilla Cast -> Same -> silent

#

doesnt seem to matter WHERE the SFP cast hits, its always the same volume

#

the bolt sound itself seems to work fine tho, it fades away as it flies off

#

you can also see the speed difference 🫣

#

my RC must be cursed

cyan phoenix
#

Ahh this, allright I'll take a look into it, there is a max distance sound for sure to set

magic moat
#

Are you playing the sound as a 2d one, or 3d at the projectile location?

inner vector
#

I wonder if the explosion sfx is playing on the character

cyan phoenix
#

Might be

#

rather than impact spot

inner vector
#

the bolt sfx seems to travel with the projectile

#

so that seems fine

#

maybe the engine has issue with playing sounds away from the player manually? but they can travel away normally?

cyan phoenix
#

I think (haven't checked) it's just the wrong playback target

#

for the explosion

#

since the sound anchor works, flies together with the bolt

#

it's the explosion, maybe it's played as ambient and not as 3d

#

Needs checking

inner vector
magic moat
#

Wouldn't be surprised if - when the bolt disappears - the sfx location defaults to the player? 2d vs 3d is also a likely cause in my experience

cyan phoenix
#

This might be, needs a function to play before destruction

#

possibly fallbacks to the player

inner vector
#

we know where the bolt hits so we can fire the explosion vfx

#

feed pos into audio?

#

idk Ive never done audio stuff

#

no idea how it works in openmw

cyan phoenix
#

audio is like 2-3 small functions

inner vector
magic moat
#

sound stuff is fairly simple in OpenMW

#

Quite easy to work with

inner vector
#

does a 3d sound need to be attached to an object?

magic moat
#

Makes it easy to debug too

cyan phoenix
#

Sound.playSound3d(soundId, object, options)
Play a 3D sound, attached to object

In local scripts can be used only on self.

Sound.playSoundFile3d(fileName, object, options)
Play a 3D sound file, attached to object

In local scripts can be used only on self.

inner vector
cyan phoenix
#

Yes the object is mandatory

inner vector
#

and if the projectile exploded...

#

there is no object

cyan phoenix
#

That's why I need to account for it

#

Will probably just create another dummy object to spawn for these 2 seconds

#

on the impact point

inner vector
#

does the object need to continue to exist for the sound to play fully?

cyan phoenix
#

Yes

magic moat
#

👍

cyan phoenix
#

I think so

magic moat
#

Would make sense

inner vector
#

is the explosion itself not an object?

cyan phoenix
#

it's a vfx afaik

#

so technically not an object

#

an "animation"

inner vector
#

I see noted

cyan phoenix
#

despite using the same file and mesh lol

#

You can spawn items as animations or as objects

#

both having their own characteristics

#

objects you can scale but cannot move around if it's animation

magic moat
#

That explains why replacing a summon always plays the conjuration sounds in your ears, because the unsummon sfx plays after the actor disappears

cyan phoenix
#

animations you can move but cannot scale (directly)

#

but you can workaround animation scaling by attaching... dummy invisible object WITH added animation the one you need scaled

inner vector
#

5am I must sleep, best of luck o7

magic moat
#

Toddcode Invisible Lights moment

cyan phoenix
#

the stuff I'm recently doing with the lua is just crazy

#

given the api limitations around animations

#

and in crazy I mean retarded

#

but working 😄

magic moat
#

No solution more permenant than a temporary one. If it works, it works

inner vector
inner vector
cyan phoenix
#

Tommorow when I wake up and do the morning things🙌

#

Gn❤️

inner vector
inner vector
#

Hmmm

#

should I feature gate multicast / multicast patterns and touch/self spells?

#

it seems kind of weird to do like Multicast 3 Shield on self

#

since it doesn't stack

#

hmmm

inner vector
#

we could make damage stack

#

I suppose that would be noita like

#

it probably stacks already

#

since each damage effect is its own unique record

cyan phoenix
inner vector
#

YES

#

sorry caps

#

you can make any spell stackable

#

if I cast shield for 5pt twice

#

I only have 5pt shield

#

if I cast 1-10dmg over 10 seconds twice, its still 1-10dmg over 10 seconds

#

this is vanilla

cyan phoenix
#
| `STACK_CONFIG` | Table controlling spell stacking limits. |
### D. Restricting Stacking
local I = require('openmw.interfaces')
if I.MagExp then
    I.MagExp.STACK_CONFIG.SPELL_LIMITS["gods_shield"] = 1
end
#

change that number to how many times you want the spell to stack

#

works on shields etc

inner vector
#

I'm basically asking if I should allow it

#

I know I can do it already

cyan phoenix
#

ohh that's on you 😄

inner vector
cyan phoenix
#

I am delving now into issue with the sound

inner vector
#

its not vanilla is the thing

#

hmmm

#

maybe offensive effects only

worldly edge
#

how's the mod going

inner vector
#

its basically fully functional now

#

with maybe a few edge case combinations not supported yet

#

I'm still mulling over if I should make damage effects stack or not

#

so you could do like fireball trigger multicast 3 firebite

#

and it would hit the enemy with 3 firebite effects at the same time

#

I could just do damage only

#

but then people might wonder why shield and weakness to, and resistance, etc don't stack

worldly edge
#

😵‍💫

inner vector
#

I feel like the damage should stack

#

whats the point of 3 fireballs if only one does damage

cyan phoenix
#

or divide the damage between the amount of projectiles

worldly edge
#

honestly, what could be considered overpowered in vanilla could be acceptable in something like HBFS

inner vector
#

I'll just do damage then

#

since the main use of the system will almost certainly be the various damage spells

cyan phoenix
#

@inner vector #1492962758445109429 message

obsidian martenBOT
#

Spell Framework Plus v1.82 is live on Nexus and Github
-fixed AoE effect sounds playing on the player instead of impact position
-fixed targetted spells so that they do not play cast VFX second time upon successful cast to align to vanilla behavior

cyan phoenix
#

Another two bugs squashed

inner vector
#

it WORKS

#

with no changes

#

required

cyan phoenix
#

Hey no problem ^^

inner vector
cyan phoenix
#

Nice, but I see the castVfx is defaulting to Default cast VFX, intended?

inner vector
#

wdym?

cyan phoenix
#

the sparkles on hand while casting - defaultVfx and not the fire vfx

inner vector
#

oh

#

OH

#

it was fixed at one point

#

I think the debloat destroyed it

#

thanks!

#

I need to put that back in

cyan phoenix
#

No problem, got an eye for these details today

inner vector
#

new bug for me to fix

#

our now stacking spell effects dont seem to play nice with the cost parser and get ignored

fading fox
fading fox
# cyan phoenix

Thanks! I do know about that list, but weird that I never noticed the vfx_default - instances before and therefore assumed that the vfx for destruction spells is like the default or something. Probably overlooked it.

inner vector
#

yeah the spell bolt is an actual weapon too

#

just Todd things

#

anyway mana cost is fixed

#

damage is stacking

#

and new critical bug

#

saving with an unexploded payload still existing and then loading during that session causes a hard crash

#

need to terminate projectiles onsave

cyan phoenix
#

or just have it saved and re-initiated/continued onLoad to not crash - keeping it vanilla behavior ^^

magic moat
#

^ This is the way

#

Otherwise you might run into issues like spell projectiles in air during auto/quicksaves causing a crash when loading.
Which is awful if you die just after saving while your spell is in transit

inner vector
#

its not the spell

#

its our container existing

#

openMW is like

#

wtf is this

#

crash.

magic moat
#

I wonder if the spell data is loaded before the entity that contains it

cyan phoenix
#

I had to check SFP and thanks for finding a bug for me 😄 It doesn't reinitiate the spell, I need to account for this

#

But it doesn't crash it either

#

so it's Spellforge thing

inner vector
#

oh

#

you want the crash dump?

#

idfk what to do with it

cyan phoenix
#

Wait until I add the reinitialisation through save, then we'll see if it helps

inner vector
#

I already put in a fix in spellforge

#

clearing projectiles onsave

#

it works but yeah they all go POOF

cyan phoenix
#

Definitely needs fixing, at least on my side and then we'll see

#

But tommorow I will be able to do it

#

Today I'm busy in a while

inner vector
#

OSSC doesnt do it

#

I think its just my wierd projectiles that do it

#

they are like not spells

#

they are lua brains

#

magicbolt🧠

magic moat
inner vector
#

just want to clean up the logs a bit

#

kind of messy

#

otherwise everything seems pretty good

#

last bit of UI polish, some good testing tomorrow, and then its ready for week 3

magic moat
#

You can do this!

#

I believe in you!

cyan phoenix
# inner vector OSSC doesnt do it

I've checked with OSSC, it just disappears when loading the save where the vanilla spell was flying. So before working on that wait on my fix

cyan phoenix
#

It's good to have extensive logs 😄

inner vector
#

yes

#

thats what I mean

#

put them under info or debug

#

only show errors/warns

#

a lot of stuff isnt organized

#

so it doesnt get gated right meow

inner vector
#

damage effects stack with themselves now (ex: fireball trigger -> multicast 3 firedamage 10pt for 1 on touch = 30 damage dealt to target + fireball damage)

#
  • firedamage
  • frostdamage
  • shockdamage
  • poisondamage
  • damagehealth
  • damagefatigue
  • damagemagicka
  • absorbhealth
  • absorbfatigue
  • absorbmagicka
  • drainhealth
  • drainfatigue
  • drainmagicka
#

cast VFX fixed

#

save load hard crash fixed

#

mana cost bug fixed

#

logs cleaned up a bit

magic moat
#
[spellforge][player.init][ERROR] SPELLFORGE_RUNTIME_ERROR intercept dispatch failed spell_id=Generated:0x53e4 err=homing helper launch job did not complete
[15:10:30.937 I] L@0x1[scripts/incantation/player.lua]:    INCANTATION SKILL MOD: Cast custom spell 'New Spell' (+1.9 XP, +7 magicka [19.5% refund])
[15:10:30.960 I] Global[scripts/spellforge/global/init.lua]:    [spellforge][global.executor][ERROR] SPELLFORGE_RUNTIME_ERROR SPELLFORGE_LIVE_2_2C_SIMPLE_DISPATCH_ERR spell_id=Generated:0x53e4 recipe_id=2f838da9 err=homing helper launch job did not complete; fallback blocked after live attempt

@inner vector

#

Putting homing on the spell stopped it from working

magic moat
#

Correction, it casts when there's no hostiles nearby

#

But when I would expect it to home, the spell fires nothing

#
[19:25:29.647 I] L@0x1[scripts/spellforge/player/init.lua]:    [spellforge][player.init][ERROR] SPELLFORGE_RUNTIME_ERROR intercept dispatch failed spell_id=Generated:0x53f9 err=helper launch job did not complete```
#

I took Homing off and it still doesn't work

#

Hmm, after changing from exterior, to interior, and back to exterior cells it works

#

I wonder if it's connected to the reloadlua I ran whilst testing my perks

#

OH

#

That's not great

#

So when I enter Combat, they stop working

#

Oh it's not combat

#

It's casting 3 or 4 spells

#

Lemme test

#

3 spells. then it cuts out

#

I wonder if it isn't able to create more invisible projectiles or spell data based on your current limits

#

Which would mean it's not cleaning itself properly

inner vector
#

ill take a look

inner vector
#

all spellforge spells?

magic moat
#

All spellforge

inner vector
#

huh

#

I dont have this issue

#

homing works in combat, spellforge works in combat

#

😵‍💫

#

homing still works on enemies

#

when homing is cast from a direct spell it has a short delay before it initiates

#

or else the cast starts off screen if that makes sense

#

IE you cast and the bolt seems to spawn from the edge of your screen and not the center

#

when homing is triggered from a payload, it starts homing instantly (projectile + trigger -> multicast + homing + projectile)

magic moat
#

I wonder what's causing it on my end then

#

I could be Incantation

inner vector
#

hmm

#

it still might be my end

#

I tried the same spell but with absorb fatigue instead

#

and it doesn't resolve properly

inner vector
#

"C:\Users\ [yourprofile] \Documents\My Games\OpenMW\openmw.log"

magic moat
inner vector
#

hmm

#

so our system limits the first cast to 8 casts

#

ie 'multicast 8 -> payload'

#

so for some reason the mod is accumulating

#

for you instead of reseting after each cast

#

cast cast cast fail

#

3 + 3 + 2

#

3 spells -> 3 spells -> 3 (hits 9, minus 1 cap of 8) doesn't fail though, the next cast does

#

i'm not sure why my game isn't behaving the same way though

#

working on a fix right meow

#

also working on expanding spell effect support since some spell effects still silently fail

inner vector
#

the rest of the fixes arent in yet

#

but that should fix your 'stops casting' issue

#

hard for me to test because my client isn't having that issue appear

inner vector
#

pretty much all effects should work now in recipe

#

added UI selection for any spell that targets attribute/skill but its kinda scuffed so need to figure out a better way I guess

#

you basically click a button and it moves forward in the list

#

I have no idea how to make a drop down, maybe a UI pops up and shows all the choice

#

anyway its functional at least

magic moat
#

Not getting the glitch anymore

#

On a fun note, this now works with the TR summon spells, but only with up to 2 summons

inner vector
#

I could make summons more stackable than they are now

#

would be neat to shoot 8 bone walkers at someone

magic moat
#

I think 3 summons from a single spell is enough, you can still stack multiple spells

#

3 from 1 spell fits with Aryon's Helper from vanilla too

inner vector
#

so what do you mean

#

3 summons per spell but you can recast it for even more?

#

3 summons per payload so each payload can summon up to 3?

magic moat
#

A casting that same spell would refresh the duration/resummon
Casting a different spell with the same effect would summon more, like vanilla

inner vector
#

alright I'll take a look

#

I made the UI more vanilla

#

also all operators visible

#

will release with the summon fix

#

or rework I suppose

inner vector
#

3 of the same summon in a spell

#

or 3 seperate summons in a spell?

#

Multicast 3 Summon Scamp?

#

or just

#

Trigger -> Summon Scamp, Summon Bone Walker, Summon Skeleton

magic moat
#

Mutli-cast summon doesn't work, because summons can only target self.
The spells are made as just multiple summon emitters

#

So

#

Summon Dremora
Summon Dremora
Summon Dremora

inner vector
#

so you dont care what kind of creature it is

#

even duplicate

#

got it

#

I could make multicast 3 work just fine, it makes 3 seperate spells anyway

#

multicast 3 is the same thing as

Summon Dremora
Summon Dremora
Summon Dremora

#

SO the functionality should be:

Recast = Refresh Duration
New spell cast:
Multicast 3 Summon Dremora = Works (Spell Name 'Test 2')
6 Summons exist```
magic moat
#

Yeah, vanilla doesn't let you stack the same creature in a spell, so this mod letting you do that is a cool thing.

inner vector
#

awesome, got it.

inner vector
magic moat
inner vector
#

multicast doesnt work

#

on summons tho

#

it only makes 1

#

fixing that

#

then I'll send the test build with summon revision + UI clean up

inner vector
#

so multicast summon works now but 3 summon spells standalone in a payload dont

#

xD

#

not sure how I broke that but lemme check

#

Yessssss

#

the boys are all here

inner vector
#

if nothing else is wrong then Test Build 4 is basically release ready

inner vector
#

multi-grouping seems tempermental

#

some combinations dont play along

#

ie (multicast 3 fireball shield)

inner vector
#

Multigrouping fixed

#

UI cleaned up some more (shows aoe size now)

#

added new modifier (Detonate)

#

Fixed Timer to detonate at end of timer, or act like trigger on impact

#

adding Detonate before a target spell inside a payload will cause it to explode instantly

Fireball
Timer
Detonate
Frostball```
#

(Basically Nolla from Noita)

#

Touch payload on timer works if it hits an actor

#

but does nothing if timer activates

magic moat
#

Will test later :3

inner vector
#

if no issues then I'll be submitting it

#

but for now I sleep

#

thanks for the help froggo

magic moat
inner vector
#

hmmmm

#

ill check it out after work

#

how did ot happen?

#

old save?

magic moat
#

Updated to the Final Test Build

#

Tried to load a save

#

Got this error, and it kicked me back to the main menu

inner vector
#

new saves dont?

#

it might be old spell info

magic moat
#

Haven't tried a new save yet as I have Wrath and Glory session atm, but will test after

inner vector
#

ok thx

#

ill check it out, we did normalize the names in the UI

#

I must have messed something up

fading fox
# inner vector I must have messed something up

This issue with the failed loaded save game might be something that isn't exclusive to your mod and always seem to happen when trying to remove or disable a mod wich added a new magic effect. Check out some conversations here. Skrow and Hyasinth are onto it, but couldn't figured it out yet. #1495408927246909612 message

obsidian martenBOT
#

@covert wave I have an idea how to tackle the issue with save not being able to load after saving custom spell and disabling the mod - but it’s a bit convoluted. Having some script that deletes the custom spell on save and re-adds them back instantly. Thus if mod is missing then it won’t crash. But I guess if NPCs will have them it’s also the same situation but undoable if NPC is in another cell? Or it’s not read at such case?

fading fox
#

And here is my inital post about the issue. #1495408927246909612 message

obsidian martenBOT
#

Failed to load savefile!: magic effect „t_mysticism_blink“ not found (translated from german)
Is this a common issue when disabling a mod, which adds a custom magic effect, you can't load the savefile anymore that previously used the mod? I'm using the 0.51.0 RC1 build @covert wave

Not that I want to actully disable it on the long run. I just wanted to check something else previously. Love these new spells!

Attachment(s)
inner vector
#

shoot…

#

well I guess its not a release blocker if its a known issue

#

saves can’t be continued if you remove the mod, and if I ever rename any spell effects in any update going forward, existing saves will break

cyan phoenix
#

There is a solution

#

#1495408927246909612 message

obsidian martenBOT
cyan phoenix
#

I haven't got time to get to it yet but it seems it's possible to avoid this bug

fading fox
#

I see, I thought you already looked into and figured it out, based on what I forwarded earlier from another author's mod page 😅

inner vector
fading fox
#

No pressure though. Every new magic effect mod that came out recently is so good, that I actually haven't uninstalled any of them 36vehks

#

And it seems that most people think the same, since there weren't many who pointed out this issue

inner vector
#

could we re-register the broken MagicEffects during load context somehow?

#

all I did was normalize my spell names in the UI

#

so Summon Lesserbonewalker displays as Summon Bonewalker and it broke old saves huh

#

I have to go to work so I can't really check the (Poison Weapons) fix out right now

inner vector
#

Or I guess somehow removing onSave, and re-registering onLoad?

#

but old saves wont work if you remove the mod, you’d still need to load in with the new version and make a new save

cyan phoenix
#

Yet

cyan phoenix
inner vector
#

so it would fix the issue going forward

#

but it wont fix his issue right now

#

his current save is bricked with the new version

#

Hmm…

fading fox
#

I mean it's still worth a mention when people will donwload the magic effect mods later and hopefully won't have this issue then. Regardless of this, in the end it would need to be forwarded to the openmw devs I guess, so they can either incorparate said possible fix or at least mention the workaround in plain sight for when modders attempting new magic effects.

inner vector
#

Alright well then I might just release as is then if its a known issue

cyan phoenix
#

I did big red disclaimers in my spell mods 😄

inner vector
#

yeah I really dont want to delay any longer

#

I could chase bugs and feAtures for a while

cyan phoenix
#

Sometimes it’s better like this, so you’ll have a few reports at once and it’s faster to fix it that way rather than one by one 🙌

inner vector
#

so the effects exist outside of the save

#

but I'm unsure how to do that with Spellforge since the effects are baked into the spell the user creates during runtime

#

can we write into a yaml file with lua? I don't think we can but I've never actually tried to write into mod files directly from the game

cyan phoenix
#

So I don’t know the quirks yet

inner vector
#

load.lua reads that YAML at load-context time and registers a tiny, known set of records.

#

the yaml is generating the poison records

cyan phoenix
inner vector
#

I think for spellforge the only solution is to remove/restore spells onSave and onLoad

#

so if they uninstall the mod, there are no spells restored

#

and nothing fails

cyan phoenix
#

Yeah, saving to the storage file might do the trick and re-adding that on each load

#

Dunno if you can save such records to the .storage tho

inner vector
#

can we delete spells with Lua from the spellbook?

#

I think there was discussion about this elsewhere

cyan phoenix
#

Look on my grimoire video

#

It’s literally removing them 😄

#

And I cache that and if you drop the grimoire then theyre re-added back

inner vector
cyan phoenix
#

I can send you the files if you want to check out

#

Tieing that to save and load shouldnt be a problem, saving and loading are even exposed in the lua functions

#

So maybe that will be an easy solution for our problems with the custom spells

inner vector
#

I might play around with the idea

#

at a later point

#

I want to RELEASE the BEAST

cyan phoenix
#

Do it 😄

#

It took big effort, time to reap the fruits

inner vector
#

the CURSE

#

my chaos budget was part of the regression way back when

#

right now we have a max cap of 32 helpers

#

which means you cant even trigger multicast 8 trigger multicast 8 trigger because its like 130 helpers

#

you CAN multicast 32 though

#

I had at one point raised the limit to like 128 but it seems it was part of what got destroyed by the debloat

#

only noticed because I was writing out a description of each modifier and I was like... wait the limits are wrong

cyan phoenix
#

The regressions by ai are far the worst thing imo

#

You had it working then it deletes it…

inner vector
#

twas my own ignorance

#

trusting an AI to merge and debloat and entire project even with 'safe' guidelines baked in was a fools errand

#

not making a backup RIGHT before doing it

#

was even more foolish

cyan phoenix
#

I do copy of every step to prevent most of the wrongdoings 😄

#

Which is still sometimes not enough

inner vector
#

I was tired and giddy to release it

#

I have no one to blame but myself

cyan phoenix
#

Its still all good

#

🙌

inner vector
#

now I know better

inner vector
#

LET CHAOS REIGN Todddevil

#

icons for detonate

inner vector
#

its ALIVE!

civic marten
#

Congrats, it's been an epic hussle. May your bugs be crushed most succinctly

cyan phoenix
#

Good tools to invade the skeleton fort 😄

cyan phoenix
inner vector
#

but assuming you have the skill and mana...

cyan phoenix
#

Now it's just a matter of fine tune 😄

inner vector
#

already have new modifier ideas

#

Spell Vamp

#

damage to hp or mana

#

a modifier that makes a spell cost health instead of mana

#

(blood mage build maybe?)

civic marten
#

Sun's Dusk integration, Hydraulic magic: costs water from your inventory

#

If you run out of water it uses potions

inner vector
#

I already have a mod detection feature in DaggerfallCC, I suppose it would be fairly simple to add in a modifier if Suns Dusk is detected

cyan phoenix
inner vector
#

I want to do some sort of way to

#

push

#

and pull

cyan phoenix
#

Well, absorb spells you already have in the engine

inner vector
#

knockback modifier for aoe

cyan phoenix
#

It's only health cost - I can add that to SFP

inner vector
#

but also like a "sucking" effect

#

like blackhole

#

Noita and blackhole

#

are like staples.

#

two peas in a pod

cyan phoenix
#

Physics are terrible in morrowind tho

#

But would love to see something like that

#

And sadly when applying Max's Lua Physics on the NPCs it gets even worse

#

But it was not made in mind of NPCs of course

inner vector
#

so many things

#

spell trails...

#

hmmm

#

maybe take fog or vent smoke and change the color...

#

or damage field

#

like an aura around the projectile that deals damage to enemies that touch it

#

still want to make a sort of trap payload too

cyan phoenix
inner vector
#

like Fireball Trap Fire Damage 100pt touch for 5sec

#

leaves a little glowing orb on the ground

#

if actor walks into its hitbox (larger that the orb ofc) it explodes

cyan phoenix
inner vector
#

which means a gravity modifier would be good too

cyan phoenix
#

Check here, he has open perms

inner vector
#
  • and -
cyan phoenix
#

a lot of stuff that could be inherited onto OpenMW

#

This one especially, ready to use VFX for traps

#

I found this gem profile like 2 days ago

inner vector
#

Bah

#

I still wanted to play around with making a Tribes ski mod

#

I need a clone

#

and 48 hours in a day

#

BAH

#

so many things to do

cyan phoenix
#
Nexus Mods :: Morrowind

Targeted weapon enchantments trigger on attack. Bow enchantments are triggered by an arrow hit. The ability to cast spells when attacking.

Nexus Mods :: Morrowind

Elemental shields damage everyone around

Nexus Mods :: Morrowind

The shield magic effect now absorbs physical damage, wasting your mana

Nexus Mods :: Morrowind

Adds 3 new spell casting modes: spray, ray and shotgun

Nexus Mods :: Morrowind

Elemental blasts knock enemies back

inner vector
#

so little time

#

RAYS

cyan phoenix
#

We need a solid 'line' of spell

#

Something that wasn't done before yet I think

#

Although shotgun mode looks nice

inner vector
#

I wonder how difficult

cyan phoenix
#

Funnily enough, these mods were also made for modathon lol

inner vector
#

to make an Orbit modifier

#

so you could have fireballs orbit you

cyan phoenix
#

Yeah I was thinking like Lighting Shield from Shaman in World of Warcraft-type spell

inner vector
cyan phoenix
#

Orbit is halfway done in Kinetic Spells mod and also Haggle Light mod

#

since the objects are already hung up at some position

#

it's just a matter to add a constant recalculation of the position

#

to move around

#

When Kinetic Spell is in phase1 and you collide with actor it disappears

#

so its also a matter of only triggering a damaging spell event on that occasion

inner vector
#

already have homing as a modifier

#

maybe I can repurpose it

#
Then every steering tick:

desired_angle += orbit_speed * dt
orbit_point = player_pos + circle(radius, desired_angle) + height
direction = orbit_point - projectile_pos
redirectSpell(projectile_id, direction)```
cyan phoenix
#

It should work no problem 😄

sage eagle
#

That was about the one thing I was disappointed with when I realized what couldn't be done in OpenMW

cyan phoenix
cyan phoenix
sage eagle
#

That will be epic, I remember starting to play this game a few months ago and being so mad when I enchanted a sword with target and it didn't do anything

sage eagle
#

@inner vector is there any way to make a spell that bursts into more like in your video but then those become homing projectiles? I'm having so much trouble and I had a dragon ball type idea for a spell

#

I LOVE THAT THIS MOD JUST WORKS PERFECTLY WITH THE INCANTATION MOD

inner vector
#

ill see about expanding it more

inner vector
#

so the issue is that

#

each projectile has basically a lua brain

#

for homing

#

each projectile is queried with a state request

#

constantly

#

to steer it

#

I'm just going balls to the walls so to speak and trying to unlock straight to 128 projectiles with homing but I assume its going to murder performance like I've probably never seen in a mod before

cyan phoenix
#

I wonder how it will actually handle, maybe it won’t be bad at all 😄

inner vector
#

nothing like 128 position and vector requests per tick

#

128 raycasts

cyan phoenix
#

Make ticks per 0.03 secs, will already ease off a lot

#

Or even further

inner vector
#

13 per tick

#

so 128 per 10 ticks

#

~0.16s

#

in a sort of round robin way

#

so no projectile gets starved

#

our current homing is already steering per 0.15s

#

so its basically perfect

cyan phoenix
#

Oh you got it finetuned nicely, cool

inner vector
#

0.01s after they finish steer they get an update

#

so it should look pretty blended

cyan phoenix
#

Yeah exactly

inner vector
#

how goes the magic books?

civic marten
#

Its pretty sweet. I've some animations cooking, hopefully will be looking cool soon 🤞

cyan phoenix
cyan phoenix
inner vector
#

I made the homing delay a lil longer

#

maybe 0.85 is too long

#

hmm

#

0.65?

#

0.70 doesnt feel bad

cyan phoenix
#

Nice and nice lounge beats

inner vector
#

praying please test

#

lag seems to calm down

#

after 1 cast

sage eagle
#

I got you after work

sage eagle
worldly edge
# inner vector

I can bet whatever got hit by that is most definitely dead

inner vector
#

maybe the downside to spellforge should be

#

"Your own spells can hurt you"

#

just like Noita.

magic moat
#

Maybe as the default setting, flavour Spellforge spells as inherently unstable - could even check if the player has Incantation, and give Spellforge spells a % chance to not harm the player equal to the Incantation level, as it's all about spellcrafting :^)

#

That way, there's a balancing act between the "on-the-fly" spellcrafting granted by Spellforge, and the "stable" spellcrafting of Spellcrafters

cyan phoenix
#

Make sure to update spell framework plus guys, critical patch went in today for the spells casted through it

#

save-breaking bug so it's as important as it never been yet

inner vector
#

👍

sage eagle
#

@inner vector Homing is working smooth

sage eagle
# inner vector

how are you making this spell in the video, I am so bad at this spell system

magic moat
sage eagle
#

THANK YOU

#

i did not realize you could do timer intothings other than detonate lmao

#

ok, now my spell is even better

#

just killed a bull netch accidentally in one cast lmao

inner vector
#

ty for responding

#

I’m at work sadcat

inner vector
#

so you can do air bursts and whatnot

#

if it hits something it triggers like normal

#

spells work from
top
to bottom

#

so you want to describe what efffects a spell has

#

before you cast the spell

#

hence
`multicast
burst
homing
fireball

multicast the spell
in a burst pattern
with homing on them
use fireball for it`

inner vector
worldly edge
#

lol

inner vector
#

I made it more clip accurate

worldly edge
#

I think half of Hla Old reported that crime

fair minnow
#

i've never played noita so i'm going into this blind

cyan phoenix
#

@inner vector
#1492962758445109429 message
This update can affect Spellforge performance negatively

obsidian martenBOT
#

v1.86 - Vanilla Parity Patch is live on both platforms:
-fixed multi-school spells to play all of the cast Vfx with the spells casted through Spell Framework Plus
-fixed multi-school spells projectiles to be all spawned instead of the first effect
-fixed all single-target spells when collided with an object to display the small area Vfx feedback

cyan phoenix
#

But it had to be done

#

Definitely needs inspected how much of perf drop it gives

#

Since it will spawn a lot more visuals now

inner vector
#

don't they typically get merged in openmw?

#

the elemental types?

#

it makes a new projectile with both effects

cyan phoenix
#

Nope, I was casting vanilla casts back to back to mimic it's behavior

inner vector
#

I see

lethal crane
#

Playing around with the mod and it looks like it does't want to make spells with modded spell effects, despite correctly listing them in the known effects list

#

Is this like a caching thing where the list of valid effects get copied before other scripts add their new effects or something?

inner vector
#

Ill take a look at custom spells

#

I thought it work natively but I guess not

#

spellforge doesnt actually make real morrowind spells

#

it makes (as far as the engine knows) an empty spell with nothing in it except mana cost, schools of magic, target/touch/self, difficulty. There is no actual “fireball” spell on the record, its more like “spellforge_fireball” (not the actual data but it gets the point across)

#

the spell is actually a container of data for Spellforge

#

so my guess is spellforge just doesn’t know how to launch custom spells effects but it can create them in a spell

lethal crane
#

the logs for the error in question are just

[19:15:58.291 I] Global[scripts/spellforge/global/init.lua]:    [spellforge][global.compiler][ERROR] SPELLFORGE_RUNTIME_ERROR handleCompileEvent failed request_id=ui-compile-1779491758-12 err=EffectParams require a valid magic effect id
[19:15:58.293 I] L@0x1[scripts/spellforge/player/init.lua]:    [spellforge][player.init][ERROR] SPELLFORGE_RUNTIME_ERROR compile failed request=ui-compile-1779491758-12 error=EffectParams require a valid magic effect id
[19:15:58.295 I] L@0x1[scripts/spellforge/player/init.lua]:    [spellforge][player.spellcrafting_ui][WARN] SPELLFORGE_SPELLCRAFT_UI_COMPILE_FAILED saved_id=saved:9 reason=EffectParams require a valid magic effect id
inner vector
#

im at work so ill check it out tonight

lethal crane
#

no worries, it's probably just some weirdness with the way custom effects have to be created by mods with the current api

#

what's most odd is that the preview actually works fine, it's just hitting create that bugs out

#

computes the correct cost of the effect and everything

lethal crane
#

on self cast effects this sort of failed success only applies the Spellforge Dispatch <id> effect and not the vanilla effect, but the dispatch effect still applies the normal effects of the thing it's templated off of or something. A successful cast applies both effects and appears to work as expected

#

Only really tested with a levitate spell so far so if it's doubling the effect or something that would be very hard to tell

magic moat
#

It works with some custom spells - I got it working with the TR summons, bound gear, as well as Nifty Spells Projection and Greater Projection

inner vector
#

so it does sort of work with custom spells

#

weird

lethal crane
#

Tried with TR's summon dremora caster, same error

#

Maybe a load order thing or something then?

#

As an aside, white you can multicast vanilla summons, the TR summons aren't recognized as multicastable

#

spellforge is definitely after unofficial TR spells, so load order is probably not at fault

magic moat
#

I'll need to check my load order, because it works when I multicast TR summons

inner vector
lethal crane
#

When filtering by school custom effects all fall under uncategorized, which probably isn't helping things

inner vector
#

slowchu is on the prowl for the bugs

#

ah yes

#

I remember now

inner vector
#

since our spells aren't actually spells

#

the hover over normally shows nothing

#

but like the engine I guess still sees these placeholder stand ins

#

and 'casts' a buff icon

#

I wonder if I can just cheat and quickly dispel the effect, it shouldn't affect the actual spell

#

the custom spell issue

#

It SHOULD affect TyrusDalet

#

perhaps old data is preserving functionality

#

I think the machine spirit mis-interpreted my request a while back

#

I asked for help normalizing spell records in our UI so people wouldn't see like Fire_damage, but instead Fire Damage

#

I think maybe its actually changing spell ID before creating the spell

#

so now TR_Summon isn't the right ID anymore

#

all our vanilla effects work fine because it knows what each normalized ID does

#

but doesn't know what a custom ID is because it never recorded it

lethal crane
#

Yeah for that one I was more wondering about whether spell success chances and magnitudes are affected by this, since there's three apparent outcomes

  • The spell fails as normal, no effects applied
  • The spell fails and only the spellforge effect is applied, the spell's effect works despite the failure popup
  • The spell succeeds and both the spellforge and vanilla effect is applied (possibly doubling it unless the vanilla effect somehow does nothing, haven't tested)
lethal crane
#

I can probably just test that last one real quick with like fortify

#

one sec

inner vector
#

it doesn't double it

#

I have the same issue with summons

#

but it never summons extras

lethal crane
#

I imagine it shouldn't yeah

inner vector
#

I remember trying to fix the issue with summons but getting rid of it directly meant breaking our pretty spell hoverover

#

its purely a side effect of our spell hover over

lethal crane
inner vector
#

I hijacked the vanilla system instead of building a UI element that shows up only for our spells

#

a lot of the mod is focused on "using in-engine functions" as much as possible

#

so tricking the engine into thinking we are casting a spell (but it has no effect) means I didnt need to remake spell casting from scratch or mess with the spell book at all

#

tricking the engine into thinking our spells have hover over icons mean we dont need a clunky UI replacement

#

but everything has a cost it seems

#

vanilla spell casting 'empty' spells gives us the defaultVFX issue

#

tricking the engine with fake hover over means strange duplicate buff icons that do nothing

#

ah the normalization is also to prevent the vanilla engine from casting the spell as well

#

so I just need to make a system to reference the real spell on load so when we normalize it in a spellforge spell, it shouldnt have any issue.

cyan phoenix
#

it all comes down to what you specify in the load file

#

as far as I've noticed

cyan phoenix
#

it's also useful for custom effects to give dummy icons to actually represent duration/activation

#

since custom effects are purely lua, engine doesn't understand what's happening. It can only give a visual effect status feedback

inner vector
#

its casting a fake buff because our spell has a fake icon with duration and such

cyan phoenix
#

Yeah, but it's possible to eliminate this fake buff is what I'm saying, if it's of any importance

inner vector
#

our frontend spell uses display proxies with real duration/magnitude so vanilla hover text looks correct. To fully prevent shell buffs, we likely need to make frontend spells use a truly inert zero-duration marker instead. That would cause us to lose the nice vanilla spell tooltip unless we find an OpenMW-safe way to keep tooltip data without creating active effects.

#

the cheat fix is basically the same frame the spell icon is made we remove it

cyan phoenix
#

Yes I understand that, what I mean is that what is on the tooltip doesn't actually have to be 1:1 applied effects from the tooltip

lethal crane
#

the noop effects in the actual spell also have the added bonus of showing what spell they're actually from instead of from some uuid ahh spell name

cyan phoenix
#

You can have tooltip info without some of the effects applied if needed

#

but that's just my observations from the Kinetic spell mod since it uses unique casting in 2 phases

#

Had some difficulties around it to be truly honest

lethal crane
#

unless you can change the name of the dispatched spell in the UI, if that's an option then it's probably best to just hide the effect

cyan phoenix
cyan phoenix
inner vector
#

SFP isn't casting it

#

OpenMW is

#

thats why two show up

#

its basically the same problem as our spell projectile issue. The engine sees icon, sees duration, sees school type, makes a buff show up.

#

buff does nothing

#
fields.hasDuration = source and source.hasDuration
fields.hasArea = source and source.hasArea```
#

so you are saying we can still have all that, but make the engine not show it when we cast it?

cyan phoenix
#

Lemme check that real quick

inner vector
#

I feel like it must be on my end

#

because otherwise, all the custom spell mods would have this issue

#

right?

cyan phoenix
#

Hmm you're right actually, it shows when vanilla casting

#

for like a 1 sec

#

My bad

inner vector
#

yeah the way the engine handles non castable spells

#

isn't to do nothing

#

it just... pretends

#

on target spell with no data inside it?

#

cast defaultVFX

#

it also loves to use anything it can to figure out what to cast

cyan phoenix
#

Must be a way to counter that somehow

#

or providing a dummy defaultVFX

#

NC and no mesh

inner vector
#

I do

cyan phoenix
#

Well then, seems complete to me 😄

inner vector
#

thats what invisible nif is for

#

and the omwaddon

#

is the spell bolt weapon record

#

using the invisibile nif

cyan phoenix
#

Yeah

inner vector
#

and the silence.wav supresses the sound it makes

#

because ofc it makes sound too

#

i guess its better than the game crashing

#

no spell effect -> cant cast -> break engine

cyan phoenix
#

The workarounds are just sweet haha

inner vector
#

for being pretty reliant on AI for coding, I'm actually quite clever at thinking of unique fixes

#

its not the best at fixing engine level issues

#

without being like

#

"patch OpenMW"

#

bruh no.

#

i'm not gonna do that

#

even the current issue, it insists we can't fix it without breaking our UI hoverover and I'm like "what if we just remove the spell icon the moment it activates?"

lethal crane
#

honestly surprised AI handles the openmw apis well enough to make things work

#

with how obtuse the docs are

#

not that it really cares about difficulty finding things in there since it can just ingest the whole lot in one go I guess

inner vector
#

you can tell how well it does depending on how experienced the user is at using AI for coding and understanding what the API can do simply by looking at my early mods compared to now (hint, they were pretty rough. not awful, but pretty buggy and need/needed a lot of work)

#

if you just go in with a "build me an army mod worthy of mordor Dagoth Ur" its gonna probably make a pile of shit

#

I make it refer to openMW documentation for basically everything, I also have over time learned about the API myself as well so I understand more of what it can and can't do

#

I also quite often use the stones AI to destroy audit/craft the stones prompts

cyan phoenix
#

so you don't poll onFrame to save performance

#

just a delayed cleanup

#

since spellcast takes 1.00

cyan phoenix
#

😄

#

it seems to learn quickly though

inner vector
#

I mean I made GRIP before Codex existed

cyan phoenix
#

By reading and troubleshooting over and over you just get it eventually

inner vector
#

purely in GPT chat sessions

cyan phoenix
#

Yeah

inner vector
#

it was a lot harder to work with

#

since I had to feed it files

#

and it would lose context on old files so quickly

#

it was awful

cyan phoenix
#

I do it nowadays mostly 😄 since already antigravity free usage banned, copilot also depleted, cursor free tier too

inner vector
cyan phoenix
#

But I got my working methods as of now how to do it quite efficiently

inner vector
#

I'm a filthy pro subscriber now

cyan phoenix
#

no wonder I got my antigrav banned since I was juggling like 10 accts

#

but it was fun until it lasted

inner vector
#

100 big ones to Sam every month peepo_cry

#

just too many ideas to deal with free limits

#

was so annoying to hit limits after one prompt

cyan phoenix
#

and they added agentic gui so it's awesome

inner vector
#

ooo

cyan phoenix
#

recommend this site, you get free access to all models

#

with limits, but for example when using claude, you can use 4.6 and then when depleted 4.5 and then 4.6 without search and 4.5 without search

#

treated as separate models

inner vector
#

claude depletes so damn fast its wild

#

I even tried a paid sub for claude and literally first prompt into a openMW mod github link and it hit 5hr limit

cyan phoenix
#

Try arena.ai for creating extensive plans

inner vector
#

I dont think I've ever hit a limit with either the plus or pro sub for openai

cyan phoenix
#

with claude

#

it really does the job for me, even shit models tend to perform well after claude tailors nice plan

#

I got my ways 😄

inner vector
#

claude is fantastic for UI work and creative stuff

#

anyway which spells arent working?

#

I have a fix I wanna test

#

TR spells?

#

the hyacinth ones?

#

@lethal crane

lethal crane
#

think so yeah

inner vector
#

ofc you start typing right before I sent the ping KEK

#

sorry

lethal crane
#

iirc that's the ones in expanded-vanilla currently

inner vector
cyan phoenix
#

@inner vector this might be a solution for the dummy effects to not spawn anything, seems to load none of the engine things with this (nothing casts, no sound or vfx loaded from the engine - the cast animation starts normally of course like a normal spell Ossc starts the animation but no effects and vanilla casting is unable to start in such case, might help though anyway)

local function createEmptySpell()
    local id = 'empty_spell'
    if core.magic.spells.records[id] then return id end

    local draft = core.magic.spells.createRecordDraft({
        id = id,
        name = 'Empty',
        type = core.magic.SPELL_TYPE.Spell,
        cost = 0,
        effects = {},
    })
    local record = world.createRecord(draft)
    return record.id
end
magic moat
# inner vector claude depletes so damn fast its wild

Tell me about it! I use Claude for helping with debugging (It's SO good at parsing error messages, especially since I've fed it the lua API and my git repos) and most issues that are slightly larger than single line errors can take 10+ hours to fix because of rate limits. I also use Claude to help with UI things, because it's fantastic at that - I've always struggling with UI coding, I just can't visualise it.

I use Codex to help me realise more complex ideas into reality, like figuring out how to achieve some of my more radical passive effects.

But perk construction, more simple perk effects (TG, MT, IC, TT, FG) I've managed to achieve all by myself, and I get better at it every day.

Ideally I wouldn't need to use AI at all, but using it as a tool to assist me, learning from it, and improving myself feels ok. I still scour the documentation myself, learn how it all works, and often go back and correct or improve shoddy work that the AI did

civic marten
#

They should have called Aldritch

inner vector
#

I fell asleep

inner vector
#

that empty spell and this spell are literally the same in the eyes of OpenMW when it comes to actual spell effects, except the icon placeholders (type/duration/magnitude). The engine sees "this is a self spell, it lasts 60 seconds and has no magnitude. I will put the self spell icon (summon ghost) in the players UI for 60 seconds"

#

it doesn't actually cast any of the placeholder spells in the hoverover information, but it still creates an icon for the self spell

#

the easy fix is basically "don't make a tooltip" but then the user doesn't know what the spell does. The hard fix is "make your own tooltip/UI system yourself". My cheat fix is "don't actually fix it, just hide it before the user sees it"

#

the real fix is unknown but likely engine sided. Idk if it can be fixed, it certainly feels like something put in place to prevent crashing

#

all my issues seem to basically be "the engine is defaulting" in clever ways

#

OpenMW looks at the spell, sees its a target spell but it has no effect it can understand, tries to cast a placeholder spell projectile that does nothing. It also sees a self spell, but no effect it can understand, casts a placeholder spell buff that does nothing and lasts 60s.

#

viola

#

cheat fix

#

bug? no no... I dont see any bug

lethal crane
#

looks like it works

inner vector
lethal crane
#

Nothing really game breaking, just some issues with the spellmaking interface, like how it doesn't filter available effects based on whether they're marked available for custom spells so there's a lot of effects that are normally disabled in momw packs like fotrify skill and restore magicka.

inner vector
#

some spells aren't supposed to be spellcrafted still show up?

#

I thought I had a gate for that...

lethal crane
#

restore magicka is there, and it definitely isn't spellcraftable normally

#

as a sidenote, the way that the search input loses focus after each letter you type is pretty annoying, but I don't know if that's compatible with live updates on search

inner vector
#

search is broken too?

lethal crane
#

the filter

inner vector
#

ah I didnt know

lethal crane
#

not broken per se

#

it just loses focus so you have to click on it to type each next letter

inner vector
lethal crane
#

menu works, I assume fixing the restricted effect issue wasn't part of this patch

inner vector
#

are they still showing up?

#

lemme see... I thought I fixed that

#

oh whoops

#

still under todo

#

only figured out what was causing it

#

my bad sweatingheh

#

also isn't fortify skill something that works in vanilla spellcrafting??

#

I could have sworn you can go to mournehold and get the spell early and make whatever skill you want to be buffed

cyan phoenix
lethal crane
inner vector
#

got it

#

will do

cyan phoenix
#

No no, don’t get me wrong 😄 just giving the solution ideas

inner vector
#

😜

#

if I dont put anything else into the field (magnitude, damage, time) then it lacks information. it would just say (Summon Bonewalker) and not (Summon Bonewalker for 60s) or (Fire Damage) instead of (Fire Damage for 1-10dmg over 5 seconds in 10ft) batman_hmm

inner vector
#

This effect is not available in any standard spell that can be bought, it is available in potions and scrolls.

#

I can't even figure out how to give it to my player

#

to test it

#

it shows up only as ability flag

#

the TR ones are like racials they dont go in my spellbook

#

I have no idea if it worked or not though

lethal crane
lethal crane
inner vector
#

ditto

#

I'm going to add a window around the search bar

#

since its kind of invisible

#

Updated to v1.2

  • Fixed UI responsiveness when changing spell parameters and using search
  • Updates to Spell sorting/search window (fixed focus lost while searching, border added around search box)
  • Fixed custom spell detection and compiling, properly refuses 'spellmaking=false' spells
  • Fixed duplicating buff icons
cyan phoenix
#

so you don't get the defaulted vfx

lethal crane
#

Another intresting bug: Spellforge spells (or at least spells with triggered effects) are not properly attributed to the player for the purposes of assault bounties

#

so while homing projectiles will absolutely home in on friendlies and aggro them, this doesn't incur an assault or murder bounty.

#

there's something inconsistent about this, so it might only be some types of hit that behave like that or something, but it definitely fails to attribute sometimes

#

ok nevermind that one's my bad

#

it's actually an issue with how bounties and aggro work with creature actors and such

inner vector
inner vector
#

better to be safe than sorry

lethal crane
#

it's important to test whether beating someone over the head with a stick behaves the same way I suppose

inner vector
inner vector
#

Adding in a UI scaling preset to settings

#

investigating spells losing functionality randomly (but being restored on quicksave/load)

inner vector
inner vector
#

UI scaling options and spell recipe stability added

inner vector
#

neither bug reporter provided any logs, or any way to reproduce it so I'm firing kinda blind here

inner vector
#

still reporting issue

#

time for some sweeping log tracing I guess

worldly edge
#

modding is all fun and games until you learn how a colored line is actually drawn in openmw

inner vector
#

looks like some spells were somehow being flagged as ‘touch’ while firing as ‘target’ so spellforge was basically waiting for a touch spell from that refID forever, breaking that spell.

#

fixed in 1.3

#

addressing weakness to element spells showing as “points” instead of “Magnitude in %” and then I’ll push v1.3 to live

inner vector
#

Oh

#

its an openMW issue

#

(Warning: distilled by the machine spirit 👻 )

The spell hover path does this:

  • Reads the hovered spell record.
  • Copies each effect’s mEffectID, magnitude, duration, range, etc. into tooltip params.
  • Lets the generic spell-effect widget format the text.

Source: tooltips.cpp

Then the formatter asks the magic effect record for getMagnitudeDisplayType(). If that returns MDT_Percentage, it appends spercent; otherwise for normal magnitudes it appends spoint/spoints.

Source: widget.cpp

The critical bit is here: getMagnitudeDisplayType() is hardcoded by the built-in magic effect index. Weakness effects are percentage because their vanilla effect indexes are in the percentage ranges. Unknown/custom effect IDs fall through to MDT_Points.

Source: loadmgef.cpp

#

Now you may ask "Slowchu... why don't you just use actual weakness to spell effects in the tooltip?"

And the answer is: Because the vanilla cast path will actually cast it on top of the SFP cast

worldly edge
#

o_O

inner vector
#

This also means that ANY custom spell in 0.51 will not be able to present as % based

#

it will always display as Pts unless its some custom type of spell that already returns as % (like if you made a custom 'weakness to' spell)

worldly edge
#

you're talking about like that?

inner vector
#

Vanilla

#

Spellforge

#

We use 'empty' custom spells for our hover-over (custom spells with no effects, but the proper school/icon/etc automatically parsed)

#

if I use an actual weakness to ID for the hoverover

#

the vanilla cast path will cast it

#

so it doubles up

#

and there is no way to 'choose' between MDT_Percentage and MDT_Points

#

its hardcoded

worldly edge
#

you're using a custom tooltip right?

inner vector
#

the engine sees a custom spell, it defaults to MDT_Points

inner vector
#

Yesish

#

Noish

#

Its a real tooltip with fake spells

#

that way our spells live in the vanilla spell book

#

XP and cost chance and fatigue and skill and everything is driven naturally