[EXSP] Extended Spells Framework v1.4.4
[EXSP] Extended Spells Framework v1.4.4
Extended Spells Framework
LAST UPDATE: April 25th, 2013, v1.4.4
(see last post in this thread for 1.4.4 changelog)
Extended Spells is a script framework which expands the Legend of Grimrock spell system. It is also a spell library. This project’s original goal was to create spell spinners, as seen in Dungeon Master, Chaos Strikes Back and numerous other classic titles. However, the solution to this opened much broader possibilities, including attaching extended properties to spells and creating hooks for custom spell creation.
The system works by tracking each ProjectileSpell entity by its unique id (sId). Using a matching timer which ticks every tile of the spell progression, it becomes possible to know where a spell is at all times and execute scripts accordingly.
EXSP's documentaion has now been moved to a wiki: https://sites.google.com/site/exspwiki/home. The wiki is sill in progress.
What EXSP provides for your dungeon:
- Spell Spinners support out of the box, now 5 objects (rotate 90, 180, 270, channel in one direction, and teleport)
- Hooks for scripting custom spells, now: onCast, onPass, onHit, onMonsterHit, and onPartyHit
- Framework for scripting custom "smart" spells with extended properties
- Provide a function library which automates spell scripting tasks, such as areaOfEffect, changeSpellDirection, getCollisionAhead...
- Any spell cast by the party with the system carries the ordinal, and experience points are awarded correctly.
- Provides easy 1 line of code way to add spells to custom monsters, which take into acount leveling (defineRangedAttack)
- a spell plugin system to allow community to easily build and share spells
- There's not a single shootProjectile anywhere, it's all magic
You can download everything here: https://drive.google.com/folderview?id= ... sp=sharing
Extract exsp v1.4.4.zip in your mod_assets folder and follow setup instructions on the wiki. You must have JKos' framework installed.
IF YOU ONLY NEED SPELL SPINNERS: Download EXSP Lite!
See this post here: viewtopic.php?f=14&t=5355
LAST UPDATE: April 25th, 2013, v1.4.4
(see last post in this thread for 1.4.4 changelog)
Extended Spells is a script framework which expands the Legend of Grimrock spell system. It is also a spell library. This project’s original goal was to create spell spinners, as seen in Dungeon Master, Chaos Strikes Back and numerous other classic titles. However, the solution to this opened much broader possibilities, including attaching extended properties to spells and creating hooks for custom spell creation.
The system works by tracking each ProjectileSpell entity by its unique id (sId). Using a matching timer which ticks every tile of the spell progression, it becomes possible to know where a spell is at all times and execute scripts accordingly.
EXSP's documentaion has now been moved to a wiki: https://sites.google.com/site/exspwiki/home. The wiki is sill in progress.
What EXSP provides for your dungeon:
- Spell Spinners support out of the box, now 5 objects (rotate 90, 180, 270, channel in one direction, and teleport)
- Hooks for scripting custom spells, now: onCast, onPass, onHit, onMonsterHit, and onPartyHit
- Framework for scripting custom "smart" spells with extended properties
- Provide a function library which automates spell scripting tasks, such as areaOfEffect, changeSpellDirection, getCollisionAhead...
- Any spell cast by the party with the system carries the ordinal, and experience points are awarded correctly.
- Provides easy 1 line of code way to add spells to custom monsters, which take into acount leveling (defineRangedAttack)
- a spell plugin system to allow community to easily build and share spells
- There's not a single shootProjectile anywhere, it's all magic
You can download everything here: https://drive.google.com/folderview?id= ... sp=sharing
Extract exsp v1.4.4.zip in your mod_assets folder and follow setup instructions on the wiki. You must have JKos' framework installed.
IF YOU ONLY NEED SPELL SPINNERS: Download EXSP Lite!
See this post here: viewtopic.php?f=14&t=5355
Last edited by Diarmuid on Thu Apr 25, 2013 10:40 pm, edited 41 times in total.
Re: [SCRIPT] Fireball spinners!
Great work!
And luck with your CsB mod, much appreciated
And luck with your CsB mod, much appreciated
Dungeon Master Resource Pack worker and passionated Beer drinker
Re: [SCRIPT] Fireball spinners!
I don't know where I get the idea that we could not use teleporters with spells projectiles, but that's what I was thinking...
Until i see this thread and your video !
This is really impressive ! And this is just terrific !
Thanks Diarmuid !
Your scripting skills are something
Until i see this thread and your video !
This is really impressive ! And this is just terrific !
Thanks Diarmuid !
Your scripting skills are something
Last edited by LordYig on Thu Dec 06, 2012 8:01 pm, edited 1 time in total.
Re: [SCRIPT] Fireball spinners!
Well done! I'm amazed what you guys are able to do with scripting. This alone makes the many hours I've spent creating the editor worthwhile.
Re: [SCRIPT] Fireball spinners!
Wow, thanks all, and petri, coming from you it's humbling.
I'm working on an update which fixes the "sound file missing warning" you get in the editor, implements the 'blob' spell, and I'm also trying to make the script aware of activated/deactivated teleporters for more puzzle possibilities. This needs a bit more reworking, as right now the path is generated on the fireball launch and it will go on even if teleporters disappear, but I think it's doable.
Now, I'm wondering how to tackle the "wall" problem, to be able to put teleporters in the middle of rooms, or with open corridors behind.
For all of you who have made experiments with illusionary walls, doors, alcoves and such, is there an object which can generate a fireball collision but let the party and monsters through?
My other tought was to spawn an invisibly retextured secret door behind the teleporter and use a timer to close and open it really fast, calculating the delay based on spell speed and distance from previous teleporter. I'm not sure however how reliable this would be, I know JKos is using a similiar trick with his illusionary walls, I need to check his code.
If anyone has other suggestions...
I'm working on an update which fixes the "sound file missing warning" you get in the editor, implements the 'blob' spell, and I'm also trying to make the script aware of activated/deactivated teleporters for more puzzle possibilities. This needs a bit more reworking, as right now the path is generated on the fireball launch and it will go on even if teleporters disappear, but I think it's doable.
Now, I'm wondering how to tackle the "wall" problem, to be able to put teleporters in the middle of rooms, or with open corridors behind.
For all of you who have made experiments with illusionary walls, doors, alcoves and such, is there an object which can generate a fireball collision but let the party and monsters through?
My other tought was to spawn an invisibly retextured secret door behind the teleporter and use a timer to close and open it really fast, calculating the delay based on spell speed and distance from previous teleporter. I'm not sure however how reliable this would be, I know JKos is using a similiar trick with his illusionary walls, I need to check his code.
If anyone has other suggestions...
Re: [SCRIPT] Fireball spinners!
This was my thought as well, or something similar. You could use an invisible non-moving monster (but I think that would show damage numbers, hmm) or invisible blockage item perhaps if they offer any helpful alternatives (such as allowing a pressure plate to go up to signal the fireball has hit and the obstacle is no longer needed)Diarmuid wrote:My other thought was to spawn an invisibly retextured secret door behind the teleporter and use a timer to close and open it really fast, calculating the delay based on spell speed and distance from previous teleporter.
Finished Dungeons - complete mods to play
Re: [SCRIPT] Fireball spinners!
Allright, I did it!
Thanks komag for the monsters tip, it really put me on the right track, and hiding damage is easy (I got a crash course while doing the Goromorg Shield). I rewrote the whole script (updated in the post above) and now you can put teleporters anywhere you like, projectiles turn at the center of the teleporter like they should, it reacts to activate/deactivate, fun fun fun! (By the way, for the record, receptors on doors don't work, it really has to be on a wall, so I dumped the receptor model).
Check out the new video!
Right now there's one glitch, when using frostbolts, there's flashes of a frozen snail, as it substitues the "frozen" material to my invisible one. Anyone has a clue on how to fix this?
I'll keep testing for stability issues...
Thanks komag for the monsters tip, it really put me on the right track, and hiding damage is easy (I got a crash course while doing the Goromorg Shield). I rewrote the whole script (updated in the post above) and now you can put teleporters anywhere you like, projectiles turn at the center of the teleporter like they should, it reacts to activate/deactivate, fun fun fun! (By the way, for the record, receptors on doors don't work, it really has to be on a wall, so I dumped the receptor model).
Check out the new video!
Right now there's one glitch, when using frostbolts, there's flashes of a frozen snail, as it substitues the "frozen" material to my invisible one. Anyone has a clue on how to fix this?
I'll keep testing for stability issues...
Re: [SCRIPT] Fireball spinners!
would it be possible to on-the-fly substitute real frostbolts for custom one or fake ones that don't freeze anything?
Finished Dungeons - complete mods to play
Re: [SCRIPT] Fireball spinners!
Actually, simply putting immunites fixed it, I should have set that from the start anyway. I've also fixed an error in the timers calculation, I had done distance*speed instead of distance/speed... Now it should be quite fine.
Oh and by the way, blob is difficult to implement as it's its own "bolb" hardcoded class. If I send fake blob projectileSpells they do damage, and if I send fake bob projectiles they don't emit light. It might be possible to filter out blob damage, but it will require a whole other layer of coding on top of the above script. But now I'll get back to my dungeon for a bit or it'll never get done - I'll try to think about that blob thing this next week or so.
Oh and by the way, blob is difficult to implement as it's its own "bolb" hardcoded class. If I send fake blob projectileSpells they do damage, and if I send fake bob projectiles they don't emit light. It might be possible to filter out blob damage, but it will require a whole other layer of coding on top of the above script. But now I'll get back to my dungeon for a bit or it'll never get done - I'll try to think about that blob thing this next week or so.