Page 1 of 2

The EXSP Lab

Posted: Fri Jan 18, 2013 10:12 am
by Diarmuid
In a deep underground complex, mad alchemists are tampering with the fabric of magic, conducting forbidden experiences, creating new spells. Are you ready to visit the Laboratory?

Image


Here's the EXSP Lab
a testing playground for my spell creations.
Download the latest .dat here:
https://docs.google.com/folder/d/0B-rVm ... FEMUU/edit

This dungeon contains a series of Test Rooms where you can experiment with the different new spells I am creating, with the help of others on the forum. I thought that videos were fun, but actually experimenting this live is even better. I will update this regularly as new ideas come - all spells shown are included in the latest packaging of exsp: viewtopic.php?f=14&t=4459.

Here's what's contained in the Lab right now:

Test Room 01 : Grimwold's Magic Pack
- Healing
- Push Monster
- Hold Monster
- Burn Monster
- Freeze Monster
- Fire Storm
- Ice Cone
- Lightning Storm
- Poison Burst
- Antimagic Zone

Grimwold has given me permission to adapt his magic pack for exsp, and I cannot state how invaluable this was. Porting his spells allowed me to debug and streamline the framework, and create many useful functions that will be reusable in the future. Exsp allowing for more powerful scripting, his spells were slightly enhanced in the process. Here's Grimwold's and my notes:
SpoilerShow
To Use
======
Grimwold: New spells will automatically be available to wizards of the appropriate skill and level. Scrolls for each spell can be added through the editor. Anti-magic Zone objects can be placed using the editor. Add them to any space(s) in the dungeon and the party will be unable to cast spells if they stood in that space.
Diarmuid: You can select which spells to load by setting the variables below to true or false (all spells are loaded by default).

New Spells
==========

Combined Healing - Spellcraft level 16/24 based on caster's level will either heal champion with lowest percentage health or, above level 24, heal all champions.

Push Monster - Air magic level 5. Will cause a monster in front of the party to be teleported one space away if able.

Hold Monster - Earth magic level 5. A monster infront of the party is held and unable to move, turn or attack for a number of seconds based on the casters skill.

Burn Monster - Fire magic level 5. A monster infront of the party is burnt every 2 seconds, with duration and damage based on the caster's skill.

Freeze Monster - Ice magic level 5. A monster infront of the party is frozen. Duration is based on the caster's skill.

Fire Storm - Sample spell from Grimwold's Area of Effect System. Damages all tiles around the party.

Ice Cone - Sample spell from Grimwold's Area of Effect System. Damages monsters in a triangle of spaces in front of the party.

Lightning Storm - Sample spell from Grimwold's Area of Effect System. Damages monsters in a large square around the party.

Poison Burst - Sample spell from Grimwold's Area of Effect System. Damages monsters in the 3 spaces (orthogonally and diagonally) in front of the party.


Grimwold's Credits
==================
All scripts in this pack are written by myself. However there are a few people without whom this pack would not have been possible.

JKos - for explaining the damageTile() function in great detail.
Cromcrom and Akroma222 - for the initial idea of Area Effect spells.
Edsploration - for his idea of a teleport probe.


Diarmuid notes on EXSP adaptation:
==================================
- Healing:
* Added description to spell scroll.
- Hold Monster:
* Spell now works with monster groups, holding each individual monster.
* You can now hold multiple monsters on different tiles independently with their own delays and effects.
* Spell is now cast as a "BurstSpell" with light, sound & particle effect.
* Added new sustained FX to Hold Monster to avoid abrupt disappearing/reappearing smoke.
* Duration has been toned down a bit for balance(duration = skill instead of skill *2 ) and takes into account monster health: duration is reduced by 1s for each 100hp the monster has, stronger monsters will be less affected.
* Added description to spell scroll.
- Push Monster:
* Spell now uses exsp.getCollisionAhead to check for a free tile beyond the monster. It's more error-free than the probe (which could push a monster through a door, or trigger a pressure plate by mistake for example).
* Spell is now cast as a "BurstSpell" with light, sound & particle effect.
* Monster is now held for 0.2s after being pushed. to allow party to move in the square if desired.
* If monster is held by Hold Monster spell, the hold FX gets pushed as well.
* Added description to spell scroll.
- Burn Monster:
* Spell now works properly with monster groups, as the "group" will continue to burn even if some of the monsters in it die.
* Spell is now cast as a "BurstSpell" with light, sound & particle effect.
* Spell power is properly modelled after skill (skill/2).
* Added description to spell scroll.
- Freeze Monster:
* Spell is now cast as a "BurstSpell" as Grimwold originally intended it, in line with the rest of the cycle.
* Spell doesn't do any damage anymore, it just freezes.
* Duration has been aligned with that of Hold Monster for balance (duration = skill) and takes into account monster health: duration is reduced by 1s for each 100hp the monster has, stronger monsters will be less affected.
* Monster is now frozen at an exact (1s) duration according to skill, not in increments of 5s.
* Added description to spell scro ll.

Enjoy!
- Fire Storm
* Added light to visual effect.
* Toned down damage for balance (now power = skill*3) and raised skill requirement (20)
* Radius augments with skill level (base = 1, 2 after level 30, 3 after level 40 and 4 after level 50)
* Added description to spell scroll.
- Ice Cone
* The ice_shards effect now doesn't do damage, only the actual spell does.
* Toned down damage for balance (now power = skill*2, because it has a freeze chance) and raised skill requirement (20)
* Cone length augments with skill level (base = 2, 3 after level 30, 4 after level 40 and 5 after level 50)
* Spell has a 25% chance to freeze any monster it hits.
* Added description to spell scroll.
- Lightning Storm
* Added light to visual effect.
* Toned down damage for balance (now power = skill*3) and raised skill requirement (20)
* Changed chape to "diamond" from exsp.areaOfEffect, to differentiate from Fire Storm.
* Radius augments with skill level (base = 2, 3 after level 30, 4 after level 40 and 5 after level 50)
* Added description to spell scroll.
- Poison Burst
* Toned down damage for balance (now power = skill*2, because it also leaves the poison cloud) and raised skill requirement (20)
* Burst size augments with skill level (base = 1, 2 after level 30, 3 after level 40 and 4 after level 50)
* Added description to spell scroll.
- Anti-Magic Zone
* Spells which fly through an anti-magic zone are now destroyed.
Test Room 02 : Spell Spinners

Have fun with spell spinning!
http://www.youtube.com/watch?v=eil8ehFe304
http://youtu.be/gdD003Vqp5g

Test Room 03 : Wandering Lights

Spells that wander around, preying on unaware champions : http://youtu.be/HFFEfWZ-rjc

Test Room 04 : Diarmuid's Offensive Spells
- Chain Lightning : http://www.youtube.com/watch?v=zCWCfHaz-8k
- Elemental Storm : http://youtu.be/YJS_USBE3mk
- Flame Carpet : http://www.youtube.com/watch?v=w29n3evXES0
- Energy Beam (original idea by hyteria)

These show some of my spell creations. Brand new are Flame Carpet, a "fire" version of Ice Shards, something I've seen frequently requested on the forum, and Energy Beam, a spell that I created on request for hyteria. He supplied the wonderful idea of creating a beam of sustained energy that would drain the caster's mana for as long as he keeps his concentration, I did the execution.


Test Room 05 : Diarmuid's Utility Spells
- Zo Spell (Open Doors) : http://www.youtube.com/watch?v=kRtOYEHqh2s
- Reach Spell : http://www.youtube.com/watch?v=EITsiQxMlsU
- Spell Shield : http://www.youtube.com/watch?v=5yQWdIf0sXc

Test Room 06 : Portals!

From Aperture Laboratories to Mount Grimrock, the real thing: http://youtu.be/Xb7JpoInmmg

Re: The EXSP Lab

Posted: Fri Jan 18, 2013 10:16 am
by hyteria
very good job !!!!!!!

Re: The EXSP Lab

Posted: Fri Jan 18, 2013 12:11 pm
by Grimwold
Awesome stuff. A privilege to have my spells incorporated in your framework.

Re: The EXSP Lab

Posted: Fri Jan 18, 2013 4:24 pm
by Komag
Very cool, I like the idea of showcase things like this :)

Re: The EXSP Lab

Posted: Fri Jan 18, 2013 8:06 pm
by xbdj
Very nice!

However the game crashes when I cast freeze monster on the snail in test room 1

Re: The EXSP Lab

Posted: Fri Jan 18, 2013 8:50 pm
by Diarmuid
Aha! A bug... :twisted: I'm going to check it out, thanks for the feedback!

EDIT: It was a small thing I commented out while testing and forgot to reactivate. I've updated the Lab file and added the bugfix for next release of exsp.

The freeze function was anyway one really tricky to get going. For those interested, what is happening is:

1. monster:freeze(duration) gets a list of all monster ids in a tile (in case it's a group)
2. it makes all those monsters invulnerable to damage (so that the frostbolts below only freeze, no damage)
3. it fires 4 invisible frostbolts from the center of the tile outwards (this is to catch the monster if it's moving between two tiles). There are actually 60 cloned frostbolts with durations from 1s to 60s, named "exsp_freezeHelper_1" to "exsp_freezeHelper_60".
4. 0.2 seconds later, it destroys all invisible frostbolts that haven't hit a monster to avoid them flying away and it makes monsters vulnerable to damage again.

That way you can just freeze a monster instantly anywhere. I've tested it with a lever for example, very funny. You pull the lever and a skeleton freezes cold in the middle of the room :).

Re: The EXSP Lab

Posted: Fri Jan 18, 2013 10:06 pm
by Bluefire3366
#logfw_init:6: attempt to call global 'getMaxLevels' (a nil value)
stack traceback:
[C]: in function 'error'
[string "ScriptInterface.lua"]: in function 'close'
#logfw_init:6: in function <#logfw_init:4>
[string "ScriptEntity.lua"]: in function
'onMessageRecieved'
[string "MessageSystem.lua"]: in function
'sendMessageToEntity'
[string "MessageSystem.lua"]: in function
'broadcastMessage'
[string "TriggerEvents.lua"]: in function 'fire'
[string "Timer.lua"]: in function 'update'
[string "Map.lua"]: in function 'updateEntities'
[string "Dungeon.lua"]: in function 'updateLevels'
[string "GameMode.lua"]: in function 'update'
[string "Grimrock.lua"]: in function 'display'
[string "Grimrock.lua"]: in main chunk


This is the error message that I received upon opening the file for EXSP Lab in game.

Re: The EXSP Lab

Posted: Fri Jan 18, 2013 10:11 pm
by Diarmuid
Aaah sorry, that's because I'm developping another super secret spell in the lab, and forgot to unload the WIP spell before exporting, here we go again... The working .dat will be up in 1 min.

Re: The EXSP Lab

Posted: Sat Jan 19, 2013 3:02 am
by Darklord
Nice! :)

Daniel.

Re: The EXSP Lab

Posted: Sat Jan 19, 2013 3:35 pm
by germanny
Just tested the lab. This is all really wonderful! Great work. i love it!
And no errors found so far.