Page 1 of 10

[EXSP] Extended Spells Framework v1.4.4

Posted: Thu Dec 06, 2012 5:51 pm
by Diarmuid
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

Re: [SCRIPT] Fireball spinners!

Posted: Thu Dec 06, 2012 6:08 pm
by germanny
Great work!
And luck with your CsB mod, much appreciated :)

Re: [SCRIPT] Fireball spinners!

Posted: Thu Dec 06, 2012 7:56 pm
by LordYig
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 :)

Re: [SCRIPT] Fireball spinners!

Posted: Thu Dec 06, 2012 8:00 pm
by petri
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!

Posted: Thu Dec 06, 2012 9:51 pm
by FrEEsiD
Sublime Diarmuid, un des trucs qui manquait pour CSB ;)

Re: [SCRIPT] Fireball spinners!

Posted: Thu Dec 06, 2012 10:47 pm
by Diarmuid
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...

Re: [SCRIPT] Fireball spinners!

Posted: Fri Dec 07, 2012 12:30 am
by Komag
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.
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)

Re: [SCRIPT] Fireball spinners!

Posted: Fri Dec 07, 2012 10:04 am
by Diarmuid
Allright, I did it! :D 8-)

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!

Posted: Fri Dec 07, 2012 1:26 pm
by Komag
would it be possible to on-the-fly substitute real frostbolts for custom one or fake ones that don't freeze anything?

Re: [SCRIPT] Fireball spinners!

Posted: Fri Dec 07, 2012 4:55 pm
by Diarmuid
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.