<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.dikumud.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aja</id>
	<title>DikuMUD Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dikumud.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aja"/>
	<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/wiki/Special:Contributions/Aja"/>
	<updated>2026-07-27T16:40:17Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Combat&amp;diff=652</id>
		<title>Manual:Game Mechanics/Combat</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Combat&amp;diff=652"/>
		<updated>2020-07-25T20:02:23Z</updated>

		<summary type="html">&lt;p&gt;Aja: Created page with &amp;quot;Combat Melee &amp;amp; Spells  The dynamics have changed since DIKU II for the purposes of being more responsive to your actual level/skill/abilities. The effect is that mobs will bec...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Combat Melee &amp;amp; Spells&lt;br /&gt;
&lt;br /&gt;
The dynamics have changed since DIKU II for the purposes of being more responsive to your actual level/skill/abilities. The effect is that mobs will become harder to kill until calibrated.&lt;br /&gt;
&lt;br /&gt;
Melee&lt;br /&gt;
&lt;br /&gt;
Your dexterity defense is lowered by the armor you're wearing and will show in the status command.&lt;br /&gt;
Skills have been added to the game in order to train in equipment types: soft leather, hard leather, chain, and plate.&lt;br /&gt;
The effect is that combined with your strength - your effective dexterity is lowered.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Levels&amp;diff=651</id>
		<title>Manual:Game Mechanics/Levels</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Levels&amp;diff=651"/>
		<updated>2020-07-25T19:58:01Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Practice Points */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Leveling System ==&lt;br /&gt;
This brief document describes the level system.&lt;br /&gt;
In general, 16,650 xp points = 1 level ( a little less until virtual level 50). &lt;br /&gt;
&lt;br /&gt;
=== Players (PCs) ===&lt;br /&gt;
&lt;br /&gt;
Players can be a level 0-255. For most practical purposes the delineation is usually between levels 0-49 and 50+.&lt;br /&gt;
Levels 200 to 255 are reserved for administrators (gods).&lt;br /&gt;
Thus, the gaming system allows players from level 0-199.&lt;br /&gt;
Players also have a virtual level (VLEVEL) which is essentially the amount of XP they've earned over the course of time or times they've typed : level now.&lt;br /&gt;
Current known limitation: at level 65,535, a player's experience counter rolls back over to 0 as does their level. &lt;br /&gt;
The other level available is a guild level - that is the number of levels a character has done in a certain guild and does not reset when a player leaves the guild and rejoins.&lt;br /&gt;
&lt;br /&gt;
=== Non Player Characters (NPCs) ===&lt;br /&gt;
NPCs can be level 0-199. &lt;br /&gt;
Odin the All Father of the Aesir is level 199.&lt;br /&gt;
Winky is level 33. &lt;br /&gt;
Mary, the lumberjack's wife is level 16. &lt;br /&gt;
Satan is level 199. &lt;br /&gt;
Tiamat is level 195. &lt;br /&gt;
An Udgaardian City Guard is level 62. &lt;br /&gt;
&lt;br /&gt;
== Abilities ==&lt;br /&gt;
Both PCs and NPCs have eight abilities STR (strength),DEX (dexterity) ,CHA (charisma) ,BRA (brain) ,MAG (magic) ,DIV (divinity), HPP (hitpoints), CON (constitution).&lt;br /&gt;
Abilities range from 0 - 250.  [Link to or pull in ability section]&lt;br /&gt;
For players the normal max for training abilities is [0..100] but no reason why you couldn't set it higher.&lt;br /&gt;
&lt;br /&gt;
== Practice Points ==&lt;br /&gt;
&lt;br /&gt;
When you gain a new level you'll be awarded points to practice abilities, skills, and spells.&lt;br /&gt;
&lt;br /&gt;
For each level you'll be awarded:&lt;br /&gt;
&lt;br /&gt;
  Abilities = 10 * 4 through level 50 ? (2000 ability practice points in total per character lifetime)&lt;br /&gt;
  Skills &amp;amp; Spells = 10 * 8 through unlimited levels. &lt;br /&gt;
When your virtual level reaches 100, the cost of training slowly increases and maxes out at 200.&lt;br /&gt;
&lt;br /&gt;
The 10 is picked as the average cost of an ability or a skill (so it's important that's about the average cost in how the guilds are defined). The 4 is chosen because you have 8 abilities and you should be able to master at least half of your abilities.&lt;br /&gt;
&lt;br /&gt;
Each time you practice a skill, the skill increases in increments of 2. &lt;br /&gt;
Each time you practice an ability the ability increases in increments of 1.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Number of Times Trained Factor !! 1.5 &lt;br /&gt;
| Average Cost|| 10&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty Factor|| 3&lt;br /&gt;
|-&lt;br /&gt;
| Ability Points/level||40&lt;br /&gt;
|-&lt;br /&gt;
| Skill Points/Level||80 &lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;small&amp;gt;Number of Times Practiced Per Level&amp;lt;/small&amp;gt;|| &amp;lt;strong&amp;gt;1&amp;lt;/strong&amp;gt;||  &amp;lt;strong&amp;gt;2&amp;lt;/strong&amp;gt;||  &amp;lt;strong&amp;gt;3&amp;lt;/strong&amp;gt;||  &amp;lt;strong&amp;gt;4&amp;lt;/strong&amp;gt;|| &amp;lt;strong&amp;gt;5&amp;lt;/strong&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;6&amp;lt;/strong&amp;gt;|| 4|| 6|| 9|| 14|| 21&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;5&amp;lt;/strong&amp;gt;|| 5|| 8|| 12|| 17|| 26&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;4&amp;lt;/strong&amp;gt;|| 6|| 9|| 14|| 21|| 31&lt;br /&gt;
|-&lt;br /&gt;
| || || ||&amp;lt;strong&amp;gt;3&amp;lt;/strong&amp;gt;|| 7|| 11|| 16|| 24|| 36&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;2&amp;lt;/strong&amp;gt;|| 8|| 12|| 18|| 27|| 41&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;1&amp;lt;/strong&amp;gt;|| 9|| 14|| 21|| 31|| 46&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;0&amp;lt;/strong&amp;gt;|| 10|| 15|| 23|| 34|| 51&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-1&amp;lt;/strong&amp;gt;|| 13|| 20|| 30|| 44|| 66&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-2&amp;lt;/strong&amp;gt;|| 16|| 24|| 36|| 54|| 81&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-3&amp;lt;/strong&amp;gt;|| 19|| 29|| 43|| 65|| 97&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-4&amp;lt;/strong&amp;gt;|| 22|| 33|| 50|| 75|| 112&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-5&amp;lt;/strong&amp;gt;|| 25|| 38|| 57|| 85|| 127&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-6&amp;lt;/strong&amp;gt;|| 28|| 42|| 63|| 95|| 142&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-7&amp;lt;/strong&amp;gt;|| 31|| 47 || 70|| 105|| 157&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Hit-points &amp;amp; Regain ===&lt;br /&gt;
&lt;br /&gt;
A PCs hit-points max is (3 * HPP + 20)&lt;br /&gt;
A NPCs hit-points max is (3 * HPP + 10)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
A character regains hitpoints based on CON: (1 + hit max(CON) / 10)&lt;br /&gt;
If a character is fighting there is no hitpoint regain. Resting provides an 50% additional regain, while sitting is a 25% additional regain.&lt;br /&gt;
If a character is in a unit that has the UNIT_FL_SACRED set, the regain is furthermore doubled. &lt;br /&gt;
If a player is thirsty or hungry the regain is reduced.&lt;br /&gt;
When a mortal character dies, their hitpoints are set to -1. &lt;br /&gt;
&lt;br /&gt;
=== Mana ===&lt;br /&gt;
The equation for max mana is: 100 + (BRA + CHA)/2 but never less than 200.&lt;br /&gt;
For a player, the max is further modified by the player's age compared to lifespan.&lt;br /&gt;
&lt;br /&gt;
The gain is 1 + MAX/10&lt;br /&gt;
Plus (CHA - the larger of(MAG, DIV) / 3)  [This is strange and should be reviewed]&lt;br /&gt;
&lt;br /&gt;
If a character is fighting there is no mana regain. Resting 50% additional regain, sitting 25% additional regain.&lt;br /&gt;
If a character is in a unit that has the UNIT_FL_SACRED set, the regain is furthermore doubled. &lt;br /&gt;
If a player is thirsty or hungry the regain is reduced.&lt;br /&gt;
&lt;br /&gt;
=== Endurance ===&lt;br /&gt;
Max endurance is a char's CON * 2 + 150.&lt;br /&gt;
For a player, the endurance is further modified by the player's age compared to lifespan.&lt;br /&gt;
The endurance regain equation is : 1 + endurance-max/10.&lt;br /&gt;
Regain is zero when fighting, an additional 50% if resting or sleeping, an additional 25% if sitting.&lt;br /&gt;
Furthermore doubled if in a unit with UNIT_FL_SACRED.&lt;br /&gt;
If a player is thirsty or hungry the regain is reduced.&lt;br /&gt;
&lt;br /&gt;
== Skills ==&lt;br /&gt;
PCs have a full skill tree&lt;br /&gt;
NPCs don't have skills.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=626</id>
		<title>Manual:DIL Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=626"/>
		<updated>2020-07-03T13:31:42Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Triggers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===== ''Temp list of changes. Will reorganize once I see what all we have.&lt;br /&gt;
'' =====&lt;br /&gt;
&lt;br /&gt;
== Priority ==&lt;br /&gt;
How does a program determine it should run and pause others? &lt;br /&gt;
When performing a wstat &amp;lt;unit&amp;gt; func command on an object, the dil functions will display in order of priority; top to bottom with most important dils at the top. If a dil program is executing the priority command, it will block all programs below it. Many of the stock game functions call on the priority or FN_PRI to function properly.   &lt;br /&gt;
A few examples of dils that should/do take priority:   &lt;br /&gt;
*Death ~ dilbegin recall fnpri(FN_PRI_DEATH) death_seq();   &lt;br /&gt;
*Rescue   &lt;br /&gt;
*Under Arrest ~ (dilbegin fnpri(FN_PRI_RESCUE-1)arrest_check(office:string);   &lt;br /&gt;
&lt;br /&gt;
We'll refer to this concept as 'fnpri'.   &lt;br /&gt;
 &lt;br /&gt;
Let's look at a Midgaard town guard, a quick wstat guard func shows:    &lt;br /&gt;
&lt;br /&gt;
#dilcopy rescue@function(&amp;quot;guard/captain/mayor&amp;quot;);&lt;br /&gt;
#dilcopy arrest_check@midgaard(&amp;quot;accus_room@midgaard&amp;quot;);       &lt;br /&gt;
#dilbegin SFUN_PROTECT_LAWFUL time PULSE_SEC*60 bits SFB_RANTIME        &lt;br /&gt;
#dilbegin guard2();       &lt;br /&gt;
&lt;br /&gt;
In this example, the priority belongs to rescue. Therefore the expected behavior is that this guard will prioritize rescuing someone they see being attacked before rushing off to enforce peace or arrest someone. Secondarily, if rescuing is not an active option, the guard will arrest someone before trying to keep the peace. &lt;br /&gt;
If the guard is interrupted in the middle of the execution of guard2(); above, the guard2(); program will simply pause until the higher priority dils are completed.&lt;br /&gt;
In prior DIKU versions, there was no way to determine the dil insertion point on an object and therefore no way to predictably control execution order. So we introduce the following: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! vme.h#define !! Integer !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RES || 0 || Don't use&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_SYS || 1 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_DEATH || 2 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BODY || 5 || gaining hits, etc&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_COMBAT || 10 || in-combat moves&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RESCUE || 20 || Rescue someone rather than passing by&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BLOCK || 25 || Blocking things like commands&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_MISSION || 30 || Sent on an important mission&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_CHORES || 40 || Picking up garbage or eating rabbits. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== The 'Unique' DIL Flag ==&lt;br /&gt;
In DIKU III, we introduce the unique flag in a dil program.   &lt;br /&gt;
dilbegin unique programName();&lt;br /&gt;
&lt;br /&gt;
This unique flag or keyword works to ensure that a unit will never have more than one of that function available on the object at any given time. This is a great way to cut down on the length of new dils because instead of having to do an if(dilfind) every time, you can simply use the unique flag. For example, if you create an entangle spell, and want to have a DIL that can be copied onto char's affected by entanglement, then the unique flag makes sure that even if the spell was cast twice on the same char, there would be only one instance of the entangle DIL running on that char.   &lt;br /&gt;
&lt;br /&gt;
== Built-in Player DIL Commands ==&lt;br /&gt;
Three are three new commands implemented for players (in DIL).    &lt;br /&gt;
* alias&lt;br /&gt;
* trigger&lt;br /&gt;
* variable   &lt;br /&gt;
&lt;br /&gt;
Many of you will recognize these as components of mud clients like zmud/cmud/mudlet etc.   &lt;br /&gt;
This change makes muds a little more accessible by presenting the mud in a web form while still allowing for some of the basic automations found in clients.&lt;br /&gt;
&lt;br /&gt;
=== Alias ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! alias !! arbitrary name !! commands !! result&lt;br /&gt;
|-&lt;br /&gt;
| alias || fido || goto fido;tell fido hello;pet fido || travel to fido. You tell Fido Hello. You pet Fido&lt;br /&gt;
|-&lt;br /&gt;
| alias || tf || tell fido $1 || You tell Fido Hi&lt;br /&gt;
|-&lt;br /&gt;
| alias || tf || tell fido $0 || You tell Fido a whole string of stuff.&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! pointer !! use&lt;br /&gt;
|-&lt;br /&gt;
| $0 || Entire string&lt;br /&gt;
|-&lt;br /&gt;
| $1 || 1st Word&lt;br /&gt;
|-&lt;br /&gt;
| $2 || 2nd Word&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Variable ===&lt;br /&gt;
&lt;br /&gt;
Variables are basically stringlists and can be defined as such:&lt;br /&gt;
variable friends papi|john|aja|bruce|cityguard|the janitor&lt;br /&gt;
To recall a variable for use in a trigger, you will notate it as (@variablename) or in this example (@friends). This is recalled in the example below. &lt;br /&gt;
&lt;br /&gt;
=== Trigger ===&lt;br /&gt;
If you want to do whatever the beastly Fido tells you to do:  &lt;br /&gt;
&lt;br /&gt;
$trigger obey /^the Beastly Fido tells you '(.+?)'/ $1   &lt;br /&gt;
&lt;br /&gt;
Or maybe you'd like to    &lt;br /&gt;
&lt;br /&gt;
$trigger smarmy /^(@friends)\sleaves (.+?)\.$/ say I love $1. Especially when $1 leaves $2. &lt;br /&gt;
&lt;br /&gt;
You may notice this is written with Regular Expressions. If you're not familiar or want to learn more: [https://regexr.com/ RegEx Reference]&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=625</id>
		<title>Manual:DIL Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=625"/>
		<updated>2020-07-03T13:19:45Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Alias */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===== ''Temp list of changes. Will reorganize once I see what all we have.&lt;br /&gt;
'' =====&lt;br /&gt;
&lt;br /&gt;
== Priority ==&lt;br /&gt;
How does a program determine it should run and pause others? &lt;br /&gt;
When performing a wstat &amp;lt;unit&amp;gt; func command on an object, the dil functions will display in order of priority; top to bottom with most important dils at the top. If a dil program is executing the priority command, it will block all programs below it. Many of the stock game functions call on the priority or FN_PRI to function properly.   &lt;br /&gt;
A few examples of dils that should/do take priority:   &lt;br /&gt;
*Death ~ dilbegin recall fnpri(FN_PRI_DEATH) death_seq();   &lt;br /&gt;
*Rescue   &lt;br /&gt;
*Under Arrest ~ (dilbegin fnpri(FN_PRI_RESCUE-1)arrest_check(office:string);   &lt;br /&gt;
&lt;br /&gt;
We'll refer to this concept as 'fnpri'.   &lt;br /&gt;
 &lt;br /&gt;
Let's look at a Midgaard town guard, a quick wstat guard func shows:    &lt;br /&gt;
&lt;br /&gt;
#dilcopy rescue@function(&amp;quot;guard/captain/mayor&amp;quot;);&lt;br /&gt;
#dilcopy arrest_check@midgaard(&amp;quot;accus_room@midgaard&amp;quot;);       &lt;br /&gt;
#dilbegin SFUN_PROTECT_LAWFUL time PULSE_SEC*60 bits SFB_RANTIME        &lt;br /&gt;
#dilbegin guard2();       &lt;br /&gt;
&lt;br /&gt;
In this example, the priority belongs to rescue. Therefore the expected behavior is that this guard will prioritize rescuing someone they see being attacked before rushing off to enforce peace or arrest someone. Secondarily, if rescuing is not an active option, the guard will arrest someone before trying to keep the peace. &lt;br /&gt;
If the guard is interrupted in the middle of the execution of guard2(); above, the guard2(); program will simply pause until the higher priority dils are completed.&lt;br /&gt;
In prior DIKU versions, there was no way to determine the dil insertion point on an object and therefore no way to predictably control execution order. So we introduce the following: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! vme.h#define !! Integer !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RES || 0 || Don't use&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_SYS || 1 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_DEATH || 2 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BODY || 5 || gaining hits, etc&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_COMBAT || 10 || in-combat moves&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RESCUE || 20 || Rescue someone rather than passing by&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BLOCK || 25 || Blocking things like commands&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_MISSION || 30 || Sent on an important mission&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_CHORES || 40 || Picking up garbage or eating rabbits. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== The 'Unique' DIL Flag ==&lt;br /&gt;
In DIKU III, we introduce the unique flag in a dil program.   &lt;br /&gt;
dilbegin unique programName();&lt;br /&gt;
&lt;br /&gt;
This unique flag or keyword works to ensure that a unit will never have more than one of that function available on the object at any given time. This is a great way to cut down on the length of new dils because instead of having to do an if(dilfind) every time, you can simply use the unique flag. For example, if you create an entangle spell, and want to have a DIL that can be copied onto char's affected by entanglement, then the unique flag makes sure that even if the spell was cast twice on the same char, there would be only one instance of the entangle DIL running on that char.   &lt;br /&gt;
&lt;br /&gt;
== Built-in Player DIL Commands ==&lt;br /&gt;
Three are three new commands implemented for players (in DIL).    &lt;br /&gt;
* alias&lt;br /&gt;
* trigger&lt;br /&gt;
* variable   &lt;br /&gt;
&lt;br /&gt;
Many of you will recognize these as components of mud clients like zmud/cmud/mudlet etc.   &lt;br /&gt;
This change makes muds a little more accessible by presenting the mud in a web form while still allowing for some of the basic automations found in clients.&lt;br /&gt;
&lt;br /&gt;
=== Alias ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! alias !! arbitrary name !! commands !! result&lt;br /&gt;
|-&lt;br /&gt;
| alias || fido || goto fido;tell fido hello;pet fido || travel to fido. You tell Fido Hello. You pet Fido&lt;br /&gt;
|-&lt;br /&gt;
| alias || tf || tell fido $1 || You tell Fido Hi&lt;br /&gt;
|-&lt;br /&gt;
| alias || tf || tell fido $0 || You tell Fido a whole string of stuff.&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! pointer !! use&lt;br /&gt;
|-&lt;br /&gt;
| $0 || Entire string&lt;br /&gt;
|-&lt;br /&gt;
| $1 || 1st Word&lt;br /&gt;
|-&lt;br /&gt;
| $2 || 2nd Word&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Variable ===&lt;br /&gt;
&lt;br /&gt;
Variables are basically stringlists and can be defined as such:&lt;br /&gt;
variable friends papi|john|aja|bruce|cityguard|the janitor&lt;br /&gt;
To recall a variable for use in a trigger, you will notate it as (@variablename) or in this example (@friends). This is recalled in the example below. &lt;br /&gt;
&lt;br /&gt;
=== Triggers ===&lt;br /&gt;
If you want to do whatever the beastly Fido tells you to do:  &lt;br /&gt;
&lt;br /&gt;
$trigger obey /^the Beastly Fido tells you '(.+?)'/ $1   &lt;br /&gt;
&lt;br /&gt;
Or maybe you'd like to    &lt;br /&gt;
&lt;br /&gt;
$trigger smarmy /^(@friends)\sleaves (.+?)\.$/ say I love $1. Especially when $1 leaves $2. &lt;br /&gt;
&lt;br /&gt;
You may notice this is written with Regular Expressions. If you're not familiar or want to learn more: [https://regexr.com/ RegEx Reference]&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=624</id>
		<title>Manual:DIL Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=624"/>
		<updated>2020-07-03T13:17:46Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Alias */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===== ''Temp list of changes. Will reorganize once I see what all we have.&lt;br /&gt;
'' =====&lt;br /&gt;
&lt;br /&gt;
== Priority ==&lt;br /&gt;
How does a program determine it should run and pause others? &lt;br /&gt;
When performing a wstat &amp;lt;unit&amp;gt; func command on an object, the dil functions will display in order of priority; top to bottom with most important dils at the top. If a dil program is executing the priority command, it will block all programs below it. Many of the stock game functions call on the priority or FN_PRI to function properly.   &lt;br /&gt;
A few examples of dils that should/do take priority:   &lt;br /&gt;
*Death ~ dilbegin recall fnpri(FN_PRI_DEATH) death_seq();   &lt;br /&gt;
*Rescue   &lt;br /&gt;
*Under Arrest ~ (dilbegin fnpri(FN_PRI_RESCUE-1)arrest_check(office:string);   &lt;br /&gt;
&lt;br /&gt;
We'll refer to this concept as 'fnpri'.   &lt;br /&gt;
 &lt;br /&gt;
Let's look at a Midgaard town guard, a quick wstat guard func shows:    &lt;br /&gt;
&lt;br /&gt;
#dilcopy rescue@function(&amp;quot;guard/captain/mayor&amp;quot;);&lt;br /&gt;
#dilcopy arrest_check@midgaard(&amp;quot;accus_room@midgaard&amp;quot;);       &lt;br /&gt;
#dilbegin SFUN_PROTECT_LAWFUL time PULSE_SEC*60 bits SFB_RANTIME        &lt;br /&gt;
#dilbegin guard2();       &lt;br /&gt;
&lt;br /&gt;
In this example, the priority belongs to rescue. Therefore the expected behavior is that this guard will prioritize rescuing someone they see being attacked before rushing off to enforce peace or arrest someone. Secondarily, if rescuing is not an active option, the guard will arrest someone before trying to keep the peace. &lt;br /&gt;
If the guard is interrupted in the middle of the execution of guard2(); above, the guard2(); program will simply pause until the higher priority dils are completed.&lt;br /&gt;
In prior DIKU versions, there was no way to determine the dil insertion point on an object and therefore no way to predictably control execution order. So we introduce the following: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! vme.h#define !! Integer !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RES || 0 || Don't use&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_SYS || 1 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_DEATH || 2 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BODY || 5 || gaining hits, etc&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_COMBAT || 10 || in-combat moves&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RESCUE || 20 || Rescue someone rather than passing by&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BLOCK || 25 || Blocking things like commands&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_MISSION || 30 || Sent on an important mission&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_CHORES || 40 || Picking up garbage or eating rabbits. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== The 'Unique' DIL Flag ==&lt;br /&gt;
In DIKU III, we introduce the unique flag in a dil program.   &lt;br /&gt;
dilbegin unique programName();&lt;br /&gt;
&lt;br /&gt;
This unique flag or keyword works to ensure that a unit will never have more than one of that function available on the object at any given time. This is a great way to cut down on the length of new dils because instead of having to do an if(dilfind) every time, you can simply use the unique flag. For example, if you create an entangle spell, and want to have a DIL that can be copied onto char's affected by entanglement, then the unique flag makes sure that even if the spell was cast twice on the same char, there would be only one instance of the entangle DIL running on that char.   &lt;br /&gt;
&lt;br /&gt;
== Built-in Player DIL Commands ==&lt;br /&gt;
Three are three new commands implemented for players (in DIL).    &lt;br /&gt;
* alias&lt;br /&gt;
* trigger&lt;br /&gt;
* variable   &lt;br /&gt;
&lt;br /&gt;
Many of you will recognize these as components of mud clients like zmud/cmud/mudlet etc.   &lt;br /&gt;
This change makes muds a little more accessible by presenting the mud in a web form while still allowing for some of the basic automations found in clients.&lt;br /&gt;
&lt;br /&gt;
=== Alias ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! alias !! arbitrary name !! commands !! result&lt;br /&gt;
|-&lt;br /&gt;
| alias || fido || goto fido;tell fido hello;pet fido || travel to fido. You tell Fido Hello. You pet Fido&lt;br /&gt;
|-&lt;br /&gt;
| alias || tf || tell fido $1 || You tell Fido Hi&lt;br /&gt;
|-&lt;br /&gt;
| alias || tf || tell fido $0 || You tell Fido a whole string of stuff.&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Place Holder !! Use&lt;br /&gt;
|-&lt;br /&gt;
| $0 || Entire string&lt;br /&gt;
|-&lt;br /&gt;
| $1 || 1st Word&lt;br /&gt;
|-&lt;br /&gt;
| $2 || 2nd Word&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Variable ===&lt;br /&gt;
&lt;br /&gt;
Variables are basically stringlists and can be defined as such:&lt;br /&gt;
variable friends papi|john|aja|bruce|cityguard|the janitor&lt;br /&gt;
To recall a variable for use in a trigger, you will notate it as (@variablename) or in this example (@friends). This is recalled in the example below. &lt;br /&gt;
&lt;br /&gt;
=== Triggers ===&lt;br /&gt;
If you want to do whatever the beastly Fido tells you to do:  &lt;br /&gt;
&lt;br /&gt;
$trigger obey /^the Beastly Fido tells you '(.+?)'/ $1   &lt;br /&gt;
&lt;br /&gt;
Or maybe you'd like to    &lt;br /&gt;
&lt;br /&gt;
$trigger smarmy /^(@friends)\sleaves (.+?)\.$/ say I love $1. Especially when $1 leaves $2. &lt;br /&gt;
&lt;br /&gt;
You may notice this is written with Regular Expressions. If you're not familiar or want to learn more: [https://regexr.com/ RegEx Reference]&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=623</id>
		<title>Manual:DIL Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=623"/>
		<updated>2020-07-03T13:17:18Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Alias */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===== ''Temp list of changes. Will reorganize once I see what all we have.&lt;br /&gt;
'' =====&lt;br /&gt;
&lt;br /&gt;
== Priority ==&lt;br /&gt;
How does a program determine it should run and pause others? &lt;br /&gt;
When performing a wstat &amp;lt;unit&amp;gt; func command on an object, the dil functions will display in order of priority; top to bottom with most important dils at the top. If a dil program is executing the priority command, it will block all programs below it. Many of the stock game functions call on the priority or FN_PRI to function properly.   &lt;br /&gt;
A few examples of dils that should/do take priority:   &lt;br /&gt;
*Death ~ dilbegin recall fnpri(FN_PRI_DEATH) death_seq();   &lt;br /&gt;
*Rescue   &lt;br /&gt;
*Under Arrest ~ (dilbegin fnpri(FN_PRI_RESCUE-1)arrest_check(office:string);   &lt;br /&gt;
&lt;br /&gt;
We'll refer to this concept as 'fnpri'.   &lt;br /&gt;
 &lt;br /&gt;
Let's look at a Midgaard town guard, a quick wstat guard func shows:    &lt;br /&gt;
&lt;br /&gt;
#dilcopy rescue@function(&amp;quot;guard/captain/mayor&amp;quot;);&lt;br /&gt;
#dilcopy arrest_check@midgaard(&amp;quot;accus_room@midgaard&amp;quot;);       &lt;br /&gt;
#dilbegin SFUN_PROTECT_LAWFUL time PULSE_SEC*60 bits SFB_RANTIME        &lt;br /&gt;
#dilbegin guard2();       &lt;br /&gt;
&lt;br /&gt;
In this example, the priority belongs to rescue. Therefore the expected behavior is that this guard will prioritize rescuing someone they see being attacked before rushing off to enforce peace or arrest someone. Secondarily, if rescuing is not an active option, the guard will arrest someone before trying to keep the peace. &lt;br /&gt;
If the guard is interrupted in the middle of the execution of guard2(); above, the guard2(); program will simply pause until the higher priority dils are completed.&lt;br /&gt;
In prior DIKU versions, there was no way to determine the dil insertion point on an object and therefore no way to predictably control execution order. So we introduce the following: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! vme.h#define !! Integer !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RES || 0 || Don't use&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_SYS || 1 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_DEATH || 2 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BODY || 5 || gaining hits, etc&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_COMBAT || 10 || in-combat moves&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RESCUE || 20 || Rescue someone rather than passing by&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BLOCK || 25 || Blocking things like commands&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_MISSION || 30 || Sent on an important mission&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_CHORES || 40 || Picking up garbage or eating rabbits. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== The 'Unique' DIL Flag ==&lt;br /&gt;
In DIKU III, we introduce the unique flag in a dil program.   &lt;br /&gt;
dilbegin unique programName();&lt;br /&gt;
&lt;br /&gt;
This unique flag or keyword works to ensure that a unit will never have more than one of that function available on the object at any given time. This is a great way to cut down on the length of new dils because instead of having to do an if(dilfind) every time, you can simply use the unique flag. For example, if you create an entangle spell, and want to have a DIL that can be copied onto char's affected by entanglement, then the unique flag makes sure that even if the spell was cast twice on the same char, there would be only one instance of the entangle DIL running on that char.   &lt;br /&gt;
&lt;br /&gt;
== Built-in Player DIL Commands ==&lt;br /&gt;
Three are three new commands implemented for players (in DIL).    &lt;br /&gt;
* alias&lt;br /&gt;
* trigger&lt;br /&gt;
* variable   &lt;br /&gt;
&lt;br /&gt;
Many of you will recognize these as components of mud clients like zmud/cmud/mudlet etc.   &lt;br /&gt;
This change makes muds a little more accessible by presenting the mud in a web form while still allowing for some of the basic automations found in clients.&lt;br /&gt;
&lt;br /&gt;
=== Alias ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! alias !! arbitrary name !! commands !! result&lt;br /&gt;
|-&lt;br /&gt;
| alias || fido || goto fido;tell fido hello;pet fido || travel to fido. You tell Fido Hello. You pet Fido&lt;br /&gt;
|-&lt;br /&gt;
| alias || tf || tell fido $1 || You tell Fido Hi&lt;br /&gt;
|-&lt;br /&gt;
| alias || tf || tell fido $0 || You tell Fido a whole string of stuff.&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Place Holder !! Use&lt;br /&gt;
|-&lt;br /&gt;
| $0 || whole string&lt;br /&gt;
|-&lt;br /&gt;
| $1 || 1st Word&lt;br /&gt;
|-&lt;br /&gt;
| $2 || Second Word&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Variable ===&lt;br /&gt;
&lt;br /&gt;
Variables are basically stringlists and can be defined as such:&lt;br /&gt;
variable friends papi|john|aja|bruce|cityguard|the janitor&lt;br /&gt;
To recall a variable for use in a trigger, you will notate it as (@variablename) or in this example (@friends). This is recalled in the example below. &lt;br /&gt;
&lt;br /&gt;
=== Triggers ===&lt;br /&gt;
If you want to do whatever the beastly Fido tells you to do:  &lt;br /&gt;
&lt;br /&gt;
$trigger obey /^the Beastly Fido tells you '(.+?)'/ $1   &lt;br /&gt;
&lt;br /&gt;
Or maybe you'd like to    &lt;br /&gt;
&lt;br /&gt;
$trigger smarmy /^(@friends)\sleaves (.+?)\.$/ say I love $1. Especially when $1 leaves $2. &lt;br /&gt;
&lt;br /&gt;
You may notice this is written with Regular Expressions. If you're not familiar or want to learn more: [https://regexr.com/ RegEx Reference]&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=622</id>
		<title>Manual:DIL Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=622"/>
		<updated>2020-07-03T13:17:02Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Built-in Player DIL Commands */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===== ''Temp list of changes. Will reorganize once I see what all we have.&lt;br /&gt;
'' =====&lt;br /&gt;
&lt;br /&gt;
== Priority ==&lt;br /&gt;
How does a program determine it should run and pause others? &lt;br /&gt;
When performing a wstat &amp;lt;unit&amp;gt; func command on an object, the dil functions will display in order of priority; top to bottom with most important dils at the top. If a dil program is executing the priority command, it will block all programs below it. Many of the stock game functions call on the priority or FN_PRI to function properly.   &lt;br /&gt;
A few examples of dils that should/do take priority:   &lt;br /&gt;
*Death ~ dilbegin recall fnpri(FN_PRI_DEATH) death_seq();   &lt;br /&gt;
*Rescue   &lt;br /&gt;
*Under Arrest ~ (dilbegin fnpri(FN_PRI_RESCUE-1)arrest_check(office:string);   &lt;br /&gt;
&lt;br /&gt;
We'll refer to this concept as 'fnpri'.   &lt;br /&gt;
 &lt;br /&gt;
Let's look at a Midgaard town guard, a quick wstat guard func shows:    &lt;br /&gt;
&lt;br /&gt;
#dilcopy rescue@function(&amp;quot;guard/captain/mayor&amp;quot;);&lt;br /&gt;
#dilcopy arrest_check@midgaard(&amp;quot;accus_room@midgaard&amp;quot;);       &lt;br /&gt;
#dilbegin SFUN_PROTECT_LAWFUL time PULSE_SEC*60 bits SFB_RANTIME        &lt;br /&gt;
#dilbegin guard2();       &lt;br /&gt;
&lt;br /&gt;
In this example, the priority belongs to rescue. Therefore the expected behavior is that this guard will prioritize rescuing someone they see being attacked before rushing off to enforce peace or arrest someone. Secondarily, if rescuing is not an active option, the guard will arrest someone before trying to keep the peace. &lt;br /&gt;
If the guard is interrupted in the middle of the execution of guard2(); above, the guard2(); program will simply pause until the higher priority dils are completed.&lt;br /&gt;
In prior DIKU versions, there was no way to determine the dil insertion point on an object and therefore no way to predictably control execution order. So we introduce the following: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! vme.h#define !! Integer !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RES || 0 || Don't use&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_SYS || 1 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_DEATH || 2 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BODY || 5 || gaining hits, etc&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_COMBAT || 10 || in-combat moves&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RESCUE || 20 || Rescue someone rather than passing by&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BLOCK || 25 || Blocking things like commands&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_MISSION || 30 || Sent on an important mission&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_CHORES || 40 || Picking up garbage or eating rabbits. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== The 'Unique' DIL Flag ==&lt;br /&gt;
In DIKU III, we introduce the unique flag in a dil program.   &lt;br /&gt;
dilbegin unique programName();&lt;br /&gt;
&lt;br /&gt;
This unique flag or keyword works to ensure that a unit will never have more than one of that function available on the object at any given time. This is a great way to cut down on the length of new dils because instead of having to do an if(dilfind) every time, you can simply use the unique flag. For example, if you create an entangle spell, and want to have a DIL that can be copied onto char's affected by entanglement, then the unique flag makes sure that even if the spell was cast twice on the same char, there would be only one instance of the entangle DIL running on that char.   &lt;br /&gt;
&lt;br /&gt;
== Built-in Player DIL Commands ==&lt;br /&gt;
Three are three new commands implemented for players (in DIL).    &lt;br /&gt;
* alias&lt;br /&gt;
* trigger&lt;br /&gt;
* variable   &lt;br /&gt;
&lt;br /&gt;
Many of you will recognize these as components of mud clients like zmud/cmud/mudlet etc.   &lt;br /&gt;
This change makes muds a little more accessible by presenting the mud in a web form while still allowing for some of the basic automations found in clients.&lt;br /&gt;
&lt;br /&gt;
=== Alias ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! alias !! arbitrary name !! commands !! result&lt;br /&gt;
|-&lt;br /&gt;
| alias || fido || goto fido;tell fido hello;pet fido || travel to fido. You tell Fido Hello. You pet Fido&lt;br /&gt;
|-&lt;br /&gt;
| alias || tf || tell fido $1 || You tell Fido Hi&lt;br /&gt;
|-&lt;br /&gt;
| alias || tf || tell fido $0 || You tell Fido a whole string of stuff.&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Place Holder !! Use&lt;br /&gt;
|-&lt;br /&gt;
| $0 || whole string|-&lt;br /&gt;
| $1 || 1st Word&lt;br /&gt;
|-&lt;br /&gt;
| $2 || Second Word&lt;br /&gt;
|}&lt;br /&gt;
=== Variable ===&lt;br /&gt;
&lt;br /&gt;
Variables are basically stringlists and can be defined as such:&lt;br /&gt;
variable friends papi|john|aja|bruce|cityguard|the janitor&lt;br /&gt;
To recall a variable for use in a trigger, you will notate it as (@variablename) or in this example (@friends). This is recalled in the example below. &lt;br /&gt;
&lt;br /&gt;
=== Triggers ===&lt;br /&gt;
If you want to do whatever the beastly Fido tells you to do:  &lt;br /&gt;
&lt;br /&gt;
$trigger obey /^the Beastly Fido tells you '(.+?)'/ $1   &lt;br /&gt;
&lt;br /&gt;
Or maybe you'd like to    &lt;br /&gt;
&lt;br /&gt;
$trigger smarmy /^(@friends)\sleaves (.+?)\.$/ say I love $1. Especially when $1 leaves $2. &lt;br /&gt;
&lt;br /&gt;
You may notice this is written with Regular Expressions. If you're not familiar or want to learn more: [https://regexr.com/ RegEx Reference]&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=621</id>
		<title>Manual:DIL Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=621"/>
		<updated>2020-07-03T03:41:41Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Alias */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===== ''Temp list of changes. Will reorganize once I see what all we have.&lt;br /&gt;
'' =====&lt;br /&gt;
&lt;br /&gt;
== Priority ==&lt;br /&gt;
How does a program determine it should run and pause others? &lt;br /&gt;
When performing a wstat &amp;lt;unit&amp;gt; func command on an object, the dil functions will display in order of priority; top to bottom with most important dils at the top. If a dil program is executing the priority command, it will block all programs below it. Many of the stock game functions call on the priority or FN_PRI to function properly.   &lt;br /&gt;
A few examples of dils that should/do take priority:   &lt;br /&gt;
*Death ~ dilbegin recall fnpri(FN_PRI_DEATH) death_seq();   &lt;br /&gt;
*Rescue   &lt;br /&gt;
*Under Arrest ~ (dilbegin fnpri(FN_PRI_RESCUE-1)arrest_check(office:string);   &lt;br /&gt;
&lt;br /&gt;
We'll refer to this concept as 'fnpri'.   &lt;br /&gt;
 &lt;br /&gt;
Let's look at a Midgaard town guard, a quick wstat guard func shows:    &lt;br /&gt;
&lt;br /&gt;
#dilcopy rescue@function(&amp;quot;guard/captain/mayor&amp;quot;);&lt;br /&gt;
#dilcopy arrest_check@midgaard(&amp;quot;accus_room@midgaard&amp;quot;);       &lt;br /&gt;
#dilbegin SFUN_PROTECT_LAWFUL time PULSE_SEC*60 bits SFB_RANTIME        &lt;br /&gt;
#dilbegin guard2();       &lt;br /&gt;
&lt;br /&gt;
In this example, the priority belongs to rescue. Therefore the expected behavior is that this guard will prioritize rescuing someone they see being attacked before rushing off to enforce peace or arrest someone. Secondarily, if rescuing is not an active option, the guard will arrest someone before trying to keep the peace. &lt;br /&gt;
If the guard is interrupted in the middle of the execution of guard2(); above, the guard2(); program will simply pause until the higher priority dils are completed.&lt;br /&gt;
In prior DIKU versions, there was no way to determine the dil insertion point on an object and therefore no way to predictably control execution order. So we introduce the following: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! vme.h#define !! Integer !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RES || 0 || Don't use&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_SYS || 1 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_DEATH || 2 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BODY || 5 || gaining hits, etc&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_COMBAT || 10 || in-combat moves&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RESCUE || 20 || Rescue someone rather than passing by&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BLOCK || 25 || Blocking things like commands&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_MISSION || 30 || Sent on an important mission&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_CHORES || 40 || Picking up garbage or eating rabbits. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== The 'Unique' DIL Flag ==&lt;br /&gt;
In DIKU III, we introduce the unique flag in a dil program.   &lt;br /&gt;
dilbegin unique programName();&lt;br /&gt;
&lt;br /&gt;
This unique flag or keyword works to ensure that a unit will never have more than one of that function available on the object at any given time. This is a great way to cut down on the length of new dils because instead of having to do an if(dilfind) every time, you can simply use the unique flag. For example, if you create an entangle spell, and want to have a DIL that can be copied onto char's affected by entanglement, then the unique flag makes sure that even if the spell was cast twice on the same char, there would be only one instance of the entangle DIL running on that char.   &lt;br /&gt;
&lt;br /&gt;
== Built-in Player DIL Commands ==&lt;br /&gt;
Three are three new commands implemented for players (in DIL).    &lt;br /&gt;
* alias&lt;br /&gt;
* trigger&lt;br /&gt;
* variable   &lt;br /&gt;
&lt;br /&gt;
Many of you will recognize these as components of mud clients like zmud/cmud/mudlet etc.   &lt;br /&gt;
This change makes muds a little more accessible by presenting the mud in a web form while still allowing for some of the basic automations found in clients.&lt;br /&gt;
&lt;br /&gt;
=== Alias ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! alias !! arbitrary name !! commands&lt;br /&gt;
|-&lt;br /&gt;
| alias || fido || goto fido;tell fido hello;pet fido&lt;br /&gt;
|-&lt;br /&gt;
| alias || tf || tell fido $1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Variable ===&lt;br /&gt;
&lt;br /&gt;
Variables are basically stringlists and can be defined as such:&lt;br /&gt;
variable friends papi|john|aja|bruce|cityguard|the janitor&lt;br /&gt;
To recall a variable for use in a trigger, you will notate it as (@variablename) or in this example (@friends). This is recalled in the example below. &lt;br /&gt;
&lt;br /&gt;
=== Triggers ===&lt;br /&gt;
If you want to do whatever the beastly Fido tells you to do:  &lt;br /&gt;
&lt;br /&gt;
$trigger obey /^the Beastly Fido tells you '(.+?)'/ $1   &lt;br /&gt;
&lt;br /&gt;
Or maybe you'd like to    &lt;br /&gt;
&lt;br /&gt;
$trigger smarmy /^(@friends)\sleaves (.+?)\.$/ say I love $1. Especially when $1 leaves $2. &lt;br /&gt;
&lt;br /&gt;
You may notice this is written with Regular Expressions. If you're not familiar or want to learn more: [https://regexr.com/ RegEx Reference]&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=620</id>
		<title>Manual:DIL Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=620"/>
		<updated>2020-07-03T03:40:45Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Triggers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===== ''Temp list of changes. Will reorganize once I see what all we have.&lt;br /&gt;
'' =====&lt;br /&gt;
&lt;br /&gt;
== Priority ==&lt;br /&gt;
How does a program determine it should run and pause others? &lt;br /&gt;
When performing a wstat &amp;lt;unit&amp;gt; func command on an object, the dil functions will display in order of priority; top to bottom with most important dils at the top. If a dil program is executing the priority command, it will block all programs below it. Many of the stock game functions call on the priority or FN_PRI to function properly.   &lt;br /&gt;
A few examples of dils that should/do take priority:   &lt;br /&gt;
*Death ~ dilbegin recall fnpri(FN_PRI_DEATH) death_seq();   &lt;br /&gt;
*Rescue   &lt;br /&gt;
*Under Arrest ~ (dilbegin fnpri(FN_PRI_RESCUE-1)arrest_check(office:string);   &lt;br /&gt;
&lt;br /&gt;
We'll refer to this concept as 'fnpri'.   &lt;br /&gt;
 &lt;br /&gt;
Let's look at a Midgaard town guard, a quick wstat guard func shows:    &lt;br /&gt;
&lt;br /&gt;
#dilcopy rescue@function(&amp;quot;guard/captain/mayor&amp;quot;);&lt;br /&gt;
#dilcopy arrest_check@midgaard(&amp;quot;accus_room@midgaard&amp;quot;);       &lt;br /&gt;
#dilbegin SFUN_PROTECT_LAWFUL time PULSE_SEC*60 bits SFB_RANTIME        &lt;br /&gt;
#dilbegin guard2();       &lt;br /&gt;
&lt;br /&gt;
In this example, the priority belongs to rescue. Therefore the expected behavior is that this guard will prioritize rescuing someone they see being attacked before rushing off to enforce peace or arrest someone. Secondarily, if rescuing is not an active option, the guard will arrest someone before trying to keep the peace. &lt;br /&gt;
If the guard is interrupted in the middle of the execution of guard2(); above, the guard2(); program will simply pause until the higher priority dils are completed.&lt;br /&gt;
In prior DIKU versions, there was no way to determine the dil insertion point on an object and therefore no way to predictably control execution order. So we introduce the following: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! vme.h#define !! Integer !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RES || 0 || Don't use&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_SYS || 1 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_DEATH || 2 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BODY || 5 || gaining hits, etc&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_COMBAT || 10 || in-combat moves&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RESCUE || 20 || Rescue someone rather than passing by&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BLOCK || 25 || Blocking things like commands&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_MISSION || 30 || Sent on an important mission&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_CHORES || 40 || Picking up garbage or eating rabbits. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== The 'Unique' DIL Flag ==&lt;br /&gt;
In DIKU III, we introduce the unique flag in a dil program.   &lt;br /&gt;
dilbegin unique programName();&lt;br /&gt;
&lt;br /&gt;
This unique flag or keyword works to ensure that a unit will never have more than one of that function available on the object at any given time. This is a great way to cut down on the length of new dils because instead of having to do an if(dilfind) every time, you can simply use the unique flag. For example, if you create an entangle spell, and want to have a DIL that can be copied onto char's affected by entanglement, then the unique flag makes sure that even if the spell was cast twice on the same char, there would be only one instance of the entangle DIL running on that char.   &lt;br /&gt;
&lt;br /&gt;
== Built-in Player DIL Commands ==&lt;br /&gt;
Three are three new commands implemented for players (in DIL).    &lt;br /&gt;
* alias&lt;br /&gt;
* trigger&lt;br /&gt;
* variable   &lt;br /&gt;
&lt;br /&gt;
Many of you will recognize these as components of mud clients like zmud/cmud/mudlet etc.   &lt;br /&gt;
This change makes muds a little more accessible by presenting the mud in a web form while still allowing for some of the basic automations found in clients.&lt;br /&gt;
&lt;br /&gt;
=== Alias ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! alias !! arbitrary name !! commands&lt;br /&gt;
|-&lt;br /&gt;
| alias || fido || goto fido;tell fido hello;pet fido&lt;br /&gt;
&lt;br /&gt;
| alias || tf || tell fido $1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Variable ===&lt;br /&gt;
&lt;br /&gt;
Variables are basically stringlists and can be defined as such:&lt;br /&gt;
variable friends papi|john|aja|bruce|cityguard|the janitor&lt;br /&gt;
To recall a variable for use in a trigger, you will notate it as (@variablename) or in this example (@friends). This is recalled in the example below. &lt;br /&gt;
&lt;br /&gt;
=== Triggers ===&lt;br /&gt;
If you want to do whatever the beastly Fido tells you to do:  &lt;br /&gt;
&lt;br /&gt;
$trigger obey /^the Beastly Fido tells you '(.+?)'/ $1   &lt;br /&gt;
&lt;br /&gt;
Or maybe you'd like to    &lt;br /&gt;
&lt;br /&gt;
$trigger smarmy /^(@friends)\sleaves (.+?)\.$/ say I love $1. Especially when $1 leaves $2. &lt;br /&gt;
&lt;br /&gt;
You may notice this is written with Regular Expressions. If you're not familiar or want to learn more: [https://regexr.com/ RegEx Reference]&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=619</id>
		<title>Manual:DIL Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=619"/>
		<updated>2020-07-03T03:40:28Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Triggers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===== ''Temp list of changes. Will reorganize once I see what all we have.&lt;br /&gt;
'' =====&lt;br /&gt;
&lt;br /&gt;
== Priority ==&lt;br /&gt;
How does a program determine it should run and pause others? &lt;br /&gt;
When performing a wstat &amp;lt;unit&amp;gt; func command on an object, the dil functions will display in order of priority; top to bottom with most important dils at the top. If a dil program is executing the priority command, it will block all programs below it. Many of the stock game functions call on the priority or FN_PRI to function properly.   &lt;br /&gt;
A few examples of dils that should/do take priority:   &lt;br /&gt;
*Death ~ dilbegin recall fnpri(FN_PRI_DEATH) death_seq();   &lt;br /&gt;
*Rescue   &lt;br /&gt;
*Under Arrest ~ (dilbegin fnpri(FN_PRI_RESCUE-1)arrest_check(office:string);   &lt;br /&gt;
&lt;br /&gt;
We'll refer to this concept as 'fnpri'.   &lt;br /&gt;
 &lt;br /&gt;
Let's look at a Midgaard town guard, a quick wstat guard func shows:    &lt;br /&gt;
&lt;br /&gt;
#dilcopy rescue@function(&amp;quot;guard/captain/mayor&amp;quot;);&lt;br /&gt;
#dilcopy arrest_check@midgaard(&amp;quot;accus_room@midgaard&amp;quot;);       &lt;br /&gt;
#dilbegin SFUN_PROTECT_LAWFUL time PULSE_SEC*60 bits SFB_RANTIME        &lt;br /&gt;
#dilbegin guard2();       &lt;br /&gt;
&lt;br /&gt;
In this example, the priority belongs to rescue. Therefore the expected behavior is that this guard will prioritize rescuing someone they see being attacked before rushing off to enforce peace or arrest someone. Secondarily, if rescuing is not an active option, the guard will arrest someone before trying to keep the peace. &lt;br /&gt;
If the guard is interrupted in the middle of the execution of guard2(); above, the guard2(); program will simply pause until the higher priority dils are completed.&lt;br /&gt;
In prior DIKU versions, there was no way to determine the dil insertion point on an object and therefore no way to predictably control execution order. So we introduce the following: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! vme.h#define !! Integer !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RES || 0 || Don't use&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_SYS || 1 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_DEATH || 2 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BODY || 5 || gaining hits, etc&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_COMBAT || 10 || in-combat moves&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RESCUE || 20 || Rescue someone rather than passing by&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BLOCK || 25 || Blocking things like commands&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_MISSION || 30 || Sent on an important mission&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_CHORES || 40 || Picking up garbage or eating rabbits. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== The 'Unique' DIL Flag ==&lt;br /&gt;
In DIKU III, we introduce the unique flag in a dil program.   &lt;br /&gt;
dilbegin unique programName();&lt;br /&gt;
&lt;br /&gt;
This unique flag or keyword works to ensure that a unit will never have more than one of that function available on the object at any given time. This is a great way to cut down on the length of new dils because instead of having to do an if(dilfind) every time, you can simply use the unique flag. For example, if you create an entangle spell, and want to have a DIL that can be copied onto char's affected by entanglement, then the unique flag makes sure that even if the spell was cast twice on the same char, there would be only one instance of the entangle DIL running on that char.   &lt;br /&gt;
&lt;br /&gt;
== Built-in Player DIL Commands ==&lt;br /&gt;
Three are three new commands implemented for players (in DIL).    &lt;br /&gt;
* alias&lt;br /&gt;
* trigger&lt;br /&gt;
* variable   &lt;br /&gt;
&lt;br /&gt;
Many of you will recognize these as components of mud clients like zmud/cmud/mudlet etc.   &lt;br /&gt;
This change makes muds a little more accessible by presenting the mud in a web form while still allowing for some of the basic automations found in clients.&lt;br /&gt;
&lt;br /&gt;
=== Alias ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! alias !! arbitrary name !! commands&lt;br /&gt;
|-&lt;br /&gt;
| alias || fido || goto fido;tell fido hello;pet fido&lt;br /&gt;
&lt;br /&gt;
| alias || tf || tell fido $1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Variable ===&lt;br /&gt;
&lt;br /&gt;
Variables are basically stringlists and can be defined as such:&lt;br /&gt;
variable friends papi|john|aja|bruce|cityguard|the janitor&lt;br /&gt;
To recall a variable for use in a trigger, you will notate it as (@variablename) or in this example (@friends). This is recalled in the example below. &lt;br /&gt;
&lt;br /&gt;
=== Triggers ===&lt;br /&gt;
If you want to do whatever the beastly Fido tells you to do:  &lt;br /&gt;
&lt;br /&gt;
$trigger $trigger obey /^the Beastly Fido tells you '(.+?)'/ $1   &lt;br /&gt;
&lt;br /&gt;
Or maybe you'd like to    &lt;br /&gt;
&lt;br /&gt;
$trigger smarmy /^(@friends)\sleaves (.+?)\.$/ say I love $1. Especially when $1 leaves $2. &lt;br /&gt;
&lt;br /&gt;
You may notice this is written with Regular Expressions. If you're not familiar or want to learn more: [https://regexr.com/ RegEx Reference]&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=618</id>
		<title>Manual:DIL Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=618"/>
		<updated>2020-07-03T03:39:41Z</updated>

		<summary type="html">&lt;p&gt;Aja: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===== ''Temp list of changes. Will reorganize once I see what all we have.&lt;br /&gt;
'' =====&lt;br /&gt;
&lt;br /&gt;
== Priority ==&lt;br /&gt;
How does a program determine it should run and pause others? &lt;br /&gt;
When performing a wstat &amp;lt;unit&amp;gt; func command on an object, the dil functions will display in order of priority; top to bottom with most important dils at the top. If a dil program is executing the priority command, it will block all programs below it. Many of the stock game functions call on the priority or FN_PRI to function properly.   &lt;br /&gt;
A few examples of dils that should/do take priority:   &lt;br /&gt;
*Death ~ dilbegin recall fnpri(FN_PRI_DEATH) death_seq();   &lt;br /&gt;
*Rescue   &lt;br /&gt;
*Under Arrest ~ (dilbegin fnpri(FN_PRI_RESCUE-1)arrest_check(office:string);   &lt;br /&gt;
&lt;br /&gt;
We'll refer to this concept as 'fnpri'.   &lt;br /&gt;
 &lt;br /&gt;
Let's look at a Midgaard town guard, a quick wstat guard func shows:    &lt;br /&gt;
&lt;br /&gt;
#dilcopy rescue@function(&amp;quot;guard/captain/mayor&amp;quot;);&lt;br /&gt;
#dilcopy arrest_check@midgaard(&amp;quot;accus_room@midgaard&amp;quot;);       &lt;br /&gt;
#dilbegin SFUN_PROTECT_LAWFUL time PULSE_SEC*60 bits SFB_RANTIME        &lt;br /&gt;
#dilbegin guard2();       &lt;br /&gt;
&lt;br /&gt;
In this example, the priority belongs to rescue. Therefore the expected behavior is that this guard will prioritize rescuing someone they see being attacked before rushing off to enforce peace or arrest someone. Secondarily, if rescuing is not an active option, the guard will arrest someone before trying to keep the peace. &lt;br /&gt;
If the guard is interrupted in the middle of the execution of guard2(); above, the guard2(); program will simply pause until the higher priority dils are completed.&lt;br /&gt;
In prior DIKU versions, there was no way to determine the dil insertion point on an object and therefore no way to predictably control execution order. So we introduce the following: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! vme.h#define !! Integer !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RES || 0 || Don't use&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_SYS || 1 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_DEATH || 2 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BODY || 5 || gaining hits, etc&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_COMBAT || 10 || in-combat moves&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RESCUE || 20 || Rescue someone rather than passing by&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BLOCK || 25 || Blocking things like commands&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_MISSION || 30 || Sent on an important mission&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_CHORES || 40 || Picking up garbage or eating rabbits. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== The 'Unique' DIL Flag ==&lt;br /&gt;
In DIKU III, we introduce the unique flag in a dil program.   &lt;br /&gt;
dilbegin unique programName();&lt;br /&gt;
&lt;br /&gt;
This unique flag or keyword works to ensure that a unit will never have more than one of that function available on the object at any given time. This is a great way to cut down on the length of new dils because instead of having to do an if(dilfind) every time, you can simply use the unique flag. For example, if you create an entangle spell, and want to have a DIL that can be copied onto char's affected by entanglement, then the unique flag makes sure that even if the spell was cast twice on the same char, there would be only one instance of the entangle DIL running on that char.   &lt;br /&gt;
&lt;br /&gt;
== Built-in Player DIL Commands ==&lt;br /&gt;
Three are three new commands implemented for players (in DIL).    &lt;br /&gt;
* alias&lt;br /&gt;
* trigger&lt;br /&gt;
* variable   &lt;br /&gt;
&lt;br /&gt;
Many of you will recognize these as components of mud clients like zmud/cmud/mudlet etc.   &lt;br /&gt;
This change makes muds a little more accessible by presenting the mud in a web form while still allowing for some of the basic automations found in clients.&lt;br /&gt;
&lt;br /&gt;
=== Alias ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! alias !! arbitrary name !! commands&lt;br /&gt;
|-&lt;br /&gt;
| alias || fido || goto fido;tell fido hello;pet fido&lt;br /&gt;
&lt;br /&gt;
| alias || tf || tell fido $1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Variable ===&lt;br /&gt;
&lt;br /&gt;
Variables are basically stringlists and can be defined as such:&lt;br /&gt;
variable friends papi|john|aja|bruce|cityguard|the janitor&lt;br /&gt;
To recall a variable for use in a trigger, you will notate it as (@variablename) or in this example (@friends). This is recalled in the example below. &lt;br /&gt;
&lt;br /&gt;
=== Triggers ===&lt;br /&gt;
If you want to do whatever the beastly Fido tells you to do:   &lt;br /&gt;
$trigger $trigger obey /^the Beastly Fido tells you '(.+?)'/ $1&lt;br /&gt;
Or maybe you'd like to &lt;br /&gt;
$trigger smarmy /^(@friends)\sleaves (.+?)\.$/ say I love $1. Especially when $1 leaves $2. &lt;br /&gt;
&lt;br /&gt;
You may notice this is written with Regular Expressions. If you're not familiar or want to learn more: [https://regexr.com/ RegEx Reference]&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=DikuMUD&amp;diff=617</id>
		<title>DikuMUD</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=DikuMUD&amp;diff=617"/>
		<updated>2020-07-03T03:28:15Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Zone Building */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
=== Welcome ===&lt;br /&gt;
&lt;br /&gt;
You can find guidance on contributing to the wiki at [[Editing the Wiki]].&lt;br /&gt;
&lt;br /&gt;
== The Game ==&lt;br /&gt;
&lt;br /&gt;
*[[Manual:Game_Mechanics|Game Mechanics]]&lt;br /&gt;
&lt;br /&gt;
== Zone Building ==&lt;br /&gt;
*[[Manual:Zone_Manual|Zone Compiler]]&lt;br /&gt;
*[[Manual:DIL Changes]]&lt;br /&gt;
*[[Manual:DIL_Manual|Diku MUD Interpreted Language (DIL)]]&lt;br /&gt;
&lt;br /&gt;
*[[Manual:DIL_Examples|DIL Best Practices &amp;amp; Helpful Notes]]&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
*[[Manual:Credits|Credits]]&lt;br /&gt;
== The Engine &amp;amp; Upgrades ==&lt;br /&gt;
*[[Upgrading Tips]]&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=DikuMUD&amp;diff=616</id>
		<title>DikuMUD</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=DikuMUD&amp;diff=616"/>
		<updated>2020-07-03T03:27:46Z</updated>

		<summary type="html">&lt;p&gt;Aja: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
=== Welcome ===&lt;br /&gt;
&lt;br /&gt;
You can find guidance on contributing to the wiki at [[Editing the Wiki]].&lt;br /&gt;
&lt;br /&gt;
== The Game ==&lt;br /&gt;
&lt;br /&gt;
*[[Manual:Game_Mechanics|Game Mechanics]]&lt;br /&gt;
&lt;br /&gt;
== Zone Building ==&lt;br /&gt;
*[[Manual:Zone_Manual|Zone Compiler]]&lt;br /&gt;
*[[Manual:Base DIL Changes &amp;amp; Updates]]&lt;br /&gt;
*[[Manual:DIL_Manual|Diku MUD Interpreted Language (DIL)]]&lt;br /&gt;
&lt;br /&gt;
*[[Manual:DIL_Examples|DIL Best Practices &amp;amp; Helpful Notes]]&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
*[[Manual:Credits|Credits]]&lt;br /&gt;
== The Engine &amp;amp; Upgrades ==&lt;br /&gt;
*[[Upgrading Tips]]&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=DikuMUD&amp;diff=615</id>
		<title>DikuMUD</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=DikuMUD&amp;diff=615"/>
		<updated>2020-07-03T03:26:53Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Zone Building */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
=== Welcome ===&lt;br /&gt;
&lt;br /&gt;
You can find guidance on contributing to the wiki at [[Editing the Wiki]].&lt;br /&gt;
&lt;br /&gt;
== The Game ==&lt;br /&gt;
&lt;br /&gt;
*[[Manual:Game_Mechanics|Game Mechanics]]&lt;br /&gt;
&lt;br /&gt;
== Zone Building ==&lt;br /&gt;
*[[Manual:Zone_Manual|Zone Compiler]]&lt;br /&gt;
*[[Manual:DIL Changes]]&lt;br /&gt;
*[[Manual:DIL_Manual|Diku MUD Interpreted Language (DIL)]]&lt;br /&gt;
&lt;br /&gt;
*[[Manual:DIL_Examples|DIL Best Practices &amp;amp; Helpful Notes]]&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
*[[Manual:Credits|Credits]]&lt;br /&gt;
== The Engine &amp;amp; Upgrades ==&lt;br /&gt;
*[[Upgrading Tips]]&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=614</id>
		<title>Manual:DIL Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=614"/>
		<updated>2020-07-03T03:25:25Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Priority */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===== ''Temp list of changes. Will reorganize once I see what all we have.&lt;br /&gt;
'' =====&lt;br /&gt;
&lt;br /&gt;
== Priority ==&lt;br /&gt;
How does a program determine it should run and pause others? &lt;br /&gt;
When performing a wstat &amp;lt;unit&amp;gt; func command on an object, the dil functions will display in order of priority; top to bottom with most important dils at the top. If a dil program is executing the priority command, it will block all programs below it. Many of the stock game functions call on the priority or FN_PRI to function properly.   &lt;br /&gt;
A few examples of dils that should/do take priority:   &lt;br /&gt;
*Death ~ dilbegin recall fnpri(FN_PRI_DEATH) death_seq();   &lt;br /&gt;
*Rescue   &lt;br /&gt;
*Under Arrest ~ (dilbegin fnpri(FN_PRI_RESCUE-1)arrest_check(office:string);   &lt;br /&gt;
&lt;br /&gt;
We'll refer to this concept as 'fnpri'.   &lt;br /&gt;
 &lt;br /&gt;
Let's look at a Midgaard town guard, a quick wstat guard func shows:    &lt;br /&gt;
&lt;br /&gt;
#dilcopy rescue@function(&amp;quot;guard/captain/mayor&amp;quot;);&lt;br /&gt;
#dilcopy arrest_check@midgaard(&amp;quot;accus_room@midgaard&amp;quot;);       &lt;br /&gt;
#dilbegin SFUN_PROTECT_LAWFUL time PULSE_SEC*60 bits SFB_RANTIME        &lt;br /&gt;
#dilbegin guard2();       &lt;br /&gt;
&lt;br /&gt;
In this example, the priority belongs to rescue. Therefore the expected behavior is that this guard will prioritize rescuing someone they see being attacked before rushing off to enforce peace or arrest someone. Secondarily, if rescuing is not an active option, the guard will arrest someone before trying to keep the peace. &lt;br /&gt;
If the guard is interrupted in the middle of the execution of guard2(); above, the guard2(); program will simply pause until the higher priority dils are completed.&lt;br /&gt;
In prior DIKU versions, there was no way to determine the dil insertion point on an object and therefore no way to predictably control execution order. So we introduce the following: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! vme.h#define !! Integer !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RES || 0 || Don't use&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_SYS || 1 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_DEATH || 2 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BODY || 5 || gaining hits, etc&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_COMBAT || 10 || in-combat moves&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RESCUE || 20 || Rescue someone rather than passing by&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BLOCK || 25 || Blocking things like commands&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_MISSION || 30 || Sent on an important mission&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_CHORES || 40 || Picking up garbage or eating rabbits. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== The 'Unique' DIL Flag ==&lt;br /&gt;
In DIKU III, we introduce the unique flag in a dil program.   &lt;br /&gt;
dilbegin unique programName();&lt;br /&gt;
&lt;br /&gt;
This unique flag or keyword works to ensure that a unit will never have more than one of that function available on the object at any given time. This is a great way to cut down on the length of new dils because instead of having to do an if(dilfind) every time, you can simply use the unique flag. For example, if you create an entangle spell, and want to have a DIL that can be copied onto char's affected by entanglement, then the unique flag makes sure that even if the spell was cast twice on the same char, there would be only one instance of the entangle DIL running on that char.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=613</id>
		<title>Manual:DIL Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=613"/>
		<updated>2020-07-03T03:24:18Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Priority */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===== ''Temp list of changes. Will reorganize once I see what all we have.&lt;br /&gt;
'' =====&lt;br /&gt;
&lt;br /&gt;
== Priority ==&lt;br /&gt;
How does a program determine it should run and pause others? &lt;br /&gt;
When performing a wstat &amp;lt;unit&amp;gt; func command on an object, the dil functions will display in order of priority; top to bottom with most important dils at the top. If a dil program is executing the priority command, it will block all programs below it. Many of the stock game functions call on the priority or FN_PRI to function properly.   &lt;br /&gt;
A few examples of dils that should/do take priority:   &lt;br /&gt;
*Death ~ dilbegin recall fnpri(FN_PRI_DEATH) death_seq();   &lt;br /&gt;
*Rescue   &lt;br /&gt;
*Under Arrest ~ (dilbegin fnpri(FN_PRI_RESCUE-1)arrest_check(office:string);   &lt;br /&gt;
&lt;br /&gt;
We'll refer to this concept as 'fnpri'.   &lt;br /&gt;
 &lt;br /&gt;
Let's look at a Midgaard town guard, a quick wstat guard func shows:    &lt;br /&gt;
&lt;br /&gt;
#dilcopy rescue@function(&amp;quot;guard/captain/mayor&amp;quot;);&lt;br /&gt;
distribution.&lt;br /&gt;
&lt;br /&gt;
So I've just uploaded a first version of alias, triggers and variables to GitHUB.&lt;br /&gt;
&lt;br /&gt;
Works like this:&lt;br /&gt;
&lt;br /&gt;
Three new commands implemented (in DIL):&lt;br /&gt;
&lt;br /&gt;
alias&lt;br /&gt;
trigger&lt;br /&gt;
variable&lt;br /&gt;
&lt;br /&gt;
Works like this:&lt;br /&gt;
alias &amp;lt;name&amp;gt; commands&lt;br /&gt;
variable &amp;lt;name&amp;gt; text&lt;br /&gt;
trigger &amp;lt;name&amp;gt; /&amp;lt;trigger&amp;gt;/ commands&lt;br /&gt;
&lt;br /&gt;
For the trigger command you must have the / / on each side of your regexp statement.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
alias fido goto fido;force fido tell papi bow fido&lt;br /&gt;
alias tw tell whistler $1&lt;br /&gt;
&lt;br /&gt;
variable friends papi|palio|john|bruce|the cityguard|the janitor|the beastly fido&lt;br /&gt;
&lt;br /&gt;
$trigger obey /^the Beastly Fido tells you '(.+?)'/ $1&lt;br /&gt;
$trigger guard /^(@friends)\sleaves (.+?)\.$/ say I love $1. Especially when $1 leaves $2&lt;br /&gt;
&lt;br /&gt;
It's a pita to write JavaScript RegExp :o) But we can have some examples.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As I'm writing this I'm realizing maybe I should also implement $0 to mean the whole string. Right now $1 is the first word, $2 is the second word, and so on. Or is there a better way?&lt;br /&gt;
&lt;br /&gt;
Please feel free to comment and make suggestions.&lt;br /&gt;
&lt;br /&gt;
PS. The test server is up, but I've deliberately messed up the output. So it looks totally odd. It's just temporary while I try to map using cMUD.&lt;br /&gt;
#dilcopy arrest_check@midgaard(&amp;quot;accus_room@midgaard&amp;quot;);       &lt;br /&gt;
#dilbegin SFUN_PROTECT_LAWFUL time PULSE_SEC*60 bits SFB_RANTIME        &lt;br /&gt;
#dilbegin guard2();       &lt;br /&gt;
&lt;br /&gt;
In this example, the priority belongs to rescue. Therefore the expected behavior is that this guard will prioritize rescuing someone they see being attacked before rushing off to enforce peace or arrest someone. Secondarily, if rescuing is not an active option, the guard will arrest someone before trying to keep the peace. &lt;br /&gt;
If the guard is interrupted in the middle of the execution of guard2(); above, the guard2(); program will simply pause until the higher priority dils are completed.&lt;br /&gt;
In prior DIKU versions, there was no way to determine the dil insertion point on an object and therefore no way to predictably control execution order. So we introduce the following: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! vme.h#define !! Integer !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RES || 0 || Don't use&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_SYS || 1 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_DEATH || 2 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BODY || 5 || gaining hits, etc&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_COMBAT || 10 || in-combat moves&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RESCUE || 20 || Rescue someone rather than passing by&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BLOCK || 25 || Blocking things like commands&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_MISSION || 30 || Sent on an important mission&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_CHORES || 40 || Picking up garbage or eating rabbits. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== The 'Unique' DIL Flag ==&lt;br /&gt;
In DIKU III, we introduce the unique flag in a dil program.   &lt;br /&gt;
dilbegin unique programName();&lt;br /&gt;
&lt;br /&gt;
This unique flag or keyword works to ensure that a unit will never have more than one of that function available on the object at any given time. This is a great way to cut down on the length of new dils because instead of having to do an if(dilfind) every time, you can simply use the unique flag. For example, if you create an entangle spell, and want to have a DIL that can be copied onto char's affected by entanglement, then the unique flag makes sure that even if the spell was cast twice on the same char, there would be only one instance of the entangle DIL running on that char.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=612</id>
		<title>Manual:DIL Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=612"/>
		<updated>2020-07-03T03:23:34Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Priority */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===== ''Temp list of changes. Will reorganize once I see what all we have.&lt;br /&gt;
'' =====&lt;br /&gt;
&lt;br /&gt;
== Priority ==&lt;br /&gt;
How does a program determine it should run and pause others? &lt;br /&gt;
When performing a wstat &amp;lt;unit&amp;gt; func command on an object, the dil functions will display in order of priority; top to bottom with most important dils at the top. If a dil program is executing the priority command, it will block all programs below it. Many of the stock game functions call on the priority or FN_PRI to function properly.   &lt;br /&gt;
A few examples of dils that should/do take priority:   &lt;br /&gt;
*Death ~ dilbegin recall fnpri(FN_PRI_DEATH) death_seq();   &lt;br /&gt;
*Rescue   &lt;br /&gt;
*Under Arrest ~ (dilbegin fnpri(FN_PRI_RESCUE-1)arrest_check(office:string);   &lt;br /&gt;
&lt;br /&gt;
We'll refer to this concept as 'fnpri'.   &lt;br /&gt;
 &lt;br /&gt;
Let's look at a Midgaard town guard, a quick wstat guard func shows:    &lt;br /&gt;
&lt;br /&gt;
#dilcopy rescue@function(&amp;quot;guard/captain/mayor&amp;quot;);&lt;br /&gt;
#arrest_check@midgaard(&amp;quot;accus_room@midgaard&amp;quot;);       &lt;br /&gt;
#dilbegin SFUN_PROTECT_LAWFUL time PULSE_SEC*60 bits SFB_RANTIME        &lt;br /&gt;
#dilbegin guard2();       &lt;br /&gt;
&lt;br /&gt;
In this example, the priority belongs to rescue. Therefore the expected behavior is that this guard will prioritize rescuing someone they see being attacked before rushing off to enforce peace or arrest someone. Secondarily, if rescuing is not an active option, the guard will arrest someone before trying to keep the peace. &lt;br /&gt;
If the guard is interrupted in the middle of the execution of guard2(); above, the guard2(); program will simply pause until the higher priority dils are completed.&lt;br /&gt;
In prior DIKU versions, there was no way to determine the dil insertion point on an object and therefore no way to predictably control execution order. So we introduce the following: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! vme.h#define !! Integer !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RES || 0 || Don't use&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_SYS || 1 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_DEATH || 2 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BODY || 5 || gaining hits, etc&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_COMBAT || 10 || in-combat moves&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RESCUE || 20 || Rescue someone rather than passing by&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BLOCK || 25 || Blocking things like commands&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_MISSION || 30 || Sent on an important mission&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_CHORES || 40 || Picking up garbage or eating rabbits. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== The 'Unique' DIL Flag ==&lt;br /&gt;
In DIKU III, we introduce the unique flag in a dil program.   &lt;br /&gt;
dilbegin unique programName();&lt;br /&gt;
&lt;br /&gt;
This unique flag or keyword works to ensure that a unit will never have more than one of that function available on the object at any given time. This is a great way to cut down on the length of new dils because instead of having to do an if(dilfind) every time, you can simply use the unique flag. For example, if you create an entangle spell, and want to have a DIL that can be copied onto char's affected by entanglement, then the unique flag makes sure that even if the spell was cast twice on the same char, there would be only one instance of the entangle DIL running on that char.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=611</id>
		<title>Manual:DIL Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=611"/>
		<updated>2020-07-03T03:20:29Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Priority */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===== ''Temp list of changes. Will reorganize once I see what all we have.&lt;br /&gt;
'' =====&lt;br /&gt;
&lt;br /&gt;
== Priority ==&lt;br /&gt;
How does a program determine it should run and pause others? &lt;br /&gt;
When performing a wstat &amp;lt;unit&amp;gt; func command on an object, the dil functions will display in order of priority; top to bottom with most important dils at the top. If a dil program is executing the priority command, it will block all programs below it. Many of the stock game functions call on the priority or FN_PRI to function properly.   &lt;br /&gt;
A few examples of dils that should/do take priority:   &lt;br /&gt;
*Death ~ dilbegin recall fnpri(FN_PRI_DEATH) death_seq();   &lt;br /&gt;
*Rescue   &lt;br /&gt;
*Under Arrest ~ (dilbegin fnpri(FN_PRI_RESCUE-1)arrest_check(office:string);   &lt;br /&gt;
&lt;br /&gt;
We'll refer to this concept as 'fnpri'.   &lt;br /&gt;
 &lt;br /&gt;
Let's look at a Midgaard town guard, a quick wstat guard func shows:    &lt;br /&gt;
&lt;br /&gt;
#dilcopy rescue@function(&amp;quot;guard/captain/mayor&amp;quot;);     dilcopy #arrest_check@midgaard(&amp;quot;accus_room@midgaard&amp;quot;);       &lt;br /&gt;
#dilbegin SFUN_PROTECT_LAWFUL time PULSE_SEC*60 bits SFB_RANTIME        &lt;br /&gt;
#dilbegin guard2();       &lt;br /&gt;
&lt;br /&gt;
In this example, the priority belongs to rescue. Therefore the expected behavior is that this guard will prioritize rescuing someone they see being attacked before rushing off to enforce peace or arrest someone. Secondarily, if rescuing is not an active option, the guard will arrest someone before trying to keep the peace. &lt;br /&gt;
If the guard is interrupted in the middle of the execution of guard2(); above, the guard2(); program will simply pause until the higher priority dils are completed.&lt;br /&gt;
In prior DIKU versions, there was no way to determine the dil insertion point on an object and therefore no way to predictably control execution order. &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! vme.h#define !! Integer !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RES || 0 || Don't use&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_SYS || 1 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_DEATH || 2 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BODY || 5 || gaining hits, etc&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_COMBAT || 10 || in-combat moves&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RESCUE || 20 || Rescue someone rather than passing by&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BLOCK || 25 || Blocking things like commands&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_MISSION || 30 || Sent on an important mission&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_CHORES || 40 || Picking up gargabe or eating rabbits. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== The 'Unique' DIL Flag ==&lt;br /&gt;
In DIKU III, we introduce the unique flag in a dil program.   &lt;br /&gt;
dilbegin unique programName();&lt;br /&gt;
&lt;br /&gt;
This unique flag or keyword works to ensure that a unit will never have more than one of that function available on the object at any given time. This is a great way to cut down on the length of new dils because instead of having to do an if(dilfind) every time, you can simply use the unique flag. For example, if you create an entangle spell, and want to have a DIL that can be copied onto char's affected by entanglement, then the unique flag makes sure that even if the spell was cast twice on the same char, there would be only one instance of the entangle DIL running on that char.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=610</id>
		<title>Manual:DIL Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=610"/>
		<updated>2020-07-03T03:19:51Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Priority */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===== ''Temp list of changes. Will reorganize once I see what all we have.&lt;br /&gt;
'' =====&lt;br /&gt;
&lt;br /&gt;
== Priority ==&lt;br /&gt;
How does a program determine it should run and pause others? &lt;br /&gt;
When performing a wstat &amp;lt;unit&amp;gt; func command on an object, the dil functions will display in order of priority; top to bottom with most important dils at the top. If a dil program is executing the priority command, it will block all programs below it. Many of the stock game functions call on the priority or FN_PRI to function properly.   &lt;br /&gt;
A few examples of dils that should/do take priority:   &lt;br /&gt;
*Death ~ dilbegin recall fnpri(FN_PRI_DEATH) death_seq();   &lt;br /&gt;
*Rescue   &lt;br /&gt;
*Under Arrest ~ (dilbegin fnpri(FN_PRI_RESCUE-1)arrest_check(office:string);   &lt;br /&gt;
&lt;br /&gt;
We'll refer to this concept as 'fnpri'.   &lt;br /&gt;
 &lt;br /&gt;
Let's look at a Midgaard town guard, a quick wstat guard func shows:    &lt;br /&gt;
&lt;br /&gt;
dilcopy rescue@function(&amp;quot;guard/captain/mayor&amp;quot;);       &lt;br /&gt;
dilcopy arrest_check@midgaard(&amp;quot;accus_room@midgaard&amp;quot;);       &lt;br /&gt;
dilbegin SFUN_PROTECT_LAWFUL time PULSE_SEC*60 bits SFB_RANTIME        &lt;br /&gt;
dilbegin guard2();       &lt;br /&gt;
&lt;br /&gt;
In this example, the priority belongs to rescue. Therefore the expected behavior is that this guard will prioritize rescuing someone they see being attacked before rushing off to enforce peace or arrest someone. Secondarily, if rescuing is not an active option, the guard will arrest someone before trying to keep the peace. &lt;br /&gt;
If the guard is interrupted in the middle of the execution of guard2(); above, the guard2(); program will simply pause until the higher priority dils are completed.&lt;br /&gt;
In prior DIKU versions, there was no way to determine the dil insertion point on an object and therefore no way to predictably control execution order. &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! vme.h#define !! Integer !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RES || 0 || Don't use&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_SYS || 1 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_DEATH || 2 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BODY || 5 || gaining hits, etc&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_COMBAT || 10 || in-combat moves&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RESCUE || 20 || Rescue someone rather than passing by&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BLOCK || 25 || Blocking things like commands&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_MISSION || 30 || Sent on an important mission&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_CHORES || 40 || Picking up gargabe or eating rabbits. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== The 'Unique' DIL Flag ==&lt;br /&gt;
In DIKU III, we introduce the unique flag in a dil program.   &lt;br /&gt;
dilbegin unique programName();&lt;br /&gt;
&lt;br /&gt;
This unique flag or keyword works to ensure that a unit will never have more than one of that function available on the object at any given time. This is a great way to cut down on the length of new dils because instead of having to do an if(dilfind) every time, you can simply use the unique flag. For example, if you create an entangle spell, and want to have a DIL that can be copied onto char's affected by entanglement, then the unique flag makes sure that even if the spell was cast twice on the same char, there would be only one instance of the entangle DIL running on that char.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=609</id>
		<title>Manual:DIL Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=609"/>
		<updated>2020-07-03T03:17:05Z</updated>

		<summary type="html">&lt;p&gt;Aja: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===== ''Temp list of changes. Will reorganize once I see what all we have.&lt;br /&gt;
'' =====&lt;br /&gt;
&lt;br /&gt;
== Priority ==&lt;br /&gt;
How does a program determine it should run and pause others? &lt;br /&gt;
When performing a wstat &amp;lt;unit&amp;gt; func command on an object, the dil functions will display in order of priority; top to bottom with most important dils at the top. If a dil program is executing the priority command, it will block all programs below it. Many of the stock game functions call on the priority or FN_PRI to function properly.   &lt;br /&gt;
A few examples of dils that should/do take priority:   &lt;br /&gt;
*Death ~ dilbegin recall fnpri(FN_PRI_DEATH) death_seq();   &lt;br /&gt;
*Rescue   &lt;br /&gt;
*Under Arrest ~ (dilbegin fnpri(FN_PRI_RESCUE-1)arrest_check(office:string);   &lt;br /&gt;
&lt;br /&gt;
We'll refer to this concept as 'fnpri'.   &lt;br /&gt;
 &lt;br /&gt;
Let's look at a Midgaard town guard, a quick wstat guard func shows:    &lt;br /&gt;
&lt;br /&gt;
dilcopy rescue@function(&amp;quot;guard/captain/mayor&amp;quot;);   &lt;br /&gt;
dilcopy arrest_check@midgaard(&amp;quot;accus_room@midgaard&amp;quot;);   &lt;br /&gt;
dilbegin SFUN_PROTECT_LAWFUL time PULSE_SEC*60 bits SFB_RANTIME   &lt;br /&gt;
dilbegin guard2();   &lt;br /&gt;
&lt;br /&gt;
In this example, the priority belongs to rescue. Therefore the expected behavior is that this guard will prioritize rescuing someone they see being attacked before rushing off to enforce peace or arrest someone. Secondarily, if rescuing is not an active option, the guard will arrest someone before trying to keep the peace. &lt;br /&gt;
If the guard is interrupted in the middle of the execution of guard2(); above, the guard2(); program will simply pause until the higher priority dils are completed.&lt;br /&gt;
In prior DIKU versions, there was no way to determine the dil insertion point on an object and therefore no way to predictably control execution order. &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! vme.h#define !! Integer !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RES || 0 || Don't use&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_SYS || 1 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_DEATH || 2 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BODY || 5 || gaining hits, etc&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_COMBAT || 10 || in-combat moves&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RESCUE || 20 || Rescue someone rather than passing by&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BLOCK || 25 || Blocking things like commands&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_MISSION || 30 || Sent on an important mission&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_CHORES || 40 || Picking up gargabe or eating rabbits. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== The 'Unique' DIL Flag ==&lt;br /&gt;
In DIKU III, we introduce the unique flag in a dil program.   &lt;br /&gt;
dilbegin unique programName();&lt;br /&gt;
&lt;br /&gt;
This unique flag or keyword works to ensure that a unit will never have more than one of that function available on the object at any given time. This is a great way to cut down on the length of new dils because instead of having to do an if(dilfind) every time, you can simply use the unique flag. For example, if you create an entangle spell, and want to have a DIL that can be copied onto char's affected by entanglement, then the unique flag makes sure that even if the spell was cast twice on the same char, there would be only one instance of the entangle DIL running on that char.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=608</id>
		<title>Manual:DIL Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=608"/>
		<updated>2020-07-03T03:14:20Z</updated>

		<summary type="html">&lt;p&gt;Aja: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===== ''Temp list of changes. Will reorganize once I see what all we have.&lt;br /&gt;
'' =====&lt;br /&gt;
&lt;br /&gt;
== Priority ==&lt;br /&gt;
How does a program determine it should run and pause others? &lt;br /&gt;
When performing a wstat &amp;lt;unit&amp;gt; func command on an object, the dil functions will display in order of priority; top to bottom with most important dils at the top. If a dil program is executing the priority command, it will block all programs below it. Many of the stock game functions call on the priority or FN_PRI to function properly.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A few examples of dils that should/do take priority:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Death ~ dilbegin recall fnpri(FN_PRI_DEATH) death_seq();&amp;lt;br&amp;gt;&lt;br /&gt;
*Rescue&amp;lt;br&amp;gt;&lt;br /&gt;
*Under Arrest ~ (dilbegin fnpri(FN_PRI_RESCUE-1)arrest_check(office:string);&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We'll refer to this concept as 'fnpri'.&lt;br /&gt;
&lt;br /&gt;
Let's look at a Midgaard town guard, a quick wstat guard func shows: &lt;br /&gt;
&lt;br /&gt;
dilcopy rescue@function(&amp;quot;guard/captain/mayor&amp;quot;);&lt;br /&gt;
dilcopy arrest_check@midgaard(&amp;quot;accus_room@midgaard&amp;quot;);&lt;br /&gt;
dilbegin SFUN_PROTECT_LAWFUL time PULSE_SEC*60 bits SFB_RANTIME&lt;br /&gt;
dilbegin guard2();&lt;br /&gt;
&lt;br /&gt;
In this example, the priority belongs to rescue. Therefore the expected behavior is that this guard will prioritize rescuing someone they see being attacked before rushing off to enforce peace or arrest someone. Secondarily, if rescuing is not an active option, the guard will arrest someone before trying to keep the peace. &lt;br /&gt;
If the guard is interrupted in the middle of the execution of guard2(); above, the guard2(); program will simply pause until the higher priority dils are completed.&lt;br /&gt;
In prior DIKU versions, there was no way to determine the dil insertion point on an object and therefore no way to predictably control execution order. &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! vme.h#define !! Integer !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RES || 0 || Don't use&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_SYS || 1 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_DEATH || 2 || functions dealing with death&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BODY || 5 || gaining hits, etc&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_COMBAT || 10 || in-combat moves&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_RESCUE || 20 || Rescue someone rather than passing by&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_BLOCK || 25 || Blocking things like commands&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_MISSION || 30 || Sent on an important mission&lt;br /&gt;
|-&lt;br /&gt;
| FN_PRI_CHORES || 40 || Picking up gargabe or eating rabbits. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== The 'Unique' DIL Flag ==&lt;br /&gt;
In DIKU III, we introduce the unique flag in a dil program.   &lt;br /&gt;
dilbegin unique programName();&lt;br /&gt;
&lt;br /&gt;
This unique flag or keyword works to ensure that a unit will never have more than one of that function available on the object at any given time. This is a great way to cut down on the length of new dils because instead of having to do an if(dilfind) every time, you can simply use the unique flag. For example, if you create an entangle spell, and want to have a DIL that can be copied onto char's affected by entanglement, then the unique flag makes sure that even if the spell was cast twice on the same char, there would be only one instance of the entangle DIL running on that char.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=607</id>
		<title>Manual:DIL Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=607"/>
		<updated>2020-07-03T02:59:36Z</updated>

		<summary type="html">&lt;p&gt;Aja: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Temp list of changes. Will reorganize once I see what all we have.&lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
'''DIL Priority'''&lt;br /&gt;
When performing a wstat &amp;lt;unit&amp;gt; func command on an object, the dil functions will display in order of priority; top to bottom with most important dils at the top. If a dil program is executing the priority command, it will block all programs below it. Many of the stock game functions call on the priority or FN_PRI to function properly.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A few examples: &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Death ~ dilbegin recall fnpri(FN_PRI_DEATH) death_seq();&amp;lt;br&amp;gt;&lt;br /&gt;
*Rescue&amp;lt;br&amp;gt;&lt;br /&gt;
*Under Arrest ~ (dilbegin fnpri(FN_PRI_RESCUE-1)arrest_check(office:string);&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here's an example in a guard: &lt;br /&gt;
The wstat returns: &lt;br /&gt;
dilcopy rescue@function(&amp;quot;guard/captain/mayor&amp;quot;);&lt;br /&gt;
dilcopy arrest_check@midgaard(&amp;quot;accus_room@midgaard&amp;quot;);&lt;br /&gt;
dilbegin SFUN_PROTECT_LAWFUL time PULSE_SEC*60 bits SFB_RANTIME&lt;br /&gt;
dilbegin guard2();&lt;br /&gt;
&lt;br /&gt;
In this example, the priority belongs to rescue. Therefore the expected behavior is that this guard will prioritize rescuing someone they see being attacked before rushing off to enforce peace or arrest someone. Secondarily, if rescuing is not an active option, the guard will arrest someone before trying to keep the peace. &lt;br /&gt;
If the guard is interrupted in the middle of the execution of guard2(); above, the guard2(); program will simply pause until the higher priority dils are completed.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=DikuMUD&amp;diff=606</id>
		<title>DikuMUD</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=DikuMUD&amp;diff=606"/>
		<updated>2020-07-03T02:57:23Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Zone Building */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
=== Welcome ===&lt;br /&gt;
&lt;br /&gt;
You can find guidance on contributing to the wiki at [[Editing the Wiki]].&lt;br /&gt;
&lt;br /&gt;
== The Game ==&lt;br /&gt;
&lt;br /&gt;
*[[Manual:Game_Mechanics|Game Mechanics]]&lt;br /&gt;
&lt;br /&gt;
== Zone Building ==&lt;br /&gt;
*[[Manual:Zone_Manual|Zone Compiler]]&lt;br /&gt;
*[[Manual: Base functions &amp;amp; DIL Updates]]&lt;br /&gt;
*[[Manual:DIL_Manual|Diku MUD Interpreted Language (DIL)]]&lt;br /&gt;
&lt;br /&gt;
*[[Manual:DIL_Examples|DIL Best Practices &amp;amp; Helpful Notes]]&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
*[[Manual:Credits|Credits]]&lt;br /&gt;
== The Engine &amp;amp; Upgrades ==&lt;br /&gt;
*[[Upgrading Tips]]&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=605</id>
		<title>Manual:DIL Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:DIL_Changes&amp;diff=605"/>
		<updated>2020-07-03T02:56:23Z</updated>

		<summary type="html">&lt;p&gt;Aja: Created page with &amp;quot;''Temp list of changes. Will reorganize once I see what all we have. '' '''DIL Priority''' When performing a wstat &amp;lt;unit&amp;gt; func command on an object, the dil functions will dis...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Temp list of changes. Will reorganize once I see what all we have.&lt;br /&gt;
''&lt;br /&gt;
'''DIL Priority'''&lt;br /&gt;
When performing a wstat &amp;lt;unit&amp;gt; func command on an object, the dil functions will display in order of priority; top to bottom with most important dils at the top.&lt;br /&gt;
If a dil program is executing the priority command, it will block all dils below it. &lt;br /&gt;
Many of the stock game dils call on the priority or FN_PRI to function properly.&lt;br /&gt;
A few examples: &lt;br /&gt;
*Death ~ dilbegin recall fnpri(FN_PRI_DEATH) death_seq();&lt;br /&gt;
*Rescue&lt;br /&gt;
*Under Arrest ~ (dilbegin fnpri(FN_PRI_RESCUE-1)arrest_check(office:string);&lt;br /&gt;
In prior versions, a 'blocking' dil such as death_seq@death &lt;br /&gt;
&lt;br /&gt;
Here's an example in a guard: &lt;br /&gt;
The wstat returns: &lt;br /&gt;
dilcopy rescue@function(&amp;quot;guard/captain/mayor&amp;quot;);&lt;br /&gt;
dilcopy arrest_check@midgaard(&amp;quot;accus_room@midgaard&amp;quot;);&lt;br /&gt;
dilbegin SFUN_PROTECT_LAWFUL time PULSE_SEC*60 bits SFB_RANTIME&lt;br /&gt;
dilbegin guard2();&lt;br /&gt;
&lt;br /&gt;
In this example, the priority belongs to rescue. Therefore the expected behavior is that this guard will prioritize rescuing someone they see being attacked before rushing off to enforce peace or arrest someone. Secondarily, if rescuing is not an active option, the guard will arrest someone before trying to keep the peace. &lt;br /&gt;
If the guard is interrupted in the middle of the execution of guard2(); above, the guard2(); program will simply pause until the higher priority dils are completed.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=DikuMUD&amp;diff=604</id>
		<title>DikuMUD</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=DikuMUD&amp;diff=604"/>
		<updated>2020-07-03T02:41:38Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Zone Building */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
=== Welcome ===&lt;br /&gt;
&lt;br /&gt;
You can find guidance on contributing to the wiki at [[Editing the Wiki]].&lt;br /&gt;
&lt;br /&gt;
== The Game ==&lt;br /&gt;
&lt;br /&gt;
*[[Manual:Game_Mechanics|Game Mechanics]]&lt;br /&gt;
&lt;br /&gt;
== Zone Building ==&lt;br /&gt;
*[[Manual:Zone_Manual|Zone Compiler]]&lt;br /&gt;
*[[Manual: DIL Changes]]&lt;br /&gt;
*[[Manual:DIL_Manual|Diku MUD Interpreted Language (DIL)]]&lt;br /&gt;
&lt;br /&gt;
*[[Manual:DIL_Examples|DIL Best Practices &amp;amp; Helpful Notes]]&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
*[[Manual:Credits|Credits]]&lt;br /&gt;
== The Engine &amp;amp; Upgrades ==&lt;br /&gt;
*[[Upgrading Tips]]&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=DikuMUD&amp;diff=603</id>
		<title>DikuMUD</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=DikuMUD&amp;diff=603"/>
		<updated>2020-07-03T02:40:58Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Zone Building */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
=== Welcome ===&lt;br /&gt;
&lt;br /&gt;
You can find guidance on contributing to the wiki at [[Editing the Wiki]].&lt;br /&gt;
&lt;br /&gt;
== The Game ==&lt;br /&gt;
&lt;br /&gt;
*[[Manual:Game_Mechanics|Game Mechanics]]&lt;br /&gt;
&lt;br /&gt;
== Zone Building ==&lt;br /&gt;
*[[Manual:Zone_Manual|Zone Compiler]]&lt;br /&gt;
*[[Manual: DIL Manual|New Features]]&lt;br /&gt;
*[[Manual:DIL_Manual|Diku MUD Interpreted Language (DIL)]]&lt;br /&gt;
&lt;br /&gt;
*[[Manual:DIL_Examples|DIL Best Practices &amp;amp; Helpful Notes]]&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
*[[Manual:Credits|Credits]]&lt;br /&gt;
== The Engine &amp;amp; Upgrades ==&lt;br /&gt;
*[[Upgrading Tips]]&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Upgrading_Tips&amp;diff=602</id>
		<title>Upgrading Tips</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Upgrading_Tips&amp;diff=602"/>
		<updated>2020-07-03T02:35:59Z</updated>

		<summary type="html">&lt;p&gt;Aja: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Notes on Conversion'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
To save weeks of work in conversion, there is a compilable fixhtml.c file in the defcomp/ folder.&lt;br /&gt;
You can use the script zone/removefinal.sh to do the process and it will iterate over all the zones.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Suggested procedures: &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*run all the zones through &lt;br /&gt;
*grep for the ampersand character  &lt;br /&gt;
*Make sure that any instance of ampersand relates to HTML and not to the old codes&lt;br /&gt;
*If you find old codes that were entered incorrectly then edit the original zone, fix the code error, and then run the script again. Keep doing this until you have no more old codes left.&lt;br /&gt;
&lt;br /&gt;
This should result in a set of zones with decent HTML as well as converting ascii art.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Upgrading_Tips&amp;diff=601</id>
		<title>Upgrading Tips</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Upgrading_Tips&amp;diff=601"/>
		<updated>2020-07-03T02:35:32Z</updated>

		<summary type="html">&lt;p&gt;Aja: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Notes on Conversion'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
To save weeks of work in conversion, there is a compilable fixhtml.c file in the defcomp/ folder.&lt;br /&gt;
You can use the script zone/removefinal.sh to do the process and it will iterate over all the zones.&lt;br /&gt;
Suggested procedures: &lt;br /&gt;
&lt;br /&gt;
*run all the zones through &lt;br /&gt;
*grep for the ampersand character  &lt;br /&gt;
*Make sure that any instance of ampersand relates to HTML and not to the old codes&lt;br /&gt;
*If you find old codes that were entered incorrectly then edit the original zone, fix the code error, and then run the script again. Keep doing this until you have no more old codes left.&lt;br /&gt;
&lt;br /&gt;
This should result in a set of zones with decent HTML as well as converting ascii art.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Upgrading_Tips&amp;diff=600</id>
		<title>Upgrading Tips</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Upgrading_Tips&amp;diff=600"/>
		<updated>2020-07-03T02:34:48Z</updated>

		<summary type="html">&lt;p&gt;Aja: Created page with &amp;quot;'''Notes on Conversion''' To save weeks of work in conversion, there is a compilable fixhtml.c file in the defcomp/ folder. You can use the script zone/removefinal.sh to do th...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Notes on Conversion'''&lt;br /&gt;
To save weeks of work in conversion, there is a compilable fixhtml.c file in the defcomp/ folder.&lt;br /&gt;
You can use the script zone/removefinal.sh to do the process and it will iterate over all the zones.&lt;br /&gt;
Suggested procedures: &lt;br /&gt;
&lt;br /&gt;
*run all the zones through &lt;br /&gt;
*grep for the ampersand character  &lt;br /&gt;
*Make sure that any instance of ampersand relates to HTML and not to the old codes&lt;br /&gt;
*If you find old codes that were entered incorrectly then edit the original zone, fix the code error, and then run the script again. Keep doing this until you have no more old codes left.&lt;br /&gt;
&lt;br /&gt;
This should result in a set of zones with decent HTML as well as converting ascii art.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=DikuMUD&amp;diff=599</id>
		<title>DikuMUD</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=DikuMUD&amp;diff=599"/>
		<updated>2020-07-03T02:31:13Z</updated>

		<summary type="html">&lt;p&gt;Aja: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
=== Welcome ===&lt;br /&gt;
&lt;br /&gt;
You can find guidance on contributing to the wiki at [[Editing the Wiki]].&lt;br /&gt;
&lt;br /&gt;
== The Game ==&lt;br /&gt;
&lt;br /&gt;
*[[Manual:Game_Mechanics|Game Mechanics]]&lt;br /&gt;
&lt;br /&gt;
== Zone Building ==&lt;br /&gt;
*[[Manual:Zone_Manual|Zone Compiler]]&lt;br /&gt;
*[[Manual:DIL_Manual|Diku MUD Interpreted Language (DIL)]]&lt;br /&gt;
&lt;br /&gt;
*[[Manual:DIL_Examples|DIL Best Practices &amp;amp; Helpful Notes]]&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
*[[Manual:Credits|Credits]]&lt;br /&gt;
== The Engine &amp;amp; Upgrades ==&lt;br /&gt;
*[[Upgrading Tips]]&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Levels&amp;diff=584</id>
		<title>Manual:Game Mechanics/Levels</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Levels&amp;diff=584"/>
		<updated>2020-06-12T16:24:42Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Practice Points */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Leveling System ==&lt;br /&gt;
This brief document describes the level system.&lt;br /&gt;
In general, 16,650 xp points = 1 level ( a little less until virtual level 50). &lt;br /&gt;
&lt;br /&gt;
=== Players (PCs) ===&lt;br /&gt;
&lt;br /&gt;
Players can be a level 0-255. For most practical purposes the delineation is usually between levels 0-49 and 50+.&lt;br /&gt;
Levels 200 to 255 are reserved for administrators (gods).&lt;br /&gt;
Thus, the gaming system allows players from level 0-199.&lt;br /&gt;
Players also have a virtual level (VLEVEL) which is essentially the amount of XP they've earned over the course of time or times they've typed : level now.&lt;br /&gt;
Current known limitation: at level 65,535, a player's experience counter rolls back over to 0 as does their level. &lt;br /&gt;
The other level available is a guild level - that is the number of levels a character has done in a certain guild and does not reset when a player leaves the guild and rejoins.&lt;br /&gt;
&lt;br /&gt;
=== Non Player Characters (NPCs) ===&lt;br /&gt;
NPCs can be level 0-199. &lt;br /&gt;
Odin the All Father of the Aesir is level 199.&lt;br /&gt;
Winky is level 33. &lt;br /&gt;
Mary, the lumberjack's wife is level 16. &lt;br /&gt;
Satan is level 199. &lt;br /&gt;
Tiamat is level 195. &lt;br /&gt;
An Udgaardian City Guard is level 62. &lt;br /&gt;
&lt;br /&gt;
== Abilities ==&lt;br /&gt;
Both PCs and NPCs have eight abilities STR (strength),DEX (dexterity) ,CHA (charisma) ,BRA (brain) ,MAG (magic) ,DIV (divinity), HPP (hitpoints), CON (constitution).&lt;br /&gt;
Abilities range from 0 - 250.  [Link to or pull in ability section]&lt;br /&gt;
For players the normal max for training abilities is [0..100] but no reason why you couldn't set it higher.&lt;br /&gt;
&lt;br /&gt;
== Practice Points ==&lt;br /&gt;
&lt;br /&gt;
When you gain a new level you'll be awarded points to practice abilities, skills and spells.&lt;br /&gt;
&lt;br /&gt;
For each level you'll be awarded:&lt;br /&gt;
&lt;br /&gt;
  Abilities = 10 * 4 through level 50 ? (2000 ability practice points in total per character lifetime)&lt;br /&gt;
  Skills &amp;amp; Spells = 10 * 8 through unlimited levels. &lt;br /&gt;
&lt;br /&gt;
The 10 is picked as the average cost of an ability or a skill (so it's important that's about the average cost in how the guilds are defined). The 4 is chosen because you have 8 abilities and you should be able to master at least half of your abilities.&lt;br /&gt;
&lt;br /&gt;
Each time you practice a skill, the skill increases in increments of five. &lt;br /&gt;
Each time you practice an ability the ability increases in increments of two.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Number of Times Trained Factor !! 1.5 &lt;br /&gt;
| Average Cost|| 10&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty Factor|| 3&lt;br /&gt;
|-&lt;br /&gt;
| Ability Points/level||40&lt;br /&gt;
|-&lt;br /&gt;
| Skill Points/Level||80 &lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;small&amp;gt;Number of Times Practiced Per Level&amp;lt;/small&amp;gt;|| &amp;lt;strong&amp;gt;1&amp;lt;/strong&amp;gt;||  &amp;lt;strong&amp;gt;2&amp;lt;/strong&amp;gt;||  &amp;lt;strong&amp;gt;3&amp;lt;/strong&amp;gt;||  &amp;lt;strong&amp;gt;4&amp;lt;/strong&amp;gt;|| &amp;lt;strong&amp;gt;5&amp;lt;/strong&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;6&amp;lt;/strong&amp;gt;|| 4|| 6|| 9|| 14|| 21&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;5&amp;lt;/strong&amp;gt;|| 5|| 8|| 12|| 17|| 26&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;4&amp;lt;/strong&amp;gt;|| 6|| 9|| 14|| 21|| 31&lt;br /&gt;
|-&lt;br /&gt;
| || || ||&amp;lt;strong&amp;gt;3&amp;lt;/strong&amp;gt;|| 7|| 11|| 16|| 24|| 36&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;2&amp;lt;/strong&amp;gt;|| 8|| 12|| 18|| 27|| 41&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;1&amp;lt;/strong&amp;gt;|| 9|| 14|| 21|| 31|| 46&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;0&amp;lt;/strong&amp;gt;|| 10|| 15|| 23|| 34|| 51&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-1&amp;lt;/strong&amp;gt;|| 13|| 20|| 30|| 44|| 66&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-2&amp;lt;/strong&amp;gt;|| 16|| 24|| 36|| 54|| 81&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-3&amp;lt;/strong&amp;gt;|| 19|| 29|| 43|| 65|| 97&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-4&amp;lt;/strong&amp;gt;|| 22|| 33|| 50|| 75|| 112&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-5&amp;lt;/strong&amp;gt;|| 25|| 38|| 57|| 85|| 127&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-6&amp;lt;/strong&amp;gt;|| 28|| 42|| 63|| 95|| 142&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-7&amp;lt;/strong&amp;gt;|| 31|| 47 || 70|| 105|| 157&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Hit-points &amp;amp; Regain ===&lt;br /&gt;
&lt;br /&gt;
A PCs hit-points max is (3 * HPP + 20)&lt;br /&gt;
A NPCs hit-points max is (3 * HPP + 10)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
A character regains hitpoints based on CON: (1 + hit max(CON) / 10)&lt;br /&gt;
If a character is fighting there is no hitpoint regain. Resting provides an 50% additional regain, while sitting is a 25% additional regain.&lt;br /&gt;
If a character is in a unit that has the UNIT_FL_SACRED set, the regain is furthermore doubled. &lt;br /&gt;
If a player is thirsty or hungry the regain is reduced.&lt;br /&gt;
When a mortal character dies, their hitpoints are set to -1. &lt;br /&gt;
&lt;br /&gt;
=== Mana ===&lt;br /&gt;
The equation for max mana is: 100 + (BRA + CHA)/2 but never less than 200.&lt;br /&gt;
For a player, the max is further modified by the player's age compared to lifespan.&lt;br /&gt;
&lt;br /&gt;
The gain is 1 + MAX/10&lt;br /&gt;
Plus (CHA - the larger of(MAG, DIV) / 3)  [This is strange and should be reviewed]&lt;br /&gt;
&lt;br /&gt;
If a character is fighting there is no mana regain. Resting 50% additional regain, sitting 25% additional regain.&lt;br /&gt;
If a character is in a unit that has the UNIT_FL_SACRED set, the regain is furthermore doubled. &lt;br /&gt;
If a player is thirsty or hungry the regain is reduced.&lt;br /&gt;
&lt;br /&gt;
=== Endurance ===&lt;br /&gt;
Max endurance is a char's CON * 2 + 150.&lt;br /&gt;
For a player, the endurance is further modified by the player's age compared to lifespan.&lt;br /&gt;
The endurance regain equation is : 1 + endurance-max/10.&lt;br /&gt;
Regain is zero when fighting, an additional 50% if resting or sleeping, an additional 25% if sitting.&lt;br /&gt;
Furthermore doubled if in a unit with UNIT_FL_SACRED.&lt;br /&gt;
If a player is thirsty or hungry the regain is reduced.&lt;br /&gt;
&lt;br /&gt;
== Skills ==&lt;br /&gt;
PCs have a full skill tree&lt;br /&gt;
NPCs don't have skills.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Levels&amp;diff=583</id>
		<title>Manual:Game Mechanics/Levels</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Levels&amp;diff=583"/>
		<updated>2020-06-12T16:23:19Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Practice Points */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Leveling System ==&lt;br /&gt;
This brief document describes the level system.&lt;br /&gt;
In general, 16,650 xp points = 1 level ( a little less until virtual level 50). &lt;br /&gt;
&lt;br /&gt;
=== Players (PCs) ===&lt;br /&gt;
&lt;br /&gt;
Players can be a level 0-255. For most practical purposes the delineation is usually between levels 0-49 and 50+.&lt;br /&gt;
Levels 200 to 255 are reserved for administrators (gods).&lt;br /&gt;
Thus, the gaming system allows players from level 0-199.&lt;br /&gt;
Players also have a virtual level (VLEVEL) which is essentially the amount of XP they've earned over the course of time or times they've typed : level now.&lt;br /&gt;
Current known limitation: at level 65,535, a player's experience counter rolls back over to 0 as does their level. &lt;br /&gt;
The other level available is a guild level - that is the number of levels a character has done in a certain guild and does not reset when a player leaves the guild and rejoins.&lt;br /&gt;
&lt;br /&gt;
=== Non Player Characters (NPCs) ===&lt;br /&gt;
NPCs can be level 0-199. &lt;br /&gt;
Odin the All Father of the Aesir is level 199.&lt;br /&gt;
Winky is level 33. &lt;br /&gt;
Mary, the lumberjack's wife is level 16. &lt;br /&gt;
Satan is level 199. &lt;br /&gt;
Tiamat is level 195. &lt;br /&gt;
An Udgaardian City Guard is level 62. &lt;br /&gt;
&lt;br /&gt;
== Abilities ==&lt;br /&gt;
Both PCs and NPCs have eight abilities STR (strength),DEX (dexterity) ,CHA (charisma) ,BRA (brain) ,MAG (magic) ,DIV (divinity), HPP (hitpoints), CON (constitution).&lt;br /&gt;
Abilities range from 0 - 250.  [Link to or pull in ability section]&lt;br /&gt;
For players the normal max for training abilities is [0..100] but no reason why you couldn't set it higher.&lt;br /&gt;
&lt;br /&gt;
== Practice Points ==&lt;br /&gt;
&lt;br /&gt;
When you gain a new level you'll be awarded points to practice abilities, skills and spells.&lt;br /&gt;
&lt;br /&gt;
For each level you'll be awarded:&lt;br /&gt;
&lt;br /&gt;
  Abilities = 10 * 4 through level 50 ? (2000 ability practice points in total per character lifetime)&lt;br /&gt;
  Skills &amp;amp; Spells = 10 * 8 through unlimited levels. &lt;br /&gt;
&lt;br /&gt;
The 10 is picked as the average cost of an ability or a skill (so it's important that's about the average cost in how the guilds are defined). The 4 is chosen because you have 8 abilities and you should be able to master at least half of your abilities.&lt;br /&gt;
&lt;br /&gt;
Each time you practice a skill, the skill increases in increments of five. &lt;br /&gt;
Each time you practice an ability the ability increases in increments of two.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Number of Times Trained Factor !! 1.5 &lt;br /&gt;
| Average Cost|| 10&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty Factor|| 3&lt;br /&gt;
|-&lt;br /&gt;
| Ability Points/level||40&lt;br /&gt;
|-&lt;br /&gt;
| Skill Points/Level||80 || || ||&amp;lt;small&amp;gt;Number of Times Practiced Per Level&amp;lt;/small&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || || &amp;lt;strong&amp;gt;1&amp;lt;/strong&amp;gt;||  &amp;lt;strong&amp;gt;2&amp;lt;/strong&amp;gt;||  &amp;lt;strong&amp;gt;3&amp;lt;/strong&amp;gt;||  &amp;lt;strong&amp;gt;4&amp;lt;/strong&amp;gt;|| &amp;lt;strong&amp;gt;5&amp;lt;/strong&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;6&amp;lt;/strong&amp;gt;|| 4|| 6|| 9|| 14|| 21&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;5&amp;lt;/strong&amp;gt;|| 5|| 8|| 12|| 17|| 26&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;4&amp;lt;/strong&amp;gt;|| 6|| 9|| 14|| 21|| 31&lt;br /&gt;
|-&lt;br /&gt;
| || || ||&amp;lt;strong&amp;gt;3&amp;lt;/strong&amp;gt;|| 7|| 11|| 16|| 24|| 36&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;2&amp;lt;/strong&amp;gt;|| 8|| 12|| 18|| 27|| 41&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;1&amp;lt;/strong&amp;gt;|| 9|| 14|| 21|| 31|| 46&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;0&amp;lt;/strong&amp;gt;|| 10|| 15|| 23|| 34|| 51&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-1&amp;lt;/strong&amp;gt;|| 13|| 20|| 30|| 44|| 66&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-2&amp;lt;/strong&amp;gt;|| 16|| 24|| 36|| 54|| 81&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-3&amp;lt;/strong&amp;gt;|| 19|| 29|| 43|| 65|| 97&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-4&amp;lt;/strong&amp;gt;|| 22|| 33|| 50|| 75|| 112&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-5&amp;lt;/strong&amp;gt;|| 25|| 38|| 57|| 85|| 127&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-6&amp;lt;/strong&amp;gt;|| 28|| 42|| 63|| 95|| 142&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-7&amp;lt;/strong&amp;gt;|| 31|| 47 || 70|| 105|| 157&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Hit-points &amp;amp; Regain ===&lt;br /&gt;
&lt;br /&gt;
A PCs hit-points max is (3 * HPP + 20)&lt;br /&gt;
A NPCs hit-points max is (3 * HPP + 10)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
A character regains hitpoints based on CON: (1 + hit max(CON) / 10)&lt;br /&gt;
If a character is fighting there is no hitpoint regain. Resting provides an 50% additional regain, while sitting is a 25% additional regain.&lt;br /&gt;
If a character is in a unit that has the UNIT_FL_SACRED set, the regain is furthermore doubled. &lt;br /&gt;
If a player is thirsty or hungry the regain is reduced.&lt;br /&gt;
When a mortal character dies, their hitpoints are set to -1. &lt;br /&gt;
&lt;br /&gt;
=== Mana ===&lt;br /&gt;
The equation for max mana is: 100 + (BRA + CHA)/2 but never less than 200.&lt;br /&gt;
For a player, the max is further modified by the player's age compared to lifespan.&lt;br /&gt;
&lt;br /&gt;
The gain is 1 + MAX/10&lt;br /&gt;
Plus (CHA - the larger of(MAG, DIV) / 3)  [This is strange and should be reviewed]&lt;br /&gt;
&lt;br /&gt;
If a character is fighting there is no mana regain. Resting 50% additional regain, sitting 25% additional regain.&lt;br /&gt;
If a character is in a unit that has the UNIT_FL_SACRED set, the regain is furthermore doubled. &lt;br /&gt;
If a player is thirsty or hungry the regain is reduced.&lt;br /&gt;
&lt;br /&gt;
=== Endurance ===&lt;br /&gt;
Max endurance is a char's CON * 2 + 150.&lt;br /&gt;
For a player, the endurance is further modified by the player's age compared to lifespan.&lt;br /&gt;
The endurance regain equation is : 1 + endurance-max/10.&lt;br /&gt;
Regain is zero when fighting, an additional 50% if resting or sleeping, an additional 25% if sitting.&lt;br /&gt;
Furthermore doubled if in a unit with UNIT_FL_SACRED.&lt;br /&gt;
If a player is thirsty or hungry the regain is reduced.&lt;br /&gt;
&lt;br /&gt;
== Skills ==&lt;br /&gt;
PCs have a full skill tree&lt;br /&gt;
NPCs don't have skills.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Levels&amp;diff=582</id>
		<title>Manual:Game Mechanics/Levels</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Levels&amp;diff=582"/>
		<updated>2020-06-12T16:22:48Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Practice Points */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Leveling System ==&lt;br /&gt;
This brief document describes the level system.&lt;br /&gt;
In general, 16,650 xp points = 1 level ( a little less until virtual level 50). &lt;br /&gt;
&lt;br /&gt;
=== Players (PCs) ===&lt;br /&gt;
&lt;br /&gt;
Players can be a level 0-255. For most practical purposes the delineation is usually between levels 0-49 and 50+.&lt;br /&gt;
Levels 200 to 255 are reserved for administrators (gods).&lt;br /&gt;
Thus, the gaming system allows players from level 0-199.&lt;br /&gt;
Players also have a virtual level (VLEVEL) which is essentially the amount of XP they've earned over the course of time or times they've typed : level now.&lt;br /&gt;
Current known limitation: at level 65,535, a player's experience counter rolls back over to 0 as does their level. &lt;br /&gt;
The other level available is a guild level - that is the number of levels a character has done in a certain guild and does not reset when a player leaves the guild and rejoins.&lt;br /&gt;
&lt;br /&gt;
=== Non Player Characters (NPCs) ===&lt;br /&gt;
NPCs can be level 0-199. &lt;br /&gt;
Odin the All Father of the Aesir is level 199.&lt;br /&gt;
Winky is level 33. &lt;br /&gt;
Mary, the lumberjack's wife is level 16. &lt;br /&gt;
Satan is level 199. &lt;br /&gt;
Tiamat is level 195. &lt;br /&gt;
An Udgaardian City Guard is level 62. &lt;br /&gt;
&lt;br /&gt;
== Abilities ==&lt;br /&gt;
Both PCs and NPCs have eight abilities STR (strength),DEX (dexterity) ,CHA (charisma) ,BRA (brain) ,MAG (magic) ,DIV (divinity), HPP (hitpoints), CON (constitution).&lt;br /&gt;
Abilities range from 0 - 250.  [Link to or pull in ability section]&lt;br /&gt;
For players the normal max for training abilities is [0..100] but no reason why you couldn't set it higher.&lt;br /&gt;
&lt;br /&gt;
== Practice Points ==&lt;br /&gt;
&lt;br /&gt;
When you gain a new level you'll be awarded points to practice abilities, skills and spells.&lt;br /&gt;
&lt;br /&gt;
For each level you'll be awarded:&lt;br /&gt;
&lt;br /&gt;
  Abilities = 10 * 4 through level 50 ? (2000 ability practice points in total per character lifetime)&lt;br /&gt;
  Skills &amp;amp; Spells = 10 * 8 through unlimited levels. &lt;br /&gt;
&lt;br /&gt;
The 10 is picked as the average cost of an ability or a skill (so it's important that's about the average cost in how the guilds are defined). The 4 is chosen because you have 8 abilities and you should be able to master at least half of your abilities.&lt;br /&gt;
&lt;br /&gt;
Each time you practice a skill, the skill increases in increments of five. &lt;br /&gt;
Each time you practice an ability the ability increases in increments of two.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Number of Times Trained Factor !! 1.5 !!  !! Header text&lt;br /&gt;
|-&lt;br /&gt;
| Average Cost|| 10|| &lt;br /&gt;
|-&lt;br /&gt;
| Difficulty Factor|| 3|| &lt;br /&gt;
|-&lt;br /&gt;
| Ability Points/level||40 ||&lt;br /&gt;
|-&lt;br /&gt;
| Skill Points/Level||80 || || ||&amp;lt;small&amp;gt;Number of Times Practiced Per Level&amp;lt;/small&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || || &amp;lt;strong&amp;gt;1&amp;lt;/strong&amp;gt;||  &amp;lt;strong&amp;gt;2&amp;lt;/strong&amp;gt;||  &amp;lt;strong&amp;gt;3&amp;lt;/strong&amp;gt;||  &amp;lt;strong&amp;gt;4&amp;lt;/strong&amp;gt;|| &amp;lt;strong&amp;gt;5&amp;lt;/strong&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;6&amp;lt;/strong&amp;gt;|| 4|| 6|| 9|| 14|| 21&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;5&amp;lt;/strong&amp;gt;|| 5|| 8|| 12|| 17|| 26&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;4&amp;lt;/strong&amp;gt;|| 6|| 9|| 14|| 21|| 31&lt;br /&gt;
|-&lt;br /&gt;
| || || ||&amp;lt;strong&amp;gt;3&amp;lt;/strong&amp;gt;|| 7|| 11|| 16|| 24|| 36&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;2&amp;lt;/strong&amp;gt;|| 8|| 12|| 18|| 27|| 41&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;1&amp;lt;/strong&amp;gt;|| 9|| 14|| 21|| 31|| 46&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;0&amp;lt;/strong&amp;gt;|| 10|| 15|| 23|| 34|| 51&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-1&amp;lt;/strong&amp;gt;|| 13|| 20|| 30|| 44|| 66&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-2&amp;lt;/strong&amp;gt;|| 16|| 24|| 36|| 54|| 81&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-3&amp;lt;/strong&amp;gt;|| 19|| 29|| 43|| 65|| 97&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-4&amp;lt;/strong&amp;gt;|| 22|| 33|| 50|| 75|| 112&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-5&amp;lt;/strong&amp;gt;|| 25|| 38|| 57|| 85|| 127&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-6&amp;lt;/strong&amp;gt;|| 28|| 42|| 63|| 95|| 142&lt;br /&gt;
|-&lt;br /&gt;
| || || || &amp;lt;strong&amp;gt;-7&amp;lt;/strong&amp;gt;|| 31|| 47 || 70|| 105|| 157&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Hit-points &amp;amp; Regain ===&lt;br /&gt;
&lt;br /&gt;
A PCs hit-points max is (3 * HPP + 20)&lt;br /&gt;
A NPCs hit-points max is (3 * HPP + 10)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
A character regains hitpoints based on CON: (1 + hit max(CON) / 10)&lt;br /&gt;
If a character is fighting there is no hitpoint regain. Resting provides an 50% additional regain, while sitting is a 25% additional regain.&lt;br /&gt;
If a character is in a unit that has the UNIT_FL_SACRED set, the regain is furthermore doubled. &lt;br /&gt;
If a player is thirsty or hungry the regain is reduced.&lt;br /&gt;
When a mortal character dies, their hitpoints are set to -1. &lt;br /&gt;
&lt;br /&gt;
=== Mana ===&lt;br /&gt;
The equation for max mana is: 100 + (BRA + CHA)/2 but never less than 200.&lt;br /&gt;
For a player, the max is further modified by the player's age compared to lifespan.&lt;br /&gt;
&lt;br /&gt;
The gain is 1 + MAX/10&lt;br /&gt;
Plus (CHA - the larger of(MAG, DIV) / 3)  [This is strange and should be reviewed]&lt;br /&gt;
&lt;br /&gt;
If a character is fighting there is no mana regain. Resting 50% additional regain, sitting 25% additional regain.&lt;br /&gt;
If a character is in a unit that has the UNIT_FL_SACRED set, the regain is furthermore doubled. &lt;br /&gt;
If a player is thirsty or hungry the regain is reduced.&lt;br /&gt;
&lt;br /&gt;
=== Endurance ===&lt;br /&gt;
Max endurance is a char's CON * 2 + 150.&lt;br /&gt;
For a player, the endurance is further modified by the player's age compared to lifespan.&lt;br /&gt;
The endurance regain equation is : 1 + endurance-max/10.&lt;br /&gt;
Regain is zero when fighting, an additional 50% if resting or sleeping, an additional 25% if sitting.&lt;br /&gt;
Furthermore doubled if in a unit with UNIT_FL_SACRED.&lt;br /&gt;
If a player is thirsty or hungry the regain is reduced.&lt;br /&gt;
&lt;br /&gt;
== Skills ==&lt;br /&gt;
PCs have a full skill tree&lt;br /&gt;
NPCs don't have skills.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Skills&amp;diff=567</id>
		<title>Manual:Game Mechanics/Skills</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Skills&amp;diff=567"/>
		<updated>2020-06-08T03:12:59Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Swim */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Skills ==&lt;br /&gt;
It seems skill (spells et. al) checks got kind of lost in the mists of time. Here is the general idea:&lt;br /&gt;
&lt;br /&gt;
Skills are all in [0..250]. Generally [0..100] for players.&lt;br /&gt;
&lt;br /&gt;
Players have a complete skill tree. NPCs have no skills, instead either an ability or their level is used based on the skill. As a rule of thumb a player's skill should roughly equal the player's level * 2 [??]. So a level 20 player should generally have a 40 [??] swim skill (some more, some less). An NPC would generally have a skill of 1 per level, often an ability is used in place of a skill.&lt;br /&gt;
&lt;br /&gt;
Skill checks are rolled open-ended 1d100.&lt;br /&gt;
&lt;br /&gt;
A general purpose table of the meaning of a skill level:&lt;br /&gt;
&lt;br /&gt;
   0: You're completely incompetent. No idea how to perform this skill. You might even panic.&lt;br /&gt;
  40: An average person's skill (real world), for example an average swimmer&lt;br /&gt;
 100: is the best (real world) human skill. &lt;br /&gt;
 200: is beyond what a human being could normally achieve, we're perhaps in the divine skill territory here.&lt;br /&gt;
&lt;br /&gt;
Note that a char with a skill of N will fail half the time when the difficulty is N.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Swim ===&lt;br /&gt;
Let's use swim as an example. A characters proficiency in swim in 0..100. The table below is a rough translation of a swimming skill.&lt;br /&gt;
&lt;br /&gt;
   0: You'll risk drowning in shallow water even if your feet can touch the bottom. &lt;br /&gt;
  40: An average (real world) swimmer&lt;br /&gt;
 100: is the best human swimmer in the (real) world. &lt;br /&gt;
 200: is the most divine swimmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now imaging having swim in average conditions. If your skill is average (50) then the skill check &lt;br /&gt;
is to see the result of (1d100 + skill) - 100. If the result is above 0 the swim was a success.&lt;br /&gt;
Therefore if your skill is 0 you always fail an average swim roll is &amp;gt; 100. If your skill is 75&lt;br /&gt;
for an average swim, you succeed 75% of the time. If your skill is 100 then you always&lt;br /&gt;
succeed. Remember that the open-ended roll can of course always offset even a sure success or&lt;br /&gt;
fail.&lt;br /&gt;
&lt;br /&gt;
A room's swim difficulty could be:&lt;br /&gt;
&lt;br /&gt;
    0: Super easy. &lt;br /&gt;
   30: Pretty easy for most characters, still rather challenging for newbies.&lt;br /&gt;
   70: Kinda hard - great for rapids in high-level areas.&lt;br /&gt;
  100: A super difficult swim. It would mean even the (real world's) best swimmer would fail half the time under these circumstances. Players with 200 skill succeed always (except OE).&lt;br /&gt;
  150: The world's best swimmer would probably fail a swim direction most of the time.&lt;br /&gt;
&lt;br /&gt;
A character that fails a skill check might be swallowing water if the fail is [0..-20]. And might&lt;br /&gt;
take one hp damage per 10 failure if the result is worse than -20.&lt;br /&gt;
&lt;br /&gt;
The function skillcheck() captures precisely this setup.&lt;br /&gt;
&lt;br /&gt;
As above, the swim skill works much the same way. &lt;br /&gt;
The player commands are swim on/off or swim &amp;lt;direction&amp;gt;. &lt;br /&gt;
The room should have the &amp;lt;code&amp;gt; SECT_WATER_SAIL flag &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Notice in the example below, the difficulty for swimming east is 0. Because it's a very calm river in the light part of the forest. Swimming west is up-steam, but also into a dark cold part of the river. So it's set to 20. Swimming south to the toy zone is set to 5 because I figured you'd have to swim across the river.&lt;br /&gt;
In the following example notice how to denote a calm river, where the difficulty is 0. It's not a strong current and the area overall is a beginner's area. Swimming west from here is upstream so&lt;br /&gt;
you notice that the difficulty is higher whereas swimming south is kind of crossing the river and not as difficult. &lt;br /&gt;
&lt;br /&gt;
There is also an optional dil for rooms with currents. It will move anything in the room downstream after time and replaces the legacy &amp;lt;code&amp;gt;force_move&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;lightriver&lt;br /&gt;
title &amp;quot;On the River in Haon-Dor&amp;quot;&lt;br /&gt;
descr &amp;quot;The river slowly flows east towards the village of Udgaard. North you see a landing spot in the light part of the forest.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
movement SECT_WATER_SAIL&lt;br /&gt;
&lt;br /&gt;
north to rn_6018;&lt;br /&gt;
west  to darkriver2    difficulty 20 descr &amp;quot;Much further upstream the forest becomes more dense.&amp;quot;;&lt;br /&gt;
east  to river@udgaard difficulty 0  descr &amp;quot;The river continues to the east.&amp;quot;;&lt;br /&gt;
south to river1@toy    difficulty 5  descr &amp;quot;The river forks and bends south.&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
dilcopy watercurrent@basemove(DIR_EAST,{&lt;br /&gt;
          &amp;quot;The river current gently takes you east.&amp;quot;, &lt;br /&gt;
          &amp;quot;$1n gently flows away to the east.&amp;quot;, &lt;br /&gt;
          &amp;quot;You gently flow a little further eastwards.&amp;quot;, &lt;br /&gt;
          &amp;quot;$1n flows in from the west.&amp;quot;},&lt;br /&gt;
           5);&lt;br /&gt;
end&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flee ===&lt;br /&gt;
&lt;br /&gt;
For a skill like flee, the difficulty could be an expression of the character's and opponent levels compared.&lt;br /&gt;
&lt;br /&gt;
  +5: For each level better than the opponent&lt;br /&gt;
   0: Same level, no modifier&lt;br /&gt;
  -5; For each level worse than the opponent&lt;br /&gt;
&lt;br /&gt;
So a level 5 PC fighting a level 1 rabbit gets a +40 bonus to flee. Since an NPC does not have skills, generally its level can be used as its skill. So a level 50 NPC&lt;br /&gt;
has a flee skill of 50.&lt;br /&gt;
&lt;br /&gt;
=== Search ===&lt;br /&gt;
&lt;br /&gt;
On any hidden item is a 'difficulty' rating on a scale of 0-100. It could technically go from 0-250 but that's just crazy.&lt;br /&gt;
It is denoted in the zone file as below with X being a number between 0 and 100:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;open {EX_OPEN, EX_CLOSE, EX_HIDDEN} difficulty X; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Searching depends on the searcher's skill level in searching as well as their brain ability. Each search attempt costs 20 endurance so that the player knows something is there. &lt;br /&gt;
The difficulty you choose for hidden exits is also the same difficulty the door would need to be if the lock were pick-able as there cannot be more than one difficulty per exit.&lt;br /&gt;
If a player's skill is average (50) then the skill check is to see the result of &amp;lt;code&amp;gt;(1d100 + skill) - 100 &amp;lt;/code&amp;gt;. Another way to note it would be &amp;lt;code&amp;gt;rnd(1,100) + skill - 100&amp;lt;/code&amp;gt; If the result is above 0 the search will be successful. Therefore if your skill is 0 you always fail an average swim roll is &amp;gt; 100. If your skill is 75 for an average swim, you succeed 75% of the time. If your skill is 100 then you always succeed. Remember that the open-ended roll can of course always offset even a sure success or fail.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Skills&amp;diff=566</id>
		<title>Manual:Game Mechanics/Skills</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Skills&amp;diff=566"/>
		<updated>2020-06-08T03:12:24Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Swim */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Skills ==&lt;br /&gt;
It seems skill (spells et. al) checks got kind of lost in the mists of time. Here is the general idea:&lt;br /&gt;
&lt;br /&gt;
Skills are all in [0..250]. Generally [0..100] for players.&lt;br /&gt;
&lt;br /&gt;
Players have a complete skill tree. NPCs have no skills, instead either an ability or their level is used based on the skill. As a rule of thumb a player's skill should roughly equal the player's level * 2 [??]. So a level 20 player should generally have a 40 [??] swim skill (some more, some less). An NPC would generally have a skill of 1 per level, often an ability is used in place of a skill.&lt;br /&gt;
&lt;br /&gt;
Skill checks are rolled open-ended 1d100.&lt;br /&gt;
&lt;br /&gt;
A general purpose table of the meaning of a skill level:&lt;br /&gt;
&lt;br /&gt;
   0: You're completely incompetent. No idea how to perform this skill. You might even panic.&lt;br /&gt;
  40: An average person's skill (real world), for example an average swimmer&lt;br /&gt;
 100: is the best (real world) human skill. &lt;br /&gt;
 200: is beyond what a human being could normally achieve, we're perhaps in the divine skill territory here.&lt;br /&gt;
&lt;br /&gt;
Note that a char with a skill of N will fail half the time when the difficulty is N.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Swim ===&lt;br /&gt;
Let's use swim as an example. A characters proficiency in swim in 0..100. The table below is a rough translation of a swimming skill.&lt;br /&gt;
&lt;br /&gt;
   0: You'll risk drowning in shallow water even if your feet can touch the bottom. &lt;br /&gt;
  40: An average (real world) swimmer&lt;br /&gt;
 100: is the best human swimmer in the (real) world. &lt;br /&gt;
 200: is the most divine swimmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now imaging having swim in average conditions. If your skill is average (50) then the skill check &lt;br /&gt;
is to see the result of (1d100 + skill) - 100. If the result is above 0 the swim was a success.&lt;br /&gt;
Therefore if your skill is 0 you always fail an average swim roll is &amp;gt; 100. If your skill is 75&lt;br /&gt;
for an average swim, you succeed 75% of the time. If your skill is 100 then you always&lt;br /&gt;
succeed. Remember that the open-ended roll can of course always offset even a sure success or&lt;br /&gt;
fail.&lt;br /&gt;
&lt;br /&gt;
A room's swim difficulty could be:&lt;br /&gt;
&lt;br /&gt;
    0: Super easy. &lt;br /&gt;
   30: Pretty easy for most characters, still rather challenging for newbies.&lt;br /&gt;
   70: Kinda hard - great for rapids in high-level areas.&lt;br /&gt;
  100: A super difficult swim. It would mean even the (real world's) best swimmer would fail half the time under these circumstances. Players with 200 skill succeed always (except OE).&lt;br /&gt;
  150: The world's best swimmer would &lt;br /&gt;
&lt;br /&gt;
A character that fails a skill check might be swallowing water if the fail is [0..-20]. And might&lt;br /&gt;
take one hp damage per 10 failure if the result is worse than -20.&lt;br /&gt;
&lt;br /&gt;
The function skillcheck() captures precisely this setup.&lt;br /&gt;
&lt;br /&gt;
As above, the swim skill works much the same way. &lt;br /&gt;
The player commands are swim on/off or swim &amp;lt;direction&amp;gt;. &lt;br /&gt;
The room should have the &amp;lt;code&amp;gt; SECT_WATER_SAIL flag &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Notice in the example below, the difficulty for swimming east is 0. Because it's a very calm river in the light part of the forest. Swimming west is up-steam, but also into a dark cold part of the river. So it's set to 20. Swimming south to the toy zone is set to 5 because I figured you'd have to swim across the river.&lt;br /&gt;
In the following example notice how to denote a calm river, where the difficulty is 0. It's not a strong current and the area overall is a beginner's area. Swimming west from here is upstream so&lt;br /&gt;
you notice that the difficulty is higher whereas swimming south is kind of crossing the river and not as difficult. &lt;br /&gt;
&lt;br /&gt;
There is also an optional dil for rooms with currents. It will move anything in the room downstream after time and replaces the legacy &amp;lt;code&amp;gt;force_move&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;lightriver&lt;br /&gt;
title &amp;quot;On the River in Haon-Dor&amp;quot;&lt;br /&gt;
descr &amp;quot;The river slowly flows east towards the village of Udgaard. North you see a landing spot in the light part of the forest.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
movement SECT_WATER_SAIL&lt;br /&gt;
&lt;br /&gt;
north to rn_6018;&lt;br /&gt;
west  to darkriver2    difficulty 20 descr &amp;quot;Much further upstream the forest becomes more dense.&amp;quot;;&lt;br /&gt;
east  to river@udgaard difficulty 0  descr &amp;quot;The river continues to the east.&amp;quot;;&lt;br /&gt;
south to river1@toy    difficulty 5  descr &amp;quot;The river forks and bends south.&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
dilcopy watercurrent@basemove(DIR_EAST,{&lt;br /&gt;
          &amp;quot;The river current gently takes you east.&amp;quot;, &lt;br /&gt;
          &amp;quot;$1n gently flows away to the east.&amp;quot;, &lt;br /&gt;
          &amp;quot;You gently flow a little further eastwards.&amp;quot;, &lt;br /&gt;
          &amp;quot;$1n flows in from the west.&amp;quot;},&lt;br /&gt;
           5);&lt;br /&gt;
end&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flee ===&lt;br /&gt;
&lt;br /&gt;
For a skill like flee, the difficulty could be an expression of the character's and opponent levels compared.&lt;br /&gt;
&lt;br /&gt;
  +5: For each level better than the opponent&lt;br /&gt;
   0: Same level, no modifier&lt;br /&gt;
  -5; For each level worse than the opponent&lt;br /&gt;
&lt;br /&gt;
So a level 5 PC fighting a level 1 rabbit gets a +40 bonus to flee. Since an NPC does not have skills, generally its level can be used as its skill. So a level 50 NPC&lt;br /&gt;
has a flee skill of 50.&lt;br /&gt;
&lt;br /&gt;
=== Search ===&lt;br /&gt;
&lt;br /&gt;
On any hidden item is a 'difficulty' rating on a scale of 0-100. It could technically go from 0-250 but that's just crazy.&lt;br /&gt;
It is denoted in the zone file as below with X being a number between 0 and 100:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;open {EX_OPEN, EX_CLOSE, EX_HIDDEN} difficulty X; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Searching depends on the searcher's skill level in searching as well as their brain ability. Each search attempt costs 20 endurance so that the player knows something is there. &lt;br /&gt;
The difficulty you choose for hidden exits is also the same difficulty the door would need to be if the lock were pick-able as there cannot be more than one difficulty per exit.&lt;br /&gt;
If a player's skill is average (50) then the skill check is to see the result of &amp;lt;code&amp;gt;(1d100 + skill) - 100 &amp;lt;/code&amp;gt;. Another way to note it would be &amp;lt;code&amp;gt;rnd(1,100) + skill - 100&amp;lt;/code&amp;gt; If the result is above 0 the search will be successful. Therefore if your skill is 0 you always fail an average swim roll is &amp;gt; 100. If your skill is 75 for an average swim, you succeed 75% of the time. If your skill is 100 then you always succeed. Remember that the open-ended roll can of course always offset even a sure success or fail.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Skills&amp;diff=565</id>
		<title>Manual:Game Mechanics/Skills</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Skills&amp;diff=565"/>
		<updated>2020-06-08T03:12:02Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Swim */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Skills ==&lt;br /&gt;
It seems skill (spells et. al) checks got kind of lost in the mists of time. Here is the general idea:&lt;br /&gt;
&lt;br /&gt;
Skills are all in [0..250]. Generally [0..100] for players.&lt;br /&gt;
&lt;br /&gt;
Players have a complete skill tree. NPCs have no skills, instead either an ability or their level is used based on the skill. As a rule of thumb a player's skill should roughly equal the player's level * 2 [??]. So a level 20 player should generally have a 40 [??] swim skill (some more, some less). An NPC would generally have a skill of 1 per level, often an ability is used in place of a skill.&lt;br /&gt;
&lt;br /&gt;
Skill checks are rolled open-ended 1d100.&lt;br /&gt;
&lt;br /&gt;
A general purpose table of the meaning of a skill level:&lt;br /&gt;
&lt;br /&gt;
   0: You're completely incompetent. No idea how to perform this skill. You might even panic.&lt;br /&gt;
  40: An average person's skill (real world), for example an average swimmer&lt;br /&gt;
 100: is the best (real world) human skill. &lt;br /&gt;
 200: is beyond what a human being could normally achieve, we're perhaps in the divine skill territory here.&lt;br /&gt;
&lt;br /&gt;
Note that a char with a skill of N will fail half the time when the difficulty is N.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Swim ===&lt;br /&gt;
Let's use swim as an example. A characters proficiency in swim in 0..100. The table below is a rough translation of a swimming skill.&lt;br /&gt;
&lt;br /&gt;
   0: You'll risk drowning in shallow water even if your feet can touch the bottom. &lt;br /&gt;
  40: An average (real world) swimmer&lt;br /&gt;
 100: is the best human swimmer in the (real) world. &lt;br /&gt;
 200: is the most divine swimmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now imaging having swim in average conditions. If your skill is average (50) then the skill check &lt;br /&gt;
is to see the result of (1d100 + skill) - 100. If the result is above 0 the swim was a success.&lt;br /&gt;
Therefore if your skill is 0 you always fail an average swim roll is &amp;gt; 100. If your skill is 75&lt;br /&gt;
for an average swim, you succeed 75% of the time. If your skill is 100 then you always&lt;br /&gt;
succeed. Remember that the open-ended roll can of course always offset even a sure success or&lt;br /&gt;
fail.&lt;br /&gt;
&lt;br /&gt;
A room's swim difficulty could be:&lt;br /&gt;
&lt;br /&gt;
    0: Super easy. &lt;br /&gt;
   30: Pretty easy for most characters, still rather challenging for newbies.&lt;br /&gt;
   70: Kinda hard - great for rapids in high-level areas.&lt;br /&gt;
  100 A super difficult swim. It would mean even the (real world's) best swimmer would fail half the time under these circumstances. Players with 200 skill succeed always (except OE).&lt;br /&gt;
  150 The world's best swimmer would &lt;br /&gt;
&lt;br /&gt;
A character that fails a skill check might be swallowing water if the fail is [0..-20]. And might&lt;br /&gt;
take one hp damage per 10 failure if the result is worse than -20.&lt;br /&gt;
&lt;br /&gt;
The function skillcheck() captures precisely this setup.&lt;br /&gt;
&lt;br /&gt;
As above, the swim skill works much the same way. &lt;br /&gt;
The player commands are swim on/off or swim &amp;lt;direction&amp;gt;. &lt;br /&gt;
The room should have the &amp;lt;code&amp;gt; SECT_WATER_SAIL flag &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Notice in the example below, the difficulty for swimming east is 0. Because it's a very calm river in the light part of the forest. Swimming west is up-steam, but also into a dark cold part of the river. So it's set to 20. Swimming south to the toy zone is set to 5 because I figured you'd have to swim across the river.&lt;br /&gt;
In the following example notice how to denote a calm river, where the difficulty is 0. It's not a strong current and the area overall is a beginner's area. Swimming west from here is upstream so&lt;br /&gt;
you notice that the difficulty is higher whereas swimming south is kind of crossing the river and not as difficult. &lt;br /&gt;
&lt;br /&gt;
There is also an optional dil for rooms with currents. It will move anything in the room downstream after time and replaces the legacy &amp;lt;code&amp;gt;force_move&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;lightriver&lt;br /&gt;
title &amp;quot;On the River in Haon-Dor&amp;quot;&lt;br /&gt;
descr &amp;quot;The river slowly flows east towards the village of Udgaard. North you see a landing spot in the light part of the forest.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
movement SECT_WATER_SAIL&lt;br /&gt;
&lt;br /&gt;
north to rn_6018;&lt;br /&gt;
west  to darkriver2    difficulty 20 descr &amp;quot;Much further upstream the forest becomes more dense.&amp;quot;;&lt;br /&gt;
east  to river@udgaard difficulty 0  descr &amp;quot;The river continues to the east.&amp;quot;;&lt;br /&gt;
south to river1@toy    difficulty 5  descr &amp;quot;The river forks and bends south.&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
dilcopy watercurrent@basemove(DIR_EAST,{&lt;br /&gt;
          &amp;quot;The river current gently takes you east.&amp;quot;, &lt;br /&gt;
          &amp;quot;$1n gently flows away to the east.&amp;quot;, &lt;br /&gt;
          &amp;quot;You gently flow a little further eastwards.&amp;quot;, &lt;br /&gt;
          &amp;quot;$1n flows in from the west.&amp;quot;},&lt;br /&gt;
           5);&lt;br /&gt;
end&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flee ===&lt;br /&gt;
&lt;br /&gt;
For a skill like flee, the difficulty could be an expression of the character's and opponent levels compared.&lt;br /&gt;
&lt;br /&gt;
  +5: For each level better than the opponent&lt;br /&gt;
   0: Same level, no modifier&lt;br /&gt;
  -5; For each level worse than the opponent&lt;br /&gt;
&lt;br /&gt;
So a level 5 PC fighting a level 1 rabbit gets a +40 bonus to flee. Since an NPC does not have skills, generally its level can be used as its skill. So a level 50 NPC&lt;br /&gt;
has a flee skill of 50.&lt;br /&gt;
&lt;br /&gt;
=== Search ===&lt;br /&gt;
&lt;br /&gt;
On any hidden item is a 'difficulty' rating on a scale of 0-100. It could technically go from 0-250 but that's just crazy.&lt;br /&gt;
It is denoted in the zone file as below with X being a number between 0 and 100:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;open {EX_OPEN, EX_CLOSE, EX_HIDDEN} difficulty X; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Searching depends on the searcher's skill level in searching as well as their brain ability. Each search attempt costs 20 endurance so that the player knows something is there. &lt;br /&gt;
The difficulty you choose for hidden exits is also the same difficulty the door would need to be if the lock were pick-able as there cannot be more than one difficulty per exit.&lt;br /&gt;
If a player's skill is average (50) then the skill check is to see the result of &amp;lt;code&amp;gt;(1d100 + skill) - 100 &amp;lt;/code&amp;gt;. Another way to note it would be &amp;lt;code&amp;gt;rnd(1,100) + skill - 100&amp;lt;/code&amp;gt; If the result is above 0 the search will be successful. Therefore if your skill is 0 you always fail an average swim roll is &amp;gt; 100. If your skill is 75 for an average swim, you succeed 75% of the time. If your skill is 100 then you always succeed. Remember that the open-ended roll can of course always offset even a sure success or fail.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Skills&amp;diff=564</id>
		<title>Manual:Game Mechanics/Skills</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Skills&amp;diff=564"/>
		<updated>2020-06-08T03:09:52Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Swim */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Skills ==&lt;br /&gt;
It seems skill (spells et. al) checks got kind of lost in the mists of time. Here is the general idea:&lt;br /&gt;
&lt;br /&gt;
Skills are all in [0..250]. Generally [0..100] for players.&lt;br /&gt;
&lt;br /&gt;
Players have a complete skill tree. NPCs have no skills, instead either an ability or their level is used based on the skill. As a rule of thumb a player's skill should roughly equal the player's level * 2 [??]. So a level 20 player should generally have a 40 [??] swim skill (some more, some less). An NPC would generally have a skill of 1 per level, often an ability is used in place of a skill.&lt;br /&gt;
&lt;br /&gt;
Skill checks are rolled open-ended 1d100.&lt;br /&gt;
&lt;br /&gt;
A general purpose table of the meaning of a skill level:&lt;br /&gt;
&lt;br /&gt;
   0: You're completely incompetent. No idea how to perform this skill. You might even panic.&lt;br /&gt;
  40: An average person's skill (real world), for example an average swimmer&lt;br /&gt;
 100: is the best (real world) human skill. &lt;br /&gt;
 200: is beyond what a human being could normally achieve, we're perhaps in the divine skill territory here.&lt;br /&gt;
&lt;br /&gt;
Note that a char with a skill of N will fail half the time when the difficulty is N.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Swim ===&lt;br /&gt;
Let's use swim as an example. A characters proficiency in swim in 0..100. The table below is a rough translation of a swimming skill.&lt;br /&gt;
&lt;br /&gt;
   0: You'll risk drowning in shallow water even if your feet can touch the bottom. &lt;br /&gt;
  40: An average (real world) swimmer&lt;br /&gt;
 100: is the best human swimmer in the (real) world. &lt;br /&gt;
 200: is the most divine swimmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now imaging having swim in average conditions. If your skill is average (50) then the skill check &lt;br /&gt;
is to see the result of (1d100 + skill) - 100. If the result is above 0 the swim was a success.&lt;br /&gt;
Therefore if your skill is 0 you always fail an average swim roll is &amp;gt; 100. If your skill is 75&lt;br /&gt;
for an average swim, you succeed 75% of the time. If your skill is 100 then you always&lt;br /&gt;
succeed. Remember that the open-ended roll can of course always offset even a sure success or&lt;br /&gt;
fail.&lt;br /&gt;
&lt;br /&gt;
A room's swim difficulty could be:&lt;br /&gt;
&lt;br /&gt;
    0: Super easy. &lt;br /&gt;
    .&lt;br /&gt;
    .&lt;br /&gt;
  100 A super difficult swim. It would mean even the (real world's) best swimmer would fail half the time under these circumstances. Players with 200 skill succeed always (except OE).&lt;br /&gt;
  150 The world's best swimmer would &lt;br /&gt;
&lt;br /&gt;
A character that fails a skill check might be swallowing water if the fail is [0..-20]. And might&lt;br /&gt;
take one hp damage per 10 failure if the result is worse than -20.&lt;br /&gt;
&lt;br /&gt;
The function skillcheck() captures precisely this setup.&lt;br /&gt;
&lt;br /&gt;
As above, the swim skill works much the same way. &lt;br /&gt;
The player commands are swim on/off or swim &amp;lt;direction&amp;gt;. &lt;br /&gt;
The room should have the &amp;lt;code&amp;gt; SECT_WATER_SAIL flag &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Notice in the example below, the difficulty for swimming east is 0. Because it's a very calm river in the light part of the forest. Swimming west is up-steam, but also into a dark cold part of the river. So it's set to 20. Swimming south to the toy zone is set to 5 because I figured you'd have to swim across the river.&lt;br /&gt;
In the following example notice how to denote a calm river, where the difficulty is 0. It's not a strong current and the area overall is a beginner's area. Swimming west from here is upstream so&lt;br /&gt;
you notice that the difficulty is higher whereas swimming south is kind of crossing the river and not as difficult. &lt;br /&gt;
&lt;br /&gt;
There is also an optional dil for rooms with currents. It will move anything in the room downstream after time and replaces the legacy &amp;lt;code&amp;gt;force_move&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;lightriver&lt;br /&gt;
title &amp;quot;On the River in Haon-Dor&amp;quot;&lt;br /&gt;
descr &amp;quot;The river slowly flows east towards the village of Udgaard. North you see a landing spot in the light part of the forest.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
movement SECT_WATER_SAIL&lt;br /&gt;
&lt;br /&gt;
north to rn_6018;&lt;br /&gt;
west  to darkriver2    difficulty 20 descr &amp;quot;Much further upstream the forest becomes more dense.&amp;quot;;&lt;br /&gt;
east  to river@udgaard difficulty 0  descr &amp;quot;The river continues to the east.&amp;quot;;&lt;br /&gt;
south to river1@toy    difficulty 5  descr &amp;quot;The river forks and bends south.&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
dilcopy watercurrent@basemove(DIR_EAST,{&lt;br /&gt;
          &amp;quot;The river current gently takes you east.&amp;quot;, &lt;br /&gt;
          &amp;quot;$1n gently flows away to the east.&amp;quot;, &lt;br /&gt;
          &amp;quot;You gently flow a little further eastwards.&amp;quot;, &lt;br /&gt;
          &amp;quot;$1n flows in from the west.&amp;quot;},&lt;br /&gt;
           5);&lt;br /&gt;
end&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flee ===&lt;br /&gt;
&lt;br /&gt;
For a skill like flee, the difficulty could be an expression of the character's and opponent levels compared.&lt;br /&gt;
&lt;br /&gt;
  +5: For each level better than the opponent&lt;br /&gt;
   0: Same level, no modifier&lt;br /&gt;
  -5; For each level worse than the opponent&lt;br /&gt;
&lt;br /&gt;
So a level 5 PC fighting a level 1 rabbit gets a +40 bonus to flee. Since an NPC does not have skills, generally its level can be used as its skill. So a level 50 NPC&lt;br /&gt;
has a flee skill of 50.&lt;br /&gt;
&lt;br /&gt;
=== Search ===&lt;br /&gt;
&lt;br /&gt;
On any hidden item is a 'difficulty' rating on a scale of 0-100. It could technically go from 0-250 but that's just crazy.&lt;br /&gt;
It is denoted in the zone file as below with X being a number between 0 and 100:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;open {EX_OPEN, EX_CLOSE, EX_HIDDEN} difficulty X; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Searching depends on the searcher's skill level in searching as well as their brain ability. Each search attempt costs 20 endurance so that the player knows something is there. &lt;br /&gt;
The difficulty you choose for hidden exits is also the same difficulty the door would need to be if the lock were pick-able as there cannot be more than one difficulty per exit.&lt;br /&gt;
If a player's skill is average (50) then the skill check is to see the result of &amp;lt;code&amp;gt;(1d100 + skill) - 100 &amp;lt;/code&amp;gt;. Another way to note it would be &amp;lt;code&amp;gt;rnd(1,100) + skill - 100&amp;lt;/code&amp;gt; If the result is above 0 the search will be successful. Therefore if your skill is 0 you always fail an average swim roll is &amp;gt; 100. If your skill is 75 for an average swim, you succeed 75% of the time. If your skill is 100 then you always succeed. Remember that the open-ended roll can of course always offset even a sure success or fail.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Skills&amp;diff=563</id>
		<title>Manual:Game Mechanics/Skills</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Skills&amp;diff=563"/>
		<updated>2020-06-08T03:09:35Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Swim */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Skills ==&lt;br /&gt;
It seems skill (spells et. al) checks got kind of lost in the mists of time. Here is the general idea:&lt;br /&gt;
&lt;br /&gt;
Skills are all in [0..250]. Generally [0..100] for players.&lt;br /&gt;
&lt;br /&gt;
Players have a complete skill tree. NPCs have no skills, instead either an ability or their level is used based on the skill. As a rule of thumb a player's skill should roughly equal the player's level * 2 [??]. So a level 20 player should generally have a 40 [??] swim skill (some more, some less). An NPC would generally have a skill of 1 per level, often an ability is used in place of a skill.&lt;br /&gt;
&lt;br /&gt;
Skill checks are rolled open-ended 1d100.&lt;br /&gt;
&lt;br /&gt;
A general purpose table of the meaning of a skill level:&lt;br /&gt;
&lt;br /&gt;
   0: You're completely incompetent. No idea how to perform this skill. You might even panic.&lt;br /&gt;
  40: An average person's skill (real world), for example an average swimmer&lt;br /&gt;
 100: is the best (real world) human skill. &lt;br /&gt;
 200: is beyond what a human being could normally achieve, we're perhaps in the divine skill territory here.&lt;br /&gt;
&lt;br /&gt;
Note that a char with a skill of N will fail half the time when the difficulty is N.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Swim ===&lt;br /&gt;
Let's use swim as an example. A characters proficiency in swim in 0..100. The table below is a rough translation of a swimming skill.&lt;br /&gt;
&lt;br /&gt;
   0: You'll risk drowning in shallow water even if your feet can touch the bottom. &lt;br /&gt;
  40: An average (real world) swimmer&lt;br /&gt;
 100: is the best human swimmer in the (real) world. &lt;br /&gt;
 200: is the most divine swimmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now imaging having swim in average conditions. If your skill is average (50) then the skill check &lt;br /&gt;
is to see the result of (1d100 + skill) - 100. If the result is above 0 the swim was a success.&lt;br /&gt;
Therefore if your skill is 0 you always fail an average swim roll is &amp;gt; 100. If your skill is 75&lt;br /&gt;
for an average swim, you succeed 75% of the time. If your skill is 100 then you always&lt;br /&gt;
succeed. Remember that the open-ended roll can of course always offset even a sure success or&lt;br /&gt;
fail.&lt;br /&gt;
&lt;br /&gt;
A room's swim difficulty could be:&lt;br /&gt;
&lt;br /&gt;
    0: Super easy. &lt;br /&gt;
    .&lt;br /&gt;
    .&lt;br /&gt;
  100 A super difficult swim. It would mean even the (real world's) best swimmer would fail half the time under these circumstances. Players with 200 skill succeed always (except OE).&lt;br /&gt;
  150 The world's best swimmer would &lt;br /&gt;
&lt;br /&gt;
A character that fails a skill check might be swallowing water if the fail is [0..-20]. And might&lt;br /&gt;
take one hp damage per 10 failure if the result is worse than -20.&lt;br /&gt;
&lt;br /&gt;
The function skillcheck() captures precisely this setup.&lt;br /&gt;
&lt;br /&gt;
=== Swim ===&lt;br /&gt;
&lt;br /&gt;
As above, the swim skill works much the same way. &lt;br /&gt;
The player commands are swim on/off or swim &amp;lt;direction&amp;gt;. &lt;br /&gt;
The room should have the &amp;lt;code&amp;gt; SECT_WATER_SAIL flag &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Notice in the example below, the difficulty for swimming east is 0. Because it's a very calm river in the light part of the forest. Swimming west is up-steam, but also into a dark cold part of the river. So it's set to 20. Swimming south to the toy zone is set to 5 because I figured you'd have to swim across the river.&lt;br /&gt;
In the following example notice how to denote a calm river, where the difficulty is 0. It's not a strong current and the area overall is a beginner's area. Swimming west from here is upstream so&lt;br /&gt;
you notice that the difficulty is higher whereas swimming south is kind of crossing the river and not as difficult. &lt;br /&gt;
&lt;br /&gt;
There is also an optional dil for rooms with currents. It will move anything in the room downstream after time and replaces the legacy &amp;lt;code&amp;gt;force_move&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;lightriver&lt;br /&gt;
title &amp;quot;On the River in Haon-Dor&amp;quot;&lt;br /&gt;
descr &amp;quot;The river slowly flows east towards the village of Udgaard. North you see a landing spot in the light part of the forest.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
movement SECT_WATER_SAIL&lt;br /&gt;
&lt;br /&gt;
north to rn_6018;&lt;br /&gt;
west  to darkriver2    difficulty 20 descr &amp;quot;Much further upstream the forest becomes more dense.&amp;quot;;&lt;br /&gt;
east  to river@udgaard difficulty 0  descr &amp;quot;The river continues to the east.&amp;quot;;&lt;br /&gt;
south to river1@toy    difficulty 5  descr &amp;quot;The river forks and bends south.&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
dilcopy watercurrent@basemove(DIR_EAST,{&lt;br /&gt;
          &amp;quot;The river current gently takes you east.&amp;quot;, &lt;br /&gt;
          &amp;quot;$1n gently flows away to the east.&amp;quot;, &lt;br /&gt;
          &amp;quot;You gently flow a little further eastwards.&amp;quot;, &lt;br /&gt;
          &amp;quot;$1n flows in from the west.&amp;quot;},&lt;br /&gt;
           5);&lt;br /&gt;
end&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flee ===&lt;br /&gt;
&lt;br /&gt;
For a skill like flee, the difficulty could be an expression of the character's and opponent levels compared.&lt;br /&gt;
&lt;br /&gt;
  +5: For each level better than the opponent&lt;br /&gt;
   0: Same level, no modifier&lt;br /&gt;
  -5; For each level worse than the opponent&lt;br /&gt;
&lt;br /&gt;
So a level 5 PC fighting a level 1 rabbit gets a +40 bonus to flee. Since an NPC does not have skills, generally its level can be used as its skill. So a level 50 NPC&lt;br /&gt;
has a flee skill of 50.&lt;br /&gt;
&lt;br /&gt;
=== Search ===&lt;br /&gt;
&lt;br /&gt;
On any hidden item is a 'difficulty' rating on a scale of 0-100. It could technically go from 0-250 but that's just crazy.&lt;br /&gt;
It is denoted in the zone file as below with X being a number between 0 and 100:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;open {EX_OPEN, EX_CLOSE, EX_HIDDEN} difficulty X; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Searching depends on the searcher's skill level in searching as well as their brain ability. Each search attempt costs 20 endurance so that the player knows something is there. &lt;br /&gt;
The difficulty you choose for hidden exits is also the same difficulty the door would need to be if the lock were pick-able as there cannot be more than one difficulty per exit.&lt;br /&gt;
If a player's skill is average (50) then the skill check is to see the result of &amp;lt;code&amp;gt;(1d100 + skill) - 100 &amp;lt;/code&amp;gt;. Another way to note it would be &amp;lt;code&amp;gt;rnd(1,100) + skill - 100&amp;lt;/code&amp;gt; If the result is above 0 the search will be successful. Therefore if your skill is 0 you always fail an average swim roll is &amp;gt; 100. If your skill is 75 for an average swim, you succeed 75% of the time. If your skill is 100 then you always succeed. Remember that the open-ended roll can of course always offset even a sure success or fail.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Skills&amp;diff=562</id>
		<title>Manual:Game Mechanics/Skills</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Skills&amp;diff=562"/>
		<updated>2020-06-08T03:09:20Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Swim */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Skills ==&lt;br /&gt;
It seems skill (spells et. al) checks got kind of lost in the mists of time. Here is the general idea:&lt;br /&gt;
&lt;br /&gt;
Skills are all in [0..250]. Generally [0..100] for players.&lt;br /&gt;
&lt;br /&gt;
Players have a complete skill tree. NPCs have no skills, instead either an ability or their level is used based on the skill. As a rule of thumb a player's skill should roughly equal the player's level * 2 [??]. So a level 20 player should generally have a 40 [??] swim skill (some more, some less). An NPC would generally have a skill of 1 per level, often an ability is used in place of a skill.&lt;br /&gt;
&lt;br /&gt;
Skill checks are rolled open-ended 1d100.&lt;br /&gt;
&lt;br /&gt;
A general purpose table of the meaning of a skill level:&lt;br /&gt;
&lt;br /&gt;
   0: You're completely incompetent. No idea how to perform this skill. You might even panic.&lt;br /&gt;
  40: An average person's skill (real world), for example an average swimmer&lt;br /&gt;
 100: is the best (real world) human skill. &lt;br /&gt;
 200: is beyond what a human being could normally achieve, we're perhaps in the divine skill territory here.&lt;br /&gt;
&lt;br /&gt;
Note that a char with a skill of N will fail half the time when the difficulty is N.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Swim ===&lt;br /&gt;
Let's use swim as an example. A characters proficiency in swim in 0..100. The table below is a rough translation of a swimming skill.&lt;br /&gt;
&lt;br /&gt;
   0: You'll risk drowning in shallow water even if your feet can touch the bottom. &lt;br /&gt;
  40: An average (real world) swimmer&lt;br /&gt;
 100: is the best human swimmer in the (real) world. &lt;br /&gt;
 200: is the most divine swimmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now imaging having swim in average conditions. If your skill is average (50) then the skill check &lt;br /&gt;
is to see the result of (1d100 + skill) - 100. If the result is above 0 the swim was a success.&lt;br /&gt;
Therefore if your skill is 0 you always fail an average swim roll is &amp;gt; 100. If your skill is 75&lt;br /&gt;
for an average swim, you succeed 75% of the time. If your skill is 100 then you always&lt;br /&gt;
succeed. Remember that the open-ended roll can of course always offset even a sure success or&lt;br /&gt;
fail.&lt;br /&gt;
&lt;br /&gt;
A room's swim difficulty could be:&lt;br /&gt;
&lt;br /&gt;
    0: Super easy. &lt;br /&gt;
    .&lt;br /&gt;
    .&lt;br /&gt;
  100 A super difficult swim. It would mean even the (real world's) best swimmer would fail half the time under these circumstances. Players with 200 skill succeed always (except OE).&lt;br /&gt;
  150 The world's best swimmer would &lt;br /&gt;
&lt;br /&gt;
A character that fails a skill check might be swallowing water if the fail is [0..-20]. And might&lt;br /&gt;
take one hp damage per 10 failure if the result is worse than -20.&lt;br /&gt;
&lt;br /&gt;
The function skillcheck() captures precisely this setup.&lt;br /&gt;
&lt;br /&gt;
=== Swim ===&lt;br /&gt;
&lt;br /&gt;
As above, the swim skill works much the same way. &lt;br /&gt;
The player commands are swim on/off or swim &amp;lt;direction&amp;gt;. &lt;br /&gt;
The room should have the &amp;lt;code&amp;gt; SECT_WATER_SAIL flag &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Notice in the example below, the difficulty for swimming east is 0. Because it's a very calm river in the light part of the forest. Swimming west is up-steam, but also into a dark cold part of the river. So it's set to 20. Swimming south to the toy zone is set to 5 because I figured you'd have to swim across the river.&lt;br /&gt;
In the following example notice how to denote a calm river, where the difficulty is 0. It's not a strong current and the area overall is a beginner's area. Swimming west from here is upstream so&lt;br /&gt;
you notice that the difficulty is higher whereas swimming south is kind of crossing the river and not as difficult. &lt;br /&gt;
&lt;br /&gt;
There is also an optional dil for rooms with currents. It will move anything in the room downstream after time and replaces the legacy &amp;lt;code&amp;gt;force_move&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;lightriver&lt;br /&gt;
title &amp;quot;On the River in Haon-Dor&amp;quot;&lt;br /&gt;
descr &amp;quot;The river slowly flows east towards the village of Udgaard. North you see a landing spot in the light part of the forest.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
movement SECT_WATER_SAIL&lt;br /&gt;
&lt;br /&gt;
north to rn_6018;&lt;br /&gt;
west  to darkriver2    difficulty 20 descr &amp;quot;Much further upstream the forest becomes more dense.&amp;quot;;&lt;br /&gt;
east  to river@udgaard difficulty 0  descr &amp;quot;The river continues to the east.&amp;quot;;&lt;br /&gt;
south to river1@toy    difficulty 5  descr &amp;quot;The river forks and bends south.&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
dilcopy watercurrent@basemove(DIR_EAST,{&lt;br /&gt;
          &amp;quot;The river current gently takes you east.&amp;quot;, &lt;br /&gt;
          &amp;quot;$1n gently flows away to the east.&amp;quot;, &lt;br /&gt;
          &amp;quot;You gently flow a little further eastwards.&amp;quot;, &lt;br /&gt;
          &amp;quot;$1n flows in from the west.&amp;quot;},&lt;br /&gt;
           5);&lt;br /&gt;
end&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flee ===&lt;br /&gt;
&lt;br /&gt;
For a skill like flee, the difficulty could be an expression of the character's and opponent levels compared.&lt;br /&gt;
&lt;br /&gt;
  +5: For each level better than the opponent&lt;br /&gt;
   0: Same level, no modifier&lt;br /&gt;
  -5; For each level worse than the opponent&lt;br /&gt;
&lt;br /&gt;
So a level 5 PC fighting a level 1 rabbit gets a +40 bonus to flee. Since an NPC does not have skills, generally its level can be used as its skill. So a level 50 NPC&lt;br /&gt;
has a flee skill of 50.&lt;br /&gt;
&lt;br /&gt;
=== Search ===&lt;br /&gt;
&lt;br /&gt;
On any hidden item is a 'difficulty' rating on a scale of 0-100. It could technically go from 0-250 but that's just crazy.&lt;br /&gt;
It is denoted in the zone file as below with X being a number between 0 and 100:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;open {EX_OPEN, EX_CLOSE, EX_HIDDEN} difficulty X; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Searching depends on the searcher's skill level in searching as well as their brain ability. Each search attempt costs 20 endurance so that the player knows something is there. &lt;br /&gt;
The difficulty you choose for hidden exits is also the same difficulty the door would need to be if the lock were pick-able as there cannot be more than one difficulty per exit.&lt;br /&gt;
If a player's skill is average (50) then the skill check is to see the result of &amp;lt;code&amp;gt;(1d100 + skill) - 100 &amp;lt;/code&amp;gt;. Another way to note it would be &amp;lt;code&amp;gt;rnd(1,100) + skill - 100&amp;lt;/code&amp;gt; If the result is above 0 the search will be successful. Therefore if your skill is 0 you always fail an average swim roll is &amp;gt; 100. If your skill is 75 for an average swim, you succeed 75% of the time. If your skill is 100 then you always succeed. Remember that the open-ended roll can of course always offset even a sure success or fail.&lt;br /&gt;
=== Swim ===&lt;br /&gt;
&lt;br /&gt;
As above, the swim skill works much the same way. &lt;br /&gt;
The player commands are swim on/off or swim &amp;lt;direction&amp;gt;. &lt;br /&gt;
The room should have the &amp;lt;code&amp;gt; SECT_WATER_SAIL flag &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Notice in the example below, the difficulty for swimming east is 0. Because it's a very calm river in the light part of the forest. Swimming west is up-steam, but also into a dark cold part of the river. So it's set to 20. Swimming south to the toy zone is set to 5 because I figured you'd have to swim across the river.&lt;br /&gt;
In the following example notice how to denote a calm river, where the difficulty is 0. It's not a strong current and the area overall is a beginner's area. Swimming west from here is upstream so&lt;br /&gt;
you notice that the difficulty is higher whereas swimming south is kind of crossing the river and not as difficult. &lt;br /&gt;
&lt;br /&gt;
There is also an optional dil for rooms with currents. It will move anything in the room downstream after time and replaces the legacy &amp;lt;code&amp;gt;force_move&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;lightriver&lt;br /&gt;
title &amp;quot;On the River in Haon-Dor&amp;quot;&lt;br /&gt;
descr &amp;quot;The river slowly flows east towards the village of Udgaard. North you see a landing spot in the light part of the forest.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
movement SECT_WATER_SAIL&lt;br /&gt;
&lt;br /&gt;
north to rn_6018;&lt;br /&gt;
west  to darkriver2    difficulty 20 descr &amp;quot;Much further upstream the forest becomes more dense.&amp;quot;;&lt;br /&gt;
east  to river@udgaard difficulty 0  descr &amp;quot;The river continues to the east.&amp;quot;;&lt;br /&gt;
south to river1@toy    difficulty 5  descr &amp;quot;The river forks and bends south.&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
dilcopy watercurrent@basemove(DIR_EAST,{&lt;br /&gt;
          &amp;quot;The river current gently takes you east.&amp;quot;, &lt;br /&gt;
          &amp;quot;$1n gently flows away to the east.&amp;quot;, &lt;br /&gt;
          &amp;quot;You gently flow a little further eastwards.&amp;quot;, &lt;br /&gt;
          &amp;quot;$1n flows in from the west.&amp;quot;},&lt;br /&gt;
           5);&lt;br /&gt;
end&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Skills&amp;diff=561</id>
		<title>Manual:Game Mechanics/Skills</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Skills&amp;diff=561"/>
		<updated>2020-06-08T03:08:47Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Swim Skill */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Skills ==&lt;br /&gt;
It seems skill (spells et. al) checks got kind of lost in the mists of time. Here is the general idea:&lt;br /&gt;
&lt;br /&gt;
Skills are all in [0..250]. Generally [0..100] for players.&lt;br /&gt;
&lt;br /&gt;
Players have a complete skill tree. NPCs have no skills, instead either an ability or their level is used based on the skill. As a rule of thumb a player's skill should roughly equal the player's level * 2 [??]. So a level 20 player should generally have a 40 [??] swim skill (some more, some less). An NPC would generally have a skill of 1 per level, often an ability is used in place of a skill.&lt;br /&gt;
&lt;br /&gt;
Skill checks are rolled open-ended 1d100.&lt;br /&gt;
&lt;br /&gt;
A general purpose table of the meaning of a skill level:&lt;br /&gt;
&lt;br /&gt;
   0: You're completely incompetent. No idea how to perform this skill. You might even panic.&lt;br /&gt;
  40: An average person's skill (real world), for example an average swimmer&lt;br /&gt;
 100: is the best (real world) human skill. &lt;br /&gt;
 200: is beyond what a human being could normally achieve, we're perhaps in the divine skill territory here.&lt;br /&gt;
&lt;br /&gt;
Note that a char with a skill of N will fail half the time when the difficulty is N.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Swim ===&lt;br /&gt;
Let's use swim as an example. A characters proficiency in swim in 0..100. The table below is a rough translation of a swimming skill.&lt;br /&gt;
&lt;br /&gt;
   0: You'll risk drowning in shallow water even if your feet can touch the bottom. &lt;br /&gt;
  40: An average (real world) swimmer&lt;br /&gt;
 100: is the best human swimmer in the (real) world. &lt;br /&gt;
 200: is the most divine swimmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now imaging having swim in average conditions. If your skill is average (50) then the skill check &lt;br /&gt;
is to see the result of (1d100 + skill) - 100. If the result is above 0 the swim was a success.&lt;br /&gt;
Therefore if your skill is 0 you always fail an average swim roll is &amp;gt; 100. If your skill is 75&lt;br /&gt;
for an average swim, you succeed 75% of the time. If your skill is 100 then you always&lt;br /&gt;
succeed. Remember that the open-ended roll can of course always offset even a sure success or&lt;br /&gt;
fail.&lt;br /&gt;
&lt;br /&gt;
A room's swim difficulty could be:&lt;br /&gt;
&lt;br /&gt;
    0: Super easy. &lt;br /&gt;
    .&lt;br /&gt;
    .&lt;br /&gt;
  100 A super difficult swim. It would mean even the (real world's) best swimmer would fail half the time under these circumstances. Players with 200 skill succeed always (except OE).&lt;br /&gt;
  150 The world's best swimmer would &lt;br /&gt;
&lt;br /&gt;
A character that fails a skill check might be swallowing water if the fail is [0..-20]. And might&lt;br /&gt;
take one hp damage per 10 failure if the result is worse than -20.&lt;br /&gt;
&lt;br /&gt;
The function skillcheck() captures precisely this setup.&lt;br /&gt;
&lt;br /&gt;
=== Flee ===&lt;br /&gt;
&lt;br /&gt;
For a skill like flee, the difficulty could be an expression of the character's and opponent levels compared.&lt;br /&gt;
&lt;br /&gt;
  +5: For each level better than the opponent&lt;br /&gt;
   0: Same level, no modifier&lt;br /&gt;
  -5; For each level worse than the opponent&lt;br /&gt;
&lt;br /&gt;
So a level 5 PC fighting a level 1 rabbit gets a +40 bonus to flee. Since an NPC does not have skills, generally its level can be used as its skill. So a level 50 NPC&lt;br /&gt;
has a flee skill of 50.&lt;br /&gt;
&lt;br /&gt;
=== Search ===&lt;br /&gt;
&lt;br /&gt;
On any hidden item is a 'difficulty' rating on a scale of 0-100. It could technically go from 0-250 but that's just crazy.&lt;br /&gt;
It is denoted in the zone file as below with X being a number between 0 and 100:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;open {EX_OPEN, EX_CLOSE, EX_HIDDEN} difficulty X; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Searching depends on the searcher's skill level in searching as well as their brain ability. Each search attempt costs 20 endurance so that the player knows something is there. &lt;br /&gt;
The difficulty you choose for hidden exits is also the same difficulty the door would need to be if the lock were pick-able as there cannot be more than one difficulty per exit.&lt;br /&gt;
If a player's skill is average (50) then the skill check is to see the result of &amp;lt;code&amp;gt;(1d100 + skill) - 100 &amp;lt;/code&amp;gt;. Another way to note it would be &amp;lt;code&amp;gt;rnd(1,100) + skill - 100&amp;lt;/code&amp;gt; If the result is above 0 the search will be successful. Therefore if your skill is 0 you always fail an average swim roll is &amp;gt; 100. If your skill is 75 for an average swim, you succeed 75% of the time. If your skill is 100 then you always succeed. Remember that the open-ended roll can of course always offset even a sure success or fail.&lt;br /&gt;
=== Swim ===&lt;br /&gt;
&lt;br /&gt;
As above, the swim skill works much the same way. &lt;br /&gt;
The player commands are swim on/off or swim &amp;lt;direction&amp;gt;. &lt;br /&gt;
The room should have the &amp;lt;code&amp;gt; SECT_WATER_SAIL flag &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Notice in the example below, the difficulty for swimming east is 0. Because it's a very calm river in the light part of the forest. Swimming west is up-steam, but also into a dark cold part of the river. So it's set to 20. Swimming south to the toy zone is set to 5 because I figured you'd have to swim across the river.&lt;br /&gt;
In the following example notice how to denote a calm river, where the difficulty is 0. It's not a strong current and the area overall is a beginner's area. Swimming west from here is upstream so&lt;br /&gt;
you notice that the difficulty is higher whereas swimming south is kind of crossing the river and not as difficult. &lt;br /&gt;
&lt;br /&gt;
There is also an optional dil for rooms with currents. It will move anything in the room downstream after time and replaces the legacy &amp;lt;code&amp;gt;force_move&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;lightriver&lt;br /&gt;
title &amp;quot;On the River in Haon-Dor&amp;quot;&lt;br /&gt;
descr &amp;quot;The river slowly flows east towards the village of Udgaard. North you see a landing spot in the light part of the forest.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
movement SECT_WATER_SAIL&lt;br /&gt;
&lt;br /&gt;
north to rn_6018;&lt;br /&gt;
west  to darkriver2    difficulty 20 descr &amp;quot;Much further upstream the forest becomes more dense.&amp;quot;;&lt;br /&gt;
east  to river@udgaard difficulty 0  descr &amp;quot;The river continues to the east.&amp;quot;;&lt;br /&gt;
south to river1@toy    difficulty 5  descr &amp;quot;The river forks and bends south.&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
dilcopy watercurrent@basemove(DIR_EAST,{&lt;br /&gt;
          &amp;quot;The river current gently takes you east.&amp;quot;, &lt;br /&gt;
          &amp;quot;$1n gently flows away to the east.&amp;quot;, &lt;br /&gt;
          &amp;quot;You gently flow a little further eastwards.&amp;quot;, &lt;br /&gt;
          &amp;quot;$1n flows in from the west.&amp;quot;},&lt;br /&gt;
           5);&lt;br /&gt;
end&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Skills&amp;diff=560</id>
		<title>Manual:Game Mechanics/Skills</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Skills&amp;diff=560"/>
		<updated>2020-06-08T03:08:13Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Skills */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Skills ==&lt;br /&gt;
It seems skill (spells et. al) checks got kind of lost in the mists of time. Here is the general idea:&lt;br /&gt;
&lt;br /&gt;
Skills are all in [0..250]. Generally [0..100] for players.&lt;br /&gt;
&lt;br /&gt;
Players have a complete skill tree. NPCs have no skills, instead either an ability or their level is used based on the skill. As a rule of thumb a player's skill should roughly equal the player's level * 2 [??]. So a level 20 player should generally have a 40 [??] swim skill (some more, some less). An NPC would generally have a skill of 1 per level, often an ability is used in place of a skill.&lt;br /&gt;
&lt;br /&gt;
Skill checks are rolled open-ended 1d100.&lt;br /&gt;
&lt;br /&gt;
A general purpose table of the meaning of a skill level:&lt;br /&gt;
&lt;br /&gt;
   0: You're completely incompetent. No idea how to perform this skill. You might even panic.&lt;br /&gt;
  40: An average person's skill (real world), for example an average swimmer&lt;br /&gt;
 100: is the best (real world) human skill. &lt;br /&gt;
 200: is beyond what a human being could normally achieve, we're perhaps in the divine skill territory here.&lt;br /&gt;
&lt;br /&gt;
Note that a char with a skill of N will fail half the time when the difficulty is N.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Swim Skill ===&lt;br /&gt;
Let's use swim as an example. A characters proficiency in swim in 0..100. The table below is a rough translation of a swimming skill.&lt;br /&gt;
&lt;br /&gt;
   0: You'll risk drowning in shallow water even if your feet can touch the bottom. &lt;br /&gt;
  40: An average (real world) swimmer&lt;br /&gt;
 100: is the best human swimmer in the (real) world. &lt;br /&gt;
 200: is the most divine swimmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now imaging having swim in average conditions. If your skill is average (50) then the skill check &lt;br /&gt;
is to see the result of (1d100 + skill) - 100. If the result is above 0 the swim was a success.&lt;br /&gt;
Therefore if your skill is 0 you always fail an average swim roll is &amp;gt; 100. If your skill is 75&lt;br /&gt;
for an average swim, you succeed 75% of the time. If your skill is 100 then you always&lt;br /&gt;
succeed. Remember that the open-ended roll can of course always offset even a sure success or&lt;br /&gt;
fail.&lt;br /&gt;
&lt;br /&gt;
A room's swim difficulty could be:&lt;br /&gt;
&lt;br /&gt;
    0: Super easy. &lt;br /&gt;
    .&lt;br /&gt;
    .&lt;br /&gt;
  100 A super difficult swim. It would mean even the (real world's) best swimmer would fail half the time under these circumstances. Players with 200 skill succeed always (except OE).&lt;br /&gt;
  150 The world's best swimmer would &lt;br /&gt;
&lt;br /&gt;
A character that fails a skill check might be swallowing water if the fail is [0..-20]. And might&lt;br /&gt;
take one hp damage per 10 failure if the result is worse than -20.&lt;br /&gt;
&lt;br /&gt;
The function skillcheck() captures precisely this setup.&lt;br /&gt;
&lt;br /&gt;
=== Flee ===&lt;br /&gt;
&lt;br /&gt;
For a skill like flee, the difficulty could be an expression of the character's and opponent levels compared.&lt;br /&gt;
&lt;br /&gt;
  +5: For each level better than the opponent&lt;br /&gt;
   0: Same level, no modifier&lt;br /&gt;
  -5; For each level worse than the opponent&lt;br /&gt;
&lt;br /&gt;
So a level 5 PC fighting a level 1 rabbit gets a +40 bonus to flee. Since an NPC does not have skills, generally its level can be used as its skill. So a level 50 NPC&lt;br /&gt;
has a flee skill of 50.&lt;br /&gt;
&lt;br /&gt;
=== Search ===&lt;br /&gt;
&lt;br /&gt;
On any hidden item is a 'difficulty' rating on a scale of 0-100. It could technically go from 0-250 but that's just crazy.&lt;br /&gt;
It is denoted in the zone file as below with X being a number between 0 and 100:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;open {EX_OPEN, EX_CLOSE, EX_HIDDEN} difficulty X; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Searching depends on the searcher's skill level in searching as well as their brain ability. Each search attempt costs 20 endurance so that the player knows something is there. &lt;br /&gt;
The difficulty you choose for hidden exits is also the same difficulty the door would need to be if the lock were pick-able as there cannot be more than one difficulty per exit.&lt;br /&gt;
If a player's skill is average (50) then the skill check is to see the result of &amp;lt;code&amp;gt;(1d100 + skill) - 100 &amp;lt;/code&amp;gt;. Another way to note it would be &amp;lt;code&amp;gt;rnd(1,100) + skill - 100&amp;lt;/code&amp;gt; If the result is above 0 the search will be successful. Therefore if your skill is 0 you always fail an average swim roll is &amp;gt; 100. If your skill is 75 for an average swim, you succeed 75% of the time. If your skill is 100 then you always succeed. Remember that the open-ended roll can of course always offset even a sure success or fail.&lt;br /&gt;
=== Swim ===&lt;br /&gt;
&lt;br /&gt;
As above, the swim skill works much the same way. &lt;br /&gt;
The player commands are swim on/off or swim &amp;lt;direction&amp;gt;. &lt;br /&gt;
The room should have the &amp;lt;code&amp;gt; SECT_WATER_SAIL flag &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Notice in the example below, the difficulty for swimming east is 0. Because it's a very calm river in the light part of the forest. Swimming west is up-steam, but also into a dark cold part of the river. So it's set to 20. Swimming south to the toy zone is set to 5 because I figured you'd have to swim across the river.&lt;br /&gt;
In the following example notice how to denote a calm river, where the difficulty is 0. It's not a strong current and the area overall is a beginner's area. Swimming west from here is upstream so&lt;br /&gt;
you notice that the difficulty is higher whereas swimming south is kind of crossing the river and not as difficult. &lt;br /&gt;
&lt;br /&gt;
There is also an optional dil for rooms with currents. It will move anything in the room downstream after time and replaces the legacy &amp;lt;code&amp;gt;force_move&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;lightriver&lt;br /&gt;
title &amp;quot;On the River in Haon-Dor&amp;quot;&lt;br /&gt;
descr &amp;quot;The river slowly flows east towards the village of Udgaard. North you see a landing spot in the light part of the forest.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
movement SECT_WATER_SAIL&lt;br /&gt;
&lt;br /&gt;
north to rn_6018;&lt;br /&gt;
west  to darkriver2    difficulty 20 descr &amp;quot;Much further upstream the forest becomes more dense.&amp;quot;;&lt;br /&gt;
east  to river@udgaard difficulty 0  descr &amp;quot;The river continues to the east.&amp;quot;;&lt;br /&gt;
south to river1@toy    difficulty 5  descr &amp;quot;The river forks and bends south.&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
dilcopy watercurrent@basemove(DIR_EAST,{&lt;br /&gt;
          &amp;quot;The river current gently takes you east.&amp;quot;, &lt;br /&gt;
          &amp;quot;$1n gently flows away to the east.&amp;quot;, &lt;br /&gt;
          &amp;quot;You gently flow a little further eastwards.&amp;quot;, &lt;br /&gt;
          &amp;quot;$1n flows in from the west.&amp;quot;},&lt;br /&gt;
           5);&lt;br /&gt;
end&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Skills&amp;diff=559</id>
		<title>Manual:Game Mechanics/Skills</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Skills&amp;diff=559"/>
		<updated>2020-06-08T03:07:05Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Swim */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Skills ==&lt;br /&gt;
It seems skill (spells et. al) checks got kind of lost in the mists of time. Here is the general idea:&lt;br /&gt;
&lt;br /&gt;
Skills are all in [0..250]. Generally [0..100] for players.&lt;br /&gt;
&lt;br /&gt;
Players have a complete skill tree. NPCs have no skills, instead either an ability or their level is used based on the skill. As a rule of thumb a player's skill should roughly equal the player's level * 2 [??]. So a level 20 player should generally have a 40 [??] swim skill (some more, some less). An NPC would generally have a skill of 1 per level, often an ability is used in place of a skill.&lt;br /&gt;
&lt;br /&gt;
Skill checks are rolled open-ended 1d100.&lt;br /&gt;
&lt;br /&gt;
A general purpose table of the meaning of a skill level:&lt;br /&gt;
&lt;br /&gt;
   0: You're completely incompetent. No idea how to perform this skill. You might even panic.&lt;br /&gt;
  40: An average person's skill (real world), for example an average swimmer&lt;br /&gt;
 100: is the best (real world) human skill. &lt;br /&gt;
 200: is beyond what a human being could normally achieve, we're perhaps in the divine skill territory here.&lt;br /&gt;
&lt;br /&gt;
A general purpose table of a skill difficulty (e.g. how difficult are the swimming conditions):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that a char with a skill of N will fail half the time when the difficulty is N.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Swim Skill ===&lt;br /&gt;
Let's use swim as an example. A characters proficiency in swim in 0..100. The table below is a rough translation of a swimming skill.&lt;br /&gt;
&lt;br /&gt;
   0: You'll risk drowning in shallow water even if your feet can touch the bottom. &lt;br /&gt;
  40: An average (real world) swimmer&lt;br /&gt;
 100: is the best human swimmer in the (real) world. &lt;br /&gt;
 200: is the most divine swimmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now imaging having swim in average conditions. If your skill is average (50) then the skill check &lt;br /&gt;
is to see the result of (1d100 + skill) - 100. If the result is above 0 the swim was a success.&lt;br /&gt;
Therefore if your skill is 0 you always fail an average swim roll is &amp;gt; 100. If your skill is 75&lt;br /&gt;
for an average swim, you succeed 75% of the time. If your skill is 100 then you always&lt;br /&gt;
succeed. Remember that the open-ended roll can of course always offset even a sure success or&lt;br /&gt;
fail.&lt;br /&gt;
&lt;br /&gt;
A room's swim difficulty could be:&lt;br /&gt;
&lt;br /&gt;
    0: Super easy. &lt;br /&gt;
    .&lt;br /&gt;
    .&lt;br /&gt;
  100 A super difficult swim. It would mean even the (real world's) best swimmer would fail half the time under these circumstances. Players with 200 skill succeed always (except OE).&lt;br /&gt;
  150 The world's best swimmer would &lt;br /&gt;
&lt;br /&gt;
A character that fails a skill check might be swallowing water if the fail is [0..-20]. And might&lt;br /&gt;
take one hp damage per 10 failure if the result is worse than -20.&lt;br /&gt;
&lt;br /&gt;
The function skillcheck() captures precisely this setup.&lt;br /&gt;
&lt;br /&gt;
=== Flee ===&lt;br /&gt;
&lt;br /&gt;
For a skill like flee, the difficulty could be an expression of the character's and opponent levels compared.&lt;br /&gt;
&lt;br /&gt;
  +5: For each level better than the opponent&lt;br /&gt;
   0: Same level, no modifier&lt;br /&gt;
  -5; For each level worse than the opponent&lt;br /&gt;
&lt;br /&gt;
So a level 5 PC fighting a level 1 rabbit gets a +40 bonus to flee. Since an NPC does not have skills, generally its level can be used as its skill. So a level 50 NPC&lt;br /&gt;
has a flee skill of 50.&lt;br /&gt;
&lt;br /&gt;
=== Search ===&lt;br /&gt;
&lt;br /&gt;
On any hidden item is a 'difficulty' rating on a scale of 0-100. It could technically go from 0-250 but that's just crazy.&lt;br /&gt;
It is denoted in the zone file as below with X being a number between 0 and 100:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;open {EX_OPEN, EX_CLOSE, EX_HIDDEN} difficulty X; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Searching depends on the searcher's skill level in searching as well as their brain ability. Each search attempt costs 20 endurance so that the player knows something is there. &lt;br /&gt;
The difficulty you choose for hidden exits is also the same difficulty the door would need to be if the lock were pick-able as there cannot be more than one difficulty per exit.&lt;br /&gt;
If a player's skill is average (50) then the skill check is to see the result of &amp;lt;code&amp;gt;(1d100 + skill) - 100 &amp;lt;/code&amp;gt;. Another way to note it would be &amp;lt;code&amp;gt;rnd(1,100) + skill - 100&amp;lt;/code&amp;gt; If the result is above 0 the search will be successful. Therefore if your skill is 0 you always fail an average swim roll is &amp;gt; 100. If your skill is 75 for an average swim, you succeed 75% of the time. If your skill is 100 then you always succeed. Remember that the open-ended roll can of course always offset even a sure success or fail.&lt;br /&gt;
=== Swim ===&lt;br /&gt;
&lt;br /&gt;
As above, the swim skill works much the same way. &lt;br /&gt;
The player commands are swim on/off or swim &amp;lt;direction&amp;gt;. &lt;br /&gt;
The room should have the &amp;lt;code&amp;gt; SECT_WATER_SAIL flag &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Notice in the example below, the difficulty for swimming east is 0. Because it's a very calm river in the light part of the forest. Swimming west is up-steam, but also into a dark cold part of the river. So it's set to 20. Swimming south to the toy zone is set to 5 because I figured you'd have to swim across the river.&lt;br /&gt;
In the following example notice how to denote a calm river, where the difficulty is 0. It's not a strong current and the area overall is a beginner's area. Swimming west from here is upstream so&lt;br /&gt;
you notice that the difficulty is higher whereas swimming south is kind of crossing the river and not as difficult. &lt;br /&gt;
&lt;br /&gt;
There is also an optional dil for rooms with currents. It will move anything in the room downstream after time and replaces the legacy &amp;lt;code&amp;gt;force_move&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;lightriver&lt;br /&gt;
title &amp;quot;On the River in Haon-Dor&amp;quot;&lt;br /&gt;
descr &amp;quot;The river slowly flows east towards the village of Udgaard. North you see a landing spot in the light part of the forest.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
movement SECT_WATER_SAIL&lt;br /&gt;
&lt;br /&gt;
north to rn_6018;&lt;br /&gt;
west  to darkriver2    difficulty 20 descr &amp;quot;Much further upstream the forest becomes more dense.&amp;quot;;&lt;br /&gt;
east  to river@udgaard difficulty 0  descr &amp;quot;The river continues to the east.&amp;quot;;&lt;br /&gt;
south to river1@toy    difficulty 5  descr &amp;quot;The river forks and bends south.&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
dilcopy watercurrent@basemove(DIR_EAST,{&lt;br /&gt;
          &amp;quot;The river current gently takes you east.&amp;quot;, &lt;br /&gt;
          &amp;quot;$1n gently flows away to the east.&amp;quot;, &lt;br /&gt;
          &amp;quot;You gently flow a little further eastwards.&amp;quot;, &lt;br /&gt;
          &amp;quot;$1n flows in from the west.&amp;quot;},&lt;br /&gt;
           5);&lt;br /&gt;
end&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Skills&amp;diff=558</id>
		<title>Manual:Game Mechanics/Skills</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Skills&amp;diff=558"/>
		<updated>2020-06-08T03:06:40Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Swim */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Skills ==&lt;br /&gt;
It seems skill (spells et. al) checks got kind of lost in the mists of time. Here is the general idea:&lt;br /&gt;
&lt;br /&gt;
Skills are all in [0..250]. Generally [0..100] for players.&lt;br /&gt;
&lt;br /&gt;
Players have a complete skill tree. NPCs have no skills, instead either an ability or their level is used based on the skill. As a rule of thumb a player's skill should roughly equal the player's level * 2 [??]. So a level 20 player should generally have a 40 [??] swim skill (some more, some less). An NPC would generally have a skill of 1 per level, often an ability is used in place of a skill.&lt;br /&gt;
&lt;br /&gt;
Skill checks are rolled open-ended 1d100.&lt;br /&gt;
&lt;br /&gt;
A general purpose table of the meaning of a skill level:&lt;br /&gt;
&lt;br /&gt;
   0: You're completely incompetent. No idea how to perform this skill. You might even panic.&lt;br /&gt;
  40: An average person's skill (real world), for example an average swimmer&lt;br /&gt;
 100: is the best (real world) human skill. &lt;br /&gt;
 200: is beyond what a human being could normally achieve, we're perhaps in the divine skill territory here.&lt;br /&gt;
&lt;br /&gt;
A general purpose table of a skill difficulty (e.g. how difficult are the swimming conditions):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that a char with a skill of N will fail half the time when the difficulty is N.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Swim Skill ===&lt;br /&gt;
Let's use swim as an example. A characters proficiency in swim in 0..100. The table below is a rough translation of a swimming skill.&lt;br /&gt;
&lt;br /&gt;
   0: You'll risk drowning in shallow water even if your feet can touch the bottom. &lt;br /&gt;
  40: An average (real world) swimmer&lt;br /&gt;
 100: is the best human swimmer in the (real) world. &lt;br /&gt;
 200: is the most divine swimmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now imaging having swim in average conditions. If your skill is average (50) then the skill check &lt;br /&gt;
is to see the result of (1d100 + skill) - 100. If the result is above 0 the swim was a success.&lt;br /&gt;
Therefore if your skill is 0 you always fail an average swim roll is &amp;gt; 100. If your skill is 75&lt;br /&gt;
for an average swim, you succeed 75% of the time. If your skill is 100 then you always&lt;br /&gt;
succeed. Remember that the open-ended roll can of course always offset even a sure success or&lt;br /&gt;
fail.&lt;br /&gt;
&lt;br /&gt;
A room's swim difficulty could be:&lt;br /&gt;
&lt;br /&gt;
    0: Super easy. &lt;br /&gt;
    .&lt;br /&gt;
    .&lt;br /&gt;
  100 A super difficult swim. It would mean even the (real world's) best swimmer would fail half the time under these circumstances. Players with 200 skill succeed always (except OE).&lt;br /&gt;
  150 The world's best swimmer would &lt;br /&gt;
&lt;br /&gt;
A character that fails a skill check might be swallowing water if the fail is [0..-20]. And might&lt;br /&gt;
take one hp damage per 10 failure if the result is worse than -20.&lt;br /&gt;
&lt;br /&gt;
The function skillcheck() captures precisely this setup.&lt;br /&gt;
&lt;br /&gt;
=== Flee ===&lt;br /&gt;
&lt;br /&gt;
For a skill like flee, the difficulty could be an expression of the character's and opponent levels compared.&lt;br /&gt;
&lt;br /&gt;
  +5: For each level better than the opponent&lt;br /&gt;
   0: Same level, no modifier&lt;br /&gt;
  -5; For each level worse than the opponent&lt;br /&gt;
&lt;br /&gt;
So a level 5 PC fighting a level 1 rabbit gets a +40 bonus to flee. Since an NPC does not have skills, generally its level can be used as its skill. So a level 50 NPC&lt;br /&gt;
has a flee skill of 50.&lt;br /&gt;
&lt;br /&gt;
=== Search ===&lt;br /&gt;
&lt;br /&gt;
On any hidden item is a 'difficulty' rating on a scale of 0-100. It could technically go from 0-250 but that's just crazy.&lt;br /&gt;
It is denoted in the zone file as below with X being a number between 0 and 100:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;open {EX_OPEN, EX_CLOSE, EX_HIDDEN} difficulty X; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Searching depends on the searcher's skill level in searching as well as their brain ability. Each search attempt costs 20 endurance so that the player knows something is there. &lt;br /&gt;
The difficulty you choose for hidden exits is also the same difficulty the door would need to be if the lock were pick-able as there cannot be more than one difficulty per exit.&lt;br /&gt;
If a player's skill is average (50) then the skill check is to see the result of &amp;lt;code&amp;gt;(1d100 + skill) - 100 &amp;lt;/code&amp;gt;. Another way to note it would be &amp;lt;code&amp;gt;rnd(1,100) + skill - 100&amp;lt;/code&amp;gt; If the result is above 0 the search will be successful. Therefore if your skill is 0 you always fail an average swim roll is &amp;gt; 100. If your skill is 75 for an average swim, you succeed 75% of the time. If your skill is 100 then you always succeed. Remember that the open-ended roll can of course always offset even a sure success or fail.&lt;br /&gt;
=== Swim ===&lt;br /&gt;
&lt;br /&gt;
As above, the swim skill works much the same way. &lt;br /&gt;
The player commands are swim on/off or swim &amp;lt;direction&amp;gt;. &lt;br /&gt;
The room should have the &amp;lt;code&amp;gt; SECT_WATER_SAIL flag &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Haon-Dor of course is a beginner's area.&lt;br /&gt;
&lt;br /&gt;
Notice in the example below, the difficulty for swimming east is 0. Because it's a very calm river in the light part of the forest. Swimming west is up-steam, but also into a dark cold part of the river. So it's set to 20. Swimming south to the toy zone is set to 5 because I figured you'd have to swim across the river.&lt;br /&gt;
In the following example notice how to denote a calm river, where the difficulty is 0. It's not a strong current and the area overall is a beginner's area. Swimming west from here is upstream so&lt;br /&gt;
you notice that the difficulty is higher whereas swimming south is kind of crossing the river and not as difficult. &lt;br /&gt;
&lt;br /&gt;
There is also an optional dil for rooms with currents. It will move anything in the room downstream after time and replaces the legacy &amp;lt;code&amp;gt;force_move&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;lightriver&lt;br /&gt;
title &amp;quot;On the River in Haon-Dor&amp;quot;&lt;br /&gt;
descr &amp;quot;The river slowly flows east towards the village of Udgaard. North you see a landing spot in the light part of the forest.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
movement SECT_WATER_SAIL&lt;br /&gt;
&lt;br /&gt;
north to rn_6018;&lt;br /&gt;
west  to darkriver2    difficulty 20 descr &amp;quot;Much further upstream the forest becomes more dense.&amp;quot;;&lt;br /&gt;
east  to river@udgaard difficulty 0  descr &amp;quot;The river continues to the east.&amp;quot;;&lt;br /&gt;
south to river1@toy    difficulty 5  descr &amp;quot;The river forks and bends south.&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
dilcopy watercurrent@basemove(DIR_EAST,{&lt;br /&gt;
          &amp;quot;The river current gently takes you east.&amp;quot;, &lt;br /&gt;
          &amp;quot;$1n gently flows away to the east.&amp;quot;, &lt;br /&gt;
          &amp;quot;You gently flow a little further eastwards.&amp;quot;, &lt;br /&gt;
          &amp;quot;$1n flows in from the west.&amp;quot;},&lt;br /&gt;
           5);&lt;br /&gt;
end&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Skills&amp;diff=557</id>
		<title>Manual:Game Mechanics/Skills</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:Game_Mechanics/Skills&amp;diff=557"/>
		<updated>2020-06-08T03:05:51Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Search */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Skills ==&lt;br /&gt;
It seems skill (spells et. al) checks got kind of lost in the mists of time. Here is the general idea:&lt;br /&gt;
&lt;br /&gt;
Skills are all in [0..250]. Generally [0..100] for players.&lt;br /&gt;
&lt;br /&gt;
Players have a complete skill tree. NPCs have no skills, instead either an ability or their level is used based on the skill. As a rule of thumb a player's skill should roughly equal the player's level * 2 [??]. So a level 20 player should generally have a 40 [??] swim skill (some more, some less). An NPC would generally have a skill of 1 per level, often an ability is used in place of a skill.&lt;br /&gt;
&lt;br /&gt;
Skill checks are rolled open-ended 1d100.&lt;br /&gt;
&lt;br /&gt;
A general purpose table of the meaning of a skill level:&lt;br /&gt;
&lt;br /&gt;
   0: You're completely incompetent. No idea how to perform this skill. You might even panic.&lt;br /&gt;
  40: An average person's skill (real world), for example an average swimmer&lt;br /&gt;
 100: is the best (real world) human skill. &lt;br /&gt;
 200: is beyond what a human being could normally achieve, we're perhaps in the divine skill territory here.&lt;br /&gt;
&lt;br /&gt;
A general purpose table of a skill difficulty (e.g. how difficult are the swimming conditions):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that a char with a skill of N will fail half the time when the difficulty is N.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Swim Skill ===&lt;br /&gt;
Let's use swim as an example. A characters proficiency in swim in 0..100. The table below is a rough translation of a swimming skill.&lt;br /&gt;
&lt;br /&gt;
   0: You'll risk drowning in shallow water even if your feet can touch the bottom. &lt;br /&gt;
  40: An average (real world) swimmer&lt;br /&gt;
 100: is the best human swimmer in the (real) world. &lt;br /&gt;
 200: is the most divine swimmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now imaging having swim in average conditions. If your skill is average (50) then the skill check &lt;br /&gt;
is to see the result of (1d100 + skill) - 100. If the result is above 0 the swim was a success.&lt;br /&gt;
Therefore if your skill is 0 you always fail an average swim roll is &amp;gt; 100. If your skill is 75&lt;br /&gt;
for an average swim, you succeed 75% of the time. If your skill is 100 then you always&lt;br /&gt;
succeed. Remember that the open-ended roll can of course always offset even a sure success or&lt;br /&gt;
fail.&lt;br /&gt;
&lt;br /&gt;
A room's swim difficulty could be:&lt;br /&gt;
&lt;br /&gt;
    0: Super easy. &lt;br /&gt;
    .&lt;br /&gt;
    .&lt;br /&gt;
  100 A super difficult swim. It would mean even the (real world's) best swimmer would fail half the time under these circumstances. Players with 200 skill succeed always (except OE).&lt;br /&gt;
  150 The world's best swimmer would &lt;br /&gt;
&lt;br /&gt;
A character that fails a skill check might be swallowing water if the fail is [0..-20]. And might&lt;br /&gt;
take one hp damage per 10 failure if the result is worse than -20.&lt;br /&gt;
&lt;br /&gt;
The function skillcheck() captures precisely this setup.&lt;br /&gt;
&lt;br /&gt;
=== Flee ===&lt;br /&gt;
&lt;br /&gt;
For a skill like flee, the difficulty could be an expression of the character's and opponent levels compared.&lt;br /&gt;
&lt;br /&gt;
  +5: For each level better than the opponent&lt;br /&gt;
   0: Same level, no modifier&lt;br /&gt;
  -5; For each level worse than the opponent&lt;br /&gt;
&lt;br /&gt;
So a level 5 PC fighting a level 1 rabbit gets a +40 bonus to flee. Since an NPC does not have skills, generally its level can be used as its skill. So a level 50 NPC&lt;br /&gt;
has a flee skill of 50.&lt;br /&gt;
&lt;br /&gt;
=== Search ===&lt;br /&gt;
&lt;br /&gt;
On any hidden item is a 'difficulty' rating on a scale of 0-100. It could technically go from 0-250 but that's just crazy.&lt;br /&gt;
It is denoted in the zone file as below with X being a number between 0 and 100:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;open {EX_OPEN, EX_CLOSE, EX_HIDDEN} difficulty X; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Searching depends on the searcher's skill level in searching as well as their brain ability. Each search attempt costs 20 endurance so that the player knows something is there. &lt;br /&gt;
The difficulty you choose for hidden exits is also the same difficulty the door would need to be if the lock were pick-able as there cannot be more than one difficulty per exit.&lt;br /&gt;
If a player's skill is average (50) then the skill check is to see the result of &amp;lt;code&amp;gt;(1d100 + skill) - 100 &amp;lt;/code&amp;gt;. Another way to note it would be &amp;lt;code&amp;gt;rnd(1,100) + skill - 100&amp;lt;/code&amp;gt; If the result is above 0 the search will be successful. Therefore if your skill is 0 you always fail an average swim roll is &amp;gt; 100. If your skill is 75 for an average swim, you succeed 75% of the time. If your skill is 100 then you always succeed. Remember that the open-ended roll can of course always offset even a sure success or fail.&lt;br /&gt;
=== Swim ===&lt;br /&gt;
&lt;br /&gt;
As above, the swim skill works much the same way. &lt;br /&gt;
The player commands are swim on/off or swim &amp;lt;direction&amp;gt;. &lt;br /&gt;
The room should have the &amp;lt;code&amp;gt; SECT_WATER_SAIL flag &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Haon-Dor of course is a beginner's area.&lt;br /&gt;
&lt;br /&gt;
Notice in the example below, the difficulty for swimming east is 0. Because it's a very calm river in the light part of the forest. Swimming west is up-steam, but also into a dark cold part of the river. So it's set to 20. Swimming south to the toy zone is set to 5 because I figured you'd have to swim across the river.&lt;br /&gt;
In the following example notice how to denote a calm river, where the difficulty is 0. It's not a strong current and the area overall is a beginner's area. Swimming west from here is upstream so&lt;br /&gt;
you notice that the difficulty is higher whereas swimming south is kind of crossing the river and not as difficult. &lt;br /&gt;
&lt;br /&gt;
There is also an optional dil for rooms with currents. It will move anything in the room downstream after time and replaces the legacy &amp;lt;code&amp;gt; force_move&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Example from Haon-Dor&lt;br /&gt;
&lt;br /&gt;
lightriver&lt;br /&gt;
title &amp;quot;On the River in Haon-Dor&amp;quot;&lt;br /&gt;
descr&amp;quot;The river slowly flows east towards the village of Udgaard. North you see a landing spot in the light part of the forest.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
movement SECT_WATER_SAIL&lt;br /&gt;
&lt;br /&gt;
north to rn_6018;&lt;br /&gt;
west  to darkriver2    difficulty 20 descr &amp;quot;Much further upstream the forest becomes more dense.&amp;quot;;&lt;br /&gt;
east  to river@udgaard difficulty 0  descr &amp;quot;The river continues to the east.&amp;quot;;&lt;br /&gt;
south to river1@toy    difficulty 5  descr &amp;quot;The river forks and bends south.&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
dilcopy watercurrent@basemove(DIR_EAST,{&lt;br /&gt;
          &amp;quot;The river current gently takes you east.&amp;quot;, &lt;br /&gt;
          &amp;quot;$1n gently flows away to the east.&amp;quot;, &lt;br /&gt;
          &amp;quot;You gently flow a little further eastwards.&amp;quot;, &lt;br /&gt;
          &amp;quot;$1n flows in from the west.&amp;quot;},&lt;br /&gt;
           5);&lt;br /&gt;
end&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:DIL_Examples&amp;diff=550</id>
		<title>Manual:DIL Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:DIL_Examples&amp;diff=550"/>
		<updated>2020-06-01T17:46:19Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* This Section */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Intro =&lt;br /&gt;
I put this section in here because while many programmers already know most of this inherently, many casual mudders have the curiosity and want to start building but don't know where to start with dil and the manual can be a bit overwhelming. &lt;br /&gt;
So this is a compilation of the most frequently asked questions and overall stumbling blocks we've seen for new coders. Hopefully it helps.&lt;br /&gt;
&lt;br /&gt;
= Construction =&lt;br /&gt;
Every DIL program has the following structure:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 dilbegin programname();&lt;br /&gt;
 var&lt;br /&gt;
 code&lt;br /&gt;
 {}&lt;br /&gt;
 dilend&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Every dil must run on an object. That object is always going to be 'self' to the program.&lt;br /&gt;
It will be running from one of the following things:&amp;lt;br&amp;gt;&lt;br /&gt;
* A room&lt;br /&gt;
* A mobile (npc)&lt;br /&gt;
* A player&lt;br /&gt;
* An object (thing)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keeping this in mind will help with your program's construction. You can also use dot notation to reference objects relative to the dil or the objects it interacts with.&lt;br /&gt;
Take &amp;lt;code&amp;gt;self.outside&amp;lt;/code&amp;gt; and we'll look at it from each of the object types.&lt;br /&gt;
&lt;br /&gt;
=== Dil On an Object ===&lt;br /&gt;
So let's say this particular DIL lives on a gem. The gem says nice things to you when it's held. &lt;br /&gt;
Considerations:&amp;lt;br&amp;gt;&lt;br /&gt;
Does it speak when you're incapacitated? Meditating? Fighting? &lt;br /&gt;
Does it speak when you're invisible? &lt;br /&gt;
Can other people hear it? &lt;br /&gt;
How often can it speak?&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;dilbegin gem_speak();&lt;br /&gt;
          var&lt;br /&gt;
          code &lt;br /&gt;
          {&lt;br /&gt;
             heartbeat := 90*PULSE_SEC; //every 90 seconds. &lt;br /&gt;
             :start:&lt;br /&gt;
             wait(SFB_TICK, TRUE and self.outside.type == UNIT_ST_PC and self.equip);&lt;br /&gt;
             act(&amp;quot;$1n says 'You look lovely today!'&amp;quot;, A_ALWAYS, self.outside, self, null, TO_CHAR);&lt;br /&gt;
             goto start;&lt;br /&gt;
          }&lt;br /&gt;
          dilend&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
In this example:&amp;lt;br&amp;gt;&lt;br /&gt;
* self.outside varies by where the object is. If it's in a bag, self.outside = the bag. &lt;br /&gt;
** self. outside could also be an NPC if it's inside a mob. It could be a player. Remember, people can go in containers too!&lt;br /&gt;
* self.outside.outside.inside is a even a possibility! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DIL on an NPC ===&lt;br /&gt;
So this particular DIL will live on a NPC or mobile. Perhaps it will say &amp;quot;Greetings&amp;quot; every time an actual player enters the room.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;dilbegin hi();&lt;br /&gt;
         var&lt;br /&gt;
         code&lt;br /&gt;
         {&lt;br /&gt;
          :start: &lt;br /&gt;
          wait(SFB_DONE, command(CMD_AUTO_ENTER) and activator.type == UNIT_ST_PC);&lt;br /&gt;
          exec(&amp;quot;say Hello, &amp;quot;+ activator.name +&amp;quot;!&amp;quot;, self);&lt;br /&gt;
          goto start;&lt;br /&gt;
         }&lt;br /&gt;
         dilend&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example:&amp;lt;br&amp;gt;&lt;br /&gt;
* self.outside = the room the NPC is in.&lt;br /&gt;
* self.inside = the NPC's inventory.&lt;br /&gt;
=== Dil on a PC ===&lt;br /&gt;
&lt;br /&gt;
It's unlikely that you would begin anywhere near a dil on a player. Something to keep in mind if you are writing one is how it will react in a number of circumstances. ie:  When they die? What if it's a room with $no_spam? What if they're in nightmare? What if they're in a no-tele zone? What if they're fighting? Who are they fighting? Will it provoke an attack? These are just a few things to keep in mind.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:DIL_Examples&amp;diff=549</id>
		<title>Manual:DIL Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:DIL_Examples&amp;diff=549"/>
		<updated>2020-06-01T17:45:55Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Construction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= This Section =&lt;br /&gt;
I put this section in here because while many programmers already know most of this inherently, many casual mudders have the curiosity and want to start building but don't know where to start with dil and the manual can be a bit overwhelming. &lt;br /&gt;
So this is a compilation of the most frequently asked questions and overall stumbling blocks we've seen for new coders. Hopefully it helps.&lt;br /&gt;
= Construction =&lt;br /&gt;
Every DIL program has the following structure:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 dilbegin programname();&lt;br /&gt;
 var&lt;br /&gt;
 code&lt;br /&gt;
 {}&lt;br /&gt;
 dilend&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Every dil must run on an object. That object is always going to be 'self' to the program.&lt;br /&gt;
It will be running from one of the following things:&amp;lt;br&amp;gt;&lt;br /&gt;
* A room&lt;br /&gt;
* A mobile (npc)&lt;br /&gt;
* A player&lt;br /&gt;
* An object (thing)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keeping this in mind will help with your program's construction. You can also use dot notation to reference objects relative to the dil or the objects it interacts with.&lt;br /&gt;
Take &amp;lt;code&amp;gt;self.outside&amp;lt;/code&amp;gt; and we'll look at it from each of the object types.&lt;br /&gt;
&lt;br /&gt;
=== Dil On an Object ===&lt;br /&gt;
So let's say this particular DIL lives on a gem. The gem says nice things to you when it's held. &lt;br /&gt;
Considerations:&amp;lt;br&amp;gt;&lt;br /&gt;
Does it speak when you're incapacitated? Meditating? Fighting? &lt;br /&gt;
Does it speak when you're invisible? &lt;br /&gt;
Can other people hear it? &lt;br /&gt;
How often can it speak?&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;dilbegin gem_speak();&lt;br /&gt;
          var&lt;br /&gt;
          code &lt;br /&gt;
          {&lt;br /&gt;
             heartbeat := 90*PULSE_SEC; //every 90 seconds. &lt;br /&gt;
             :start:&lt;br /&gt;
             wait(SFB_TICK, TRUE and self.outside.type == UNIT_ST_PC and self.equip);&lt;br /&gt;
             act(&amp;quot;$1n says 'You look lovely today!'&amp;quot;, A_ALWAYS, self.outside, self, null, TO_CHAR);&lt;br /&gt;
             goto start;&lt;br /&gt;
          }&lt;br /&gt;
          dilend&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
In this example:&amp;lt;br&amp;gt;&lt;br /&gt;
* self.outside varies by where the object is. If it's in a bag, self.outside = the bag. &lt;br /&gt;
** self. outside could also be an NPC if it's inside a mob. It could be a player. Remember, people can go in containers too!&lt;br /&gt;
* self.outside.outside.inside is a even a possibility! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DIL on an NPC ===&lt;br /&gt;
So this particular DIL will live on a NPC or mobile. Perhaps it will say &amp;quot;Greetings&amp;quot; every time an actual player enters the room.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;dilbegin hi();&lt;br /&gt;
         var&lt;br /&gt;
         code&lt;br /&gt;
         {&lt;br /&gt;
          :start: &lt;br /&gt;
          wait(SFB_DONE, command(CMD_AUTO_ENTER) and activator.type == UNIT_ST_PC);&lt;br /&gt;
          exec(&amp;quot;say Hello, &amp;quot;+ activator.name +&amp;quot;!&amp;quot;, self);&lt;br /&gt;
          goto start;&lt;br /&gt;
         }&lt;br /&gt;
         dilend&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example:&amp;lt;br&amp;gt;&lt;br /&gt;
* self.outside = the room the NPC is in.&lt;br /&gt;
* self.inside = the NPC's inventory.&lt;br /&gt;
=== Dil on a PC ===&lt;br /&gt;
&lt;br /&gt;
It's unlikely that you would begin anywhere near a dil on a player. Something to keep in mind if you are writing one is how it will react in a number of circumstances. ie:  When they die? What if it's a room with $no_spam? What if they're in nightmare? What if they're in a no-tele zone? What if they're fighting? Who are they fighting? Will it provoke an attack? These are just a few things to keep in mind.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:DIL_Examples&amp;diff=548</id>
		<title>Manual:DIL Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:DIL_Examples&amp;diff=548"/>
		<updated>2020-06-01T17:36:43Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Construction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= This Section =&lt;br /&gt;
I put this section in here because while many programmers already know most of this inherently, many casual mudders have the curiosity and want to start building but don't know where to start with dil and the manual can be a bit overwhelming. &lt;br /&gt;
So this is a compilation of the most frequently asked questions and overall stumbling blocks we've seen for new coders. Hopefully it helps.&lt;br /&gt;
= Construction =&lt;br /&gt;
Every DIL program has the following structure:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 dilbegin programname();&lt;br /&gt;
 var&lt;br /&gt;
 code&lt;br /&gt;
 {}&lt;br /&gt;
 dilend&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Every dil must run on an object. That object is always going to be 'self' to the program.&lt;br /&gt;
It will be running from one of the following things:&amp;lt;br&amp;gt;&lt;br /&gt;
* A room&lt;br /&gt;
* A mobile (npc)&lt;br /&gt;
* A player&lt;br /&gt;
* An object (thing)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keeping this in mind will help with your program's construction. You can also use dot notation to reference objects relative to the dil or the objects it interacts with.&lt;br /&gt;
Take &amp;lt;code&amp;gt;self.outside&amp;lt;/code&amp;gt; and we'll look at it from each of the object types.&lt;br /&gt;
&lt;br /&gt;
=== Dil On an Object ===&lt;br /&gt;
So let's say this particular DIL lives on a gem. The gem says nice things to you when it's held. &lt;br /&gt;
Considerations:&amp;lt;br&amp;gt;&lt;br /&gt;
Does it speak when you're incapacitated? Meditating? Fighting? &lt;br /&gt;
Does it speak when you're invisible? &lt;br /&gt;
Can other people hear it? &lt;br /&gt;
How often can it speak?&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;dilbegin gem_speak();&lt;br /&gt;
          var&lt;br /&gt;
          code &lt;br /&gt;
          {&lt;br /&gt;
             heartbeat := 90*PULSE_SEC; //every 90 seconds. &lt;br /&gt;
             :start:&lt;br /&gt;
             wait(SFB_TICK, TRUE and self.outside.type == UNIT_ST_PC and self.equip);&lt;br /&gt;
             act(&amp;quot;$1n says 'You look lovely today!'&amp;quot;, A_ALWAYS, self.outside, self, null, TO_CHAR);&lt;br /&gt;
             goto start;&lt;br /&gt;
          }&lt;br /&gt;
          dilend&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
In this example:&amp;lt;br&amp;gt;&lt;br /&gt;
* self.outside varies by where the object is. If it's in a bag, self.outside = the bag. &lt;br /&gt;
** self. outside could also be an NPC if it's inside a mob. It could be a player. Remember, people can go in containers too!&lt;br /&gt;
* self.outside.outside.inside is a even a possibility! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DIL on an NPC ===&lt;br /&gt;
So this particular DIL will live on a NPC or mobile. Perhaps it will say &amp;quot;Greetings&amp;quot; every time an actual player enters the room.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;dilbegin hi();&lt;br /&gt;
         var&lt;br /&gt;
         code&lt;br /&gt;
         {&lt;br /&gt;
          :start: &lt;br /&gt;
          wait(SFB_DONE, command(CMD_AUTO_ENTER) and activator.type == UNIT_ST_PC);&lt;br /&gt;
          exec(&amp;quot;say Hello, &amp;quot;+ activator.name +&amp;quot;!&amp;quot;, self);&lt;br /&gt;
          goto start;&lt;br /&gt;
         }&lt;br /&gt;
         dilend&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example:&amp;lt;br&amp;gt;&lt;br /&gt;
* self.outside = the room the NPC is in.&lt;br /&gt;
* self.inside = the NPC's inventory.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:DIL_Examples&amp;diff=547</id>
		<title>Manual:DIL Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:DIL_Examples&amp;diff=547"/>
		<updated>2020-06-01T14:38:08Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* DIL on an NPC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Construction =&lt;br /&gt;
Every DIL program has the following structure:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 dilbegin programname();&lt;br /&gt;
 var&lt;br /&gt;
 code&lt;br /&gt;
 {}&lt;br /&gt;
 dilend&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It's nice to think about dils in different categories.&lt;br /&gt;
&lt;br /&gt;
Every dil must run on an object. That object is always going to be 'self' to the program.&lt;br /&gt;
It will be running from one of the following things:&amp;lt;br&amp;gt;&lt;br /&gt;
* A room&lt;br /&gt;
* A mobile (npc)&lt;br /&gt;
* A player&lt;br /&gt;
* An object (thing)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keeping this in mind will help with your program's construction. You can also use dot notation to reference objects relative to the dil or the objects it interacts with.&lt;br /&gt;
Take &amp;lt;code&amp;gt;self.outside&amp;lt;/code&amp;gt; and we'll look at it from each of the object types.&lt;br /&gt;
=== Dil On an Object ===&lt;br /&gt;
So let's say this particular DIL lives on a gem. The gem says nice things to you when it's held. &lt;br /&gt;
Considerations:&amp;lt;br&amp;gt;&lt;br /&gt;
Does it speak when you're incapacitated? Meditating? Fighting? &lt;br /&gt;
Does it speak when you're invisible? &lt;br /&gt;
Can other people hear it? &lt;br /&gt;
How often can it speak?&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;dilbegin gem_speak();&lt;br /&gt;
          var&lt;br /&gt;
          code &lt;br /&gt;
          {&lt;br /&gt;
             heartbeat := 90*PULSE_SEC; //every 90 seconds. &lt;br /&gt;
             :start:&lt;br /&gt;
             wait(SFB_TICK, TRUE and self.outside.type == UNIT_ST_PC and self.equip);&lt;br /&gt;
             act(&amp;quot;$1n says 'You look lovely today!'&amp;quot;, A_ALWAYS, self.outside, self, null, TO_CHAR);&lt;br /&gt;
             goto start;&lt;br /&gt;
          }&lt;br /&gt;
          dilend&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
In this example:&amp;lt;br&amp;gt;&lt;br /&gt;
* self.outside varies by where the object is. If it's in a bag, self.outside = the bag. &lt;br /&gt;
** self. outside could also be an NPC if it's inside a mob. It could be a player. Remember, people can go in containers too!&lt;br /&gt;
&lt;br /&gt;
=== DIL on an NPC ===&lt;br /&gt;
So this particular DIL will live on a NPC or mobile. Perhaps it will say &amp;quot;Greetings&amp;quot; every time an actual player enters the room.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;dilbegin hi();&lt;br /&gt;
         var&lt;br /&gt;
         code&lt;br /&gt;
         {&lt;br /&gt;
          :start: &lt;br /&gt;
          wait(SFB_DONE, command(CMD_AUTO_ENTER) and activator.type == UNIT_ST_PC);&lt;br /&gt;
          exec(&amp;quot;say Hello, &amp;quot;+ activator.name +&amp;quot;!&amp;quot;, self);&lt;br /&gt;
          goto start;&lt;br /&gt;
         }&lt;br /&gt;
         dilend&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example:&amp;lt;br&amp;gt;&lt;br /&gt;
* self.outside = the room the NPC is in.&lt;br /&gt;
* self.inside = the NPC's inventory.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:DIL_Examples&amp;diff=546</id>
		<title>Manual:DIL Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:DIL_Examples&amp;diff=546"/>
		<updated>2020-06-01T14:37:43Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* Dil On an Object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Construction =&lt;br /&gt;
Every DIL program has the following structure:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 dilbegin programname();&lt;br /&gt;
 var&lt;br /&gt;
 code&lt;br /&gt;
 {}&lt;br /&gt;
 dilend&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It's nice to think about dils in different categories.&lt;br /&gt;
&lt;br /&gt;
Every dil must run on an object. That object is always going to be 'self' to the program.&lt;br /&gt;
It will be running from one of the following things:&amp;lt;br&amp;gt;&lt;br /&gt;
* A room&lt;br /&gt;
* A mobile (npc)&lt;br /&gt;
* A player&lt;br /&gt;
* An object (thing)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keeping this in mind will help with your program's construction. You can also use dot notation to reference objects relative to the dil or the objects it interacts with.&lt;br /&gt;
Take &amp;lt;code&amp;gt;self.outside&amp;lt;/code&amp;gt; and we'll look at it from each of the object types.&lt;br /&gt;
=== Dil On an Object ===&lt;br /&gt;
So let's say this particular DIL lives on a gem. The gem says nice things to you when it's held. &lt;br /&gt;
Considerations:&amp;lt;br&amp;gt;&lt;br /&gt;
Does it speak when you're incapacitated? Meditating? Fighting? &lt;br /&gt;
Does it speak when you're invisible? &lt;br /&gt;
Can other people hear it? &lt;br /&gt;
How often can it speak?&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;dilbegin gem_speak();&lt;br /&gt;
          var&lt;br /&gt;
          code &lt;br /&gt;
          {&lt;br /&gt;
             heartbeat := 90*PULSE_SEC; //every 90 seconds. &lt;br /&gt;
             :start:&lt;br /&gt;
             wait(SFB_TICK, TRUE and self.outside.type == UNIT_ST_PC and self.equip);&lt;br /&gt;
             act(&amp;quot;$1n says 'You look lovely today!'&amp;quot;, A_ALWAYS, self.outside, self, null, TO_CHAR);&lt;br /&gt;
             goto start;&lt;br /&gt;
          }&lt;br /&gt;
          dilend&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
In this example:&amp;lt;br&amp;gt;&lt;br /&gt;
* self.outside varies by where the object is. If it's in a bag, self.outside = the bag. &lt;br /&gt;
** self. outside could also be an NPC if it's inside a mob. It could be a player. Remember, people can go in containers too!&lt;br /&gt;
&lt;br /&gt;
=== DIL on an NPC ===&lt;br /&gt;
So this particular DIL will live on a NPC or mobile. Perhaps it will say &amp;quot;Greetings&amp;quot; every time an actual player enters the room.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;dilbegin hi();&lt;br /&gt;
         var&lt;br /&gt;
         code&lt;br /&gt;
         {&lt;br /&gt;
          :start: &lt;br /&gt;
          wait(SFB_DONE, command(CMD_AUTO_ENTER) and activator.type == UNIT_ST_PC);&lt;br /&gt;
          exec(&amp;quot;say Hello, &amp;quot;+ activator.name +&amp;quot;!&amp;quot;, self);&lt;br /&gt;
          goto start;&lt;br /&gt;
         }&lt;br /&gt;
         dilend&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example:&lt;br /&gt;
self.outside = the room the NPC is in.&lt;br /&gt;
self.inside = the NPC's inventory.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dikumud.com/index.php?title=Manual:DIL_Examples&amp;diff=545</id>
		<title>Manual:DIL Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.dikumud.com/index.php?title=Manual:DIL_Examples&amp;diff=545"/>
		<updated>2020-06-01T14:36:14Z</updated>

		<summary type="html">&lt;p&gt;Aja: /* DIL on an NPC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Construction =&lt;br /&gt;
Every DIL program has the following structure:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 dilbegin programname();&lt;br /&gt;
 var&lt;br /&gt;
 code&lt;br /&gt;
 {}&lt;br /&gt;
 dilend&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It's nice to think about dils in different categories.&lt;br /&gt;
&lt;br /&gt;
Every dil must run on an object. That object is always going to be 'self' to the program.&lt;br /&gt;
It will be running from one of the following things:&amp;lt;br&amp;gt;&lt;br /&gt;
* A room&lt;br /&gt;
* A mobile (npc)&lt;br /&gt;
* A player&lt;br /&gt;
* An object (thing)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keeping this in mind will help with your program's construction. You can also use dot notation to reference objects relative to the dil or the objects it interacts with.&lt;br /&gt;
Take &amp;lt;code&amp;gt;self.outside&amp;lt;/code&amp;gt; and we'll look at it from each of the object types.&lt;br /&gt;
=== Dil On an Object ===&lt;br /&gt;
So let's say this particular DIL lives on a gem. The gem says nice things to you when it's held. &lt;br /&gt;
Considerations:&amp;lt;br&amp;gt;&lt;br /&gt;
Does it speak when you're incapacitated? Meditating? Fighting? &lt;br /&gt;
Does it speak when you're invisible? &lt;br /&gt;
Can other people hear it? &lt;br /&gt;
How often can it speak?&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;dilbegin gem_speak();&lt;br /&gt;
          var&lt;br /&gt;
          code &lt;br /&gt;
          {&lt;br /&gt;
             heartbeat := 90*PULSE_SEC; //every 90 seconds. &lt;br /&gt;
             :start:&lt;br /&gt;
             wait(SFB_TICK, TRUE and self.outside.type == UNIT_ST_PC and self.equip);&lt;br /&gt;
             act(&amp;quot;$1n says 'You look lovely today!'&amp;quot;, A_ALWAYS, self.outside, self, null, TO_CHAR);&lt;br /&gt;
             goto start;&lt;br /&gt;
          }&lt;br /&gt;
          dilend&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DIL on an NPC ===&lt;br /&gt;
So this particular DIL will live on a NPC or mobile. Perhaps it will say &amp;quot;Greetings&amp;quot; every time an actual player enters the room.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;dilbegin hi();&lt;br /&gt;
         var&lt;br /&gt;
         code&lt;br /&gt;
         {&lt;br /&gt;
          :start: &lt;br /&gt;
          wait(SFB_DONE, command(CMD_AUTO_ENTER) and activator.type == UNIT_ST_PC);&lt;br /&gt;
          exec(&amp;quot;say Hello, &amp;quot;+ activator.name +&amp;quot;!&amp;quot;, self);&lt;br /&gt;
          goto start;&lt;br /&gt;
         }&lt;br /&gt;
         dilend&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example:&lt;br /&gt;
self.outside = the room the NPC is in.&lt;br /&gt;
self.inside = the NPC's inventory.&lt;/div&gt;</summary>
		<author><name>Aja</name></author>
		
	</entry>
</feed>