Well, I know of two options, but there might be more ways to deal with this.
1) No overlays
You can make a custom character. Then give this character sprites with your custom weapon. Then use 'set player role' to play as that character.
Pro: Easy, and no fiddling around necessary.
Con: Not flexible. The custom weapon stays there, also when a weapon is changed. So you'd have to detect weapon changes and then change your character to the correct one with the corresponding (custom) weapon.
2) Yes overlays
Overlays are not actually that difficult. I did a custom weapon with overlays in a beta hold that's about to be published now. It's a rainbow staff. It has a staff, with a rainbow on top of it. Fancy!
Secretized the code for your inspiration. Should be pretty clear what happens. Basically, it first clears all overlays (in my case, they were in layer 3). Then every turn, it applies them again in the updated user position.
Only part I don't understand anymore when looking back is the 'Set weapon off' part. I remember that there was some scripting quirk that needed mending.
Click here to view the secret text
×
Set player weapon Staff
Label Loop
Image overlay 0,CancelLayer 3
Label Check for swordlessness
Set var "_MyScriptX" = _X
Set var "_MyScriptY" = _Y
Set var "_MyScriptW" = 0
Set var "_MyScriptH" = 0
If ...
Wait for item Shallow water,0,0,0,0
Set var "_MyScriptX" = -9999
Set var "_MyScriptY" = -9999
Set var "_MyScriptW" = -9999
Set var "_MyScriptH" = -9999
Go to Finish loop
Else If
Set player weapon Off
Else
Set var "_MyScriptX" = -9999
Set var "_MyScriptY" = -9999
Set var "_MyScriptW" = -9999
Set var "_MyScriptH" = -9999
Go to Continue
If End
Label Continue
Set var ".WeaponX" = 22*(_X+(_O%3)-1)-121
Set var ".WeaponY" = 22*(_Y+(_O/3)-1)-121
If ...
Wait until var "_O" = 0
Go to ShowNW
Else If
Wait until var "_O" = 1
Go to ShowN
Else If
Wait until var "_O" = 2
Go to ShowNE
Else If
Wait until var "_O" = 3
Go to ShowW
Else If
Wait until var "_O" = 5
Go to ShowE
Else If
Wait until var "_O" = 6
Go to ShowSW
Else If
Wait until var "_O" = 7
Go to ShowS
Else If
Wait until var "_O" = 8
Go to ShowSE
If End
Label ShowNW
Label ShowSE
Image overlay 10004685,Layer 3 SetX $.WeaponX$ SetY $.WeaponY$ Scale 8 SetAlpha 120 FadeToAlpha 160 400 FadeToAlpha 120 400 Loop -1
Go to Finish loop
Label ShowN
Label ShowS
Image overlay 10004686,Layer 3 SetX $.WeaponX$ SetY $.WeaponY$ Scale 8 SetAlpha 120 FadeToAlpha 160 400 FadeToAlpha 120 400 Loop -1
Go to Finish loop
Label ShowNE
Label ShowSW
Image overlay 10004687,Layer 3 SetX $.WeaponX$ SetY $.WeaponY$ Scale 8 SetAlpha 120 FadeToAlpha 160 400 FadeToAlpha 120 400 Loop -1
Go to Finish loop
Label ShowW
Label ShowE
Image overlay 10004688,Layer 3 SetX $.WeaponX$ SetY $.WeaponY$ Scale 8 SetAlpha 120 FadeToAlpha 160 400 FadeToAlpha 120 400 Loop -1
Go to Finish loop
Label Finish loop
Wait 0
Go to Loop
Pro: No dedicated character needed, any size of weapon graphic will do. Even rotation could be done 'on the fly'.
Con: fiddling around to find the correct position to place the overlay will be necessary. Also, does not update in a timely mannner always. For instance, when dying, the overlay lingers on screen.
Lastly: the overlay will have to cover the original weapon completely, else it will still partly show and this is perhaps ugly (or it could be put to good use to only add the 'extra bit' to a default weapon).
Anyways, I think I'd use overlays in this case. It's ok, you can try even if you're afraid. Overlays definitely don't bite.
____________________________
Autocorrect is
not my friend. Apologies for the typos.
[Last edited by Dying Flutchman at 06-03-2019 03:13 PM]