<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://drl.chaosforge.org/w/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://drl.chaosforge.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Shark20061</id>
		<title>DRL Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://drl.chaosforge.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Shark20061"/>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Special:Contributions/Shark20061"/>
		<updated>2026-05-29T18:58:25Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.21.1</generator>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Talk:Modding:Documentation</id>
		<title>Talk:Modding:Documentation</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Talk:Modding:Documentation"/>
				<updated>2013-06-27T21:40:38Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: weighttable page exists, not in main documentation yet.  Moved to in progress section.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 0.9.9.7 Documentation Update Progress ==&lt;br /&gt;
&lt;br /&gt;
Current state of the documentation update:&lt;br /&gt;
&lt;br /&gt;
To anyone who updates the documentation: Please note which pages you are working on or have updated.  Thanks!  -- [[User:Shark20061|Shark20061]] 21:51, 10 June 2013 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== Pages Updated ===&lt;br /&gt;
 &lt;br /&gt;
Place completed pages in this area with your name attached.&lt;br /&gt;
&lt;br /&gt;
=== Pages In Progress ===&lt;br /&gt;
&lt;br /&gt;
*[[Modding:being_API]] (Archived 0.9.9.6- at [[Modding:being_API_(0.9.9.6)]]) (Might be finished but need to check) -- [[User:Shark20061|Shark20061]]&lt;br /&gt;
*[[Modding:level_API]] (Archived 0.9.9.6- at [[Modding:level_API_(0.9.9.6)]]) (Still tweaking and fixing) -- [[User:Shark20061|Shark20061]]&lt;br /&gt;
*[[Modding:player_API]] (Header info missing, couple fixes left) -- [[User:Shark20061|Shark20061]]&lt;br /&gt;
*[[Modding:generator_API]] (Archived 0.9.9.6- at [[Modding:generator_API_(0.9.9.6)]]) (Missing links to weight table and needs constants moved in) -- [[User:Shark20061|Shark20061]]&lt;br /&gt;
*[[Modding:weighttable]] -- [[User:Shark20061|Shark20061]]&lt;br /&gt;
&lt;br /&gt;
=== Pages Not Updated ===&lt;br /&gt;
&lt;br /&gt;
*[[Modding:Module]] Last update: 0.9.9.4  (0.9.9.7 changes are in the talk page.)&lt;br /&gt;
*[[Modding:Thing]] Last update: 0.9.9.5?&lt;br /&gt;
*[[Modding:Item]] Last update: 0.9.9.5 (Should this also be sub-paged by item type?)&lt;br /&gt;
*[[Modding:Cell]] Last update: 0.9.9.5?&lt;br /&gt;
*[[Modding:Constants]] Last update: Various (Needs to be merged in with the objects/blueprint that they work with.)&lt;br /&gt;
&lt;br /&gt;
=== Pages Without API Changes ===&lt;br /&gt;
&lt;br /&gt;
All need to be split/moved to match new format anyway.&lt;br /&gt;
*[[Modding:Missile]] Last update: 0.9.9.6 -&amp;gt; [[Modding:missile]]&lt;br /&gt;
*[[Modding:ItemSet]] Last update: 0.9.9.5 -&amp;gt; [[Modding:itemset]]&lt;br /&gt;
*[[Modding:ModArray]] Last update: 0.9.9.5 -&amp;gt; [[Modding:modarray]]&lt;br /&gt;
*[[Modding:Affects]] Last update: 0.9.9.6 -&amp;gt; [[Modding:affect]]&lt;br /&gt;
*[[Modding:Coord]] Last update: 0.9.9.5 -&amp;gt; [[Modding:coord_API]] and [[Modding:coord_object]] OR just [[Modding:coord]]&lt;br /&gt;
*[[Modding:Area]] Last update: 0.9.9.5 -&amp;gt; [[Modding:area_API]] and [[Modding:area_object]] OR just [[Modding:area]]&lt;br /&gt;
*[[Modding:UI]] Last update: 0.9.9.6 -&amp;gt; [[Modding:ui]]&lt;br /&gt;
*[[Modding:Statistics]] Last update: 0.9.9.6 -&amp;gt; [[Modding:statistics]]&lt;br /&gt;
*[[Modding:Medal]] Last update: 0.9.9.5 -&amp;gt; [[Modding:medal]]&lt;br /&gt;
&lt;br /&gt;
=== Pages Needed ===&lt;br /&gt;
&lt;br /&gt;
*[[Modding:ai]]&lt;br /&gt;
*[[Modding:award]]&lt;br /&gt;
*[[Modding:badge]]&lt;br /&gt;
*[[Modding:challenge]] (Despite not being useful for modders yet)&lt;br /&gt;
*[[Modding:command]]&lt;br /&gt;
*[[Modding:core]]&lt;br /&gt;
*[[Modding:rankexp]] (Also despite not being useful for modders yet)&lt;br /&gt;
*[[Modding:rankskill]] (Again, also despite not being useful for modders yet)&lt;br /&gt;
*[[Modding:trait]]&lt;br /&gt;
&lt;br /&gt;
*[[Modding:player_object]]&lt;br /&gt;
*[[Modding:blueprint_blueprint]]&lt;br /&gt;
&lt;br /&gt;
=== Pages With Unknown Status ===&lt;br /&gt;
&lt;br /&gt;
*[[Modding:being_blueprint]] Last update: 0.9.9.7&lt;br /&gt;
*[[Modding:being_object]] Last update: 0.9.9.7&lt;br /&gt;
*[[Modding:level_blueprint]] Last update: 0.9.9.7&lt;br /&gt;
*[[Modding:level_object]] Last update: 0.9.9.7&lt;br /&gt;
*[[Modding:sID]] Last update: 0.9.9.7&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Dodging</id>
		<title>Dodging</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Dodging"/>
				<updated>2013-06-26T07:30:06Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Fixed a minor mistake with the calculation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infostrat switch}}&lt;br /&gt;
Monsters have a chance of targeting your previous position instead of your current one. The chance of an enemy firing wrong in this way is computed as follows:&lt;br /&gt;
&lt;br /&gt;
(initial chance) + (distance chance)*(distance) + (20 [only if running]) + (bonuses)&lt;br /&gt;
&lt;br /&gt;
Two things grant dodge bonuses:&lt;br /&gt;
&lt;br /&gt;
*The [[hellrunner]] trait adds 15 to your dodge bonus for each rank.&lt;br /&gt;
*The assembly [[Tactical armor]] adds 10.&lt;br /&gt;
&lt;br /&gt;
The effects of the dodge bonuses are multiplied together when from different sources.  All levels of hellrunner are one source.  &lt;br /&gt;
&lt;br /&gt;
This is capped at 95%. If you have [[Dodgemaster]], you always dodge the first projectile per monster per attack. For initial and distance chance, refer to the table below.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Attack type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Initial chance (%)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Distance chance (%)&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | [[pistol]]/[[chaingun]]&lt;br /&gt;
| 10 || 3&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | [[rocket launcher]]&amp;lt;sup&amp;gt;1(4)&amp;lt;/sup&amp;gt;&lt;br /&gt;
| 30 || 5&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | [[plasma rifle]]&lt;br /&gt;
| 30 || 3&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | fireball&amp;lt;sup&amp;gt;1(1)&amp;lt;/sup&amp;gt; ([[Imp]])&lt;br /&gt;
| 50 || 5&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | plasma ball&amp;lt;sup&amp;gt;1(1)&amp;lt;/sup&amp;gt; ([[Cacodemon]])&lt;br /&gt;
| 50 || 4&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | acid ball&amp;lt;sup&amp;gt;1(1)&amp;lt;/sup&amp;gt; ([[hell knight]])&lt;br /&gt;
| 50 || 5&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | acid ball&amp;lt;sup&amp;gt;1(2)&amp;lt;/sup&amp;gt; ([[baron of hell]])&lt;br /&gt;
| 50 || 3&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | plasma burst ([[Arachnotron]])&lt;br /&gt;
| 20 || 4&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | homing rocket&amp;lt;sup&amp;gt;1(1) ,2&amp;lt;/sup&amp;gt; ([[Revenant]])&lt;br /&gt;
| 30 || 6&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | flame wall&amp;lt;sup&amp;gt;1(1) ,2&amp;lt;/sup&amp;gt; ([[Arch-vile]])&lt;br /&gt;
| 10 || 10&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | flame burst&amp;lt;sup&amp;gt;1(2)&amp;lt;/sup&amp;gt; ([[Mancubus]])&lt;br /&gt;
| 100 || N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;: Attack causes splash (radius indicated in parentheses)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;: Attack always lands on targeted tile&lt;br /&gt;
&lt;br /&gt;
Comments:&lt;br /&gt;
&lt;br /&gt;
*If you're moving parallel to the monster's line of fire, none of this matters and the chance of getting hit will depend only on the monster's to-hit chance.&lt;br /&gt;
*Mancubi fire three shots: one to each side and directly toward you. The side shots are typically fired in such a way that dodging is often impossible, given that the shots tend to hit anything in their path.&lt;br /&gt;
*Revenants and Arch-viles, with the potent combination of homing and splash, are basically guaranteed to damage you. The only means of truly avoiding these attacks is to have the [[Fireangel]] master trait.&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Modding:weighttable</id>
		<title>Modding:weighttable</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Modding:weighttable"/>
				<updated>2013-06-11T17:13:51Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Created page with &amp;quot;Weight tables are objects that choose an object from a list at random, using the provided weights as the relative probably for each choice.  == Weight Table API ==  ;{{moddef|des...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Weight tables are objects that choose an object from a list at random, using the provided weights as the relative probably for each choice.&lt;br /&gt;
&lt;br /&gt;
== Weight Table API ==&lt;br /&gt;
&lt;br /&gt;
;{{moddef|desc|weight_table.new||weight_table}}&lt;br /&gt;
Creates a new, empty weight table.&lt;br /&gt;
:'''Returns''': A reference to an empty weight table.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|add|cln||&amp;lt;any&amp;gt;|object|integer|[weight]}}&lt;br /&gt;
Adds an item to the weighttable.&lt;br /&gt;
:''object'': The thing to add.&lt;br /&gt;
:''weight'': ''Optional.'' The weight to use for this object.  If omitted, the object's own weight property will be used, or 1 is used if the object doesn't have a weight property.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|size|cln}}&lt;br /&gt;
Gets the number of elements in this weight table.&lt;br /&gt;
:'''Returns''': The number of elements in the table.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|roll|cln}}&lt;br /&gt;
Picks an object at random from the table using the indicated weights.&lt;br /&gt;
:'''Returns''': An object rolled at random.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Weight Table Object ==&lt;br /&gt;
&lt;br /&gt;
{{drltable|Properties |3|{{Table3Col&lt;br /&gt;
  |es=background: #333;&lt;br /&gt;
  |c1=font-family:monospace; text-align:right; vertical-align:top; padding:0px 2px;&lt;br /&gt;
  |c2=vertical-align:top; padding:0px 2px;&lt;br /&gt;
  |c3=padding:0px 2px;&lt;br /&gt;
  |_elements|{{modarg|table}}|The list of elements in the weight table.&lt;br /&gt;
  |_weights|{{modarg|table}}|The weights of each corresponding element.&lt;br /&gt;
  |_weight|{{modarg|integer}}|The total weight of all elements in the table.&lt;br /&gt;
  }}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Talk:Modding:Documentation</id>
		<title>Talk:Modding:Documentation</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Talk:Modding:Documentation"/>
				<updated>2013-06-10T19:52:38Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Modding:Constants, not Modding:Flags&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 0.9.9.7 Documentation Update Progress ==&lt;br /&gt;
&lt;br /&gt;
Current state of the documentation update:&lt;br /&gt;
&lt;br /&gt;
To anyone who updates the documentation: Please note which pages you are working on or have updated.  Thanks!  -- [[User:Shark20061|Shark20061]] 21:51, 10 June 2013 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== Pages Updated ===&lt;br /&gt;
 &lt;br /&gt;
Place completed pages in this area with your name attached.&lt;br /&gt;
&lt;br /&gt;
=== Pages In Progress ===&lt;br /&gt;
&lt;br /&gt;
*[[Modding:being_API]] (Archived 0.9.9.6- at [[Modding:being_API_(0.9.9.6)]]) (Might be finished but need to check) -- [[User:Shark20061|Shark20061]]&lt;br /&gt;
*[[Modding:level_API]] (Archived 0.9.9.6- at [[Modding:level_API_(0.9.9.6)]]) (Still tweaking and fixing) -- [[User:Shark20061|Shark20061]]&lt;br /&gt;
*[[Modding:player_API]] (Header info missing, couple fixes left) -- [[User:Shark20061|Shark20061]]&lt;br /&gt;
*[[Modding:generator_API]] (Archived 0.9.9.6- at [[Modding:generator_API_(0.9.9.6)]]) (Missing links to weight table and needs constants moved in) -- [[User:Shark20061|Shark20061]]&lt;br /&gt;
&lt;br /&gt;
=== Pages Not Updated ===&lt;br /&gt;
&lt;br /&gt;
*[[Modding:Module]] Last update: 0.9.9.4  (0.9.9.7 changes are in the talk page.)&lt;br /&gt;
*[[Modding:Thing]] Last update: 0.9.9.5?&lt;br /&gt;
*[[Modding:Item]] Last update: 0.9.9.5 (Should this also be sub-paged by item type?)&lt;br /&gt;
*[[Modding:Cell]] Last update: 0.9.9.5?&lt;br /&gt;
*[[Modding:Constants]] Last update: Various (Needs to be merged in with the objects/blueprint that they work with.)&lt;br /&gt;
&lt;br /&gt;
=== Pages Without API Changes ===&lt;br /&gt;
&lt;br /&gt;
All need to be split/moved to match new format anyway.&lt;br /&gt;
*[[Modding:Missile]] Last update: 0.9.9.6 -&amp;gt; [[Modding:missile]]&lt;br /&gt;
*[[Modding:ItemSet]] Last update: 0.9.9.5 -&amp;gt; [[Modding:itemset]]&lt;br /&gt;
*[[Modding:ModArray]] Last update: 0.9.9.5 -&amp;gt; [[Modding:modarray]]&lt;br /&gt;
*[[Modding:Affects]] Last update: 0.9.9.6 -&amp;gt; [[Modding:affect]]&lt;br /&gt;
*[[Modding:Coord]] Last update: 0.9.9.5 -&amp;gt; [[Modding:coord_API]] and [[Modding:coord_object]] OR just [[Modding:coord]]&lt;br /&gt;
*[[Modding:Area]] Last update: 0.9.9.5 -&amp;gt; [[Modding:area_API]] and [[Modding:area_object]] OR just [[Modding:area]]&lt;br /&gt;
*[[Modding:UI]] Last update: 0.9.9.6 -&amp;gt; [[Modding:ui]]&lt;br /&gt;
*[[Modding:Statistics]] Last update: 0.9.9.6 -&amp;gt; [[Modding:statistics]]&lt;br /&gt;
*[[Modding:Medal]] Last update: 0.9.9.5 -&amp;gt; [[Modding:medal]]&lt;br /&gt;
&lt;br /&gt;
=== Pages Needed ===&lt;br /&gt;
&lt;br /&gt;
*[[Modding:ai]]&lt;br /&gt;
*[[Modding:award]]&lt;br /&gt;
*[[Modding:badge]]&lt;br /&gt;
*[[Modding:challenge]] (Despite not being useful for modders yet)&lt;br /&gt;
*[[Modding:command]]&lt;br /&gt;
*[[Modding:core]]&lt;br /&gt;
*[[Modding:rankexp]] (Also despite not being useful for modders yet)&lt;br /&gt;
*[[Modding:rankskill]] (Again, also despite not being useful for modders yet)&lt;br /&gt;
*[[Modding:trait]]&lt;br /&gt;
&lt;br /&gt;
*[[Modding:player_object]]&lt;br /&gt;
*[[Modding:blueprint_blueprint]]&lt;br /&gt;
*[[Modding:weighttable_object]]&lt;br /&gt;
&lt;br /&gt;
=== Pages With Unknown Status ===&lt;br /&gt;
&lt;br /&gt;
*[[Modding:being_blueprint]] Last update: 0.9.9.7&lt;br /&gt;
*[[Modding:being_object]] Last update: 0.9.9.7&lt;br /&gt;
*[[Modding:level_blueprint]] Last update: 0.9.9.7&lt;br /&gt;
*[[Modding:level_object]] Last update: 0.9.9.7&lt;br /&gt;
*[[Modding:sID]] Last update: 0.9.9.7&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Talk:Modding:Documentation</id>
		<title>Talk:Modding:Documentation</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Talk:Modding:Documentation"/>
				<updated>2013-06-10T19:51:54Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Documentation update progress&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 0.9.9.7 Documentation Update Progress ==&lt;br /&gt;
&lt;br /&gt;
Current state of the documentation update:&lt;br /&gt;
&lt;br /&gt;
To anyone who updates the documentation: Please note which pages you are working on or have updated.  Thanks!  -- [[User:Shark20061|Shark20061]] 21:51, 10 June 2013 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== Pages Updated ===&lt;br /&gt;
 &lt;br /&gt;
Place completed pages in this area with your name attached.&lt;br /&gt;
&lt;br /&gt;
=== Pages In Progress ===&lt;br /&gt;
&lt;br /&gt;
*[[Modding:being_API]] (Archived 0.9.9.6- at [[Modding:being_API_(0.9.9.6)]]) (Might be finished but need to check) -- [[User:Shark20061|Shark20061]]&lt;br /&gt;
*[[Modding:level_API]] (Archived 0.9.9.6- at [[Modding:level_API_(0.9.9.6)]]) (Still tweaking and fixing) -- [[User:Shark20061|Shark20061]]&lt;br /&gt;
*[[Modding:player_API]] (Header info missing, couple fixes left) -- [[User:Shark20061|Shark20061]]&lt;br /&gt;
*[[Modding:generator_API]] (Archived 0.9.9.6- at [[Modding:generator_API_(0.9.9.6)]]) (Missing links to weight table and needs constants moved in) -- [[User:Shark20061|Shark20061]]&lt;br /&gt;
&lt;br /&gt;
=== Pages Not Updated ===&lt;br /&gt;
&lt;br /&gt;
*[[Modding:Module]] Last update: 0.9.9.4  (0.9.9.7 changes are in the talk page.)&lt;br /&gt;
*[[Modding:Thing]] Last update: 0.9.9.5?&lt;br /&gt;
*[[Modding:Item]] Last update: 0.9.9.5 (Should this also be sub-paged by item type?)&lt;br /&gt;
*[[Modding:Cell]] Last update: 0.9.9.5?&lt;br /&gt;
*[[Modding:Flags]] Last update: Various (Needs to be merged in with the objects/blueprint that they work with.)&lt;br /&gt;
&lt;br /&gt;
=== Pages Without API Changes ===&lt;br /&gt;
&lt;br /&gt;
All need to be split/moved to match new format anyway.&lt;br /&gt;
*[[Modding:Missile]] Last update: 0.9.9.6 -&amp;gt; [[Modding:missile]]&lt;br /&gt;
*[[Modding:ItemSet]] Last update: 0.9.9.5 -&amp;gt; [[Modding:itemset]]&lt;br /&gt;
*[[Modding:ModArray]] Last update: 0.9.9.5 -&amp;gt; [[Modding:modarray]]&lt;br /&gt;
*[[Modding:Affects]] Last update: 0.9.9.6 -&amp;gt; [[Modding:affect]]&lt;br /&gt;
*[[Modding:Coord]] Last update: 0.9.9.5 -&amp;gt; [[Modding:coord_API]] and [[Modding:coord_object]] OR just [[Modding:coord]]&lt;br /&gt;
*[[Modding:Area]] Last update: 0.9.9.5 -&amp;gt; [[Modding:area_API]] and [[Modding:area_object]] OR just [[Modding:area]]&lt;br /&gt;
*[[Modding:UI]] Last update: 0.9.9.6 -&amp;gt; [[Modding:ui]]&lt;br /&gt;
*[[Modding:Statistics]] Last update: 0.9.9.6 -&amp;gt; [[Modding:statistics]]&lt;br /&gt;
*[[Modding:Medal]] Last update: 0.9.9.5 -&amp;gt; [[Modding:medal]]&lt;br /&gt;
&lt;br /&gt;
=== Pages Needed ===&lt;br /&gt;
&lt;br /&gt;
*[[Modding:ai]]&lt;br /&gt;
*[[Modding:award]]&lt;br /&gt;
*[[Modding:badge]]&lt;br /&gt;
*[[Modding:challenge]] (Despite not being useful for modders yet)&lt;br /&gt;
*[[Modding:command]]&lt;br /&gt;
*[[Modding:core]]&lt;br /&gt;
*[[Modding:rankexp]] (Also despite not being useful for modders yet)&lt;br /&gt;
*[[Modding:rankskill]] (Again, also despite not being useful for modders yet)&lt;br /&gt;
*[[Modding:trait]]&lt;br /&gt;
&lt;br /&gt;
*[[Modding:player_object]]&lt;br /&gt;
*[[Modding:blueprint_blueprint]]&lt;br /&gt;
*[[Modding:weighttable_object]]&lt;br /&gt;
&lt;br /&gt;
=== Pages With Unknown Status ===&lt;br /&gt;
&lt;br /&gt;
*[[Modding:being_blueprint]] Last update: 0.9.9.7&lt;br /&gt;
*[[Modding:being_object]] Last update: 0.9.9.7&lt;br /&gt;
*[[Modding:level_blueprint]] Last update: 0.9.9.7&lt;br /&gt;
*[[Modding:level_object]] Last update: 0.9.9.7&lt;br /&gt;
*[[Modding:sID]] Last update: 0.9.9.7&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Modding:level_API_(0.9.9.7)</id>
		<title>Modding:level API (0.9.9.7)</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Modding:level_API_(0.9.9.7)"/>
				<updated>2013-06-10T17:59:22Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: col -&amp;gt; cln to match template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''This page is currently under construction.''&lt;br /&gt;
&lt;br /&gt;
{{#sub:{{PAGENAME}}|8|{{#if:{{#pos:{{PAGENAME}}| |8}}|{{#expr:{{#pos:{{PAGENAME}}| |8}} - 7|0}}}}}}&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
Please note that the type &amp;quot;integer&amp;quot; indicates an numeric value without a decimal part.  It does not indicate the range of acceptable values.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellID&amp;quot; may be the numeric or string ID of a cell.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellSet&amp;quot; may be the numeric ID, string ID, or a list of numeric and/or string IDs.&lt;br /&gt;
&lt;br /&gt;
The argument types &amp;quot;Flag&amp;quot; and &amp;quot;Flags&amp;quot; expect a single [[Modding:Constants|flag constant]] of the indicated type, and a list of such flag constants, respectively.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;any&amp;quot; means any lua type.&lt;br /&gt;
&lt;br /&gt;
An argument name in [square brackets] is an optional one.  The function description will indicate how the function operates if it is omitted.&lt;br /&gt;
&lt;br /&gt;
=== Table Parameters ===&lt;br /&gt;
&lt;br /&gt;
Some of the functions in the Level API take a parameter in a special table format.  Those functions have a parameter type of *ParamTable*.  When calling these functions, the keys of the table given as the argument must '''exactly''' match the names given, although they may appear in any order.  Details for which keys are looked for are provided in the function's description.  Additional keys specified in these tables will be ignored.&lt;br /&gt;
&lt;br /&gt;
=== Level API Function List ===&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 2px solid darkred; border-spacing: 0; font-size: 90%; margin: 0.25em 0.5em;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: darkred; color: yellow; font-size: 120%; text-align: center&amp;quot;|'''Level Interface - Functions'''&lt;br /&gt;
 {{Table2Col&lt;br /&gt;
  |es=background: #333; &lt;br /&gt;
  |c1=font-weight:bold; text-align:right; vertical-align:top; padding:0px 2px;&lt;br /&gt;
  |c2=padding:0px 2px;&lt;br /&gt;
  ||'''[[#Level Object Functions|Level Object Functions]]'''&lt;br /&gt;
  |{{modarg|string}}|{{moddef|list|get_id|cln}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|get_uid|cln}}&lt;br /&gt;
  |{{modarg|string}}|{{moddef|list|get_type|cln}}&lt;br /&gt;
  |{{modarg|Area}}|{{moddef|list|get_area|cln}}&lt;br /&gt;
  |{{modarg|object}}|{{moddef|list|get_parent|cln}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|get_child_count|cln}}&lt;br /&gt;
  |{{modarg|table}}|{{moddef|list|children|cln||string|filter}}&lt;br /&gt;
  |{{modarg|table}}|{{moddef|list|children_in_range|cln||Coord|where|integer|range|string|filter}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|destroy|cln}}&lt;br /&gt;
  ||'''[[#Level Property Functions|Level Property Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|add_property|cln||any|key|any|val}}&lt;br /&gt;
  |{{modarg|any}}|{{moddef|list|get_property|cln||any|key}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|has_property|cln||any|key}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|remove_property|cln||any|key}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_property|cln||any|key|any|value}}&lt;br /&gt;
  ||'''[[#Cell Level Functions|Cell Level Functions]]'''&lt;br /&gt;
  |{{modarg|CellID}}|{{moddef|list|get_cell|cln||Coord|where}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|raw_get_cell|cln||integer|x|integer|y}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_cell|cln||Coord|where|CellID|what}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|raw_set_cell|cln||integer|x|integer|y|integer|what}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|get_hp|cln||Coord|where}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_hp|cln||Coord|where|integer|new_hp}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|get_light_flag|cln||Flag|what|Coord|[where]}}&lt;br /&gt;
  |{{modarg|void}}&lt;br /&gt;
{{modarg|void}}|{{moddef|list|set_light_flag|cln||Flag|what|boolean|[value]|Coord|[where]}}&lt;br /&gt;
{{moddef|list|set_light_flag|cln||Flag|what|boolean|[value]|Area|[where]}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_visible|cln||Coord|a}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|eye_contact|cln||Coord|a|Coord|b}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty|cln||Coord|where|Flags|reqs}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty_area|cln||Area|where|Flags|reqs}}&lt;br /&gt;
  ||'''[[#Being Level Functions|Being Level Functions]]'''&lt;br /&gt;
  |{{modarg|table}}|{{moddef|list|beings|cln}}&lt;br /&gt;
  |{{modarg|table}}|{{moddef|list|beings_in_range|cln||Coord|where|integer|range}}&lt;br /&gt;
  |{{modarg|Being}}|{{moddef|list|get_being|cln||Coord|where}}&lt;br /&gt;
  |{{modarg|Being}}|{{moddef|list|drop_being|cln||Being|what|Coord|where}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|drop_being_ext|cln||Being|being|Coord|where}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|clear_being|cln||Coord|where|boolean|silent}}&lt;br /&gt;
  |{{modarg|table}}|{{moddef|list|get_being_table|cln||integer|[danger]|table|[weights]|table|[reqs]|integer|[dmod]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|flood_monster|cln||*ParamTable*|args}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|flood_monsters|cln||*ParamTable*|args}}&lt;br /&gt;
  |{{modarg|BeingID}}|{{moddef|list|roll_being|cln||*ParamTable*|args}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|summon|cln||BeingID|id|integer|[count]}}&lt;br /&gt;
{{moddef|list|summon|cln||*ParamTable*|args}}&lt;br /&gt;
  ||'''[[#Item Level Functions|Item Level Functions]]'''&lt;br /&gt;
  |{{modarg|table}}|{{moddef|list|items|cln}}&lt;br /&gt;
  |{{modarg|table}}|{{moddef|list|items_in_range|cln||Coord|where|integer|range}}&lt;br /&gt;
  |{{modarg|Item}}|{{moddef|list|get_item|cln||Coord|where}}&lt;br /&gt;
  |{{modarg|Item}}|{{moddef|list|drop_item|cln||string|what|Coord|where|boolean|[onfloor]}}&lt;br /&gt;
{{moddef|list|drop_item|cln||table|what|Coord|where|boolean|[onfloor]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|drop_item_ext|cln||table|item|Coord|where}}&lt;br /&gt;
{{moddef|list|drop_item_ext|cln||string|item|Coord|where}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|try_destroy_item|cln||Coord|where}}&lt;br /&gt;
  |{{modarg|table}}|{{moddef|list|get_item_table|cln||integer|[dlevel]|table|[weights]|table|[reqs]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|flood_items|cln||integer|amount}}&lt;br /&gt;
{{moddef|list|flood_items|cln||*ParamTable*|args}}&lt;br /&gt;
  |{{modarg|ItemID}}|{{moddef|list|roll_item|cln||*ParamTable*|args}}&lt;br /&gt;
  |{{modarg|Item}}|{{moddef|list|drop|cln||ItemID|id|integer|[count]}}&lt;br /&gt;
  |{{modarg|Item}}|{{moddef|list|area_drop|cln||Area|where|ItemID|id|integer|[count]|boolean|[onfloor]}}&lt;br /&gt;
  ||'''[[#Miscellanous Functions|Miscellanous Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|explosion|cln||Coord|where|integer|size|integer|delay|integer|dice|integer|sides|Color|color|SoundID|[sound_id]|DamageType|[type]|ExplosionFlags|[flags]|CellID|[content]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|flood|cln||CellID|tile|Area|flood_area}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_corpse|cln||Coord|c}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|nuke|cln}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|play_sound|cln||SoundID|sound_id|Coord|where}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|player|cln||integer|x|integer|y}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|push_cell|cln||Coord|c|Coord|target|boolean|[quiet]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|recalc_fluids|cln}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|register_hook|cln||string|hookname|any|func}}&lt;br /&gt;
  |}}&lt;br /&gt;
|}&lt;br /&gt;
=== Level Object Functions ===&lt;br /&gt;
;{{moddef|desc|get_id|cln|string}}&lt;br /&gt;
Gets the ID of the level.&lt;br /&gt;
:'''Returns''': The string ID of the level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_uid|cln|integer}}&lt;br /&gt;
Gets the unique ID (UID) of the level.&lt;br /&gt;
:'''Returns''': The numeric ID of the level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_type|cln|string}}&lt;br /&gt;
Gets the type of this object.&lt;br /&gt;
:'''Returns''': The string &amp;quot;level&amp;quot;.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_area|cln|Area}}&lt;br /&gt;
Gets the level's entire area.&lt;br /&gt;
:'''Returns''': An [[Modding:Area|Area]] object encompassing the entire map.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_parent|cln|object}}&lt;br /&gt;
Gets the parent of this object.&lt;br /&gt;
:'''Returns''': Nil.  Level has no parent object.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_child_count|cln|integer}}&lt;br /&gt;
Gets the number of children this object is the parent of.  All beings and items on the level are children of the level object.&lt;br /&gt;
:'''Returns''': Total number of beings and items on the map (being count will include the player).&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|children|cln}}&lt;br /&gt;
Gets a table containing each child object of level.  All beings and items on the level are children of the level object.&lt;br /&gt;
:'''Returns''': A table of all beings and items on the map.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|destroy|cln}}&lt;br /&gt;
Destroys the level object.  ''You should not call this in your lua script.''&lt;br /&gt;
----&lt;br /&gt;
=== Level Property Functions ===&lt;br /&gt;
;{{moddef|desc|add_property|cln||any|key|any|value}}&lt;br /&gt;
Adds a user-defined property to the level object.&lt;br /&gt;
:''key'': The value to refer to the property by.&lt;br /&gt;
:''value'': The corresponding value of the property.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_property|cln|any|any|key}}&lt;br /&gt;
Retrieves the value of a user-defined property.&lt;br /&gt;
:''key'': The property's key value, defined when it was added.&lt;br /&gt;
:'''Returns''': The current value of the property.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|has_property|cln|boolean|any|key}}&lt;br /&gt;
Checks to see if the given property exists.&lt;br /&gt;
:''key'': The property key to check for.&lt;br /&gt;
:'''Returns''': ''True'' if the property exists, ''False'' if it does not.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|remove_property|cln||any|key}}&lt;br /&gt;
Removes a property from the level object.&lt;br /&gt;
:''key'': The key of the property to remove.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_property|cln||any|key|any|value}}&lt;br /&gt;
Assigns a new value to an existing property.&lt;br /&gt;
:''key'': The key of the property to change.&lt;br /&gt;
:''value'': The new value to assign to the property.&lt;br /&gt;
----&lt;br /&gt;
=== Cell Level Functions ===&lt;br /&gt;
;{{moddef|desc|get_cell|cln|CellID|Coord|where}}&lt;br /&gt;
Gets the cell at a specific map coordinate.&lt;br /&gt;
:''where'': The location to get.&lt;br /&gt;
:'''Returns''': The ID of the cell at the location.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|raw_get_cell|cln|integer|integer|x|integer|y}}&lt;br /&gt;
Gets the cell ID at a specific map coordinate.&lt;br /&gt;
:''x'': The X position of the coordinate to get.&lt;br /&gt;
:''y'': The Y position of the coordinate to get.&lt;br /&gt;
:'''Returns''': The numeric ID of the cell at the coordinates.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_cell|cln||Coord|where|CellID|what}}&lt;br /&gt;
Assigns a new cell to a map coordinate.&lt;br /&gt;
:''where'': The location to change.&lt;br /&gt;
:''what'': The cell to assign to the location.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|raw_set_cell|cln||integer|x|integer|y|integer|what}}&lt;br /&gt;
Assigns a new cell to a map coordinate.&lt;br /&gt;
:''x'': The X position of the location to change.&lt;br /&gt;
:''y'': The Y position of the location to change.&lt;br /&gt;
:''what'': The numeric ID of the cell to assign.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_hp|cln|integer|Coord|where}}&lt;br /&gt;
Gets the HP of the cell at the specified location.&lt;br /&gt;
:''where'': The coordinate to get the HP amount from.&lt;br /&gt;
:'''Returns''': The amount of HP the cell has.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_hp|cln||Coord|where|integer|new_hp}}&lt;br /&gt;
Sets the HP of the cell at the specified location.&lt;br /&gt;
:''where'': The coordinate to set.&lt;br /&gt;
:''new_hp'': The new HP value to set for the coordinate.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_light_flag|cln|boolean|Flag|what|Coord|where}}&lt;br /&gt;
Checks a cell for a certain light flag.&lt;br /&gt;
:''what'': The LightFlag (named constant that starts with LF) to check for.  Refer to [[Modding:Constants#Light Flag|this]] for more info.&lt;br /&gt;
:''where'': The location to check.&lt;br /&gt;
:'''Returns''': ''True'' if the flag is set.  ''False'' if it is not.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_light_flag|cln||Flag|what|boolean|[value]|Coord|[where]}}&lt;br /&gt;
;{{moddef|desc|set_light_flag|cln||Flag|what|boolean|[value]|Area|[where]}}&lt;br /&gt;
Sets or unsets a LightFlag at a specified location or specified locations.&lt;br /&gt;
:''what'': The LightFlag (named constant that starts with LF) to check for.  Refer to [[Modding:Constants#Light Flag|this]] for more info.&lt;br /&gt;
:''value'': ''Optional.'' ''True'' to set the flag, ''False'' to unset it.  If omitted, the default is to set the flag.&lt;br /&gt;
:''where'': ''Optional.'' The coordinate or area to change.  If an area is supplied, all cells in the area will have the flag set or unset.  If omitted, the entire map will have the flag set or unset.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_visible|cln|boolean|Coord|a}}&lt;br /&gt;
Determines if the player can see this space.&lt;br /&gt;
:''a'': The space to check.&lt;br /&gt;
:'''Returns''': ''True'' if the player can see it, ''False'' if the player cannot.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|eye_contact|cln|boolean|Coord|a|Coord|b}}&lt;br /&gt;
Checks to see if two spaces can see each other.  This check uses the monster vision algorithm, which is stricter than the player's vision algorithm.&lt;br /&gt;
:''a'': The first space to check.&lt;br /&gt;
:''b'': The second space to check.&lt;br /&gt;
:'''Returns''': ''True'' if the spaces are visible to each other, ''False'' if not.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty|cln|boolean|Coord|where|Flags|reqs}}&lt;br /&gt;
Checks to see if the indicated cell is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The position to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the position cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the map position does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if the cell satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise. &lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty_area|cln|boolean|Area|where|Flags|reqs}}&lt;br /&gt;
Checks to see if the indicated area is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The area to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the area cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the area does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if every cell in the area satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
=== Being Level Functions ===&lt;br /&gt;
;{{moddef|desc|beings|cln|table}}&lt;br /&gt;
Gets a table containing all of the beings on the level.&lt;br /&gt;
:'''Returns''': A table containing all beings on the level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|beings_in_range|cln|table|Coord|where|integer|range}}&lt;br /&gt;
Gets a table containing all of the beings within a certain distance of a location.&lt;br /&gt;
:''where'': The location to search around.&lt;br /&gt;
:''range'': The distance away from the location to get beings from.&lt;br /&gt;
:'''Returns''': A table containing the beings close enough to the location specified.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_being|cln|Being|Coord|where}}&lt;br /&gt;
Gets the being at the specified coordinate.&lt;br /&gt;
:''where'': The location to get the being from.&lt;br /&gt;
:'''Returns''': The being at the location.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drop_being|cln|Being|BeingID|what|Coord|where}}&lt;br /&gt;
Places a being on the map.&lt;br /&gt;
:''what'': The id of the being to place.&lt;br /&gt;
:''where'': The location to attempt to drop the being.  If there is already a being at that location, the being will be dropped nearby.&lt;br /&gt;
:'''Returns''': A reference to the being dropped.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drop_being_ext|cln||BeingID|being|Coord|where}}&lt;br /&gt;
Places a being on the map with modifications.&lt;br /&gt;
:''being'': A BeingID, or a table whose first field is a BeingID, followed by the changes to the beings properties in the form ''field = new_value''.&lt;br /&gt;
:''where'': The location to attempt to drop the being.  If there is already a being at that location, the being will be dropped nearby.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|clear_being|cln||Coord|where|boolean|silent}}&lt;br /&gt;
Removes a being from the map.&lt;br /&gt;
:''where'': The location to remove the being from.&lt;br /&gt;
:''silent'': If ''true'', the being will be removed without making any sounds or causing any messages. If ''false'', the being will act as though they were killed (complete with message and sound).&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_being_table|cln|table|integer|[dlevel]|table|[weights]|table|[reqs]|integer|[dmod]}}&lt;br /&gt;
Gets a weight table for beings and being groups, using the indicated criteria.&lt;br /&gt;
:''dlevel'': ''Optional.'' The depth to pull the list of beings for. Only beings and groups that have an equal or smaller min_level and an equal or larger max_level will be selected. The ''dmod'' parameter also modifies which beings will be picked. If omitted, the current danger level (which is usually the current depth) is used.&lt;br /&gt;
:''weights'': ''Optional.'' A table containing modifiers to weights. The keys of the table are ids, flags, or blueprint fields to look for. For example, &amp;quot;former&amp;quot; will match the being with the id &amp;quot;former&amp;quot; (that is, Former Humans). Suppling a being flag (such as BF_BOSS or BF_ENVIROSAFE) will look for that flag in the being prototype's flag list. Suppling a blueprint field will match all beings that have that field in their blueprint table, provided that the value of the field isn't ''nil'', ''false'', or 0. Each matched being will have its weight multiplied by the value supplied for that key. For example, &amp;lt;tt&amp;gt;&amp;quot;former&amp;quot; = 2&amp;lt;/tt&amp;gt; will double the weight value of Former Humans, while &amp;lt;tt&amp;gt;&amp;quot;former&amp;quot; = 0.5&amp;lt;/tt&amp;gt; will halve it. If a being matches multiple entries, all are applied. (for example, the table {BF_ENVIROSAFE = 2, &amp;quot;pain&amp;quot; = 2} will match Pain Elementals twice -- since both apply a double modifier to weight, Pain Elementals will now have 4 times the weight.) If omitted, no modifications are made to weights.&lt;br /&gt;
:''reqs'': ''Optional.'' A table containing requirements to check for.  Only beings that meet all of the requirements will be included in the resulting weight table.  The keys of the table are blueprint fields that must be matched.  The value for each key in the table is either a single value, which only beings whose blueprint field key has the value supplied will match, or a table of values, which will match beings that have one or more of the supplied values if the value of the blueprint field isn't a table itself, or all of the values if it is.  For example, if the reqs table is &amp;lt;tt&amp;gt;{ id = &amp;quot;former&amp;quot; }&amp;lt;/tt&amp;gt; , it will match Former Human (since its id is &amp;quot;former&amp;quot;).  If the reqs table has &amp;lt;tt&amp;gt;{ id = {&amp;quot;former&amp;quot;, &amp;quot;sergeant&amp;quot;, &amp;quot;captain&amp;quot; } }&amp;lt;/tt&amp;gt;, Former Human, Former Sergeant, and Former Captain will be matched. If the reqs table has &amp;lt;tt&amp;gt;{ flags = { BF_BOSS, BF_ENVIROSAFE } }&amp;lt;/tt&amp;gt;, this will return all the beings with both the enviro-safe flag and the boss flag (since the flags blueprint field is a table itself).  If omitted, no beings or groups are excluded (aside from those already excluded by the dlevel and dmod parameters).&lt;br /&gt;
:''dmod'': The current dlevel is adjusted by the value here for the min_level check.  This allows beings with a higher min_level to be selected on an earlier depth (if positive), or exclude beings with a higher min_level for extra levels (if negative).  In other words, this enables monsters to spawn &amp;quot;out of depth&amp;quot;.  If omitted, the default is 3 if difficulty is medium (HMP), 6 if difficulty is hard or very hard (UV and N!), and 0 otherwise.&lt;br /&gt;
:'''Returns''': A weight table object.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|flood_monster|cln||*ParamTable*|args}}&lt;br /&gt;
Places one or more of a single type of monster on the level.&lt;br /&gt;
:''args'': A table that looks for the following keys:&lt;br /&gt;
::''id'': The ID of the being to place.&lt;br /&gt;
::''danger'': The total amount of danger points worth of this monster to place.  This field is optional if ''count'' is set.  If both ''danger'' and ''count'' are set, the function will stop placing monsters when either ''danger'' or ''count'' is reached.&lt;br /&gt;
::''count'': The number of monsters to place.  This field is optional if ''danger'' is set.  If both ''danger'' and ''count'' are set, the function will stop placing monsters when either ''danger'' or ''count'' is reached.&lt;br /&gt;
::''flags'': ''Optional.'' A list of [[Modding:Constants#Empty_flags|EmptyFlags]] that determines where monsters are allowed to be placed.  If omitted, the default list is { EF_NOBEINGS, EF_NOBLOCK, EF_NOHARM, EF_NOSPAWN }.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|flood_monsters|cln||*ParamTable*|args}}&lt;br /&gt;
Places monsters on the level.&lt;br /&gt;
:''args'': A table that looks for the following keys:&lt;br /&gt;
::''danger'': The total amount of danger points worth of monsters to place.  This field is optional if ''amount'' is set.  If both ''danger'' and ''amount'' are set, the function will stop placing monsters when either ''danger'' or ''amount'' is reached.&lt;br /&gt;
::''amount'': The number of monsters to place.  This field is optional if ''danger'' is set.  If both ''danger'' and ''amount'' are set, the function will stop placing monsters when either ''danger'' or ''amount'' is reached.&lt;br /&gt;
::''flags'': ''Optional.'' A list of [[Modding:Constants#Empty_flags|EmptyFlags]] that determines where monsters are allowed to be placed.  If omitted, the default list is { EF_NOBEINGS, EF_NOBLOCK, EF_NOHARM, EF_NOSPAWN }.&lt;br /&gt;
::''reqs'': ''Optional.'' See get_being_table for more info about this parameter.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|roll_being|cln|BeingID|*ParamTable*|args}}&lt;br /&gt;
Picks an ID for a being out of a list.&lt;br /&gt;
:''args'': A table that looks for the following keys:&lt;br /&gt;
::''list'': A table with BeingIDs as keys and the weight for the being as the value.  If this key is supplied, all other keys are ignored.&lt;br /&gt;
:: These next 4 keys create a being list using ''get_being_table'' if the ''list'' parameter is omitted.  The ID will be selected from the resulting weight table.  It will not pick a group.&lt;br /&gt;
::''level'': See the ''danger'' parameter for ''get_being_table''.&lt;br /&gt;
::''weights'': See the ''weights'' parameter for ''get_being_table''.&lt;br /&gt;
::''diffmod'': See the ''dmod'' parameter for ''get_being_table''.&lt;br /&gt;
::''reqs'': See the ''reqs'' parameter for ''get_being_table''.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|summon|cln||BeingID|id|integer|[count]}}&lt;br /&gt;
Places a given number of a single being onto the map.&lt;br /&gt;
:''id'': The ID of the being to place.&lt;br /&gt;
:''count'': ''Optional.'' The number of that being to place.  If omitted, only one being will be placed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|summon|cln||*ParamTable*|args}}&lt;br /&gt;
Places a given number of a single being onto the map.&lt;br /&gt;
:''args'': A table that looks for the following keys:&lt;br /&gt;
::''id'': The ID of the being to place.&lt;br /&gt;
::''count'': ''Optional.'' The number of that being to place.  If omitted, only one being will be placed.&lt;br /&gt;
::''cell'': ''Optional.'' A cell or set of cells that are valid locations for placement of the being(s).  If omitted, the beings can be placed on any cell.&lt;br /&gt;
::''area'': ''Optional.'' The area the beings can spawn in.  If omitted, the area used is the entire map.&lt;br /&gt;
::''empty'': ''Optional.'' A list of [[Modding:Constants#Empty_flags|EmptyFlags]] that determines where monsters are allowed to be placed.  If omitted, the default list is { EF_NOBEINGS, EF_NOBLOCK, EF_NOHARM, EF_NOSPAWN } if ''cell'' is omitted, and { EF_NOBEINGS, EF_NOBLOCK } if ''cell'' is supplied.&lt;br /&gt;
----&lt;br /&gt;
=== Item Level Functions ===&lt;br /&gt;
;{{moddef|desc|items|cln|table}}&lt;br /&gt;
Gets a table containing all of the items on the level.&lt;br /&gt;
:'''Returns''': A table containing all items on the level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|items_in_range|cln|table|Coord|where|integer|range}}&lt;br /&gt;
Gets a table containing all of the items within a certain distance of a location.&lt;br /&gt;
:''where'': The location to search around.&lt;br /&gt;
:''range'': The distance away from the location to search around.&lt;br /&gt;
:'''Returns''': A table containing all of the items within range of the location.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_item|cln|Item|Coord|where}}&lt;br /&gt;
Gets the item at a location.&lt;br /&gt;
:''where'': The location to retrieve the item from.&lt;br /&gt;
:'''Returns''': A reference to the Item at the location.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drop_item|cln|Item|string|what|Coord|where|boolean|[onfloor]}}&lt;br /&gt;
;{{moddef|desc|drop_item|cln|Item|Item|what|Coord|where|boolean|[onfloor]}}&lt;br /&gt;
Places an item on the map.&lt;br /&gt;
:''what'': The item to place.  Either a string containing the ID of the item or a table representing an existing item.&lt;br /&gt;
:''where'': The location to place the item.  If occupied, the nearest available location will be chosen.&lt;br /&gt;
:''onfloor'': ''Optional.''  If true, will apply the difficulty modifier to an ammo item that is placed.  If false, the ammo item is placed with the given amount of ammo.  If omitted, the default is false.  This argument has no effect on non-ammo items.&lt;br /&gt;
:'''Returns''': A reference to the dropped item.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drop_item_ext|cln||table|item|Coord|where}}&lt;br /&gt;
;{{moddef|desc|drop_item_ext|cln||string|item|Coord|where}}&lt;br /&gt;
Places an item with modifications on the map.&lt;br /&gt;
:''what'': The item to place.  Either a string containing the ID of the item or a table with the ItemID string as it's first value, followed by a table containing entries in the form of &amp;lt;tt&amp;gt;&amp;quot;item_property&amp;quot; = new_value&amp;lt;/tt&amp;gt; as the second value.&lt;br /&gt;
:''where'': The location to place the item at.  If occupied, the nearest available location will be chosen.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|try_destroy_item|cln||Coord|where}}&lt;br /&gt;
Attempts to destroy the item in a specified location.  This function will not destroy the item if the item has the flag IF_NODESTROY or IF_UNIQUE.  To guarantee destruction of an item, call the item's :destroy() method.&lt;br /&gt;
:''where'': The location of the item to try to destroy.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_item_table|cln|table|integer|[dlevel]|table|[weights]|table|[reqs]}}&lt;br /&gt;
Gets a weight table for items, using the indicated criteria.&lt;br /&gt;
:''dlevel'': ''Optional.'' The depth to pull the list of items for.  If omitted, the value in ''level.danger_level'' is used.&lt;br /&gt;
:''weights'': ''Optional.'' A table containing modifiers to weights. The keys of the table are ids, flags, or blueprint fields to look for.  For example, &amp;quot;smed&amp;quot; will match Small Med-Packs.  Suppling an item flag (such as IF_UNIQUE or IF_SHOTGUN, or an ITEMTYPE value) will look for that flag in the item prototype's flag list.  Suppling a blueprint field will match all items that have that field in their blueprint table, provided that the value isn't ''nil'', ''false'', or 0.  Each matched item will have its weight multiplied by the value supplied for that key.  For example, &amp;lt;tt&amp;gt;&amp;quot;smed&amp;quot; = 2&amp;lt;/tt&amp;gt; will double the weight of Small Med-Packs, while &amp;lt;tt&amp;gt;&amp;quot;smed&amp;quot; = 0.5&amp;lt;/tt&amp;gt; will halve it.  If an item matches multiple entries, all are applied.  (For example, the table {IF_UNIQUE = 2, &amp;quot;uberarmor&amp;quot; = 2} will match Berserker Armor twice -- since both apply a double modifier to weight, Berserker Armor would have 4 times the weight.)  If omitted, no modifications are made to weights.&lt;br /&gt;
:''reqs'': ''Optional.'' A table containing requirements to check for.  Only items that meet all of the requirements will be included in the resulting weight table.  The keys of the table are blueprint fields that must be matched.  The value for each key in the table is either a single value, which only items whose blueprint field key has the value supplied will match, or a table of values, which will match items that have one or more of the supplied values if the value of the blueprint field isn't a table itself, or all of the values if it is.  For example, if the reqs table is &amp;lt;tt&amp;gt;{ id = &amp;quot;smed&amp;quot; }&amp;lt;/tt&amp;gt;, it will match Small Med-Packs (since its id is &amp;quot;smed&amp;quot;).  If the reqs table has &amp;lt;tt&amp;gt;{ id = {&amp;quot;smed&amp;quot;, &amp;quot;lmed&amp;quot;, &amp;quot;phase&amp;quot;, &amp;quot;hphase&amp;quot; }&amp;lt;/tt&amp;gt;, it will match Small Med-Packs, Large Med-Packs, Phase Devices, and Homing Phase Devices.  If the reqs table has &amp;lt;tt&amp;gt;{ flags = {IF_UNIQUE, IF_SHOTGUN} }&amp;lt;/tt&amp;gt;, this will match all unique shotguns (since the flags blueprint field is a table itself).  If omitted, no items are excluded (aside from those already excluded by other factors, such as the ''dlevel'' parameter).&lt;br /&gt;
::NOTE: This function has a hidden limitation when trying to generate exotics and uniques.  The function will not pick exotics if the ''danger_level'' of the level is less then the current difficulty (where ITYTD = 1 and N! = 5).  The function will not pick uniques if the ''danger_level'' of the level is less than 3 more than the current difficulty (where ITYTD = 1 and N! = 5).  If you need to generate exotics or uniques before the indicated ''danger_level'', you can add the needed items to the resulting table yourself using the &amp;lt;tt&amp;gt;:add(&amp;lt;object&amp;gt;)&amp;lt;/tt&amp;gt; method on the returned weight table object.  Other functions that use this function (such as ''flood_items'' and ''roll_item'') will also have this behavior.&lt;br /&gt;
:'''Returns''': A weight table object.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|flood_items|cln||integer|amount}}&lt;br /&gt;
Places several different items on the level, using the default criteria.&lt;br /&gt;
:''amount'': The number of items to place on the level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|flood_items|cln||*ParamTable*|args}}&lt;br /&gt;
Places several different items on the level, using specific criteria.&lt;br /&gt;
:''args'': A table that looks for the following keys:&lt;br /&gt;
::''amount'': The number of items to place on the level.&lt;br /&gt;
::''level'', ''weights'', ''reqs'': ''All optional.'' See the ''get_item_table'' function for more info.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|roll_item|cln||*ParamTable*|args}}&lt;br /&gt;
Picks an item at random using specified criteria.&lt;br /&gt;
:''args'': A table that looks for the following keys:&lt;br /&gt;
::''level'': ''Optional.'' Sent to ''get_item_table'' as the ''dlevel'' parameter.  Refer to ''get_item_table'' for more info.&lt;br /&gt;
::''type'': ''Optional.'' A table containing one or more ITEMTYPE values.  If supplied, only items that have one of the indicated types will be selected.  If omitted, any item type can be picked.&lt;br /&gt;
::''weights'': ''Optional.'' Sent to ''get_item_table'' as the ''weights'' parameter.  Refer to ''get_item_table'' for more info.&lt;br /&gt;
::''reqs'': ''Optional.''  Sent to ''get_item_table'' as the ''reqs'' parameter.  Refer to ''get_item_table'' for more info.&lt;br /&gt;
::''unique_mod'': ''Optional.''  A multiplier to the weights of all unique items.  If omitted, 1 is used.&lt;br /&gt;
::''exotic_mod'': ''Optional.''  A multiplier to the weights of all exotic items.  If omitted, 1 is used.&lt;br /&gt;
::''special_mod'': ''Optional.''  A multiplier to the weights of all exotic and unique items.  Combines with ''unique_mod'' and ''exotic_mod''.  If omitted, 1 is used.&lt;br /&gt;
:'''Returns''': The ID of the rolled item.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drop|cln|Item|ItemID|id|integer|[count]}}&lt;br /&gt;
Places one or more of a specific item on the map.&lt;br /&gt;
:''id'': The ID of the item to place.&lt;br /&gt;
:''count'': ''Optional.'' The number of the item to place.  If omitted, only 1 item will be placed.&lt;br /&gt;
:'''Returns''': A reference to the last item placed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|area_drop|cln|Item|Area|where|ItemID|id|integer|[count]|boolean|[onfloor]}}&lt;br /&gt;
Places one or more of a specific item on the map in an area.&lt;br /&gt;
:''where'': The area to confine the item drops to.&lt;br /&gt;
:''id'': The Id of the item to place.&lt;br /&gt;
:''count'': ''Optional.'' The number of the item to place.  If omitted, only 1 item will be placed.&lt;br /&gt;
:''onfloor'': ''Optional.'' If true, will apply the difficulty modifier to an ammo item that is placed.  If false, the ammo item is placed with the given amount of ammo.  If omitted, the default is false.  This argument has no effect on non-ammo items.&lt;br /&gt;
:'''Returns''': A reference to the last item placed.&lt;br /&gt;
=== Miscellanous Functions ===&lt;br /&gt;
;{{moddef|desc|explosion|cln||Coord|where|integer|size|integer|delay|integer|dice|integer|sides|Color|color|SoundID|[sound_id]|DamageType|[type]|ExplosionFlags|[flags]|CellID|[content]}}&lt;br /&gt;
Creates an explosion on the map.&lt;br /&gt;
:''where'': The location for the center of the explosion.&lt;br /&gt;
:''size'': The size of the explosion.  If greater than 8, the explosion will be visible in all cells, including cells that are not currently in the player's vision.&lt;br /&gt;
:''delay'': The amount of time (in milliseconds) that each step of the explosion will take.&lt;br /&gt;
:''dice'': The number of dice to use for the damage.  Enter 0 to prevent the explosion from dealing damage (for decoration explosions).&lt;br /&gt;
:''sides'': The number of sides for each die to use for the damage.  Enter 0 to prevent the explosion from dealing damage (for decoration explosions).&lt;br /&gt;
:''color'': ''Optional.'' The color of the explosion.  Not all colors will show.  If omitted, a RED explosion will be used.&lt;br /&gt;
:''sound_id'': ''Optional.'' The ID of the sound to use for this explosion.  If omitted, no sound is used.&lt;br /&gt;
:''type'': ''Optional.'' The type of damage this explosion deals.  If omitted, the default is DAMAGE_FIRE.&lt;br /&gt;
:''flags'': ''Optional.'' A list of ExplosionFlags that will modify what the explosion applies to or how it applies.  If omitted, no modifications are made to the explosion.&lt;br /&gt;
:''content'': ''Optional.'' The cell to fill cells in the explosion area with if the explosion hits a cell for more than 20 damage.  If omitted, cells will not changed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|flood|cln||CellID|tile|Area|flood_area}}&lt;br /&gt;
Replaces non-wall tiles in an area with a different tile.&lt;br /&gt;
:''tile'': The cell to fill with.  This does not have to be a fluid cell.&lt;br /&gt;
:''flood_area'': The area to fill.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_corpse|cln|boolean|Coord|c}}&lt;br /&gt;
Indicates if a coordinate has a corpse cell or not.&lt;br /&gt;
:''c'': The location to check.&lt;br /&gt;
:'''Returns''': ''True'' if the coordinate is a corpse, ''False'' if it is not.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|nuke|cln}}&lt;br /&gt;
Instantly nukes a level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|play_sound|cln||SoundID|sound_id|Coord|where}}&lt;br /&gt;
Plays a sound on the map.&lt;br /&gt;
:''sound_id'': The id of the sound to play.&lt;br /&gt;
:''where'': The location to play the sound at.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|player|cln||integer|x|integer|y}}&lt;br /&gt;
Set the position of the player on the map.&lt;br /&gt;
:''x'': The x coordinate of the position to move the player to.&lt;br /&gt;
:''y'': The y coordinate of the position to move the player to.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|push_cell|cln||Coord|c|Coord|target|boolean|[quiet]}}&lt;br /&gt;
Attempts to move a cell to a new location. (Swaps two cells.)&lt;br /&gt;
:''c'': The source coordinate.&lt;br /&gt;
:''target'': The destination coordinate.&lt;br /&gt;
:''quiet'': ''Optional.'' If ''True'', messages about success or failure as well as sounds that would play on success or failure are all suppressed.  If ''False'', sounds and messages will happen as it would normally.  If omitted, the default is ''False''.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|recalc_fluids|cln}}&lt;br /&gt;
Recalculates fluid edges.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|register_hook|cln||string|hookname|&amp;lt;any&amp;gt;|func}}&lt;br /&gt;
Registers a hook with this object.&lt;br /&gt;
:''hookname'': The name of the hook to register.&lt;br /&gt;
:''func'': The function to assign to the hook.&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Modding:level_API_(0.9.9.7)</id>
		<title>Modding:level API (0.9.9.7)</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Modding:level_API_(0.9.9.7)"/>
				<updated>2013-06-10T17:59:03Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: col -&amp;gt; cln to match template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''This page is currently under construction.''&lt;br /&gt;
&lt;br /&gt;
{{#sub:{{PAGENAME}}|8|{{#if:{{#pos:{{PAGENAME}}| |8}}|{{#expr:{{#pos:{{PAGENAME}}| |8}} - 7|0}}}}}}&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
Please note that the type &amp;quot;integer&amp;quot; indicates an numeric value without a decimal part.  It does not indicate the range of acceptable values.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellID&amp;quot; may be the numeric or string ID of a cell.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellSet&amp;quot; may be the numeric ID, string ID, or a list of numeric and/or string IDs.&lt;br /&gt;
&lt;br /&gt;
The argument types &amp;quot;Flag&amp;quot; and &amp;quot;Flags&amp;quot; expect a single [[Modding:Constants|flag constant]] of the indicated type, and a list of such flag constants, respectively.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;any&amp;quot; means any lua type.&lt;br /&gt;
&lt;br /&gt;
An argument name in [square brackets] is an optional one.  The function description will indicate how the function operates if it is omitted.&lt;br /&gt;
&lt;br /&gt;
=== Table Parameters ===&lt;br /&gt;
&lt;br /&gt;
Some of the functions in the Level API take a parameter in a special table format.  Those functions have a parameter type of *ParamTable*.  When calling these functions, the keys of the table given as the argument must '''exactly''' match the names given, although they may appear in any order.  Details for which keys are looked for are provided in the function's description.  Additional keys specified in these tables will be ignored.&lt;br /&gt;
&lt;br /&gt;
=== Level API Function List ===&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 2px solid darkred; border-spacing: 0; font-size: 90%; margin: 0.25em 0.5em;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: darkred; color: yellow; font-size: 120%; text-align: center&amp;quot;|'''Level Interface - Functions'''&lt;br /&gt;
 {{Table2Col&lt;br /&gt;
  |es=background: #333; &lt;br /&gt;
  |c1=font-weight:bold; text-align:right; vertical-align:top; padding:0px 2px;&lt;br /&gt;
  |c2=padding:0px 2px;&lt;br /&gt;
  ||'''[[#Level Object Functions|Level Object Functions]]'''&lt;br /&gt;
  |{{modarg|string}}|{{moddef|list|get_id|cln}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|get_uid|cln}}&lt;br /&gt;
  |{{modarg|string}}|{{moddef|list|get_type|cln}}&lt;br /&gt;
  |{{modarg|Area}}|{{moddef|list|get_area|cln}}&lt;br /&gt;
  |{{modarg|object}}|{{moddef|list|get_parent|cln}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|get_child_count|cln}}&lt;br /&gt;
  |{{modarg|table}}|{{moddef|list|children|cln||string|filter}}&lt;br /&gt;
  |{{modarg|table}}|{{moddef|list|children_in_range|cln||Coord|where|integer|range|string|filter}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|destroy|cln}}&lt;br /&gt;
  ||'''[[#Level Property Functions|Level Property Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|add_property|cln||any|key|any|val}}&lt;br /&gt;
  |{{modarg|any}}|{{moddef|list|get_property|cln||any|key}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|has_property|cln||any|key}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|remove_property|cln||any|key}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_property|cln||any|key|any|value}}&lt;br /&gt;
  ||'''[[#Cell Level Functions|Cell Level Functions]]'''&lt;br /&gt;
  |{{modarg|CellID}}|{{moddef|list|get_cell|cln||Coord|where}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|raw_get_cell|cln||integer|x|integer|y}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_cell|cln||Coord|where|CellID|what}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|raw_set_cell|cln||integer|x|integer|y|integer|what}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|get_hp|cln||Coord|where}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_hp|cln||Coord|where|integer|new_hp}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|get_light_flag|cln||Flag|what|Coord|[where]}}&lt;br /&gt;
  |{{modarg|void}}&lt;br /&gt;
{{modarg|void}}|{{moddef|list|set_light_flag|cln||Flag|what|boolean|[value]|Coord|[where]}}&lt;br /&gt;
{{moddef|list|set_light_flag|cln||Flag|what|boolean|[value]|Area|[where]}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_visible|cln||Coord|a}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|eye_contact|cln||Coord|a|Coord|b}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty|cln||Coord|where|Flags|reqs}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty_area|cln||Area|where|Flags|reqs}}&lt;br /&gt;
  ||'''[[#Being Level Functions|Being Level Functions]]'''&lt;br /&gt;
  |{{modarg|table}}|{{moddef|list|beings|cln}}&lt;br /&gt;
  |{{modarg|table}}|{{moddef|list|beings_in_range|cln||Coord|where|integer|range}}&lt;br /&gt;
  |{{modarg|Being}}|{{moddef|list|get_being|cln||Coord|where}}&lt;br /&gt;
  |{{modarg|Being}}|{{moddef|list|drop_being|cln||Being|what|Coord|where}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|drop_being_ext|cln||Being|being|Coord|where}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|clear_being|cln||Coord|where|boolean|silent}}&lt;br /&gt;
  |{{modarg|table}}|{{moddef|list|get_being_table|cln||integer|[danger]|table|[weights]|table|[reqs]|integer|[dmod]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|flood_monster|cln||*ParamTable*|args}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|flood_monsters|cln||*ParamTable*|args}}&lt;br /&gt;
  |{{modarg|BeingID}}|{{moddef|list|roll_being|cln||*ParamTable*|args}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|summon|cln||BeingID|id|integer|[count]}}&lt;br /&gt;
{{moddef|list|summon|cln||*ParamTable*|args}}&lt;br /&gt;
  ||'''[[#Item Level Functions|Item Level Functions]]'''&lt;br /&gt;
  |{{modarg|table}}|{{moddef|list|items|cln}}&lt;br /&gt;
  |{{modarg|table}}|{{moddef|list|items_in_range|cln||Coord|where|integer|range}}&lt;br /&gt;
  |{{modarg|Item}}|{{moddef|list|get_item|cln||Coord|where}}&lt;br /&gt;
  |{{modarg|Item}}|{{moddef|list|drop_item|cln||string|what|Coord|where|boolean|[onfloor]}}&lt;br /&gt;
{{moddef|list|drop_item|cln||table|what|Coord|where|boolean|[onfloor]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|drop_item_ext|cln||table|item|Coord|where}}&lt;br /&gt;
{{moddef|list|drop_item_ext|cln||string|item|Coord|where}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|try_destroy_item|cln||Coord|where}}&lt;br /&gt;
  |{{modarg|table}}|{{moddef|list|get_item_table|cln||integer|[dlevel]|table|[weights]|table|[reqs]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|flood_items|cln||integer|amount}}&lt;br /&gt;
{{moddef|list|flood_items|cln||*ParamTable*|args}}&lt;br /&gt;
  |{{modarg|ItemID}}|{{moddef|list|roll_item|cln||*ParamTable*|args}}&lt;br /&gt;
  |{{modarg|Item}}|{{moddef|list|drop|cln||ItemID|id|integer|[count]}}&lt;br /&gt;
  |{{modarg|Item}}|{{moddef|list|area_drop|cln||Area|where|ItemID|id|integer|[count]|boolean|[onfloor]}}&lt;br /&gt;
  ||'''[[#Miscellanous Functions|Miscellanous Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|explosion|cln||Coord|where|integer|size|integer|delay|integer|dice|integer|sides|Color|color|SoundID|[sound_id]|DamageType|[type]|ExplosionFlags|[flags]|CellID|[content]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|flood|cln||CellID|tile|Area|flood_area}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_corpse|cln||Coord|c}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|nuke|cln}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|play_sound|cln||SoundID|sound_id|Coord|where}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|player|cln||integer|x|integer|y}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|push_cell|cln||Coord|c|Coord|target|boolean|[quiet]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|recalc_fluids|cln}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|register_hook|cln||string|hookname|any|func}}&lt;br /&gt;
  |}}&lt;br /&gt;
|}&lt;br /&gt;
=== Level Object Functions ===&lt;br /&gt;
;{{moddef|desc|get_id|cln|string}}&lt;br /&gt;
Gets the ID of the level.&lt;br /&gt;
:'''Returns''': The string ID of the level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_uid|cln|integer}}&lt;br /&gt;
Gets the unique ID (UID) of the level.&lt;br /&gt;
:'''Returns''': The numeric ID of the level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_type|cln|string}}&lt;br /&gt;
Gets the type of this object.&lt;br /&gt;
:'''Returns''': The string &amp;quot;level&amp;quot;.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_area|cln|Area}}&lt;br /&gt;
Gets the level's entire area.&lt;br /&gt;
:'''Returns''': An [[Modding:Area|Area]] object encompassing the entire map.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_parent|cln|object}}&lt;br /&gt;
Gets the parent of this object.&lt;br /&gt;
:'''Returns''': Nil.  Level has no parent object.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_child_count|cln|integer}}&lt;br /&gt;
Gets the number of children this object is the parent of.  All beings and items on the level are children of the level object.&lt;br /&gt;
:'''Returns''': Total number of beings and items on the map (being count will include the player).&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|children|cln}}&lt;br /&gt;
Gets a table containing each child object of level.  All beings and items on the level are children of the level object.&lt;br /&gt;
:'''Returns''': A table of all beings and items on the map.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|destroy|cln}}&lt;br /&gt;
Destroys the level object.  ''You should not call this in your lua script.''&lt;br /&gt;
----&lt;br /&gt;
=== Level Property Functions ===&lt;br /&gt;
;{{moddef|desc|add_property|cln||any|key|any|value}}&lt;br /&gt;
Adds a user-defined property to the level object.&lt;br /&gt;
:''key'': The value to refer to the property by.&lt;br /&gt;
:''value'': The corresponding value of the property.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_property|cln|any|any|key}}&lt;br /&gt;
Retrieves the value of a user-defined property.&lt;br /&gt;
:''key'': The property's key value, defined when it was added.&lt;br /&gt;
:'''Returns''': The current value of the property.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|has_property|cln|boolean|any|key}}&lt;br /&gt;
Checks to see if the given property exists.&lt;br /&gt;
:''key'': The property key to check for.&lt;br /&gt;
:'''Returns''': ''True'' if the property exists, ''False'' if it does not.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|remove_property|cln||any|key}}&lt;br /&gt;
Removes a property from the level object.&lt;br /&gt;
:''key'': The key of the property to remove.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_property|cln||any|key|any|value}}&lt;br /&gt;
Assigns a new value to an existing property.&lt;br /&gt;
:''key'': The key of the property to change.&lt;br /&gt;
:''value'': The new value to assign to the property.&lt;br /&gt;
----&lt;br /&gt;
=== Cell Level Functions ===&lt;br /&gt;
;{{moddef|desc|get_cell|cln|CellID|Coord|where}}&lt;br /&gt;
Gets the cell at a specific map coordinate.&lt;br /&gt;
:''where'': The location to get.&lt;br /&gt;
:'''Returns''': The ID of the cell at the location.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|raw_get_cell|cln|integer|integer|x|integer|y}}&lt;br /&gt;
Gets the cell ID at a specific map coordinate.&lt;br /&gt;
:''x'': The X position of the coordinate to get.&lt;br /&gt;
:''y'': The Y position of the coordinate to get.&lt;br /&gt;
:'''Returns''': The numeric ID of the cell at the coordinates.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_cell|cln||Coord|where|CellID|what}}&lt;br /&gt;
Assigns a new cell to a map coordinate.&lt;br /&gt;
:''where'': The location to change.&lt;br /&gt;
:''what'': The cell to assign to the location.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|raw_set_cell|cln||integer|x|integer|y|integer|what}}&lt;br /&gt;
Assigns a new cell to a map coordinate.&lt;br /&gt;
:''x'': The X position of the location to change.&lt;br /&gt;
:''y'': The Y position of the location to change.&lt;br /&gt;
:''what'': The numeric ID of the cell to assign.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_hp|cln|integer|Coord|where}}&lt;br /&gt;
Gets the HP of the cell at the specified location.&lt;br /&gt;
:''where'': The coordinate to get the HP amount from.&lt;br /&gt;
:'''Returns''': The amount of HP the cell has.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_hp|cln||Coord|where|integer|new_hp}}&lt;br /&gt;
Sets the HP of the cell at the specified location.&lt;br /&gt;
:''where'': The coordinate to set.&lt;br /&gt;
:''new_hp'': The new HP value to set for the coordinate.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_light_flag|cln|boolean|Flag|what|Coord|where}}&lt;br /&gt;
Checks a cell for a certain light flag.&lt;br /&gt;
:''what'': The LightFlag (named constant that starts with LF) to check for.  Refer to [[Modding:Constants#Light Flag|this]] for more info.&lt;br /&gt;
:''where'': The location to check.&lt;br /&gt;
:'''Returns''': ''True'' if the flag is set.  ''False'' if it is not.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_light_flag|cln||Flag|what|boolean|[value]|Coord|[where]}}&lt;br /&gt;
;{{moddef|desc|set_light_flag|cln||Flag|what|boolean|[value]|Area|[where]}}&lt;br /&gt;
Sets or unsets a LightFlag at a specified location or specified locations.&lt;br /&gt;
:''what'': The LightFlag (named constant that starts with LF) to check for.  Refer to [[Modding:Constants#Light Flag|this]] for more info.&lt;br /&gt;
:''value'': ''Optional.'' ''True'' to set the flag, ''False'' to unset it.  If omitted, the default is to set the flag.&lt;br /&gt;
:''where'': ''Optional.'' The coordinate or area to change.  If an area is supplied, all cells in the area will have the flag set or unset.  If omitted, the entire map will have the flag set or unset.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_visible|cln|boolean|Coord|a}}&lt;br /&gt;
Determines if the player can see this space.&lt;br /&gt;
:''a'': The space to check.&lt;br /&gt;
:'''Returns''': ''True'' if the player can see it, ''False'' if the player cannot.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|eye_contact|cln|boolean|Coord|a|Coord|b}}&lt;br /&gt;
Checks to see if two spaces can see each other.  This check uses the monster vision algorithm, which is stricter than the player's vision algorithm.&lt;br /&gt;
:''a'': The first space to check.&lt;br /&gt;
:''b'': The second space to check.&lt;br /&gt;
:'''Returns''': ''True'' if the spaces are visible to each other, ''False'' if not.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty|cln|boolean|Coord|where|Flags|reqs}}&lt;br /&gt;
Checks to see if the indicated cell is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The position to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the position cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the map position does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if the cell satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise. &lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty_area|cln|boolean|Area|where|Flags|reqs}}&lt;br /&gt;
Checks to see if the indicated area is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The area to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the area cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the area does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if every cell in the area satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
=== Being Level Functions ===&lt;br /&gt;
;{{moddef|desc|beings|cln|table}}&lt;br /&gt;
Gets a table containing all of the beings on the level.&lt;br /&gt;
:'''Returns''': A table containing all beings on the level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|beings_in_range|cln|table|Coord|where|integer|range}}&lt;br /&gt;
Gets a table containing all of the beings within a certain distance of a location.&lt;br /&gt;
:''where'': The location to search around.&lt;br /&gt;
:''range'': The distance away from the location to get beings from.&lt;br /&gt;
:'''Returns''': A table containing the beings close enough to the location specified.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_being|cln|Being|Coord|where}}&lt;br /&gt;
Gets the being at the specified coordinate.&lt;br /&gt;
:''where'': The location to get the being from.&lt;br /&gt;
:'''Returns''': The being at the location.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drop_being|cln|Being|BeingID|what|Coord|where}}&lt;br /&gt;
Places a being on the map.&lt;br /&gt;
:''what'': The id of the being to place.&lt;br /&gt;
:''where'': The location to attempt to drop the being.  If there is already a being at that location, the being will be dropped nearby.&lt;br /&gt;
:'''Returns''': A reference to the being dropped.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drop_being_ext|cln||BeingID|being|Coord|where}}&lt;br /&gt;
Places a being on the map with modifications.&lt;br /&gt;
:''being'': A BeingID, or a table whose first field is a BeingID, followed by the changes to the beings properties in the form ''field = new_value''.&lt;br /&gt;
:''where'': The location to attempt to drop the being.  If there is already a being at that location, the being will be dropped nearby.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|clear_being|cln||Coord|where|boolean|silent}}&lt;br /&gt;
Removes a being from the map.&lt;br /&gt;
:''where'': The location to remove the being from.&lt;br /&gt;
:''silent'': If ''true'', the being will be removed without making any sounds or causing any messages. If ''false'', the being will act as though they were killed (complete with message and sound).&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_being_table|cln|table|integer|[dlevel]|table|[weights]|table|[reqs]|integer|[dmod]}}&lt;br /&gt;
Gets a weight table for beings and being groups, using the indicated criteria.&lt;br /&gt;
:''dlevel'': ''Optional.'' The depth to pull the list of beings for. Only beings and groups that have an equal or smaller min_level and an equal or larger max_level will be selected. The ''dmod'' parameter also modifies which beings will be picked. If omitted, the current danger level (which is usually the current depth) is used.&lt;br /&gt;
:''weights'': ''Optional.'' A table containing modifiers to weights. The keys of the table are ids, flags, or blueprint fields to look for. For example, &amp;quot;former&amp;quot; will match the being with the id &amp;quot;former&amp;quot; (that is, Former Humans). Suppling a being flag (such as BF_BOSS or BF_ENVIROSAFE) will look for that flag in the being prototype's flag list. Suppling a blueprint field will match all beings that have that field in their blueprint table, provided that the value of the field isn't ''nil'', ''false'', or 0. Each matched being will have its weight multiplied by the value supplied for that key. For example, &amp;lt;tt&amp;gt;&amp;quot;former&amp;quot; = 2&amp;lt;/tt&amp;gt; will double the weight value of Former Humans, while &amp;lt;tt&amp;gt;&amp;quot;former&amp;quot; = 0.5&amp;lt;/tt&amp;gt; will halve it. If a being matches multiple entries, all are applied. (for example, the table {BF_ENVIROSAFE = 2, &amp;quot;pain&amp;quot; = 2} will match Pain Elementals twice -- since both apply a double modifier to weight, Pain Elementals will now have 4 times the weight.) If omitted, no modifications are made to weights.&lt;br /&gt;
:''reqs'': ''Optional.'' A table containing requirements to check for.  Only beings that meet all of the requirements will be included in the resulting weight table.  The keys of the table are blueprint fields that must be matched.  The value for each key in the table is either a single value, which only beings whose blueprint field key has the value supplied will match, or a table of values, which will match beings that have one or more of the supplied values if the value of the blueprint field isn't a table itself, or all of the values if it is.  For example, if the reqs table is &amp;lt;tt&amp;gt;{ id = &amp;quot;former&amp;quot; }&amp;lt;/tt&amp;gt; , it will match Former Human (since its id is &amp;quot;former&amp;quot;).  If the reqs table has &amp;lt;tt&amp;gt;{ id = {&amp;quot;former&amp;quot;, &amp;quot;sergeant&amp;quot;, &amp;quot;captain&amp;quot; } }&amp;lt;/tt&amp;gt;, Former Human, Former Sergeant, and Former Captain will be matched. If the reqs table has &amp;lt;tt&amp;gt;{ flags = { BF_BOSS, BF_ENVIROSAFE } }&amp;lt;/tt&amp;gt;, this will return all the beings with both the enviro-safe flag and the boss flag (since the flags blueprint field is a table itself).  If omitted, no beings or groups are excluded (aside from those already excluded by the dlevel and dmod parameters).&lt;br /&gt;
:''dmod'': The current dlevel is adjusted by the value here for the min_level check.  This allows beings with a higher min_level to be selected on an earlier depth (if positive), or exclude beings with a higher min_level for extra levels (if negative).  In other words, this enables monsters to spawn &amp;quot;out of depth&amp;quot;.  If omitted, the default is 3 if difficulty is medium (HMP), 6 if difficulty is hard or very hard (UV and N!), and 0 otherwise.&lt;br /&gt;
:'''Returns''': A weight table object.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|flood_monster|cln||*ParamTable*|args}}&lt;br /&gt;
Places one or more of a single type of monster on the level.&lt;br /&gt;
:''args'': A table that looks for the following keys:&lt;br /&gt;
::''id'': The ID of the being to place.&lt;br /&gt;
::''danger'': The total amount of danger points worth of this monster to place.  This field is optional if ''count'' is set.  If both ''danger'' and ''count'' are set, the function will stop placing monsters when either ''danger'' or ''count'' is reached.&lt;br /&gt;
::''count'': The number of monsters to place.  This field is optional if ''danger'' is set.  If both ''danger'' and ''count'' are set, the function will stop placing monsters when either ''danger'' or ''count'' is reached.&lt;br /&gt;
::''flags'': ''Optional.'' A list of [[Modding:Constants#Empty_flags|EmptyFlags]] that determines where monsters are allowed to be placed.  If omitted, the default list is { EF_NOBEINGS, EF_NOBLOCK, EF_NOHARM, EF_NOSPAWN }.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|flood_monsters|cln||*ParamTable*|args}}&lt;br /&gt;
Places monsters on the level.&lt;br /&gt;
:''args'': A table that looks for the following keys:&lt;br /&gt;
::''danger'': The total amount of danger points worth of monsters to place.  This field is optional if ''amount'' is set.  If both ''danger'' and ''amount'' are set, the function will stop placing monsters when either ''danger'' or ''amount'' is reached.&lt;br /&gt;
::''amount'': The number of monsters to place.  This field is optional if ''danger'' is set.  If both ''danger'' and ''amount'' are set, the function will stop placing monsters when either ''danger'' or ''amount'' is reached.&lt;br /&gt;
::''flags'': ''Optional.'' A list of [[Modding:Constants#Empty_flags|EmptyFlags]] that determines where monsters are allowed to be placed.  If omitted, the default list is { EF_NOBEINGS, EF_NOBLOCK, EF_NOHARM, EF_NOSPAWN }.&lt;br /&gt;
::''reqs'': ''Optional.'' See get_being_table for more info about this parameter.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|roll_being|cln|BeingID|*ParamTable*|args}}&lt;br /&gt;
Picks an ID for a being out of a list.&lt;br /&gt;
:''args'': A table that looks for the following keys:&lt;br /&gt;
::''list'': A table with BeingIDs as keys and the weight for the being as the value.  If this key is supplied, all other keys are ignored.&lt;br /&gt;
:: These next 4 keys create a being list using ''get_being_table'' if the ''list'' parameter is omitted.  The ID will be selected from the resulting weight table.  It will not pick a group.&lt;br /&gt;
::''level'': See the ''danger'' parameter for ''get_being_table''.&lt;br /&gt;
::''weights'': See the ''weights'' parameter for ''get_being_table''.&lt;br /&gt;
::''diffmod'': See the ''dmod'' parameter for ''get_being_table''.&lt;br /&gt;
::''reqs'': See the ''reqs'' parameter for ''get_being_table''.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|summon|cln||BeingID|id|integer|[count]}}&lt;br /&gt;
Places a given number of a single being onto the map.&lt;br /&gt;
:''id'': The ID of the being to place.&lt;br /&gt;
:''count'': ''Optional.'' The number of that being to place.  If omitted, only one being will be placed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|summon|cln||*ParamTable*|args}}&lt;br /&gt;
Places a given number of a single being onto the map.&lt;br /&gt;
:''args'': A table that looks for the following keys:&lt;br /&gt;
::''id'': The ID of the being to place.&lt;br /&gt;
::''count'': ''Optional.'' The number of that being to place.  If omitted, only one being will be placed.&lt;br /&gt;
::''cell'': ''Optional.'' A cell or set of cells that are valid locations for placement of the being(s).  If omitted, the beings can be placed on any cell.&lt;br /&gt;
::''area'': ''Optional.'' The area the beings can spawn in.  If omitted, the area used is the entire map.&lt;br /&gt;
::''empty'': ''Optional.'' A list of [[Modding:Constants#Empty_flags|EmptyFlags]] that determines where monsters are allowed to be placed.  If omitted, the default list is { EF_NOBEINGS, EF_NOBLOCK, EF_NOHARM, EF_NOSPAWN } if ''cell'' is omitted, and { EF_NOBEINGS, EF_NOBLOCK } if ''cell'' is supplied.&lt;br /&gt;
----&lt;br /&gt;
=== Item Level Functions ===&lt;br /&gt;
;{{moddef|desc|items|cln|table}}&lt;br /&gt;
Gets a table containing all of the items on the level.&lt;br /&gt;
:'''Returns''': A table containing all items on the level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|items_in_range|cln|table|Coord|where|integer|range}}&lt;br /&gt;
Gets a table containing all of the items within a certain distance of a location.&lt;br /&gt;
:''where'': The location to search around.&lt;br /&gt;
:''range'': The distance away from the location to search around.&lt;br /&gt;
:'''Returns''': A table containing all of the items within range of the location.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_item|cln|Item|Coord|where}}&lt;br /&gt;
Gets the item at a location.&lt;br /&gt;
:''where'': The location to retrieve the item from.&lt;br /&gt;
:'''Returns''': A reference to the Item at the location.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drop_item|cln|Item|string|what|Coord|where|boolean|[onfloor]}}&lt;br /&gt;
;{{moddef|desc|drop_item|cln|Item|Item|what|Coord|where|boolean|[onfloor]}}&lt;br /&gt;
Places an item on the map.&lt;br /&gt;
:''what'': The item to place.  Either a string containing the ID of the item or a table representing an existing item.&lt;br /&gt;
:''where'': The location to place the item.  If occupied, the nearest available location will be chosen.&lt;br /&gt;
:''onfloor'': ''Optional.''  If true, will apply the difficulty modifier to an ammo item that is placed.  If false, the ammo item is placed with the given amount of ammo.  If omitted, the default is false.  This argument has no effect on non-ammo items.&lt;br /&gt;
:'''Returns''': A reference to the dropped item.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drop_item_ext|cln||table|item|Coord|where}}&lt;br /&gt;
;{{moddef|desc|drop_item_ext|cln||string|item|Coord|where}}&lt;br /&gt;
Places an item with modifications on the map.&lt;br /&gt;
:''what'': The item to place.  Either a string containing the ID of the item or a table with the ItemID string as it's first value, followed by a table containing entries in the form of &amp;lt;tt&amp;gt;&amp;quot;item_property&amp;quot; = new_value&amp;lt;/tt&amp;gt; as the second value.&lt;br /&gt;
:''where'': The location to place the item at.  If occupied, the nearest available location will be chosen.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|try_destroy_item|cln||Coord|where}}&lt;br /&gt;
Attempts to destroy the item in a specified location.  This function will not destroy the item if the item has the flag IF_NODESTROY or IF_UNIQUE.  To guarantee destruction of an item, call the item's :destroy() method.&lt;br /&gt;
:''where'': The location of the item to try to destroy.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_item_table|cln|table|integer|[dlevel]|table|[weights]|table|[reqs]}}&lt;br /&gt;
Gets a weight table for items, using the indicated criteria.&lt;br /&gt;
:''dlevel'': ''Optional.'' The depth to pull the list of items for.  If omitted, the value in ''level.danger_level'' is used.&lt;br /&gt;
:''weights'': ''Optional.'' A table containing modifiers to weights. The keys of the table are ids, flags, or blueprint fields to look for.  For example, &amp;quot;smed&amp;quot; will match Small Med-Packs.  Suppling an item flag (such as IF_UNIQUE or IF_SHOTGUN, or an ITEMTYPE value) will look for that flag in the item prototype's flag list.  Suppling a blueprint field will match all items that have that field in their blueprint table, provided that the value isn't ''nil'', ''false'', or 0.  Each matched item will have its weight multiplied by the value supplied for that key.  For example, &amp;lt;tt&amp;gt;&amp;quot;smed&amp;quot; = 2&amp;lt;/tt&amp;gt; will double the weight of Small Med-Packs, while &amp;lt;tt&amp;gt;&amp;quot;smed&amp;quot; = 0.5&amp;lt;/tt&amp;gt; will halve it.  If an item matches multiple entries, all are applied.  (For example, the table {IF_UNIQUE = 2, &amp;quot;uberarmor&amp;quot; = 2} will match Berserker Armor twice -- since both apply a double modifier to weight, Berserker Armor would have 4 times the weight.)  If omitted, no modifications are made to weights.&lt;br /&gt;
:''reqs'': ''Optional.'' A table containing requirements to check for.  Only items that meet all of the requirements will be included in the resulting weight table.  The keys of the table are blueprint fields that must be matched.  The value for each key in the table is either a single value, which only items whose blueprint field key has the value supplied will match, or a table of values, which will match items that have one or more of the supplied values if the value of the blueprint field isn't a table itself, or all of the values if it is.  For example, if the reqs table is &amp;lt;tt&amp;gt;{ id = &amp;quot;smed&amp;quot; }&amp;lt;/tt&amp;gt;, it will match Small Med-Packs (since its id is &amp;quot;smed&amp;quot;).  If the reqs table has &amp;lt;tt&amp;gt;{ id = {&amp;quot;smed&amp;quot;, &amp;quot;lmed&amp;quot;, &amp;quot;phase&amp;quot;, &amp;quot;hphase&amp;quot; }&amp;lt;/tt&amp;gt;, it will match Small Med-Packs, Large Med-Packs, Phase Devices, and Homing Phase Devices.  If the reqs table has &amp;lt;tt&amp;gt;{ flags = {IF_UNIQUE, IF_SHOTGUN} }&amp;lt;/tt&amp;gt;, this will match all unique shotguns (since the flags blueprint field is a table itself).  If omitted, no items are excluded (aside from those already excluded by other factors, such as the ''dlevel'' parameter).&lt;br /&gt;
::NOTE: This function has a hidden limitation when trying to generate exotics and uniques.  The function will not pick exotics if the ''danger_level'' of the level is less then the current difficulty (where ITYTD = 1 and N! = 5).  The function will not pick uniques if the ''danger_level'' of the level is less than 3 more than the current difficulty (where ITYTD = 1 and N! = 5).  If you need to generate exotics or uniques before the indicated ''danger_level'', you can add the needed items to the resulting table yourself using the &amp;lt;tt&amp;gt;:add(&amp;lt;object&amp;gt;)&amp;lt;/tt&amp;gt; method on the returned weight table object.  Other functions that use this function (such as ''flood_items'' and ''roll_item'') will also have this behavior.&lt;br /&gt;
:'''Returns''': A weight table object.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|flood_items|cln||integer|amount}}&lt;br /&gt;
Places several different items on the level, using the default criteria.&lt;br /&gt;
:''amount'': The number of items to place on the level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|flood_items|cln||*ParamTable*|args}}&lt;br /&gt;
Places several different items on the level, using specific criteria.&lt;br /&gt;
:''args'': A table that looks for the following keys:&lt;br /&gt;
::''amount'': The number of items to place on the level.&lt;br /&gt;
::''level'', ''weights'', ''reqs'': ''All optional.'' See the ''get_item_table'' function for more info.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|roll_item|cln||*ParamTable*|args}}&lt;br /&gt;
Picks an item at random using specified criteria.&lt;br /&gt;
:''args'': A table that looks for the following keys:&lt;br /&gt;
::''level'': ''Optional.'' Sent to ''get_item_table'' as the ''dlevel'' parameter.  Refer to ''get_item_table'' for more info.&lt;br /&gt;
::''type'': ''Optional.'' A table containing one or more ITEMTYPE values.  If supplied, only items that have one of the indicated types will be selected.  If omitted, any item type can be picked.&lt;br /&gt;
::''weights'': ''Optional.'' Sent to ''get_item_table'' as the ''weights'' parameter.  Refer to ''get_item_table'' for more info.&lt;br /&gt;
::''reqs'': ''Optional.''  Sent to ''get_item_table'' as the ''reqs'' parameter.  Refer to ''get_item_table'' for more info.&lt;br /&gt;
::''unique_mod'': ''Optional.''  A multiplier to the weights of all unique items.  If omitted, 1 is used.&lt;br /&gt;
::''exotic_mod'': ''Optional.''  A multiplier to the weights of all exotic items.  If omitted, 1 is used.&lt;br /&gt;
::''special_mod'': ''Optional.''  A multiplier to the weights of all exotic and unique items.  Combines with ''unique_mod'' and ''exotic_mod''.  If omitted, 1 is used.&lt;br /&gt;
:'''Returns''': The ID of the rolled item.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drop|cln|Item|ItemID|id|integer|[count]}}&lt;br /&gt;
Places one or more of a specific item on the map.&lt;br /&gt;
:''id'': The ID of the item to place.&lt;br /&gt;
:''count'': ''Optional.'' The number of the item to place.  If omitted, only 1 item will be placed.&lt;br /&gt;
:'''Returns''': A reference to the last item placed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|area_drop|cln|Item|Area|where|ItemID|id|integer|[count]|boolean|[onfloor]}}&lt;br /&gt;
Places one or more of a specific item on the map in an area.&lt;br /&gt;
:''where'': The area to confine the item drops to.&lt;br /&gt;
:''id'': The Id of the item to place.&lt;br /&gt;
:''count'': ''Optional.'' The number of the item to place.  If omitted, only 1 item will be placed.&lt;br /&gt;
:''onfloor'': ''Optional.'' If true, will apply the difficulty modifier to an ammo item that is placed.  If false, the ammo item is placed with the given amount of ammo.  If omitted, the default is false.  This argument has no effect on non-ammo items.&lt;br /&gt;
:'''Returns''': A reference to the last item placed.&lt;br /&gt;
=== Miscellanous Functions ===&lt;br /&gt;
;{{moddef|desc|explosion|cln||Coord|where|integer|size|integer|delay|integer|dice|integer|sides|Color|color|SoundID|[sound_id]|DamageType|[type]|ExplosionFlags|[flags]|CellID|[content]}}&lt;br /&gt;
Creates an explosion on the map.&lt;br /&gt;
:''where'': The location for the center of the explosion.&lt;br /&gt;
:''size'': The size of the explosion.  If greater than 8, the explosion will be visible in all cells, including cells that are not currently in the player's vision.&lt;br /&gt;
:''delay'': The amount of time (in milliseconds) that each step of the explosion will take.&lt;br /&gt;
:''dice'': The number of dice to use for the damage.  Enter 0 to prevent the explosion from dealing damage (for decoration explosions).&lt;br /&gt;
:''sides'': The number of sides for each die to use for the damage.  Enter 0 to prevent the explosion from dealing damage (for decoration explosions).&lt;br /&gt;
:''color'': ''Optional.'' The color of the explosion.  Not all colors will show.  If omitted, a RED explosion will be used.&lt;br /&gt;
:''sound_id'': ''Optional.'' The ID of the sound to use for this explosion.  If omitted, no sound is used.&lt;br /&gt;
:''type'': ''Optional.'' The type of damage this explosion deals.  If omitted, the default is DAMAGE_FIRE.&lt;br /&gt;
:''flags'': ''Optional.'' A list of ExplosionFlags that will modify what the explosion applies to or how it applies.  If omitted, no modifications are made to the explosion.&lt;br /&gt;
:''content'': ''Optional.'' The cell to fill cells in the explosion area with if the explosion hits a cell for more than 20 damage.  If omitted, cells will not changed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|flood|cln||CellID|tile|Area|flood_area}}&lt;br /&gt;
Replaces non-wall tiles in an area with a different tile.&lt;br /&gt;
:''tile'': The cell to fill with.  This does not have to be a fluid cell.&lt;br /&gt;
:''flood_area'': The area to fill.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_corpse|cln|boolean|Coord|c}}&lt;br /&gt;
Indicates if a coordinate has a corpse cell or not.&lt;br /&gt;
:''c'': The location to check.&lt;br /&gt;
:'''Returns''': ''True'' if the coordinate is a corpse, ''False'' if it is not.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|nuke|cln}}&lt;br /&gt;
Instantly nukes a level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|play_sound|cln||SoundID|sound_id|Coord|where}}&lt;br /&gt;
Plays a sound on the map.&lt;br /&gt;
:''sound_id'': The id of the sound to play.&lt;br /&gt;
:''where'': The location to play the sound at.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|player|cln||integer|x|integer|y}}&lt;br /&gt;
Set the position of the player on the map.&lt;br /&gt;
:''x'': The x coordinate of the position to move the player to.&lt;br /&gt;
:''y'': The y coordinate of the position to move the player to.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|push_cell|cln||Coord|c|Coord|target|boolean|[quiet]}}&lt;br /&gt;
Attempts to move a cell to a new location. (Swaps two cells.)&lt;br /&gt;
:''c'': The source coordinate.&lt;br /&gt;
:''target'': The destination coordinate.&lt;br /&gt;
:''quiet'': ''Optional.'' If ''True'', messages about success or failure as well as sounds that would play on success or failure are all suppressed.  If ''False'', sounds and messages will happen as it would normally.  If omitted, the default is ''False''.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|recalc_fluids|cln}}&lt;br /&gt;
Recalculates fluid edges.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|register_hook|cln|string|hookname|&amp;lt;any&amp;gt;|func}}&lt;br /&gt;
Registers a hook with this object.&lt;br /&gt;
:''hookname'': The name of the hook to register.&lt;br /&gt;
:''func'': The function to assign to the hook.&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Template:Moddef</id>
		<title>Template:Moddef</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Template:Moddef"/>
				<updated>2013-06-10T17:54:12Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Final bugfix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This is the prototypical template for expressing API functions. It works with the following args:&lt;br /&gt;
#Sets the type of expression. Currently there are two cases:&lt;br /&gt;
#*&amp;lt;tt&amp;gt;list&amp;lt;/tt&amp;gt; is what's used in the table: it automatically comes with the necessary link for the description's anchor.&lt;br /&gt;
#*&amp;lt;tt&amp;gt;desc&amp;lt;/tt&amp;gt; is what's used underneath the table: this provides the anchor that is linked to the list.&lt;br /&gt;
#Sets the function name. For example, if the function is called &amp;lt;tt&amp;gt;Level.place_tile&amp;lt;/tt&amp;gt;, then this should be set to &amp;lt;tt&amp;gt;place_tile&amp;lt;/tt&amp;gt;.&lt;br /&gt;
#Determines the function type. There are two cases:&lt;br /&gt;
#*&amp;lt;tt&amp;gt;dot&amp;lt;/tt&amp;gt; is the dot form&lt;br /&gt;
#*&amp;lt;tt&amp;gt;cln&amp;lt;/tt&amp;gt; is the colon form&lt;br /&gt;
#Sets the output argument, if any. Leaving this blank should always be done for &amp;lt;tt&amp;gt;list&amp;lt;/tt&amp;gt; functions. You can include up to two comma-separated outputs.&lt;br /&gt;
#From here, input arguments are set. These are be handled in pairs: the first should be the arg type, while the second should be the arg name. You can include up to eight arg pairs in this manner.&lt;br /&gt;
Please note that this template is set up to include information based on the page name, so they can only be used on their appropriate pages. Thus, you can write being API functions using this template for the [[Modding:Being|being]] page, but not for the [[Modding:Coord|coord]] page.&lt;br /&gt;
&lt;br /&gt;
See [[Template:Modarg]] for argument handling.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;{{#ifeq:{{{1}}}|desc|{{Anchor|{{lc:{{#sub:{{PAGENAME}}|8|0}}}}_{{{2}}}}}&lt;br /&gt;
;}}{{#switch: {{#sub:{{PAGENAME}}|8|{{#if:{{#pos:{{PAGENAME}}| |8}}|{{#expr:{{#pos:{{PAGENAME}}| |8}} - 7|0}}}}}}&lt;br /&gt;
  | area      = {{#switch: {{{3}}} | dot = area.       | cln = '''area'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | being     = {{#switch: {{{3}}} | dot = being.      | cln = '''being'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | coord     = {{#switch: {{{3}}} | dot = coord.      | cln = '''coord'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | generator = {{#switch: {{{3}}} | dot = generator.  | cln = '''generator'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | item      = {{#switch: {{{3}}} | dot = item.       | cln = '''item'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | level     = {{#switch: {{{3}}} | dot = Level.      | cln = '''level'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | player    = {{#switch: {{{3}}} | dot = player.     | cln = '''player'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | thing     = {{#switch: {{{3}}} | dot = thing.      | cln = '''thing'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | ui        = {{#switch: {{{3}}} | dot = ui.         | cln = '''ui'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
}}{{#switch: {{{1}}}&lt;br /&gt;
  | list = [[#{{lc:{{#sub:{{PAGENAME}}|8|0}}}}_{{{2}}}|{{{2}}}]]&lt;br /&gt;
  | desc = {{{2}}}&lt;br /&gt;
}}({{#if: {{{5|}}}|{{#if: {{{6|}}} | {{modarg|{{{5}}}}} {{{6}}}}}{{#if:{{{7|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{8|}}} |{{modarg|{{{7}}}}} {{{8}}}}}}}{{#if:{{{9|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{10|}}} |{{modarg|{{{9}}}}} {{{10}}}}}}}{{#if:{{{11|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{12|}}} |{{modarg|{{{11}}}}} {{{12}}}}}}}{{#if:{{{13|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{14|}}} |{{modarg|{{{13}}}}} {{{14}}}}}}}{{#if:{{{15|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{16|}}} |{{modarg|{{{15}}}}} {{{16}}}}}}}{{#if:{{{17|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{18|}}} |{{modarg|{{{17}}}}} {{{18}}}}}}}{{#if:{{{19|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{20|}}} |{{modarg|{{{19}}}}} {{{20}}}}}}}{{#if:{{{21|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{22|}}} |{{modarg|{{{21}}}}} {{{22}}}}}}}{{#if:{{{23|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{24|}}} |{{modarg|{{{23}}}}} {{{24}}}}}}}}}){{#if: {{{4|}}}|&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;&amp;amp;rarr; {{#if: {{#pos:{{{4}}}|,}}|{{modarg|{{#explode:{{{4}}}|,|0}}}},{{modarg|{{#explode:{{{4}}}|,|1}}}}|{{modarg|{{{4}}}}} }} }}&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Template:Moddef</id>
		<title>Template:Moddef</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Template:Moddef"/>
				<updated>2013-06-10T17:52:48Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Still bugfixing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This is the prototypical template for expressing API functions. It works with the following args:&lt;br /&gt;
#Sets the type of expression. Currently there are two cases:&lt;br /&gt;
#*&amp;lt;tt&amp;gt;list&amp;lt;/tt&amp;gt; is what's used in the table: it automatically comes with the necessary link for the description's anchor.&lt;br /&gt;
#*&amp;lt;tt&amp;gt;desc&amp;lt;/tt&amp;gt; is what's used underneath the table: this provides the anchor that is linked to the list.&lt;br /&gt;
#Sets the function name. For example, if the function is called &amp;lt;tt&amp;gt;Level.place_tile&amp;lt;/tt&amp;gt;, then this should be set to &amp;lt;tt&amp;gt;place_tile&amp;lt;/tt&amp;gt;.&lt;br /&gt;
#Determines the function type. There are two cases:&lt;br /&gt;
#*&amp;lt;tt&amp;gt;dot&amp;lt;/tt&amp;gt; is the dot form&lt;br /&gt;
#*&amp;lt;tt&amp;gt;cln&amp;lt;/tt&amp;gt; is the colon form&lt;br /&gt;
#Sets the output argument, if any. Leaving this blank should always be done for &amp;lt;tt&amp;gt;list&amp;lt;/tt&amp;gt; functions. You can include up to two comma-separated outputs.&lt;br /&gt;
#From here, input arguments are set. These are be handled in pairs: the first should be the arg type, while the second should be the arg name. You can include up to eight arg pairs in this manner.&lt;br /&gt;
Please note that this template is set up to include information based on the page name, so they can only be used on their appropriate pages. Thus, you can write being API functions using this template for the [[Modding:Being|being]] page, but not for the [[Modding:Coord|coord]] page.&lt;br /&gt;
&lt;br /&gt;
See [[Template:Modarg]] for argument handling.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;{{#ifeq:{{{1}}}|desc|{{Anchor|{{lc:{{#sub:{{PAGENAME}}|8|0}}}}_{{{2}}}}}&lt;br /&gt;
;}}{{#switch: {{#sub:{{PAGENAME}}|8|{{#if:{{#pos:{{PAGENAME}}| |8}}|{{#expr:{{#pos:{{PAGENAME}}| |8}} - 7|0}}}}}}&lt;br /&gt;
  | Modding:area      = {{#switch: {{{3}}} | dot = area.       | cln = '''area'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | Modding:being     = {{#switch: {{{3}}} | dot = being.      | cln = '''being'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | Modding:coord     = {{#switch: {{{3}}} | dot = coord.      | cln = '''coord'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | Modding:generator = {{#switch: {{{3}}} | dot = generator.  | cln = '''generator'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | Modding:item      = {{#switch: {{{3}}} | dot = item.       | cln = '''item'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | Modding:level     = {{#switch: {{{3}}} | dot = Level.      | cln = '''level'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | Modding:player    = {{#switch: {{{3}}} | dot = player.     | cln = '''player'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | Modding:thing     = {{#switch: {{{3}}} | dot = thing.      | cln = '''thing'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | Modding:ui        = {{#switch: {{{3}}} | dot = ui.         | cln = '''ui'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
}}{{#switch: {{{1}}}&lt;br /&gt;
  | list = [[#{{lc:{{#sub:{{PAGENAME}}|8|0}}}}_{{{2}}}|{{{2}}}]]&lt;br /&gt;
  | desc = {{{2}}}&lt;br /&gt;
}}({{#if: {{{5|}}}|{{#if: {{{6|}}} | {{modarg|{{{5}}}}} {{{6}}}}}{{#if:{{{7|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{8|}}} |{{modarg|{{{7}}}}} {{{8}}}}}}}{{#if:{{{9|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{10|}}} |{{modarg|{{{9}}}}} {{{10}}}}}}}{{#if:{{{11|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{12|}}} |{{modarg|{{{11}}}}} {{{12}}}}}}}{{#if:{{{13|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{14|}}} |{{modarg|{{{13}}}}} {{{14}}}}}}}{{#if:{{{15|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{16|}}} |{{modarg|{{{15}}}}} {{{16}}}}}}}{{#if:{{{17|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{18|}}} |{{modarg|{{{17}}}}} {{{18}}}}}}}{{#if:{{{19|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{20|}}} |{{modarg|{{{19}}}}} {{{20}}}}}}}{{#if:{{{21|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{22|}}} |{{modarg|{{{21}}}}} {{{22}}}}}}}{{#if:{{{23|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{24|}}} |{{modarg|{{{23}}}}} {{{24}}}}}}}}}){{#if: {{{4|}}}|&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;&amp;amp;rarr; {{#if: {{#pos:{{{4}}}|,}}|{{modarg|{{#explode:{{{4}}}|,|0}}}},{{modarg|{{#explode:{{{4}}}|,|1}}}}|{{modarg|{{{4}}}}} }} }}&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Template:Moddef</id>
		<title>Template:Moddef</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Template:Moddef"/>
				<updated>2013-06-10T17:45:08Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Bugfixing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This is the prototypical template for expressing API functions. It works with the following args:&lt;br /&gt;
#Sets the type of expression. Currently there are two cases:&lt;br /&gt;
#*&amp;lt;tt&amp;gt;list&amp;lt;/tt&amp;gt; is what's used in the table: it automatically comes with the necessary link for the description's anchor.&lt;br /&gt;
#*&amp;lt;tt&amp;gt;desc&amp;lt;/tt&amp;gt; is what's used underneath the table: this provides the anchor that is linked to the list.&lt;br /&gt;
#Sets the function name. For example, if the function is called &amp;lt;tt&amp;gt;Level.place_tile&amp;lt;/tt&amp;gt;, then this should be set to &amp;lt;tt&amp;gt;place_tile&amp;lt;/tt&amp;gt;.&lt;br /&gt;
#Determines the function type. There are two cases:&lt;br /&gt;
#*&amp;lt;tt&amp;gt;dot&amp;lt;/tt&amp;gt; is the dot form&lt;br /&gt;
#*&amp;lt;tt&amp;gt;cln&amp;lt;/tt&amp;gt; is the colon form&lt;br /&gt;
#Sets the output argument, if any. Leaving this blank should always be done for &amp;lt;tt&amp;gt;list&amp;lt;/tt&amp;gt; functions. You can include up to two comma-separated outputs.&lt;br /&gt;
#From here, input arguments are set. These are be handled in pairs: the first should be the arg type, while the second should be the arg name. You can include up to eight arg pairs in this manner.&lt;br /&gt;
Please note that this template is set up to include information based on the page name, so they can only be used on their appropriate pages. Thus, you can write being API functions using this template for the [[Modding:Being|being]] page, but not for the [[Modding:Coord|coord]] page.&lt;br /&gt;
&lt;br /&gt;
See [[Template:Modarg]] for argument handling.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;{{#ifeq:{{{1}}}|desc|{{Anchor|{{lc:{{#sub:{{PAGENAME}}|8|0}}}}_{{{2}}}}}&lt;br /&gt;
;}}{{#switch: {{#sub:Modding&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;level API (0.9.9.7)xxxxxxxxxxxxx|7|{{#if:{{#pos:Modding&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;level API (0.9.9.7)xxxxxxxxxxxxx| |8}}|{{#expr:{{#pos:Modding&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;level API (0.9.9.7)xxxxxxxxxxxxx| |8}} - 7|0}}}}}}&lt;br /&gt;
  | Modding:area      = {{#switch: {{{3}}} | dot = area.       | cln = '''area'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | Modding:being     = {{#switch: {{{3}}} | dot = being.      | cln = '''being'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | Modding:coord     = {{#switch: {{{3}}} | dot = coord.      | cln = '''coord'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | Modding:generator = {{#switch: {{{3}}} | dot = generator.  | cln = '''generator'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | Modding:item      = {{#switch: {{{3}}} | dot = item.       | cln = '''item'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | Modding:level     = {{#switch: {{{3}}} | dot = Level.      | cln = '''level'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | Modding:player    = {{#switch: {{{3}}} | dot = player.     | cln = '''player'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | Modding:thing     = {{#switch: {{{3}}} | dot = thing.      | cln = '''thing'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | Modding:ui        = {{#switch: {{{3}}} | dot = ui.         | cln = '''ui'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
}}{{#switch: {{{1}}}&lt;br /&gt;
  | list = [[#{{lc:{{#sub:{{PAGENAME}}|8|0}}}}_{{{2}}}|{{{2}}}]]&lt;br /&gt;
  | desc = {{{2}}}&lt;br /&gt;
}}({{#if: {{{5|}}}|{{#if: {{{6|}}} | {{modarg|{{{5}}}}} {{{6}}}}}{{#if:{{{7|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{8|}}} |{{modarg|{{{7}}}}} {{{8}}}}}}}{{#if:{{{9|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{10|}}} |{{modarg|{{{9}}}}} {{{10}}}}}}}{{#if:{{{11|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{12|}}} |{{modarg|{{{11}}}}} {{{12}}}}}}}{{#if:{{{13|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{14|}}} |{{modarg|{{{13}}}}} {{{14}}}}}}}{{#if:{{{15|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{16|}}} |{{modarg|{{{15}}}}} {{{16}}}}}}}{{#if:{{{17|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{18|}}} |{{modarg|{{{17}}}}} {{{18}}}}}}}{{#if:{{{19|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{20|}}} |{{modarg|{{{19}}}}} {{{20}}}}}}}{{#if:{{{21|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{22|}}} |{{modarg|{{{21}}}}} {{{22}}}}}}}{{#if:{{{23|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{24|}}} |{{modarg|{{{23}}}}} {{{24}}}}}}}}}){{#if: {{{4|}}}|&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;&amp;amp;rarr; {{#if: {{#pos:{{{4}}}|,}}|{{modarg|{{#explode:{{{4}}}|,|0}}}},{{modarg|{{#explode:{{{4}}}|,|1}}}}|{{modarg|{{{4}}}}} }} }}&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Template:Moddef</id>
		<title>Template:Moddef</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Template:Moddef"/>
				<updated>2013-06-10T15:07:47Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Bugfix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This is the prototypical template for expressing API functions. It works with the following args:&lt;br /&gt;
#Sets the type of expression. Currently there are two cases:&lt;br /&gt;
#*&amp;lt;tt&amp;gt;list&amp;lt;/tt&amp;gt; is what's used in the table: it automatically comes with the necessary link for the description's anchor.&lt;br /&gt;
#*&amp;lt;tt&amp;gt;desc&amp;lt;/tt&amp;gt; is what's used underneath the table: this provides the anchor that is linked to the list.&lt;br /&gt;
#Sets the function name. For example, if the function is called &amp;lt;tt&amp;gt;Level.place_tile&amp;lt;/tt&amp;gt;, then this should be set to &amp;lt;tt&amp;gt;place_tile&amp;lt;/tt&amp;gt;.&lt;br /&gt;
#Determines the function type. There are two cases:&lt;br /&gt;
#*&amp;lt;tt&amp;gt;dot&amp;lt;/tt&amp;gt; is the dot form&lt;br /&gt;
#*&amp;lt;tt&amp;gt;cln&amp;lt;/tt&amp;gt; is the colon form&lt;br /&gt;
#Sets the output argument, if any. Leaving this blank should always be done for &amp;lt;tt&amp;gt;list&amp;lt;/tt&amp;gt; functions. You can include up to two comma-separated outputs.&lt;br /&gt;
#From here, input arguments are set. These are be handled in pairs: the first should be the arg type, while the second should be the arg name. You can include up to eight arg pairs in this manner.&lt;br /&gt;
Please note that this template is set up to include information based on the page name, so they can only be used on their appropriate pages. Thus, you can write being API functions using this template for the [[Modding:Being|being]] page, but not for the [[Modding:Coord|coord]] page.&lt;br /&gt;
&lt;br /&gt;
See [[Template:Modarg]] for argument handling.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;{{#ifeq:{{{1}}}|desc|{{Anchor|{{lc:{{#sub:{{PAGENAME}}|8|0}}}}_{{{2}}}}}&lt;br /&gt;
;}}{{#switch: {{#sub:{{PAGENAME}}|8|{{#expr: {{#if{{#pos:{{PAGENAME}}| |8}}|{{#pos:{{PAGENAME}}| |8}}|0}} - 8 }}}}&lt;br /&gt;
  | area      = {{#switch: {{{3}}} | dot = area.       | cln = '''area'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | being     = {{#switch: {{{3}}} | dot = being.      | cln = '''being'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | coord     = {{#switch: {{{3}}} | dot = coord.      | cln = '''coord'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | generator = {{#switch: {{{3}}} | dot = generator.  | cln = '''generator'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | item      = {{#switch: {{{3}}} | dot = item.       | cln = '''item'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | level     = {{#switch: {{{3}}} | dot = Level.      | cln = '''level'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | player    = {{#switch: {{{3}}} | dot = player.     | cln = '''player'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | thing     = {{#switch: {{{3}}} | dot = thing.      | cln = '''thing'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | ui        = {{#switch: {{{3}}} | dot = ui.         | cln = '''ui'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
}}{{#switch: {{{1}}}&lt;br /&gt;
  | list = [[#{{lc:{{#sub:{{PAGENAME}}|8|0}}}}_{{{2}}}|{{{2}}}]]&lt;br /&gt;
  | desc = {{{2}}}&lt;br /&gt;
}}({{#if: {{{5|}}}|{{#if: {{{6|}}} | {{modarg|{{{5}}}}} {{{6}}}}}{{#if:{{{7|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{8|}}} |{{modarg|{{{7}}}}} {{{8}}}}}}}{{#if:{{{9|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{10|}}} |{{modarg|{{{9}}}}} {{{10}}}}}}}{{#if:{{{11|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{12|}}} |{{modarg|{{{11}}}}} {{{12}}}}}}}{{#if:{{{13|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{14|}}} |{{modarg|{{{13}}}}} {{{14}}}}}}}{{#if:{{{15|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{16|}}} |{{modarg|{{{15}}}}} {{{16}}}}}}}{{#if:{{{17|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{18|}}} |{{modarg|{{{17}}}}} {{{18}}}}}}}{{#if:{{{19|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{20|}}} |{{modarg|{{{19}}}}} {{{20}}}}}}}{{#if:{{{21|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{22|}}} |{{modarg|{{{21}}}}} {{{22}}}}}}}{{#if:{{{23|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{24|}}} |{{modarg|{{{23}}}}} {{{24}}}}}}}}}){{#if: {{{4|}}}|&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;&amp;amp;rarr; {{#if: {{#pos:{{{4}}}|,}}|{{modarg|{{#explode:{{{4}}}|,|0}}}},{{modarg|{{#explode:{{{4}}}|,|1}}}}|{{modarg|{{{4}}}}} }} }}&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Template:Moddef</id>
		<title>Template:Moddef</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Template:Moddef"/>
				<updated>2013-06-10T14:59:07Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Making the template more robust.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This is the prototypical template for expressing API functions. It works with the following args:&lt;br /&gt;
#Sets the type of expression. Currently there are two cases:&lt;br /&gt;
#*&amp;lt;tt&amp;gt;list&amp;lt;/tt&amp;gt; is what's used in the table: it automatically comes with the necessary link for the description's anchor.&lt;br /&gt;
#*&amp;lt;tt&amp;gt;desc&amp;lt;/tt&amp;gt; is what's used underneath the table: this provides the anchor that is linked to the list.&lt;br /&gt;
#Sets the function name. For example, if the function is called &amp;lt;tt&amp;gt;Level.place_tile&amp;lt;/tt&amp;gt;, then this should be set to &amp;lt;tt&amp;gt;place_tile&amp;lt;/tt&amp;gt;.&lt;br /&gt;
#Determines the function type. There are two cases:&lt;br /&gt;
#*&amp;lt;tt&amp;gt;dot&amp;lt;/tt&amp;gt; is the dot form&lt;br /&gt;
#*&amp;lt;tt&amp;gt;cln&amp;lt;/tt&amp;gt; is the colon form&lt;br /&gt;
#Sets the output argument, if any. Leaving this blank should always be done for &amp;lt;tt&amp;gt;list&amp;lt;/tt&amp;gt; functions. You can include up to two comma-separated outputs.&lt;br /&gt;
#From here, input arguments are set. These are be handled in pairs: the first should be the arg type, while the second should be the arg name. You can include up to eight arg pairs in this manner.&lt;br /&gt;
Please note that this template is set up to include information based on the page name, so they can only be used on their appropriate pages. Thus, you can write being API functions using this template for the [[Modding:Being|being]] page, but not for the [[Modding:Coord|coord]] page.&lt;br /&gt;
&lt;br /&gt;
See [[Template:Modarg]] for argument handling.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;{{#ifeq:{{{1}}}|desc|{{Anchor|{{lc:{{#sub:{{PAGENAME}}|8|0}}}}_{{{2}}}}}&lt;br /&gt;
;}}{{#switch: {{#sub:{{PAGENAME}}|8|{{#expr: {{#if{{#pos:{{PAGENAME}}|&amp;quot; &amp;quot;|8}}||0}} - 8 }}}}&lt;br /&gt;
  | area      = {{#switch: {{{3}}} | dot = area.       | cln = '''area'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | being     = {{#switch: {{{3}}} | dot = being.      | cln = '''being'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | coord     = {{#switch: {{{3}}} | dot = coord.      | cln = '''coord'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | generator = {{#switch: {{{3}}} | dot = generator.  | cln = '''generator'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | item      = {{#switch: {{{3}}} | dot = item.       | cln = '''item'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | level     = {{#switch: {{{3}}} | dot = Level.      | cln = '''level'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | player    = {{#switch: {{{3}}} | dot = player.     | cln = '''player'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | thing     = {{#switch: {{{3}}} | dot = thing.      | cln = '''thing'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
  | ui        = {{#switch: {{{3}}} | dot = ui.         | cln = '''ui'''&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
}}{{#switch: {{{1}}}&lt;br /&gt;
  | list = [[#{{lc:{{#sub:{{PAGENAME}}|8|0}}}}_{{{2}}}|{{{2}}}]]&lt;br /&gt;
  | desc = {{{2}}}&lt;br /&gt;
}}({{#if: {{{5|}}}|{{#if: {{{6|}}} | {{modarg|{{{5}}}}} {{{6}}}}}{{#if:{{{7|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{8|}}} |{{modarg|{{{7}}}}} {{{8}}}}}}}{{#if:{{{9|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{10|}}} |{{modarg|{{{9}}}}} {{{10}}}}}}}{{#if:{{{11|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{12|}}} |{{modarg|{{{11}}}}} {{{12}}}}}}}{{#if:{{{13|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{14|}}} |{{modarg|{{{13}}}}} {{{14}}}}}}}{{#if:{{{15|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{16|}}} |{{modarg|{{{15}}}}} {{{16}}}}}}}{{#if:{{{17|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{18|}}} |{{modarg|{{{17}}}}} {{{18}}}}}}}{{#if:{{{19|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{20|}}} |{{modarg|{{{19}}}}} {{{20}}}}}}}{{#if:{{{21|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{22|}}} |{{modarg|{{{21}}}}} {{{22}}}}}}}{{#if:{{{23|}}}|&amp;lt;nowiki&amp;gt;, &amp;lt;/nowiki&amp;gt;{{#if: {{{24|}}} |{{modarg|{{{23}}}}} {{{24}}}}}}}}}){{#if: {{{4|}}}|&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;&amp;amp;rarr; {{#if: {{#pos:{{{4}}}|,}}|{{modarg|{{#explode:{{{4}}}|,|0}}}},{{modarg|{{#explode:{{{4}}}|,|1}}}}|{{modarg|{{{4}}}}} }} }}&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Modding:generator_API_(0.9.9.7)</id>
		<title>Modding:generator API (0.9.9.7)</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Modding:generator_API_(0.9.9.7)"/>
				<updated>2013-06-10T04:02:13Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Putting in 0997 info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''This page is currently under construction.''&lt;br /&gt;
&lt;br /&gt;
The generator holds all of the ever-present functions used to create the random maps in DoomRL. It also contains a variety of helper functions, many of them useful if not vital to the creation of intricate and meticulous game design.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
Please note that the type &amp;quot;integer&amp;quot; indicates an numeric value without a decimal part.  It does not indicate the range of acceptable values.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellID&amp;quot; may be the numeric or string ID of a cell.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellSet&amp;quot; may be the numeric ID, string ID, or a list of numeric and/or string IDs.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;Flags&amp;quot; expects a list of [[Modding:Constants|flag constants]] of the indicated type.  &lt;br /&gt;
&lt;br /&gt;
An argument name in [square brackets] is an optional one.  The function description will indicate how the function operates if it is omitted.&lt;br /&gt;
&lt;br /&gt;
=== Generator API Function List ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 2px solid darkred; border-spacing: 0; font-size: 90%; margin: 0.25em 0.5em;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: darkred; color: yellow; font-size: 120%; text-align: center&amp;quot;|'''Generator Interface - Functions'''&lt;br /&gt;
 {{Table2Col&lt;br /&gt;
  |es=background: #333; &lt;br /&gt;
  |c1=font-weight:bold; text-align:right; vertical-align:top; padding:0px 2px;&lt;br /&gt;
  |c2=padding:0px 2px;&lt;br /&gt;
  ||'''[[#Basic Cell Handling Functions|Basic Cell Handling Functions]]'''&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|get_cell|dot||Coord|loc}}&lt;br /&gt;
  |{{modarg|string}}|{{moddef|list|get_cell_id|dot||Coord|loc}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|fast_get_cell|dot||integer|x|integer|y}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_cell|dot||Coord|loc|CellID|what}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fast_set_cell|dot||integer|x|integer|y|integer|what}}&lt;br /&gt;
  ||'''[[#Map Checking Functions|Map Checking Functions]]'''&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|around|dot||Coord|where|CellSet|what}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|cross_around|dot||Coord|where|CellSet|what}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty|dot||Coord|where|Flags|reqs}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty_area|dot||Area|where|Flags|reqs}}  &lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|scan|dot||Area|where|CellID|good}}&lt;br /&gt;
  ||'''[[#Map Searching Functions|Map Searching Functions]]'''&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|drop_coord|dot||Coord|where|Flags|reqs}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_coord|dot||CellSet|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|random_coord|dot||Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_random_coord|dot||CellSet|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_empty_coord|dot||CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|random_empty_coord|dot||Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_random_empty_coord|dot||CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|safe_empty_coord|dot||Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|standard_empty_coord|dot}}&lt;br /&gt;
  ||'''[[#Advanced Cell Handling Functions|Advanced Cell Handling Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fill|dot||CellID|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fill_pattern|dot||Area|where|boolean|horiz|Table|line1|Table|[line2]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fill_edges|dot||CellID|what}}&lt;br /&gt;
  |{{modarg|Table}}|{{moddef|list|each|dot||CellID|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_blood|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_permanence|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
  |{{modarg|Table}}|{{moddef|list|cell_set|dot||CellSet|cells}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|restore_walls|dot||CellID|wallCell|boolean|keepFluids}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|plot_line|dot||Coord|where|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|plot_lines|dot||Coord|where|Area|larea|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|scatter|dot||Area|where|CellID|good|CellID|fill|integer|count}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|scatter_blood|dot||Area|where|CellID|[good]|integer|count}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|scatter_put|dot||Area|where|Table|translation|string|tile|CellID|good|integer|count}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|transmute|dot||CellID|to|CellSet|from|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|transmute_marker|dot||Flag|marker|CellID|To|Area|[where]}}&lt;br /&gt;
  ||'''[[#Tile Handling Functions|Tile Handling Functions]]'''&lt;br /&gt;
  |{{modarg|Table}}|{{moddef|list|create_translation|dot||Table|code}}&lt;br /&gt;
  |{{modarg|Tile}}|{{moddef|list|tile_new|dot||string|map|Table|translation}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|tile_place|dot||Coord|where|Tile|what}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_tile|dot||Table|translation|string|tile|integer|x|integer|y}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_dungen_tile|dot||Table|code|Tile|tile|Coord|where}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_symmetry_quad|dot||string|tile|Table|translation}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_proto_map|dot||Coord|where|string|proto_map|string|proto_key|Table|code}}&lt;br /&gt;
  ||'''[[#Room Handling Functions|Room Handling Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|add_room|dot||Area|room|string|[class]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|add_rooms|dot}}&lt;br /&gt;
  |{{modarg|Room}}|{{moddef|list|get_room|dot||integer|min_size|integer|max_x|integer|max_y|integer|max_area|string|[class]}}&lt;br /&gt;
  |{{modarg|integer, integer}}|{{moddef|list|get_endpoints|dot||Coord|where|boolean|horiz|CellSet|what}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|handle_rooms|dot||integer|count|boolean|no_monsters}}&lt;br /&gt;
  ||'''[[#Generation Algorithm Functions|Generation Algorithm Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|run_drunkard_walk|dot||Area|where|Coord|start|integer|steps|CellID|fill|CellSet|[ignore]|boolean|[stop_at_edge]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|drunkard_walks|dot||integer|amount|integer|steps|CellID|fill|CellSet|[ignore]|boolean|[stop_at_edge]|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|contd_drunkard_walks|dot||integer|amount|integer|steps|CellID|fill|CellSet|edges1|CellSet|edges2|CellSet|[ignore]|boolean|[stop_at_edge]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|warehouse_fill|dot||CellSet|fill|Area|where|integer|size|integer|count|integer|special_chance|CellSet|special}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_blob|dot||Coord|start|integer|size|CellID|cell}}&lt;br /&gt;
  ||'''[[#Generator Helper Functions|Generator Helper Functions]]'''&lt;br /&gt;
  |{{modarg|&amp;lt;value&amp;gt;, &amp;lt;value&amp;gt;}}|{{moddef|list|roll_pair|dot||Table|list}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|being_weight|dot}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|item_amount|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|horiz_river|dot||CellID|cell|integer|width|boolean|[bridge]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|vert_river|dot||CellID|cell|integer|width|boolean|bridge|integer|position}}&lt;br /&gt;
{{moddef|list|vert_river|dot||CellID|cell|integer|width|boolean|bridge|Coord|position}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_rivers|dot||boolean|allow_horiz|boolean|allow_more}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_fluids|dot||Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_barrels|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_stairs|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_special_stairs|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_player|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|run|dot||Generator|gen}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|reset|dot}}&lt;br /&gt;
  ||'''[[#Dungeon Generation Functions|Dungeon Generation Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_tiled|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|maze_dungeon|dot||CellID|floor|CellID|wall|integer|granularity|integer|tries|integer|min_size|integer|max_size}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_caves_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_caves_2_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_lava_dungeon|dot}}&lt;br /&gt;
  ||'''[[#Event Handler Functions|Event Handler Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|roll_event|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_flood_event|dot||integer|direction|integer|step|CellID|cell}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_deadly_air_event|dot||integer|step}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_explosion_event|dot||integer|step|integer|size|integer|dice|integer|[content]}}&lt;br /&gt;
{{moddef|list|setup_explosion_event|dot||integer|step|Table|size|integer|dice|integer|[content]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_targeted_event|dot||integer|step}}&lt;br /&gt;
  |}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Basic Cell Handling Functions ===&lt;br /&gt;
;{{moddef|desc|get_cell|dot|integer|Coord|loc}}&lt;br /&gt;
Gets the Numeric ID (NID) of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''loc'': The coordinates of the cell to get.&lt;br /&gt;
:'''Returns''': The NID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_cell_id|dot|string|Coord|loc}}&lt;br /&gt;
Gets the ID of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''loc'': The coordinates of the cell to get.&lt;br /&gt;
:'''Returns''': The string ID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fast_get_cell|dot|integer|integer|x|integer|y}}&lt;br /&gt;
Gets the Numeric ID (NID) of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''x'': The X position of the cell to get.&lt;br /&gt;
:''y'': The Y position of the cell to get.&lt;br /&gt;
:'''Returns''': The NID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_cell|dot||Coord|loc|CellID|what}}&lt;br /&gt;
Assigns a [[Modding:Cell|cell]] to a map position.&lt;br /&gt;
:''loc'': The coordinates of the position to set.&lt;br /&gt;
:''what'': The ID of the cell to assign to the position.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fast_set_cell|dot||integer|x|integer|y|integer|what}}&lt;br /&gt;
Assigns a [[Modding:Cell|cell]] to a map position.&lt;br /&gt;
:''x'': The X position of the cell to set.&lt;br /&gt;
:''y'': The Y position of the cell to set.&lt;br /&gt;
:''what'': The NID (string IDs not allowed) of the cell to assign to the position.&lt;br /&gt;
----&lt;br /&gt;
=== Map Checking Functions ===&lt;br /&gt;
;{{moddef|desc|around|dot|integer|Coord|where|CellSet|what}}&lt;br /&gt;
Checks the positions adjacent to a location (including diagonally adjacent) and returns the number of cells that match one of the indicated cell IDs.&lt;br /&gt;
:''where'': The coordinate to check around.  The coordinate sent in this way is not checked, only adjacent cells are.&lt;br /&gt;
:''what'': The cell(s) to check for.&lt;br /&gt;
:'''Returns''': The number of cells (from 0 to 8) that matched one of the ''what'' cell IDs.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|cross_around|dot|integer|Coord|where|CellSet|what}}&lt;br /&gt;
Checks the positions adjacent to a location (but not diagonally adjacent) and returns the number of cells that match one of the indicated cell IDs.&lt;br /&gt;
:''where'': The coordinates to check around.  The coordinate sent in this way is not checked, only adjacent cells are.&lt;br /&gt;
:''what'': The cell(s) to check for.&lt;br /&gt;
:'''Returns''': The number of cells (from 0 to 4) that matched one of the ''what'' cell IDs.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty|dot|boolean|Coord|where|Flags|reqs}}&lt;br /&gt;
Checks to see if the indicated cell is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The position to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the position cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the map position does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if the cell satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty_area|dot|boolean|Area|where|Flags|reqs}}&lt;br /&gt;
Checks to see if the indicated area is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The area to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the area cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the area does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if every cell in the area satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scan|dot|boolean|Area|where|CellID|good}}&lt;br /&gt;
Checks to see if the entire area is filled with a certain cell.&lt;br /&gt;
:''where'': The area to check.&lt;br /&gt;
:''good'': The cell to look for.&lt;br /&gt;
:'''Returns''': ''True'' if all cells in the area are ''good'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
=== Map Searching Functions ===&lt;br /&gt;
;{{moddef|desc|drop_coord|dot|Coord|Coord|where|Flags|reqs}}&lt;br /&gt;
Finds the nearest &amp;quot;empty&amp;quot; coordinate to a given coordinate, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The coordinate to try.  If this coordinate is &amp;quot;empty&amp;quot;, this coordinate will be returned.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': The nearest coordinate the satisfies the criteria.  If the supplied coordinate meets the criteria, that coordinate will be returned.  If not a nearby, random, coordinate will be checked. &lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_coord|dot|Coord|CellSet|what|Area|[where]}}&lt;br /&gt;
Searches the map for the first coordinate containing one of the indicated cell IDs.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': The coordinates of the first position that contains one of the ''what'' cell IDs.  The map is checked row by row starting from the top, going from left to right across each row.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_coord|dot|Coord|Area|[where]}}&lt;br /&gt;
Searches for a random coordinate within the specified area.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the coordinate to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_random_coord|dot|Coord|CellSet|what|Area|[where]}}&lt;br /&gt;
Searches for a random coordinate within the specified area that contains one of the specified cell IDs.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''where'' : ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_empty_coord|dot|Coord|CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for the first &amp;quot;empty&amp;quot; coordinate containing one of the indicated cell IDs, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''reqs'':  A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': The coordinates of the first position that meets the supplied criteria.  The map is checked row by row starting from the top, going from left to right across each row.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_empty_coord|dot|Coord|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for a random coordinate that is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the random coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_random_empty_coord|dot|Coord|CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for a random &amp;quot;empty&amp;quot; coordinate containing one of the indicated cell IDs, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''reqs'':  A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the random coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_square|dot|Coord|CellSet|what}}&lt;br /&gt;
Searches for a random 3x3 area containing only specified cells.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:'''Returns''': The center coordinate of the random 3x3 area.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|safe_empty_coord|dot|Coord|Area|[where]}}&lt;br /&gt;
Searches for a random coordinate that meets certain predetermined criteria.&lt;br /&gt;
&lt;br /&gt;
The function will try to find a coordinate that does not contain a being, item, staircase, wall, harmful terrain, spawning restrictions (cells marked with LF_NOSPAWN), and is more than 5 spaces from the player (EF_NOBEINGS, EF_NOITEMS, EF_NOSTAIRS, EF_NOBLOCK, EF_NOHARM, EF_NOSPAWN, and EF_NOSAFE).  If a valid space isn't found, the function will ignore distance from the player (EF_NOSAFE).  If a valid space still can't be found, the function will ignore stairs and harmful terrain (EF_NOSTAIRS and EF_NOHARM).&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the initial pass to.  If a valid coordinate is not found within the area after ignoring stairs and harmful terrain, the search is restarted and expanded automatically to the entire map.  If omitted, the entire map will be searched.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|standard_empty_coord|dot|Coord}}&lt;br /&gt;
Searches for a random coordinate that meets certain predetermined criteria.&lt;br /&gt;
&lt;br /&gt;
The function will search for a coordinate that does not contain a being, item, staircase, wall, harmful terrain, or spawning restrictions (EF_NOBEINGS, EF_NOITEMS, EF_NOSTAIRS, EF_NOBLOCK, EF_NOHARM, and EF_NOSPAWN).&lt;br /&gt;
:'''Returns''': A random coordinate that meets the criteria.&lt;br /&gt;
----&lt;br /&gt;
=== Advanced Cell Handling Functions ===&lt;br /&gt;
;{{moddef|desc|fill|dot||CellID|what|Area|[where]}}&lt;br /&gt;
Fills an area of the map with a given cell.&lt;br /&gt;
:''what'': The cell to fill with.&lt;br /&gt;
:''where'': ''Optional.'' The area to fill with the cell.  If omitted, the entire map will be filled.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fill_pattern|dot||Area|where|boolean|horiz|string|Table|line1|Table|[line2]}}&lt;br /&gt;
Fills an area of the map with a pattern of cells.&lt;br /&gt;
:''where'': The area to fill.&lt;br /&gt;
:''horiz'': If ''True'', the pattern will fill each row left to right, then move to the next row down in the area.  If ''False'', the pattern will fill each column top to bottom, then move to the next column right in the area. &lt;br /&gt;
:''line1'': The pattern to fill with.  If the pattern is shorter than the area size, the pattern will loop.  The pattern does not restart at the end of a row or column.&lt;br /&gt;
:''line2'': ''Optional.'' If given, each time the end of row (if ''horiz'' is ''True'') or column (if ''horiz'' is ''False'') is reached, the function will switch to filling with the other pattern.  That is, the first row will use ''line1'' then the second will use ''line2'', then the third will use ''line1'' again, etc.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fill_edges|dot||CellID|what}}&lt;br /&gt;
Fills the edges of the map with the given cell.&lt;br /&gt;
:''what'': The cell to fill with.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|each|dot|Table|CellID|what|Area|[where]}}&lt;br /&gt;
Searches for a cell and returns a table containing every location it was found.&lt;br /&gt;
:''what'': The cell to search for.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.&lt;br /&gt;
:'''Returns''': A table containing a list of [[Modding:Coord|Coord]] objects.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_blood|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
Adds blood to the map or removes blood from it.&lt;br /&gt;
:''where'': ''Optional.'' The area to affect.  If omitted, the entire map will selected.&lt;br /&gt;
:''value'': ''Optional.'' ''True'' adds blood.  ''False'' removes it.  If omitted, the default is to add blood.&lt;br /&gt;
:''what'': ''Optional.'' If provided, only locations containing the given cell are affected.  If omitted, all cells in the area are affected.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_permanence|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
Makes cell permanent or removes their permanence.&lt;br /&gt;
:''where'': ''Optional.'' The area to affect.  If omitted, the entire map will be selected.&lt;br /&gt;
:''value'': ''Optional.'' ''True'' adds permanence.  ''False'' removes it.  If omitted, the default is to add permanence.&lt;br /&gt;
:''what'': ''Optional.'' If provided, only locations containing the given cell are affected.  If omitted, wall cells (which includes crate cells) are affected.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|cell_set|dot|Table|CellSet|cells}}&lt;br /&gt;
Creates a cell group.&lt;br /&gt;
:''cells'': A list of cells to add to the group.&lt;br /&gt;
:'''Returns''': A cell group table.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|restore_walls|dot||CellID|wallCell|boolean|keepFluids}}&lt;br /&gt;
Fixes the edge walls of the map.&lt;br /&gt;
:''wallCell'': The cell to fill the edge of the map with.&lt;br /&gt;
:''keepFluids'': ''True'' to maintain any fluid tiles on the edge of the map.  ''False'' to overwrite them.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|plot_line|dot||Coord|where|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
Splits an area into two at the indicated location.&lt;br /&gt;
:''where'': The starting point.&lt;br /&gt;
:''horiz'': ''True'' draws along the indicated X position of the ''where'' coordinate.  ''False'' draws along the indicated Y position of the ''where'' coordinate.&lt;br /&gt;
:''cell'': The cell that will be used to split the area.&lt;br /&gt;
:''block'': The cell(s) that block the line plotting.  The drawn line will stop before hitting a coordinate with one of these cells.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|plot_lines|dot||Coord|where|Area|larea|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
Splits an area into two at the indicated location.&lt;br /&gt;
:''where'': The starting point.&lt;br /&gt;
:''larea'': The boundaries of the line.  The line will not extend past the edge of the area.&lt;br /&gt;
:''horiz'': ''True'' draws along the indicated X position of the ''where'' coordinate.  ''False'' draws along the indicated Y position of the ''where'' coordinate.&lt;br /&gt;
:''cell'': The cell that will be used to split the area.&lt;br /&gt;
:''block'': The cell(s) that block the line plotting.  The drawn line will stop before hitting a coordinate with one of these cells.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scatter|dot||Area|where|CellID|good|CellID|fill|integer|count}}&lt;br /&gt;
Randomly places a certain cell around the map.&lt;br /&gt;
:''where'': The area to scatter the cell in.&lt;br /&gt;
:''good'': Only this locations with this cell will be changed by the function.&lt;br /&gt;
:''fill'': The cell to scatter around the area.&lt;br /&gt;
:''count'': The number to attempt to place.  If the chosen location is not ''good'', then it will not change it.  The final number placed may be less than ''count'' (or even 0), but never more.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scatter_blood|dot||Area|where|CellID|[good]|integer|count}}&lt;br /&gt;
Randomly adds blood in an area.&lt;br /&gt;
:''where'': The area to scatter blood in.&lt;br /&gt;
:''good'': ''Optional.'' If defined, only locations with this cell will have blood added.  If omitted, any location my have blood added.&lt;br /&gt;
:''count'': The number of attempts.  On each attempt, a random cell in the area will be chosen to have blood added.  The number of cell that will end up bloody may be less than ''count'' (or even 0), but never more.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scatter_put|dot||Area|where|Table|translation|string|tile|CellID|good|integer|count}}&lt;br /&gt;
Randomly adds a specified tile (a defined arrangement of cells) around the map.&lt;br /&gt;
:''where'': The area to scatter the tile in.  The tiles will only be placed in locations entirely within the area.&lt;br /&gt;
:''translation'': A table with to be used with the ''tile'' argument.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''tile'': A multi-line string, one row of the tile per line, that lays out the arrangment of the cells.  Refer to this (will be linked soon) for more information&lt;br /&gt;
:''good'': Only locations with this cell will be valid for the tile placement.  If any coordinates of the selected placement area are not ''good'', the tile will not be placed at that location.&lt;br /&gt;
:''count'': The number of tiles to try to place.  The placement will continue until this many have been placed, or 10,000 attempts have been made, whichever comes first.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|transmute|dot||CellID|to|CellSet|from|Area|[where]}}&lt;br /&gt;
Changes all of one cell on the map to another cell.&lt;br /&gt;
:''to'': The cell that will replace the existing cells.&lt;br /&gt;
:''from'': The cell(s) that will be replaced.&lt;br /&gt;
:''where'': ''Optional.'' If specified, only cells in the area are changed.  If omitted, the function will change cells across the entire map.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|transmute_marker|dot||Flag|marker|CellID|To|Area|[where]}}&lt;br /&gt;
Changes all positions on the map that have a specified LightFlag (a named constant starting with &amp;quot;LF&amp;quot;, no underscore) to another cell.&lt;br /&gt;
:''marker'': The LightFlag to check for.  Only cells with this flag will be changed.&lt;br /&gt;
:''to'': The cell that will replace the existing cells.&lt;br /&gt;
:''where'': ''Optional.'' If specified, only cells in the area are changed.  If omitted, the function will change cells across the entire map.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Tile Handling Functions ===&lt;br /&gt;
;{{moddef|desc|create_translation|dot|Table|Table|code}}&lt;br /&gt;
Parses a translation table.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''code'': The translation table.&lt;br /&gt;
:'''Returns''': A parsed translation table.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|tile_new|dot|Tile|string|map|Table|translation}}&lt;br /&gt;
Creates a new tile object.&lt;br /&gt;
:''map'': A multi-line string containing the arrangement of the tile using the ''translation'' to convert the characters to cells.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''translation'': A table with to be used with the ''map'' argument.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:'''Returns''': The new tile object.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|tile_place|dot||Coord|where|Tile|what}}&lt;br /&gt;
Places the cells of the tile on the map.&lt;br /&gt;
:''where'': The coordinate that the upper-left of the tile should reside at.&lt;br /&gt;
:''what'': The tile object that will be placed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_tile|dot||Table|translation|string|tile|integer|x|integer|y}}&lt;br /&gt;
Combines the tile_new and tile_place functions together, by placing a tile using a string and translation table.&lt;br /&gt;
:''translation'': A table with to be used with the ''tile'' argument.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''tile'': A multi-line string containing the arrangement of the tile using the ''translation'' to convert the characters to cells.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''x'': The X position that the tile will be placed at.&lt;br /&gt;
:''y'': The Y position that the tile will be placed at.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_dungen_tile|dot||Table|code|Tile|tile|Coord|where}}&lt;br /&gt;
Places an entire tile, including beings and items in the translation, on the map.&lt;br /&gt;
:''code'': The translation table.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''tile'': A multi-line string containing the arrangement of the tile using the ''translation'' to convert the characters to cells and indicate the positions of the beings and items.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''where'': The coordinate the tile will be placed at.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_symmetry_quad|dot||string|tile|Table|translation}}&lt;br /&gt;
Takes a tile object and places it in all four corners.  The tile object should be setup for the upper left corner and will be mirrored to the other corners.  The tiles are placed one space from the map edge.&lt;br /&gt;
:''tile'': A multi-line string containing the arrangement of the tile using the ''translation'' to convert the characters to cells and indicate the positions of the beings and items.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''translation'': The translation table.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_proto_map|dot||Coord|where|string|proto_map|string|proto_key|Table|code}}&lt;br /&gt;
Creates a map using multiple tile sets.&lt;br /&gt;
:''where'': The upper-left position of the map where the tiles will be layout from.&lt;br /&gt;
:''proto_map'': A string indicating the arrangement of the different pieces of the map.  e.g., &amp;quot;ABCD&amp;quot;, will lay out 4 different tiles with A on the far left and D on the far right.&lt;br /&gt;
:''proto_key'': A table containing, for each character in ''proto_map'', a table of the possible tiles for that section.&lt;br /&gt;
:''code'': The translation table for all the tile possibilities.  Refer to this (will be linked soon) for more information.  All tiles use the same translation table.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Room Handling Functions ===&lt;br /&gt;
;{{moddef|desc|add_room|dot||Area|room|string|[class]}}&lt;br /&gt;
Marks an area that can become a special room.&lt;br /&gt;
:''room'': The area of the room.  This includes the walls.&lt;br /&gt;
:''class'': ''Optional.'' A string used to denote which room generators can be used on this room.  If omitted, the class used is &amp;quot;closed&amp;quot;.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|add_rooms|dot}}&lt;br /&gt;
Finds all the areas that can be rooms on a map and adds them to the appropriate meta-map tables.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_room|dot|Room|integer|min_size|integer|max_x|integer|max_y|integer|max_area|string|class}}&lt;br /&gt;
Selects a room given certain criteria.&lt;br /&gt;
:''min_size'': The smallest X and Y dimensions the room can be.&lt;br /&gt;
:''max_x'': The maximum width of the room.&lt;br /&gt;
:''max_y'': The maximum height of the room.&lt;br /&gt;
:''max_area'': The largest area the room can be.&lt;br /&gt;
:''class'': ''Optional.'' The string denoting which room classes are valid for this room generator.  If omitted, &amp;quot;any&amp;quot; is used, which does not restrict the selection of rooms.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_endpoints|dot|integer, integer|Coord|where|boolean|horiz|CellSet|what}}&lt;br /&gt;
Finds the ends of a line of cells.&lt;br /&gt;
:''where'': The starting coordinate.&lt;br /&gt;
:''horiz'': ''True'' checks horizontally.  ''False'' checks vertically.&lt;br /&gt;
:''what'': The cell(s) that make up the line to check.  The functions stops at the first cell '''not''' in this list.&lt;br /&gt;
:'''Returns''': Two integers.  If ''horiz'' is ''True'', these are the X positions the line stops at.  If ''horiz'' is ''False'', these are the Y positions the line stops at.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|handle_rooms|dot||integer|count|boolean|no_monsters}}&lt;br /&gt;
Runs the rooms selection and setup process for a map.&lt;br /&gt;
:''count'': The number of rooms to attempt to place.&lt;br /&gt;
:''no_monsters'': ''True'' will exclude room generators that place monsters.  ''False'' will not.&lt;br /&gt;
----&lt;br /&gt;
=== Generation Algorithm Functions ===&lt;br /&gt;
;{{moddef|desc|run_drunkard_walk|dot||Area|where|Coord|start|integer|steps|CellID|fill|CellSet|[ignore]|boolean|[stop_at_edge]|Area|where}}&lt;br /&gt;
Runs an algorithm that walks to random adjacent spaces.&lt;br /&gt;
:''where'': The area that the algorithm will run in.  If the algorithm tries to leave the area, it will stop early or will be pushed back in the area (''stop_at_edge'' will determine which of these happen).&lt;br /&gt;
:''start'': The location the algorithm will begin at.&lt;br /&gt;
:''steps'': The number of steps the algorithm will take.  The number of spaces covered by the algorithm will be at most this number.&lt;br /&gt;
:''fill'': The cell that will be placed at each location the algorithm hits.&lt;br /&gt;
:''ignore'': ''Optional.'' If specified, the algorithm will not place the ''fill'' cell in any location that has one of the cell(s) specified.  If omitted, no locations are ignored.&lt;br /&gt;
:''stop_at_edge'': ''Optional.'' If ''True'', the algorithm will end early if it moves past the end of the area.  If ''False'', the algorithm will clamp to the area (any moves to outside the area get moved back in the area).  If omitted, the default is to clamp.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drunkard_walks|dot||integer|amount|integer|steps|CellID|fill|CellSet|[ignore]|boolean|[stop_at_edge]|Area|[where]}}&lt;br /&gt;
Runs multiple &amp;quot;drunken walk&amp;quot; algorithms.&lt;br /&gt;
:''amount'': The number of times to perform the algorithm.&lt;br /&gt;
:''steps'': The number of steps each run of the algorithm will take.  The number of spaces covered by the algorithm will be at most the ''amount'' times the number of ''steps''.&lt;br /&gt;
:''fill'': The cell that will be placed at each location the algorithm hits.&lt;br /&gt;
:''ignore'': ''Optional.'' If specified, the algorithm will not place the ''fill'' cell in any location that has one of the cell(s) specified.  If omitted, no locations are ignored.&lt;br /&gt;
:''stop_at_edge'': ''Optional.'' If ''True'', the algorithm will end early if it moves past the end of the area.  If ''False'', the algorithm will clamp to the area (any moves to outside the area get moved back in the area).  If omitted, the default is to clamp.&lt;br /&gt;
:''where'': ''Optional.'' The area the algorithm will run in.  If the algorithm tries to leave the area, it will stop early or will be pushed back in the area (''stop_at_edge'' will determine which of these happen).  If omitted, the default is entire area minus the very edge.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|contd_drunkard_walks|dot||integer|amount|integer|steps|CellID|fill|CellSet|edges1|CellSet|edges2|CellSet|[ignore]|boolean|[stop_at_edge]}}&lt;br /&gt;
Runs multiple &amp;quot;drunken walk&amp;quot; algorithms starting at a space that doesn't have certain cells around it.&lt;br /&gt;
:''amount'': The number of times to perform the algorithm.&lt;br /&gt;
:''steps'': The number of steps each run of the algorithm will take.  The number of spaces covered by the algorithm will be at most the ''amount'' times the number of ''steps''.&lt;br /&gt;
:''fill'': The cell that will be placed at each location the algorithm hits.&lt;br /&gt;
:''edges1'': The algorithm will not start on a space with a cell listed here next to it.&lt;br /&gt;
:''edges2'': The algorithm will not start on a space with a cell listed here next to it.&lt;br /&gt;
:''ignore'': ''Optional.'' If specified, the algorithm will not place the ''fill'' cell in any location that has one of the cell(s) specified.  If omitted, no locations are ignored.&lt;br /&gt;
:''stop_at_edge'': ''Optional.'' If ''True'', the algorithm will end early if it moves past the end of the area.  If ''False'', the algorithm will clamp to the area (any moves to outside the area get moved back in the area).  If omitted, the default is to clamp.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|warehouse_fill|dot||CellID|fill|Area|where|integer|[size]|integer|[count]|integer|[special_chance]|CellID|[special]}}&lt;br /&gt;
Fills an area with random squares of cells.&lt;br /&gt;
:''fill'': The cell(s) to use for each square.  If a list is given, one is chosen at random for each square.&lt;br /&gt;
:''where'': The area to fill.&lt;br /&gt;
:''size'': ''Optional.'' The size of the squares to use. If omitted, the default is 2.&lt;br /&gt;
:''count'': ''Optional.'' The number of attempts. If omitted, the default is 50.&lt;br /&gt;
:''special_chance'': ''Optional.'' A number indicating the probability of using a special list of cells to fill the square with instead of the ''fill'' list.  The roll used for the chance is based on the ''size'' parameter.  A number from 1 to (100 * ''size'') is chosen for each square and if the roll is less than the special_chance number, the ''special'' cell set is used to fill the square instead. If omitted, all squares will be filled from the ''fill'' set.&lt;br /&gt;
:''special'': ''Optional.'' The list of cells to use if the special set is to be used, based on ''special_chance''. If omitted, all squares will be filled from the ''fill'' set.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_blob|dot||Coord|start|integer|size|CellID|cell}}&lt;br /&gt;
Fills an area by expanding to random edge coordinates.&lt;br /&gt;
:''start'': The position to start the blob at.&lt;br /&gt;
:''size'': The number of spaces to expand the blob to.&lt;br /&gt;
:''cell'': The cell to fill the blob area with.&lt;br /&gt;
----&lt;br /&gt;
=== Generator Helper Functions ===&lt;br /&gt;
;{{moddef|desc|roll_pair|dot|&amp;lt;value&amp;gt;, &amp;lt;value&amp;gt;|Table|list}}&lt;br /&gt;
Takes a list of values of any type and returns two different values randomly from the list.&lt;br /&gt;
:''list'': The list to choose from.&lt;br /&gt;
:'''Returns''': Two different values.  If the list only contains one choice, it will be returned, but only once.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|being_weight|dot}}&lt;br /&gt;
Gets the total danger level for the current dungeon level.&lt;br /&gt;
'''Returns''': The danger level for the current dungeon level.  This value is calcuated using the current difficulty and ''level.danger_level''.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|item_amount|dot}}&lt;br /&gt;
Gets the number of items to drop for the current dungeon level.&lt;br /&gt;
'''Returns''': The number of items to drop for the current dungeon level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|horiz_river|dot||CellID|cell|integer|width|boolean|[bridge]}}&lt;br /&gt;
Places a horizontal river on the map.&lt;br /&gt;
:''cell'': The cell to use for the river.  It does not have to be a fluid cell.&lt;br /&gt;
:''width'': The width of the river.&lt;br /&gt;
:''bridge'': ''Optional.'' If ''True'', a 2 space wide bridge will be placed at a random coordinate on the river.  If ''False'', no bridge will be placed.  If omitted, the default is to not place a bridge.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|vert_river|dot||CellID|cell|integer|width|boolean|bridge|integer|[position]}}&lt;br /&gt;
;{{moddef|desc|vert_river|dot||CellID|cell|integer|width|boolean|bridge|Coord|[position]}}&lt;br /&gt;
Places a vertical river on the map.&lt;br /&gt;
:''cell'': The cell to use for the river.  It does not have to be a fluid cell.&lt;br /&gt;
:''width'': The width of the river.&lt;br /&gt;
:''bridge'': ''Optional.'' If ''True'', a 2 space wide bridge will be placed at a random coordinate on the river.  If ''False'', no bridge will be placed.  If omitted, the default is to not place a bridge.&lt;br /&gt;
:: NOTE: Because of a bug, a bridge will always be placed on the river, even if this value is set to ''False'' or omitted.&lt;br /&gt;
:''position'':  A coordinate or an integer.  If an integer is supplied, this is the X position of the river's left edge.  If a coordinate is supplied, the river will start at this coordinate.  If omitted, the river's left edge will be selected from between X = 19 to 58.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_rivers|dot||boolean|allow_horiz|boolean|allow_more}}&lt;br /&gt;
Creates rivers based on normal DoomRL river generation.&lt;br /&gt;
:''allow_horiz'': ''True'' allows horizontal rivers to be generated.  ''False'' will prevent the generation of horizontal rivers.&lt;br /&gt;
:''allow_more'': ''True'' allows multiple vertical rivers.  ''False'' will prevent more than one vertical river from being placed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_fluids|dot||Area|[where]}}&lt;br /&gt;
Creates fluids based on normal DoomRL fluid generation.&lt;br /&gt;
:''where'': ''Optional.'' The area to generate fluids in.  If omitted, the area used will be the entire map minus the very edge.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_barrels|dot}}&lt;br /&gt;
Creates barrels based on normal DoomRL barrel generation.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_stairs|dot}}&lt;br /&gt;
Creates the normal staircase based on normal DoomRL stair generation.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_special_stairs|dot}}&lt;br /&gt;
Creates the special staircase based on normal DoomRL special stair generation.  Whether a special staircase is placed depends on the level.special_exit value.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_player|dot}}&lt;br /&gt;
Places the player on a random empty space.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|run|dot||Generator|gen}}&lt;br /&gt;
Runs a generator object.  These are stored in the generators table.&lt;br /&gt;
:''gen'': The generator object to run.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|reset|dot}}&lt;br /&gt;
Resets the map.&lt;br /&gt;
----&lt;br /&gt;
=== Dungeon Generation Functions ===&lt;br /&gt;
;{{moddef|desc|generate_tiled|dot}}&lt;br /&gt;
Creates a tiled dungeon, also known as a &amp;quot;normal&amp;quot; dungeon.  This only creates the layout, it does not place beings, items, stairs, barrels, or the player.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|maze_dungeon|dot||CellID|floor|CellID|wall|integer|granularity|integer|tries|integer|min_size|integer|max_size}}&lt;br /&gt;
Creates a maze dungeon.  This only creates the layout, it does not place beings, items, stairs, barrels, or the player.&lt;br /&gt;
:''floor'': The cell to use for the floor of the maze.&lt;br /&gt;
:''wall'': The cell to use for the wall of the maze.&lt;br /&gt;
:''granularity'': This denotes the size of the maze's paths.&lt;br /&gt;
:''tries'': Number of attempts to place a new wall in the maze.&lt;br /&gt;
:''min_size'': The smallest possible size of a wall.&lt;br /&gt;
:''max_size'': The largest possible size of a wall.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_caves_dungeon|dot}}&lt;br /&gt;
Runs the generation script for the cave dungeon.  This is an all inclusive function, it also places all beings and items.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_caves_2_dungeon|dot}}&lt;br /&gt;
Runs the generation script for the cave-city dungeon.  This is an all inclusive function, it also places all beings and items.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_lava_dungeon|dot}}&lt;br /&gt;
Runs the generation script for the lava dungeon.  This is an all inclusive function, it also places all beings and items.&lt;br /&gt;
----&lt;br /&gt;
=== Event Handler Functions ===&lt;br /&gt;
;{{moddef|desc|roll_event|dot}}&lt;br /&gt;
Picks an event from the events table and sets it up.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_flood_event|dot||integer|direction|integer|step|CellID|cell}}&lt;br /&gt;
Runs the setup script for the flood event.&lt;br /&gt;
:''direction'': Use 1 to flood from the left.  Use -1 to flood from the right.&lt;br /&gt;
:''step'': Number of turns (0.1 second intervals) between each flood step.&lt;br /&gt;
:''cell'': The cell to flood with.  This does not have to be a fluid cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_deadly_air_event|dot||integer|step}}&lt;br /&gt;
Runs the setup script for the deadly air event.&lt;br /&gt;
:''step'': Number of turns between each &amp;quot;chill&amp;quot; (loss of HP).&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_explosion_event|dot||integer|step|integer|size|integer|dice|integer|[content]}}&lt;br /&gt;
;{{moddef|desc|setup_explosion_event|dot||integer|step|Table|size|integer|dice|integer|[content]}}&lt;br /&gt;
Runs the setup script for the explosion event.&lt;br /&gt;
:''step'': Number of turns between each explosion.&lt;br /&gt;
:''size'': Either a number or a table of two numbers.  Indicates the size of each explosion.  If a table is supplied, the size is randomly chosen between the range supplied each time an explosion is created.&lt;br /&gt;
:''dice'': Number of d6 dice to use for the damage roll.&lt;br /&gt;
:''content'': ''Optional.'' The content to place in any space where the damage to a space is more than 20 points.  If omitted, nothing will placed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_targeted_event|dot||integer|step}}&lt;br /&gt;
Runs the setup script for the targeting event.&lt;br /&gt;
:''step'': Number of turns between each monster teleport.&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Modding:generator_API_(0.9.9.6)</id>
		<title>Modding:generator API (0.9.9.6)</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Modding:generator_API_(0.9.9.6)"/>
				<updated>2013-06-10T04:00:22Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Moving 0996 info here&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The generator holds all of the ever-present functions used to create the random maps in DoomRL. It also contains a variety of helper functions, many of them useful if not vital to the creation of intricate and meticulous game design.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 2px solid darkred; border-spacing: 0; font-size: 90%; margin: 0.25em 0.5em;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: darkred; color: yellow; font-size: 120%; text-align: center&amp;quot;|'''Level Interface'''&lt;br /&gt;
 {{Table2Col&lt;br /&gt;
  |es=background: #333; &lt;br /&gt;
  |c1=font-weight:bold; text-align:right; vertical-align:top; padding:0px 2px;&lt;br /&gt;
  |c2=padding:0px 2px;&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|safe_empty_coord|dot}} &lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|standard_empty_coord|dot}} &lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_permanence|dot||Area|ar|boolean|val|Cell|tile}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_ice_event|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_perma_event|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_alarm_event|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_deadly_air_event|dot||integer|step}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_nuke_event|dot||integer|minutes}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_flood_event|dot||integer|direction|integer|step|Cell|cell|boolean|pure}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|being_weight|dot}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|item_amount|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|restore_walls|dot||Cell|wall_cell|boolean|keep_fluids}}&lt;br /&gt;
  |{{modarg|Cellset list}}|{{moddef|list|cell_set|dot||list|list}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|horiz_river|dot||Cell|cell|integer|width|boolean|bridge}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|vert_river|dot||Cell|cell|integer|width|boolean|bridge|Coord|pos}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_rivers|dot||boolean|allow_horiz|boolean|allow_more}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|drunkard_walk|dot||Coord|start|integer|steps|Cell|cell|Cell list|ignore|boolean|break_on_edge}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|drunkard_walks|dot||integer|amount|integer|steps|Cell|cell|Cell list|ignore|boolean|break_on_edge|Area|drunk_area}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|contd_drunkard_walks|dot||integer|amount|integer|steps|Cell|cell|Coord|edges1|Coord|edges2|Cell list|ignore|boolean|break_on_edge}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|plot_lines|dot||Coord|where|Area|larea|boolean|horiz|Cell|cell|Cell list|block}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|maze_dungeon|dot||Cell|floor_cell|Cell|wall_cell|integer|granularity|integer|tries|integer|minl|integer|maxl}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|warehouse_fill|dot||Cell|wall_cell|Area|fill_area|integer|box_size|integer|amount}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|warehouse_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|add_room|dot||Area|room}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|add_rooms|dot}}&lt;br /&gt;
  |{{modarg|Room}}|{{moddef|list|get_room|dot||integer|min_size|integer|max_x|integer|max_y}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_tiled|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_warehouse_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_tiled_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_tiled_arena_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_city_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_maze_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_archi_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_caves_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_arena_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_fluids|dot||Area|drunk_area}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_barrels|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_stairs|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_special_stairs|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_lever_room|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_teleport_room|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_ammo_room|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_basain|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_warehouse_room|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_vault|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|add_room_feature|dot||boolean|no_monsters}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|handle_rooms|dot||boolean|no_monsters}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_player|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|roll_event|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|reset|dot}}&lt;br /&gt;
  |}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
;{{moddef|desc|safe_empty_coord|dot}} &lt;br /&gt;
:Gives a coordinate that satisfies all [[Modding:Constants#Empty Flags|empty flags]]. If one cannot be found, another attempt is made that excludes EF_NOSAFE; if one still cannot be found, another attempt is made that additionally excludes EF_NOSTAIRS and EF_NOHARM.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|standard_empty_coord|dot}} &lt;br /&gt;
:Gives a coordinate that satisfies all empty flags other than EF_NOSAFE.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_permanence|dot||Area|ar|boolean|val|Cell|tile}}&lt;br /&gt;
:Adds the &amp;quot;frozen&amp;quot; level event to the map and records it in the mortem history. Levels with the frozen event change all walls into ice walls and all fluids into water.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_ice_event|dot}}&lt;br /&gt;
:Adds the &amp;quot;frozen&amp;quot; level event to the map and records it in the mortem history. Levels with the frozen event change all walls into ice walls and all fluids into water.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_perma_event|dot}}&lt;br /&gt;
:Adds the &amp;quot;sturdy&amp;quot; level event to the map and records it in the mortem history. Levels with the sturdy event set all wall tiles to be permanent.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_alarm_event|dot}}&lt;br /&gt;
:Adds the &amp;quot;alarm&amp;quot; level event to the map and records it in the mortem history. Levels with the alarm event set all non-player beings' [[Modding:Constants#Being Flags|BF_HUNTING]] flag to true.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_deadly_air_event|dot||integer|step}}&lt;br /&gt;
:Adds the &amp;quot;deadly air&amp;quot; event to the map and records it in the mortem history. Levels with the deadly air event cause all beings to lose hit points every '''step''' turns.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_nuke_event|dot||integer|minutes}}&lt;br /&gt;
:Adds the &amp;quot;armed nuke&amp;quot; event to the map and records it in the mortem history. Levels with the armed nuke event begin with a [[thermonuclear bomb]] set at the player's starting position, which will explode in ''minutes'' game minutes.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_flood_event|dot||integer|direction|integer|step|Cell|cell|boolean|pure}}&lt;br /&gt;
:Adds the &amp;quot;flood&amp;quot; event to the map and records it in the mortem history. Levels with the flood event are slowly filled with a fluid: ''direction'' determines whether the floor travels from the right (-1) or from the left (+1); every ''step'' turns, ''cell'' will replace all tiles in a next column to be flooded. Setting ''pure'' to false will move the player and stairs to opposite sides of the map, with the player nearest the flood.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|being_weight|dot|integer}}&lt;br /&gt;
:Gives a value equal to the difficulty-adjusted weight of beings for a given danger level. These are the results used for the base game's monster generation parameters.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|item_amount|dot|integer}}&lt;br /&gt;
:Gives a value equal to the number of items spawned for a given danger level. On level types where the this amount isn't preset, this is the result used for the base game's item generation parameters.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|restore_walls|dot||Cell|wall_cell|boolean|keep_fluids}}&lt;br /&gt;
:Sets all cells on the edge of the map to ''wall_cell''. If ''keep_fluids'' is set to true, fluid tiles will be maintained but set as permanent.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|cell_set|dot|Cellset list|list|list}}&lt;br /&gt;
:Creates a cellset for all cells in ''list''. The returned list functions just like any [[Modding:Constants#Cellsets|CELLSET constant]].&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|horiz_river|dot||Cell|cell|integer|width|boolean|bridge}}&lt;br /&gt;
:Adds a horizontal river to the map, created using ''cell'' tiles. ''width'' sets the tile-width of the river. If ''bridge'' is set to true, a non-fluid floor bridge will be created on the river.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|vert_river|dot||Cell|cell|integer|width|boolean|bridge|Coord|pos}}&lt;br /&gt;
;{{moddef|desc|vert_river|dot||Cell|cell|integer|width|boolean|bridge|integer|pos}}&lt;br /&gt;
:Adds a vertical river to the map, created using ''cell'' tiles. ''width'' sets the tile-width of the river, and ''pos'' sets the starting position of the river. If ''pos'' is given as an integer, then the starting y-coordinate of the river is at the top of the map. If ''bridge'' is set to true, a non-fluid floor bridge will be created on the river.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_rivers|dot||boolean|allow_horiz|boolean|allow_more}}&lt;br /&gt;
:Generates a random number of horizontal and vertical rivers on the map. See [[Fluids#Rivers|Rivers]] for more information. The fluid type varies with map depth.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drunkard_walk|dot||Coord|start|integer|steps|Cell|cell|Cell list|ignore|boolean|break_on_edge}}&lt;br /&gt;
:Generates ''cell'' tiles according to a drunken walk algorithm. It travels ''steps'' times, starting at the coordinate ''start''. Any cells in ''ignore'' will not be set over but the algorithm will still continue. If ''break_on_edge'' is set to true, the drunken walk will stop if it hits a map border: otherwise it will continue, clamping cells within the map as necessary.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drunkard_walks|dot||integer|amount|integer|steps|Cell|cell|Cell list|ignore|boolean|break_on_edge|Area|drunk_area}}&lt;br /&gt;
:As Generator.drunkard_walk, but repeated ''amount'' times. Additionally, rather than specifically a starting position, all walks are chosen from a random coordinate within ''drunk_area''.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|contd_drunkard_walks|dot||integer|amount|integer|steps|Cell|cell|Coord|edges1|Coord|edges2|Cell list|ignore|boolean|break_on_edge}}&lt;br /&gt;
:As Generator.drunkard_walks, but rather than limiting the walk's starting position, the walk will stop prematurely if it has reached the x- or y-coordinates of both ''edges1'' and ''edges2''.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|plot_lines|dot||Coord|where|Area|larea|boolean|horiz|Cell|cell|Cell list|block}}&lt;br /&gt;
:Generates a line of ''cell'' tiles on the map, starting at ''where'' and extending to the boundaries of ''larea''. ''horiz'' set to true will produce horizontal lines: otherwise it will produce vertical lines. If a cell from ''block'' is found, the line will end prematurely at the end on which it was blocked.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|maze_dungeon|dot||Cell|floor_cell|Cell|wall_cell|integer|granularity|integer|tries|integer|minl|integer|maxl}}&lt;br /&gt;
:Generates a map-wide maze, using ''wall_cell'' as the wall tiles and ''floor_cell'' as the floor tiles. Wall corridors are at least ''minl'' tiles apart and at most ''maxl'' tiles apart: ''granularity'' sets a rough complexity of the map. The number of walls attempted to be made is equal to ''tries''.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|warehouse_fill|dot||Cell|wall_cell|Area|fill_area|integer|box_size|integer|amount}}&lt;br /&gt;
:Generates ''wall_cell'' tiles in the shape of a square within ''fill_area''. ''boxsize'' sets the size of the side of a box, and ''amount'' sets the number of tries for boxes to be added.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|warehouse_dungeon|dot}}&lt;br /&gt;
:Generates a map-wide warehouse setting. Warehouse dungeons are divided into three large rooms, each attempting 50 tries with boxes of side length 3.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|add_room|dot||Area|room}}&lt;br /&gt;
:Adds ''room'' to the Generator.room_list and Generator.room_meta lists. This is used in conjunction with room generation functions.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|add_rooms|dot|boolean}}&lt;br /&gt;
:As Generator.add_room, but locates all rooms on the map and adds them to Generator.room_list and Generator.room_meta instead.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_room|dot|Room|integer|min_size|integer|max_x|integer|max_y}}&lt;br /&gt;
:Finds a room that contains at least ''min_size'' in both height and width, and has a width and height no bigger than ''max_x'' and ''max_y'', respectively.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_tiled|dot}}&lt;br /&gt;
:Generates a &amp;quot;normal&amp;quot; map. Normal levels are divided randomly into rectangular rooms.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_warehouse_dungeon|dot}}&lt;br /&gt;
:Builds a &amp;quot;warehouse&amp;quot; level. This includes everything necessary to be played as a typical random level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_tiled_dungeon|dot}}&lt;br /&gt;
:Builds a &amp;quot;normal&amp;quot; level. This includes everything necessary to be played as a typical random level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_tiled_arena_dungeon|dot}}&lt;br /&gt;
:Builds a &amp;quot;single-monster&amp;quot; level. This includes everything necessary to be played as a typical random level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_city_dungeon|dot}}&lt;br /&gt;
:Builds a &amp;quot;city&amp;quot; level. This includes everything necessary to be played as a typical random level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_maze_dungeon|dot}}&lt;br /&gt;
:Builds a &amp;quot;maze&amp;quot; level. This includes everything necessary to be played as a typical random level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_archi_dungeon|dot}}&lt;br /&gt;
:Builds an &amp;quot;archi&amp;quot; level. This includes everything necessary to be played as a typical random level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_caves_dungeon|dot}}&lt;br /&gt;
:Builds a &amp;quot;cave&amp;quot; level. This includes everything necessary to be played as a typical random level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_arena_dungeon|dot}}&lt;br /&gt;
:Builds an &amp;quot;arena&amp;quot; level. This includes everything necessary to be played as a typical random level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_fluids|dot||Area|drunk_area}}&lt;br /&gt;
:Generates all non-river fluids on the map using drunken walks, within ''drunk_area''. The fluid type varies with danger level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_barrels|dot}}&lt;br /&gt;
:Generates all barrels on the map, The barrel type varies with danger level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_stairs|dot}}&lt;br /&gt;
:Generates stairs on the map.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_special_stairs|dot}}&lt;br /&gt;
:Generates special stairs on the map, if a special level exists at the current map depth.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_lever_room|dot}}&lt;br /&gt;
:Finds a room of appropriate size and adjusts it into a lever room.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_teleport_room|dot}}&lt;br /&gt;
:Finds a room of appropriate size and adjusts it into a teleporter room.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_ammo_room|dot}}&lt;br /&gt;
:Finds a room of appropriate size and adjusts it into an ammo room. The type of ammo varies with danger level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_basain|dot}}&lt;br /&gt;
:Finds a room of appropriate size and adjusts it into a room filled with fluid.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_warehouse_room|dot}}&lt;br /&gt;
:Finds a room of appropriate size and adjusts it into a room with boxes (as Generator.warehouse_fill).&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_vault|dot}}&lt;br /&gt;
:Finds a room of appropriate size and adjust it into a vault. The monsters, items, and type of vault vary with danger level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|add_room_feature|dot||boolean|no_monsters}}&lt;br /&gt;
:Randomly selects a room generation function to be added to the map. ''no_monsters'' set to true excludes the possibility of a vault room being generated.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|handle_rooms|dot||boolean|no_monsters}}&lt;br /&gt;
:Generates up to seven special rooms on the map and restores walls that were otherwise removed as a result of the room generation.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_player|dot}}&lt;br /&gt;
:Adds to player to the map.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|roll_event|dot}}&lt;br /&gt;
:Randomly select a level event function to be added to the map.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|reset|dot}}&lt;br /&gt;
:Clears all generation properties and hooks, and changes the map into one bordered with the level style's walls and otherwise filled with the level style's floors.&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Modding:generator_API_(0.9.9.7)</id>
		<title>Modding:generator API (0.9.9.7)</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Modding:generator_API_(0.9.9.7)"/>
				<updated>2013-06-10T03:59:32Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: moved Modding:Generator to Modding:generator API (0.9.9.7): Creating a redirect this way&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The generator holds all of the ever-present functions used to create the random maps in DoomRL. It also contains a variety of helper functions, many of them useful if not vital to the creation of intricate and meticulous game design.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 2px solid darkred; border-spacing: 0; font-size: 90%; margin: 0.25em 0.5em;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: darkred; color: yellow; font-size: 120%; text-align: center&amp;quot;|'''Level Interface'''&lt;br /&gt;
 {{Table2Col&lt;br /&gt;
  |es=background: #333; &lt;br /&gt;
  |c1=font-weight:bold; text-align:right; vertical-align:top; padding:0px 2px;&lt;br /&gt;
  |c2=padding:0px 2px;&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|safe_empty_coord|dot}} &lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|standard_empty_coord|dot}} &lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_permanence|dot||Area|ar|boolean|val|Cell|tile}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_ice_event|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_perma_event|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_alarm_event|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_deadly_air_event|dot||integer|step}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_nuke_event|dot||integer|minutes}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_flood_event|dot||integer|direction|integer|step|Cell|cell|boolean|pure}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|being_weight|dot}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|item_amount|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|restore_walls|dot||Cell|wall_cell|boolean|keep_fluids}}&lt;br /&gt;
  |{{modarg|Cellset list}}|{{moddef|list|cell_set|dot||list|list}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|horiz_river|dot||Cell|cell|integer|width|boolean|bridge}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|vert_river|dot||Cell|cell|integer|width|boolean|bridge|Coord|pos}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_rivers|dot||boolean|allow_horiz|boolean|allow_more}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|drunkard_walk|dot||Coord|start|integer|steps|Cell|cell|Cell list|ignore|boolean|break_on_edge}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|drunkard_walks|dot||integer|amount|integer|steps|Cell|cell|Cell list|ignore|boolean|break_on_edge|Area|drunk_area}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|contd_drunkard_walks|dot||integer|amount|integer|steps|Cell|cell|Coord|edges1|Coord|edges2|Cell list|ignore|boolean|break_on_edge}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|plot_lines|dot||Coord|where|Area|larea|boolean|horiz|Cell|cell|Cell list|block}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|maze_dungeon|dot||Cell|floor_cell|Cell|wall_cell|integer|granularity|integer|tries|integer|minl|integer|maxl}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|warehouse_fill|dot||Cell|wall_cell|Area|fill_area|integer|box_size|integer|amount}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|warehouse_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|add_room|dot||Area|room}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|add_rooms|dot}}&lt;br /&gt;
  |{{modarg|Room}}|{{moddef|list|get_room|dot||integer|min_size|integer|max_x|integer|max_y}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_tiled|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_warehouse_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_tiled_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_tiled_arena_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_city_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_maze_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_archi_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_caves_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_arena_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_fluids|dot||Area|drunk_area}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_barrels|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_stairs|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_special_stairs|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_lever_room|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_teleport_room|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_ammo_room|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_basain|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_warehouse_room|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_vault|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|add_room_feature|dot||boolean|no_monsters}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|handle_rooms|dot||boolean|no_monsters}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_player|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|roll_event|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|reset|dot}}&lt;br /&gt;
  |}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
;{{moddef|desc|safe_empty_coord|dot}} &lt;br /&gt;
:Gives a coordinate that satisfies all [[Modding:Constants#Empty Flags|empty flags]]. If one cannot be found, another attempt is made that excludes EF_NOSAFE; if one still cannot be found, another attempt is made that additionally excludes EF_NOSTAIRS and EF_NOHARM.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|standard_empty_coord|dot}} &lt;br /&gt;
:Gives a coordinate that satisfies all empty flags other than EF_NOSAFE.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_permanence|dot||Area|ar|boolean|val|Cell|tile}}&lt;br /&gt;
:Adds the &amp;quot;frozen&amp;quot; level event to the map and records it in the mortem history. Levels with the frozen event change all walls into ice walls and all fluids into water.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_ice_event|dot}}&lt;br /&gt;
:Adds the &amp;quot;frozen&amp;quot; level event to the map and records it in the mortem history. Levels with the frozen event change all walls into ice walls and all fluids into water.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_perma_event|dot}}&lt;br /&gt;
:Adds the &amp;quot;sturdy&amp;quot; level event to the map and records it in the mortem history. Levels with the sturdy event set all wall tiles to be permanent.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_alarm_event|dot}}&lt;br /&gt;
:Adds the &amp;quot;alarm&amp;quot; level event to the map and records it in the mortem history. Levels with the alarm event set all non-player beings' [[Modding:Constants#Being Flags|BF_HUNTING]] flag to true.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_deadly_air_event|dot||integer|step}}&lt;br /&gt;
:Adds the &amp;quot;deadly air&amp;quot; event to the map and records it in the mortem history. Levels with the deadly air event cause all beings to lose hit points every '''step''' turns.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_nuke_event|dot||integer|minutes}}&lt;br /&gt;
:Adds the &amp;quot;armed nuke&amp;quot; event to the map and records it in the mortem history. Levels with the armed nuke event begin with a [[thermonuclear bomb]] set at the player's starting position, which will explode in ''minutes'' game minutes.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_flood_event|dot||integer|direction|integer|step|Cell|cell|boolean|pure}}&lt;br /&gt;
:Adds the &amp;quot;flood&amp;quot; event to the map and records it in the mortem history. Levels with the flood event are slowly filled with a fluid: ''direction'' determines whether the floor travels from the right (-1) or from the left (+1); every ''step'' turns, ''cell'' will replace all tiles in a next column to be flooded. Setting ''pure'' to false will move the player and stairs to opposite sides of the map, with the player nearest the flood.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|being_weight|dot|integer}}&lt;br /&gt;
:Gives a value equal to the difficulty-adjusted weight of beings for a given danger level. These are the results used for the base game's monster generation parameters.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|item_amount|dot|integer}}&lt;br /&gt;
:Gives a value equal to the number of items spawned for a given danger level. On level types where the this amount isn't preset, this is the result used for the base game's item generation parameters.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|restore_walls|dot||Cell|wall_cell|boolean|keep_fluids}}&lt;br /&gt;
:Sets all cells on the edge of the map to ''wall_cell''. If ''keep_fluids'' is set to true, fluid tiles will be maintained but set as permanent.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|cell_set|dot|Cellset list|list|list}}&lt;br /&gt;
:Creates a cellset for all cells in ''list''. The returned list functions just like any [[Modding:Constants#Cellsets|CELLSET constant]].&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|horiz_river|dot||Cell|cell|integer|width|boolean|bridge}}&lt;br /&gt;
:Adds a horizontal river to the map, created using ''cell'' tiles. ''width'' sets the tile-width of the river. If ''bridge'' is set to true, a non-fluid floor bridge will be created on the river.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|vert_river|dot||Cell|cell|integer|width|boolean|bridge|Coord|pos}}&lt;br /&gt;
;{{moddef|desc|vert_river|dot||Cell|cell|integer|width|boolean|bridge|integer|pos}}&lt;br /&gt;
:Adds a vertical river to the map, created using ''cell'' tiles. ''width'' sets the tile-width of the river, and ''pos'' sets the starting position of the river. If ''pos'' is given as an integer, then the starting y-coordinate of the river is at the top of the map. If ''bridge'' is set to true, a non-fluid floor bridge will be created on the river.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_rivers|dot||boolean|allow_horiz|boolean|allow_more}}&lt;br /&gt;
:Generates a random number of horizontal and vertical rivers on the map. See [[Fluids#Rivers|Rivers]] for more information. The fluid type varies with map depth.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drunkard_walk|dot||Coord|start|integer|steps|Cell|cell|Cell list|ignore|boolean|break_on_edge}}&lt;br /&gt;
:Generates ''cell'' tiles according to a drunken walk algorithm. It travels ''steps'' times, starting at the coordinate ''start''. Any cells in ''ignore'' will not be set over but the algorithm will still continue. If ''break_on_edge'' is set to true, the drunken walk will stop if it hits a map border: otherwise it will continue, clamping cells within the map as necessary.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drunkard_walks|dot||integer|amount|integer|steps|Cell|cell|Cell list|ignore|boolean|break_on_edge|Area|drunk_area}}&lt;br /&gt;
:As Generator.drunkard_walk, but repeated ''amount'' times. Additionally, rather than specifically a starting position, all walks are chosen from a random coordinate within ''drunk_area''.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|contd_drunkard_walks|dot||integer|amount|integer|steps|Cell|cell|Coord|edges1|Coord|edges2|Cell list|ignore|boolean|break_on_edge}}&lt;br /&gt;
:As Generator.drunkard_walks, but rather than limiting the walk's starting position, the walk will stop prematurely if it has reached the x- or y-coordinates of both ''edges1'' and ''edges2''.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|plot_lines|dot||Coord|where|Area|larea|boolean|horiz|Cell|cell|Cell list|block}}&lt;br /&gt;
:Generates a line of ''cell'' tiles on the map, starting at ''where'' and extending to the boundaries of ''larea''. ''horiz'' set to true will produce horizontal lines: otherwise it will produce vertical lines. If a cell from ''block'' is found, the line will end prematurely at the end on which it was blocked.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|maze_dungeon|dot||Cell|floor_cell|Cell|wall_cell|integer|granularity|integer|tries|integer|minl|integer|maxl}}&lt;br /&gt;
:Generates a map-wide maze, using ''wall_cell'' as the wall tiles and ''floor_cell'' as the floor tiles. Wall corridors are at least ''minl'' tiles apart and at most ''maxl'' tiles apart: ''granularity'' sets a rough complexity of the map. The number of walls attempted to be made is equal to ''tries''.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|warehouse_fill|dot||Cell|wall_cell|Area|fill_area|integer|box_size|integer|amount}}&lt;br /&gt;
:Generates ''wall_cell'' tiles in the shape of a square within ''fill_area''. ''boxsize'' sets the size of the side of a box, and ''amount'' sets the number of tries for boxes to be added.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|warehouse_dungeon|dot}}&lt;br /&gt;
:Generates a map-wide warehouse setting. Warehouse dungeons are divided into three large rooms, each attempting 50 tries with boxes of side length 3.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|add_room|dot||Area|room}}&lt;br /&gt;
:Adds ''room'' to the Generator.room_list and Generator.room_meta lists. This is used in conjunction with room generation functions.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|add_rooms|dot|boolean}}&lt;br /&gt;
:As Generator.add_room, but locates all rooms on the map and adds them to Generator.room_list and Generator.room_meta instead.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_room|dot|Room|integer|min_size|integer|max_x|integer|max_y}}&lt;br /&gt;
:Finds a room that contains at least ''min_size'' in both height and width, and has a width and height no bigger than ''max_x'' and ''max_y'', respectively.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_tiled|dot}}&lt;br /&gt;
:Generates a &amp;quot;normal&amp;quot; map. Normal levels are divided randomly into rectangular rooms.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_warehouse_dungeon|dot}}&lt;br /&gt;
:Builds a &amp;quot;warehouse&amp;quot; level. This includes everything necessary to be played as a typical random level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_tiled_dungeon|dot}}&lt;br /&gt;
:Builds a &amp;quot;normal&amp;quot; level. This includes everything necessary to be played as a typical random level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_tiled_arena_dungeon|dot}}&lt;br /&gt;
:Builds a &amp;quot;single-monster&amp;quot; level. This includes everything necessary to be played as a typical random level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_city_dungeon|dot}}&lt;br /&gt;
:Builds a &amp;quot;city&amp;quot; level. This includes everything necessary to be played as a typical random level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_maze_dungeon|dot}}&lt;br /&gt;
:Builds a &amp;quot;maze&amp;quot; level. This includes everything necessary to be played as a typical random level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_archi_dungeon|dot}}&lt;br /&gt;
:Builds an &amp;quot;archi&amp;quot; level. This includes everything necessary to be played as a typical random level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_caves_dungeon|dot}}&lt;br /&gt;
:Builds a &amp;quot;cave&amp;quot; level. This includes everything necessary to be played as a typical random level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_arena_dungeon|dot}}&lt;br /&gt;
:Builds an &amp;quot;arena&amp;quot; level. This includes everything necessary to be played as a typical random level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_fluids|dot||Area|drunk_area}}&lt;br /&gt;
:Generates all non-river fluids on the map using drunken walks, within ''drunk_area''. The fluid type varies with danger level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_barrels|dot}}&lt;br /&gt;
:Generates all barrels on the map, The barrel type varies with danger level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_stairs|dot}}&lt;br /&gt;
:Generates stairs on the map.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_special_stairs|dot}}&lt;br /&gt;
:Generates special stairs on the map, if a special level exists at the current map depth.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_lever_room|dot}}&lt;br /&gt;
:Finds a room of appropriate size and adjusts it into a lever room.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_teleport_room|dot}}&lt;br /&gt;
:Finds a room of appropriate size and adjusts it into a teleporter room.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_ammo_room|dot}}&lt;br /&gt;
:Finds a room of appropriate size and adjusts it into an ammo room. The type of ammo varies with danger level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_basain|dot}}&lt;br /&gt;
:Finds a room of appropriate size and adjusts it into a room filled with fluid.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_warehouse_room|dot}}&lt;br /&gt;
:Finds a room of appropriate size and adjusts it into a room with boxes (as Generator.warehouse_fill).&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_vault|dot}}&lt;br /&gt;
:Finds a room of appropriate size and adjust it into a vault. The monsters, items, and type of vault vary with danger level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|add_room_feature|dot||boolean|no_monsters}}&lt;br /&gt;
:Randomly selects a room generation function to be added to the map. ''no_monsters'' set to true excludes the possibility of a vault room being generated.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|handle_rooms|dot||boolean|no_monsters}}&lt;br /&gt;
:Generates up to seven special rooms on the map and restores walls that were otherwise removed as a result of the room generation.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_player|dot}}&lt;br /&gt;
:Adds to player to the map.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|roll_event|dot}}&lt;br /&gt;
:Randomly select a level event function to be added to the map.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|reset|dot}}&lt;br /&gt;
:Clears all generation properties and hooks, and changes the map into one bordered with the level style's walls and otherwise filled with the level style's floors.&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Modding:Generator</id>
		<title>Modding:Generator</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Modding:Generator"/>
				<updated>2013-06-10T03:59:32Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: moved Modding:Generator to Modding:generator API (0.9.9.7): Creating a redirect this way&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Modding:generator API (0.9.9.7)]]&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Talk:Modding:Module</id>
		<title>Talk:Modding:Module</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Talk:Modding:Module"/>
				<updated>2013-06-10T00:56:14Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Created page with &amp;quot;== Module Changes for 0.9.9.7 ==  New module meta-data fields and the version they were introduced:  ''gsupport'' (0.9.9.5): Boolean value.  ''True'' marks this module as Graphic...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Module Changes for 0.9.9.7 ==&lt;br /&gt;
&lt;br /&gt;
New module meta-data fields and the version they were introduced:&lt;br /&gt;
&lt;br /&gt;
''gsupport'' (0.9.9.5): Boolean value.  ''True'' marks this module as Graphics-Supported.  ''False'' or omit it and a warning will appear when someone tries to run this module in graphics mode.&lt;br /&gt;
&lt;br /&gt;
''klass'' (0.9.9.7): Integer value.  Forces the player to be a certain class.  1 = Marine, 2 = Scout, 3 = Technician, 4 = &amp;quot;Solider&amp;quot; (used to implement classic mode -- No master traits or special bonuses).&lt;br /&gt;
&lt;br /&gt;
''award'' (0.9.9.7): Table.  Has two fields: ''name'', which is the friendly and ID name of the award, and ''levels'', which is another table.  The levels table consists of 1 or more tables that each have two fields: ''name'', the displayed name for this level of the award, and ''desc'', the description on how to earn it.  These should be placed in order of increasing prestige (the best award level should be last).  The classic mode award table is shown as an example:&lt;br /&gt;
&lt;br /&gt;
 award = {&lt;br /&gt;
     name = &amp;quot;Classicist&amp;quot;,&lt;br /&gt;
     levels = {&lt;br /&gt;
         { name = &amp;quot;Bronze&amp;quot;,   desc = &amp;quot;Complete on ITYTD&amp;quot; },&lt;br /&gt;
         { name = &amp;quot;Silver&amp;quot;,   desc = &amp;quot;Complete on HMP&amp;quot; },&lt;br /&gt;
         { name = &amp;quot;Gold&amp;quot;,     desc = &amp;quot;Complete on UV&amp;quot; },&lt;br /&gt;
         { name = &amp;quot;Platinum&amp;quot;, desc = &amp;quot;Complete on UV/100%&amp;quot; },&lt;br /&gt;
         { name = &amp;quot;Diamond&amp;quot;,  desc = &amp;quot;Complete on N!/90%&amp;quot; },&lt;br /&gt;
         { name = &amp;quot;Angelic&amp;quot;,  desc = &amp;quot;Complete on N! w/o damage&amp;quot; },&lt;br /&gt;
     },&lt;br /&gt;
 },&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Modding:being_API_(0.9.9.7)</id>
		<title>Modding:being API (0.9.9.7)</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Modding:being_API_(0.9.9.7)"/>
				<updated>2013-06-09T21:12:47Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Updating with 0997 info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''This page is currently under construction.''&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
Please note that the type &amp;quot;integer&amp;quot; indicates an numeric value without a decimal part.  It does not indicate the range of acceptable values.&lt;br /&gt;
&lt;br /&gt;
An argument name in [square brackets] is an optional one.  The function description will indicate how the function operates if it is omitted.&lt;br /&gt;
&lt;br /&gt;
The [[Modding:Thing#API|Thing API]] can also be used with beings.&lt;br /&gt;
&lt;br /&gt;
=== Being API Function List ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 2px solid darkred; border-spacing: 0; font-size: 90%; margin: 0.25em 0.5em;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: darkred; color: yellow; font-size: 120%; text-align: center&amp;quot;|Being Interface&lt;br /&gt;
 {{Table2Col&lt;br /&gt;
  |es=background: #333;&lt;br /&gt;
  |c1=font-weight:bold; text-align:right; vertical-align:top; padding:0px 2px;&lt;br /&gt;
  |c2=padding:0px 2px;&lt;br /&gt;
  |{{modarg|Being}}|{{moddef|list|new|dot||BeingID|id}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|kill|cln||boolean|[overkill]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|ressurect|cln||integer|range}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|apply_damage|cln||integer|amount|BodyTarget|target|DamageType|[type]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|get_name|cln||boolean|[known]|boolean|[capitalize]}}&lt;br /&gt;
  |{{modarg|table}}|{{moddef|list|inv_items|cln}}&lt;br /&gt;
  |{{modarg|Item}}|{{moddef|list|get_eq_item|cln||EquipSlot|slot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_eq_item|cln||EquipSlot|slot|Item|item}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|add_inv_item|cln||Item|item}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|play_sound|cln||SoundID|sound}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|get_total_resistance|cln||ResistType|resist|BodyTarget|[target]}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|quick_swap|cln}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|pickup|cln}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|unload|cln||Item|item}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|drop|cln||Item|item}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|use|cln||Item|item}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|wear|cln||Item|item}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|attack|cln||Being|target}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|attack|cln||Coord|target}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|fire|cln||Coord|target|Item|weapon}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|fire|cln||Coord|target|Item|weapon}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|reload|cln}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|alt_reload|cln}}&lt;br /&gt;
  |{{modarg|integer}}, {{modarg|Coord}}|{{moddef|list|direct_seek|cln||Coord|dest}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|relocate|cln||Coord|dest}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|path_find|cln||Coord|dest|integer|cutoff|integer|maximum}}&lt;br /&gt;
  |{{modarg|integer}}, {{modarg|Coord}} or {{modarg|boolean}}|{{moddef|list|path_next|cln}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|flock_target|cln||integer|range|integer|mind|integer|maxd}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|msg|cln||string|msg_player|string|msg_being}}&lt;br /&gt;
  |{{modarg|Item}}|{{moddef|list|select_slot_by_letter|cln||string|letter}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|phase|cln||CellID|[cell]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|spawn|cln||BeingID|monster}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|act|cln||Coord|coord}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|eye_contact|cln||Coord|other}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|eye_contact|cln||Thing|other}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|in_sight|cln||Coord|other}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|in_sight|cln||Thing|other}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_player|cln}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|set_items|cln||SetID|set}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|nuke|cln||integer|[time]}}&lt;br /&gt;
  |{{modarg|Item}}, {{modarg|boolean}}|{{moddef|list|pick_mod_item|cln||string|modletter|integer|techbonus}}&lt;br /&gt;
  |}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Being API Function Descriptions ===&lt;br /&gt;
;{{moddef|desc|new|dot|Being|BeingID|id}}&lt;br /&gt;
Creates a new being object from the specified blueprint.&lt;br /&gt;
:''id'': The ID of the being to create.&lt;br /&gt;
:'''Returns''': A reference to the new being object.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|kill|cln||boolean|[overkill]}}&lt;br /&gt;
Kills the being.&lt;br /&gt;
:''overkill'': ''Optional.'' If ''True'', the being will be gibbed (extra blood, inventory will not drop, and a corpse will not be placed).  If ''False'' the being will be killed normally.  If omitted, the being will be killed normally.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|ressurect|cln||integer|range}}&lt;br /&gt;
Resurrects the nearest eligble corpse in sight of the calling being.  Handles all message output.&lt;br /&gt;
:''range'': The maximum distance (in terms of movement) that a corpse can be in order to be eligble for resurrection.&lt;br /&gt;
NOTE: The function name is a misspelling.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|apply_damage|cln||integer|amount|BodyTarget|target|DamageType|[type]}}&lt;br /&gt;
Deals damage to the being.&lt;br /&gt;
:''amount'': The amount of damage the attack does.  This is not necessarily the amount of HP the being will lose; the being's resistance and armor may apply against this value.&lt;br /&gt;
:''target'': One of TARGET_INTERNAL, TARGET_TORSO, or TARGET_FEET.  TARGET_INTERNAL only uses the target's internal armor and resistances (equipment, for the most part, will be ignored).  TARGET_TORSO uses the item in the armor slot to help reduce the damage, and TARGET_FEET uses the item in the boots slot to help reduce the damage.&lt;br /&gt;
:''DamageType'': ''Optional.'' One of the named constants starting with &amp;quot;DAMAGE_&amp;quot;.  Indicates the type of damage being dealt, which influences the properties and effects the damage has on the target.  If omitted, DAMAGE_BULLET will be used.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_name|cln||boolean|[known]|boolean|[capitalize]}}&lt;br /&gt;
Returns the name of the being, with the appropriate preposition.&lt;br /&gt;
:''known'': ''Optional.'' If ''true'', the being will not use an article (a, an, or the) when getting the name string.  If ''false'', an article (a, an, or the) will be appended to the front of the name.  If omitted, the default is to use an article.  BF_UNIQUENAME determines when &amp;quot;the&amp;quot; is used instead of &amp;quot;a&amp;quot; or &amp;quot;an&amp;quot;.&lt;br /&gt;
:''capitalize'': ''Optional.'' If ''true'', the name of the being will be capitalized.  If ''false'', it will not be adjusted.  If omitted, the default is to not adjust.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|inv_items|cln|table}}&lt;br /&gt;
Gets an iterator over the items in the being's inventory.&lt;br /&gt;
:'''Returns''': A table containing references to each item in the being's inventory.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_eq_item|cln|Item|EquipSlot|slot}}&lt;br /&gt;
Retrieves the item in the indicated equipment slot.  Equivalent to &amp;quot;being.eq.''slotname''&amp;quot;, where ''slotname'' is &amp;quot;weapon&amp;quot;, &amp;quot;armor&amp;quot;, &amp;quot;boots&amp;quot;, or &amp;quot;prepared&amp;quot;.&lt;br /&gt;
:''slot'': One of SLOT_WEAPON, SLOT_ARMOR, SLOT_BOOTS, or SLOT_PREPARED.&lt;br /&gt;
:'''Returns''': A reference to the item equipped in the indicated slot.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_eq_item|cln||EquipSlot|slot|Item|item}}&lt;br /&gt;
Equips an item to the being.  Equivalent to &amp;quot;being.eq.''slotname'' = ''item''&amp;quot;, where slotname is &amp;quot;weapon&amp;quot;, &amp;quot;armor&amp;quot;, &amp;quot;boots&amp;quot;, or &amp;quot;prepared&amp;quot;.&lt;br /&gt;
:''slot'': One of SLOT_WEAPON, SLOT_ARMOR, SLOT_BOOTS, or SLOT_PREPARED.&lt;br /&gt;
:''item'': The item to equip to the slot.  If there is a different item in the slot already, it will be destroyed.  If nil, the equipped item is destroyed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|add_inv_item|cln||Item|item}}&lt;br /&gt;
Adds an item to the being's inventory.&lt;br /&gt;
:''item'': The item to add.&lt;br /&gt;
:'''Returns''': ''True'' if the item was added.  ''False'' if the being's inventory is full.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|play_sound|cln||SoundID|sound}}&lt;br /&gt;
Plays a sound at the being's location.&lt;br /&gt;
:''sound'': The sound to play.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_total_resistance|cln|integer|ResistType|resist|BodyTarget|[target]}}&lt;br /&gt;
Gets the total resistance for being, given the resistance type and target.&lt;br /&gt;
:''resist'': The resistance to get the value for.&lt;br /&gt;
:''target'': ''Optional.'' One of TARGET_INTERNAL, TARGET_TORSO, or TARGET_FEET.  TARGET_INTERNAL only uses the target's internal resistance (equipment, for the most part, will be ignored).  TARGET_TORSO uses the item in the armor slot to calculate resistance, and TARGET_FEET uses the item in the boots slot to calculate resistance.  If omitted, TARGET_TORSO is used.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|quick_swap|cln|boolean}}&lt;br /&gt;
Switches the weapon in the &amp;quot;weapon&amp;quot; slot with the one in the &amp;quot;prepared&amp;quot; slot.  Expends energy on success.&lt;br /&gt;
:'''Returns''': ''True'' if the swap worked. ''False'' if it failed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|pickup|cln|boolean}}&lt;br /&gt;
Attempts to pickup the item at the being's current location.  Expends energy on success.&lt;br /&gt;
:'''Returns''': ''True'' if the pickup succeeded, ''False'' if it failed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|unload|cln|boolean|Item|item}}&lt;br /&gt;
Attempts to unload the indicated item.  Expends energy on success.&lt;br /&gt;
:''item'': The item to try to unload.&lt;br /&gt;
:'''Returns''': ''True'' if the unloading succeeded, ''False'' if it failed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drop|cln|boolean|Item|item}}&lt;br /&gt;
Attempts to drop an item.  Expends energy on success.&lt;br /&gt;
:''item'': The item to try to drop.&lt;br /&gt;
:'''Returns''': ''True'' if the drop succeeded, ''False'' if it failed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|use|cln|boolean|Item|item}}&lt;br /&gt;
Attempts to use an item.  Expends energy on success.&lt;br /&gt;
:''item'': The item to try to use.&lt;br /&gt;
:'''Returns''': ''True'' if the use succeeded.  ''False'' if it failed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|wear|cln|boolean|Item|item}}&lt;br /&gt;
Attempts to equip an item.  Expends energy on success.&lt;br /&gt;
:''item'': The item to try to wear.&lt;br /&gt;
:'''Returns''': ''True'' if the item was worn.  ''False'' if the command failed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|attack|cln|boolean|Being|target}}&lt;br /&gt;
;{{moddef|desc|attack|cln|boolean|Coord|target}}&lt;br /&gt;
Attempts to attack something.  Expends energy on success.&lt;br /&gt;
:''target'': A being or a location to attack.&lt;br /&gt;
:'''Returns''': ''True'' if the attack was attempted.  ''False'' if the being couldn't attack.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fire|cln|boolean|Coord|target|Item|weapon}}&lt;br /&gt;
Attempts to fire a weapon at something.  Expends energy on success.&lt;br /&gt;
:''target'': The location to fire at.&lt;br /&gt;
:''weapon'': The item to fire at the location with.&lt;br /&gt;
:'''Returns''': ''True'' if the weapon was fired.  ''False'' if it failed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fire|cln|boolean|Coord|target|Item|weapon}}&lt;br /&gt;
Attempts to fire a weapon using its alternate fire mode.&lt;br /&gt;
:''target'': The location to fire at.&lt;br /&gt;
:''weapon'': The item to fire at the location with.&lt;br /&gt;
:'''Returns''': ''True'' if the weapon was fired.  ''False'' if it failed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|reload|cln|boolean}}&lt;br /&gt;
Attempts to reload the equipped weapon.&lt;br /&gt;
:'''Returns''': ''True'' if the weapon was loaded with at least 1 ammo.  ''False'' if the weapon didn't get any ammo put in it at all.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|alt_reload|cln|boolean}}&lt;br /&gt;
Attemptes to reload the equipped weapon using its alternate reload.&lt;br /&gt;
:'''Returns''': ''True'' if the weapon was loaded with at least 1 ammo.  ''False'' if the weapon didn't get any ammo put in it at all.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|direct_seek|cln|integer, Coord|Coord|dest}}&lt;br /&gt;
Attempts to move directly toward a location.  Expends energy only on a successful move. The being will try moving around objects in its way.  It will only move at most 1 space for each time this is called.&lt;br /&gt;
:''dest'': The location to attempt to move toward.&lt;br /&gt;
:'''Returns''': An integer, representing the result of the move, and a Coord, holding the previous location of the being.  The integer can be 0 (MOVEOK), 1 (MOVEBLOCK), 2 (MOVEDOOR), or 3 (MOVEBEING).  0 means the move was successful, and energy was expended.  1 means there was a wall in the way.  2 means there was door or other CF_OPENABLE cell in the way.  3 means a being was in the way.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|relocate|cln||Coord|dest}}&lt;br /&gt;
Moves the being to the indicated location, with animations.&lt;br /&gt;
:''dest'': The location to move the being to.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|path_find|cln|boolean|Coord|dest|integer|cutoff|integer|maximum}}&lt;br /&gt;
Search for a path to the indicated location.  Pathfinding is a time intensive procedure, use conservatively.&lt;br /&gt;
:''dest'': The location to find a path to.&lt;br /&gt;
:''cutoff'': A path finding parameter.  The search is aborted if this number of positions are checked without getting closer to the target destination.  DoomRL uses 10 for normal enemies and 40 for bosses.  Larger values may cause the algorithm to take longer.&lt;br /&gt;
:''maximum'': A path finding parameter.  The search is aborted if this number of positions are checked without reaching the target.  DoomRL uses 40 for normal enemies and 200 for bosses.  Larger values may cause the algorithm to take longer.&lt;br /&gt;
:'''Returns''': ''True'' if a path was found, ''False'' if not.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|path_next|cln|integer, Coord}} or '''boolean'''&lt;br /&gt;
Moves the being to the next space on the found path.&lt;br /&gt;
:'''Returns''': If there is a valid path, an integer, representing the result of the move, and a Coord, holding the previous location of the being, are returned.  The integer can be 0 (MOVEOK), 1 (MOVEBLOCK), 2 (MOVEDOOR), or 3 (MOVEBEING).  0 means the move was successful, and energy was expended.  1 means there was a wall in the way.  2 means there was door or other CF_OPENABLE cell in the way.  3 means a being was in the way.  If there was no valid path to move along, the boolean value ''False'' is returned instead.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|flock_target|cln|Coord|integer|range|integer|mind|integer|maxd}}&lt;br /&gt;
Assigns a coord based on other beings of the same type.&lt;br /&gt;
:''range'': The distance to check.&lt;br /&gt;
:''mind'': Matching beings will try to keep this much distance between them.&lt;br /&gt;
:''maxd'': Matching beings will try to be at least this close to each other.&lt;br /&gt;
:'''Returns''': A coordinate.  If the beings are ''mind'' away or closer, the coordinate will be away from the closest matching being.  If the beings are ''maxd'' away or farther, the coordinate will be the location of the closest being.  Otherwise, the coordinate is a random position within ''range''.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|msg|cln||string|msg_player|string|msg_being}}&lt;br /&gt;
Prints a message depending on the status of the subject of the message.&lt;br /&gt;
:''msg_player'': ''Optional.'' If the calling being is the player, this message will be printed.  If omitted, no message is printed if called by the player.&lt;br /&gt;
:''msg_being'': ''Optional.'' If the calling being is not the player, but is in the player's vision, this message will be printed.  If omitted, no message is printed if called by a visible non-player being.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|select_slot_by_letter|cln|Item|string|letter}}&lt;br /&gt;
Gets the slot based on the character entered.&lt;br /&gt;
:''letter'': A single character string.&lt;br /&gt;
:'''Returns''': If letter is &amp;quot;a&amp;quot;, the item in the armor slot is returned.  If letter is &amp;quot;b&amp;quot;, the item in the boots slot is returned.  If letter is &amp;quot;w&amp;quot;, the item in the weapon slot is returned.  If letter is &amp;quot;p&amp;quot;, the item in the prepared slot is returned.  Otherwise, nil is returned.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|phase|cln||CellID|[cell]}}&lt;br /&gt;
Teleports the being to a new cell.&lt;br /&gt;
:''cell'': ''Optional.'' A cell id to search for.  If multiple cells of that id are on the level, one is picked at random.  If omitted, any cell empty of beings, items, stairs, walls, hazardous terrain, or LFNOSPAWN can be selected.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|spawn|cln||BeingID|monster}}&lt;br /&gt;
Summons monsters around this being.  Monsters summoned this way grant no experience to the player (that is, BF_NOEXP is set on the spawned beings).&lt;br /&gt;
:''monster'': The ID of the being to spawn.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|act|cln|boolean|Coord|coord}}&lt;br /&gt;
Makes the being interact with the indicated location.&lt;br /&gt;
:''coord'': The location to interact with.&lt;br /&gt;
:'''Returns''': ''True'' if the action was successful, ''False'' if not.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|eye_contact|cln|boolean|Coord|other}}&lt;br /&gt;
;{{moddef|desc|eye_contact|cln|boolean|Thing|other}}&lt;br /&gt;
Checks if something is visible from this being's location.&lt;br /&gt;
:''other'': A Coord, Being, or Item whose position will be checked.&lt;br /&gt;
:'''Returns''': ''True'' if the being can see the checked object or location, ''False'' if not.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|in_sight|cln|boolean|Coord|other}}&lt;br /&gt;
;{{moddef|desc|in_sight|cln|boolean|Thing|other}}&lt;br /&gt;
Checks to see if something can be from the being's location.  If the being is the player, the player's vision algorithm is used.  Otherwise, the being's eye_contact algorithm is used.&lt;br /&gt;
:''other'': A Coord, Being, or Item whose position will be checked.&lt;br /&gt;
:'''Returns''': ''True'' if the object is visible, ''False'' if not.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_player|cln|boolean}}&lt;br /&gt;
Returns whether this being is the player or not.&lt;br /&gt;
:'''Returns''': ''True'' if this being is the player.  ''False'' if it is not.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_items|cln|integer|SetID|set}}&lt;br /&gt;
Gets the number of items worn by the being that are part of a set.&lt;br /&gt;
:''set'': The set to check.&lt;br /&gt;
:'''Returns''': The number of items of that set worn by this being.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|nuke|cln||integer|[time]}}&lt;br /&gt;
Creates a nuke under the being and sets the nuke timer.&lt;br /&gt;
:''time'': ''Optional.'' The number of game turns the the nuke will go off in.  If omitted, the default is 1.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|pick_mod_item|cln|Item, boolean|string|modletter|integer|techbonus}}&lt;br /&gt;
Performs the choice, check, and attachment of a mod to an item.  Only the player can call this function.&lt;br /&gt;
:''modletter'': The letter representing the mod being attached. Standard DoomRL mod letters are:&lt;br /&gt;
  Agility: A     Tech:      T      Bulk: B     Power: P&lt;br /&gt;
  Sniper:  S     Firestorm: F      Nano: N     Onyx:  O&lt;br /&gt;
Custom modpacks should use different letters.&lt;br /&gt;
:''techbonus'': The number of points of tech bonus the being has.  DoomRL uses the Whizkid level for this number.&lt;br /&gt;
:'''Returns''': An Item and a boolean.  The Item returned is the resulting item after being modded with the mod pack, unless an assembly (mod array) was matched and accepted.  The boolean value is ''True'' if the modding was successful or ''False'' if it was not.  If the boolean value is ''False'' or the Item was turned into an assembly, Nil is returned instead of the item.&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Modding:being_API_(0.9.9.6)</id>
		<title>Modding:being API (0.9.9.6)</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Modding:being_API_(0.9.9.6)"/>
				<updated>2013-06-09T20:22:14Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Copying 0.9.9.6 data here.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== API ==&lt;br /&gt;
The [[Modding:Thing#API|Thing API]] can also be used with beings.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 2px solid darkred; border-spacing: 0; font-size: 90%; margin: 0.25em 0.5em;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: darkred; color: yellow; font-size: 120%; text-align: center&amp;quot;|Being Interface&lt;br /&gt;
 {{Table2Col&lt;br /&gt;
  |es=background: #333;&lt;br /&gt;
  |c1=font-weight:bold; text-align:right; vertical-align:top; padding:0px 2px;&lt;br /&gt;
  |c2=padding:0px 2px;&lt;br /&gt;
  |[[Modding:Being|Being]]|being.[[#being_new|new]]([[Modding:Being|Being ID]] id) &lt;br /&gt;
  |'''void'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_destroy|destroy]]('''boolean''' silent) &lt;br /&gt;
  |'''void'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_kill|kill]]('''boolean''' overkill) &lt;br /&gt;
  |'''void'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_ressurect|ressurect]]('''integer''' rrange) &lt;br /&gt;
  |'''void'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_apply_damage|apply_damage]]('''integer''' damage, [[Modding:Constants#BodyTarget|BodyTarget]] target, [[Modding:Constants#DamageType|DamageType]] damageType) &lt;br /&gt;
  |'''string'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_get_name|get_name]]('''boolean''' known, '''boolean''' capitalized) &lt;br /&gt;
  |[[Modding:Item|Item]]|[[Modding:Being|Being]]&amp;amp;#058;[[#being_get_inv_item|get_inv_item]]('''integer''' slot) &lt;br /&gt;
  |'''void'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_set_inv_item|set_inv_item]]('''integer''' slot, [[Modding:Item|Item]] item) &lt;br /&gt;
  |[[Modding:Item|Item]]|[[Modding:Being|Being]]&amp;amp;#058;[[#being_get_eq_item|get_eq_item]]([[Modding:Constants#Equip Slots|Equip Slot]] slot) &lt;br /&gt;
  |'''void'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_set_eq_item|set_eq_item]]([[Modding:Constants#Equip Slots|Equip Slot]] slot, [[Modding:Item|Item]] item) &lt;br /&gt;
  |'''void'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_play_sound|play_sound]]('''Sound ID''' sound) &lt;br /&gt;
  |'''integer'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_get_total_resistance|get_total_resistance]]([[Modding:Constants#Resistance|Resistance]] resistance, [[Modding:Constants#BodyTarget|BodyTarget]] target) &lt;br /&gt;
  |'''boolean'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_use|use]]('''integer''' slot) &lt;br /&gt;
  |'''boolean'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_wear|wear]]('''integer''' slot) &lt;br /&gt;
  |'''boolean'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_pickup|pickup]]([[Modding:Coord|Coord]] pos) &lt;br /&gt;
  |'''void'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_attack|attack]]([[Modding:Coord|Coord]] or [[Modding:Being|Being]] target) &lt;br /&gt;
  |'''void'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_fire|fire]]([[Modding:Coord|Coord]] target, [[Modding:Item|Item]] weapon) &lt;br /&gt;
  |'''boolean'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_reload|reload]]() &lt;br /&gt;
  |'''integer'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_direct_seek|direct_seek]]([[Modding:Coord|Coord]] target) &lt;br /&gt;
  |'''boolean'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_path_find|path_find]]([[Modding:Coord|Coord]] target, '''integer''' cutoff, '''integer''' maximum) &lt;br /&gt;
  |'''integer'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_path_next|path_next]]() &lt;br /&gt;
  |[[Modding:Coord|Coord]]|[[Modding:Being|Being]]&amp;amp;#058;[[#being_flock_target|flock_target]]('''integer''' range, '''integer''' mind, '''integer''' maxd) &lt;br /&gt;
  |'''void'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_msg|msg]]('''string''' msg_player, '''string''' msg_being) &lt;br /&gt;
  |[[Modding:Item|Item]]|[[Modding:Being|Being]]&amp;amp;#058;[[#being_select_slot_by_letter|select_slot_by_letter]]('''string''' letter) &lt;br /&gt;
  |'''void'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_phase|phase]]([[Modding:Cell|Cell ID]] cell) &lt;br /&gt;
  |'''void'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_spawn|spawn]]([[Modding:Being|Being ID]] being) &lt;br /&gt;
  |'''boolean'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_is_visible|is_visible]]() &lt;br /&gt;
  |'''boolean'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_is_player|is_player]]() &lt;br /&gt;
  |'''integer'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_set_items|set_items]]([[Modding:ItemSet|ItemSet]] set) &lt;br /&gt;
  |'''void'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_nuke|nuke]]('''integer''' time) &lt;br /&gt;
  |[[Modding:Item|Item]], '''boolean'''|[[Modding:Being|Being]]&amp;amp;#058;[[#being_pick_mod_item|pick_mod_item]]('''string''' modletter, '''integer''' techbonus)&lt;br /&gt;
  |}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Anchor|being_new}}&lt;br /&gt;
;being.new([[Modding:Being|Being ID]] id) &amp;amp;rarr; [[Modding:Being|Being]]&lt;br /&gt;
:This creates a newly allocated being of the appropriate type. The being won't exist on the map until it is placed by e.g. Level.drop_being.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_destroy}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;destroy('''boolean''' silent) &lt;br /&gt;
:Deallocates the memory associated with the being and removes it from the level (if applicable). The normal results of killing a being (e.g. leaving a corpse) are ignored. The ''silent'' parameter is optional. If true, applicable OnKill and OnKillAll hooks and events will also be ignored.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_kill}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;kill('''boolean''' overkill) &lt;br /&gt;
:Kills the being. If the optional ''overkill'' parameter is true, then the being will be gibbed.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_ressurect}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;ressurect('''integer''' rrange) &lt;br /&gt;
:Resurrects a single corpse that is found within a square of side-length 2 &amp;amp;times; ''rrange'' + 1, centered around the being. Nearer corpses are preferred. The corpse must not have another being standing on it and must be within sight of the being (as determined by the enemy line-of-sight algorithm). The resurrected being (if any) will have BF_NOEXP set. Messages are included.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_apply_damage}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;apply_damage('''integer''' damage, [[Modding:Constants#BodyTarget|BodyTarget]] target, [[Modding:Constants#DamageType|DamageType]] damageType) &lt;br /&gt;
:Deals damage to the being using the given body target and damage type. (The default damage type is bullet damage.)&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_get_name}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;get_name('''boolean''' known, '''boolean''' capitalized) &amp;amp;rarr; '''string'''&lt;br /&gt;
:Returns the name of the being. If ''known'' is true, &amp;quot;the&amp;quot; is added, otherwise &amp;quot;a&amp;quot; or &amp;quot;an&amp;quot; is added. If BF_UNIQUENAME is set for the being, then no article is used in either case. If ''capitalized'' is true, then the first letter will be capitalized.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_get_inv_item}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;get_inv_item('''integer''' slot) &amp;amp;rarr; [[Modding:Item|Item]]&lt;br /&gt;
;[[Modding:Being|Being]].inv&amp;amp;#091;'''integer''' slot] &amp;amp;rarr; [[Modding:Item|Item]]&lt;br /&gt;
:Returns the item in the given slot in the being's inventory. If the slot is empty, nil is returned instead.  &lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_set_inv_item}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;set_inv_item('''integer''' slot, [[Modding:Item|Item]] item) &lt;br /&gt;
;[[Modding:Being|Being]].inv&amp;amp;#091;'''integer''' slot] = [[Modding:Item|Item]] item &lt;br /&gt;
:Sets the given slot in the being's inventory to the given item. If the slot wasn't empty before, the previous constents are lost.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_get_eq_item}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;get_eq_item([[Modding:Constants#Equip Slots|Equip Slot]] slot) &amp;amp;rarr; [[Modding:Item|Item]]&lt;br /&gt;
;[[Modding:Being|Being]].eq&amp;amp;#091;[[Modding:Constants#Equip Slots|Equip Slot]] slot] &amp;amp;rarr; [[Modding:Item|Item]]&lt;br /&gt;
:Returns the item in the given equipment slot of the being. If the slot is empty, nil is returned instead. There are additional shorthands for each equipment slot: the ''eq'' table has .weapon, .prepared, .armor, and .boots fields.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_set_eq_item}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;set_eq_item([[Modding:Constants#Equip Slots|Equip Slot]] slot, [[Modding:Item|Item]] item) &lt;br /&gt;
;[[Modding:Being|Being]].eq&amp;amp;#091;[[Modding:Constants#Equip Slots|Equip Slot]] slot] = [[Modding:Item|Item]] item &lt;br /&gt;
:Sets the being's equipment slot to the given item. Any item that was previously in that slot is lost. There are additional shorthands for each equipment slot: the ''eq'' table has .weapon, .prepared, .armor, and .boots fields.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_play_sound}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;play_sound('''Sound ID''' sound) &lt;br /&gt;
:Plays the given sound as if it came from the being's position.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_get_total_resistance}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;get_total_resistance([[Modding:Constants#Resistance|Resistance]] resistance, [[Modding:Constants#BodyTarget|BodyTarget]] target) &amp;amp;rarr; '''integer'''&lt;br /&gt;
:Calculates the being's effective resistance against attacks of the given target (default is body). This accounts for inherent resists as well as equipment bonuses.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_use}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;use('''integer''' slot) &amp;amp;rarr; '''boolean'''&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;use([[Modding:Item|Item]] item) &amp;amp;rarr; '''boolean'''&lt;br /&gt;
:This makes the being use the given consumable item from its inventory. The function always returns false. (Bug: it is supposed to return true on success.)&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_wear}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;wear('''integer''' slot) &amp;amp;rarr; '''boolean'''&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;wear([[Modding:Item|Item]] item) &amp;amp;rarr; '''boolean'''&lt;br /&gt;
:This makes the being wear the given eqipment from its inventory. Returns true on success and false on failure.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_pickup}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;pickup([[Modding:Coord|Coord]] pos) &amp;amp;rarr; '''boolean'''&lt;br /&gt;
:This makes the being pick up the item at the given position. ''pos'' is optional; it defaults to the being's position. Returns true on success and false on failure.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_attack}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;attack([[Modding:Coord|Coord]] or [[Modding:Being|Being]] target) &lt;br /&gt;
:This makes the being do a standard melee attack against the targeted being or coord.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_fire}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;fire([[Modding:Coord|Coord]] target, [[Modding:Item|Item]] weapon) &lt;br /&gt;
:This makes the being fire at ''target'' with ''weapon''.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_reload}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;reload() &amp;amp;rarr; '''boolean'''&lt;br /&gt;
:This makes the being reload its currently equipped weapon. The return value is true if there being had at least some of the appropriate ammo to attempt reloading with.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_direct_seek}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;direct_seek([[Modding:Coord|Coord]] target) &amp;amp;rarr; '''integer'''&lt;br /&gt;
:This makes the being take a step towards the target. The being will always try to travel in a direct path. The return value is either 0, 1, 2, or 3. 0 indicates success, 1 indicates that a wall blocked the move, 2 indicates that a door blocked the move, and 3 indicates that a being blocked the move.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_path_find}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;path_find([[Modding:Coord|Coord]] target, '''integer''' cutoff, '''integer''' maximum) &amp;amp;rarr; '''boolean'''&lt;br /&gt;
:This attempts to calculate a path between the being and ''target''. The ''cutoff'' and ''maximum'' parameters are somewhat technical, but basically they indicate how much time should be spend searching for a path. DoomRL uses 40, 200 for bosses and 10, 40 for normal enemies. The path will be remembered by the being, and can be followed using path_next. Modders should keep in mind that path-finding is a somewhat expensive operation, especially for large ''cutoff'' and ''maximum''. The return value indicates whether a path was found. Even if no path was found, a path will be loaded that will try to take the being closer to the target (although this path may be empty). This uses the AStar searching algorithm using Euclidean distance as a heuristic. The search is aborted if ''maximum'' nodes are expanded without finding the target or it ''cutoff'' nodes are expanded without getting closer to the target. When aborted, a path is created to the closest expanded node to the target in terms of the heuristic.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_path_next}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;path_next() &amp;amp;rarr; '''integer'''&lt;br /&gt;
:This causes the being to take a step along the path last calculated by path_find. The return value follows the pattern of direct_seek.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_flock_target}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;flock_target('''integer''' range, '''integer''' mind, '''integer''' maxd) &amp;amp;rarr; [[Modding:Coord|Coord]]&lt;br /&gt;
:This looks for the closest being of the same type to the being (within a square ''range''). If the being is farther than ''maxd'' away, then its position is returned. If it is closer than ''mind'', then a position opposite from the closest with respect to the being is returned. Otherwise (or if there is no nearby being of the same type), a random coord from the scanning area is returned.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_msg}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;msg('''string''' msg_player, '''string''' msg_being) &lt;br /&gt;
:If the being is the player, then ''msg_player'' is displayed. If the being is not the player, but visible to the player, the ''msg_being'' is displayed. If either message is nil it is ignored.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_select_slot_by_letter}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;select_slot_by_letter('''string''' letter) &amp;amp;rarr; [[Modding:Item|Item]]&lt;br /&gt;
:Returns the one of the being's equipment where &amp;quot;a&amp;quot; is for armor, &amp;quot;b&amp;quot; is for boots, &amp;quot;w&amp;quot; is for weapon, and &amp;quot;p&amp;quot; is for the prepared slot. If the slot is empty, nil is returned.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_phase}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;phase([[Modding:Cell|Cell ID]] cell) &lt;br /&gt;
:If ''cell'' is omitted, then the being is displaced randomly as if it used a [[phase device]] (without the flashy interface stuff). If the cell is included, the being is displaced to a random cell of the given cell id. If the chosen cell is occupied, a nearby cell is used. If no such cell exists, a random cell is chosen.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_spawn}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;spawn([[Modding:Being|Being ID]] being) &lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;spawn([[Modding:Being|Being]] being) &lt;br /&gt;
:Drops a new being of the appropriate type (or the given being) nearby. The dropped being is set with the BF_NOEXP flag.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_is_visible}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;is_visible() &amp;amp;rarr; '''boolean'''&lt;br /&gt;
:Determines if the player can see the being.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_is_player}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;is_player() &amp;amp;rarr; '''boolean'''&lt;br /&gt;
:Determines if the being is the player.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_set_items}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;set_items([[Modding:ItemSet|ItemSet]] set) &amp;amp;rarr; '''integer'''&lt;br /&gt;
:Counts the number of the being's equipped items that belong to the given set.&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_nuke}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;nuke('''integer''' time) &lt;br /&gt;
:Sets the nuke timer to ''time'' and changes the cell under the being to the nuke cell. By default, ''time'' is 1. (Setting the nuke time to 0 will disable the countdown.)&lt;br /&gt;
----&lt;br /&gt;
{{Anchor|being_pick_mod_item}}&lt;br /&gt;
;[[Modding:Being|Being]]&amp;amp;#058;pick_mod_item('''string''' modletter, '''integer''' techbonus) &amp;amp;rarr; [[Modding:Item|Item]], '''boolean'''&lt;br /&gt;
:This only works for the player. This gives the player the item select menu used by mods, and calculates whether the mod is legal (using the given ''techbonus''). This includes assembly checking. The first return value is the item on success. The second return value is true on&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Modding:player_API</id>
		<title>Modding:player API</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Modding:player_API"/>
				<updated>2013-05-30T21:43:15Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Redirected page to Modding:player API (0.9.9.7)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Modding:player_API_(0.9.9.7)]]&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Modding:player_API_(0.9.9.7)</id>
		<title>Modding:player API (0.9.9.7)</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Modding:player_API_(0.9.9.7)"/>
				<updated>2013-05-30T21:37:40Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Created page with &amp;quot;''This page is currently under construction.''  You can also use the being API and thing API with the player, since it is also a being.  {|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 2px so...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''This page is currently under construction.''&lt;br /&gt;
&lt;br /&gt;
You can also use the being API and thing API with the player, since it is also a being.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 2px solid darkred; border-spacing: 0; font-size: 90%; margin: 0.25em 0.5em;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: darkred; color: yellow; font-size: 120%; text-align: center&amp;quot;|Player Interface&lt;br /&gt;
 {{Table2Col&lt;br /&gt;
  |es=background: #333;&lt;br /&gt;
  |c1=font-weight:bold; text-align:right; vertical-align:top; padding:0px 2px;&lt;br /&gt;
  |c2=padding:0px 2px;&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_affect|col||AffectID|id|integer|duration}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|get_affect_time|cln||AffectID|id}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|remove_affect|cln||AffectID|id}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_affect|cln||AffectID|id}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|add_exp|cln||integer|xp}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|has_won|cln}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|get_trait|cln||TraitID}}&lt;br /&gt;
  |{{modarg|string}}|{{moddef|list|get_trait_hist|cln}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|power_backpack|cln}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|win|cln}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|continue_game|cln}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|choose_trait|cln}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|level_up|cln}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|exit|cln||string|[next]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|exit|cln||integer|[next]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|quick_weapon|cln||ItemID|id}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_inv_size|cln||integer|size}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|mortem_print|cln||string|line}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|remove_medals|cln||table|medallist}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|remove_award|cln||AwardID|award}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_award|cln||AwardID|award|integer|level}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|has_award|cln||AwardID|award|integer|level}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|get_award|cln||AwardID|award}}&lt;br /&gt;
  |{{modarg|void}}   |{{moddef|list|remove_medal|cln||MedalID|medal}}&lt;br /&gt;
  |{{modarg|void}}   |{{moddef|list|add_medal|cln||MedalID|medal}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|has_medal|cln||MedalID|medal}}&lt;br /&gt;
  |{{modarg|void}}   |{{moddef|list|remove_badge|cln||BadgeID|badge}}&lt;br /&gt;
  |{{modarg|void}}   |{{moddef|list|add_badge|cln||BadgeID|badge}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|has_badge|cln||BadgeID|badge}}&lt;br /&gt;
  |{{modarg|void}}   |{{moddef|list|remove_assembly|cln||ModArrayID|assembly}}&lt;br /&gt;
  |{{modarg|void}}   |{{moddef|list|add_assembly|cln||ModArrayID|assembly}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|has_assembly|cln||ModArrayID|assembly}}&lt;br /&gt;
  |{{modarg|void}}   |{{moddef|list|remove_found_item|cln||ItemID|item}}&lt;br /&gt;
  |{{modarg|void}}   |{{moddef|list|add_found_item|cln||ItemID|item}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|has_found_item|cln||ItemID|item}}&lt;br /&gt;
  |{{modarg|void}}   |{{moddef|list|add_history|cln||string|line}}&lt;br /&gt;
  |}}&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_affect|col||AffectID|id|integer|duration}}&lt;br /&gt;
Adds the indicated affect to the player.&lt;br /&gt;
:''id'': The ID of the affect to add.&lt;br /&gt;
:''duration'': The number of actions to add the affect for.  If the affect is already active, the duration is extended by this amount.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_affect_time|cln|integer|AffectID|id}}&lt;br /&gt;
Gets the remaining duration of the indicated affect.&lt;br /&gt;
:''id'': The ID of the affect to get the duration for.&lt;br /&gt;
:'''Returns''': The remaining duration of the affect.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|remove_affect|cln||AffectID|id}}&lt;br /&gt;
Removes the indicated affect from the player.&lt;br /&gt;
:''id'': The ID of the affect to remove.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_affect|cln|boolean|AffectID|id}}&lt;br /&gt;
Checks to see if the given affect is active on the player.&lt;br /&gt;
:''id'': The ID of the affect to check for.&lt;br /&gt;
:'''Returns''': ''True'' if the affect is currently active on the player, ''False'' if not.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|add_exp|cln||integer|xp}}&lt;br /&gt;
Gives the player extra experience points.&lt;br /&gt;
:''xp'': The amount of experience to add.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|has_won|cln|boolean}}&lt;br /&gt;
Indicates whether the player has won or not.&lt;br /&gt;
:'''Returns''': ''True'' if the player has won the game, ''False'' if not.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_trait|cln|integer|TraitID}}&lt;br /&gt;
integer player:get_trait ( integer trait )&lt;br /&gt;
Gets the current level of a given trait.&lt;br /&gt;
:''trait'': The trait to get the level for.&lt;br /&gt;
:'''Returns''': The level of the trait.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_trait_hist|cln|string}}&lt;br /&gt;
Gets the history string for the player's traits (&amp;quot;Iro-&amp;gt;Iro-&amp;gt;HR&amp;quot;).&lt;br /&gt;
:'''Returns''': The history string.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|power_backpack|cln}}&lt;br /&gt;
Gives the player the BF_BACKPACK flag and re-packs the ammo items in the inventory.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|win|cln}}&lt;br /&gt;
Makes the player win the game and ends the game at the end of the turn.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|continue_game|cln}}&lt;br /&gt;
Stops the game from ending at the end of the turn.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|choose_trait|cln}}&lt;br /&gt;
Opens the trait menu and allows the player to pick a new trait.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|level_up|cln}}&lt;br /&gt;
Increments the player's level count, calls the level up hooks, opens the trait menu, and prints the appropriate messages.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|exit|cln||string|[next]}}&lt;br /&gt;
;{{moddef|desc|exit|cln||integer|[next]}}&lt;br /&gt;
Leaves the current level and goes to the specified level.&lt;br /&gt;
:''next'': ''Optional.'' The string ID of the special level to go to, or the number of the level in the episode to exit to.  If omitted, the default is to go to the next numbered level in the episode.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|quick_weapon|cln||ItemID|id}}&lt;br /&gt;
Quick-swaps the equipped weapon with indicated weapon ID, if it is in the player's inventory.&lt;br /&gt;
:''id'': The id of the weapon to swap to.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_inv_size|cln||integer|size}}&lt;br /&gt;
Sets the number of usable slots in the player's inventory.&lt;br /&gt;
:''size'': A number from 1 to MAX_INV_SIZE to set the number of available slots to.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|mortem_print|cln||string|line}}&lt;br /&gt;
Writes a line of the mortem.  Can only be used while printing the mortem.&lt;br /&gt;
:''line'': The text to write.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|remove_medals|cln||table|medallist}}&lt;br /&gt;
Removes specified medals from the player's earned medals list.&lt;br /&gt;
:''medallist'': The list of medals to remove.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|remove_award|cln||AwardID|award}}&lt;br /&gt;
Removes a custom award from the player's data.&lt;br /&gt;
:''award'': The award to remove.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_award|cln||AwardID|award|integer|level}}&lt;br /&gt;
Grants the indicated award to the player.&lt;br /&gt;
:''award'': The award to give.&lt;br /&gt;
:''level'': The quality level of the award to give.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|has_award|cln|boolean|AwardID|award|integer|level}}&lt;br /&gt;
Indicates if the player has earned the specified award.&lt;br /&gt;
:''award'': The award to check for.&lt;br /&gt;
:''level'': The minimum quality level of the award to check for.&lt;br /&gt;
:'''Returns''': ''True'' if the player has at least the given level of the given award, ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_award|cln|integer|AwardID|award}}&lt;br /&gt;
Gets the quality level of a specified award.&lt;br /&gt;
:''award'': The award to look for.&lt;br /&gt;
:'''Returns''': The current level of the award earned.  0 is returned if the award has not been earned at all.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|remove_medal|cln||MedalID|medal}}&lt;br /&gt;
Removes a medal from the player's earned medals.&lt;br /&gt;
:''medal'': The medal to remove.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|add_medal|cln||MedalID|medal}}&lt;br /&gt;
Grants a medal to the player.&lt;br /&gt;
:''medal'': The medal to give.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|has_medal|cln|boolean|MedalID|medal}}&lt;br /&gt;
Checks if the player has a specified medal.&lt;br /&gt;
:''medal'': The medal to check for.&lt;br /&gt;
:'''Returns''': ''True'' if the player has earned the medal, ''False'' if they have not.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|remove_badge|cln||BadgeID|badge}}&lt;br /&gt;
Removes a badge from the player's earned badges.&lt;br /&gt;
:''badge'': The badge to remove.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|add_badge|cln||BadgeID|badge}}&lt;br /&gt;
Grants a badge to the player.&lt;br /&gt;
:''badge'': The badge to add.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|has_badge|cln|boolean|BadgeID|badge}}&lt;br /&gt;
Checks to see if the player has the specified badge.&lt;br /&gt;
:''badge'': The badge to check for.&lt;br /&gt;
:'''Returns''': ''True'' if the player has earned the indicated badge, ''False'' if not.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|remove_assembly|cln||ModArrayID|assembly}}&lt;br /&gt;
Removes an assembly from the list of created assemblies.&lt;br /&gt;
:''assembly'': The assembly to remove.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|add_assembly|cln||ModArrayID|assembly}}&lt;br /&gt;
Adds an assembly to the list of created assemblies.&lt;br /&gt;
:''assembly'': The assembly to add.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|has_assembly|cln|boolean|ModArrayID|assembly}}&lt;br /&gt;
Checks to see if the player has the specified assembly in the list of created assemblies.&lt;br /&gt;
:''assembly'': The assembly to check for.&lt;br /&gt;
:'''Returns''': ''True'' if the assembly is in the list, ''False'' if it is not.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|remove_found_item|cln||ItemID|item}}&lt;br /&gt;
Removes the indicated item from the list of found items.&lt;br /&gt;
:''item'': The item to remove.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|add_found_item|cln||ItemID|item}}&lt;br /&gt;
Adds the indicated item to the list of found items.&lt;br /&gt;
:''item'': The item to add.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|has_found_item|cln|boolean|ItemID|item}}&lt;br /&gt;
Checks to see if the player has the indicated item.&lt;br /&gt;
:''item'': The item to check for.&lt;br /&gt;
:'''Returns''': ''True'' if the player has found the item, ''False'' if they have not.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|add_history|cln||string|line}}&lt;br /&gt;
Adds a line to the history section of the mortem.  Can be called anywhere prior to the end of printing the mortem.&lt;br /&gt;
:''line'': The line of text to add.  Use &amp;quot;@1&amp;quot; in the string to insert the current depth.&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Modding:level_API_(0.9.9.7)</id>
		<title>Modding:level API (0.9.9.7)</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Modding:level_API_(0.9.9.7)"/>
				<updated>2013-05-24T15:01:49Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Replacing old information with new, old info moved to (0.9.9.6) page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''This page is currently under construction.''&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
Please note that the type &amp;quot;integer&amp;quot; indicates an numeric value without a decimal part.  It does not indicate the range of acceptable values.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellID&amp;quot; may be the numeric or string ID of a cell.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellSet&amp;quot; may be the numeric ID, string ID, or a list of numeric and/or string IDs.&lt;br /&gt;
&lt;br /&gt;
The argument types &amp;quot;Flag&amp;quot; and &amp;quot;Flags&amp;quot; expect a single [[Modding:Constants|flag constant]] of the indicated type, and a list of such flag constants, respectively.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;any&amp;quot; means any lua type.&lt;br /&gt;
&lt;br /&gt;
An argument name in [square brackets] is an optional one.  The function description will indicate how the function operates if it is omitted.&lt;br /&gt;
&lt;br /&gt;
=== Table Parameters ===&lt;br /&gt;
&lt;br /&gt;
Some of the functions in the Level API take a parameter in a special table format.  Those functions have a parameter type of *ParamTable*.  When calling these functions, the keys of the table given as the argument must '''exactly''' match the names given, although they may appear in any order.  Details for which keys are looked for are provided in the function's description.  Additional keys specified in these tables will be ignored.&lt;br /&gt;
&lt;br /&gt;
=== Level API Function List ===&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 2px solid darkred; border-spacing: 0; font-size: 90%; margin: 0.25em 0.5em;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: darkred; color: yellow; font-size: 120%; text-align: center&amp;quot;|'''Level Interface - Functions'''&lt;br /&gt;
 {{Table2Col&lt;br /&gt;
  |es=background: #333; &lt;br /&gt;
  |c1=font-weight:bold; text-align:right; vertical-align:top; padding:0px 2px;&lt;br /&gt;
  |c2=padding:0px 2px;&lt;br /&gt;
  ||'''[[#Level Object Functions|Level Object Functions]]'''&lt;br /&gt;
  |{{modarg|string}}|{{moddef|list|get_id|col}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|get_uid|col}}&lt;br /&gt;
  |{{modarg|string}}|{{moddef|list|get_type|col}}&lt;br /&gt;
  |{{modarg|Area}}|{{moddef|list|get_area|col}}&lt;br /&gt;
  |{{modarg|object}}|{{moddef|list|get_parent|col}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|get_child_count|col}}&lt;br /&gt;
  |{{modarg|table}}|{{moddef|list|children|col||string|filter}}&lt;br /&gt;
  |{{modarg|table}}|{{moddef|list|children_in_range|col||Coord|where|integer|range|string|filter}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|destroy|col}}&lt;br /&gt;
  ||'''[[#Level Property Functions|Level Property Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|add_property|col||any|key|any|val}}&lt;br /&gt;
  |{{modarg|any}}|{{moddef|list|get_property|col||any|key}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|has_property|col||any|key}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|remove_property|col||any|key}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_property|col||any|key|any|value}}&lt;br /&gt;
  ||'''[[#Cell Level Functions|Cell Level Functions]]'''&lt;br /&gt;
  |{{modarg|CellID}}|{{moddef|list|get_cell|col||Coord|where}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|raw_get_cell|col||integer|x|integer|y}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_cell|col||Coord|where|CellID|what}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|raw_set_cell|col||integer|x|integer|y|integer|what}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|get_hp|col||Coord|where}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_hp|col||Coord|where|integer|new_hp}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|get_light_flag|col||Flag|what|Coord|[where]}}&lt;br /&gt;
  |{{modarg|void}}&lt;br /&gt;
{{modarg|void}}|{{moddef|list|set_light_flag|col||Flag|what|boolean|[value]|Coord|[where]}}&lt;br /&gt;
{{moddef|list|set_light_flag|col||Flag|what|boolean|[value]|Area|[where]}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_visible|col||Coord|a}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|eye_contact|col||Coord|a|Coord|b}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty|col||Coord|where|Flags|reqs}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty_area|col||Area|where|Flags|reqs}}&lt;br /&gt;
  ||'''[[#Being Level Functions|Being Level Functions]]'''&lt;br /&gt;
  |{{modarg|table}}|{{moddef|list|beings|col}}&lt;br /&gt;
  |{{modarg|table}}|{{moddef|list|beings_in_range|col||Coord|where|integer|range}}&lt;br /&gt;
  |{{modarg|Being}}|{{moddef|list|get_being|col||Coord|where}}&lt;br /&gt;
  |{{modarg|Being}}|{{moddef|list|drop_being|col||Being|what|Coord|where}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|drop_being_ext|col||Being|being|Coord|where}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|clear_being|col||Coord|where|boolean|silent}}&lt;br /&gt;
  |{{modarg|table}}|{{moddef|list|get_being_table|col||integer|[danger]|table|[weights]|table|[reqs]|integer|[dmod]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|flood_monster|col||*ParamTable*|args}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|flood_monsters|col||*ParamTable*|args}}&lt;br /&gt;
  |{{modarg|BeingID}}|{{moddef|list|roll_being|col||*ParamTable*|args}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|summon|col||BeingID|id|integer|[count]}}&lt;br /&gt;
{{moddef|list|summon|col||*ParamTable*|args}}&lt;br /&gt;
  ||'''[[#Item Level Functions|Item Level Functions]]'''&lt;br /&gt;
  |{{modarg|table}}|{{moddef|list|items|col}}&lt;br /&gt;
  |{{modarg|table}}|{{moddef|list|items_in_range|col||Coord|where|integer|range}}&lt;br /&gt;
  |{{modarg|Item}}|{{moddef|list|get_item|col||Coord|where}}&lt;br /&gt;
  |{{modarg|Item}}|{{moddef|list|drop_item|col||string|what|Coord|where|boolean|[onfloor]}}&lt;br /&gt;
{{moddef|list|drop_item|col||table|what|Coord|where|boolean|[onfloor]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|drop_item_ext|col||table|item|Coord|where}}&lt;br /&gt;
{{moddef|list|drop_item_ext|col||string|item|Coord|where}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|try_destroy_item|col||Coord|where}}&lt;br /&gt;
  |{{modarg|table}}|{{moddef|list|get_item_table|col||integer|[dlevel]|table|[weights]|table|[reqs]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|flood_items|col||integer|amount}}&lt;br /&gt;
{{moddef|list|flood_items|col||*ParamTable*|args}}&lt;br /&gt;
  |{{modarg|ItemID}}|{{moddef|list|roll_item|col||*ParamTable*|args}}&lt;br /&gt;
  |{{modarg|Item}}|{{moddef|list|drop|col||ItemID|id|integer|[count]}}&lt;br /&gt;
  |{{modarg|Item}}|{{moddef|list|area_drop|col||Area|where|ItemID|id|integer|[count]|boolean|[onfloor]}}&lt;br /&gt;
  ||'''[[#Miscellanous Functions|Miscellanous Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|explosion|col||Coord|where|integer|size|integer|delay|integer|dice|integer|sides|Color|color|SoundID|[sound_id]|DamageType|[type]|ExplosionFlags|[flags]|CellID|[content]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|flood|col||CellID|tile|Area|flood_area}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_corpse|col||Coord|c}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|nuke|col}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|play_sound|col||SoundID|sound_id|Coord|where}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|player|col||integer|x|integer|y}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|push_cell|col||Coord|c|Coord|target|boolean|[quiet]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|recalc_fluids|col}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|register_hook|col||string|hookname|any|func}}&lt;br /&gt;
  |}}&lt;br /&gt;
|}&lt;br /&gt;
=== Level Object Functions ===&lt;br /&gt;
;{{moddef|desc|get_id|col|string}}&lt;br /&gt;
Gets the ID of the level.&lt;br /&gt;
:'''Returns''': The string ID of the level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_uid|col|integer}}&lt;br /&gt;
Gets the unique ID (UID) of the level.&lt;br /&gt;
:'''Returns''': The numeric ID of the level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_type|col|string}}&lt;br /&gt;
Gets the type of this object.&lt;br /&gt;
:'''Returns''': The string &amp;quot;level&amp;quot;.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_area|col|Area}}&lt;br /&gt;
Gets the level's entire area.&lt;br /&gt;
:'''Returns''': An [[Modding:Area|Area]] object encompassing the entire map.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_parent|col|object}}&lt;br /&gt;
Gets the parent of this object.&lt;br /&gt;
:'''Returns''': Nil.  Level has no parent object.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_child_count|col|integer}}&lt;br /&gt;
Gets the number of children this object is the parent of.  All beings and items on the level are children of the level object.&lt;br /&gt;
:'''Returns''': Total number of beings and items on the map (being count will include the player).&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|children|col}}&lt;br /&gt;
Gets a table containing each child object of level.  All beings and items on the level are children of the level object.&lt;br /&gt;
:'''Returns''': A table of all beings and items on the map.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|destroy|col}}&lt;br /&gt;
Destroys the level object.  ''You should not call this in your lua script.''&lt;br /&gt;
----&lt;br /&gt;
=== Level Property Functions ===&lt;br /&gt;
;{{moddef|desc|add_property|col||any|key|any|value}}&lt;br /&gt;
Adds a user-defined property to the level object.&lt;br /&gt;
:''key'': The value to refer to the property by.&lt;br /&gt;
:''value'': The corresponding value of the property.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_property|col|any|any|key}}&lt;br /&gt;
Retrieves the value of a user-defined property.&lt;br /&gt;
:''key'': The property's key value, defined when it was added.&lt;br /&gt;
:'''Returns''': The current value of the property.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|has_property|col|boolean|any|key}}&lt;br /&gt;
Checks to see if the given property exists.&lt;br /&gt;
:''key'': The property key to check for.&lt;br /&gt;
:'''Returns''': ''True'' if the property exists, ''False'' if it does not.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|remove_property|col||any|key}}&lt;br /&gt;
Removes a property from the level object.&lt;br /&gt;
:''key'': The key of the property to remove.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_property|col||any|key|any|value}}&lt;br /&gt;
Assigns a new value to an existing property.&lt;br /&gt;
:''key'': The key of the property to change.&lt;br /&gt;
:''value'': The new value to assign to the property.&lt;br /&gt;
----&lt;br /&gt;
=== Cell Level Functions ===&lt;br /&gt;
;{{moddef|desc|get_cell|col|CellID|Coord|where}}&lt;br /&gt;
Gets the cell at a specific map coordinate.&lt;br /&gt;
:''where'': The location to get.&lt;br /&gt;
:'''Returns''': The ID of the cell at the location.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|raw_get_cell|col|integer|integer|x|integer|y}}&lt;br /&gt;
Gets the cell ID at a specific map coordinate.&lt;br /&gt;
:''x'': The X position of the coordinate to get.&lt;br /&gt;
:''y'': The Y position of the coordinate to get.&lt;br /&gt;
:'''Returns''': The numeric ID of the cell at the coordinates.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_cell|col||Coord|where|CellID|what}}&lt;br /&gt;
Assigns a new cell to a map coordinate.&lt;br /&gt;
:''where'': The location to change.&lt;br /&gt;
:''what'': The cell to assign to the location.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|raw_set_cell|col||integer|x|integer|y|integer|what}}&lt;br /&gt;
Assigns a new cell to a map coordinate.&lt;br /&gt;
:''x'': The X position of the location to change.&lt;br /&gt;
:''y'': The Y position of the location to change.&lt;br /&gt;
:''what'': The numeric ID of the cell to assign.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_hp|col|integer|Coord|where}}&lt;br /&gt;
Gets the HP of the cell at the specified location.&lt;br /&gt;
:''where'': The coordinate to get the HP amount from.&lt;br /&gt;
:'''Returns''': The amount of HP the cell has.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_hp|col||Coord|where|integer|new_hp}}&lt;br /&gt;
Sets the HP of the cell at the specified location.&lt;br /&gt;
:''where'': The coordinate to set.&lt;br /&gt;
:''new_hp'': The new HP value to set for the coordinate.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_light_flag|col|boolean|Flag|what|Coord|where}}&lt;br /&gt;
Checks a cell for a certain light flag.&lt;br /&gt;
:''what'': The LightFlag (named constant that starts with LF) to check for.  Refer to [[Modding:Constants#Light Flag|this]] for more info.&lt;br /&gt;
:''where'': The location to check.&lt;br /&gt;
:'''Returns''': ''True'' if the flag is set.  ''False'' if it is not.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_light_flag|col||Flag|what|boolean|[value]|Coord|[where]}}&lt;br /&gt;
;{{moddef|desc|set_light_flag|col||Flag|what|boolean|[value]|Area|[where]}}&lt;br /&gt;
Sets or unsets a LightFlag at a specified location or specified locations.&lt;br /&gt;
:''what'': The LightFlag (named constant that starts with LF) to check for.  Refer to [[Modding:Constants#Light Flag|this]] for more info.&lt;br /&gt;
:''value'': ''Optional.'' ''True'' to set the flag, ''False'' to unset it.  If omitted, the default is to set the flag.&lt;br /&gt;
:''where'': ''Optional.'' The coordinate or area to change.  If an area is supplied, all cells in the area will have the flag set or unset.  If omitted, the entire map will have the flag set or unset.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_visible|col|boolean|Coord|a}}&lt;br /&gt;
Determines if the player can see this space.&lt;br /&gt;
:''a'': The space to check.&lt;br /&gt;
:'''Returns''': ''True'' if the player can see it, ''False'' if the player cannot.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|eye_contact|col|boolean|Coord|a|Coord|b}}&lt;br /&gt;
Checks to see if two spaces can see each other.  This check uses the monster vision algorithm, which is stricter than the player's vision algorithm.&lt;br /&gt;
:''a'': The first space to check.&lt;br /&gt;
:''b'': The second space to check.&lt;br /&gt;
:'''Returns''': ''True'' if the spaces are visible to each other, ''False'' if not.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty|col|boolean|Coord|where|Flags|reqs}}&lt;br /&gt;
Checks to see if the indicated cell is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The position to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the position cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the map position does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if the cell satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise. &lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty_area|col|boolean|Area|where|Flags|reqs}}&lt;br /&gt;
Checks to see if the indicated area is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The area to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the area cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the area does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if every cell in the area satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
=== Being Level Functions ===&lt;br /&gt;
;{{moddef|desc|beings|col|table}}&lt;br /&gt;
Gets a table containing all of the beings on the level.&lt;br /&gt;
:'''Returns''': A table containing all beings on the level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|beings_in_range|col|table|Coord|where|integer|range}}&lt;br /&gt;
Gets a table containing all of the beings within a certain distance of a location.&lt;br /&gt;
:''where'': The location to search around.&lt;br /&gt;
:''range'': The distance away from the location to get beings from.&lt;br /&gt;
:'''Returns''': A table containing the beings close enough to the location specified.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_being|col|Being|Coord|where}}&lt;br /&gt;
Gets the being at the specified coordinate.&lt;br /&gt;
:''where'': The location to get the being from.&lt;br /&gt;
:'''Returns''': The being at the location.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drop_being|col|Being|BeingID|what|Coord|where}}&lt;br /&gt;
Places a being on the map.&lt;br /&gt;
:''what'': The id of the being to place.&lt;br /&gt;
:''where'': The location to attempt to drop the being.  If there is already a being at that location, the being will be dropped nearby.&lt;br /&gt;
:'''Returns''': A reference to the being dropped.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drop_being_ext|col||BeingID|being|Coord|where}}&lt;br /&gt;
Places a being on the map with modifications.&lt;br /&gt;
:''being'': A BeingID, or a table whose first field is a BeingID, followed by the changes to the beings properties in the form ''field = new_value''.&lt;br /&gt;
:''where'': The location to attempt to drop the being.  If there is already a being at that location, the being will be dropped nearby.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|clear_being|col||Coord|where|boolean|silent}}&lt;br /&gt;
Removes a being from the map.&lt;br /&gt;
:''where'': The location to remove the being from.&lt;br /&gt;
:''silent'': If ''true'', the being will be removed without making any sounds or causing any messages. If ''false'', the being will act as though they were killed (complete with message and sound).&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_being_table|col|table|integer|[dlevel]|table|[weights]|table|[reqs]|integer|[dmod]}}&lt;br /&gt;
Gets a weight table for beings and being groups, using the indicated criteria.&lt;br /&gt;
:''dlevel'': ''Optional.'' The depth to pull the list of beings for. Only beings and groups that have an equal or smaller min_level and an equal or larger max_level will be selected. The ''dmod'' parameter also modifies which beings will be picked. If omitted, the current danger level (which is usually the current depth) is used.&lt;br /&gt;
:''weights'': ''Optional.'' A table containing modifiers to weights. The keys of the table are ids, flags, or blueprint fields to look for. For example, &amp;quot;former&amp;quot; will match the being with the id &amp;quot;former&amp;quot; (that is, Former Humans). Suppling a being flag (such as BF_BOSS or BF_ENVIROSAFE) will look for that flag in the being prototype's flag list. Suppling a blueprint field will match all beings that have that field in their blueprint table, provided that the value of the field isn't ''nil'', ''false'', or 0. Each matched being will have its weight multiplied by the value supplied for that key. For example, &amp;lt;tt&amp;gt;&amp;quot;former&amp;quot; = 2&amp;lt;/tt&amp;gt; will double the weight value of Former Humans, while &amp;lt;tt&amp;gt;&amp;quot;former&amp;quot; = 0.5&amp;lt;/tt&amp;gt; will halve it. If a being matches multiple entries, all are applied. (for example, the table {BF_ENVIROSAFE = 2, &amp;quot;pain&amp;quot; = 2} will match Pain Elementals twice -- since both apply a double modifier to weight, Pain Elementals will now have 4 times the weight.) If omitted, no modifications are made to weights.&lt;br /&gt;
:''reqs'': ''Optional.'' A table containing requirements to check for.  Only beings that meet all of the requirements will be included in the resulting weight table.  The keys of the table are blueprint fields that must be matched.  The value for each key in the table is either a single value, which only beings whose blueprint field key has the value supplied will match, or a table of values, which will match beings that have one or more of the supplied values if the value of the blueprint field isn't a table itself, or all of the values if it is.  For example, if the reqs table is &amp;lt;tt&amp;gt;{ id = &amp;quot;former&amp;quot; }&amp;lt;/tt&amp;gt; , it will match Former Human (since its id is &amp;quot;former&amp;quot;).  If the reqs table has &amp;lt;tt&amp;gt;{ id = {&amp;quot;former&amp;quot;, &amp;quot;sergeant&amp;quot;, &amp;quot;captain&amp;quot; } }&amp;lt;/tt&amp;gt;, Former Human, Former Sergeant, and Former Captain will be matched. If the reqs table has &amp;lt;tt&amp;gt;{ flags = { BF_BOSS, BF_ENVIROSAFE } }&amp;lt;/tt&amp;gt;, this will return all the beings with both the enviro-safe flag and the boss flag (since the flags blueprint field is a table itself).  If omitted, no beings or groups are excluded (aside from those already excluded by the dlevel and dmod parameters).&lt;br /&gt;
:''dmod'': The current dlevel is adjusted by the value here for the min_level check.  This allows beings with a higher min_level to be selected on an earlier depth (if positive), or exclude beings with a higher min_level for extra levels (if negative).  In other words, this enables monsters to spawn &amp;quot;out of depth&amp;quot;.  If omitted, the default is 3 if difficulty is medium (HMP), 6 if difficulty is hard or very hard (UV and N!), and 0 otherwise.&lt;br /&gt;
:'''Returns''': A weight table object.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|flood_monster|col||*ParamTable*|args}}&lt;br /&gt;
Places one or more of a single type of monster on the level.&lt;br /&gt;
:''args'': A table that looks for the following keys:&lt;br /&gt;
::''id'': The ID of the being to place.&lt;br /&gt;
::''danger'': The total amount of danger points worth of this monster to place.  This field is optional if ''count'' is set.  If both ''danger'' and ''count'' are set, the function will stop placing monsters when either ''danger'' or ''count'' is reached.&lt;br /&gt;
::''count'': The number of monsters to place.  This field is optional if ''danger'' is set.  If both ''danger'' and ''count'' are set, the function will stop placing monsters when either ''danger'' or ''count'' is reached.&lt;br /&gt;
::''flags'': ''Optional.'' A list of [[Modding:Constants#Empty_flags|EmptyFlags]] that determines where monsters are allowed to be placed.  If omitted, the default list is { EF_NOBEINGS, EF_NOBLOCK, EF_NOHARM, EF_NOSPAWN }.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|flood_monsters|col||*ParamTable*|args}}&lt;br /&gt;
Places monsters on the level.&lt;br /&gt;
:''args'': A table that looks for the following keys:&lt;br /&gt;
::''danger'': The total amount of danger points worth of monsters to place.  This field is optional if ''amount'' is set.  If both ''danger'' and ''amount'' are set, the function will stop placing monsters when either ''danger'' or ''amount'' is reached.&lt;br /&gt;
::''amount'': The number of monsters to place.  This field is optional if ''danger'' is set.  If both ''danger'' and ''amount'' are set, the function will stop placing monsters when either ''danger'' or ''amount'' is reached.&lt;br /&gt;
::''flags'': ''Optional.'' A list of [[Modding:Constants#Empty_flags|EmptyFlags]] that determines where monsters are allowed to be placed.  If omitted, the default list is { EF_NOBEINGS, EF_NOBLOCK, EF_NOHARM, EF_NOSPAWN }.&lt;br /&gt;
::''reqs'': ''Optional.'' See get_being_table for more info about this parameter.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|roll_being|col|BeingID|*ParamTable*|args}}&lt;br /&gt;
Picks an ID for a being out of a list.&lt;br /&gt;
:''args'': A table that looks for the following keys:&lt;br /&gt;
::''list'': A table with BeingIDs as keys and the weight for the being as the value.  If this key is supplied, all other keys are ignored.&lt;br /&gt;
:: These next 4 keys create a being list using ''get_being_table'' if the ''list'' parameter is omitted.  The ID will be selected from the resulting weight table.  It will not pick a group.&lt;br /&gt;
::''level'': See the ''danger'' parameter for ''get_being_table''.&lt;br /&gt;
::''weights'': See the ''weights'' parameter for ''get_being_table''.&lt;br /&gt;
::''diffmod'': See the ''dmod'' parameter for ''get_being_table''.&lt;br /&gt;
::''reqs'': See the ''reqs'' parameter for ''get_being_table''.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|summon|col||BeingID|id|integer|[count]}}&lt;br /&gt;
Places a given number of a single being onto the map.&lt;br /&gt;
:''id'': The ID of the being to place.&lt;br /&gt;
:''count'': ''Optional.'' The number of that being to place.  If omitted, only one being will be placed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|summon|col||*ParamTable*|args}}&lt;br /&gt;
Places a given number of a single being onto the map.&lt;br /&gt;
:''args'': A table that looks for the following keys:&lt;br /&gt;
::''id'': The ID of the being to place.&lt;br /&gt;
::''count'': ''Optional.'' The number of that being to place.  If omitted, only one being will be placed.&lt;br /&gt;
::''cell'': ''Optional.'' A cell or set of cells that are valid locations for placement of the being(s).  If omitted, the beings can be placed on any cell.&lt;br /&gt;
::''area'': ''Optional.'' The area the beings can spawn in.  If omitted, the area used is the entire map.&lt;br /&gt;
::''empty'': ''Optional.'' A list of [[Modding:Constants#Empty_flags|EmptyFlags]] that determines where monsters are allowed to be placed.  If omitted, the default list is { EF_NOBEINGS, EF_NOBLOCK, EF_NOHARM, EF_NOSPAWN } if ''cell'' is omitted, and { EF_NOBEINGS, EF_NOBLOCK } if ''cell'' is supplied.&lt;br /&gt;
----&lt;br /&gt;
=== Item Level Functions ===&lt;br /&gt;
;{{moddef|desc|items|col|table}}&lt;br /&gt;
Gets a table containing all of the items on the level.&lt;br /&gt;
:'''Returns''': A table containing all items on the level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|items_in_range|col|table|Coord|where|integer|range}}&lt;br /&gt;
Gets a table containing all of the items within a certain distance of a location.&lt;br /&gt;
:''where'': The location to search around.&lt;br /&gt;
:''range'': The distance away from the location to search around.&lt;br /&gt;
:'''Returns''': A table containing all of the items within range of the location.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_item|col|Item|Coord|where}}&lt;br /&gt;
Gets the item at a location.&lt;br /&gt;
:''where'': The location to retrieve the item from.&lt;br /&gt;
:'''Returns''': A reference to the Item at the location.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drop_item|col|Item|string|what|Coord|where|boolean|[onfloor]}}&lt;br /&gt;
;{{moddef|desc|drop_item|col|Item|Item|what|Coord|where|boolean|[onfloor]}}&lt;br /&gt;
Places an item on the map.&lt;br /&gt;
:''what'': The item to place.  Either a string containing the ID of the item or a table representing an existing item.&lt;br /&gt;
:''where'': The location to place the item.  If occupied, the nearest available location will be chosen.&lt;br /&gt;
:''onfloor'': ''Optional.''  If true, will apply the difficulty modifier to an ammo item that is placed.  If false, the ammo item is placed with the given amount of ammo.  If omitted, the default is false.  This argument has no effect on non-ammo items.&lt;br /&gt;
:'''Returns''': A reference to the dropped item.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drop_item_ext|col||table|item|Coord|where}}&lt;br /&gt;
;{{moddef|desc|drop_item_ext|col||string|item|Coord|where}}&lt;br /&gt;
Places an item with modifications on the map.&lt;br /&gt;
:''what'': The item to place.  Either a string containing the ID of the item or a table with the ItemID string as it's first value, followed by a table containing entries in the form of &amp;lt;tt&amp;gt;&amp;quot;item_property&amp;quot; = new_value&amp;lt;/tt&amp;gt; as the second value.&lt;br /&gt;
:''where'': The location to place the item at.  If occupied, the nearest available location will be chosen.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|try_destroy_item|col||Coord|where}}&lt;br /&gt;
Attempts to destroy the item in a specified location.  This function will not destroy the item if the item has the flag IF_NODESTROY or IF_UNIQUE.  To guarantee destruction of an item, call the item's :destroy() method.&lt;br /&gt;
:''where'': The location of the item to try to destroy.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_item_table|col|table|integer|[dlevel]|table|[weights]|table|[reqs]}}&lt;br /&gt;
Gets a weight table for items, using the indicated criteria.&lt;br /&gt;
:''dlevel'': ''Optional.'' The depth to pull the list of items for.  If omitted, the value in ''level.danger_level'' is used.&lt;br /&gt;
:''weights'': ''Optional.'' A table containing modifiers to weights. The keys of the table are ids, flags, or blueprint fields to look for.  For example, &amp;quot;smed&amp;quot; will match Small Med-Packs.  Suppling an item flag (such as IF_UNIQUE or IF_SHOTGUN, or an ITEMTYPE value) will look for that flag in the item prototype's flag list.  Suppling a blueprint field will match all items that have that field in their blueprint table, provided that the value isn't ''nil'', ''false'', or 0.  Each matched item will have its weight multiplied by the value supplied for that key.  For example, &amp;lt;tt&amp;gt;&amp;quot;smed&amp;quot; = 2&amp;lt;/tt&amp;gt; will double the weight of Small Med-Packs, while &amp;lt;tt&amp;gt;&amp;quot;smed&amp;quot; = 0.5&amp;lt;/tt&amp;gt; will halve it.  If an item matches multiple entries, all are applied.  (For example, the table {IF_UNIQUE = 2, &amp;quot;uberarmor&amp;quot; = 2} will match Berserker Armor twice -- since both apply a double modifier to weight, Berserker Armor would have 4 times the weight.)  If omitted, no modifications are made to weights.&lt;br /&gt;
:''reqs'': ''Optional.'' A table containing requirements to check for.  Only items that meet all of the requirements will be included in the resulting weight table.  The keys of the table are blueprint fields that must be matched.  The value for each key in the table is either a single value, which only items whose blueprint field key has the value supplied will match, or a table of values, which will match items that have one or more of the supplied values if the value of the blueprint field isn't a table itself, or all of the values if it is.  For example, if the reqs table is &amp;lt;tt&amp;gt;{ id = &amp;quot;smed&amp;quot; }&amp;lt;/tt&amp;gt;, it will match Small Med-Packs (since its id is &amp;quot;smed&amp;quot;).  If the reqs table has &amp;lt;tt&amp;gt;{ id = {&amp;quot;smed&amp;quot;, &amp;quot;lmed&amp;quot;, &amp;quot;phase&amp;quot;, &amp;quot;hphase&amp;quot; }&amp;lt;/tt&amp;gt;, it will match Small Med-Packs, Large Med-Packs, Phase Devices, and Homing Phase Devices.  If the reqs table has &amp;lt;tt&amp;gt;{ flags = {IF_UNIQUE, IF_SHOTGUN} }&amp;lt;/tt&amp;gt;, this will match all unique shotguns (since the flags blueprint field is a table itself).  If omitted, no items are excluded (aside from those already excluded by other factors, such as the ''dlevel'' parameter).&lt;br /&gt;
::NOTE: This function has a hidden limitation when trying to generate exotics and uniques.  The function will not pick exotics if the ''danger_level'' of the level is less then the current difficulty (where ITYTD = 1 and N! = 5).  The function will not pick uniques if the ''danger_level'' of the level is less than 3 more than the current difficulty (where ITYTD = 1 and N! = 5).  If you need to generate exotics or uniques before the indicated ''danger_level'', you can add the needed items to the resulting table yourself using the &amp;lt;tt&amp;gt;:add(&amp;lt;object&amp;gt;)&amp;lt;/tt&amp;gt; method on the returned weight table object.  Other functions that use this function (such as ''flood_items'' and ''roll_item'') will also have this behavior.&lt;br /&gt;
:'''Returns''': A weight table object.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|flood_items|col||integer|amount}}&lt;br /&gt;
Places several different items on the level, using the default criteria.&lt;br /&gt;
:''amount'': The number of items to place on the level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|flood_items|col||*ParamTable*|args}}&lt;br /&gt;
Places several different items on the level, using specific criteria.&lt;br /&gt;
:''args'': A table that looks for the following keys:&lt;br /&gt;
::''amount'': The number of items to place on the level.&lt;br /&gt;
::''level'', ''weights'', ''reqs'': ''All optional.'' See the ''get_item_table'' function for more info.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|roll_item|col||*ParamTable*|args}}&lt;br /&gt;
Picks an item at random using specified criteria.&lt;br /&gt;
:''args'': A table that looks for the following keys:&lt;br /&gt;
::''level'': ''Optional.'' Sent to ''get_item_table'' as the ''dlevel'' parameter.  Refer to ''get_item_table'' for more info.&lt;br /&gt;
::''type'': ''Optional.'' A table containing one or more ITEMTYPE values.  If supplied, only items that have one of the indicated types will be selected.  If omitted, any item type can be picked.&lt;br /&gt;
::''weights'': ''Optional.'' Sent to ''get_item_table'' as the ''weights'' parameter.  Refer to ''get_item_table'' for more info.&lt;br /&gt;
::''reqs'': ''Optional.''  Sent to ''get_item_table'' as the ''reqs'' parameter.  Refer to ''get_item_table'' for more info.&lt;br /&gt;
::''unique_mod'': ''Optional.''  A multiplier to the weights of all unique items.  If omitted, 1 is used.&lt;br /&gt;
::''exotic_mod'': ''Optional.''  A multiplier to the weights of all exotic items.  If omitted, 1 is used.&lt;br /&gt;
::''special_mod'': ''Optional.''  A multiplier to the weights of all exotic and unique items.  Combines with ''unique_mod'' and ''exotic_mod''.  If omitted, 1 is used.&lt;br /&gt;
:'''Returns''': The ID of the rolled item.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drop|col|Item|ItemID|id|integer|[count]}}&lt;br /&gt;
Places one or more of a specific item on the map.&lt;br /&gt;
:''id'': The ID of the item to place.&lt;br /&gt;
:''count'': ''Optional.'' The number of the item to place.  If omitted, only 1 item will be placed.&lt;br /&gt;
:'''Returns''': A reference to the last item placed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|area_drop|col|Item|Area|where|ItemID|id|integer|[count]|boolean|[onfloor]}}&lt;br /&gt;
Places one or more of a specific item on the map in an area.&lt;br /&gt;
:''where'': The area to confine the item drops to.&lt;br /&gt;
:''id'': The Id of the item to place.&lt;br /&gt;
:''count'': ''Optional.'' The number of the item to place.  If omitted, only 1 item will be placed.&lt;br /&gt;
:''onfloor'': ''Optional.'' If true, will apply the difficulty modifier to an ammo item that is placed.  If false, the ammo item is placed with the given amount of ammo.  If omitted, the default is false.  This argument has no effect on non-ammo items.&lt;br /&gt;
:'''Returns''': A reference to the last item placed.&lt;br /&gt;
=== Miscellanous Functions ===&lt;br /&gt;
;{{moddef|desc|explosion|col||Coord|where|integer|size|integer|delay|integer|dice|integer|sides|Color|color|SoundID|[sound_id]|DamageType|[type]|ExplosionFlags|[flags]|CellID|[content]}}&lt;br /&gt;
Creates an explosion on the map.&lt;br /&gt;
:''where'': The location for the center of the explosion.&lt;br /&gt;
:''size'': The size of the explosion.  If greater than 8, the explosion will be visible in all cells, including cells that are not currently in the player's vision.&lt;br /&gt;
:''delay'': The amount of time (in milliseconds) that each step of the explosion will take.&lt;br /&gt;
:''dice'': The number of dice to use for the damage.  Enter 0 to prevent the explosion from dealing damage (for decoration explosions).&lt;br /&gt;
:''sides'': The number of sides for each die to use for the damage.  Enter 0 to prevent the explosion from dealing damage (for decoration explosions).&lt;br /&gt;
:''color'': ''Optional.'' The color of the explosion.  Not all colors will show.  If omitted, a RED explosion will be used.&lt;br /&gt;
:''sound_id'': ''Optional.'' The ID of the sound to use for this explosion.  If omitted, no sound is used.&lt;br /&gt;
:''type'': ''Optional.'' The type of damage this explosion deals.  If omitted, the default is DAMAGE_FIRE.&lt;br /&gt;
:''flags'': ''Optional.'' A list of ExplosionFlags that will modify what the explosion applies to or how it applies.  If omitted, no modifications are made to the explosion.&lt;br /&gt;
:''content'': ''Optional.'' The cell to fill cells in the explosion area with if the explosion hits a cell for more than 20 damage.  If omitted, cells will not changed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|flood|col||CellID|tile|Area|flood_area}}&lt;br /&gt;
Replaces non-wall tiles in an area with a different tile.&lt;br /&gt;
:''tile'': The cell to fill with.  This does not have to be a fluid cell.&lt;br /&gt;
:''flood_area'': The area to fill.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_corpse|col|boolean|Coord|c}}&lt;br /&gt;
Indicates if a coordinate has a corpse cell or not.&lt;br /&gt;
:''c'': The location to check.&lt;br /&gt;
:'''Returns''': ''True'' if the coordinate is a corpse, ''False'' if it is not.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|nuke|col}}&lt;br /&gt;
Instantly nukes a level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|play_sound|col||SoundID|sound_id|Coord|where}}&lt;br /&gt;
Plays a sound on the map.&lt;br /&gt;
:''sound_id'': The id of the sound to play.&lt;br /&gt;
:''where'': The location to play the sound at.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|player|col||integer|x|integer|y}}&lt;br /&gt;
Set the position of the player on the map.&lt;br /&gt;
:''x'': The x coordinate of the position to move the player to.&lt;br /&gt;
:''y'': The y coordinate of the position to move the player to.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|push_cell|col||Coord|c|Coord|target|boolean|[quiet]}}&lt;br /&gt;
Attempts to move a cell to a new location. (Swaps two cells.)&lt;br /&gt;
:''c'': The source coordinate.&lt;br /&gt;
:''target'': The destination coordinate.&lt;br /&gt;
:''quiet'': ''Optional.'' If ''True'', messages about success or failure as well as sounds that would play on success or failure are all suppressed.  If ''False'', sounds and messages will happen as it would normally.  If omitted, the default is ''False''.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|recalc_fluids|col}}&lt;br /&gt;
Recalculates fluid edges.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|register_hook|col|string|hookname|&amp;lt;any&amp;gt;|func}}&lt;br /&gt;
Registers a hook with this object.&lt;br /&gt;
:''hookname'': The name of the hook to register.&lt;br /&gt;
:''func'': The function to assign to the hook.&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Modding:level_API_(0.9.9.6)</id>
		<title>Modding:level API (0.9.9.6)</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Modding:level_API_(0.9.9.6)"/>
				<updated>2013-05-24T14:53:51Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Putting the documentation for the older versions here&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is pending.  The below is a dump from earlier versions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
{{drltable|Level Interface|2|{{Table2Col&lt;br /&gt;
  |es=background: #333;&lt;br /&gt;
  |c1=font-weight:bold; text-align:right; vertical-align:top; padding:0px 2px;&lt;br /&gt;
  |c2=padding:0px 2px;&lt;br /&gt;
  |{{modarg|value}}|{{moddef|list|property_get|dot||string|property}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|property_set|dot|string|property|value|value}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|flag_get|dot||Level Flag|flag}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|flag_set|dot||Level Flag|flag|boolean|value}}&lt;br /&gt;
  |{{modarg|value}}|{{moddef|list|roll_weight|dot||list|list|integer|sum}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|weight_list_sum|dot||list|list}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_tile|dot||table|translation|string|tile|integer|x|integer|y}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|player|dot||integer|x|integer|y}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|result|dot||integer|value}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|eye_contact|dot||Coord|c1|Coord|c2}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_visible|dot||Coord|position}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|nuke|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|explosion|dot||Coord|position|integer|radius|integer|delay|integer|damage_dice|integer|damage_sides|Color|color|Sound ID|sound|DamageType|damagetype|ExplosionFlag List|flags|Cell ID|content}}&lt;br /&gt;
  ||'''Cell-specific functions'''&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|light_flag_get|dot||Coord|position|LightFlag|flag}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|light_flag_set|dot||Coord|position|LightFlag|flag|boolean|value}} &lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|hp_get|dot||Coord|position}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|hp_set|dot||Coord|position|integer|value}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_corpse|dot||Coord|position}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|scan|dot||Area|scan_area|Cell ID|good}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fill|dot||Cell ID|cell|Area|fill_area}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|flood|dot||Cell ID|tile|Area|flood_area}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|scatter|dot||Area|scatter_area|Cell ID|good|Cell ID|fill|integer|count}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|scatter_put|dot||Area|scatter_area|table|translation|string|tile|Cell ID|good|integer|count}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|push_cell|dot||Coord|c|Coord|target|boolean|quiet}}&lt;br /&gt;
  ||'''Being-specific functions'''&lt;br /&gt;
  |{{modarg|Being}}|{{moddef|list|get_being|dot||integer|index}}&lt;br /&gt;
  |{{modarg|Being}}|{{moddef|list|get_being_by_uid|dot||integer|uid}}&lt;br /&gt;
  |{{modarg|Being}}|{{moddef|list|drop_being|dot||Being ID|bid|Coord|position}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|drop_being_ext|dot||table|being|Coord|position}}&lt;br /&gt;
  |{{modarg|Being}}|{{moddef|list|summon|dot||Being ID|bid|integer|count}}&lt;br /&gt;
  |{{modarg|Being}}|{{moddef|list|area_summon|dot||Area|where|Being ID|bid|integer|count}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|clear_being|dot||Coord|position}}&lt;br /&gt;
  |{{modarg|list}}, {{modarg|integer}}|{{moddef|list|get_being_list|dot}}&lt;br /&gt;
  |[[Modding:Being|Being ID]]|{{moddef|list|random_being|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|flood_monster|dot||Being ID|bid|integer|amount}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|flood_monsters|dot||integer|amount}}&lt;br /&gt;
  |{{modarg|Being iterator}}|{{moddef|list|beings|dot}}&lt;br /&gt;
  |{{modarg|Being iterator}}|{{moddef|list|beings_in_range|dot||Coord|position|integer|range}}&lt;br /&gt;
  ||'''Item-specific functions'''&lt;br /&gt;
  |{{modarg|Item}}|{{moddef|list|get_item|dot||integer|index}}&lt;br /&gt;
  |{{modarg|Item}}|{{moddef|list|get_item_by_uid|dot||integer|uid}}&lt;br /&gt;
  |{{modarg|Item}}|{{moddef|list|drop_item|dot||Item ID|iid|Coord|position}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|drop_item_ext|dot||table|item|Coord|position}}&lt;br /&gt;
  |{{modarg|Item}}|{{moddef|list|drop|dot||Item ID|iid|integer|count}}&lt;br /&gt;
  |{{modarg|Item}}|{{moddef|list|area_drop|dot||Area|where|Item ID|iid|integer|count}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|try_destroy_item|dot||Coord|c}}&lt;br /&gt;
  |{{modarg|list}}, {{modarg|integer}}|{{moddef|list|get_item_list|dot||integer|max_level|integer|unique_mult}}&lt;br /&gt;
  |[[Modding:Item|Item ID]]|{{moddef|list|roll_item_type|dot||ItemType list|itypes|integer|max_level|integer|unique_mod}}&lt;br /&gt;
  |[[Modding:Item|Item ID]]|{{moddef|list|roll_item|dot||integer|max_level|integer|unique_mod}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|flood_items|dot||integer|amount|}}&lt;br /&gt;
  |{{modarg|Item iterator}}|{{moddef|list|items|dot}}&lt;br /&gt;
  |{{modarg|Item iterator}}|{{moddef|list|items_in_range|dot||Coord|position|integer|range}}&lt;br /&gt;
  }}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{moddef|desc|property_get|dot|value|string|property}}&lt;br /&gt;
:Gets the value of the given level property. It is preferred to use the Lua dot indexing syntax instead.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|property_set|dot|string|property|value|value}}&lt;br /&gt;
:Sets the given level property to the given value. It is preferred to use the Lua dot indexing syntax instead.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|flag_get|dot|boolean|Level Flag|flag}}&lt;br /&gt;
;Level.flags&amp;amp;#091;[[Modding:Constants#Level Flags|Level Flag]] flag] &amp;amp;rarr; '''boolean'''&lt;br /&gt;
:Determines the current state of the given level flag.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|flag_set|dot||Level Flag|flag|boolean|value}}&lt;br /&gt;
;Level.flags&amp;amp;#091;[[Modding:Constants#Level Flags|Level Flag]] flag] = '''boolean''' value &lt;br /&gt;
:Sets the given level flag to the given value.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|roll_weight|dot|value|list|list|integer|sum}}&lt;br /&gt;
:Randomly chooses an item from the list according to the weight property of the list items. Sum must be the sum of the weights of all the list items.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|weight_list_sum|dot|integer|list|list}}&lt;br /&gt;
:Returns the sum of the weight properties of all the items in the list.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|place_tile|dot||table|translation|string|tile|integer|x|integer|y}}&lt;br /&gt;
:Places the map tile given by ''translation'' and ''tile'' on the map at the position given by ''x'' and ''y''. ''translation'' should be a table that maps single character strings to either cell ids, or to tables. These tables have their first array element be a cell id, but they may also contain a being and''or'' item key that is mapped to a being or item id respectively. Level.drop_being_ext and Level.drop_item_ext syntax is allowed. ''tile'' should be a string of characters that are defined in ''translation''. Line breaks correspond to line breaks on the map.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|player|dot||integer|x|integer|y}}&lt;br /&gt;
:Sets the initial position of the player for a special or scripted level. This should be called in the Create hook; after that it has no meaningful effect.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|result|dot|integer|integer|value}}&lt;br /&gt;
:If ''value'' is given, updates the level's status and returns nil. If ''value'' is omitted, returns the current status.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|eye_contact|dot|boolean|Coord|c1|Coord|c2}}&lt;br /&gt;
:Determines whether or not there is a line-of-sight path between '''c1''' and '''c2'''. This calculation ignores light flags (such that two beings can have eye contact even if they aren't visible to each other).&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|is_visible|dot|boolean|Coord|position}}&lt;br /&gt;
:Determines if the given position is visible to the player.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|nuke|dot}}&lt;br /&gt;
:Triggers an immediate nuclear explosion as from a [[thermonuclear bomb]].&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|explosion|dot||Coord|position|integer|radius|integer|delay|integer|damage_dice|integer|damage_sides|Color|color|Sound ID|sound|DamageType|damagetype|ExplosionFlag List|flags|Cell ID|content}}&lt;br /&gt;
:Creates an [[explosions|explosion]] centered at the given position with the given parameters. ''radius'' is the size of the explosion. ''delay'' is the delay in milliseconds between animation frames (typically this is around 40). ''damage_dice'' and ''damage_sides'' determine the damage roll for the explosion. For a no-damage explosion, both should be 0. The default damage type is fire. ''content'' determines the cell that is randomly created wherever the explosion does enough damage. By default, there are no flags and there is no content. Only some colors are supported, and these are automatically translated into 3 color combinations used by the explosion animation. The supported colors are LIGHTBLUE, BLUE, MAGENTA, GREEN, LIGHTRED, YELLOW, and the default RED.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|light_flag_get|dot|boolean|Coord|position|LightFlag|flag}}&lt;br /&gt;
;Level.light&amp;amp;#091;[[Modding:Coord|Coord]] position]&amp;amp;#091;[[Modding:Constants#LightFlag|LightFlag]] flag] &amp;amp;rarr; '''boolean'''&lt;br /&gt;
:Gets the value of the given light flag at the given position.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|light_flag_set|dot||Coord|position|LightFlag|flag|boolean|value}} &lt;br /&gt;
;Level.light&amp;amp;#091;[[Modding:Coord|Coord]] position]&amp;amp;#091;[[Modding:Constants#LightFlag|LightFlag]] flag] = '''boolean''' value &lt;br /&gt;
;Level.light&amp;amp;#091;[[Modding:Constants#LightFlag|LightFlag]] flag] = '''boolean''' value &lt;br /&gt;
:Sets the value of the given light flag at the given position. For the syntax without a position, the light flag will be set at every position on the map. &lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|hp_get|dot|integer|Coord|position}}&lt;br /&gt;
;Level.hp&amp;amp;#091;[[Modding:Coord|Coord]] position] &amp;amp;rarr; '''integer'''&lt;br /&gt;
:Gets the current hp of the cell at the given position. &lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|hp_set|dot||Coord|position|integer|value}}&lt;br /&gt;
;Level.hp&amp;amp;#091;[[Modding:Coord|Coord]] position] = '''integer''' value &lt;br /&gt;
:Sets the current hp of the cell at the given position. Setting hp to 0 won't destroy a cell.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|is_corpse|dot|boolean|Coord|position}}&lt;br /&gt;
:Determines whether the given position has a corpse in it. This counts the cell with id &amp;quot;corpse&amp;quot; as a corpse even though it otherwise isn't a corpse as far as the engine is concerned.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|scan|dot|boolean|Area|scan_area|Cell ID|good}}&lt;br /&gt;
:Determines if every cell in ''scan_area'' is ''good''.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|fill|dot||Cell ID|cell|Area|fill_area}}&lt;br /&gt;
:Sets every cell in the given area to the area. ''fill_area'' is optional; it defaults to the full map.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|flood|dot||Cell ID|tile|Area|flood_area}}&lt;br /&gt;
:Changes CELLSET_FLOORS and CF_LIQUID tiles in the area to ''tile''. If ''tile'' has CF_HAZARD, then it will destroy items.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|scatter|dot||Area|scatter_area|Cell ID|good|Cell ID|fill|integer|count}}&lt;br /&gt;
:Chooses ''count'' random tiles in ''scatter_area'' (possibly with duplicates) and sets any chosen cells that are ''good'' to ''fill''.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|scatter_put|dot||Area|scatter_area|table|translation|string|tile|Cell ID|good|integer|count}}&lt;br /&gt;
:Chooses ''count'' random subareas with upper-left corner in ''scatter_area'' of the size appropriate of ''tile'' (using the first line length and number of lines to define a rectangular area). There may be duplicates or overlaps. For each subarea, if the area is already filled with ''good'', then it is replaced with ''tile'' (according to ''translation''). See Level.place_tile for the semantics of ''translation'' and ''tile''. &lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|push_cell|dot|boolean|Coord|c|Coord|target|boolean|quiet}}&lt;br /&gt;
:Swaps the content of the cells located in '''c''' and '''target''': this will only occur successfully if '''target''' is a part of CELLSET_FLOORS. If '''target''' has the CF_HAZARD flag, the cell on '''c''' activates its OnDestroy hook. '''quiet''', when set to true, includes messages (mostly specific to barrels, the only object pushed in the base game).&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|get_being|dot|Being|integer|index}}&lt;br /&gt;
:Returns the being at the given index in the sparse being array. A being's index won't change as long as it is in the array.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|get_being_by_uid|dot|Being|integer|uid}}&lt;br /&gt;
:Returns the being with the given uid, or nil if that being doesn't exist or has been removed from the map.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|drop_being|dot|Being|Being ID|bid|Coord|position}}&lt;br /&gt;
:Drops a newly created being in the given position. ''bid'' can also be an actual being object, although this should not be used for beings that are already on the map. If the position is occupied, the being will be dropped nearby. The dropped being is returned. If the function fails, nil is returned.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|drop_being_ext|dot||table|being|Coord|position}}&lt;br /&gt;
:As Level.drop_being, except additional values are accetable for ''being'' as Level.drop_item_ext.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|summon|dot|Being|Being ID|bid|integer|count}}&lt;br /&gt;
:Creates new beings of the type given by ''bid'' and amount given by ''count'' and scatters them around the map. The last dropped being (if any) is returned. ''count'' is optional and defaults to 1.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|area_summon|dot|Being|Area|where|Being ID|bid|integer|count}}&lt;br /&gt;
:As Level.summon, but all the summoned beings are randomly placed in ''where'' rather than scattered across the whole map.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|clear_being|dot||Coord|position}}&lt;br /&gt;
{{moddef|desc|clear_being|dot||integer|index}}&lt;br /&gt;
:Removes an item from the map at the given position, or from the given index in the item array.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|get_being_list|dot|list,integer}}&lt;br /&gt;
:Returns the list and sum (ready to be used with [[#level_roll_weight|Level.roll_weight]]) for beings and beings groups according to Level.danger_level and DIFFICULTY. The result is cached.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|random_being|dot|Being ID}}&lt;br /&gt;
:Returns a random being chosen according to weights from the current level's list. This will never choose a group. The returned id is always a string id.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|flood_monster|dot||Being ID|bid|integer|amount}}&lt;br /&gt;
:Add the given monster type to the level in an amount specified by the total danger value ''amount'' (so it scales appropriately with Level.flood_monsters).&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|flood_monsters|dot||integer|amount}}&lt;br /&gt;
:Adds monsters to the level using the normal algorithm for random levels. The ''amount'' is a total danger value such as a value returned by Generator.being_weight.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|beings|dot|Being iterator}}&lt;br /&gt;
:Gives an iterator over all beings in the level.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|beings_in_range|dot|Being iterator|Coord|position|integer|range}}&lt;br /&gt;
:Gives an iterator over all beings within '''range''' units of [[distance]] from '''position''' in the level.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|get_item|dot|Item|integer|index}}&lt;br /&gt;
:Returns the item at the given index in the sparse item array. An item's index won't change as long as it is in the array.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|get_item_by_uid|dot|Item|integer|uid}}&lt;br /&gt;
:Returns the item with the given uid, or nil if that item doesn't exist or has been removed from the map.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|drop_item|dot|Item|Item ID|iid|Coord|position}}&lt;br /&gt;
:Drops a newly created item in the given position. ''iid'' can also be an actual item object, although this should not be used for items that are already on the map. If the position is occupied, the item will be dropped nearby. The dropped item is returned. If the function fails, nil is returned.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|drop_item_ext|dot||table|item|Coord|position}}&lt;br /&gt;
:As Level.drop_item, except additional values are acceptable for ''item''. If ''item'' is a table, the first list element is passed used to determine which item to drop. For other key-value pairs in the table, the property of the dropped item that corresponds to the key will be set to the value.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|drop|dot|Item|Item ID|iid|integer|count}}&lt;br /&gt;
:Creates new items of the type given by ''iid'' and amount given by ''count'' and scatters them around the map. The last dropped item (if any) is returned. ''count'' is optional and defaults to 1.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|area_drop|dot|Item|Area|where|Item ID|iid|integer|count}}&lt;br /&gt;
:As Level.drop, but all dropped items are randomly placed in ''where'' rather than scattered across the whole map.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|try_destroy_item|dot||Coord|c}}&lt;br /&gt;
:Destroys an item at '''position''', if there is one to be found.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|get_item_list|dot|list,integer|integer|max_level|integer|unique_mult}}&lt;br /&gt;
:Returns the list and sum (ready to be used with [[#level_roll_weight|Level.roll_weight]]) for items according to ''max_level'', and ''unique_mult''. ''max_level'' defaults to Level.danger_level, and is used to determine which items fall in the proper level range. Unique items' weights are multiplied by ''unique_mult'' (which defaults to 1). The result is cached.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|roll_item_type|dot|Item ID|ItemType list|itypes|integer|max_level|integer|unique_mod}}&lt;br /&gt;
:Returns a random item chosen from among the given item types according to weights from the list specified by ''max_level'' and ''unique_mod''. The returned id is always a string id.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|roll_item|dot|Item ID|integer|max_level|integer|unique_mod}}&lt;br /&gt;
:As Level.roll_item_type, but the item type of the result isn't restricted.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|flood_items|dot||integer|amount|}}&lt;br /&gt;
:Adds items to the level according to the normal algorithm for random levels (not counting special features). The number of items is given by ''amount''.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|items|dot|Item iterator}}&lt;br /&gt;
:Gives an iterator over all items in the level.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|items_in_range|dot|Item iterator|Coord|position|integer|range}}&lt;br /&gt;
:Gives an iterator over all items within '''range''' units of [[distance]] from '''position''' in the level.&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Modding:generator_API</id>
		<title>Modding:generator API</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Modding:generator_API"/>
				<updated>2013-04-25T19:24:43Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: /* Advanced Cell Handling Functions */ cha -&amp;gt; change&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''This page is currently under construction.''&lt;br /&gt;
&lt;br /&gt;
The generator holds all of the ever-present functions used to create the random maps in DoomRL. It also contains a variety of helper functions, many of them useful if not vital to the creation of intricate and meticulous game design.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
Please note that the type &amp;quot;integer&amp;quot; indicates an numeric value without a decimal part.  It does not indicate the range of acceptable values.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellID&amp;quot; may be the numeric or string ID of a cell.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellSet&amp;quot; may be the numeric ID, string ID, or a list of numeric and/or string IDs.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;Flags&amp;quot; expects a list of [[Modding:Constants|flag constants]] of the indicated type.  &lt;br /&gt;
&lt;br /&gt;
An argument name in [square brackets] is an optional one.  The function description will indicate how the function operates if it is omitted.&lt;br /&gt;
&lt;br /&gt;
=== Generator API Function List ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 2px solid darkred; border-spacing: 0; font-size: 90%; margin: 0.25em 0.5em;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: darkred; color: yellow; font-size: 120%; text-align: center&amp;quot;|'''Generator Interface - Functions'''&lt;br /&gt;
 {{Table2Col&lt;br /&gt;
  |es=background: #333; &lt;br /&gt;
  |c1=font-weight:bold; text-align:right; vertical-align:top; padding:0px 2px;&lt;br /&gt;
  |c2=padding:0px 2px;&lt;br /&gt;
  ||'''[[#Basic Cell Handling Functions|Basic Cell Handling Functions]]'''&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|get_cell|dot||Coord|loc}}&lt;br /&gt;
  |{{modarg|string}}|{{moddef|list|get_cell_id|dot||Coord|loc}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|fast_get_cell|dot||integer|x|integer|y}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_cell|dot||Coord|loc|CellID|what}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fast_set_cell|dot||integer|x|integer|y|integer|what}}&lt;br /&gt;
  ||'''[[#Map Checking Functions|Map Checking Functions]]'''&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|around|dot||Coord|where|CellSet|what}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|cross_around|dot||Coord|where|CellSet|what}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty|dot||Coord|where|Flags|reqs}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty_area|dot||Area|where|Flags|reqs}}  &lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|scan|dot||Area|where|CellID|good}}&lt;br /&gt;
  ||'''[[#Map Searching Functions|Map Searching Functions]]'''&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|drop_coord|dot||Coord|where|Flags|reqs}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_coord|dot||CellSet|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|random_coord|dot||Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_random_coord|dot||CellSet|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_empty_coord|dot||CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|random_empty_coord|dot||Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_random_empty_coord|dot||CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|safe_empty_coord|dot||Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|standard_empty_coord|dot}}&lt;br /&gt;
  ||'''[[#Advanced Cell Handling Functions|Advanced Cell Handling Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fill|dot||CellID|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fill_pattern|dot||Area|where|boolean|horiz|Table|line1|Table|[line2]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fill_edges|dot||CellID|what}}&lt;br /&gt;
  |{{modarg|Table}}|{{moddef|list|each|dot||CellID|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_blood|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_permanence|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
  |{{modarg|Table}}|{{moddef|list|cell_set|dot||CellSet|cells}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|restore_walls|dot||CellID|wallCell|boolean|keepFluids}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|plot_line|dot||Coord|where|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|plot_lines|dot||Coord|where|Area|larea|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|scatter|dot||Area|where|CellID|good|CellID|fill|integer|count}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|scatter_blood|dot||Area|where|CellID|[good]|integer|count}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|scatter_put|dot||Area|where|Table|translation|string|tile|CellID|good|integer|count}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|transmute|dot||CellID|to|CellSet|from|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|transmute_marker|dot||Flag|marker|CellID|To|Area|[where]}}&lt;br /&gt;
  ||'''[[#Tile Handling Functions|Tile Handling Functions]]'''&lt;br /&gt;
  |{{modarg|Table}}|{{moddef|list|create_translation|dot||Table|code}}&lt;br /&gt;
  |{{modarg|Tile}}|{{moddef|list|tile_new|dot||string|map|Table|translation}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|tile_place|dot||Coord|where|Tile|what}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_tile|dot||Table|translation|string|tile|integer|x|integer|y}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_dungen_tile|dot||Table|code|Tile|tile|Coord|where}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_symmetry_quad|dot||string|tile|Table|translation}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_proto_map|dot||Coord|where|string|proto_map|string|proto_key|Table|code}}&lt;br /&gt;
  ||'''[[#Room Handling Functions|Room Handling Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|add_room|dot||Area|room|string|[class]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|add_rooms|dot}}&lt;br /&gt;
  |{{modarg|Room}}|{{moddef|list|get_room|dot||integer|min_size|integer|max_x|integer|max_y|integer|max_area|string|[class]}}&lt;br /&gt;
  |{{modarg|integer, integer}}|{{moddef|list|get_endpoints|dot||Coord|where|boolean|horiz|CellSet|what}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|handle_rooms|dot||integer|count|boolean|no_monsters}}&lt;br /&gt;
  ||'''[[#Generation Algorithm Functions|Generation Algorithm Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|run_drunkard_walk|dot||Area|where|Coord|start|integer|steps|CellID|fill|CellSet|[ignore]|boolean|[stop_at_edge]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|drunkard_walks|dot||integer|amount|integer|steps|CellID|fill|CellSet|[ignore]|boolean|[stop_at_edge]|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|contd_drunkard_walks|dot||integer|amount|integer|steps|CellID|fill|CellSet|edges1|CellSet|edges2|CellSet|[ignore]|boolean|[stop_at_edge]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|warehouse_fill|dot||CellSet|fill|Area|where|integer|size|integer|count|integer|special_chance|CellSet|special}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_blob|dot||Coord|start|integer|size|CellID|cell}}&lt;br /&gt;
  ||'''[[#Generator Helper Functions|Generator Helper Functions]]'''&lt;br /&gt;
  |{{modarg|&amp;lt;value&amp;gt;, &amp;lt;value&amp;gt;}}|{{moddef|list|roll_pair|dot||Table|list}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|being_weight|dot}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|item_amount|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|horiz_river|dot||CellID|cell|integer|width|boolean|[bridge]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|vert_river|dot||CellID|cell|integer|width|boolean|bridge|integer|position}}&lt;br /&gt;
{{moddef|list|vert_river|dot||CellID|cell|integer|width|boolean|bridge|Coord|position}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_rivers|dot||boolean|allow_horiz|boolean|allow_more}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_fluids|dot||Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_barrels|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_stairs|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_special_stairs|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_player|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|run|dot||Generator|gen}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|reset|dot}}&lt;br /&gt;
  ||'''[[#Dungeon Generation Functions|Dungeon Generation Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_tiled|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|maze_dungeon|dot||CellID|floor|CellID|wall|integer|granularity|integer|tries|integer|min_size|integer|max_size}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_caves_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_caves_2_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_lava_dungeon|dot}}&lt;br /&gt;
  ||'''[[#Event Handler Functions|Event Handler Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|roll_event|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_flood_event|dot||integer|direction|integer|step|CellID|cell}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_deadly_air_event|dot||integer|step}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_explosion_event|dot||integer|step|integer|size|integer|dice|integer|[content]}}&lt;br /&gt;
{{moddef|list|setup_explosion_event|dot||integer|step|Table|size|integer|dice|integer|[content]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_targeted_event|dot||integer|step}}&lt;br /&gt;
  |}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Basic Cell Handling Functions ===&lt;br /&gt;
;{{moddef|desc|get_cell|dot|integer|Coord|loc}}&lt;br /&gt;
Gets the Numeric ID (NID) of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''loc'': The coordinates of the cell to get.&lt;br /&gt;
:'''Returns''': The NID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_cell_id|dot|string|Coord|loc}}&lt;br /&gt;
Gets the ID of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''loc'': The coordinates of the cell to get.&lt;br /&gt;
:'''Returns''': The string ID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fast_get_cell|dot|integer|integer|x|integer|y}}&lt;br /&gt;
Gets the Numeric ID (NID) of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''x'': The X position of the cell to get.&lt;br /&gt;
:''y'': The Y position of the cell to get.&lt;br /&gt;
:'''Returns''': The NID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_cell|dot||Coord|loc|CellID|what}}&lt;br /&gt;
Assigns a [[Modding:Cell|cell]] to a map position.&lt;br /&gt;
:''loc'': The coordinates of the position to set.&lt;br /&gt;
:''what'': The ID of the cell to assign to the position.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fast_set_cell|dot||integer|x|integer|y|integer|what}}&lt;br /&gt;
Assigns a [[Modding:Cell|cell]] to a map position.&lt;br /&gt;
:''x'': The X position of the cell to set.&lt;br /&gt;
:''y'': The Y position of the cell to set.&lt;br /&gt;
:''what'': The NID (string IDs not allowed) of the cell to assign to the position.&lt;br /&gt;
----&lt;br /&gt;
=== Map Checking Functions ===&lt;br /&gt;
;{{moddef|desc|around|dot|integer|Coord|where|CellSet|what}}&lt;br /&gt;
Checks the positions adjacent to a location (including diagonally adjacent) and returns the number of cells that match one of the indicated cell IDs.&lt;br /&gt;
:''where'': The coordinate to check around.  The coordinate sent in this way is not checked, only adjacent cells are.&lt;br /&gt;
:''what'': The cell(s) to check for.&lt;br /&gt;
:'''Returns''': The number of cells (from 0 to 8) that matched one of the ''what'' cell IDs.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|cross_around|dot|integer|Coord|where|CellSet|what}}&lt;br /&gt;
Checks the positions adjacent to a location (but not diagonally adjacent) and returns the number of cells that match one of the indicated cell IDs.&lt;br /&gt;
:''where'': The coordinates to check around.  The coordinate sent in this way is not checked, only adjacent cells are.&lt;br /&gt;
:''what'': The cell(s) to check for.&lt;br /&gt;
:'''Returns''': The number of cells (from 0 to 4) that matched one of the ''what'' cell IDs.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty|dot|boolean|Coord|where|Flags|reqs}}&lt;br /&gt;
Checks to see if the indicated cell is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The position to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the position cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the map position does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if the cell satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty_area|dot|boolean|Area|where|Flags|reqs}}&lt;br /&gt;
Checks to see if the indicated area is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The area to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the area cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the area does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if every cell in the area satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scan|dot|boolean|Area|where|CellID|good}}&lt;br /&gt;
Checks to see if the entire area is filled with a certain cell.&lt;br /&gt;
:''where'': The area to check.&lt;br /&gt;
:''good'': The cell to look for.&lt;br /&gt;
:'''Returns''': ''True'' if all cells in the area are ''good'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
=== Map Searching Functions ===&lt;br /&gt;
;{{moddef|desc|drop_coord|dot|Coord|Coord|where|Flags|reqs}}&lt;br /&gt;
Finds the nearest &amp;quot;empty&amp;quot; coordinate to a given coordinate, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The coordinate to try.  If this coordinate is &amp;quot;empty&amp;quot;, this coordinate will be returned.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': The nearest coordinate the satisfies the criteria.  If the supplied coordinate meets the criteria, that coordinate will be returned.  If not a nearby, random, coordinate will be checked. &lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_coord|dot|Coord|CellSet|what|Area|[where]}}&lt;br /&gt;
Searches the map for the first coordinate containing one of the indicated cell IDs.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': The coordinates of the first position that contains one of the ''what'' cell IDs.  The map is checked row by row starting from the top, going from left to right across each row.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_coord|dot|Coord|Area|[where]}}&lt;br /&gt;
Searches for a random coordinate within the specified area.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the coordinate to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_random_coord|dot|Coord|CellSet|what|Area|[where]}}&lt;br /&gt;
Searches for a random coordinate within the specified area that contains one of the specified cell IDs.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''where'' : ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_empty_coord|dot|Coord|CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for the first &amp;quot;empty&amp;quot; coordinate containing one of the indicated cell IDs, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''reqs'':  A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': The coordinates of the first position that meets the supplied criteria.  The map is checked row by row starting from the top, going from left to right across each row.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_empty_coord|dot|Coord|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for a random coordinate that is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the random coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_random_empty_coord|dot|Coord|CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for a random &amp;quot;empty&amp;quot; coordinate containing one of the indicated cell IDs, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''reqs'':  A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the random coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_square|dot|Coord|CellSet|what}}&lt;br /&gt;
Searches for a random 3x3 area containing only specified cells.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:'''Returns''': The center coordinate of the random 3x3 area.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|safe_empty_coord|dot|Coord|Area|[where]}}&lt;br /&gt;
Searches for a random coordinate that meets certain predetermined criteria.&lt;br /&gt;
&lt;br /&gt;
The function will try to find a coordinate that does not contain a being, item, staircase, wall, harmful terrain, spawning restrictions (cells marked with LF_NOSPAWN), and is more than 5 spaces from the player (EF_NOBEINGS, EF_NOITEMS, EF_NOSTAIRS, EF_NOBLOCK, EF_NOHARM, EF_NOSPAWN, and EF_NOSAFE).  If a valid space isn't found, the function will ignore distance from the player (EF_NOSAFE).  If a valid space still can't be found, the function will ignore stairs and harmful terrain (EF_NOSTAIRS and EF_NOHARM).&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the initial pass to.  If a valid coordinate is not found within the area after ignoring stairs and harmful terrain, the search is restarted and expanded automatically to the entire map.  If omitted, the entire map will be searched.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|standard_empty_coord|dot|Coord}}&lt;br /&gt;
Searches for a random coordinate that meets certain predetermined criteria.&lt;br /&gt;
&lt;br /&gt;
The function will search for a coordinate that does not contain a being, item, staircase, wall, harmful terrain, or spawning restrictions (EF_NOBEINGS, EF_NOITEMS, EF_NOSTAIRS, EF_NOBLOCK, EF_NOHARM, and EF_NOSPAWN).&lt;br /&gt;
:'''Returns''': A random coordinate that meets the criteria.&lt;br /&gt;
----&lt;br /&gt;
=== Advanced Cell Handling Functions ===&lt;br /&gt;
;{{moddef|desc|fill|dot||CellID|what|Area|[where]}}&lt;br /&gt;
Fills an area of the map with a given cell.&lt;br /&gt;
:''what'': The cell to fill with.&lt;br /&gt;
:''where'': ''Optional.'' The area to fill with the cell.  If omitted, the entire map will be filled.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fill_pattern|dot||Area|where|boolean|horiz|string|Table|line1|Table|[line2]}}&lt;br /&gt;
Fills an area of the map with a pattern of cells.&lt;br /&gt;
:''where'': The area to fill.&lt;br /&gt;
:''horiz'': If ''True'', the pattern will fill each row left to right, then move to the next row down in the area.  If ''False'', the pattern will fill each column top to bottom, then move to the next column right in the area. &lt;br /&gt;
:''line1'': The pattern to fill with.  If the pattern is shorter than the area size, the pattern will loop.  The pattern does not restart at the end of a row or column.&lt;br /&gt;
:''line2'': ''Optional.'' If given, each time the end of row (if ''horiz'' is ''True'') or column (if ''horiz'' is ''False'') is reached, the function will switch to filling with the other pattern.  That is, the first row will use ''line1'' then the second will use ''line2'', then the third will use ''line1'' again, etc.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fill_edges|dot||CellID|what}}&lt;br /&gt;
Fills the edges of the map with the given cell.&lt;br /&gt;
:''what'': The cell to fill with.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|each|dot|Table|CellID|what|Area|[where]}}&lt;br /&gt;
Searches for a cell and returns a table containing every location it was found.&lt;br /&gt;
:''what'': The cell to search for.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.&lt;br /&gt;
:'''Returns''': A table containing a list of [[Modding:Coord|Coord]] objects.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_blood|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
Adds blood to the map or removes blood from it.&lt;br /&gt;
:''where'': ''Optional.'' The area to affect.  If omitted, the entire map will selected.&lt;br /&gt;
:''value'': ''Optional.'' ''True'' adds blood.  ''False'' removes it.  If omitted, the default is to add blood.&lt;br /&gt;
:''what'': ''Optional.'' If provided, only locations containing the given cell are affected.  If omitted, all cells in the area are affected.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_permanence|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
Makes cell permanent or removes their permanence.&lt;br /&gt;
:''where'': ''Optional.'' The area to affect.  If omitted, the entire map will be selected.&lt;br /&gt;
:''value'': ''Optional.'' ''True'' adds permanence.  ''False'' removes it.  If omitted, the default is to add permanence.&lt;br /&gt;
:''what'': ''Optional.'' If provided, only locations containing the given cell are affected.  If omitted, wall cells (which includes crate cells) are affected.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|cell_set|dot|Table|CellSet|cells}}&lt;br /&gt;
Creates a cell group.&lt;br /&gt;
:''cells'': A list of cells to add to the group.&lt;br /&gt;
:'''Returns''': A cell group table.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|restore_walls|dot||CellID|wallCell|boolean|keepFluids}}&lt;br /&gt;
Fixes the edge walls of the map.&lt;br /&gt;
:''wallCell'': The cell to fill the edge of the map with.&lt;br /&gt;
:''keepFluids'': ''True'' to maintain any fluid tiles on the edge of the map.  ''False'' to overwrite them.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|plot_line|dot||Coord|where|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
Splits an area into two at the indicated location.&lt;br /&gt;
:''where'': The starting point.&lt;br /&gt;
:''horiz'': ''True'' draws along the indicated X position of the ''where'' coordinate.  ''False'' draws along the indicated Y position of the ''where'' coordinate.&lt;br /&gt;
:''cell'': The cell that will be used to split the area.&lt;br /&gt;
:''block'': The cell(s) that block the line plotting.  The drawn line will stop before hitting a coordinate with one of these cells.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|plot_lines|dot||Coord|where|Area|larea|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
Splits an area into two at the indicated location.&lt;br /&gt;
:''where'': The starting point.&lt;br /&gt;
:''larea'': The boundaries of the line.  The line will not extend past the edge of the area.&lt;br /&gt;
:''horiz'': ''True'' draws along the indicated X position of the ''where'' coordinate.  ''False'' draws along the indicated Y position of the ''where'' coordinate.&lt;br /&gt;
:''cell'': The cell that will be used to split the area.&lt;br /&gt;
:''block'': The cell(s) that block the line plotting.  The drawn line will stop before hitting a coordinate with one of these cells.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scatter|dot||Area|where|CellID|good|CellID|fill|integer|count}}&lt;br /&gt;
Randomly places a certain cell around the map.&lt;br /&gt;
:''where'': The area to scatter the cell in.&lt;br /&gt;
:''good'': Only this locations with this cell will be changed by the function.&lt;br /&gt;
:''fill'': The cell to scatter around the area.&lt;br /&gt;
:''count'': The number to attempt to place.  If the chosen location is not ''good'', then it will not change it.  The final number placed may be less than ''count'' (or even 0), but never more.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scatter_blood|dot||Area|where|CellID|[good]|integer|count}}&lt;br /&gt;
Randomly adds blood in an area.&lt;br /&gt;
:''where'': The area to scatter blood in.&lt;br /&gt;
:''good'': ''Optional.'' If defined, only locations with this cell will have blood added.  If omitted, any location my have blood added.&lt;br /&gt;
:''count'': The number of attempts.  On each attempt, a random cell in the area will be chosen to have blood added.  The number of cell that will end up bloody may be less than ''count'' (or even 0), but never more.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scatter_put|dot||Area|where|Table|translation|string|tile|CellID|good|integer|count}}&lt;br /&gt;
Randomly adds a specified tile (a defined arrangement of cells) around the map.&lt;br /&gt;
:''where'': The area to scatter the tile in.  The tiles will only be placed in locations entirely within the area.&lt;br /&gt;
:''translation'': A table with to be used with the ''tile'' argument.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''tile'': A multi-line string, one row of the tile per line, that lays out the arrangment of the cells.  Refer to this (will be linked soon) for more information&lt;br /&gt;
:''good'': Only locations with this cell will be valid for the tile placement.  If any coordinates of the selected placement area are not ''good'', the tile will not be placed at that location.&lt;br /&gt;
:''count'': The number of tiles to try to place.  The placement will continue until this many have been placed, or 10,000 attempts have been made, whichever comes first.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|transmute|dot||CellID|to|CellSet|from|Area|[where]}}&lt;br /&gt;
Changes all of one cell on the map to another cell.&lt;br /&gt;
:''to'': The cell that will replace the existing cells.&lt;br /&gt;
:''from'': The cell(s) that will be replaced.&lt;br /&gt;
:''where'': ''Optional.'' If specified, only cells in the area are changed.  If omitted, the function will change cells across the entire map.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|transmute_marker|dot||Flag|marker|CellID|To|Area|[where]}}&lt;br /&gt;
Changes all positions on the map that have a specified LightFlag (a named constant starting with &amp;quot;LF&amp;quot;, no underscore) to another cell.&lt;br /&gt;
:''marker'': The LightFlag to check for.  Only cells with this flag will be changed.&lt;br /&gt;
:''to'': The cell that will replace the existing cells.&lt;br /&gt;
:''where'': ''Optional.'' If specified, only cells in the area are changed.  If omitted, the function will change cells across the entire map.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Tile Handling Functions ===&lt;br /&gt;
;{{moddef|desc|create_translation|dot|Table|Table|code}}&lt;br /&gt;
Parses a translation table.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''code'': The translation table.&lt;br /&gt;
:'''Returns''': A parsed translation table.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|tile_new|dot|Tile|string|map|Table|translation}}&lt;br /&gt;
Creates a new tile object.&lt;br /&gt;
:''map'': A multi-line string containing the arrangement of the tile using the ''translation'' to convert the characters to cells.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''translation'': A table with to be used with the ''map'' argument.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:'''Returns''': The new tile object.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|tile_place|dot||Coord|where|Tile|what}}&lt;br /&gt;
Places the cells of the tile on the map.&lt;br /&gt;
:''where'': The coordinate that the upper-left of the tile should reside at.&lt;br /&gt;
:''what'': The tile object that will be placed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_tile|dot||Table|translation|string|tile|integer|x|integer|y}}&lt;br /&gt;
Combines the tile_new and tile_place functions together, by placing a tile using a string and translation table.&lt;br /&gt;
:''translation'': A table with to be used with the ''tile'' argument.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''tile'': A multi-line string containing the arrangement of the tile using the ''translation'' to convert the characters to cells.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''x'': The X position that the tile will be placed at.&lt;br /&gt;
:''y'': The Y position that the tile will be placed at.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_dungen_tile|dot||Table|code|Tile|tile|Coord|where}}&lt;br /&gt;
Places an entire tile, including beings and items in the translation, on the map.&lt;br /&gt;
:''code'': The translation table.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''tile'': A multi-line string containing the arrangement of the tile using the ''translation'' to convert the characters to cells and indicate the positions of the beings and items.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''where'': The coordinate the tile will be placed at.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_symmetry_quad|dot||string|tile|Table|translation}}&lt;br /&gt;
Takes a tile object and places it in all four corners.  The tile object should be setup for the upper left corner and will be mirrored to the other corners.  The tiles are placed one space from the map edge.&lt;br /&gt;
:''tile'': A multi-line string containing the arrangement of the tile using the ''translation'' to convert the characters to cells and indicate the positions of the beings and items.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''translation'': The translation table.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_proto_map|dot||Coord|where|string|proto_map|string|proto_key|Table|code}}&lt;br /&gt;
Creates a map using multiple tile sets.&lt;br /&gt;
:''where'': The upper-left position of the map where the tiles will be layout from.&lt;br /&gt;
:''proto_map'': A string indicating the arrangement of the different pieces of the map.  e.g., &amp;quot;ABCD&amp;quot;, will lay out 4 different tiles with A on the far left and D on the far right.&lt;br /&gt;
:''proto_key'': A table containing, for each character in ''proto_map'', a table of the possible tiles for that section.&lt;br /&gt;
:''code'': The translation table for all the tile possibilities.  Refer to this (will be linked soon) for more information.  All tiles use the same translation table.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Room Handling Functions ===&lt;br /&gt;
;{{moddef|desc|add_room|dot||Area|room|string|[class]}}&lt;br /&gt;
Marks an area that can become a special room.&lt;br /&gt;
:''room'': The area of the room.  This includes the walls.&lt;br /&gt;
:''class'': ''Optional.'' A string used to denote which room generators can be used on this room.  If omitted, the class used is &amp;quot;closed&amp;quot;.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|add_rooms|dot}}&lt;br /&gt;
Finds all the areas that can be rooms on a map and adds them to the appropriate meta-map tables.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_room|dot|Room|integer|min_size|integer|max_x|integer|max_y|integer|max_area|string|class}}&lt;br /&gt;
Selects a room given certain criteria.&lt;br /&gt;
:''min_size'': The smallest X and Y dimensions the room can be.&lt;br /&gt;
:''max_x'': The maximum width of the room.&lt;br /&gt;
:''max_y'': The maximum height of the room.&lt;br /&gt;
:''max_area'': The largest area the room can be.&lt;br /&gt;
:''class'': ''Optional.'' The string denoting which room classes are valid for this room generator.  If omitted, &amp;quot;any&amp;quot; is used, which does not restrict the selection of rooms.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_endpoints|dot|integer, integer|Coord|where|boolean|horiz|CellSet|what}}&lt;br /&gt;
Finds the ends of a line of cells.&lt;br /&gt;
:''where'': The starting coordinate.&lt;br /&gt;
:''horiz'': ''True'' checks horizontally.  ''False'' checks vertically.&lt;br /&gt;
:''what'': The cell(s) that make up the line to check.  The functions stops at the first cell '''not''' in this list.&lt;br /&gt;
:'''Returns''': Two integers.  If ''horiz'' is ''True'', these are the X positions the line stops at.  If ''horiz'' is ''False'', these are the Y positions the line stops at.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|handle_rooms|dot||integer|count|boolean|no_monsters}}&lt;br /&gt;
Runs the rooms selection and setup process for a map.&lt;br /&gt;
:''count'': The number of rooms to attempt to place.&lt;br /&gt;
:''no_monsters'': ''True'' will exclude room generators that place monsters.  ''False'' will not.&lt;br /&gt;
----&lt;br /&gt;
=== Generation Algorithm Functions ===&lt;br /&gt;
;{{moddef|desc|run_drunkard_walk|dot||Area|where|Coord|start|integer|steps|CellID|fill|CellSet|[ignore]|boolean|[stop_at_edge]|Area|where}}&lt;br /&gt;
Runs an algorithm that walks to random adjacent spaces.&lt;br /&gt;
:''where'': The area that the algorithm will run in.  If the algorithm tries to leave the area, it will stop early or will be pushed back in the area (''stop_at_edge'' will determine which of these happen).&lt;br /&gt;
:''start'': The location the algorithm will begin at.&lt;br /&gt;
:''steps'': The number of steps the algorithm will take.  The number of spaces covered by the algorithm will be at most this number.&lt;br /&gt;
:''fill'': The cell that will be placed at each location the algorithm hits.&lt;br /&gt;
:''ignore'': ''Optional.'' If specified, the algorithm will not place the ''fill'' cell in any location that has one of the cell(s) specified.  If omitted, no locations are ignored.&lt;br /&gt;
:''stop_at_edge'': ''Optional.'' If ''True'', the algorithm will end early if it moves past the end of the area.  If ''False'', the algorithm will clamp to the area (any moves to outside the area get moved back in the area).  If omitted, the default is to clamp.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drunkard_walks|dot||integer|amount|integer|steps|CellID|fill|CellSet|[ignore]|boolean|[stop_at_edge]|Area|[where]}}&lt;br /&gt;
Runs multiple &amp;quot;drunken walk&amp;quot; algorithms.&lt;br /&gt;
:''amount'': The number of times to perform the algorithm.&lt;br /&gt;
:''steps'': The number of steps each run of the algorithm will take.  The number of spaces covered by the algorithm will be at most the ''amount'' times the number of ''steps''.&lt;br /&gt;
:''fill'': The cell that will be placed at each location the algorithm hits.&lt;br /&gt;
:''ignore'': ''Optional.'' If specified, the algorithm will not place the ''fill'' cell in any location that has one of the cell(s) specified.  If omitted, no locations are ignored.&lt;br /&gt;
:''stop_at_edge'': ''Optional.'' If ''True'', the algorithm will end early if it moves past the end of the area.  If ''False'', the algorithm will clamp to the area (any moves to outside the area get moved back in the area).  If omitted, the default is to clamp.&lt;br /&gt;
:''where'': ''Optional.'' The area the algorithm will run in.  If the algorithm tries to leave the area, it will stop early or will be pushed back in the area (''stop_at_edge'' will determine which of these happen).  If omitted, the default is entire area minus the very edge.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|contd_drunkard_walks|dot||integer|amount|integer|steps|CellID|fill|CellSet|edges1|CellSet|edges2|CellSet|[ignore]|boolean|[stop_at_edge]}}&lt;br /&gt;
Runs multiple &amp;quot;drunken walk&amp;quot; algorithms starting at a space that doesn't have certain cells around it.&lt;br /&gt;
:''amount'': The number of times to perform the algorithm.&lt;br /&gt;
:''steps'': The number of steps each run of the algorithm will take.  The number of spaces covered by the algorithm will be at most the ''amount'' times the number of ''steps''.&lt;br /&gt;
:''fill'': The cell that will be placed at each location the algorithm hits.&lt;br /&gt;
:''edges1'': The algorithm will not start on a space with a cell listed here next to it.&lt;br /&gt;
:''edges2'': The algorithm will not start on a space with a cell listed here next to it.&lt;br /&gt;
:''ignore'': ''Optional.'' If specified, the algorithm will not place the ''fill'' cell in any location that has one of the cell(s) specified.  If omitted, no locations are ignored.&lt;br /&gt;
:''stop_at_edge'': ''Optional.'' If ''True'', the algorithm will end early if it moves past the end of the area.  If ''False'', the algorithm will clamp to the area (any moves to outside the area get moved back in the area).  If omitted, the default is to clamp.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|warehouse_fill|dot||CellID|fill|Area|where|integer|[size]|integer|[count]|integer|[special_chance]|CellID|[special]}}&lt;br /&gt;
Fills an area with random squares of cells.&lt;br /&gt;
:''fill'': The cell(s) to use for each square.  If a list is given, one is chosen at random for each square.&lt;br /&gt;
:''where'': The area to fill.&lt;br /&gt;
:''size'': ''Optional.'' The size of the squares to use. If omitted, the default is 2.&lt;br /&gt;
:''count'': ''Optional.'' The number of attempts. If omitted, the default is 50.&lt;br /&gt;
:''special_chance'': ''Optional.'' A number indicating the probability of using a special list of cells to fill the square with instead of the ''fill'' list.  The roll used for the chance is based on the ''size'' parameter.  A number from 1 to (100 * ''size'') is chosen for each square and if the roll is less than the special_chance number, the ''special'' cell set is used to fill the square instead. If omitted, all squares will be filled from the ''fill'' set.&lt;br /&gt;
:''special'': ''Optional.'' The list of cells to use if the special set is to be used, based on ''special_chance''. If omitted, all squares will be filled from the ''fill'' set.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_blob|dot||Coord|start|integer|size|CellID|cell}}&lt;br /&gt;
Fills an area by expanding to random edge coordinates.&lt;br /&gt;
:''start'': The position to start the blob at.&lt;br /&gt;
:''size'': The number of spaces to expand the blob to.&lt;br /&gt;
:''cell'': The cell to fill the blob area with.&lt;br /&gt;
----&lt;br /&gt;
=== Generator Helper Functions ===&lt;br /&gt;
;{{moddef|desc|roll_pair|dot|&amp;lt;value&amp;gt;, &amp;lt;value&amp;gt;|Table|list}}&lt;br /&gt;
Takes a list of values of any type and returns two different values randomly from the list.&lt;br /&gt;
:''list'': The list to choose from.&lt;br /&gt;
:'''Returns''': Two different values.  If the list only contains one choice, it will be returned, but only once.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|being_weight|dot}}&lt;br /&gt;
Gets the total danger level for the current dungeon level.&lt;br /&gt;
'''Returns''': The danger level for the current dungeon level.  This value is calcuated using the current difficulty and ''level.danger_level''.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|item_amount|dot}}&lt;br /&gt;
Gets the number of items to drop for the current dungeon level.&lt;br /&gt;
'''Returns''': The number of items to drop for the current dungeon level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|horiz_river|dot||CellID|cell|integer|width|boolean|[bridge]}}&lt;br /&gt;
Places a horizontal river on the map.&lt;br /&gt;
:''cell'': The cell to use for the river.  It does not have to be a fluid cell.&lt;br /&gt;
:''width'': The width of the river.&lt;br /&gt;
:''bridge'': ''Optional.'' If ''True'', a 2 space wide bridge will be placed at a random coordinate on the river.  If ''False'', no bridge will be placed.  If omitted, the default is to not place a bridge.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|vert_river|dot||CellID|cell|integer|width|boolean|bridge|integer|[position]}}&lt;br /&gt;
;{{moddef|desc|vert_river|dot||CellID|cell|integer|width|boolean|bridge|Coord|[position]}}&lt;br /&gt;
Places a vertical river on the map.&lt;br /&gt;
:''cell'': The cell to use for the river.  It does not have to be a fluid cell.&lt;br /&gt;
:''width'': The width of the river.&lt;br /&gt;
:''bridge'': ''Optional.'' If ''True'', a 2 space wide bridge will be placed at a random coordinate on the river.  If ''False'', no bridge will be placed.  If omitted, the default is to not place a bridge.&lt;br /&gt;
:: NOTE: Because of a bug, a bridge will always be placed on the river, even if this value is set to ''False'' or omitted.&lt;br /&gt;
:''position'':  A coordinate or an integer.  If an integer is supplied, this is the X position of the river's left edge.  If a coordinate is supplied, the river will start at this coordinate.  If omitted, the river's left edge will be selected from between X = 19 to 58.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_rivers|dot||boolean|allow_horiz|boolean|allow_more}}&lt;br /&gt;
Creates rivers based on normal DoomRL river generation.&lt;br /&gt;
:''allow_horiz'': ''True'' allows horizontal rivers to be generated.  ''False'' will prevent the generation of horizontal rivers.&lt;br /&gt;
:''allow_more'': ''True'' allows multiple vertical rivers.  ''False'' will prevent more than one vertical river from being placed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_fluids|dot||Area|[where]}}&lt;br /&gt;
Creates fluids based on normal DoomRL fluid generation.&lt;br /&gt;
:''where'': ''Optional.'' The area to generate fluids in.  If omitted, the area used will be the entire map minus the very edge.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_barrels|dot}}&lt;br /&gt;
Creates barrels based on normal DoomRL barrel generation.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_stairs|dot}}&lt;br /&gt;
Creates the normal staircase based on normal DoomRL stair generation.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_special_stairs|dot}}&lt;br /&gt;
Creates the special staircase based on normal DoomRL special stair generation.  Whether a special staircase is placed depends on the level.special_exit value.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_player|dot}}&lt;br /&gt;
Places the player on a random empty space.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|run|dot||Generator|gen}}&lt;br /&gt;
Runs a generator object.  These are stored in the generators table.&lt;br /&gt;
:''gen'': The generator object to run.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|reset|dot}}&lt;br /&gt;
Resets the map.&lt;br /&gt;
----&lt;br /&gt;
=== Dungeon Generation Functions ===&lt;br /&gt;
;{{moddef|desc|generate_tiled|dot}}&lt;br /&gt;
Creates a tiled dungeon, also known as a &amp;quot;normal&amp;quot; dungeon.  This only creates the layout, it does not place beings, items, stairs, barrels, or the player.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|maze_dungeon|dot||CellID|floor|CellID|wall|integer|granularity|integer|tries|integer|min_size|integer|max_size}}&lt;br /&gt;
Creates a maze dungeon.  This only creates the layout, it does not place beings, items, stairs, barrels, or the player.&lt;br /&gt;
:''floor'': The cell to use for the floor of the maze.&lt;br /&gt;
:''wall'': The cell to use for the wall of the maze.&lt;br /&gt;
:''granularity'': This denotes the size of the maze's paths.&lt;br /&gt;
:''tries'': Number of attempts to place a new wall in the maze.&lt;br /&gt;
:''min_size'': The smallest possible size of a wall.&lt;br /&gt;
:''max_size'': The largest possible size of a wall.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_caves_dungeon|dot}}&lt;br /&gt;
Runs the generation script for the cave dungeon.  This is an all inclusive function, it also places all beings and items.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_caves_2_dungeon|dot}}&lt;br /&gt;
Runs the generation script for the cave-city dungeon.  This is an all inclusive function, it also places all beings and items.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_lava_dungeon|dot}}&lt;br /&gt;
Runs the generation script for the lava dungeon.  This is an all inclusive function, it also places all beings and items.&lt;br /&gt;
----&lt;br /&gt;
=== Event Handler Functions ===&lt;br /&gt;
;{{moddef|desc|roll_event|dot}}&lt;br /&gt;
Picks an event from the events table and sets it up.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_flood_event|dot||integer|direction|integer|step|CellID|cell}}&lt;br /&gt;
Runs the setup script for the flood event.&lt;br /&gt;
:''direction'': Use 1 to flood from the left.  Use -1 to flood from the right.&lt;br /&gt;
:''step'': Number of turns (0.1 second intervals) between each flood step.&lt;br /&gt;
:''cell'': The cell to flood with.  This does not have to be a fluid cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_deadly_air_event|dot||integer|step}}&lt;br /&gt;
Runs the setup script for the deadly air event.&lt;br /&gt;
:''step'': Number of turns between each &amp;quot;chill&amp;quot; (loss of HP).&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_explosion_event|dot||integer|step|integer|size|integer|dice|integer|[content]}}&lt;br /&gt;
;{{moddef|desc|setup_explosion_event|dot||integer|step|Table|size|integer|dice|integer|[content]}}&lt;br /&gt;
Runs the setup script for the explosion event.&lt;br /&gt;
:''step'': Number of turns between each explosion.&lt;br /&gt;
:''size'': Either a number or a table of two numbers.  Indicates the size of each explosion.  If a table is supplied, the size is randomly chosen between the range supplied each time an explosion is created.&lt;br /&gt;
:''dice'': Number of d6 dice to use for the damage roll.&lt;br /&gt;
:''content'': ''Optional.'' The content to place in any space where the damage to a space is more than 20 points.  If omitted, nothing will placed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_targeted_event|dot||integer|step}}&lt;br /&gt;
Runs the setup script for the targeting event.&lt;br /&gt;
:''step'': Number of turns between each monster teleport.&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Modding:generator_API</id>
		<title>Modding:generator API</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Modding:generator_API"/>
				<updated>2013-04-25T19:22:51Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: /* Advanced Cell Handling Functions */ Missed a space.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''This page is currently under construction.''&lt;br /&gt;
&lt;br /&gt;
The generator holds all of the ever-present functions used to create the random maps in DoomRL. It also contains a variety of helper functions, many of them useful if not vital to the creation of intricate and meticulous game design.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
Please note that the type &amp;quot;integer&amp;quot; indicates an numeric value without a decimal part.  It does not indicate the range of acceptable values.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellID&amp;quot; may be the numeric or string ID of a cell.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellSet&amp;quot; may be the numeric ID, string ID, or a list of numeric and/or string IDs.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;Flags&amp;quot; expects a list of [[Modding:Constants|flag constants]] of the indicated type.  &lt;br /&gt;
&lt;br /&gt;
An argument name in [square brackets] is an optional one.  The function description will indicate how the function operates if it is omitted.&lt;br /&gt;
&lt;br /&gt;
=== Generator API Function List ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 2px solid darkred; border-spacing: 0; font-size: 90%; margin: 0.25em 0.5em;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: darkred; color: yellow; font-size: 120%; text-align: center&amp;quot;|'''Generator Interface - Functions'''&lt;br /&gt;
 {{Table2Col&lt;br /&gt;
  |es=background: #333; &lt;br /&gt;
  |c1=font-weight:bold; text-align:right; vertical-align:top; padding:0px 2px;&lt;br /&gt;
  |c2=padding:0px 2px;&lt;br /&gt;
  ||'''[[#Basic Cell Handling Functions|Basic Cell Handling Functions]]'''&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|get_cell|dot||Coord|loc}}&lt;br /&gt;
  |{{modarg|string}}|{{moddef|list|get_cell_id|dot||Coord|loc}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|fast_get_cell|dot||integer|x|integer|y}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_cell|dot||Coord|loc|CellID|what}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fast_set_cell|dot||integer|x|integer|y|integer|what}}&lt;br /&gt;
  ||'''[[#Map Checking Functions|Map Checking Functions]]'''&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|around|dot||Coord|where|CellSet|what}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|cross_around|dot||Coord|where|CellSet|what}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty|dot||Coord|where|Flags|reqs}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty_area|dot||Area|where|Flags|reqs}}  &lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|scan|dot||Area|where|CellID|good}}&lt;br /&gt;
  ||'''[[#Map Searching Functions|Map Searching Functions]]'''&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|drop_coord|dot||Coord|where|Flags|reqs}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_coord|dot||CellSet|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|random_coord|dot||Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_random_coord|dot||CellSet|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_empty_coord|dot||CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|random_empty_coord|dot||Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_random_empty_coord|dot||CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|safe_empty_coord|dot||Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|standard_empty_coord|dot}}&lt;br /&gt;
  ||'''[[#Advanced Cell Handling Functions|Advanced Cell Handling Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fill|dot||CellID|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fill_pattern|dot||Area|where|boolean|horiz|Table|line1|Table|[line2]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fill_edges|dot||CellID|what}}&lt;br /&gt;
  |{{modarg|Table}}|{{moddef|list|each|dot||CellID|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_blood|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_permanence|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
  |{{modarg|Table}}|{{moddef|list|cell_set|dot||CellSet|cells}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|restore_walls|dot||CellID|wallCell|boolean|keepFluids}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|plot_line|dot||Coord|where|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|plot_lines|dot||Coord|where|Area|larea|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|scatter|dot||Area|where|CellID|good|CellID|fill|integer|count}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|scatter_blood|dot||Area|where|CellID|[good]|integer|count}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|scatter_put|dot||Area|where|Table|translation|string|tile|CellID|good|integer|count}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|transmute|dot||CellID|to|CellSet|from|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|transmute_marker|dot||Flag|marker|CellID|To|Area|[where]}}&lt;br /&gt;
  ||'''[[#Tile Handling Functions|Tile Handling Functions]]'''&lt;br /&gt;
  |{{modarg|Table}}|{{moddef|list|create_translation|dot||Table|code}}&lt;br /&gt;
  |{{modarg|Tile}}|{{moddef|list|tile_new|dot||string|map|Table|translation}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|tile_place|dot||Coord|where|Tile|what}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_tile|dot||Table|translation|string|tile|integer|x|integer|y}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_dungen_tile|dot||Table|code|Tile|tile|Coord|where}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_symmetry_quad|dot||string|tile|Table|translation}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_proto_map|dot||Coord|where|string|proto_map|string|proto_key|Table|code}}&lt;br /&gt;
  ||'''[[#Room Handling Functions|Room Handling Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|add_room|dot||Area|room|string|[class]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|add_rooms|dot}}&lt;br /&gt;
  |{{modarg|Room}}|{{moddef|list|get_room|dot||integer|min_size|integer|max_x|integer|max_y|integer|max_area|string|[class]}}&lt;br /&gt;
  |{{modarg|integer, integer}}|{{moddef|list|get_endpoints|dot||Coord|where|boolean|horiz|CellSet|what}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|handle_rooms|dot||integer|count|boolean|no_monsters}}&lt;br /&gt;
  ||'''[[#Generation Algorithm Functions|Generation Algorithm Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|run_drunkard_walk|dot||Area|where|Coord|start|integer|steps|CellID|fill|CellSet|[ignore]|boolean|[stop_at_edge]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|drunkard_walks|dot||integer|amount|integer|steps|CellID|fill|CellSet|[ignore]|boolean|[stop_at_edge]|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|contd_drunkard_walks|dot||integer|amount|integer|steps|CellID|fill|CellSet|edges1|CellSet|edges2|CellSet|[ignore]|boolean|[stop_at_edge]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|warehouse_fill|dot||CellSet|fill|Area|where|integer|size|integer|count|integer|special_chance|CellSet|special}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_blob|dot||Coord|start|integer|size|CellID|cell}}&lt;br /&gt;
  ||'''[[#Generator Helper Functions|Generator Helper Functions]]'''&lt;br /&gt;
  |{{modarg|&amp;lt;value&amp;gt;, &amp;lt;value&amp;gt;}}|{{moddef|list|roll_pair|dot||Table|list}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|being_weight|dot}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|item_amount|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|horiz_river|dot||CellID|cell|integer|width|boolean|[bridge]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|vert_river|dot||CellID|cell|integer|width|boolean|bridge|integer|position}}&lt;br /&gt;
{{moddef|list|vert_river|dot||CellID|cell|integer|width|boolean|bridge|Coord|position}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_rivers|dot||boolean|allow_horiz|boolean|allow_more}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_fluids|dot||Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_barrels|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_stairs|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_special_stairs|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_player|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|run|dot||Generator|gen}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|reset|dot}}&lt;br /&gt;
  ||'''[[#Dungeon Generation Functions|Dungeon Generation Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_tiled|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|maze_dungeon|dot||CellID|floor|CellID|wall|integer|granularity|integer|tries|integer|min_size|integer|max_size}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_caves_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_caves_2_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_lava_dungeon|dot}}&lt;br /&gt;
  ||'''[[#Event Handler Functions|Event Handler Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|roll_event|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_flood_event|dot||integer|direction|integer|step|CellID|cell}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_deadly_air_event|dot||integer|step}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_explosion_event|dot||integer|step|integer|size|integer|dice|integer|[content]}}&lt;br /&gt;
{{moddef|list|setup_explosion_event|dot||integer|step|Table|size|integer|dice|integer|[content]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_targeted_event|dot||integer|step}}&lt;br /&gt;
  |}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Basic Cell Handling Functions ===&lt;br /&gt;
;{{moddef|desc|get_cell|dot|integer|Coord|loc}}&lt;br /&gt;
Gets the Numeric ID (NID) of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''loc'': The coordinates of the cell to get.&lt;br /&gt;
:'''Returns''': The NID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_cell_id|dot|string|Coord|loc}}&lt;br /&gt;
Gets the ID of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''loc'': The coordinates of the cell to get.&lt;br /&gt;
:'''Returns''': The string ID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fast_get_cell|dot|integer|integer|x|integer|y}}&lt;br /&gt;
Gets the Numeric ID (NID) of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''x'': The X position of the cell to get.&lt;br /&gt;
:''y'': The Y position of the cell to get.&lt;br /&gt;
:'''Returns''': The NID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_cell|dot||Coord|loc|CellID|what}}&lt;br /&gt;
Assigns a [[Modding:Cell|cell]] to a map position.&lt;br /&gt;
:''loc'': The coordinates of the position to set.&lt;br /&gt;
:''what'': The ID of the cell to assign to the position.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fast_set_cell|dot||integer|x|integer|y|integer|what}}&lt;br /&gt;
Assigns a [[Modding:Cell|cell]] to a map position.&lt;br /&gt;
:''x'': The X position of the cell to set.&lt;br /&gt;
:''y'': The Y position of the cell to set.&lt;br /&gt;
:''what'': The NID (string IDs not allowed) of the cell to assign to the position.&lt;br /&gt;
----&lt;br /&gt;
=== Map Checking Functions ===&lt;br /&gt;
;{{moddef|desc|around|dot|integer|Coord|where|CellSet|what}}&lt;br /&gt;
Checks the positions adjacent to a location (including diagonally adjacent) and returns the number of cells that match one of the indicated cell IDs.&lt;br /&gt;
:''where'': The coordinate to check around.  The coordinate sent in this way is not checked, only adjacent cells are.&lt;br /&gt;
:''what'': The cell(s) to check for.&lt;br /&gt;
:'''Returns''': The number of cells (from 0 to 8) that matched one of the ''what'' cell IDs.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|cross_around|dot|integer|Coord|where|CellSet|what}}&lt;br /&gt;
Checks the positions adjacent to a location (but not diagonally adjacent) and returns the number of cells that match one of the indicated cell IDs.&lt;br /&gt;
:''where'': The coordinates to check around.  The coordinate sent in this way is not checked, only adjacent cells are.&lt;br /&gt;
:''what'': The cell(s) to check for.&lt;br /&gt;
:'''Returns''': The number of cells (from 0 to 4) that matched one of the ''what'' cell IDs.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty|dot|boolean|Coord|where|Flags|reqs}}&lt;br /&gt;
Checks to see if the indicated cell is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The position to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the position cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the map position does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if the cell satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty_area|dot|boolean|Area|where|Flags|reqs}}&lt;br /&gt;
Checks to see if the indicated area is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The area to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the area cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the area does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if every cell in the area satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scan|dot|boolean|Area|where|CellID|good}}&lt;br /&gt;
Checks to see if the entire area is filled with a certain cell.&lt;br /&gt;
:''where'': The area to check.&lt;br /&gt;
:''good'': The cell to look for.&lt;br /&gt;
:'''Returns''': ''True'' if all cells in the area are ''good'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
=== Map Searching Functions ===&lt;br /&gt;
;{{moddef|desc|drop_coord|dot|Coord|Coord|where|Flags|reqs}}&lt;br /&gt;
Finds the nearest &amp;quot;empty&amp;quot; coordinate to a given coordinate, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The coordinate to try.  If this coordinate is &amp;quot;empty&amp;quot;, this coordinate will be returned.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': The nearest coordinate the satisfies the criteria.  If the supplied coordinate meets the criteria, that coordinate will be returned.  If not a nearby, random, coordinate will be checked. &lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_coord|dot|Coord|CellSet|what|Area|[where]}}&lt;br /&gt;
Searches the map for the first coordinate containing one of the indicated cell IDs.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': The coordinates of the first position that contains one of the ''what'' cell IDs.  The map is checked row by row starting from the top, going from left to right across each row.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_coord|dot|Coord|Area|[where]}}&lt;br /&gt;
Searches for a random coordinate within the specified area.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the coordinate to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_random_coord|dot|Coord|CellSet|what|Area|[where]}}&lt;br /&gt;
Searches for a random coordinate within the specified area that contains one of the specified cell IDs.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''where'' : ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_empty_coord|dot|Coord|CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for the first &amp;quot;empty&amp;quot; coordinate containing one of the indicated cell IDs, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''reqs'':  A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': The coordinates of the first position that meets the supplied criteria.  The map is checked row by row starting from the top, going from left to right across each row.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_empty_coord|dot|Coord|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for a random coordinate that is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the random coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_random_empty_coord|dot|Coord|CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for a random &amp;quot;empty&amp;quot; coordinate containing one of the indicated cell IDs, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''reqs'':  A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the random coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_square|dot|Coord|CellSet|what}}&lt;br /&gt;
Searches for a random 3x3 area containing only specified cells.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:'''Returns''': The center coordinate of the random 3x3 area.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|safe_empty_coord|dot|Coord|Area|[where]}}&lt;br /&gt;
Searches for a random coordinate that meets certain predetermined criteria.&lt;br /&gt;
&lt;br /&gt;
The function will try to find a coordinate that does not contain a being, item, staircase, wall, harmful terrain, spawning restrictions (cells marked with LF_NOSPAWN), and is more than 5 spaces from the player (EF_NOBEINGS, EF_NOITEMS, EF_NOSTAIRS, EF_NOBLOCK, EF_NOHARM, EF_NOSPAWN, and EF_NOSAFE).  If a valid space isn't found, the function will ignore distance from the player (EF_NOSAFE).  If a valid space still can't be found, the function will ignore stairs and harmful terrain (EF_NOSTAIRS and EF_NOHARM).&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the initial pass to.  If a valid coordinate is not found within the area after ignoring stairs and harmful terrain, the search is restarted and expanded automatically to the entire map.  If omitted, the entire map will be searched.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|standard_empty_coord|dot|Coord}}&lt;br /&gt;
Searches for a random coordinate that meets certain predetermined criteria.&lt;br /&gt;
&lt;br /&gt;
The function will search for a coordinate that does not contain a being, item, staircase, wall, harmful terrain, or spawning restrictions (EF_NOBEINGS, EF_NOITEMS, EF_NOSTAIRS, EF_NOBLOCK, EF_NOHARM, and EF_NOSPAWN).&lt;br /&gt;
:'''Returns''': A random coordinate that meets the criteria.&lt;br /&gt;
----&lt;br /&gt;
=== Advanced Cell Handling Functions ===&lt;br /&gt;
;{{moddef|desc|fill|dot||CellID|what|Area|[where]}}&lt;br /&gt;
Fills an area of the map with a given cell.&lt;br /&gt;
:''what'': The cell to fill with.&lt;br /&gt;
:''where'': ''Optional.'' The area to fill with the cell.  If omitted, the entire map will be filled.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fill_pattern|dot||Area|where|boolean|horiz|string|Table|line1|Table|[line2]}}&lt;br /&gt;
Fills an area of the map with a pattern of cells.&lt;br /&gt;
:''where'': The area to fill.&lt;br /&gt;
:''horiz'': If ''True'', the pattern will fill each row left to right, then move to the next row down in the area.  If ''False'', the pattern will fill each column top to bottom, then move to the next column right in the area. &lt;br /&gt;
:''line1'': The pattern to fill with.  If the pattern is shorter than the area size, the pattern will loop.  The pattern does not restart at the end of a row or column.&lt;br /&gt;
:''line2'': ''Optional.'' If given, each time the end of row (if ''horiz'' is ''True'') or column (if ''horiz'' is ''False'') is reached, the function will switch to filling with the other pattern.  That is, the first row will use ''line1'' then the second will use ''line2'', then the third will use ''line1'' again, etc.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fill_edges|dot||CellID|what}}&lt;br /&gt;
Fills the edges of the map with the given cell.&lt;br /&gt;
:''what'': The cell to fill with.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|each|dot|Table|CellID|what|Area|[where]}}&lt;br /&gt;
Searches for a cell and returns a table containing every location it was found.&lt;br /&gt;
:''what'': The cell to search for.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.&lt;br /&gt;
:'''Returns''': A table containing a list of [[Modding:Coord|Coord]] objects.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_blood|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
Adds blood to the map or removes blood from it.&lt;br /&gt;
:''where'': ''Optional.'' The area to affect.  If omitted, the entire map will selected.&lt;br /&gt;
:''value'': ''Optional.'' ''True'' adds blood.  ''False'' removes it.  If omitted, the default is to add blood.&lt;br /&gt;
:''what'': ''Optional.'' If provided, only locations containing the given cell are affected.  If omitted, all cells in the area are affected.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_permanence|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
Makes cell permanent or removes their permanence.&lt;br /&gt;
:''where'': ''Optional.'' The area to affect.  If omitted, the entire map will be selected.&lt;br /&gt;
:''value'': ''Optional.'' ''True'' adds permanence.  ''False'' removes it.  If omitted, the default is to add permanence.&lt;br /&gt;
:''what'': ''Optional.'' If provided, only locations containing the given cell are affected.  If omitted, wall cells (which includes crate cells) are affected.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|cell_set|dot|Table|CellSet|cells}}&lt;br /&gt;
Creates a cell group.&lt;br /&gt;
:''cells'': A list of cells to add to the group.&lt;br /&gt;
:'''Returns''': A cell group table.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|restore_walls|dot||CellID|wallCell|boolean|keepFluids}}&lt;br /&gt;
Fixes the edge walls of the map.&lt;br /&gt;
:''wallCell'': The cell to fill the edge of the map with.&lt;br /&gt;
:''keepFluids'': ''True'' to maintain any fluid tiles on the edge of the map.  ''False'' to overwrite them.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|plot_line|dot||Coord|where|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
Splits an area into two at the indicated location.&lt;br /&gt;
:''where'': The starting point.&lt;br /&gt;
:''horiz'': ''True'' draws along the indicated X position of the ''where'' coordinate.  ''False'' draws along the indicated Y position of the ''where'' coordinate.&lt;br /&gt;
:''cell'': The cell that will be used to split the area.&lt;br /&gt;
:''block'': The cell(s) that block the line plotting.  The drawn line will stop before hitting a coordinate with one of these cells.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|plot_lines|dot||Coord|where|Area|larea|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
Splits an area into two at the indicated location.&lt;br /&gt;
:''where'': The starting point.&lt;br /&gt;
:''larea'': The boundaries of the line.  The line will not extend past the edge of the area.&lt;br /&gt;
:''horiz'': ''True'' draws along the indicated X position of the ''where'' coordinate.  ''False'' draws along the indicated Y position of the ''where'' coordinate.&lt;br /&gt;
:''cell'': The cell that will be used to split the area.&lt;br /&gt;
:''block'': The cell(s) that block the line plotting.  The drawn line will stop before hitting a coordinate with one of these cells.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scatter|dot||Area|where|CellID|good|CellID|fill|integer|count}}&lt;br /&gt;
Randomly places a certain cell around the map.&lt;br /&gt;
:''where'': The area to scatter the cell in.&lt;br /&gt;
:''good'': Only this locations with this cell will be changed by the function.&lt;br /&gt;
:''fill'': The cell to scatter around the area.&lt;br /&gt;
:''count'': The number to attempt to place.  If the chosen location is not ''good'', then it will not cha it.  The final number placed may be less than ''count'' (or even 0), but never more.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scatter_blood|dot||Area|where|CellID|[good]|integer|count}}&lt;br /&gt;
Randomly adds blood in an area.&lt;br /&gt;
:''where'': The area to scatter blood in.&lt;br /&gt;
:''good'': ''Optional.'' If defined, only locations with this cell will have blood added.  If omitted, any location my have blood added.&lt;br /&gt;
:''count'': The number of attempts.  On each attempt, a random cell in the area will be chosen to have blood added.  The number of cell that will end up bloody may be less than ''count'' (or even 0), but never more.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scatter_put|dot||Area|where|Table|translation|string|tile|CellID|good|integer|count}}&lt;br /&gt;
Randomly adds a specified tile (a defined arrangement of cells) around the map.&lt;br /&gt;
:''where'': The area to scatter the tile in.  The tiles will only be placed in locations entirely within the area.&lt;br /&gt;
:''translation'': A table with to be used with the ''tile'' argument.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''tile'': A multi-line string, one row of the tile per line, that lays out the arrangment of the cells.  Refer to this (will be linked soon) for more information&lt;br /&gt;
:''good'': Only locations with this cell will be valid for the tile placement.  If any coordinates of the selected placement area are not ''good'', the tile will not be placed at that location.&lt;br /&gt;
:''count'': The number of tiles to try to place.  The placement will continue until this many have been placed, or 10,000 attempts have been made, whichever comes first.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|transmute|dot||CellID|to|CellSet|from|Area|[where]}}&lt;br /&gt;
Changes all of one cell on the map to another cell.&lt;br /&gt;
:''to'': The cell that will replace the existing cells.&lt;br /&gt;
:''from'': The cell(s) that will be replaced.&lt;br /&gt;
:''where'': ''Optional.'' If specified, only cells in the area are changed.  If omitted, the function will change cells across the entire map.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|transmute_marker|dot||Flag|marker|CellID|To|Area|[where]}}&lt;br /&gt;
Changes all positions on the map that have a specified LightFlag (a named constant starting with &amp;quot;LF&amp;quot;, no underscore) to another cell.&lt;br /&gt;
:''marker'': The LightFlag to check for.  Only cells with this flag will be changed.&lt;br /&gt;
:''to'': The cell that will replace the existing cells.&lt;br /&gt;
:''where'': ''Optional.'' If specified, only cells in the area are changed.  If omitted, the function will change cells across the entire map.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Tile Handling Functions ===&lt;br /&gt;
;{{moddef|desc|create_translation|dot|Table|Table|code}}&lt;br /&gt;
Parses a translation table.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''code'': The translation table.&lt;br /&gt;
:'''Returns''': A parsed translation table.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|tile_new|dot|Tile|string|map|Table|translation}}&lt;br /&gt;
Creates a new tile object.&lt;br /&gt;
:''map'': A multi-line string containing the arrangement of the tile using the ''translation'' to convert the characters to cells.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''translation'': A table with to be used with the ''map'' argument.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:'''Returns''': The new tile object.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|tile_place|dot||Coord|where|Tile|what}}&lt;br /&gt;
Places the cells of the tile on the map.&lt;br /&gt;
:''where'': The coordinate that the upper-left of the tile should reside at.&lt;br /&gt;
:''what'': The tile object that will be placed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_tile|dot||Table|translation|string|tile|integer|x|integer|y}}&lt;br /&gt;
Combines the tile_new and tile_place functions together, by placing a tile using a string and translation table.&lt;br /&gt;
:''translation'': A table with to be used with the ''tile'' argument.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''tile'': A multi-line string containing the arrangement of the tile using the ''translation'' to convert the characters to cells.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''x'': The X position that the tile will be placed at.&lt;br /&gt;
:''y'': The Y position that the tile will be placed at.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_dungen_tile|dot||Table|code|Tile|tile|Coord|where}}&lt;br /&gt;
Places an entire tile, including beings and items in the translation, on the map.&lt;br /&gt;
:''code'': The translation table.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''tile'': A multi-line string containing the arrangement of the tile using the ''translation'' to convert the characters to cells and indicate the positions of the beings and items.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''where'': The coordinate the tile will be placed at.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_symmetry_quad|dot||string|tile|Table|translation}}&lt;br /&gt;
Takes a tile object and places it in all four corners.  The tile object should be setup for the upper left corner and will be mirrored to the other corners.  The tiles are placed one space from the map edge.&lt;br /&gt;
:''tile'': A multi-line string containing the arrangement of the tile using the ''translation'' to convert the characters to cells and indicate the positions of the beings and items.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''translation'': The translation table.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_proto_map|dot||Coord|where|string|proto_map|string|proto_key|Table|code}}&lt;br /&gt;
Creates a map using multiple tile sets.&lt;br /&gt;
:''where'': The upper-left position of the map where the tiles will be layout from.&lt;br /&gt;
:''proto_map'': A string indicating the arrangement of the different pieces of the map.  e.g., &amp;quot;ABCD&amp;quot;, will lay out 4 different tiles with A on the far left and D on the far right.&lt;br /&gt;
:''proto_key'': A table containing, for each character in ''proto_map'', a table of the possible tiles for that section.&lt;br /&gt;
:''code'': The translation table for all the tile possibilities.  Refer to this (will be linked soon) for more information.  All tiles use the same translation table.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Room Handling Functions ===&lt;br /&gt;
;{{moddef|desc|add_room|dot||Area|room|string|[class]}}&lt;br /&gt;
Marks an area that can become a special room.&lt;br /&gt;
:''room'': The area of the room.  This includes the walls.&lt;br /&gt;
:''class'': ''Optional.'' A string used to denote which room generators can be used on this room.  If omitted, the class used is &amp;quot;closed&amp;quot;.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|add_rooms|dot}}&lt;br /&gt;
Finds all the areas that can be rooms on a map and adds them to the appropriate meta-map tables.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_room|dot|Room|integer|min_size|integer|max_x|integer|max_y|integer|max_area|string|class}}&lt;br /&gt;
Selects a room given certain criteria.&lt;br /&gt;
:''min_size'': The smallest X and Y dimensions the room can be.&lt;br /&gt;
:''max_x'': The maximum width of the room.&lt;br /&gt;
:''max_y'': The maximum height of the room.&lt;br /&gt;
:''max_area'': The largest area the room can be.&lt;br /&gt;
:''class'': ''Optional.'' The string denoting which room classes are valid for this room generator.  If omitted, &amp;quot;any&amp;quot; is used, which does not restrict the selection of rooms.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_endpoints|dot|integer, integer|Coord|where|boolean|horiz|CellSet|what}}&lt;br /&gt;
Finds the ends of a line of cells.&lt;br /&gt;
:''where'': The starting coordinate.&lt;br /&gt;
:''horiz'': ''True'' checks horizontally.  ''False'' checks vertically.&lt;br /&gt;
:''what'': The cell(s) that make up the line to check.  The functions stops at the first cell '''not''' in this list.&lt;br /&gt;
:'''Returns''': Two integers.  If ''horiz'' is ''True'', these are the X positions the line stops at.  If ''horiz'' is ''False'', these are the Y positions the line stops at.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|handle_rooms|dot||integer|count|boolean|no_monsters}}&lt;br /&gt;
Runs the rooms selection and setup process for a map.&lt;br /&gt;
:''count'': The number of rooms to attempt to place.&lt;br /&gt;
:''no_monsters'': ''True'' will exclude room generators that place monsters.  ''False'' will not.&lt;br /&gt;
----&lt;br /&gt;
=== Generation Algorithm Functions ===&lt;br /&gt;
;{{moddef|desc|run_drunkard_walk|dot||Area|where|Coord|start|integer|steps|CellID|fill|CellSet|[ignore]|boolean|[stop_at_edge]|Area|where}}&lt;br /&gt;
Runs an algorithm that walks to random adjacent spaces.&lt;br /&gt;
:''where'': The area that the algorithm will run in.  If the algorithm tries to leave the area, it will stop early or will be pushed back in the area (''stop_at_edge'' will determine which of these happen).&lt;br /&gt;
:''start'': The location the algorithm will begin at.&lt;br /&gt;
:''steps'': The number of steps the algorithm will take.  The number of spaces covered by the algorithm will be at most this number.&lt;br /&gt;
:''fill'': The cell that will be placed at each location the algorithm hits.&lt;br /&gt;
:''ignore'': ''Optional.'' If specified, the algorithm will not place the ''fill'' cell in any location that has one of the cell(s) specified.  If omitted, no locations are ignored.&lt;br /&gt;
:''stop_at_edge'': ''Optional.'' If ''True'', the algorithm will end early if it moves past the end of the area.  If ''False'', the algorithm will clamp to the area (any moves to outside the area get moved back in the area).  If omitted, the default is to clamp.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drunkard_walks|dot||integer|amount|integer|steps|CellID|fill|CellSet|[ignore]|boolean|[stop_at_edge]|Area|[where]}}&lt;br /&gt;
Runs multiple &amp;quot;drunken walk&amp;quot; algorithms.&lt;br /&gt;
:''amount'': The number of times to perform the algorithm.&lt;br /&gt;
:''steps'': The number of steps each run of the algorithm will take.  The number of spaces covered by the algorithm will be at most the ''amount'' times the number of ''steps''.&lt;br /&gt;
:''fill'': The cell that will be placed at each location the algorithm hits.&lt;br /&gt;
:''ignore'': ''Optional.'' If specified, the algorithm will not place the ''fill'' cell in any location that has one of the cell(s) specified.  If omitted, no locations are ignored.&lt;br /&gt;
:''stop_at_edge'': ''Optional.'' If ''True'', the algorithm will end early if it moves past the end of the area.  If ''False'', the algorithm will clamp to the area (any moves to outside the area get moved back in the area).  If omitted, the default is to clamp.&lt;br /&gt;
:''where'': ''Optional.'' The area the algorithm will run in.  If the algorithm tries to leave the area, it will stop early or will be pushed back in the area (''stop_at_edge'' will determine which of these happen).  If omitted, the default is entire area minus the very edge.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|contd_drunkard_walks|dot||integer|amount|integer|steps|CellID|fill|CellSet|edges1|CellSet|edges2|CellSet|[ignore]|boolean|[stop_at_edge]}}&lt;br /&gt;
Runs multiple &amp;quot;drunken walk&amp;quot; algorithms starting at a space that doesn't have certain cells around it.&lt;br /&gt;
:''amount'': The number of times to perform the algorithm.&lt;br /&gt;
:''steps'': The number of steps each run of the algorithm will take.  The number of spaces covered by the algorithm will be at most the ''amount'' times the number of ''steps''.&lt;br /&gt;
:''fill'': The cell that will be placed at each location the algorithm hits.&lt;br /&gt;
:''edges1'': The algorithm will not start on a space with a cell listed here next to it.&lt;br /&gt;
:''edges2'': The algorithm will not start on a space with a cell listed here next to it.&lt;br /&gt;
:''ignore'': ''Optional.'' If specified, the algorithm will not place the ''fill'' cell in any location that has one of the cell(s) specified.  If omitted, no locations are ignored.&lt;br /&gt;
:''stop_at_edge'': ''Optional.'' If ''True'', the algorithm will end early if it moves past the end of the area.  If ''False'', the algorithm will clamp to the area (any moves to outside the area get moved back in the area).  If omitted, the default is to clamp.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|warehouse_fill|dot||CellID|fill|Area|where|integer|[size]|integer|[count]|integer|[special_chance]|CellID|[special]}}&lt;br /&gt;
Fills an area with random squares of cells.&lt;br /&gt;
:''fill'': The cell(s) to use for each square.  If a list is given, one is chosen at random for each square.&lt;br /&gt;
:''where'': The area to fill.&lt;br /&gt;
:''size'': ''Optional.'' The size of the squares to use. If omitted, the default is 2.&lt;br /&gt;
:''count'': ''Optional.'' The number of attempts. If omitted, the default is 50.&lt;br /&gt;
:''special_chance'': ''Optional.'' A number indicating the probability of using a special list of cells to fill the square with instead of the ''fill'' list.  The roll used for the chance is based on the ''size'' parameter.  A number from 1 to (100 * ''size'') is chosen for each square and if the roll is less than the special_chance number, the ''special'' cell set is used to fill the square instead. If omitted, all squares will be filled from the ''fill'' set.&lt;br /&gt;
:''special'': ''Optional.'' The list of cells to use if the special set is to be used, based on ''special_chance''. If omitted, all squares will be filled from the ''fill'' set.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_blob|dot||Coord|start|integer|size|CellID|cell}}&lt;br /&gt;
Fills an area by expanding to random edge coordinates.&lt;br /&gt;
:''start'': The position to start the blob at.&lt;br /&gt;
:''size'': The number of spaces to expand the blob to.&lt;br /&gt;
:''cell'': The cell to fill the blob area with.&lt;br /&gt;
----&lt;br /&gt;
=== Generator Helper Functions ===&lt;br /&gt;
;{{moddef|desc|roll_pair|dot|&amp;lt;value&amp;gt;, &amp;lt;value&amp;gt;|Table|list}}&lt;br /&gt;
Takes a list of values of any type and returns two different values randomly from the list.&lt;br /&gt;
:''list'': The list to choose from.&lt;br /&gt;
:'''Returns''': Two different values.  If the list only contains one choice, it will be returned, but only once.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|being_weight|dot}}&lt;br /&gt;
Gets the total danger level for the current dungeon level.&lt;br /&gt;
'''Returns''': The danger level for the current dungeon level.  This value is calcuated using the current difficulty and ''level.danger_level''.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|item_amount|dot}}&lt;br /&gt;
Gets the number of items to drop for the current dungeon level.&lt;br /&gt;
'''Returns''': The number of items to drop for the current dungeon level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|horiz_river|dot||CellID|cell|integer|width|boolean|[bridge]}}&lt;br /&gt;
Places a horizontal river on the map.&lt;br /&gt;
:''cell'': The cell to use for the river.  It does not have to be a fluid cell.&lt;br /&gt;
:''width'': The width of the river.&lt;br /&gt;
:''bridge'': ''Optional.'' If ''True'', a 2 space wide bridge will be placed at a random coordinate on the river.  If ''False'', no bridge will be placed.  If omitted, the default is to not place a bridge.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|vert_river|dot||CellID|cell|integer|width|boolean|bridge|integer|[position]}}&lt;br /&gt;
;{{moddef|desc|vert_river|dot||CellID|cell|integer|width|boolean|bridge|Coord|[position]}}&lt;br /&gt;
Places a vertical river on the map.&lt;br /&gt;
:''cell'': The cell to use for the river.  It does not have to be a fluid cell.&lt;br /&gt;
:''width'': The width of the river.&lt;br /&gt;
:''bridge'': ''Optional.'' If ''True'', a 2 space wide bridge will be placed at a random coordinate on the river.  If ''False'', no bridge will be placed.  If omitted, the default is to not place a bridge.&lt;br /&gt;
:: NOTE: Because of a bug, a bridge will always be placed on the river, even if this value is set to ''False'' or omitted.&lt;br /&gt;
:''position'':  A coordinate or an integer.  If an integer is supplied, this is the X position of the river's left edge.  If a coordinate is supplied, the river will start at this coordinate.  If omitted, the river's left edge will be selected from between X = 19 to 58.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_rivers|dot||boolean|allow_horiz|boolean|allow_more}}&lt;br /&gt;
Creates rivers based on normal DoomRL river generation.&lt;br /&gt;
:''allow_horiz'': ''True'' allows horizontal rivers to be generated.  ''False'' will prevent the generation of horizontal rivers.&lt;br /&gt;
:''allow_more'': ''True'' allows multiple vertical rivers.  ''False'' will prevent more than one vertical river from being placed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_fluids|dot||Area|[where]}}&lt;br /&gt;
Creates fluids based on normal DoomRL fluid generation.&lt;br /&gt;
:''where'': ''Optional.'' The area to generate fluids in.  If omitted, the area used will be the entire map minus the very edge.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_barrels|dot}}&lt;br /&gt;
Creates barrels based on normal DoomRL barrel generation.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_stairs|dot}}&lt;br /&gt;
Creates the normal staircase based on normal DoomRL stair generation.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_special_stairs|dot}}&lt;br /&gt;
Creates the special staircase based on normal DoomRL special stair generation.  Whether a special staircase is placed depends on the level.special_exit value.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_player|dot}}&lt;br /&gt;
Places the player on a random empty space.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|run|dot||Generator|gen}}&lt;br /&gt;
Runs a generator object.  These are stored in the generators table.&lt;br /&gt;
:''gen'': The generator object to run.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|reset|dot}}&lt;br /&gt;
Resets the map.&lt;br /&gt;
----&lt;br /&gt;
=== Dungeon Generation Functions ===&lt;br /&gt;
;{{moddef|desc|generate_tiled|dot}}&lt;br /&gt;
Creates a tiled dungeon, also known as a &amp;quot;normal&amp;quot; dungeon.  This only creates the layout, it does not place beings, items, stairs, barrels, or the player.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|maze_dungeon|dot||CellID|floor|CellID|wall|integer|granularity|integer|tries|integer|min_size|integer|max_size}}&lt;br /&gt;
Creates a maze dungeon.  This only creates the layout, it does not place beings, items, stairs, barrels, or the player.&lt;br /&gt;
:''floor'': The cell to use for the floor of the maze.&lt;br /&gt;
:''wall'': The cell to use for the wall of the maze.&lt;br /&gt;
:''granularity'': This denotes the size of the maze's paths.&lt;br /&gt;
:''tries'': Number of attempts to place a new wall in the maze.&lt;br /&gt;
:''min_size'': The smallest possible size of a wall.&lt;br /&gt;
:''max_size'': The largest possible size of a wall.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_caves_dungeon|dot}}&lt;br /&gt;
Runs the generation script for the cave dungeon.  This is an all inclusive function, it also places all beings and items.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_caves_2_dungeon|dot}}&lt;br /&gt;
Runs the generation script for the cave-city dungeon.  This is an all inclusive function, it also places all beings and items.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_lava_dungeon|dot}}&lt;br /&gt;
Runs the generation script for the lava dungeon.  This is an all inclusive function, it also places all beings and items.&lt;br /&gt;
----&lt;br /&gt;
=== Event Handler Functions ===&lt;br /&gt;
;{{moddef|desc|roll_event|dot}}&lt;br /&gt;
Picks an event from the events table and sets it up.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_flood_event|dot||integer|direction|integer|step|CellID|cell}}&lt;br /&gt;
Runs the setup script for the flood event.&lt;br /&gt;
:''direction'': Use 1 to flood from the left.  Use -1 to flood from the right.&lt;br /&gt;
:''step'': Number of turns (0.1 second intervals) between each flood step.&lt;br /&gt;
:''cell'': The cell to flood with.  This does not have to be a fluid cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_deadly_air_event|dot||integer|step}}&lt;br /&gt;
Runs the setup script for the deadly air event.&lt;br /&gt;
:''step'': Number of turns between each &amp;quot;chill&amp;quot; (loss of HP).&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_explosion_event|dot||integer|step|integer|size|integer|dice|integer|[content]}}&lt;br /&gt;
;{{moddef|desc|setup_explosion_event|dot||integer|step|Table|size|integer|dice|integer|[content]}}&lt;br /&gt;
Runs the setup script for the explosion event.&lt;br /&gt;
:''step'': Number of turns between each explosion.&lt;br /&gt;
:''size'': Either a number or a table of two numbers.  Indicates the size of each explosion.  If a table is supplied, the size is randomly chosen between the range supplied each time an explosion is created.&lt;br /&gt;
:''dice'': Number of d6 dice to use for the damage roll.&lt;br /&gt;
:''content'': ''Optional.'' The content to place in any space where the damage to a space is more than 20 points.  If omitted, nothing will placed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_targeted_event|dot||integer|step}}&lt;br /&gt;
Runs the setup script for the targeting event.&lt;br /&gt;
:''step'': Number of turns between each monster teleport.&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Modding:generator_API</id>
		<title>Modding:generator API</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Modding:generator_API"/>
				<updated>2013-04-25T19:21:44Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: /* Tile Handling Functions */ Missed an open brace.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''This page is currently under construction.''&lt;br /&gt;
&lt;br /&gt;
The generator holds all of the ever-present functions used to create the random maps in DoomRL. It also contains a variety of helper functions, many of them useful if not vital to the creation of intricate and meticulous game design.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
Please note that the type &amp;quot;integer&amp;quot; indicates an numeric value without a decimal part.  It does not indicate the range of acceptable values.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellID&amp;quot; may be the numeric or string ID of a cell.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellSet&amp;quot; may be the numeric ID, string ID, or a list of numeric and/or string IDs.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;Flags&amp;quot; expects a list of [[Modding:Constants|flag constants]] of the indicated type.  &lt;br /&gt;
&lt;br /&gt;
An argument name in [square brackets] is an optional one.  The function description will indicate how the function operates if it is omitted.&lt;br /&gt;
&lt;br /&gt;
=== Generator API Function List ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 2px solid darkred; border-spacing: 0; font-size: 90%; margin: 0.25em 0.5em;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: darkred; color: yellow; font-size: 120%; text-align: center&amp;quot;|'''Generator Interface - Functions'''&lt;br /&gt;
 {{Table2Col&lt;br /&gt;
  |es=background: #333; &lt;br /&gt;
  |c1=font-weight:bold; text-align:right; vertical-align:top; padding:0px 2px;&lt;br /&gt;
  |c2=padding:0px 2px;&lt;br /&gt;
  ||'''[[#Basic Cell Handling Functions|Basic Cell Handling Functions]]'''&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|get_cell|dot||Coord|loc}}&lt;br /&gt;
  |{{modarg|string}}|{{moddef|list|get_cell_id|dot||Coord|loc}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|fast_get_cell|dot||integer|x|integer|y}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_cell|dot||Coord|loc|CellID|what}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fast_set_cell|dot||integer|x|integer|y|integer|what}}&lt;br /&gt;
  ||'''[[#Map Checking Functions|Map Checking Functions]]'''&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|around|dot||Coord|where|CellSet|what}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|cross_around|dot||Coord|where|CellSet|what}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty|dot||Coord|where|Flags|reqs}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty_area|dot||Area|where|Flags|reqs}}  &lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|scan|dot||Area|where|CellID|good}}&lt;br /&gt;
  ||'''[[#Map Searching Functions|Map Searching Functions]]'''&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|drop_coord|dot||Coord|where|Flags|reqs}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_coord|dot||CellSet|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|random_coord|dot||Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_random_coord|dot||CellSet|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_empty_coord|dot||CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|random_empty_coord|dot||Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_random_empty_coord|dot||CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|safe_empty_coord|dot||Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|standard_empty_coord|dot}}&lt;br /&gt;
  ||'''[[#Advanced Cell Handling Functions|Advanced Cell Handling Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fill|dot||CellID|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fill_pattern|dot||Area|where|boolean|horiz|Table|line1|Table|[line2]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fill_edges|dot||CellID|what}}&lt;br /&gt;
  |{{modarg|Table}}|{{moddef|list|each|dot||CellID|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_blood|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_permanence|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
  |{{modarg|Table}}|{{moddef|list|cell_set|dot||CellSet|cells}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|restore_walls|dot||CellID|wallCell|boolean|keepFluids}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|plot_line|dot||Coord|where|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|plot_lines|dot||Coord|where|Area|larea|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|scatter|dot||Area|where|CellID|good|CellID|fill|integer|count}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|scatter_blood|dot||Area|where|CellID|[good]|integer|count}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|scatter_put|dot||Area|where|Table|translation|string|tile|CellID|good|integer|count}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|transmute|dot||CellID|to|CellSet|from|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|transmute_marker|dot||Flag|marker|CellID|To|Area|[where]}}&lt;br /&gt;
  ||'''[[#Tile Handling Functions|Tile Handling Functions]]'''&lt;br /&gt;
  |{{modarg|Table}}|{{moddef|list|create_translation|dot||Table|code}}&lt;br /&gt;
  |{{modarg|Tile}}|{{moddef|list|tile_new|dot||string|map|Table|translation}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|tile_place|dot||Coord|where|Tile|what}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_tile|dot||Table|translation|string|tile|integer|x|integer|y}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_dungen_tile|dot||Table|code|Tile|tile|Coord|where}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_symmetry_quad|dot||string|tile|Table|translation}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_proto_map|dot||Coord|where|string|proto_map|string|proto_key|Table|code}}&lt;br /&gt;
  ||'''[[#Room Handling Functions|Room Handling Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|add_room|dot||Area|room|string|[class]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|add_rooms|dot}}&lt;br /&gt;
  |{{modarg|Room}}|{{moddef|list|get_room|dot||integer|min_size|integer|max_x|integer|max_y|integer|max_area|string|[class]}}&lt;br /&gt;
  |{{modarg|integer, integer}}|{{moddef|list|get_endpoints|dot||Coord|where|boolean|horiz|CellSet|what}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|handle_rooms|dot||integer|count|boolean|no_monsters}}&lt;br /&gt;
  ||'''[[#Generation Algorithm Functions|Generation Algorithm Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|run_drunkard_walk|dot||Area|where|Coord|start|integer|steps|CellID|fill|CellSet|[ignore]|boolean|[stop_at_edge]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|drunkard_walks|dot||integer|amount|integer|steps|CellID|fill|CellSet|[ignore]|boolean|[stop_at_edge]|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|contd_drunkard_walks|dot||integer|amount|integer|steps|CellID|fill|CellSet|edges1|CellSet|edges2|CellSet|[ignore]|boolean|[stop_at_edge]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|warehouse_fill|dot||CellSet|fill|Area|where|integer|size|integer|count|integer|special_chance|CellSet|special}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_blob|dot||Coord|start|integer|size|CellID|cell}}&lt;br /&gt;
  ||'''[[#Generator Helper Functions|Generator Helper Functions]]'''&lt;br /&gt;
  |{{modarg|&amp;lt;value&amp;gt;, &amp;lt;value&amp;gt;}}|{{moddef|list|roll_pair|dot||Table|list}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|being_weight|dot}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|item_amount|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|horiz_river|dot||CellID|cell|integer|width|boolean|[bridge]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|vert_river|dot||CellID|cell|integer|width|boolean|bridge|integer|position}}&lt;br /&gt;
{{moddef|list|vert_river|dot||CellID|cell|integer|width|boolean|bridge|Coord|position}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_rivers|dot||boolean|allow_horiz|boolean|allow_more}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_fluids|dot||Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_barrels|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_stairs|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_special_stairs|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_player|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|run|dot||Generator|gen}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|reset|dot}}&lt;br /&gt;
  ||'''[[#Dungeon Generation Functions|Dungeon Generation Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_tiled|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|maze_dungeon|dot||CellID|floor|CellID|wall|integer|granularity|integer|tries|integer|min_size|integer|max_size}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_caves_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_caves_2_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_lava_dungeon|dot}}&lt;br /&gt;
  ||'''[[#Event Handler Functions|Event Handler Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|roll_event|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_flood_event|dot||integer|direction|integer|step|CellID|cell}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_deadly_air_event|dot||integer|step}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_explosion_event|dot||integer|step|integer|size|integer|dice|integer|[content]}}&lt;br /&gt;
{{moddef|list|setup_explosion_event|dot||integer|step|Table|size|integer|dice|integer|[content]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_targeted_event|dot||integer|step}}&lt;br /&gt;
  |}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Basic Cell Handling Functions ===&lt;br /&gt;
;{{moddef|desc|get_cell|dot|integer|Coord|loc}}&lt;br /&gt;
Gets the Numeric ID (NID) of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''loc'': The coordinates of the cell to get.&lt;br /&gt;
:'''Returns''': The NID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_cell_id|dot|string|Coord|loc}}&lt;br /&gt;
Gets the ID of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''loc'': The coordinates of the cell to get.&lt;br /&gt;
:'''Returns''': The string ID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fast_get_cell|dot|integer|integer|x|integer|y}}&lt;br /&gt;
Gets the Numeric ID (NID) of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''x'': The X position of the cell to get.&lt;br /&gt;
:''y'': The Y position of the cell to get.&lt;br /&gt;
:'''Returns''': The NID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_cell|dot||Coord|loc|CellID|what}}&lt;br /&gt;
Assigns a [[Modding:Cell|cell]] to a map position.&lt;br /&gt;
:''loc'': The coordinates of the position to set.&lt;br /&gt;
:''what'': The ID of the cell to assign to the position.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fast_set_cell|dot||integer|x|integer|y|integer|what}}&lt;br /&gt;
Assigns a [[Modding:Cell|cell]] to a map position.&lt;br /&gt;
:''x'': The X position of the cell to set.&lt;br /&gt;
:''y'': The Y position of the cell to set.&lt;br /&gt;
:''what'': The NID (string IDs not allowed) of the cell to assign to the position.&lt;br /&gt;
----&lt;br /&gt;
=== Map Checking Functions ===&lt;br /&gt;
;{{moddef|desc|around|dot|integer|Coord|where|CellSet|what}}&lt;br /&gt;
Checks the positions adjacent to a location (including diagonally adjacent) and returns the number of cells that match one of the indicated cell IDs.&lt;br /&gt;
:''where'': The coordinate to check around.  The coordinate sent in this way is not checked, only adjacent cells are.&lt;br /&gt;
:''what'': The cell(s) to check for.&lt;br /&gt;
:'''Returns''': The number of cells (from 0 to 8) that matched one of the ''what'' cell IDs.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|cross_around|dot|integer|Coord|where|CellSet|what}}&lt;br /&gt;
Checks the positions adjacent to a location (but not diagonally adjacent) and returns the number of cells that match one of the indicated cell IDs.&lt;br /&gt;
:''where'': The coordinates to check around.  The coordinate sent in this way is not checked, only adjacent cells are.&lt;br /&gt;
:''what'': The cell(s) to check for.&lt;br /&gt;
:'''Returns''': The number of cells (from 0 to 4) that matched one of the ''what'' cell IDs.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty|dot|boolean|Coord|where|Flags|reqs}}&lt;br /&gt;
Checks to see if the indicated cell is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The position to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the position cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the map position does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if the cell satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty_area|dot|boolean|Area|where|Flags|reqs}}&lt;br /&gt;
Checks to see if the indicated area is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The area to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the area cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the area does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if every cell in the area satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scan|dot|boolean|Area|where|CellID|good}}&lt;br /&gt;
Checks to see if the entire area is filled with a certain cell.&lt;br /&gt;
:''where'': The area to check.&lt;br /&gt;
:''good'': The cell to look for.&lt;br /&gt;
:'''Returns''': ''True'' if all cells in the area are ''good'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
=== Map Searching Functions ===&lt;br /&gt;
;{{moddef|desc|drop_coord|dot|Coord|Coord|where|Flags|reqs}}&lt;br /&gt;
Finds the nearest &amp;quot;empty&amp;quot; coordinate to a given coordinate, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The coordinate to try.  If this coordinate is &amp;quot;empty&amp;quot;, this coordinate will be returned.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': The nearest coordinate the satisfies the criteria.  If the supplied coordinate meets the criteria, that coordinate will be returned.  If not a nearby, random, coordinate will be checked. &lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_coord|dot|Coord|CellSet|what|Area|[where]}}&lt;br /&gt;
Searches the map for the first coordinate containing one of the indicated cell IDs.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': The coordinates of the first position that contains one of the ''what'' cell IDs.  The map is checked row by row starting from the top, going from left to right across each row.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_coord|dot|Coord|Area|[where]}}&lt;br /&gt;
Searches for a random coordinate within the specified area.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the coordinate to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_random_coord|dot|Coord|CellSet|what|Area|[where]}}&lt;br /&gt;
Searches for a random coordinate within the specified area that contains one of the specified cell IDs.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''where'' : ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_empty_coord|dot|Coord|CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for the first &amp;quot;empty&amp;quot; coordinate containing one of the indicated cell IDs, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''reqs'':  A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': The coordinates of the first position that meets the supplied criteria.  The map is checked row by row starting from the top, going from left to right across each row.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_empty_coord|dot|Coord|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for a random coordinate that is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the random coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_random_empty_coord|dot|Coord|CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for a random &amp;quot;empty&amp;quot; coordinate containing one of the indicated cell IDs, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''reqs'':  A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the random coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_square|dot|Coord|CellSet|what}}&lt;br /&gt;
Searches for a random 3x3 area containing only specified cells.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:'''Returns''': The center coordinate of the random 3x3 area.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|safe_empty_coord|dot|Coord|Area|[where]}}&lt;br /&gt;
Searches for a random coordinate that meets certain predetermined criteria.&lt;br /&gt;
&lt;br /&gt;
The function will try to find a coordinate that does not contain a being, item, staircase, wall, harmful terrain, spawning restrictions (cells marked with LF_NOSPAWN), and is more than 5 spaces from the player (EF_NOBEINGS, EF_NOITEMS, EF_NOSTAIRS, EF_NOBLOCK, EF_NOHARM, EF_NOSPAWN, and EF_NOSAFE).  If a valid space isn't found, the function will ignore distance from the player (EF_NOSAFE).  If a valid space still can't be found, the function will ignore stairs and harmful terrain (EF_NOSTAIRS and EF_NOHARM).&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the initial pass to.  If a valid coordinate is not found within the area after ignoring stairs and harmful terrain, the search is restarted and expanded automatically to the entire map.  If omitted, the entire map will be searched.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|standard_empty_coord|dot|Coord}}&lt;br /&gt;
Searches for a random coordinate that meets certain predetermined criteria.&lt;br /&gt;
&lt;br /&gt;
The function will search for a coordinate that does not contain a being, item, staircase, wall, harmful terrain, or spawning restrictions (EF_NOBEINGS, EF_NOITEMS, EF_NOSTAIRS, EF_NOBLOCK, EF_NOHARM, and EF_NOSPAWN).&lt;br /&gt;
:'''Returns''': A random coordinate that meets the criteria.&lt;br /&gt;
----&lt;br /&gt;
=== Advanced Cell Handling Functions ===&lt;br /&gt;
;{{moddef|desc|fill|dot||CellID|what|Area|[where]}}&lt;br /&gt;
Fills an area of the map with a given cell.&lt;br /&gt;
:''what'': The cell to fill with.&lt;br /&gt;
:''where'': ''Optional.'' The area to fill with the cell.  If omitted, the entire map will be filled.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fill_pattern|dot||Area|where|boolean|horiz|string|Table|line1|Table|[line2]}}&lt;br /&gt;
Fills an area of the map with a pattern of cells.&lt;br /&gt;
:''where'': The area to fill.&lt;br /&gt;
:''horiz'': If ''True'', the pattern will fill each row left to right, then move to the next row down in the area.  If ''False'', the pattern will fill each column top to bottom, then move to the next column right in the area. &lt;br /&gt;
:''line1'': The pattern to fill with.  If the pattern is shorter than the area size, the pattern will loop.  The pattern does not restart at the end of a row or column.&lt;br /&gt;
:''line2'': ''Optional.'' If given, each time the end of row (if ''horiz'' is ''True'') or column (if ''horiz'' is ''False'') is reached, the function will switch to filling with the other pattern.  That is, the first row will use ''line1'' then the second will use ''line2'', then the third will use ''line1'' again, etc.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fill_edges|dot||CellID|what}}&lt;br /&gt;
Fills the edges of the map with the given cell.&lt;br /&gt;
:''what'': The cell to fill with.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|each|dot|Table|CellID|what|Area|[where]}}&lt;br /&gt;
Searches for a cell and returns a table containing every location it was found.&lt;br /&gt;
:''what'': The cell to search for.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.&lt;br /&gt;
:'''Returns''': A table containing a list of [[Modding:Coord|Coord]] objects.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_blood|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
Adds blood to the map or removes blood from it.&lt;br /&gt;
:''where'': ''Optional.'' The area to affect.  If omitted, the entire map will selected.&lt;br /&gt;
:''value'': ''Optional.'' ''True'' adds blood.  ''False'' removes it.  If omitted, the default is to add blood.&lt;br /&gt;
:''what'': ''Optional.'' If provided, only locations containing the given cell are affected.  If omitted, all cells in the area are affected.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_permanence|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
Makes cell permanent or removes their permanence.&lt;br /&gt;
:''where'': ''Optional.'' The area to affect.  If omitted, the entire map will be selected.&lt;br /&gt;
:''value'': ''Optional.'' ''True'' adds permanence.  ''False'' removes it.  If omitted, the default is to add permanence.&lt;br /&gt;
:''what'': ''Optional.'' If provided, only locations containing the given cell are affected.  If omitted, wall cells (which includes crate cells) are affected.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|cell_set|dot|Table|CellSet|cells}}&lt;br /&gt;
Creates a cell group.&lt;br /&gt;
:''cells'': A list of cells to add to the group.&lt;br /&gt;
:'''Returns''': A cell group table.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|restore_walls|dot||CellID|wallCell|boolean|keepFluids}}&lt;br /&gt;
Fixes the edge walls of the map.&lt;br /&gt;
:''wallCell'': The cell to fill the edge of the map with.&lt;br /&gt;
:''keepFluids'': ''True'' to maintain any fluid tiles on the edge of the map.  ''False'' to overwrite them.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|plot_line|dot||Coord|where|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
Splits an area into two at the indicated location.&lt;br /&gt;
:''where'': The starting point.&lt;br /&gt;
:''horiz'': ''True'' draws along the indicated X position of the ''where'' coordinate.  ''False'' draws along the indicated Y position of the ''where'' coordinate.&lt;br /&gt;
:''cell'': The cell that will be used to split the area.&lt;br /&gt;
:''block'': The cell(s) that block the line plotting.  The drawn line will stop before hitting a coordinate with one of these cells.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|plot_lines|dot||Coord|where|Area|larea|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
Splits an area into two at the indicated location.&lt;br /&gt;
:''where'': The starting point.&lt;br /&gt;
:''larea'': The boundaries of the line.  The line will not extend past the edge of the area.&lt;br /&gt;
:''horiz'': ''True''draws along the indicated X position of the ''where'' coordinate.  ''False'' draws along the indicated Y position of the ''where'' coordinate.&lt;br /&gt;
:''cell'': The cell that will be used to split the area.&lt;br /&gt;
:''block'': The cell(s) that block the line plotting.  The drawn line will stop before hitting a coordinate with one of these cells.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scatter|dot||Area|where|CellID|good|CellID|fill|integer|count}}&lt;br /&gt;
Randomly places a certain cell around the map.&lt;br /&gt;
:''where'': The area to scatter the cell in.&lt;br /&gt;
:''good'': Only this locations with this cell will be changed by the function.&lt;br /&gt;
:''fill'': The cell to scatter around the area.&lt;br /&gt;
:''count'': The number to attempt to place.  If the chosen location is not ''good'', then it will not cha it.  The final number placed may be less than ''count'' (or even 0), but never more.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scatter_blood|dot||Area|where|CellID|[good]|integer|count}}&lt;br /&gt;
Randomly adds blood in an area.&lt;br /&gt;
:''where'': The area to scatter blood in.&lt;br /&gt;
:''good'': ''Optional.'' If defined, only locations with this cell will have blood added.  If omitted, any location my have blood added.&lt;br /&gt;
:''count'': The number of attempts.  On each attempt, a random cell in the area will be chosen to have blood added.  The number of cell that will end up bloody may be less than ''count'' (or even 0), but never more.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scatter_put|dot||Area|where|Table|translation|string|tile|CellID|good|integer|count}}&lt;br /&gt;
Randomly adds a specified tile (a defined arrangement of cells) around the map.&lt;br /&gt;
:''where'': The area to scatter the tile in.  The tiles will only be placed in locations entirely within the area.&lt;br /&gt;
:''translation'': A table with to be used with the ''tile'' argument.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''tile'': A multi-line string, one row of the tile per line, that lays out the arrangment of the cells.  Refer to this (will be linked soon) for more information&lt;br /&gt;
:''good'': Only locations with this cell will be valid for the tile placement.  If any coordinates of the selected placement area are not ''good'', the tile will not be placed at that location.&lt;br /&gt;
:''count'': The number of tiles to try to place.  The placement will continue until this many have been placed, or 10,000 attempts have been made, whichever comes first.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|transmute|dot||CellID|to|CellSet|from|Area|[where]}}&lt;br /&gt;
Changes all of one cell on the map to another cell.&lt;br /&gt;
:''to'': The cell that will replace the existing cells.&lt;br /&gt;
:''from'': The cell(s) that will be replaced.&lt;br /&gt;
:''where'': ''Optional.'' If specified, only cells in the area are changed.  If omitted, the function will change cells across the entire map.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|transmute_marker|dot||Flag|marker|CellID|To|Area|[where]}}&lt;br /&gt;
Changes all positions on the map that have a specified LightFlag (a named constant starting with &amp;quot;LF&amp;quot;, no underscore) to another cell.&lt;br /&gt;
:''marker'': The LightFlag to check for.  Only cells with this flag will be changed.&lt;br /&gt;
:''to'': The cell that will replace the existing cells.&lt;br /&gt;
:''where'': ''Optional.'' If specified, only cells in the area are changed.  If omitted, the function will change cells across the entire map.&lt;br /&gt;
----&lt;br /&gt;
=== Tile Handling Functions ===&lt;br /&gt;
;{{moddef|desc|create_translation|dot|Table|Table|code}}&lt;br /&gt;
Parses a translation table.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''code'': The translation table.&lt;br /&gt;
:'''Returns''': A parsed translation table.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|tile_new|dot|Tile|string|map|Table|translation}}&lt;br /&gt;
Creates a new tile object.&lt;br /&gt;
:''map'': A multi-line string containing the arrangement of the tile using the ''translation'' to convert the characters to cells.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''translation'': A table with to be used with the ''map'' argument.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:'''Returns''': The new tile object.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|tile_place|dot||Coord|where|Tile|what}}&lt;br /&gt;
Places the cells of the tile on the map.&lt;br /&gt;
:''where'': The coordinate that the upper-left of the tile should reside at.&lt;br /&gt;
:''what'': The tile object that will be placed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_tile|dot||Table|translation|string|tile|integer|x|integer|y}}&lt;br /&gt;
Combines the tile_new and tile_place functions together, by placing a tile using a string and translation table.&lt;br /&gt;
:''translation'': A table with to be used with the ''tile'' argument.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''tile'': A multi-line string containing the arrangement of the tile using the ''translation'' to convert the characters to cells.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''x'': The X position that the tile will be placed at.&lt;br /&gt;
:''y'': The Y position that the tile will be placed at.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_dungen_tile|dot||Table|code|Tile|tile|Coord|where}}&lt;br /&gt;
Places an entire tile, including beings and items in the translation, on the map.&lt;br /&gt;
:''code'': The translation table.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''tile'': A multi-line string containing the arrangement of the tile using the ''translation'' to convert the characters to cells and indicate the positions of the beings and items.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''where'': The coordinate the tile will be placed at.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_symmetry_quad|dot||string|tile|Table|translation}}&lt;br /&gt;
Takes a tile object and places it in all four corners.  The tile object should be setup for the upper left corner and will be mirrored to the other corners.  The tiles are placed one space from the map edge.&lt;br /&gt;
:''tile'': A multi-line string containing the arrangement of the tile using the ''translation'' to convert the characters to cells and indicate the positions of the beings and items.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''translation'': The translation table.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_proto_map|dot||Coord|where|string|proto_map|string|proto_key|Table|code}}&lt;br /&gt;
Creates a map using multiple tile sets.&lt;br /&gt;
:''where'': The upper-left position of the map where the tiles will be layout from.&lt;br /&gt;
:''proto_map'': A string indicating the arrangement of the different pieces of the map.  e.g., &amp;quot;ABCD&amp;quot;, will lay out 4 different tiles with A on the far left and D on the far right.&lt;br /&gt;
:''proto_key'': A table containing, for each character in ''proto_map'', a table of the possible tiles for that section.&lt;br /&gt;
:''code'': The translation table for all the tile possibilities.  Refer to this (will be linked soon) for more information.  All tiles use the same translation table.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Room Handling Functions ===&lt;br /&gt;
;{{moddef|desc|add_room|dot||Area|room|string|[class]}}&lt;br /&gt;
Marks an area that can become a special room.&lt;br /&gt;
:''room'': The area of the room.  This includes the walls.&lt;br /&gt;
:''class'': ''Optional.'' A string used to denote which room generators can be used on this room.  If omitted, the class used is &amp;quot;closed&amp;quot;.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|add_rooms|dot}}&lt;br /&gt;
Finds all the areas that can be rooms on a map and adds them to the appropriate meta-map tables.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_room|dot|Room|integer|min_size|integer|max_x|integer|max_y|integer|max_area|string|class}}&lt;br /&gt;
Selects a room given certain criteria.&lt;br /&gt;
:''min_size'': The smallest X and Y dimensions the room can be.&lt;br /&gt;
:''max_x'': The maximum width of the room.&lt;br /&gt;
:''max_y'': The maximum height of the room.&lt;br /&gt;
:''max_area'': The largest area the room can be.&lt;br /&gt;
:''class'': ''Optional.'' The string denoting which room classes are valid for this room generator.  If omitted, &amp;quot;any&amp;quot; is used, which does not restrict the selection of rooms.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_endpoints|dot|integer, integer|Coord|where|boolean|horiz|CellSet|what}}&lt;br /&gt;
Finds the ends of a line of cells.&lt;br /&gt;
:''where'': The starting coordinate.&lt;br /&gt;
:''horiz'': ''True'' checks horizontally.  ''False'' checks vertically.&lt;br /&gt;
:''what'': The cell(s) that make up the line to check.  The functions stops at the first cell '''not''' in this list.&lt;br /&gt;
:'''Returns''': Two integers.  If ''horiz'' is ''True'', these are the X positions the line stops at.  If ''horiz'' is ''False'', these are the Y positions the line stops at.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|handle_rooms|dot||integer|count|boolean|no_monsters}}&lt;br /&gt;
Runs the rooms selection and setup process for a map.&lt;br /&gt;
:''count'': The number of rooms to attempt to place.&lt;br /&gt;
:''no_monsters'': ''True'' will exclude room generators that place monsters.  ''False'' will not.&lt;br /&gt;
----&lt;br /&gt;
=== Generation Algorithm Functions ===&lt;br /&gt;
;{{moddef|desc|run_drunkard_walk|dot||Area|where|Coord|start|integer|steps|CellID|fill|CellSet|[ignore]|boolean|[stop_at_edge]|Area|where}}&lt;br /&gt;
Runs an algorithm that walks to random adjacent spaces.&lt;br /&gt;
:''where'': The area that the algorithm will run in.  If the algorithm tries to leave the area, it will stop early or will be pushed back in the area (''stop_at_edge'' will determine which of these happen).&lt;br /&gt;
:''start'': The location the algorithm will begin at.&lt;br /&gt;
:''steps'': The number of steps the algorithm will take.  The number of spaces covered by the algorithm will be at most this number.&lt;br /&gt;
:''fill'': The cell that will be placed at each location the algorithm hits.&lt;br /&gt;
:''ignore'': ''Optional.'' If specified, the algorithm will not place the ''fill'' cell in any location that has one of the cell(s) specified.  If omitted, no locations are ignored.&lt;br /&gt;
:''stop_at_edge'': ''Optional.'' If ''True'', the algorithm will end early if it moves past the end of the area.  If ''False'', the algorithm will clamp to the area (any moves to outside the area get moved back in the area).  If omitted, the default is to clamp.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drunkard_walks|dot||integer|amount|integer|steps|CellID|fill|CellSet|[ignore]|boolean|[stop_at_edge]|Area|[where]}}&lt;br /&gt;
Runs multiple &amp;quot;drunken walk&amp;quot; algorithms.&lt;br /&gt;
:''amount'': The number of times to perform the algorithm.&lt;br /&gt;
:''steps'': The number of steps each run of the algorithm will take.  The number of spaces covered by the algorithm will be at most the ''amount'' times the number of ''steps''.&lt;br /&gt;
:''fill'': The cell that will be placed at each location the algorithm hits.&lt;br /&gt;
:''ignore'': ''Optional.'' If specified, the algorithm will not place the ''fill'' cell in any location that has one of the cell(s) specified.  If omitted, no locations are ignored.&lt;br /&gt;
:''stop_at_edge'': ''Optional.'' If ''True'', the algorithm will end early if it moves past the end of the area.  If ''False'', the algorithm will clamp to the area (any moves to outside the area get moved back in the area).  If omitted, the default is to clamp.&lt;br /&gt;
:''where'': ''Optional.'' The area the algorithm will run in.  If the algorithm tries to leave the area, it will stop early or will be pushed back in the area (''stop_at_edge'' will determine which of these happen).  If omitted, the default is entire area minus the very edge.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|contd_drunkard_walks|dot||integer|amount|integer|steps|CellID|fill|CellSet|edges1|CellSet|edges2|CellSet|[ignore]|boolean|[stop_at_edge]}}&lt;br /&gt;
Runs multiple &amp;quot;drunken walk&amp;quot; algorithms starting at a space that doesn't have certain cells around it.&lt;br /&gt;
:''amount'': The number of times to perform the algorithm.&lt;br /&gt;
:''steps'': The number of steps each run of the algorithm will take.  The number of spaces covered by the algorithm will be at most the ''amount'' times the number of ''steps''.&lt;br /&gt;
:''fill'': The cell that will be placed at each location the algorithm hits.&lt;br /&gt;
:''edges1'': The algorithm will not start on a space with a cell listed here next to it.&lt;br /&gt;
:''edges2'': The algorithm will not start on a space with a cell listed here next to it.&lt;br /&gt;
:''ignore'': ''Optional.'' If specified, the algorithm will not place the ''fill'' cell in any location that has one of the cell(s) specified.  If omitted, no locations are ignored.&lt;br /&gt;
:''stop_at_edge'': ''Optional.'' If ''True'', the algorithm will end early if it moves past the end of the area.  If ''False'', the algorithm will clamp to the area (any moves to outside the area get moved back in the area).  If omitted, the default is to clamp.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|warehouse_fill|dot||CellID|fill|Area|where|integer|[size]|integer|[count]|integer|[special_chance]|CellID|[special]}}&lt;br /&gt;
Fills an area with random squares of cells.&lt;br /&gt;
:''fill'': The cell(s) to use for each square.  If a list is given, one is chosen at random for each square.&lt;br /&gt;
:''where'': The area to fill.&lt;br /&gt;
:''size'': ''Optional.'' The size of the squares to use. If omitted, the default is 2.&lt;br /&gt;
:''count'': ''Optional.'' The number of attempts. If omitted, the default is 50.&lt;br /&gt;
:''special_chance'': ''Optional.'' A number indicating the probability of using a special list of cells to fill the square with instead of the ''fill'' list.  The roll used for the chance is based on the ''size'' parameter.  A number from 1 to (100 * ''size'') is chosen for each square and if the roll is less than the special_chance number, the ''special'' cell set is used to fill the square instead. If omitted, all squares will be filled from the ''fill'' set.&lt;br /&gt;
:''special'': ''Optional.'' The list of cells to use if the special set is to be used, based on ''special_chance''. If omitted, all squares will be filled from the ''fill'' set.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_blob|dot||Coord|start|integer|size|CellID|cell}}&lt;br /&gt;
Fills an area by expanding to random edge coordinates.&lt;br /&gt;
:''start'': The position to start the blob at.&lt;br /&gt;
:''size'': The number of spaces to expand the blob to.&lt;br /&gt;
:''cell'': The cell to fill the blob area with.&lt;br /&gt;
----&lt;br /&gt;
=== Generator Helper Functions ===&lt;br /&gt;
;{{moddef|desc|roll_pair|dot|&amp;lt;value&amp;gt;, &amp;lt;value&amp;gt;|Table|list}}&lt;br /&gt;
Takes a list of values of any type and returns two different values randomly from the list.&lt;br /&gt;
:''list'': The list to choose from.&lt;br /&gt;
:'''Returns''': Two different values.  If the list only contains one choice, it will be returned, but only once.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|being_weight|dot}}&lt;br /&gt;
Gets the total danger level for the current dungeon level.&lt;br /&gt;
'''Returns''': The danger level for the current dungeon level.  This value is calcuated using the current difficulty and ''level.danger_level''.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|item_amount|dot}}&lt;br /&gt;
Gets the number of items to drop for the current dungeon level.&lt;br /&gt;
'''Returns''': The number of items to drop for the current dungeon level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|horiz_river|dot||CellID|cell|integer|width|boolean|[bridge]}}&lt;br /&gt;
Places a horizontal river on the map.&lt;br /&gt;
:''cell'': The cell to use for the river.  It does not have to be a fluid cell.&lt;br /&gt;
:''width'': The width of the river.&lt;br /&gt;
:''bridge'': ''Optional.'' If ''True'', a 2 space wide bridge will be placed at a random coordinate on the river.  If ''False'', no bridge will be placed.  If omitted, the default is to not place a bridge.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|vert_river|dot||CellID|cell|integer|width|boolean|bridge|integer|[position]}}&lt;br /&gt;
;{{moddef|desc|vert_river|dot||CellID|cell|integer|width|boolean|bridge|Coord|[position]}}&lt;br /&gt;
Places a vertical river on the map.&lt;br /&gt;
:''cell'': The cell to use for the river.  It does not have to be a fluid cell.&lt;br /&gt;
:''width'': The width of the river.&lt;br /&gt;
:''bridge'': ''Optional.'' If ''True'', a 2 space wide bridge will be placed at a random coordinate on the river.  If ''False'', no bridge will be placed.  If omitted, the default is to not place a bridge.&lt;br /&gt;
:: NOTE: Because of a bug, a bridge will always be placed on the river, even if this value is set to ''False'' or omitted.&lt;br /&gt;
:''position'':  A coordinate or an integer.  If an integer is supplied, this is the X position of the river's left edge.  If a coordinate is supplied, the river will start at this coordinate.  If omitted, the river's left edge will be selected from between X = 19 to 58.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_rivers|dot||boolean|allow_horiz|boolean|allow_more}}&lt;br /&gt;
Creates rivers based on normal DoomRL river generation.&lt;br /&gt;
:''allow_horiz'': ''True'' allows horizontal rivers to be generated.  ''False'' will prevent the generation of horizontal rivers.&lt;br /&gt;
:''allow_more'': ''True'' allows multiple vertical rivers.  ''False'' will prevent more than one vertical river from being placed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_fluids|dot||Area|[where]}}&lt;br /&gt;
Creates fluids based on normal DoomRL fluid generation.&lt;br /&gt;
:''where'': ''Optional.'' The area to generate fluids in.  If omitted, the area used will be the entire map minus the very edge.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_barrels|dot}}&lt;br /&gt;
Creates barrels based on normal DoomRL barrel generation.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_stairs|dot}}&lt;br /&gt;
Creates the normal staircase based on normal DoomRL stair generation.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_special_stairs|dot}}&lt;br /&gt;
Creates the special staircase based on normal DoomRL special stair generation.  Whether a special staircase is placed depends on the level.special_exit value.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_player|dot}}&lt;br /&gt;
Places the player on a random empty space.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|run|dot||Generator|gen}}&lt;br /&gt;
Runs a generator object.  These are stored in the generators table.&lt;br /&gt;
:''gen'': The generator object to run.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|reset|dot}}&lt;br /&gt;
Resets the map.&lt;br /&gt;
----&lt;br /&gt;
=== Dungeon Generation Functions ===&lt;br /&gt;
;{{moddef|desc|generate_tiled|dot}}&lt;br /&gt;
Creates a tiled dungeon, also known as a &amp;quot;normal&amp;quot; dungeon.  This only creates the layout, it does not place beings, items, stairs, barrels, or the player.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|maze_dungeon|dot||CellID|floor|CellID|wall|integer|granularity|integer|tries|integer|min_size|integer|max_size}}&lt;br /&gt;
Creates a maze dungeon.  This only creates the layout, it does not place beings, items, stairs, barrels, or the player.&lt;br /&gt;
:''floor'': The cell to use for the floor of the maze.&lt;br /&gt;
:''wall'': The cell to use for the wall of the maze.&lt;br /&gt;
:''granularity'': This denotes the size of the maze's paths.&lt;br /&gt;
:''tries'': Number of attempts to place a new wall in the maze.&lt;br /&gt;
:''min_size'': The smallest possible size of a wall.&lt;br /&gt;
:''max_size'': The largest possible size of a wall.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_caves_dungeon|dot}}&lt;br /&gt;
Runs the generation script for the cave dungeon.  This is an all inclusive function, it also places all beings and items.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_caves_2_dungeon|dot}}&lt;br /&gt;
Runs the generation script for the cave-city dungeon.  This is an all inclusive function, it also places all beings and items.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_lava_dungeon|dot}}&lt;br /&gt;
Runs the generation script for the lava dungeon.  This is an all inclusive function, it also places all beings and items.&lt;br /&gt;
----&lt;br /&gt;
=== Event Handler Functions ===&lt;br /&gt;
;{{moddef|desc|roll_event|dot}}&lt;br /&gt;
Picks an event from the events table and sets it up.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_flood_event|dot||integer|direction|integer|step|CellID|cell}}&lt;br /&gt;
Runs the setup script for the flood event.&lt;br /&gt;
:''direction'': Use 1 to flood from the left.  Use -1 to flood from the right.&lt;br /&gt;
:''step'': Number of turns (0.1 second intervals) between each flood step.&lt;br /&gt;
:''cell'': The cell to flood with.  This does not have to be a fluid cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_deadly_air_event|dot||integer|step}}&lt;br /&gt;
Runs the setup script for the deadly air event.&lt;br /&gt;
:''step'': Number of turns between each &amp;quot;chill&amp;quot; (loss of HP).&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_explosion_event|dot||integer|step|integer|size|integer|dice|integer|[content]}}&lt;br /&gt;
;{{moddef|desc|setup_explosion_event|dot||integer|step|Table|size|integer|dice|integer|[content]}}&lt;br /&gt;
Runs the setup script for the explosion event.&lt;br /&gt;
:''step'': Number of turns between each explosion.&lt;br /&gt;
:''size'': Either a number or a table of two numbers.  Indicates the size of each explosion.  If a table is supplied, the size is randomly chosen between the range supplied each time an explosion is created.&lt;br /&gt;
:''dice'': Number of d6 dice to use for the damage roll.&lt;br /&gt;
:''content'': ''Optional.'' The content to place in any space where the damage to a space is more than 20 points.  If omitted, nothing will placed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_targeted_event|dot||integer|step}}&lt;br /&gt;
Runs the setup script for the targeting event.&lt;br /&gt;
:''step'': Number of turns between each monster teleport.&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Modding:generator_API</id>
		<title>Modding:generator API</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Modding:generator_API"/>
				<updated>2013-04-25T19:10:45Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: /* Generator API Function List */ Second setup_explosion_event definition did not have optional brackets around content.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''This page is currently under construction.''&lt;br /&gt;
&lt;br /&gt;
The generator holds all of the ever-present functions used to create the random maps in DoomRL. It also contains a variety of helper functions, many of them useful if not vital to the creation of intricate and meticulous game design.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
Please note that the type &amp;quot;integer&amp;quot; indicates an numeric value without a decimal part.  It does not indicate the range of acceptable values.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellID&amp;quot; may be the numeric or string ID of a cell.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellSet&amp;quot; may be the numeric ID, string ID, or a list of numeric and/or string IDs.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;Flags&amp;quot; expects a list of [[Modding:Constants|flag constants]] of the indicated type.  &lt;br /&gt;
&lt;br /&gt;
An argument name in [square brackets] is an optional one.  The function description will indicate how the function operates if it is omitted.&lt;br /&gt;
&lt;br /&gt;
=== Generator API Function List ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 2px solid darkred; border-spacing: 0; font-size: 90%; margin: 0.25em 0.5em;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: darkred; color: yellow; font-size: 120%; text-align: center&amp;quot;|'''Generator Interface - Functions'''&lt;br /&gt;
 {{Table2Col&lt;br /&gt;
  |es=background: #333; &lt;br /&gt;
  |c1=font-weight:bold; text-align:right; vertical-align:top; padding:0px 2px;&lt;br /&gt;
  |c2=padding:0px 2px;&lt;br /&gt;
  ||'''[[#Basic Cell Handling Functions|Basic Cell Handling Functions]]'''&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|get_cell|dot||Coord|loc}}&lt;br /&gt;
  |{{modarg|string}}|{{moddef|list|get_cell_id|dot||Coord|loc}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|fast_get_cell|dot||integer|x|integer|y}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_cell|dot||Coord|loc|CellID|what}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fast_set_cell|dot||integer|x|integer|y|integer|what}}&lt;br /&gt;
  ||'''[[#Map Checking Functions|Map Checking Functions]]'''&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|around|dot||Coord|where|CellSet|what}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|cross_around|dot||Coord|where|CellSet|what}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty|dot||Coord|where|Flags|reqs}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty_area|dot||Area|where|Flags|reqs}}  &lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|scan|dot||Area|where|CellID|good}}&lt;br /&gt;
  ||'''[[#Map Searching Functions|Map Searching Functions]]'''&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|drop_coord|dot||Coord|where|Flags|reqs}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_coord|dot||CellSet|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|random_coord|dot||Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_random_coord|dot||CellSet|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_empty_coord|dot||CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|random_empty_coord|dot||Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_random_empty_coord|dot||CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|safe_empty_coord|dot||Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|standard_empty_coord|dot}}&lt;br /&gt;
  ||'''[[#Advanced Cell Handling Functions|Advanced Cell Handling Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fill|dot||CellID|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fill_pattern|dot||Area|where|boolean|horiz|Table|line1|Table|[line2]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fill_edges|dot||CellID|what}}&lt;br /&gt;
  |{{modarg|Table}}|{{moddef|list|each|dot||CellID|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_blood|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_permanence|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
  |{{modarg|Table}}|{{moddef|list|cell_set|dot||CellSet|cells}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|restore_walls|dot||CellID|wallCell|boolean|keepFluids}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|plot_line|dot||Coord|where|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|plot_lines|dot||Coord|where|Area|larea|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|scatter|dot||Area|where|CellID|good|CellID|fill|integer|count}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|scatter_blood|dot||Area|where|CellID|[good]|integer|count}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|scatter_put|dot||Area|where|Table|translation|string|tile|CellID|good|integer|count}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|transmute|dot||CellID|to|CellSet|from|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|transmute_marker|dot||Flag|marker|CellID|To|Area|[where]}}&lt;br /&gt;
  ||'''[[#Tile Handling Functions|Tile Handling Functions]]'''&lt;br /&gt;
  |{{modarg|Table}}|{{moddef|list|create_translation|dot||Table|code}}&lt;br /&gt;
  |{{modarg|Tile}}|{{moddef|list|tile_new|dot||string|map|Table|translation}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|tile_place|dot||Coord|where|Tile|what}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_tile|dot||Table|translation|string|tile|integer|x|integer|y}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_dungen_tile|dot||Table|code|Tile|tile|Coord|where}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_symmetry_quad|dot||string|tile|Table|translation}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_proto_map|dot||Coord|where|string|proto_map|string|proto_key|Table|code}}&lt;br /&gt;
  ||'''[[#Room Handling Functions|Room Handling Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|add_room|dot||Area|room|string|[class]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|add_rooms|dot}}&lt;br /&gt;
  |{{modarg|Room}}|{{moddef|list|get_room|dot||integer|min_size|integer|max_x|integer|max_y|integer|max_area|string|[class]}}&lt;br /&gt;
  |{{modarg|integer, integer}}|{{moddef|list|get_endpoints|dot||Coord|where|boolean|horiz|CellSet|what}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|handle_rooms|dot||integer|count|boolean|no_monsters}}&lt;br /&gt;
  ||'''[[#Generation Algorithm Functions|Generation Algorithm Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|run_drunkard_walk|dot||Area|where|Coord|start|integer|steps|CellID|fill|CellSet|[ignore]|boolean|[stop_at_edge]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|drunkard_walks|dot||integer|amount|integer|steps|CellID|fill|CellSet|[ignore]|boolean|[stop_at_edge]|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|contd_drunkard_walks|dot||integer|amount|integer|steps|CellID|fill|CellSet|edges1|CellSet|edges2|CellSet|[ignore]|boolean|[stop_at_edge]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|warehouse_fill|dot||CellSet|fill|Area|where|integer|size|integer|count|integer|special_chance|CellSet|special}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_blob|dot||Coord|start|integer|size|CellID|cell}}&lt;br /&gt;
  ||'''[[#Generator Helper Functions|Generator Helper Functions]]'''&lt;br /&gt;
  |{{modarg|&amp;lt;value&amp;gt;, &amp;lt;value&amp;gt;}}|{{moddef|list|roll_pair|dot||Table|list}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|being_weight|dot}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|item_amount|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|horiz_river|dot||CellID|cell|integer|width|boolean|[bridge]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|vert_river|dot||CellID|cell|integer|width|boolean|bridge|integer|position}}&lt;br /&gt;
{{moddef|list|vert_river|dot||CellID|cell|integer|width|boolean|bridge|Coord|position}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_rivers|dot||boolean|allow_horiz|boolean|allow_more}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_fluids|dot||Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_barrels|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_stairs|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_special_stairs|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_player|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|run|dot||Generator|gen}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|reset|dot}}&lt;br /&gt;
  ||'''[[#Dungeon Generation Functions|Dungeon Generation Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_tiled|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|maze_dungeon|dot||CellID|floor|CellID|wall|integer|granularity|integer|tries|integer|min_size|integer|max_size}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_caves_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_caves_2_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_lava_dungeon|dot}}&lt;br /&gt;
  ||'''[[#Event Handler Functions|Event Handler Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|roll_event|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_flood_event|dot||integer|direction|integer|step|CellID|cell}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_deadly_air_event|dot||integer|step}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_explosion_event|dot||integer|step|integer|size|integer|dice|integer|[content]}}&lt;br /&gt;
{{moddef|list|setup_explosion_event|dot||integer|step|Table|size|integer|dice|integer|[content]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_targeted_event|dot||integer|step}}&lt;br /&gt;
  |}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Basic Cell Handling Functions ===&lt;br /&gt;
;{{moddef|desc|get_cell|dot|integer|Coord|loc}}&lt;br /&gt;
Gets the Numeric ID (NID) of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''loc'': The coordinates of the cell to get.&lt;br /&gt;
:'''Returns''': The NID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_cell_id|dot|string|Coord|loc}}&lt;br /&gt;
Gets the ID of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''loc'': The coordinates of the cell to get.&lt;br /&gt;
:'''Returns''': The string ID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fast_get_cell|dot|integer|integer|x|integer|y}}&lt;br /&gt;
Gets the Numeric ID (NID) of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''x'': The X position of the cell to get.&lt;br /&gt;
:''y'': The Y position of the cell to get.&lt;br /&gt;
:'''Returns''': The NID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_cell|dot||Coord|loc|CellID|what}}&lt;br /&gt;
Assigns a [[Modding:Cell|cell]] to a map position.&lt;br /&gt;
:''loc'': The coordinates of the position to set.&lt;br /&gt;
:''what'': The ID of the cell to assign to the position.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fast_set_cell|dot||integer|x|integer|y|integer|what}}&lt;br /&gt;
Assigns a [[Modding:Cell|cell]] to a map position.&lt;br /&gt;
:''x'': The X position of the cell to set.&lt;br /&gt;
:''y'': The Y position of the cell to set.&lt;br /&gt;
:''what'': The NID (string IDs not allowed) of the cell to assign to the position.&lt;br /&gt;
----&lt;br /&gt;
=== Map Checking Functions ===&lt;br /&gt;
;{{moddef|desc|around|dot|integer|Coord|where|CellSet|what}}&lt;br /&gt;
Checks the positions adjacent to a location (including diagonally adjacent) and returns the number of cells that match one of the indicated cell IDs.&lt;br /&gt;
:''where'': The coordinate to check around.  The coordinate sent in this way is not checked, only adjacent cells are.&lt;br /&gt;
:''what'': The cell(s) to check for.&lt;br /&gt;
:'''Returns''': The number of cells (from 0 to 8) that matched one of the ''what'' cell IDs.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|cross_around|dot|integer|Coord|where|CellSet|what}}&lt;br /&gt;
Checks the positions adjacent to a location (but not diagonally adjacent) and returns the number of cells that match one of the indicated cell IDs.&lt;br /&gt;
:''where'': The coordinates to check around.  The coordinate sent in this way is not checked, only adjacent cells are.&lt;br /&gt;
:''what'': The cell(s) to check for.&lt;br /&gt;
:'''Returns''': The number of cells (from 0 to 4) that matched one of the ''what'' cell IDs.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty|dot|boolean|Coord|where|Flags|reqs}}&lt;br /&gt;
Checks to see if the indicated cell is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The position to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the position cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the map position does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if the cell satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty_area|dot|boolean|Area|where|Flags|reqs}}&lt;br /&gt;
Checks to see if the indicated area is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The area to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the area cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the area does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if every cell in the area satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scan|dot|boolean|Area|where|CellID|good}}&lt;br /&gt;
Checks to see if the entire area is filled with a certain cell.&lt;br /&gt;
:''where'': The area to check.&lt;br /&gt;
:''good'': The cell to look for.&lt;br /&gt;
:'''Returns''': ''True'' if all cells in the area are ''good'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
=== Map Searching Functions ===&lt;br /&gt;
;{{moddef|desc|drop_coord|dot|Coord|Coord|where|Flags|reqs}}&lt;br /&gt;
Finds the nearest &amp;quot;empty&amp;quot; coordinate to a given coordinate, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The coordinate to try.  If this coordinate is &amp;quot;empty&amp;quot;, this coordinate will be returned.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': The nearest coordinate the satisfies the criteria.  If the supplied coordinate meets the criteria, that coordinate will be returned.  If not a nearby, random, coordinate will be checked. &lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_coord|dot|Coord|CellSet|what|Area|[where]}}&lt;br /&gt;
Searches the map for the first coordinate containing one of the indicated cell IDs.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': The coordinates of the first position that contains one of the ''what'' cell IDs.  The map is checked row by row starting from the top, going from left to right across each row.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_coord|dot|Coord|Area|[where]}}&lt;br /&gt;
Searches for a random coordinate within the specified area.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the coordinate to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_random_coord|dot|Coord|CellSet|what|Area|[where]}}&lt;br /&gt;
Searches for a random coordinate within the specified area that contains one of the specified cell IDs.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''where'' : ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_empty_coord|dot|Coord|CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for the first &amp;quot;empty&amp;quot; coordinate containing one of the indicated cell IDs, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''reqs'':  A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': The coordinates of the first position that meets the supplied criteria.  The map is checked row by row starting from the top, going from left to right across each row.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_empty_coord|dot|Coord|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for a random coordinate that is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the random coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_random_empty_coord|dot|Coord|CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for a random &amp;quot;empty&amp;quot; coordinate containing one of the indicated cell IDs, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''reqs'':  A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the random coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_square|dot|Coord|CellSet|what}}&lt;br /&gt;
Searches for a random 3x3 area containing only specified cells.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:'''Returns''': The center coordinate of the random 3x3 area.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|safe_empty_coord|dot|Coord|Area|[where]}}&lt;br /&gt;
Searches for a random coordinate that meets certain predetermined criteria.&lt;br /&gt;
&lt;br /&gt;
The function will try to find a coordinate that does not contain a being, item, staircase, wall, harmful terrain, spawning restrictions (cells marked with LF_NOSPAWN), and is more than 5 spaces from the player (EF_NOBEINGS, EF_NOITEMS, EF_NOSTAIRS, EF_NOBLOCK, EF_NOHARM, EF_NOSPAWN, and EF_NOSAFE).  If a valid space isn't found, the function will ignore distance from the player (EF_NOSAFE).  If a valid space still can't be found, the function will ignore stairs and harmful terrain (EF_NOSTAIRS and EF_NOHARM).&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the initial pass to.  If a valid coordinate is not found within the area after ignoring stairs and harmful terrain, the search is restarted and expanded automatically to the entire map.  If omitted, the entire map will be searched.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|standard_empty_coord|dot|Coord}}&lt;br /&gt;
Searches for a random coordinate that meets certain predetermined criteria.&lt;br /&gt;
&lt;br /&gt;
The function will search for a coordinate that does not contain a being, item, staircase, wall, harmful terrain, or spawning restrictions (EF_NOBEINGS, EF_NOITEMS, EF_NOSTAIRS, EF_NOBLOCK, EF_NOHARM, and EF_NOSPAWN).&lt;br /&gt;
:'''Returns''': A random coordinate that meets the criteria.&lt;br /&gt;
----&lt;br /&gt;
=== Advanced Cell Handling Functions ===&lt;br /&gt;
;{{moddef|desc|fill|dot||CellID|what|Area|[where]}}&lt;br /&gt;
Fills an area of the map with a given cell.&lt;br /&gt;
:''what'': The cell to fill with.&lt;br /&gt;
:''where'': ''Optional.'' The area to fill with the cell.  If omitted, the entire map will be filled.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fill_pattern|dot||Area|where|boolean|horiz|string|Table|line1|Table|[line2]}}&lt;br /&gt;
Fills an area of the map with a pattern of cells.&lt;br /&gt;
:''where'': The area to fill.&lt;br /&gt;
:''horiz'': If ''True'', the pattern will fill each row left to right, then move to the next row down in the area.  If ''False'', the pattern will fill each column top to bottom, then move to the next column right in the area. &lt;br /&gt;
:''line1'': The pattern to fill with.  If the pattern is shorter than the area size, the pattern will loop.  The pattern does not restart at the end of a row or column.&lt;br /&gt;
:''line2'': ''Optional.'' If given, each time the end of row (if ''horiz'' is ''True'') or column (if ''horiz'' is ''False'') is reached, the function will switch to filling with the other pattern.  That is, the first row will use ''line1'' then the second will use ''line2'', then the third will use ''line1'' again, etc.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fill_edges|dot||CellID|what}}&lt;br /&gt;
Fills the edges of the map with the given cell.&lt;br /&gt;
:''what'': The cell to fill with.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|each|dot|Table|CellID|what|Area|[where]}}&lt;br /&gt;
Searches for a cell and returns a table containing every location it was found.&lt;br /&gt;
:''what'': The cell to search for.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.&lt;br /&gt;
:'''Returns''': A table containing a list of [[Modding:Coord|Coord]] objects.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_blood|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
Adds blood to the map or removes blood from it.&lt;br /&gt;
:''where'': ''Optional.'' The area to affect.  If omitted, the entire map will selected.&lt;br /&gt;
:''value'': ''Optional.'' ''True'' adds blood.  ''False'' removes it.  If omitted, the default is to add blood.&lt;br /&gt;
:''what'': ''Optional.'' If provided, only locations containing the given cell are affected.  If omitted, all cells in the area are affected.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_permanence|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
Makes cell permanent or removes their permanence.&lt;br /&gt;
:''where'': ''Optional.'' The area to affect.  If omitted, the entire map will be selected.&lt;br /&gt;
:''value'': ''Optional.'' ''True'' adds permanence.  ''False'' removes it.  If omitted, the default is to add permanence.&lt;br /&gt;
:''what'': ''Optional.'' If provided, only locations containing the given cell are affected.  If omitted, wall cells (which includes crate cells) are affected.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|cell_set|dot|Table|CellSet|cells}}&lt;br /&gt;
Creates a cell group.&lt;br /&gt;
:''cells'': A list of cells to add to the group.&lt;br /&gt;
:'''Returns''': A cell group table.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|restore_walls|dot||CellID|wallCell|boolean|keepFluids}}&lt;br /&gt;
Fixes the edge walls of the map.&lt;br /&gt;
:''wallCell'': The cell to fill the edge of the map with.&lt;br /&gt;
:''keepFluids'': ''True'' to maintain any fluid tiles on the edge of the map.  ''False'' to overwrite them.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|plot_line|dot||Coord|where|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
Splits an area into two at the indicated location.&lt;br /&gt;
:''where'': The starting point.&lt;br /&gt;
:''horiz'': ''True'' draws along the indicated X position of the ''where'' coordinate.  ''False'' draws along the indicated Y position of the ''where'' coordinate.&lt;br /&gt;
:''cell'': The cell that will be used to split the area.&lt;br /&gt;
:''block'': The cell(s) that block the line plotting.  The drawn line will stop before hitting a coordinate with one of these cells.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|plot_lines|dot||Coord|where|Area|larea|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
Splits an area into two at the indicated location.&lt;br /&gt;
:''where'': The starting point.&lt;br /&gt;
:''larea'': The boundaries of the line.  The line will not extend past the edge of the area.&lt;br /&gt;
:''horiz'': ''True''draws along the indicated X position of the ''where'' coordinate.  ''False'' draws along the indicated Y position of the ''where'' coordinate.&lt;br /&gt;
:''cell'': The cell that will be used to split the area.&lt;br /&gt;
:''block'': The cell(s) that block the line plotting.  The drawn line will stop before hitting a coordinate with one of these cells.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scatter|dot||Area|where|CellID|good|CellID|fill|integer|count}}&lt;br /&gt;
Randomly places a certain cell around the map.&lt;br /&gt;
:''where'': The area to scatter the cell in.&lt;br /&gt;
:''good'': Only this locations with this cell will be changed by the function.&lt;br /&gt;
:''fill'': The cell to scatter around the area.&lt;br /&gt;
:''count'': The number to attempt to place.  If the chosen location is not ''good'', then it will not cha it.  The final number placed may be less than ''count'' (or even 0), but never more.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scatter_blood|dot||Area|where|CellID|[good]|integer|count}}&lt;br /&gt;
Randomly adds blood in an area.&lt;br /&gt;
:''where'': The area to scatter blood in.&lt;br /&gt;
:''good'': ''Optional.'' If defined, only locations with this cell will have blood added.  If omitted, any location my have blood added.&lt;br /&gt;
:''count'': The number of attempts.  On each attempt, a random cell in the area will be chosen to have blood added.  The number of cell that will end up bloody may be less than ''count'' (or even 0), but never more.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scatter_put|dot||Area|where|Table|translation|string|tile|CellID|good|integer|count}}&lt;br /&gt;
Randomly adds a specified tile (a defined arrangement of cells) around the map.&lt;br /&gt;
:''where'': The area to scatter the tile in.  The tiles will only be placed in locations entirely within the area.&lt;br /&gt;
:''translation'': A table with to be used with the ''tile'' argument.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''tile'': A multi-line string, one row of the tile per line, that lays out the arrangment of the cells.  Refer to this (will be linked soon) for more information&lt;br /&gt;
:''good'': Only locations with this cell will be valid for the tile placement.  If any coordinates of the selected placement area are not ''good'', the tile will not be placed at that location.&lt;br /&gt;
:''count'': The number of tiles to try to place.  The placement will continue until this many have been placed, or 10,000 attempts have been made, whichever comes first.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|transmute|dot||CellID|to|CellSet|from|Area|[where]}}&lt;br /&gt;
Changes all of one cell on the map to another cell.&lt;br /&gt;
:''to'': The cell that will replace the existing cells.&lt;br /&gt;
:''from'': The cell(s) that will be replaced.&lt;br /&gt;
:''where'': ''Optional.'' If specified, only cells in the area are changed.  If omitted, the function will change cells across the entire map.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|transmute_marker|dot||Flag|marker|CellID|To|Area|[where]}}&lt;br /&gt;
Changes all positions on the map that have a specified LightFlag (a named constant starting with &amp;quot;LF&amp;quot;, no underscore) to another cell.&lt;br /&gt;
:''marker'': The LightFlag to check for.  Only cells with this flag will be changed.&lt;br /&gt;
:''to'': The cell that will replace the existing cells.&lt;br /&gt;
:''where'': ''Optional.'' If specified, only cells in the area are changed.  If omitted, the function will change cells across the entire map.&lt;br /&gt;
----&lt;br /&gt;
=== Tile Handling Functions ===&lt;br /&gt;
;{moddef|desc|create_translation|dot|Table|Table|code}}&lt;br /&gt;
Parses a translation table.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''code'': The translation table.&lt;br /&gt;
:'''Returns''': A parsed translation table.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|tile_new|dot|Tile|string|map|Table|translation}}&lt;br /&gt;
Creates a new tile object.&lt;br /&gt;
:''map'': A multi-line string containing the arrangement of the tile using the ''translation'' to convert the characters to cells.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''translation'': A table with to be used with the ''map'' argument.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:'''Returns''': The new tile object.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|tile_place|dot||Coord|where|Tile|what}}&lt;br /&gt;
Places the cells of the tile on the map.&lt;br /&gt;
:''where'': The coordinate that the upper-left of the tile should reside at.&lt;br /&gt;
:''what'': The tile object that will be placed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_tile|dot||Table|translation|string|tile|integer|x|integer|y}}&lt;br /&gt;
Combines the tile_new and tile_place functions together, by placing a tile using a string and translation table.&lt;br /&gt;
:''translation'': A table with to be used with the ''tile'' argument.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''tile'': A multi-line string containing the arrangement of the tile using the ''translation'' to convert the characters to cells.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''x'': The X position that the tile will be placed at.&lt;br /&gt;
:''y'': The Y position that the tile will be placed at.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_dungen_tile|dot||Table|code|Tile|tile|Coord|where}}&lt;br /&gt;
Places an entire tile, including beings and items in the translation, on the map.&lt;br /&gt;
:''code'': The translation table.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''tile'': A multi-line string containing the arrangement of the tile using the ''translation'' to convert the characters to cells and indicate the positions of the beings and items.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''where'': The coordinate the tile will be placed at.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_symmetry_quad|dot||string|tile|Table|translation}}&lt;br /&gt;
Takes a tile object and places it in all four corners.  The tile object should be setup for the upper left corner and will be mirrored to the other corners.  The tiles are placed one space from the map edge.&lt;br /&gt;
:''tile'': A multi-line string containing the arrangement of the tile using the ''translation'' to convert the characters to cells and indicate the positions of the beings and items.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''translation'': The translation table.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_proto_map|dot||Coord|where|string|proto_map|string|proto_key|Table|code}}&lt;br /&gt;
Creates a map using multiple tile sets.&lt;br /&gt;
:''where'': The upper-left position of the map where the tiles will be layout from.&lt;br /&gt;
:''proto_map'': A string indicating the arrangement of the different pieces of the map.  e.g., &amp;quot;ABCD&amp;quot;, will lay out 4 different tiles with A on the far left and D on the far right.&lt;br /&gt;
:''proto_key'': A table containing, for each character in ''proto_map'', a table of the possible tiles for that section.&lt;br /&gt;
:''code'': The translation table for all the tile possibilities.  Refer to this (will be linked soon) for more information.  All tiles use the same translation table.&lt;br /&gt;
----&lt;br /&gt;
=== Room Handling Functions ===&lt;br /&gt;
;{{moddef|desc|add_room|dot||Area|room|string|[class]}}&lt;br /&gt;
Marks an area that can become a special room.&lt;br /&gt;
:''room'': The area of the room.  This includes the walls.&lt;br /&gt;
:''class'': ''Optional.'' A string used to denote which room generators can be used on this room.  If omitted, the class used is &amp;quot;closed&amp;quot;.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|add_rooms|dot}}&lt;br /&gt;
Finds all the areas that can be rooms on a map and adds them to the appropriate meta-map tables.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_room|dot|Room|integer|min_size|integer|max_x|integer|max_y|integer|max_area|string|class}}&lt;br /&gt;
Selects a room given certain criteria.&lt;br /&gt;
:''min_size'': The smallest X and Y dimensions the room can be.&lt;br /&gt;
:''max_x'': The maximum width of the room.&lt;br /&gt;
:''max_y'': The maximum height of the room.&lt;br /&gt;
:''max_area'': The largest area the room can be.&lt;br /&gt;
:''class'': ''Optional.'' The string denoting which room classes are valid for this room generator.  If omitted, &amp;quot;any&amp;quot; is used, which does not restrict the selection of rooms.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_endpoints|dot|integer, integer|Coord|where|boolean|horiz|CellSet|what}}&lt;br /&gt;
Finds the ends of a line of cells.&lt;br /&gt;
:''where'': The starting coordinate.&lt;br /&gt;
:''horiz'': ''True'' checks horizontally.  ''False'' checks vertically.&lt;br /&gt;
:''what'': The cell(s) that make up the line to check.  The functions stops at the first cell '''not''' in this list.&lt;br /&gt;
:'''Returns''': Two integers.  If ''horiz'' is ''True'', these are the X positions the line stops at.  If ''horiz'' is ''False'', these are the Y positions the line stops at.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|handle_rooms|dot||integer|count|boolean|no_monsters}}&lt;br /&gt;
Runs the rooms selection and setup process for a map.&lt;br /&gt;
:''count'': The number of rooms to attempt to place.&lt;br /&gt;
:''no_monsters'': ''True'' will exclude room generators that place monsters.  ''False'' will not.&lt;br /&gt;
----&lt;br /&gt;
=== Generation Algorithm Functions ===&lt;br /&gt;
;{{moddef|desc|run_drunkard_walk|dot||Area|where|Coord|start|integer|steps|CellID|fill|CellSet|[ignore]|boolean|[stop_at_edge]|Area|where}}&lt;br /&gt;
Runs an algorithm that walks to random adjacent spaces.&lt;br /&gt;
:''where'': The area that the algorithm will run in.  If the algorithm tries to leave the area, it will stop early or will be pushed back in the area (''stop_at_edge'' will determine which of these happen).&lt;br /&gt;
:''start'': The location the algorithm will begin at.&lt;br /&gt;
:''steps'': The number of steps the algorithm will take.  The number of spaces covered by the algorithm will be at most this number.&lt;br /&gt;
:''fill'': The cell that will be placed at each location the algorithm hits.&lt;br /&gt;
:''ignore'': ''Optional.'' If specified, the algorithm will not place the ''fill'' cell in any location that has one of the cell(s) specified.  If omitted, no locations are ignored.&lt;br /&gt;
:''stop_at_edge'': ''Optional.'' If ''True'', the algorithm will end early if it moves past the end of the area.  If ''False'', the algorithm will clamp to the area (any moves to outside the area get moved back in the area).  If omitted, the default is to clamp.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drunkard_walks|dot||integer|amount|integer|steps|CellID|fill|CellSet|[ignore]|boolean|[stop_at_edge]|Area|[where]}}&lt;br /&gt;
Runs multiple &amp;quot;drunken walk&amp;quot; algorithms.&lt;br /&gt;
:''amount'': The number of times to perform the algorithm.&lt;br /&gt;
:''steps'': The number of steps each run of the algorithm will take.  The number of spaces covered by the algorithm will be at most the ''amount'' times the number of ''steps''.&lt;br /&gt;
:''fill'': The cell that will be placed at each location the algorithm hits.&lt;br /&gt;
:''ignore'': ''Optional.'' If specified, the algorithm will not place the ''fill'' cell in any location that has one of the cell(s) specified.  If omitted, no locations are ignored.&lt;br /&gt;
:''stop_at_edge'': ''Optional.'' If ''True'', the algorithm will end early if it moves past the end of the area.  If ''False'', the algorithm will clamp to the area (any moves to outside the area get moved back in the area).  If omitted, the default is to clamp.&lt;br /&gt;
:''where'': ''Optional.'' The area the algorithm will run in.  If the algorithm tries to leave the area, it will stop early or will be pushed back in the area (''stop_at_edge'' will determine which of these happen).  If omitted, the default is entire area minus the very edge.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|contd_drunkard_walks|dot||integer|amount|integer|steps|CellID|fill|CellSet|edges1|CellSet|edges2|CellSet|[ignore]|boolean|[stop_at_edge]}}&lt;br /&gt;
Runs multiple &amp;quot;drunken walk&amp;quot; algorithms starting at a space that doesn't have certain cells around it.&lt;br /&gt;
:''amount'': The number of times to perform the algorithm.&lt;br /&gt;
:''steps'': The number of steps each run of the algorithm will take.  The number of spaces covered by the algorithm will be at most the ''amount'' times the number of ''steps''.&lt;br /&gt;
:''fill'': The cell that will be placed at each location the algorithm hits.&lt;br /&gt;
:''edges1'': The algorithm will not start on a space with a cell listed here next to it.&lt;br /&gt;
:''edges2'': The algorithm will not start on a space with a cell listed here next to it.&lt;br /&gt;
:''ignore'': ''Optional.'' If specified, the algorithm will not place the ''fill'' cell in any location that has one of the cell(s) specified.  If omitted, no locations are ignored.&lt;br /&gt;
:''stop_at_edge'': ''Optional.'' If ''True'', the algorithm will end early if it moves past the end of the area.  If ''False'', the algorithm will clamp to the area (any moves to outside the area get moved back in the area).  If omitted, the default is to clamp.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|warehouse_fill|dot||CellID|fill|Area|where|integer|[size]|integer|[count]|integer|[special_chance]|CellID|[special]}}&lt;br /&gt;
Fills an area with random squares of cells.&lt;br /&gt;
:''fill'': The cell(s) to use for each square.  If a list is given, one is chosen at random for each square.&lt;br /&gt;
:''where'': The area to fill.&lt;br /&gt;
:''size'': ''Optional.'' The size of the squares to use. If omitted, the default is 2.&lt;br /&gt;
:''count'': ''Optional.'' The number of attempts. If omitted, the default is 50.&lt;br /&gt;
:''special_chance'': ''Optional.'' A number indicating the probability of using a special list of cells to fill the square with instead of the ''fill'' list.  The roll used for the chance is based on the ''size'' parameter.  A number from 1 to (100 * ''size'') is chosen for each square and if the roll is less than the special_chance number, the ''special'' cell set is used to fill the square instead. If omitted, all squares will be filled from the ''fill'' set.&lt;br /&gt;
:''special'': ''Optional.'' The list of cells to use if the special set is to be used, based on ''special_chance''. If omitted, all squares will be filled from the ''fill'' set.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_blob|dot||Coord|start|integer|size|CellID|cell}}&lt;br /&gt;
Fills an area by expanding to random edge coordinates.&lt;br /&gt;
:''start'': The position to start the blob at.&lt;br /&gt;
:''size'': The number of spaces to expand the blob to.&lt;br /&gt;
:''cell'': The cell to fill the blob area with.&lt;br /&gt;
----&lt;br /&gt;
=== Generator Helper Functions ===&lt;br /&gt;
;{{moddef|desc|roll_pair|dot|&amp;lt;value&amp;gt;, &amp;lt;value&amp;gt;|Table|list}}&lt;br /&gt;
Takes a list of values of any type and returns two different values randomly from the list.&lt;br /&gt;
:''list'': The list to choose from.&lt;br /&gt;
:'''Returns''': Two different values.  If the list only contains one choice, it will be returned, but only once.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|being_weight|dot}}&lt;br /&gt;
Gets the total danger level for the current dungeon level.&lt;br /&gt;
'''Returns''': The danger level for the current dungeon level.  This value is calcuated using the current difficulty and ''level.danger_level''.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|item_amount|dot}}&lt;br /&gt;
Gets the number of items to drop for the current dungeon level.&lt;br /&gt;
'''Returns''': The number of items to drop for the current dungeon level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|horiz_river|dot||CellID|cell|integer|width|boolean|[bridge]}}&lt;br /&gt;
Places a horizontal river on the map.&lt;br /&gt;
:''cell'': The cell to use for the river.  It does not have to be a fluid cell.&lt;br /&gt;
:''width'': The width of the river.&lt;br /&gt;
:''bridge'': ''Optional.'' If ''True'', a 2 space wide bridge will be placed at a random coordinate on the river.  If ''False'', no bridge will be placed.  If omitted, the default is to not place a bridge.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|vert_river|dot||CellID|cell|integer|width|boolean|bridge|integer|[position]}}&lt;br /&gt;
;{{moddef|desc|vert_river|dot||CellID|cell|integer|width|boolean|bridge|Coord|[position]}}&lt;br /&gt;
Places a vertical river on the map.&lt;br /&gt;
:''cell'': The cell to use for the river.  It does not have to be a fluid cell.&lt;br /&gt;
:''width'': The width of the river.&lt;br /&gt;
:''bridge'': ''Optional.'' If ''True'', a 2 space wide bridge will be placed at a random coordinate on the river.  If ''False'', no bridge will be placed.  If omitted, the default is to not place a bridge.&lt;br /&gt;
:: NOTE: Because of a bug, a bridge will always be placed on the river, even if this value is set to ''False'' or omitted.&lt;br /&gt;
:''position'':  A coordinate or an integer.  If an integer is supplied, this is the X position of the river's left edge.  If a coordinate is supplied, the river will start at this coordinate.  If omitted, the river's left edge will be selected from between X = 19 to 58.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_rivers|dot||boolean|allow_horiz|boolean|allow_more}}&lt;br /&gt;
Creates rivers based on normal DoomRL river generation.&lt;br /&gt;
:''allow_horiz'': ''True'' allows horizontal rivers to be generated.  ''False'' will prevent the generation of horizontal rivers.&lt;br /&gt;
:''allow_more'': ''True'' allows multiple vertical rivers.  ''False'' will prevent more than one vertical river from being placed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_fluids|dot||Area|[where]}}&lt;br /&gt;
Creates fluids based on normal DoomRL fluid generation.&lt;br /&gt;
:''where'': ''Optional.'' The area to generate fluids in.  If omitted, the area used will be the entire map minus the very edge.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_barrels|dot}}&lt;br /&gt;
Creates barrels based on normal DoomRL barrel generation.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_stairs|dot}}&lt;br /&gt;
Creates the normal staircase based on normal DoomRL stair generation.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_special_stairs|dot}}&lt;br /&gt;
Creates the special staircase based on normal DoomRL special stair generation.  Whether a special staircase is placed depends on the level.special_exit value.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_player|dot}}&lt;br /&gt;
Places the player on a random empty space.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|run|dot||Generator|gen}}&lt;br /&gt;
Runs a generator object.  These are stored in the generators table.&lt;br /&gt;
:''gen'': The generator object to run.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|reset|dot}}&lt;br /&gt;
Resets the map.&lt;br /&gt;
----&lt;br /&gt;
=== Dungeon Generation Functions ===&lt;br /&gt;
;{{moddef|desc|generate_tiled|dot}}&lt;br /&gt;
Creates a tiled dungeon, also known as a &amp;quot;normal&amp;quot; dungeon.  This only creates the layout, it does not place beings, items, stairs, barrels, or the player.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|maze_dungeon|dot||CellID|floor|CellID|wall|integer|granularity|integer|tries|integer|min_size|integer|max_size}}&lt;br /&gt;
Creates a maze dungeon.  This only creates the layout, it does not place beings, items, stairs, barrels, or the player.&lt;br /&gt;
:''floor'': The cell to use for the floor of the maze.&lt;br /&gt;
:''wall'': The cell to use for the wall of the maze.&lt;br /&gt;
:''granularity'': This denotes the size of the maze's paths.&lt;br /&gt;
:''tries'': Number of attempts to place a new wall in the maze.&lt;br /&gt;
:''min_size'': The smallest possible size of a wall.&lt;br /&gt;
:''max_size'': The largest possible size of a wall.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_caves_dungeon|dot}}&lt;br /&gt;
Runs the generation script for the cave dungeon.  This is an all inclusive function, it also places all beings and items.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_caves_2_dungeon|dot}}&lt;br /&gt;
Runs the generation script for the cave-city dungeon.  This is an all inclusive function, it also places all beings and items.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_lava_dungeon|dot}}&lt;br /&gt;
Runs the generation script for the lava dungeon.  This is an all inclusive function, it also places all beings and items.&lt;br /&gt;
----&lt;br /&gt;
=== Event Handler Functions ===&lt;br /&gt;
;{{moddef|desc|roll_event|dot}}&lt;br /&gt;
Picks an event from the events table and sets it up.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_flood_event|dot||integer|direction|integer|step|CellID|cell}}&lt;br /&gt;
Runs the setup script for the flood event.&lt;br /&gt;
:''direction'': Use 1 to flood from the left.  Use -1 to flood from the right.&lt;br /&gt;
:''step'': Number of turns (0.1 second intervals) between each flood step.&lt;br /&gt;
:''cell'': The cell to flood with.  This does not have to be a fluid cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_deadly_air_event|dot||integer|step}}&lt;br /&gt;
Runs the setup script for the deadly air event.&lt;br /&gt;
:''step'': Number of turns between each &amp;quot;chill&amp;quot; (loss of HP).&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_explosion_event|dot||integer|step|integer|size|integer|dice|integer|[content]}}&lt;br /&gt;
;{{moddef|desc|setup_explosion_event|dot||integer|step|Table|size|integer|dice|integer|[content]}}&lt;br /&gt;
Runs the setup script for the explosion event.&lt;br /&gt;
:''step'': Number of turns between each explosion.&lt;br /&gt;
:''size'': Either a number or a table of two numbers.  Indicates the size of each explosion.  If a table is supplied, the size is randomly chosen between the range supplied each time an explosion is created.&lt;br /&gt;
:''dice'': Number of d6 dice to use for the damage roll.&lt;br /&gt;
:''content'': ''Optional.'' The content to place in any space where the damage to a space is more than 20 points.  If omitted, nothing will placed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_targeted_event|dot||integer|step}}&lt;br /&gt;
Runs the setup script for the targeting event.&lt;br /&gt;
:''step'': Number of turns between each monster teleport.&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Modding:generator_API</id>
		<title>Modding:generator API</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Modding:generator_API"/>
				<updated>2013-04-25T19:08:29Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: All functions added, but there are some links needed for translation tables and tiles, so still under construction.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''This page is currently under construction.''&lt;br /&gt;
&lt;br /&gt;
The generator holds all of the ever-present functions used to create the random maps in DoomRL. It also contains a variety of helper functions, many of them useful if not vital to the creation of intricate and meticulous game design.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
Please note that the type &amp;quot;integer&amp;quot; indicates an numeric value without a decimal part.  It does not indicate the range of acceptable values.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellID&amp;quot; may be the numeric or string ID of a cell.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellSet&amp;quot; may be the numeric ID, string ID, or a list of numeric and/or string IDs.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;Flags&amp;quot; expects a list of [[Modding:Constants|flag constants]] of the indicated type.  &lt;br /&gt;
&lt;br /&gt;
An argument name in [square brackets] is an optional one.  The function description will indicate how the function operates if it is omitted.&lt;br /&gt;
&lt;br /&gt;
=== Generator API Function List ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 2px solid darkred; border-spacing: 0; font-size: 90%; margin: 0.25em 0.5em;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: darkred; color: yellow; font-size: 120%; text-align: center&amp;quot;|'''Generator Interface - Functions'''&lt;br /&gt;
 {{Table2Col&lt;br /&gt;
  |es=background: #333; &lt;br /&gt;
  |c1=font-weight:bold; text-align:right; vertical-align:top; padding:0px 2px;&lt;br /&gt;
  |c2=padding:0px 2px;&lt;br /&gt;
  ||'''[[#Basic Cell Handling Functions|Basic Cell Handling Functions]]'''&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|get_cell|dot||Coord|loc}}&lt;br /&gt;
  |{{modarg|string}}|{{moddef|list|get_cell_id|dot||Coord|loc}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|fast_get_cell|dot||integer|x|integer|y}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_cell|dot||Coord|loc|CellID|what}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fast_set_cell|dot||integer|x|integer|y|integer|what}}&lt;br /&gt;
  ||'''[[#Map Checking Functions|Map Checking Functions]]'''&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|around|dot||Coord|where|CellSet|what}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|cross_around|dot||Coord|where|CellSet|what}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty|dot||Coord|where|Flags|reqs}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty_area|dot||Area|where|Flags|reqs}}  &lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|scan|dot||Area|where|CellID|good}}&lt;br /&gt;
  ||'''[[#Map Searching Functions|Map Searching Functions]]'''&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|drop_coord|dot||Coord|where|Flags|reqs}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_coord|dot||CellSet|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|random_coord|dot||Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_random_coord|dot||CellSet|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_empty_coord|dot||CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|random_empty_coord|dot||Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_random_empty_coord|dot||CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|safe_empty_coord|dot||Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|standard_empty_coord|dot}}&lt;br /&gt;
  ||'''[[#Advanced Cell Handling Functions|Advanced Cell Handling Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fill|dot||CellID|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fill_pattern|dot||Area|where|boolean|horiz|Table|line1|Table|[line2]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fill_edges|dot||CellID|what}}&lt;br /&gt;
  |{{modarg|Table}}|{{moddef|list|each|dot||CellID|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_blood|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_permanence|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
  |{{modarg|Table}}|{{moddef|list|cell_set|dot||CellSet|cells}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|restore_walls|dot||CellID|wallCell|boolean|keepFluids}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|plot_line|dot||Coord|where|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|plot_lines|dot||Coord|where|Area|larea|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|scatter|dot||Area|where|CellID|good|CellID|fill|integer|count}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|scatter_blood|dot||Area|where|CellID|[good]|integer|count}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|scatter_put|dot||Area|where|Table|translation|string|tile|CellID|good|integer|count}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|transmute|dot||CellID|to|CellSet|from|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|transmute_marker|dot||Flag|marker|CellID|To|Area|[where]}}&lt;br /&gt;
  ||'''[[#Tile Handling Functions|Tile Handling Functions]]'''&lt;br /&gt;
  |{{modarg|Table}}|{{moddef|list|create_translation|dot||Table|code}}&lt;br /&gt;
  |{{modarg|Tile}}|{{moddef|list|tile_new|dot||string|map|Table|translation}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|tile_place|dot||Coord|where|Tile|what}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_tile|dot||Table|translation|string|tile|integer|x|integer|y}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_dungen_tile|dot||Table|code|Tile|tile|Coord|where}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_symmetry_quad|dot||string|tile|Table|translation}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_proto_map|dot||Coord|where|string|proto_map|string|proto_key|Table|code}}&lt;br /&gt;
  ||'''[[#Room Handling Functions|Room Handling Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|add_room|dot||Area|room|string|[class]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|add_rooms|dot}}&lt;br /&gt;
  |{{modarg|Room}}|{{moddef|list|get_room|dot||integer|min_size|integer|max_x|integer|max_y|integer|max_area|string|[class]}}&lt;br /&gt;
  |{{modarg|integer, integer}}|{{moddef|list|get_endpoints|dot||Coord|where|boolean|horiz|CellSet|what}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|handle_rooms|dot||integer|count|boolean|no_monsters}}&lt;br /&gt;
  ||'''[[#Generation Algorithm Functions|Generation Algorithm Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|run_drunkard_walk|dot||Area|where|Coord|start|integer|steps|CellID|fill|CellSet|[ignore]|boolean|[stop_at_edge]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|drunkard_walks|dot||integer|amount|integer|steps|CellID|fill|CellSet|[ignore]|boolean|[stop_at_edge]|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|contd_drunkard_walks|dot||integer|amount|integer|steps|CellID|fill|CellSet|edges1|CellSet|edges2|CellSet|[ignore]|boolean|[stop_at_edge]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|warehouse_fill|dot||CellSet|fill|Area|where|integer|size|integer|count|integer|special_chance|CellSet|special}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_blob|dot||Coord|start|integer|size|CellID|cell}}&lt;br /&gt;
  ||'''[[#Generator Helper Functions|Generator Helper Functions]]'''&lt;br /&gt;
  |{{modarg|&amp;lt;value&amp;gt;, &amp;lt;value&amp;gt;}}|{{moddef|list|roll_pair|dot||Table|list}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|being_weight|dot}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|item_amount|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|horiz_river|dot||CellID|cell|integer|width|boolean|[bridge]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|vert_river|dot||CellID|cell|integer|width|boolean|bridge|integer|position}}&lt;br /&gt;
{{moddef|list|vert_river|dot||CellID|cell|integer|width|boolean|bridge|Coord|position}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_rivers|dot||boolean|allow_horiz|boolean|allow_more}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_fluids|dot||Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_barrels|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_stairs|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_special_stairs|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|place_player|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|run|dot||Generator|gen}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|reset|dot}}&lt;br /&gt;
  ||'''[[#Dungeon Generation Functions|Dungeon Generation Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_tiled|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|maze_dungeon|dot||CellID|floor|CellID|wall|integer|granularity|integer|tries|integer|min_size|integer|max_size}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_caves_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_caves_2_dungeon|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|generate_lava_dungeon|dot}}&lt;br /&gt;
  ||'''[[#Event Handler Functions|Event Handler Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|roll_event|dot}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_flood_event|dot||integer|direction|integer|step|CellID|cell}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_deadly_air_event|dot||integer|step}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_explosion_event|dot||integer|step|integer|size|integer|dice|integer|[content]}}&lt;br /&gt;
{{moddef|list|setup_explosion_event|dot||integer|step|Table|size|integer|dice|integer|content}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|setup_targeted_event|dot||integer|step}}&lt;br /&gt;
  |}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Basic Cell Handling Functions ===&lt;br /&gt;
;{{moddef|desc|get_cell|dot|integer|Coord|loc}}&lt;br /&gt;
Gets the Numeric ID (NID) of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''loc'': The coordinates of the cell to get.&lt;br /&gt;
:'''Returns''': The NID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_cell_id|dot|string|Coord|loc}}&lt;br /&gt;
Gets the ID of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''loc'': The coordinates of the cell to get.&lt;br /&gt;
:'''Returns''': The string ID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fast_get_cell|dot|integer|integer|x|integer|y}}&lt;br /&gt;
Gets the Numeric ID (NID) of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''x'': The X position of the cell to get.&lt;br /&gt;
:''y'': The Y position of the cell to get.&lt;br /&gt;
:'''Returns''': The NID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_cell|dot||Coord|loc|CellID|what}}&lt;br /&gt;
Assigns a [[Modding:Cell|cell]] to a map position.&lt;br /&gt;
:''loc'': The coordinates of the position to set.&lt;br /&gt;
:''what'': The ID of the cell to assign to the position.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fast_set_cell|dot||integer|x|integer|y|integer|what}}&lt;br /&gt;
Assigns a [[Modding:Cell|cell]] to a map position.&lt;br /&gt;
:''x'': The X position of the cell to set.&lt;br /&gt;
:''y'': The Y position of the cell to set.&lt;br /&gt;
:''what'': The NID (string IDs not allowed) of the cell to assign to the position.&lt;br /&gt;
----&lt;br /&gt;
=== Map Checking Functions ===&lt;br /&gt;
;{{moddef|desc|around|dot|integer|Coord|where|CellSet|what}}&lt;br /&gt;
Checks the positions adjacent to a location (including diagonally adjacent) and returns the number of cells that match one of the indicated cell IDs.&lt;br /&gt;
:''where'': The coordinate to check around.  The coordinate sent in this way is not checked, only adjacent cells are.&lt;br /&gt;
:''what'': The cell(s) to check for.&lt;br /&gt;
:'''Returns''': The number of cells (from 0 to 8) that matched one of the ''what'' cell IDs.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|cross_around|dot|integer|Coord|where|CellSet|what}}&lt;br /&gt;
Checks the positions adjacent to a location (but not diagonally adjacent) and returns the number of cells that match one of the indicated cell IDs.&lt;br /&gt;
:''where'': The coordinates to check around.  The coordinate sent in this way is not checked, only adjacent cells are.&lt;br /&gt;
:''what'': The cell(s) to check for.&lt;br /&gt;
:'''Returns''': The number of cells (from 0 to 4) that matched one of the ''what'' cell IDs.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty|dot|boolean|Coord|where|Flags|reqs}}&lt;br /&gt;
Checks to see if the indicated cell is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The position to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the position cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the map position does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if the cell satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty_area|dot|boolean|Area|where|Flags|reqs}}&lt;br /&gt;
Checks to see if the indicated area is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The area to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the area cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the area does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if every cell in the area satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scan|dot|boolean|Area|where|CellID|good}}&lt;br /&gt;
Checks to see if the entire area is filled with a certain cell.&lt;br /&gt;
:''where'': The area to check.&lt;br /&gt;
:''good'': The cell to look for.&lt;br /&gt;
:'''Returns''': ''True'' if all cells in the area are ''good'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
=== Map Searching Functions ===&lt;br /&gt;
;{{moddef|desc|drop_coord|dot|Coord|Coord|where|Flags|reqs}}&lt;br /&gt;
Finds the nearest &amp;quot;empty&amp;quot; coordinate to a given coordinate, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The coordinate to try.  If this coordinate is &amp;quot;empty&amp;quot;, this coordinate will be returned.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': The nearest coordinate the satisfies the criteria.  If the supplied coordinate meets the criteria, that coordinate will be returned.  If not a nearby, random, coordinate will be checked. &lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_coord|dot|Coord|CellSet|what|Area|[where]}}&lt;br /&gt;
Searches the map for the first coordinate containing one of the indicated cell IDs.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': The coordinates of the first position that contains one of the ''what'' cell IDs.  The map is checked row by row starting from the top, going from left to right across each row.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_coord|dot|Coord|Area|[where]}}&lt;br /&gt;
Searches for a random coordinate within the specified area.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the coordinate to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_random_coord|dot|Coord|CellSet|what|Area|[where]}}&lt;br /&gt;
Searches for a random coordinate within the specified area that contains one of the specified cell IDs.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''where'' : ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_empty_coord|dot|Coord|CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for the first &amp;quot;empty&amp;quot; coordinate containing one of the indicated cell IDs, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''reqs'':  A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': The coordinates of the first position that meets the supplied criteria.  The map is checked row by row starting from the top, going from left to right across each row.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_empty_coord|dot|Coord|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for a random coordinate that is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the random coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_random_empty_coord|dot|Coord|CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for a random &amp;quot;empty&amp;quot; coordinate containing one of the indicated cell IDs, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''reqs'':  A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the random coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_square|dot|Coord|CellSet|what}}&lt;br /&gt;
Searches for a random 3x3 area containing only specified cells.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:'''Returns''': The center coordinate of the random 3x3 area.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|safe_empty_coord|dot|Coord|Area|[where]}}&lt;br /&gt;
Searches for a random coordinate that meets certain predetermined criteria.&lt;br /&gt;
&lt;br /&gt;
The function will try to find a coordinate that does not contain a being, item, staircase, wall, harmful terrain, spawning restrictions (cells marked with LF_NOSPAWN), and is more than 5 spaces from the player (EF_NOBEINGS, EF_NOITEMS, EF_NOSTAIRS, EF_NOBLOCK, EF_NOHARM, EF_NOSPAWN, and EF_NOSAFE).  If a valid space isn't found, the function will ignore distance from the player (EF_NOSAFE).  If a valid space still can't be found, the function will ignore stairs and harmful terrain (EF_NOSTAIRS and EF_NOHARM).&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the initial pass to.  If a valid coordinate is not found within the area after ignoring stairs and harmful terrain, the search is restarted and expanded automatically to the entire map.  If omitted, the entire map will be searched.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|standard_empty_coord|dot|Coord}}&lt;br /&gt;
Searches for a random coordinate that meets certain predetermined criteria.&lt;br /&gt;
&lt;br /&gt;
The function will search for a coordinate that does not contain a being, item, staircase, wall, harmful terrain, or spawning restrictions (EF_NOBEINGS, EF_NOITEMS, EF_NOSTAIRS, EF_NOBLOCK, EF_NOHARM, and EF_NOSPAWN).&lt;br /&gt;
:'''Returns''': A random coordinate that meets the criteria.&lt;br /&gt;
----&lt;br /&gt;
=== Advanced Cell Handling Functions ===&lt;br /&gt;
;{{moddef|desc|fill|dot||CellID|what|Area|[where]}}&lt;br /&gt;
Fills an area of the map with a given cell.&lt;br /&gt;
:''what'': The cell to fill with.&lt;br /&gt;
:''where'': ''Optional.'' The area to fill with the cell.  If omitted, the entire map will be filled.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fill_pattern|dot||Area|where|boolean|horiz|string|Table|line1|Table|[line2]}}&lt;br /&gt;
Fills an area of the map with a pattern of cells.&lt;br /&gt;
:''where'': The area to fill.&lt;br /&gt;
:''horiz'': If ''True'', the pattern will fill each row left to right, then move to the next row down in the area.  If ''False'', the pattern will fill each column top to bottom, then move to the next column right in the area. &lt;br /&gt;
:''line1'': The pattern to fill with.  If the pattern is shorter than the area size, the pattern will loop.  The pattern does not restart at the end of a row or column.&lt;br /&gt;
:''line2'': ''Optional.'' If given, each time the end of row (if ''horiz'' is ''True'') or column (if ''horiz'' is ''False'') is reached, the function will switch to filling with the other pattern.  That is, the first row will use ''line1'' then the second will use ''line2'', then the third will use ''line1'' again, etc.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fill_edges|dot||CellID|what}}&lt;br /&gt;
Fills the edges of the map with the given cell.&lt;br /&gt;
:''what'': The cell to fill with.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|each|dot|Table|CellID|what|Area|[where]}}&lt;br /&gt;
Searches for a cell and returns a table containing every location it was found.&lt;br /&gt;
:''what'': The cell to search for.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.&lt;br /&gt;
:'''Returns''': A table containing a list of [[Modding:Coord|Coord]] objects.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_blood|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
Adds blood to the map or removes blood from it.&lt;br /&gt;
:''where'': ''Optional.'' The area to affect.  If omitted, the entire map will selected.&lt;br /&gt;
:''value'': ''Optional.'' ''True'' adds blood.  ''False'' removes it.  If omitted, the default is to add blood.&lt;br /&gt;
:''what'': ''Optional.'' If provided, only locations containing the given cell are affected.  If omitted, all cells in the area are affected.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_permanence|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
Makes cell permanent or removes their permanence.&lt;br /&gt;
:''where'': ''Optional.'' The area to affect.  If omitted, the entire map will be selected.&lt;br /&gt;
:''value'': ''Optional.'' ''True'' adds permanence.  ''False'' removes it.  If omitted, the default is to add permanence.&lt;br /&gt;
:''what'': ''Optional.'' If provided, only locations containing the given cell are affected.  If omitted, wall cells (which includes crate cells) are affected.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|cell_set|dot|Table|CellSet|cells}}&lt;br /&gt;
Creates a cell group.&lt;br /&gt;
:''cells'': A list of cells to add to the group.&lt;br /&gt;
:'''Returns''': A cell group table.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|restore_walls|dot||CellID|wallCell|boolean|keepFluids}}&lt;br /&gt;
Fixes the edge walls of the map.&lt;br /&gt;
:''wallCell'': The cell to fill the edge of the map with.&lt;br /&gt;
:''keepFluids'': ''True'' to maintain any fluid tiles on the edge of the map.  ''False'' to overwrite them.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|plot_line|dot||Coord|where|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
Splits an area into two at the indicated location.&lt;br /&gt;
:''where'': The starting point.&lt;br /&gt;
:''horiz'': ''True'' draws along the indicated X position of the ''where'' coordinate.  ''False'' draws along the indicated Y position of the ''where'' coordinate.&lt;br /&gt;
:''cell'': The cell that will be used to split the area.&lt;br /&gt;
:''block'': The cell(s) that block the line plotting.  The drawn line will stop before hitting a coordinate with one of these cells.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|plot_lines|dot||Coord|where|Area|larea|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
Splits an area into two at the indicated location.&lt;br /&gt;
:''where'': The starting point.&lt;br /&gt;
:''larea'': The boundaries of the line.  The line will not extend past the edge of the area.&lt;br /&gt;
:''horiz'': ''True''draws along the indicated X position of the ''where'' coordinate.  ''False'' draws along the indicated Y position of the ''where'' coordinate.&lt;br /&gt;
:''cell'': The cell that will be used to split the area.&lt;br /&gt;
:''block'': The cell(s) that block the line plotting.  The drawn line will stop before hitting a coordinate with one of these cells.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scatter|dot||Area|where|CellID|good|CellID|fill|integer|count}}&lt;br /&gt;
Randomly places a certain cell around the map.&lt;br /&gt;
:''where'': The area to scatter the cell in.&lt;br /&gt;
:''good'': Only this locations with this cell will be changed by the function.&lt;br /&gt;
:''fill'': The cell to scatter around the area.&lt;br /&gt;
:''count'': The number to attempt to place.  If the chosen location is not ''good'', then it will not cha it.  The final number placed may be less than ''count'' (or even 0), but never more.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scatter_blood|dot||Area|where|CellID|[good]|integer|count}}&lt;br /&gt;
Randomly adds blood in an area.&lt;br /&gt;
:''where'': The area to scatter blood in.&lt;br /&gt;
:''good'': ''Optional.'' If defined, only locations with this cell will have blood added.  If omitted, any location my have blood added.&lt;br /&gt;
:''count'': The number of attempts.  On each attempt, a random cell in the area will be chosen to have blood added.  The number of cell that will end up bloody may be less than ''count'' (or even 0), but never more.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scatter_put|dot||Area|where|Table|translation|string|tile|CellID|good|integer|count}}&lt;br /&gt;
Randomly adds a specified tile (a defined arrangement of cells) around the map.&lt;br /&gt;
:''where'': The area to scatter the tile in.  The tiles will only be placed in locations entirely within the area.&lt;br /&gt;
:''translation'': A table with to be used with the ''tile'' argument.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''tile'': A multi-line string, one row of the tile per line, that lays out the arrangment of the cells.  Refer to this (will be linked soon) for more information&lt;br /&gt;
:''good'': Only locations with this cell will be valid for the tile placement.  If any coordinates of the selected placement area are not ''good'', the tile will not be placed at that location.&lt;br /&gt;
:''count'': The number of tiles to try to place.  The placement will continue until this many have been placed, or 10,000 attempts have been made, whichever comes first.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|transmute|dot||CellID|to|CellSet|from|Area|[where]}}&lt;br /&gt;
Changes all of one cell on the map to another cell.&lt;br /&gt;
:''to'': The cell that will replace the existing cells.&lt;br /&gt;
:''from'': The cell(s) that will be replaced.&lt;br /&gt;
:''where'': ''Optional.'' If specified, only cells in the area are changed.  If omitted, the function will change cells across the entire map.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|transmute_marker|dot||Flag|marker|CellID|To|Area|[where]}}&lt;br /&gt;
Changes all positions on the map that have a specified LightFlag (a named constant starting with &amp;quot;LF&amp;quot;, no underscore) to another cell.&lt;br /&gt;
:''marker'': The LightFlag to check for.  Only cells with this flag will be changed.&lt;br /&gt;
:''to'': The cell that will replace the existing cells.&lt;br /&gt;
:''where'': ''Optional.'' If specified, only cells in the area are changed.  If omitted, the function will change cells across the entire map.&lt;br /&gt;
----&lt;br /&gt;
=== Tile Handling Functions ===&lt;br /&gt;
;{moddef|desc|create_translation|dot|Table|Table|code}}&lt;br /&gt;
Parses a translation table.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''code'': The translation table.&lt;br /&gt;
:'''Returns''': A parsed translation table.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|tile_new|dot|Tile|string|map|Table|translation}}&lt;br /&gt;
Creates a new tile object.&lt;br /&gt;
:''map'': A multi-line string containing the arrangement of the tile using the ''translation'' to convert the characters to cells.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''translation'': A table with to be used with the ''map'' argument.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:'''Returns''': The new tile object.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|tile_place|dot||Coord|where|Tile|what}}&lt;br /&gt;
Places the cells of the tile on the map.&lt;br /&gt;
:''where'': The coordinate that the upper-left of the tile should reside at.&lt;br /&gt;
:''what'': The tile object that will be placed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_tile|dot||Table|translation|string|tile|integer|x|integer|y}}&lt;br /&gt;
Combines the tile_new and tile_place functions together, by placing a tile using a string and translation table.&lt;br /&gt;
:''translation'': A table with to be used with the ''tile'' argument.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''tile'': A multi-line string containing the arrangement of the tile using the ''translation'' to convert the characters to cells.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''x'': The X position that the tile will be placed at.&lt;br /&gt;
:''y'': The Y position that the tile will be placed at.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_dungen_tile|dot||Table|code|Tile|tile|Coord|where}}&lt;br /&gt;
Places an entire tile, including beings and items in the translation, on the map.&lt;br /&gt;
:''code'': The translation table.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''tile'': A multi-line string containing the arrangement of the tile using the ''translation'' to convert the characters to cells and indicate the positions of the beings and items.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''where'': The coordinate the tile will be placed at.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_symmetry_quad|dot||string|tile|Table|translation}}&lt;br /&gt;
Takes a tile object and places it in all four corners.  The tile object should be setup for the upper left corner and will be mirrored to the other corners.  The tiles are placed one space from the map edge.&lt;br /&gt;
:''tile'': A multi-line string containing the arrangement of the tile using the ''translation'' to convert the characters to cells and indicate the positions of the beings and items.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''translation'': The translation table.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_proto_map|dot||Coord|where|string|proto_map|string|proto_key|Table|code}}&lt;br /&gt;
Creates a map using multiple tile sets.&lt;br /&gt;
:''where'': The upper-left position of the map where the tiles will be layout from.&lt;br /&gt;
:''proto_map'': A string indicating the arrangement of the different pieces of the map.  e.g., &amp;quot;ABCD&amp;quot;, will lay out 4 different tiles with A on the far left and D on the far right.&lt;br /&gt;
:''proto_key'': A table containing, for each character in ''proto_map'', a table of the possible tiles for that section.&lt;br /&gt;
:''code'': The translation table for all the tile possibilities.  Refer to this (will be linked soon) for more information.  All tiles use the same translation table.&lt;br /&gt;
----&lt;br /&gt;
=== Room Handling Functions ===&lt;br /&gt;
;{{moddef|desc|add_room|dot||Area|room|string|[class]}}&lt;br /&gt;
Marks an area that can become a special room.&lt;br /&gt;
:''room'': The area of the room.  This includes the walls.&lt;br /&gt;
:''class'': ''Optional.'' A string used to denote which room generators can be used on this room.  If omitted, the class used is &amp;quot;closed&amp;quot;.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|add_rooms|dot}}&lt;br /&gt;
Finds all the areas that can be rooms on a map and adds them to the appropriate meta-map tables.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_room|dot|Room|integer|min_size|integer|max_x|integer|max_y|integer|max_area|string|class}}&lt;br /&gt;
Selects a room given certain criteria.&lt;br /&gt;
:''min_size'': The smallest X and Y dimensions the room can be.&lt;br /&gt;
:''max_x'': The maximum width of the room.&lt;br /&gt;
:''max_y'': The maximum height of the room.&lt;br /&gt;
:''max_area'': The largest area the room can be.&lt;br /&gt;
:''class'': ''Optional.'' The string denoting which room classes are valid for this room generator.  If omitted, &amp;quot;any&amp;quot; is used, which does not restrict the selection of rooms.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_endpoints|dot|integer, integer|Coord|where|boolean|horiz|CellSet|what}}&lt;br /&gt;
Finds the ends of a line of cells.&lt;br /&gt;
:''where'': The starting coordinate.&lt;br /&gt;
:''horiz'': ''True'' checks horizontally.  ''False'' checks vertically.&lt;br /&gt;
:''what'': The cell(s) that make up the line to check.  The functions stops at the first cell '''not''' in this list.&lt;br /&gt;
:'''Returns''': Two integers.  If ''horiz'' is ''True'', these are the X positions the line stops at.  If ''horiz'' is ''False'', these are the Y positions the line stops at.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|handle_rooms|dot||integer|count|boolean|no_monsters}}&lt;br /&gt;
Runs the rooms selection and setup process for a map.&lt;br /&gt;
:''count'': The number of rooms to attempt to place.&lt;br /&gt;
:''no_monsters'': ''True'' will exclude room generators that place monsters.  ''False'' will not.&lt;br /&gt;
----&lt;br /&gt;
=== Generation Algorithm Functions ===&lt;br /&gt;
;{{moddef|desc|run_drunkard_walk|dot||Area|where|Coord|start|integer|steps|CellID|fill|CellSet|[ignore]|boolean|[stop_at_edge]|Area|where}}&lt;br /&gt;
Runs an algorithm that walks to random adjacent spaces.&lt;br /&gt;
:''where'': The area that the algorithm will run in.  If the algorithm tries to leave the area, it will stop early or will be pushed back in the area (''stop_at_edge'' will determine which of these happen).&lt;br /&gt;
:''start'': The location the algorithm will begin at.&lt;br /&gt;
:''steps'': The number of steps the algorithm will take.  The number of spaces covered by the algorithm will be at most this number.&lt;br /&gt;
:''fill'': The cell that will be placed at each location the algorithm hits.&lt;br /&gt;
:''ignore'': ''Optional.'' If specified, the algorithm will not place the ''fill'' cell in any location that has one of the cell(s) specified.  If omitted, no locations are ignored.&lt;br /&gt;
:''stop_at_edge'': ''Optional.'' If ''True'', the algorithm will end early if it moves past the end of the area.  If ''False'', the algorithm will clamp to the area (any moves to outside the area get moved back in the area).  If omitted, the default is to clamp.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|drunkard_walks|dot||integer|amount|integer|steps|CellID|fill|CellSet|[ignore]|boolean|[stop_at_edge]|Area|[where]}}&lt;br /&gt;
Runs multiple &amp;quot;drunken walk&amp;quot; algorithms.&lt;br /&gt;
:''amount'': The number of times to perform the algorithm.&lt;br /&gt;
:''steps'': The number of steps each run of the algorithm will take.  The number of spaces covered by the algorithm will be at most the ''amount'' times the number of ''steps''.&lt;br /&gt;
:''fill'': The cell that will be placed at each location the algorithm hits.&lt;br /&gt;
:''ignore'': ''Optional.'' If specified, the algorithm will not place the ''fill'' cell in any location that has one of the cell(s) specified.  If omitted, no locations are ignored.&lt;br /&gt;
:''stop_at_edge'': ''Optional.'' If ''True'', the algorithm will end early if it moves past the end of the area.  If ''False'', the algorithm will clamp to the area (any moves to outside the area get moved back in the area).  If omitted, the default is to clamp.&lt;br /&gt;
:''where'': ''Optional.'' The area the algorithm will run in.  If the algorithm tries to leave the area, it will stop early or will be pushed back in the area (''stop_at_edge'' will determine which of these happen).  If omitted, the default is entire area minus the very edge.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|contd_drunkard_walks|dot||integer|amount|integer|steps|CellID|fill|CellSet|edges1|CellSet|edges2|CellSet|[ignore]|boolean|[stop_at_edge]}}&lt;br /&gt;
Runs multiple &amp;quot;drunken walk&amp;quot; algorithms starting at a space that doesn't have certain cells around it.&lt;br /&gt;
:''amount'': The number of times to perform the algorithm.&lt;br /&gt;
:''steps'': The number of steps each run of the algorithm will take.  The number of spaces covered by the algorithm will be at most the ''amount'' times the number of ''steps''.&lt;br /&gt;
:''fill'': The cell that will be placed at each location the algorithm hits.&lt;br /&gt;
:''edges1'': The algorithm will not start on a space with a cell listed here next to it.&lt;br /&gt;
:''edges2'': The algorithm will not start on a space with a cell listed here next to it.&lt;br /&gt;
:''ignore'': ''Optional.'' If specified, the algorithm will not place the ''fill'' cell in any location that has one of the cell(s) specified.  If omitted, no locations are ignored.&lt;br /&gt;
:''stop_at_edge'': ''Optional.'' If ''True'', the algorithm will end early if it moves past the end of the area.  If ''False'', the algorithm will clamp to the area (any moves to outside the area get moved back in the area).  If omitted, the default is to clamp.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|warehouse_fill|dot||CellID|fill|Area|where|integer|[size]|integer|[count]|integer|[special_chance]|CellID|[special]}}&lt;br /&gt;
Fills an area with random squares of cells.&lt;br /&gt;
:''fill'': The cell(s) to use for each square.  If a list is given, one is chosen at random for each square.&lt;br /&gt;
:''where'': The area to fill.&lt;br /&gt;
:''size'': ''Optional.'' The size of the squares to use. If omitted, the default is 2.&lt;br /&gt;
:''count'': ''Optional.'' The number of attempts. If omitted, the default is 50.&lt;br /&gt;
:''special_chance'': ''Optional.'' A number indicating the probability of using a special list of cells to fill the square with instead of the ''fill'' list.  The roll used for the chance is based on the ''size'' parameter.  A number from 1 to (100 * ''size'') is chosen for each square and if the roll is less than the special_chance number, the ''special'' cell set is used to fill the square instead. If omitted, all squares will be filled from the ''fill'' set.&lt;br /&gt;
:''special'': ''Optional.'' The list of cells to use if the special set is to be used, based on ''special_chance''. If omitted, all squares will be filled from the ''fill'' set.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_blob|dot||Coord|start|integer|size|CellID|cell}}&lt;br /&gt;
Fills an area by expanding to random edge coordinates.&lt;br /&gt;
:''start'': The position to start the blob at.&lt;br /&gt;
:''size'': The number of spaces to expand the blob to.&lt;br /&gt;
:''cell'': The cell to fill the blob area with.&lt;br /&gt;
----&lt;br /&gt;
=== Generator Helper Functions ===&lt;br /&gt;
;{{moddef|desc|roll_pair|dot|&amp;lt;value&amp;gt;, &amp;lt;value&amp;gt;|Table|list}}&lt;br /&gt;
Takes a list of values of any type and returns two different values randomly from the list.&lt;br /&gt;
:''list'': The list to choose from.&lt;br /&gt;
:'''Returns''': Two different values.  If the list only contains one choice, it will be returned, but only once.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|being_weight|dot}}&lt;br /&gt;
Gets the total danger level for the current dungeon level.&lt;br /&gt;
'''Returns''': The danger level for the current dungeon level.  This value is calcuated using the current difficulty and ''level.danger_level''.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|item_amount|dot}}&lt;br /&gt;
Gets the number of items to drop for the current dungeon level.&lt;br /&gt;
'''Returns''': The number of items to drop for the current dungeon level.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|horiz_river|dot||CellID|cell|integer|width|boolean|[bridge]}}&lt;br /&gt;
Places a horizontal river on the map.&lt;br /&gt;
:''cell'': The cell to use for the river.  It does not have to be a fluid cell.&lt;br /&gt;
:''width'': The width of the river.&lt;br /&gt;
:''bridge'': ''Optional.'' If ''True'', a 2 space wide bridge will be placed at a random coordinate on the river.  If ''False'', no bridge will be placed.  If omitted, the default is to not place a bridge.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|vert_river|dot||CellID|cell|integer|width|boolean|bridge|integer|[position]}}&lt;br /&gt;
;{{moddef|desc|vert_river|dot||CellID|cell|integer|width|boolean|bridge|Coord|[position]}}&lt;br /&gt;
Places a vertical river on the map.&lt;br /&gt;
:''cell'': The cell to use for the river.  It does not have to be a fluid cell.&lt;br /&gt;
:''width'': The width of the river.&lt;br /&gt;
:''bridge'': ''Optional.'' If ''True'', a 2 space wide bridge will be placed at a random coordinate on the river.  If ''False'', no bridge will be placed.  If omitted, the default is to not place a bridge.&lt;br /&gt;
:: NOTE: Because of a bug, a bridge will always be placed on the river, even if this value is set to ''False'' or omitted.&lt;br /&gt;
:''position'':  A coordinate or an integer.  If an integer is supplied, this is the X position of the river's left edge.  If a coordinate is supplied, the river will start at this coordinate.  If omitted, the river's left edge will be selected from between X = 19 to 58.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_rivers|dot||boolean|allow_horiz|boolean|allow_more}}&lt;br /&gt;
Creates rivers based on normal DoomRL river generation.&lt;br /&gt;
:''allow_horiz'': ''True'' allows horizontal rivers to be generated.  ''False'' will prevent the generation of horizontal rivers.&lt;br /&gt;
:''allow_more'': ''True'' allows multiple vertical rivers.  ''False'' will prevent more than one vertical river from being placed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_fluids|dot||Area|[where]}}&lt;br /&gt;
Creates fluids based on normal DoomRL fluid generation.&lt;br /&gt;
:''where'': ''Optional.'' The area to generate fluids in.  If omitted, the area used will be the entire map minus the very edge.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_barrels|dot}}&lt;br /&gt;
Creates barrels based on normal DoomRL barrel generation.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_stairs|dot}}&lt;br /&gt;
Creates the normal staircase based on normal DoomRL stair generation.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_special_stairs|dot}}&lt;br /&gt;
Creates the special staircase based on normal DoomRL special stair generation.  Whether a special staircase is placed depends on the level.special_exit value.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|place_player|dot}}&lt;br /&gt;
Places the player on a random empty space.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|run|dot||Generator|gen}}&lt;br /&gt;
Runs a generator object.  These are stored in the generators table.&lt;br /&gt;
:''gen'': The generator object to run.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|reset|dot}}&lt;br /&gt;
Resets the map.&lt;br /&gt;
----&lt;br /&gt;
=== Dungeon Generation Functions ===&lt;br /&gt;
;{{moddef|desc|generate_tiled|dot}}&lt;br /&gt;
Creates a tiled dungeon, also known as a &amp;quot;normal&amp;quot; dungeon.  This only creates the layout, it does not place beings, items, stairs, barrels, or the player.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|maze_dungeon|dot||CellID|floor|CellID|wall|integer|granularity|integer|tries|integer|min_size|integer|max_size}}&lt;br /&gt;
Creates a maze dungeon.  This only creates the layout, it does not place beings, items, stairs, barrels, or the player.&lt;br /&gt;
:''floor'': The cell to use for the floor of the maze.&lt;br /&gt;
:''wall'': The cell to use for the wall of the maze.&lt;br /&gt;
:''granularity'': This denotes the size of the maze's paths.&lt;br /&gt;
:''tries'': Number of attempts to place a new wall in the maze.&lt;br /&gt;
:''min_size'': The smallest possible size of a wall.&lt;br /&gt;
:''max_size'': The largest possible size of a wall.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_caves_dungeon|dot}}&lt;br /&gt;
Runs the generation script for the cave dungeon.  This is an all inclusive function, it also places all beings and items.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_caves_2_dungeon|dot}}&lt;br /&gt;
Runs the generation script for the cave-city dungeon.  This is an all inclusive function, it also places all beings and items.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|generate_lava_dungeon|dot}}&lt;br /&gt;
Runs the generation script for the lava dungeon.  This is an all inclusive function, it also places all beings and items.&lt;br /&gt;
----&lt;br /&gt;
=== Event Handler Functions ===&lt;br /&gt;
;{{moddef|desc|roll_event|dot}}&lt;br /&gt;
Picks an event from the events table and sets it up.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_flood_event|dot||integer|direction|integer|step|CellID|cell}}&lt;br /&gt;
Runs the setup script for the flood event.&lt;br /&gt;
:''direction'': Use 1 to flood from the left.  Use -1 to flood from the right.&lt;br /&gt;
:''step'': Number of turns (0.1 second intervals) between each flood step.&lt;br /&gt;
:''cell'': The cell to flood with.  This does not have to be a fluid cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_deadly_air_event|dot||integer|step}}&lt;br /&gt;
Runs the setup script for the deadly air event.&lt;br /&gt;
:''step'': Number of turns between each &amp;quot;chill&amp;quot; (loss of HP).&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_explosion_event|dot||integer|step|integer|size|integer|dice|integer|[content]}}&lt;br /&gt;
;{{moddef|desc|setup_explosion_event|dot||integer|step|Table|size|integer|dice|integer|[content]}}&lt;br /&gt;
Runs the setup script for the explosion event.&lt;br /&gt;
:''step'': Number of turns between each explosion.&lt;br /&gt;
:''size'': Either a number or a table of two numbers.  Indicates the size of each explosion.  If a table is supplied, the size is randomly chosen between the range supplied each time an explosion is created.&lt;br /&gt;
:''dice'': Number of d6 dice to use for the damage roll.&lt;br /&gt;
:''content'': ''Optional.'' The content to place in any space where the damage to a space is more than 20 points.  If omitted, nothing will placed.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|setup_targeted_event|dot||integer|step}}&lt;br /&gt;
Runs the setup script for the targeting event.&lt;br /&gt;
:''step'': Number of turns between each monster teleport.&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Template:Table2Col</id>
		<title>Template:Table2Col</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Template:Table2Col"/>
				<updated>2013-04-25T19:06:15Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Extending the tempate.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{1|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{2|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{3|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{4|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{5|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{6|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{7|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{8|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{9|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{10|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{11|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{12|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{13|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{14|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{15|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{16|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{17|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{18|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{19|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{20|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{21|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{22|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{23|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{24|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{25|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{26|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{27|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{28|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{29|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{30|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{31|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{32|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{33|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{34|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{35|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{36|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{37|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{38|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{39|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{40|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{41|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{42|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{43|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{44|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{45|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{46|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{47|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{48|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{49|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{50|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{51|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{52|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{53|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{54|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{55|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{56|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{57|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{58|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{59|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{60|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{61|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{62|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{63|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{64|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{65|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{66|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{67|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{68|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{69|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{70|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{71|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{72|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{73|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{74|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{75|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{76|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{77|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{78|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{79|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{80|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{81|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{82|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{83|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{84|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{85|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{86|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{87|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{88|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{89|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{90|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{91|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{92|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{93|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{94|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{95|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{96|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{97|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{98|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{99|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{100|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{101|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{102|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{103|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{104|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{105|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{106|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{107|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{108|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{109|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{110|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{111|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{112|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{113|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{114|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{115|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{116|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{117|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{118|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{119|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{120|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{121|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{122|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{123|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{124|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{125|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{126|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{127|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{128|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{129|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{130|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{131|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{132|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{133|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{134|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{135|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{136|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{137|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{138|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{139|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{140|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{141|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{142|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{143|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{144|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{145|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{146|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{147|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{148|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{149|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{150|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{151|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{152|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{153|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{154|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{155|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{156|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{157|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{158|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{159|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{160|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{161|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{162|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{163|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{164|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{165|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{166|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{167|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{168|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{169|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{170|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{171|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{172|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{173|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{174|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{175|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{176|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{177|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{178|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{179|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{180|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{181|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{182|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{183|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{184|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{185|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{186|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{187|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{188|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{189|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{190|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{191|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{192|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{193|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{194|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{195|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{196|}}}&lt;br /&gt;
|-style=&amp;quot;{{{os|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{197|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{198|}}}&lt;br /&gt;
|-style=&amp;quot;{{{es|}}}&amp;quot;&lt;br /&gt;
|style=&amp;quot;{{{c1|}}}&amp;quot;|{{{199|}}}&lt;br /&gt;
|style=&amp;quot;{{{c2|}}}&amp;quot;|{{{200|}}}&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Modding:generator_API</id>
		<title>Modding:generator API</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Modding:generator_API"/>
				<updated>2013-04-22T07:23:17Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Adding the rest of the advanced cell functions, still under construction.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''This page is currently under construction.''&lt;br /&gt;
&lt;br /&gt;
The generator holds all of the ever-present functions used to create the random maps in DoomRL. It also contains a variety of helper functions, many of them useful if not vital to the creation of intricate and meticulous game design.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
Please note that the type &amp;quot;integer&amp;quot; indicates an numeric value without a decimal part.  It does not indicate the range of acceptable values.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellID&amp;quot; may be the numeric or string ID of a cell.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellSet&amp;quot; may be the numeric ID, string ID, or a list of numeric and/or string IDs.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;Flags&amp;quot; expects a list of [[Modding:Constants|flag constants]] of the indicated type.  &lt;br /&gt;
&lt;br /&gt;
An argument name in [square brackets] is an optional one.  The function description will indicate how the function operates if it is omitted.&lt;br /&gt;
&lt;br /&gt;
=== Generator API Function List ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 2px solid darkred; border-spacing: 0; font-size: 90%; margin: 0.25em 0.5em;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: darkred; color: yellow; font-size: 120%; text-align: center&amp;quot;|'''Generator Interface - Functions'''&lt;br /&gt;
 {{Table2Col&lt;br /&gt;
  |es=background: #333; &lt;br /&gt;
  |c1=font-weight:bold; text-align:right; vertical-align:top; padding:0px 2px;&lt;br /&gt;
  |c2=padding:0px 2px;&lt;br /&gt;
  ||'''[[#Basic Cell Handling Functions|Basic Cell Handling Functions]]'''&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|get_cell|dot||Coord|loc}}&lt;br /&gt;
  |{{modarg|string}}|{{moddef|list|get_cell_id|dot||Coord|loc}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|fast_get_cell|dot||integer|x|integer|y}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_cell|dot||Coord|loc|CellID|what}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fast_set_cell|dot||integer|x|integer|y|integer|what}}&lt;br /&gt;
  ||'''[[#Map Checking Functions|Map Checking Functions]]'''&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|around|dot||Coord|where|CellSet|what}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|cross_around|dot||Coord|where|CellSet|what}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty|dot||Coord|where|Flags|reqs}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty_area|dot||Area|where|Flags|reqs}}  &lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|scan|dot||Area|where|CellID|good}}&lt;br /&gt;
  ||'''[[#Map Searching Functions|Map Searching Functions]]'''&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|drop_coord|dot||Coord|where|Flags|reqs}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_coord|dot||CellSet|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|random_coord|dot||Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_random_coord|dot||CellSet|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_empty_coord|dot||CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|random_empty_coord|dot||Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_random_empty_coord|dot||CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|safe_empty_coord|dot||Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|standard_empty_coord|dot}}&lt;br /&gt;
  ||'''[[#Advanced Cell Handling Functions|Advanced Cell Handling Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fill|dot||CellID|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fill_pattern|dot||Area|where|boolean|horiz|Table|line1|Table|[line2]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fill_edges|dot||CellID|what}}&lt;br /&gt;
  |{{modarg|Table}}|{{moddef|list|each|dot||CellID|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_blood|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_permanence|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
  |{{modarg|Table}}|{{moddef|list|cell_set|dot||CellSet|cells}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|restore_walls|dot||CellID|wallCell|boolean|keepFluids}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|plot_line|dot||Coord|where|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|plot_lines|dot||Coord|where|Area|larea|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|scatter|dot||Area|where|CellID|good|CellID|fill|integer|count}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|scatter_blood|dot||Area|where|CellID|[good]|integer|count}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|scatter_put|dot||Area|where|Table|translation|String|tile|CellID|good|integer|count}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|transmute|dot||CellID|to|CellSet|from|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|transmute_marker|dot||Flag|marker|CellID|To|Area|[where]}}&lt;br /&gt;
  &lt;br /&gt;
  |}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Basic Cell Handling Functions ===&lt;br /&gt;
;{{moddef|desc|get_cell|dot|integer|Coord|loc}}&lt;br /&gt;
Gets the Numeric ID (NID) of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''loc'': The coordinates of the cell to get.&lt;br /&gt;
:'''Returns''': The NID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_cell_id|dot|string|Coord|loc}}&lt;br /&gt;
Gets the ID of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''loc'': The coordinates of the cell to get.&lt;br /&gt;
:'''Returns''': The string ID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fast_get_cell|dot|integer|integer|x|integer|y}}&lt;br /&gt;
Gets the Numeric ID (NID) of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''x'': The X position of the cell to get.&lt;br /&gt;
:''y'': The Y position of the cell to get.&lt;br /&gt;
:'''Returns''': The NID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_cell|dot||Coord|loc|CellID|what}}&lt;br /&gt;
Assigns a [[Modding:Cell|cell]] to a map position.&lt;br /&gt;
:''loc'': The coordinates of the position to set.&lt;br /&gt;
:''what'': The ID of the cell to assign to the position.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fast_set_cell|dot||integer|x|integer|y|integer|what}}&lt;br /&gt;
Assigns a [[Modding:Cell|cell]] to a map position.&lt;br /&gt;
:''x'': The X position of the cell to set.&lt;br /&gt;
:''y'': The Y position of the cell to set.&lt;br /&gt;
:''what'': The NID (string IDs not allowed) of the cell to assign to the position.&lt;br /&gt;
----&lt;br /&gt;
=== Map Checking Functions ===&lt;br /&gt;
;{{moddef|desc|around|dot|integer|Coord|where|CellSet|what}}&lt;br /&gt;
Checks the positions adjacent to a location (including diagonally adjacent) and returns the number of cells that match one of the indicated cell IDs.&lt;br /&gt;
:''where'': The coordinate to check around.  The coordinate sent in this way is not checked, only adjacent cells are.&lt;br /&gt;
:''what'': The cell(s) to check for.&lt;br /&gt;
:'''Returns''': The number of cells (from 0 to 8) that matched one of the ''what'' cell IDs.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|cross_around|dot|integer|Coord|where|CellSet|what}}&lt;br /&gt;
Checks the positions adjacent to a location (but not diagonally adjacent) and returns the number of cells that match one of the indicated cell IDs.&lt;br /&gt;
:''where'': The coordinates to check around.  The coordinate sent in this way is not checked, only adjacent cells are.&lt;br /&gt;
:''what'': The cell(s) to check for.&lt;br /&gt;
:'''Returns''': The number of cells (from 0 to 4) that matched one of the ''what'' cell IDs.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty|dot|boolean|Coord|where|Flags|reqs}}&lt;br /&gt;
Checks to see if the indicated cell is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The position to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the position cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the map position does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if the cell satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty_area|dot|boolean|Area|where|Flags|reqs}}&lt;br /&gt;
Checks to see if the indicated area is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The area to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the area cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the area does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if every cell in the area satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scan|dot|boolean|Area|where|CellID|good}}&lt;br /&gt;
Checks to see if the entire area is filled with a certain cell.&lt;br /&gt;
:''where'': The area to check.&lt;br /&gt;
:''good'': The cell to look for.&lt;br /&gt;
:'''Returns''': ''True'' if all cells in the area are ''good'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
=== Map Searching Functions ===&lt;br /&gt;
;{{moddef|desc|drop_coord|dot|Coord|Coord|where|Flags|reqs}}&lt;br /&gt;
Finds the nearest &amp;quot;empty&amp;quot; coordinate to a given coordinate, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The coordinate to try.  If this coordinate is &amp;quot;empty&amp;quot;, this coordinate will be returned.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': The nearest coordinate the satisfies the criteria.  If the supplied coordinate meets the criteria, that coordinate will be returned.  If not a nearby, random, coordinate will be checked. &lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_coord|dot|Coord|CellSet|what|Area|[where]}}&lt;br /&gt;
Searches the map for the first coordinate containing one of the indicated cell IDs.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': The coordinates of the first position that contains one of the ''what'' cell IDs.  The map is checked row by row starting from the top, going from left to right across each row.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_coord|dot|Coord|Area|[where]}}&lt;br /&gt;
Searches for a random coordinate within the specified area.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the coordinate to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_random_coord|dot|Coord|CellSet|what|Area|[where]}}&lt;br /&gt;
Searches for a random coordinate within the specified area that contains one of the specified cell IDs.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''where'' : ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_empty_coord|dot|Coord|CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for the first &amp;quot;empty&amp;quot; coordinate containing one of the indicated cell IDs, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''reqs'':  A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': The coordinates of the first position that meets the supplied criteria.  The map is checked row by row starting from the top, going from left to right across each row.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_empty_coord|dot|Coord|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for a random coordinate that is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the random coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_random_empty_coord|dot|Coord|CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for a random &amp;quot;empty&amp;quot; coordinate containing one of the indicated cell IDs, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''reqs'':  A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the random coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_square|dot|Coord|CellSet|what}}&lt;br /&gt;
Searches for a random 3x3 area containing only specified cells.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:'''Returns''': The center coordinate of the random 3x3 area.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|safe_empty_coord|dot|Coord|Area|[where]}}&lt;br /&gt;
Searches for a random coordinate that meets certain predetermined criteria.&lt;br /&gt;
&lt;br /&gt;
The function will try to find a coordinate that does not contain a being, item, staircase, wall, harmful terrain, spawning restrictions (cells marked with LF_NOSPAWN), and is more than 5 spaces from the player (EF_NOBEINGS, EF_NOITEMS, EF_NOSTAIRS, EF_NOBLOCK, EF_NOHARM, EF_NOSPAWN, and EF_NOSAFE).  If a valid space isn't found, the function will ignore distance from the player (EF_NOSAFE).  If a valid space still can't be found, the function will ignore stairs and harmful terrain (EF_NOSTAIRS and EF_NOHARM).&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the initial pass to.  If a valid coordinate is not found within the area after ignoring stairs and harmful terrain, the search is restarted and expanded automatically to the entire map.  If omitted, the entire map will be searched.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|standard_empty_coord|dot|Coord}}&lt;br /&gt;
Searches for a random coordinate that meets certain predetermined criteria.&lt;br /&gt;
&lt;br /&gt;
The function will search for a coordinate that does not contain a being, item, staircase, wall, harmful terrain, or spawning restrictions (EF_NOBEINGS, EF_NOITEMS, EF_NOSTAIRS, EF_NOBLOCK, EF_NOHARM, and EF_NOSPAWN).&lt;br /&gt;
:'''Returns''': A random coordinate that meets the criteria.&lt;br /&gt;
----&lt;br /&gt;
=== Advanced Cell Handling Functions ===&lt;br /&gt;
;{{moddef|desc|fill|dot||CellID|what|Area|[where]}}&lt;br /&gt;
Fills an area of the map with a given cell.&lt;br /&gt;
:''what'': The cell to fill with.&lt;br /&gt;
:''where'': ''Optional.'' The area to fill with the cell.  If omitted, the entire map will be filled.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fill_pattern|dot||Area|where|boolean|horiz|string|Table|line1|Table|[line2]}}&lt;br /&gt;
Fills an area of the map with a pattern of cells.&lt;br /&gt;
:''where'': The area to fill.&lt;br /&gt;
:''horiz'': If ''True'', the pattern will fill each row left to right, then move to the next row down in the area.  If ''False'', the pattern will fill each column top to bottom, then move to the next column right in the area. &lt;br /&gt;
:''line1'': The pattern to fill with.  If the pattern is shorter than the area size, the pattern will loop.  The pattern does not restart at the end of a row or column.&lt;br /&gt;
:''line2'': ''Optional.'' If given, each time the end of row (if ''horiz'' is ''True'') or column (if ''horiz'' is ''False'') is reached, the function will switch to filling with the other pattern.  That is, the first row will use ''line1'' then the second will use ''line2'', then the third will use ''line1'' again, etc.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fill_edges|dot||CellID|what}}&lt;br /&gt;
Fills the edges of the map with the given cell.&lt;br /&gt;
:''what'': The cell to fill with.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|each|dot|Table|CellID|what|Area|[where]}}&lt;br /&gt;
Searches for a cell and returns a table containing every location it was found.&lt;br /&gt;
:''what'': The cell to search for.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.&lt;br /&gt;
:'''Returns''': A table containing a list of [[Modding:Coord|Coord]] objects.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_blood|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
Adds blood to the map or removes blood from it.&lt;br /&gt;
:''where'': ''Optional.'' The area to affect.  If omitted, the entire map will selected.&lt;br /&gt;
:''value'': ''Optional.'' ''True'' adds blood.  ''False'' removes it.  If omitted, the default is to add blood.&lt;br /&gt;
:''what'': ''Optional.'' If provided, only locations containing the given cell are affected.  If omitted, all cells in the area are affected.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_permanence|dot||Area|[where]|boolean|[value]|CellID|[what]}}&lt;br /&gt;
Makes cell permanent or removes their permanence.&lt;br /&gt;
:''where'': ''Optional.'' The area to affect.  If omitted, the entire map will be selected.&lt;br /&gt;
:''value'': ''Optional.'' ''True'' adds permanence.  ''False'' removes it.  If omitted, the default is to add permanence.&lt;br /&gt;
:''what'': ''Optional.'' If provided, only locations containing the given cell are affected.  If omitted, wall cells (which includes crate cells) are affected.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|cell_set|dot|Table|CellSet|cells}}&lt;br /&gt;
Creates a cell group.&lt;br /&gt;
:''cells'': A list of cells to add to the group.&lt;br /&gt;
:'''Returns''': A cell group table.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|restore_walls|dot||CellID|wallCell|boolean|keepFluids}}&lt;br /&gt;
Fixes the edge walls of the map.&lt;br /&gt;
:''wallCell'': The cell to fill the edge of the map with.&lt;br /&gt;
:''keepFluids'': ''True'' to maintain any fluid tiles on the edge of the map.  ''False'' to overwrite them.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|plot_line|dot||Coord|where|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
Splits an area into two at the indicated location.&lt;br /&gt;
:''where'': The starting point.&lt;br /&gt;
:''horiz'': ''True'' draws along the indicated X position of the ''where'' coordinate.  ''False'' draws along the indicated Y position of the ''where'' coordinate.&lt;br /&gt;
:''cell'': The cell that will be used to split the area.&lt;br /&gt;
:''block'': The cell(s) that block the line plotting.  The drawn line will stop before hitting a coordinate with one of these cells.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|plot_lines|dot||Coord|where|Area|larea|boolean|horiz|CellID|cell|CellSet|block}}&lt;br /&gt;
Splits an area into two at the indicated location.&lt;br /&gt;
:''where'': The starting point.&lt;br /&gt;
:''larea'': The boundaries of the line.  The line will not extend past the edge of the area.&lt;br /&gt;
:''horiz'': ''True''draws along the indicated X position of the ''where'' coordinate.  ''False'' draws along the indicated Y position of the ''where'' coordinate.&lt;br /&gt;
:''cell'': The cell that will be used to split the area.&lt;br /&gt;
:''block'': The cell(s) that block the line plotting.  The drawn line will stop before hitting a coordinate with one of these cells.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scatter|dot||Area|where|CellID|good|CellID|fill|integer|count}}&lt;br /&gt;
Randomly places a certain cell around the map.&lt;br /&gt;
:''where'': The area to scatter the cell in.&lt;br /&gt;
:''good'': Only this locations with this cell will be changed by the function.&lt;br /&gt;
:''fill'': The cell to scatter around the area.&lt;br /&gt;
:''count'': The number to attempt to place.  If the chosen location is not ''good'', then it will not cha it.  The final number placed may be less than ''count'' (or even 0), but never more.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scatter_blood|dot||Area|where|CellID|[good]|integer|count}}&lt;br /&gt;
Randomly adds blood in an area.&lt;br /&gt;
:''where'': The area to scatter blood in.&lt;br /&gt;
:''good'': ''Optional.'' If defined, only locations with this cell will have blood added.  If omitted, any location my have blood added.&lt;br /&gt;
:''count'': The number of attempts.  On each attempt, a random cell in the area will be chosen to have blood added.  The number of cell that will end up bloody may be less than ''count'' (or even 0), but never more.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scatter_put|dot||Area|where|Table|translation|String|tile|CellID|good|integer|count}}&lt;br /&gt;
Randomly adds a specified tile (a defined arrangement of cells) around the map.&lt;br /&gt;
:''where'': The area to scatter the tile in.  The tiles will only be placed in locations entirely within the area.&lt;br /&gt;
:''translation'': A table with to be used with the ''tile'' argument.  Refer to this (will be linked soon) for more information.&lt;br /&gt;
:''tile'': A multi-line string, one row of the tile per line, that lays out the arrangment of the cells.  Refer to this (will be linked soon) for more information&lt;br /&gt;
:''good'': Only locations with this cell will be valid for the tile placement.  If any coordinates of the selected placement area are not ''good'', the tile will not be placed at that location.&lt;br /&gt;
:''count'': The number of tiles to try to place.  The placement will continue until this many have been placed, or 10,000 attempts have been made, whichever comes first.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|transmute|dot||CellID|to|CellSet|from|Area|[where]}}&lt;br /&gt;
Changes all of one cell on the map to another cell.&lt;br /&gt;
:''to'': The cell that will replace the existing cells.&lt;br /&gt;
:''from'': The cell(s) that will be replaced.&lt;br /&gt;
:''where'': ''Optional.'' If specified, only cells in the area are changed.  If omitted, the function will change cells across the entire map.&lt;br /&gt;
----&lt;br /&gt;
{{moddef|desc|transmute_marker|dot||Flag|marker|CellID|To|Area|[where]}}&lt;br /&gt;
Changes all positions on the map that have a specified LightFlag (a named constant starting with &amp;quot;LF&amp;quot;, no underscore) to another cell.&lt;br /&gt;
:''marker'': The LightFlag to check for.  Only cells with this flag will be changed.&lt;br /&gt;
:''to'': The cell that will replace the existing cells.&lt;br /&gt;
:''where'': ''Optional.'' If specified, only cells in the area are changed.  If omitted, the function will change cells across the entire map.&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Modding:generator_API</id>
		<title>Modding:generator API</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Modding:generator_API"/>
				<updated>2013-04-21T02:37:55Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Adding MORE functions.  A few fixes.  Still under construction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''This page is currently under construction.''&lt;br /&gt;
&lt;br /&gt;
The generator holds all of the ever-present functions used to create the random maps in DoomRL. It also contains a variety of helper functions, many of them useful if not vital to the creation of intricate and meticulous game design.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
Please note that the type &amp;quot;integer&amp;quot; indicates an numeric value without a decimal part.  It does not indicate the range of acceptable values.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellID&amp;quot; may be the numeric or string ID of a cell.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellSet&amp;quot; may be the numeric ID, string ID, or a list of numeric and/or string IDs.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;Flags&amp;quot; expects a list of [[Modding:Constants|flag constants]] of the indicated type.  &lt;br /&gt;
&lt;br /&gt;
An argument name in [square brackets] is an optional one.  The function description will indicate how the function operates if it is omitted.&lt;br /&gt;
&lt;br /&gt;
=== Generator API Function List ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 2px solid darkred; border-spacing: 0; font-size: 90%; margin: 0.25em 0.5em;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: darkred; color: yellow; font-size: 120%; text-align: center&amp;quot;|'''Generator Interface - Functions'''&lt;br /&gt;
 {{Table2Col&lt;br /&gt;
  |es=background: #333; &lt;br /&gt;
  |c1=font-weight:bold; text-align:right; vertical-align:top; padding:0px 2px;&lt;br /&gt;
  |c2=padding:0px 2px;&lt;br /&gt;
  ||'''[[#Basic Cell Handling Functions|Basic Cell Handling Functions]]'''&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|get_cell|dot||Coord|loc}}&lt;br /&gt;
  |{{modarg|string}}|{{moddef|list|get_cell_id|dot||Coord|loc}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|fast_get_cell|dot||integer|x|integer|y}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_cell|dot||Coord|loc|CellID|what}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fast_set_cell|dot||integer|x|integer|y|integer|what}}&lt;br /&gt;
  ||'''[[#Map Checking Functions|Map Checking Functions]]'''&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|around|dot||Coord|where|CellSet|what}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|cross_around|dot||Coord|where|CellSet|what}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty|dot||Coord|where|Flags|reqs}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty_area|dot||Area|where|Flags|reqs}}  &lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|scan|dot||Area|where|CellID|good}}&lt;br /&gt;
  ||'''[[#Map Searching Functions|Map Searching Functions]]'''&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|drop_coord|dot||Coord|where|Flags|reqs}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_coord|dot||CellSet|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|random_coord|dot||Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_random_coord|dot||CellSet|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_empty_coord|dot||CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|random_empty_coord|dot||Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_random_empty_coord|dot||CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|safe_empty_coord|dot||Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|standard_empty_coord|dot}}&lt;br /&gt;
  ||'''[[#Advanced Cell Handling Functions|Advanced Cell Handling Functions]]'''&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fill|dot||CellID|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fill_pattern|dot||Area|where|boolean|horiz|Table|line1|Table|[line2]}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fill_edges|dot||CellID|what}}&lt;br /&gt;
  |{{modarg|Table}}|{{moddef|list|each|dot||CellID|what|Area|[where]}}&lt;br /&gt;
  |}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Basic Cell Handling Functions ===&lt;br /&gt;
;{{moddef|desc|get_cell|dot|integer|Coord|loc}}&lt;br /&gt;
Gets the Numeric ID (NID) of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''loc'': The coordinates of the cell to get.&lt;br /&gt;
:'''Returns''': The NID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_cell_id|dot|string|Coord|loc}}&lt;br /&gt;
Gets the ID of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''loc'': The coordinates of the cell to get.&lt;br /&gt;
:'''Returns''': The string ID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fast_get_cell|dot|integer|integer|x|integer|y}}&lt;br /&gt;
Gets the Numeric ID (NID) of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''x'': The X position of the cell to get.&lt;br /&gt;
:''y'': The Y position of the cell to get.&lt;br /&gt;
:'''Returns''': The NID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_cell|dot||Coord|loc|CellID|what}}&lt;br /&gt;
Assigns a [[Modding:Cell|cell]] to a map position.&lt;br /&gt;
:''loc'': The coordinates of the position to set.&lt;br /&gt;
:''what'': The ID of the cell to assign to the position.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fast_set_cell|dot||integer|x|integer|y|integer|what}}&lt;br /&gt;
Assigns a [[Modding:Cell|cell]] to a map position.&lt;br /&gt;
:''x'': The X position of the cell to set.&lt;br /&gt;
:''y'': The Y position of the cell to set.&lt;br /&gt;
:''what'': The NID (string IDs not allowed) of the cell to assign to the position.&lt;br /&gt;
----&lt;br /&gt;
=== Map Checking Functions ===&lt;br /&gt;
;{{moddef|desc|around|dot|integer|Coord|where|CellSet|what}}&lt;br /&gt;
Checks the positions adjacent to a location (including diagonally adjacent) and returns the number of cells that match one of the indicated cell IDs.&lt;br /&gt;
:''where'': The coordinate to check around.  The coordinate sent in this way is not checked, only adjacent cells are.&lt;br /&gt;
:''what'': The cell(s) to check for.&lt;br /&gt;
:'''Returns''': The number of cells (from 0 to 8) that matched one of the ''what'' cell IDs.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|cross_around|dot|integer|Coord|where|CellSet|what}}&lt;br /&gt;
Checks the positions adjacent to a location (but not diagonally adjacent) and returns the number of cells that match one of the indicated cell IDs.&lt;br /&gt;
:''where'': The coordinates to check around.  The coordinate sent in this way is not checked, only adjacent cells are.&lt;br /&gt;
:''what'': The cell(s) to check for.&lt;br /&gt;
:'''Returns''': The number of cells (from 0 to 4) that matched one of the ''what'' cell IDs.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty|dot|boolean|Coord|where|Flags|reqs}}&lt;br /&gt;
Checks to see if the indicated cell is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The position to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the position cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the map position does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if the cell satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty_area|dot|boolean|Area|where|Flags|reqs}}&lt;br /&gt;
Checks to see if the indicated area is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The area to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the area cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the area does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if every cell in the area satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scan|dot|boolean|Area|where|CellID|good}}&lt;br /&gt;
Checks to see if the entire area is filled with a certain cell.&lt;br /&gt;
:''where'': The area to check.&lt;br /&gt;
:''good'': The cell to look for.&lt;br /&gt;
:'''Returns''': ''True'' if all cells in the area are ''good'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
=== Map Searching Functions ===&lt;br /&gt;
;{{moddef|desc|drop_coord|dot|Coord|Coord|where|Flags|reqs}}&lt;br /&gt;
Finds the nearest &amp;quot;empty&amp;quot; coordinate to a given coordinate, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The coordinate to try.  If this coordinate is &amp;quot;empty&amp;quot;, this coordinate will be returned.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': The nearest coordinate the satisfies the criteria.  If the supplied coordinate meets the criteria, that coordinate will be returned.  If not a nearby, random, coordinate will be checked. &lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_coord|dot|Coord|CellSet|what|Area|[where]}}&lt;br /&gt;
Searches the map for the first coordinate containing one of the indicated cell IDs.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': The coordinates of the first position that contains one of the ''what'' cell IDs.  The map is checked row by row starting from the top, going from left to right across each row.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_coord|dot|Coord|Area|[where]}}&lt;br /&gt;
Searches for a random coordinate within the specified area.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the coordinate to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_random_coord|dot|Coord|CellSet|what|Area|[where]}}&lt;br /&gt;
Searches for a random coordinate within the specified area that contains one of the specified cell IDs.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''where'' : ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_empty_coord|dot|Coord|CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for the first &amp;quot;empty&amp;quot; coordinate containing one of the indicated cell IDs, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''reqs'':  A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': The coordinates of the first position that meets the supplied criteria.  The map is checked row by row starting from the top, going from left to right across each row.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_empty_coord|dot|Coord|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for a random coordinate that is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the random coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_random_empty_coord|dot|Coord|CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for a random &amp;quot;empty&amp;quot; coordinate containing one of the indicated cell IDs, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''reqs'':  A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the random coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns a coordinate that does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_square|dot|Coord|CellSet|what}}&lt;br /&gt;
Searches for a random 3x3 area containing only specified cells.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:'''Returns''': The center coordinate of the random 3x3 area.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|safe_empty_coord|dot|Coord|Area|[where]}}&lt;br /&gt;
Searches for a random coordinate that meets certain predetermined criteria.&lt;br /&gt;
&lt;br /&gt;
The function will try to find a coordinate that does not contain a being, item, staircase, wall, harmful terrain, spawning restrictions (cells marked with LF_NOSPAWN), and is more than 5 spaces from the player (EF_NOBEINGS, EF_NOITEMS, EF_NOSTAIRS, EF_NOBLOCK, EF_NOHARM, EF_NOSPAWN, and EF_NOSAFE).  If a valid space isn't found, the function will ignore distance from the player (EF_NOSAFE).  If a valid space still can't be found, the function will ignore stairs and harmful terrain (EF_NOSTAIRS and EF_NOHARM).&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the initial pass to.  If a valid coordinate is not found within the area after ignoring stairs and harmful terrain, the search is restarted and expanded automatically to the entire map.  If omitted, the entire map will be searched.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|standard_empty_coord|dot|Coord}}&lt;br /&gt;
Searches for a random coordinate that meets certain predetermined criteria.&lt;br /&gt;
&lt;br /&gt;
The function will search for a coordinate that does not contain a being, item, staircase, wall, harmful terrain, or spawning restrictions (EF_NOBEINGS, EF_NOITEMS, EF_NOSTAIRS, EF_NOBLOCK, EF_NOHARM, and EF_NOSPAWN).&lt;br /&gt;
:'''Returns''': A random coordinate that meets the criteria.&lt;br /&gt;
----&lt;br /&gt;
=== Advanced Cell Handling Functions ===&lt;br /&gt;
;{{moddef|desc|fill|dot||CellID|what|Area|[where]}}&lt;br /&gt;
Fills an area of the map with a given cell.&lt;br /&gt;
:''what'': The cell to fill with.&lt;br /&gt;
:''where'': ''Optional.'' The area to fill with the cell.  If omitted, the entire map will be filled.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fill_pattern|dot||Area|where|boolean|horiz|string|Table|line1|Table|[line2]}}&lt;br /&gt;
Fills an area of the map with a pattern of cells.&lt;br /&gt;
:''where'': The area to fill.&lt;br /&gt;
:''horiz'': If ''True'', the pattern will fill each row left to right, then move to the next row down in the area.  If ''False'', the pattern will fill each column top to bottom, then move to the next column right in the area. &lt;br /&gt;
:''line1'': The pattern to fill with.  If the pattern is shorter than the area size, the pattern will loop.  The pattern does not restart at the end of a row or column.&lt;br /&gt;
:''line2'': ''Optional.'' If given, each time the end of row (if ''horiz'' is ''True'') or column (if ''horiz'' is ''False'') is reached, the function will switch to filling with the other pattern.  That is, the first row will use ''line1'' then the second will use ''line2'', then the third will use ''line1'' again, etc.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fill_edges|dot||CellID|what}}&lt;br /&gt;
Fills the edges of the map with the given cell.&lt;br /&gt;
:''what'': The cell to fill with.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|each|dot|Table|CellID|what|Area|[where]}}&lt;br /&gt;
Searches for a cell and returns a table containing every location it was found.&lt;br /&gt;
:''what'': The cell to search for.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.&lt;br /&gt;
:'''Returns''': A table containing a list of [[Modding:Coord|Coord]] objects.&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Modding:generator_API</id>
		<title>Modding:generator API</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Modding:generator_API"/>
				<updated>2013-04-20T23:44:05Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Adding more functions.  Still under construction.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''This page is currently under construction.''&lt;br /&gt;
&lt;br /&gt;
The generator holds all of the ever-present functions used to create the random maps in DoomRL. It also contains a variety of helper functions, many of them useful if not vital to the creation of intricate and meticulous game design.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
Please note that the type &amp;quot;integer&amp;quot; indicates an numeric value without a decimal part.  It does not indicate the range of acceptable values.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellID&amp;quot; may be the numeric or string ID of a cell.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellSet&amp;quot; may be the numeric ID, string ID, or a list of numeric and/or string IDs.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;Flags&amp;quot; expects a list of [[Modding:Constants|flag constants]] of the indicated type.  &lt;br /&gt;
&lt;br /&gt;
An argument name in [square brackets] is an optional one.  The function description will indicate how the function operates if it is omitted.&lt;br /&gt;
&lt;br /&gt;
=== Generator API Function List ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 2px solid darkred; border-spacing: 0; font-size: 90%; margin: 0.25em 0.5em;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: darkred; color: yellow; font-size: 120%; text-align: center&amp;quot;|'''Generator Interface - Functions'''&lt;br /&gt;
 {{Table2Col&lt;br /&gt;
  |es=background: #333; &lt;br /&gt;
  |c1=font-weight:bold; text-align:right; vertical-align:top; padding:0px 2px;&lt;br /&gt;
  |c2=padding:0px 2px;&lt;br /&gt;
  ||'''[[#Basic Cell Handling Functions|Basic Cell Handling Functions]]'''&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|get_cell|dot||Coord|loc}}&lt;br /&gt;
  |{{modarg|string}}|{{moddef|list|get_cell_id|dot||Coord|loc}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|fast_get_cell|dot||integer|x|integer|y}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_cell|dot||Coord|loc|CellID|what}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fast_set_cell|dot||integer|x|integer|y|integer|what}}&lt;br /&gt;
  ||'''[[#Map Checking Functions|Map Checking Functions]]'''&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|around|dot||Coord|where|CellSet|what}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|cross_around|dot||Coord|where|CellSet|what}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty|dot||Coord|where|Flags|reqs}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty_area|dot||Area|where|Flags|reqs}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|scan|dot||Area|where|CellID|good}}&lt;br /&gt;
  ||'''[[#Map Searching Functions|Map Searching Functions]]'''&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_coord|dot||CellSet|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|random_coord|dot||Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_random_coord|dot||CellSet|what|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_empty_coord|dot||CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|random_empty_coord|dot||Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_random_empty_coord|dot||CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|safe_empty_coord|dot||Area|[where]}}&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|standard_empty_coord|dot}}&lt;br /&gt;
  |}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Basic Cell Handling Functions ===&lt;br /&gt;
;{{moddef|desc|get_cell|dot||Coord|loc}}&lt;br /&gt;
Gets the Numeric ID (NID) of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''loc'': The coordinates of the cell to get.&lt;br /&gt;
:'''Returns''': The NID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_cell_id|dot||Coord|loc}}&lt;br /&gt;
Gets the ID of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''loc'': The coordinates of the cell to get.&lt;br /&gt;
:'''Returns''': The string ID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fast_get_cell|dot||integer|x|integer|y}}&lt;br /&gt;
Gets the Numeric ID (NID) of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''x'': The X position of the cell to get.&lt;br /&gt;
:''y'': The Y position of the cell to get.&lt;br /&gt;
:'''Returns''': The NID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_cell|dot||Coord|loc|CellID|what}}&lt;br /&gt;
Assigns a new [[Modding:Cell|cell]] to a map position.&lt;br /&gt;
:''loc'': The coordinates of the position to set.&lt;br /&gt;
:''what'': The ID of the cell to assign to the position.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fast_set_cell|dot||integer|x|integer|y|integer|what}}&lt;br /&gt;
Assigns a now [[Modding:Cell|cell]] to a map position.&lt;br /&gt;
:''x'': The X position of the cell to set.&lt;br /&gt;
:''y'': The Y position of the cell to set.&lt;br /&gt;
:''what'': The NID (string IDs not allowed) of the cell to assign to the position.&lt;br /&gt;
=== Map Checking Functions ===&lt;br /&gt;
;{{moddef|desc|around|dot||Coord|where|CellSet|what}}&lt;br /&gt;
Checks the positions adjacent to a location (including diagonally adjacent) and returns the number of cells that match one of the indicated cell IDs.&lt;br /&gt;
:''where'': The coordinate to check around.  The coordinate sent in this way is not checked, only adjacent cells are.&lt;br /&gt;
:''what'': The cell(s) to check for.&lt;br /&gt;
:'''Returns''': The number of cells (from 0 to 8) that matched one of the ''what'' cell IDs.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|cross_around|dot||Coord|where|CellSet|what}}&lt;br /&gt;
Checks the positions adjacent to a location (but not diagonally adjacent) and returns the number of cells that match one of the indicated cell IDs.&lt;br /&gt;
:''where'': The coordinates to check around.  The coordinate sent in this way is not checked, only adjacent cells are.&lt;br /&gt;
:''what'': The cell(s) to check for.&lt;br /&gt;
:'''Returns''': The number of cells (from 0 to 4) that matched one of the ''what'' cell IDs.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty|dot||Coord|where|Flags|reqs}}&lt;br /&gt;
Checks to see if the indicated cell is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The position to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the position cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the map position does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if the cell satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty_area|dot||Area|where|Flags|reqs}}&lt;br /&gt;
Checks to see if the indicated area is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The area to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the area cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the area does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if every cell in the area satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|scan|dot||Area|where|CellID|good}}&lt;br /&gt;
Checks to see if the entire area is filled with a certain cell.&lt;br /&gt;
:''where'': The area to check.&lt;br /&gt;
:''good'': The cell to look for.&lt;br /&gt;
:'''Returns''': ''True'' if all cells in the area are ''good'', ''False'' otherwise.&lt;br /&gt;
=== Map Searching Functions ===&lt;br /&gt;
;{{moddef|desc|find_coord|dot||CellSet|what|Area|[where]}}&lt;br /&gt;
Searches the map for the first coordinate containing one of the indicated cell IDs.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': The coordinates of the first position that contains one of the ''what'' cell IDs.  The map is checked row by row starting from the top, going from left to right across each row.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_coord|dot||Area|[where]}}&lt;br /&gt;
Searches for a random coordinate within the specified area.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the coordinate to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_random_coord|dot||CellSet|what|Area|[where]}}&lt;br /&gt;
Searches for a random coordinate within the specified area that contains one of the specified cell IDs.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''where'' : ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_empty_coord|dot||CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for the first &amp;quot;empty&amp;quot; coordinate containing one of the indicated cell IDs, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''reqs'':  A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the coordinate does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': The coordinates of the first position that meets the supplied criteria.  The map is checked row by row starting from the top, going from left to right across each row.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_empty_coord|dot||Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for a random coordinate that is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the random coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the coordinate does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|find_random_empty_coord|dot||CellSet|what|Flags|reqs|Area|[where]}}&lt;br /&gt;
Searches the map for a random &amp;quot;empty&amp;quot; coordinate containing one of the indicated cell IDs, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:''reqs'':  A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the random coordinate cannot have.  For example, if the flag EF_NOBEINGS is sent, the function only returns true if the coordinate does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the search to.  If omitted, the coordinate can be picked from anywhere on the map.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the supplied criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|random_square|dot||CellSet|what}}&lt;br /&gt;
Searches for a random 3x3 area containing only specified cells.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:'''Returns''': The center coordinate of the random 3x3 area.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|safe_empty_coord|dot||Area|[where]}}&lt;br /&gt;
Searches for a random coordinate that meets certain predetermined criteria.&lt;br /&gt;
&lt;br /&gt;
The function will try to find a coordinate that does not contain a being, item, staircase, wall, harmful terrain, spawning restrictions (cells marked with LF_NOSPAWN), and is more than 5 spaces from the player (EF_NOBEINGS, EF_NOITEMS, EF_NOSTAIRS, EF_NOBLOCK, EF_NOHARM, EF_NOSPAWN, and EF_NOSAFE).  If a valid space isn't found, the function will ignore distance from the player (EF_NOSAFE).  If a valid space still can't be found, the function will ignore stairs and harmful terrain (EF_NOSTAIRS and EF_NOHARM).&lt;br /&gt;
:''where'': ''Optional.'' The area to restrict the inital pass to.  If a valid coordinate is not found within the area after ignoring stairs and harmful terrain, the search is restarted and expanded automatically to the entire map.  If omitted, the entire map will be searched.&lt;br /&gt;
:'''Returns''': A random coordinate that meets the criteria.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|standard_empty_coord|dot}}&lt;br /&gt;
Searches for a random coordinate that meets certain predetermined criteria.&lt;br /&gt;
&lt;br /&gt;
The function will search for a coordinate that does not contain a being, item, staircase, wall, harmful terrain, or spawning restrictions (EF_NOBEINGS, EF_NOITEMS, EF_NOSTAIRS, EF_NOBLOCK, EF_NOHARM, and EF_NOSPAWN).&lt;br /&gt;
:'''Returns''': A random coordinate that meets the criteria.&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Modding:generator_API</id>
		<title>Modding:generator API</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Modding:generator_API"/>
				<updated>2013-04-20T20:38:00Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Created page with &amp;quot;''This page is currently under construction.''  The generator holds all of the ever-present functions used to create the random maps in DoomRL. It also contains a variety of help...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''This page is currently under construction.''&lt;br /&gt;
&lt;br /&gt;
The generator holds all of the ever-present functions used to create the random maps in DoomRL. It also contains a variety of helper functions, many of them useful if not vital to the creation of intricate and meticulous game design.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
Please note that the type &amp;quot;integer&amp;quot; indicates an numeric value without a decimal part.  It does not indicate the range of acceptable values.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellID&amp;quot; may be the numeric or string ID of a cell.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;CellSet&amp;quot; may be the numeric ID, string ID, or a list of numeric and/or string IDs.&lt;br /&gt;
&lt;br /&gt;
The argument type &amp;quot;Flags&amp;quot; expects a list of [[Modding:Constants|flag constants]] of the indicated type.  &lt;br /&gt;
&lt;br /&gt;
=== Valkyrie Functions ===&lt;br /&gt;
&lt;br /&gt;
These functions are provided via the Valkyrie library, and are low level functions for level manipulation and querying.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 2px solid darkred; border-spacing: 0; font-size: 90%; margin: 0.25em 0.5em;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: darkred; color: yellow; font-size: 120%; text-align: center&amp;quot;|'''Generator Interface - Valkyrie Functions'''&lt;br /&gt;
 {{Table2Col&lt;br /&gt;
  |es=background: #333; &lt;br /&gt;
  |c1=font-weight:bold; text-align:right; vertical-align:top; padding:0px 2px;&lt;br /&gt;
  |c2=padding:0px 2px;&lt;br /&gt;
  ||'''[[#Basic Cell Handling Functions|Basic Cell Handling Functions]]'''&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|get_cell|dot||Coord|loc}}&lt;br /&gt;
  |{{modarg|string}}|{{moddef|list|get_cell_id|dot||Coord|loc}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|fast_get_cell|dot||integer|x|integer|y}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|set_cell|dot||Coord|loc|CellID|what}}&lt;br /&gt;
  |{{modarg|void}}|{{moddef|list|fast_set_cell|dot||integer|x|integer|y|integer|what}}&lt;br /&gt;
  ||'''[[#Map Checking Functions|Map Checking Functions]]'''&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|around|dot||Coord|where|CellSet|what}}&lt;br /&gt;
  |{{modarg|integer}}|{{moddef|list|cross_around|dot||Coord|where|CellSet|what}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty|dot||Coord|where|Flags|reqs}}&lt;br /&gt;
  |{{modarg|boolean}}|{{moddef|list|is_empty_area|dot||Area|where|Flags|reqs}}&lt;br /&gt;
  ||'''[[#Map Searching Functions|Map Searching Functions]]'''&lt;br /&gt;
  |{{modarg|Coord}}|{{moddef|list|find_coord|dot||CellSet|what}}&lt;br /&gt;
  |}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Basic Cell Handling Functions ====&lt;br /&gt;
;{{moddef|desc|get_cell|dot||Coord|loc}}&lt;br /&gt;
:Gets the Numeric ID (NID) of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''loc'': The coordinates of the cell to get.&lt;br /&gt;
:'''Returns''': The NID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|get_cell_id|dot||Coord|loc}}&lt;br /&gt;
:Gets the ID of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''loc'': The coordinates of the cell to get.&lt;br /&gt;
:'''Returns''': The string ID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fast_get_cell|dot||integer|x|integer|y}}&lt;br /&gt;
:Gets the Numeric ID (NID) of the [[Modding:Cell|cell]] at a given map position.&lt;br /&gt;
:''x'': The X position of the cell to get.&lt;br /&gt;
:''y'': The Y position of the cell to get.&lt;br /&gt;
:'''Returns''': The NID of the cell.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|set_cell|dot||Coord|loc|CellID|what}}&lt;br /&gt;
:Assigns a new [[Modding:Cell|cell]] to a map position.&lt;br /&gt;
:''loc'': The coordinates of the position to set.&lt;br /&gt;
:''what'': The ID of the cell to assign to the position.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|fast_set_cell|dot||integer|x|integer|y|integer|what}}&lt;br /&gt;
:Assigns a now [[Modding:Cell|cell]] to a map position.&lt;br /&gt;
:''x'': The X position of the cell to set.&lt;br /&gt;
:''y'': The Y position of the cell to set.&lt;br /&gt;
:''what'': The NID (string IDs not allowed) of the cell to assign to the position.&lt;br /&gt;
==== Map Checking Functions ====&lt;br /&gt;
;{{moddef|desc|around|dot||Coord|where|CellSet|what}}&lt;br /&gt;
:Checks the positions adjacent to a location (including diagonally adjacent) and returns the number of cells that match one of the indicated cell IDs.&lt;br /&gt;
:''where'': The coordinate to check around.  The coordinate sent in this way is not checked, only adjacent cells are.&lt;br /&gt;
:''what'': The cell(s) to check for.&lt;br /&gt;
:'''Returns''': The number of cells (from 0 to 8) that matched one of the ''what'' cell IDs.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|cross_around|dot||Coord|where|CellSet|what}}&lt;br /&gt;
:Checks the positions adjacent to a location (but not diagonally adjacent) and returns the number of cells that match one of the indicated cell IDs.&lt;br /&gt;
:''where'': The coordinates to check around.  The coordinate sent in this way is not checked, only adjacent cells are.&lt;br /&gt;
:''what'': The cell(s) to check for.&lt;br /&gt;
:'''Returns''': The number of cells (from 0 to 4) that matched one of the ''what'' cell IDs.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty|dot||Coord|where|Flags|reqs}}&lt;br /&gt;
:Checks to see if the indicated cell is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The position to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the position cannot have.  For example, EF_NOBEINGS only returns true if the map position does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if the cell satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise.&lt;br /&gt;
----&lt;br /&gt;
;{{moddef|desc|is_empty_area|dot||Area|where|Flags|reqs}}&lt;br /&gt;
:Checks to see if the indicated area is &amp;quot;empty&amp;quot;, defining &amp;quot;empty&amp;quot; based on a list of criteria.&lt;br /&gt;
:''where'': The area to check.&lt;br /&gt;
:''reqs'': A list of EmptyFlags (named numeric constants that start with EF_) indicating which types of objects or properties the area cannot have.  For example, EF_NOBEINGS only returns true if the area does not contain a [[Modding:Being|being]].  See [[Modding:Constants#Empty_Flags]] for more information.&lt;br /&gt;
:'''Returns''': ''True'' if every cell in the area satisfies all of the conditions indicated in ''reqs'', ''False'' otherwise.&lt;br /&gt;
==== Map Searching Functions ====&lt;br /&gt;
;{{moddef|desc|find_coord|dot||CellSet|what}}&lt;br /&gt;
:Searches the map for the first coordinate containing one of the indicated cell IDs.&lt;br /&gt;
:''what'': The cell(s) to search for.&lt;br /&gt;
:'''Returns''': The coordinates of the first position that contains one of the ''what'' cell IDs.  The map is checked row by row starting from the top, going from left to right across each row.&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Elite_former_sergeant</id>
		<title>Elite former sergeant</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Elite_former_sergeant"/>
				<updated>2013-04-17T05:18:11Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Fixing HP amount&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infostrat switch}}&lt;br /&gt;
{{Monsters|&lt;br /&gt;
monster_name=Elite former sergeant|&lt;br /&gt;
monster_looks=&amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;&amp;lt;b&amp;gt;h&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;|&lt;br /&gt;
monster_hp=25|&lt;br /&gt;
monster_ac=2 (+1 from equipped [[green armor]], total 3)|&lt;br /&gt;
monster_acc=+0 melee, +0 ranged|&lt;br /&gt;
monster_melee=1d3+1 = 2-4 = 3 avg|&lt;br /&gt;
monster_projectile=Attacks with an {{exotic link|assault shotgun}}: 7d3 = 7-21 = 14 avg&lt;br /&gt;
OR&lt;br /&gt;
&lt;br /&gt;
Attacks with a {{exotic link|plasma shotgun}}: 7d3 = 7-21 = 14 avg&lt;br /&gt;
&lt;br /&gt;
OR&lt;br /&gt;
&lt;br /&gt;
Attacks with a {{exotic link|super shotgun}}: (8d4)x2 = 16-64 = 40 avg|&lt;br /&gt;
monster_speed=100%|&lt;br /&gt;
monster_dlvl=60-90|&lt;br /&gt;
monster_xp=320|&lt;br /&gt;
monster_inventory=Assault Shotgun/Super Shotgun: [[shotgun shell]] (x60), [[green armor]] (equipped)&lt;br /&gt;
&lt;br /&gt;
Plasma Shotgun: [[power cell]] (x60), [[green armor]] (equipped)|&lt;br /&gt;
monster_pickup=Yes|&lt;br /&gt;
monster_doors=Yes|&lt;br /&gt;
monster_atkchance=75|&lt;br /&gt;
monster_abilities=N/A|&lt;br /&gt;
monster_description=''These are the elite among the former sergeants. And they carry firepower to boot! Too bad their weapons are set to self-destruct on death.''|&lt;br /&gt;
monster_other=15% bullet and shrapnel resist from green armor.&lt;br /&gt;
Weapon is picked randomly for each elite former sergeant.&lt;br /&gt;
&lt;br /&gt;
Elite formers never drop their weapon.}}&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Assemblies</id>
		<title>Assemblies</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Assemblies"/>
				<updated>2013-04-13T06:39:25Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: /* Advanced */ &amp;quot;Energy pistol&amp;quot; is the name displayed in game&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Assemblies are the finished product of combining standard [[Weapons]]/[[Armor]] or [[Specials|Special]] equipment with a particular set of [[Items#Modification Packs|mod packs]]. Some assemblies can only be made with a particular piece of equipment, while others can take a variety of different weapons, armors, or boots. There are three types of assemblies: [[#basic|Basic]], [[#advanced|Advanced]] and [[#master|Master]].&lt;br /&gt;
&lt;br /&gt;
You may choose not to assemble when prompted. If you do so, you will instead have a normal modified piece of equipment that can be modified further (if your [[Traits#Whizkid|Whizkid]] level allows it). The latter is particularly useful to remember if you're trying to figure out basic assembly combinations or when trying to assemble a higher rank assembly the recipe for which partially matches a lower rank assembly recipe (for example, the power armor and the nanofiber skin armor).&lt;br /&gt;
&lt;br /&gt;
Assemblies can also be modded in limited circumstances. If the player has the second level of Whizkid before the assembly is finished, they may then add a single mod to that assembled item.&lt;br /&gt;
&lt;br /&gt;
The schematics are listed in the order in which they appear on the in-game assembly screen, listing their name, base equipment and the required mods.&lt;br /&gt;
&lt;br /&gt;
Mod types in the tables below are:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;75&amp;quot; align=&amp;quot;left&amp;quot;| Mod type                            &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;50&amp;quot; align=&amp;quot;left&amp;quot;| Shorthand&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | [[power mod pack|Power]]            || P&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | [[agility mod pack|Agility]]        || A&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | [[bulk mod pack|Bulk]]              || B&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | [[technical mod pack|Technical]]    || T&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | [[firestorm weapon pack|Firestorm]] || F&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | [[sniper weapon pack|Sniper]]       || S&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | [[Onyx Armor Pack|Onyx]]            || O&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | [[Nano Pack|Nano]]                  || N&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic ==&lt;br /&gt;
'''Basic''' assemblies require two mod packs and can be built at any point in the game. Current list of basic assemblies:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;200&amp;quot; align=&amp;quot;left&amp;quot;| Assembly                     &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;175&amp;quot; align=&amp;quot;left&amp;quot;| Base                     &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100&amp;quot; align=&amp;quot;left&amp;quot;| Mods&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|chainsword}}'''                     || [[combat knife]]                 || '''PB'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|piercing blade}}'''                 || any melee weapon          || '''AP'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|speedloader pistol}}'''             || [[pistol]]                || '''AT'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|elephant gun}}'''                   || [[shotgun]]               || '''PP'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|gatling gun}}'''                    || [[chaingun]]              || '''BB'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|micro launcher}}'''                 || [[rocket launcher]]       || '''TT'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|tactical armor}}'''                 || [[green armor]]           || '''AA'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|tactical boots}}'''                 || [[steel boots]]           || '''AA'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|nanofiber armor}}'''                || any armor                 || '''BP'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|high power weapon}}'''  || any non-shotgun, clip &amp;gt; 5 || '''PB'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|power armor}}'''                    || any common armor          || '''PN'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|tactical shotgun}}'''               || [[combat shotgun]]        || '''PT'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|tower shield}}'''                    || [[red armor]]             || '''PO'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|fireproof armor}}'''                || any armor                 || '''BT'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|fireproof boots}}'''                || any boots                 || '''BT'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|ballistic armor}}'''                || any armor                 || '''AT'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|plasmatic shrapnel}}''' || any shotgun               || '''PS'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|grappling boots}}'''                || any boots                 || '''TT'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|lava boots}}'''                     || any boots                 || '''TO'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
'''Advanced''' assemblies require three mod packs and require the first level of [[Traits#Whizkid|Whizkid]] to be built. Current list of advanced assemblies:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;200&amp;quot; align=&amp;quot;left&amp;quot;| Assembly                     &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;175&amp;quot; align=&amp;quot;left&amp;quot;| Base                     &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100&amp;quot; align=&amp;quot;left&amp;quot;| Mods&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|double chainsaw}}'''           || [[chainsaw]]        || '''PPB'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|tactical rocket launcher}}'''  || [[rocket launcher]] || '''BBB'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|storm bolter pistol}}'''       || any pistol          || '''TBB'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|assault rifle}}'''             || any rapid fire weapon        || '''AAA'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|energy pistol}}'''             || any pistol          || '''PPT'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|burst cannon}}'''              || any rapid fire weapon        || '''PBB'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|VBFG9000}}'''                  || any [[BFG 9000]]        || '''PPP'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|enviromental boots}}'''        || any boots           || '''PBT'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|fireshield}}'''                || [[red armor]]           || '''BTO'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|nanofiber skin armor}}'''      || any armor           || '''PPN'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|antigrav boots}}'''             || any boots           || '''AAN'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|nano-shrapnel}}'''             || any shotgun         || '''PPN'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|hyperblaster}}'''              || [[plasma rifle]]    || '''ATT'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|focused double shotgun}}'''    || [[double shotgun]]  || '''PAT'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Master ==&lt;br /&gt;
'''Master''' assemblies require four mod packs and require both levels of [[Traits#Whizkid|Whizkid]] to be built. Current list of master assemblies:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;200&amp;quot; align=&amp;quot;left&amp;quot;| Assembly                     &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;175&amp;quot; align=&amp;quot;left&amp;quot;| Base                     &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100&amp;quot; align=&amp;quot;left&amp;quot;| Mods&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|nanomanufacture ammo}}''' || any ranged non-shotgun, non-BFG || '''BBBN'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|demolition ammo}}'''      || any 10mm-based weapon  || '''PTTF'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|cybernano armor}}'''                  || any armor              || '''PPON'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|biggest fucking gun}}'''  || any [[BFG 9000]]           || '''BBFF'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|ripper}}'''                           || [[chainsaw]]           || '''TPPB'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|cerberus boots}}'''                   || any boots              || '''PPTA'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|cerberus armor}}'''                   || any armor              || '''PPTA'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Energy_pistol</id>
		<title>Energy pistol</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Energy_pistol"/>
				<updated>2013-04-12T17:38:33Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Name of the assembly in game is &amp;quot;energy pistol&amp;quot; and should link to the assembly information.  I feel pages for specific assembled weapons are unnecessary. Please discuss if you feel differently.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infostrat switch}}&lt;br /&gt;
{{ranged weapon|&lt;br /&gt;
weapon_name=Energy pistol|&lt;br /&gt;
weapon_dmg=Original + 1 Sides per die|&lt;br /&gt;
weapon_avgdmg=Varies|&lt;br /&gt;
weapon_dmgtype=[[Damage type#Plasma|Plasma]]|&lt;br /&gt;
weapon_accuracy=Original|&lt;br /&gt;
weapon_ftime=Original|&lt;br /&gt;
weapon_rtime=Original|&lt;br /&gt;
weapon_clip=Original|&lt;br /&gt;
weapon_ammo=[[Power cell]]|&lt;br /&gt;
weapon_afire=Original|&lt;br /&gt;
weapon_areload=Original|&lt;br /&gt;
weapon_get=[[Assemblies|Assembly]]:  any pistol + PPT|&lt;br /&gt;
weapon_quote=N/A|&lt;br /&gt;
weapon_looks=&amp;lt;font color=&amp;quot;cyan&amp;quot;&amp;gt;&amp;lt;b&amp;gt;}&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;|&lt;br /&gt;
weapon_description=Assembly (same as original)|&lt;br /&gt;
weapon_other=N/A|&lt;br /&gt;
weapon_source=Classic SF weapon}}&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Energy_gun</id>
		<title>Energy gun</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Energy_gun"/>
				<updated>2013-04-12T17:37:13Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Making this page a redirect but keeping the original content in a comment.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Energy_pistol]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- {{ranged weapon|&lt;br /&gt;
weapon_name=Energy gun - [[Pistol_Types|Pistol Family]]|&lt;br /&gt;
weapon_dmg=Original + 1 Sides per die|&lt;br /&gt;
weapon_avgdmg=Varies|&lt;br /&gt;
weapon_dmgtype=[[Damage type#Plasma|Plasma]]|&lt;br /&gt;
weapon_accuracy=Original|&lt;br /&gt;
weapon_ftime=Original|&lt;br /&gt;
weapon_rtime=Original|&lt;br /&gt;
weapon_clip=Original|&lt;br /&gt;
weapon_ammo=[[Power cell]]|&lt;br /&gt;
weapon_afire=Original|&lt;br /&gt;
weapon_areload=Original|&lt;br /&gt;
weapon_get=[[Assemblies|Assembly]]:  any pistol + PPT|&lt;br /&gt;
weapon_quote=N/A|&lt;br /&gt;
weapon_looks=&amp;lt;font color=&amp;quot;cyan&amp;quot;&amp;gt;&amp;lt;b&amp;gt;}&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;|&lt;br /&gt;
weapon_description=Assembly (same as original)|&lt;br /&gt;
weapon_other=N/A|&lt;br /&gt;
weapon_source=Classic SF weapon}} --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Assemblies</id>
		<title>Assemblies</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Assemblies"/>
				<updated>2013-04-12T17:29:53Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: /* Advanced */ &amp;quot;Storm bolter pistol&amp;quot; is the name in the game.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Assemblies are the finished product of combining standard [[Weapons]]/[[Armor]] or [[Specials|Special]] equipment with a particular set of [[Items#Modification Packs|mod packs]]. Some assemblies can only be made with a particular piece of equipment, while others can take a variety of different weapons, armors, or boots. There are three types of assemblies: [[#basic|Basic]], [[#advanced|Advanced]] and [[#master|Master]].&lt;br /&gt;
&lt;br /&gt;
You may choose not to assemble when prompted. If you do so, you will instead have a normal modified piece of equipment that can be modified further (if your [[Traits#Whizkid|Whizkid]] level allows it). The latter is particularly useful to remember if you're trying to figure out basic assembly combinations or when trying to assemble a higher rank assembly the recipe for which partially matches a lower rank assembly recipe (for example, the power armor and the nanofiber skin armor).&lt;br /&gt;
&lt;br /&gt;
Assemblies can also be modded in limited circumstances. If the player has the second level of Whizkid before the assembly is finished, they may then add a single mod to that assembled item.&lt;br /&gt;
&lt;br /&gt;
The schematics are listed in the order in which they appear on the in-game assembly screen, listing their name, base equipment and the required mods.&lt;br /&gt;
&lt;br /&gt;
Mod types in the tables below are:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;75&amp;quot; align=&amp;quot;left&amp;quot;| Mod type                            &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;50&amp;quot; align=&amp;quot;left&amp;quot;| Shorthand&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | [[power mod pack|Power]]            || P&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | [[agility mod pack|Agility]]        || A&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | [[bulk mod pack|Bulk]]              || B&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | [[technical mod pack|Technical]]    || T&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | [[firestorm weapon pack|Firestorm]] || F&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | [[sniper weapon pack|Sniper]]       || S&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | [[Onyx Armor Pack|Onyx]]            || O&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | [[Nano Pack|Nano]]                  || N&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic ==&lt;br /&gt;
'''Basic''' assemblies require two mod packs and can be built at any point in the game. Current list of basic assemblies:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;200&amp;quot; align=&amp;quot;left&amp;quot;| Assembly                     &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;175&amp;quot; align=&amp;quot;left&amp;quot;| Base                     &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100&amp;quot; align=&amp;quot;left&amp;quot;| Mods&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|chainsword}}'''                     || [[combat knife]]                 || '''PB'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|piercing blade}}'''                 || any melee weapon          || '''AP'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|speedloader pistol}}'''             || [[pistol]]                || '''AT'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|elephant gun}}'''                   || [[shotgun]]               || '''PP'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|gatling gun}}'''                    || [[chaingun]]              || '''BB'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|micro launcher}}'''                 || [[rocket launcher]]       || '''TT'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|tactical armor}}'''                 || [[green armor]]           || '''AA'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|tactical boots}}'''                 || [[steel boots]]           || '''AA'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|nanofiber armor}}'''                || any armor                 || '''BP'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|high power weapon}}'''  || any non-shotgun, clip &amp;gt; 5 || '''PB'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|power armor}}'''                    || any common armor          || '''PN'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|tactical shotgun}}'''               || [[combat shotgun]]        || '''PT'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|tower shield}}'''                    || [[red armor]]             || '''PO'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|fireproof armor}}'''                || any armor                 || '''BT'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|fireproof boots}}'''                || any boots                 || '''BT'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|ballistic armor}}'''                || any armor                 || '''AT'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|plasmatic shrapnel}}''' || any shotgun               || '''PS'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|grappling boots}}'''                || any boots                 || '''TT'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|lava boots}}'''                     || any boots                 || '''TO'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
'''Advanced''' assemblies require three mod packs and require the first level of [[Traits#Whizkid|Whizkid]] to be built. Current list of advanced assemblies:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;200&amp;quot; align=&amp;quot;left&amp;quot;| Assembly                     &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;175&amp;quot; align=&amp;quot;left&amp;quot;| Base                     &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100&amp;quot; align=&amp;quot;left&amp;quot;| Mods&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|double chainsaw}}'''           || [[chainsaw]]        || '''PPB'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|tactical rocket launcher}}'''  || [[rocket launcher]] || '''BBB'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|storm bolter pistol}}'''       || any pistol          || '''TBB'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|assault rifle}}'''             || any rapid fire weapon        || '''AAA'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|energy gun}}'''             || any pistol          || '''PPT'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|burst cannon}}'''              || any rapid fire weapon        || '''PBB'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|VBFG9000}}'''                  || any [[BFG 9000]]        || '''PPP'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|enviromental boots}}'''        || any boots           || '''PBT'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|fireshield}}'''                || [[red armor]]           || '''BTO'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|nanofiber skin armor}}'''      || any armor           || '''PPN'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|antigrav boots}}'''             || any boots           || '''AAN'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|nano-shrapnel}}'''             || any shotgun         || '''PPN'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|hyperblaster}}'''              || [[plasma rifle]]    || '''ATT'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|focused double shotgun}}'''    || [[double shotgun]]  || '''PAT'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Master ==&lt;br /&gt;
'''Master''' assemblies require four mod packs and require both levels of [[Traits#Whizkid|Whizkid]] to be built. Current list of master assemblies:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;200&amp;quot; align=&amp;quot;left&amp;quot;| Assembly                     &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;175&amp;quot; align=&amp;quot;left&amp;quot;| Base                     &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100&amp;quot; align=&amp;quot;left&amp;quot;| Mods&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|nanomanufacture ammo}}''' || any ranged non-shotgun, non-BFG || '''BBBN'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|demolition ammo}}'''      || any 10mm-based weapon  || '''PTTF'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|cybernano armor}}'''                  || any armor              || '''PPON'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|biggest fucking gun}}'''  || any [[BFG 9000]]           || '''BBFF'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|ripper}}'''                           || [[chainsaw]]           || '''TPPB'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|cerberus boots}}'''                   || any boots              || '''PPTA'''&lt;br /&gt;
|-&lt;br /&gt;
| '''{{assembly link|cerberus armor}}'''                   || any armor              || '''PPTA'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Storm_bolter</id>
		<title>Storm bolter</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Storm_bolter"/>
				<updated>2013-04-12T17:22:31Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Making this page a redirect but keeping the original content in a comment.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Storm_bolter_pistol]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--{{ranged weapon|&lt;br /&gt;
weapon_name=Storm bolter - [[Pistol_Types|Pistol Family]]|&lt;br /&gt;
weapon_dmg=1d(Original Sides * Original Dice)x2|&lt;br /&gt;
weapon_avgdmg=Varies|&lt;br /&gt;
weapon_dmgtype=Original|&lt;br /&gt;
weapon_accuracy=Original-2|&lt;br /&gt;
weapon_ftime=Original*0.85|&lt;br /&gt;
weapon_rtime=Original|&lt;br /&gt;
weapon_clip=Original*1.5|&lt;br /&gt;
weapon_ammo=Original|&lt;br /&gt;
weapon_afire=Original|&lt;br /&gt;
weapon_areload=Original|&lt;br /&gt;
weapon_get=[[Assemblies|Assembly]]:  any pistol + TBB|&lt;br /&gt;
weapon_quote=N/A|&lt;br /&gt;
weapon_looks=&amp;lt;font color=&amp;quot;cyan&amp;quot;&amp;gt;&amp;lt;b&amp;gt;}&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;|&lt;br /&gt;
weapon_description=Assembly (same as original)|&lt;br /&gt;
weapon_other=Storm bolters cannot receive additional mods|&lt;br /&gt;
weapon_source=[http://warhammer40k.wikia.com/wiki/Bolter#Storm_Bolter Warhammer 40,000]}}--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Storm_bolter_pistol</id>
		<title>Storm bolter pistol</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Storm_bolter_pistol"/>
				<updated>2013-04-12T17:17:40Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Name of the assembly in game is &amp;quot;storm bolter pistol&amp;quot; and should link to the assembly information.  I feel pages for specific assembled weapons are unnecessary. Please discuss if you feel differently.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infostrat switch}}&lt;br /&gt;
{{ranged weapon|&lt;br /&gt;
weapon_name=Storm bolter pistol|&lt;br /&gt;
weapon_dmg=1d(Original Sides * Original Dice)x2|&lt;br /&gt;
weapon_avgdmg=Varies|&lt;br /&gt;
weapon_dmgtype=Original|&lt;br /&gt;
weapon_accuracy=Original-2|&lt;br /&gt;
weapon_ftime=Original*0.85|&lt;br /&gt;
weapon_rtime=Original|&lt;br /&gt;
weapon_clip=Original*1.5|&lt;br /&gt;
weapon_ammo=Original|&lt;br /&gt;
weapon_afire=Original|&lt;br /&gt;
weapon_areload=Original|&lt;br /&gt;
weapon_get=[[Assemblies|Assembly]]:  any pistol + TBB|&lt;br /&gt;
weapon_quote=N/A|&lt;br /&gt;
weapon_looks=&amp;lt;font color=&amp;quot;cyan&amp;quot;&amp;gt;&amp;lt;b&amp;gt;}&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;|&lt;br /&gt;
weapon_description=Assembly (same as original)|&lt;br /&gt;
weapon_other=Storm bolters cannot receive additional mods, even with WK2.|&lt;br /&gt;
weapon_source=[http://warhammer40k.wikia.com/wiki/Bolter#Storm_Bolter Warhammer 40,000]}}&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Medals</id>
		<title>Medals</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Medals"/>
				<updated>2013-04-08T05:58:41Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Updating prohibited challenges for medals in 0997 (they haven't been updated in a while!)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infostrat switch}}&lt;br /&gt;
Medals are extra trophies that players receive at the end of a game. Most require you to win, although some are granted for other special achievements. Gaining medals is necessary for the [[Badges|Heroic badge series]], though little else. However, some are extremely difficult and can be considered especially reputable all by themselves.&lt;br /&gt;
&lt;br /&gt;
There are two types of medals:&lt;br /&gt;
*'''Standard medals''' are displayed on the medals screen (albeit grayed out until you get one) so that you know what they are and how to get them.&lt;br /&gt;
*'''Secret medals''' are completely invisible until you actually gain them at some point. They are not necessarily harder than the other medals, but some of them are very, very hard to find.&lt;br /&gt;
&lt;br /&gt;
==Standard medals==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;175&amp;quot; align=&amp;quot;left&amp;quot;       | Rank&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Requirements&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Prohibited Challenges&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|Cyberdemon's Head&lt;br /&gt;
|Killing the Cyberdemon w/o taking damage&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Mastermind's Brain&lt;br /&gt;
|Killing the Mastermind w/o taking damage&lt;br /&gt;
|N/A&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|Medal of Prejudice&lt;br /&gt;
|Awarded for a perfect kill-rate&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|UAC Star (bronze cluster)&lt;br /&gt;
|25 kills without taking damage&lt;br /&gt;
|N/A&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|UAC Star (silver cluster)&lt;br /&gt;
|50 kills without taking damage&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|UAC Star (gold cluster)&lt;br /&gt;
|100 kills without taking damage&lt;br /&gt;
|N/A&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|Minor Icarus Cross&lt;br /&gt;
|Finished the game in less than 40,000 turns&lt;br /&gt;
|Angel of Confidence, Angel of Overconfidence&lt;br /&gt;
|-&lt;br /&gt;
|Major Icarus Cross&lt;br /&gt;
|Finished the game in less than 20,000 turns&lt;br /&gt;
|Angel of Haste&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|Gambler's Shield&lt;br /&gt;
|Pulled more than 25 levers in one game&lt;br /&gt;
|Angel of 100, Archangel of 666&lt;br /&gt;
|-&lt;br /&gt;
|Aurora Medallion&lt;br /&gt;
|Finding more than 3 uniques in one game&lt;br /&gt;
|Angel of 100&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|Explorer Badge&lt;br /&gt;
|Visited all generated levels&lt;br /&gt;
|Angel of Confidence, Angel of Overconfidence, Angel of 100, Archangel of 666&lt;br /&gt;
|-&lt;br /&gt;
|Conqueror Badge&lt;br /&gt;
|Completed all [[Levels#Special Levels|generated levels]]&lt;br /&gt;
|Angel of Haste, Angel of 100&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|Compet-n Silver Cross&lt;br /&gt;
|Finished the game in under thirty minutes&lt;br /&gt;
|Angel of Confidence, Angel of Overconfidence&lt;br /&gt;
|-&lt;br /&gt;
|Compet-n Gold Cross&lt;br /&gt;
|Finished the game in under twenty minutes&lt;br /&gt;
|Angel of Haste&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|Compet-n Platinum Cross&lt;br /&gt;
|Finished the game in under ten minutes&lt;br /&gt;
|Angel of Confidence, Angel of Overconfidence&lt;br /&gt;
|-&lt;br /&gt;
|Untouchable Badge&lt;br /&gt;
|Won taking less than 500 damage&lt;br /&gt;
|Angel of Haste&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|Experience Medal&lt;br /&gt;
|Reach experience level 20&lt;br /&gt;
|Angel of Pacifism, Archangel of Pacifism&lt;br /&gt;
|-&lt;br /&gt;
|Experience Cross&lt;br /&gt;
|Reach experience level 25&lt;br /&gt;
|Angel of Pacifism, Archangel of Pacifism&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secret medals==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;175&amp;quot; align=&amp;quot;left&amp;quot;       | Rank&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Requirements&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Prohibited Challenges&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|Gutts' Heart&lt;br /&gt;
|Awarded for killing Mastermind with the [[Dragonslayer]]&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Grammaton Cleric Cross&lt;br /&gt;
|Mastermind shot with the [[Grammaton Cleric Beretta|Cleric Beretta]]&lt;br /&gt;
|N/A&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|Apostle Insignia&lt;br /&gt;
|Awarded for killing the Apostle(????)&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Malicious Knives Cross&lt;br /&gt;
|Won and killed everything with [[Combat knife|knives]] and fists&lt;br /&gt;
|Angel of Pacifism&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|Sunrise Iron Fist&lt;br /&gt;
|Winning the game killing everything only with [[Fists|your bare hands]]&lt;br /&gt;
|Angel of Pacifism, Archangel of Pacifism&lt;br /&gt;
|-&lt;br /&gt;
|Thomas's Medal&lt;br /&gt;
|Win [[Game_Settings#Challenges|AoHumanity]] as a [[Medals#Conqueror Badge|Conqueror]]&lt;br /&gt;
|N/A&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|Fallout Gold Cross&lt;br /&gt;
|[[Thermonuclear bomb|Nuked]] at least three levels in one game&lt;br /&gt;
|Angel of Red Alert, Angel of 100, Archangel of 666&lt;br /&gt;
|-&lt;br /&gt;
|Fallout Platinum Cross&lt;br /&gt;
|[[Thermonuclear bomb|Nuked]] at least six levels in one game&lt;br /&gt;
|Angel of Red Alert, Angel of 100, Archangel of 666&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|Iron Skull&lt;br /&gt;
|Take 10,000 damage in a single game&lt;br /&gt;
|Angel of 100, Archangel of 666&lt;br /&gt;
|-&lt;br /&gt;
|Untouchable Medal&lt;br /&gt;
|Won taking less than 200 damage&lt;br /&gt;
|Angel of Haste&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|Untouchable Cross&lt;br /&gt;
|Won taking less than 50 damage&lt;br /&gt;
|Angel of Confidence, Angel of Overconfidence&lt;br /&gt;
|-&lt;br /&gt;
|Gargulec Medal&lt;br /&gt;
|Win [[Game_Settings#Challenges|AoB]] with 100% kills&lt;br /&gt;
|N/A&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|Gargulec Cross&lt;br /&gt;
|Win [[Game_Settings#Challenges|AoB]] with 100% kills on UV&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Dervis' Medallion&lt;br /&gt;
|Winning [[Game_Settings#Challenges|Ao100]] on Nightmare!&lt;br /&gt;
|N/A&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|Every Soldier's Medal&lt;br /&gt;
|Clear [[The Wall|the Wall]] on [[Game_Settings#Challenges|AoHumanity]]&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Grim Reaper's Badge&lt;br /&gt;
|Awarded for clearing the [[The Mortuary|Mortuary]]/[[Limbo]]&lt;br /&gt;
|N/A&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|Angelic Badge&lt;br /&gt;
|Clearing the Mortuary/Limbo w/o taking damage&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Chessmaster's Token&lt;br /&gt;
|Complete arena on AoMs or AoI on UV&lt;br /&gt;
|N/A&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|Chessmaster's Cross&lt;br /&gt;
|Complete arena on AoMs or AoI on N!&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Hell Champion Medal&lt;br /&gt;
|Awarded for completing [[Hell's Arena|hell arena]]&lt;br /&gt;
|N/A&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|Hell Arena Key&lt;br /&gt;
|Awarded for completing [[Hell's Arena|hell arena]] w/o damage&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Hell Arena Pwnage Medal&lt;br /&gt;
|Awarded for completing [[Hell's Arena|hell arena]] on N! w/o damage&lt;br /&gt;
|N/A&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|Spider Killer's Cross&lt;br /&gt;
|Clear the [[Spider's Lair]] on [[Game_Settings#Challenges|AoHumanity]]&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Hell Armorer Badge&lt;br /&gt;
|Awarded for clearing [[Hell's Armory]]/[[Deimos Lab]]&lt;br /&gt;
|N/A&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|Shambler's Head&lt;br /&gt;
|Awarded for clearing Hell's Armory/Deimos Lab w/o damage&lt;br /&gt;
|N/A&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Halls_of_Carnage</id>
		<title>Halls of Carnage</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Halls_of_Carnage"/>
				<updated>2013-04-02T00:36:21Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Updating for 0997&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infostrat switch}}&lt;br /&gt;
{{Special level|&lt;br /&gt;
level_name=Halls of Carnage|&lt;br /&gt;
level_dlvl=14|&lt;br /&gt;
level_intxt=''You feel the sudden need to run!''|&lt;br /&gt;
level_loottxt=''None''|&lt;br /&gt;
level_outtxt=''None''|&lt;br /&gt;
level_itytd=[[former human]] (x9), [[former sergeant]] (x10), [[lost soul]] (x8), [[demon]] (x12), [[cacodemon]] (x4)&lt;br /&gt;
Lava Flood Rate: ~1 column / 8 [[time|seconds]]|&lt;br /&gt;
level_hntr=[[former human]] (x10), [[former sergeant]] (x12), [[lost soul]] (x10), [[demon]] (x8), [[cacodemon]] (x4), [[hell knight]] (x4)&lt;br /&gt;
Lava Flood Rate: ~1 column / 6 [[time|seconds]]|&lt;br /&gt;
level_hmp=[[former human]] (x11), [[former sergeant]] (x13), [[lost soul]] (x12), [[demon]] (x8), [[hell knight]] (x4), [[baron of hell]] (x4)&lt;br /&gt;
Lava Flood Rate: ~1 column / 5 [[time|seconds]]|&lt;br /&gt;
level_uv=[[former human]] (x12), [[former sergeant]] (x16), [[lost soul]] (x14), [[hell knight]] (x8), [[baron of hell]] (x8)&lt;br /&gt;
Lava Flood Rate: ~1 column / 3 [[time|seconds]]|&lt;br /&gt;
level_n=[[former human]] (x13), [[former sergeant]], [[lost soul]] (x16), [[nightmare demon]] (x8), [[nightmare cacodemon]] (x4), [[baron of hell]] (x4)&lt;br /&gt;
Lava Flood Rate: ~1 column / 2 [[time|seconds]]|&lt;br /&gt;
level_loot=[[combat shotgun]], {{exotic link|BFG 9000}}, [[Large Health Globe]] (x2), [[10mm ammo]] (24x8), standard [[mods]] (x2)|&lt;br /&gt;
level_other=Lava will start flooding the level from the left. Its speed is generally faster than the [[level feeling]] version, and is much faster on higher difficulties. There are many locked doors between the starting room and the stairs - attack them with any weapon to knock them down.&lt;br /&gt;
Paired with [[Spider's Lair]].}}&lt;br /&gt;
&lt;br /&gt;
{{map|&lt;br /&gt;
map={{:Halls of Carnage/Map}}|&lt;br /&gt;
map_description=(This map was created based on 0.9.9.6.  This will be updated sometime.)&lt;br /&gt;
&lt;br /&gt;
This map shows the Ultra-violence monsters.&lt;br /&gt;
&lt;br /&gt;
On Hurt Me Plenty, cacodemons are replaced by lost souls.&lt;br /&gt;
&lt;br /&gt;
On Hey, Not Too Rough, cacodemons are replaced by lost souls, hell knights are replaced by cacodemons and barons of hell are replaced by hell knights.&lt;br /&gt;
&lt;br /&gt;
On I'm Too Young To Die, cacodemons are replaced by lost souls, hell knights are replaced by demons and barons of hell are replaced by cacodemons.}}&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Hell_knight</id>
		<title>Hell knight</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Hell_knight"/>
				<updated>2013-04-01T18:39:24Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Turns out Knights have 110% speed!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infostrat switch}}&lt;br /&gt;
{{Monsters|&lt;br /&gt;
monster_name=Hell knight|&lt;br /&gt;
monster_looks=&amp;lt;font color=&amp;quot;olive&amp;quot;&amp;gt;&amp;lt;b&amp;gt;B&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;|&lt;br /&gt;
monster_hp=50|&lt;br /&gt;
monster_ac=1|&lt;br /&gt;
monster_acc=+6 melee, +6 ranged|&lt;br /&gt;
monster_melee=1d3+6 = 7-9 = 8 avg|&lt;br /&gt;
monster_projectile=2d6 = 2-12 = 7 avg: [[damage type#plasma|plasma damage]], [[explosions|radius]] 1|&lt;br /&gt;
monster_speed=110%|&lt;br /&gt;
monster_dlvl=9-15|&lt;br /&gt;
monster_xp=128|&lt;br /&gt;
monster_inventory=None|&lt;br /&gt;
monster_pickup=Yes|&lt;br /&gt;
monster_doors=Yes|&lt;br /&gt;
monster_atkchance=40|&lt;br /&gt;
monster_abilities=Has 50% acid [[resistance]].|&lt;br /&gt;
monster_description=''These are hell's warlords. They command hellish armies to battle. Not as tough as Barons but still a pain in the ass...''|&lt;br /&gt;
monster_other=N/A}}&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Abyssal_Plains</id>
		<title>Abyssal Plains</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Abyssal_Plains"/>
				<updated>2013-04-01T17:02:23Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Adding all the level data I could figure out.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infostrat switch}}&lt;br /&gt;
{{Special level|&lt;br /&gt;
level_name=Abyssal Plains|&lt;br /&gt;
level_dlvl=12|&lt;br /&gt;
level_intxt=''Well isn't this... just... dandy.''|&lt;br /&gt;
level_loottxt=|&lt;br /&gt;
level_outtxt=|&lt;br /&gt;
level_itytd=[[imp]] (x17), [[lost soul]] (x11), [[cacodemon]] (x5), [[pain elemental]], [[Agony elemental]]|&lt;br /&gt;
level_hntr=[[imp]] (x8), [[lost soul]] (x13), [[cacodemon]] (x8), [[hell knight]] (x6), [[pain elemental]], [[Agony elemental]]|&lt;br /&gt;
level_hmp=[[lost soul]] (x17), [[cacodemon]] (x3), [[hell knight]] (x14), [[arachnotron]] (x5), [[pain elemental]] (x4), [[Agony elemental]]|&lt;br /&gt;
level_uv= [[lost soul]] (x15), [[cacodemon]] (x3), [[hell knight]] (x14), [[arachnotron]] (x5), [[pain elemental]] (x6), [[Agony elemental]]|&lt;br /&gt;
level_n=[[nightmare imp]] (x8), [[lost soul]] (x7), [[cacodemon]] (x3), [[hell knight]] (x6), [[arachnotron]] (x5), [[pain elemental]] (x14), [[Agony elemental]]|&lt;br /&gt;
level_loot=[[Small Health Globe]] (x4), [[large med-pack]], [[shotgun shell]] (8x3), [[10mm ammo]] (24x3), [[ammochain]], [[shell box]], [[rocket box]], [[shotgun]], [[chaingun]], {{exotic link|missile launcher}}, [[Supercharge Globe]]&lt;br /&gt;
The agony elemental drops three random [[Items#Consumables|skulls]] upon death.|&lt;br /&gt;
level_other=Entering the center room will cause walls to pop up on either side of you, trapping you in with the [[agony elemental]]. The walls will vanish after 40 [[time|seconds]]. This level is paired with [[City of Skulls]].}}&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Containment_Area</id>
		<title>Containment Area</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Containment_Area"/>
				<updated>2013-04-01T07:21:54Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Adding all the level data I could figure out.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infostrat switch}}&lt;br /&gt;
{{Special level|&lt;br /&gt;
level_name=Containment Area|&lt;br /&gt;
level_dlvl=11|&lt;br /&gt;
level_intxt=|&lt;br /&gt;
level_loottxt=|&lt;br /&gt;
level_outtxt=|&lt;br /&gt;
level_itytd=[[imp]] (x11), [[demon]] (x4)&lt;br /&gt;
Trap: [[hell knight]] (x9)|&lt;br /&gt;
level_hntr=[[imp]] (x13), [[demon]] (x4)&lt;br /&gt;
Trap: [[hell knight]] (x6), [[baron of hell]] (x4)|&lt;br /&gt;
level_hmp=[[imp]] (x15), [[demon]] (x4)&lt;br /&gt;
Trap: [[hell knight]] (x3), [[baron of hell]] (x8)|&lt;br /&gt;
level_uv=[[imp]] (x17), [[demon]] (x4)&lt;br /&gt;
Trap: [[baron of hell]] (x12), [[arch-vile]]|&lt;br /&gt;
level_n=[[imp]] (x19), [[demon]] (x4)&lt;br /&gt;
Trap: [[baron of hell]] (x13), [[arch-vile]] (x2)|&lt;br /&gt;
level_loot=[[ammochain]], {{exotic link|missile launcher}}, [[Backpack]], [[rocket box]]&lt;br /&gt;
Ammo crates (x8), Armor crates (x8)|&lt;br /&gt;
level_other=Getting too close to the backpack will spawn in powerful enemies behind you. However, nothing happens if you grab the missile launcher, located in one of the small southern rooms.&lt;br /&gt;
Paired with [[The Wall]].}}&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Deimos_Lab</id>
		<title>Deimos Lab</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Deimos_Lab"/>
				<updated>2013-04-01T06:43:05Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Adding all the level data I could figure out.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infostrat switch}}&lt;br /&gt;
{{Special level|&lt;br /&gt;
level_name=Deimos Lab|&lt;br /&gt;
level_dlvl=9 (Does not appear on ITYTD)|&lt;br /&gt;
level_intxt=|&lt;br /&gt;
level_loottxt=|&lt;br /&gt;
level_outtxt=|&lt;br /&gt;
level_itytd=N/A|&lt;br /&gt;
level_hntr=[[former human]] (x8), [[former sergeant]] (x4), [[former captain]] (x2), [[lost soul]] (x14), [[arachnotron]] (x4), [[Shambler]] (x2)|&lt;br /&gt;
level_hmp=[[former sergeant]] (x12), [[former captain]] (x2), [[lost soul]] (x16), [[arachnotron]] (x4), [[Shambler]] (x2)|&lt;br /&gt;
level_uv=[[former captain]] (x10), [[former commando]] (x4), [[cacodemon]] (x10), [[revenant]] (x4), [[Shambler]] (x2)|&lt;br /&gt;
level_n=[[former captain]] (x10), [[former commando]] (x4), [[cacodemon]] (x11), [[revenant]] (x4), [[Shambler]] (x2)|&lt;br /&gt;
level_loot= [[green armor]], [[blue armor]], [[Supercharge Globe]] (x2), standard [[mods]] (x2), [[ammochain]], [[shell box]], random weapons (x3)&lt;br /&gt;
Ammo crates (x16), Armor crates (x16)&lt;br /&gt;
&lt;br /&gt;
Lab cache rewards are similar to [[Hell's Armory]], except there are 3 mods rewarded in addition to the premium item instead of 2.|&lt;br /&gt;
level_other=Pulling the levers in the centre will unleash two [[Shambler]]s.&lt;br /&gt;
Paired with [[Hell's Armory]].}}&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Military_Base</id>
		<title>Military Base</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Military_Base"/>
				<updated>2013-03-31T05:25:53Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Adding all the level data I could figure out.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infostrat switch}}&lt;br /&gt;
{{Special level|&lt;br /&gt;
level_name=Military Base|&lt;br /&gt;
level_dlvl=7|&lt;br /&gt;
level_intxt=''Seeing this place again takes you back!''|&lt;br /&gt;
level_loottxt=None|&lt;br /&gt;
level_outtxt=|&lt;br /&gt;
level_itytd=[[former human]] (x24), [[former sergeant]] (x17), [[former captain]] (x11), [[former commando]] (x2)|&lt;br /&gt;
level_hntr=[[former human]] (x24), [[former sergeant]] (x17), [[former captain]] (x6), [[elite former human]] (x5), [[elite former sergeant]] (x2)|&lt;br /&gt;
level_hmp=[[former human]] (x24), [[former sergeant]] (x12), [[former captain]] (x6), [[elite former human]] (x5), [[elite former sergeant]] (x5), [[elite former captain]] (x2)|&lt;br /&gt;
level_uv=[[former human]] (x17), [[former sergeant]] (x12), [[former captain]] (x6), [[elite former human]] (x7), [[elite former sergeant]] (x5), [[elite former captain]] (x5), [[elite former commando]] (x2)|&lt;br /&gt;
level_n=[[former human]] (x17), [[former sergeant]] (x12), [[former captain]] (x6), [[elite former human]] (x7), [[elite former sergeant]] (x5), [[elite former commando]] (x7)|&lt;br /&gt;
level_loot=[[envirosuit pack]], [[combat shotgun]], [[Large Health Globe]] (x3), [[Tracking Map]], standard [[mods]] (x2).&lt;br /&gt;
Ammo crates (x28), Armor crates (x28)&lt;br /&gt;
&lt;br /&gt;
The breakable crates may contain all sorts of cool stuff, up to and including [[blue armor]], [[ammochain]]s, [[shell box]]es and med-packs, both [[large med-pack|large]] and [[small med-pack|small]].|&lt;br /&gt;
level_other=The pink and yellow crates can be broken with any weapon, although a pistol may take a few shots.&lt;br /&gt;
Paired with [[Phobos Lab]].}}&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Phobos_Lab</id>
		<title>Phobos Lab</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Phobos_Lab"/>
				<updated>2013-03-31T03:28:16Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Adding all the level data I could figure out.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infostrat switch}}&lt;br /&gt;
{{Special level|&lt;br /&gt;
level_name=Phobos Lab|&lt;br /&gt;
level_dlvl=7|&lt;br /&gt;
level_intxt=''You arrive at the Phobos Lab. You are overcome by the feeling of nostalgia!''|&lt;br /&gt;
level_loottxt=''This lab won't do any more experiments... I wonder if there are others?''|&lt;br /&gt;
level_outtxt=''So much for the lab, next time I'll use neurotoxin...''|&lt;br /&gt;
level_itytd=[[former human]] (x10), [[former sergeant]] (x5), [[demon]] (x12)|&lt;br /&gt;
level_hntr=[[former human]] (x14), [[former sergeant]] (x5), [[demon]] (x12)|&lt;br /&gt;
level_hmp=[[former human]] (x14), [[former sergeant]] (x13), [[imp]] (x6), [[demon]] (x25)|&lt;br /&gt;
level_uv= [[former human]] (x14), [[former sergeant]] (x13), [[imp]] (x7), [[demon]] (x13), [[Nightmare demon]] (x12) |&lt;br /&gt;
level_n=[[former human]] (x14), [[former sergeant]] (x13), [[imp]] (x7), [[Nightmare demon]] (x25)|&lt;br /&gt;
level_loot=[[blue armor]], [[combat shotgun]], [[small med-pack]] (x4), [[large med-pack]] (x2), [[Large Health Globe]] (x3), [[envirosuit pack]] (x2), [[10mm ammo]] (24x9), [[shotgun shell]] (8x9), random standard [[mods]] (x2)|&lt;br /&gt;
level_other=This level is paired with the [[Military Base]]. There is a random chance that you will roll this floor instead of The Military Base on Level 7.}}&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Game_Settings</id>
		<title>Game Settings</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Game_Settings"/>
				<updated>2013-03-26T02:26:43Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: /* Angel Game Challenges */ Updating difficulty ratings.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infostrat switch}}&lt;br /&gt;
==Difficulty==&lt;br /&gt;
Game difficulty roughly emulates that of the original game. There are five to select from:&lt;br /&gt;
* '''I'm Too Young to Die (ITYTD)''': The easiest difficulty, in many ways. Ammo is doubled, enemy spawns are at their lowest, healing and powerup durations are doubled. A good way to start playing the game, although you won't have access to every [[Levels#Special levels|special level]] available nor play any challenges.&lt;br /&gt;
* '''Hey, Not Too Rough (HNTR)''': The &amp;quot;standard&amp;quot; difficulty for many players. Given that all multipliers are set to one, challenges are allowed, and all special levels are now available, this is an appropriate moniker.&lt;br /&gt;
* '''Hurt Me Plenty (HMP)''': The first &amp;quot;difficult&amp;quot; difficulty. More numerous and accurate enemies appear at earlier floors, giving you less time to prepare for the late stages of the game.&lt;br /&gt;
* '''Ultra-violence (UV)''': The difficulty of DoomRL veterans. This is the point where even the first few floors of the game can kill you reliably if you don't know the inns and outs of the game. It is unlocked at the Lance Corporal [[Ranks#Skill Ranks|skill rank]].&lt;br /&gt;
* '''Nightmare! (N!)''': The exclamation point does not lie, this difficulty is for hardcore players only. In addition to Ultra-violence changes, enemies can respawn at any time, are faster (relative to you), and attack more often. You can't save, either! At least several of the ITYTD benefits are back to help. It is unlocked at the Sergeant skill rank.&lt;br /&gt;
&lt;br /&gt;
The differences in game difficulty may seem subtle, but switching to a harder difficulty is easily the most frustrating part of playing DoomRL, [[Badges#Diamond badges|diamond badges]] aside. Difficulty information has been tabulated: the columns are identified as follows:&lt;br /&gt;
&lt;br /&gt;
* '''Shorthand''': How the difficulty is expressed on the score page (and in mortem tags on the forums)&lt;br /&gt;
* '''Score Multiplier''': How much your score is increased by, just by playing on that difficulty level&lt;br /&gt;
* '''Ammo Multiplier''': For randomly generated ammo, how much extra is added to each stack&lt;br /&gt;
* '''Enemy Accuracy''': How much the enemies' accuracy is changed on this difficulty&lt;br /&gt;
* '''Enemy Spawns''': How many enemies spawn on randomly generated levels, and how much their depth level is modified&lt;br /&gt;
* '''Healing/Powerups''': The duration/strength of powerups, and the health gain of small healing items&lt;br /&gt;
* '''XP Multipler''': How much increased experience is gained for killing enemies&lt;br /&gt;
* '''Special''': Any extra features regarding the difficulty level&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;rules: cols; border: 2px solid darkred; border-spacing: 0; font-size: 90%; margin: 0.25em 0.5em;&amp;quot;&lt;br /&gt;
|colspan=11 style=&amp;quot;background: darkred; color: yellow; font-size: 120%; text-align: center&amp;quot;|'''Difficulty Levels'''&lt;br /&gt;
|- &lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 1px 1px 0&amp;quot; width=100|'''Difficulty'''&lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 1px 1px 1px&amp;quot; width=50|'''Shorthand'''&lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 1px 1px 1px&amp;quot; width=50|'''Score Multiplier'''&lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 1px 1px 1px&amp;quot; width=50|'''Ammo Multiplier'''&lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 1px 1px 1px&amp;quot; width=50|'''Enemy Accuracy'''&lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 1px 1px 1px&amp;quot; width=50|'''Enemy Spawns'''&lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 1px 1px 1px&amp;quot; width=50|'''Healing/ Powerups'''&lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 1px 1px 1px&amp;quot; width=50|'''XP Multiplier'''&lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 0 1px 1px&amp;quot;|'''Special'''&lt;br /&gt;
|- style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|style=&amp;quot;text-align: left; padding-right: 1ex; border: solid darkred; border-width: 1px 1px 0 0&amp;quot;|I'm Too Young To Die&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 1px 1px 0 1px&amp;quot;|E&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 1px 1px 0 1px&amp;quot;|0.5&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 1px 1px 0 1px&amp;quot;|2&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 1px 1px 0 1px&amp;quot;|-1&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 1px 1px 0 1px&amp;quot;|Low/+0&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 1px 1px 0 1px&amp;quot;|Doubled&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 1px 1px 0 1px&amp;quot;|1.4&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 1px 0px 0 1px&amp;quot;|Acid/lava deals half damage, some special levels barred, no challenges&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align: left; padding-right: 1ex; border: solid darkred; border-width: 0 1px 0 0&amp;quot;|Hey, Not Too Rough&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|M&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|+0&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|Normal/+0&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|Normal&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1.2&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 0px 0 1px&amp;quot;|N/A&lt;br /&gt;
|- style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|style=&amp;quot;text-align: left; padding-right: 1ex; border: solid darkred; border-width: 0 1px 0 0&amp;quot;|Hurt Me Plenty&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|H&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1.5&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1.25&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|+1&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|High/-3&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|Normal&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 0px 0 1px&amp;quot;|N/A&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align: left; padding-right: 1ex; border: solid darkred; border-width: 0 1px 0 0&amp;quot;|Ultra-violence&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|U&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|2&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1.5&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|+2&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|Very High/-6&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|Normal&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 0px 0 1px&amp;quot;|N/A&lt;br /&gt;
|- style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|style=&amp;quot;text-align: left; padding-right: 1ex; border: solid darkred; border-width: 0 1px 0 0&amp;quot;|Nightmare!&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|N!&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|4&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|2&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|+2&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|WTF/-6&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|Doubled&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1.2&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 0px 0 1px&amp;quot;|Respawning, player speed decreased by 10%, +50% enemy attack chance, no saving&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Challenges==&lt;br /&gt;
This section lists the different challenges and how they affect gameplay.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The standard items (that is, what you get in a standard game) is as follows: [[pistol]] (equipped), [[10mm ammo]] (x24), [[small med-pack]] (x2).&lt;br /&gt;
&lt;br /&gt;
===Angel Game Challenges===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;150&amp;quot; align=&amp;quot;left&amp;quot;       | Challenge&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Difficulty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Unlocked at&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Description&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Starting Items&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Angel of Berserk''' (AoB)&lt;br /&gt;
|Medium&lt;br /&gt;
|Private FC&lt;br /&gt;
|Only melee weapons can be used to attack. Large Healing Globes additionally grant 20 turns of [[effects#berserk|berserk]].&lt;br /&gt;
|[[Large med-pack]] (x2), [[blue armor]]&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Marksmanship''' (AoMr)&lt;br /&gt;
|Medium&lt;br /&gt;
|Private FC&lt;br /&gt;
|Only [[pistol|pistols]] and [[fists]] can be used to attack.&lt;br /&gt;
|Standard + 1 [[Items#Modification Packs (Mods)|random standard mod]] (except power mod) + 1 technical mod&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Angel of Shotgunnery''' (AoSh)&lt;br /&gt;
|Easy&lt;br /&gt;
|Lance Corporal&lt;br /&gt;
|Only shotguns (weapons with a spread projectile) and fists can be used to attack.&lt;br /&gt;
|[[Shotgun]], [[shotgun shell]] (x50)&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Light Travel''' (AoLT)&lt;br /&gt;
|Hard&lt;br /&gt;
|Lance Corporal&lt;br /&gt;
|Your inventory is limited to 5 items (excluding equipment slots); player speed is increased by 20%.&lt;br /&gt;
|Standard + [[10mm ammo chain]] + [[shell box]]&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Angel of Impatience''' (AoI)&lt;br /&gt;
|Hard&lt;br /&gt;
|Corporal&lt;br /&gt;
|All [[Items#Consumables|consumable]] items are immediately used upon pickup.&lt;br /&gt;
|Standard - [[small med-pack]] (x2)&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Confidence''' (AoCn)&lt;br /&gt;
|Very Hard&lt;br /&gt;
|Sergeant&lt;br /&gt;
|You start on Deimos floor 1 instead of Phobos floor 1 (thus skipping the first 8 levels)&lt;br /&gt;
|Pistol (equipped), shotgun, [[chaingun]], [[combat knife]], 10mm ammo (x100), shotgun shell (x50), large med-pack (x2)&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Angel of Purity''' (AoP)&lt;br /&gt;
|Blade&lt;br /&gt;
|Sergeant&lt;br /&gt;
|All [[Items#Powerups|powerup]] effects are disabled.&lt;br /&gt;
|Standard&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Red Alert''' (AoRA)&lt;br /&gt;
|Medium&lt;br /&gt;
|Sergeant&lt;br /&gt;
|A five-minute [[thermonuclear bomb|nuke]] is armed at the start of every level, whether random or special.&lt;br /&gt;
|Standard&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Angel of Darkness''' (AoD)&lt;br /&gt;
|Very Hard&lt;br /&gt;
|Sergeant&lt;br /&gt;
|Your vision radius is only 6 and anything outside of this radius is black, except for what maps reveal as well as [[Intuition]].  Scouts and maps do not know the location of stairs.  Experience gain is doubled.&lt;br /&gt;
|Standard&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Max Carnage''' (AoMC)&lt;br /&gt;
|Easy&lt;br /&gt;
|Sergeant Major&lt;br /&gt;
|All attacks from all source deal maximum damage, and accuracy of yourself and all enemies is increased by 12.&lt;br /&gt;
|Standard&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Angel of Masochism''' (AoMs)&lt;br /&gt;
|Blade&lt;br /&gt;
|Sergeant Major&lt;br /&gt;
|All healing effects (including [[tactics]] restoration) are disabled, save [[Traits#Vampyre|Vampyre]] You are [[Supercharge Globe|supercharged]] at every level-up.&lt;br /&gt;
|Standard, no medpacks, 100 ammo instead of 40.&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of 100''' (A100)&lt;br /&gt;
|Hard&lt;br /&gt;
|Sergeant Major&lt;br /&gt;
|All special levels are removed: the player must instead descend 100 floors to win.&lt;br /&gt;
|Standard&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Angel of Pacifism''' (AoPc)&lt;br /&gt;
|Easy&lt;br /&gt;
|Sergeant Major&lt;br /&gt;
|All weapon attacks are disabled. [[Phobos Base Entry]] is removed (for balance purposes). Every third staircase you descend makes you level-up.&lt;br /&gt;
|[[Thermonuclear bomb]], large med-pack (x4), blue armor (equipped)&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Humanity''' (AoHu)&lt;br /&gt;
|Blade&lt;br /&gt;
|Warrant Officer&lt;br /&gt;
|Your max HP starts at 10. [[Traits#Ironman|Ironman]] increases your max HP by two per rank.&lt;br /&gt;
|Standard + large med-pack (x2), [[red armor]] (equipped), one of each standard mod&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Angel of Overconfidence''' (AoOC)&lt;br /&gt;
|Very Hard&lt;br /&gt;
|Sergeant&lt;br /&gt;
|You start on Hell floor 1 instead of Phobos floor 1 (thus skipping the first 16 levels)&lt;br /&gt;
|[[Combat pistol]] (equipped), [[assault shotgun]], [[minigun]], combat knife, large med-pack (x2), 10mm ammo chain, shell box&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dual-Angel Game Challenges===&lt;br /&gt;
&lt;br /&gt;
Lets you select a pair of challenges to run simultaneously.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot; | Primary Challenge&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot; | Eligible Secondary Challenges&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Berserk'''&lt;br /&gt;
|AoCn, AoOC, A100, AoLT, AoI, AoP, AoRA, AoD, AoMs&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|'''Angel of Marksmanship'''&lt;br /&gt;
|AoCn, AoOC, A100, AoLT, AoI, AoP, AoRA, AoD, AoMs&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Shotgunnery'''&lt;br /&gt;
|AoCn, AoOC, A100, AoLT, AoI, AoP, AoRA, AoD, AoMs&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|'''Angel of Impatience'''&lt;br /&gt;
|AoCn, AoOC, A100, AoLT, AoRA, AoD&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Purity'''&lt;br /&gt;
|AoCn, AoOC, A100, AoLT, AoRA, AoD&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|'''Angel of Darkness'''&lt;br /&gt;
|AoCn, AoOC, A100, AoLT, AoI, AoP, AoRA, AoMs&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Max Carnage'''&lt;br /&gt;
|AoCn, AoOC, A100, AoLT, AoI, AoP, AoRA, AoD, AoMs&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|'''Angel of Pacifism'''&lt;br /&gt;
|AoCn, AoOC, A100, AoI, AoP, AoD, AoMs&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Humanity'''&lt;br /&gt;
|AoCn, AoOC, A100, AoI, AoP, AoRA, AoD, AoMs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Archangel Game Challenges===&lt;br /&gt;
&lt;br /&gt;
Extremely difficult challenges, each one is a harder version of an Angel Game Challenge.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;150&amp;quot; align=&amp;quot;left&amp;quot;       | Challenge&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Difficulty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Unlocked at&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Description&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Starting Items&lt;br /&gt;
|-&lt;br /&gt;
|'''Archangel of Travel'''&lt;br /&gt;
|Blade&lt;br /&gt;
|Sergeant&lt;br /&gt;
|Your inventory is limited to 2 items (excluding equipment slots); player speed is increased by 30%.&lt;br /&gt;
|[[Pistol]] (equipped) + [[10mm ammo chain]]&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Archangel of Red Alert'''&lt;br /&gt;
|Blade&lt;br /&gt;
|Sergeant&lt;br /&gt;
|A two-and-a-half-minute [[thermonuclear bomb|nuke]] is armed at the start of every level, whether random or special.&lt;br /&gt;
|Standard&lt;br /&gt;
|-&lt;br /&gt;
|'''Archangel of Masochism'''&lt;br /&gt;
|Blade&lt;br /&gt;
|Sergeant Major&lt;br /&gt;
|All healing effects (including [[tactics]] restoration) are disabled, save [[Traits#Vampyre|Vampyre]].&lt;br /&gt;
|Standard, no medpacks, 100 ammo instead of 40.&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Archangel of 666'''&lt;br /&gt;
|Blade&lt;br /&gt;
|Sergeant Major&lt;br /&gt;
|All special levels are removed: the player must instead descend 666 floors to win.&lt;br /&gt;
|Standard&lt;br /&gt;
|-&lt;br /&gt;
|'''Archangel of Pacifism'''&lt;br /&gt;
|Blade&lt;br /&gt;
|Sergeant Major&lt;br /&gt;
|All weapon attacks are disabled. [[Phobos Base Entry]] is removed (for balance purposes).&lt;br /&gt;
|[[Thermonuclear bomb]], large med-pack (x4), blue armor (equipped)&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Archangel of Humanity'''&lt;br /&gt;
|TwoDev&lt;br /&gt;
|Warrant Officer&lt;br /&gt;
|Your maximum HP starts at 10. [[Traits#Ironman|Ironman]] increases your max HP by two per rank. You don't get any benefit from leveling up.&lt;br /&gt;
|Standard + large med-pack (x2), [[red armor]] (equipped), one of each standard mod&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Game_Settings</id>
		<title>Game Settings</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Game_Settings"/>
				<updated>2013-03-25T15:14:54Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: /* Angel Game Challenges */ Added Abbreviations&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infostrat switch}}&lt;br /&gt;
==Difficulty==&lt;br /&gt;
Game difficulty roughly emulates that of the original game. There are five to select from:&lt;br /&gt;
* '''I'm Too Young to Die (ITYTD)''': The easiest difficulty, in many ways. Ammo is doubled, enemy spawns are at their lowest, healing and powerup durations are doubled. A good way to start playing the game, although you won't have access to every [[Levels#Special levels|special level]] available nor play any challenges.&lt;br /&gt;
* '''Hey, Not Too Rough (HNTR)''': The &amp;quot;standard&amp;quot; difficulty for many players. Given that all multipliers are set to one, challenges are allowed, and all special levels are now available, this is an appropriate moniker.&lt;br /&gt;
* '''Hurt Me Plenty (HMP)''': The first &amp;quot;difficult&amp;quot; difficulty. More numerous and accurate enemies appear at earlier floors, giving you less time to prepare for the late stages of the game.&lt;br /&gt;
* '''Ultra-violence (UV)''': The difficulty of DoomRL veterans. This is the point where even the first few floors of the game can kill you reliably if you don't know the inns and outs of the game. It is unlocked at the Lance Corporal [[Ranks#Skill Ranks|skill rank]].&lt;br /&gt;
* '''Nightmare! (N!)''': The exclamation point does not lie, this difficulty is for hardcore players only. In addition to Ultra-violence changes, enemies can respawn at any time, are faster (relative to you), and attack more often. You can't save, either! At least several of the ITYTD benefits are back to help. It is unlocked at the Sergeant skill rank.&lt;br /&gt;
&lt;br /&gt;
The differences in game difficulty may seem subtle, but switching to a harder difficulty is easily the most frustrating part of playing DoomRL, [[Badges#Diamond badges|diamond badges]] aside. Difficulty information has been tabulated: the columns are identified as follows:&lt;br /&gt;
&lt;br /&gt;
* '''Shorthand''': How the difficulty is expressed on the score page (and in mortem tags on the forums)&lt;br /&gt;
* '''Score Multiplier''': How much your score is increased by, just by playing on that difficulty level&lt;br /&gt;
* '''Ammo Multiplier''': For randomly generated ammo, how much extra is added to each stack&lt;br /&gt;
* '''Enemy Accuracy''': How much the enemies' accuracy is changed on this difficulty&lt;br /&gt;
* '''Enemy Spawns''': How many enemies spawn on randomly generated levels, and how much their depth level is modified&lt;br /&gt;
* '''Healing/Powerups''': The duration/strength of powerups, and the health gain of small healing items&lt;br /&gt;
* '''XP Multipler''': How much increased experience is gained for killing enemies&lt;br /&gt;
* '''Special''': Any extra features regarding the difficulty level&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;rules: cols; border: 2px solid darkred; border-spacing: 0; font-size: 90%; margin: 0.25em 0.5em;&amp;quot;&lt;br /&gt;
|colspan=11 style=&amp;quot;background: darkred; color: yellow; font-size: 120%; text-align: center&amp;quot;|'''Difficulty Levels'''&lt;br /&gt;
|- &lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 1px 1px 0&amp;quot; width=100|'''Difficulty'''&lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 1px 1px 1px&amp;quot; width=50|'''Shorthand'''&lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 1px 1px 1px&amp;quot; width=50|'''Score Multiplier'''&lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 1px 1px 1px&amp;quot; width=50|'''Ammo Multiplier'''&lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 1px 1px 1px&amp;quot; width=50|'''Enemy Accuracy'''&lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 1px 1px 1px&amp;quot; width=50|'''Enemy Spawns'''&lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 1px 1px 1px&amp;quot; width=50|'''Healing/ Powerups'''&lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 1px 1px 1px&amp;quot; width=50|'''XP Multiplier'''&lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 0 1px 1px&amp;quot;|'''Special'''&lt;br /&gt;
|- style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|style=&amp;quot;text-align: left; padding-right: 1ex; border: solid darkred; border-width: 1px 1px 0 0&amp;quot;|I'm Too Young To Die&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 1px 1px 0 1px&amp;quot;|E&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 1px 1px 0 1px&amp;quot;|0.5&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 1px 1px 0 1px&amp;quot;|2&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 1px 1px 0 1px&amp;quot;|-1&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 1px 1px 0 1px&amp;quot;|Low/+0&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 1px 1px 0 1px&amp;quot;|Doubled&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 1px 1px 0 1px&amp;quot;|1.4&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 1px 0px 0 1px&amp;quot;|Acid/lava deals half damage, some special levels barred, no challenges&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align: left; padding-right: 1ex; border: solid darkred; border-width: 0 1px 0 0&amp;quot;|Hey, Not Too Rough&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|M&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|+0&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|Normal/+0&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|Normal&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1.2&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 0px 0 1px&amp;quot;|N/A&lt;br /&gt;
|- style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|style=&amp;quot;text-align: left; padding-right: 1ex; border: solid darkred; border-width: 0 1px 0 0&amp;quot;|Hurt Me Plenty&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|H&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1.5&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1.25&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|+1&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|High/-3&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|Normal&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 0px 0 1px&amp;quot;|N/A&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align: left; padding-right: 1ex; border: solid darkred; border-width: 0 1px 0 0&amp;quot;|Ultra-violence&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|U&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|2&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1.5&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|+2&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|Very High/-6&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|Normal&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 0px 0 1px&amp;quot;|N/A&lt;br /&gt;
|- style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|style=&amp;quot;text-align: left; padding-right: 1ex; border: solid darkred; border-width: 0 1px 0 0&amp;quot;|Nightmare!&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|N!&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|4&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|2&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|+2&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|WTF/-6&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|Doubled&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1.2&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 0px 0 1px&amp;quot;|Respawning, player speed decreased by 10%, +50% enemy attack chance, no saving&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Challenges==&lt;br /&gt;
This section lists the different challenges and how they affect gameplay.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The standard items (that is, what you get in a standard game) is as follows: [[pistol]] (equipped), [[10mm ammo]] (x24), [[small med-pack]] (x2).&lt;br /&gt;
&lt;br /&gt;
===Angel Game Challenges===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;150&amp;quot; align=&amp;quot;left&amp;quot;       | Challenge&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Difficulty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Unlocked at&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Description&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Starting Items&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Angel of Berserk''' (AoB)&lt;br /&gt;
|Very Hard&lt;br /&gt;
|Private FC&lt;br /&gt;
|Only melee weapons can be used to attack. Large Healing Globes additionally grant 20 turns of [[effects#berserk|berserk]].&lt;br /&gt;
|[[Large med-pack]] (x2), [[blue armor]]&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Marksmanship''' (AoMr)&lt;br /&gt;
|Easy&lt;br /&gt;
|Private FC&lt;br /&gt;
|Only [[pistol|pistols]] and [[fists]] can be used to attack.&lt;br /&gt;
|Standard + 1 [[Items#Modification Packs (Mods)|random standard mod]] (except power mod) + 1 technical mod&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Angel of Shotgunnery''' (AoSh)&lt;br /&gt;
|Medium&lt;br /&gt;
|Lance Corporal&lt;br /&gt;
|Only shotguns (weapons with a spread projectile) and fists can be used to attack.&lt;br /&gt;
|[[Shotgun]], [[shotgun shell]] (x50)&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Light Travel''' (AoLT)&lt;br /&gt;
|Easy&lt;br /&gt;
|Lance Corporal&lt;br /&gt;
|Your inventory is limited to 5 items (excluding equipment slots); player speed is increased by 20%.&lt;br /&gt;
|Standard + [[10mm ammo chain]] + [[shell box]]&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Angel of Impatience''' (AoI)&lt;br /&gt;
|Hard&lt;br /&gt;
|Corporal&lt;br /&gt;
|All [[Items#Consumables|consumable]] items are immediately used upon pickup.&lt;br /&gt;
|Standard - [[small med-pack]] (x2)&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Confidence''' (AoCn)&lt;br /&gt;
|Hard&lt;br /&gt;
|Sergeant&lt;br /&gt;
|You start on Deimos floor 1 instead of Phobos floor 1 (thus skipping the first 8 levels)&lt;br /&gt;
|Pistol (equipped), shotgun, [[chaingun]], [[combat knife]], 10mm ammo (x100), shotgun shell (x50), large med-pack (x2)&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Angel of Purity''' (AoP)&lt;br /&gt;
|Hard&lt;br /&gt;
|Sergeant&lt;br /&gt;
|All [[Items#Powerups|powerup]] effects are disabled.&lt;br /&gt;
|Standard&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Red Alert''' (AoRA)&lt;br /&gt;
|Hard&lt;br /&gt;
|Sergeant&lt;br /&gt;
|A five-minute [[thermonuclear bomb|nuke]] is armed at the start of every level, whether random or special.&lt;br /&gt;
|Standard&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Angel of Darkness''' (AoD)&lt;br /&gt;
|Hard&lt;br /&gt;
|Sergeant&lt;br /&gt;
|Your vision radius is only 6 and anything outside of this radius is black, except for what maps reveal as well as [[Intuition]].  Scouts and maps do not know the location of stairs.  Experience gain is doubled.&lt;br /&gt;
|Standard&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Max Carnage''' (AoMC)&lt;br /&gt;
|Medium&lt;br /&gt;
|Sergeant Major&lt;br /&gt;
|All attacks from all source deal maximum damage, and accuracy of yourself and all enemies is increased by 12.&lt;br /&gt;
|Standard&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Angel of Masochism''' (AoMs)&lt;br /&gt;
|Very Hard&lt;br /&gt;
|Sergeant Major&lt;br /&gt;
|All healing effects (including [[tactics]] restoration) are disabled, save [[Traits#Vampyre|Vampyre]] You are [[Supercharge Globe|supercharged]] at every level-up.&lt;br /&gt;
|Standard, no medpacks, 100 ammo instead of 40.&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of 100''' (A100)&lt;br /&gt;
|Blade&lt;br /&gt;
|Sergeant Major&lt;br /&gt;
|All special levels are removed: the player must instead descend 100 floors to win.&lt;br /&gt;
|Standard&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Angel of Pacifism''' (AoPc)&lt;br /&gt;
|Blade&lt;br /&gt;
|Sergeant Major&lt;br /&gt;
|All weapon attacks are disabled. [[Phobos Base Entry]] is removed (for balance purposes). Every third staircase you descend makes you level-up.&lt;br /&gt;
|[[Thermonuclear bomb]], large med-pack (x4), blue armor (equipped)&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Humanity''' (AoHu)&lt;br /&gt;
|Blade&lt;br /&gt;
|Warrant Officer&lt;br /&gt;
|Your max HP starts at 10. [[Traits#Ironman|Ironman]] increases your max HP by two per rank.&lt;br /&gt;
|Standard + large med-pack (x2), [[red armor]] (equipped), one of each standard mod&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Angel of Overconfidence''' (AoOC)&lt;br /&gt;
|Hard&lt;br /&gt;
|Sergeant&lt;br /&gt;
|You start on Hell floor 1 instead of Phobos floor 1 (thus skipping the first 16 levels)&lt;br /&gt;
|[[Combat pistol]] (equipped), [[assault shotgun]], [[minigun]], combat knife, large med-pack (x2), 10mm ammo chain, shell box&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dual-Angel Game Challenges===&lt;br /&gt;
&lt;br /&gt;
Lets you select a pair of challenges to run simultaneously.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot; | Primary Challenge&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot; | Eligible Secondary Challenges&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Berserk'''&lt;br /&gt;
|AoCn, AoOC, A100, AoLT, AoI, AoP, AoRA, AoD, AoMs&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|'''Angel of Marksmanship'''&lt;br /&gt;
|AoCn, AoOC, A100, AoLT, AoI, AoP, AoRA, AoD, AoMs&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Shotgunnery'''&lt;br /&gt;
|AoCn, AoOC, A100, AoLT, AoI, AoP, AoRA, AoD, AoMs&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|'''Angel of Impatience'''&lt;br /&gt;
|AoCn, AoOC, A100, AoLT, AoRA, AoD&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Purity'''&lt;br /&gt;
|AoCn, AoOC, A100, AoLT, AoRA, AoD&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|'''Angel of Darkness'''&lt;br /&gt;
|AoCn, AoOC, A100, AoLT, AoI, AoP, AoRA, AoMs&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Max Carnage'''&lt;br /&gt;
|AoCn, AoOC, A100, AoLT, AoI, AoP, AoRA, AoD, AoMs&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|'''Angel of Pacifism'''&lt;br /&gt;
|AoCn, AoOC, A100, AoI, AoP, AoD, AoMs&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Humanity'''&lt;br /&gt;
|AoCn, AoOC, A100, AoI, AoP, AoRA, AoD, AoMs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Archangel Game Challenges===&lt;br /&gt;
&lt;br /&gt;
Extremely difficult challenges, each one is a harder version of an Angel Game Challenge.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;150&amp;quot; align=&amp;quot;left&amp;quot;       | Challenge&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Difficulty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Unlocked at&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Description&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Starting Items&lt;br /&gt;
|-&lt;br /&gt;
|'''Archangel of Travel'''&lt;br /&gt;
|Blade&lt;br /&gt;
|Sergeant&lt;br /&gt;
|Your inventory is limited to 2 items (excluding equipment slots); player speed is increased by 30%.&lt;br /&gt;
|[[Pistol]] (equipped) + [[10mm ammo chain]]&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Archangel of Red Alert'''&lt;br /&gt;
|Blade&lt;br /&gt;
|Sergeant&lt;br /&gt;
|A two-and-a-half-minute [[thermonuclear bomb|nuke]] is armed at the start of every level, whether random or special.&lt;br /&gt;
|Standard&lt;br /&gt;
|-&lt;br /&gt;
|'''Archangel of Masochism'''&lt;br /&gt;
|Blade&lt;br /&gt;
|Sergeant Major&lt;br /&gt;
|All healing effects (including [[tactics]] restoration) are disabled, save [[Traits#Vampyre|Vampyre]].&lt;br /&gt;
|Standard, no medpacks, 100 ammo instead of 40.&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Archangel of 666'''&lt;br /&gt;
|Blade&lt;br /&gt;
|Sergeant Major&lt;br /&gt;
|All special levels are removed: the player must instead descend 666 floors to win.&lt;br /&gt;
|Standard&lt;br /&gt;
|-&lt;br /&gt;
|'''Archangel of Pacifism'''&lt;br /&gt;
|Blade&lt;br /&gt;
|Sergeant Major&lt;br /&gt;
|All weapon attacks are disabled. [[Phobos Base Entry]] is removed (for balance purposes).&lt;br /&gt;
|[[Thermonuclear bomb]], large med-pack (x4), blue armor (equipped)&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Archangel of Humanity'''&lt;br /&gt;
|TwoDev&lt;br /&gt;
|Warrant Officer&lt;br /&gt;
|Your maximum HP starts at 10. [[Traits#Ironman|Ironman]] increases your max HP by two per rank. You don't get any benefit from leveling up.&lt;br /&gt;
|Standard + large med-pack (x2), [[red armor]] (equipped), one of each standard mod&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	<entry>
		<id>https://drl.chaosforge.org/wiki/Game_Settings</id>
		<title>Game Settings</title>
		<link rel="alternate" type="text/html" href="https://drl.chaosforge.org/wiki/Game_Settings"/>
				<updated>2013-03-25T15:08:00Z</updated>
		
		<summary type="html">&lt;p&gt;Shark20061: Added Dual-Angel Combinations&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infostrat switch}}&lt;br /&gt;
==Difficulty==&lt;br /&gt;
Game difficulty roughly emulates that of the original game. There are five to select from:&lt;br /&gt;
* '''I'm Too Young to Die (ITYTD)''': The easiest difficulty, in many ways. Ammo is doubled, enemy spawns are at their lowest, healing and powerup durations are doubled. A good way to start playing the game, although you won't have access to every [[Levels#Special levels|special level]] available nor play any challenges.&lt;br /&gt;
* '''Hey, Not Too Rough (HNTR)''': The &amp;quot;standard&amp;quot; difficulty for many players. Given that all multipliers are set to one, challenges are allowed, and all special levels are now available, this is an appropriate moniker.&lt;br /&gt;
* '''Hurt Me Plenty (HMP)''': The first &amp;quot;difficult&amp;quot; difficulty. More numerous and accurate enemies appear at earlier floors, giving you less time to prepare for the late stages of the game.&lt;br /&gt;
* '''Ultra-violence (UV)''': The difficulty of DoomRL veterans. This is the point where even the first few floors of the game can kill you reliably if you don't know the inns and outs of the game. It is unlocked at the Lance Corporal [[Ranks#Skill Ranks|skill rank]].&lt;br /&gt;
* '''Nightmare! (N!)''': The exclamation point does not lie, this difficulty is for hardcore players only. In addition to Ultra-violence changes, enemies can respawn at any time, are faster (relative to you), and attack more often. You can't save, either! At least several of the ITYTD benefits are back to help. It is unlocked at the Sergeant skill rank.&lt;br /&gt;
&lt;br /&gt;
The differences in game difficulty may seem subtle, but switching to a harder difficulty is easily the most frustrating part of playing DoomRL, [[Badges#Diamond badges|diamond badges]] aside. Difficulty information has been tabulated: the columns are identified as follows:&lt;br /&gt;
&lt;br /&gt;
* '''Shorthand''': How the difficulty is expressed on the score page (and in mortem tags on the forums)&lt;br /&gt;
* '''Score Multiplier''': How much your score is increased by, just by playing on that difficulty level&lt;br /&gt;
* '''Ammo Multiplier''': For randomly generated ammo, how much extra is added to each stack&lt;br /&gt;
* '''Enemy Accuracy''': How much the enemies' accuracy is changed on this difficulty&lt;br /&gt;
* '''Enemy Spawns''': How many enemies spawn on randomly generated levels, and how much their depth level is modified&lt;br /&gt;
* '''Healing/Powerups''': The duration/strength of powerups, and the health gain of small healing items&lt;br /&gt;
* '''XP Multipler''': How much increased experience is gained for killing enemies&lt;br /&gt;
* '''Special''': Any extra features regarding the difficulty level&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;rules: cols; border: 2px solid darkred; border-spacing: 0; font-size: 90%; margin: 0.25em 0.5em;&amp;quot;&lt;br /&gt;
|colspan=11 style=&amp;quot;background: darkred; color: yellow; font-size: 120%; text-align: center&amp;quot;|'''Difficulty Levels'''&lt;br /&gt;
|- &lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 1px 1px 0&amp;quot; width=100|'''Difficulty'''&lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 1px 1px 1px&amp;quot; width=50|'''Shorthand'''&lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 1px 1px 1px&amp;quot; width=50|'''Score Multiplier'''&lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 1px 1px 1px&amp;quot; width=50|'''Ammo Multiplier'''&lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 1px 1px 1px&amp;quot; width=50|'''Enemy Accuracy'''&lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 1px 1px 1px&amp;quot; width=50|'''Enemy Spawns'''&lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 1px 1px 1px&amp;quot; width=50|'''Healing/ Powerups'''&lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 1px 1px 1px&amp;quot; width=50|'''XP Multiplier'''&lt;br /&gt;
|style=&amp;quot;text-align: center; padding: 1ex; border: solid darkred; border-width: 0 0 1px 1px&amp;quot;|'''Special'''&lt;br /&gt;
|- style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|style=&amp;quot;text-align: left; padding-right: 1ex; border: solid darkred; border-width: 1px 1px 0 0&amp;quot;|I'm Too Young To Die&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 1px 1px 0 1px&amp;quot;|E&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 1px 1px 0 1px&amp;quot;|0.5&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 1px 1px 0 1px&amp;quot;|2&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 1px 1px 0 1px&amp;quot;|-1&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 1px 1px 0 1px&amp;quot;|Low/+0&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 1px 1px 0 1px&amp;quot;|Doubled&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 1px 1px 0 1px&amp;quot;|1.4&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 1px 0px 0 1px&amp;quot;|Acid/lava deals half damage, some special levels barred, no challenges&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align: left; padding-right: 1ex; border: solid darkred; border-width: 0 1px 0 0&amp;quot;|Hey, Not Too Rough&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|M&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|+0&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|Normal/+0&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|Normal&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1.2&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 0px 0 1px&amp;quot;|N/A&lt;br /&gt;
|- style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|style=&amp;quot;text-align: left; padding-right: 1ex; border: solid darkred; border-width: 0 1px 0 0&amp;quot;|Hurt Me Plenty&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|H&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1.5&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1.25&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|+1&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|High/-3&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|Normal&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 0px 0 1px&amp;quot;|N/A&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align: left; padding-right: 1ex; border: solid darkred; border-width: 0 1px 0 0&amp;quot;|Ultra-violence&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|U&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|2&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1.5&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|+2&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|Very High/-6&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|Normal&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 0px 0 1px&amp;quot;|N/A&lt;br /&gt;
|- style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|style=&amp;quot;text-align: left; padding-right: 1ex; border: solid darkred; border-width: 0 1px 0 0&amp;quot;|Nightmare!&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|N!&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|4&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|2&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|+2&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|WTF/-6&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|Doubled&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 1px 0 1px&amp;quot;|1.2&lt;br /&gt;
|style=&amp;quot;text-align: center; border: solid darkred; border-width: 0 0px 0 1px&amp;quot;|Respawning, player speed decreased by 10%, +50% enemy attack chance, no saving&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Challenges==&lt;br /&gt;
This section lists the different challenges and how they affect gameplay.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The standard items (that is, what you get in a standard game) is as follows: [[pistol]] (equipped), [[10mm ammo]] (x24), [[small med-pack]] (x2).&lt;br /&gt;
&lt;br /&gt;
===Angel Game Challenges===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;150&amp;quot; align=&amp;quot;left&amp;quot;       | Challenge&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Difficulty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Unlocked at&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Description&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Starting Items&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Angel of Berserk'''&lt;br /&gt;
|Very Hard&lt;br /&gt;
|Private FC&lt;br /&gt;
|Only melee weapons can be used to attack. Large Healing Globes additionally grant 20 turns of [[effects#berserk|berserk]].&lt;br /&gt;
|[[Large med-pack]] (x2), [[blue armor]]&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Marksmanship'''&lt;br /&gt;
|Easy&lt;br /&gt;
|Private FC&lt;br /&gt;
|Only [[pistol|pistols]] and [[fists]] can be used to attack.&lt;br /&gt;
|Standard + 1 [[Items#Modification Packs (Mods)|random standard mod]] (except power mod) + 1 technical mod&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Angel of Shotgunnery'''&lt;br /&gt;
|Medium&lt;br /&gt;
|Lance Corporal&lt;br /&gt;
|Only shotguns (weapons with a spread projectile) and fists can be used to attack.&lt;br /&gt;
|[[Shotgun]], [[shotgun shell]] (x50)&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Light Travel'''&lt;br /&gt;
|Easy&lt;br /&gt;
|Lance Corporal&lt;br /&gt;
|Your inventory is limited to 5 items (excluding equipment slots); player speed is increased by 20%.&lt;br /&gt;
|Standard + [[10mm ammo chain]] + [[shell box]]&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Angel of Impatience'''&lt;br /&gt;
|Hard&lt;br /&gt;
|Corporal&lt;br /&gt;
|All [[Items#Consumables|consumable]] items are immediately used upon pickup.&lt;br /&gt;
|Standard - [[small med-pack]] (x2)&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Confidence'''&lt;br /&gt;
|Hard&lt;br /&gt;
|Sergeant&lt;br /&gt;
|You start on Deimos floor 1 instead of Phobos floor 1 (thus skipping the first 8 levels)&lt;br /&gt;
|Pistol (equipped), shotgun, [[chaingun]], [[combat knife]], 10mm ammo (x100), shotgun shell (x50), large med-pack (x2)&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Angel of Purity'''&lt;br /&gt;
|Hard&lt;br /&gt;
|Sergeant&lt;br /&gt;
|All [[Items#Powerups|powerup]] effects are disabled.&lt;br /&gt;
|Standard&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Red Alert'''&lt;br /&gt;
|Hard&lt;br /&gt;
|Sergeant&lt;br /&gt;
|A five-minute [[thermonuclear bomb|nuke]] is armed at the start of every level, whether random or special.&lt;br /&gt;
|Standard&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Angel of Darkness'''&lt;br /&gt;
|Hard&lt;br /&gt;
|Sergeant&lt;br /&gt;
|Your vision radius is only 6 and anything outside of this radius is black, except for what maps reveal as well as [[Intuition]].  Scouts and maps do not know the location of stairs.  Experience gain is doubled.&lt;br /&gt;
|Standard&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Max Carnage'''&lt;br /&gt;
|Medium&lt;br /&gt;
|Sergeant Major&lt;br /&gt;
|All attacks from all source deal maximum damage, and accuracy of yourself and all enemies is increased by 12.&lt;br /&gt;
|Standard&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Angel of Masochism'''&lt;br /&gt;
|Very Hard&lt;br /&gt;
|Sergeant Major&lt;br /&gt;
|All healing effects (including [[tactics]] restoration) are disabled, save [[Traits#Vampyre|Vampyre]] You are [[Supercharge Globe|supercharged]] at every level-up.&lt;br /&gt;
|Standard, no medpacks, 100 ammo instead of 40.&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of 100'''&lt;br /&gt;
|Blade&lt;br /&gt;
|Sergeant Major&lt;br /&gt;
|All special levels are removed: the player must instead descend 100 floors to win.&lt;br /&gt;
|Standard&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Angel of Pacifism'''&lt;br /&gt;
|Blade&lt;br /&gt;
|Sergeant Major&lt;br /&gt;
|All weapon attacks are disabled. [[Phobos Base Entry]] is removed (for balance purposes). Every third staircase you descend makes you level-up.&lt;br /&gt;
|[[Thermonuclear bomb]], large med-pack (x4), blue armor (equipped)&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Humanity'''&lt;br /&gt;
|Blade&lt;br /&gt;
|Warrant Officer&lt;br /&gt;
|Your max HP starts at 10. [[Traits#Ironman|Ironman]] increases your max HP by two per rank.&lt;br /&gt;
|Standard + large med-pack (x2), [[red armor]] (equipped), one of each standard mod&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Angel of Overconfidence'''&lt;br /&gt;
|Hard&lt;br /&gt;
|Sergeant&lt;br /&gt;
|You start on Hell floor 1 instead of Phobos floor 1 (thus skipping the first 16 levels)&lt;br /&gt;
|[[Combat pistol]] (equipped), [[assault shotgun]], [[minigun]], combat knife, large med-pack (x2), 10mm ammo chain, shell box&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dual-Angel Game Challenges===&lt;br /&gt;
&lt;br /&gt;
Lets you select a pair of challenges to run simultaneously.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot; | Primary Challenge&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot; | Eligible Secondary Challenges&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Berserk'''&lt;br /&gt;
|AoCn, AoOC, A100, AoLT, AoI, AoP, AoRA, AoD, AoMs&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|'''Angel of Marksmanship'''&lt;br /&gt;
|AoCn, AoOC, A100, AoLT, AoI, AoP, AoRA, AoD, AoMs&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Shotgunnery'''&lt;br /&gt;
|AoCn, AoOC, A100, AoLT, AoI, AoP, AoRA, AoD, AoMs&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|'''Angel of Impatience'''&lt;br /&gt;
|AoCn, AoOC, A100, AoLT, AoRA, AoD&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Purity'''&lt;br /&gt;
|AoCn, AoOC, A100, AoLT, AoRA, AoD&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|'''Angel of Darkness'''&lt;br /&gt;
|AoCn, AoOC, A100, AoLT, AoI, AoP, AoRA, AoMs&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Max Carnage'''&lt;br /&gt;
|AoCn, AoOC, A100, AoLT, AoI, AoP, AoRA, AoD, AoMs&lt;br /&gt;
|-style=&amp;quot;background:#333&amp;quot;&lt;br /&gt;
|'''Angel of Pacifism'''&lt;br /&gt;
|AoCn, AoOC, A100, AoI, AoP, AoD, AoMs&lt;br /&gt;
|-&lt;br /&gt;
|'''Angel of Humanity'''&lt;br /&gt;
|AoCn, AoOC, A100, AoI, AoP, AoRA, AoD, AoMs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Archangel Game Challenges===&lt;br /&gt;
&lt;br /&gt;
Extremely difficult challenges, each one is a harder version of an Angel Game Challenge.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;150&amp;quot; align=&amp;quot;left&amp;quot;       | Challenge&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Difficulty&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Unlocked at&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Description&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; align=&amp;quot;left&amp;quot; cell-padding=&amp;quot;2ex&amp;quot;| Starting Items&lt;br /&gt;
|-&lt;br /&gt;
|'''Archangel of Travel'''&lt;br /&gt;
|Blade&lt;br /&gt;
|Sergeant&lt;br /&gt;
|Your inventory is limited to 2 items (excluding equipment slots); player speed is increased by 30%.&lt;br /&gt;
|[[Pistol]] (equipped) + [[10mm ammo chain]]&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Archangel of Red Alert'''&lt;br /&gt;
|Blade&lt;br /&gt;
|Sergeant&lt;br /&gt;
|A two-and-a-half-minute [[thermonuclear bomb|nuke]] is armed at the start of every level, whether random or special.&lt;br /&gt;
|Standard&lt;br /&gt;
|-&lt;br /&gt;
|'''Archangel of Masochism'''&lt;br /&gt;
|Blade&lt;br /&gt;
|Sergeant Major&lt;br /&gt;
|All healing effects (including [[tactics]] restoration) are disabled, save [[Traits#Vampyre|Vampyre]].&lt;br /&gt;
|Standard, no medpacks, 100 ammo instead of 40.&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Archangel of 666'''&lt;br /&gt;
|Blade&lt;br /&gt;
|Sergeant Major&lt;br /&gt;
|All special levels are removed: the player must instead descend 666 floors to win.&lt;br /&gt;
|Standard&lt;br /&gt;
|-&lt;br /&gt;
|'''Archangel of Pacifism'''&lt;br /&gt;
|Blade&lt;br /&gt;
|Sergeant Major&lt;br /&gt;
|All weapon attacks are disabled. [[Phobos Base Entry]] is removed (for balance purposes).&lt;br /&gt;
|[[Thermonuclear bomb]], large med-pack (x4), blue armor (equipped)&lt;br /&gt;
|-style=&amp;quot;background: #333;&amp;quot;&lt;br /&gt;
|'''Archangel of Humanity'''&lt;br /&gt;
|TwoDev&lt;br /&gt;
|Warrant Officer&lt;br /&gt;
|Your maximum HP starts at 10. [[Traits#Ironman|Ironman]] increases your max HP by two per rank. You don't get any benefit from leveling up.&lt;br /&gt;
|Standard + large med-pack (x2), [[red armor]] (equipped), one of each standard mod&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Shark20061</name></author>	</entry>

	</feed>