I managed to create alternative teleporter effects, and with a bit of scripting and some invisible floor plates, the default and harcoded screen effect shown after the teleportation can be replaced as well.
In all I have 18 particle textures, each available in white, red, blue, green, yellow, purple and cyan.
That makes 126 new particles texturtes useable in ParticleSystem objects.
Here is an exemple of the available particles, with six colors shown, missing only the white/grey ones in the picture.

Below are exemples teleporters using some of the new particle effect, the fog is the default texture of the game, i just added the color in the ParticleSystem object.
(The shots have been taken in the editor with a torch in hand. No other source of lights were available, the teleporter lightsource has been turned off.)
Yellow | White | Red| Purple | Green | Cyan | Blue Teleporter
Post Update and Realease : 11/05/2012
I have uploaded the files at the grimrock.nexusmods.com site.
You can find the asset archive here : The Asset at grimrock.nexusmods.com
Here are some instructions that are taken from the readme file :
Install Files as follow
- Copy the "mod_assets" folder from the archive in your dungeon's directory
found in Documents\Almost Human\Legend of Grimrock\Dungeons\ >your dungeon's name< \
and merge the folder with the already existing "mod_assets" folder. - Open the mod_assets\scripts folder and you'll find a file named "objects.lua".
- Open this file with a text editor, such as notepad, and add the following to the end of the file :
import "mod_assets/scripts/particles_and_teleporters.lua" - Open >your Dungeon< in the Legend of Grimrock Dungeon Editor
When placing a custom teleporter, it is strongly advised to uncheck the following options on each custom teleporter object using one of the custom particle system provided by this pack.
- Emit Light : Unchecked
- Flash Screen : Unchecked
First in order for the following workaround to work it is advised to name each teleporter according to the following pattern : teleporter_< color >_xx
Where the color is either red, green, blue, cyan, purple, yellow or white. And where xx stand for the teleporter number such as 01, 09, 12, or 34. This simple naming convention is used to keep things clear and keep track of the teleporter number and color at the same time.
Once this is done follow those steps.
- Create a new script entity in your dungeon and name it as you like. A strong reference to the teleporter function is advised in the name of the entity in order to easily keep track of what has been done.
- Paste the following script in the script entity object.
Code: Select all
-- Play the right ScreenEffect for the teleporter function FlashRed(self) local teleporter_id = self.id:sub(1,17) local teleporter_entity = findEntity(teleporter_id) if teleporter_entity:isActivated() then party:playScreenEffect("teleport_red_screen_01") end end function FlashBlue(self) local teleporter_id = self.id:sub(1,18) local teleporter_entity = findEntity(teleporter_id) if teleporter_entity:isActivated() then party:playScreenEffect("teleport_blue_screen_01") end end function FlashGreen(self) local teleporter_id = self.id:sub(1,19) local teleporter_entity = findEntity(teleporter_id) if teleporter_entity:isActivated() then party:playScreenEffect("teleport_green_screen_01") end end function FlashYellow(self) local teleporter_id = self.id:sub(1,20) local teleporter_entity = findEntity(teleporter_id) if teleporter_entity:isActivated() then party:playScreenEffect("teleport_yellow_screen_01") end end function FlashPurple(self) local teleporter_id = self.id:sub(1,20) local teleporter_entity = findEntity(teleporter_id) if teleporter_entity:isActivated() then party:playScreenEffect("teleport_purple_screen_01") end end function FlashCyan(self) local teleporter_id = self.id:sub(1,18) local teleporter_entity = findEntity(teleporter_id) if teleporter_entity:isActivated() then party:playScreenEffect("teleport_cyan_screen_01") end end function FlashWhite(self) local teleporter_id = self.id:sub(1,19) local teleporter_entity = findEntity(teleporter_id) if teleporter_entity:isActivated() then party:playScreenEffect("teleport_white_screen_01") end end - Create a hidden pressure plate at the same spot of each teleporter using the "pressure_plate_hidden" object.
Be sure to configure each pressure plate with the following settings :- Triggered by Monsters : Unchecked
- Silent: Checked
- ! IMPORTANT PART !
Name the new pressure plate objects with same name as the teleporter where it is located adding a custom string to the name such as _flash or what you preferance could be.
The important part is that the teleporter and the pressure plate shares the same name (ID) up to the teleporter number. This is to ensure that the script work properly.
For example mine are named as below :
Teleporter object : teleporter_cyan_01
Associated hidden pressure plate object : teleporter_cyan_01_flash - Add a connector to each pressure plate to the script entity object.
Configure the connector with the following settings :- Event : deactivate
- Target : >your script entity object<
- Action : FlashWhite for white teleporter, FlashRed for red teleporters, etc...
- Go for a test run and enjoy.
I have a bunch of questions :
- First is this usefull in any way ?
- Then does the color are to bright ?
- Should they be tweaked before any release ?
If this needs tweaking I'll return to work some more on this.
So leave any comments, even if you think this is crap !







