<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://planeshift.top-ix.org//pswiki/index.php?action=history&amp;feed=atom&amp;title=Network_Protocol_Concepts</id>
	<title>Network Protocol Concepts - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://planeshift.top-ix.org//pswiki/index.php?action=history&amp;feed=atom&amp;title=Network_Protocol_Concepts"/>
	<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Network_Protocol_Concepts&amp;action=history"/>
	<updated>2026-04-06T23:11:15Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Network_Protocol_Concepts&amp;diff=9910&amp;oldid=prev</id>
		<title>Magodra: /* Perceptions */</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Network_Protocol_Concepts&amp;diff=9910&amp;oldid=prev"/>
		<updated>2013-01-12T10:13:45Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Perceptions&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:13, 12 January 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l85&quot;&gt;Line 85:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 85:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;this. The superclient managing the now-dead npc must shut down his AI and&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;this. The superclient managing the now-dead npc must shut down his AI and&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;stop him from moving. If the dead entity is a player, the npc may want to&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;stop him from moving. If the dead entity is a player, the npc may want to&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;remove the player from his &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;hatelist &lt;/del&gt;or stop attacking and so on.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;remove the player from his &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[hate list]] &lt;/ins&gt;or stop attacking and so on.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Magodra</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Network_Protocol_Concepts&amp;diff=9318&amp;oldid=prev</id>
		<title>Magodra: /* Perceptions */</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Network_Protocol_Concepts&amp;diff=9318&amp;oldid=prev"/>
		<updated>2011-12-23T11:08:40Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Perceptions&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:08, 23 December 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l94&quot;&gt;Line 94:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 94:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Engine documents]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Engine documents&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]] [[Category:NPCClient Design&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Magodra</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Network_Protocol_Concepts&amp;diff=7305&amp;oldid=prev</id>
		<title>Ethryn: add to category (Engine documents)</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Network_Protocol_Concepts&amp;diff=7305&amp;oldid=prev"/>
		<updated>2010-10-23T00:08:56Z</updated>

		<summary type="html">&lt;p&gt;add to category (Engine documents)&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 00:08, 23 October 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l92&quot;&gt;Line 92:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 92:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;that do not come from the Game Server. These are primarily things which are CPU-intensive to&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;that do not come from the Game Server. These are primarily things which are CPU-intensive to&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;determine and beyond the budget of the Game Server NPC manager to handle.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;determine and beyond the budget of the Game Server NPC manager to handle.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Engine documents]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ethryn</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Network_Protocol_Concepts&amp;diff=7126&amp;oldid=prev</id>
		<title>Talad: Created page with &#039;Any AI system implementer will need to understand what information his creatures will have available to them and when, so he/she can work within that system to determine behavior…&#039;</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Network_Protocol_Concepts&amp;diff=7126&amp;oldid=prev"/>
		<updated>2010-10-12T21:23:22Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;#039;Any AI system implementer will need to understand what information his creatures will have available to them and when, so he/she can work within that system to determine behavior…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Any AI system implementer will need to understand what information his creatures will have&lt;br /&gt;
available to them and when, so he/she can work within that system to determine behavior. This&lt;br /&gt;
section will not be a detailed explanation of each networking message, but instead an overview of&lt;br /&gt;
the types of information npcclient gets from the game server and sends to the game server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Perceptions ==&lt;br /&gt;
&lt;br /&gt;
The most important thing to understand is the superclient event model. The Game Server notifies&lt;br /&gt;
all superclients of events relevant to them, and it is up to each superclient to decide when/how/if to&lt;br /&gt;
react to each event. This constant stream of events, along with periodic updates of entity positions,&lt;br /&gt;
represents all the info each superclient knows about the world from the game server. (Superclients&lt;br /&gt;
of course track their own information as well.)&lt;br /&gt;
&lt;br /&gt;
The following is a list of perception events the server sends to superclients such as npcclient,&lt;br /&gt;
together with their purpose and what a superclient might use them for.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Time of Day&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|The Game Server sends a Time perception once per game hour to all&lt;br /&gt;
superclients, with a number from 0 to 23 indicating the hour. If a superclient&lt;br /&gt;
needs more fine-grained time reactions, the superclient can generate time&lt;br /&gt;
perceptions of its own in between and react accordingly.&lt;br /&gt;
&lt;br /&gt;
This perception allows npcs to change behaviors or state depending on the&lt;br /&gt;
time of day. For example, you could have nocturnal hunting creatures who&lt;br /&gt;
sleep during the day, or npc city merchants who are in their shops during the&lt;br /&gt;
day and at home at night.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Talking&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|If a player attempts to talk to an NPC, the Game Server handles the dialog&lt;br /&gt;
aspect of this event. It was viewed as beneficial to have one central database&lt;br /&gt;
of dialog for NPCs, and as not beneficial to have multiple implementations of&lt;br /&gt;
dialog algorithms across superclients, so this is all centralized.&lt;br /&gt;
&lt;br /&gt;
However, NPC behavior surrounding this dialog is entirely determined by the&lt;br /&gt;
superclient. The Game Server will never move an NPC or make an NPC&lt;br /&gt;
animate without being told to by the superclient managing that NPC.&lt;br /&gt;
&lt;br /&gt;
This Talk perception message allows the superclient to turn a city merchant&lt;br /&gt;
to face the speaker, or to make the Orc attack if spoken to, etc. To assist with&lt;br /&gt;
different reactions depending on the player, the worst mutual faction score&lt;br /&gt;
between player and NPC is sent with this perception.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Attack&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|If a player attacks an NPC, his superclient is immediately notified even&lt;br /&gt;
though it may take 2-5 seconds for the first swing of the weapon to land.&lt;br /&gt;
This isn’t strictly fair but can help compensate for the lagtime to the&lt;br /&gt;
superclient and will allow fast-fighting NPCs to hit first even when attacked.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Group Attack&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|If a player is a part of a group, NPC tactics will change slightly. The NPC&lt;br /&gt;
may not want to strictly always fight back against the melee fighter, but may&lt;br /&gt;
decide to pick out the wizard in the group, or the healer or the rogue. This&lt;br /&gt;
perception sends the list of entities in the attacking group and includes a&lt;br /&gt;
specifier on each one of what their single highest ranking skill is, to give the&lt;br /&gt;
NPC some idea of what he is up against.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Damage&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Whenever the HP of an NPC goes down, whether through melee, fall&lt;br /&gt;
damage, spells hitting him or whatever, the superclient managing that NPC&lt;br /&gt;
gets this perception. The entity is specified (if any) that caused the damage&lt;br /&gt;
and the amount of HP lost are both sent as part of the perception. NPCs can&lt;br /&gt;
use this to manage their hate lists or help them decide who to attack and how&lt;br /&gt;
to fight back, or run to escape, etc.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Spell&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|If a spell is cast by any player, the perception of it is sent to all superclients.&lt;br /&gt;
The perception should be broadcast internally in the superclient to any npc&lt;br /&gt;
that is within 20m of the spell caster. Each perception comes with the&lt;br /&gt;
category of the spell, as defined in the spells table in the game server&lt;br /&gt;
database, the severity of the spell (also defined in that table) as a number&lt;br /&gt;
between 0 and 25, and the caster and target entities.&lt;br /&gt;
&lt;br /&gt;
Each NPC evaluates the caster and target to decide on friend or foe, then&lt;br /&gt;
decides how to react to that spell type, given its severity. For example, a&lt;br /&gt;
direct damage spell cast on the NPC himself may not require any further&lt;br /&gt;
reaction because the NPC will receive a Damage perception covering the&lt;br /&gt;
same event. If the caster heals her groupmate though, and her groupmate is&lt;br /&gt;
fighting the NPC, this could make the NPC hate the caster more even though&lt;br /&gt;
the spell did not directly affect the NPC.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Death&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|If a player or an npc dies, the Game Server notifies all the superclients about&lt;br /&gt;
this. The superclient managing the now-dead npc must shut down his AI and&lt;br /&gt;
stop him from moving. If the dead entity is a player, the npc may want to&lt;br /&gt;
remove the player from his hatelist or stop attacking and so on.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This list is expected to grow somewhat over time, but these are the basics and it probably shouldn’t&lt;br /&gt;
get too long. NPCClient also makes use of the perception system to generate its own perceptions&lt;br /&gt;
that do not come from the Game Server. These are primarily things which are CPU-intensive to&lt;br /&gt;
determine and beyond the budget of the Game Server NPC manager to handle.&lt;/div&gt;</summary>
		<author><name>Talad</name></author>
	</entry>
</feed>