Legend of Grimrock 2

File information

Last updated

Original upload

Created by

germanny and minmay

Uploaded by

minqmay

Virus scan

Safe to use

Documentation

Readme

View as plain text

Germanny's Dungeon Master Resource
Legend of Grimrock 2 Port 1.2

================================================================================
= -1. Changelog
================================================================================

= 1.2
======
Bug fixes:
- Fixed inverted DM_ExcludeItemNormalMaps logic (whoops)
- Fixed chest normal map

= 1.1
======
Bug fixes:
- Fixed breakable doors crashing if hit by a non-item projectile with no attack
power.
- Fixed breakable stone and metal doors not having a particle effect when
destroyed by fire or lightning spells.
- Fixed a misplaced wall crack in Artifacts of Might.
- Removed an unused (and useless) set of textures.
- Properly attributed Phitt (just learned he made the bookshelves, oops)

New features:
- Added "original" versions of both stair models. These are shorter than the
default ones (6 meters instead of 9 meters) and have open-ended occluders, so
they will look and act the same as the stairs in the original Grimrock 1 pack.
You should always prefer to use the regular 9 meter versions, because they
look better. However, in the specific case that you need to put something
directly behind the stairs, the 9 meter versions may be too long.
- Breakable doors now show the HitSplash effect in the champion's attack panel
when they are attacked in melee or with a firearm, along with the damage done
to the door.
- Waterskins and water flasks now show their nutrition value, and still do not
give experience to farmers. These objects are no longer volatile; they are
retained when drunk, poured and refilled instead of being replaced by new
items.
- Lights that are already enabled no longer re-fade in when their controller is
activated.
- Added a section to this README (0.3. Clarifications) because of confusion
about the license.
- Added an angry section to this readme (0.4. Credits) because people keep
claiming that I (minmay) made the art assets. I didn't! Germanny did! Give him
the credit he deserves for the awesome textures and models!

Tweaks:
- Enabled alpha testing on the dm_chmail_mail material.
- Used a new conversion algorithm to improve the normal maps. Most are still
low quality because of the DXT1 originals, but the number and severity of
non-normal pixels should be much lower now, especially in mipmaps. The "good"
normal maps should be especially improved.
- Greatly improved normal maps for demon heads, stairs, and bloody walls.
- Shrunk some unnecessarily large item textures.
- Adjusted shading on various models (geometry has not changed). Blades look
much sharper now, and objects like beds and doors should look much better
in low lighting. The ornate door in particular is greatly improved.
- Improved stair occluder models. They fit more tightly than before, and are
lower-poly too.
- Made lanterns use the new candle flame particle texture.
- Blobs are now more compatible with receptors from other asset packs.
- Moved curtain handling out of breakable_door.lua and into curtains'
controllers, and added minimalSaveState to curtains.
- Made doors.lua a lot more readable.
- Added an extra clue about a secret button in Artifacts of Might.
- Enlarged a secret button in Artifacts of Might.
- Massively improved the performance of the Gardens in Artifacts of Might.
- Added a usage_note for the "original" stair versions.
- Moved options out of Config (old Config options are still supported for
backwards compatibility) and added a DM_FullBackwardsCompatible option.
- Changed the Fungal Pits fire trap in Artifacts of Might to use fireball_medium
instead of fireball_small (which was too comically small).
- Changed the Depths fire trap in Artifacts of Might to use fireball_large
instead of fireball_small.
- Vorpal Blade now uses a horizontal swipe.

= 1.0
======
Initial release

= Switching from version 1.0 to version 1.1+
===============================================================================
If you are switching from version 1.0 to version 1.1+, and you have placed
curtains, you need to remove some lines from your dungeon.lua, specifically any
line of the form
[curtain id].script:setSource("")
since curtains no longer have a ScriptComponent. Because a setSource("") call is
never useful in the first place, you can just use the following regular
expression in your preferred text editor's find and replace tool (replace it
with nothing):
^.*\.script:setSource\(""\)$

It is fine to leave empty lines in dungeon.lua; the editor regenerates
dungeon.lua every time you save, so the empty lines will go away automatically.

If you are too lazy to do this (even though it takes 5 seconds with find and
replace...), you can use the DM_FullBackwardsCompatible option explained in
section 1.4. Deleting the lines from your dungeon.lua is better, however.

================================================================================
= 0. Legal
================================================================================

= 0.1 License and Usage Terms
================================================================================
The Grimrock 2 port of Germanny's Dungeon Master Resource is distributed under
the following terms:

1. Assets in the Resource may only be used in mods for the Legend of Grimrock
series of games.
2. Assets in the Resource may not be used for any commercial purpose; your mod
must not be made for commercial advantage or monetary compensation.
3. If you use or redistribute any of the assets in the Resource, you must
include in your download, plainly visible: the full text of this
license, a notice that the assets are copyright Ralf Hinrichsen, and a
link to the original Germanny's Dungeon Master Resource download page
on Nexus Mods: http://www.nexusmods.com/legendofgrimrock2/mods/48/.
If you have made changes to any of the assets, you must state that
changes were made.
4. You may not suggest or imply that the licensor endorses your use of the
Resource.
5. This license may be modified or revoked by the licensor at any time with
immediate effect.

Remember to obey the modding terms from Almost Human as well:
http://www.grimrock.net/modding_log1/modding-and-asset-usage-terms/

The bookshelf models and materials are the property of "Phitt" and can be found
here: http://www.nexusmods.com/grimrock/mods/61/?

= 0.2 Exceptions
================================================================================
The following files are EXCEPTIONS to the license; they are distributed as
public domain, or CC 0. Therefore, you may use these files - and ONLY these
files - with no restrictions or credit required.
================================================================================
dm_metalbreak.wav - http://freesound.org/people/FngerSounds/sounds/249550/
dm_fire_extinguish.wav - http://freesound.org/people/urupin/sounds/192415/
consume_water.wav - http://freesound.org/people/timgormly/sounds/145387/
================================================================================

= 0.3 "Human-readable" summary
================================================================================
This is a summary of, but NOT a substitute for, the license.

All you have to do to use the pack is copy section 0.1 above and distribute it
with your mod. You can paste it into your mod's in-game description, include it
in your README, or as a separate text file, it just needs to be plainly visible.
You do not need to include section 0.2, or any other section (but you can if
you want to).

If you change the assets, you only need to say "I made changes to the assets".
You do not need to specify which assets you changed, or what the changes were.

Point 2 in the license means that you cannot sell your mod, and you cannot
advertise in your mod. A similar clause is also present in the general Grimrock
modding terms:
http://www.grimrock.net/modding_log1/modding-and-asset-usage-terms/

Point 5 in the license does not mean that we can have your mod taken down, or
sue you, or suddenly make you stop using the assets. That clause is only
present because we may want to release the pack under a different license in the
future. In that case, we would want to discard the old license. You do not need
to worry about it yourself.
Again, there is a similar statement in the general Grimrock modding terms in the
last bullet point on that page.

= 0.4 Credits (again)
================================================================================
I have seen people confused about the authorship of this pack. I really tried to
emphasize who did what, on the Nexus page and elsewhere, but apparently it's not
enough. So, here goes:

germanny did all of the following:
Original Grimrock 1 pack: http://www.nexusmods.com/grimrock/mods/231/
All models except occluders and bookshelves
All textures except water_disp.dds, automap icons, and WizWood
All sounds and music except the ones in section 0.2 and silence.wav

minmay did all of the following:
Conversion to Grimrock 2
All code
This README
Artifacts of Might
Occluder models (total triangles: 86)
water_disp.dds, automap icons
silence.wav
Small tweaks (elevation support, performance and filesize optimizations)
to a few models and textures

Phitt made the bookshelf models and textures:
http://www.nexusmods.com/grimrock/mods/61/?

I have seen people switch us around more than once, crediting the art assets to
me and the code to germanny. This is very unfair to germanny, because making the
art assets was WAY more work, and WAY more impressive, than the small amount of
programming I did. So please stop doing it!

================================================================================
= 1. Quick Start Guide
================================================================================

= 1.1 Introduction
================================================================================
This is the Grimrock 2 version of Germanny's Dungeon Master Resource, an asset
pack inspired by the classic game Dungeon Master. It brings Dungeon Master's
environments to the Grimrock world with original, high quality models and
textures. Almost every item from Dungeon Master is included, too, as are a
variety of new assets to create interesting new environments.
The Grimrock 2 port comes with many new features over the Grimrock 1 version:
- Elevation support
- Water support
- Tiles
- Automatic wall dirt and corners
- Many improvements to objects made possible by the component system
- Occluders, ItemConstrainBoxes, and all the other features needed for good
Grimrock 2 objects
- Bug fixes and optimization
- And more!
Although the Resource is inspired by Dungeon Master, no copyrighted content has
been taken from it. All of the assets are 100% original.

This download also includes the example dungeon, Artifacts of Might, which shows
how to use the various assets. Open up ArtifactsOfMight.dungeon_editor in the
Dungeon Editor to look at it; if you want to play it, just export the dungeon
(File -> Export...) and you can play it from the Custom Dungeons menu.
If you already downloaded the standalone version of Artifacts of Might, there is
no need to export this version; both are the exact same dungeon.

It is possible that there will be future versions of this pack if bugs are
found or improvements are made. All future versions WILL be backwards
compatible; you won't have to change your dungeon because of a new version.

= 1.2 An important warning about memory
================================================================================
Grimrock 2 is a 32-bit Windows application. This means that it has a maximum of
2 gibibytes of memory (2.15 gigabytes) available, regardless of how much RAM
your computer actually has. Furthermore, because of several other factors, it
can't actually use all of that 2 gibibytes either. If your mod has excessively
high memory usage - usually from loading an excessively large amount of textures
- it will crash no matter what kind of PC the player has. This is most likely
to happen when the game is saved, as this requires allocating a lot of memory.
A good guideline is to stay under 1.3 gibibytes (1.4 gigabytes) when texture
resolution is set to "High"; Isle of Nex, the main campaign, stays well below
this level.
The Dungeon Master Resource is a large asset pack, as I'm sure you've noticed;
more than 300 MiB uncompressed. Therefore, when using it, you need to exclude
assets - including standard assets - that you aren't using.
The easiest way to reduce memory consumption is to avoid defining materials that
aren't used, as textures are very big. The example dungeon's materials.lua shows
how to do this: import the files from the standard assets that you're interested
in, and not the ones that you aren't. Sometimes, you'll want some but not all
materials from a file, in which case you'll want to copy over the definitions
that you want instead of importing the whole file. The example dungeon excludes
most standard materials by doing this.

= 1.3 How to install the pack in your mod
================================================================================
Installing the asset pack in your mod is plug-and-play: simply put the
dmcsb_pack directory in your mod_assets directory, then add this line to your
init.lua:
import "mod_assets/dmcsb_pack/scripts/dmcsb_pack_init.lua"

Please read section 1.2 above, and don't import all the standard assets too! The
Dungeon Master Resource only requires a few standard assets; a complete list is
in Appendix A, or you can simply use this set of standard files to cover all the
dependencies (be careful not to import the same file twice):
-- Required objects
import "assets/scripts/objects/base.lua"
import "assets/scripts/objects/generic.lua"
import "assets/scripts/objects/water.lua" -- for water materials

-- Required items
import "assets/scripts/items/misc_weapons.lua" -- torch (used by dm_sconce)
import "assets/scripts/items/throwing_weapons.lua" -- rock (used by breakable
-- cave-ins)
import "assets/scripts/items/staves.lua" -- fear_cloud particle system (used by
-- horn of fear)

-- Required materials
import "assets/scripts/materials/generic.lua" -- "black" material
import "assets/scripts/materials/items.lua" -- "torch" and "rock" materials

-- Required spells and sounds (note: you need to import all spell files if you
-- import spells.lua; this is just the list of spell files that are specifically
-- used by the Dungeon Master Resource, either because of items that cast those
-- spells, or something else that uses the sounds)
import "assets/scripts/spells.lua"
import "assets/scripts/sounds.lua"
import "assets/scripts/spells/fireball.lua"
import "assets/scripts/spells/fireburst.lua"
import "assets/scripts/spells/frostburst.lua"
import "assets/scripts/spells/poison_bolt.lua"
import "assets/scripts/spells/poison_cloud.lua"
import "assets/scripts/spells/dark_bolt.lua"
import "assets/scripts/spells/blob.lua"
import "assets/scripts/spells/dispel.lua"
import "assets/scripts/spells/wall_fire.lua"

-- Required particles
import "assets/scripts/particles/blinded_monster.lua"
import "assets/scripts/particles/damage_fire.lua"
import "assets/scripts/particles/damage_shock.lua"
import "assets/scripts/particles/glitter.lua"
import "assets/scripts/particles/hit_wood.lua"
import "assets/scripts/particles/hit_goo.lua"
import "assets/scripts/particles/poisoned_monster.lua"
import "assets/scripts/particles/stunned_monster.lua"
import "assets/scripts/particles/torch.lua"

= 1.4 Configuration
===================
The Dungeon Master Resource supports configuration by defining the following
variables in your init files before you import dmcsb_pack_init.lua.
For example, to enable the DM_ExcludePortraits option, add the line
"DM_ExcludePortraits = true" to your init.lua, making sure it appears BEFORE
"import mod_assets/dmcsb_pack/dmcsb_pack_init.lua".

DM_ExcludePortraits - Set to a value other than nil or false and the
portraits will not be loaded. You can then delete the entire
portraits folders from the models and textures directories,
as well as hero_portraits.lua. Setting this option is equivalent
to simply removing the hero_portraits.lua import from
dmcsb_pack_init.lua.
The size and memory usage reduction from doing this is pretty
small, though - only about 2 MB.

DM_ExcludeItemNormalMaps - Set to a value other than nil or false and the
normal maps will not be included in the materials for items
(specifically, all materials in
dmcsb_pack/scripts/materials/items.lua). Normal maps for other
materials are still used. You can then delete the entire "Normal"
directory inside the mod_assets/dmcsb_pack/textures/items directory.
This will only reduce the size of your dat file by around 7 MB,
and will only reduce memory consumption by around 15 MB. But the
loss in graphical quality is also pretty small - the standard
Grimrock 1 and 2 assets don't have normal maps for items either.

DM_FullBackwardsCompatible - Set to a value other than nil or false and various
things will be compromised in order to maintain backwards compatibility
with older versions. I would strongly prefer that you never use this
option, and update your dungeons instead (I always provide an easy way to
do so). But this option still exists in case you really are that lazy.

More options may be added in future versions, but if so, they will always begin
with "DM_".

= 1.5 How to use the pack after installing it
================================================================================
The best way to learn how to use the asset pack is to follow these steps:
1. Play the example dungeon.
2. Start using the objects in your own dungeon, consulting the example dungeon
and the object and item lists whenever necessary. Pay attention to which objects
are tagged with minimalSaveState (see section 1.7).

You should also read section 2.2 at some point, otherwise you won't know how to
handle certain elevation transitions correctly.

= 1.6 How to get the most from the example dungeon
================================================================================
First of all, play it all the way through from the Custom Dungeons menu, so you
can really get a good idea of the look and feel of the pack. Don't try to play
it through the editor preview; it's too long, you'll want to be able to save.
Next, when consulting it in the editor, press Ctrl+F and search for "usage".
This will lead you to various usage_note objects; examine them and they will
explain how to use everything in the pack, with examples placed right next to
them. Objects that don't have these notes should be self-explanatory.
For details about the gameplay of the example dungeon, consult
README_ArtifactsOfMight.txt.

= 1.7 Editor tags
================================================================================
"decoration" - The object is generally only used as a decoration.

"destroysSelf" - Some Dungeon Master Resource objects simply spawn other objects
and destroy themselves when created; this is how the automatic
wooden pillars and such work. The new object(s) won't have the
same id as the original object, meaning that you should never
use the id of an object that has the destroysSelf tag.

"dm" - All Dungeon Master Resource objects are tagged "dm". Note that
some, such as the door button, are hidden in the editor.

"dm_item" - All Dungeon Master Resource items are tagged "dm_item".

"dm_user" - This tag is for Dungeon Master Resource objects that are NOT
items and would typically be placed by the user. Objects that the
user typically doesn't have to care about, such as the fire
detectors used for breakable doors, aren't included in this tag.
Most objects that have neither dm_user nor dm_item are hidden
from the editor entirely because almost no user would ever need
to place them manually.
Items are excluded from this tag to reduce clutter in the object
panel, not for any semantic reason; it's convenient to have
items separated from other objects.

"light" - All Dungeon Master Resource light sources (except for items)
are tagged "light".

"minimalSaveState" - All Dungeon Master Resource objects with minimalSaveState
have this tag. Objects with minimalSaveState only have their
name, id, level, x, y, facing, and elevation saved. This means
that you should NEVER change the state of the object: never use
setWorldPosition on it, never disable or enable components on
it, never do anything to it after spawning it, because all those
changes will be lost when the player saves and reloads. The ONLY
changes it is safe to make on a minimalSaveState object are:
- Changing its map position with GameObject:setPosition() (but
NOT setWorldPosition)
- Destroying it completely with GameObject:destroy()

"pillar" - Self-explanatory.

"surface" - Self-explanatory.

"wall" - The object replaces the wall it's placed on.

= 1.8 How to give credit
================================================================================
The easiest, safest ways to give appropriate credit are:
- Distributing a readme with your mod that includes the license in section 0.1.
- OR including the license in your mod's in-game description.
- Also, if you made any changes to the assets, remember to say so.

= 1.9 Known issues
================================================================================
- Most normal maps are poor, as I do not have good tools to work on them. In
addition, most were converted to green-alpha style from the DXT1
versions distributed in the Grimrock 1 Dungeon Master Resource, rather
than the originals (since I don't have them), resulting in heavily
degraded color. This is noted in the material definitions; "degraded
normalmap" means that the map was converted from the DXT1 version rather
than the original.
- Wall dirt and pillar building routines are slow.
- The chest item doesn't have an "opened" item icon.
- There is a delay of 1 frame between hitting a breakable door and the damage
being shown.

= 1.10 Things not ported over from the Grimrock 1 version
================================================================================
- The bone torch. Its item icons were broken and I don't have the skill to
redraw them.
- dm_water_tile. It is incompatible with the way Grimrock 2 handles water.

================================================================================
= 2. Tiles and detailed dungeon building
================================================================================

= 2.1 Tile list
================================================================================
All tiles are prefixed with "dm" and made up of the following identifiers:
"floor" - a floor tile
"water" - an underwater floor tile
"wall" - the wall tile
"auto" - automatically places random wall decorations
"fC" - flat ceiling (does not support elevation changes)
"wC" - wooden ceiling
"sP" - stone pillars
"wP" - wooden pillars
"mossy" - mossy walls and mossy wooden pillars
"very_mossy" - very mossy walls and very mossy wooden pillars

Some combinations are not available because they are incompatible (e.g. wooden
pillars can only be used with wooden ceilings, not flat ones). Note that "auto"
tiles do NOT place pillar, floor, or ceiling decorations; you have to add those
yourself. However, only the wooden pillars have pillar decorations.

dm_floor_auto_fC
dm_water_auto_fC
================
Ordinary walls. No pillars. Flat ceiling. Automatic random placement of cracks,
drains, scratches, demon heads, wall chains, hooks, rings. Does not support
elevation.

dm_floor_auto_fC_sP
dm_water_auto_fC_sP
===================
Ordinary walls. Stone pillars. Flat ceiling. Automatic random placement of
cracks, drains, scratches, demon heads, wall chains, hooks, rings. Does not
support elevation.

dm_floor_auto_mossy
dm_water_auto_mossy
===================
Mossy walls. Mossy wooden pillars. Wooden ceiling. Automatic random placement of
drains, scratches, cracks, dry outlets, wall chains, hooks, rings. Supports
elevation.

dm_floor_auto_wC
dm_water_auto_wC
================
Ordinary walls. No pillars. Wooden ceiling. Automatic random placement of
cracks, drains, scratches, demon heads, wall chains, hooks, rings. Does not
support elevation.

dm_floor_auto_wC_sP
dm_water_auto_wC_sP
===================
Ordinary walls. Stone pillars. Wooden ceiling. Automatic random placement of
cracks, drains, scratches, demon heads, wall chains, hooks, rings. Supports
elevation.

dm_floor_auto_wC_wP
dm_water_auto_wC_wP
===================
Ordinary walls. Wooden pillars. Wooden ceiling. Automatic random placement of
cracks, drains, scratches, demon heads, wall chains, hooks, rings. Supports
elevation.

dm_floor_fC
dm_water_fC
===========
Ordinary walls. No pillars. Flat ceiling. Does not support elevation.

dm_floor_fC_sP
dm_water_fC_sP
==============
Ordinary walls. Stone pillars. Flat ceiling. Does not support elevation.

dm_floor_mossy
dm_water_mossy
==============
Mossy walls. Mossy wooden pillars. Wooden ceiling. Supports elevation.

dm_floor_very_mossy
dm_water_very_mossy
===================
Very mossy walls. Very mossy wooden pillars. Wooden ceiling. Supports elevation.

dm_floor_wC
dm_water_wC
===========
Ordinary walls. No pillars. Wooden ceiling. Does not support elevation.

dm_floor_wC_sP
dm_water_wC_sP
==============
Ordinary walls. Stone pillars. Wooden ceiling. Supports elevation.

dm_floor_wC_wP
dm_water_wC_wP
==============
Ordinary walls. Wooden pillars. Wooden ceiling. Supports elevation.

dm_wall
=======
Identical to the wall tiles in the standard assets. Provided for convenience.

= 2.2 Manual dungeon building
================================================================================
Sometimes the dungeon builder fails to automatically place pillars where they
are needed (specifically, on ceiling elevation transitions). In this case, you
need to place the pillars yourself. You are strongly advised to use the objects
tagged "pillar" for this, as they will automatically choose the correct model
taking into account nearby walls, ceiling beams, and elevation.

In addition, you must place dm_ceiling_beam_half on ceiling elevation
transitions for wooden ceiling tiles. It is used the same way as
dungeon_wall_height_difference in the standard assets, except it is placed 1
square lower. The example dungeon has plentiful examples of this.
Ceiling elevation transitions for flat ceiling tiles are not supported at all.

dm_pillar_walledge_auto is a "pillar" used in the tiles that don't have pillars.
Its purpose is to cover up seams on the corners of walls. The tiles will always
place it correctly so long as there are no ceiling elevation transitions, and
the pillarless wallsets don't support elevation transitions in the first place,
so you only need it if you are manually building pillarless walls without using
the tiles. In this case, simply placing one dm_pillar_walledge_auto on every
wall corner (both inside and outside) is enough; it will automatically choose
the correct facing and even destroy itself if it is not needed.

All wall objects will automatically place wall dirt to cover up the seam between
the wall and the floor. dm_coffin_recess will also do this. Secret doors and
illusionary walls, however, will not, so you need to place it manually in those
cases. Secret doors will automatically remove wall dirt (with a particle effect)
when they open via their controller methods (this is why you should never use
the DoorComponent methods to open secret doors).
If there is already wall dirt for a wall when it initializes, that wall will not
make its own wall dirt. Thus, if you want a wall to have a specific wall dirt
object, you can simply place it like you normally would; the wall won't
interfere with it.

================================================================================
= 3. Non-item object list
================================================================================

dm_bigmushrooms
===============
Breakable obstacle: A cluster of large mushrooms. When destroyed, it leaves
behind several mushroom slices. You can set the number of slices with the value
of the sliceCount component; if this value is 0, a random number of slices
between 1 and 4 will be chosen upon initialization. To leave behind no slices at
all, use a negative number.

dm_bigmushrooms_broken
======================
Floor decoration: The broken version of dm_bigmushrooms. Pieces of smashed
mushrooms.

dm_bigmushrooms_damaged
=======================
See dm_bigmushrooms.

dm_campfire
===========
Obstacle: The campfire can be lit by touching it with hot items, such as a
torch (but not a burnt out one), fire blade, Fury, the Essence of Fire, Flamitt,
and so on. Fireballs and the like will also ignite it. It can be extinguished
again with watery or cold items, such as a water flask or the Ancient Claymore,
or with ice shards and frostbolts and the like. Water flasks and waterskins used
to extinguish the fire will be depleted.
Dungeon creators can also light and extinguish the fire at will using its
ControllerComponent.
The campfire has to resort to hardcoded lists of hot and cold items, so if you
make a new fiery weapon or something, don't forget to update the tables in the
campfire's definition. It also has to create extra objects to detect fire and
cold damage to its tile (this is how it can detect firebursts, fireballs, etc.),
in case you need to know that for any reason.
The campfire being lit or unlit has no gameplay effect, it just makes particles,
light, and sound.
Warning: Due to the campfire's projectile collider, projectiles thrown into it
with convertToItemOnImpact fields can end up making the new item on the side of
the campfire opposite the one they hit. This is because convertToItemOnImpact is
a completely broken feature, and really shouldn't be used regardless (there are
many, many other bugs with it).

dm_campfire_cold_detector
dm_campfire_fire_detector
=========================
These are the objects used to detect fire and cold damage on the campfire's
tile. It is not useful to place these yourself.

dm_carpet_a
dm_carpet_b
===========
Floor decoration: Patterned carpets.

dm_cave_in
==========
Obstacle: a cave-in. The cave-ins are "backwards" because the breakable cave-in
has a DoorComponent used to detect attacks. A variant of dm_ceiling_wood_cavein
should be placed above every cave-in object, facing the OPPOSITE direction. The
variants should be used as follows:
dm_ceiling_wood_cavein_ns - Use this object when the cave-in is facing north
or south and has a wall directly behind it.
dm_ceiling_wood_cavein_ns_00 - Use this object when the cave-in is facing north
or south but does NOT have a wall behind it.
dm_ceiling_wood_cavein_we - Like dm_ceiling_wood_cavein_ns but for cave-ins
facing west or east.
dm_ceiling_wood_cavein_we_00 - Like dm_ceiling_wood_cavein_ns_00 but for
cave-ins facing west or east.
Cave-ins are not compatible with flat ceilings, sorry!

dm_cave_in_breakable
====================
Breakable obstacle: This is the same as dm_cave_in, except that it may be
destroyed by attacking it in melee with a pickaxe or pick mattock. Other attacks
will have no effect on the cave-in, but will cause an hudPrint informing the
player that they need a pick. Remember to place the correct cave-in ceiling! See
dm_cave_in. When destroyed, the cave-in drops boulders and rocks; the number is
determined by the rockCount and boulderCount components in the same manner as
dm_bigmushrooms, except a value of 0 will lead to 1 or 2 rocks and 1 or 2
boulders, instead of between 1 and 4. See dm_bigmushrooms.

dm_cave_in_broken
=================
Floor decoration: The broken version of dm_cave_in_breakable. Obstructs a lot
of floor space (and has appropriate ItemConstrainBoxComponents) so use
carefully.

dm_ceiling_beam
===============
This is a wooden beam that you can use to connect pillars to each other through
open air. Wooden pillars will automatically choose the correct model to connect
to adjacent beams.

dm_ceiling_beam_half
====================
This is one half of a ceiling beam. It must be used on all ceiling elevation
transitions to cover up the gap; see the example dungeon for many, many
examples. It fills a similar role to dungeon_wall_height_difference in the
standard assets, but is placed one elevation level lower. Automatically chooses
the correct model for its facing.
NOTE: This object replaces itself with a new one upon initialization, and does
not retain its original id.

dm_ceiling_beam_icb
===================
This is the same as dm_ceiling_beam, but has an ItemConstrainBoxComponent to
prevent items from being placed inside it. You should use this if you need to
place a ceiling beam directly on the floor for some reason (e.g. to cover up
a floor tile transition). The Gardens in the example dungeon has many examples.
Otherwise, use the regular dm_ceiling_beam for better performance.

dm_ceiling_breakin
==================
A ceiling shaft showing a daylight sky above. This object is a bit awkward since
Grimrock 2 has a fancy day/night cycle with animated sky etc., but it's still
included just in case. It should be placed facing north so that it aligns with
the ceiling tiles.

dm_ceiling_fineweb
==================
Wall decoration: A spider web. Doesn't actually need to be placed on a wall;
it works fine so long as there is a wooden ceiling above it.

dm_ceiling_flat_00
dm_ceiling_flat_01
dm_ceiling_flat_02
==================
These are the three flat ceiling tiles. dm_ceiling_flat_00 is truly flat, the
other two are slightly warped. Must be placed facing north to align with the
dungeon builder's automatically placed tiles.

dm_ceiling_flat_shaft
=====================
The ceiling shaft tile for the flat ceiling. Must be placed facing north to
align with the dungeon builder's automatically placed tiles.

dm_ceiling_lamp
dm_ceiling_lamp_big
dm_ceiling_lamp_small
=====================
Light: These are simple light sources with no associated models or particles.
They look better placed under ceiling shafts.

dm_ceiling_lamp_shaft
=====================
Light: Another simple light source, but this one includes a spotlight and is
made specifically to be placed inside a ceiling shaft.

dm_ceiling_lantern_a
dm_ceiling_lantern_b
====================
Light: Metal lanterns that hang from the ceiling. These are for the wooden
ceilings only!

dm_ceiling_mushroom_01
======================
Ceiling decoration: Mushrooms and moss hanging from the ceiling. For wooden
ceilings only.

dm_ceiling_shaft
================
The ceiling shaft for the wooden ceiling. Automatically chooses the correct
model to tile with nearby ceiling tiles.
NOTE: This object replaces itself with a new one upon initialization, and does
not retain its original id.

dm_ceiling_spiderweb_02
=======================
Wall decoration: A spider web. Doesn't actually need to be placed on a wall,
but it DOES need to have a pillar directly to the right of it, and a wooden
ceiling or ceiling beam in the same location.

dm_ceiling_spiderweb_big
========================
Ceiling decoration: A large spider web. Wooden ceiling only.

dm_ceiling_wood_01
dm_ceiling_wood_02
dm_ceiling_wood_03
==================
The tiles for wooden ceilings. Each one actually has 16 different variations
depending on adjacent walls; the correct one will be chosen automatically when
you use these objects. The facing of this object is completely ignored; the
resulting ceiling will always be aligned north like the dungeon builder does.
NOTE: This object replaces itself with a new one upon initialization, and does
not retain its original id.

dm_ceiling_wood_cavein_ns
dm_ceiling_wood_cavein_ns_00
dm_ceiling_wood_cavein_we
dm_ceiling_wood_cavein_we_00
============================
See dm_cave_in.

dm_coffin_recess
dm_coffin_recess_broken
dm_coffin_recess_filled
dm_coffin_recess_filled_broken
==============================
These are recesses with coffins. They should be placed on void tiles, not
regular floor tiles or walls. Regular floor tiles would create floor/wall/etc
entities that won't be seen (hurting performance very slightly), and solid
tiles will prevent them from working at all. For gameplay purposes, these are
basically walls; the coffins can be broken open. The Crypt in the example
dungeon shows the various ways to use these.
Warning: Because the coffin is a breakable obstacle, projectiles thrown into it
with convertToItemOnImpact fields can end up making the new item on the side of
the coffin opposite the one they hit, making it inaccessible. This is because
convertToItemOnImpact is a completely broken feature, and really shouldn't be
used regardless (there are many, many other bugs with it).

dm_coffin_wood_01
========================
dm_coffin_wood_01 is an obstacle that can have items placed inside it. When
destroyed, it turns into a dm_coffin_wood_01_broken that copies all items
and connectors from the unbroken coffin. Note that although these are copied,
THE BROKEN COFFIN WILL HAVE A NEW ID.

dm_coffin_wood_01_broken
========================
A broken coffin similar to a chest that can be looted from any side. Note that
to allow looting without making the chest opening/closing sounds,
dmcsb_pack_init.lua redefines the chest_open and chest_close sounds to be
silent, and defines new sounds and animation events to return the "chest"
object in the standard assets to its original functionality.
It also has to create extra objects to do the chest animation.

dm_coffin_wood_filled
dm_coffin_wood_filled_brkn
============================
A coffin that acts as an obstacle. It can be broken, revealing the remains
inside, but will still be an obstacle afterward.

dm_coffin_wood_twins
dm_coffin_wood_twins_brkn
=========================
Like dm_coffin_wood_01 and dm_coffin_wood_01_brkn, but with two coffins instead
of one. See dm_coffin_wood_01, dm_coffin_wood_01_brkn.

dm_conduit_pipes
================
Wall: A recess with large metal pipes. You can disable the pipeLeft, pipeMiddle,
and pipeRight components to customize how many pipes are in the recess.

dm_conduit_pipes_leak
=====================
Please read the comment above this object's definition, and preferably the
definition itself as well, in conduit.lua. It is a complicated object and it's
important to understand the details before using it.

dm_conduit_textsign
===================
Wall text: A text sign intended to be placed on conduit pipes.

dm_conduit_wheel
================
dm_conduit_wheel should be placed over a set of conduit pipes with the middle
pipe enabled. It works like a lever, but it triggers with a 0.5 second delay
after being clicked on (since it takes time to turn the wheel far enough to
open/close the valve), and you can't toggle it again until it finishes turning
(so the player can't toggle it more than about once per second). Extra objects
are automatically created to accomplish this.

dm_curtain_blue
===============
A curtain that hangs on a wall and can be torn down by clicking on it. It can
also be incinerated by nearby fire damage. controller:open() will also
incinerate the curtain, and controller:start() will tear it down. (These are
weird semantics, sorry.) In Grimrock 1, curtains were torn down by melee attacks
instead of clicks, but there is no way to implement this cleanly in Grimrock 2.
Curtains are implemented as breakable doors; see dm_fakedoor_portc_stfr.

dm_curtain_blue_brkn
====================
dm_curtain_blue turns into this when it is torn down and there is floor beneath
it.

dm_curtain_blue_brkn_elevated
=============================
dm_curtain_blue turns into this when it is torn down and there is no floor
beneath it. The difference between this and dm_curtain_blue_brkn is that
dm_curtain_blue_brkn_elevated doesn't include the pieces of shredded curtain on
the floor (since there is no floor available).

dm_curtain_brown
dm_curtain_brown_brkn
dm_curtain_brown_brkn_elevated
dm_curtain_green
dm_curtain_green_brkn
dm_curtain_green_brkn_elevated
dm_curtain_red
dm_curtain_red_brkn
dm_curtain_red_brkn_elevated
================
See dm_curtain_blue. The brown curtain is plain and does not have the the winged
figure on it that the other curtains do.

dm_door_*
=========
All doors are suffixed with either "stfr" or "wfr". "stfr" means they have a
stone frame, which matches the stone pillars. "wfr" means they have a wooden
frame, which matches the wooden pillars.

dm_door_black_stfr
==================
A double door with a stone frame, made of black metal. Do not add a pull chain
to this door! Its frame is extra-large and not compatible with the button model.
(This is also why there is no wooden frame version available.)

dm_door_iron_stfr
dm_door_iron_wfr
=================
A double door made of iron and reinforced.

dm_door_ornate_stfr
===================
A double door with a stone frame, made of wood and decorated with gold and
jewels. Do not add a pull chain to this door! Its frame is extra-large and not
compatible with the button model.
(This is also why there is no wooden frame version available.)

dm_door_portcullis_simple_stfr
dm_door_portcullis_simple_wfr
==============================
A portcullis. Has 2040 triangles not including the frame, whereas
dm_door_portcullis has 3790 triangles. Generally you should just use the
dm_door_portcullis objects instead; they look better.

dm_door_portcullis_stfr
dm_door_portcullis_wfr
=======================
A portcullis.

dm_door_ra_stfr
dm_door_ra_wfr
===============
A translucent glass door with yellow splotches. Very different in appearance
from the Ra doors in Dungeon Master.

dm_door_redlock_stfr
dm_door_redlock_wfr
====================
A double door made of wood. The doors are joined together by metal with red
arrow symbols on it.

dm_door_sqlock_stfr
dm_door_sqlock_wfr
===================

dm_door_squarewin_stfr
dm_door_squarewin_wfr
======================
A wooden door with a rectangular barred window.

dm_door_wood_beams_stfr
dm_door_wood_beams_wfr
=======================
A wooden door reinforced with three wooden beams in a "Z" shape.

dm_door_wood_sbeams_stfr
dm_door_wood_sbeams_wfr
========================
A wooden door with two steel beams attached to each side.

dm_door_wood_stfr
dm_door_wood_wfr
=================
A plain wooden door.

dm_door_wood_twobeams_stfr
dm_door_wood_twobeams_wfr
==========================
Like dm_door_wood_beams, but with another beam added to make a
symmetrical "X" shape instead of a "Z".

dm_door_wood_woodwin_stfr
dm_door_wood_woodwin_wfr
=========================
A wooden door with a round barred window.

dm_fakedoor_*
=============
These doors can be destroyed by melee and projectile attacks. Do not open or
close the DoorComponent! Use the ControllerComponent methods instead.
Use controller:start() instead of door:setDoorState("open") and
controller:stop() instead of door:setDoorState("closed"). The reason you should
not use the DoorComponent methods is that the object has special projectile
colliders that it must deactivate when the door is opened.
When the door is destroyed, the GameObject is too, so be careful about this when
making scripts and connectors! If there is a script entity (specifically, any
object with a ScriptComponent named "script") on either side of the door when it
is destroyed, and it has a function named "onDoorDestroyed", that function will
be called and passed the breakable door GameObject as its only argument. The
object will be destroyed immediately after this function returns, so don't
bother doing anything to the object itself there. The most common use of this is
to remove connectors to the door (to eliminate console warnings for activating a
connector to a nonexistent object), but it could also be used to activate traps,
alert monsters, etc...

dm_fakedoor_portc_stfr
dm_fakedoor_portc_stfr_brkn
dm_fakedoor_portc_wfr
dm_fakedoor_portc_wfr_brkn
===========================
The breakable version of dm_door_portcullis. Since it's made of metal, it will
take a few hits to destroy - roughly 70 damage.

dm_fakedoor_wall
dm_fakedoor_wall_broken
=======================
The breakable version of dm_secret_door - in other words, a breakable wall. As a
clue to the player, it uses a different model where the bricks are loose and a
crack is visible. Takes roughly 50 damage to destroy.

dm_fakedoor_wood_stfr
dm_fakedoor_wood_stfr_brkn
dm_fakedoor_wood_wfr
dm_fakedoor_wood_wfr_brkn
==========================
The breakable version of dm_door_wood. Takes roughly 30 damage to destroy. If
you hit the door with a fireball or similar projectile, it will burn and
destroy the door immediately regardless of how much damage was done.

dm_floor_01
dm_floor_02
dm_floor_03
===========
The floor tiles. Should be facing north to align with the dungeon builder's
floor tiles.

dm_floor_drain_big
==================
A floor drain, larger than dm_floor_drainage. Should always be facing north to
tile with the dungeon builder's floor tiles.

dm_floor_drainage
=================
A standard size floor drain. Should always be facing north to tile with the
dungeon builder's floor tiles.

dm_floor_moss
dm_floor_moss_a
===============
The mossy floor tiles, used for the dm_floor_very_mossy tile. Should be facing
north to align with the dungeon builder's floor tiles. The mossy and non-mossy
floor tiles do NOT tile seamlessly with each other; you need to cover up the
seam with something. The example dungeon often uses dm_ceiling_beam_icb for
this.

dm_floor_mushrooms
==================
Floor decoration: A few small mushrooms sprouting from the floor.

dm_floor_puddle
===============
Floor: A standard floor tile with puddles of water. Does NOT use reflection or
a water surface, just a custom animated material.

dm_floordeco_rocks
==================
Floor decoration: A few small rocks.

dm_floordeco_sand
=================
Floor decoration: A pile of sand/dirt and rocks. Like the "floor dirt" in
the standard assets.

dm_floordeco_skeleton
=====================
Floor decoration: A decaying skeleton.

dm_floordeco_straw
==================
Floor decoration: A small pile of straw.

dm_kill_pillars
===============
A special object that destroys any Dungeon Master Resource pillars on either
side of it when it initializes. Not used in the example dungeon, but could be
useful if the dungeon builder's pillar placement ever puts one in a place you
don't want.

dm_kill_wall
============
An empty object with replacesWall. Use this to destroy wall models in the cases
where the dungeon builder puts them in bogus places. See usage_kill_wall in the
example dungeon for the most common example of this situation: a floor that is
more than 1 unit higher than an adjacent tile's ceiling, which creates two wall
models that you don't want.

dm_lock_block
=============
A simple lock. Opened by dm_key_square by default.

dm_lock_coinslot
================
A slot for coins. The coin slot consumes one coin with each click, decrementing
its coinsNeeded counter by 1 each time. When the counter reaches 0, it stops
accepting coins. Any connector attached to the lock will trigger each time a
coin is inserted; any connector attached to the counter will trigger only once
all coins have been inserted. If you want the slot to accept an unlimited number
of coins, simply set coinsNeeded to a negative number.
The coin slot will accept whatever item is specified in its lock's openedBy
field. dm_coin_gold, dm_coin_silver, and dm_coin_copper are the sensible choies;
other items work, but don't make much sense!

dm_lock_cross
=============
A lock with a cross symbol. Opened by dm_key_cross by default.

dm_lock_double
==============
This is two locks in one object. The lockCounter component is decremented by 1
each time one of the locks is unlocked, so if you leave it at its default value
of 2, it will activate once both locks are unlocked.

dm_lock_emerald
===============
A lock with a green symbol. Opened by dm_key_emerald by default.

dm_lock_gold
============
A fancy gold lock. Opened by dm_key_gold by default.

dm_lock_iron
============
A simple iron lock. Opened by dm_key_iron by default.

dm_lock_master
==============
A simple metal lock. Opened by dm_key_master by default.

dm_lock_mirror_slot
===================
Some kind of optical mechanism resembling an eye. Works like a lock, but when
you unlock it, the item used to unlock it is not destroyed. Sensible openedBy
items are dm_mirror_of_dawn and dm_magnifying_glass. (Makes more sense if you've
played Dungeon Master.)

dm_lock_onyx
============
Another simple metal lock. Opened by dm_key_onyx by default.

dm_lock_ra
==========
A fancy gold lock with a "sun" shape. Opened by dm_key_ra by default.

dm_lock_ruby
============
Yet another simple metal lock. Opened by dm_key_ruby by default.

dm_lock_sapphire
================
A lock with a blue symbol, matches dm_lock_emerald. Opened by dm_key_sapphire
by default.

dm_lock_skull
=============
A lock shaped like a skull. Opened by dm_key_skull by default.

dm_lock_topaz
=============
A fancy gold lock with blue topaz gemstones embedded in it. Opened by
dm_key_topaz by default.

dm_lock_tourquoise
==================
A lock with a bright blue pattern. Opened by dm_key_tourquoise by default.

dm_lock_winged
==============
A lock with a winged symbol on it. Opened by dm_key_winged.

dm_pillar_deco_chain
====================
Pillar decoration: A chain hanging from the pillar. For wooden pillars.

dm_pillar_deco_ivy
==================
Pillar decoration: Ivy growing up the side of the pillar. For wooden pillars.

dm_pillar_deco_nailchain
========================
Pillar decoration: A chain hanging from the pillar, plus several nails. For
wooden pillars.

dm_pillar_deco_spiderweb
========================
Pillar decoration: A spider web between the pillar and the ceiling beam. For
wooden pillars.

dm_pillar_stone
===============
Pillar: The stone pillar used when there is floor underneath it on all sides.
You, the modder, should use dm_pillar_stone_auto instead when possible.

dm_pillar_stone_auto
====================
Pillar: Automatically creates the correct one of dm_pillar_stone or
dm_pillar_stone_elevated depending on whether floor is available or not. This is
what you should use to place stone pillars. Note, however, that because a new
object is created and this one is destroyed, the pillar won't retain whatever
id you give it.

dm_pillar_stone_dirt
====================
Pillar: A stone pillar with extra dirt on the floor. You should use
dm_pillar_stone_dirt_auto instead when placing pillars manually.

dm_pillar_stone_dirt_auto
=========================
Pillar: Like dm_pillar_stone_auto, but with extra dirt on the floor version.

dm_pillar_stone_ivy
===================
Pillar: A stone pillar with a small ivy plant at the bottom. You should use
dm_pillar_stone_ivy_auto instead when placing pillars manually.

dm_pillar_stone_ivy_auto
========================
Pillar: Like dm_pillar_stone_auto, but with a small ivy plant on the floor
version.

dm_pillar_walledge
==================
Pillar: This is used in the no-pillars tiles to cover up the ugly seams that
result on corners. Since the no-pillars tiles don't support elevation
transitions of any kind or tunnels taller than 1 tile, you will never need to
place these yourself unless you are manually building a structure with raw wall
objects instead of using the tiles.

dm_pillar_walledge_auto
=======================
Pillar: Automatically creates a dm_pillar_walledge if needed, then destroys
itself. Since the no-pillars tiles don't support elevation
transitions of any kind or tunnels taller than 1 tile, you will never need to
place these yourself unless you are manually building a structure with raw wall
objects instead of using the tiles. Note that unless you make your wall squares
solid with a tile (not just blocked by an invisible_wall object or whatever),
this object won't be able to correctly detect whether a walledge is needed.

dm_pillar_wood
==============
Pillar: A wooden pillar. Automatically chooses one of 16 variations so that it
joins correctly with all adjacent walls, ceilings, and ceiling beams. Note that
because a new object is created and this one is destroyed, the pillar won't
retain whatever id you give it.

dm_pillar_wood_moss
===================
Pillar: A mossy wooden pillar. Automatically chooses one of 16 variations so
that it joins correctly with all adjacent walls, ceilings, and ceiling beams.
Note that because a new object is created and this one is destroyed, the pillar
won't retain whatever id you give it.

dm_pillar_wood_moss_full
========================
Pillar: A very mossy wooden pillar. Automatically chooses one of 16 variations
so that it joins correctly with all adjacent walls, ceilings, and ceiling beams.
Note that because a new object is created and this one is destroyed, the pillar
won't retain whatever id you give it.

dm_pit
======
A pit. Must be facing south to align with the floor tiles.

dm_pit_trapdoor
===============
A pit with a trapdoor. Must be facing south to align with the floor tiles.

dm_portrait_*
=============
Portraits of all the Dungeon Master characters, as in the Hall of Champions in
that game. An empty frame is also included (dm_portrait_nothing).

dm_pressure_plate
=================
A pressure plate made of raised stones that can be hard to spot. Must be facing
north to tile with the floor.

dm_pressure_plate_stone
=======================
A "standard" pressure plate. Must be facing north to tile with the floor.

dm_receptor
===========
A receptor, similar to the one in the standard assets.

dm_redcarpet_tile
=================
Floor decoration: A red carpet. Tiles with itself. Ends at dm_surface_throne;
you may have to end one or both ends with a wall or something instead (I used
two thrones in the example dungeon).

dm_sconce
=========
A sconce, similar to torch_holder in the standard assets.

dm_secret_button_big
====================
A large secret button.

dm_secret_button_crack
======================
A tiny secret button hidden in a crack in the wall. Very hard to see.

dm_secret_button_midbottom
==========================
A small secret button in the lower middle of the wall.

dm_secret_button_mini
=====================
A tiny secret button in the upper right of the wall.

dm_secret_door
==============
A secret door. Do not open or close the DoorComponent! Use the
ControllerComponent methods instead. This is because the door has to destroy
nearby wall dirt when it opens. (Note that unlike walls, the secret door does
not place wall dirt automatically; do it yourself.)
Use controller:start() instead of door:setDoorState("open") and
controller:stop() instead of door:setDoorState("closed").

dm_secret_door_window
=====================
Like dm_secret_door, but with a window in the middle. See dm_secret_door.

dm_socket_gem_slot
==================
A wall-mounted slot for a gem. Accepts the three mystic gems. Actually uses
a SurfaceComponent instead of a SocketComponent...

dm_spike_trap
=============
A spike trap that works just like the ones in the standard assets. This object
automatically makes the correct floor model for its own facing: you can align
the spikes in any direction you want, the floor beneath them will always be
aligned north and tile with the dungeon builder's floor.

dm_spike_trap_mossy
===================
Like dm_spike_trap, but for very mossy floors. See dm_spike_trap.

dm_spore_pod_dirt
=================
Floor decoration: A large patch of moldy dirt. You should place this under
dm_spore_pods.

dm_spore_pods
dm_spore_pods_damaged
=====================
Breakable obstacle: Giant spore pods that drop spore pod dust when broken. The
number of dust piles is determined by the value in the dustCount component in
the same manner as dm_bigmushrooms; see dm_bigmushrooms. This object doesn't
really look right unless it's placed on top of dm_spore_pod_dirt, so make sure
to do that.

dm_spore_pods_small
===================
Floor decoration: Smaller spore pods that can't be broken.

dm_stairs_down
==============
A staircase down. Its model occupies a pretty large area; see usage_stairs in
the example dungeon.

dm_stairs_down_wfr
==================
Like dm_stairs_down but with a wooden frame, for use in places with wooden
pillars.

dm_stairs_orig_down
===================
A staircase down with the same model as the original Grimrock 1 version and no
occlusion on the end (but still has occlusion on the sides, top, and bottom).
You should use dm_stairs_down instead wherever possible; see usage_stairs in
the example dungeon.

dm_stairs_orig_down_wfr
=======================
Like dm_stairs_orig_down but with a wooden frame, for use in places with wooden
pillars.

dm_stairs_orig_up
=================
Like dm_stairs_orig_down, but goes up instead of down. Again, use dm_stairs_up
instead if possible.

dm_stairs_orig_up_wfr
=====================
Like dm_stairs_orig_up but with a wooden frame, for use in places with wooden
pillars.

dm_stairs_up
============
A staircase up. Its model occupies a pretty large area; see usage_stairs in
the example dungeon.

dm_stairs_up_wfr
================
Like dm_stairs_up but with a wooden frame, for use in places with wooden
pillars.

dm_surface_bed_brown
====================
A bed with brown covers. Works as an altar-like surface.

dm_surface_bed_grey
===================
A bed with grey covers. Works as an altar-like surface.

dm_surface_table_round
======================
A round wooden table. Works as an altar-like surface.

dm_surface_table_square
=======================
A rough, rectangular wooden table. Works as an altar-like surface.

dm_surface_throne
=================
A stone throne with a red carpet leading up to it. Make sure to place
dm_redcarpet_tile objects in front; see dm_redcarpet_tile. The seat of the
throne acts as a small altar-like surface.

dm_timberstack
dm_timberstack_damaged
======================
Breakable obstacle: A stack of firewood. Creates logs when destroyed, using the
value of logCounter in the same way as dm_bigmushrooms; see dm_bigmushrooms.

dm_wall_001dirt
===============
Basic wall dirt. Remember that all walls (but not secret doors etc.) place wall
dirt automatically already; look at the example dungeon to see when you need to
place it manually.

dm_wall_01
dm_wall_02
==========
The basic walls.

dm_wall_alcove
==============
The basic wall alcove.

dm_wall_alcove_brick
====================
Another basic wall alcove, but with an extra brick across the top that makes the
alcove space slightly smaller.

dm_wall_altarvi
===============
An alcove resembling an Altar of Vi from Dungeon Master. Since Grimrock 2
doesn't have a death system like Dungeon Master's, this just acts like a regular
alcove for gameplay purposes (but feel free to change that!).

dm_wall_amalgam_active
dm_wall_amalgam_active_glowing
dm_wall_amalgam_burnt
dm_wall_amalgam_exposed_gem
dm_wall_amalgam_full
dm_wall_amalgam_full_glowing
==============================
Variations of the amalgam wall from Dungeon Master.
dm_wall_amalgam_full corresponds to the amalgam wall before anything has been
done to it.
dm_wall_amalgam_exposed_gem corresponds to the amalgam wall after melting the
gem out but before taking it; it glows and the gem hovers in place. Touching the
empty Firestaff to it will fuse the gem to the staff and turn the wall into
dm_wall_amalgam_burnt.
dm_wall_amalgam_burnt corresponds to the amalgam wall after taking the gem out.

dm_wall_amalgam_active corresponds to the amalgam wall after melting the gem
out, except that it doesn't glow or include the gem.
dm_wall_amalgam_active_glowing is the same, but includes the glowing.
dm_wall_amalgam_full_glowing is the same as dm_wall_amalgam_full, except that it
also glows.
Since this resource pack doesn't include Dungeon Master's spell system, there is
no included way for the player to melt the amalgam wall. You'll have to come up
with your own spell or puzzle for it, like I did in the example dungeon.

dm_wall_bigrocks
================
Wall dirt with some rocks.

dm_wall_bloodsplash_01
======================
Like a basic wall, but with a large bloodstain.

dm_wall_bookshelf_recess
========================
A wall with a recess containing a bookshelf filled with books. One of the
shelves has a gap that acts as a small alcove.

dm_wall_button_blue
===================
A wall with a blue diamond-shaped button.

dm_wall_button_green
====================
A wall with a green diamond-shaped button.

dm_wall_button_red
==================
A wall with a red diamond-shaped button.

dm_wall_button_yellow
=====================
A wall with a yellow diamond-shaped button.

dm_wall_chains
==============
Wall decoration: A wooden bar with shackles hanging from it.

dm_wall_crack
=============
A wall with a large crack on one of the bricks.

dm_wall_crack_surface
=====================
Like dm_wall_crack, but with a SurfaceComponent for hiding items in the crack.

dm_wall_crossbutton
===================
A wall with a plus-shaped button.

dm_wall_demonhead
=================
A wall decorated with a demonic head.

dm_wall_demonhead_blood
=======================
Like dm_wall_demonhead, but with bloodstains around the demon's mouth.

dm_wall_demonhead_blood_surface
===============================
Like dm_wall_demonhead_blood, but with a surface for hiding items in the mouth.

dm_wall_demonhead_surface
===============================
Like dm_wall_demonhead, but with a surface for hiding items in the mouth.

dm_wall_drain
=============
A wall with a drain at the bottom.

dm_wall_edgel
=============
A wall with slightly extruded bricks on the left side.

dm_wall_edgelr
==============
A wall with slightly extruded bricks on both sides.

dm_wall_edger
=============
A wall with slightly extruded bricks on the right side.

dm_wall_fountain
================
A wall with a fountain. The water does not use reflection or a water surface
object, just a custom animated material and particles. The fountain can be used
to fill waterskins and empty flasks.

dm_wall_fountain_dry
====================
A wall with a dry fountain.

dm_wall_fountain_dry_surface
============================
A wall with a dry fountain and a surface for hiding items in the empty basin.

dm_wall_grass
=============
Wall dirt: dirt with some grass growing in it.

dm_wall_grating_ironspike
=========================
A wall grating. Use in conjunction with dm_wall_grating_pillar. Remember that
wall gratings have minimalSaveState; do NOT make any changes to the state of the
grating other than GameObject:setPosition() and destroying it. Disabling
components is still a state change and you can't do it!

dm_wall_grating_pillar
======================
A pillar to be used between dm_wall_grating_ironspike objects.

dm_wall_hook
============
Wall decoration: a small wooden plate with a hook.

dm_wall_illusion
================
A fake double-sided wall that anything will pass right through.

dm_wall_ivy_center
==================
Wall decoration: an ivy plant hugging the wall.

dm_wall_ivy_left
================
Like dm_wall_ivy_center, but offset to the left a bit.

dm_wall_ivy_right
=================
Wall decoration: an ivy plant hugging the right side of the wall. Smaller than
dm_wall_ivy_center.

dm_wall_lever
=============
A wall with a lever embedded in it.

dm_wall_lichen
==============
A wall with lichen growing on it.

dm_wall_moss_a
dm_wall_moss_b
dm_wall_moss_c
==============
Walls with moss growing on them.

dm_wall_moss_full
dm_wall_moss_full_01
====================
Walls that are nearly covered in moss. Used for the very mossy tiles.

dm_wall_mushroom
================
Wall dirt: dirt with a cluster of mushrooms growing in it.

dm_wall_outlet
==============
A wall with an outlet full of congealed green goo, with a small puddle of it on
the floor below. Because of this puddle, make sure to only use this wall in
places where there's actually a floor directly under it.

dm_wall_outlet_dry
==================
A wall with an outlet that was once full of goo but is dry at the moment. This
one is fine to use without a floor under it.

dm_wall_outlet_dry_surface
==========================
Like dm_wall_outlet_dry, but with a surface for hiding items in the outlet.

dm_wall_planks
==============
Wall decoration: wooden planks covering most of the wall.

dm_wall_planks_sparse
=====================
Wall decoration: wooden planks covering less of the wall.

dm_wall_plant
=============
Wall dirt: dirt with a small plant growing in it.

dm_wall_recess
==============
A wall with a large recess in it.

dm_wall_recess_shelf_high
dm_wall_recess_shelf_low
dm_wall_recess_shelf_mid
=========================
Shelves that should be placed in a dm_wall_recess, with three different heights.

dm_wall_ring
============
Wall decoration: a large metal ring bolted to the wall.

dm_wall_ring_double
===================
Wall decoration: two large metal rings bolted to the wall.

dm_wall_ring_plate
==================
Wall decoration: a large metal ring attached to a wooden plate.

dm_wall_rocks
=============
Wall dirt: dirt with small rocks.

dm_wall_scratch
===============
A wall with scratches across its bricks and small bloodstains.

dm_wall_shooter
===============
A wall with two holes that might shoot darts, arrows, fireballs, or whatever you
want. The centers of the holes are 1.82658 meters off the ground, and 0.90513
meters from the center of the wall.

dm_wall_small_crack
===================
A wall with a small crack in it.

dm_wall_small_crack_surface
===========================
Like dm_wall_small_crack, but with a surface for hiding items in it. Unlike
other similar surfaces, your players can't insert items into it (it's *too*
small), only you can. It pretty much only looks good for objects like keys that
are very narrow.

dm_wall_text
============
A wall with runes engraved on it.

dm_wall_text_plate
==================
A metal plate that can be placed on a wall, with runes engraved on it.

dm_wall_wshroom
===============
Wall dirt: dirt with mushrooms coming from the cracks in the wall's bricks.
Unlike the other wall dirt objects, this one is never placed automatically
because it is the only one that reaches up into the wall itself (and is
therefore potentially intrusive). Place it manually where you want it, instead.

dm_water_surface_clear
======================
A water surface object with relatively clear water.

dm_water_surface_mossy
======================
A water surface object with murky water, well-suited to be used with the mossy
tiles.

================================================================================
= 4. Items
================================================================================

= 4.1 A word on item balance
================================================================================
In Grimrock 1's Dungeon Master Resource, the power of items, particularly
weapons, was significantly higher than that in the standard assets. In the
Grimrock 2 conversion, this has mostly been preserved, with several weapons and
armor going beyond anything the standard assets offer. You are encouraged to
change this if it's appropriate for your dungeon.
In Isle of Nex (the main Grimrock 2 campaign), light weapons are substantially
better than heavy weapons. In this asset pack, they should be evenly matched.
Combined with the previous point, this means that heavy weapons in this asset
pack are *overwhelmingly* better than the heavy weapons in the standard assets.

Throwing and missile weapons have very little representation in Dungeon Master,
so they have very little representation in the Dungeon Master Resource as well.
There are no firearms in the pack at all; there weren't any in Dungeon Master or
Grimrock 1.

Items in this pack have generally been given realistic weights. This may
clash with some items in the standard assets - in particular, most swords and
armor in the standard assets are impossibly heavy.

= 4.2 Item list
================================================================================

dm_armor_berserker_helm
=======================
Helmet
Light armor
Protection +4
1.1kg

Corresponds to the "Bezerker helm" item in Dungeon Master.

dm_armor_boots_of_speed
=======================
Boots
Protection +4
Dexterity +2
0.3kg

The party's speed is increased by 0.5 if all enabled party members are wearing
boots of speed. If only some enabled party members are wearing them, the bonus
is linearly scaled (so 1 of 4 party members = +0.125 speed, 2 of 3 = +1/3 speed,
etc). Whether the champions are alive or dead doesn't matter; this is
intentional and consistent with the behaviour of encumbrance and injuries in
Grimrock 2.
WARNING: If you ever modify the party speed yourself or enable/disable a
champion in a situation where any champion in the party may be wearing boots of
speed, it is very important that you call
party.dm_utils.recomputeSpeedBootsBonus() after doing so. The equipment hooks
alone do not and cannot account for these cases. recomputeSpeedBootsBonus()
accepts one optional parameter, which is the "base" party movement speed; if
left out it will default to 1, the speed the party starts the game with. Toorum
speed is 1.5.
Exception: if you make a purely additive/subtractive change to the party's
movement speed, e.g.
party.party:setMovementSpeed(party.party:getMovementSpeed()-0.5), you don't
need to worry about this (it's exactly what the boots of speed equipment hooks
do, in fact).

dm_armor_calista
================
Helmet
Protection +1
1.3kg

dm_armor_casquen_coif
=====================
Helmet
Light armor
Protection +7
2kg

dm_armor_cloak_night
====================
Cloak
Evasion +4
Dexterity +4
0.4kg

This is the only cloak in the asset pack. In Dungeon Master, the Cloak of Night
could be worn in either the body armor slot or the necklace slot. Although this
is easy to implement in Grimrock 2, it wouldn't make very much sense, so we made
it the only cloak instead.

dm_armor_crown_nerra
====================
Helmet
Protection +1
Willpower +3
1.5kg

dm_armor_darc_cuirass
=====================
Chest armor
Heavy armor
Epic
Protection +24
12.4kg

dm_armor_darc_cuisse
====================
Leg armor
Heavy armor
Epic
Protection +24
6.2kg

dm_armor_darc_greaves
=====================
Boots
Heavy armor
Epic
Protection +24
2.3kg

dm_armor_darc_helm
==================
Helmet
Heavy armor
Epic
Protection +24
3.2kg

dm_armor_flamebain
==================
Chest armor
Light armor
Protection +10
Resist fire +24
5.7kg

dm_armor_iron_barbute
=====================
Helmet
Heavy armor
Protection +5
1.8kg

Corresponds to the "Helmet" item in Dungeon Master.

dm_armor_lyte_cuirass
=====================
Chest armor
Heavy armor
Epic
Protection +21
6kg

dm_armor_lyte_cuisse
====================
Leg armor
Heavy armor
Epic
Protection +21
2.3kg

dm_armor_lyte_greaves
=====================
Boots
Heavy armor
Epic
Protection +21
0.8kg

dm_armor_lyte_helm
==================
Helmet
Heavy armor
Epic
Protection +21
1kg

dm_armor_mail_cuirass
=====================
Chest armor
Light armor
Protection +7
6.5kg

dm_armor_mail_cuisse
====================
Leg armor
Light armor
Protection +7
5.3kg

dm_armor_mail_greaves
=====================
Boots
Light armor
Protection +7
1.6kg

dm_armor_mithral_cuirass
========================
Chest armor
Light armor
Protection +11
Resist cold +5
5.2kg

dm_armor_mithral_cuisse
=======================
Leg armor
Light armor
Protection +11
Resist cold +5
4.1kg

dm_armor_mithral_greaves
========================
Boots
Light armor
Protection +11
Resist cold +5
1.2kg

dm_armor_plate_cuirass
======================
Chest armor
Heavy armor
Protection +10
10.8kg

dm_armor_plate_cuisse
=====================
Leg armor
Heavy armor
Protection +10
5.2kg

dm_armor_plate_greaves
======================
Boots
Heavy armor
Protection +10
2.3kg

dm_armor_plate_helm
===================
Helmet
Heavy armor
Protection +10
1.9kg

dm_armor_powertowers
====================
Leg armor
Heavy armor
Epic
Protection +18
Strength +5
8.1kg

The description of this item is a nod to the fact that it was not obtainable in
Dungeon Master except through cracking.

dm_armor_steel_barbute
======================
Helmet
Heavy armor
Protection +9
1.5kg

Corresponds to the "Basinet" item in Dungeon Master.

dm_arrow_slayer
===============
Ammo (arrow)
Stackable
Sharp
8 attack power
0.1kg

dm_ashes
========
Stackable
0.05kg

Like in Dungeon Master, has no use.

dm_bomb_ful
===========
Throwing weapon
Stackable
Fire bomb (power 100)
Throw attack (cooldown 2.5)
0.8kg

Creates walls of fire on all squares adjacent to the one it explodes on, except
for the one in the direction it was thrown from (so throwing at an adjacent
monster won't make a wall of fire on the party).

dm_bomb_magicbox_blue
=====================
Throwing weapon
Stackable
Frost bomb (power 15)
Throw attack (cooldown 4)
1kg

dm_bomb_magicbox_green
======================
Throwing weapon
Stackable
Frost bomb (power 25)
Throw attack (cooldown 4)
1kg

dm_bomb_ven
===========
Throwing weapon
Stackable
Bomb
Throw attack (cooldown 2.5)
0.8kg

Splashes all squares adjacent to the one it explodes on with poison, except for
the one in the direction it was thrown from (so throwing at an adjacent monster
won't hit the party). The square it hits takes 50 poison damage; the adjacent
squares take 20 poison damage. Monsters in all affected squares will be poisoned
(power 50).

dm_bone
=======
Stackable
0.3kg

Has no use.

dm_chest
========
Container (box)
2.8kg

dm_coin_copper
==============
Stackable
Key
0.02kg

Matches dm_lock_coinslot.

dm_coin_gold
==============
Stackable
Key
0.05kg

Matches dm_lock_coinslot.

dm_coin_silver
==============
Stackable
Key
0.02kg

Matches dm_lock_coinslot.

dm_corbamite
============
0kg

Has no use on its own. In Dungeon Master, used for a puzzle (you have to put it
in an alcove).

dm_flask_empty
==============
0.1kg

Can be filled with dm_wall_fountain.

dm_flask_water
==============
Consumable (+50 energy, +500 nutrition); becomes dm_flask_empty
0.5kg

Does not grant experience to farmers (since they could get infinite experience
using a fountain otherwise). Unfortunately, this means it doesn't show its
nutrition value in the GUI.

dm_food_bread
=============
Food (nutrition 400)
1kg

dm_food_cheese
==============
Food (nutrition 550)
0.8kg

dm_food_cheese_fresh
====================
Food (nutrition 600)
0.8kg

dm_food_corn
============
Food (nutrition 200)
0.3kg

dm_food_mushroom_slice
======================
Food (nutrition 180)
0.3kg

dm_food_waterskin_0
dm_food_waterskin_25
dm_food_waterskin_50
dm_food_waterskin_75
dm_food_waterskin_100
=====================
Consumable (+25 energy, +250 nutrition)
1.1kg (100), 0.9kg (75), 0.7kg (50), 0.5kg (25), 0.3kg (0)

The number at the end of each waterskin's name indicates the percentage of water
remaining. This percentage decreases by 25 each time the waterskin is used; at 0
it can no longer be used. Any waterskin below 100 can be refilled to 100 with a
fountain.
Does not grant experience to farmers (since they could get infinite experience
using a fountain otherwise).

dm_gem_blue
dm_gem_green
dm_gem_yellow
=============
0.2kg

Matches dm_socket_gem_slot.

dm_horn_of_fear
===============
Secondary action: Cause Fear (buildup 1, energy cost 30, cooldown 5, requires
Concentration 2); identical to Wand of Fear's ability.
0.5kg

dm_key_cross
============
Key
0.1kg

Matches dm_lock_cross.

dm_key_emerald
==============
Key
0.1kg

Matches dm_lock_emerald.

dm_key_gold
===========
Key
0.1kg

Matches dm_lock_gold.

dm_key_iron
===========
Key
0.1kg

Matches dm_lock_iron.

dm_key_master
=============
Key
0.1kg

Matches dm_lock_master.

dm_key_of_b
===========
Key
0.1kg

No particular matching lock (dm_lock_iron, dm_lock_block, dm_lock_double, and
other "plain" locks are all reasonable choices).

dm_key_onyx
===========
Key
0.1kg

Matches dm_lock_onyx.

dm_key_ra
=========
Key
0.1kg

Matches dm_lock_ra.

dm_key_ruby
===========
Key
0.1kg

Matches dm_lock_ruby.

dm_key_sapphire
===============
Key
0.1kg

Matches dm_lock_sapphire.

dm_key_skull
============
Key
0.1kg

Matches dm_lock_skull.

dm_key_solid
============
Key
0.1kg

Matches dm_lock_double.

dm_key_square
=============
Key
0.1kg

Matches dm_lock_block.

dm_key_topaz
============
Key
0.1kg

Matches dm_lock_topaz.

dm_key_tourquoise
=================
Key
0.1kg

Matches dm_lock_tourquoise.

dm_key_winged
=============
Key
0.1kg

Matches dm_lock_winged.

dm_magnifying_glass
===================
Key
0.3kg

Matches dm_lock_mirror_slot.

dm_metal_patch
==============
Used together with dm_toolbox to fix dm_conduit_pipes_leak.

dm_mirror_of_dawn
=================
Key
0.3kg

Matches dm_lock_mirror_slot.

dm_necklace_choker
==================
Necklace
Protection +1
0.1kg

dm_necklace_ekkhard_cross
=========================
Necklace
Willpower +2
Health regeneration rate +20%
0.3kg

dm_necklace_feral_pendant
=========================
Necklace
Willpower +5
0.2kg

dm_necklace_gem_ages
====================
Necklace
Willpower +2
Energy regeneration rate +25%
0.2kg

dm_necklace_hellion
===================
Necklace
Strength +4
Dexterity +4
Resist cold -50
0.2kg

The Hellion did nothing in Dungeon Master, so the effect of it here is entirely
invented.

dm_necklace_illumulet
=====================
Necklace
0.2kg

Provides light when worn. This is mostly handled in the dm_illum component that
dmcsb_pack_init.lua adds to the party. Multiple illumulets don't provide a
greater effect than one (this is consistent with multiple torches, light spells,
etc. not providing a greater effect than one) but it does stack with other light
sources to a limited extent.
The party's default light source is disabled while an illumulet is worn and
replaced with the custom dm_illum one; it will be restored (and dm_illum
disabled) as soon as no champions are wearing an illumulet. Illumulet light has
a range of 11 compared to the party's default light range of 9.

dm_necklace_moonstone
=====================
Necklace
Energy +15
0.2kg

dm_necklace_symal
=================
Necklace
Resist all +30
0.2kg

dm_pod_dust
===========
Consumable (nutrition -100, 80% chance of disease for 30 seconds)
Stackable
Poison bomb (power 5)
Throw attack (cooldown 2.5)

Does not give or take away farmer experience.

dm_rabbits_foot
===============
Evasion +2 and Critical Chance +2% while carried
0.1kg

Increased luck in Dungeon Master; there is no equivalent in Grimrock 2, but luck
in Dungeon Master functioned largely as an accuracy and evasion buff. We cannot
buff accuracy very cleanly in Grimrock 2, so we buff critical chance instead.

To implement a "When carried" buff, a hidden trait is automatically added to all
champions that functions like Head Hunter, iterating through the entire contents
of inventory and containers. This is not as bad for performance as some people
think; generally you shouldn't worry about it. There is no other way to
implement it cleanly. If you do not place or spawn any rabbits' feet in your
dungeon, then the trait will not be added.

dm_rope
=======
Rope
2kg

dm_scrap_metal
==============
1.1kg

Has no use.

dm_screws
=========
Stackable
0.4kg

Has no use.

dm_shield_bossed
================
Shield
Evasion +6
3.3kg

Corresponds to the "Small Shield" item in Dungeon Master.

dm_shield_buckler
=================
Shield
Evasion +3
1.5kg

This is a fist buckler rather than the elbow/wrist buckler in the standard
assets, so it can only be worn in the weapon slot, not the bracers slot.

dm_shield_hide
==============
Shield
Evasion +2
1.8kg

dm_shield_large
===============
Shield
Evasion +8
4kg

dm_shield_of_darc
=================
Shield
Epic
Evasion +8
Protection +6
3.3kg

dm_shield_of_lyte
=================
Shield
Epic
Evasion +12
Protection +3
2kg

dm_shield_wood
==============
Shield
Evasion +5
3.8kg

dm_shredded_rags
================
Stackable
0.2kg

Has no use.

dm_staff_dragonspit
===================
Light weapon
Melee attack (Willpower, attack power 20, accuracy +5, cooldown 4, reach);
requires Concentration 1
Secondary: Rune panel (buildup 0.1, energy cost 0); requires Concentration 1
Willpower +2
Energy +10
0.8kg

dm_staff_firestaff
==================
Epic
Rune panel; requires Concentration 2
Secondary: Invoke (buildup 1, energy cost 50, cooldown 5); requires
Concentration 3, Fire Magic 5
Strength +3
Dexterity +3
Vitality +3
Willpower +3
Energy +35
Energy regeneration rate +20%
2.8kg

Invoke creates a beam of fire with 100 fire damage on each square. The beam can
only be stopped by hitting a wall, obstacle, door, or the edge of the map; it
tears right through monsters.

dm_staff_firestaff_empty
========================
Rune panel; requires Concentration 2
Strength +1
Dexterity +1
Vitality +1
Willpower +1
Energy +10
2kg

dm_staff_oak_staff
==================
Rune panel; requires Concentration 1
Willpower +1
Energy +2
2.2kg

Corresponds to the "Staff" item in Dungeon Master.

dm_staff_oak_wand
=================
Rune panel; requires Concentration 1
Energy +1
1kg

Corresponds to the "Wand" item in Dungeon Master.

dm_staff_of_claws
=================
Rune panel; requires Concentration 2
Secondary action: Cast Darkbolt (9 charges, buildup 1, cooldown 0, energy cost
25, power 3); requires Concentration 2
Willpower +3
Energy +25
2.4kg

dm_staff_of_manar
=================
Rune panel; requires Concentration 2
Secondary action: Cast Dispel (9 charges, buildup 1, cooldown 0, energy cost 40,
power 5); requires Concentration 2
Willpower +2
Energy +20
2.9kg

dm_staff_power_gem
==================
Rune panel; requires Concentration 2
Secondary action: Cast Fireburst (buildup 1, cooldown 5, energy cost 25, power
3); requires Concentration 2
Strength +2
Energy +10
0.8kg

By default, this item is NOT used to complete the Firestaff. You want
dm_wall_amalgam_exposed_gem for that. You probably shouldn't include this item
in the same dungeon as the Firestaff at all, unless you've added a way to fuse
them together yourself.

dm_staff_sceptre_lyf
====================
Rune panel; requires Concentration 2
Secondary action: Cast Heal (9 charges, buildup 2, energy cost 50); requires
Concentration 2
Willpower +2
Vitality +2
Energy +20
Immunity to poison and disease
2.1kg

dm_staff_snake
==============
Rune panel; requires Concentration 1
Secondary action: Cast Heal (5 charges, buildup 2, energy cost 50); requires
Concentration 2
Willpower +1
Vitality +1
Energy +10
2.1kg

dm_staff_teowand
================
Rune panel; requires Concentration 2
Willpower +1
Energy +15
1kg

dm_staff_yew_staff
==================
Rune panel; requires Concentration 2
Willpower +1
Energy +10
2.3kg

dm_toolbox
==========
2.8kg

Used together with dm_metal_patch to fix dm_conduit_pipes_leak.

dm_weapon_arming_sword
======================
Light weapon
Sword
Melee attack (Strength, attack power 13, accuracy +4, cooldown 3.4); requires
Light Weapons 1
Secondary action: Thrust
1.1kg

Corresponds to the "Sword" item in Dungeon Master.

dm_weapon_bolt_blade
====================
Light weapon
Sword
Melee attack (Strength, attack power 27, accuracy +5, cooldown 3.8, shock
damage); requires Light Weapons 3
Secondary action: Cast Lightning Bolt (9 charges, buildup 1, energy cost 25,
cooldown 5, power 5); requires Concentration 1, Light Weapons 3
1.2kg

dm_weapon_boulder
=================
Throw attack (Strength, attack power 10, cooldown 8)
8kg

The throw attack has the same trajectory as a mouse throw.

dm_weapon_dart
==============
Throwing weapon
Stackable
Sharp
Throw attack (Strength, attack power 7, cooldown 3.5)
0.1kg

dm_weapon_dart_poisoned
=======================
Throwing weapon
Stackable
Sharp
Fragile
Throw attack (Strength, attack power 7, cooldown 3.5)
0.1kg

Monsters hit are poisoned (power 25).

dm_weapon_delta
===============
Heavy weapon
Two-handed
Sword
Epic
Melee attack (Strength, attack power 28, accuracy +13, pierce 20, cooldown 3.6);
requires Heavy Weapons 4
Energy +5
2.6kg

dm_weapon_diamond_edge
======================
Light weapon
Sword
Epic
Melee attack (Strength, attack power 29, accuracy +15, pierce 10, cooldown 3.3);
requires Light Weapons 4
Secondary action: Diamond Sunder (Buildup 1, energy cost 50, cooldown 6.6);
requires Light Weapons 5
0.8kg

Diamond Sunder is a quick series of 3 attacks with 18 attack power each.
Monsters hit by it have protection reduced by 3 per hit.

dm_weapon_double_axe
====================
Heavy weapon
Two-handed
Axe
Melee attack (Strength, attack power 35, cooldown 5.5); requires Heavy Weapons 3
Secondary action: Cleave
7.5kg

dm_weapon_eye_of_time
=====================
Light weapon
Dagger
Melee attack (Dexterity, attack power 24, cooldown 2.5, counts as unarmed, cold
damage)
Secondary action: Cast Freeze (5 charges, buildup 1, energy cost 25, cooldown
5); requies Concentration 2
0.1kg

Since the fist dagger counts as a dagger, it makes sense for this to count as a
dagger too. Freeze is a very fast projectile that will always freeze monsters
it hits for 7 seconds (if they aren't immune), and has attack power 30.

dm_weapon_falchion
==================
Light weapon
Sword
Melee attack (Strength, attack power 13, accuracy +5, cooldown 4.8)
1kg

dm_weapon_fencing_rapier
========================
Light weapon
Sword
Dagger
Melee attack (Dexterity, attack power 7, accuracy +15, cooldown 3); requires
Light Weapons 1
Secondary action: Thrust
0.6kg

Counts as a dagger, since it's dexterity-based and one of the lightest weapons
around in general.

dm_weapon_flamitt
=================
Light weapon
Dagger
Melee attack (Dexterity, attack power 21, cooldown 2.5, counts as unarmed, fire
damage)
Secondary action: Cast Fireball (9 charges, buildup 0.1, energy cost 25,
cooldown 2.5, power 3); requires Concentration 1
0.3kg

Since the fist dagger counts as a dagger, it makes sense for this to count as a
dagger too.

dm_weapon_fury
==============
Light weapon
Sword
Melee attack (Strength, attack power 25, accuracy +5, cooldown 4, fire damage);
requires Light Weapons 3
Secondary action: Cast Fireball (9 charges, buildup 1, energy cost 25, cooldown
5, power 5); requires Light Weapons 3, Concentration 1

dm_weapon_hardcleave
====================
Heavy weapon
Two-handed
Axe
Epic
Melee attack (Strength, attack power 64, cooldown 5); requires Heavy Weapons 5
Secondary action: Cleave
7kg

dm_weapon_inquisitor
====================
Heavy weapon
Two-handed
Sword
Epic
Melee attack (Strength, attack power 55, accuracy +13, cooldown 4.2); requires
Heavy Weapons 5
Secondary action: Cleave
3kg

dm_weapon_light_sabre
=====================
Light weapon
Sword
Melee attack (Strength, attack power 16, accuracy +12, cooldown 3.5); requires
Light Weapons 2
Secondary action: Flurry of Slashes
1.2kg

dm_weapon_log
=============
Throw attack (Strength, attack power 4, cooldown 7)
1kg

The throw attack has the same trajectory as a mouse throw, plus a silly sound.

dm_weapon_longbow
=================
Missile weapon
Ranged attack (Dexterity, arrow ammo, attack power 14, cooldown 4.2)
Secondary action: Volley
1.1kg

dm_weapon_mace
==============
Heavy weapon
Mace
Melee attack (Strength, attack power 22, pierce 10, cooldown 4); requires
Heavy Weapons 3
Secondary action: Stun
4kg

dm_weapon_mace_order
====================
Heavy weapon
Mace
Epic
Melee attack (Strength, attack power 40, pierce 15, cooldown 3); requires
Heavy Weapons 5
Secondary action: Crush (buildup 1, energy cost 40, melee attack, Strength,
attack power 72, infinite pierce, cooldown 4.5); requires
Heavy Weapons 5
4.1kg

dm_weapon_pick_mattock
======================
Light weapon
Axe
Melee attack (Strength, attack power 16, accuracy -8, cooldown 5.5)
3.5kg

Mainly used to break dm_cave_in_breakable. The pickaxe in the standard assets
also works.

dm_weapon_samurai_sword
=======================
Light weapon
Sword
Melee attack (Strength, attack power 26, accuracy +10, cooldown 3.5); requires
Light Weapons 4
Secondary action: Flurry of Slashes
1.1kg

dm_weapon_spiked_flail
======================
Heavy weapon
Mace
Melee attack (Strength, attack power 27, pierce 5, cooldown 4); requires Heavy
Weapons 3
Secondary action: Stun
4kg

Corresponds to the "Morningstar" item in Dungeon Master.

dm_weapon_stick
===============
Light weapon
Mace
Melee attack (Strength, attack power 2, cooldown 2.5)
0.8kg

Could only be obtained in Dungeon Master through cracking.

dm_weapon_stone_club
====================
Heavy weapon
Two-handed
Mace
Melee attack (Strength, attack power 44, accuracy -5, cooldown 9); requires
Heavy Weapons 4
9kg

dm_weapon_stormring
===================
Light weapon
Dagger
Melee attack (Dexterity, attack power 17, cooldown 2.5, counts as unarmed, shock
damage)
Secondary action: Cast Lightning Bolt (9 charges, buildup 0.1, energy cost 25,
cooldown 2.5, power 3); requires Concentration 1
0.1kg

Since the fist dagger counts as a dagger, it makes sense for this to count as a
dagger too.

dm_weapon_viking_sword
======================
Heavy weapon
Two-handed
Sword
Melee attack (Strength, attack power 33, accuracy +12, cooldown 4); requires
Heavy Weapons 4
Secondary action: Cleave
1.9kg

dm_weapon_vorpal_blade
======================
Light weapon
Sword
Melee attack (Strength, attack power 27, accuracy +15, cooldown 4); requires
Light Weapons 3
Secondary action: Dispelling Slash (buildup 1, energy cost 25, melee attack,
Strength, attack power 60, dispel damage, cooldown 4); requires
Light Weapons 4
Energy +15
1.6kg

dm_weapon_wooden_club
=====================
Heavy weapon
Mace
Melee attack (Strength, attack power 15, accuracy -5, cooldown 7)
Secondary action: Bash
6.5kg

= 3.3 Items that are in Dungeon Master, but not in this pack
============================================================
Torch*
Dagger*
Crossbow*
Sling*
Rock*
Throwing star*
The Conduit**
Speedbow
Cape**
Barbarian hide
Sandals*
Leather boots*
Robe
Fine robe
Kirtle
Silk shirt
Tabard
Gunna
Elven doublet
Elven huke
Elven boots
Leather jerkin
Leather pants*
Suede boots
Blue pants
Tunic
Ghi
Ghi trousers
Dexhelm**
Halter
Scroll*
Ros potion
Ku potion
Dane potion
Neta potion
Bro potion
Ma potion
Ya potion
Ee potion
Vi potion
Des potion**
Kath bomb**
Mon potion**
Pew bomb**
Ra bomb**
Sar potion**
Um potion**
Zo potion**
Apple
Screamer slice
Worm round
Drumstick
Dragon steak
Lock picks*
Zokathra spell
Bones
Compass*

*Has an obvious equivalent in Grimrock 2 standard assets
**Only available in Dungeon Master through cracking

================================================================================
= Appendix A. Detailed list of required standard assets
================================================================================
- The base objects in assets/scripts/objects/base.lua
- The following objects from assets/scripts/objects/generic.lua :
- chest (modified by dmcsb_pack_init.lua, see that file for details)
- lock (used as the base for locks)
- wall_trigger (used as the base for dm_receptor)
- party (components are added to it in dmcsb_pack_init.lua)
- particle_system

- The blob objects from assets/scripts/spells/blob.lua
(used and slightly modified by dm_receptor)
- rock from assets/scripts/items/throwing_weapons.lua
(dropped by dm_cave_in_breakable)

- torch from assets/scripts/items/misc_weapons.lua (held by dm_sconce)

- fear_cloud particle system from assets/scripts/items/staves.lua
(used by cause_fear spell which is cast by dm_horn_of_fear)

- assets/scripts/spells/dark_bolt.lua (cast by dm_staff_of_claws)

- assets/scripts/spells/dispel.lua (cast by dm_staff_of_manar)

- assets/scripts/spells/fireball.lua
(cast by dm_weapon_fury, dm_weapon_flamitt, sound used by dm_campfire)

- assets/scripts/spells/fireburst.lua
(cast by dm_staff_power_gem, sound used by dm_staff_firestaff)

- assets/scripts/spells/frostbolt.lua (sound used by dm_weapon_eye_of_time)

- assets/scripts/spells/frostburst.lua (sound used by dm_weapon_eye_of_time)

- assets/scripts/spells/lightning_bolt.lua
(cast by dm_weapon_stormring, dm_weapon_bolt_blade)

- assets/scripts/spells/poison_cloud.lua (created by dm_pod_dust)

- assets/scripts/spells/wall_fire.lua (created by dm_bomb_ful)

- The following sounds:
barrel_hit
button (used by buttons)
consume_food
container_box_close (used by dm_chest)
container_box_open (used by dm_chest)
fire_elemental_die (used by dm_wall_amalgam_exposed_gem)
fireball_launch (used by dm_campfire)
fireburst (used by dm_staff_firestaff)
frostbolt (used by dm_weapon_eye_of_time)
frostbolt_launch (used by dm_weapon_eye_of_time)
frostburst (used by dm_weapon_eye_of_time)
gate_close (used by doors)
gate_iron_open (used by doors)
gate_iron_close (used by doors)
gate_lock (used by doors)
gate_open (used by doors)
gun_shot_cannon (used by dm_wall_amalgam_exposed_gem)
gun_shot_large (used by dm_wall_amalgam_exposed_gem)
impact_arrow
impact_blade
impact_blunt
impact_plant
impact_punch
key_lock (used by locks)
lever (used by dm_wall_lever)
poison_bolt_hit (used by dm_ven_bomb)
poison_bolt_launch (used by dm_ven_bomb)
poison_cloud (used by dm_ven_bomb)
power_gem_ambient (used by dm_wall_amalgam_exposed_gem)
river_ambient (used by dm_wall_fountain)
spike_trap (used by dm_spike_trap and dm_spike_trap_mossy)
swipe
swipe_heavy
swipe_light
swipe_special
torch_burning (used by dm_sconce)
wall_sliding (used by secret doors)
wall_sliding_lock (used by secret doors)
wall_tapestry_tear (used by curtains)
water_hit_small (used by dm_campfire)

- The "black" material.

- The following particle systems:
glitter_gold
glitter_silver
torch