<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.larian.game/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Baardvark</id>
	<title>Divinity Engine Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.larian.game/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Baardvark"/>
	<link rel="alternate" type="text/html" href="https://docs.larian.game/Special:Contributions/Baardvark"/>
	<updated>2026-05-13T05:59:32Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=4016</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=4016"/>
		<updated>2017-10-17T22:41:48Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting. Almost any kind of skill is possible, though some things are more difficult than others. Skills, like most stats, can be edited in both the editor's stat editor and directly in a text editor. Both have their advantages, though it is recommended you start with adding skills in the stat editor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Type == &lt;br /&gt;
&lt;br /&gt;
Skill Type determines the fundamental behavior of the skill and what parameters are available to edit.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
== Basic Parameters ==&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. When referencing the skill (e.g., in a skillbook), the skill is referred to by ''Skilltype_Skillname''&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
== Damage ==&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''DeathType''', the death animation and effect the skill generates.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
== Range ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* '''Requirement''', a weapon requirement: StaffWeapon, MeleeWeapon, RangedWeapon, DaggerWeapon, ShieldWeapon, None&lt;br /&gt;
* '''Requirements''', conditional requirements: Combat, Immobile (typically checking !Immobile for teleport skills)&lt;br /&gt;
* '''Memorization Requirements''', ability requirements (e.g., RangerLore 2, or Sneaking 1) to memorize the skill&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetConditions''', what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
* '''AOEConditions''', conditions for an AOEBoost skill property.&lt;br /&gt;
* '''ForceTarget''', If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
* '''CanTargetCharacters''', if yes, can target characters&lt;br /&gt;
* '''CanTargetItems''', If yes, can target items.&lt;br /&gt;
* '''CanTargetTerrain''', If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;br /&gt;
&lt;br /&gt;
 Conditions: Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Note'': Combat should generally be a requirement, not a condition.&lt;br /&gt;
&lt;br /&gt;
'''Examples'''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|(HasStatus:BURNING)|SurfaceFire // target either entities standing in fire or burning, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // (Chain Heal) target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
== Skill Properties ==&lt;br /&gt;
&lt;br /&gt;
The ''SkillProperties'' parameter gives skills status effects and a few other specific effects. Like conditions, skill properties can take simple logic, usually in the following form &lt;br /&gt;
&lt;br /&gt;
'''TargetType:IF(Conditions):Action'''&lt;br /&gt;
&lt;br /&gt;
Property Actions&lt;br /&gt;
&lt;br /&gt;
* '''Statuses''', in the form of ''STATUS,Chance,Duration.''&lt;br /&gt;
* '''AOE dependent statuses''', with ''AOEBOOST:STATUS,Chance,Duration''&lt;br /&gt;
* '''Surface creation''', in the form of ''CreateSurface,Radius,?,SurfaceType,Chance,Duration?''&amp;quot;&lt;br /&gt;
* '''Target surface creation''', surfaces appear only on targets with ''TargetCreateSurface.''&lt;br /&gt;
* '''Cone surface creation''', surfaces appears in a cone area ''TargetCreateConeSurface''.&lt;br /&gt;
* '''Surface manipulation''', change a surface or cloud.&lt;br /&gt;
 Ignite, Melt, Freeze, Electrify, Bless, Curse, Condense, Vaporize, Bloodify, Contaminate, Oilify, Shatter&lt;br /&gt;
* '''Resurrect''', Revive a character with ''Resurrect,Chance?,VitalityOnRevived''.&lt;br /&gt;
* '''Backstab conditions''', including ''AlwaysBackstab'' and ''CanBackstab''.&lt;br /&gt;
* '''High ground''', use ''AlwaysHighGround'' to always grant a skill high ground bonuses.&lt;br /&gt;
* '''Equalize''', take vitality and armor percentages and equalize them among certain targets with ''Equalize, TargetType''.&lt;br /&gt;
* '''Summon''', for specific instances, you can summon characters with ''Summon,Template,Duration,SummonType,?.'' SummonType is totem or '-', for non-totem?&lt;br /&gt;
* '''Source''', steal source points with ''DRAIN,????''.&lt;br /&gt;
* '''Swap''', Swap places with your target with ''SwapPlaces,?,?,Effect,Effect''.&lt;br /&gt;
* '''Sabotage''', blow up a random arrow or grenade in an inventory with ''Sabotage,Amount.''&lt;br /&gt;
* '''Movement based damage''', with ''DAMAGE_ON_MOVE,Chance,Duration,?,?''.&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SkillProperties !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BLEEDING,100,2 || 100% chance to set bleeding for 2 turns&lt;br /&gt;
|-&lt;br /&gt;
| AOEBOOST:HARMONY,100,2 || Heal the target according to the number of allies within range (determined by area radius and AOEboost Conditions)&lt;br /&gt;
|-&lt;br /&gt;
| CreateSurface,2,,Fire,100,2 || 100% chance to create a circle of fire with 2m radius that lasts 2 rounds.&lt;br /&gt;
|-&lt;br /&gt;
| CLEANSE_WOUNDS,100,1;TargetCreateSurface,1,,Water || Heal targets and create water of 1m radius under them.&lt;br /&gt;
|-&lt;br /&gt;
| Equalize,All; Sabotage,1 || Equalize the health of a group of targets, and explode 1 random arrow or grenade in each of their inventories.&lt;br /&gt;
|-&lt;br /&gt;
| Resurrect,500,20 || Revive a character with 20% vitality.&lt;br /&gt;
|-&lt;br /&gt;
| SELF:IF(Surface:Fire):ARROWHEAD_FIRE,100,2 || If targeting a fire surface, apply fire damage buff to yourself for 2 turns.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S):INF_FIRE,100,-1 || If targeting an incarnate, permanently grant it fire infusion &lt;br /&gt;
|-&lt;br /&gt;
| Summon,4cd5defc-5d36-4d76-b606-b6ca69a13617,4,totem,Target_DummyTargetSkill; || Summon a bone totem for 4 turns. &lt;br /&gt;
|-&lt;br /&gt;
| Ignite;Melt;Contaminate || Explode existing oil and poison surfaces, melt ice, and turn water into poison&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S&amp;amp;(InSurface:SurfaceFire&amp;amp;#124;InSurface:SurfaceLava)):INF_FIRE,100,-1 || If target is incarnate and in fire or lava, permanently grant fire infusion.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
&lt;br /&gt;
Templates are used any skill that uses &amp;quot;entities&amp;quot; including projectiles, summons, and walls. The entry of a template is a root templates GUID. &lt;br /&gt;
&lt;br /&gt;
A projectile template defines the visual of the projectile, as well as its arc and the visual of the arc preview.&lt;br /&gt;
&lt;br /&gt;
Summon templates are the character or item summoned (either as a direct summon skill, or as an skill property Summon entry entry.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Name and Description ==&lt;br /&gt;
&lt;br /&gt;
Skill display name, description, and stats description use Translated String Keys to display text. However, the stats editor can automatically generate the translated strings with the &amp;quot;Export Translated String Keys&amp;quot; option in the menu.&lt;br /&gt;
&lt;br /&gt;
* ''DisplayName'', the primary display name of the skill seen by players.&lt;br /&gt;
* ''Description'', the main description of the skill. Often references StatsDescriptionParams with variables like [1], [2], etc, (see examples).&lt;br /&gt;
* ''StatsDescription'', a small secondary description below the main description and effects. Typically something unchanging, like the range, or detailed comments about how statuses or the skill functions.&lt;br /&gt;
* ''StatsDescriptionParams'', the stats referenced by variables. The first entry will apply to [1], the second entry to [2], etc.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
* ''DisplayName'': Magical Poison Dart&lt;br /&gt;
* ''Description'': Cast a magical poisonous dart that does [1] damage.&lt;br /&gt;
* ''StatsDescription'': Range: [2]&amp;lt;nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt;Poisoned deals poison damage over time.&amp;lt;nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt;Can target terrain to create ooze surface.&lt;br /&gt;
* ''StatsDescriptionParams'': Damage;TargetRadius&lt;br /&gt;
&lt;br /&gt;
== Icon, Animations and Effects ==&lt;br /&gt;
&lt;br /&gt;
It is easiest to use existing icons, animations and effects for your skills. There are many existing icons you can use, either unused from D:OS1, or used in very different contexts than skills. You may want to mix and match existing animations and spell effects from existing skills to create a more original feeling skill. The powerful effect editor will let you create new effects relatively easily, however. Creating new animations will require outside software and a great deal of work.&lt;br /&gt;
&lt;br /&gt;
* ''Icon'', the icon for the skill, which appears on the skillbar and skill screen&lt;br /&gt;
&lt;br /&gt;
* ''PrepareAnimationInit'', the initial animation to set up the looping animation when preparing the skill, before actually casting it (e.g., deciding where to shoot a projectile).&lt;br /&gt;
* ''PrepareAnimationLoop'', the looping animation after the Init animation. The Init and Loop animation should be of the same animation type.&lt;br /&gt;
* ''PrepareEffect'', any visual effects associated with preparing the skill, like electricity flowing between the hands. These typically are associated with the body, hands, feet, or above the head, in the form of ''Effect:Location''&lt;br /&gt;
&lt;br /&gt;
* ''CastAnimation'', the animation when actually using the skill. This should mach the type of prepare and loop effect as well.&lt;br /&gt;
* ''CastSelfAnimation'', the animation on the character when actually using the skill. Usually the same as CastAnimation ???&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Best Practice ==&lt;br /&gt;
&lt;br /&gt;
When designing skills, consider the niche it fills and what sort of flavor it has. Try to make the skill feel distinct, but easy to understand. A little flavor text and a good name can go a long way to making a skill interesting. Consider the roleplay value this skill might have in a GM mode.&lt;br /&gt;
&lt;br /&gt;
If you want the AI to use new skills intelligently, avoid scripting if you can. The AI can adapt to new skills, and can interpret the value of statuses with simple stat bonuses pr reductions. In general, a skill that does not depend on scripts will have less opportunity for bugs.&lt;br /&gt;
&lt;br /&gt;
If AI use is not a priority, and you've exhausted possibilities within the stats editor, then scripting can open up new opportunities. In general, the easiest way to script a skill is to have the skill apply a custom status, and use the OnStatusApplied(__Me,YOURSTATUS) trigger in a character script that every character this skill can be used on has (e.g., Base, or &amp;quot;Player&amp;quot; if this skill is only cast on players.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Stats]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Pak_Extractor_Guide&amp;diff=3706</id>
		<title>Pak Extractor Guide</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Pak_Extractor_Guide&amp;diff=3706"/>
		<updated>2017-10-10T17:37:13Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;While most of the game can be accessed through the editor, a few features remain outside of the editor. To access these, you'll need to extract the game files. You can do this using Norbyte's Extractor Tool, found [https://s3.eu-central-1.amazonaws.com/nb-stor/dos/ExportTool/ExportTool-v1.8.4.zip here].&lt;br /&gt;
&lt;br /&gt;
After downloading this tool, open it, and go to the &amp;quot;PAK / LSV Tools&amp;quot; tab. Select .pak file in your game data folder (usually SteamApps/common/Divinity Original Sin 2/Data), and a location to extract it to (not into the game data folder itself.) Most pertinent information will be found in Shared.pak. If extracting Shared.pak, it's a good idea to also extract the Patch pak files, in the order of lowest to highest, into the same folder as you extracted Shared.pak. For example, extract Shared.pak, then Patch.pak, then Patch2.pak, etc. Replace files if asked to do so.&lt;br /&gt;
&lt;br /&gt;
If you're looking for character creation presets, you'll find them in Shared's extracted Mods/Shared/CharacterCreation folder. Stats that are not currently available in the editor are found in Public/Shared/Stats/Generated.&lt;br /&gt;
&lt;br /&gt;
[[File:Pak Extractor.jpg|none|Norbyte's Pak Extractor]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Character_and_Item_Script_Triggers,_Calls,_and_Queries&amp;diff=3307</id>
		<title>Character and Item Script Triggers, Calls, and Queries</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Character_and_Item_Script_Triggers,_Calls,_and_Queries&amp;diff=3307"/>
		<updated>2017-09-28T01:59:05Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of almost every character and item script event trigger, call, and query. An event is what triggers the script, and always begin with ''On''. Queries provide information and are always inside an ''IF'' or ''CHECK.'' Calls are actions that are always after THEN.&lt;br /&gt;
&lt;br /&gt;
CharScript/ItemScript Functions&lt;br /&gt;
&lt;br /&gt;
== CALLS ==&lt;br /&gt;
&lt;br /&gt;
'''Set(OUT OBJECT:variable, OBJECT:value)'''&lt;br /&gt;
&lt;br /&gt;
Set the value of a variable&lt;br /&gt;
&lt;br /&gt;
'''SetVar(CHARACTER|ITEM:object, FIXEDSTRING:variableName, OBJECT:value)'''&lt;br /&gt;
&lt;br /&gt;
Set the value of a global variable&lt;br /&gt;
&lt;br /&gt;
'''Cast(OUT OBJECT variable, OBJECT value)'''&lt;br /&gt;
&lt;br /&gt;
Casts the value to the variable&lt;br /&gt;
&lt;br /&gt;
'''Print(OUT STRING:output, STRING:text)'''&lt;br /&gt;
&lt;br /&gt;
Prints the text to the output with possible parameters: [1], [2], ...&lt;br /&gt;
&lt;br /&gt;
'''Add(INOUT INT|FLOAT|FLOAT3:variable, INT|FLOAT|FLOAT3:value)'''&lt;br /&gt;
&lt;br /&gt;
Adds both values and stores it in the first variable&lt;br /&gt;
&lt;br /&gt;
'''Subtract(INOUT INT|FLOAT|FLOAT3:variable, INT|FLOAT|FLOAT3:value)'''&lt;br /&gt;
&lt;br /&gt;
Subtracts both values and stores it in the first variable&lt;br /&gt;
&lt;br /&gt;
'''Multiply(INOUT INT|FLOAT|FLOAT3:variable, INT|FLOAT:value)'''&lt;br /&gt;
&lt;br /&gt;
Multiplies both values and stores it in the first variable&lt;br /&gt;
&lt;br /&gt;
'''Divide(INOUT INT|FLOAT|FLOAT3:variable, INT|FLOAT:value)'''&lt;br /&gt;
&lt;br /&gt;
Divides both values and stores it in the first variable&lt;br /&gt;
&lt;br /&gt;
'''Abs(INOUT INT|FLOAT:variable)'''&lt;br /&gt;
&lt;br /&gt;
Takes the absolute value of a variable&lt;br /&gt;
&lt;br /&gt;
'''Clamp(INOUT INT|FLOAT:variable, INT|FLOAT:min, INT|FLOAT:max)'''&lt;br /&gt;
&lt;br /&gt;
Clamps a variable between min and max&lt;br /&gt;
&lt;br /&gt;
'''GetRandom(OUT OBJECT:variable, OBJECT:value, OBJECT:value, OBJECT:value)'''&lt;br /&gt;
&lt;br /&gt;
Fills in the variable with random one of the values.&lt;br /&gt;
&lt;br /&gt;
'''GetWeightedRandom(OUT OBJECT:variable, OBJECT:value, INT|FLOAT:weight, ...)'''&lt;br /&gt;
&lt;br /&gt;
Gets a weighted random of the given values!&lt;br /&gt;
&lt;br /&gt;
'''GetRandomBetween(OUT INT|FLOAT:variable, INT|FLOAT:min, INT|FLOAT:max)'''&lt;br /&gt;
&lt;br /&gt;
Gets a random value between min and max (both included)&lt;br /&gt;
&lt;br /&gt;
'''GetRandomPositionInTrigger(OUT FLOAT3:variable, TRIGGER:areaTrigger)'''&lt;br /&gt;
&lt;br /&gt;
Get a random position in a trigger area&lt;br /&gt;
&lt;br /&gt;
'''GetElement(OUT OBJECT:variable, INT:index, OBJECT:value, OBJECT:value, OBJECT:value)'''&lt;br /&gt;
&lt;br /&gt;
Fills in the variable with the index one of the values (starting from 0)&lt;br /&gt;
&lt;br /&gt;
'''SetPriority(FIXEDSTRING:reactionName, INT:priority)'''&lt;br /&gt;
&lt;br /&gt;
Changes the priority of a reaction. Priority 0 and below are not executed!&lt;br /&gt;
&lt;br /&gt;
'''DelayReaction(FIXEDSTRING:reactionName, FLOAT:timeInSeconds)'''&lt;br /&gt;
&lt;br /&gt;
The reaction will not be chosen for the specified time&lt;br /&gt;
&lt;br /&gt;
'''SetScriptFrame(CHARACTER:character, FIXEDSTRING:frame)'''&lt;br /&gt;
&lt;br /&gt;
Sets the scriptframe on the character.&lt;br /&gt;
&lt;br /&gt;
'''ClearScriptFrame(CHARACTER:character)'''&lt;br /&gt;
&lt;br /&gt;
Clears the scriptframe on the character.&lt;br /&gt;
&lt;br /&gt;
'''Goto(FIXEDSTRING:labelName)'''&lt;br /&gt;
&lt;br /&gt;
Jumps to the label&lt;br /&gt;
&lt;br /&gt;
'''GotoIfEqual(OBJECT:variable, OBJECT:value, FIXEDSTRING:labelName)'''&lt;br /&gt;
&lt;br /&gt;
Jumps to the label if the 2 objects are equal&lt;br /&gt;
&lt;br /&gt;
'''GotoRand(FIXEDSTRING:labelName, FIXEDSTRING:labelName, FIXEDSTRING:labelName, FIXEDSTRING:labelName, FIXEDSTRING:labelName)'''&lt;br /&gt;
&lt;br /&gt;
Jumps to a random label in the list&lt;br /&gt;
&lt;br /&gt;
'''CreatePuddleAt(GAMEOBJECT|FLOAT3:target, SURFACE:type, INT:cellAmountMin, INT:cellAmountMax, INT:growAmountMin, INT:growAmountMax, )'''&lt;br /&gt;
&lt;br /&gt;
Spawn a puddle at the target's position for a certain lifetime (in turns)&lt;br /&gt;
&lt;br /&gt;
'''CreateSurfaceAt(GAMEOBJECT|FLOAT3:target, SURFACE:type, FLOAT:radius, INT:lifeTime[, GAMEOBJECT:owner])'''&lt;br /&gt;
&lt;br /&gt;
Spawn a surface at the target's position for a certain lifetime (in turns)&lt;br /&gt;
&lt;br /&gt;
'''CreateSurfaceInPolygon(GAMEOBJECT:owner, SURFACE:type, FLOAT:duration, FLOAT:growTimer, INT:growStep, GAMEOBJECT|FLOAT3:point1, GAMEOBJECT|FLOAT3:point2, GAMEOBJECT|FLOAT3:point3, ...)'''&lt;br /&gt;
&lt;br /&gt;
Spawn a polygon surface at the target's position. Grows &amp;lt;growStep&amp;gt; every &amp;lt;growTimer&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''CreateSurfaceInAreaTrigger(GAMEOBJECT:owner, SURFACE:type, FLOAT:duration, FLOAT:growTimer, INT:growStep, TRIGGER:areaTrigger)'''&lt;br /&gt;
&lt;br /&gt;
Spawn a surface within &amp;lt;areaTrigger&amp;gt;. Grows &amp;lt;growStep&amp;gt; every &amp;lt;growTimer&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''CreateConeSurfaceAt(GAMEOBJECT|FLOAT3:start, GAMEOBJECT|FLOAT3:target, SURFACE:type, FLOAT:radius, FLOAT:angle, FLOAT:duration)'''&lt;br /&gt;
&lt;br /&gt;
Spawn a Cone surface at the target's position&lt;br /&gt;
&lt;br /&gt;
'''PlayEffectAt(GAMEOBJECT|FLOAT3:target, STRING:effectName)'''&lt;br /&gt;
&lt;br /&gt;
Plays an effect at the target's position&lt;br /&gt;
&lt;br /&gt;
'''PlayLoopEffectAt(OUT INT64:effectHandle, GAMEOBJECT|FLOAT3:target, STRING:effectName)'''&lt;br /&gt;
&lt;br /&gt;
Plays an effect at the target's position&lt;br /&gt;
&lt;br /&gt;
'''ExplodeAt(GAMEOBJECT|FLOAT3:target, SKILL:projectileSkill, [INT:casterLevel=-1, CHARACTER|ITEM:cause])'''&lt;br /&gt;
&lt;br /&gt;
Trigger an explosion of a projectile skill at the target's position. The cause will trigger NPC behavior as if the cause casted the projectile&lt;br /&gt;
&lt;br /&gt;
'''DisplayText(CHARACTER|ITEM:target, FIXEDSTRING:text, FLOAT:timeInSeconds)'''&lt;br /&gt;
&lt;br /&gt;
Displays text above the character/item for a certain amount of time. It will replace the current text, including dialogtext&lt;br /&gt;
&lt;br /&gt;
'''DisplayCombatInfoText(CHARACTER|ITEM:target, FIXEDSTRING:text, FLOAT:timeInSeconds)'''&lt;br /&gt;
&lt;br /&gt;
Displays text above the character/item for a certain amount of time. It will replace the current text, including dialogtext&lt;br /&gt;
&lt;br /&gt;
'''StatusText(CHARACTER|ITEM:target, FIXEDSTRING:text)'''&lt;br /&gt;
&lt;br /&gt;
Adds statustext above the character/item for a short amount of time. Will not replace texts or dialogtexts&lt;br /&gt;
&lt;br /&gt;
'''DebugText(CHARACTER|ITEM:target, STRING:text)'''&lt;br /&gt;
&lt;br /&gt;
Adds debugtext above the character/item for a short amount of time.&lt;br /&gt;
&lt;br /&gt;
'''CombatLogText(CHARACTER|ITEM:target, FIXEDSTRING:text, INT:filterID, INT:broadcastID)'''&lt;br /&gt;
&lt;br /&gt;
Adds combatlog text inside the combat log window. Color-/SizeFormatting should already be applied, if not color and size of the string will be NORMAL. filterID determines what filter shows/hides the text. broadcastID determines who will be able to see the message (0 hearingrange. 1 party. 2 all)&lt;br /&gt;
&lt;br /&gt;
'''Log(STRING:text, ...)'''&lt;br /&gt;
&lt;br /&gt;
Log's the the scriptlog. (for debugging purposes)&lt;br /&gt;
&lt;br /&gt;
'''Output(STRING:text, ...)'''&lt;br /&gt;
&lt;br /&gt;
Pass text with optional parameters to the output panel (e.g. Output(&amp;quot;An int [1]&amp;quot;, INT:10))&lt;br /&gt;
&lt;br /&gt;
'''Assert(STRING:text, ...)'''&lt;br /&gt;
&lt;br /&gt;
Pass text with optional parameters to display as an assert message (e.g. Assert(&amp;quot;This number is wrong: [1]&amp;quot;, INT:666))&lt;br /&gt;
&lt;br /&gt;
'''Label(FIXEDSTRING:name)'''&lt;br /&gt;
&lt;br /&gt;
Marks this line as a label where Goto actions can jump to&lt;br /&gt;
&lt;br /&gt;
'''StartTimer(FIXEDSTRING:timerName, FLOAT:timeInSeconds, INT:repeatCount)'''&lt;br /&gt;
&lt;br /&gt;
Start a timer which will throw the timer event. Set repeatcount &amp;lt; 0 for a permanent timer.&lt;br /&gt;
&lt;br /&gt;
'''StopTimer(FIXEDSTRING:timerName)'''&lt;br /&gt;
&lt;br /&gt;
Stop a timer which will throw the timer event&lt;br /&gt;
&lt;br /&gt;
'''DialogStart(OUT INT:instanceId, STRING:dialog, CHARACTER|ITEM:target, CHARACTER|ITEM:target, CHARACTER|ITEM:target, CHARACTER|ITEM:target)'''&lt;br /&gt;
&lt;br /&gt;
Start a dialog between the targets&lt;br /&gt;
&lt;br /&gt;
'''DialogRequestStop(CHARACTER|ITEM:speaker, STRING:dialog)'''&lt;br /&gt;
&lt;br /&gt;
Stops a certain dialog on a certain speaker&lt;br /&gt;
&lt;br /&gt;
'''Check(-)'''&lt;br /&gt;
&lt;br /&gt;
Reevaluate the conditions in the CHECK section of this reaction&lt;br /&gt;
&lt;br /&gt;
'''Reset(-)'''&lt;br /&gt;
&lt;br /&gt;
Resets the current reaction. It will start from the beginning again&lt;br /&gt;
&lt;br /&gt;
'''Interrupt(FIXEDSTRING:reactionName)'''&lt;br /&gt;
&lt;br /&gt;
Interrupt the reaction.&lt;br /&gt;
&lt;br /&gt;
'''GlobalSetEvent(FIXEDSTRING:eventName)'''&lt;br /&gt;
&lt;br /&gt;
Sets a global event. Scripts and Story can catch it.&lt;br /&gt;
&lt;br /&gt;
'''GlobalClearEvent(FIXEDSTRING:eventName)'''&lt;br /&gt;
&lt;br /&gt;
Clears a global event. Scripts and Story can catch it.&lt;br /&gt;
&lt;br /&gt;
'''StopLoopEffect(INT64:fxHandle)'''&lt;br /&gt;
&lt;br /&gt;
Stops a looping effect&lt;br /&gt;
&lt;br /&gt;
'''IterateItems(FIXEDSTRING:eventname[, FIXEDSTRING:tag])'''&lt;br /&gt;
&lt;br /&gt;
Launch iterate event for each item. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
'''IterateItemsNear(GAMEOBJECT:source, FLOAT:radius, FIXEDSTRING:eventname[, FIXEDSTRING:tag])'''&lt;br /&gt;
&lt;br /&gt;
Launch iterate event for each item in range. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
'''IterateItemsOnObject(CHARACTER|ITEM:source, FIXEDSTRING:eventname[, FIXEDSTRING:tag])'''&lt;br /&gt;
&lt;br /&gt;
Launch iterate event for each item standing on the source. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
'''IterateParty(FIXEDSTRING:eventname, [COMPARE:howTo, COMPAREFUNC:compareFunc, CHARACTER:partyMember, FIXEDSTRING:tag])'''&lt;br /&gt;
&lt;br /&gt;
Launch iterate event for each member of all parties. If you pass a party member only members of that party will be considered. If you pass compare parameters, it will iterate over them in the requested order. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
'''IterateCharacters(FIXEDSTRING:eventname, [COMPARE:howTo, COMPAREFUNC:compareFunc, FIXEDSTRING:tag])'''&lt;br /&gt;
&lt;br /&gt;
Launch iterate event for each character. If you pass compare parameters, it will iterate over them in the requested order. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
'''IterateCharactersNear(GAMEOBJECT:source, FLOAT:radius, FIXEDSTRING:eventname, [COMPARE:howTo, COMPAREFUNC:compareFunc, FIXEDSTRING:tag])'''&lt;br /&gt;
&lt;br /&gt;
Launch iterate event for each character in range. If you pass compare parameters, it will iterate over them in the requested order. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
'''IterateCharactersOnObject(CHARACTER|ITEM:source, FIXEDSTRING:eventname, [COMPARE:howTo, COMPAREFUNC:compareFunc, FIXEDSTRING:tag])'''&lt;br /&gt;
Launch iterate event for each character standing on the source. If you pass compare parameters, it will iterate over them in the requested order. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
'''IterateCharactersInCombat(CHARACTER|ITEM:source, FIXEDSTRING:eventname, [COMPARE:howTo, COMPAREFUNC:compareFunc, FIXEDSTRING:tag])'''&lt;br /&gt;
&lt;br /&gt;
Launch iterate event for each character in combat with the source. If you pass compare parameters, it will iterate over them in the requested order. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
'''IterateHostilesFor(CHARACTER:source, FIXEDSTRING:eventname, [COMPARE:howTo, COMPAREFUNC:compareFunc, FIXEDSTRING:tag])'''&lt;br /&gt;
&lt;br /&gt;
Launch iterate event for each character who is targetting the source. If you pass compare parameters, it will iterate over them in the requested order. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
'''SpawnCharacter(OUT CHARACTER:result, CHARACTERTEMPLATE:rootTemplate, GAMEOBJECT|FLOAT3:position, INT:playSpawn, [INT:isSummon=0, CHARACTER:summonOwner=null, INT:overrideLevel=-1])'''&lt;br /&gt;
&lt;br /&gt;
Spawns a character&lt;br /&gt;
&lt;br /&gt;
'''SpawnItem(ITEMTEMPLATE:rootTemplate,GAMEOBJECT|FLOAT3:position, OUT ITEM:result)'''&lt;br /&gt;
&lt;br /&gt;
Spawns an item&lt;br /&gt;
&lt;br /&gt;
'''ShootLocalProjectile(SKILL:projectileSkill,CHARACTER|ITEM:source,FLOAT3:localOffset,FLOAT3:direction,[INT:casterLevel, CHARACTER|ITEM:caster])'''&lt;br /&gt;
&lt;br /&gt;
Spawns a projectile at the source (with offset, can be null) shooting at the target&lt;br /&gt;
&lt;br /&gt;
'''ShootLocalProjectileAt(SKILL:projectileSkill,CHARACTER|ITEM:source,FLOAT3:localOffset,GAMEOBJECT|FLOAT3:target,[INT:casterLevel, CHARACTER|ITEM:caster])'''&lt;br /&gt;
&lt;br /&gt;
Spawns a projectile at the source (with offset, can be null) shooting at the target&lt;br /&gt;
&lt;br /&gt;
'''ShootWorldProjectile(SKILL:projectileSkill,CHARACTER|ITEM:source,FLOAT3:worldPos,FLOAT3:direction,[INT:casterLevel])'''&lt;br /&gt;
&lt;br /&gt;
Spawns a projectile at worldPos shooting at the target. Source can be null.&lt;br /&gt;
&lt;br /&gt;
'''ShootWorldProjectileAt(SKILL:projectileSkill,CHARACTER|ITEM:source,FLOAT3:worldPos,GAMEOBJECT|FLOAT3:target,[INT:casterLevel])'''&lt;br /&gt;
&lt;br /&gt;
Spawns a projectile at worldPos shooting at the target. Source can be null.&lt;br /&gt;
&lt;br /&gt;
'''ShootLocalCone(SKILL:coneSkill,CHARACTER|ITEM:source,FLOAT3:localOffset,FLOAT3:direction,[INT:casterLevel, CHARACTER|ITEM:caster])'''&lt;br /&gt;
&lt;br /&gt;
Shoots a cone from source (with offset, can be null) in a direction&lt;br /&gt;
&lt;br /&gt;
'''ShootLocalConeAt(SKILL:coneSkill,CHARACTER|ITEM:source,FLOAT3:localOffset,GAMEOBJECT|FLOAT3:target,[INT:casterLevel, CHARACTER|ITEM:caster])'''&lt;br /&gt;
&lt;br /&gt;
Shoots a cone from source (with offset, can be null) at the target&lt;br /&gt;
&lt;br /&gt;
'''ShootWorldCone(SKILL:coneSkill,CHARACTER|ITEM:source,FLOAT3:worldPos,FLOAT3:direction,[INT:casterLevel])'''&lt;br /&gt;
&lt;br /&gt;
Shoots a cone from worldPos in a direction. Source can be null.&lt;br /&gt;
&lt;br /&gt;
'''ShootWorldConeAt(SKILL:coneSkill,CHARACTER|ITEM:source,FLOAT3:worldPos,GAMEOBJECT|FLOAT3:target,[INT:casterLevel])'''&lt;br /&gt;
&lt;br /&gt;
Shoots a cone from worldPos at the target. Source can be null.&lt;br /&gt;
&lt;br /&gt;
'''SetVisible(CHARACTER|ITEM:object, INT:visible)'''&lt;br /&gt;
&lt;br /&gt;
Sets a character or item visible or not.&lt;br /&gt;
&lt;br /&gt;
'''RotateY(INOUT FLOAT3:vector, FLOAT:degrees)'''&lt;br /&gt;
&lt;br /&gt;
Rotate the vector around the Y-axis for a certain angle (in degrees)&lt;br /&gt;
&lt;br /&gt;
'''SetHealth(CHARACTER|ITEM:target, FLOAT:percent)'''&lt;br /&gt;
&lt;br /&gt;
Set a characters or items health on the given percentage. (percentage between 0 and 1)&lt;br /&gt;
&lt;br /&gt;
'''PlaySound(CHARACTER|ITEM:target, STRING:soundEvent)'''&lt;br /&gt;
&lt;br /&gt;
Plays a sound event at the target&lt;br /&gt;
&lt;br /&gt;
'''PlayMusicForEveryone(STRING:musicEvent)'''&lt;br /&gt;
&lt;br /&gt;
Plays a music event on all the clients&lt;br /&gt;
&lt;br /&gt;
'''PlayMusicOnCharacter(CHARACTER:target, STRING:musicEvent)'''&lt;br /&gt;
&lt;br /&gt;
Plays a music event on a character for all peers (3D)&lt;br /&gt;
&lt;br /&gt;
'''PlayMusicForPeer(CHARACTER:target, STRING:musicEvent)'''&lt;br /&gt;
&lt;br /&gt;
Plays a music event on the peer of the character&lt;br /&gt;
&lt;br /&gt;
'''PlayMusicForPeerWithInstrument(CHARACTER:target, CHARACTER:charInstrument, STRING:musicEvent)'''&lt;br /&gt;
&lt;br /&gt;
Plays a music event on the peer of the character concated with _INSTRUMENT&lt;br /&gt;
&lt;br /&gt;
'''SetX(INOUT FLOAT3:vector, FLOAT|INT:value)'''&lt;br /&gt;
&lt;br /&gt;
Sets the X component of the FLOAT3&lt;br /&gt;
&lt;br /&gt;
'''SetY(INOUT FLOAT3:vector, FLOAT|INT:value)'''&lt;br /&gt;
&lt;br /&gt;
Sets the Y component of the FLOAT3&lt;br /&gt;
&lt;br /&gt;
'''SetZ(INOUT FLOAT3:vector, FLOAT|INT:value)'''&lt;br /&gt;
&lt;br /&gt;
Sets the Z component of the FLOAT3&lt;br /&gt;
&lt;br /&gt;
'''SetAtmosphere(FIXEDSTRING:atmosphereTriggerUUID, FIXEDSTRING:atmosphere)'''&lt;br /&gt;
&lt;br /&gt;
Changes the atmosphere of the trigger&lt;br /&gt;
&lt;br /&gt;
'''ResetAtmosphere(FIXEDSTRING:atmosphereTriggerUUID)'''&lt;br /&gt;
&lt;br /&gt;
Resets the atmosphere of the trigger&lt;br /&gt;
&lt;br /&gt;
'''AddStatusInfluence(CHARACTER|ITEM:object, STATUS:statusId, FLOAT:strength, [FIXEDSTRING:extraData=&amp;quot;&amp;quot;], [INT:isWeather=1], [INT:force=1])'''&lt;br /&gt;
&lt;br /&gt;
Adds the status influence strength on the object.&lt;br /&gt;
&lt;br /&gt;
'''RemoveStatusInfluence(CHARACTER|ITEM:object, STATUS:statusId, FLOAT:strength, [FIXEDSTRING:extraData=&amp;quot;&amp;quot;], [INT:isWeather=1])'''&lt;br /&gt;
&lt;br /&gt;
Removes the status influence strength on the object.&lt;br /&gt;
&lt;br /&gt;
'''AddTemporaryStatusInfluence(CHARACTER|ITEM:source, CHARACTER|ITEM:object, STATUS:statusId, FLOAT:strength, [FIXEDSTRING:extraData=&amp;quot;&amp;quot;], [INT:isWeather=1])'''&lt;br /&gt;
&lt;br /&gt;
Adds a temporary status influence strength on the object.. It will be gone in a few seconds if it's not set again&lt;br /&gt;
&lt;br /&gt;
'''CallFunction(FIXEDSTRING:functionName)'''&lt;br /&gt;
&lt;br /&gt;
Calls a function with the ID&lt;br /&gt;
&lt;br /&gt;
'''SetMaterial(CHARACTER|ITEM:object, FIXEDSTRING:materialUUID, INT:duration, INT:applyOnBody, INT:applyOnArmor, INT:applyOnWeapon[)'''&lt;br /&gt;
&lt;br /&gt;
Changes the material of the object for a set time (in turns), -1 is infinite. applyNormalMap: Copy the original materials normal map&lt;br /&gt;
&lt;br /&gt;
'''TeleportTo(CHARACTER|ITEM:object, GAMEOBJECT|FLOAT3:target, [INT:Force=0])'''&lt;br /&gt;
&lt;br /&gt;
Teleport object to or near the target&lt;br /&gt;
&lt;br /&gt;
'''Transform(CHARACTER|ITEM:object, CHARACTERTEMPLATE|ITEMTEMPLATE:root [, FIXEDSTRING:fx, INT:replaceScripts=1, OUT FLOAT:currentHP])'''&lt;br /&gt;
&lt;br /&gt;
Transforms &amp;lt;object&amp;gt; using &amp;lt;root&amp;gt;, returns &amp;lt;currentHP&amp;gt;, plays &amp;lt;fx&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''SaveGame(FIXEDSTRING:saveGameName)'''&lt;br /&gt;
&lt;br /&gt;
Save the savegame with name &amp;lt;saveGameName&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''LoadGame(FIXEDSTRING:saveGameName)'''&lt;br /&gt;
&lt;br /&gt;
Load the savegame with name &amp;lt;saveGameName&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''LoadLevel(FIXEDSTRING:levelName)'''&lt;br /&gt;
&lt;br /&gt;
Load the level with name &amp;lt;levelName&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''KillCombat(CHARACTER:character)'''&lt;br /&gt;
&lt;br /&gt;
Kill all the enemies in the combat which contains &amp;lt;character&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''SetTag(CHARACTER|ITEM:object, FIXEDSTRING:tag)'''&lt;br /&gt;
&lt;br /&gt;
Sets the Tag on the Object&lt;br /&gt;
&lt;br /&gt;
'''ClearTag(CHARACTER|ITEM:object, FIXEDSTRING:tag)'''&lt;br /&gt;
&lt;br /&gt;
Clears the Tag on the Object&lt;br /&gt;
&lt;br /&gt;
'''SetGlobalFlag(FIXEDSTRING:flagname)'''&lt;br /&gt;
&lt;br /&gt;
Sets the Global Flag&lt;br /&gt;
&lt;br /&gt;
'''ClearGlobalFlag(FIXEDSTRING:flagname)'''&lt;br /&gt;
&lt;br /&gt;
Clears the Global Flag&lt;br /&gt;
&lt;br /&gt;
'''SetFlag(CHARACTER|ITEM:object, FIXEDSTRING:flagname)'''&lt;br /&gt;
&lt;br /&gt;
Sets the Flag on the Object&lt;br /&gt;
&lt;br /&gt;
'''ClearFlag(CHARACTER|ITEM:object, FIXEDSTRING:flagname)'''&lt;br /&gt;
&lt;br /&gt;
Clears the Flag on the Object&lt;br /&gt;
&lt;br /&gt;
'''SetUserFlag(CHARACTER:object, FIXEDSTRING:flagname)'''&lt;br /&gt;
&lt;br /&gt;
Sets the Flag on the user's characters&lt;br /&gt;
&lt;br /&gt;
'''ClearUserFlag(CHARACTER|ITEM:object, FIXEDSTRING:flagname)'''&lt;br /&gt;
&lt;br /&gt;
Clears the Flag on the user's characters&lt;br /&gt;
&lt;br /&gt;
'''SetPartyFlag(CHARACTER|ITEM:object, FIXEDSTRING:flagname)'''&lt;br /&gt;
&lt;br /&gt;
Sets the Flag on the party's characters&lt;br /&gt;
&lt;br /&gt;
'''ClearPartyFlag(CHARACTER|ITEM:object, FIXEDSTRING:flagname)'''&lt;br /&gt;
&lt;br /&gt;
Clears the Flag on the party's characters&lt;br /&gt;
&lt;br /&gt;
'''StartVoiceBark(STRING:barkName, CHARACTER:character)'''&lt;br /&gt;
&lt;br /&gt;
Start a voicebark on character&lt;br /&gt;
&lt;br /&gt;
'''ConfrontationDone(INT: CrimeID, CHARACTER:lead, CHARACTER:criminal, ...)'''&lt;br /&gt;
&lt;br /&gt;
Resolve the crime with id CrimeID for the specified criminals&lt;br /&gt;
&lt;br /&gt;
'''CrimesceneInvestigationDone(CHARACTER:investigator)'''&lt;br /&gt;
&lt;br /&gt;
Crimescene is considered investigated by this NPC, start looking for culprits&lt;br /&gt;
&lt;br /&gt;
'''ListAdd(LIST&amp;lt;OBJECT&amp;gt;:list, OBJECT:entry)'''&lt;br /&gt;
&lt;br /&gt;
Add &amp;lt;entry&amp;gt; at the back of &amp;lt;list&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''ListRemove(LIST&amp;lt;OBJECT&amp;gt;:list, INT:index)'''&lt;br /&gt;
&lt;br /&gt;
Remove the entry at &amp;lt;index&amp;gt; of &amp;lt;list&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''ListSet(LIST&amp;lt;OBJECT&amp;gt;:list, INT:index, OBJECT:entry)'''&lt;br /&gt;
&lt;br /&gt;
Set the entry at &amp;lt;index&amp;gt; of &amp;lt;list&amp;gt; to &amp;lt;entry&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''ListClear(LIST&amp;lt;OBJECT&amp;gt;:list)'''&lt;br /&gt;
&lt;br /&gt;
Remove all entries of &amp;lt;list&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''EndTurn(CHARACTER|ITEM:Target)'''&lt;br /&gt;
&lt;br /&gt;
Ends the object's current turn&lt;br /&gt;
&lt;br /&gt;
'''SetCanFight(CHARACTER|ITEM:entity, INT:enabled[, INT:wholeGroup=0])'''&lt;br /&gt;
&lt;br /&gt;
Enables/Disables the fact if the entity can fight. Optional for the whole group&lt;br /&gt;
&lt;br /&gt;
'''SetCanJoinCombat(CHARACTER|ITEM:entity, INT:enabled[, INT:wholeGroup=0])'''&lt;br /&gt;
&lt;br /&gt;
Enables/Disables the fact if the entity can join combats. Optional for the whole group&lt;br /&gt;
&lt;br /&gt;
'''SetIsBoss(CHARACTER|ITEM:entity, INT:enabled)'''&lt;br /&gt;
&lt;br /&gt;
Enables/Disables the fact if the entity is a boss.&lt;br /&gt;
&lt;br /&gt;
'''GetAIHintTriggers(OUT LIST&amp;lt;TRIGGER&amp;gt;:triggers[, [LIST]FIXEDSTRING:tags, INT:needsAllTags = -1)'''&lt;br /&gt;
&lt;br /&gt;
Returns all AIHintAreaTriggers in &amp;lt;triggers&amp;gt;. Uses contraints if set.&lt;br /&gt;
&lt;br /&gt;
'''SetCombatTimeout(CHARACTER|ITEM:entity, FLOAT:timer)'''&lt;br /&gt;
&lt;br /&gt;
Overwrites the entity's combat timeout check.&lt;br /&gt;
&lt;br /&gt;
'''ResetCombatTimeout(CHARACTER|ITEM:entity)'''&lt;br /&gt;
&lt;br /&gt;
Resets the entity's combat timeout check.&lt;br /&gt;
&lt;br /&gt;
'''EnterCombat(CHARACTER|ITEM:source, CHARACTER|ITEM:target)'''&lt;br /&gt;
&lt;br /&gt;
Enters combat with target&lt;br /&gt;
&lt;br /&gt;
'''LeaveCombat(CHARACTER|ITEM:source)'''&lt;br /&gt;
&lt;br /&gt;
Leaves the combat&lt;br /&gt;
&lt;br /&gt;
'''SetFaction(CHARACTER|ITEM:target, FIXEDSTRING:faction)'''&lt;br /&gt;
&lt;br /&gt;
Changes the faction of a character or item&lt;br /&gt;
&lt;br /&gt;
'''SetInvulnerable(CHARACTER|ITEM:target, INT:bool)'''&lt;br /&gt;
&lt;br /&gt;
Makes the character or item invulnerable or not. (Allow damage)&lt;br /&gt;
&lt;br /&gt;
'''JumpToTurn(CHARACTER|ITEM:Target)'''&lt;br /&gt;
&lt;br /&gt;
Jumps to targets turn (ends the current turn)&lt;br /&gt;
&lt;br /&gt;
'''Sleep(FLOAT:timeInSeconds)'''&lt;br /&gt;
&lt;br /&gt;
Sleeps for a certain amount of time&lt;br /&gt;
&lt;br /&gt;
'''CharacterAttack(CHARACTER|ITEM|FLOAT3:target [,INT:alwaysHit])'''&lt;br /&gt;
&lt;br /&gt;
Moves in weapon range and attacks the target&lt;br /&gt;
&lt;br /&gt;
'''CharacterAttackWithoutMove(CHARACTER|ITEM|FLOAT3:target [,INT:alwaysHit])'''&lt;br /&gt;
&lt;br /&gt;
Attacks the target without checking weaponranges and without moving&lt;br /&gt;
&lt;br /&gt;
'''CharacterMoveTo(GAMEOBJECT|FLOAT3:target, [INT:running=0, INT:shouldArrive=0, INT:longPath=0, FLOAT:minDistance=1.5, FLOAT:maxDistance=minDistance+2.5])'''&lt;br /&gt;
&lt;br /&gt;
Move to the target. Set shouldArrive to 1 if you want a guaranteed move. (teleports on fail) &lt;br /&gt;
&lt;br /&gt;
'''CharacterAiMove(FLOAT3:target, CHARACTER:targetCharacter, ITEM:targetItem)'''&lt;br /&gt;
&lt;br /&gt;
Moves to the target, calculated by the AI. Should only be used with results from the AI!&lt;br /&gt;
&lt;br /&gt;
'''CharacterMoveInRange(GAMEOBJECT|FLOAT3:target, FLOAT:rangeMin, FLOAT:rangeMax, INT:running, [LIST&amp;lt;TRIGGER&amp;gt;:hintTriggers=null, INT:mustBeInTrigger=0])'''&lt;br /&gt;
&lt;br /&gt;
Move within a certain range of target. Optionally pass hinttriggers in which the result is preferred/necessary.&lt;br /&gt;
&lt;br /&gt;
'''CharacterMoveInWeaponRange(GAMEOBJECT|FLOAT3:target, INT:running, [LIST&amp;lt;TRIGGER&amp;gt;:hintTriggers=null, INT:mustBeInTrigger=0])'''&lt;br /&gt;
&lt;br /&gt;
Move within weapon range of target. Optionally pass hinttriggers in which the result is preferred/necessary.&lt;br /&gt;
&lt;br /&gt;
'''CharacterMoveInSkillRange(GAMEOBJECT|FLOAT3:target, SKILL:skill, INT:running, [LIST&amp;lt;TRIGGER&amp;gt;:hintTriggers=null, INT:mustBeInTrigger=0])'''&lt;br /&gt;
&lt;br /&gt;
Move within skill range of target. Optionally pass hinttriggers in which the result is preferred/necessary.&lt;br /&gt;
&lt;br /&gt;
'''CharacterMoveOutOfSight(FLOAT:angle)'''&lt;br /&gt;
&lt;br /&gt;
Move out of screen&lt;br /&gt;
&lt;br /&gt;
'''CharacterPlayAnimation(FIXEDSTRING:animation [, INT:exitOnFinish=1, INT:waitForCompletion=1])'''&lt;br /&gt;
&lt;br /&gt;
Plays a certain animation ExitOnFinish means if the exit will kill itself after it was played (revert back to still) &lt;br /&gt;
&lt;br /&gt;
'''CharacterStopAnimation(-)'''&lt;br /&gt;
&lt;br /&gt;
Stops all animations.&lt;br /&gt;
&lt;br /&gt;
'''CharacterPickUpItem(ITEM:item)'''&lt;br /&gt;
&lt;br /&gt;
Moves close enough to the item if necessary and picks it up&lt;br /&gt;
&lt;br /&gt;
'''CharacterUseItem(ITEM:item [, INTEGER:LongPath])'''&lt;br /&gt;
&lt;br /&gt;
Moves close enough to the item if necessary and uses it&lt;br /&gt;
&lt;br /&gt;
'''CharacterMoveItem(ITEM:item, INTEGER:ignoreWeight, INTEGER:ignoreAPCost [, INTEGER:ignoreDangerousSurfaces=1, INT:amount=-1, GAMEOBJECT|FLOAT3:destination])'''&lt;br /&gt;
&lt;br /&gt;
Moves close enough to the item if necessary and moves it to the destination. Will try to find a destination if not supplied.&lt;br /&gt;
&lt;br /&gt;
'''CharacterAddSkill(CHARACTER:character, SKILL:skill[, INT:ShowNotification=0])'''&lt;br /&gt;
&lt;br /&gt;
Adds &amp;lt;skill&amp;gt; to &amp;lt;character&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''CharacterRemoveSkill(CHARACTER:character, SKILL:skill)'''&lt;br /&gt;
&lt;br /&gt;
Removes &amp;lt;skill&amp;gt; from &amp;lt;character&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''CharacterUseSkill(SKILL:skill, GAMEOBJECT|FLOAT3:target [, GAMEOBJECT|FLOAT3:target2, ITEM:skillItem, INT:ignoreHasSkill=0])'''&lt;br /&gt;
&lt;br /&gt;
Cast a skill&lt;br /&gt;
&lt;br /&gt;
'''CharacterAppearAt(GAMEOBJECT|FLOAT3:target, INT:playspawn)'''&lt;br /&gt;
&lt;br /&gt;
Appear at the target&lt;br /&gt;
&lt;br /&gt;
'''CharacterAppearOutOfSightTo(GAMEOBJECT:target, FLOAT:angle, INT:playspawn)'''&lt;br /&gt;
&lt;br /&gt;
Appears out of sight to the players from a certain angle while being able to reach target&lt;br /&gt;
&lt;br /&gt;
'''CharacterAppearOnTrailOutOfSightTo(CHARACTER:target, FLOAT:angle, INT:playspawn)'''&lt;br /&gt;
&lt;br /&gt;
Appears out of sight to the players, on its previous locations, from a certain angle while being able to reach target&lt;br /&gt;
&lt;br /&gt;
'''CharacterDisappear(FLOAT:angle[, INTEGER:isRunning=0])'''&lt;br /&gt;
&lt;br /&gt;
Move out of screen and go of stage, will run if &amp;lt;isRunning&amp;gt; is not 0&lt;br /&gt;
&lt;br /&gt;
'''CharacterSetOffStage(-)'''&lt;br /&gt;
&lt;br /&gt;
Set Off Stage&lt;br /&gt;
&lt;br /&gt;
'''CharacterSetOnStage(-)'''&lt;br /&gt;
&lt;br /&gt;
Set On Stage&lt;br /&gt;
&lt;br /&gt;
'''CharacterLookAt(GAMEOBJECT|FLOAT3|SPLINE:target[, INT:snapToTarget=0, INT:angleTolerance=0])'''&lt;br /&gt;
&lt;br /&gt;
Rotates the character to look at the target (Closest spline point in case of a spline).&lt;br /&gt;
&lt;br /&gt;
'''CharacterLookFrom(GAMEOBJECT|SPLINE:target[, INT:snapToTarget=0])'''&lt;br /&gt;
&lt;br /&gt;
Rotates to the character so it has the same rotation as the target (Closest spline point in case of a spline).&lt;br /&gt;
&lt;br /&gt;
'''CharacterFollow(CHARACTER:target, FLOAT:durationInSeconds, INT:run)'''&lt;br /&gt;
&lt;br /&gt;
Follow the target for a certain time&lt;br /&gt;
&lt;br /&gt;
'''CharacterFollowOwnerOrLeader(FLOAT:durationInSeconds, INT:run)'''&lt;br /&gt;
&lt;br /&gt;
Follow the leader or owner for a certain time&lt;br /&gt;
&lt;br /&gt;
'''CharacterWander(FLOAT|TRIGGER:range, FLOAT:durationInSeconds [, INT:run, GAMEOBJECT:anchor])'''&lt;br /&gt;
&lt;br /&gt;
Wander around for a certain time&lt;br /&gt;
&lt;br /&gt;
'''CharacterSwitchWeaponType(WEAPON:type)'''&lt;br /&gt;
&lt;br /&gt;
If necessary switch to the new weapon type&lt;br /&gt;
&lt;br /&gt;
'''CharacterFleeFrom(RELATION:relation, FLOAT:range)'''&lt;br /&gt;
&lt;br /&gt;
Run away from certain characters if necessary&lt;br /&gt;
'''&lt;br /&gt;
CharacterFleeFromSurface(SURFACE:surface)'''&lt;br /&gt;
&lt;br /&gt;
Run away from a certain surface if necessary&lt;br /&gt;
&lt;br /&gt;
'''CharacterFleeFromDangerousSurface(-)'''&lt;br /&gt;
&lt;br /&gt;
Run away from a dangerous surfaces if necessary&lt;br /&gt;
&lt;br /&gt;
'''CharacterAddSourcePoints(CHARACTER:character, INT:amount)'''&lt;br /&gt;
&lt;br /&gt;
Adds x source points (x can be negative to substract)&lt;br /&gt;
&lt;br /&gt;
'''CharacterDie(CHARACTER:character[, DEATH:type=DoT])'''&lt;br /&gt;
&lt;br /&gt;
Kills the character&lt;br /&gt;
&lt;br /&gt;
'''CharacterHeal(CHARACTER:character, FLOAT:percentage)'''&lt;br /&gt;
&lt;br /&gt;
Heals the character&lt;br /&gt;
&lt;br /&gt;
'''CharacterConsume(CHARACTER:character, POTION:potion)'''&lt;br /&gt;
&lt;br /&gt;
Makes the character consume a potion. Doesn't cost any AP and will just execute the result of the potion.&lt;br /&gt;
&lt;br /&gt;
'''CharacterDisableAllCrimes(CHARACTER:target)'''&lt;br /&gt;
&lt;br /&gt;
Disables all generic behaviours for &amp;lt;target&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''CharacterEnableAllCrimes(CHARACTER:target)'''&lt;br /&gt;
&lt;br /&gt;
Enables all generic behaviours for &amp;lt;target&amp;gt;.&lt;br /&gt;
'''&lt;br /&gt;
CharacterEnableCrime(CHARACTER:target, STRING:crime, ...)'''&lt;br /&gt;
&lt;br /&gt;
Enables the specified generic behaviours for &amp;lt;target&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''CharacterDisableCrime(CHARACTER:target, STRING:crime, ...)'''&lt;br /&gt;
&lt;br /&gt;
Disables the specified generic behaviours for &amp;lt;target&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''CharacterSetLongInvestigationDuration(CHARACTER:target)'''&lt;br /&gt;
&lt;br /&gt;
Doubles the time it takes for the investigation to time out. Use this when the character needs to move a long path before investigating.&lt;br /&gt;
&lt;br /&gt;
'''CharacterAiCalculate(-)'''&lt;br /&gt;
&lt;br /&gt;
Calculate the AI of the character&lt;br /&gt;
&lt;br /&gt;
'''CharacterAiStopCalculate(-)'''&lt;br /&gt;
&lt;br /&gt;
Stop the calculation of the AI of the character&lt;br /&gt;
&lt;br /&gt;
'''CharacterAiFinishMoveSkill(-)'''&lt;br /&gt;
&lt;br /&gt;
Finish the current MoveSkill.&lt;br /&gt;
'''&lt;br /&gt;
CharacterAiAddInterestingItem(CHARACTER:character, ITEM:item)'''&lt;br /&gt;
&lt;br /&gt;
Make it interesting for the AI to destroy that Item&lt;br /&gt;
&lt;br /&gt;
'''CharacterAiRemoveInterestingItem(CHARACTER:character, ITEM:item)'''&lt;br /&gt;
&lt;br /&gt;
Make it no longer interesting for the AI to destroy that Item&lt;br /&gt;
&lt;br /&gt;
'''CharacterSetArchetype(CHARACTER:character, ARCHETYPE:archetype)'''&lt;br /&gt;
&lt;br /&gt;
Sets the archetype of the character, used in AI calculations&lt;br /&gt;
&lt;br /&gt;
'''CharacterSetStoryNPC(CHARACTER:character, INT:bool)'''&lt;br /&gt;
&lt;br /&gt;
Makes the character storyNPC or not.&lt;br /&gt;
'''&lt;br /&gt;
CharacterAddActionPoints(CHARACTER:character, INT:amount)'''&lt;br /&gt;
&lt;br /&gt;
Give character some action points&lt;br /&gt;
&lt;br /&gt;
'''CharacterSetImmortal(CHARACTER:character, INT:bool)'''&lt;br /&gt;
&lt;br /&gt;
Makes the character immortal or not. (Allow dying)&lt;br /&gt;
&lt;br /&gt;
'''CharacterPlayEffect(CHARACTER:character, STRING:effect [,FIXEDSTRING:boneName])'''&lt;br /&gt;
&lt;br /&gt;
Plays an effect on the character and it follows the character&lt;br /&gt;
&lt;br /&gt;
'''CharacterPlayLoopEffect(OUT INT64:effectHandle, CHARACTER:character, STRING:effect [,FIXEDSTRING:boneName])'''&lt;br /&gt;
&lt;br /&gt;
Plays a looping effect on the character and it follows the character&lt;br /&gt;
&lt;br /&gt;
'''CharacterEvent(CHARACTER:character, STRING:eventName)'''&lt;br /&gt;
&lt;br /&gt;
Throw a character event which you can catch in scripts and story&lt;br /&gt;
&lt;br /&gt;
'''CharacterItemEvent(CHARACTER:character, ITEM:item, STRING:eventName)'''&lt;br /&gt;
&lt;br /&gt;
Throw a character/item event which you can catch in scripts and story&lt;br /&gt;
&lt;br /&gt;
'''CharacterCharacterEvent(CHARACTER:character1, CHARACTER:character2, STRING:eventName)'''&lt;br /&gt;
&lt;br /&gt;
Throw a character/character event which you can catch in scripts and story&lt;br /&gt;
&lt;br /&gt;
'''CharacterSetRelationIndivToIndiv(CHARACTER:source, CHARACTER:target, INT:relation)'''&lt;br /&gt;
&lt;br /&gt;
Changes the relationship between 2 characters.&lt;br /&gt;
'''&lt;br /&gt;
CharacterForceUpdate(INT:forceUpdate)'''&lt;br /&gt;
&lt;br /&gt;
Makes sure the attached character is always being update or not. &lt;br /&gt;
'''&lt;br /&gt;
CharacterSetEnemy(CHARACTER:character, CHARACTER:enemy)'''&lt;br /&gt;
&lt;br /&gt;
Sets the current enemy of character&lt;br /&gt;
&lt;br /&gt;
'''CharacterApplyStatus(CHARACTER:character, STATUS:statusId [, INT:turns=null, INT:force=0])'''&lt;br /&gt;
&lt;br /&gt;
Applies the status to the character When turns is -1 it's a permanent status When turns is -2 it's a keep alive status (which means it will die if it's not applied again within 1 second) &lt;br /&gt;
&lt;br /&gt;
'''CharacterRemoveStatus(CHARACTER:character, STATUS:statusId [, STATUS:reasonStatusID=null])'''&lt;br /&gt;
&lt;br /&gt;
Removes the status from the character&lt;br /&gt;
&lt;br /&gt;
'''CharacterDestroy(CHARACTER:character)'''&lt;br /&gt;
&lt;br /&gt;
Destroys the character&lt;br /&gt;
&lt;br /&gt;
'''CharacterSetCanSpotSneakers(CHARACTER:character, INT:enabled)'''&lt;br /&gt;
&lt;br /&gt;
Enables/Disables the fact if the character can spot sneaking characters.&lt;br /&gt;
&lt;br /&gt;
'''CharacterSetAttackOfOpportunity(CHARACTER:character, INT:enabled)'''&lt;br /&gt;
&lt;br /&gt;
Enables/Disables the fact if the character can do attack of opportunities.&lt;br /&gt;
&lt;br /&gt;
'''CharacterResurrect(CHARACTER:character [, INT:Percentage = 100])'''&lt;br /&gt;
&lt;br /&gt;
Resurrects the character at [2]% health.&lt;br /&gt;
&lt;br /&gt;
'''CharacterAddToInventory(CHARACTER:character, FIXEDSTRING:itemStatsObject[, INT:amount, INT:showInTrade=1])'''&lt;br /&gt;
&lt;br /&gt;
Add the item to the character&lt;br /&gt;
&lt;br /&gt;
'''CharacterRemoveFromInventory(CHARACTER:character, FIXEDSTRING:itemStatsObject[, INT:amount])'''&lt;br /&gt;
&lt;br /&gt;
Remove the item from the character. If Amount is -1, then all are removed&lt;br /&gt;
&lt;br /&gt;
'''CharacterDrinkPotion(FIXEDSTRING:statID)'''&lt;br /&gt;
&lt;br /&gt;
Makes the character drink a potion from the inventory.&lt;br /&gt;
&lt;br /&gt;
'''CharacterSetAnimationOverride(CHARACTER:character, FIXEDSTRING:animation)'''&lt;br /&gt;
&lt;br /&gt;
Sets an animation override, only walk/run/die animations can override it.&lt;br /&gt;
&lt;br /&gt;
'''CharacterUseActionPoints(CHARACTER:character, INT:amount [, OUT INT:succeeded])'''&lt;br /&gt;
&lt;br /&gt;
Uses x action points&lt;br /&gt;
&lt;br /&gt;
'''CharacterAddTreasureTable(CHARACTER:character, FIXEDSTRING:treasureTable)'''&lt;br /&gt;
&lt;br /&gt;
Adds &amp;lt;treasureTable&amp;gt; to the treasure list of &amp;lt;character&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''CharacterRemoveTreasureTable(CHARACTER:character, FIXEDSTRING:treasureTable)'''&lt;br /&gt;
&lt;br /&gt;
Removes &amp;lt;treasureTable&amp;gt; from the treasure list of &amp;lt;character&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''CharacterClearTreasureTables(CHARACTER:character)'''&lt;br /&gt;
&lt;br /&gt;
Removes all treasure tables from &amp;lt;character&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''CharacterSetTemporaryHostileRelation(CHARACTER:character, CHARACTER:otherCharacter)'''&lt;br /&gt;
&lt;br /&gt;
Creates a temporary hostile relation between the 2 characters!&lt;br /&gt;
&lt;br /&gt;
'''CharacterSetFightMode(CHARACTER:character, INT:fight [, INT:force=0])'''&lt;br /&gt;
&lt;br /&gt;
Set the character in sheath/unsheated mode.&lt;br /&gt;
&lt;br /&gt;
'''CharacterSetStats(CHARACTER:character, FIXEDSTRING:statsEntry [, INT:keepVitality=0, INT:keepAP=0, INT:keepLevel=0, OUT FLOAT:currentHP])'''&lt;br /&gt;
&lt;br /&gt;
Applies &amp;lt;statsEntry&amp;gt; from character.xlsm to &amp;lt;character&amp;gt;, returns &amp;lt;currentHP&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''CharacterSetWalkSpeedOverride(CHARACTER:character, INTEGER:override [, FLOAT:walkSpeed])'''&lt;br /&gt;
&lt;br /&gt;
Sets walk speed override of &amp;lt;character&amp;gt;, removes it if &amp;lt;override&amp;gt; is 0&lt;br /&gt;
&lt;br /&gt;
'''CharacterSetRunSpeedOverride(CHARACTER:character, INTEGER:override [, FLOAT:runSpeed])'''&lt;br /&gt;
&lt;br /&gt;
Sets run speed override of &amp;lt;character&amp;gt;, removes it if &amp;lt;override&amp;gt; is 0&lt;br /&gt;
&lt;br /&gt;
'''CharacterSetHasDialog(CHARACTER:character, INTEGER:bool)'''&lt;br /&gt;
&lt;br /&gt;
Enables/Disables the dialog of the character&lt;br /&gt;
&lt;br /&gt;
'''CharacterInitPatrol(SPLINE:spline, INT:splineIndex, INT:reversed, INT:running)'''&lt;br /&gt;
&lt;br /&gt;
Start patroling from the given index along the given spline with the given character.&lt;br /&gt;
&lt;br /&gt;
'''CharacterStartPatrol(SPLINE:spline, INT:splineIndex, INT:reversed, INT:running)'''&lt;br /&gt;
&lt;br /&gt;
Start patroling from the given index along the given spline with the given character.&lt;br /&gt;
&lt;br /&gt;
'''CharacterStopPatrol(-)'''&lt;br /&gt;
&lt;br /&gt;
Let the character stop patrolling whatever spline he's on!&lt;br /&gt;
&lt;br /&gt;
'''CharacterInterruptPatrol(-)'''&lt;br /&gt;
&lt;br /&gt;
Call when the patrol should interrupt so the guard stops moving to the next spline. If this is called when the character is deactivated, a caret will take his place.&lt;br /&gt;
&lt;br /&gt;
'''CharacterSetAnimationSetOverride(CHARACTER:source, FIXEDSTRING:override)'''&lt;br /&gt;
&lt;br /&gt;
Sets an animation set override for a character. Empty fixedstring clears the override.&lt;br /&gt;
&lt;br /&gt;
'''CharacterSetFloating(CHARACTER:target, INTEGER:isFloating)'''&lt;br /&gt;
&lt;br /&gt;
Sets &amp;lt;target&amp;gt; floating if &amp;lt;isFloating&amp;gt; is not 0&lt;br /&gt;
&lt;br /&gt;
'''CharacterResetCooldowns(CHARACTER:target)'''&lt;br /&gt;
&lt;br /&gt;
Resets the skill cooldowns for &amp;lt;target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''ItemEvent(ITEM:item, STRING:eventName)'''&lt;br /&gt;
&lt;br /&gt;
Throw an item event which you can catch in scripts and story&lt;br /&gt;
&lt;br /&gt;
'''ItemPlayAnimation(FIXEDSTRING:animation)'''&lt;br /&gt;
&lt;br /&gt;
Plays an animation on the item&lt;br /&gt;
&lt;br /&gt;
'''ItemPlayAnimationTo(FIXEDSTRING:animation, FLOAT:targetPercentage, [FLOAT:speed])'''&lt;br /&gt;
&lt;br /&gt;
Plays an animation on the item to the target time (percentage of the total duration)&lt;br /&gt;
&lt;br /&gt;
'''ItemPlayEffect(ITEM:item, STRING:effect [,FIXEDSTRING:boneName])'''&lt;br /&gt;
&lt;br /&gt;
Plays an effect on the item and it follows the item&lt;br /&gt;
&lt;br /&gt;
'''ItemPlayLoopEffect(OUT INT:effectHandle, ITEM:item, STRING:effect [,FIXEDSTRING:boneName])'''&lt;br /&gt;
&lt;br /&gt;
Plays a looping effect on the item and it follows the item&lt;br /&gt;
&lt;br /&gt;
'''ItemSetOnStage(ITEM:item, INTEGER:bool)'''&lt;br /&gt;
&lt;br /&gt;
Sets an item on or offstage&lt;br /&gt;
&lt;br /&gt;
'''ItemSetCanInteract(ITEM:item, INTEGER:bool)'''&lt;br /&gt;
&lt;br /&gt;
Sets an item (not) interactible&lt;br /&gt;
&lt;br /&gt;
'''ItemClose(ITEM:item)'''&lt;br /&gt;
&lt;br /&gt;
Close an item&lt;br /&gt;
&lt;br /&gt;
'''ItemOpen(ITEM:item)'''&lt;br /&gt;
&lt;br /&gt;
Open an item&lt;br /&gt;
&lt;br /&gt;
'''ItemDrop(ITEM:item)'''&lt;br /&gt;
&lt;br /&gt;
Drop an item&lt;br /&gt;
&lt;br /&gt;
'''ItemLock(ITEM:item, FIXEDSTRING:key)'''&lt;br /&gt;
&lt;br /&gt;
Lock an item&lt;br /&gt;
&lt;br /&gt;
'''ItemUnlock(ITEM:item)'''&lt;br /&gt;
&lt;br /&gt;
Unlock an item&lt;br /&gt;
&lt;br /&gt;
'''ItemApplyStatus(ITEM:item, STATUS:statusId [, INT:turns=null, INT:force=0])'''&lt;br /&gt;
&lt;br /&gt;
Applies the status to the item When turns is -1 it's a permanent status When turns is -2 it's a keep alive status (which means it will die if it's not applied again within 1 second) &lt;br /&gt;
&lt;br /&gt;
'''ItemRemoveStatus(ITEM:item, STATUS:statusId)'''&lt;br /&gt;
&lt;br /&gt;
Removes the status from the item&lt;br /&gt;
&lt;br /&gt;
'''ItemDie(ITEM:item)'''&lt;br /&gt;
&lt;br /&gt;
Kills the item&lt;br /&gt;
&lt;br /&gt;
'''ItemMoveTo(GAMEOBJECT|FLOAT3:target, FLOAT:velocity, FLOAT:acceleration, INTEGER:matchTargetRotation)'''&lt;br /&gt;
&lt;br /&gt;
Moves the item to the target&lt;br /&gt;
&lt;br /&gt;
'''ItemToInventory(ITEM:item, CHARACTER|ITEM:target [,INT:amount=-1])'''&lt;br /&gt;
&lt;br /&gt;
Moves the item to the target's inventory&lt;br /&gt;
&lt;br /&gt;
'''ItemLookAt(GAMEOBJECT:target, FLOAT:degreesPerSecond)'''&lt;br /&gt;
&lt;br /&gt;
Rotates the item to look at the target&lt;br /&gt;
&lt;br /&gt;
'''ItemDestroy(ITEM:item)'''&lt;br /&gt;
&lt;br /&gt;
Destroys the item&lt;br /&gt;
&lt;br /&gt;
'''ItemSetAmount(ITEM:item, INT:amount)'''&lt;br /&gt;
&lt;br /&gt;
Change the amount of the item&lt;br /&gt;
&lt;br /&gt;
'''IterateItemsInInventory(CHARACTER|ITEM:source, FIXEDSTRING:eventname[, FIXEDSTRING:tag])'''&lt;br /&gt;
&lt;br /&gt;
Launch iterate event for each iten in source's inventory. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
'''ItemAddCharges(ITEM:TargetItem, INT:charges)'''&lt;br /&gt;
&lt;br /&gt;
Add/subtract charges from an item&lt;br /&gt;
&lt;br /&gt;
'''ItemResetChargesToInitial(ITEM:TargetItem)'''&lt;br /&gt;
&lt;br /&gt;
Resets charges from item to initial state&lt;br /&gt;
&lt;br /&gt;
'''MakePeace(CHARACTER:Source, CHARACTER:Target[, INT:IgnoreVote = 1])'''&lt;br /&gt;
&lt;br /&gt;
Make peace between users of the characters&lt;br /&gt;
&lt;br /&gt;
'''MakeWar(CHARACTER:Source, CHARACTER:Target[, INT:IgnoreVote = 1])'''&lt;br /&gt;
&lt;br /&gt;
Make war between users of the characters&lt;br /&gt;
&lt;br /&gt;
'''FindSurface(OUT FLOAT3:result, GAMEOBJECT|FLOAT3:source, FLOAT:minRange, FLOAT:maxRange, SURFACE:type [,CHARACTER:alignSource, INT:minEnemiesInSurface, INT:maxAlliesInSurface, INT:minimumCellCount])'''&lt;br /&gt;
&lt;br /&gt;
Finds the closest surface of a specific type.&lt;br /&gt;
&lt;br /&gt;
'''FindValidPosition(INOUT FLOAT3:position, FLOAT:radius[, CHARACTER|ITEM:object=null])'''&lt;br /&gt;
&lt;br /&gt;
Finds the closest valid position (where the object can stand.)&lt;br /&gt;
&lt;br /&gt;
'''FindPosition(INOUT FLOAT3:position, CHARACTER:source, INT:canStand, INT:checkSight, FLOAT:minRadius, FLOAT:maxRadius, FLOAT:rangeCheck, CHARACTER:alignSource, INT:minAllies, INT:maxAllies, INT:minEnemies, INT:maxEnemies [,FIXEDSTRING:AiHintTag=null, INT:forceHint=0, FLOAT3:SourcePosition])'''&lt;br /&gt;
&lt;br /&gt;
Finds the closest position from the source (within radius) where the conditions are matched. &lt;br /&gt;
&lt;br /&gt;
'''Cast(OUT OBJECT variable, OBJECT value)'''&lt;br /&gt;
&lt;br /&gt;
Casts the value to the variable.&lt;br /&gt;
&lt;br /&gt;
'''StringConcatenate(STRING:stringA, STRING:stringB, OUT STRING:resultingString)'''&lt;br /&gt;
&lt;br /&gt;
Appends stringB to stringA. Resulting string is stored in the third parameter.&lt;br /&gt;
&lt;br /&gt;
== QUERIES ==&lt;br /&gt;
&lt;br /&gt;
GetPosition(GAMEOBJECT:object,OUT FLOAT3:src)&lt;br /&gt;
&lt;br /&gt;
Get the current position of an object&lt;br /&gt;
&lt;br /&gt;
GetForwardDirection(GAMEOBJECT:object,OUT FLOAT3:direction)&lt;br /&gt;
&lt;br /&gt;
Get the current forward direction of an object&lt;br /&gt;
&lt;br /&gt;
GetRightDirection(GAMEOBJECT:object,OUT FLOAT3:direction)&lt;br /&gt;
&lt;br /&gt;
Get the current right direction of an object&lt;br /&gt;
&lt;br /&gt;
GetUpDirection(GAMEOBJECT:object,OUT FLOAT3:direction)&lt;br /&gt;
&lt;br /&gt;
Get the current up direction of an object&lt;br /&gt;
&lt;br /&gt;
GetDirection(GAMEOBJECT|FLOAT3:src,GAMEOBJECT|FLOAT3:target,OUT FLOAT3:direction[, OUT FLOAT:distance])&lt;br /&gt;
&lt;br /&gt;
Get the direction from src to target (optional: returns the distance between the objects as well)&lt;br /&gt;
&lt;br /&gt;
GetRotation(GAMEOBJECT:object, OUT FLOAT3:vector)&lt;br /&gt;
&lt;br /&gt;
Get the rotation of an object&lt;br /&gt;
&lt;br /&gt;
CharacterGetTargetSpline(INT: SplineIndex)&lt;br /&gt;
&lt;br /&gt;
Returns the spline index the character is currently walking towards, or -1 if he is not active on a spline.&lt;br /&gt;
&lt;br /&gt;
IsEqual(OBJECT:variable, OBJECT:variable)&lt;br /&gt;
&lt;br /&gt;
Compares both objects and see if they are equal.&lt;br /&gt;
&lt;br /&gt;
IsLessThen(INT|FLOAT:variable, INT|FLOAT:variable)&lt;br /&gt;
&lt;br /&gt;
Compares both objects and see if the first one is smaller.&lt;br /&gt;
&lt;br /&gt;
IsGreaterThen(INT|FLOAT:variable, INT|FLOAT:variable)&lt;br /&gt;
&lt;br /&gt;
Compares both objects and see if the first one is bigger.&lt;br /&gt;
&lt;br /&gt;
IsRandom(FLOAT:percentage)&lt;br /&gt;
&lt;br /&gt;
Each time this condition is checked, it will succeed with a chance of the percentage (between 0 and 1)&lt;br /&gt;
&lt;br /&gt;
IsRound(INT:roundNumber)&lt;br /&gt;
&lt;br /&gt;
Checks if we are currently in combat in round x&lt;br /&gt;
&lt;br /&gt;
IsInSurface(OBJECT|FLOAT3:target, SURFACE:type[, FLOAT:radius])&lt;br /&gt;
&lt;br /&gt;
Check if the character, item, trigger or position is currently within the specific surface.&lt;br /&gt;
&lt;br /&gt;
IsInDangerousSurface(OBJECT|FLOAT3:target[, CHARACTER:character, FLOAT:radius])&lt;br /&gt;
&lt;br /&gt;
Check if &amp;lt;target&amp;gt; is currently in on a dangerous surface. Uses &amp;lt;character&amp;gt; for path influences if provided (is necessary with non-character targets)&lt;br /&gt;
&lt;br /&gt;
IsInDialog(CHARACTER|ITEM:target[, INT:ignoreAutomatedDialogs=0])&lt;br /&gt;
&lt;br /&gt;
Check if the character or item is currently in a dialog, optionally ignoring automated dialogs&lt;br /&gt;
&lt;br /&gt;
IsInAutomatedDialog(CHARACTER|ITEM:target)&lt;br /&gt;
&lt;br /&gt;
Check if the character or item is currently in an automated dialog&lt;br /&gt;
&lt;br /&gt;
GetDistance(OUT FLOAT:distance, GAMEOBJECT|FLOAT3:source, GAMEOBJECT|FLOAT3:target)&lt;br /&gt;
&lt;br /&gt;
Returns the distance between 2 positions&lt;br /&gt;
&lt;br /&gt;
GetDistance2D(OUT FLOAT:distance, GAMEOBJECT|FLOAT3:source, GAMEOBJECT|FLOAT3:target)&lt;br /&gt;
Returns the 2D distance between 2 positions (ignores height)&lt;br /&gt;
&lt;br /&gt;
GetInnerDistance(OUT FLOAT:distance, GAMEOBJECT:source, GAMEOBJECT:target)&lt;br /&gt;
&lt;br /&gt;
Returns the distance between 2 gameobjects (character, item, trigger, ...) Their bounds are already subtracted.&lt;br /&gt;
&lt;br /&gt;
GetPosition(GAMEOBJECT:object, OUT FLOAT3:position)&lt;br /&gt;
&lt;br /&gt;
Returns the position of a gameobject (character, item, trigger, ...)&lt;br /&gt;
&lt;br /&gt;
GetVar(OUT OBJECT:returnValue, CHARACTER|ITEM:target, FIXEDSTRING:varName)&lt;br /&gt;
&lt;br /&gt;
Gets a global variable from the target&lt;br /&gt;
&lt;br /&gt;
GetClosestPlayer(OUT CHARACTER:player, GAMEOBJECT|FLOAT3:source)&lt;br /&gt;
&lt;br /&gt;
Gets the closest player near the source, default being being the object itself&lt;br /&gt;
&lt;br /&gt;
GetPlayerCount(OUT INT:playerCount)&lt;br /&gt;
&lt;br /&gt;
Gets the number of players in the party&lt;br /&gt;
&lt;br /&gt;
GetPlayerByIndex(OUT CHARACTER:returnCharacter, INT:playerIndex)&lt;br /&gt;
&lt;br /&gt;
Gets a player from the party by index&lt;br /&gt;
&lt;br /&gt;
GetRandomCharacter(OUT CHARACTER:returnCharacter, [INT:canBeSelf=0, INT:canBePlayer=0])&lt;br /&gt;
&lt;br /&gt;
Gets a random character in the current level&lt;br /&gt;
&lt;br /&gt;
ContainsSurface(GAMEOBJECT|FLOAT3:source, FLOAT:radius, SURFACE:type,)&lt;br /&gt;
&lt;br /&gt;
Checks if there is any surface of the type within a radius of the source&lt;br /&gt;
&lt;br /&gt;
IsSurface(GAMEOBJECT|FLOAT3:source, FLOAT:radius, SURFACE:type,)&lt;br /&gt;
&lt;br /&gt;
Checks if the whole radius around the source is the specified surface type&lt;br /&gt;
&lt;br /&gt;
IsObjectOnObject(CHARACTER|ITEM:source,CHARACTER|ITEM:target)&lt;br /&gt;
&lt;br /&gt;
Checks if the source is standing on the target&lt;br /&gt;
&lt;br /&gt;
GetX(FLOAT3:vector, OUT FLOAT:value)&lt;br /&gt;
&lt;br /&gt;
Returns the X component of the vector&lt;br /&gt;
&lt;br /&gt;
GetY(FLOAT3:vector, OUT FLOAT:value)&lt;br /&gt;
&lt;br /&gt;
Returns the Y component of the vector&lt;br /&gt;
&lt;br /&gt;
GetZ(FLOAT3:vector, OUT FLOAT:value)&lt;br /&gt;
&lt;br /&gt;
Returns the Z component of the vector&lt;br /&gt;
&lt;br /&gt;
CanSee(GAMEOBJECT|FLOAT3:source, GAMEOBJECT|FLOAT3:target[, INT:addProjectileTargetGroundOffset=0])&lt;br /&gt;
&lt;br /&gt;
Check if the sight is blocked between 2 points.&lt;br /&gt;
&lt;br /&gt;
IsVisible(CHARACTER|ITEM:object)&lt;br /&gt;
&lt;br /&gt;
Check if the object is set invisible or not with SetVisible.&lt;br /&gt;
&lt;br /&gt;
GetTextDuration(CHARACTER|ITEM:object, FIXEDSRTING:key, OUT FLOAT:duration)&lt;br /&gt;
&lt;br /&gt;
Gets how long a text needs to be displayed&lt;br /&gt;
&lt;br /&gt;
IsCasual(-)&lt;br /&gt;
&lt;br /&gt;
Returns if the current game mode is Casual&lt;br /&gt;
&lt;br /&gt;
IsHardcore(-)&lt;br /&gt;
&lt;br /&gt;
Returns if the current game mode is Hardcore&lt;br /&gt;
&lt;br /&gt;
IsTagged(GAMEOBJECT:object, FIXEDSTRING:tag)&lt;br /&gt;
&lt;br /&gt;
Check if the object is tagged.&lt;br /&gt;
&lt;br /&gt;
TranslatedStringKeyExists(FIXEDSTRING:key)&lt;br /&gt;
&lt;br /&gt;
Check if the TranslatedString key exists.&lt;br /&gt;
&lt;br /&gt;
IsInCombat(CHARACTER|ITEM:object)&lt;br /&gt;
&lt;br /&gt;
Returns true if the object is in combat.&lt;br /&gt;
&lt;br /&gt;
IsInCombatWith(CHARACTER|ITEM:object, CHARACTER|ITEM:object)&lt;br /&gt;
&lt;br /&gt;
Returns true if the objects are in combat with each other.&lt;br /&gt;
&lt;br /&gt;
IsFacing(GAMEOBJECT:source, GAMEOBJECT|FLOAT3:target, [INT:angle=90])&lt;br /&gt;
&lt;br /&gt;
Returns true if the object is facing the position within the given angle.&lt;br /&gt;
&lt;br /&gt;
GameIsSaving(-)&lt;br /&gt;
&lt;br /&gt;
Returns true if the game is saving.&lt;br /&gt;
&lt;br /&gt;
GameIsLoading(-)&lt;br /&gt;
&lt;br /&gt;
Returns true if the game is loading.&lt;br /&gt;
&lt;br /&gt;
GetUserCount(OUT INT:userCount)&lt;br /&gt;
&lt;br /&gt;
Returns the user count.&lt;br /&gt;
&lt;br /&gt;
GetCurrentCharacter(OUT CHARACTER:character, INT:user)&lt;br /&gt;
&lt;br /&gt;
Returns the character currently being controlled by the specified user.&lt;br /&gt;
&lt;br /&gt;
GetCurrentLevel(OUT FIXEDSTRING:currentLevel)&lt;br /&gt;
&lt;br /&gt;
Returns the current levelname&lt;br /&gt;
&lt;br /&gt;
GetAIBounds(CHARACTER|ITEM:source, OUT FLOAT:bounds)&lt;br /&gt;
&lt;br /&gt;
Returns AI bounds of &amp;lt;source&amp;gt; in &amp;lt;bounds&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HasGlobalFlag(FIXEDSTRING:flagName)&lt;br /&gt;
&lt;br /&gt;
Returns if the Global Flag is set&lt;br /&gt;
&lt;br /&gt;
HasFlag(CHARACTER|ITEM:object, FIXEDSTRING:flagName)&lt;br /&gt;
&lt;br /&gt;
Returns if the Flag is set on the Object&lt;br /&gt;
&lt;br /&gt;
HasUserFlag(CHARACTER:object, FIXEDSTRING:flagName)&lt;br /&gt;
&lt;br /&gt;
Returns if the Flag is set on the user's characters&lt;br /&gt;
&lt;br /&gt;
HasPartyFlag(CHARACTER:object, FIXEDSTRING:flagName)&lt;br /&gt;
&lt;br /&gt;
Returns if the Flag is set on the party's characters&lt;br /&gt;
&lt;br /&gt;
DialogExists(STRING:dialogue)&lt;br /&gt;
&lt;br /&gt;
Returns true if the dialogue exists.&lt;br /&gt;
&lt;br /&gt;
IsActive(CHARACTER|ITEM:Object)&lt;br /&gt;
&lt;br /&gt;
Returns if the character or item is currently active.&lt;br /&gt;
&lt;br /&gt;
ListGetSize(LIST&amp;lt;OBJECT&amp;gt;:list, out INT:size)&lt;br /&gt;
&lt;br /&gt;
Returns the number of elements in &amp;lt;list&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ListGet(LIST&amp;lt;OBJECT&amp;gt;:list, INT:index, out OBJECT:entry)&lt;br /&gt;
&lt;br /&gt;
Returns &amp;lt;entry&amp;gt; at &amp;lt;index&amp;gt; of &amp;lt;list&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ListGetRandom(LIST&amp;lt;OBJECT&amp;gt;:list, out OBJECT:entry)&lt;br /&gt;
&lt;br /&gt;
Returns a random &amp;lt;entry&amp;gt; of &amp;lt;list&amp;gt;&lt;br /&gt;
&lt;br /&gt;
IsBoss(CHARACTER|ITEM:Object)&lt;br /&gt;
&lt;br /&gt;
Returns true if the entity is tagged as a boss&lt;br /&gt;
&lt;br /&gt;
IsProjectileSkill(SKILL:skill)&lt;br /&gt;
&lt;br /&gt;
Returns true if the skill is a ranged skill (uses a projectile)&lt;br /&gt;
&lt;br /&gt;
IsValidSkillTarget(CHARACTER:source, OBJECT|FLOAT3:target, SKILLID:skill[, INTEGER:ignoreRangeCheck=0])&lt;br /&gt;
&lt;br /&gt;
Checks whether &amp;lt;target&amp;gt; is a valid target for &amp;lt;skill&amp;gt; at &amp;lt;source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GetFaction(OUT FIXEDSTRING:faction, CHARACTER|ITEM:character)&lt;br /&gt;
&lt;br /&gt;
Returns the faction of the provided character or item&lt;br /&gt;
&lt;br /&gt;
IsInActiveTurn(CHARACTER|ITEM:target)&lt;br /&gt;
&lt;br /&gt;
Returns true if it's the character's or item's turn in combat.&lt;br /&gt;
&lt;br /&gt;
IsSkillActive(CHARACTER:character, SKILL:skillId)&lt;br /&gt;
&lt;br /&gt;
Returns true if &amp;lt;character&amp;gt; has &amp;lt;skillId&amp;gt; active (in memory).&lt;br /&gt;
&lt;br /&gt;
HasSkillAi(SKILLID:skillId)&lt;br /&gt;
&lt;br /&gt;
Returns true if the skill is using the new Ai system&lt;br /&gt;
&lt;br /&gt;
IsInArena(CHARACTER::character)&lt;br /&gt;
&lt;br /&gt;
Returns true if the character is in an arena fight&lt;br /&gt;
&lt;br /&gt;
CrimeGetType(INTEGER:crimeId, OUT STRING:crimeType)&lt;br /&gt;
&lt;br /&gt;
Returns the type of the crime with this id.&lt;br /&gt;
&lt;br /&gt;
CrimeGetCriminals(INTEGER:crimeId, OUT CHARACTER:criminal1, OUT CHARACTER:criminal2, OUT CHARACTER:criminal3, OUT CHARACTER:criminal4)&lt;br /&gt;
&lt;br /&gt;
Returns the criminals of that crime. They might all be null.&lt;br /&gt;
&lt;br /&gt;
IsSourceSkill(SKILL:skill)&lt;br /&gt;
&lt;br /&gt;
Returns true if the skill is a source skill.&lt;br /&gt;
&lt;br /&gt;
IsInGameMasterMode(-)&lt;br /&gt;
&lt;br /&gt;
Returns true if the game in game master mode.&lt;br /&gt;
&lt;br /&gt;
CharacterGet(OUT CHARACTER:character, GAMEOBJECT|FLOAT3:src, FLOAT:range, COMPARE:howTo, COMPAREFUNC:compareFunc[, RELATION: relation, SURFACE:surface, STATUS:status, TALENT:talent, CHARACTER:inSightOf, FIXEDSTRING:tag])&lt;br /&gt;
&lt;br /&gt;
Get a character within a certain range conforming to the filled in restraints. &lt;br /&gt;
&lt;br /&gt;
CharacterCount(OUT INT:count, GAMEOBJECT|FLOAT3:src, FLOAT:range, [RELATION: relation, SURFACE:surface, STATUS:status, TALENT:talent, CHARACTER:inSightOf])&lt;br /&gt;
&lt;br /&gt;
Counts the characters within a certain range conforming to the filled in restraints.&lt;br /&gt;
&lt;br /&gt;
CharacterGetOwner(OUT CHARACTER:owner, CHARACTER:source)&lt;br /&gt;
&lt;br /&gt;
Get the character's owner&lt;br /&gt;
&lt;br /&gt;
CharacterGetFollow(OUT CHARACTER:to follow, CHARACTER:source)&lt;br /&gt;
&lt;br /&gt;
Get the character to follow&lt;br /&gt;
&lt;br /&gt;
CharacterGetEnemy(OUT CHARACTER:current enemy, CHARACTER:source)&lt;br /&gt;
&lt;br /&gt;
Get current enemy of character&lt;br /&gt;
&lt;br /&gt;
CharacterCanCast(CHARACTER:source, SKILL:skillId, [ITEM:skillItem=null, INT:ignoreActionPoints=0])&lt;br /&gt;
&lt;br /&gt;
Check if the character source can cast the skill: will check cooldown, actionpoints&lt;br /&gt;
&lt;br /&gt;
CharacterCanSitOnItem(CHARACTER:source, ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Check if the character source can sit or lie on an item.&lt;br /&gt;
&lt;br /&gt;
CharacterCanDrinkPotion(CHARACTER:source, FIXEDSTRING:potionID[, INT:ignoreActionPoints=0])&lt;br /&gt;
&lt;br /&gt;
Check if the character source can drink the potion: will check inv and actionpoints&lt;br /&gt;
&lt;br /&gt;
CharacterCanUseItem(CHARACTER:source, ITEM:item[, INT:ignoreActionPoints=0])&lt;br /&gt;
&lt;br /&gt;
Check if the character source can use the item in the world&lt;br /&gt;
&lt;br /&gt;
CharacterCanUseItemInInventory(CHARACTER:source, ITEM:item[, INT:ignoreActionPoints=0])&lt;br /&gt;
&lt;br /&gt;
Check if the character source can use the item in his inventory&lt;br /&gt;
&lt;br /&gt;
CharacterCanSee(CHARACTER:watchingChar, CHARACTER|ITEM:target [, INT:forceUpdate=0])&lt;br /&gt;
&lt;br /&gt;
Check if character has target in his line of sight. &lt;br /&gt;
&lt;br /&gt;
CharacterCanShoot(CHARACTER:source, GAMEOBJECT|FLOAT3:target)&lt;br /&gt;
&lt;br /&gt;
Check if the character can shoot the target.&lt;br /&gt;
&lt;br /&gt;
CharacterIsPlayer(CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Check if the character is a player&lt;br /&gt;
&lt;br /&gt;
CharacterIsInParty(CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Check if the character is in the party&lt;br /&gt;
&lt;br /&gt;
CharacterIsEnemy(CHARACTER:source, CHARACTER:target)&lt;br /&gt;
&lt;br /&gt;
Check if target is enemy of source&lt;br /&gt;
&lt;br /&gt;
CharacterIsAlly(CHARACTER:source, CHARACTER:target)&lt;br /&gt;
&lt;br /&gt;
Check if target is ally of source&lt;br /&gt;
&lt;br /&gt;
CharacterIsNeutral(CHARACTER:source, CHARACTER:target)&lt;br /&gt;
&lt;br /&gt;
Check if target is neutral of source&lt;br /&gt;
&lt;br /&gt;
CharacterIsDead(CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Check if character is dead&lt;br /&gt;
&lt;br /&gt;
CharacterIsMoving(CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Check if character is moving (speed &amp;gt; 0)&lt;br /&gt;
&lt;br /&gt;
CharacterIsSummon(CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Check if character is a summon&lt;br /&gt;
&lt;br /&gt;
CharacterIsPartyFollower(CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Check if character is a party follower&lt;br /&gt;
&lt;br /&gt;
CharacterIsStoryNPC(CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Check if character is a story NPC&lt;br /&gt;
&lt;br /&gt;
CharacterInWeaponRange(CHARACTER:character, CHARACTER:target)&lt;br /&gt;
&lt;br /&gt;
Check if target is in the current's weapon range&lt;br /&gt;
&lt;br /&gt;
CharacterInTouchRange(CHARACTER:character, CHARACTER:targetChar)&lt;br /&gt;
&lt;br /&gt;
Check if target is in the character's touch range &lt;br /&gt;
&lt;br /&gt;
CharacterHasStatus(CHARACTER:character, STATUS:statusId[, FIXEDSTRING:extraData])&lt;br /&gt;
&lt;br /&gt;
Check if character currently has the status. ExtraData can be filled in for some statuses: - Consume: statsid of the item - Shield: skillid of the shield&lt;br /&gt;
&lt;br /&gt;
CharacterGetStatusSourceCharacter(CHARACTER:character, STATUS:statusId, OUT CHARACTER:source[, FIXEDSTRING:extraData])&lt;br /&gt;
&lt;br /&gt;
Get the source character of a status&lt;br /&gt;
&lt;br /&gt;
CharacterGetStatusSourceItem(CHARACTER:character, STATUS:statusId, OUT ITEM:source[, FIXEDSTRING:extraData])&lt;br /&gt;
&lt;br /&gt;
Get the source item of a status&lt;br /&gt;
&lt;br /&gt;
CharacterHasTalent(CHARACTER:character, TALENT:talent)&lt;br /&gt;
&lt;br /&gt;
Check if character currently has the talent&lt;br /&gt;
&lt;br /&gt;
CharacterHasSkill(CHARACTER:character, SKILL:skillId)&lt;br /&gt;
&lt;br /&gt;
Check if character currently has the skill&lt;br /&gt;
&lt;br /&gt;
CharacterHasWeaponType(CHARACTER:character, WEAPON:weaponTYPE [, INT:equipped])&lt;br /&gt;
&lt;br /&gt;
Check if character currently has a weapon of this type in his inventory or equipped&lt;br /&gt;
&lt;br /&gt;
CharacterGetStat(OUT FLOAT:statValue, CHARACTER:character, CHARACTERSTAT:statType)&lt;br /&gt;
&lt;br /&gt;
Returns the current value of the stat (Vitality, ...)&lt;br /&gt;
&lt;br /&gt;
CharacterGetSightRange(OUT FLOAT:range, CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Returns the character's sight range&lt;br /&gt;
&lt;br /&gt;
CharacterGetWeaponRange(OUT FLOAT:minRange, OUT FLOAT:maxRange, CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Returns the character's current weapon range&lt;br /&gt;
&lt;br /&gt;
CharacterGetTouchRange(OUT FLOAT:touchRange, CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Returns the character's current touch range&lt;br /&gt;
&lt;br /&gt;
CharacterGetSkillRange(OUT FLOAT:minRange, OUT FLOAT:maxRange,CHARACTER:character, SKILL:skillId)&lt;br /&gt;
&lt;br /&gt;
Returns the character's skill range&lt;br /&gt;
&lt;br /&gt;
CharacterGetSkillImpactRange(OUT FLOAT:areaRange, CHARACTER:character, SKILL:skillId)&lt;br /&gt;
&lt;br /&gt;
Returns the character's skill range&lt;br /&gt;
&lt;br /&gt;
CharacterIsInTrigger(CHARACTER:character, TRIGGER:trigger)&lt;br /&gt;
&lt;br /&gt;
Check if character is in given trigger&lt;br /&gt;
&lt;br /&gt;
CharacterGetAbility(OUT INT:value, CHARACTER:character, ABILITY:ability)&lt;br /&gt;
&lt;br /&gt;
Returns the character's value of the specified ability&lt;br /&gt;
&lt;br /&gt;
CharacterGetHostileCount(OUT INT:value, CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Returns how many characters are targeting this character right now... You can iterate over them with IterateEnemiesOf.&lt;br /&gt;
&lt;br /&gt;
CharacterCanFight(CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Returns true if the character can fight.&lt;br /&gt;
&lt;br /&gt;
CharacterGetTemplate(CHARACTER:character, OUT CHARACTERTEMPLATE:root)&lt;br /&gt;
&lt;br /&gt;
Returns the roottemplate of the character.&lt;br /&gt;
&lt;br /&gt;
CharacterCanSpotSneakers(CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Returns true if the character can spot sneaking characters&lt;br /&gt;
&lt;br /&gt;
CharacterIsFloating(CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Check if character is a floating character&lt;br /&gt;
&lt;br /&gt;
CharacterInCreation(CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Returns true if the character is in character creation&lt;br /&gt;
&lt;br /&gt;
CharacterAvoidsTraps(CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Returns true if the character avoids traps&lt;br /&gt;
&lt;br /&gt;
CharacterCheckRelation(CHARACTER:character, RELATION:relation)&lt;br /&gt;
&lt;br /&gt;
Returns true if relation check succeeds&lt;br /&gt;
&lt;br /&gt;
CharacterIsBetterOrEqualClass(CHARACTER:character, INT:currentScore, OUT INT:newScore, INT warriorScore, INT rogueScore, INT mageScore, INT clericScore, INT rangerScore)&lt;br /&gt;
&lt;br /&gt;
Returns true if score is higher or equal than the current score&lt;br /&gt;
&lt;br /&gt;
CharacterHasBeenHitBy(CHARACTER:character, DAMAGE_TYPE:damageType)&lt;br /&gt;
&lt;br /&gt;
Returns true if the character was hit by this type.&lt;br /&gt;
&lt;br /&gt;
CharacterHasCastedSpellLastTurn(CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Returns true if the character has casted a spell in his last turn.&lt;br /&gt;
&lt;br /&gt;
CharacterHasHadStatus(CHARACTER:character, STATUS:status)&lt;br /&gt;
&lt;br /&gt;
Returns true if the character has had a specific status this combat.&lt;br /&gt;
&lt;br /&gt;
CharacterHasAnimationOverride(CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Returns true if the character has an animation override.&lt;br /&gt;
&lt;br /&gt;
CharacterCanUnlock(CHARACTER:character, ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Returns true if the character can unlock the item (if the item is already unlocked it returns true!)&lt;br /&gt;
&lt;br /&gt;
CharacterGetReservedUserID(OUT INT:user, CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Returns the character's reserved User id.&lt;br /&gt;
&lt;br /&gt;
CharacterGetRace(CHARACTER:character, OUT FIXEDSTRING:race)&lt;br /&gt;
&lt;br /&gt;
Returns the &amp;lt;character&amp;gt;'s race in &amp;lt;race&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CharacterIsRace(CHARACTER:character, FIXEDSTRING:race)&lt;br /&gt;
&lt;br /&gt;
Returns true if &amp;lt;character&amp;gt;'s race is &amp;lt;race&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CharacterCanMoveItem(CHARACTER:character, ITEM:item, FLOAT:minRadius, FLOAT:maxRadius [, OUT FLOAT3:destination])&lt;br /&gt;
&lt;br /&gt;
Returns true + &amp;lt;destination&amp;gt; if &amp;lt;character&amp;gt; can move &amp;lt;item&amp;gt; somewhere between &amp;lt;minRadius&amp;gt; and &amp;lt;maxRadius&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CharacterGetDeathType(CHARACTER:character, OUT FIXEDSTRING:deathType)&lt;br /&gt;
&lt;br /&gt;
Returns death type of &amp;lt;character&amp;gt; in &amp;lt;deathType&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CharacterGetStillAnimation(CHARACTER:object, OUT FIXEDSTRING:stillAnimation)&lt;br /&gt;
&lt;br /&gt;
Returns the still animation to play&lt;br /&gt;
&lt;br /&gt;
CrimeTransferLeadership(INT: CrimeID[, FIXEDSTRING:Tag1,...])&lt;br /&gt;
&lt;br /&gt;
Try and transfer the leadership of this crime to someone else.&lt;br /&gt;
&lt;br /&gt;
CrimeGetLeadInvestigator(OUT CHARACTER:lead, INT: CrimeID)&lt;br /&gt;
&lt;br /&gt;
Returns the lead investigator for the crime.&lt;br /&gt;
&lt;br /&gt;
CharacterCanHitTargetWithRangedWeapon(CHARACTER:source, OBJECT|FLOAT3:target[, SKILL:skill = null])&lt;br /&gt;
&lt;br /&gt;
Returns true if &amp;lt;source&amp;gt; can hit &amp;lt;target&amp;gt; with currently equipped ranged weapon. Will use &amp;lt;skill&amp;gt; instead of equipped weapon if provided.&lt;br /&gt;
&lt;br /&gt;
CharacterHasRangedWeapon(CHARACTER:character[, INT:checkInventory = 0])&lt;br /&gt;
&lt;br /&gt;
Returns true if &amp;lt;character&amp;gt; has has ranged weapon. Checks for non-wielded weapons if &amp;lt;checkInventory&amp;gt; is 1&lt;br /&gt;
&lt;br /&gt;
CheckInteractionReach(CHARACTER:character, CHARACTER|ITEM: target)&lt;br /&gt;
&lt;br /&gt;
Returns true if &amp;lt;character&amp;gt; could interact with &amp;lt;target&amp;gt;. This is not checking ranges, but checking if there's too much of a height difference or too many obstacles in between.&lt;br /&gt;
&lt;br /&gt;
CharacterGetSourcePoints(CHARACTER:character, OUT INT: amount)&lt;br /&gt;
&lt;br /&gt;
Returns the amount of sourcepoints of &amp;lt;character&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CharacterAiIsCalculating(-)&lt;br /&gt;
&lt;br /&gt;
Returns if the character is still calculating the AI.&lt;br /&gt;
&lt;br /&gt;
CharacterAiFetchMoveSkillCommand(OUT SKILL:skill, OUT ITEM:skillItem, OUT FLOAT3:target)&lt;br /&gt;
&lt;br /&gt;
Returns if the character has a Move Skill command to execute according to the AI.&lt;br /&gt;
&lt;br /&gt;
CharacterAiFetchSkillCommand(OUT SKILL:skill, OUT ITEM:skillItem, OUT FLOAT3 endPosition, OUT FLOAT3:target, OUT CHARACTER:target, OUT ITEM:target, OUT FLOAT3:target2, OUT CHARACTER:target2, OUT ITEM:target)&lt;br /&gt;
&lt;br /&gt;
Returns if the character has a Skill command to execute according to the AI.&lt;br /&gt;
&lt;br /&gt;
CharacterAiFetchConsumeCommand(OUT ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Returns if the character has a Consume command to execute according to the AI.&lt;br /&gt;
&lt;br /&gt;
CharacterAiFetchAttackCommand(OUT FLOAT3:endPosition, OUT FLOAT3:target, OUT CHARACTER:target, OUT ITEM:target)&lt;br /&gt;
&lt;br /&gt;
Returns if the character has a Attack command to execute according to the AI.&lt;br /&gt;
&lt;br /&gt;
CharacterAiFetchFallbackCommand(OUT FLOAT3:targetPosition, OUT FLOAT3:lookAtPosition)&lt;br /&gt;
&lt;br /&gt;
Returns if the character has a Fallback command to execute according to the AI.&lt;br /&gt;
&lt;br /&gt;
CharacterGetArchetype(CHARACTER:character, OUT ARCHETYPE:archetype)&lt;br /&gt;
&lt;br /&gt;
Returns the archetype of the character.&lt;br /&gt;
&lt;br /&gt;
CharacterIsPolymorphedInto(CHARACTER:character, FIXEDSTRING:race)&lt;br /&gt;
&lt;br /&gt;
Returns true if &amp;lt;character&amp;gt; is polymorphed into &amp;lt;race&amp;gt;. Race can be a race (like HUMAN), but also a template (in case of a polymorph skill like Chicken Touch).&lt;br /&gt;
&lt;br /&gt;
CharacterIsPolymorphInteractionDisabled(CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Returns true if &amp;lt;character&amp;gt; has his interaction disabled because of a polymorph.&lt;br /&gt;
&lt;br /&gt;
ItemGet(OUT ITEM:item, GAMEOBJECT|FLOAT3:src, FLOAT:range, COMPARE:howTo [, COMPAREFUNC:compareFunc, FIXEDSTRING:rootTemplate, FIXEDSTRING:tag])&lt;br /&gt;
&lt;br /&gt;
Get an item within a certain range conforming to the filled in restraints.&lt;br /&gt;
&lt;br /&gt;
ItemGetFromInventory(OUT ITEM:item, CHARACTER|ITEM:object [, FIXEDSTRING:statsId, FIXEDSTRING:tag, INT:isEquiped])&lt;br /&gt;
&lt;br /&gt;
Returns the first item in the inventory conforming to the filled in restraints.&lt;br /&gt;
&lt;br /&gt;
ItemIsInCharacterInventory(ITEM:item, CHARACTER:object)&lt;br /&gt;
&lt;br /&gt;
Returns if the item is in the inventory of the character&lt;br /&gt;
&lt;br /&gt;
ItemIsInTrigger(ITEM:item, TRIGGER:trigger)&lt;br /&gt;
&lt;br /&gt;
Check if item is in given trigger&lt;br /&gt;
&lt;br /&gt;
ItemGetStat(OUT FLOAT:statValue, ITEM:item, ITEMSTAT:statType)&lt;br /&gt;
&lt;br /&gt;
Returns the current value of the stat (Weight, ...)&lt;br /&gt;
&lt;br /&gt;
ItemIsMoving(ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Returns if the item is moving or not.&lt;br /&gt;
&lt;br /&gt;
ItemIsFalling(ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Returns if the item is falling or not. (after teleport)&lt;br /&gt;
&lt;br /&gt;
ItemIsOpening(ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Returns if the item is opening or not.&lt;br /&gt;
&lt;br /&gt;
ItemIsClosing(ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Returns if the item is closing or not.&lt;br /&gt;
&lt;br /&gt;
ItemIsLocked(ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Returns if the item is locked or not.&lt;br /&gt;
&lt;br /&gt;
ItemIsMovable(ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Returns if the item is movable or not.&lt;br /&gt;
&lt;br /&gt;
ItemCanBeLockPicked(ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Returns if the item is can be opened by lockpicking.&lt;br /&gt;
&lt;br /&gt;
ItemIsOpen(ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Returns if the item is open or not.&lt;br /&gt;
&lt;br /&gt;
IsStoryItem(ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Returns if the item is a story item.&lt;br /&gt;
&lt;br /&gt;
ItemHasStatus(ITEM:item, STATUS:statusId)&lt;br /&gt;
&lt;br /&gt;
Returns if the item has the status.&lt;br /&gt;
&lt;br /&gt;
ItemIsDestroyed(ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Returns if the item is destroyed.&lt;br /&gt;
&lt;br /&gt;
ItemGetTemplate(ITEM:item, OUT ITEMTEMPLATE:root)&lt;br /&gt;
&lt;br /&gt;
Returns the roottemplate of the item.&lt;br /&gt;
&lt;br /&gt;
ItemGetSkillId(ITEM:item, OUT SKILL:root)&lt;br /&gt;
&lt;br /&gt;
Returns the skillid of the item if it has one.&lt;br /&gt;
&lt;br /&gt;
ItemGetItemType(ITEM:item, OUT FIXEDSTRING:itemType)&lt;br /&gt;
&lt;br /&gt;
Returns the itemtype of the item: common, unique, rare, ...&lt;br /&gt;
&lt;br /&gt;
ItemGetStatusSourceCharacter(ITEM:item, STATUS:statusId, OUT CHARACTER:source)&lt;br /&gt;
&lt;br /&gt;
Get the source character of a status&lt;br /&gt;
&lt;br /&gt;
ItemGetStatusSourceItem(ITEM:item, STATUS:statusId, OUT ITEM:source)&lt;br /&gt;
&lt;br /&gt;
Get the source item of a status&lt;br /&gt;
&lt;br /&gt;
ItemCanBeMoved(ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Returns if the item can be moved.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== TRIGGERS ==&lt;br /&gt;
&lt;br /&gt;
OnCharacterEvent(CHARACTER:character, STRING:eventName)&lt;br /&gt;
&lt;br /&gt;
Thrown from scripts or story&lt;br /&gt;
&lt;br /&gt;
OnCharacterItemEvent(CHARACTER:character, ITEM:item, STRING:eventName)&lt;br /&gt;
Thrown from scripts or story&lt;br /&gt;
&lt;br /&gt;
OnCharacterCharacterEvent(CHARACTER:character, CHARACTER:character, STRING:eventName)&lt;br /&gt;
&lt;br /&gt;
Thrown from scripts or story&lt;br /&gt;
&lt;br /&gt;
OnItemEvent(ITEM:item, STRING:eventName)&lt;br /&gt;
Thrown from scripts or story&lt;br /&gt;
&lt;br /&gt;
OnItemDestroyed(ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Thrown when an item is destroyed&lt;br /&gt;
&lt;br /&gt;
OnItemDestroying(ITEM:item)&lt;br /&gt;
Thrown when an item is being destroyed&lt;br /&gt;
&lt;br /&gt;
OnItemOpened(ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Thrown when an item is opened&lt;br /&gt;
&lt;br /&gt;
OnItemClosed(ITEM:item)&lt;br /&gt;
Thrown when an item is closed&lt;br /&gt;
&lt;br /&gt;
OnItemDropped(ITEM:item, STRING:itemTemplate)&lt;br /&gt;
&lt;br /&gt;
Thrown when an item is dropped&lt;br /&gt;
&lt;br /&gt;
OnGlobalFlagSet(FIXEDSTRING:eventName)&lt;br /&gt;
Thrown when a global event is set&lt;br /&gt;
&lt;br /&gt;
OnGlobalFlagCleared(FIXEDSTRING:eventName)&lt;br /&gt;
&lt;br /&gt;
Thrown when a global event is cleared&lt;br /&gt;
&lt;br /&gt;
OnCharacterFlagSet(FIXEDSTRING:eventName, CHARACTER:character)&lt;br /&gt;
Thrown when a dialog event is set on a character&lt;br /&gt;
&lt;br /&gt;
OnCharacterFlagCleared(FIXEDSTRING:eventName, CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Thrown when a dialog event is cleared on a character&lt;br /&gt;
&lt;br /&gt;
OnItemFlagSet(FIXEDSTRING:eventName, ITEM:item)&lt;br /&gt;
Thrown when a dialog event is set on an item&lt;br /&gt;
&lt;br /&gt;
OItemFlagCleared(FIXEDSTRING:eventName, ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Thrown when a dialog event is cleared on an item&lt;br /&gt;
&lt;br /&gt;
OnTimer(FIXEDSTRING:timerName)&lt;br /&gt;
Thrown when a timer has ended&lt;br /&gt;
&lt;br /&gt;
OnInit(-)&lt;br /&gt;
&lt;br /&gt;
Thrown when the script is set&lt;br /&gt;
&lt;br /&gt;
OnLoaded(INT:major, INT:minor, INT:revision, INT:build)&lt;br /&gt;
&lt;br /&gt;
Thrown when the script is loaded from the savegame&lt;br /&gt;
&lt;br /&gt;
OnShutdown(-)&lt;br /&gt;
&lt;br /&gt;
Thrown when the character's script is removed&lt;br /&gt;
&lt;br /&gt;
OnVariableCleared(FIXEDSTRING:varName)&lt;br /&gt;
&lt;br /&gt;
Thrown when this object's script variable is cleared from Osiris with ClearVarObject&lt;br /&gt;
&lt;br /&gt;
OnCombatStarted(CHARACTER:source, ITEM:source)&lt;br /&gt;
&lt;br /&gt;
Thrown when the character entered a combat&lt;br /&gt;
&lt;br /&gt;
OnCombatSwitched(CHARACTER:source, ITEM:source)&lt;br /&gt;
&lt;br /&gt;
Thrown when the character switch from one combat to another&lt;br /&gt;
&lt;br /&gt;
OnCombatEnded(CHARACTER:source, ITEM:source)&lt;br /&gt;
&lt;br /&gt;
Thrown when the character left the combat&lt;br /&gt;
&lt;br /&gt;
OnTurn(CHARACTER:source, ITEM:source)&lt;br /&gt;
&lt;br /&gt;
Thrown when the character's turn starts&lt;br /&gt;
&lt;br /&gt;
OnTurnEnded(CHARACTER:source, ITEM:source)&lt;br /&gt;
&lt;br /&gt;
Thrown when the character's turn ended&lt;br /&gt;
&lt;br /&gt;
OnCharacterVitalityChanged(CHARACTER:character, FLOAT:percentage)&lt;br /&gt;
&lt;br /&gt;
Thrown when the characters's vitality changed&lt;br /&gt;
&lt;br /&gt;
OnItemVitalityChanged(ITEM:item, FLOAT:percentage)&lt;br /&gt;
&lt;br /&gt;
Thrown when the item's vitality changed&lt;br /&gt;
&lt;br /&gt;
OnAttackOfOpportunity(CHARACTER:target)&lt;br /&gt;
&lt;br /&gt;
Thrown when the characters gets an attack of opportunity on an enemy&lt;br /&gt;
&lt;br /&gt;
OnDamage(DAMAGE:type, FLOAT:percentage, CHARACTER:source, ITEM:source)&lt;br /&gt;
&lt;br /&gt;
Thrown when the object receives damage&lt;br /&gt;
&lt;br /&gt;
OnMiss(CHARACTER:source, ITEM:source, CHARACTER:target, ITEM:target)&lt;br /&gt;
&lt;br /&gt;
Thrown when the character dodges something&lt;br /&gt;
&lt;br /&gt;
OnCriticalHit(CHARACTER:source, ITEM:source, CHARACTER:target, ITEM:target)&lt;br /&gt;
&lt;br /&gt;
Thrown when the character is critical hit&lt;br /&gt;
&lt;br /&gt;
OnBlock(CHARACTER:source, ITEM:source, CHARACTER:target, ITEM:target)&lt;br /&gt;
&lt;br /&gt;
Thrown when the character blocks something&lt;br /&gt;
&lt;br /&gt;
OnDie(CHARACTER:character, DAMAGE:type, CHARACTER:source, ITEM:source)&lt;br /&gt;
&lt;br /&gt;
Thrown when the character dies&lt;br /&gt;
&lt;br /&gt;
OnCharacterStatusAttempt(CHARACTER:character, STATUS:status)&lt;br /&gt;
&lt;br /&gt;
Thrown when the character attempts to gain a status&lt;br /&gt;
&lt;br /&gt;
OnCharacterStatusApplied(CHARACTER:character, STATUS:status)&lt;br /&gt;
&lt;br /&gt;
Thrown when the character gains a status&lt;br /&gt;
&lt;br /&gt;
OnCharacterStatusRemoved(CHARACTER:character, STATUS:status)&lt;br /&gt;
&lt;br /&gt;
Thrown when the character loses a status&lt;br /&gt;
&lt;br /&gt;
OnItemStatusAttempt(ITEM:item, STATUS:status)&lt;br /&gt;
&lt;br /&gt;
Thrown when the item attempts to gain a status&lt;br /&gt;
&lt;br /&gt;
OnItemStatus(ITEM:item, STATUS:status)&lt;br /&gt;
&lt;br /&gt;
Thrown when the item gains a status&lt;br /&gt;
&lt;br /&gt;
OnItemStatusRemoved(ITEM:item, STATUS:status)&lt;br /&gt;
&lt;br /&gt;
Thrown when the item loses a status&lt;br /&gt;
&lt;br /&gt;
OnStatusCreateVisuals(STATUS:status)&lt;br /&gt;
&lt;br /&gt;
Thrown when the item should create the visuals for this status&lt;br /&gt;
&lt;br /&gt;
OnStatusDestroyVisuals(STATUS:status)&lt;br /&gt;
&lt;br /&gt;
Thrown when the item should destroy the visuals for this status&lt;br /&gt;
&lt;br /&gt;
OnSight(CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Thrown when the character sees another character&lt;br /&gt;
&lt;br /&gt;
OnLostSight(CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Thrown when the character doesn't see another character anymore&lt;br /&gt;
&lt;br /&gt;
OnUseItem(CHARACTER:source, ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Thrown when a character uses an item&lt;br /&gt;
&lt;br /&gt;
OnPickupItem(CHARACTER:source, ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Thrown when a character picks up an item&lt;br /&gt;
&lt;br /&gt;
OnCharacterMovedItem(CHARACTER:source, ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Thrown when a character moved an item&lt;br /&gt;
&lt;br /&gt;
OnItemEquipped(CHARACTER:source, ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Thrown when a character equips an item&lt;br /&gt;
&lt;br /&gt;
OnItemUnequipped(CHARACTER:source, ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Thrown when a character unequips an item&lt;br /&gt;
&lt;br /&gt;
OnIterateCharacter(CHARACTER:character, FIXEDSTRING:eventId)&lt;br /&gt;
&lt;br /&gt;
Thrown by iterators&lt;br /&gt;
&lt;br /&gt;
OnIterateItem(ITEM:source, FIXEDSTRING:eventId)&lt;br /&gt;
&lt;br /&gt;
Thrown by iterators&lt;br /&gt;
&lt;br /&gt;
OnIterateCount(FIXEDSTRING:eventId, INTEGER:Count)&lt;br /&gt;
&lt;br /&gt;
Thrown by iterators after all iterations to inform you of the count.&lt;br /&gt;
&lt;br /&gt;
OnStoryOverride(-)&lt;br /&gt;
&lt;br /&gt;
Throw when story overrides what the character was doing: teleport, movement, on/offstage&lt;br /&gt;
&lt;br /&gt;
OnTriggerEnter(CHARACTER:character, ITEM:item, FIXEDSTRING:eventId)&lt;br /&gt;
&lt;br /&gt;
Thrown by a character or item entering an EventTrigger&lt;br /&gt;
&lt;br /&gt;
OnTriggerLeave(CHARACTER:character, ITEM:item, FIXEDSTRING:eventId)&lt;br /&gt;
&lt;br /&gt;
Thrown by a character or item leaving an EventTrigger&lt;br /&gt;
&lt;br /&gt;
OnEnemyChanged(CHARACTER:character, CHARACTER:newEnemy)&lt;br /&gt;
&lt;br /&gt;
Thrown when the character's currentenemy changes&lt;br /&gt;
&lt;br /&gt;
OnTalentUnlocked(CHARACTER:character, TALENT:newTalent)&lt;br /&gt;
&lt;br /&gt;
Thrown when the character unlocks a new talent&lt;br /&gt;
&lt;br /&gt;
OnCharacterClassChanged(CHARACTER:character, FIXEDSTRING:class)&lt;br /&gt;
&lt;br /&gt;
Thrown when the character changes class in the character creation screen&lt;br /&gt;
&lt;br /&gt;
OnCharacterCreationStarted(CHARACTER:character, TRIGGER:creationPoint)&lt;br /&gt;
&lt;br /&gt;
Thrown when the character creation has started, and gives where the character should walk to&lt;br /&gt;
&lt;br /&gt;
OnCharacterCreationStopped(CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Thrown when the character creation has stopped&lt;br /&gt;
&lt;br /&gt;
OnFunction(FIXEDSTRING:functionName)&lt;br /&gt;
&lt;br /&gt;
Throws an event on itself with the functionName. This is to fake function calls &lt;br /&gt;
&lt;br /&gt;
OnSkillCast(CHARACTER:character, SKILL_ID:skillID)&lt;br /&gt;
&lt;br /&gt;
Thrown when the character casts a skill&lt;br /&gt;
&lt;br /&gt;
OnSkillCombatComment(CHARACTER:character, SKILL_ID:skillID)&lt;br /&gt;
&lt;br /&gt;
Thrown when the character needs to make a comment&lt;br /&gt;
&lt;br /&gt;
OnCharacterUsedSkillOnMe(CHARACTER:character, SKILL_ID:skillID)&lt;br /&gt;
&lt;br /&gt;
Thrown when you are hit by a skill from a character&lt;br /&gt;
&lt;br /&gt;
OnItemUnlocked(ITEM: item, CHARACTER:character, ITEM:key)&lt;br /&gt;
&lt;br /&gt;
Thrown when an item gets unlocked by a character.&lt;br /&gt;
&lt;br /&gt;
OnAutomatedDialogEnded(STRING:dialogName, INT:instanceID)&lt;br /&gt;
&lt;br /&gt;
Thrown when a automated dialog is ended for this speaker&lt;br /&gt;
&lt;br /&gt;
OnAutomatedDialogStarted(STRING:dialogName, INT:instanceID)&lt;br /&gt;
&lt;br /&gt;
Thrown when a automated dialog is started for this speaker&lt;br /&gt;
&lt;br /&gt;
OnDialogEnded(STRING:dialogName, INT:instanceID)&lt;br /&gt;
&lt;br /&gt;
Thrown when a dialog is ended for this speaker&lt;br /&gt;
&lt;br /&gt;
OnCrimeSensibleAction(INT:IsPrimary; FIXEDSTRING:regionID, INT:crimeID, FIXEDSTRING:reactionName, STRING:primaryDialog, CHARACTER:criminal1, CHARACTER:criminal2, CHARACTER:criminal3, CHARACTER:criminal4)&lt;br /&gt;
&lt;br /&gt;
Thrown when a character needs to perform a sensible action against criminals&lt;br /&gt;
&lt;br /&gt;
OnCrimeInterrogationRequest(FIXEDSTRING:regionID, INT:crimeID, CHARACTER:criminal1, CHARACTER:criminal2, CHARACTER:criminal3, CHARACTER:criminal4)&lt;br /&gt;
&lt;br /&gt;
Thrown when a character needs to perform an interrogation against criminals&lt;br /&gt;
&lt;br /&gt;
OnCrimeInvestigate(INT:crimeID; FLOAT3:CrimePosition)&lt;br /&gt;
&lt;br /&gt;
One NPC investigates a crimescene&lt;br /&gt;
&lt;br /&gt;
OnCrimeAlarmed(INT:crimeID; FLOAT3:CrimePosition)&lt;br /&gt;
&lt;br /&gt;
All NPCs in a crimearea start looking around.&lt;br /&gt;
&lt;br /&gt;
OnCrimeReturnToNormal(-)&lt;br /&gt;
&lt;br /&gt;
Investigation or Alarm timed out.&lt;br /&gt;
&lt;br /&gt;
OnCrimeAborted(-)&lt;br /&gt;
&lt;br /&gt;
The game interrupted the sensible action of this NPC.&lt;br /&gt;
&lt;br /&gt;
OnSplineControlPointReached(INT:Index, INT:EndReached, STRING:EventString)&lt;br /&gt;
&lt;br /&gt;
Thrown when a character reached a spline node.&lt;br /&gt;
&lt;br /&gt;
OnFinishCalculationAi(-)&lt;br /&gt;
&lt;br /&gt;
Thrown when the calculation of the AI is finished.&lt;br /&gt;
&lt;br /&gt;
OnGrenadeLand(INT:hitObstacle, CHARACTER:caster)&lt;br /&gt;
&lt;br /&gt;
Thrown when the grenades lands&lt;br /&gt;
&lt;br /&gt;
FetchCharacterApplyStatusData(LIST&amp;lt;STATUS&amp;gt;:removeStatuses, STATUS:applyStatus, INT:turns; CHARACTER:character, STATUS:status)&lt;br /&gt;
&lt;br /&gt;
Fetch from script which statuses to remove and apply.&lt;br /&gt;
&lt;br /&gt;
FetchItemApplyStatusData(LIST&amp;lt;STATUS&amp;gt;:removeStatuses, STATUS:applyStatus, INT:turns; ITEM:item, STATUS:status)&lt;br /&gt;
&lt;br /&gt;
Fetch from script which statuses to remove and apply.&lt;br /&gt;
&lt;br /&gt;
FetchItemSkillOnDamage(INT:hasSkill, SKILL_ID:skillID, INT:casterLevel; INT:damage, DAMAGE_TYPE:damageType)&lt;br /&gt;
&lt;br /&gt;
Fetch from script what skill to execute on damage.&lt;br /&gt;
&lt;br /&gt;
OnActivate(-)&lt;br /&gt;
&lt;br /&gt;
Thrown when a character/item activates&lt;br /&gt;
&lt;br /&gt;
OnDeactivate(-)&lt;br /&gt;
&lt;br /&gt;
Thrown when a character/item deactivates&lt;br /&gt;
&lt;br /&gt;
OnCharacterUsedSourcePoint(CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Thrown when a character uses a source point&lt;br /&gt;
&lt;br /&gt;
OnSkillAdded(CHARACTER:character, SKILL_ID:skillId, INT:learned)&lt;br /&gt;
&lt;br /&gt;
Thrown when a character learns a skill&lt;br /&gt;
&lt;br /&gt;
OnSkillActivated(CHARACTER:character, SKILL_ID:skillId)&lt;br /&gt;
&lt;br /&gt;
Thrown when a character activates (=adds to memory) a skill&lt;br /&gt;
&lt;br /&gt;
OnSkillDeactivated(CHARACTER:character, SKILL_ID:skillId)&lt;br /&gt;
&lt;br /&gt;
Thrown when a character deactivates (=removes from memory) a skill&lt;br /&gt;
&lt;br /&gt;
OnBetterReactionFound(FIXEDSTRING:reactionName)&lt;br /&gt;
&lt;br /&gt;
Thrown when the reaction is interrupted by another reaction&lt;br /&gt;
&lt;br /&gt;
OnNoReactionFound(-)&lt;br /&gt;
&lt;br /&gt;
Thrown when the reaction is interrupted because no reaction is valid&lt;br /&gt;
&lt;br /&gt;
OnScriptDisabled(-)&lt;br /&gt;
&lt;br /&gt;
Thrown when the reaction is interrupted because the scriptcontroller is disabled&lt;br /&gt;
&lt;br /&gt;
OnManualInterrupt(FIXEDSTRING:reactionName)&lt;br /&gt;
&lt;br /&gt;
Thrown when the reaction is interrupted using the interrupt action&lt;br /&gt;
&lt;br /&gt;
OnException(-)&lt;br /&gt;
&lt;br /&gt;
Thrown when the reaction is interrupted by an exception&lt;br /&gt;
&lt;br /&gt;
OnMovementFailed(FLOAT3:targetPos)&lt;br /&gt;
&lt;br /&gt;
Thrown when the reaction is interrupted by a move action failing&lt;br /&gt;
&lt;br /&gt;
OnItemFlagShared(FIXEDSTRING:eventName, ITEM:item, INT:newValue)&lt;br /&gt;
&lt;br /&gt;
Thrown when a dialog event is shared with an item&lt;br /&gt;
&lt;br /&gt;
OnCharacterFlagShared(FIXEDSTRING:eventName, CHARACTER:character, INT:newValue)&lt;br /&gt;
&lt;br /&gt;
Thrown when a dialog event is shared with a character&lt;br /&gt;
&lt;br /&gt;
OnItemOffStageChanged(CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Thrown when a character is set on/off stage&lt;br /&gt;
&lt;br /&gt;
OnCharacterOffStageChanged(ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Thrown when a item is set on/off stage&lt;br /&gt;
&lt;br /&gt;
OnCharacterTeleported(CHARACTER:target, CHARACTER:cause, FLOAT3:oldPosition, FLOAT3:newPosition, SKILL_ID:skillId)&lt;br /&gt;
&lt;br /&gt;
Thrown when a character gets teleported with a teleport skill&lt;br /&gt;
&lt;br /&gt;
OnCombatTick(-)&lt;br /&gt;
&lt;br /&gt;
Thrown when this object ticks in combat. Only thrown for objects that don't get a turn.&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Character_and_Item_Script_Triggers,_Calls,_and_Queries&amp;diff=3262</id>
		<title>Character and Item Script Triggers, Calls, and Queries</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Character_and_Item_Script_Triggers,_Calls,_and_Queries&amp;diff=3262"/>
		<updated>2017-09-25T17:00:40Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: /* CALLS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of almost every character and item script event trigger, call, and query. An event is what triggers the script, and always begin with ''On''. Queries provide information and are always inside an ''IF'' or ''CHECK.'' Calls are actions that always after THEN.&lt;br /&gt;
&lt;br /&gt;
CharScript/ItemScript Functions&lt;br /&gt;
&lt;br /&gt;
== CALLS ==&lt;br /&gt;
&lt;br /&gt;
'''Set(OUT OBJECT:variable, OBJECT:value)'''&lt;br /&gt;
&lt;br /&gt;
Set the value of a variable&lt;br /&gt;
&lt;br /&gt;
'''SetVar(CHARACTER|ITEM:object, FIXEDSTRING:variableName, OBJECT:value)'''&lt;br /&gt;
&lt;br /&gt;
Set the value of a global variable&lt;br /&gt;
&lt;br /&gt;
'''Cast(OUT OBJECT variable, OBJECT value)'''&lt;br /&gt;
&lt;br /&gt;
Casts the value to the variable&lt;br /&gt;
&lt;br /&gt;
'''Print(OUT STRING:output, STRING:text)'''&lt;br /&gt;
&lt;br /&gt;
Prints the text to the output with possible parameters: [1], [2], ...&lt;br /&gt;
&lt;br /&gt;
Add(INOUT INT|FLOAT|FLOAT3:variable, INT|FLOAT|FLOAT3:value)&lt;br /&gt;
&lt;br /&gt;
Adds both values and stores it in the first variable&lt;br /&gt;
&lt;br /&gt;
Subtract(INOUT INT|FLOAT|FLOAT3:variable, INT|FLOAT|FLOAT3:value)&lt;br /&gt;
&lt;br /&gt;
Subtracts both values and stores it in the first variable&lt;br /&gt;
&lt;br /&gt;
Multiply(INOUT INT|FLOAT|FLOAT3:variable, INT|FLOAT:value)&lt;br /&gt;
&lt;br /&gt;
Multiplies both values and stores it in the first variable&lt;br /&gt;
&lt;br /&gt;
Divide(INOUT INT|FLOAT|FLOAT3:variable, INT|FLOAT:value)&lt;br /&gt;
&lt;br /&gt;
Divides both values and stores it in the first variable&lt;br /&gt;
&lt;br /&gt;
Abs(INOUT INT|FLOAT:variable)&lt;br /&gt;
&lt;br /&gt;
Takes the absolute value of a variable&lt;br /&gt;
&lt;br /&gt;
Clamp(INOUT INT|FLOAT:variable, INT|FLOAT:min, INT|FLOAT:max)&lt;br /&gt;
&lt;br /&gt;
Clamps a variable between min and max&lt;br /&gt;
&lt;br /&gt;
GetRandom(OUT OBJECT:variable, OBJECT:value, OBJECT:value, OBJECT:value)&lt;br /&gt;
&lt;br /&gt;
Fills in the variable with random one of the values.&lt;br /&gt;
&lt;br /&gt;
GetWeightedRandom(OUT OBJECT:variable, OBJECT:value, INT|FLOAT:weight, ...)&lt;br /&gt;
&lt;br /&gt;
Gets a weighted random of the given values!&lt;br /&gt;
&lt;br /&gt;
GetRandomBetween(OUT INT|FLOAT:variable, INT|FLOAT:min, INT|FLOAT:max)&lt;br /&gt;
&lt;br /&gt;
Gets a random value between min and max (both included)&lt;br /&gt;
&lt;br /&gt;
GetRandomPositionInTrigger(OUT FLOAT3:variable, TRIGGER:areaTrigger)&lt;br /&gt;
&lt;br /&gt;
Get a random position in a trigger area&lt;br /&gt;
&lt;br /&gt;
GetElement(OUT OBJECT:variable, INT:index, OBJECT:value, OBJECT:value, OBJECT:value)&lt;br /&gt;
&lt;br /&gt;
Fills in the variable with the index one of the values (starting from 0)&lt;br /&gt;
&lt;br /&gt;
SetPriority(FIXEDSTRING:reactionName, INT:priority)&lt;br /&gt;
&lt;br /&gt;
Changes the priority of a reaction. Priority 0 and below are not executed!&lt;br /&gt;
&lt;br /&gt;
DelayReaction(FIXEDSTRING:reactionName, FLOAT:timeInSeconds)&lt;br /&gt;
&lt;br /&gt;
The reaction will not be chosen for the specified time&lt;br /&gt;
&lt;br /&gt;
SetScriptFrame(CHARACTER:character, FIXEDSTRING:frame)&lt;br /&gt;
&lt;br /&gt;
Sets the scriptframe on the character.&lt;br /&gt;
&lt;br /&gt;
ClearScriptFrame(CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Clears the scriptframe on the character.&lt;br /&gt;
&lt;br /&gt;
Goto(FIXEDSTRING:labelName)&lt;br /&gt;
&lt;br /&gt;
Jumps to the label&lt;br /&gt;
&lt;br /&gt;
GotoIfEqual(OBJECT:variable, OBJECT:value, FIXEDSTRING:labelName)&lt;br /&gt;
&lt;br /&gt;
Jumps to the label if the 2 objects are equal&lt;br /&gt;
&lt;br /&gt;
GotoRand(FIXEDSTRING:labelName, FIXEDSTRING:labelName, FIXEDSTRING:labelName, FIXEDSTRING:labelName, FIXEDSTRING:labelName)&lt;br /&gt;
&lt;br /&gt;
Jumps to a random label in the list&lt;br /&gt;
&lt;br /&gt;
CreatePuddleAt(GAMEOBJECT|FLOAT3:target, SURFACE:type, INT:cellAmountMin, INT:cellAmountMax, INT:growAmountMin, INT:growAmountMax, )&lt;br /&gt;
&lt;br /&gt;
Spawn a puddle at the target's position for a certain lifetime (in turns)&lt;br /&gt;
&lt;br /&gt;
CreateSurfaceAt(GAMEOBJECT|FLOAT3:target, SURFACE:type, FLOAT:radius, INT:lifeTime[, GAMEOBJECT:owner])&lt;br /&gt;
&lt;br /&gt;
Spawn a surface at the target's position for a certain lifetime (in turns)&lt;br /&gt;
&lt;br /&gt;
CreateSurfaceInPolygon(GAMEOBJECT:owner, SURFACE:type, FLOAT:duration, FLOAT:growTimer, INT:growStep, GAMEOBJECT|FLOAT3:point1, GAMEOBJECT|FLOAT3:point2, GAMEOBJECT|FLOAT3:point3, ...)&lt;br /&gt;
&lt;br /&gt;
Spawn a polygon surface at the target's position. Grows &amp;lt;growStep&amp;gt; every &amp;lt;growTimer&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CreateSurfaceInAreaTrigger(GAMEOBJECT:owner, SURFACE:type, FLOAT:duration, FLOAT:growTimer, INT:growStep, TRIGGER:areaTrigger)&lt;br /&gt;
&lt;br /&gt;
Spawn a surface within &amp;lt;areaTrigger&amp;gt;. Grows &amp;lt;growStep&amp;gt; every &amp;lt;growTimer&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CreateConeSurfaceAt(GAMEOBJECT|FLOAT3:start, GAMEOBJECT|FLOAT3:target, SURFACE:type, FLOAT:radius, FLOAT:angle, FLOAT:duration)&lt;br /&gt;
&lt;br /&gt;
Spawn a Cone surface at the target's position&lt;br /&gt;
&lt;br /&gt;
PlayEffectAt(GAMEOBJECT|FLOAT3:target, STRING:effectName)&lt;br /&gt;
&lt;br /&gt;
Plays an effect at the target's position&lt;br /&gt;
&lt;br /&gt;
PlayLoopEffectAt(OUT INT64:effectHandle, GAMEOBJECT|FLOAT3:target, STRING:effectName)&lt;br /&gt;
&lt;br /&gt;
Plays an effect at the target's position&lt;br /&gt;
&lt;br /&gt;
ExplodeAt(GAMEOBJECT|FLOAT3:target, SKILL:projectileSkill, [INT:casterLevel=-1, CHARACTER|ITEM:cause])&lt;br /&gt;
&lt;br /&gt;
Trigger an explosion of a projectile skill at the target's position. The cause will trigger NPC behavior as if the cause casted the projectile&lt;br /&gt;
&lt;br /&gt;
DisplayText(CHARACTER|ITEM:target, FIXEDSTRING:text, FLOAT:timeInSeconds)&lt;br /&gt;
&lt;br /&gt;
Displays text above the character/item for a certain amount of time. It will replace the current text, including dialogtext&lt;br /&gt;
&lt;br /&gt;
DisplayCombatInfoText(CHARACTER|ITEM:target, FIXEDSTRING:text, FLOAT:timeInSeconds)&lt;br /&gt;
&lt;br /&gt;
Displays text above the character/item for a certain amount of time. It will replace the current text, including dialogtext&lt;br /&gt;
&lt;br /&gt;
StatusText(CHARACTER|ITEM:target, FIXEDSTRING:text)&lt;br /&gt;
&lt;br /&gt;
Adds statustext above the character/item for a short amount of time. Will not replace texts or dialogtexts&lt;br /&gt;
&lt;br /&gt;
DebugText(CHARACTER|ITEM:target, STRING:text)&lt;br /&gt;
&lt;br /&gt;
Adds debugtext above the character/item for a short amount of time.&lt;br /&gt;
&lt;br /&gt;
CombatLogText(CHARACTER|ITEM:target, FIXEDSTRING:text, INT:filterID, INT:broadcastID)&lt;br /&gt;
&lt;br /&gt;
Adds combatlog text inside the combat log window. Color-/SizeFormatting should already be applied, if not color and size of the string will be NORMAL. filterID determines what filter shows/hides the text. broadcastID determines who will be able to see the message (0 hearingrange. 1 party. 2 all)&lt;br /&gt;
&lt;br /&gt;
Log(STRING:text, ...)&lt;br /&gt;
&lt;br /&gt;
Log's the the scriptlog. (for debugging purposes)&lt;br /&gt;
&lt;br /&gt;
Output(STRING:text, ...)&lt;br /&gt;
&lt;br /&gt;
Pass text with optional parameters to the output panel (e.g. Output(&amp;quot;An int [1]&amp;quot;, INT:10))&lt;br /&gt;
&lt;br /&gt;
Assert(STRING:text, ...)&lt;br /&gt;
&lt;br /&gt;
Pass text with optional parameters to display as an assert message (e.g. Assert(&amp;quot;This number is wrong: [1]&amp;quot;, INT:666))&lt;br /&gt;
&lt;br /&gt;
Label(FIXEDSTRING:name)&lt;br /&gt;
&lt;br /&gt;
Marks this line as a label where Goto actions can jump to&lt;br /&gt;
&lt;br /&gt;
StartTimer(FIXEDSTRING:timerName, FLOAT:timeInSeconds, INT:repeatCount)&lt;br /&gt;
&lt;br /&gt;
Start a timer which will throw the timer event. Set repeatcount &amp;lt; 0 for a permanent timer.&lt;br /&gt;
&lt;br /&gt;
StopTimer(FIXEDSTRING:timerName)&lt;br /&gt;
&lt;br /&gt;
Stop a timer which will throw the timer event&lt;br /&gt;
&lt;br /&gt;
DialogStart(OUT INT:instanceId, STRING:dialog, CHARACTER|ITEM:target, CHARACTER|ITEM:target, CHARACTER|ITEM:target, CHARACTER|ITEM:target)&lt;br /&gt;
&lt;br /&gt;
Start a dialog between the targets&lt;br /&gt;
&lt;br /&gt;
DialogRequestStop(CHARACTER|ITEM:speaker, STRING:dialog)&lt;br /&gt;
&lt;br /&gt;
Stops a certain dialog on a certain speaker&lt;br /&gt;
&lt;br /&gt;
Check(-)&lt;br /&gt;
&lt;br /&gt;
Reevaluate the conditions in the CHECK section of this reaction&lt;br /&gt;
&lt;br /&gt;
Reset(-)&lt;br /&gt;
&lt;br /&gt;
Resets the current reaction. It will start from the beginning again&lt;br /&gt;
&lt;br /&gt;
Interrupt(FIXEDSTRING:reactionName)&lt;br /&gt;
&lt;br /&gt;
Interrupt the reaction.&lt;br /&gt;
&lt;br /&gt;
GlobalSetEvent(FIXEDSTRING:eventName)&lt;br /&gt;
&lt;br /&gt;
Sets a global event. Scripts and Story can catch it.&lt;br /&gt;
&lt;br /&gt;
GlobalClearEvent(FIXEDSTRING:eventName)&lt;br /&gt;
&lt;br /&gt;
Clears a global event. Scripts and Story can catch it.&lt;br /&gt;
&lt;br /&gt;
StopLoopEffect(INT64:fxHandle)&lt;br /&gt;
&lt;br /&gt;
Stops a looping effect&lt;br /&gt;
&lt;br /&gt;
IterateItems(FIXEDSTRING:eventname[, FIXEDSTRING:tag])&lt;br /&gt;
&lt;br /&gt;
Launch iterate event for each item. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
IterateItemsNear(GAMEOBJECT:source, FLOAT:radius, FIXEDSTRING:eventname[, FIXEDSTRING:tag])&lt;br /&gt;
&lt;br /&gt;
Launch iterate event for each item in range. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
IterateItemsOnObject(CHARACTER|ITEM:source, FIXEDSTRING:eventname[, FIXEDSTRING:tag])&lt;br /&gt;
&lt;br /&gt;
Launch iterate event for each item standing on the source. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
IterateParty(FIXEDSTRING:eventname, [COMPARE:howTo, COMPAREFUNC:compareFunc, CHARACTER:partyMember, FIXEDSTRING:tag])&lt;br /&gt;
&lt;br /&gt;
Launch iterate event for each member of all parties. If you pass a party member only members of that party will be considered. If you pass compare parameters, it will iterate over them in the requested order. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
IterateCharacters(FIXEDSTRING:eventname, [COMPARE:howTo, COMPAREFUNC:compareFunc, FIXEDSTRING:tag])&lt;br /&gt;
&lt;br /&gt;
Launch iterate event for each character. If you pass compare parameters, it will iterate over them in the requested order. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
IterateCharactersNear(GAMEOBJECT:source, FLOAT:radius, FIXEDSTRING:eventname, [COMPARE:howTo, COMPAREFUNC:compareFunc, FIXEDSTRING:tag])&lt;br /&gt;
&lt;br /&gt;
Launch iterate event for each character in range. If you pass compare parameters, it will iterate over them in the requested order. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
IterateCharactersOnObject(CHARACTER|ITEM:source, FIXEDSTRING:eventname, [COMPARE:howTo, COMPAREFUNC:compareFunc, FIXEDSTRING:tag])&lt;br /&gt;
Launch iterate event for each character standing on the source. If you pass compare parameters, it will iterate over them in the requested order. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
IterateCharactersInCombat(CHARACTER|ITEM:source, FIXEDSTRING:eventname, [COMPARE:howTo, COMPAREFUNC:compareFunc, FIXEDSTRING:tag])&lt;br /&gt;
&lt;br /&gt;
Launch iterate event for each character in combat with the source. If you pass compare parameters, it will iterate over them in the requested order. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
IterateHostilesFor(CHARACTER:source, FIXEDSTRING:eventname, [COMPARE:howTo, COMPAREFUNC:compareFunc, FIXEDSTRING:tag])&lt;br /&gt;
&lt;br /&gt;
Launch iterate event for each character who is targetting the source. If you pass compare parameters, it will iterate over them in the requested order. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
SpawnCharacter(OUT CHARACTER:result, CHARACTERTEMPLATE:rootTemplate, GAMEOBJECT|FLOAT3:position, INT:playSpawn, [INT:isSummon=0, CHARACTER:summonOwner=null, INT:overrideLevel=-1])&lt;br /&gt;
&lt;br /&gt;
Spawns a character&lt;br /&gt;
&lt;br /&gt;
SpawnItem(ITEMTEMPLATE:rootTemplate,GAMEOBJECT|FLOAT3:position, OUT ITEM:result)&lt;br /&gt;
&lt;br /&gt;
Spawns an item&lt;br /&gt;
&lt;br /&gt;
ShootLocalProjectile(SKILL:projectileSkill,CHARACTER|ITEM:source,FLOAT3:localOffset,FLOAT3:direction,[INT:casterLevel, CHARACTER|ITEM:caster])&lt;br /&gt;
&lt;br /&gt;
Spawns a projectile at the source (with offset, can be null) shooting at the target&lt;br /&gt;
&lt;br /&gt;
ShootLocalProjectileAt(SKILL:projectileSkill,CHARACTER|ITEM:source,FLOAT3:localOffset,GAMEOBJECT|FLOAT3:target,[INT:casterLevel, CHARACTER|ITEM:caster])&lt;br /&gt;
&lt;br /&gt;
Spawns a projectile at the source (with offset, can be null) shooting at the target&lt;br /&gt;
&lt;br /&gt;
ShootWorldProjectile(SKILL:projectileSkill,CHARACTER|ITEM:source,FLOAT3:worldPos,FLOAT3:direction,[INT:casterLevel])&lt;br /&gt;
&lt;br /&gt;
Spawns a projectile at worldPos shooting at the target. Source can be null.&lt;br /&gt;
&lt;br /&gt;
ShootWorldProjectileAt(SKILL:projectileSkill,CHARACTER|ITEM:source,FLOAT3:worldPos,GAMEOBJECT|FLOAT3:target,[INT:casterLevel])&lt;br /&gt;
&lt;br /&gt;
Spawns a projectile at worldPos shooting at the target. Source can be null.&lt;br /&gt;
&lt;br /&gt;
ShootLocalCone(SKILL:coneSkill,CHARACTER|ITEM:source,FLOAT3:localOffset,FLOAT3:direction,[INT:casterLevel, CHARACTER|ITEM:caster])&lt;br /&gt;
&lt;br /&gt;
Shoots a cone from source (with offset, can be null) in a direction&lt;br /&gt;
&lt;br /&gt;
ShootLocalConeAt(SKILL:coneSkill,CHARACTER|ITEM:source,FLOAT3:localOffset,GAMEOBJECT|FLOAT3:target,[INT:casterLevel, CHARACTER|ITEM:caster])&lt;br /&gt;
&lt;br /&gt;
Shoots a cone from source (with offset, can be null) at the target&lt;br /&gt;
&lt;br /&gt;
ShootWorldCone(SKILL:coneSkill,CHARACTER|ITEM:source,FLOAT3:worldPos,FLOAT3:direction,[INT:casterLevel])&lt;br /&gt;
&lt;br /&gt;
Shoots a cone from worldPos in a direction. Source can be null.&lt;br /&gt;
&lt;br /&gt;
ShootWorldConeAt(SKILL:coneSkill,CHARACTER|ITEM:source,FLOAT3:worldPos,GAMEOBJECT|FLOAT3:target,[INT:casterLevel])&lt;br /&gt;
&lt;br /&gt;
Shoots a cone from worldPos at the target. Source can be null.&lt;br /&gt;
&lt;br /&gt;
SetVisible(CHARACTER|ITEM:object, INT:visible)&lt;br /&gt;
&lt;br /&gt;
Sets a character or item visible or not.&lt;br /&gt;
&lt;br /&gt;
RotateY(INOUT FLOAT3:vector, FLOAT:degrees)&lt;br /&gt;
&lt;br /&gt;
Rotate the vector around the Y-axis for a certain angle (in degrees)&lt;br /&gt;
&lt;br /&gt;
SetHealth(CHARACTER|ITEM:target, FLOAT:percent)&lt;br /&gt;
&lt;br /&gt;
Set a characters or items health on the given percentage. (percentage between 0 and 1)&lt;br /&gt;
&lt;br /&gt;
PlaySound(CHARACTER|ITEM:target, STRING:soundEvent)&lt;br /&gt;
&lt;br /&gt;
Plays a sound event at the target&lt;br /&gt;
&lt;br /&gt;
PlayMusicForEveryone(STRING:musicEvent)&lt;br /&gt;
&lt;br /&gt;
Plays a music event on all the clients&lt;br /&gt;
&lt;br /&gt;
PlayMusicOnCharacter(CHARACTER:target, STRING:musicEvent)&lt;br /&gt;
&lt;br /&gt;
Plays a music event on a character for all peers (3D)&lt;br /&gt;
&lt;br /&gt;
PlayMusicForPeer(CHARACTER:target, STRING:musicEvent)&lt;br /&gt;
&lt;br /&gt;
Plays a music event on the peer of the character&lt;br /&gt;
&lt;br /&gt;
PlayMusicForPeerWithInstrument(CHARACTER:target, CHARACTER:charInstrument, STRING:musicEvent)&lt;br /&gt;
&lt;br /&gt;
Plays a music event on the peer of the character concated with _INSTRUMENT&lt;br /&gt;
&lt;br /&gt;
SetX(INOUT FLOAT3:vector, FLOAT|INT:value)&lt;br /&gt;
&lt;br /&gt;
Sets the X component of the FLOAT3&lt;br /&gt;
&lt;br /&gt;
SetY(INOUT FLOAT3:vector, FLOAT|INT:value)&lt;br /&gt;
&lt;br /&gt;
Sets the Y component of the FLOAT3&lt;br /&gt;
&lt;br /&gt;
SetZ(INOUT FLOAT3:vector, FLOAT|INT:value)&lt;br /&gt;
&lt;br /&gt;
Sets the Z component of the FLOAT3&lt;br /&gt;
&lt;br /&gt;
SetAtmosphere(FIXEDSTRING:atmosphereTriggerUUID, FIXEDSTRING:atmosphere)&lt;br /&gt;
&lt;br /&gt;
Changes the atmosphere of the trigger&lt;br /&gt;
&lt;br /&gt;
ResetAtmosphere(FIXEDSTRING:atmosphereTriggerUUID)&lt;br /&gt;
&lt;br /&gt;
Resets the atmosphere of the trigger&lt;br /&gt;
&lt;br /&gt;
AddStatusInfluence(CHARACTER|ITEM:object, STATUS:statusId, FLOAT:strength, [FIXEDSTRING:extraData=&amp;quot;&amp;quot;], [INT:isWeather=1], [INT:force=1])&lt;br /&gt;
&lt;br /&gt;
Adds the status influence strength on the object.&lt;br /&gt;
&lt;br /&gt;
RemoveStatusInfluence(CHARACTER|ITEM:object, STATUS:statusId, FLOAT:strength, [FIXEDSTRING:extraData=&amp;quot;&amp;quot;], [INT:isWeather=1])&lt;br /&gt;
&lt;br /&gt;
Removes the status influence strength on the object.&lt;br /&gt;
&lt;br /&gt;
AddTemporaryStatusInfluence(CHARACTER|ITEM:source, CHARACTER|ITEM:object, STATUS:statusId, FLOAT:strength, [FIXEDSTRING:extraData=&amp;quot;&amp;quot;], [INT:isWeather=1])&lt;br /&gt;
&lt;br /&gt;
Adds a temporary status influence strength on the object.. It will be gone in a few seconds if it's not set again&lt;br /&gt;
&lt;br /&gt;
CallFunction(FIXEDSTRING:functionName)&lt;br /&gt;
&lt;br /&gt;
Calls a function with the ID&lt;br /&gt;
&lt;br /&gt;
SetMaterial(CHARACTER|ITEM:object, FIXEDSTRING:materialUUID, INT:duration, INT:applyOnBody, INT:applyOnArmor, INT:applyOnWeapon[)&lt;br /&gt;
&lt;br /&gt;
Changes the material of the object for a set time (in turns), -1 is infinite. applyNormalMap: Copy the original materials normal map&lt;br /&gt;
&lt;br /&gt;
TeleportTo(CHARACTER|ITEM:object, GAMEOBJECT|FLOAT3:target, [INT:Force=0])&lt;br /&gt;
&lt;br /&gt;
Teleport object to or near the target&lt;br /&gt;
&lt;br /&gt;
Transform(CHARACTER|ITEM:object, CHARACTERTEMPLATE|ITEMTEMPLATE:root [, FIXEDSTRING:fx, INT:replaceScripts=1, OUT FLOAT:currentHP])&lt;br /&gt;
&lt;br /&gt;
Transforms &amp;lt;object&amp;gt; using &amp;lt;root&amp;gt;, returns &amp;lt;currentHP&amp;gt;, plays &amp;lt;fx&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
SaveGame(FIXEDSTRING:saveGameName)&lt;br /&gt;
&lt;br /&gt;
Save the savegame with name &amp;lt;saveGameName&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LoadGame(FIXEDSTRING:saveGameName)&lt;br /&gt;
&lt;br /&gt;
Load the savegame with name &amp;lt;saveGameName&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LoadLevel(FIXEDSTRING:levelName)&lt;br /&gt;
&lt;br /&gt;
Load the level with name &amp;lt;levelName&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KillCombat(CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Kill all the enemies in the combat which contains &amp;lt;character&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SetTag(CHARACTER|ITEM:object, FIXEDSTRING:tag)&lt;br /&gt;
&lt;br /&gt;
Sets the Tag on the Object&lt;br /&gt;
&lt;br /&gt;
ClearTag(CHARACTER|ITEM:object, FIXEDSTRING:tag)&lt;br /&gt;
&lt;br /&gt;
Clears the Tag on the Object&lt;br /&gt;
&lt;br /&gt;
SetGlobalFlag(FIXEDSTRING:flagname)&lt;br /&gt;
&lt;br /&gt;
Sets the Global Flag&lt;br /&gt;
&lt;br /&gt;
ClearGlobalFlag(FIXEDSTRING:flagname)&lt;br /&gt;
&lt;br /&gt;
Clears the Global Flag&lt;br /&gt;
&lt;br /&gt;
SetFlag(CHARACTER|ITEM:object, FIXEDSTRING:flagname)&lt;br /&gt;
&lt;br /&gt;
Sets the Flag on the Object&lt;br /&gt;
&lt;br /&gt;
ClearFlag(CHARACTER|ITEM:object, FIXEDSTRING:flagname)&lt;br /&gt;
&lt;br /&gt;
Clears the Flag on the Object&lt;br /&gt;
&lt;br /&gt;
SetUserFlag(CHARACTER:object, FIXEDSTRING:flagname)&lt;br /&gt;
&lt;br /&gt;
Sets the Flag on the user's characters&lt;br /&gt;
&lt;br /&gt;
ClearUserFlag(CHARACTER|ITEM:object, FIXEDSTRING:flagname)&lt;br /&gt;
&lt;br /&gt;
Clears the Flag on the user's characters&lt;br /&gt;
&lt;br /&gt;
SetPartyFlag(CHARACTER|ITEM:object, FIXEDSTRING:flagname)&lt;br /&gt;
&lt;br /&gt;
Sets the Flag on the party's characters&lt;br /&gt;
&lt;br /&gt;
ClearPartyFlag(CHARACTER|ITEM:object, FIXEDSTRING:flagname)&lt;br /&gt;
&lt;br /&gt;
Clears the Flag on the party's characters&lt;br /&gt;
&lt;br /&gt;
StartVoiceBark(STRING:barkName, CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Start a voicebark on character&lt;br /&gt;
&lt;br /&gt;
ConfrontationDone(INT: CrimeID, CHARACTER:lead, CHARACTER:criminal, ...)&lt;br /&gt;
&lt;br /&gt;
Resolve the crime with id CrimeID for the specified criminals&lt;br /&gt;
&lt;br /&gt;
CrimesceneInvestigationDone(CHARACTER:investigator)&lt;br /&gt;
&lt;br /&gt;
Crimescene is considered investigated by this NPC, start looking for culprits&lt;br /&gt;
&lt;br /&gt;
ListAdd(LIST&amp;lt;OBJECT&amp;gt;:list, OBJECT:entry)&lt;br /&gt;
&lt;br /&gt;
Add &amp;lt;entry&amp;gt; at the back of &amp;lt;list&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ListRemove(LIST&amp;lt;OBJECT&amp;gt;:list, INT:index)&lt;br /&gt;
&lt;br /&gt;
Remove the entry at &amp;lt;index&amp;gt; of &amp;lt;list&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ListSet(LIST&amp;lt;OBJECT&amp;gt;:list, INT:index, OBJECT:entry)&lt;br /&gt;
&lt;br /&gt;
Set the entry at &amp;lt;index&amp;gt; of &amp;lt;list&amp;gt; to &amp;lt;entry&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ListClear(LIST&amp;lt;OBJECT&amp;gt;:list)&lt;br /&gt;
&lt;br /&gt;
Remove all entries of &amp;lt;list&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EndTurn(CHARACTER|ITEM:Target)&lt;br /&gt;
&lt;br /&gt;
Ends the object's current turn&lt;br /&gt;
&lt;br /&gt;
SetCanFight(CHARACTER|ITEM:entity, INT:enabled[, INT:wholeGroup=0])&lt;br /&gt;
&lt;br /&gt;
Enables/Disables the fact if the entity can fight. Optional for the whole group&lt;br /&gt;
&lt;br /&gt;
SetCanJoinCombat(CHARACTER|ITEM:entity, INT:enabled[, INT:wholeGroup=0])&lt;br /&gt;
&lt;br /&gt;
Enables/Disables the fact if the entity can join combats. Optional for the whole group&lt;br /&gt;
&lt;br /&gt;
SetIsBoss(CHARACTER|ITEM:entity, INT:enabled)&lt;br /&gt;
&lt;br /&gt;
Enables/Disables the fact if the entity is a boss.&lt;br /&gt;
&lt;br /&gt;
GetAIHintTriggers(OUT LIST&amp;lt;TRIGGER&amp;gt;:triggers[, [LIST]FIXEDSTRING:tags, INT:needsAllTags = -1)&lt;br /&gt;
&lt;br /&gt;
Returns all AIHintAreaTriggers in &amp;lt;triggers&amp;gt;. Uses contraints if set.&lt;br /&gt;
&lt;br /&gt;
SetCombatTimeout(CHARACTER|ITEM:entity, FLOAT:timer)&lt;br /&gt;
&lt;br /&gt;
Overwrites the entity's combat timeout check.&lt;br /&gt;
&lt;br /&gt;
ResetCombatTimeout(CHARACTER|ITEM:entity)&lt;br /&gt;
&lt;br /&gt;
Resets the entity's combat timeout check.&lt;br /&gt;
&lt;br /&gt;
EnterCombat(CHARACTER|ITEM:source, CHARACTER|ITEM:target)&lt;br /&gt;
&lt;br /&gt;
Enters combat with target&lt;br /&gt;
&lt;br /&gt;
LeaveCombat(CHARACTER|ITEM:source)&lt;br /&gt;
&lt;br /&gt;
Leaves the combat&lt;br /&gt;
&lt;br /&gt;
SetFaction(CHARACTER|ITEM:target, FIXEDSTRING:faction)&lt;br /&gt;
&lt;br /&gt;
Changes the faction of a character or item&lt;br /&gt;
&lt;br /&gt;
SetInvulnerable(CHARACTER|ITEM:target, INT:bool)&lt;br /&gt;
&lt;br /&gt;
Makes the character or item invulnerable or not. (Allow damage)&lt;br /&gt;
&lt;br /&gt;
JumpToTurn(CHARACTER|ITEM:Target)&lt;br /&gt;
&lt;br /&gt;
Jumps to targets turn (ends the current turn)&lt;br /&gt;
&lt;br /&gt;
Sleep(FLOAT:timeInSeconds)&lt;br /&gt;
&lt;br /&gt;
Sleeps for a certain amount of time&lt;br /&gt;
&lt;br /&gt;
CharacterAttack(CHARACTER|ITEM|FLOAT3:target [,INT:alwaysHit])&lt;br /&gt;
&lt;br /&gt;
Moves in weapon range and attacks the target&lt;br /&gt;
&lt;br /&gt;
CharacterAttackWithoutMove(CHARACTER|ITEM|FLOAT3:target [,INT:alwaysHit])&lt;br /&gt;
&lt;br /&gt;
Attacks the target without checking weaponranges and without moving&lt;br /&gt;
&lt;br /&gt;
CharacterMoveTo(GAMEOBJECT|FLOAT3:target, [INT:running=0, INT:shouldArrive=0, INT:longPath=0, FLOAT:minDistance=1.5, FLOAT:maxDistance=minDistance+2.5])&lt;br /&gt;
&lt;br /&gt;
Move to the target. Set shouldArrive to 1 if you want a guaranteed move. (teleports on fail) &lt;br /&gt;
&lt;br /&gt;
CharacterAiMove(FLOAT3:target, CHARACTER:targetCharacter, ITEM:targetItem)&lt;br /&gt;
&lt;br /&gt;
Moves to the target, calculated by the AI. Should only be used with results from the AI!&lt;br /&gt;
&lt;br /&gt;
CharacterMoveInRange(GAMEOBJECT|FLOAT3:target, FLOAT:rangeMin, FLOAT:rangeMax, INT:running, [LIST&amp;lt;TRIGGER&amp;gt;:hintTriggers=null, INT:mustBeInTrigger=0])&lt;br /&gt;
&lt;br /&gt;
Move within a certain range of target. Optionally pass hinttriggers in which the result is preferred/necessary.&lt;br /&gt;
&lt;br /&gt;
CharacterMoveInWeaponRange(GAMEOBJECT|FLOAT3:target, INT:running, [LIST&amp;lt;TRIGGER&amp;gt;:hintTriggers=null, INT:mustBeInTrigger=0])&lt;br /&gt;
&lt;br /&gt;
Move within weapon range of target. Optionally pass hinttriggers in which the result is preferred/necessary.&lt;br /&gt;
&lt;br /&gt;
CharacterMoveInSkillRange(GAMEOBJECT|FLOAT3:target, SKILL:skill, INT:running, [LIST&amp;lt;TRIGGER&amp;gt;:hintTriggers=null, INT:mustBeInTrigger=0])&lt;br /&gt;
&lt;br /&gt;
Move within skill range of target. Optionally pass hinttriggers in which the result is preferred/necessary.&lt;br /&gt;
&lt;br /&gt;
CharacterMoveOutOfSight(FLOAT:angle)&lt;br /&gt;
&lt;br /&gt;
Move out of screen&lt;br /&gt;
&lt;br /&gt;
CharacterPlayAnimation(FIXEDSTRING:animation [, INT:exitOnFinish=1, INT:waitForCompletion=1])&lt;br /&gt;
&lt;br /&gt;
Plays a certain animation ExitOnFinish means if the exit will kill itself after it was played (revert back to still) &lt;br /&gt;
&lt;br /&gt;
CharacterStopAnimation(-)&lt;br /&gt;
&lt;br /&gt;
Stops all animations.&lt;br /&gt;
&lt;br /&gt;
CharacterPickUpItem(ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Moves close enough to the item if necessary and picks it up&lt;br /&gt;
&lt;br /&gt;
CharacterUseItem(ITEM:item [, INTEGER:LongPath])&lt;br /&gt;
&lt;br /&gt;
Moves close enough to the item if necessary and uses it&lt;br /&gt;
&lt;br /&gt;
CharacterMoveItem(ITEM:item, INTEGER:ignoreWeight, INTEGER:ignoreAPCost [, INTEGER:ignoreDangerousSurfaces=1, INT:amount=-1, GAMEOBJECT|FLOAT3:destination])&lt;br /&gt;
&lt;br /&gt;
Moves close enough to the item if necessary and moves it to the destination. Will try to find a destination if not supplied.&lt;br /&gt;
&lt;br /&gt;
CharacterAddSkill(CHARACTER:character, SKILL:skill[, INT:ShowNotification=0])&lt;br /&gt;
&lt;br /&gt;
Adds &amp;lt;skill&amp;gt; to &amp;lt;character&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CharacterRemoveSkill(CHARACTER:character, SKILL:skill)&lt;br /&gt;
&lt;br /&gt;
Removes &amp;lt;skill&amp;gt; from &amp;lt;character&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CharacterUseSkill(SKILL:skill, GAMEOBJECT|FLOAT3:target [, GAMEOBJECT|FLOAT3:target2, ITEM:skillItem, INT:ignoreHasSkill=0])&lt;br /&gt;
&lt;br /&gt;
Cast a skill&lt;br /&gt;
&lt;br /&gt;
CharacterAppearAt(GAMEOBJECT|FLOAT3:target, INT:playspawn)&lt;br /&gt;
&lt;br /&gt;
Appear at the target&lt;br /&gt;
&lt;br /&gt;
CharacterAppearOutOfSightTo(GAMEOBJECT:target, FLOAT:angle, INT:playspawn)&lt;br /&gt;
&lt;br /&gt;
Appears out of sight to the players from a certain angle while being able to reach target&lt;br /&gt;
&lt;br /&gt;
CharacterAppearOnTrailOutOfSightTo(CHARACTER:target, FLOAT:angle, INT:playspawn)&lt;br /&gt;
&lt;br /&gt;
Appears out of sight to the players, on its previous locations, from a certain angle while being able to reach target&lt;br /&gt;
&lt;br /&gt;
CharacterDisappear(FLOAT:angle[, INTEGER:isRunning=0])&lt;br /&gt;
&lt;br /&gt;
Move out of screen and go of stage, will run if &amp;lt;isRunning&amp;gt; is not 0&lt;br /&gt;
&lt;br /&gt;
CharacterSetOffStage(-)&lt;br /&gt;
&lt;br /&gt;
Set Off Stage&lt;br /&gt;
&lt;br /&gt;
CharacterSetOnStage(-)&lt;br /&gt;
&lt;br /&gt;
Set On Stage&lt;br /&gt;
&lt;br /&gt;
CharacterLookAt(GAMEOBJECT|FLOAT3|SPLINE:target[, INT:snapToTarget=0, INT:angleTolerance=0])&lt;br /&gt;
&lt;br /&gt;
Rotates the character to look at the target (Closest spline point in case of a spline).&lt;br /&gt;
&lt;br /&gt;
CharacterLookFrom(GAMEOBJECT|SPLINE:target[, INT:snapToTarget=0])&lt;br /&gt;
&lt;br /&gt;
Rotates to the character so it has the same rotation as the target (Closest spline point in case of a spline).&lt;br /&gt;
&lt;br /&gt;
CharacterFollow(CHARACTER:target, FLOAT:durationInSeconds, INT:run)&lt;br /&gt;
&lt;br /&gt;
Follow the target for a certain time&lt;br /&gt;
&lt;br /&gt;
CharacterFollowOwnerOrLeader(FLOAT:durationInSeconds, INT:run)&lt;br /&gt;
&lt;br /&gt;
Follow the leader or owner for a certain time&lt;br /&gt;
&lt;br /&gt;
CharacterWander(FLOAT|TRIGGER:range, FLOAT:durationInSeconds [, INT:run, GAMEOBJECT:anchor])&lt;br /&gt;
&lt;br /&gt;
Wander around for a certain time&lt;br /&gt;
&lt;br /&gt;
CharacterSwitchWeaponType(WEAPON:type)&lt;br /&gt;
&lt;br /&gt;
If necessary switch to the new weapon type&lt;br /&gt;
&lt;br /&gt;
CharacterFleeFrom(RELATION:relation, FLOAT:range)&lt;br /&gt;
&lt;br /&gt;
Run away from certain characters if necessary&lt;br /&gt;
&lt;br /&gt;
CharacterFleeFromSurface(SURFACE:surface)&lt;br /&gt;
&lt;br /&gt;
Run away from a certain surface if necessary&lt;br /&gt;
&lt;br /&gt;
CharacterFleeFromDangerousSurface(-)&lt;br /&gt;
&lt;br /&gt;
Run away from a dangerous surfaces if necessary&lt;br /&gt;
&lt;br /&gt;
CharacterAddSourcePoints(CHARACTER:character, INT:amount)&lt;br /&gt;
&lt;br /&gt;
Adds x source points (x can be negative to substract)&lt;br /&gt;
&lt;br /&gt;
CharacterDie(CHARACTER:character[, DEATH:type=DoT])&lt;br /&gt;
&lt;br /&gt;
Kills the character&lt;br /&gt;
&lt;br /&gt;
CharacterHeal(CHARACTER:character, FLOAT:percentage)&lt;br /&gt;
&lt;br /&gt;
Heals the character&lt;br /&gt;
&lt;br /&gt;
CharacterConsume(CHARACTER:character, POTION:potion)&lt;br /&gt;
&lt;br /&gt;
Makes the character consume a potion. Doesn't cost any AP and will just execute the result of the potion.&lt;br /&gt;
&lt;br /&gt;
CharacterDisableAllCrimes(CHARACTER:target)&lt;br /&gt;
&lt;br /&gt;
Disables all generic behaviours for &amp;lt;target&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CharacterEnableAllCrimes(CHARACTER:target)&lt;br /&gt;
&lt;br /&gt;
Enables all generic behaviours for &amp;lt;target&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CharacterEnableCrime(CHARACTER:target, STRING:crime, ...)&lt;br /&gt;
&lt;br /&gt;
Enables the specified generic behaviours for &amp;lt;target&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CharacterDisableCrime(CHARACTER:target, STRING:crime, ...)&lt;br /&gt;
&lt;br /&gt;
Disables the specified generic behaviours for &amp;lt;target&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CharacterSetLongInvestigationDuration(CHARACTER:target)&lt;br /&gt;
&lt;br /&gt;
Doubles the time it takes for the investigation to time out. Use this when the character needs to move a long path before investigating.&lt;br /&gt;
&lt;br /&gt;
CharacterAiCalculate(-)&lt;br /&gt;
&lt;br /&gt;
Calculate the AI of the character&lt;br /&gt;
&lt;br /&gt;
CharacterAiStopCalculate(-)&lt;br /&gt;
&lt;br /&gt;
Stop the calculation of the AI of the character&lt;br /&gt;
&lt;br /&gt;
CharacterAiFinishMoveSkill(-)&lt;br /&gt;
&lt;br /&gt;
Finish the current MoveSkill.&lt;br /&gt;
&lt;br /&gt;
CharacterAiAddInterestingItem(CHARACTER:character, ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Make it interesting for the AI to destroy that Item&lt;br /&gt;
&lt;br /&gt;
CharacterAiRemoveInterestingItem(CHARACTER:character, ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Make it no longer interesting for the AI to destroy that Item&lt;br /&gt;
&lt;br /&gt;
CharacterSetArchetype(CHARACTER:character, ARCHETYPE:archetype)&lt;br /&gt;
&lt;br /&gt;
Sets the archetype of the character, used in AI calculations&lt;br /&gt;
&lt;br /&gt;
CharacterSetStoryNPC(CHARACTER:character, INT:bool)&lt;br /&gt;
&lt;br /&gt;
Makes the character storyNPC or not.&lt;br /&gt;
&lt;br /&gt;
CharacterAddActionPoints(CHARACTER:character, INT:amount)&lt;br /&gt;
&lt;br /&gt;
Give character some action points&lt;br /&gt;
&lt;br /&gt;
CharacterSetImmortal(CHARACTER:character, INT:bool)&lt;br /&gt;
&lt;br /&gt;
Makes the character immortal or not. (Allow dying)&lt;br /&gt;
&lt;br /&gt;
CharacterPlayEffect(CHARACTER:character, STRING:effect [,FIXEDSTRING:boneName])&lt;br /&gt;
&lt;br /&gt;
Plays an effect on the character and it follows the character&lt;br /&gt;
&lt;br /&gt;
CharacterPlayLoopEffect(OUT INT64:effectHandle, CHARACTER:character, STRING:effect [,FIXEDSTRING:boneName])&lt;br /&gt;
&lt;br /&gt;
Plays a looping effect on the character and it follows the character&lt;br /&gt;
&lt;br /&gt;
CharacterEvent(CHARACTER:character, STRING:eventName)&lt;br /&gt;
&lt;br /&gt;
Throw a character event which you can catch in scripts and story&lt;br /&gt;
&lt;br /&gt;
CharacterItemEvent(CHARACTER:character, ITEM:item, STRING:eventName)&lt;br /&gt;
&lt;br /&gt;
Throw a character/item event which you can catch in scripts and story&lt;br /&gt;
&lt;br /&gt;
CharacterCharacterEvent(CHARACTER:character1, CHARACTER:character2, STRING:eventName)&lt;br /&gt;
&lt;br /&gt;
Throw a character/character event which you can catch in scripts and story&lt;br /&gt;
&lt;br /&gt;
CharacterSetRelationIndivToIndiv(CHARACTER:source, CHARACTER:target, INT:relation)&lt;br /&gt;
&lt;br /&gt;
Changes the relationship between 2 characters.&lt;br /&gt;
&lt;br /&gt;
CharacterForceUpdate(INT:forceUpdate)&lt;br /&gt;
&lt;br /&gt;
Makes sure the attached character is always being update or not. &lt;br /&gt;
&lt;br /&gt;
CharacterSetEnemy(CHARACTER:character, CHARACTER:enemy)&lt;br /&gt;
&lt;br /&gt;
Sets the current enemy of character&lt;br /&gt;
&lt;br /&gt;
CharacterApplyStatus(CHARACTER:character, STATUS:statusId [, INT:turns=null, INT:force=0])&lt;br /&gt;
&lt;br /&gt;
Applies the status to the character When turns is -1 it's a permanent status When turns is -2 it's a keep alive status (which means it will die if it's not applied again within 1 second) &lt;br /&gt;
&lt;br /&gt;
CharacterRemoveStatus(CHARACTER:character, STATUS:statusId [, STATUS:reasonStatusID=null])&lt;br /&gt;
&lt;br /&gt;
Removes the status from the character&lt;br /&gt;
&lt;br /&gt;
CharacterDestroy(CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Destroys the character&lt;br /&gt;
&lt;br /&gt;
CharacterSetCanSpotSneakers(CHARACTER:character, INT:enabled)&lt;br /&gt;
&lt;br /&gt;
Enables/Disables the fact if the character can spot sneaking characters.&lt;br /&gt;
&lt;br /&gt;
CharacterSetAttackOfOpportunity(CHARACTER:character, INT:enabled)&lt;br /&gt;
&lt;br /&gt;
Enables/Disables the fact if the character can do attack of opportunities.&lt;br /&gt;
&lt;br /&gt;
CharacterResurrect(CHARACTER:character [, INT:Percentage = 100])&lt;br /&gt;
&lt;br /&gt;
Resurrects the character at [2]% health.&lt;br /&gt;
&lt;br /&gt;
CharacterAddToInventory(CHARACTER:character, FIXEDSTRING:itemStatsObject[, INT:amount, INT:showInTrade=1])&lt;br /&gt;
&lt;br /&gt;
Add the item to the character&lt;br /&gt;
&lt;br /&gt;
CharacterRemoveFromInventory(CHARACTER:character, FIXEDSTRING:itemStatsObject[, INT:amount])&lt;br /&gt;
&lt;br /&gt;
Remove the item from the character. If Amount is -1, then all are removed&lt;br /&gt;
&lt;br /&gt;
CharacterDrinkPotion(FIXEDSTRING:statID)&lt;br /&gt;
&lt;br /&gt;
Makes the character drink a potion from the inventory.&lt;br /&gt;
&lt;br /&gt;
CharacterSetAnimationOverride(CHARACTER:character, FIXEDSTRING:animation)&lt;br /&gt;
&lt;br /&gt;
Sets an animation override, only walk/run/die animations can override it.&lt;br /&gt;
&lt;br /&gt;
CharacterUseActionPoints(CHARACTER:character, INT:amount [, OUT INT:succeeded])&lt;br /&gt;
&lt;br /&gt;
Uses x action points&lt;br /&gt;
&lt;br /&gt;
CharacterAddTreasureTable(CHARACTER:character, FIXEDSTRING:treasureTable)&lt;br /&gt;
&lt;br /&gt;
Adds &amp;lt;treasureTable&amp;gt; to the treasure list of &amp;lt;character&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CharacterRemoveTreasureTable(CHARACTER:character, FIXEDSTRING:treasureTable)&lt;br /&gt;
&lt;br /&gt;
Removes &amp;lt;treasureTable&amp;gt; from the treasure list of &amp;lt;character&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CharacterClearTreasureTables(CHARACTER:character)&lt;br /&gt;
&lt;br /&gt;
Removes all treasure tables from &amp;lt;character&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CharacterSetTemporaryHostileRelation(CHARACTER:character, CHARACTER:otherCharacter)&lt;br /&gt;
&lt;br /&gt;
Creates a temporary hostile relation between the 2 characters!&lt;br /&gt;
&lt;br /&gt;
CharacterSetFightMode(CHARACTER:character, INT:fight [, INT:force=0])&lt;br /&gt;
&lt;br /&gt;
Set the character in sheath/unsheated mode.&lt;br /&gt;
&lt;br /&gt;
CharacterSetStats(CHARACTER:character, FIXEDSTRING:statsEntry [, INT:keepVitality=0, INT:keepAP=0, INT:keepLevel=0, OUT FLOAT:currentHP])&lt;br /&gt;
&lt;br /&gt;
Applies &amp;lt;statsEntry&amp;gt; from character.xlsm to &amp;lt;character&amp;gt;, returns &amp;lt;currentHP&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CharacterSetWalkSpeedOverride(CHARACTER:character, INTEGER:override [, FLOAT:walkSpeed])&lt;br /&gt;
&lt;br /&gt;
Sets walk speed override of &amp;lt;character&amp;gt;, removes it if &amp;lt;override&amp;gt; is 0&lt;br /&gt;
&lt;br /&gt;
CharacterSetRunSpeedOverride(CHARACTER:character, INTEGER:override [, FLOAT:runSpeed])&lt;br /&gt;
&lt;br /&gt;
Sets run speed override of &amp;lt;character&amp;gt;, removes it if &amp;lt;override&amp;gt; is 0&lt;br /&gt;
&lt;br /&gt;
CharacterSetHasDialog(CHARACTER:character, INTEGER:bool)&lt;br /&gt;
&lt;br /&gt;
Enables/Disables the dialog of the character&lt;br /&gt;
&lt;br /&gt;
CharacterInitPatrol(SPLINE:spline, INT:splineIndex, INT:reversed, INT:running)&lt;br /&gt;
&lt;br /&gt;
Start patroling from the given index along the given spline with the given character.&lt;br /&gt;
&lt;br /&gt;
CharacterStartPatrol(SPLINE:spline, INT:splineIndex, INT:reversed, INT:running)&lt;br /&gt;
&lt;br /&gt;
Start patroling from the given index along the given spline with the given character.&lt;br /&gt;
&lt;br /&gt;
CharacterStopPatrol(-)&lt;br /&gt;
&lt;br /&gt;
Let the character stop patrolling whatever spline he's on!&lt;br /&gt;
&lt;br /&gt;
CharacterInterruptPatrol(-)&lt;br /&gt;
&lt;br /&gt;
Call when the patrol should interrupt so the guard stops moving to the next spline. If this is called when the character is deactivated, a caret will take his place.&lt;br /&gt;
&lt;br /&gt;
CharacterSetAnimationSetOverride(CHARACTER:source, FIXEDSTRING:override)&lt;br /&gt;
&lt;br /&gt;
Sets an animation set override for a character. Empty fixedstring clears the override.&lt;br /&gt;
&lt;br /&gt;
CharacterSetFloating(CHARACTER:target, INTEGER:isFloating)&lt;br /&gt;
&lt;br /&gt;
Sets &amp;lt;target&amp;gt; floating if &amp;lt;isFloating&amp;gt; is not 0&lt;br /&gt;
&lt;br /&gt;
CharacterResetCooldowns(CHARACTER:target)&lt;br /&gt;
&lt;br /&gt;
Resets the skill cooldowns for &amp;lt;target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ItemEvent(ITEM:item, STRING:eventName)&lt;br /&gt;
&lt;br /&gt;
Throw an item event which you can catch in scripts and story&lt;br /&gt;
&lt;br /&gt;
ItemPlayAnimation(FIXEDSTRING:animation)&lt;br /&gt;
&lt;br /&gt;
Plays an animation on the item&lt;br /&gt;
&lt;br /&gt;
ItemPlayAnimationTo(FIXEDSTRING:animation, FLOAT:targetPercentage, [FLOAT:speed])&lt;br /&gt;
&lt;br /&gt;
Plays an animation on the item to the target time (percentage of the total duration)&lt;br /&gt;
&lt;br /&gt;
ItemPlayEffect(ITEM:item, STRING:effect [,FIXEDSTRING:boneName])&lt;br /&gt;
&lt;br /&gt;
Plays an effect on the item and it follows the item&lt;br /&gt;
&lt;br /&gt;
ItemPlayLoopEffect(OUT INT:effectHandle, ITEM:item, STRING:effect [,FIXEDSTRING:boneName])&lt;br /&gt;
&lt;br /&gt;
Plays a looping effect on the item and it follows the item&lt;br /&gt;
&lt;br /&gt;
ItemSetOnStage(ITEM:item, INTEGER:bool)&lt;br /&gt;
&lt;br /&gt;
Sets an item on or offstage&lt;br /&gt;
&lt;br /&gt;
ItemSetCanInteract(ITEM:item, INTEGER:bool)&lt;br /&gt;
&lt;br /&gt;
Sets an item (not) interactible&lt;br /&gt;
&lt;br /&gt;
ItemClose(ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Close an item&lt;br /&gt;
&lt;br /&gt;
ItemOpen(ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Open an item&lt;br /&gt;
&lt;br /&gt;
ItemDrop(ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Drop an item&lt;br /&gt;
&lt;br /&gt;
ItemLock(ITEM:item, FIXEDSTRING:key)&lt;br /&gt;
&lt;br /&gt;
Lock an item&lt;br /&gt;
&lt;br /&gt;
ItemUnlock(ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Unlock an item&lt;br /&gt;
&lt;br /&gt;
ItemApplyStatus(ITEM:item, STATUS:statusId [, INT:turns=null, INT:force=0])&lt;br /&gt;
&lt;br /&gt;
Applies the status to the item When turns is -1 it's a permanent status When turns is -2 it's a keep alive status (which means it will die if it's not applied again within 1 second) &lt;br /&gt;
&lt;br /&gt;
ItemRemoveStatus(ITEM:item, STATUS:statusId)&lt;br /&gt;
&lt;br /&gt;
Removes the status from the item&lt;br /&gt;
&lt;br /&gt;
ItemDie(ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Kills the item&lt;br /&gt;
&lt;br /&gt;
ItemMoveTo(GAMEOBJECT|FLOAT3:target, FLOAT:velocity, FLOAT:acceleration, INTEGER:matchTargetRotation)&lt;br /&gt;
&lt;br /&gt;
Moves the item to the target&lt;br /&gt;
&lt;br /&gt;
ItemToInventory(ITEM:item, CHARACTER|ITEM:target [,INT:amount=-1])&lt;br /&gt;
&lt;br /&gt;
Moves the item to the target's inventory&lt;br /&gt;
&lt;br /&gt;
ItemLookAt(GAMEOBJECT:target, FLOAT:degreesPerSecond)&lt;br /&gt;
&lt;br /&gt;
Rotates the item to look at the target&lt;br /&gt;
&lt;br /&gt;
ItemDestroy(ITEM:item)&lt;br /&gt;
&lt;br /&gt;
Destroys the item&lt;br /&gt;
&lt;br /&gt;
ItemSetAmount(ITEM:item, INT:amount)&lt;br /&gt;
&lt;br /&gt;
Change the amount of the item&lt;br /&gt;
&lt;br /&gt;
IterateItemsInInventory(CHARACTER|ITEM:source, FIXEDSTRING:eventname[, FIXEDSTRING:tag])&lt;br /&gt;
&lt;br /&gt;
Launch iterate event for each iten in source's inventory. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
ItemAddCharges(ITEM:TargetItem, INT:charges)&lt;br /&gt;
&lt;br /&gt;
Add/subtract charges from an item&lt;br /&gt;
&lt;br /&gt;
ItemResetChargesToInitial(ITEM:TargetItem)&lt;br /&gt;
&lt;br /&gt;
Resets charges from item to initial state&lt;br /&gt;
&lt;br /&gt;
MakePeace(CHARACTER:Source, CHARACTER:Target[, INT:IgnoreVote = 1])&lt;br /&gt;
&lt;br /&gt;
Make peace between users of the characters&lt;br /&gt;
&lt;br /&gt;
MakeWar(CHARACTER:Source, CHARACTER:Target[, INT:IgnoreVote = 1])&lt;br /&gt;
&lt;br /&gt;
Make war between users of the characters&lt;br /&gt;
&lt;br /&gt;
FindSurface(OUT FLOAT3:result, GAMEOBJECT|FLOAT3:source, FLOAT:minRange, FLOAT:maxRange, SURFACE:type [,CHARACTER:alignSource, INT:minEnemiesInSurface, INT:maxAlliesInSurface, INT:minimumCellCount])&lt;br /&gt;
&lt;br /&gt;
Finds the closest surface of a specific type.&lt;br /&gt;
&lt;br /&gt;
FindValidPosition(INOUT FLOAT3:position, FLOAT:radius[, CHARACTER|ITEM:object=null])&lt;br /&gt;
&lt;br /&gt;
Finds the closest valid position (where the object can stand.)&lt;br /&gt;
&lt;br /&gt;
FindPosition(INOUT FLOAT3:position, CHARACTER:source, INT:canStand, INT:checkSight, FLOAT:minRadius, FLOAT:maxRadius, FLOAT:rangeCheck, CHARACTER:alignSource, INT:minAllies, INT:maxAllies, INT:minEnemies, INT:maxEnemies [,FIXEDSTRING:AiHintTag=null, INT:forceHint=0, FLOAT3:SourcePosition])&lt;br /&gt;
&lt;br /&gt;
Finds the closest position from the source (within radius) where the conditions are matched. &lt;br /&gt;
&lt;br /&gt;
Cast(OUT OBJECT variable, OBJECT value)&lt;br /&gt;
&lt;br /&gt;
Casts the value to the variable.&lt;br /&gt;
&lt;br /&gt;
StringConcatenate(STRING:stringA, STRING:stringB, OUT STRING:resultingString)&lt;br /&gt;
&lt;br /&gt;
Appends stringB to stringA. Resulting string is stored in the third parameter.&lt;br /&gt;
&lt;br /&gt;
== QUERIES ==&lt;br /&gt;
&lt;br /&gt;
GetPosition(GAMEOBJECT:object,OUT FLOAT3:src)&lt;br /&gt;
Get the current position of an object&lt;br /&gt;
&lt;br /&gt;
GetForwardDirection(GAMEOBJECT:object,OUT FLOAT3:direction)&lt;br /&gt;
Get the current forward direction of an object&lt;br /&gt;
&lt;br /&gt;
GetRightDirection(GAMEOBJECT:object,OUT FLOAT3:direction)&lt;br /&gt;
Get the current right direction of an object&lt;br /&gt;
&lt;br /&gt;
GetUpDirection(GAMEOBJECT:object,OUT FLOAT3:direction)&lt;br /&gt;
Get the current up direction of an object&lt;br /&gt;
&lt;br /&gt;
GetDirection(GAMEOBJECT|FLOAT3:src,GAMEOBJECT|FLOAT3:target,OUT FLOAT3:direction[, OUT FLOAT:distance])&lt;br /&gt;
Get the direction from src to target (optional: returns the distance between the objects as well)&lt;br /&gt;
&lt;br /&gt;
GetRotation(GAMEOBJECT:object, OUT FLOAT3:vector)&lt;br /&gt;
Get the rotation of an object&lt;br /&gt;
&lt;br /&gt;
CharacterGetTargetSpline(INT: SplineIndex)&lt;br /&gt;
Returns the spline index the character is currently walking towards, or -1 if he is not active on a spline.&lt;br /&gt;
&lt;br /&gt;
IsEqual(OBJECT:variable, OBJECT:variable)&lt;br /&gt;
Compares both objects and see if they are equal.&lt;br /&gt;
&lt;br /&gt;
IsLessThen(INT|FLOAT:variable, INT|FLOAT:variable)&lt;br /&gt;
Compares both objects and see if the first one is smaller.&lt;br /&gt;
&lt;br /&gt;
IsGreaterThen(INT|FLOAT:variable, INT|FLOAT:variable)&lt;br /&gt;
Compares both objects and see if the first one is bigger.&lt;br /&gt;
&lt;br /&gt;
IsRandom(FLOAT:percentage)&lt;br /&gt;
Each time this condition is checked, it will succeed with a chance of the percentage (between 0 and 1)&lt;br /&gt;
&lt;br /&gt;
IsRound(INT:roundNumber)&lt;br /&gt;
Checks if we are currently in combat in round x&lt;br /&gt;
&lt;br /&gt;
IsInSurface(OBJECT|FLOAT3:target, SURFACE:type[, FLOAT:radius])&lt;br /&gt;
Check if the character, item, trigger or position is currently within the specific surface.&lt;br /&gt;
&lt;br /&gt;
IsInDangerousSurface(OBJECT|FLOAT3:target[, CHARACTER:character, FLOAT:radius])&lt;br /&gt;
Check if &amp;lt;target&amp;gt; is currently in on a dangerous surface. Uses &amp;lt;character&amp;gt; for path influences if provided (is necessary with non-character targets)&lt;br /&gt;
&lt;br /&gt;
IsInDialog(CHARACTER|ITEM:target[, INT:ignoreAutomatedDialogs=0])&lt;br /&gt;
Check if the character or item is currently in a dialog, optionally ignoring automated dialogs&lt;br /&gt;
&lt;br /&gt;
IsInAutomatedDialog(CHARACTER|ITEM:target)&lt;br /&gt;
Check if the character or item is currently in an automated dialog&lt;br /&gt;
&lt;br /&gt;
GetDistance(OUT FLOAT:distance, GAMEOBJECT|FLOAT3:source, GAMEOBJECT|FLOAT3:target)&lt;br /&gt;
Returns the distance between 2 positions&lt;br /&gt;
&lt;br /&gt;
GetDistance2D(OUT FLOAT:distance, GAMEOBJECT|FLOAT3:source, GAMEOBJECT|FLOAT3:target)&lt;br /&gt;
Returns the 2D distance between 2 positions (ignores height)&lt;br /&gt;
&lt;br /&gt;
GetInnerDistance(OUT FLOAT:distance, GAMEOBJECT:source, GAMEOBJECT:target)&lt;br /&gt;
Returns the distance between 2 gameobjects (character, item, trigger, ...) Their bounds are already subtracted.&lt;br /&gt;
&lt;br /&gt;
GetPosition(GAMEOBJECT:object, OUT FLOAT3:position)&lt;br /&gt;
Returns the position of a gameobject (character, item, trigger, ...)&lt;br /&gt;
&lt;br /&gt;
GetVar(OUT OBJECT:returnValue, CHARACTER|ITEM:target, FIXEDSTRING:varName)&lt;br /&gt;
Gets a global variable from the target&lt;br /&gt;
&lt;br /&gt;
GetClosestPlayer(OUT CHARACTER:player, GAMEOBJECT|FLOAT3:source)&lt;br /&gt;
Gets the closest player near the source, default being being the object itself&lt;br /&gt;
&lt;br /&gt;
GetPlayerCount(OUT INT:playerCount)&lt;br /&gt;
Gets the number of players in the party&lt;br /&gt;
&lt;br /&gt;
GetPlayerByIndex(OUT CHARACTER:returnCharacter, INT:playerIndex)&lt;br /&gt;
Gets a player from the party by index&lt;br /&gt;
&lt;br /&gt;
GetRandomCharacter(OUT CHARACTER:returnCharacter, [INT:canBeSelf=0, INT:canBePlayer=0])&lt;br /&gt;
Gets a random character in the current level&lt;br /&gt;
&lt;br /&gt;
ContainsSurface(GAMEOBJECT|FLOAT3:source, FLOAT:radius, SURFACE:type,)&lt;br /&gt;
Checks if there is any surface of the type within a radius of the source&lt;br /&gt;
&lt;br /&gt;
IsSurface(GAMEOBJECT|FLOAT3:source, FLOAT:radius, SURFACE:type,)&lt;br /&gt;
Checks if the whole radius around the source is the specified surface type&lt;br /&gt;
&lt;br /&gt;
IsObjectOnObject(CHARACTER|ITEM:source,CHARACTER|ITEM:target)&lt;br /&gt;
Checks if the source is standing on the target&lt;br /&gt;
&lt;br /&gt;
GetX(FLOAT3:vector, OUT FLOAT:value)&lt;br /&gt;
Returns the X component of the vector&lt;br /&gt;
&lt;br /&gt;
GetY(FLOAT3:vector, OUT FLOAT:value)&lt;br /&gt;
Returns the Y component of the vector&lt;br /&gt;
&lt;br /&gt;
GetZ(FLOAT3:vector, OUT FLOAT:value)&lt;br /&gt;
Returns the Z component of the vector&lt;br /&gt;
&lt;br /&gt;
CanSee(GAMEOBJECT|FLOAT3:source, GAMEOBJECT|FLOAT3:target[, INT:addProjectileTargetGroundOffset=0])&lt;br /&gt;
Check if the sight is blocked between 2 points.&lt;br /&gt;
&lt;br /&gt;
IsVisible(CHARACTER|ITEM:object)&lt;br /&gt;
Check if the object is set invisible or not with SetVisible.&lt;br /&gt;
&lt;br /&gt;
GetTextDuration(CHARACTER|ITEM:object, FIXEDSRTING:key, OUT FLOAT:duration)&lt;br /&gt;
Gets how long a text needs to be displayed&lt;br /&gt;
&lt;br /&gt;
IsCasual(-)&lt;br /&gt;
Returns if the current game mode is Casual&lt;br /&gt;
&lt;br /&gt;
IsHardcore(-)&lt;br /&gt;
Returns if the current game mode is Hardcore&lt;br /&gt;
&lt;br /&gt;
IsTagged(GAMEOBJECT:object, FIXEDSTRING:tag)&lt;br /&gt;
Check if the object is tagged.&lt;br /&gt;
&lt;br /&gt;
TranslatedStringKeyExists(FIXEDSTRING:key)&lt;br /&gt;
Check if the TranslatedString key exists.&lt;br /&gt;
&lt;br /&gt;
IsInCombat(CHARACTER|ITEM:object)&lt;br /&gt;
Returns true if the object is in combat.&lt;br /&gt;
&lt;br /&gt;
IsInCombatWith(CHARACTER|ITEM:object, CHARACTER|ITEM:object)&lt;br /&gt;
Returns true if the objects are in combat with each other.&lt;br /&gt;
&lt;br /&gt;
IsFacing(GAMEOBJECT:source, GAMEOBJECT|FLOAT3:target, [INT:angle=90])&lt;br /&gt;
Returns true if the object is facing the position within the given angle.&lt;br /&gt;
&lt;br /&gt;
GameIsSaving(-)&lt;br /&gt;
Returns true if the game is saving.&lt;br /&gt;
&lt;br /&gt;
GameIsLoading(-)&lt;br /&gt;
Returns true if the game is loading.&lt;br /&gt;
&lt;br /&gt;
GetUserCount(OUT INT:userCount)&lt;br /&gt;
Returns the user count.&lt;br /&gt;
&lt;br /&gt;
GetCurrentCharacter(OUT CHARACTER:character, INT:user)&lt;br /&gt;
Returns the character currently being controlled by the specified user.&lt;br /&gt;
&lt;br /&gt;
GetCurrentLevel(OUT FIXEDSTRING:currentLevel)&lt;br /&gt;
Returns the current levelname&lt;br /&gt;
&lt;br /&gt;
GetAIBounds(CHARACTER|ITEM:source, OUT FLOAT:bounds)&lt;br /&gt;
Returns AI bounds of &amp;lt;source&amp;gt; in &amp;lt;bounds&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HasGlobalFlag(FIXEDSTRING:flagName)&lt;br /&gt;
Returns if the Global Flag is set&lt;br /&gt;
&lt;br /&gt;
HasFlag(CHARACTER|ITEM:object, FIXEDSTRING:flagName)&lt;br /&gt;
Returns if the Flag is set on the Object&lt;br /&gt;
&lt;br /&gt;
HasUserFlag(CHARACTER:object, FIXEDSTRING:flagName)&lt;br /&gt;
Returns if the Flag is set on the user's characters&lt;br /&gt;
&lt;br /&gt;
HasPartyFlag(CHARACTER:object, FIXEDSTRING:flagName)&lt;br /&gt;
Returns if the Flag is set on the party's characters&lt;br /&gt;
&lt;br /&gt;
DialogExists(STRING:dialogue)&lt;br /&gt;
Returns true if the dialogue exists.&lt;br /&gt;
&lt;br /&gt;
IsActive(CHARACTER|ITEM:Object)&lt;br /&gt;
Returns if the character or item is currently active.&lt;br /&gt;
&lt;br /&gt;
ListGetSize(LIST&amp;lt;OBJECT&amp;gt;:list, out INT:size)&lt;br /&gt;
Returns the number of elements in &amp;lt;list&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ListGet(LIST&amp;lt;OBJECT&amp;gt;:list, INT:index, out OBJECT:entry)&lt;br /&gt;
Returns &amp;lt;entry&amp;gt; at &amp;lt;index&amp;gt; of &amp;lt;list&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ListGetRandom(LIST&amp;lt;OBJECT&amp;gt;:list, out OBJECT:entry)&lt;br /&gt;
Returns a random &amp;lt;entry&amp;gt; of &amp;lt;list&amp;gt;&lt;br /&gt;
&lt;br /&gt;
IsBoss(CHARACTER|ITEM:Object)&lt;br /&gt;
Returns true if the entity is tagged as a boss&lt;br /&gt;
&lt;br /&gt;
IsProjectileSkill(SKILL:skill)&lt;br /&gt;
Returns true if the skill is a ranged skill (uses a projectile)&lt;br /&gt;
&lt;br /&gt;
IsValidSkillTarget(CHARACTER:source, OBJECT|FLOAT3:target, SKILLID:skill[, INTEGER:ignoreRangeCheck=0])&lt;br /&gt;
Checks whether &amp;lt;target&amp;gt; is a valid target for &amp;lt;skill&amp;gt; at &amp;lt;source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GetFaction(OUT FIXEDSTRING:faction, CHARACTER|ITEM:character)&lt;br /&gt;
Returns the faction of the provided character or item&lt;br /&gt;
&lt;br /&gt;
IsInActiveTurn(CHARACTER|ITEM:target)&lt;br /&gt;
Returns true if it's the character's or item's turn in combat.&lt;br /&gt;
&lt;br /&gt;
IsSkillActive(CHARACTER:character, SKILL:skillId)&lt;br /&gt;
Returns true if &amp;lt;character&amp;gt; has &amp;lt;skillId&amp;gt; active (in memory).&lt;br /&gt;
&lt;br /&gt;
HasSkillAi(SKILLID:skillId)&lt;br /&gt;
Returns true if the skill is using the new Ai system&lt;br /&gt;
&lt;br /&gt;
IsInArena(CHARACTER::character)&lt;br /&gt;
Returns true if the character is in an arena fight&lt;br /&gt;
&lt;br /&gt;
CrimeGetType(INTEGER:crimeId, OUT STRING:crimeType)&lt;br /&gt;
Returns the type of the crime with this id.&lt;br /&gt;
&lt;br /&gt;
CrimeGetCriminals(INTEGER:crimeId, OUT CHARACTER:criminal1, OUT CHARACTER:criminal2, OUT CHARACTER:criminal3, OUT CHARACTER:criminal4)&lt;br /&gt;
Returns the criminals of that crime. They might all be null.&lt;br /&gt;
&lt;br /&gt;
IsSourceSkill(SKILL:skill)&lt;br /&gt;
Returns true if the skill is a source skill.&lt;br /&gt;
&lt;br /&gt;
IsInGameMasterMode(-)&lt;br /&gt;
Returns true if the game in game master mode.&lt;br /&gt;
&lt;br /&gt;
CharacterGet(OUT CHARACTER:character, GAMEOBJECT|FLOAT3:src, FLOAT:range, COMPARE:howTo, COMPAREFUNC:compareFunc[, RELATION: relation, SURFACE:surface, STATUS:status, TALENT:talent, CHARACTER:inSightOf, FIXEDSTRING:tag])&lt;br /&gt;
Get a character within a certain range conforming to the filled in restraints. &lt;br /&gt;
&lt;br /&gt;
CharacterCount(OUT INT:count, GAMEOBJECT|FLOAT3:src, FLOAT:range, [RELATION: relation, SURFACE:surface, STATUS:status, TALENT:talent, CHARACTER:inSightOf])&lt;br /&gt;
Counts the characters within a certain range conforming to the filled in restraints.&lt;br /&gt;
&lt;br /&gt;
CharacterGetOwner(OUT CHARACTER:owner, CHARACTER:source)&lt;br /&gt;
Get the character's owner&lt;br /&gt;
&lt;br /&gt;
CharacterGetFollow(OUT CHARACTER:to follow, CHARACTER:source)&lt;br /&gt;
Get the character to follow&lt;br /&gt;
&lt;br /&gt;
CharacterGetEnemy(OUT CHARACTER:current enemy, CHARACTER:source)&lt;br /&gt;
Get current enemy of character&lt;br /&gt;
&lt;br /&gt;
CharacterCanCast(CHARACTER:source, SKILL:skillId, [ITEM:skillItem=null, INT:ignoreActionPoints=0])&lt;br /&gt;
Check if the character source can cast the skill: will check cooldown, actionpoints&lt;br /&gt;
&lt;br /&gt;
CharacterCanSitOnItem(CHARACTER:source, ITEM:item)&lt;br /&gt;
Check if the character source can sit or lie on an item.&lt;br /&gt;
&lt;br /&gt;
CharacterCanDrinkPotion(CHARACTER:source, FIXEDSTRING:potionID[, INT:ignoreActionPoints=0])&lt;br /&gt;
Check if the character source can drink the potion: will check inv and actionpoints&lt;br /&gt;
&lt;br /&gt;
CharacterCanUseItem(CHARACTER:source, ITEM:item[, INT:ignoreActionPoints=0])&lt;br /&gt;
Check if the character source can use the item in the world&lt;br /&gt;
&lt;br /&gt;
CharacterCanUseItemInInventory(CHARACTER:source, ITEM:item[, INT:ignoreActionPoints=0])&lt;br /&gt;
Check if the character source can use the item in his inventory&lt;br /&gt;
&lt;br /&gt;
CharacterCanSee(CHARACTER:watchingChar, CHARACTER|ITEM:target [, INT:forceUpdate=0])&lt;br /&gt;
Check if character has target in his line of sight. &lt;br /&gt;
&lt;br /&gt;
CharacterCanShoot(CHARACTER:source, GAMEOBJECT|FLOAT3:target)&lt;br /&gt;
Check if the character can shoot the target.&lt;br /&gt;
&lt;br /&gt;
CharacterIsPlayer(CHARACTER:character)&lt;br /&gt;
Check if the character is a player&lt;br /&gt;
&lt;br /&gt;
CharacterIsInParty(CHARACTER:character)&lt;br /&gt;
Check if the character is in the party&lt;br /&gt;
&lt;br /&gt;
CharacterIsEnemy(CHARACTER:source, CHARACTER:target)&lt;br /&gt;
Check if target is enemy of source&lt;br /&gt;
&lt;br /&gt;
CharacterIsAlly(CHARACTER:source, CHARACTER:target)&lt;br /&gt;
Check if target is ally of source&lt;br /&gt;
&lt;br /&gt;
CharacterIsNeutral(CHARACTER:source, CHARACTER:target)&lt;br /&gt;
Check if target is neutral of source&lt;br /&gt;
&lt;br /&gt;
CharacterIsDead(CHARACTER:character)&lt;br /&gt;
Check if character is dead&lt;br /&gt;
&lt;br /&gt;
CharacterIsMoving(CHARACTER:character)&lt;br /&gt;
Check if character is moving (speed &amp;gt; 0)&lt;br /&gt;
&lt;br /&gt;
CharacterIsSummon(CHARACTER:character)&lt;br /&gt;
Check if character is a summon&lt;br /&gt;
&lt;br /&gt;
CharacterIsPartyFollower(CHARACTER:character)&lt;br /&gt;
Check if character is a party follower&lt;br /&gt;
&lt;br /&gt;
CharacterIsStoryNPC(CHARACTER:character)&lt;br /&gt;
Check if character is a story NPC&lt;br /&gt;
&lt;br /&gt;
CharacterInWeaponRange(CHARACTER:character, CHARACTER:target)&lt;br /&gt;
Check if target is in the current's weapon range&lt;br /&gt;
&lt;br /&gt;
CharacterInTouchRange(CHARACTER:character, CHARACTER:targetChar)&lt;br /&gt;
Check if target is in the character's touch range &lt;br /&gt;
&lt;br /&gt;
CharacterHasStatus(CHARACTER:character, STATUS:statusId[, FIXEDSTRING:extraData])&lt;br /&gt;
Check if character currently has the status. ExtraData can be filled in for some statuses: - Consume: statsid of the item - Shield: skillid of the shield&lt;br /&gt;
&lt;br /&gt;
CharacterGetStatusSourceCharacter(CHARACTER:character, STATUS:statusId, OUT CHARACTER:source[, FIXEDSTRING:extraData])&lt;br /&gt;
Get the source character of a status&lt;br /&gt;
&lt;br /&gt;
CharacterGetStatusSourceItem(CHARACTER:character, STATUS:statusId, OUT ITEM:source[, FIXEDSTRING:extraData])&lt;br /&gt;
Get the source item of a status&lt;br /&gt;
&lt;br /&gt;
CharacterHasTalent(CHARACTER:character, TALENT:talent)&lt;br /&gt;
Check if character currently has the talent&lt;br /&gt;
&lt;br /&gt;
CharacterHasSkill(CHARACTER:character, SKILL:skillId)&lt;br /&gt;
Check if character currently has the skill&lt;br /&gt;
&lt;br /&gt;
CharacterHasWeaponType(CHARACTER:character, WEAPON:weaponTYPE [, INT:equipped])&lt;br /&gt;
Check if character currently has a weapon of this type in his inventory or equipped&lt;br /&gt;
&lt;br /&gt;
CharacterGetStat(OUT FLOAT:statValue, CHARACTER:character, CHARACTERSTAT:statType)&lt;br /&gt;
Returns the current value of the stat (Vitality, ...)&lt;br /&gt;
&lt;br /&gt;
CharacterGetSightRange(OUT FLOAT:range, CHARACTER:character)&lt;br /&gt;
Returns the character's sight range&lt;br /&gt;
&lt;br /&gt;
CharacterGetWeaponRange(OUT FLOAT:minRange, OUT FLOAT:maxRange, CHARACTER:character)&lt;br /&gt;
Returns the character's current weapon range&lt;br /&gt;
&lt;br /&gt;
CharacterGetTouchRange(OUT FLOAT:touchRange, CHARACTER:character)&lt;br /&gt;
Returns the character's current touch range&lt;br /&gt;
&lt;br /&gt;
CharacterGetSkillRange(OUT FLOAT:minRange, OUT FLOAT:maxRange,CHARACTER:character, SKILL:skillId)&lt;br /&gt;
Returns the character's skill range&lt;br /&gt;
&lt;br /&gt;
CharacterGetSkillImpactRange(OUT FLOAT:areaRange, CHARACTER:character, SKILL:skillId)&lt;br /&gt;
Returns the character's skill range&lt;br /&gt;
&lt;br /&gt;
CharacterIsInTrigger(CHARACTER:character, TRIGGER:trigger)&lt;br /&gt;
Check if character is in given trigger&lt;br /&gt;
&lt;br /&gt;
CharacterGetAbility(OUT INT:value, CHARACTER:character, ABILITY:ability)&lt;br /&gt;
Returns the character's value of the specified ability&lt;br /&gt;
&lt;br /&gt;
CharacterGetHostileCount(OUT INT:value, CHARACTER:character)&lt;br /&gt;
Returns how many characters are targeting this character right now... You can iterate over them with IterateEnemiesOf.&lt;br /&gt;
&lt;br /&gt;
CharacterCanFight(CHARACTER:character)&lt;br /&gt;
Returns true if the character can fight.&lt;br /&gt;
&lt;br /&gt;
CharacterGetTemplate(CHARACTER:character, OUT CHARACTERTEMPLATE:root)&lt;br /&gt;
Returns the roottemplate of the character.&lt;br /&gt;
&lt;br /&gt;
CharacterCanSpotSneakers(CHARACTER:character)&lt;br /&gt;
Returns true if the character can spot sneaking characters&lt;br /&gt;
&lt;br /&gt;
CharacterIsFloating(CHARACTER:character)&lt;br /&gt;
Check if character is a floating character&lt;br /&gt;
&lt;br /&gt;
CharacterInCreation(CHARACTER:character)&lt;br /&gt;
Returns true if the character is in character creation&lt;br /&gt;
&lt;br /&gt;
CharacterAvoidsTraps(CHARACTER:character)&lt;br /&gt;
Returns true if the character avoids traps&lt;br /&gt;
&lt;br /&gt;
CharacterCheckRelation(CHARACTER:character, RELATION:relation)&lt;br /&gt;
Returns true if relation check succeeds&lt;br /&gt;
&lt;br /&gt;
CharacterIsBetterOrEqualClass(CHARACTER:character, INT:currentScore, OUT INT:newScore, INT warriorScore, INT rogueScore, INT mageScore, INT clericScore, INT rangerScore)&lt;br /&gt;
Returns true if score is higher or equal than the current score&lt;br /&gt;
&lt;br /&gt;
CharacterHasBeenHitBy(CHARACTER:character, DAMAGE_TYPE:damageType)&lt;br /&gt;
Returns true if the character was hit by this type.&lt;br /&gt;
&lt;br /&gt;
CharacterHasCastedSpellLastTurn(CHARACTER:character)&lt;br /&gt;
Returns true if the character has casted a spell in his last turn.&lt;br /&gt;
&lt;br /&gt;
CharacterHasHadStatus(CHARACTER:character, STATUS:status)&lt;br /&gt;
Returns true if the character has had a specific status this combat.&lt;br /&gt;
&lt;br /&gt;
CharacterHasAnimationOverride(CHARACTER:character)&lt;br /&gt;
Returns true if the character has an animation override.&lt;br /&gt;
&lt;br /&gt;
CharacterCanUnlock(CHARACTER:character, ITEM:item)&lt;br /&gt;
Returns true if the character can unlock the item (if the item is already unlocked it returns true!)&lt;br /&gt;
&lt;br /&gt;
CharacterGetReservedUserID(OUT INT:user, CHARACTER:character)&lt;br /&gt;
Returns the character's reserved User id.&lt;br /&gt;
&lt;br /&gt;
CharacterGetRace(CHARACTER:character, OUT FIXEDSTRING:race)&lt;br /&gt;
Returns the &amp;lt;character&amp;gt;'s race in &amp;lt;race&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CharacterIsRace(CHARACTER:character, FIXEDSTRING:race)&lt;br /&gt;
Returns true if &amp;lt;character&amp;gt;'s race is &amp;lt;race&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CharacterCanMoveItem(CHARACTER:character, ITEM:item, FLOAT:minRadius, FLOAT:maxRadius [, OUT FLOAT3:destination])&lt;br /&gt;
Returns true + &amp;lt;destination&amp;gt; if &amp;lt;character&amp;gt; can move &amp;lt;item&amp;gt; somewhere between &amp;lt;minRadius&amp;gt; and &amp;lt;maxRadius&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CharacterGetDeathType(CHARACTER:character, OUT FIXEDSTRING:deathType)&lt;br /&gt;
Returns death type of &amp;lt;character&amp;gt; in &amp;lt;deathType&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CharacterGetStillAnimation(CHARACTER:object, OUT FIXEDSTRING:stillAnimation)&lt;br /&gt;
Returns the still animation to play&lt;br /&gt;
&lt;br /&gt;
CrimeTransferLeadership(INT: CrimeID[, FIXEDSTRING:Tag1,...])&lt;br /&gt;
Try and transfer the leadership of this crime to someone else.&lt;br /&gt;
&lt;br /&gt;
CrimeGetLeadInvestigator(OUT CHARACTER:lead, INT: CrimeID)&lt;br /&gt;
Returns the lead investigator for the crime.&lt;br /&gt;
&lt;br /&gt;
CharacterCanHitTargetWithRangedWeapon(CHARACTER:source, OBJECT|FLOAT3:target[, SKILL:skill = null])&lt;br /&gt;
Returns true if &amp;lt;source&amp;gt; can hit &amp;lt;target&amp;gt; with currently equipped ranged weapon. Will use &amp;lt;skill&amp;gt; instead of equipped weapon if provided.&lt;br /&gt;
&lt;br /&gt;
CharacterHasRangedWeapon(CHARACTER:character[, INT:checkInventory = 0])&lt;br /&gt;
Returns true if &amp;lt;character&amp;gt; has has ranged weapon. Checks for non-wielded weapons if &amp;lt;checkInventory&amp;gt; is 1&lt;br /&gt;
&lt;br /&gt;
CheckInteractionReach(CHARACTER:character, CHARACTER|ITEM: target)&lt;br /&gt;
Returns true if &amp;lt;character&amp;gt; could interact with &amp;lt;target&amp;gt;. This is not checking ranges, but checking if there's too much of a height difference or too many obstacles in between.&lt;br /&gt;
&lt;br /&gt;
CharacterGetSourcePoints(CHARACTER:character, OUT INT: amount)&lt;br /&gt;
Returns the amount of sourcepoints of &amp;lt;character&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CharacterAiIsCalculating(-)&lt;br /&gt;
Returns if the character is still calculating the AI.&lt;br /&gt;
&lt;br /&gt;
CharacterAiFetchMoveSkillCommand(OUT SKILL:skill, OUT ITEM:skillItem, OUT FLOAT3:target)&lt;br /&gt;
Returns if the character has a Move Skill command to execute according to the AI.&lt;br /&gt;
&lt;br /&gt;
CharacterAiFetchSkillCommand(OUT SKILL:skill, OUT ITEM:skillItem, OUT FLOAT3 endPosition, OUT FLOAT3:target, OUT CHARACTER:target, OUT ITEM:target, OUT FLOAT3:target2, OUT CHARACTER:target2, OUT ITEM:target)&lt;br /&gt;
Returns if the character has a Skill command to execute according to the AI.&lt;br /&gt;
&lt;br /&gt;
CharacterAiFetchConsumeCommand(OUT ITEM:item)&lt;br /&gt;
Returns if the character has a Consume command to execute according to the AI.&lt;br /&gt;
&lt;br /&gt;
CharacterAiFetchAttackCommand(OUT FLOAT3:endPosition, OUT FLOAT3:target, OUT CHARACTER:target, OUT ITEM:target)&lt;br /&gt;
Returns if the character has a Attack command to execute according to the AI.&lt;br /&gt;
&lt;br /&gt;
CharacterAiFetchFallbackCommand(OUT FLOAT3:targetPosition, OUT FLOAT3:lookAtPosition)&lt;br /&gt;
Returns if the character has a Fallback command to execute according to the AI.&lt;br /&gt;
&lt;br /&gt;
CharacterGetArchetype(CHARACTER:character, OUT ARCHETYPE:archetype)&lt;br /&gt;
Returns the archetype of the character.&lt;br /&gt;
&lt;br /&gt;
CharacterIsPolymorphedInto(CHARACTER:character, FIXEDSTRING:race)&lt;br /&gt;
Returns true if &amp;lt;character&amp;gt; is polymorphed into &amp;lt;race&amp;gt;. Race can be a race (like HUMAN), but also a template (in case of a polymorph skill like Chicken Touch).&lt;br /&gt;
&lt;br /&gt;
CharacterIsPolymorphInteractionDisabled(CHARACTER:character)&lt;br /&gt;
Returns true if &amp;lt;character&amp;gt; has his interaction disabled because of a polymorph.&lt;br /&gt;
&lt;br /&gt;
ItemGet(OUT ITEM:item, GAMEOBJECT|FLOAT3:src, FLOAT:range, COMPARE:howTo [, COMPAREFUNC:compareFunc, FIXEDSTRING:rootTemplate, FIXEDSTRING:tag])&lt;br /&gt;
Get an item within a certain range conforming to the filled in restraints.&lt;br /&gt;
&lt;br /&gt;
ItemGetFromInventory(OUT ITEM:item, CHARACTER|ITEM:object [, FIXEDSTRING:statsId, FIXEDSTRING:tag, INT:isEquiped])&lt;br /&gt;
Returns the first item in the inventory conforming to the filled in restraints.&lt;br /&gt;
&lt;br /&gt;
ItemIsInCharacterInventory(ITEM:item, CHARACTER:object)&lt;br /&gt;
Returns if the item is in the inventory of the character&lt;br /&gt;
&lt;br /&gt;
ItemIsInTrigger(ITEM:item, TRIGGER:trigger)&lt;br /&gt;
Check if item is in given trigger&lt;br /&gt;
&lt;br /&gt;
ItemGetStat(OUT FLOAT:statValue, ITEM:item, ITEMSTAT:statType)&lt;br /&gt;
Returns the current value of the stat (Weight, ...)&lt;br /&gt;
&lt;br /&gt;
ItemIsMoving(ITEM:item)&lt;br /&gt;
Returns if the item is moving or not.&lt;br /&gt;
&lt;br /&gt;
ItemIsFalling(ITEM:item)&lt;br /&gt;
Returns if the item is falling or not. (after teleport)&lt;br /&gt;
&lt;br /&gt;
ItemIsOpening(ITEM:item)&lt;br /&gt;
Returns if the item is opening or not.&lt;br /&gt;
&lt;br /&gt;
ItemIsClosing(ITEM:item)&lt;br /&gt;
Returns if the item is closing or not.&lt;br /&gt;
&lt;br /&gt;
ItemIsLocked(ITEM:item)&lt;br /&gt;
Returns if the item is locked or not.&lt;br /&gt;
&lt;br /&gt;
ItemIsMovable(ITEM:item)&lt;br /&gt;
Returns if the item is movable or not.&lt;br /&gt;
&lt;br /&gt;
ItemCanBeLockPicked(ITEM:item)&lt;br /&gt;
Returns if the item is can be opened by lockpicking.&lt;br /&gt;
&lt;br /&gt;
ItemIsOpen(ITEM:item)&lt;br /&gt;
Returns if the item is open or not.&lt;br /&gt;
&lt;br /&gt;
IsStoryItem(ITEM:item)&lt;br /&gt;
Returns if the item is a story item.&lt;br /&gt;
&lt;br /&gt;
ItemHasStatus(ITEM:item, STATUS:statusId)&lt;br /&gt;
Returns if the item has the status.&lt;br /&gt;
&lt;br /&gt;
ItemIsDestroyed(ITEM:item)&lt;br /&gt;
Returns if the item is destroyed.&lt;br /&gt;
&lt;br /&gt;
ItemGetTemplate(ITEM:item, OUT ITEMTEMPLATE:root)&lt;br /&gt;
Returns the roottemplate of the item.&lt;br /&gt;
&lt;br /&gt;
ItemGetSkillId(ITEM:item, OUT SKILL:root)&lt;br /&gt;
Returns the skillid of the item if it has one.&lt;br /&gt;
&lt;br /&gt;
ItemGetItemType(ITEM:item, OUT FIXEDSTRING:itemType)&lt;br /&gt;
Returns the itemtype of the item: common, unique, rare, ...&lt;br /&gt;
&lt;br /&gt;
ItemGetStatusSourceCharacter(ITEM:item, STATUS:statusId, OUT CHARACTER:source)&lt;br /&gt;
Get the source character of a status&lt;br /&gt;
&lt;br /&gt;
ItemGetStatusSourceItem(ITEM:item, STATUS:statusId, OUT ITEM:source)&lt;br /&gt;
Get the source item of a status&lt;br /&gt;
&lt;br /&gt;
ItemCanBeMoved(ITEM:item)&lt;br /&gt;
Returns if the item can be moved.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== TRIGGERS ==&lt;br /&gt;
&lt;br /&gt;
OnCharacterEvent(CHARACTER:character, STRING:eventName)&lt;br /&gt;
Thrown from scripts or story&lt;br /&gt;
&lt;br /&gt;
OnCharacterItemEvent(CHARACTER:character, ITEM:item, STRING:eventName)&lt;br /&gt;
Thrown from scripts or story&lt;br /&gt;
&lt;br /&gt;
OnCharacterCharacterEvent(CHARACTER:character, CHARACTER:character, STRING:eventName)&lt;br /&gt;
Thrown from scripts or story&lt;br /&gt;
&lt;br /&gt;
OnItemEvent(ITEM:item, STRING:eventName)&lt;br /&gt;
Thrown from scripts or story&lt;br /&gt;
&lt;br /&gt;
OnItemDestroyed(ITEM:item)&lt;br /&gt;
Thrown when an item is destroyed&lt;br /&gt;
&lt;br /&gt;
OnItemDestroying(ITEM:item)&lt;br /&gt;
Thrown when an item is being destroyed&lt;br /&gt;
&lt;br /&gt;
OnItemOpened(ITEM:item)&lt;br /&gt;
Thrown when an item is opened&lt;br /&gt;
&lt;br /&gt;
OnItemClosed(ITEM:item)&lt;br /&gt;
Thrown when an item is closed&lt;br /&gt;
&lt;br /&gt;
OnItemDropped(ITEM:item, STRING:itemTemplate)&lt;br /&gt;
Thrown when an item is dropped&lt;br /&gt;
&lt;br /&gt;
OnGlobalFlagSet(FIXEDSTRING:eventName)&lt;br /&gt;
Thrown when a global event is set&lt;br /&gt;
&lt;br /&gt;
OnGlobalFlagCleared(FIXEDSTRING:eventName)&lt;br /&gt;
Thrown when a global event is cleared&lt;br /&gt;
&lt;br /&gt;
OnCharacterFlagSet(FIXEDSTRING:eventName, CHARACTER:character)&lt;br /&gt;
Thrown when a dialog event is set on a character&lt;br /&gt;
&lt;br /&gt;
OnCharacterFlagCleared(FIXEDSTRING:eventName, CHARACTER:character)&lt;br /&gt;
Thrown when a dialog event is cleared on a character&lt;br /&gt;
&lt;br /&gt;
OnItemFlagSet(FIXEDSTRING:eventName, ITEM:item)&lt;br /&gt;
Thrown when a dialog event is set on an item&lt;br /&gt;
&lt;br /&gt;
OItemFlagCleared(FIXEDSTRING:eventName, ITEM:item)&lt;br /&gt;
Thrown when a dialog event is cleared on an item&lt;br /&gt;
&lt;br /&gt;
OnTimer(FIXEDSTRING:timerName)&lt;br /&gt;
Thrown when a timer has ended&lt;br /&gt;
&lt;br /&gt;
OnInit(-)&lt;br /&gt;
Thrown when the script is set&lt;br /&gt;
&lt;br /&gt;
OnLoaded(INT:major, INT:minor, INT:revision, INT:build)&lt;br /&gt;
Thrown when the script is loaded from the savegame&lt;br /&gt;
&lt;br /&gt;
OnShutdown(-)&lt;br /&gt;
Thrown when the character's script is removed&lt;br /&gt;
&lt;br /&gt;
OnVariableCleared(FIXEDSTRING:varName)&lt;br /&gt;
Thrown when this object's script variable is cleared from Osiris with ClearVarObject&lt;br /&gt;
&lt;br /&gt;
OnCombatStarted(CHARACTER:source, ITEM:source)&lt;br /&gt;
Thrown when the character entered a combat&lt;br /&gt;
&lt;br /&gt;
OnCombatSwitched(CHARACTER:source, ITEM:source)&lt;br /&gt;
Thrown when the character switch from one combat to another&lt;br /&gt;
&lt;br /&gt;
OnCombatEnded(CHARACTER:source, ITEM:source)&lt;br /&gt;
Thrown when the character left the combat&lt;br /&gt;
&lt;br /&gt;
OnTurn(CHARACTER:source, ITEM:source)&lt;br /&gt;
Thrown when the character's turn starts&lt;br /&gt;
&lt;br /&gt;
OnTurnEnded(CHARACTER:source, ITEM:source)&lt;br /&gt;
Thrown when the character's turn ended&lt;br /&gt;
&lt;br /&gt;
OnCharacterVitalityChanged(CHARACTER:character, FLOAT:percentage)&lt;br /&gt;
Thrown when the characters's vitality changed&lt;br /&gt;
&lt;br /&gt;
OnItemVitalityChanged(ITEM:item, FLOAT:percentage)&lt;br /&gt;
Thrown when the item's vitality changed&lt;br /&gt;
&lt;br /&gt;
OnAttackOfOpportunity(CHARACTER:target)&lt;br /&gt;
Thrown when the characters gets an attack of opportunity on an enemy&lt;br /&gt;
&lt;br /&gt;
OnDamage(DAMAGE:type, FLOAT:percentage, CHARACTER:source, ITEM:source)&lt;br /&gt;
Thrown when the object receives damage&lt;br /&gt;
&lt;br /&gt;
OnMiss(CHARACTER:source, ITEM:source, CHARACTER:target, ITEM:target)&lt;br /&gt;
Thrown when the character dodges something&lt;br /&gt;
&lt;br /&gt;
OnCriticalHit(CHARACTER:source, ITEM:source, CHARACTER:target, ITEM:target)&lt;br /&gt;
Thrown when the character is critical hit&lt;br /&gt;
&lt;br /&gt;
OnBlock(CHARACTER:source, ITEM:source, CHARACTER:target, ITEM:target)&lt;br /&gt;
Thrown when the character blocks something&lt;br /&gt;
&lt;br /&gt;
OnDie(CHARACTER:character, DAMAGE:type, CHARACTER:source, ITEM:source)&lt;br /&gt;
Thrown when the character dies&lt;br /&gt;
&lt;br /&gt;
OnCharacterStatusAttempt(CHARACTER:character, STATUS:status)&lt;br /&gt;
Thrown when the character attempts to gain a status&lt;br /&gt;
&lt;br /&gt;
OnCharacterStatusApplied(CHARACTER:character, STATUS:status)&lt;br /&gt;
Thrown when the character gains a status&lt;br /&gt;
&lt;br /&gt;
OnCharacterStatusRemoved(CHARACTER:character, STATUS:status)&lt;br /&gt;
Thrown when the character loses a status&lt;br /&gt;
&lt;br /&gt;
OnItemStatusAttempt(ITEM:item, STATUS:status)&lt;br /&gt;
Thrown when the item attempts to gain a status&lt;br /&gt;
&lt;br /&gt;
OnItemStatus(ITEM:item, STATUS:status)&lt;br /&gt;
Thrown when the item gains a status&lt;br /&gt;
&lt;br /&gt;
OnItemStatusRemoved(ITEM:item, STATUS:status)&lt;br /&gt;
Thrown when the item loses a status&lt;br /&gt;
&lt;br /&gt;
OnStatusCreateVisuals(STATUS:status)&lt;br /&gt;
Thrown when the item should create the visuals for this status&lt;br /&gt;
&lt;br /&gt;
OnStatusDestroyVisuals(STATUS:status)&lt;br /&gt;
Thrown when the item should destroy the visuals for this status&lt;br /&gt;
&lt;br /&gt;
OnSight(CHARACTER:character)&lt;br /&gt;
Thrown when the character sees another character&lt;br /&gt;
&lt;br /&gt;
OnLostSight(CHARACTER:character)&lt;br /&gt;
Thrown when the character doesn't see another character anymore&lt;br /&gt;
&lt;br /&gt;
OnUseItem(CHARACTER:source, ITEM:item)&lt;br /&gt;
Thrown when a character uses an item&lt;br /&gt;
&lt;br /&gt;
OnPickupItem(CHARACTER:source, ITEM:item)&lt;br /&gt;
Thrown when a character picks up an item&lt;br /&gt;
&lt;br /&gt;
OnCharacterMovedItem(CHARACTER:source, ITEM:item)&lt;br /&gt;
Thrown when a character moved an item&lt;br /&gt;
&lt;br /&gt;
OnItemEquipped(CHARACTER:source, ITEM:item)&lt;br /&gt;
Thrown when a character equips an item&lt;br /&gt;
&lt;br /&gt;
OnItemUnequipped(CHARACTER:source, ITEM:item)&lt;br /&gt;
Thrown when a character unequips an item&lt;br /&gt;
&lt;br /&gt;
OnIterateCharacter(CHARACTER:character, FIXEDSTRING:eventId)&lt;br /&gt;
Thrown by iterators&lt;br /&gt;
&lt;br /&gt;
OnIterateItem(ITEM:source, FIXEDSTRING:eventId)&lt;br /&gt;
Thrown by iterators&lt;br /&gt;
&lt;br /&gt;
OnIterateCount(FIXEDSTRING:eventId, INTEGER:Count)&lt;br /&gt;
Thrown by iterators after all iterations to inform you of the count.&lt;br /&gt;
&lt;br /&gt;
OnStoryOverride(-)&lt;br /&gt;
Throw when story overrides what the character was doing: teleport, movement, on/offstage&lt;br /&gt;
&lt;br /&gt;
OnTriggerEnter(CHARACTER:character, ITEM:item, FIXEDSTRING:eventId)&lt;br /&gt;
Thrown by a character or item entering an EventTrigger&lt;br /&gt;
&lt;br /&gt;
OnTriggerLeave(CHARACTER:character, ITEM:item, FIXEDSTRING:eventId)&lt;br /&gt;
Thrown by a character or item leaving an EventTrigger&lt;br /&gt;
&lt;br /&gt;
OnEnemyChanged(CHARACTER:character, CHARACTER:newEnemy)&lt;br /&gt;
Thrown when the character's currentenemy changes&lt;br /&gt;
&lt;br /&gt;
OnTalentUnlocked(CHARACTER:character, TALENT:newTalent)&lt;br /&gt;
Thrown when the character unlocks a new talent&lt;br /&gt;
&lt;br /&gt;
OnCharacterClassChanged(CHARACTER:character, FIXEDSTRING:class)&lt;br /&gt;
Thrown when the character changes class in the character creation screen&lt;br /&gt;
&lt;br /&gt;
OnCharacterCreationStarted(CHARACTER:character, TRIGGER:creationPoint)&lt;br /&gt;
Thrown when the character creation has started, and gives where the character should walk to&lt;br /&gt;
&lt;br /&gt;
OnCharacterCreationStopped(CHARACTER:character)&lt;br /&gt;
Thrown when the character creation has stopped&lt;br /&gt;
&lt;br /&gt;
OnFunction(FIXEDSTRING:functionName)&lt;br /&gt;
Throws an event on itself with the functionName. This is to fake function calls &lt;br /&gt;
&lt;br /&gt;
OnSkillCast(CHARACTER:character, SKILL_ID:skillID)&lt;br /&gt;
Thrown when the character casts a skill&lt;br /&gt;
&lt;br /&gt;
OnSkillCombatComment(CHARACTER:character, SKILL_ID:skillID)&lt;br /&gt;
Thrown when the character needs to make a comment&lt;br /&gt;
&lt;br /&gt;
OnCharacterUsedSkillOnMe(CHARACTER:character, SKILL_ID:skillID)&lt;br /&gt;
Thrown when you are hit by a skill from a character&lt;br /&gt;
&lt;br /&gt;
OnItemUnlocked(ITEM: item, CHARACTER:character, ITEM:key)&lt;br /&gt;
Thrown when an item gets unlocked by a character.&lt;br /&gt;
&lt;br /&gt;
OnAutomatedDialogEnded(STRING:dialogName, INT:instanceID)&lt;br /&gt;
Thrown when a automated dialog is ended for this speaker&lt;br /&gt;
&lt;br /&gt;
OnAutomatedDialogStarted(STRING:dialogName, INT:instanceID)&lt;br /&gt;
Thrown when a automated dialog is started for this speaker&lt;br /&gt;
&lt;br /&gt;
OnDialogEnded(STRING:dialogName, INT:instanceID)&lt;br /&gt;
Thrown when a dialog is ended for this speaker&lt;br /&gt;
&lt;br /&gt;
OnCrimeSensibleAction(INT:IsPrimary; FIXEDSTRING:regionID, INT:crimeID, FIXEDSTRING:reactionName, STRING:primaryDialog, CHARACTER:criminal1, CHARACTER:criminal2, CHARACTER:criminal3, CHARACTER:criminal4)&lt;br /&gt;
Thrown when a character needs to perform a sensible action against criminals&lt;br /&gt;
&lt;br /&gt;
OnCrimeInterrogationRequest(FIXEDSTRING:regionID, INT:crimeID, CHARACTER:criminal1, CHARACTER:criminal2, CHARACTER:criminal3, CHARACTER:criminal4)&lt;br /&gt;
Thrown when a character needs to perform an interrogation against criminals&lt;br /&gt;
&lt;br /&gt;
OnCrimeInvestigate(INT:crimeID; FLOAT3:CrimePosition)&lt;br /&gt;
One NPC investigates a crimescene&lt;br /&gt;
&lt;br /&gt;
OnCrimeAlarmed(INT:crimeID; FLOAT3:CrimePosition)&lt;br /&gt;
All NPCs in a crimearea start looking around.&lt;br /&gt;
&lt;br /&gt;
OnCrimeReturnToNormal(-)&lt;br /&gt;
Investigation or Alarm timed out.&lt;br /&gt;
&lt;br /&gt;
OnCrimeAborted(-)&lt;br /&gt;
The game interrupted the sensible action of this NPC.&lt;br /&gt;
&lt;br /&gt;
OnSplineControlPointReached(INT:Index, INT:EndReached, STRING:EventString)&lt;br /&gt;
Thrown when a character reached a spline node.&lt;br /&gt;
&lt;br /&gt;
OnFinishCalculationAi(-)&lt;br /&gt;
Thrown when the calculation of the AI is finished.&lt;br /&gt;
&lt;br /&gt;
OnGrenadeLand(INT:hitObstacle, CHARACTER:caster)&lt;br /&gt;
Thrown when the grenades lands&lt;br /&gt;
&lt;br /&gt;
FetchCharacterApplyStatusData(LIST&amp;lt;STATUS&amp;gt;:removeStatuses, STATUS:applyStatus, INT:turns; CHARACTER:character, STATUS:status)&lt;br /&gt;
Fetch from script which statuses to remove and apply.&lt;br /&gt;
&lt;br /&gt;
FetchItemApplyStatusData(LIST&amp;lt;STATUS&amp;gt;:removeStatuses, STATUS:applyStatus, INT:turns; ITEM:item, STATUS:status)&lt;br /&gt;
Fetch from script which statuses to remove and apply.&lt;br /&gt;
&lt;br /&gt;
FetchItemSkillOnDamage(INT:hasSkill, SKILL_ID:skillID, INT:casterLevel; INT:damage, DAMAGE_TYPE:damageType)&lt;br /&gt;
Fetch from script what skill to execute on damage.&lt;br /&gt;
&lt;br /&gt;
OnActivate(-)&lt;br /&gt;
Thrown when a character/item activates&lt;br /&gt;
&lt;br /&gt;
OnDeactivate(-)&lt;br /&gt;
Thrown when a character/item deactivates&lt;br /&gt;
&lt;br /&gt;
OnCharacterUsedSourcePoint(CHARACTER:character)&lt;br /&gt;
Thrown when a character uses a source point&lt;br /&gt;
&lt;br /&gt;
OnSkillAdded(CHARACTER:character, SKILL_ID:skillId, INT:learned)&lt;br /&gt;
Thrown when a character learns a skill&lt;br /&gt;
&lt;br /&gt;
OnSkillActivated(CHARACTER:character, SKILL_ID:skillId)&lt;br /&gt;
Thrown when a character activates (=adds to memory) a skill&lt;br /&gt;
&lt;br /&gt;
OnSkillDeactivated(CHARACTER:character, SKILL_ID:skillId)&lt;br /&gt;
Thrown when a character deactivates (=removes from memory) a skill&lt;br /&gt;
&lt;br /&gt;
OnBetterReactionFound(FIXEDSTRING:reactionName)&lt;br /&gt;
Thrown when the reaction is interrupted by another reaction&lt;br /&gt;
&lt;br /&gt;
OnNoReactionFound(-)&lt;br /&gt;
Thrown when the reaction is interrupted because no reaction is valid&lt;br /&gt;
&lt;br /&gt;
OnScriptDisabled(-)&lt;br /&gt;
Thrown when the reaction is interrupted because the scriptcontroller is disabled&lt;br /&gt;
&lt;br /&gt;
OnManualInterrupt(FIXEDSTRING:reactionName)&lt;br /&gt;
Thrown when the reaction is interrupted using the interrupt action&lt;br /&gt;
&lt;br /&gt;
OnException(-)&lt;br /&gt;
Thrown when the reaction is interrupted by an exception&lt;br /&gt;
&lt;br /&gt;
OnMovementFailed(FLOAT3:targetPos)&lt;br /&gt;
Thrown when the reaction is interrupted by a move action failing&lt;br /&gt;
&lt;br /&gt;
OnItemFlagShared(FIXEDSTRING:eventName, ITEM:item, INT:newValue)&lt;br /&gt;
Thrown when a dialog event is shared with an item&lt;br /&gt;
&lt;br /&gt;
OnCharacterFlagShared(FIXEDSTRING:eventName, CHARACTER:character, INT:newValue)&lt;br /&gt;
Thrown when a dialog event is shared with a character&lt;br /&gt;
&lt;br /&gt;
OnItemOffStageChanged(CHARACTER:character)&lt;br /&gt;
Thrown when a character is set on/off stage&lt;br /&gt;
&lt;br /&gt;
OnCharacterOffStageChanged(ITEM:item)&lt;br /&gt;
Thrown when a item is set on/off stage&lt;br /&gt;
&lt;br /&gt;
OnCharacterTeleported(CHARACTER:target, CHARACTER:cause, FLOAT3:oldPosition, FLOAT3:newPosition, SKILL_ID:skillId)&lt;br /&gt;
Thrown when a character gets teleported with a teleport skill&lt;br /&gt;
&lt;br /&gt;
OnCombatTick(-)&lt;br /&gt;
Thrown when this object ticks in combat. Only thrown for objects that don't get a turn.&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Scripting_in_New_Talents,_Attributes,_and_Combat_Abilities&amp;diff=3261</id>
		<title>Scripting in New Talents, Attributes, and Combat Abilities</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Scripting_in_New_Talents,_Attributes,_and_Combat_Abilities&amp;diff=3261"/>
		<updated>2017-09-25T16:49:49Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: Created page with &amp;quot;We can add new talents, attributes, and combat abilities through story scripting! Naturally, this is a workaround, so it does not use existing UI or anything. The basic idea i...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We can add new talents, attributes, and combat abilities through story scripting! Naturally, this is a workaround, so it does not use existing UI or anything. The basic idea is a story script that on some kind of trigger, check if you have available talent, ability, or attribute points, and if you do, then cause some kind of effect and remove these points. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;IF&lt;br /&gt;
CharacterUsedItemTemplate((CHARACTERGUID)_Player,&amp;quot;TALENTBOOK_MetaMagic_31ef33be-86dd-4584-90b7-9981bab237d9&amp;quot;,_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetTalentPoints(_Player,(INTEGER)_Int)&lt;br /&gt;
AND&lt;br /&gt;
_Int &amp;gt; 0&lt;br /&gt;
THEN&lt;br /&gt;
CharacterAddTalentPoint(_Player,-1);&lt;br /&gt;
CharacterAddSkill(_Player,&amp;quot;Target_MetaMagic&amp;quot;);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This talent would add a meta-magic skill. Naturally, this would require additional scripting to achieve talent-level effects.&lt;br /&gt;
&lt;br /&gt;
A more, conventional, passive talent would probably set a global variable in a character's script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;IF&lt;br /&gt;
CharacterUsedItemTemplate((CHARACTERGUID)_Player,&amp;quot;TALENTBOOK_WeaponMaster_31ef33be-86dd-4584-90b7-9981bab237d9&amp;quot;,_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetTalentPoints(_Player,(INTEGER)_Int)&lt;br /&gt;
AND&lt;br /&gt;
_Int &amp;gt; 0&lt;br /&gt;
THEN&lt;br /&gt;
CharacterAddTalentPoint(_Player,-1);&lt;br /&gt;
SetVarInteger(_Player,&amp;quot;WeaponMaster&amp;quot;,1);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, the following scripting inside Player.charScript would allow for equipping weapons for 0 AP once per turn:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;EVENT QuickHands&lt;br /&gt;
VARS&lt;br /&gt;
FLOAT:_Weight&lt;br /&gt;
ITEM:_Item&lt;br /&gt;
ON&lt;br /&gt;
OnItemEquipped(__Me,_Item)&lt;br /&gt;
ACTIONS&lt;br /&gt;
&lt;br /&gt;
IF &amp;quot;c1&amp;amp;c2&amp;quot;&lt;br /&gt;
IsEqual(%WeaponMaster, 1)&lt;br /&gt;
ItemGetStat(_Weight,_Item,Weight)&lt;br /&gt;
THEN&lt;br /&gt;
IF &amp;quot;c1|c2|c3|c4|c5|c6|c7|c8|c9|c10|c11|c12|c13&amp;quot;&lt;br /&gt;
IsEqual(_Weight,1001) // changed all weapon weights to end in 1 for unique weight values to reference. Yes, really.&lt;br /&gt;
IsEqual(_Weight,501)&lt;br /&gt;
IsEqual(_Weight,2501)&lt;br /&gt;
IsEqual(_Weight,2502)&lt;br /&gt;
IsEqual(_Weight,2002)&lt;br /&gt;
IsEqual(_Weight,3001)&lt;br /&gt;
IsEqual(_Weight,3501)&lt;br /&gt;
IsEqual(_Weight,5001)&lt;br /&gt;
IsEqual(_Weight,6001)&lt;br /&gt;
IsEqual(_Weight,6002)&lt;br /&gt;
IsEqual(_Weight,6003)&lt;br /&gt;
IsEqual(_Weight,3003)&lt;br /&gt;
IsEqual(_Weight,1999)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterApplyStatus(__Me,FASTSWITCH,-2,1) // custom status which immediately grants 1 AP. This cannot be reapplied by equipping another weapon until next turn&lt;br /&gt;
ENDIF&lt;br /&gt;
ENDIF&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard trigger for this sort of thing will probably be &amp;quot;Talent Books.&amp;quot; But you could also create special trainers, quest rewards, or what have you, to grant custom talents, abilities, or attributes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;IF&lt;br /&gt;
CharacterUsedItemTemplate((CHARACTERGUID)_Player,&amp;quot;SKILLBOOK_NewAbility_31ef33be-86dd-4584-90b7-9981bab237d9&amp;quot;,_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetAbilityPoints(_Player,(INTEGER)_Int)&lt;br /&gt;
AND&lt;br /&gt;
_Int &amp;gt; 0&lt;br /&gt;
THEN&lt;br /&gt;
CharacterAddAbilityPoint(_Player,-1);&lt;br /&gt;
SetVarInteger(_Player,&amp;quot;NewAbilityAdd&amp;quot;,1);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you'd trigger some kind of ability value check in your character script. This could also be all done in story scripting too. You'd have to script some kind of effect that goes with this ability, and if you wanted to attach skills to it, you might have to make custom skillbooks which check the ability variable before granting the skill. Unfortunately, you will still have to use existing ability trees for the actual skilldata entries to sort them in the skill UI and provide attribute scaling, but your custom ability could do all kinds of things to affect your new skills behind the scenes.&lt;br /&gt;
&lt;br /&gt;
The same thing can be done with attributes with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;CharacterGetAttributePoints(_Player,(INTEGER)_Int)&lt;br /&gt;
AND&lt;br /&gt;
_Int &amp;gt; 0&lt;br /&gt;
THEN&lt;br /&gt;
CharacterAddAttributePoint(_Player,-1);&lt;br /&gt;
SetVarInteger(_Player,&amp;quot;NewAttributeAdd&amp;quot;,1);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The one thing that doesn't appear possible is adding new civil abilities, because there doesn't appear to be civil ability checks or calls.&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Community_page_submission&amp;diff=3260</id>
		<title>Community page submission</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Community_page_submission&amp;diff=3260"/>
		<updated>2017-09-25T16:36:00Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;b&amp;gt;&lt;br /&gt;
Welcome to the community page submission section.&amp;lt;br /&amp;gt;&lt;br /&gt;
First and foremost: thanks to all of you from everyone at Larian Studios!&amp;lt;br /&amp;gt;&lt;br /&gt;
Without your love and feedback, we wouldn't be where we are today.&lt;br /&gt;
&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
That being said, let's do our best to keep this wiki just as lovely as you guys:&amp;lt;br /&amp;gt;&lt;br /&gt;
# To add your page to the main wiki pages, please add it to the list below.&lt;br /&gt;
# Once our moderators get a chance, they'll review the submissions and move approved pages to the appropriate location on the [[Community editor guides | Editor Guides]] and/or [[Community tutorials | Community Tutorials]] section.&lt;br /&gt;
# We'll leave the page link a couple of days on here with an approval stamp and a link to its new location, to give the editor a chance to find out where his/her page went.&lt;br /&gt;
# We love you all very much, but we do not tolerate any misbehavior. Please refrain from using foul language, messing with other people's pages,...&lt;br /&gt;
# This wiki follows the general open format. Anyone is allowed to edit a page. View an edit to your page as interest in your content, not as criticism.&lt;br /&gt;
# But do try to avoid editing someone else's pages before it has been approved and moved to the main sections, unless of course you have the permission to do so from the original editor.&lt;br /&gt;
# As always, stay awesome [[File: heart.png | 32px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Example Submission|Example submission]]&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Pak Extractor Guide|Pak Extractor Guide]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community editor guides|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Tutorial - Implementing a Basic Quest|Tutorial - Implementing a Basic Quest]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[NPC Patrols|NPC Patrols]]&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Basic Character Creation]]&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Character and Item Script Triggers, Calls, and Queries]]&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Scripting in New Talents, Attributes, and Combat Abilities]]&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Pak_Extractor_Guide&amp;diff=3236</id>
		<title>Pak Extractor Guide</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Pak_Extractor_Guide&amp;diff=3236"/>
		<updated>2017-09-24T16:44:28Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;While most of the game can be accessed through the editor, a few features remain outside of the editor. To access these, you'll need to extract the game files. You can do this using Norbyte's Extractor Tool, found [https://s3.eu-central-1.amazonaws.com/nb-stor/dos/ExportTool/ExportTool-v1.8.4.zip here].&lt;br /&gt;
&lt;br /&gt;
After downloading this tool, open it, and go to the &amp;quot;PAK / LSV Tools&amp;quot; tab. Select .pak file in your game data folder (usually SteamApps/common/Divinity Original Sin 2/Data), and a location to extract it to (not into the game data folder itself.) Most pertinent information will be found in Shared.pak.&lt;br /&gt;
&lt;br /&gt;
If you're looking for character creation presets, you'll find them in Shared's extracted Mods/Shared/CharacterCreation folder. Stats that are not currently available in the editor are found in Public/Shared/Stats/Generated.&lt;br /&gt;
&lt;br /&gt;
[[File:Pak Extractor.jpg|none|Norbyte's Pak Extractor]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Character_and_Item_Script_Triggers,_Calls,_and_Queries&amp;diff=3235</id>
		<title>Character and Item Script Triggers, Calls, and Queries</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Character_and_Item_Script_Triggers,_Calls,_and_Queries&amp;diff=3235"/>
		<updated>2017-09-24T01:25:23Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: Created page with &amp;quot;This is a list of almost every character and item script event trigger, call, and query. An event is what triggers the script, and always begin with ''On''. Queries provide in...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of almost every character and item script event trigger, call, and query. An event is what triggers the script, and always begin with ''On''. Queries provide information and are always inside an ''IF'' or ''CHECK.'' Calls are actions that always after THEN.&lt;br /&gt;
&lt;br /&gt;
CharScript/ItemScript Functions&lt;br /&gt;
&lt;br /&gt;
== CALLS ==&lt;br /&gt;
&lt;br /&gt;
Set(OUT OBJECT:variable, OBJECT:value)&lt;br /&gt;
Set the value of a variable&lt;br /&gt;
&lt;br /&gt;
SetVar(CHARACTER|ITEM:object, FIXEDSTRING:variableName, OBJECT:value)&lt;br /&gt;
Set the value of a global variable&lt;br /&gt;
&lt;br /&gt;
Cast(OUT OBJECT variable, OBJECT value)&lt;br /&gt;
Casts the value to the variable&lt;br /&gt;
&lt;br /&gt;
Print(OUT STRING:output, STRING:text)&lt;br /&gt;
Prints the text to the output with possible parameters: [1], [2], ...&lt;br /&gt;
&lt;br /&gt;
Add(INOUT INT|FLOAT|FLOAT3:variable, INT|FLOAT|FLOAT3:value)&lt;br /&gt;
Adds both values and stores it in the first variable&lt;br /&gt;
&lt;br /&gt;
Subtract(INOUT INT|FLOAT|FLOAT3:variable, INT|FLOAT|FLOAT3:value)&lt;br /&gt;
Subtracts both values and stores it in the first variable&lt;br /&gt;
&lt;br /&gt;
Multiply(INOUT INT|FLOAT|FLOAT3:variable, INT|FLOAT:value)&lt;br /&gt;
Multiplies both values and stores it in the first variable&lt;br /&gt;
&lt;br /&gt;
Divide(INOUT INT|FLOAT|FLOAT3:variable, INT|FLOAT:value)&lt;br /&gt;
Divides both values and stores it in the first variable&lt;br /&gt;
&lt;br /&gt;
Abs(INOUT INT|FLOAT:variable)&lt;br /&gt;
Takes the absolute value of a variable&lt;br /&gt;
&lt;br /&gt;
Clamp(INOUT INT|FLOAT:variable, INT|FLOAT:min, INT|FLOAT:max)&lt;br /&gt;
Clamps a variable between min and max&lt;br /&gt;
&lt;br /&gt;
GetRandom(OUT OBJECT:variable, OBJECT:value, OBJECT:value, OBJECT:value)&lt;br /&gt;
Fills in the variable with random one of the values.&lt;br /&gt;
&lt;br /&gt;
GetWeightedRandom(OUT OBJECT:variable, OBJECT:value, INT|FLOAT:weight, ...)&lt;br /&gt;
Gets a weighted random of the given values!&lt;br /&gt;
&lt;br /&gt;
GetRandomBetween(OUT INT|FLOAT:variable, INT|FLOAT:min, INT|FLOAT:max)&lt;br /&gt;
Gets a random value between min and max (both included)&lt;br /&gt;
&lt;br /&gt;
GetRandomPositionInTrigger(OUT FLOAT3:variable, TRIGGER:areaTrigger)&lt;br /&gt;
Get a random position in a trigger area&lt;br /&gt;
&lt;br /&gt;
GetElement(OUT OBJECT:variable, INT:index, OBJECT:value, OBJECT:value, OBJECT:value)&lt;br /&gt;
Fills in the variable with the index one of the values (starting from 0)&lt;br /&gt;
&lt;br /&gt;
SetPriority(FIXEDSTRING:reactionName, INT:priority)&lt;br /&gt;
Changes the priority of a reaction. Priority 0 and below are not executed!&lt;br /&gt;
&lt;br /&gt;
DelayReaction(FIXEDSTRING:reactionName, FLOAT:timeInSeconds)&lt;br /&gt;
The reaction will not be chosen for the specified time&lt;br /&gt;
&lt;br /&gt;
SetScriptFrame(CHARACTER:character, FIXEDSTRING:frame)&lt;br /&gt;
Sets the scriptframe on the character.&lt;br /&gt;
&lt;br /&gt;
ClearScriptFrame(CHARACTER:character)&lt;br /&gt;
Clears the scriptframe on the character.&lt;br /&gt;
&lt;br /&gt;
Goto(FIXEDSTRING:labelName)&lt;br /&gt;
Jumps to the label&lt;br /&gt;
&lt;br /&gt;
GotoIfEqual(OBJECT:variable, OBJECT:value, FIXEDSTRING:labelName)&lt;br /&gt;
Jumps to the label if the 2 objects are equal&lt;br /&gt;
&lt;br /&gt;
GotoRand(FIXEDSTRING:labelName, FIXEDSTRING:labelName, FIXEDSTRING:labelName, FIXEDSTRING:labelName, FIXEDSTRING:labelName)&lt;br /&gt;
Jumps to a random label in the list&lt;br /&gt;
&lt;br /&gt;
CreatePuddleAt(GAMEOBJECT|FLOAT3:target, SURFACE:type, INT:cellAmountMin, INT:cellAmountMax, INT:growAmountMin, INT:growAmountMax, )&lt;br /&gt;
Spawn a puddle at the target's position for a certain lifetime (in turns)&lt;br /&gt;
&lt;br /&gt;
CreateSurfaceAt(GAMEOBJECT|FLOAT3:target, SURFACE:type, FLOAT:radius, INT:lifeTime[, GAMEOBJECT:owner])&lt;br /&gt;
Spawn a surface at the target's position for a certain lifetime (in turns)&lt;br /&gt;
&lt;br /&gt;
CreateSurfaceInPolygon(GAMEOBJECT:owner, SURFACE:type, FLOAT:duration, FLOAT:growTimer, INT:growStep, GAMEOBJECT|FLOAT3:point1, GAMEOBJECT|FLOAT3:point2, GAMEOBJECT|FLOAT3:point3, ...)&lt;br /&gt;
Spawn a polygon surface at the target's position. Grows &amp;lt;growStep&amp;gt; every &amp;lt;growTimer&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CreateSurfaceInAreaTrigger(GAMEOBJECT:owner, SURFACE:type, FLOAT:duration, FLOAT:growTimer, INT:growStep, TRIGGER:areaTrigger)&lt;br /&gt;
Spawn a surface within &amp;lt;areaTrigger&amp;gt;. Grows &amp;lt;growStep&amp;gt; every &amp;lt;growTimer&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CreateConeSurfaceAt(GAMEOBJECT|FLOAT3:start, GAMEOBJECT|FLOAT3:target, SURFACE:type, FLOAT:radius, FLOAT:angle, FLOAT:duration)&lt;br /&gt;
Spawn a Cone surface at the target's position&lt;br /&gt;
&lt;br /&gt;
PlayEffectAt(GAMEOBJECT|FLOAT3:target, STRING:effectName)&lt;br /&gt;
Plays an effect at the target's position&lt;br /&gt;
&lt;br /&gt;
PlayLoopEffectAt(OUT INT64:effectHandle, GAMEOBJECT|FLOAT3:target, STRING:effectName)&lt;br /&gt;
Plays an effect at the target's position&lt;br /&gt;
&lt;br /&gt;
ExplodeAt(GAMEOBJECT|FLOAT3:target, SKILL:projectileSkill, [INT:casterLevel=-1, CHARACTER|ITEM:cause])&lt;br /&gt;
Trigger an explosion of a projectile skill at the target's position. The cause will trigger NPC behavior as if the cause casted the projectile&lt;br /&gt;
&lt;br /&gt;
DisplayText(CHARACTER|ITEM:target, FIXEDSTRING:text, FLOAT:timeInSeconds)&lt;br /&gt;
Displays text above the character/item for a certain amount of time. It will replace the current text, including dialogtext&lt;br /&gt;
&lt;br /&gt;
DisplayCombatInfoText(CHARACTER|ITEM:target, FIXEDSTRING:text, FLOAT:timeInSeconds)&lt;br /&gt;
Displays text above the character/item for a certain amount of time. It will replace the current text, including dialogtext&lt;br /&gt;
&lt;br /&gt;
StatusText(CHARACTER|ITEM:target, FIXEDSTRING:text)&lt;br /&gt;
Adds statustext above the character/item for a short amount of time. Will not replace texts or dialogtexts&lt;br /&gt;
&lt;br /&gt;
DebugText(CHARACTER|ITEM:target, STRING:text)&lt;br /&gt;
Adds debugtext above the character/item for a short amount of time.&lt;br /&gt;
&lt;br /&gt;
CombatLogText(CHARACTER|ITEM:target, FIXEDSTRING:text, INT:filterID, INT:broadcastID)&lt;br /&gt;
Adds combatlog text inside the combat log window. Color-/SizeFormatting should already be applied, if not color and size of the string will be NORMAL. filterID determines what filter shows/hides the text. broadcastID determines who will be able to see the message (0 hearingrange. 1 party. 2 all)&lt;br /&gt;
&lt;br /&gt;
Log(STRING:text, ...)&lt;br /&gt;
Log's the the scriptlog. (for debugging purposes)&lt;br /&gt;
&lt;br /&gt;
Output(STRING:text, ...)&lt;br /&gt;
Pass text with optional parameters to the output panel (e.g. Output(&amp;quot;An int [1]&amp;quot;, INT:10))&lt;br /&gt;
&lt;br /&gt;
Assert(STRING:text, ...)&lt;br /&gt;
Pass text with optional parameters to display as an assert message (e.g. Assert(&amp;quot;This number is wrong: [1]&amp;quot;, INT:666))&lt;br /&gt;
&lt;br /&gt;
Label(FIXEDSTRING:name)&lt;br /&gt;
Marks this line as a label where Goto actions can jump to&lt;br /&gt;
&lt;br /&gt;
StartTimer(FIXEDSTRING:timerName, FLOAT:timeInSeconds, INT:repeatCount)&lt;br /&gt;
Start a timer which will throw the timer event. Set repeatcount &amp;lt; 0 for a permanent timer.&lt;br /&gt;
&lt;br /&gt;
StopTimer(FIXEDSTRING:timerName)&lt;br /&gt;
Stop a timer which will throw the timer event&lt;br /&gt;
&lt;br /&gt;
DialogStart(OUT INT:instanceId, STRING:dialog, CHARACTER|ITEM:target, CHARACTER|ITEM:target, CHARACTER|ITEM:target, CHARACTER|ITEM:target)&lt;br /&gt;
Start a dialog between the targets&lt;br /&gt;
&lt;br /&gt;
DialogRequestStop(CHARACTER|ITEM:speaker, STRING:dialog)&lt;br /&gt;
Stops a certain dialog on a certain speaker&lt;br /&gt;
&lt;br /&gt;
Check(-)&lt;br /&gt;
Reevaluate the conditions in the CHECK section of this reaction&lt;br /&gt;
&lt;br /&gt;
Reset(-)&lt;br /&gt;
Resets the current reaction. It will start from the beginning again&lt;br /&gt;
&lt;br /&gt;
Interrupt(FIXEDSTRING:reactionName)&lt;br /&gt;
Interrupt the reaction.&lt;br /&gt;
&lt;br /&gt;
GlobalSetEvent(FIXEDSTRING:eventName)&lt;br /&gt;
Sets a global event. Scripts and Story can catch it.&lt;br /&gt;
&lt;br /&gt;
GlobalClearEvent(FIXEDSTRING:eventName)&lt;br /&gt;
Clears a global event. Scripts and Story can catch it.&lt;br /&gt;
&lt;br /&gt;
StopLoopEffect(INT64:fxHandle)&lt;br /&gt;
Stops a looping effect&lt;br /&gt;
&lt;br /&gt;
IterateItems(FIXEDSTRING:eventname[, FIXEDSTRING:tag])&lt;br /&gt;
Launch iterate event for each item. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
IterateItemsNear(GAMEOBJECT:source, FLOAT:radius, FIXEDSTRING:eventname[, FIXEDSTRING:tag])&lt;br /&gt;
Launch iterate event for each item in range. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
IterateItemsOnObject(CHARACTER|ITEM:source, FIXEDSTRING:eventname[, FIXEDSTRING:tag])&lt;br /&gt;
Launch iterate event for each item standing on the source. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
IterateParty(FIXEDSTRING:eventname, [COMPARE:howTo, COMPAREFUNC:compareFunc, CHARACTER:partyMember, FIXEDSTRING:tag])&lt;br /&gt;
Launch iterate event for each member of all parties. If you pass a party member only members of that party will be considered. If you pass compare parameters, it will iterate over them in the requested order. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
IterateCharacters(FIXEDSTRING:eventname, [COMPARE:howTo, COMPAREFUNC:compareFunc, FIXEDSTRING:tag])&lt;br /&gt;
Launch iterate event for each character. If you pass compare parameters, it will iterate over them in the requested order. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
IterateCharactersNear(GAMEOBJECT:source, FLOAT:radius, FIXEDSTRING:eventname, [COMPARE:howTo, COMPAREFUNC:compareFunc, FIXEDSTRING:tag])&lt;br /&gt;
Launch iterate event for each character in range. If you pass compare parameters, it will iterate over them in the requested order. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
IterateCharactersOnObject(CHARACTER|ITEM:source, FIXEDSTRING:eventname, [COMPARE:howTo, COMPAREFUNC:compareFunc, FIXEDSTRING:tag])&lt;br /&gt;
Launch iterate event for each character standing on the source. If you pass compare parameters, it will iterate over them in the requested order. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
IterateCharactersInCombat(CHARACTER|ITEM:source, FIXEDSTRING:eventname, [COMPARE:howTo, COMPAREFUNC:compareFunc, FIXEDSTRING:tag])&lt;br /&gt;
Launch iterate event for each character in combat with the source. If you pass compare parameters, it will iterate over them in the requested order. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
IterateHostilesFor(CHARACTER:source, FIXEDSTRING:eventname, [COMPARE:howTo, COMPAREFUNC:compareFunc, FIXEDSTRING:tag])&lt;br /&gt;
Launch iterate event for each character who is targetting the source. If you pass compare parameters, it will iterate over them in the requested order. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
SpawnCharacter(OUT CHARACTER:result, CHARACTERTEMPLATE:rootTemplate, GAMEOBJECT|FLOAT3:position, INT:playSpawn, [INT:isSummon=0, CHARACTER:summonOwner=null, INT:overrideLevel=-1])&lt;br /&gt;
Spawns a character&lt;br /&gt;
&lt;br /&gt;
SpawnItem(ITEMTEMPLATE:rootTemplate,GAMEOBJECT|FLOAT3:position, OUT ITEM:result)&lt;br /&gt;
Spawns an item&lt;br /&gt;
&lt;br /&gt;
ShootLocalProjectile(SKILL:projectileSkill,CHARACTER|ITEM:source,FLOAT3:localOffset,FLOAT3:direction,[INT:casterLevel, CHARACTER|ITEM:caster])&lt;br /&gt;
Spawns a projectile at the source (with offset, can be null) shooting at the target&lt;br /&gt;
&lt;br /&gt;
ShootLocalProjectileAt(SKILL:projectileSkill,CHARACTER|ITEM:source,FLOAT3:localOffset,GAMEOBJECT|FLOAT3:target,[INT:casterLevel, CHARACTER|ITEM:caster])&lt;br /&gt;
Spawns a projectile at the source (with offset, can be null) shooting at the target&lt;br /&gt;
&lt;br /&gt;
ShootWorldProjectile(SKILL:projectileSkill,CHARACTER|ITEM:source,FLOAT3:worldPos,FLOAT3:direction,[INT:casterLevel])&lt;br /&gt;
Spawns a projectile at worldPos shooting at the target. Source can be null.&lt;br /&gt;
&lt;br /&gt;
ShootWorldProjectileAt(SKILL:projectileSkill,CHARACTER|ITEM:source,FLOAT3:worldPos,GAMEOBJECT|FLOAT3:target,[INT:casterLevel])&lt;br /&gt;
Spawns a projectile at worldPos shooting at the target. Source can be null.&lt;br /&gt;
&lt;br /&gt;
ShootLocalCone(SKILL:coneSkill,CHARACTER|ITEM:source,FLOAT3:localOffset,FLOAT3:direction,[INT:casterLevel, CHARACTER|ITEM:caster])&lt;br /&gt;
Shoots a cone from source (with offset, can be null) in a direction&lt;br /&gt;
&lt;br /&gt;
ShootLocalConeAt(SKILL:coneSkill,CHARACTER|ITEM:source,FLOAT3:localOffset,GAMEOBJECT|FLOAT3:target,[INT:casterLevel, CHARACTER|ITEM:caster])&lt;br /&gt;
Shoots a cone from source (with offset, can be null) at the target&lt;br /&gt;
&lt;br /&gt;
ShootWorldCone(SKILL:coneSkill,CHARACTER|ITEM:source,FLOAT3:worldPos,FLOAT3:direction,[INT:casterLevel])&lt;br /&gt;
Shoots a cone from worldPos in a direction. Source can be null.&lt;br /&gt;
&lt;br /&gt;
ShootWorldConeAt(SKILL:coneSkill,CHARACTER|ITEM:source,FLOAT3:worldPos,GAMEOBJECT|FLOAT3:target,[INT:casterLevel])&lt;br /&gt;
Shoots a cone from worldPos at the target. Source can be null.&lt;br /&gt;
&lt;br /&gt;
SetVisible(CHARACTER|ITEM:object, INT:visible)&lt;br /&gt;
Sets a character or item visible or not.&lt;br /&gt;
&lt;br /&gt;
RotateY(INOUT FLOAT3:vector, FLOAT:degrees)&lt;br /&gt;
Rotate the vector around the Y-axis for a certain angle (in degrees)&lt;br /&gt;
&lt;br /&gt;
SetHealth(CHARACTER|ITEM:target, FLOAT:procent)&lt;br /&gt;
Set a characters or items health on the given percentage. (percentage between 0 and 1)&lt;br /&gt;
&lt;br /&gt;
PlaySound(CHARACTER|ITEM:target, STRING:soundEvent)&lt;br /&gt;
Plays a sound event at the target&lt;br /&gt;
&lt;br /&gt;
PlayMusicForEveryone(STRING:musicEvent)&lt;br /&gt;
Plays a music event on all the clients&lt;br /&gt;
&lt;br /&gt;
PlayMusicOnCharacter(CHARACTER:target, STRING:musicEvent)&lt;br /&gt;
Plays a music event on a character for all peers (3D)&lt;br /&gt;
&lt;br /&gt;
PlayMusicForPeer(CHARACTER:target, STRING:musicEvent)&lt;br /&gt;
Plays a music event on the peer of the character&lt;br /&gt;
&lt;br /&gt;
PlayMusicForPeerWithInstrument(CHARACTER:target, CHARACTER:charInstrument, STRING:musicEvent)&lt;br /&gt;
Plays a music event on the peer of the character concated with _INSTRUMENT&lt;br /&gt;
&lt;br /&gt;
SetX(INOUT FLOAT3:vector, FLOAT|INT:value)&lt;br /&gt;
Sets the X component of the FLOAT3&lt;br /&gt;
&lt;br /&gt;
SetY(INOUT FLOAT3:vector, FLOAT|INT:value)&lt;br /&gt;
Sets the Y component of the FLOAT3&lt;br /&gt;
&lt;br /&gt;
SetZ(INOUT FLOAT3:vector, FLOAT|INT:value)&lt;br /&gt;
Sets the Z component of the FLOAT3&lt;br /&gt;
&lt;br /&gt;
SetAtmosphere(FIXEDSTRING:atmosphereTriggerUUID, FIXEDSTRING:atmosphere)&lt;br /&gt;
Changes the atmosphere of the trigger&lt;br /&gt;
&lt;br /&gt;
ResetAtmosphere(FIXEDSTRING:atmosphereTriggerUUID)&lt;br /&gt;
Resets the atmosphere of the trigger&lt;br /&gt;
&lt;br /&gt;
AddStatusInfluence(CHARACTER|ITEM:object, STATUS:statusId, FLOAT:strength, [FIXEDSTRING:extraData=&amp;quot;&amp;quot;], [INT:isWeather=1], [INT:force=1])&lt;br /&gt;
Adds the status influence strength on the object.&lt;br /&gt;
&lt;br /&gt;
RemoveStatusInfluence(CHARACTER|ITEM:object, STATUS:statusId, FLOAT:strength, [FIXEDSTRING:extraData=&amp;quot;&amp;quot;], [INT:isWeather=1])&lt;br /&gt;
Removes the status influence strength on the object.&lt;br /&gt;
&lt;br /&gt;
AddTemporaryStatusInfluence(CHARACTER|ITEM:source, CHARACTER|ITEM:object, STATUS:statusId, FLOAT:strength, [FIXEDSTRING:extraData=&amp;quot;&amp;quot;], [INT:isWeather=1])&lt;br /&gt;
Adds a temporary status influence strength on the object.. It will be gone in a few seconds if it's not set again&lt;br /&gt;
&lt;br /&gt;
CallFunction(FIXEDSTRING:functionName)&lt;br /&gt;
Calls a function with the ID&lt;br /&gt;
&lt;br /&gt;
SetMaterial(CHARACTER|ITEM:object, FIXEDSTRING:materialUUID, INT:duration, INT:applyOnBody, INT:applyOnArmor, INT:applyOnWeapon[)&lt;br /&gt;
Changes the material of the object for a set time (in turns), -1 is infinite. applyNormalMap: Copy the original materials normal map&lt;br /&gt;
&lt;br /&gt;
TeleportTo(CHARACTER|ITEM:object, GAMEOBJECT|FLOAT3:target, [INT:Force=0])&lt;br /&gt;
Teleport object to or near the target&lt;br /&gt;
&lt;br /&gt;
Transform(CHARACTER|ITEM:object, CHARACTERTEMPLATE|ITEMTEMPLATE:root [, FIXEDSTRING:fx, INT:replaceScripts=1, OUT FLOAT:currentHP])&lt;br /&gt;
Transforms &amp;lt;object&amp;gt; using &amp;lt;root&amp;gt;, returns &amp;lt;currentHP&amp;gt;, plays &amp;lt;fx&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
SaveGame(FIXEDSTRING:saveGameName)&lt;br /&gt;
Save the savegame with name &amp;lt;saveGameName&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LoadGame(FIXEDSTRING:saveGameName)&lt;br /&gt;
Load the savegame with name &amp;lt;saveGameName&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LoadLevel(FIXEDSTRING:levelName)&lt;br /&gt;
Load the level with name &amp;lt;levelName&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KillCombat(CHARACTER:character)&lt;br /&gt;
Kill all the enemies in the combat which contains &amp;lt;character&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SetTag(CHARACTER|ITEM:object, FIXEDSTRING:tag)&lt;br /&gt;
Sets the Tag on the Object&lt;br /&gt;
&lt;br /&gt;
ClearTag(CHARACTER|ITEM:object, FIXEDSTRING:tag)&lt;br /&gt;
Clears the Tag on the Object&lt;br /&gt;
&lt;br /&gt;
SetGlobalFlag(FIXEDSTRING:flagname)&lt;br /&gt;
Sets the Global Flag&lt;br /&gt;
&lt;br /&gt;
ClearGlobalFlag(FIXEDSTRING:flagname)&lt;br /&gt;
Clears the Global Flag&lt;br /&gt;
&lt;br /&gt;
SetFlag(CHARACTER|ITEM:object, FIXEDSTRING:flagname)&lt;br /&gt;
Sets the Flag on the Object&lt;br /&gt;
&lt;br /&gt;
ClearFlag(CHARACTER|ITEM:object, FIXEDSTRING:flagname)&lt;br /&gt;
Clears the Flag on the Object&lt;br /&gt;
&lt;br /&gt;
SetUserFlag(CHARACTER:object, FIXEDSTRING:flagname)&lt;br /&gt;
Sets the Flag on the user's characters&lt;br /&gt;
&lt;br /&gt;
ClearUserFlag(CHARACTER|ITEM:object, FIXEDSTRING:flagname)&lt;br /&gt;
Clears the Flag on the user's characters&lt;br /&gt;
&lt;br /&gt;
SetPartyFlag(CHARACTER|ITEM:object, FIXEDSTRING:flagname)&lt;br /&gt;
Sets the Flag on the party's characters&lt;br /&gt;
&lt;br /&gt;
ClearPartyFlag(CHARACTER|ITEM:object, FIXEDSTRING:flagname)&lt;br /&gt;
Clears the Flag on the party's characters&lt;br /&gt;
&lt;br /&gt;
StartVoiceBark(STRING:barkName, CHARACTER:character)&lt;br /&gt;
Start a voicebark on character&lt;br /&gt;
&lt;br /&gt;
ConfrontationDone(INT: CrimeID, CHARACTER:lead, CHARACTER:criminal, ...)&lt;br /&gt;
Resolve the crime with id CrimeID for the specified criminals&lt;br /&gt;
&lt;br /&gt;
CrimesceneInvestigationDone(CHARACTER:investigator)&lt;br /&gt;
Crimescene is considered investigated by this NPC, start looking for culprits&lt;br /&gt;
&lt;br /&gt;
ListAdd(LIST&amp;lt;OBJECT&amp;gt;:list, OBJECT:entry)&lt;br /&gt;
Add &amp;lt;entry&amp;gt; at the back of &amp;lt;list&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ListRemove(LIST&amp;lt;OBJECT&amp;gt;:list, INT:index)&lt;br /&gt;
Remove the entry at &amp;lt;index&amp;gt; of &amp;lt;list&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ListSet(LIST&amp;lt;OBJECT&amp;gt;:list, INT:index, OBJECT:entry)&lt;br /&gt;
Set the entry at &amp;lt;index&amp;gt; of &amp;lt;list&amp;gt; to &amp;lt;entry&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ListClear(LIST&amp;lt;OBJECT&amp;gt;:list)&lt;br /&gt;
Remove all entries of &amp;lt;list&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EndTurn(CHARACTER|ITEM:Target)&lt;br /&gt;
Ends the object's current turn&lt;br /&gt;
&lt;br /&gt;
SetCanFight(CHARACTER|ITEM:entity, INT:enabled[, INT:wholeGroup=0])&lt;br /&gt;
Enables/Disables the fact if the entity can fight. Optional for the whole group&lt;br /&gt;
&lt;br /&gt;
SetCanJoinCombat(CHARACTER|ITEM:entity, INT:enabled[, INT:wholeGroup=0])&lt;br /&gt;
Enables/Disables the fact if the entity can join combats. Optional for the whole group&lt;br /&gt;
&lt;br /&gt;
SetIsBoss(CHARACTER|ITEM:entity, INT:enabled)&lt;br /&gt;
Enables/Disables the fact if the entity is a boss.&lt;br /&gt;
&lt;br /&gt;
GetAIHintTriggers(OUT LIST&amp;lt;TRIGGER&amp;gt;:triggers[, [LIST]FIXEDSTRING:tags, INT:needsAllTags = -1)&lt;br /&gt;
Returns all AIHintAreaTriggers in &amp;lt;triggers&amp;gt;. Uses contraints if set.&lt;br /&gt;
&lt;br /&gt;
SetCombatTimeout(CHARACTER|ITEM:entity, FLOAT:timer)&lt;br /&gt;
Overwrites the entity's combat timeout check.&lt;br /&gt;
&lt;br /&gt;
ResetCombatTimeout(CHARACTER|ITEM:entity)&lt;br /&gt;
Resets the entity's combat timeout check.&lt;br /&gt;
&lt;br /&gt;
EnterCombat(CHARACTER|ITEM:source, CHARACTER|ITEM:target)&lt;br /&gt;
Enters combat with target&lt;br /&gt;
&lt;br /&gt;
LeaveCombat(CHARACTER|ITEM:source)&lt;br /&gt;
Leaves the combat&lt;br /&gt;
&lt;br /&gt;
SetFaction(CHARACTER|ITEM:target, FIXEDSTRING:faction)&lt;br /&gt;
Changes the faction of a character or item&lt;br /&gt;
&lt;br /&gt;
SetInvulnerable(CHARACTER|ITEM:target, INT:bool)&lt;br /&gt;
Makes the character or item invulnerable or not. (Allow damage)&lt;br /&gt;
&lt;br /&gt;
JumpToTurn(CHARACTER|ITEM:Target)&lt;br /&gt;
Jumps to targets turn (ends the current turn)&lt;br /&gt;
&lt;br /&gt;
Sleep(FLOAT:timeInSeconds)&lt;br /&gt;
Sleeps for a certain amount of time&lt;br /&gt;
&lt;br /&gt;
CharacterAttack(CHARACTER|ITEM|FLOAT3:target [,INT:alwaysHit])&lt;br /&gt;
Moves in weapon range and attacks the target&lt;br /&gt;
&lt;br /&gt;
CharacterAttackWithoutMove(CHARACTER|ITEM|FLOAT3:target [,INT:alwaysHit])&lt;br /&gt;
Attacks the target without checking weaponranges and without moving&lt;br /&gt;
&lt;br /&gt;
CharacterMoveTo(GAMEOBJECT|FLOAT3:target, [INT:running=0, INT:shouldArrive=0, INT:longPath=0, FLOAT:minDistance=1.5, FLOAT:maxDistance=minDistance+2.5])&lt;br /&gt;
Move to the target. Set shouldArrive to 1 if you want a guaranteed move. (teleports on fail) &lt;br /&gt;
&lt;br /&gt;
CharacterAiMove(FLOAT3:target, CHARACTER:targetCharacter, ITEM:targetItem)&lt;br /&gt;
Moves to the target, calculated by the AI. Should only be used with results from the AI!&lt;br /&gt;
&lt;br /&gt;
CharacterMoveInRange(GAMEOBJECT|FLOAT3:target, FLOAT:rangeMin, FLOAT:rangeMax, INT:running, [LIST&amp;lt;TRIGGER&amp;gt;:hintTriggers=null, INT:mustBeInTrigger=0])&lt;br /&gt;
Move within a certain range of target. Optionally pass hinttriggers in which the result is preferred/necessary.&lt;br /&gt;
&lt;br /&gt;
CharacterMoveInWeaponRange(GAMEOBJECT|FLOAT3:target, INT:running, [LIST&amp;lt;TRIGGER&amp;gt;:hintTriggers=null, INT:mustBeInTrigger=0])&lt;br /&gt;
Move within weapon range of target. Optionally pass hinttriggers in which the result is preferred/necessary.&lt;br /&gt;
&lt;br /&gt;
CharacterMoveInSkillRange(GAMEOBJECT|FLOAT3:target, SKILL:skill, INT:running, [LIST&amp;lt;TRIGGER&amp;gt;:hintTriggers=null, INT:mustBeInTrigger=0])&lt;br /&gt;
Move within skill range of target. Optionally pass hinttriggers in which the result is preferred/necessary.&lt;br /&gt;
&lt;br /&gt;
CharacterMoveOutOfSight(FLOAT:angle)&lt;br /&gt;
Move out of screen&lt;br /&gt;
&lt;br /&gt;
CharacterPlayAnimation(FIXEDSTRING:animation [, INT:exitOnFinish=1, INT:waitForCompletion=1])&lt;br /&gt;
Plays a certain animation ExitOnFinish means if the exit will kill itself after it was played (revert back to still) &lt;br /&gt;
&lt;br /&gt;
CharacterStopAnimation(-)&lt;br /&gt;
Stops all animations.&lt;br /&gt;
&lt;br /&gt;
CharacterPickUpItem(ITEM:item)&lt;br /&gt;
Moves close enough to the item if necessary and picks it up&lt;br /&gt;
&lt;br /&gt;
CharacterUseItem(ITEM:item [, INTEGER:LongPath])&lt;br /&gt;
Moves close enough to the item if necessary and uses it&lt;br /&gt;
&lt;br /&gt;
CharacterMoveItem(ITEM:item, INTEGER:ignoreWeight, INTEGER:ignoreAPCost [, INTEGER:ignoreDangerousSurfaces=1, INT:amount=-1, GAMEOBJECT|FLOAT3:destination])&lt;br /&gt;
Moves close enough to the item if necessary and moves it to the destination. Will try to find a destination if not supplied.&lt;br /&gt;
&lt;br /&gt;
CharacterAddSkill(CHARACTER:character, SKILL:skill[, INT:ShowNotification=0])&lt;br /&gt;
Adds &amp;lt;skill&amp;gt; to &amp;lt;character&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CharacterRemoveSkill(CHARACTER:character, SKILL:skill)&lt;br /&gt;
Removes &amp;lt;skill&amp;gt; from &amp;lt;character&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CharacterUseSkill(SKILL:skill, GAMEOBJECT|FLOAT3:target [, GAMEOBJECT|FLOAT3:target2, ITEM:skillItem, INT:ignoreHasSkill=0])&lt;br /&gt;
Cast a skill&lt;br /&gt;
&lt;br /&gt;
CharacterAppearAt(GAMEOBJECT|FLOAT3:target, INT:playspawn)&lt;br /&gt;
Appear at the target&lt;br /&gt;
&lt;br /&gt;
CharacterAppearOutOfSightTo(GAMEOBJECT:target, FLOAT:angle, INT:playspawn)&lt;br /&gt;
Appears out of sight to the players from a certain angle while being able to reach target&lt;br /&gt;
&lt;br /&gt;
CharacterAppearOnTrailOutOfSightTo(CHARACTER:target, FLOAT:angle, INT:playspawn)&lt;br /&gt;
Appears out of sight to the players, on its previous locations, from a certain angle while being able to reach target&lt;br /&gt;
&lt;br /&gt;
CharacterDisappear(FLOAT:angle[, INTEGER:isRunning=0])&lt;br /&gt;
Move out of screen and go of stage, will run if &amp;lt;isRunning&amp;gt; is not 0&lt;br /&gt;
&lt;br /&gt;
CharacterSetOffStage(-)&lt;br /&gt;
Set Off Stage&lt;br /&gt;
&lt;br /&gt;
CharacterSetOnStage(-)&lt;br /&gt;
Set On Stage&lt;br /&gt;
&lt;br /&gt;
CharacterLookAt(GAMEOBJECT|FLOAT3|SPLINE:target[, INT:snapToTarget=0, INT:angleTolerance=0])&lt;br /&gt;
Rotates the character to look at the target (Closest spline point in case of a spline).&lt;br /&gt;
&lt;br /&gt;
CharacterLookFrom(GAMEOBJECT|SPLINE:target[, INT:snapToTarget=0])&lt;br /&gt;
Rotates to the character so it has the same rotation as the target (Closest spline point in case of a spline).&lt;br /&gt;
&lt;br /&gt;
CharacterFollow(CHARACTER:target, FLOAT:durationInSeconds, INT:run)&lt;br /&gt;
Follow the target for a certain time&lt;br /&gt;
&lt;br /&gt;
CharacterFollowOwnerOrLeader(FLOAT:durationInSeconds, INT:run)&lt;br /&gt;
Follow the leader or owner for a certain time&lt;br /&gt;
&lt;br /&gt;
CharacterWander(FLOAT|TRIGGER:range, FLOAT:durationInSeconds [, INT:run, GAMEOBJECT:anchor])&lt;br /&gt;
Wander around for a certain time&lt;br /&gt;
&lt;br /&gt;
CharacterSwitchWeaponType(WEAPON:type)&lt;br /&gt;
If necessary switch to the new weapon type&lt;br /&gt;
&lt;br /&gt;
CharacterFleeFrom(RELATION:relation, FLOAT:range)&lt;br /&gt;
Run away from certain characters if necessary&lt;br /&gt;
&lt;br /&gt;
CharacterFleeFromSurface(SURFACE:surface)&lt;br /&gt;
Run away from a certain surface if necessary&lt;br /&gt;
&lt;br /&gt;
CharacterFleeFromDangerousSurface(-)&lt;br /&gt;
Run away from a dangerous surfaces if necessary&lt;br /&gt;
&lt;br /&gt;
CharacterAddSourcePoints(CHARACTER:character, INT:amount)&lt;br /&gt;
Adds x source points (x can be negative to substract)&lt;br /&gt;
&lt;br /&gt;
CharacterDie(CHARACTER:character[, DEATH:type=DoT])&lt;br /&gt;
Kills the character&lt;br /&gt;
&lt;br /&gt;
CharacterHeal(CHARACTER:character, FLOAT:percentage)&lt;br /&gt;
Heals the character&lt;br /&gt;
&lt;br /&gt;
CharacterConsume(CHARACTER:character, POTION:potion)&lt;br /&gt;
Makes the character consume a potion. Doesn't cost any AP and will just execute the result of the potion.&lt;br /&gt;
&lt;br /&gt;
CharacterDisableAllCrimes(CHARACTER:target)&lt;br /&gt;
Disables all generic behaviours for &amp;lt;target&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CharacterEnableAllCrimes(CHARACTER:target)&lt;br /&gt;
Enables all generic behaviours for &amp;lt;target&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CharacterEnableCrime(CHARACTER:target, STRING:crime, ...)&lt;br /&gt;
Enables the specified generic behaviours for &amp;lt;target&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CharacterDisableCrime(CHARACTER:target, STRING:crime, ...)&lt;br /&gt;
Disables the specified generic behaviours for &amp;lt;target&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CharacterSetLongInvestigationDuration(CHARACTER:target)&lt;br /&gt;
Doubles the time it takes for the investigation to time out. Use this when the character needs to move a long path before investigating.&lt;br /&gt;
&lt;br /&gt;
CharacterAiCalculate(-)&lt;br /&gt;
Calculate the AI of the character&lt;br /&gt;
&lt;br /&gt;
CharacterAiStopCalculate(-)&lt;br /&gt;
Stop the calculation of the AI of the character&lt;br /&gt;
&lt;br /&gt;
CharacterAiFinishMoveSkill(-)&lt;br /&gt;
Finish the current MoveSkill.&lt;br /&gt;
&lt;br /&gt;
CharacterAiAddInterestingItem(CHARACTER:character, ITEM:item)&lt;br /&gt;
Make it interesting for the AI to destroy that Item&lt;br /&gt;
&lt;br /&gt;
CharacterAiRemoveInterestingItem(CHARACTER:character, ITEM:item)&lt;br /&gt;
Make it no longer interesting for the AI to destroy that Item&lt;br /&gt;
&lt;br /&gt;
CharacterSetArchetype(CHARACTER:character, ARCHETYPE:archetype)&lt;br /&gt;
Sets the archetype of the character, used in AI calculations&lt;br /&gt;
&lt;br /&gt;
CharacterSetStoryNPC(CHARACTER:character, INT:bool)&lt;br /&gt;
Makes the character storyNPC or not.&lt;br /&gt;
&lt;br /&gt;
CharacterAddActionPoints(CHARACTER:character, INT:amount)&lt;br /&gt;
Give character some action points&lt;br /&gt;
&lt;br /&gt;
CharacterSetImmortal(CHARACTER:character, INT:bool)&lt;br /&gt;
Makes the character immortal or not. (Allow dying)&lt;br /&gt;
&lt;br /&gt;
CharacterPlayEffect(CHARACTER:character, STRING:effect [,FIXEDSTRING:boneName])&lt;br /&gt;
Plays an effect on the character and it follows the character&lt;br /&gt;
&lt;br /&gt;
CharacterPlayLoopEffect(OUT INT64:effectHandle, CHARACTER:character, STRING:effect [,FIXEDSTRING:boneName])&lt;br /&gt;
Plays a looping effect on the character and it follows the character&lt;br /&gt;
&lt;br /&gt;
CharacterEvent(CHARACTER:character, STRING:eventName)&lt;br /&gt;
Throw a character event which you can catch in scripts and story&lt;br /&gt;
&lt;br /&gt;
CharacterItemEvent(CHARACTER:character, ITEM:item, STRING:eventName)&lt;br /&gt;
Throw a character/item event which you can catch in scripts and story&lt;br /&gt;
&lt;br /&gt;
CharacterCharacterEvent(CHARACTER:character1, CHARACTER:character2, STRING:eventName)&lt;br /&gt;
Throw a character/character event which you can catch in scripts and story&lt;br /&gt;
&lt;br /&gt;
CharacterSetRelationIndivToIndiv(CHARACTER:source, CHARACTER:target, INT:relation)&lt;br /&gt;
Changes the relationship between 2 characters.&lt;br /&gt;
&lt;br /&gt;
CharacterForceUpdate(INT:forceUpdate)&lt;br /&gt;
Makes sure the attached character is always being update or not. &lt;br /&gt;
&lt;br /&gt;
CharacterSetEnemy(CHARACTER:character, CHARACTER:enemy)&lt;br /&gt;
Sets the current enemy of character&lt;br /&gt;
&lt;br /&gt;
CharacterApplyStatus(CHARACTER:character, STATUS:statusId [, INT:turns=null, INT:force=0])&lt;br /&gt;
Applies the status to the character When turns is -1 it's a permanent status When turns is -2 it's a keep alive status (which means it will die if it's not applied again within 1 second) &lt;br /&gt;
&lt;br /&gt;
CharacterRemoveStatus(CHARACTER:character, STATUS:statusId [, STATUS:reasonStatusID=null])&lt;br /&gt;
Removes the status from the character&lt;br /&gt;
&lt;br /&gt;
CharacterDestroy(CHARACTER:character)&lt;br /&gt;
Destroys the character&lt;br /&gt;
&lt;br /&gt;
CharacterSetCanSpotSneakers(CHARACTER:character, INT:enabled)&lt;br /&gt;
Enables/Disables the fact if the character can spot sneaking characters.&lt;br /&gt;
&lt;br /&gt;
CharacterSetAttackOfOpportunity(CHARACTER:character, INT:enabled)&lt;br /&gt;
Enables/Disables the fact if the character can do attack of opportunities.&lt;br /&gt;
&lt;br /&gt;
CharacterResurrect(CHARACTER:character [, INT:Percentage = 100])&lt;br /&gt;
Resurrects the character at [2]% health.&lt;br /&gt;
&lt;br /&gt;
CharacterAddToInventory(CHARACTER:character, FIXEDSTRING:itemStatsObject[, INT:amount, INT:showInTrade=1])&lt;br /&gt;
Add the item to the character&lt;br /&gt;
&lt;br /&gt;
CharacterRemoveFromInventory(CHARACTER:character, FIXEDSTRING:itemStatsObject[, INT:amount])&lt;br /&gt;
Remove the item from the character. If Amount is -1, then all are removed&lt;br /&gt;
&lt;br /&gt;
CharacterDrinkPotion(FIXEDSTRING:statID)&lt;br /&gt;
Makes the character drink a potion from the inventory.&lt;br /&gt;
&lt;br /&gt;
CharacterSetAnimationOverride(CHARACTER:character, FIXEDSTRING:animation)&lt;br /&gt;
Sets an animation override, only walk/run/die animations can override it.&lt;br /&gt;
&lt;br /&gt;
CharacterUseActionPoints(CHARACTER:character, INT:amount [, OUT INT:succeeded])&lt;br /&gt;
Uses x action points&lt;br /&gt;
&lt;br /&gt;
CharacterAddTreasureTable(CHARACTER:character, FIXEDSTRING:treasureTable)&lt;br /&gt;
Adds &amp;lt;treasureTable&amp;gt; to the treasure list of &amp;lt;character&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CharacterRemoveTreasureTable(CHARACTER:character, FIXEDSTRING:treasureTable)&lt;br /&gt;
Removes &amp;lt;treasureTable&amp;gt; from the treasure list of &amp;lt;character&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CharacterClearTreasureTables(CHARACTER:character)&lt;br /&gt;
Removes all treasure tables from &amp;lt;character&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CharacterSetTemporaryHostileRelation(CHARACTER:character, CHARACTER:otherCharacter)&lt;br /&gt;
Creates a temporary hostile relation between the 2 characters!&lt;br /&gt;
&lt;br /&gt;
CharacterSetFightMode(CHARACTER:character, INT:fight [, INT:force=0])&lt;br /&gt;
Set the character in sheath/unsheated mode.&lt;br /&gt;
&lt;br /&gt;
CharacterSetStats(CHARACTER:character, FIXEDSTRING:statsEntry [, INT:keepVitality=0, INT:keepAP=0, INT:keepLevel=0, OUT FLOAT:currentHP])&lt;br /&gt;
Applies &amp;lt;statsEntry&amp;gt; from character.xlsm to &amp;lt;character&amp;gt;, returns &amp;lt;currentHP&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CharacterSetWalkSpeedOverride(CHARACTER:character, INTEGER:override [, FLOAT:walkSpeed])&lt;br /&gt;
Sets walk speed override of &amp;lt;character&amp;gt;, removes it if &amp;lt;override&amp;gt; is 0&lt;br /&gt;
&lt;br /&gt;
CharacterSetRunSpeedOverride(CHARACTER:character, INTEGER:override [, FLOAT:runSpeed])&lt;br /&gt;
Sets run speed override of &amp;lt;character&amp;gt;, removes it if &amp;lt;override&amp;gt; is 0&lt;br /&gt;
&lt;br /&gt;
CharacterSetHasDialog(CHARACTER:character, INTEGER:bool)&lt;br /&gt;
Enables/Disables the dialog of the character&lt;br /&gt;
&lt;br /&gt;
CharacterInitPatrol(SPLINE:spline, INT:splineIndex, INT:reversed, INT:running)&lt;br /&gt;
Start patroling from the given index along the given spline with the given character.&lt;br /&gt;
&lt;br /&gt;
CharacterStartPatrol(SPLINE:spline, INT:splineIndex, INT:reversed, INT:running)&lt;br /&gt;
Start patroling from the given index along the given spline with the given character.&lt;br /&gt;
&lt;br /&gt;
CharacterStopPatrol(-)&lt;br /&gt;
Let the character stop patrolling whatever spline he's on!&lt;br /&gt;
&lt;br /&gt;
CharacterInterruptPatrol(-)&lt;br /&gt;
Call when the patrol should interrupt so the guard stops moving to the next spline. If this is called when the character is deactivated, a caret will take his place.&lt;br /&gt;
&lt;br /&gt;
CharacterSetAnimationSetOverride(CHARACTER:source, FIXEDSTRING:override)&lt;br /&gt;
Sets an animation set override for a character. Empty fixedstring clears the override.&lt;br /&gt;
&lt;br /&gt;
CharacterSetFloating(CHARACTER:target, INTEGER:isFloating)&lt;br /&gt;
Sets &amp;lt;target&amp;gt; floating if &amp;lt;isFloating&amp;gt; is not 0&lt;br /&gt;
&lt;br /&gt;
CharacterResetCooldowns(CHARACTER:target)&lt;br /&gt;
Resets the skill cooldowns for &amp;lt;target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ItemEvent(ITEM:item, STRING:eventName)&lt;br /&gt;
Throw an item event which you can catch in scripts and story&lt;br /&gt;
&lt;br /&gt;
ItemPlayAnimation(FIXEDSTRING:animation)&lt;br /&gt;
Plays an animation on the item&lt;br /&gt;
&lt;br /&gt;
ItemPlayAnimationTo(FIXEDSTRING:animation, FLOAT:targetPercentage, [FLOAT:speed])&lt;br /&gt;
Plays an animation on the item to the target time (percentage of the total duration)&lt;br /&gt;
&lt;br /&gt;
ItemPlayEffect(ITEM:item, STRING:effect [,FIXEDSTRING:boneName])&lt;br /&gt;
Plays an effect on the item and it follows the item&lt;br /&gt;
&lt;br /&gt;
ItemPlayLoopEffect(OUT INT:effectHandle, ITEM:item, STRING:effect [,FIXEDSTRING:boneName])&lt;br /&gt;
Plays a looping effect on the item and it follows the item&lt;br /&gt;
&lt;br /&gt;
ItemSetOnStage(ITEM:item, INTEGER:bool)&lt;br /&gt;
Sets an item on or offstage&lt;br /&gt;
&lt;br /&gt;
ItemSetCanInteract(ITEM:item, INTEGER:bool)&lt;br /&gt;
Sets an item (not) interactible&lt;br /&gt;
&lt;br /&gt;
ItemClose(ITEM:item)&lt;br /&gt;
Close an item&lt;br /&gt;
&lt;br /&gt;
ItemOpen(ITEM:item)&lt;br /&gt;
Open an item&lt;br /&gt;
&lt;br /&gt;
ItemDrop(ITEM:item)&lt;br /&gt;
Drop an item&lt;br /&gt;
&lt;br /&gt;
ItemLock(ITEM:item, FIXEDSTRING:key)&lt;br /&gt;
Lock an item&lt;br /&gt;
&lt;br /&gt;
ItemUnlock(ITEM:item)&lt;br /&gt;
Unlock an item&lt;br /&gt;
&lt;br /&gt;
ItemApplyStatus(ITEM:item, STATUS:statusId [, INT:turns=null, INT:force=0])&lt;br /&gt;
Applies the status to the item When turns is -1 it's a permanent status When turns is -2 it's a keep alive status (which means it will die if it's not applied again within 1 second) &lt;br /&gt;
&lt;br /&gt;
ItemRemoveStatus(ITEM:item, STATUS:statusId)&lt;br /&gt;
Removes the status from the item&lt;br /&gt;
&lt;br /&gt;
ItemDie(ITEM:item)&lt;br /&gt;
Kills the item&lt;br /&gt;
&lt;br /&gt;
ItemMoveTo(GAMEOBJECT|FLOAT3:target, FLOAT:velocity, FLOAT:acceleration, INTEGER:matchTargetRotation)&lt;br /&gt;
Moves the item to the target&lt;br /&gt;
&lt;br /&gt;
ItemToInventory(ITEM:item, CHARACTER|ITEM:target [,INT:amount=-1])&lt;br /&gt;
Moves the item to the target's inventory&lt;br /&gt;
&lt;br /&gt;
ItemLookAt(GAMEOBJECT:target, FLOAT:degreesPerSecond)&lt;br /&gt;
Rotates the item to look at the target&lt;br /&gt;
&lt;br /&gt;
ItemDestroy(ITEM:item)&lt;br /&gt;
Destroys the item&lt;br /&gt;
&lt;br /&gt;
ItemSetAmount(ITEM:item, INT:amount)&lt;br /&gt;
Change the amount of the item&lt;br /&gt;
&lt;br /&gt;
IterateItemsInInventory(CHARACTER|ITEM:source, FIXEDSTRING:eventname[, FIXEDSTRING:tag])&lt;br /&gt;
Launch iterate event for each iten in source's inventory. If you pass a tag, it has to have that tag.&lt;br /&gt;
&lt;br /&gt;
ItemAddCharges(ITEM:TargetItem, INT:charges)&lt;br /&gt;
Add/subtract charges from an item&lt;br /&gt;
&lt;br /&gt;
ItemResetChargesToInitial(ITEM:TargetItem)&lt;br /&gt;
Resets charges from item to initial state&lt;br /&gt;
&lt;br /&gt;
MakePeace(CHARACTER:Source, CHARACTER:Target[, INT:IgnoreVote = 1])&lt;br /&gt;
Make peace between users of the characters&lt;br /&gt;
&lt;br /&gt;
MakeWar(CHARACTER:Source, CHARACTER:Target[, INT:IgnoreVote = 1])&lt;br /&gt;
Make war between users of the characters&lt;br /&gt;
&lt;br /&gt;
FindSurface(OUT FLOAT3:result, GAMEOBJECT|FLOAT3:source, FLOAT:minRange, FLOAT:maxRange, SURFACE:type [,CHARACTER:alignSource, INT:minEnemiesInSurface, INT:maxAlliesInSurface, INT:minimumCellCount])&lt;br /&gt;
Finds the closest surface of a specific type.&lt;br /&gt;
&lt;br /&gt;
FindValidPosition(INOUT FLOAT3:position, FLOAT:radius[, CHARACTER|ITEM:object=null])&lt;br /&gt;
Finds the closest valid position (where the object can stand.)&lt;br /&gt;
&lt;br /&gt;
FindPosition(INOUT FLOAT3:position, CHARACTER:source, INT:canStand, INT:checkSight, FLOAT:minRadius, FLOAT:maxRadius, FLOAT:rangeCheck, CHARACTER:alignSource, INT:minAllies, INT:maxAllies, INT:minEnemies, INT:maxEnemies [,FIXEDSTRING:AiHintTag=null, INT:forceHint=0, FLOAT3:SourcePosition])&lt;br /&gt;
Finds the closest position from the source (within radius) where the conditions are matched. &lt;br /&gt;
&lt;br /&gt;
Cast(OUT OBJECT variable, OBJECT value)&lt;br /&gt;
Casts the value to the variable.&lt;br /&gt;
&lt;br /&gt;
StringConcatenate(STRING:stringA, STRING:stringB, OUT STRING:resultingString)&lt;br /&gt;
Appends stringB to stringA. Resulting string is stored in the third parameter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== QUERIES ==&lt;br /&gt;
&lt;br /&gt;
GetPosition(GAMEOBJECT:object,OUT FLOAT3:src)&lt;br /&gt;
Get the current position of an object&lt;br /&gt;
&lt;br /&gt;
GetForwardDirection(GAMEOBJECT:object,OUT FLOAT3:direction)&lt;br /&gt;
Get the current forward direction of an object&lt;br /&gt;
&lt;br /&gt;
GetRightDirection(GAMEOBJECT:object,OUT FLOAT3:direction)&lt;br /&gt;
Get the current right direction of an object&lt;br /&gt;
&lt;br /&gt;
GetUpDirection(GAMEOBJECT:object,OUT FLOAT3:direction)&lt;br /&gt;
Get the current up direction of an object&lt;br /&gt;
&lt;br /&gt;
GetDirection(GAMEOBJECT|FLOAT3:src,GAMEOBJECT|FLOAT3:target,OUT FLOAT3:direction[, OUT FLOAT:distance])&lt;br /&gt;
Get the direction from src to target (optional: returns the distance between the objects as well)&lt;br /&gt;
&lt;br /&gt;
GetRotation(GAMEOBJECT:object, OUT FLOAT3:vector)&lt;br /&gt;
Get the rotation of an object&lt;br /&gt;
&lt;br /&gt;
CharacterGetTargetSpline(INT: SplineIndex)&lt;br /&gt;
Returns the spline index the character is currently walking towards, or -1 if he is not active on a spline.&lt;br /&gt;
&lt;br /&gt;
IsEqual(OBJECT:variable, OBJECT:variable)&lt;br /&gt;
Compares both objects and see if they are equal.&lt;br /&gt;
&lt;br /&gt;
IsLessThen(INT|FLOAT:variable, INT|FLOAT:variable)&lt;br /&gt;
Compares both objects and see if the first one is smaller.&lt;br /&gt;
&lt;br /&gt;
IsGreaterThen(INT|FLOAT:variable, INT|FLOAT:variable)&lt;br /&gt;
Compares both objects and see if the first one is bigger.&lt;br /&gt;
&lt;br /&gt;
IsRandom(FLOAT:percentage)&lt;br /&gt;
Each time this condition is checked, it will succeed with a chance of the percentage (between 0 and 1)&lt;br /&gt;
&lt;br /&gt;
IsRound(INT:roundNumber)&lt;br /&gt;
Checks if we are currently in combat in round x&lt;br /&gt;
&lt;br /&gt;
IsInSurface(OBJECT|FLOAT3:target, SURFACE:type[, FLOAT:radius])&lt;br /&gt;
Check if the character, item, trigger or position is currently within the specific surface.&lt;br /&gt;
&lt;br /&gt;
IsInDangerousSurface(OBJECT|FLOAT3:target[, CHARACTER:character, FLOAT:radius])&lt;br /&gt;
Check if &amp;lt;target&amp;gt; is currently in on a dangerous surface. Uses &amp;lt;character&amp;gt; for path influences if provided (is necessary with non-character targets)&lt;br /&gt;
&lt;br /&gt;
IsInDialog(CHARACTER|ITEM:target[, INT:ignoreAutomatedDialogs=0])&lt;br /&gt;
Check if the character or item is currently in a dialog, optionally ignoring automated dialogs&lt;br /&gt;
&lt;br /&gt;
IsInAutomatedDialog(CHARACTER|ITEM:target)&lt;br /&gt;
Check if the character or item is currently in an automated dialog&lt;br /&gt;
&lt;br /&gt;
GetDistance(OUT FLOAT:distance, GAMEOBJECT|FLOAT3:source, GAMEOBJECT|FLOAT3:target)&lt;br /&gt;
Returns the distance between 2 positions&lt;br /&gt;
&lt;br /&gt;
GetDistance2D(OUT FLOAT:distance, GAMEOBJECT|FLOAT3:source, GAMEOBJECT|FLOAT3:target)&lt;br /&gt;
Returns the 2D distance between 2 positions (ignores height)&lt;br /&gt;
&lt;br /&gt;
GetInnerDistance(OUT FLOAT:distance, GAMEOBJECT:source, GAMEOBJECT:target)&lt;br /&gt;
Returns the distance between 2 gameobjects (character, item, trigger, ...) Their bounds are already subtracted.&lt;br /&gt;
&lt;br /&gt;
GetPosition(GAMEOBJECT:object, OUT FLOAT3:position)&lt;br /&gt;
Returns the position of a gameobject (character, item, trigger, ...)&lt;br /&gt;
&lt;br /&gt;
GetVar(OUT OBJECT:returnValue, CHARACTER|ITEM:target, FIXEDSTRING:varName)&lt;br /&gt;
Gets a global variable from the target&lt;br /&gt;
&lt;br /&gt;
GetClosestPlayer(OUT CHARACTER:player, GAMEOBJECT|FLOAT3:source)&lt;br /&gt;
Gets the closest player near the source, default being being the object itself&lt;br /&gt;
&lt;br /&gt;
GetPlayerCount(OUT INT:playerCount)&lt;br /&gt;
Gets the number of players in the party&lt;br /&gt;
&lt;br /&gt;
GetPlayerByIndex(OUT CHARACTER:returnCharacter, INT:playerIndex)&lt;br /&gt;
Gets a player from the party by index&lt;br /&gt;
&lt;br /&gt;
GetRandomCharacter(OUT CHARACTER:returnCharacter, [INT:canBeSelf=0, INT:canBePlayer=0])&lt;br /&gt;
Gets a random character in the current level&lt;br /&gt;
&lt;br /&gt;
ContainsSurface(GAMEOBJECT|FLOAT3:source, FLOAT:radius, SURFACE:type,)&lt;br /&gt;
Checks if there is any surface of the type within a radius of the source&lt;br /&gt;
&lt;br /&gt;
IsSurface(GAMEOBJECT|FLOAT3:source, FLOAT:radius, SURFACE:type,)&lt;br /&gt;
Checks if the whole radius around the source is the specified surface type&lt;br /&gt;
&lt;br /&gt;
IsObjectOnObject(CHARACTER|ITEM:source,CHARACTER|ITEM:target)&lt;br /&gt;
Checks if the source is standing on the target&lt;br /&gt;
&lt;br /&gt;
GetX(FLOAT3:vector, OUT FLOAT:value)&lt;br /&gt;
Returns the X component of the vector&lt;br /&gt;
&lt;br /&gt;
GetY(FLOAT3:vector, OUT FLOAT:value)&lt;br /&gt;
Returns the Y component of the vector&lt;br /&gt;
&lt;br /&gt;
GetZ(FLOAT3:vector, OUT FLOAT:value)&lt;br /&gt;
Returns the Z component of the vector&lt;br /&gt;
&lt;br /&gt;
CanSee(GAMEOBJECT|FLOAT3:source, GAMEOBJECT|FLOAT3:target[, INT:addProjectileTargetGroundOffset=0])&lt;br /&gt;
Check if the sight is blocked between 2 points.&lt;br /&gt;
&lt;br /&gt;
IsVisible(CHARACTER|ITEM:object)&lt;br /&gt;
Check if the object is set invisible or not with SetVisible.&lt;br /&gt;
&lt;br /&gt;
GetTextDuration(CHARACTER|ITEM:object, FIXEDSRTING:key, OUT FLOAT:duration)&lt;br /&gt;
Gets how long a text needs to be displayed&lt;br /&gt;
&lt;br /&gt;
IsCasual(-)&lt;br /&gt;
Returns if the current game mode is Casual&lt;br /&gt;
&lt;br /&gt;
IsHardcore(-)&lt;br /&gt;
Returns if the current game mode is Hardcore&lt;br /&gt;
&lt;br /&gt;
IsTagged(GAMEOBJECT:object, FIXEDSTRING:tag)&lt;br /&gt;
Check if the object is tagged.&lt;br /&gt;
&lt;br /&gt;
TranslatedStringKeyExists(FIXEDSTRING:key)&lt;br /&gt;
Check if the TranslatedString key exists.&lt;br /&gt;
&lt;br /&gt;
IsInCombat(CHARACTER|ITEM:object)&lt;br /&gt;
Returns true if the object is in combat.&lt;br /&gt;
&lt;br /&gt;
IsInCombatWith(CHARACTER|ITEM:object, CHARACTER|ITEM:object)&lt;br /&gt;
Returns true if the objects are in combat with each other.&lt;br /&gt;
&lt;br /&gt;
IsFacing(GAMEOBJECT:source, GAMEOBJECT|FLOAT3:target, [INT:angle=90])&lt;br /&gt;
Returns true if the object is facing the position within the given angle.&lt;br /&gt;
&lt;br /&gt;
GameIsSaving(-)&lt;br /&gt;
Returns true if the game is saving.&lt;br /&gt;
&lt;br /&gt;
GameIsLoading(-)&lt;br /&gt;
Returns true if the game is loading.&lt;br /&gt;
&lt;br /&gt;
GetUserCount(OUT INT:userCount)&lt;br /&gt;
Returns the user count.&lt;br /&gt;
&lt;br /&gt;
GetCurrentCharacter(OUT CHARACTER:character, INT:user)&lt;br /&gt;
Returns the character currently being controlled by the specified user.&lt;br /&gt;
&lt;br /&gt;
GetCurrentLevel(OUT FIXEDSTRING:currentLevel)&lt;br /&gt;
Returns the current levelname&lt;br /&gt;
&lt;br /&gt;
GetAIBounds(CHARACTER|ITEM:source, OUT FLOAT:bounds)&lt;br /&gt;
Returns AI bounds of &amp;lt;source&amp;gt; in &amp;lt;bounds&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HasGlobalFlag(FIXEDSTRING:flagName)&lt;br /&gt;
Returns if the Global Flag is set&lt;br /&gt;
&lt;br /&gt;
HasFlag(CHARACTER|ITEM:object, FIXEDSTRING:flagName)&lt;br /&gt;
Returns if the Flag is set on the Object&lt;br /&gt;
&lt;br /&gt;
HasUserFlag(CHARACTER:object, FIXEDSTRING:flagName)&lt;br /&gt;
Returns if the Flag is set on the user's characters&lt;br /&gt;
&lt;br /&gt;
HasPartyFlag(CHARACTER:object, FIXEDSTRING:flagName)&lt;br /&gt;
Returns if the Flag is set on the party's characters&lt;br /&gt;
&lt;br /&gt;
DialogExists(STRING:dialogue)&lt;br /&gt;
Returns true if the dialogue exists.&lt;br /&gt;
&lt;br /&gt;
IsActive(CHARACTER|ITEM:Object)&lt;br /&gt;
Returns if the character or item is currently active.&lt;br /&gt;
&lt;br /&gt;
ListGetSize(LIST&amp;lt;OBJECT&amp;gt;:list, out INT:size)&lt;br /&gt;
Returns the number of elements in &amp;lt;list&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ListGet(LIST&amp;lt;OBJECT&amp;gt;:list, INT:index, out OBJECT:entry)&lt;br /&gt;
Returns &amp;lt;entry&amp;gt; at &amp;lt;index&amp;gt; of &amp;lt;list&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ListGetRandom(LIST&amp;lt;OBJECT&amp;gt;:list, out OBJECT:entry)&lt;br /&gt;
Returns a random &amp;lt;entry&amp;gt; of &amp;lt;list&amp;gt;&lt;br /&gt;
&lt;br /&gt;
IsBoss(CHARACTER|ITEM:Object)&lt;br /&gt;
Returns true if the entity is tagged as a boss&lt;br /&gt;
&lt;br /&gt;
IsProjectileSkill(SKILL:skill)&lt;br /&gt;
Returns true if the skill is a ranged skill (uses a projectile)&lt;br /&gt;
&lt;br /&gt;
IsValidSkillTarget(CHARACTER:source, OBJECT|FLOAT3:target, SKILLID:skill[, INTEGER:ignoreRangeCheck=0])&lt;br /&gt;
Checks whether &amp;lt;target&amp;gt; is a valid target for &amp;lt;skill&amp;gt; at &amp;lt;source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GetFaction(OUT FIXEDSTRING:faction, CHARACTER|ITEM:character)&lt;br /&gt;
Returns the faction of the provided character or item&lt;br /&gt;
&lt;br /&gt;
IsInActiveTurn(CHARACTER|ITEM:target)&lt;br /&gt;
Returns true if it's the character's or item's turn in combat.&lt;br /&gt;
&lt;br /&gt;
IsSkillActive(CHARACTER:character, SKILL:skillId)&lt;br /&gt;
Returns true if &amp;lt;character&amp;gt; has &amp;lt;skillId&amp;gt; active (in memory).&lt;br /&gt;
&lt;br /&gt;
HasSkillAi(SKILLID:skillId)&lt;br /&gt;
Returns true if the skill is using the new Ai system&lt;br /&gt;
&lt;br /&gt;
IsInArena(CHARACTER::character)&lt;br /&gt;
Returns true if the character is in an arena fight&lt;br /&gt;
&lt;br /&gt;
CrimeGetType(INTEGER:crimeId, OUT STRING:crimeType)&lt;br /&gt;
Returns the type of the crime with this id.&lt;br /&gt;
&lt;br /&gt;
CrimeGetCriminals(INTEGER:crimeId, OUT CHARACTER:criminal1, OUT CHARACTER:criminal2, OUT CHARACTER:criminal3, OUT CHARACTER:criminal4)&lt;br /&gt;
Returns the criminals of that crime. They might all be null.&lt;br /&gt;
&lt;br /&gt;
IsSourceSkill(SKILL:skill)&lt;br /&gt;
Returns true if the skill is a source skill.&lt;br /&gt;
&lt;br /&gt;
IsInGameMasterMode(-)&lt;br /&gt;
Returns true if the game in game master mode.&lt;br /&gt;
&lt;br /&gt;
CharacterGet(OUT CHARACTER:character, GAMEOBJECT|FLOAT3:src, FLOAT:range, COMPARE:howTo, COMPAREFUNC:compareFunc[, RELATION: relation, SURFACE:surface, STATUS:status, TALENT:talent, CHARACTER:inSightOf, FIXEDSTRING:tag])&lt;br /&gt;
Get a character within a certain range conforming to the filled in restraints. &lt;br /&gt;
&lt;br /&gt;
CharacterCount(OUT INT:count, GAMEOBJECT|FLOAT3:src, FLOAT:range, [RELATION: relation, SURFACE:surface, STATUS:status, TALENT:talent, CHARACTER:inSightOf])&lt;br /&gt;
Counts the characters within a certain range conforming to the filled in restraints.&lt;br /&gt;
&lt;br /&gt;
CharacterGetOwner(OUT CHARACTER:owner, CHARACTER:source)&lt;br /&gt;
Get the character's owner&lt;br /&gt;
&lt;br /&gt;
CharacterGetFollow(OUT CHARACTER:to follow, CHARACTER:source)&lt;br /&gt;
Get the character to follow&lt;br /&gt;
&lt;br /&gt;
CharacterGetEnemy(OUT CHARACTER:current enemy, CHARACTER:source)&lt;br /&gt;
Get current enemy of character&lt;br /&gt;
&lt;br /&gt;
CharacterCanCast(CHARACTER:source, SKILL:skillId, [ITEM:skillItem=null, INT:ignoreActionPoints=0])&lt;br /&gt;
Check if the character source can cast the skill: will check cooldown, actionpoints&lt;br /&gt;
&lt;br /&gt;
CharacterCanSitOnItem(CHARACTER:source, ITEM:item)&lt;br /&gt;
Check if the character source can sit or lie on an item.&lt;br /&gt;
&lt;br /&gt;
CharacterCanDrinkPotion(CHARACTER:source, FIXEDSTRING:potionID[, INT:ignoreActionPoints=0])&lt;br /&gt;
Check if the character source can drink the potion: will check inv and actionpoints&lt;br /&gt;
&lt;br /&gt;
CharacterCanUseItem(CHARACTER:source, ITEM:item[, INT:ignoreActionPoints=0])&lt;br /&gt;
Check if the character source can use the item in the world&lt;br /&gt;
&lt;br /&gt;
CharacterCanUseItemInInventory(CHARACTER:source, ITEM:item[, INT:ignoreActionPoints=0])&lt;br /&gt;
Check if the character source can use the item in his inventory&lt;br /&gt;
&lt;br /&gt;
CharacterCanSee(CHARACTER:watchingChar, CHARACTER|ITEM:target [, INT:forceUpdate=0])&lt;br /&gt;
Check if character has target in his line of sight. &lt;br /&gt;
&lt;br /&gt;
CharacterCanShoot(CHARACTER:source, GAMEOBJECT|FLOAT3:target)&lt;br /&gt;
Check if the character can shoot the target.&lt;br /&gt;
&lt;br /&gt;
CharacterIsPlayer(CHARACTER:character)&lt;br /&gt;
Check if the character is a player&lt;br /&gt;
&lt;br /&gt;
CharacterIsInParty(CHARACTER:character)&lt;br /&gt;
Check if the character is in the party&lt;br /&gt;
&lt;br /&gt;
CharacterIsEnemy(CHARACTER:source, CHARACTER:target)&lt;br /&gt;
Check if target is enemy of source&lt;br /&gt;
&lt;br /&gt;
CharacterIsAlly(CHARACTER:source, CHARACTER:target)&lt;br /&gt;
Check if target is ally of source&lt;br /&gt;
&lt;br /&gt;
CharacterIsNeutral(CHARACTER:source, CHARACTER:target)&lt;br /&gt;
Check if target is neutral of source&lt;br /&gt;
&lt;br /&gt;
CharacterIsDead(CHARACTER:character)&lt;br /&gt;
Check if character is dead&lt;br /&gt;
&lt;br /&gt;
CharacterIsMoving(CHARACTER:character)&lt;br /&gt;
Check if character is moving (speed &amp;gt; 0)&lt;br /&gt;
&lt;br /&gt;
CharacterIsSummon(CHARACTER:character)&lt;br /&gt;
Check if character is a summon&lt;br /&gt;
&lt;br /&gt;
CharacterIsPartyFollower(CHARACTER:character)&lt;br /&gt;
Check if character is a party follower&lt;br /&gt;
&lt;br /&gt;
CharacterIsStoryNPC(CHARACTER:character)&lt;br /&gt;
Check if character is a story NPC&lt;br /&gt;
&lt;br /&gt;
CharacterInWeaponRange(CHARACTER:character, CHARACTER:target)&lt;br /&gt;
Check if target is in the current's weapon range&lt;br /&gt;
&lt;br /&gt;
CharacterInTouchRange(CHARACTER:character, CHARACTER:targetChar)&lt;br /&gt;
Check if target is in the character's touch range &lt;br /&gt;
&lt;br /&gt;
CharacterHasStatus(CHARACTER:character, STATUS:statusId[, FIXEDSTRING:extraData])&lt;br /&gt;
Check if character currently has the status. ExtraData can be filled in for some statuses: - Consume: statsid of the item - Shield: skillid of the shield&lt;br /&gt;
&lt;br /&gt;
CharacterGetStatusSourceCharacter(CHARACTER:character, STATUS:statusId, OUT CHARACTER:source[, FIXEDSTRING:extraData])&lt;br /&gt;
Get the source character of a status&lt;br /&gt;
&lt;br /&gt;
CharacterGetStatusSourceItem(CHARACTER:character, STATUS:statusId, OUT ITEM:source[, FIXEDSTRING:extraData])&lt;br /&gt;
Get the source item of a status&lt;br /&gt;
&lt;br /&gt;
CharacterHasTalent(CHARACTER:character, TALENT:talent)&lt;br /&gt;
Check if character currently has the talent&lt;br /&gt;
&lt;br /&gt;
CharacterHasSkill(CHARACTER:character, SKILL:skillId)&lt;br /&gt;
Check if character currently has the skill&lt;br /&gt;
&lt;br /&gt;
CharacterHasWeaponType(CHARACTER:character, WEAPON:weaponTYPE [, INT:equipped])&lt;br /&gt;
Check if character currently has a weapon of this type in his inventory or equipped&lt;br /&gt;
&lt;br /&gt;
CharacterGetStat(OUT FLOAT:statValue, CHARACTER:character, CHARACTERSTAT:statType)&lt;br /&gt;
Returns the current value of the stat (Vitality, ...)&lt;br /&gt;
&lt;br /&gt;
CharacterGetSightRange(OUT FLOAT:range, CHARACTER:character)&lt;br /&gt;
Returns the character's sight range&lt;br /&gt;
&lt;br /&gt;
CharacterGetWeaponRange(OUT FLOAT:minRange, OUT FLOAT:maxRange, CHARACTER:character)&lt;br /&gt;
Returns the character's current weapon range&lt;br /&gt;
&lt;br /&gt;
CharacterGetTouchRange(OUT FLOAT:touchRange, CHARACTER:character)&lt;br /&gt;
Returns the character's current touch range&lt;br /&gt;
&lt;br /&gt;
CharacterGetSkillRange(OUT FLOAT:minRange, OUT FLOAT:maxRange,CHARACTER:character, SKILL:skillId)&lt;br /&gt;
Returns the character's skill range&lt;br /&gt;
&lt;br /&gt;
CharacterGetSkillImpactRange(OUT FLOAT:areaRange, CHARACTER:character, SKILL:skillId)&lt;br /&gt;
Returns the character's skill range&lt;br /&gt;
&lt;br /&gt;
CharacterIsInTrigger(CHARACTER:character, TRIGGER:trigger)&lt;br /&gt;
Check if character is in given trigger&lt;br /&gt;
&lt;br /&gt;
CharacterGetAbility(OUT INT:value, CHARACTER:character, ABILITY:ability)&lt;br /&gt;
Returns the character's value of the specified ability&lt;br /&gt;
&lt;br /&gt;
CharacterGetHostileCount(OUT INT:value, CHARACTER:character)&lt;br /&gt;
Returns how many characters are targeting this character right now... You can iterate over them with IterateEnemiesOf.&lt;br /&gt;
&lt;br /&gt;
CharacterCanFight(CHARACTER:character)&lt;br /&gt;
Returns true if the character can fight.&lt;br /&gt;
&lt;br /&gt;
CharacterGetTemplate(CHARACTER:character, OUT CHARACTERTEMPLATE:root)&lt;br /&gt;
Returns the roottemplate of the character.&lt;br /&gt;
&lt;br /&gt;
CharacterCanSpotSneakers(CHARACTER:character)&lt;br /&gt;
Returns true if the character can spot sneaking characters&lt;br /&gt;
&lt;br /&gt;
CharacterIsFloating(CHARACTER:character)&lt;br /&gt;
Check if character is a floating character&lt;br /&gt;
&lt;br /&gt;
CharacterInCreation(CHARACTER:character)&lt;br /&gt;
Returns true if the character is in character creation&lt;br /&gt;
&lt;br /&gt;
CharacterAvoidsTraps(CHARACTER:character)&lt;br /&gt;
Returns true if the character avoids traps&lt;br /&gt;
&lt;br /&gt;
CharacterCheckRelation(CHARACTER:character, RELATION:relation)&lt;br /&gt;
Returns true if relation check succeeds&lt;br /&gt;
&lt;br /&gt;
CharacterIsBetterOrEqualClass(CHARACTER:character, INT:currentScore, OUT INT:newScore, INT warriorScore, INT rogueScore, INT mageScore, INT clericScore, INT rangerScore)&lt;br /&gt;
Returns true if score is higher or equal than the current score&lt;br /&gt;
&lt;br /&gt;
CharacterHasBeenHitBy(CHARACTER:character, DAMAGE_TYPE:damageType)&lt;br /&gt;
Returns true if the character was hit by this type.&lt;br /&gt;
&lt;br /&gt;
CharacterHasCastedSpellLastTurn(CHARACTER:character)&lt;br /&gt;
Returns true if the character has casted a spell in his last turn.&lt;br /&gt;
&lt;br /&gt;
CharacterHasHadStatus(CHARACTER:character, STATUS:status)&lt;br /&gt;
Returns true if the character has had a specific status this combat.&lt;br /&gt;
&lt;br /&gt;
CharacterHasAnimationOverride(CHARACTER:character)&lt;br /&gt;
Returns true if the character has an animation override.&lt;br /&gt;
&lt;br /&gt;
CharacterCanUnlock(CHARACTER:character, ITEM:item)&lt;br /&gt;
Returns true if the character can unlock the item (if the item is already unlocked it returns true!)&lt;br /&gt;
&lt;br /&gt;
CharacterGetReservedUserID(OUT INT:user, CHARACTER:character)&lt;br /&gt;
Returns the character's reserved User id.&lt;br /&gt;
&lt;br /&gt;
CharacterGetRace(CHARACTER:character, OUT FIXEDSTRING:race)&lt;br /&gt;
Returns the &amp;lt;character&amp;gt;'s race in &amp;lt;race&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CharacterIsRace(CHARACTER:character, FIXEDSTRING:race)&lt;br /&gt;
Returns true if &amp;lt;character&amp;gt;'s race is &amp;lt;race&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CharacterCanMoveItem(CHARACTER:character, ITEM:item, FLOAT:minRadius, FLOAT:maxRadius [, OUT FLOAT3:destination])&lt;br /&gt;
Returns true + &amp;lt;destination&amp;gt; if &amp;lt;character&amp;gt; can move &amp;lt;item&amp;gt; somewhere between &amp;lt;minRadius&amp;gt; and &amp;lt;maxRadius&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CharacterGetDeathType(CHARACTER:character, OUT FIXEDSTRING:deathType)&lt;br /&gt;
Returns death type of &amp;lt;character&amp;gt; in &amp;lt;deathType&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CharacterGetStillAnimation(CHARACTER:object, OUT FIXEDSTRING:stillAnimation)&lt;br /&gt;
Returns the still animation to play&lt;br /&gt;
&lt;br /&gt;
CrimeTransferLeadership(INT: CrimeID[, FIXEDSTRING:Tag1,...])&lt;br /&gt;
Try and transfer the leadership of this crime to someone else.&lt;br /&gt;
&lt;br /&gt;
CrimeGetLeadInvestigator(OUT CHARACTER:lead, INT: CrimeID)&lt;br /&gt;
Returns the lead investigator for the crime.&lt;br /&gt;
&lt;br /&gt;
CharacterCanHitTargetWithRangedWeapon(CHARACTER:source, OBJECT|FLOAT3:target[, SKILL:skill = null])&lt;br /&gt;
Returns true if &amp;lt;source&amp;gt; can hit &amp;lt;target&amp;gt; with currently equipped ranged weapon. Will use &amp;lt;skill&amp;gt; instead of equipped weapon if provided.&lt;br /&gt;
&lt;br /&gt;
CharacterHasRangedWeapon(CHARACTER:character[, INT:checkInventory = 0])&lt;br /&gt;
Returns true if &amp;lt;character&amp;gt; has has ranged weapon. Checks for non-wielded weapons if &amp;lt;checkInventory&amp;gt; is 1&lt;br /&gt;
&lt;br /&gt;
CheckInteractionReach(CHARACTER:character, CHARACTER|ITEM: target)&lt;br /&gt;
Returns true if &amp;lt;character&amp;gt; could interact with &amp;lt;target&amp;gt;. This is not checking ranges, but checking if there's too much of a height difference or too many obstacles in between.&lt;br /&gt;
&lt;br /&gt;
CharacterGetSourcePoints(CHARACTER:character, OUT INT: amount)&lt;br /&gt;
Returns the amount of sourcepoints of &amp;lt;character&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CharacterAiIsCalculating(-)&lt;br /&gt;
Returns if the character is still calculating the AI.&lt;br /&gt;
&lt;br /&gt;
CharacterAiFetchMoveSkillCommand(OUT SKILL:skill, OUT ITEM:skillItem, OUT FLOAT3:target)&lt;br /&gt;
Returns if the character has a Move Skill command to execute according to the AI.&lt;br /&gt;
&lt;br /&gt;
CharacterAiFetchSkillCommand(OUT SKILL:skill, OUT ITEM:skillItem, OUT FLOAT3 endPosition, OUT FLOAT3:target, OUT CHARACTER:target, OUT ITEM:target, OUT FLOAT3:target2, OUT CHARACTER:target2, OUT ITEM:target)&lt;br /&gt;
Returns if the character has a Skill command to execute according to the AI.&lt;br /&gt;
&lt;br /&gt;
CharacterAiFetchConsumeCommand(OUT ITEM:item)&lt;br /&gt;
Returns if the character has a Consume command to execute according to the AI.&lt;br /&gt;
&lt;br /&gt;
CharacterAiFetchAttackCommand(OUT FLOAT3:endPosition, OUT FLOAT3:target, OUT CHARACTER:target, OUT ITEM:target)&lt;br /&gt;
Returns if the character has a Attack command to execute according to the AI.&lt;br /&gt;
&lt;br /&gt;
CharacterAiFetchFallbackCommand(OUT FLOAT3:targetPosition, OUT FLOAT3:lookAtPosition)&lt;br /&gt;
Returns if the character has a Fallback command to execute according to the AI.&lt;br /&gt;
&lt;br /&gt;
CharacterGetArchetype(CHARACTER:character, OUT ARCHETYPE:archetype)&lt;br /&gt;
Returns the archetype of the character.&lt;br /&gt;
&lt;br /&gt;
CharacterIsPolymorphedInto(CHARACTER:character, FIXEDSTRING:race)&lt;br /&gt;
Returns true if &amp;lt;character&amp;gt; is polymorphed into &amp;lt;race&amp;gt;. Race can be a race (like HUMAN), but also a template (in case of a polymorph skill like Chicken Touch).&lt;br /&gt;
&lt;br /&gt;
CharacterIsPolymorphInteractionDisabled(CHARACTER:character)&lt;br /&gt;
Returns true if &amp;lt;character&amp;gt; has his interaction disabled because of a polymorph.&lt;br /&gt;
&lt;br /&gt;
ItemGet(OUT ITEM:item, GAMEOBJECT|FLOAT3:src, FLOAT:range, COMPARE:howTo [, COMPAREFUNC:compareFunc, FIXEDSTRING:rootTemplate, FIXEDSTRING:tag])&lt;br /&gt;
Get an item within a certain range conforming to the filled in restraints.&lt;br /&gt;
&lt;br /&gt;
ItemGetFromInventory(OUT ITEM:item, CHARACTER|ITEM:object [, FIXEDSTRING:statsId, FIXEDSTRING:tag, INT:isEquiped])&lt;br /&gt;
Returns the first item in the inventory conforming to the filled in restraints.&lt;br /&gt;
&lt;br /&gt;
ItemIsInCharacterInventory(ITEM:item, CHARACTER:object)&lt;br /&gt;
Returns if the item is in the inventory of the character&lt;br /&gt;
&lt;br /&gt;
ItemIsInTrigger(ITEM:item, TRIGGER:trigger)&lt;br /&gt;
Check if item is in given trigger&lt;br /&gt;
&lt;br /&gt;
ItemGetStat(OUT FLOAT:statValue, ITEM:item, ITEMSTAT:statType)&lt;br /&gt;
Returns the current value of the stat (Weight, ...)&lt;br /&gt;
&lt;br /&gt;
ItemIsMoving(ITEM:item)&lt;br /&gt;
Returns if the item is moving or not.&lt;br /&gt;
&lt;br /&gt;
ItemIsFalling(ITEM:item)&lt;br /&gt;
Returns if the item is falling or not. (after teleport)&lt;br /&gt;
&lt;br /&gt;
ItemIsOpening(ITEM:item)&lt;br /&gt;
Returns if the item is opening or not.&lt;br /&gt;
&lt;br /&gt;
ItemIsClosing(ITEM:item)&lt;br /&gt;
Returns if the item is closing or not.&lt;br /&gt;
&lt;br /&gt;
ItemIsLocked(ITEM:item)&lt;br /&gt;
Returns if the item is locked or not.&lt;br /&gt;
&lt;br /&gt;
ItemIsMovable(ITEM:item)&lt;br /&gt;
Returns if the item is movable or not.&lt;br /&gt;
&lt;br /&gt;
ItemCanBeLockPicked(ITEM:item)&lt;br /&gt;
Returns if the item is can be opened by lockpicking.&lt;br /&gt;
&lt;br /&gt;
ItemIsOpen(ITEM:item)&lt;br /&gt;
Returns if the item is open or not.&lt;br /&gt;
&lt;br /&gt;
IsStoryItem(ITEM:item)&lt;br /&gt;
Returns if the item is a story item.&lt;br /&gt;
&lt;br /&gt;
ItemHasStatus(ITEM:item, STATUS:statusId)&lt;br /&gt;
Returns if the item has the status.&lt;br /&gt;
&lt;br /&gt;
ItemIsDestroyed(ITEM:item)&lt;br /&gt;
Returns if the item is destroyed.&lt;br /&gt;
&lt;br /&gt;
ItemGetTemplate(ITEM:item, OUT ITEMTEMPLATE:root)&lt;br /&gt;
Returns the roottemplate of the item.&lt;br /&gt;
&lt;br /&gt;
ItemGetSkillId(ITEM:item, OUT SKILL:root)&lt;br /&gt;
Returns the skillid of the item if it has one.&lt;br /&gt;
&lt;br /&gt;
ItemGetItemType(ITEM:item, OUT FIXEDSTRING:itemType)&lt;br /&gt;
Returns the itemtype of the item: common, unique, rare, ...&lt;br /&gt;
&lt;br /&gt;
ItemGetStatusSourceCharacter(ITEM:item, STATUS:statusId, OUT CHARACTER:source)&lt;br /&gt;
Get the source character of a status&lt;br /&gt;
&lt;br /&gt;
ItemGetStatusSourceItem(ITEM:item, STATUS:statusId, OUT ITEM:source)&lt;br /&gt;
Get the source item of a status&lt;br /&gt;
&lt;br /&gt;
ItemCanBeMoved(ITEM:item)&lt;br /&gt;
Returns if the item can be moved.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== TRIGGERS ==&lt;br /&gt;
&lt;br /&gt;
OnCharacterEvent(CHARACTER:character, STRING:eventName)&lt;br /&gt;
Thrown from scripts or story&lt;br /&gt;
&lt;br /&gt;
OnCharacterItemEvent(CHARACTER:character, ITEM:item, STRING:eventName)&lt;br /&gt;
Thrown from scripts or story&lt;br /&gt;
&lt;br /&gt;
OnCharacterCharacterEvent(CHARACTER:character, CHARACTER:character, STRING:eventName)&lt;br /&gt;
Thrown from scripts or story&lt;br /&gt;
&lt;br /&gt;
OnItemEvent(ITEM:item, STRING:eventName)&lt;br /&gt;
Thrown from scripts or story&lt;br /&gt;
&lt;br /&gt;
OnItemDestroyed(ITEM:item)&lt;br /&gt;
Thrown when an item is destroyed&lt;br /&gt;
&lt;br /&gt;
OnItemDestroying(ITEM:item)&lt;br /&gt;
Thrown when an item is being destroyed&lt;br /&gt;
&lt;br /&gt;
OnItemOpened(ITEM:item)&lt;br /&gt;
Thrown when an item is opened&lt;br /&gt;
&lt;br /&gt;
OnItemClosed(ITEM:item)&lt;br /&gt;
Thrown when an item is closed&lt;br /&gt;
&lt;br /&gt;
OnItemDropped(ITEM:item, STRING:itemTemplate)&lt;br /&gt;
Thrown when an item is dropped&lt;br /&gt;
&lt;br /&gt;
OnGlobalFlagSet(FIXEDSTRING:eventName)&lt;br /&gt;
Thrown when a global event is set&lt;br /&gt;
&lt;br /&gt;
OnGlobalFlagCleared(FIXEDSTRING:eventName)&lt;br /&gt;
Thrown when a global event is cleared&lt;br /&gt;
&lt;br /&gt;
OnCharacterFlagSet(FIXEDSTRING:eventName, CHARACTER:character)&lt;br /&gt;
Thrown when a dialog event is set on a character&lt;br /&gt;
&lt;br /&gt;
OnCharacterFlagCleared(FIXEDSTRING:eventName, CHARACTER:character)&lt;br /&gt;
Thrown when a dialog event is cleared on a character&lt;br /&gt;
&lt;br /&gt;
OnItemFlagSet(FIXEDSTRING:eventName, ITEM:item)&lt;br /&gt;
Thrown when a dialog event is set on an item&lt;br /&gt;
&lt;br /&gt;
OItemFlagCleared(FIXEDSTRING:eventName, ITEM:item)&lt;br /&gt;
Thrown when a dialog event is cleared on an item&lt;br /&gt;
&lt;br /&gt;
OnTimer(FIXEDSTRING:timerName)&lt;br /&gt;
Thrown when a timer has ended&lt;br /&gt;
&lt;br /&gt;
OnInit(-)&lt;br /&gt;
Thrown when the script is set&lt;br /&gt;
&lt;br /&gt;
OnLoaded(INT:major, INT:minor, INT:revision, INT:build)&lt;br /&gt;
Thrown when the script is loaded from the savegame&lt;br /&gt;
&lt;br /&gt;
OnShutdown(-)&lt;br /&gt;
Thrown when the character's script is removed&lt;br /&gt;
&lt;br /&gt;
OnVariableCleared(FIXEDSTRING:varName)&lt;br /&gt;
Thrown when this object's script variable is cleared from Osiris with ClearVarObject&lt;br /&gt;
&lt;br /&gt;
OnCombatStarted(CHARACTER:source, ITEM:source)&lt;br /&gt;
Thrown when the character entered a combat&lt;br /&gt;
&lt;br /&gt;
OnCombatSwitched(CHARACTER:source, ITEM:source)&lt;br /&gt;
Thrown when the character switch from one combat to another&lt;br /&gt;
&lt;br /&gt;
OnCombatEnded(CHARACTER:source, ITEM:source)&lt;br /&gt;
Thrown when the character left the combat&lt;br /&gt;
&lt;br /&gt;
OnTurn(CHARACTER:source, ITEM:source)&lt;br /&gt;
Thrown when the character's turn starts&lt;br /&gt;
&lt;br /&gt;
OnTurnEnded(CHARACTER:source, ITEM:source)&lt;br /&gt;
Thrown when the character's turn ended&lt;br /&gt;
&lt;br /&gt;
OnCharacterVitalityChanged(CHARACTER:character, FLOAT:percentage)&lt;br /&gt;
Thrown when the characters's vitality changed&lt;br /&gt;
&lt;br /&gt;
OnItemVitalityChanged(ITEM:item, FLOAT:percentage)&lt;br /&gt;
Thrown when the item's vitality changed&lt;br /&gt;
&lt;br /&gt;
OnAttackOfOpportunity(CHARACTER:target)&lt;br /&gt;
Thrown when the characters gets an attack of opportunity on an enemy&lt;br /&gt;
&lt;br /&gt;
OnDamage(DAMAGE:type, FLOAT:percentage, CHARACTER:source, ITEM:source)&lt;br /&gt;
Thrown when the object receives damage&lt;br /&gt;
&lt;br /&gt;
OnMiss(CHARACTER:source, ITEM:source, CHARACTER:target, ITEM:target)&lt;br /&gt;
Thrown when the character dodges something&lt;br /&gt;
&lt;br /&gt;
OnCriticalHit(CHARACTER:source, ITEM:source, CHARACTER:target, ITEM:target)&lt;br /&gt;
Thrown when the character is critical hit&lt;br /&gt;
&lt;br /&gt;
OnBlock(CHARACTER:source, ITEM:source, CHARACTER:target, ITEM:target)&lt;br /&gt;
Thrown when the character blocks something&lt;br /&gt;
&lt;br /&gt;
OnDie(CHARACTER:character, DAMAGE:type, CHARACTER:source, ITEM:source)&lt;br /&gt;
Thrown when the character dies&lt;br /&gt;
&lt;br /&gt;
OnCharacterStatusAttempt(CHARACTER:character, STATUS:status)&lt;br /&gt;
Thrown when the character attempts to gain a status&lt;br /&gt;
&lt;br /&gt;
OnCharacterStatusApplied(CHARACTER:character, STATUS:status)&lt;br /&gt;
Thrown when the character gains a status&lt;br /&gt;
&lt;br /&gt;
OnCharacterStatusRemoved(CHARACTER:character, STATUS:status)&lt;br /&gt;
Thrown when the character loses a status&lt;br /&gt;
&lt;br /&gt;
OnItemStatusAttempt(ITEM:item, STATUS:status)&lt;br /&gt;
Thrown when the item attempts to gain a status&lt;br /&gt;
&lt;br /&gt;
OnItemStatus(ITEM:item, STATUS:status)&lt;br /&gt;
Thrown when the item gains a status&lt;br /&gt;
&lt;br /&gt;
OnItemStatusRemoved(ITEM:item, STATUS:status)&lt;br /&gt;
Thrown when the item loses a status&lt;br /&gt;
&lt;br /&gt;
OnStatusCreateVisuals(STATUS:status)&lt;br /&gt;
Thrown when the item should create the visuals for this status&lt;br /&gt;
&lt;br /&gt;
OnStatusDestroyVisuals(STATUS:status)&lt;br /&gt;
Thrown when the item should destroy the visuals for this status&lt;br /&gt;
&lt;br /&gt;
OnSight(CHARACTER:character)&lt;br /&gt;
Thrown when the character sees another character&lt;br /&gt;
&lt;br /&gt;
OnLostSight(CHARACTER:character)&lt;br /&gt;
Thrown when the character doesn't see another character anymore&lt;br /&gt;
&lt;br /&gt;
OnUseItem(CHARACTER:source, ITEM:item)&lt;br /&gt;
Thrown when a character uses an item&lt;br /&gt;
&lt;br /&gt;
OnPickupItem(CHARACTER:source, ITEM:item)&lt;br /&gt;
Thrown when a character picks up an item&lt;br /&gt;
&lt;br /&gt;
OnCharacterMovedItem(CHARACTER:source, ITEM:item)&lt;br /&gt;
Thrown when a character moved an item&lt;br /&gt;
&lt;br /&gt;
OnItemEquipped(CHARACTER:source, ITEM:item)&lt;br /&gt;
Thrown when a character equips an item&lt;br /&gt;
&lt;br /&gt;
OnItemUnequipped(CHARACTER:source, ITEM:item)&lt;br /&gt;
Thrown when a character unequips an item&lt;br /&gt;
&lt;br /&gt;
OnIterateCharacter(CHARACTER:character, FIXEDSTRING:eventId)&lt;br /&gt;
Thrown by iterators&lt;br /&gt;
&lt;br /&gt;
OnIterateItem(ITEM:source, FIXEDSTRING:eventId)&lt;br /&gt;
Thrown by iterators&lt;br /&gt;
&lt;br /&gt;
OnIterateCount(FIXEDSTRING:eventId, INTEGER:Count)&lt;br /&gt;
Thrown by iterators after all iterations to inform you of the count.&lt;br /&gt;
&lt;br /&gt;
OnStoryOverride(-)&lt;br /&gt;
Throw when story overrides what the character was doing: teleport, movement, on/offstage&lt;br /&gt;
&lt;br /&gt;
OnTriggerEnter(CHARACTER:character, ITEM:item, FIXEDSTRING:eventId)&lt;br /&gt;
Thrown by a character or item entering an EventTrigger&lt;br /&gt;
&lt;br /&gt;
OnTriggerLeave(CHARACTER:character, ITEM:item, FIXEDSTRING:eventId)&lt;br /&gt;
Thrown by a character or item leaving an EventTrigger&lt;br /&gt;
&lt;br /&gt;
OnEnemyChanged(CHARACTER:character, CHARACTER:newEnemy)&lt;br /&gt;
Thrown when the character's currentenemy changes&lt;br /&gt;
&lt;br /&gt;
OnTalentUnlocked(CHARACTER:character, TALENT:newTalent)&lt;br /&gt;
Thrown when the character unlocks a new talent&lt;br /&gt;
&lt;br /&gt;
OnCharacterClassChanged(CHARACTER:character, FIXEDSTRING:class)&lt;br /&gt;
Thrown when the character changes class in the character creation screen&lt;br /&gt;
&lt;br /&gt;
OnCharacterCreationStarted(CHARACTER:character, TRIGGER:creationPoint)&lt;br /&gt;
Thrown when the character creation has started, and gives where the character should walk to&lt;br /&gt;
&lt;br /&gt;
OnCharacterCreationStopped(CHARACTER:character)&lt;br /&gt;
Thrown when the character creation has stopped&lt;br /&gt;
&lt;br /&gt;
OnFunction(FIXEDSTRING:functionName)&lt;br /&gt;
Throws an event on itself with the functionName. This is to fake function calls &lt;br /&gt;
&lt;br /&gt;
OnSkillCast(CHARACTER:character, SKILL_ID:skillID)&lt;br /&gt;
Thrown when the character casts a skill&lt;br /&gt;
&lt;br /&gt;
OnSkillCombatComment(CHARACTER:character, SKILL_ID:skillID)&lt;br /&gt;
Thrown when the character needs to make a comment&lt;br /&gt;
&lt;br /&gt;
OnCharacterUsedSkillOnMe(CHARACTER:character, SKILL_ID:skillID)&lt;br /&gt;
Thrown when you are hit by a skill from a character&lt;br /&gt;
&lt;br /&gt;
OnItemUnlocked(ITEM: item, CHARACTER:character, ITEM:key)&lt;br /&gt;
Thrown when an item gets unlocked by a character.&lt;br /&gt;
&lt;br /&gt;
OnAutomatedDialogEnded(STRING:dialogName, INT:instanceID)&lt;br /&gt;
Thrown when a automated dialog is ended for this speaker&lt;br /&gt;
&lt;br /&gt;
OnAutomatedDialogStarted(STRING:dialogName, INT:instanceID)&lt;br /&gt;
Thrown when a automated dialog is started for this speaker&lt;br /&gt;
&lt;br /&gt;
OnDialogEnded(STRING:dialogName, INT:instanceID)&lt;br /&gt;
Thrown when a dialog is ended for this speaker&lt;br /&gt;
&lt;br /&gt;
OnCrimeSensibleAction(INT:IsPrimary; FIXEDSTRING:regionID, INT:crimeID, FIXEDSTRING:reactionName, STRING:primaryDialog, CHARACTER:criminal1, CHARACTER:criminal2, CHARACTER:criminal3, CHARACTER:criminal4)&lt;br /&gt;
Thrown when a character needs to perform a sensible action against criminals&lt;br /&gt;
&lt;br /&gt;
OnCrimeInterrogationRequest(FIXEDSTRING:regionID, INT:crimeID, CHARACTER:criminal1, CHARACTER:criminal2, CHARACTER:criminal3, CHARACTER:criminal4)&lt;br /&gt;
Thrown when a character needs to perform an interrogation against criminals&lt;br /&gt;
&lt;br /&gt;
OnCrimeInvestigate(INT:crimeID; FLOAT3:CrimePosition)&lt;br /&gt;
One NPC investigates a crimescene&lt;br /&gt;
&lt;br /&gt;
OnCrimeAlarmed(INT:crimeID; FLOAT3:CrimePosition)&lt;br /&gt;
All NPCs in a crimearea start looking around.&lt;br /&gt;
&lt;br /&gt;
OnCrimeReturnToNormal(-)&lt;br /&gt;
Investigation or Alarm timed out.&lt;br /&gt;
&lt;br /&gt;
OnCrimeAborted(-)&lt;br /&gt;
The game interrupted the sensible action of this NPC.&lt;br /&gt;
&lt;br /&gt;
OnSplineControlPointReached(INT:Index, INT:EndReached, STRING:EventString)&lt;br /&gt;
Thrown when a character reached a spline node.&lt;br /&gt;
&lt;br /&gt;
OnFinishCalculationAi(-)&lt;br /&gt;
Thrown when the calculation of the AI is finished.&lt;br /&gt;
&lt;br /&gt;
OnGrenadeLand(INT:hitObstacle, CHARACTER:caster)&lt;br /&gt;
Thrown when the grenades lands&lt;br /&gt;
&lt;br /&gt;
FetchCharacterApplyStatusData(LIST&amp;lt;STATUS&amp;gt;:removeStatuses, STATUS:applyStatus, INT:turns; CHARACTER:character, STATUS:status)&lt;br /&gt;
Fetch from script which statuses to remove and apply.&lt;br /&gt;
&lt;br /&gt;
FetchItemApplyStatusData(LIST&amp;lt;STATUS&amp;gt;:removeStatuses, STATUS:applyStatus, INT:turns; ITEM:item, STATUS:status)&lt;br /&gt;
Fetch from script which statuses to remove and apply.&lt;br /&gt;
&lt;br /&gt;
FetchItemSkillOnDamage(INT:hasSkill, SKILL_ID:skillID, INT:casterLevel; INT:damage, DAMAGE_TYPE:damageType)&lt;br /&gt;
Fetch from script what skill to execute on damage.&lt;br /&gt;
&lt;br /&gt;
OnActivate(-)&lt;br /&gt;
Thrown when a character/item activates&lt;br /&gt;
&lt;br /&gt;
OnDeactivate(-)&lt;br /&gt;
Thrown when a character/item deactivates&lt;br /&gt;
&lt;br /&gt;
OnCharacterUsedSourcePoint(CHARACTER:character)&lt;br /&gt;
Thrown when a character uses a source point&lt;br /&gt;
&lt;br /&gt;
OnSkillAdded(CHARACTER:character, SKILL_ID:skillId, INT:learned)&lt;br /&gt;
Thrown when a character learns a skill&lt;br /&gt;
&lt;br /&gt;
OnSkillActivated(CHARACTER:character, SKILL_ID:skillId)&lt;br /&gt;
Thrown when a character activates (=adds to memory) a skill&lt;br /&gt;
&lt;br /&gt;
OnSkillDeactivated(CHARACTER:character, SKILL_ID:skillId)&lt;br /&gt;
Thrown when a character deactivates (=removes from memory) a skill&lt;br /&gt;
&lt;br /&gt;
OnBetterReactionFound(FIXEDSTRING:reactionName)&lt;br /&gt;
Thrown when the reaction is interrupted by another reaction&lt;br /&gt;
&lt;br /&gt;
OnNoReactionFound(-)&lt;br /&gt;
Thrown when the reaction is interrupted because no reaction is valid&lt;br /&gt;
&lt;br /&gt;
OnScriptDisabled(-)&lt;br /&gt;
Thrown when the reaction is interrupted because the scriptcontroller is disabled&lt;br /&gt;
&lt;br /&gt;
OnManualInterrupt(FIXEDSTRING:reactionName)&lt;br /&gt;
Thrown when the reaction is interrupted using the interrupt action&lt;br /&gt;
&lt;br /&gt;
OnException(-)&lt;br /&gt;
Thrown when the reaction is interrupted by an exception&lt;br /&gt;
&lt;br /&gt;
OnMovementFailed(FLOAT3:targetPos)&lt;br /&gt;
Thrown when the reaction is interrupted by a move action failing&lt;br /&gt;
&lt;br /&gt;
OnItemFlagShared(FIXEDSTRING:eventName, ITEM:item, INT:newValue)&lt;br /&gt;
Thrown when a dialog event is shared with an item&lt;br /&gt;
&lt;br /&gt;
OnCharacterFlagShared(FIXEDSTRING:eventName, CHARACTER:character, INT:newValue)&lt;br /&gt;
Thrown when a dialog event is shared with a character&lt;br /&gt;
&lt;br /&gt;
OnItemOffStageChanged(CHARACTER:character)&lt;br /&gt;
Thrown when a character is set on/off stage&lt;br /&gt;
&lt;br /&gt;
OnCharacterOffStageChanged(ITEM:item)&lt;br /&gt;
Thrown when a item is set on/off stage&lt;br /&gt;
&lt;br /&gt;
OnCharacterTeleported(CHARACTER:target, CHARACTER:cause, FLOAT3:oldPosition, FLOAT3:newPosition, SKILL_ID:skillId)&lt;br /&gt;
Thrown when a character gets teleported with a teleport skill&lt;br /&gt;
&lt;br /&gt;
OnCombatTick(-)&lt;br /&gt;
Thrown when this object ticks in combat. Only thrown for objects that don't get a turn.&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Community_page_submission&amp;diff=3234</id>
		<title>Community page submission</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Community_page_submission&amp;diff=3234"/>
		<updated>2017-09-24T01:13:53Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;b&amp;gt;&lt;br /&gt;
Welcome to the community page submission section.&amp;lt;br /&amp;gt;&lt;br /&gt;
First and foremost: thanks to all of you from everyone at Larian Studios!&amp;lt;br /&amp;gt;&lt;br /&gt;
Without your love and feedback, we wouldn't be where we are today.&lt;br /&gt;
&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
That being said, let's do our best to keep this wiki just as lovely as you guys:&amp;lt;br /&amp;gt;&lt;br /&gt;
# To add your page to the main wiki pages, please add it to the list below.&lt;br /&gt;
# Once our moderators get a chance, they'll review the submissions and move approved pages to the appropriate location on the [[Community editor guides | Editor Guides]] and/or [[Community tutorials | Community Tutorials]] section.&lt;br /&gt;
# We'll leave the page link a couple of days on here with an approval stamp and a link to its new location, to give the editor a chance to find out where his/her page went.&lt;br /&gt;
# We love you all very much, but we do not tolerate any misbehavior. Please refrain from using foul language, messing with other people's pages,...&lt;br /&gt;
# This wiki follows the general open format. Anyone is allowed to edit a page. View an edit to your page as interest in your content, not as criticism.&lt;br /&gt;
# But do try to avoid editing someone else's pages before it has been approved and moved to the main sections, unless of course you have the permission to do so from the original editor.&lt;br /&gt;
# As always, stay awesome [[File: heart.png | 32px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Example Submission|Example submission]]&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Pak Extractor Guide|Pak Extractor Guide]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community editor guides|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Tutorial - Implementing a Basic Quest|Tutorial - Implementing a Basic Quest]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[NPC Patrols|NPC Patrols]]&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Basic Character Creation]]&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Character and Item Script Triggers, Calls, and Queries]]&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Community:_Stats_editor&amp;diff=2833</id>
		<title>Community: Stats editor</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Community:_Stats_editor&amp;diff=2833"/>
		<updated>2017-09-17T22:21:27Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [https://www.twitch.tv/videos/175337802 Manual stat editing with unpacked files tutorial video by Baardvark]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Pak_Extractor_Guide&amp;diff=2785</id>
		<title>Pak Extractor Guide</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Pak_Extractor_Guide&amp;diff=2785"/>
		<updated>2017-09-15T20:34:02Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;While most of the game can be accessed through the editor, a few features remain outside of the editor. To access these, you'll need to extract the game files. You can do this using Norbyte's Extractor Tool, found [https://s3.eu-central-1.amazonaws.com/nb-stor/dos/ExportTool/ExportTool-v1.8.2.zip here].&lt;br /&gt;
&lt;br /&gt;
After downloading this tool, open it, and go to the &amp;quot;PAK / LSV Tools&amp;quot; tab. Select .pak file in your game data folder (usually SteamApps/common/Divinity Original Sin 2/Data), and a location to extract it to (not into the game data folder itself.) Most pertinent information will be found in Shared.pak.&lt;br /&gt;
&lt;br /&gt;
If you're looking for character creation presets, you'll find them in Shared's extracted Mods/Shared/CharacterCreation folder. Stats that are not currently available in the editor are found in Public/Shared/Stats/Generated.&lt;br /&gt;
&lt;br /&gt;
[[File:Pak Extractor.jpg|none|Norbyte's Pak Extractor]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Pak_Extractor_Guide&amp;diff=2784</id>
		<title>Pak Extractor Guide</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Pak_Extractor_Guide&amp;diff=2784"/>
		<updated>2017-09-15T20:33:33Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;While most of the game can be accessed through the editor, a few features remain outside of the editor. To access these, you'll need to extract the game files. You can do this using Norbyte's Extractor Tool, found [https://s3.eu-central-1.amazonaws.com/nb-stor/dos/ExportTool/ExportTool-v1.8.2.zip here].&lt;br /&gt;
&lt;br /&gt;
After downloading this tool, open it, and go to the &amp;quot;PAK / LSV Tools&amp;quot; tab. Select .pak file in your game data folder (usually SteamApps/common/Divinity Original Sin 2/Data), and a location to extract it to (not into the game data folder itself.) Most pertinent information will be found in Shared.pak.&lt;br /&gt;
&lt;br /&gt;
If you're looking for character creation presets, you'll find them in the extracted Mods/Shared/CharacterCreation folder. Stats that are not currently available in the editor are found in Public/Shared/Stats/Generated.&lt;br /&gt;
&lt;br /&gt;
[[File:Pak Extractor.jpg|none|Norbyte's Pak Extractor]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=File:Pak_Extractor.jpg&amp;diff=2783</id>
		<title>File:Pak Extractor.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=File:Pak_Extractor.jpg&amp;diff=2783"/>
		<updated>2017-09-15T20:31:33Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: Image of Pak Extractor by Norbyte&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Image of Pak Extractor by Norbyte&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Pak_Extractor_Guide&amp;diff=2782</id>
		<title>Pak Extractor Guide</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Pak_Extractor_Guide&amp;diff=2782"/>
		<updated>2017-09-15T20:30:55Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: Created page with &amp;quot;While most of the game can be accessed through the editor, a few features remain outside of the editor. To access these, you'll need to extract the game files. You can do this...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;While most of the game can be accessed through the editor, a few features remain outside of the editor. To access these, you'll need to extract the game files. You can do this using Norbyte's Extractor Tool, found [https://s3.eu-central-1.amazonaws.com/nb-stor/dos/ExportTool/ExportTool-v1.8.2.zip here].&lt;br /&gt;
&lt;br /&gt;
After downloading this tool, open it, and go to the &amp;quot;PAK / LSV Tools&amp;quot; tab. Select .pak file in your game data folder (usually SteamApps/common/Divinity Original Sin 2/Data), and a location to extract it to (not into the game data folder itself.) Most pertinent information will be found in Shared.pak.&lt;br /&gt;
&lt;br /&gt;
If you're looking for character creation presets, you'll find them in the extracted Mods/Shared/CharacterCreation folder. Stats that are not currently available in the editor are found in Public/Shared/Stats/Generated.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg|Caption1&lt;br /&gt;
Example.jpg|Caption2&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Community_page_submission&amp;diff=2781</id>
		<title>Community page submission</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Community_page_submission&amp;diff=2781"/>
		<updated>2017-09-15T20:23:42Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;b&amp;gt;&lt;br /&gt;
Welcome to the community page submission section.&amp;lt;br /&amp;gt;&lt;br /&gt;
First and foremost: thanks to all of you from everyone at Larian Studios!&amp;lt;br /&amp;gt;&lt;br /&gt;
Without your love and feedback, we wouldn't be where we are today.&lt;br /&gt;
&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
That being said, let's do our best to keep this wiki just as lovely as you guys:&amp;lt;br /&amp;gt;&lt;br /&gt;
# To add your page to the main wiki pages, please add it to the list below.&lt;br /&gt;
# Once our moderators get a chance, they'll review the submissions and move approved pages to the appropriate location on the [[Community editor guides | Editor Guides]] and/or [[Community tutorials | Community Tutorials]] section.&lt;br /&gt;
# We love you all very much, but we do not tolerate any misbehavior. Please refrain from using foul language, messing with other people's pages,...&lt;br /&gt;
# This wiki follows the general open format. Anyone is allowed to edit a page. View an edit to your page as interest in your content, not as criticism.&lt;br /&gt;
# But do try to avoid editing someone else's pages before it has been approved and moved to the main sections, unless of course you have the permission to do so from the original editor.&lt;br /&gt;
# As always, stay awesome [[File: heart.png | 32px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Example Submission|Example submission]]&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Pak Extractor Guide|Pak Extractor Guide]]&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=2180</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=2180"/>
		<updated>2017-09-12T20:40:29Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting. Almost any kind of skill is possible, though some things are more difficult than others. Skills, like most stats, can be edited in both the editor's stat editor and directly in a text editor. Both have their advantages, though it is recommended you start with adding skills in the stat editor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Type == &lt;br /&gt;
&lt;br /&gt;
Skill Type determines the fundamental behavior of the skill and what parameters are available to edit.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
== Basic Parameters ==&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. When referencing the skill (e.g., in a skillbook), the skill is referred to by ''Skilltype_Skillname''&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
== Damage ==&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''DeathType''', the death animation and effect the skill generates.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
== Range ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* '''Requirement''', a weapon requirement: StaffWeapon, MeleeWeapon, RangedWeapon, DaggerWeapon, ShieldWeapon, None&lt;br /&gt;
* '''Requirements''', conditional requirements: Combat, Immobile (typically checking !Immobile for teleport skills)&lt;br /&gt;
* '''Memorization Requirements''', ability requirements (e.g., RangerLore 2, or Sneaking 1) to memorize the skill&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetConditions''', what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
* '''AOEConditions''', conditions for an AOEBoost skill property.&lt;br /&gt;
* '''ForceTarget''', If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
* '''CanTargetCharacters''', if yes, can target characters&lt;br /&gt;
* '''CanTargetItems''', If yes, can target items.&lt;br /&gt;
* '''CanTargetTerrain''', If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;br /&gt;
&lt;br /&gt;
 Conditions: Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Note'': Combat should generally be a requirement, not a condition.&lt;br /&gt;
&lt;br /&gt;
'''Examples'''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|(HasStatus:BURNING)|SurfaceFire // target either entities standing in fire or burning, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // (Chain Heal) target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
== Skill Properties ==&lt;br /&gt;
&lt;br /&gt;
The ''SkillProperties'' parameter gives skills status effects and a few other specific effects. Like conditions, skill properties can take simple logic, usually in the following form &lt;br /&gt;
&lt;br /&gt;
'''TargetType:IF(Conditions):Action'''&lt;br /&gt;
&lt;br /&gt;
Property Actions&lt;br /&gt;
&lt;br /&gt;
* '''Statuses''', in the form of ''STATUS,Chance,Duration.''&lt;br /&gt;
* '''AOE dependent statuses''', with ''AOEBOOST:STATUS,Chance,Duration''&lt;br /&gt;
* '''Surface creation''', in the form of ''CreateSurface,Radius,?,SurfaceType,Chance,Duration?''&amp;quot;&lt;br /&gt;
* '''Target surface creation''', surfaces appear only on targets with ''TargetCreateSurface.''&lt;br /&gt;
* '''Cone surface creation''', surfaces appears in a cone area ''TargetCreateConeSurface''.&lt;br /&gt;
* '''Surface manipulation''', change a surface or cloud.&lt;br /&gt;
 Ignite, Melt, Freeze, Electrify, Bless, Curse, Condense, Vaporize, Bloodify, Contaminate, Oilify, Shatter&lt;br /&gt;
* '''Resurrect''', Revive a character with ''Resurrect,Chance?,VitalityOnRevived''.&lt;br /&gt;
* '''Backstab conditions''', including ''AlwaysBackstab'' and ''CanBackstab''.&lt;br /&gt;
* '''High ground''', use ''AlwaysHighGround'' to always grant a skill high ground bonuses.&lt;br /&gt;
* '''Equalize''', take vitality and armor percentages and equalize them among certain targets with ''Equalize, TargetType''.&lt;br /&gt;
* '''Summon''', for specific instances, you can summon characters with ''Summon,Template,Duration,SummonType,?.'' SummonType is totem or '-', for non-totem?&lt;br /&gt;
* '''Source''', steal source points with ''DRAIN,????''.&lt;br /&gt;
* '''Swap''', Swap places with your target with ''SwapPlaces,?,?,Effect,Effect''.&lt;br /&gt;
* '''Sabotage''', blow up a random arrow or grenade in an inventory with ''Sabotage,Amount.''&lt;br /&gt;
* '''Movement based damage''', with ''DAMAGE_ON_MOVE,Chance,Duration,?,?''.&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SkillProperties !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BLEEDING,100,2 || 100% chance to set bleeding for 2 turns&lt;br /&gt;
|-&lt;br /&gt;
| AOEBOOST:HARMONY,100,2 || Heal the target according to the number of allies within range (determined by area radius and AOEboost Conditions)&lt;br /&gt;
|-&lt;br /&gt;
| CreateSurface,2,,Fire,100,2 || 100% chance to create a circle of fire with 2m radius that lasts 2 rounds.&lt;br /&gt;
|-&lt;br /&gt;
| CLEANSE_WOUNDS,100,1;TargetCreateSurface,1,,Water || Heal targets and create water of 1m radius under them.&lt;br /&gt;
|-&lt;br /&gt;
| Equalize,All; Sabotage,1 || Equalize the health of a group of targets, and explode 1 random arrow or grenade in each of their inventories.&lt;br /&gt;
|-&lt;br /&gt;
| Resurrect,500,20 || Revive a character with 20% vitality.&lt;br /&gt;
|-&lt;br /&gt;
| SELF:IF(Surface:Fire):ARROWHEAD_FIRE,100,2 || If targeting a fire surface, apply fire damage buff to yourself for 2 turns.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S):INF_FIRE,100,-1 || If targeting an incarnate, permanently grant it fire infusion &lt;br /&gt;
|-&lt;br /&gt;
| Summon,4cd5defc-5d36-4d76-b606-b6ca69a13617,4,totem,Target_DummyTargetSkill; || Summon a bone totem for 4 turns. &lt;br /&gt;
|-&lt;br /&gt;
| Ignite;Melt;Contaminate || Explode existing oil and poison surfaces, melt ice, and turn water into poison&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S&amp;amp;(InSurface:SurfaceFire&amp;amp;#124;InSurface:SurfaceLava)):INF_FIRE,100,-1 || If target is incarnate and in fire or lava, permanently grant fire infusion.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(HasStatus:BLEEDING&amp;amp;#124;InSurface:SurfaceBlood):DECAYING_TOUCH,100,2 || If target is bleeding or standing in blood, then apply decaying touch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
&lt;br /&gt;
Templates are used any skill that uses &amp;quot;entities&amp;quot; including projectiles, summons, and walls. The entry of a template is a root templates GUID. &lt;br /&gt;
&lt;br /&gt;
A projectile template defines the visual of the projectile, as well as its arc and the visual of the arc preview.&lt;br /&gt;
&lt;br /&gt;
Summon templates are the character or item summoned (either as a direct summon skill, or as an skill property Summon entry entry.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Name and Description ==&lt;br /&gt;
&lt;br /&gt;
Skill display name, description, and stats description use Translated String Keys to display text. However, the stats editor can automatically generate the translated strings with the &amp;quot;Export Translated String Keys&amp;quot; option in the menu.&lt;br /&gt;
&lt;br /&gt;
* ''DisplayName'', the primary display name of the skill seen by players.&lt;br /&gt;
* ''Description'', the main description of the skill. Often references StatsDescriptionParams with variables like [1], [2], etc, (see examples).&lt;br /&gt;
* ''StatsDescription'', a small secondary description below the main description and effects. Typically something unchanging, like the range, or detailed comments about how statuses or the skill functions.&lt;br /&gt;
* ''StatsDescriptionParams'', the stats referenced by variables. The first entry will apply to [1], the second entry to [2], etc.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
* ''DisplayName'': Magical Poison Dart&lt;br /&gt;
* ''Description'': Cast a magical poisonous dart that does [1] damage.&lt;br /&gt;
* ''StatsDescription'': Range: [2]&amp;lt;nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt;Poisoned deals poison damage over time.&amp;lt;nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt;Can target terrain to create ooze surface.&lt;br /&gt;
* ''StatsDescriptionParams'': Damage;TargetRadius&lt;br /&gt;
&lt;br /&gt;
== Icon, Animations and Effects ==&lt;br /&gt;
&lt;br /&gt;
It is easiest to use existing icons, animations and effects for your skills. There are many existing icons you can use, either unused from D:OS1, or used in very different contexts than skills. You may want to mix and match existing animations and spell effects from existing skills to create a more original feeling skill. The powerful effect editor will let you create new effects relatively easily, however. Creating new animations will require outside software and a great deal of work.&lt;br /&gt;
&lt;br /&gt;
* ''Icon'', the icon for the skill, which appears on the skillbar and skill screen&lt;br /&gt;
&lt;br /&gt;
* ''PrepareAnimationInit'', the initial animation to set up the looping animation when preparing the skill, before actually casting it (e.g., deciding where to shoot a projectile).&lt;br /&gt;
* ''PrepareAnimationLoop'', the looping animation after the Init animation. The Init and Loop animation should be of the same animation type.&lt;br /&gt;
* ''PrepareEffect'', any visual effects associated with preparing the skill, like electricity flowing between the hands. These typically are associated with the body, hands, feet, or above the head, in the form of ''Effect:Location''&lt;br /&gt;
&lt;br /&gt;
* ''CastAnimation'', the animation when actually using the skill. This should mach the type of prepare and loop effect as well.&lt;br /&gt;
* ''CastSelfAnimation'', the animation on the character when actually using the skill. Usually the same as CastAnimation ???&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Best Practice ==&lt;br /&gt;
&lt;br /&gt;
When designing skills, consider the niche it fills and what sort of flavor it has. Try to make the skill feel distinct, but easy to understand. A little flavor text and a good name can go a long way to making a skill interesting. Consider the roleplay value this skill might have in a GM mode.&lt;br /&gt;
&lt;br /&gt;
If you want the AI to use new skills intelligently, avoid scripting if you can. The AI can adapt to new skills, and can interpret the value of statuses with simple stat bonuses pr reductions. In general, a skill that does not depend on scripts will have less opportunity for bugs.&lt;br /&gt;
&lt;br /&gt;
If AI use is not a priority, and you've exhausted possibilities within the stats editor, then scripting can open up new opportunities. In general, the easiest way to script a skill is to have the skill apply a custom status, and use the OnStatusApplied(__Me,YOURSTATUS) trigger in a character script that every character this skill can be used on has (e.g., Base, or &amp;quot;Player&amp;quot; if this skill is only cast on players.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Stats]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=2160</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=2160"/>
		<updated>2017-09-12T17:11:47Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: /* Skill Properties */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting. Almost any kind of skill is possible, though some things are more difficult than others. Skills, like most stats, can be edited in both the editor's stat editor and directly in a text editor. Both have their advantages, though it is recommended you start with adding skills in the stat editor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Type == &lt;br /&gt;
&lt;br /&gt;
Skill Type determines the fundamental behavior of the skill and what parameters are available to edit.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
== Basic Parameters ==&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. When referencing the skill (e.g., in a skillbook), the skill is referred to by ''Skilltype_Skillname''&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
== Damage ==&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''DeathType''', the death animation and effect the skill generates.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
== Range ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* '''Requirement''', a weapon requirement: StaffWeapon, MeleeWeapon, RangedWeapon, DaggerWeapon, ShieldWeapon, None&lt;br /&gt;
* '''Requirements''', conditional requirements: Combat, Immobile (typically checking !Immobile for teleport skills)&lt;br /&gt;
* '''Memorization Requirements''', ability requirements (e.g., RangerLore 2, or Sneaking 1) to memorize the skill&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetConditions''', what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
* '''AOEConditions''', conditions for an AOEBoost skill property.&lt;br /&gt;
* '''ForceTarget''', If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
* '''CanTargetCharacters''', if yes, can target characters&lt;br /&gt;
* '''CanTargetItems''', If yes, can target items.&lt;br /&gt;
* '''CanTargetTerrain''', If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;br /&gt;
&lt;br /&gt;
 Conditions: Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Note'': Combat should generally be a requirement, not a condition.&lt;br /&gt;
&lt;br /&gt;
'''Examples'''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|(HasStatus:BURNING)|SurfaceFire // target either entities standing in fire or burning, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // (Chain Heal) target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
== Skill Properties ==&lt;br /&gt;
&lt;br /&gt;
The ''SkillProperties'' parameter gives skills status effects and a few other specific effects. Like conditions, skill properties can take simple logic, usually in the following form &lt;br /&gt;
&lt;br /&gt;
'''TargetType:IF(Conditions):Action'''&lt;br /&gt;
&lt;br /&gt;
Property Actions&lt;br /&gt;
&lt;br /&gt;
* '''Statuses''', in the form of ''STATUS,Chance,Duration.''&lt;br /&gt;
* '''AOE dependent statuses''', with ''AOEBOOST:STATUS,Chance,Duration''&lt;br /&gt;
* '''Surface creation''', in the form of ''CreateSurface,Radius,?,SurfaceType,Chance,Duration?''&amp;quot;&lt;br /&gt;
* '''Target surface creation''', surfaces appear only on targets with ''TargetCreateSurface.''&lt;br /&gt;
* '''Cone surface creation''', surfaces appears in a cone area ''TargetCreateConeSurface''.&lt;br /&gt;
* '''Surface manipulation''', change a surface or cloud.&lt;br /&gt;
 Ignite, Melt, Freeze, Electrify, Bless, Curse, Condense, Vaporize, Bloodify, Contaminate, Oilify, Shatter&lt;br /&gt;
* '''Resurrect''', Revive a character with ''Resurrect,Chance?,VitalityOnRevived''.&lt;br /&gt;
* '''Backstab conditions''', including ''AlwaysBackstab'' and ''CanBackstab''.&lt;br /&gt;
* '''High ground''', use ''AlwaysHighGround'' to always grant a skill high ground bonuses.&lt;br /&gt;
* '''Equalize''', take vitality and armor percentages and equalize them among certain targets with ''Equalize, TargetType''.&lt;br /&gt;
* '''Summon''', for specific instances, you can summon characters with ''Summon,Template,Duration,SummonType,?.'' SummonType is totem or '-', for non-totem?&lt;br /&gt;
* '''Source''', steal source points with ''DRAIN,????''.&lt;br /&gt;
* '''Swap''', Swap places with your target with ''SwapPlaces,?,?,Effect,Effect''.&lt;br /&gt;
* '''Sabotage''', blow up a random arrow or grenade in an inventory with ''Sabotage,Amount.''&lt;br /&gt;
* '''Movement based damage''', with ''DAMAGE_ON_MOVE,Chance,Duration,?,?''.&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SkillProperties !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BLEEDING,100,2 || 100% chance to set bleeding for 2 turns&lt;br /&gt;
|-&lt;br /&gt;
| AOEBOOST:HARMONY,100,2 || Heal the target according to the number of allies within range (determined by area radius and AOEboost Conditions)&lt;br /&gt;
|-&lt;br /&gt;
| CreateSurface,2,,Fire,100,2 || 100% chance to create a circle of fire with 2m radius that lasts 2 rounds.&lt;br /&gt;
|-&lt;br /&gt;
| CLEANSE_WOUNDS,100,1;TargetCreateSurface,1,,Water || Heal targets and create water of 1m radius under them.&lt;br /&gt;
|-&lt;br /&gt;
| Equalize,All; Sabotage,1 || Equalize the health of a group of targets, and explode 1 random arrow or grenade in each of their inventories.&lt;br /&gt;
|-&lt;br /&gt;
| Resurrect,500,20 || Revive a character with 20% vitality.&lt;br /&gt;
|-&lt;br /&gt;
| SELF:IF(Surface:Fire):ARROWHEAD_FIRE,100,2 || If targeting a fire surface, apply fire damage buff to yourself for 2 turns.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S):INF_FIRE,100,-1 || If targeting an incarnate, permanently grant it fire infusion &lt;br /&gt;
|-&lt;br /&gt;
| Summon,4cd5defc-5d36-4d76-b606-b6ca69a13617,4,totem,Target_DummyTargetSkill; || Summon a bone totem for 4 turns. &lt;br /&gt;
|-&lt;br /&gt;
| Ignite;Melt;Contaminate || Explode existing oil and poison surfaces, melt ice, and turn water into poison&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S&amp;amp;(InSurface:SurfaceFire&amp;amp;#124;InSurface:SurfaceLava)):INF_FIRE,100,-1 || If target is incarnate and in fire or lava, permanently grant fire infusion.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(HasStatus:BLEEDING&amp;amp;#124;InSurface:SurfaceBlood):DECAYING_TOUCH,100,2 || If target is bleeding or standing in blood, then apply decaying touch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
&lt;br /&gt;
Templates are used any skill that uses &amp;quot;entities&amp;quot; including projectiles, summons, and walls. The entry of a template is a root templates GUID. &lt;br /&gt;
&lt;br /&gt;
A projectile template defines the visual of the projectile, as well as its arc and the visual of the arc preview.&lt;br /&gt;
&lt;br /&gt;
Summon templates are the character or item summoned (either as a direct summon skill, or as an skill property Summon entry entry.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Name and Description ==&lt;br /&gt;
&lt;br /&gt;
Skill display name, description, and stats description use Translated String Keys to display text. However, the stats editor can automatically generate the translated strings with the &amp;quot;Export Translated String Keys&amp;quot; option in the menu.&lt;br /&gt;
&lt;br /&gt;
* ''DisplayName'', the primary display name of the skill seen by players.&lt;br /&gt;
* ''Description'', the main description of the skill. Often references StatsDescriptionParams with variables like [1], [2], etc, (see examples).&lt;br /&gt;
* ''StatsDescription'', a small secondary description below the main description and effects. Typically something unchanging, like the range, or detailed comments about how statuses or the skill functions.&lt;br /&gt;
* ''StatsDescriptionParams'', the stats referenced by variables. The first entry will apply to [1], the second entry to [2], etc.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
* ''DisplayName'': Magical Poison Dart&lt;br /&gt;
* ''Description'': Cast a magical poisonous dart that does [1] damage.&lt;br /&gt;
* ''StatsDescription'': Range: [2]&amp;lt;nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt;Poisoned deals poison damage over time.&amp;lt;nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt;Can target terrain to create ooze surface.&lt;br /&gt;
* ''StatsDescriptionParams'': Damage;TargetRadius&lt;br /&gt;
&lt;br /&gt;
== Best Practice ==&lt;br /&gt;
&lt;br /&gt;
When designing skills, consider the niche it fills and what sort of flavor it has. Try to make the skill feel distinct, but easy to understand. A little flavor text and a good name can go a long way to making a skill interesting.&lt;br /&gt;
&lt;br /&gt;
If you want the AI to use new skills intelligently, avoid scripting if you can. The AI can adapt to new skills, and can interpret the value of statuses with simple stat bonuses pr reductions. In general, a skill that does not depend on scripts will have less opportunity for bugs.&lt;br /&gt;
&lt;br /&gt;
If AI use is not a priority, and you've exhausted possibilities within the stats editor, then scripting can open up new opportunities. In general, the easiest way to script a skill is to have the skill apply a custom status, and use the OnStatusApplied(__Me,YOURSTATUS) trigger in a character script that every character this skill can be used on has (e.g., Base, or &amp;quot;Player&amp;quot; if this skill is only cast on players.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Stats]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=2159</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=2159"/>
		<updated>2017-09-12T17:10:36Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: /* Damage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting. Almost any kind of skill is possible, though some things are more difficult than others. Skills, like most stats, can be edited in both the editor's stat editor and directly in a text editor. Both have their advantages, though it is recommended you start with adding skills in the stat editor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Type == &lt;br /&gt;
&lt;br /&gt;
Skill Type determines the fundamental behavior of the skill and what parameters are available to edit.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
== Basic Parameters ==&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. When referencing the skill (e.g., in a skillbook), the skill is referred to by ''Skilltype_Skillname''&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
== Damage ==&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''DeathType''', the death animation and effect the skill generates.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
== Range ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* '''Requirement''', a weapon requirement: StaffWeapon, MeleeWeapon, RangedWeapon, DaggerWeapon, ShieldWeapon, None&lt;br /&gt;
* '''Requirements''', conditional requirements: Combat, Immobile (typically checking !Immobile for teleport skills)&lt;br /&gt;
* '''Memorization Requirements''', ability requirements (e.g., RangerLore 2, or Sneaking 1) to memorize the skill&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetConditions''', what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
* '''AOEConditions''', conditions for an AOEBoost skill property.&lt;br /&gt;
* '''ForceTarget''', If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
* '''CanTargetCharacters''', if yes, can target characters&lt;br /&gt;
* '''CanTargetItems''', If yes, can target items.&lt;br /&gt;
* '''CanTargetTerrain''', If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;br /&gt;
&lt;br /&gt;
 Conditions: Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Note'': Combat should generally be a requirement, not a condition.&lt;br /&gt;
&lt;br /&gt;
'''Examples'''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|(HasStatus:BURNING)|SurfaceFire // target either entities standing in fire or burning, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // (Chain Heal) target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
== Skill Properties ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SkillProperties&amp;quot; parameter gives skills status effects and a few other specific effects. Like conditions, skill properties can take simple logic, usually in the following form &lt;br /&gt;
&lt;br /&gt;
TargetType:IF(Conditions):Action.&lt;br /&gt;
&lt;br /&gt;
Property Actions&lt;br /&gt;
&lt;br /&gt;
* '''Statuses''', in the form of &amp;quot;''STATUS,Chance,Duration.''&amp;quot;&lt;br /&gt;
* '''AOE dependent statuses''', with ''AOEBOOST:STATUS,Chance,Duration''&lt;br /&gt;
* '''Surface creation''', in the form of &amp;quot;''CreateSurface,Radius,?,SurfaceType,Chance,Duration?''&amp;quot; &lt;br /&gt;
* '''Target surface creation''', surfaces appear only on targets with ''TargetCreateSurface.''&lt;br /&gt;
* '''Cone surface creation''', surfaces appears in a cone area ''TargetCreateConeSurface''.&lt;br /&gt;
* '''Surface manipulation''', change a surface or cloud.&lt;br /&gt;
 Ignite, Melt, Freeze, Electrify, Bless, Curse, Condense, Vaporize, Bloodify, Contaminate, Oilify, Shatter&lt;br /&gt;
* '''Resurrect''', Revive a character with ''Resurrect,Chance?,VitalityOnRevived''.&lt;br /&gt;
* '''Backstab conditions''', including ''AlwaysBackstab'' and ''CanBackstab''.&lt;br /&gt;
* '''High ground''', use ''AlwaysHighGround'' to always grant a skill high ground bonuses.&lt;br /&gt;
* '''Equalize''', take vitality and armor percentages and equalize them among certain targets with ''Equalize, TargetType''.&lt;br /&gt;
* '''Summon''', for specific instances, you can summon characters with ''Summon,Template,Duration,SummonType,?.'' SummonType is totem or '-', for non-totem?&lt;br /&gt;
* '''Source''', steal source points with ''DRAIN,????''.&lt;br /&gt;
* '''Swap''', Swap places with your target with ''SwapPlaces,?,?,Effect,Effect''.&lt;br /&gt;
* '''Sabotage''', blow up a random arrow or grenade in an inventory with ''Sabotage,Amount.''&lt;br /&gt;
* '''Movement based damage''', with ''DAMAGE_ON_MOVE,Chance,Duration,?,?''.&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SkillProperties !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BLEEDING,100,2 || 100% chance to set bleeding for 2 turns&lt;br /&gt;
|-&lt;br /&gt;
| AOEBOOST:HARMONY,100,2 || Heal the target according to the number of allies within range (determined by area radius and AOEboost Conditions)&lt;br /&gt;
|-&lt;br /&gt;
| CreateSurface,2,,Fire,100,2 || 100% chance to create a circle of fire with 2m radius that lasts 2 rounds.&lt;br /&gt;
|-&lt;br /&gt;
| CLEANSE_WOUNDS,100,1;TargetCreateSurface,1,,Water || Heal targets and create water of 1m radius under them.&lt;br /&gt;
|-&lt;br /&gt;
| Equalize,All; Sabotage,1 || Equalize the health of a group of targets, and explode 1 random arrow or grenade in each of their inventories.&lt;br /&gt;
|-&lt;br /&gt;
| Resurrect,500,20 || Revive a character with 20% vitality.&lt;br /&gt;
|-&lt;br /&gt;
| SELF:IF(Surface:Fire):ARROWHEAD_FIRE,100,2 || If targeting a fire surface, apply fire damage buff to yourself for 2 turns.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S):INF_FIRE,100,-1 || If targeting an incarnate, permanently grant it fire infusion &lt;br /&gt;
|-&lt;br /&gt;
| Summon,4cd5defc-5d36-4d76-b606-b6ca69a13617,4,totem,Target_DummyTargetSkill; || Summon a bone totem for 4 turns. &lt;br /&gt;
|-&lt;br /&gt;
| Ignite;Melt;Contaminate || Explode existing oil and poison surfaces, melt ice, and turn water into poison&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S&amp;amp;(InSurface:SurfaceFire&amp;amp;#124;InSurface:SurfaceLava)):INF_FIRE,100,-1 || If target is incarnate and in fire or lava, permanently grant fire infusion.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(HasStatus:BLEEDING&amp;amp;#124;InSurface:SurfaceBlood):DECAYING_TOUCH,100,2 || If target is bleeding or standing in blood, then apply decaying touch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
&lt;br /&gt;
Templates are used any skill that uses &amp;quot;entities&amp;quot; including projectiles, summons, and walls. The entry of a template is a root templates GUID. &lt;br /&gt;
&lt;br /&gt;
A projectile template defines the visual of the projectile, as well as its arc and the visual of the arc preview.&lt;br /&gt;
&lt;br /&gt;
Summon templates are the character or item summoned (either as a direct summon skill, or as an skill property Summon entry entry.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Name and Description ==&lt;br /&gt;
&lt;br /&gt;
Skill display name, description, and stats description use Translated String Keys to display text. However, the stats editor can automatically generate the translated strings with the &amp;quot;Export Translated String Keys&amp;quot; option in the menu.&lt;br /&gt;
&lt;br /&gt;
* ''DisplayName'', the primary display name of the skill seen by players.&lt;br /&gt;
* ''Description'', the main description of the skill. Often references StatsDescriptionParams with variables like [1], [2], etc, (see examples).&lt;br /&gt;
* ''StatsDescription'', a small secondary description below the main description and effects. Typically something unchanging, like the range, or detailed comments about how statuses or the skill functions.&lt;br /&gt;
* ''StatsDescriptionParams'', the stats referenced by variables. The first entry will apply to [1], the second entry to [2], etc.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
* ''DisplayName'': Magical Poison Dart&lt;br /&gt;
* ''Description'': Cast a magical poisonous dart that does [1] damage.&lt;br /&gt;
* ''StatsDescription'': Range: [2]&amp;lt;nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt;Poisoned deals poison damage over time.&amp;lt;nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt;Can target terrain to create ooze surface.&lt;br /&gt;
* ''StatsDescriptionParams'': Damage;TargetRadius&lt;br /&gt;
&lt;br /&gt;
== Best Practice ==&lt;br /&gt;
&lt;br /&gt;
When designing skills, consider the niche it fills and what sort of flavor it has. Try to make the skill feel distinct, but easy to understand. A little flavor text and a good name can go a long way to making a skill interesting.&lt;br /&gt;
&lt;br /&gt;
If you want the AI to use new skills intelligently, avoid scripting if you can. The AI can adapt to new skills, and can interpret the value of statuses with simple stat bonuses pr reductions. In general, a skill that does not depend on scripts will have less opportunity for bugs.&lt;br /&gt;
&lt;br /&gt;
If AI use is not a priority, and you've exhausted possibilities within the stats editor, then scripting can open up new opportunities. In general, the easiest way to script a skill is to have the skill apply a custom status, and use the OnStatusApplied(__Me,YOURSTATUS) trigger in a character script that every character this skill can be used on has (e.g., Base, or &amp;quot;Player&amp;quot; if this skill is only cast on players.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Stats]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=2158</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=2158"/>
		<updated>2017-09-12T17:09:44Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: /* Basic Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting. Almost any kind of skill is possible, though some things are more difficult than others. Skills, like most stats, can be edited in both the editor's stat editor and directly in a text editor. Both have their advantages, though it is recommended you start with adding skills in the stat editor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Type == &lt;br /&gt;
&lt;br /&gt;
Skill Type determines the fundamental behavior of the skill and what parameters are available to edit.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
== Basic Parameters ==&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. When referencing the skill (e.g., in a skillbook), the skill is referred to by ''Skilltype_Skillname''&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
== Damage ==&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
== Range ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* '''Requirement''', a weapon requirement: StaffWeapon, MeleeWeapon, RangedWeapon, DaggerWeapon, ShieldWeapon, None&lt;br /&gt;
* '''Requirements''', conditional requirements: Combat, Immobile (typically checking !Immobile for teleport skills)&lt;br /&gt;
* '''Memorization Requirements''', ability requirements (e.g., RangerLore 2, or Sneaking 1) to memorize the skill&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetConditions''', what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
* '''AOEConditions''', conditions for an AOEBoost skill property.&lt;br /&gt;
* '''ForceTarget''', If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
* '''CanTargetCharacters''', if yes, can target characters&lt;br /&gt;
* '''CanTargetItems''', If yes, can target items.&lt;br /&gt;
* '''CanTargetTerrain''', If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;br /&gt;
&lt;br /&gt;
 Conditions: Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Note'': Combat should generally be a requirement, not a condition.&lt;br /&gt;
&lt;br /&gt;
'''Examples'''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|(HasStatus:BURNING)|SurfaceFire // target either entities standing in fire or burning, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // (Chain Heal) target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
== Skill Properties ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SkillProperties&amp;quot; parameter gives skills status effects and a few other specific effects. Like conditions, skill properties can take simple logic, usually in the following form &lt;br /&gt;
&lt;br /&gt;
TargetType:IF(Conditions):Action.&lt;br /&gt;
&lt;br /&gt;
Property Actions&lt;br /&gt;
&lt;br /&gt;
* '''Statuses''', in the form of &amp;quot;''STATUS,Chance,Duration.''&amp;quot;&lt;br /&gt;
* '''AOE dependent statuses''', with ''AOEBOOST:STATUS,Chance,Duration''&lt;br /&gt;
* '''Surface creation''', in the form of &amp;quot;''CreateSurface,Radius,?,SurfaceType,Chance,Duration?''&amp;quot; &lt;br /&gt;
* '''Target surface creation''', surfaces appear only on targets with ''TargetCreateSurface.''&lt;br /&gt;
* '''Cone surface creation''', surfaces appears in a cone area ''TargetCreateConeSurface''.&lt;br /&gt;
* '''Surface manipulation''', change a surface or cloud.&lt;br /&gt;
 Ignite, Melt, Freeze, Electrify, Bless, Curse, Condense, Vaporize, Bloodify, Contaminate, Oilify, Shatter&lt;br /&gt;
* '''Resurrect''', Revive a character with ''Resurrect,Chance?,VitalityOnRevived''.&lt;br /&gt;
* '''Backstab conditions''', including ''AlwaysBackstab'' and ''CanBackstab''.&lt;br /&gt;
* '''High ground''', use ''AlwaysHighGround'' to always grant a skill high ground bonuses.&lt;br /&gt;
* '''Equalize''', take vitality and armor percentages and equalize them among certain targets with ''Equalize, TargetType''.&lt;br /&gt;
* '''Summon''', for specific instances, you can summon characters with ''Summon,Template,Duration,SummonType,?.'' SummonType is totem or '-', for non-totem?&lt;br /&gt;
* '''Source''', steal source points with ''DRAIN,????''.&lt;br /&gt;
* '''Swap''', Swap places with your target with ''SwapPlaces,?,?,Effect,Effect''.&lt;br /&gt;
* '''Sabotage''', blow up a random arrow or grenade in an inventory with ''Sabotage,Amount.''&lt;br /&gt;
* '''Movement based damage''', with ''DAMAGE_ON_MOVE,Chance,Duration,?,?''.&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SkillProperties !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BLEEDING,100,2 || 100% chance to set bleeding for 2 turns&lt;br /&gt;
|-&lt;br /&gt;
| AOEBOOST:HARMONY,100,2 || Heal the target according to the number of allies within range (determined by area radius and AOEboost Conditions)&lt;br /&gt;
|-&lt;br /&gt;
| CreateSurface,2,,Fire,100,2 || 100% chance to create a circle of fire with 2m radius that lasts 2 rounds.&lt;br /&gt;
|-&lt;br /&gt;
| CLEANSE_WOUNDS,100,1;TargetCreateSurface,1,,Water || Heal targets and create water of 1m radius under them.&lt;br /&gt;
|-&lt;br /&gt;
| Equalize,All; Sabotage,1 || Equalize the health of a group of targets, and explode 1 random arrow or grenade in each of their inventories.&lt;br /&gt;
|-&lt;br /&gt;
| Resurrect,500,20 || Revive a character with 20% vitality.&lt;br /&gt;
|-&lt;br /&gt;
| SELF:IF(Surface:Fire):ARROWHEAD_FIRE,100,2 || If targeting a fire surface, apply fire damage buff to yourself for 2 turns.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S):INF_FIRE,100,-1 || If targeting an incarnate, permanently grant it fire infusion &lt;br /&gt;
|-&lt;br /&gt;
| Summon,4cd5defc-5d36-4d76-b606-b6ca69a13617,4,totem,Target_DummyTargetSkill; || Summon a bone totem for 4 turns. &lt;br /&gt;
|-&lt;br /&gt;
| Ignite;Melt;Contaminate || Explode existing oil and poison surfaces, melt ice, and turn water into poison&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S&amp;amp;(InSurface:SurfaceFire&amp;amp;#124;InSurface:SurfaceLava)):INF_FIRE,100,-1 || If target is incarnate and in fire or lava, permanently grant fire infusion.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(HasStatus:BLEEDING&amp;amp;#124;InSurface:SurfaceBlood):DECAYING_TOUCH,100,2 || If target is bleeding or standing in blood, then apply decaying touch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
&lt;br /&gt;
Templates are used any skill that uses &amp;quot;entities&amp;quot; including projectiles, summons, and walls. The entry of a template is a root templates GUID. &lt;br /&gt;
&lt;br /&gt;
A projectile template defines the visual of the projectile, as well as its arc and the visual of the arc preview.&lt;br /&gt;
&lt;br /&gt;
Summon templates are the character or item summoned (either as a direct summon skill, or as an skill property Summon entry entry.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Name and Description ==&lt;br /&gt;
&lt;br /&gt;
Skill display name, description, and stats description use Translated String Keys to display text. However, the stats editor can automatically generate the translated strings with the &amp;quot;Export Translated String Keys&amp;quot; option in the menu.&lt;br /&gt;
&lt;br /&gt;
* ''DisplayName'', the primary display name of the skill seen by players.&lt;br /&gt;
* ''Description'', the main description of the skill. Often references StatsDescriptionParams with variables like [1], [2], etc, (see examples).&lt;br /&gt;
* ''StatsDescription'', a small secondary description below the main description and effects. Typically something unchanging, like the range, or detailed comments about how statuses or the skill functions.&lt;br /&gt;
* ''StatsDescriptionParams'', the stats referenced by variables. The first entry will apply to [1], the second entry to [2], etc.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
* ''DisplayName'': Magical Poison Dart&lt;br /&gt;
* ''Description'': Cast a magical poisonous dart that does [1] damage.&lt;br /&gt;
* ''StatsDescription'': Range: [2]&amp;lt;nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt;Poisoned deals poison damage over time.&amp;lt;nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt;Can target terrain to create ooze surface.&lt;br /&gt;
* ''StatsDescriptionParams'': Damage;TargetRadius&lt;br /&gt;
&lt;br /&gt;
== Best Practice ==&lt;br /&gt;
&lt;br /&gt;
When designing skills, consider the niche it fills and what sort of flavor it has. Try to make the skill feel distinct, but easy to understand. A little flavor text and a good name can go a long way to making a skill interesting.&lt;br /&gt;
&lt;br /&gt;
If you want the AI to use new skills intelligently, avoid scripting if you can. The AI can adapt to new skills, and can interpret the value of statuses with simple stat bonuses pr reductions. In general, a skill that does not depend on scripts will have less opportunity for bugs.&lt;br /&gt;
&lt;br /&gt;
If AI use is not a priority, and you've exhausted possibilities within the stats editor, then scripting can open up new opportunities. In general, the easiest way to script a skill is to have the skill apply a custom status, and use the OnStatusApplied(__Me,YOURSTATUS) trigger in a character script that every character this skill can be used on has (e.g., Base, or &amp;quot;Player&amp;quot; if this skill is only cast on players.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Stats]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1895</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1895"/>
		<updated>2017-09-11T04:26:26Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: /* Text */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting. Almost any kind of skill is possible, though some things are more difficult than others. Skills, like most stats, can be edited in both the editor's stat editor and directly in a text editor. Both have their advantages, though it is recommended you start with adding skills in the stat editor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Type == &lt;br /&gt;
&lt;br /&gt;
Skill Type determines the fundamental behavior of the skill and what parameters are available to edit.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
== Basic Parameters ==&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. Usually a structure of &amp;quot;Skilltype_Skillname.&amp;quot;&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
== Damage ==&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
== Range ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* '''Requirement''', a weapon requirement: StaffWeapon, MeleeWeapon, RangedWeapon, DaggerWeapon, ShieldWeapon, None&lt;br /&gt;
* '''Requirements''', conditional requirements: Combat, Immobile (typically checking !Immobile for teleport skills)&lt;br /&gt;
* '''Memorization Requirements''', ability requirements (e.g., RangerLore 2, or Sneaking 1) to memorize the skill&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetConditions''', what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
* '''AOEConditions''', conditions for an AOEBoost skill property.&lt;br /&gt;
* '''ForceTarget''', If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
* '''CanTargetCharacters''', if yes, can target characters&lt;br /&gt;
* '''CanTargetItems''', If yes, can target items.&lt;br /&gt;
* '''CanTargetTerrain''', If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;br /&gt;
&lt;br /&gt;
 Conditions: Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Note'': Combat should generally be a requirement, not a condition.&lt;br /&gt;
&lt;br /&gt;
'''Examples'''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|(HasStatus:BURNING)|SurfaceFire // target either entities standing in fire or burning, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // (Chain Heal) target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
== Skill Properties ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SkillProperties&amp;quot; parameter gives skills status effects and a few other specific effects. Like conditions, skill properties can take simple logic, usually in the following form &lt;br /&gt;
&lt;br /&gt;
TargetType:IF(Conditions):Action.&lt;br /&gt;
&lt;br /&gt;
Property Actions&lt;br /&gt;
&lt;br /&gt;
* '''Statuses''', in the form of &amp;quot;''STATUS,Chance,Duration.''&amp;quot;&lt;br /&gt;
* '''AOE dependent statuses''', with ''AOEBOOST:STATUS,Chance,Duration''&lt;br /&gt;
* '''Surface creation''', in the form of &amp;quot;''CreateSurface,Radius,?,SurfaceType,Chance,Duration?''&amp;quot; &lt;br /&gt;
* '''Target surface creation''', surfaces appear only on targets with ''TargetCreateSurface.''&lt;br /&gt;
* '''Cone surface creation''', surfaces appears in a cone area ''TargetCreateConeSurface''.&lt;br /&gt;
* '''Surface manipulation''', change a surface or cloud.&lt;br /&gt;
 Ignite, Melt, Freeze, Electrify, Bless, Curse, Condense, Vaporize, Bloodify, Contaminate, Oilify, Shatter&lt;br /&gt;
* '''Resurrect''', Revive a character with ''Resurrect,Chance?,VitalityOnRevived''.&lt;br /&gt;
* '''Backstab conditions''', including ''AlwaysBackstab'' and ''CanBackstab''.&lt;br /&gt;
* '''High ground''', use ''AlwaysHighGround'' to always grant a skill high ground bonuses.&lt;br /&gt;
* '''Equalize''', take vitality and armor percentages and equalize them among certain targets with ''Equalize, TargetType''.&lt;br /&gt;
* '''Summon''', for specific instances, you can summon characters with ''Summon,Template,Duration,SummonType,?.'' SummonType is totem or '-', for non-totem?&lt;br /&gt;
* '''Source''', steal source points with ''DRAIN,????''.&lt;br /&gt;
* '''Swap''', Swap places with your target with ''SwapPlaces,?,?,Effect,Effect''.&lt;br /&gt;
* '''Sabotage''', blow up a random arrow or grenade in an inventory with ''Sabotage,Amount.''&lt;br /&gt;
* '''Movement based damage''', with ''DAMAGE_ON_MOVE,Chance,Duration,?,?''.&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SkillProperties !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BLEEDING,100,2 || 100% chance to set bleeding for 2 turns&lt;br /&gt;
|-&lt;br /&gt;
| AOEBOOST:HARMONY,100,2 || Heal the target according to the number of allies within range (determined by area radius and AOEboost Conditions)&lt;br /&gt;
|-&lt;br /&gt;
| CreateSurface,2,,Fire,100,2 || 100% chance to create a circle of fire with 2m radius that lasts 2 rounds.&lt;br /&gt;
|-&lt;br /&gt;
| CLEANSE_WOUNDS,100,1;TargetCreateSurface,1,,Water || Heal targets and create water of 1m radius under them.&lt;br /&gt;
|-&lt;br /&gt;
| Equalize,All; Sabotage,1 || Equalize the health of a group of targets, and explode 1 random arrow or grenade in each of their inventories.&lt;br /&gt;
|-&lt;br /&gt;
| Resurrect,500,20 || Revive a character with 20% vitality.&lt;br /&gt;
|-&lt;br /&gt;
| SELF:IF(Surface:Fire):ARROWHEAD_FIRE,100,2 || If targeting a fire surface, apply fire damage buff to yourself for 2 turns.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S):INF_FIRE,100,-1 || If targeting an incarnate, permanently grant it fire infusion &lt;br /&gt;
|-&lt;br /&gt;
| Summon,4cd5defc-5d36-4d76-b606-b6ca69a13617,4,totem,Target_DummyTargetSkill; || Summon a bone totem for 4 turns. &lt;br /&gt;
|-&lt;br /&gt;
| Ignite;Melt;Contaminate || Explode existing oil and poison surfaces, melt ice, and turn water into poison&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S&amp;amp;(InSurface:SurfaceFire&amp;amp;#124;InSurface:SurfaceLava)):INF_FIRE,100,-1 || If target is incarnate and in fire or lava, permanently grant fire infusion.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(HasStatus:BLEEDING&amp;amp;#124;InSurface:SurfaceBlood):DECAYING_TOUCH,100,2 || If target is bleeding or standing in blood, then apply decaying touch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
&lt;br /&gt;
Templates are used any skill that uses &amp;quot;entities&amp;quot; including projectiles, summons, and walls. The entry of a template is a root templates GUID. &lt;br /&gt;
&lt;br /&gt;
A projectile template defines the visual of the projectile, as well as its arc and the visual of the arc preview.&lt;br /&gt;
&lt;br /&gt;
Summon templates are the character or item summoned (either as a direct summon skill, or as an skill property Summon entry entry.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Name and Description ==&lt;br /&gt;
&lt;br /&gt;
Skill display name, description, and stats description use Translated String Keys to display text. However, the stats editor can automatically generate the translated strings with the &amp;quot;Export Translated String Keys&amp;quot; option in the menu.&lt;br /&gt;
&lt;br /&gt;
* ''DisplayName'', the primary display name of the skill seen by players.&lt;br /&gt;
* ''Description'', the main description of the skill. Often references StatsDescriptionParams with variables like [1], [2], etc, (see examples).&lt;br /&gt;
* ''StatsDescription'', a small secondary description below the main description and effects. Typically something unchanging, like the range, or detailed comments about how statuses or the skill functions.&lt;br /&gt;
* ''StatsDescriptionParams'', the stats referenced by variables. The first entry will apply to [1], the second entry to [2], etc.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
* ''DisplayName'': Magical Poison Dart&lt;br /&gt;
* ''Description'': Cast a magical poisonous dart that does [1] damage.&lt;br /&gt;
* ''StatsDescription'': Range: [2]&amp;lt;nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt;Poisoned deals poison damage over time.&amp;lt;nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt;Can target terrain to create ooze surface.&lt;br /&gt;
* ''StatsDescriptionParams'': Damage;TargetRadius&lt;br /&gt;
&lt;br /&gt;
== Best Practice ==&lt;br /&gt;
&lt;br /&gt;
When designing skills, consider the niche it fills and what sort of flavor it has. Try to make the skill feel distinct, but easy to understand. A little flavor text and a good name can go a long way to making a skill interesting.&lt;br /&gt;
&lt;br /&gt;
If you want the AI to use new skills intelligently, avoid scripting if you can. The AI can adapt to new skills, and can interpret the value of statuses with simple stat bonuses pr reductions. In general, a skill that does not depend on scripts will have less opportunity for bugs.&lt;br /&gt;
&lt;br /&gt;
If AI use is not a priority, and you've exhausted possibilities within the stats editor, then scripting can open up new opportunities. In general, the easiest way to script a skill is to have the skill apply a custom status, and use the OnStatusApplied(__Me,YOURSTATUS) trigger in a character script that every character this skill can be used on has (e.g., Base, or &amp;quot;Player&amp;quot; if this skill is only cast on players.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Stats]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1894</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1894"/>
		<updated>2017-09-11T00:43:00Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: /* Text */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting. Almost any kind of skill is possible, though some things are more difficult than others. Skills, like most stats, can be edited in both the editor's stat editor and directly in a text editor. Both have their advantages, though it is recommended you start with adding skills in the stat editor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Type == &lt;br /&gt;
&lt;br /&gt;
Skill Type determines the fundamental behavior of the skill and what parameters are available to edit.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
== Basic Parameters ==&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. Usually a structure of &amp;quot;Skilltype_Skillname.&amp;quot;&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
== Damage ==&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
== Range ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* '''Requirement''', a weapon requirement: StaffWeapon, MeleeWeapon, RangedWeapon, DaggerWeapon, ShieldWeapon, None&lt;br /&gt;
* '''Requirements''', conditional requirements: Combat, Immobile (typically checking !Immobile for teleport skills)&lt;br /&gt;
* '''Memorization Requirements''', ability requirements (e.g., RangerLore 2, or Sneaking 1) to memorize the skill&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetConditions''', what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
* '''AOEConditions''', conditions for an AOEBoost skill property.&lt;br /&gt;
* '''ForceTarget''', If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
* '''CanTargetCharacters''', if yes, can target characters&lt;br /&gt;
* '''CanTargetItems''', If yes, can target items.&lt;br /&gt;
* '''CanTargetTerrain''', If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;br /&gt;
&lt;br /&gt;
 Conditions: Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Note'': Combat should generally be a requirement, not a condition.&lt;br /&gt;
&lt;br /&gt;
'''Examples'''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|(HasStatus:BURNING)|SurfaceFire // target either entities standing in fire or burning, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // (Chain Heal) target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
== Skill Properties ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SkillProperties&amp;quot; parameter gives skills status effects and a few other specific effects. Like conditions, skill properties can take simple logic, usually in the following form &lt;br /&gt;
&lt;br /&gt;
TargetType:IF(Conditions):Action.&lt;br /&gt;
&lt;br /&gt;
Property Actions&lt;br /&gt;
&lt;br /&gt;
* '''Statuses''', in the form of &amp;quot;''STATUS,Chance,Duration.''&amp;quot;&lt;br /&gt;
* '''AOE dependent statuses''', with ''AOEBOOST:STATUS,Chance,Duration''&lt;br /&gt;
* '''Surface creation''', in the form of &amp;quot;''CreateSurface,Radius,?,SurfaceType,Chance,Duration?''&amp;quot; &lt;br /&gt;
* '''Target surface creation''', surfaces appear only on targets with ''TargetCreateSurface.''&lt;br /&gt;
* '''Cone surface creation''', surfaces appears in a cone area ''TargetCreateConeSurface''.&lt;br /&gt;
* '''Surface manipulation''', change a surface or cloud.&lt;br /&gt;
 Ignite, Melt, Freeze, Electrify, Bless, Curse, Condense, Vaporize, Bloodify, Contaminate, Oilify, Shatter&lt;br /&gt;
* '''Resurrect''', Revive a character with ''Resurrect,Chance?,VitalityOnRevived''.&lt;br /&gt;
* '''Backstab conditions''', including ''AlwaysBackstab'' and ''CanBackstab''.&lt;br /&gt;
* '''High ground''', use ''AlwaysHighGround'' to always grant a skill high ground bonuses.&lt;br /&gt;
* '''Equalize''', take vitality and armor percentages and equalize them among certain targets with ''Equalize, TargetType''.&lt;br /&gt;
* '''Summon''', for specific instances, you can summon characters with ''Summon,Template,Duration,SummonType,?.'' SummonType is totem or '-', for non-totem?&lt;br /&gt;
* '''Source''', steal source points with ''DRAIN,????''.&lt;br /&gt;
* '''Swap''', Swap places with your target with ''SwapPlaces,?,?,Effect,Effect''.&lt;br /&gt;
* '''Sabotage''', blow up a random arrow or grenade in an inventory with ''Sabotage,Amount.''&lt;br /&gt;
* '''Movement based damage''', with ''DAMAGE_ON_MOVE,Chance,Duration,?,?''.&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SkillProperties !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BLEEDING,100,2 || 100% chance to set bleeding for 2 turns&lt;br /&gt;
|-&lt;br /&gt;
| AOEBOOST:HARMONY,100,2 || Heal the target according to the number of allies within range (determined by area radius and AOEboost Conditions)&lt;br /&gt;
|-&lt;br /&gt;
| CreateSurface,2,,Fire,100,2 || 100% chance to create a circle of fire with 2m radius that lasts 2 rounds.&lt;br /&gt;
|-&lt;br /&gt;
| CLEANSE_WOUNDS,100,1;TargetCreateSurface,1,,Water || Heal targets and create water of 1m radius under them.&lt;br /&gt;
|-&lt;br /&gt;
| Equalize,All; Sabotage,1 || Equalize the health of a group of targets, and explode 1 random arrow or grenade in each of their inventories.&lt;br /&gt;
|-&lt;br /&gt;
| Resurrect,500,20 || Revive a character with 20% vitality.&lt;br /&gt;
|-&lt;br /&gt;
| SELF:IF(Surface:Fire):ARROWHEAD_FIRE,100,2 || If targeting a fire surface, apply fire damage buff to yourself for 2 turns.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S):INF_FIRE,100,-1 || If targeting an incarnate, permanently grant it fire infusion &lt;br /&gt;
|-&lt;br /&gt;
| Summon,4cd5defc-5d36-4d76-b606-b6ca69a13617,4,totem,Target_DummyTargetSkill; || Summon a bone totem for 4 turns. &lt;br /&gt;
|-&lt;br /&gt;
| Ignite;Melt;Contaminate || Explode existing oil and poison surfaces, melt ice, and turn water into poison&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S&amp;amp;(InSurface:SurfaceFire&amp;amp;#124;InSurface:SurfaceLava)):INF_FIRE,100,-1 || If target is incarnate and in fire or lava, permanently grant fire infusion.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(HasStatus:BLEEDING&amp;amp;#124;InSurface:SurfaceBlood):DECAYING_TOUCH,100,2 || If target is bleeding or standing in blood, then apply decaying touch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
&lt;br /&gt;
Templates are used any skill that uses &amp;quot;entities&amp;quot; including projectiles, summons, and walls. The entry of a template is a root templates GUID. &lt;br /&gt;
&lt;br /&gt;
A projectile template defines the visual of the projectile, as well as its arc and the visual of the arc preview.&lt;br /&gt;
&lt;br /&gt;
Summon templates are the character or item summoned (either as a direct summon skill, or as an skill property Summon entry entry.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Text ==&lt;br /&gt;
&lt;br /&gt;
Skill display name, description, and stats description use Translated String Keys to display text. However, the stats editor can automatically generate the translated strings with the &amp;quot;Export Translated String Keys&amp;quot; option in the menu.&lt;br /&gt;
&lt;br /&gt;
* ''DisplayName'', the primary display name of the skill seen by players.&lt;br /&gt;
* ''Description'', the main description of the skill. Often references StatsDescriptionParams with variables like [1], [2], etc, (see examples).&lt;br /&gt;
* ''StatsDescription'', a small secondary description below the main description and effects. Typically something unchanging, like the range, or detailed comments about how statuses or the skill functions.&lt;br /&gt;
* ''StatsDescriptionParams'', the stats referenced by variables. The first entry will apply to [1], the second entry to [2], etc.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
* ''DisplayName'': Magical Poison Dart&lt;br /&gt;
* ''Description'': Cast a magical poisonous dart that does [1] damage.&lt;br /&gt;
* ''StatsDescription'': Range: [2]&amp;lt;nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt;Poisoned deals poison damage over time.&amp;lt;nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt;Can target terrain to create ooze surface.&lt;br /&gt;
* ''StatsDescriptionParams'': Damage;TargetRadius&lt;br /&gt;
&lt;br /&gt;
== Best Practice ==&lt;br /&gt;
&lt;br /&gt;
When designing skills, consider the niche it fills and what sort of flavor it has. Try to make the skill feel distinct, but easy to understand. A little flavor text and a good name can go a long way to making a skill interesting.&lt;br /&gt;
&lt;br /&gt;
If you want the AI to use new skills intelligently, avoid scripting if you can. The AI can adapt to new skills, and can interpret the value of statuses with simple stat bonuses pr reductions. In general, a skill that does not depend on scripts will have less opportunity for bugs.&lt;br /&gt;
&lt;br /&gt;
If AI use is not a priority, and you've exhausted possibilities within the stats editor, then scripting can open up new opportunities. In general, the easiest way to script a skill is to have the skill apply a custom status, and use the OnStatusApplied(__Me,YOURSTATUS) trigger in a character script that every character this skill can be used on has (e.g., Base, or &amp;quot;Player&amp;quot; if this skill is only cast on players.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Stats]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1893</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1893"/>
		<updated>2017-09-11T00:42:08Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: /* Text */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting. Almost any kind of skill is possible, though some things are more difficult than others. Skills, like most stats, can be edited in both the editor's stat editor and directly in a text editor. Both have their advantages, though it is recommended you start with adding skills in the stat editor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Type == &lt;br /&gt;
&lt;br /&gt;
Skill Type determines the fundamental behavior of the skill and what parameters are available to edit.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
== Basic Parameters ==&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. Usually a structure of &amp;quot;Skilltype_Skillname.&amp;quot;&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
== Damage ==&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
== Range ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* '''Requirement''', a weapon requirement: StaffWeapon, MeleeWeapon, RangedWeapon, DaggerWeapon, ShieldWeapon, None&lt;br /&gt;
* '''Requirements''', conditional requirements: Combat, Immobile (typically checking !Immobile for teleport skills)&lt;br /&gt;
* '''Memorization Requirements''', ability requirements (e.g., RangerLore 2, or Sneaking 1) to memorize the skill&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetConditions''', what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
* '''AOEConditions''', conditions for an AOEBoost skill property.&lt;br /&gt;
* '''ForceTarget''', If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
* '''CanTargetCharacters''', if yes, can target characters&lt;br /&gt;
* '''CanTargetItems''', If yes, can target items.&lt;br /&gt;
* '''CanTargetTerrain''', If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;br /&gt;
&lt;br /&gt;
 Conditions: Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Note'': Combat should generally be a requirement, not a condition.&lt;br /&gt;
&lt;br /&gt;
'''Examples'''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|(HasStatus:BURNING)|SurfaceFire // target either entities standing in fire or burning, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // (Chain Heal) target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
== Skill Properties ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SkillProperties&amp;quot; parameter gives skills status effects and a few other specific effects. Like conditions, skill properties can take simple logic, usually in the following form &lt;br /&gt;
&lt;br /&gt;
TargetType:IF(Conditions):Action.&lt;br /&gt;
&lt;br /&gt;
Property Actions&lt;br /&gt;
&lt;br /&gt;
* '''Statuses''', in the form of &amp;quot;''STATUS,Chance,Duration.''&amp;quot;&lt;br /&gt;
* '''AOE dependent statuses''', with ''AOEBOOST:STATUS,Chance,Duration''&lt;br /&gt;
* '''Surface creation''', in the form of &amp;quot;''CreateSurface,Radius,?,SurfaceType,Chance,Duration?''&amp;quot; &lt;br /&gt;
* '''Target surface creation''', surfaces appear only on targets with ''TargetCreateSurface.''&lt;br /&gt;
* '''Cone surface creation''', surfaces appears in a cone area ''TargetCreateConeSurface''.&lt;br /&gt;
* '''Surface manipulation''', change a surface or cloud.&lt;br /&gt;
 Ignite, Melt, Freeze, Electrify, Bless, Curse, Condense, Vaporize, Bloodify, Contaminate, Oilify, Shatter&lt;br /&gt;
* '''Resurrect''', Revive a character with ''Resurrect,Chance?,VitalityOnRevived''.&lt;br /&gt;
* '''Backstab conditions''', including ''AlwaysBackstab'' and ''CanBackstab''.&lt;br /&gt;
* '''High ground''', use ''AlwaysHighGround'' to always grant a skill high ground bonuses.&lt;br /&gt;
* '''Equalize''', take vitality and armor percentages and equalize them among certain targets with ''Equalize, TargetType''.&lt;br /&gt;
* '''Summon''', for specific instances, you can summon characters with ''Summon,Template,Duration,SummonType,?.'' SummonType is totem or '-', for non-totem?&lt;br /&gt;
* '''Source''', steal source points with ''DRAIN,????''.&lt;br /&gt;
* '''Swap''', Swap places with your target with ''SwapPlaces,?,?,Effect,Effect''.&lt;br /&gt;
* '''Sabotage''', blow up a random arrow or grenade in an inventory with ''Sabotage,Amount.''&lt;br /&gt;
* '''Movement based damage''', with ''DAMAGE_ON_MOVE,Chance,Duration,?,?''.&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SkillProperties !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BLEEDING,100,2 || 100% chance to set bleeding for 2 turns&lt;br /&gt;
|-&lt;br /&gt;
| AOEBOOST:HARMONY,100,2 || Heal the target according to the number of allies within range (determined by area radius and AOEboost Conditions)&lt;br /&gt;
|-&lt;br /&gt;
| CreateSurface,2,,Fire,100,2 || 100% chance to create a circle of fire with 2m radius that lasts 2 rounds.&lt;br /&gt;
|-&lt;br /&gt;
| CLEANSE_WOUNDS,100,1;TargetCreateSurface,1,,Water || Heal targets and create water of 1m radius under them.&lt;br /&gt;
|-&lt;br /&gt;
| Equalize,All; Sabotage,1 || Equalize the health of a group of targets, and explode 1 random arrow or grenade in each of their inventories.&lt;br /&gt;
|-&lt;br /&gt;
| Resurrect,500,20 || Revive a character with 20% vitality.&lt;br /&gt;
|-&lt;br /&gt;
| SELF:IF(Surface:Fire):ARROWHEAD_FIRE,100,2 || If targeting a fire surface, apply fire damage buff to yourself for 2 turns.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S):INF_FIRE,100,-1 || If targeting an incarnate, permanently grant it fire infusion &lt;br /&gt;
|-&lt;br /&gt;
| Summon,4cd5defc-5d36-4d76-b606-b6ca69a13617,4,totem,Target_DummyTargetSkill; || Summon a bone totem for 4 turns. &lt;br /&gt;
|-&lt;br /&gt;
| Ignite;Melt;Contaminate || Explode existing oil and poison surfaces, melt ice, and turn water into poison&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S&amp;amp;(InSurface:SurfaceFire&amp;amp;#124;InSurface:SurfaceLava)):INF_FIRE,100,-1 || If target is incarnate and in fire or lava, permanently grant fire infusion.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(HasStatus:BLEEDING&amp;amp;#124;InSurface:SurfaceBlood):DECAYING_TOUCH,100,2 || If target is bleeding or standing in blood, then apply decaying touch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
&lt;br /&gt;
Templates are used any skill that uses &amp;quot;entities&amp;quot; including projectiles, summons, and walls. The entry of a template is a root templates GUID. &lt;br /&gt;
&lt;br /&gt;
A projectile template defines the visual of the projectile, as well as its arc and the visual of the arc preview.&lt;br /&gt;
&lt;br /&gt;
Summon templates are the character or item summoned (either as a direct summon skill, or as an skill property Summon entry entry.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Text ==&lt;br /&gt;
&lt;br /&gt;
Skill display name, description, and stats description use Translated String Keys to display text. However, the stats editor can automatically generate the translated strings with the &amp;quot;Export Translated String Keys&amp;quot; option in the menu.&lt;br /&gt;
&lt;br /&gt;
* ''DisplayName'', the primary display name of the skill seen by players.&lt;br /&gt;
* ''Description'', the main description of the skill. Often references StatsDescriptionParams with variables like [1], [2], etc, (see examples).&lt;br /&gt;
* ''StatsDescription'', a small secondary description below the main description and effects. Typically something unchanging and technical, like the range.&lt;br /&gt;
* ''StatsDescriptionParams'', the stats referenced by variables. The first entry will apply to [1], the second entry to [2], etc.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
* ''DisplayName'': Magical Poison Dart&lt;br /&gt;
* ''Description'': Cast a magical poisonous dart that does [1] damage.&lt;br /&gt;
* ''StatsDescription'': Range: [2]&amp;lt;nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt;Poisoned deals poison damage over time.&amp;lt;nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt;Can target terrain to create ooze surface.&lt;br /&gt;
* ''StatsDescriptionParams'': Damage;TargetRadius&lt;br /&gt;
&lt;br /&gt;
== Best Practice ==&lt;br /&gt;
&lt;br /&gt;
When designing skills, consider the niche it fills and what sort of flavor it has. Try to make the skill feel distinct, but easy to understand. A little flavor text and a good name can go a long way to making a skill interesting.&lt;br /&gt;
&lt;br /&gt;
If you want the AI to use new skills intelligently, avoid scripting if you can. The AI can adapt to new skills, and can interpret the value of statuses with simple stat bonuses pr reductions. In general, a skill that does not depend on scripts will have less opportunity for bugs.&lt;br /&gt;
&lt;br /&gt;
If AI use is not a priority, and you've exhausted possibilities within the stats editor, then scripting can open up new opportunities. In general, the easiest way to script a skill is to have the skill apply a custom status, and use the OnStatusApplied(__Me,YOURSTATUS) trigger in a character script that every character this skill can be used on has (e.g., Base, or &amp;quot;Player&amp;quot; if this skill is only cast on players.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Stats]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1892</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1892"/>
		<updated>2017-09-11T00:33:24Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting. Almost any kind of skill is possible, though some things are more difficult than others. Skills, like most stats, can be edited in both the editor's stat editor and directly in a text editor. Both have their advantages, though it is recommended you start with adding skills in the stat editor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Type == &lt;br /&gt;
&lt;br /&gt;
Skill Type determines the fundamental behavior of the skill and what parameters are available to edit.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
== Basic Parameters ==&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. Usually a structure of &amp;quot;Skilltype_Skillname.&amp;quot;&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
== Damage ==&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
== Range ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* '''Requirement''', a weapon requirement: StaffWeapon, MeleeWeapon, RangedWeapon, DaggerWeapon, ShieldWeapon, None&lt;br /&gt;
* '''Requirements''', conditional requirements: Combat, Immobile (typically checking !Immobile for teleport skills)&lt;br /&gt;
* '''Memorization Requirements''', ability requirements (e.g., RangerLore 2, or Sneaking 1) to memorize the skill&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetConditions''', what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
* '''AOEConditions''', conditions for an AOEBoost skill property.&lt;br /&gt;
* '''ForceTarget''', If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
* '''CanTargetCharacters''', if yes, can target characters&lt;br /&gt;
* '''CanTargetItems''', If yes, can target items.&lt;br /&gt;
* '''CanTargetTerrain''', If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;br /&gt;
&lt;br /&gt;
 Conditions: Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Note'': Combat should generally be a requirement, not a condition.&lt;br /&gt;
&lt;br /&gt;
'''Examples'''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|(HasStatus:BURNING)|SurfaceFire // target either entities standing in fire or burning, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // (Chain Heal) target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
== Skill Properties ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SkillProperties&amp;quot; parameter gives skills status effects and a few other specific effects. Like conditions, skill properties can take simple logic, usually in the following form &lt;br /&gt;
&lt;br /&gt;
TargetType:IF(Conditions):Action.&lt;br /&gt;
&lt;br /&gt;
Property Actions&lt;br /&gt;
&lt;br /&gt;
* '''Statuses''', in the form of &amp;quot;''STATUS,Chance,Duration.''&amp;quot;&lt;br /&gt;
* '''AOE dependent statuses''', with ''AOEBOOST:STATUS,Chance,Duration''&lt;br /&gt;
* '''Surface creation''', in the form of &amp;quot;''CreateSurface,Radius,?,SurfaceType,Chance,Duration?''&amp;quot; &lt;br /&gt;
* '''Target surface creation''', surfaces appear only on targets with ''TargetCreateSurface.''&lt;br /&gt;
* '''Cone surface creation''', surfaces appears in a cone area ''TargetCreateConeSurface''.&lt;br /&gt;
* '''Surface manipulation''', change a surface or cloud.&lt;br /&gt;
 Ignite, Melt, Freeze, Electrify, Bless, Curse, Condense, Vaporize, Bloodify, Contaminate, Oilify, Shatter&lt;br /&gt;
* '''Resurrect''', Revive a character with ''Resurrect,Chance?,VitalityOnRevived''.&lt;br /&gt;
* '''Backstab conditions''', including ''AlwaysBackstab'' and ''CanBackstab''.&lt;br /&gt;
* '''High ground''', use ''AlwaysHighGround'' to always grant a skill high ground bonuses.&lt;br /&gt;
* '''Equalize''', take vitality and armor percentages and equalize them among certain targets with ''Equalize, TargetType''.&lt;br /&gt;
* '''Summon''', for specific instances, you can summon characters with ''Summon,Template,Duration,SummonType,?.'' SummonType is totem or '-', for non-totem?&lt;br /&gt;
* '''Source''', steal source points with ''DRAIN,????''.&lt;br /&gt;
* '''Swap''', Swap places with your target with ''SwapPlaces,?,?,Effect,Effect''.&lt;br /&gt;
* '''Sabotage''', blow up a random arrow or grenade in an inventory with ''Sabotage,Amount.''&lt;br /&gt;
* '''Movement based damage''', with ''DAMAGE_ON_MOVE,Chance,Duration,?,?''.&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SkillProperties !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BLEEDING,100,2 || 100% chance to set bleeding for 2 turns&lt;br /&gt;
|-&lt;br /&gt;
| AOEBOOST:HARMONY,100,2 || Heal the target according to the number of allies within range (determined by area radius and AOEboost Conditions)&lt;br /&gt;
|-&lt;br /&gt;
| CreateSurface,2,,Fire,100,2 || 100% chance to create a circle of fire with 2m radius that lasts 2 rounds.&lt;br /&gt;
|-&lt;br /&gt;
| CLEANSE_WOUNDS,100,1;TargetCreateSurface,1,,Water || Heal targets and create water of 1m radius under them.&lt;br /&gt;
|-&lt;br /&gt;
| Equalize,All; Sabotage,1 || Equalize the health of a group of targets, and explode 1 random arrow or grenade in each of their inventories.&lt;br /&gt;
|-&lt;br /&gt;
| Resurrect,500,20 || Revive a character with 20% vitality.&lt;br /&gt;
|-&lt;br /&gt;
| SELF:IF(Surface:Fire):ARROWHEAD_FIRE,100,2 || If targeting a fire surface, apply fire damage buff to yourself for 2 turns.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S):INF_FIRE,100,-1 || If targeting an incarnate, permanently grant it fire infusion &lt;br /&gt;
|-&lt;br /&gt;
| Summon,4cd5defc-5d36-4d76-b606-b6ca69a13617,4,totem,Target_DummyTargetSkill; || Summon a bone totem for 4 turns. &lt;br /&gt;
|-&lt;br /&gt;
| Ignite;Melt;Contaminate || Explode existing oil and poison surfaces, melt ice, and turn water into poison&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S&amp;amp;(InSurface:SurfaceFire&amp;amp;#124;InSurface:SurfaceLava)):INF_FIRE,100,-1 || If target is incarnate and in fire or lava, permanently grant fire infusion.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(HasStatus:BLEEDING&amp;amp;#124;InSurface:SurfaceBlood):DECAYING_TOUCH,100,2 || If target is bleeding or standing in blood, then apply decaying touch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
&lt;br /&gt;
Templates are used any skill that uses &amp;quot;entities&amp;quot; including projectiles, summons, and walls. The entry of a template is a root templates GUID. &lt;br /&gt;
&lt;br /&gt;
A projectile template defines the visual of the projectile, as well as its arc and the visual of the arc preview.&lt;br /&gt;
&lt;br /&gt;
Summon templates are the character or item summoned (either as a direct summon skill, or as an skill property Summon entry entry.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Text ==&lt;br /&gt;
&lt;br /&gt;
Skill display name, description, and stats description use Translated String Keys to display text. However, the stats editor can automatically generate the translated strings with the &amp;quot;Export Translated String Keys&amp;quot; option in the menu.&lt;br /&gt;
&lt;br /&gt;
* ''DisplayName'', the primary display name of the skill seen by players.&lt;br /&gt;
* ''Description'', the main description of the skill. Often references StatsDescriptionParams with variables like [1], [2], etc, (see examples).&lt;br /&gt;
* ''StatsDescription'', a small secondary description below the main description and effects. Typically something unchanging and technical, like the range.&lt;br /&gt;
* ''StatsDescriptionParams'', the stats referenced by variables. The first entry will apply to [1], the second entry to [2], etc.&lt;br /&gt;
&lt;br /&gt;
'''Example&lt;br /&gt;
'''&lt;br /&gt;
* '''DisplayName''': Magical Poison Dart&lt;br /&gt;
* '''Description''': Cast a magical poisonous dart that does [1] damage.&lt;br /&gt;
* '''StatsDescription''': Range: [2]&amp;lt;br&amp;gt;Poisoned deals poison damage over time.&amp;lt;br&amp;gt;Can target terrain to create ooze surface.&lt;br /&gt;
* '''StatsDescriptionParams''': Damage;TargetRadius&lt;br /&gt;
&lt;br /&gt;
== Best Practice ==&lt;br /&gt;
&lt;br /&gt;
When designing skills, consider the niche it fills and what sort of flavor it has. Try to make the skill feel distinct, but easy to understand. A little flavor text and a good name can go a long way to making a skill interesting.&lt;br /&gt;
&lt;br /&gt;
If you want the AI to use new skills intelligently, avoid scripting if you can. The AI can adapt to new skills, and can interpret the value of statuses with simple stat bonuses pr reductions. In general, a skill that does not depend on scripts will have less opportunity for bugs.&lt;br /&gt;
&lt;br /&gt;
If AI use is not a priority, and you've exhausted possibilities within the stats editor, then scripting can open up new opportunities. In general, the easiest way to script a skill is to have the skill apply a custom status, and use the OnStatusApplied(__Me,YOURSTATUS) trigger in a character script that every character this skill can be used on has (e.g., Base, or &amp;quot;Player&amp;quot; if this skill is only cast on players.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Stats]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1891</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1891"/>
		<updated>2017-09-10T23:15:38Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: /* Conditions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting. Almost any kind of skill is possible, though some things are more difficult than others. Skills, like most stats, can be edited in both the editor's stat editor and directly in a text editor. Both have their advantages, though it is recommended you start with adding skills in the stat editor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Type == &lt;br /&gt;
&lt;br /&gt;
Skill Type determines the fundamental behavior of the skill and what parameters are available to edit.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
== Basic Parameters ==&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. Usually a structure of &amp;quot;Skilltype_Skillname.&amp;quot;&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
== Damage ==&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
== Range ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* '''Requirement''', a weapon requirement: StaffWeapon, MeleeWeapon, RangedWeapon, DaggerWeapon, ShieldWeapon, None&lt;br /&gt;
* '''Requirements''', conditional requirements: Combat, Immobile (typically checking !Immobile for teleport skills)&lt;br /&gt;
* '''Memorization Requirements''', ability requirements (e.g., RangerLore 2, or Sneaking 1) to memorize the skill&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetConditions''', what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
* '''AOEConditions''', conditions for an AOEBoost skill property.&lt;br /&gt;
* '''ForceTarget''', If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
* '''CanTargetCharacters''', if yes, can target characters&lt;br /&gt;
* '''CanTargetItems''', If yes, can target items.&lt;br /&gt;
* '''CanTargetTerrain''', If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;br /&gt;
&lt;br /&gt;
 Conditions: Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Note'': Combat should generally be a requirement, not a condition.&lt;br /&gt;
&lt;br /&gt;
'''Examples'''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|(HasStatus:BURNING)|SurfaceFire // target either entities standing in fire or burning, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // (Chain Heal) target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
== Skill Properties ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SkillProperties&amp;quot; parameter gives skills status effects and a few other specific effects. Like conditions, skill properties can take simple logic, usually in the following form &lt;br /&gt;
&lt;br /&gt;
TargetType:IF(Conditions):Action.&lt;br /&gt;
&lt;br /&gt;
Property Actions&lt;br /&gt;
&lt;br /&gt;
* '''Statuses''', in the form of &amp;quot;''STATUS,Chance,Duration.''&amp;quot;&lt;br /&gt;
* '''AOE dependent statuses''', with ''AOEBOOST:STATUS,Chance,Duration''&lt;br /&gt;
* '''Surface creation''', in the form of &amp;quot;''CreateSurface,Radius,?,SurfaceType,Chance,Duration?''&amp;quot; &lt;br /&gt;
* '''Target surface creation''', surfaces appear only on targets with ''TargetCreateSurface.''&lt;br /&gt;
* '''Cone surface creation''', surfaces appears in a cone area ''TargetCreateConeSurface''.&lt;br /&gt;
* '''Surface manipulation''', change a surface or cloud.&lt;br /&gt;
 Ignite, Melt, Freeze, Electrify, Bless, Curse, Condense, Vaporize, Bloodify, Contaminate, Oilify, Shatter&lt;br /&gt;
* '''Resurrect''', Revive a character with ''Resurrect,Chance?,VitalityOnRevived''.&lt;br /&gt;
* '''Backstab conditions''', including ''AlwaysBackstab'' and ''CanBackstab''.&lt;br /&gt;
* '''High ground''', use ''AlwaysHighGround'' to always grant a skill high ground bonuses.&lt;br /&gt;
* '''Equalize''', take vitality and armor percentages and equalize them among certain targets with ''Equalize, TargetType''.&lt;br /&gt;
* '''Summon''', for specific instances, you can summon characters with ''Summon,Template,Duration,SummonType,?.'' SummonType is totem or '-', for non-totem?&lt;br /&gt;
* '''Source''', steal source points with ''DRAIN,????''.&lt;br /&gt;
* '''Swap''', Swap places with your target with ''SwapPlaces,?,?,Effect,Effect''.&lt;br /&gt;
* '''Sabotage''', blow up a random arrow or grenade in an inventory with ''Sabotage,Amount.''&lt;br /&gt;
* '''Movement based damage''', with ''DAMAGE_ON_MOVE,Chance,Duration,?,?''.&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SkillProperties !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BLEEDING,100,2 || 100% chance to set bleeding for 2 turns&lt;br /&gt;
|-&lt;br /&gt;
| AOEBOOST:HARMONY,100,2 || Heal the target according to the number of allies within range (determined by area radius and AOEboost Conditions)&lt;br /&gt;
|-&lt;br /&gt;
| CreateSurface,2,,Fire,100,2 || 100% chance to create a circle of fire with 2m radius that lasts 2 rounds.&lt;br /&gt;
|-&lt;br /&gt;
| CLEANSE_WOUNDS,100,1;TargetCreateSurface,1,,Water || Heal targets and create water of 1m radius under them.&lt;br /&gt;
|-&lt;br /&gt;
| Equalize,All; Sabotage,1 || Equalize the health of a group of targets, and explode 1 random arrow or grenade in each of their inventories.&lt;br /&gt;
|-&lt;br /&gt;
| Resurrect,500,20 || Revive a character with 20% vitality.&lt;br /&gt;
|-&lt;br /&gt;
| SELF:IF(Surface:Fire):ARROWHEAD_FIRE,100,2 || If targeting a fire surface, apply fire damage buff to yourself for 2 turns.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S):INF_FIRE,100,-1 || If targeting an incarnate, permanently grant it fire infusion &lt;br /&gt;
|-&lt;br /&gt;
| Summon,4cd5defc-5d36-4d76-b606-b6ca69a13617,4,totem,Target_DummyTargetSkill; || Summon a bone totem for 4 turns. &lt;br /&gt;
|-&lt;br /&gt;
| Ignite;Melt;Contaminate || Explode existing oil and poison surfaces, melt ice, and turn water into poison&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S&amp;amp;(InSurface:SurfaceFire&amp;amp;#124;InSurface:SurfaceLava)):INF_FIRE,100,-1 || If target is incarnate and in fire or lava, permanently grant fire infusion.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(HasStatus:BLEEDING&amp;amp;#124;InSurface:SurfaceBlood):DECAYING_TOUCH,100,2 || If target is bleeding or standing in blood, then apply decaying touch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
&lt;br /&gt;
Templates are used any skill that uses &amp;quot;entities&amp;quot; including projectiles, summons, and walls. The entry of a template is a root templates GUID. &lt;br /&gt;
&lt;br /&gt;
A projectile template defines the visual of the projectile, as well as its arc and the visual of the arc preview.&lt;br /&gt;
&lt;br /&gt;
Summon templates are the character or item summoned (either as a direct summon skill, or as an skill property Summon entry entry.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Best Practice ==&lt;br /&gt;
&lt;br /&gt;
When designing skills, consider the niche it fills and what sort of flavor it has. Try to make the skill feel distinct, but easy to understand. A little flavor text and a good name can go a long way to making a skill interesting.&lt;br /&gt;
&lt;br /&gt;
If you want the AI to use new skills intelligently, avoid scripting if you can. The AI can adapt to new skills, and can interpret the value of statuses with simple stat bonuses pr reductions. In general, a skill that does not depend on scripts will have less opportunity for bugs.&lt;br /&gt;
&lt;br /&gt;
If AI use is not a priority, and you've exhausted possibilities within the stats editor, then scripting can open up new opportunities. In general, the easiest way to script a skill is to have the skill apply a custom status, and use the OnStatusApplied(__Me,YOURSTATUS) trigger in a character script that every character this skill can be used on has (e.g., Base, or &amp;quot;Player&amp;quot; if this skill is only cast on players.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Stats]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1890</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1890"/>
		<updated>2017-09-10T21:30:01Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: /* Skill Properties */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting. Almost any kind of skill is possible, though some things are more difficult than others. Skills, like most stats, can be edited in both the editor's stat editor and directly in a text editor. Both have their advantages, though it is recommended you start with adding skills in the stat editor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Type == &lt;br /&gt;
&lt;br /&gt;
Skill Type determines the fundamental behavior of the skill and what parameters are available to edit.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
== Basic Parameters ==&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. Usually a structure of &amp;quot;Skilltype_Skillname.&amp;quot;&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
== Damage ==&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
== Range ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* '''Requirement''', a weapon requirement: StaffWeapon, MeleeWeapon, RangedWeapon, DaggerWeapon, ShieldWeapon, None&lt;br /&gt;
* '''Requirements''', conditional requirements: Combat, Immobile (typically checking !Immobile for teleport skills)&lt;br /&gt;
* '''Memorization Requirements''', ability requirements (e.g., RangerLore 2, or Sneaking 1) to memorize the skill&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetConditions''', what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
* '''AOEConditions''', conditions for an AOEBoost skill property.&lt;br /&gt;
* '''ForceTarget''', If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
* '''CanTargetCharacters''', if yes, can target characters&lt;br /&gt;
* '''CanTargetItems''', If yes, can target items.&lt;br /&gt;
* '''CanTargetTerrain''', If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;br /&gt;
&lt;br /&gt;
Conditions can include Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Note'': Combat should generally be a requirement, not a condition.&lt;br /&gt;
&lt;br /&gt;
'''Examples'''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|(HasStatus:BURNING)|SurfaceFire // target either entities standing in fire or burning, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // (Chain Heal) target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Properties ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SkillProperties&amp;quot; parameter gives skills status effects and a few other specific effects. Like conditions, skill properties can take simple logic, usually in the following form &lt;br /&gt;
&lt;br /&gt;
TargetType:IF(Conditions):Action.&lt;br /&gt;
&lt;br /&gt;
Property Actions&lt;br /&gt;
&lt;br /&gt;
* '''Statuses''', in the form of &amp;quot;''STATUS,Chance,Duration.''&amp;quot;&lt;br /&gt;
* '''AOE dependent statuses''', with ''AOEBOOST:STATUS,Chance,Duration''&lt;br /&gt;
* '''Surface creation''', in the form of &amp;quot;''CreateSurface,Radius,?,SurfaceType,Chance,Duration?''&amp;quot; &lt;br /&gt;
* '''Target surface creation''', surfaces appear only on targets with ''TargetCreateSurface.''&lt;br /&gt;
* '''Cone surface creation''', surfaces appears in a cone area ''TargetCreateConeSurface''.&lt;br /&gt;
* '''Surface manipulation''', change a surface or cloud.&lt;br /&gt;
 Ignite, Melt, Freeze, Electrify, Bless, Curse, Condense, Vaporize, Bloodify, Contaminate, Oilify, Shatter&lt;br /&gt;
* '''Resurrect''', Revive a character with ''Resurrect,Chance?,VitalityOnRevived''.&lt;br /&gt;
* '''Backstab conditions''', including ''AlwaysBackstab'' and ''CanBackstab''.&lt;br /&gt;
* '''High ground''', use ''AlwaysHighGround'' to always grant a skill high ground bonuses.&lt;br /&gt;
* '''Equalize''', take vitality and armor percentages and equalize them among certain targets with ''Equalize, TargetType''.&lt;br /&gt;
* '''Summon''', for specific instances, you can summon characters with ''Summon,Template,Duration,SummonType,?.'' SummonType is totem or '-', for non-totem?&lt;br /&gt;
* '''Source''', steal source points with ''DRAIN,????''.&lt;br /&gt;
* '''Swap''', Swap places with your target with ''SwapPlaces,?,?,Effect,Effect''.&lt;br /&gt;
* '''Sabotage''', blow up a random arrow or grenade in an inventory with ''Sabotage,Amount.''&lt;br /&gt;
* '''Movement based damage''', with ''DAMAGE_ON_MOVE,Chance,Duration,?,?''.&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SkillProperties !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BLEEDING,100,2 || 100% chance to set bleeding for 2 turns&lt;br /&gt;
|-&lt;br /&gt;
| AOEBOOST:HARMONY,100,2 || Heal the target according to the number of allies within range (determined by area radius and AOEboost Conditions)&lt;br /&gt;
|-&lt;br /&gt;
| CreateSurface,2,,Fire,100,2 || 100% chance to create a circle of fire with 2m radius that lasts 2 rounds.&lt;br /&gt;
|-&lt;br /&gt;
| CLEANSE_WOUNDS,100,1;TargetCreateSurface,1,,Water || Heal targets and create water of 1m radius under them.&lt;br /&gt;
|-&lt;br /&gt;
| Equalize,All; Sabotage,1 || Equalize the health of a group of targets, and explode 1 random arrow or grenade in each of their inventories.&lt;br /&gt;
|-&lt;br /&gt;
| Resurrect,500,20 || Revive a character with 20% vitality.&lt;br /&gt;
|-&lt;br /&gt;
| SELF:IF(Surface:Fire):ARROWHEAD_FIRE,100,2 || If targeting a fire surface, apply fire damage buff to yourself for 2 turns.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S):INF_FIRE,100,-1 || If targeting an incarnate, permanently grant it fire infusion &lt;br /&gt;
|-&lt;br /&gt;
| Summon,4cd5defc-5d36-4d76-b606-b6ca69a13617,4,totem,Target_DummyTargetSkill; || Summon a bone totem for 4 turns. &lt;br /&gt;
|-&lt;br /&gt;
| Ignite;Melt;Contaminate || Explode existing oil and poison surfaces, melt ice, and turn water into poison&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S&amp;amp;(InSurface:SurfaceFire&amp;amp;#124;InSurface:SurfaceLava)):INF_FIRE,100,-1 || If target is incarnate and in fire or lava, permanently grant fire infusion.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(HasStatus:BLEEDING&amp;amp;#124;InSurface:SurfaceBlood):DECAYING_TOUCH,100,2 || If target is bleeding or standing in blood, then apply decaying touch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
&lt;br /&gt;
Templates are used any skill that uses &amp;quot;entities&amp;quot; including projectiles, summons, and walls. The entry of a template is a root templates GUID. &lt;br /&gt;
&lt;br /&gt;
A projectile template defines the visual of the projectile, as well as its arc and the visual of the arc preview.&lt;br /&gt;
&lt;br /&gt;
Summon templates are the character or item summoned (either as a direct summon skill, or as an skill property Summon entry entry.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Best Practice ==&lt;br /&gt;
&lt;br /&gt;
When designing skills, consider the niche it fills and what sort of flavor it has. Try to make the skill feel distinct, but easy to understand. A little flavor text and a good name can go a long way to making a skill interesting.&lt;br /&gt;
&lt;br /&gt;
If you want the AI to use new skills intelligently, avoid scripting if you can. The AI can adapt to new skills, and can interpret the value of statuses with simple stat bonuses pr reductions. In general, a skill that does not depend on scripts will have less opportunity for bugs.&lt;br /&gt;
&lt;br /&gt;
If AI use is not a priority, and you've exhausted possibilities within the stats editor, then scripting can open up new opportunities. In general, the easiest way to script a skill is to have the skill apply a custom status, and use the OnStatusApplied(__Me,YOURSTATUS) trigger in a character script that every character this skill can be used on has (e.g., Base, or &amp;quot;Player&amp;quot; if this skill is only cast on players.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Stats]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1869</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1869"/>
		<updated>2017-09-10T18:09:51Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting. Almost any kind of skill is possible, though some things are more difficult than others. Skills, like most stats, can be edited in both the editor's stat editor and directly in a text editor. Both have their advantages, though it is recommended you start with adding skills in the stat editor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Type == &lt;br /&gt;
&lt;br /&gt;
Skill Type determines the fundamental behavior of the skill and what parameters are available to edit.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
== Basic Parameters ==&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. Usually a structure of &amp;quot;Skilltype_Skillname.&amp;quot;&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
== Damage ==&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
== Range ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* '''Requirement''', a weapon requirement: StaffWeapon, MeleeWeapon, RangedWeapon, DaggerWeapon, ShieldWeapon, None&lt;br /&gt;
* '''Requirements''', conditional requirements: Combat, Immobile (typically checking !Immobile for teleport skills)&lt;br /&gt;
* '''Memorization Requirements''', ability requirements (e.g., RangerLore 2, or Sneaking 1) to memorize the skill&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetConditions''', what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
* '''AOEConditions''', conditions for an AOEBoost skill property.&lt;br /&gt;
* '''ForceTarget''', If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
* '''CanTargetCharacters''', if yes, can target characters&lt;br /&gt;
* '''CanTargetItems''', If yes, can target items.&lt;br /&gt;
* '''CanTargetTerrain''', If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;br /&gt;
&lt;br /&gt;
Conditions can include Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Note'': Combat should generally be a requirement, not a condition.&lt;br /&gt;
&lt;br /&gt;
'''Examples'''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|(HasStatus:BURNING)|SurfaceFire // target either entities standing in fire or burning, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // (Chain Heal) target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Properties ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SkillProperties&amp;quot; parameter gives skills status effects and a few other specific effects. Like conditions, skill properties can take simple logic.&lt;br /&gt;
&lt;br /&gt;
* '''Statuses''', in the form of &amp;quot;''STATUS,Chance,Duration.''&amp;quot;&lt;br /&gt;
* '''AOE dependent statuses''', with ''AOEBOOST:STATUS,Chance,Duration''&lt;br /&gt;
* '''Surface creation''', in the form of &amp;quot;''CreateSurface,Radius,?,SurfaceType,Chance,Duration?''&amp;quot; &lt;br /&gt;
* '''Target surface creation''', surfaces appear only on targets with ''TargetCreateSurface.''&lt;br /&gt;
* '''Cone surface creation''', surfaces appears in a cone area ''TargetCreateConeSurface''.&lt;br /&gt;
* '''Surface manipulation''', such as ''ignite'' or ''curse''.&lt;br /&gt;
* '''Resurrect''', Revive a character with ''Resurrect,Chance?,VitalityOnRevived''.&lt;br /&gt;
* '''Backstab conditions''', including ''AlwaysBackstab'' and ''CanBackstab''.&lt;br /&gt;
* '''High ground''', use ''AlwaysHighGround'' to always grant a skill high ground bonuses.&lt;br /&gt;
* '''Equalize''', take vitality and armor percentages and equalize them among certain targets with ''Equalize, TargetType''.&lt;br /&gt;
* '''Summon''', for specific instances, you can summon characters with ''Summon,Template,Duration,SummonType,?.'' SummonType is totem or '-', for non-totem?&lt;br /&gt;
* '''Source''', steal source points with ''DRAIN,????''.&lt;br /&gt;
* '''Swap''', Swap places with your target with ''SwapPlaces,?,?,Effect,Effect''.&lt;br /&gt;
* '''Sabotage''', blow up a random arrow or grenade in an inventory with ''Sabotage,Amount.''&lt;br /&gt;
* '''Movement based damage''', with ''DAMAGE_ON_MOVE,Chance,Duration,?,?''.&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SkillProperties !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BLEEDING,100,2 || 100% chance to set bleeding for 2 turns&lt;br /&gt;
|-&lt;br /&gt;
| AOEBOOST:HARMONY,100,2 || Heal the target according to the number of allies within range (determined by area radius and AOEboost Conditions)&lt;br /&gt;
|-&lt;br /&gt;
| CreateSurface,2,,Fire,100,2 || 100% chance to create a circle of fire with 2m radius that lasts 2 rounds.&lt;br /&gt;
|-&lt;br /&gt;
| CLEANSE_WOUNDS,100,1;TargetCreateSurface,1,,Water || Heal targets and create water of 1m radius under them.&lt;br /&gt;
|-&lt;br /&gt;
| Equalize,All; Sabotage,1 || Equalize the health of a group of targets, and explode 1 random arrow or grenade in each of their inventories.&lt;br /&gt;
|-&lt;br /&gt;
| Resurrect,500,20 || Revive a character with 20% vitality.&lt;br /&gt;
|-&lt;br /&gt;
| SELF:IF(Surface:Fire):ARROWHEAD_FIRE,100,2 || If targeting a fire surface, apply fire damage buff to yourself for 2 turns.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S):INF_FIRE,100,-1 || If targeting an incarnate, permanently grant it fire infusion &lt;br /&gt;
|-&lt;br /&gt;
| Summon,4cd5defc-5d36-4d76-b606-b6ca69a13617,4,totem,Target_DummyTargetSkill; || Summon a bone totem for 4 turns. &lt;br /&gt;
|-&lt;br /&gt;
| Ignite;Melt;Contaminate || Explode existing oil and poison surfaces, melt ice, and turn water into poison&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S&amp;amp;(InSurface:SurfaceFire&amp;amp;#124;InSurface:SurfaceLava)):INF_FIRE,100,-1 || If target is incarnate and in fire or lava, permanently grant fire infusion.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(HasStatus:BLEEDING&amp;amp;#124;InSurface:SurfaceBlood):DECAYING_TOUCH,100,2 || If target is bleeding or standing in blood, then apply decaying touch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
&lt;br /&gt;
Templates are used any skill that uses &amp;quot;entities&amp;quot; including projectiles, summons, and walls. The entry of a template is a root templates GUID. &lt;br /&gt;
&lt;br /&gt;
A projectile template defines the visual of the projectile, as well as its arc and the visual of the arc preview.&lt;br /&gt;
&lt;br /&gt;
Summon templates are the character or item summoned (either as a direct summon skill, or as an skill property Summon entry entry.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Best Practice ==&lt;br /&gt;
&lt;br /&gt;
When designing skills, consider the niche it fills and what sort of flavor it has. Try to make the skill feel distinct, but easy to understand. A little flavor text and a good name can go a long way to making a skill interesting.&lt;br /&gt;
&lt;br /&gt;
If you want the AI to use new skills intelligently, avoid scripting if you can. The AI can adapt to new skills, and can interpret the value of statuses with simple stat bonuses pr reductions. In general, a skill that does not depend on scripts will have less opportunity for bugs.&lt;br /&gt;
&lt;br /&gt;
If AI use is not a priority, and you've exhausted possibilities within the stats editor, then scripting can open up new opportunities. In general, the easiest way to script a skill is to have the skill apply a custom status, and use the OnStatusApplied(__Me,YOURSTATUS) trigger in a character script that every character this skill can be used on has (e.g., Base, or &amp;quot;Player&amp;quot; if this skill is only cast on players.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Stats]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1863</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1863"/>
		<updated>2017-09-10T17:35:09Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting. Almost any kind of skill is possible, though some things are more difficult than others. Skills, like most stats, can be edited in both the editor's stat editor and directly in a text editor. Both have their advantages, though it is recommended you start with adding skills in the stat editor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Type == &lt;br /&gt;
&lt;br /&gt;
Skill Type determines the fundamental behavior of the skill and what parameters are available to edit.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
== Basic Parameters ==&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. Usually a structure of &amp;quot;Skilltype_Skillname.&amp;quot;&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
== Damage ==&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
== Range ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* '''Requirement''', a weapon requirement: StaffWeapon, MeleeWeapon, RangedWeapon, DaggerWeapon, ShieldWeapon, None&lt;br /&gt;
* '''Requirements''', conditional requirements: Combat, Immobile (typically checking !Immobile for teleport skills)&lt;br /&gt;
* '''Memorization Requirements''', ability requirements (e.g., RangerLore 2, or Sneaking 1) to memorize the skill&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetConditions''', what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
* '''AOEConditions''', conditions for an AOEBoost skill property.&lt;br /&gt;
* '''ForceTarget''', If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
* '''CanTargetCharacters''', if yes, can target characters&lt;br /&gt;
* '''CanTargetItems''', If yes, can target items.&lt;br /&gt;
* '''CanTargetTerrain''', If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;br /&gt;
&lt;br /&gt;
Conditions can include Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Note'': Combat should generally be a requirement, not a condition.&lt;br /&gt;
&lt;br /&gt;
'''Examples'''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|(HasStatus:BURNING)|SurfaceFire // target either entities standing in fire or burning, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // (Chain Heal) target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Properties ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SkillProperties&amp;quot; parameter gives skills status effects and a few other specific effects. Like conditions, skill properties can take simple logic.&lt;br /&gt;
&lt;br /&gt;
* '''Statuses''', in the form of &amp;quot;''STATUS,Chance,Duration.''&amp;quot;&lt;br /&gt;
* '''AOE dependent statuses''', with ''AOEBOOST:STATUS,Chance,Duration''&lt;br /&gt;
* '''Surface creation''', in the form of &amp;quot;''CreateSurface,Radius,?,SurfaceType,Chance,Duration?''&amp;quot; &lt;br /&gt;
* '''Target surface creation''', surfaces appear only on targets with ''TargetCreateSurface.''&lt;br /&gt;
* '''Cone surface creation''', surfaces appears in a cone area ''TargetCreateConeSurface''.&lt;br /&gt;
* '''Surface manipulation''', such as ''ignite'' or ''curse''.&lt;br /&gt;
* '''Resurrect''', Revive a character with ''Resurrect,Chance?,VitalityOnRevived''.&lt;br /&gt;
* '''Backstab conditions''', including ''AlwaysBackstab'' and ''CanBackstab''.&lt;br /&gt;
* '''High ground''', use ''AlwaysHighGround'' to always grant a skill high ground bonuses.&lt;br /&gt;
* '''Equalize''', take vitality and armor percentages and equalize them among certain targets with ''Equalize, TargetType''.&lt;br /&gt;
* '''Summon''', for specific instances, you can summon characters with ''Summon,Template,Duration,SummonType,?.'' SummonType is totem or '-', for non-totem?&lt;br /&gt;
* '''Source''', steal source points with ''DRAIN,????''.&lt;br /&gt;
* '''Swap''', Swap places with your target with ''SwapPlaces,?,?,Effect,Effect''.&lt;br /&gt;
* '''Sabotage''', blow up a random arrow or grenade in an inventory with ''Sabotage,Amount.''&lt;br /&gt;
* '''Movement based damage''', with ''DAMAGE_ON_MOVE,Chance,Duration,?,?''.&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SkillProperties !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BLEEDING,100,2 || 100% chance to set bleeding for 2 turns&lt;br /&gt;
|-&lt;br /&gt;
| AOEBOOST:HARMONY,100,2 || Heal the target according to the number of allies within range (determined by area radius and AOEboost Conditions)&lt;br /&gt;
|-&lt;br /&gt;
| CreateSurface,2,,Fire,100,2 || 100% chance to create a circle of fire with 2m radius that lasts 2 rounds.&lt;br /&gt;
|-&lt;br /&gt;
| CLEANSE_WOUNDS,100,1;TargetCreateSurface,1,,Water || Heal targets and create water of 1m radius under them.&lt;br /&gt;
|-&lt;br /&gt;
| Equalize,All; Sabotage,1 || Equalize the health of a group of targets, and explode 1 random arrow or grenade in each of their inventories.&lt;br /&gt;
|-&lt;br /&gt;
| Resurrect,500,20 || Revive a character with 20% vitality.&lt;br /&gt;
|-&lt;br /&gt;
| SELF:IF(Surface:Fire):ARROWHEAD_FIRE,100,2 || If targeting a fire surface, apply fire damage buff to yourself for 2 turns.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S):INF_FIRE,100,-1 || If targeting an incarnate, permanently grant it fire infusion &lt;br /&gt;
|-&lt;br /&gt;
| Summon,4cd5defc-5d36-4d76-b606-b6ca69a13617,4,totem,Target_DummyTargetSkill; || Summon a bone totem for 4 turns. &lt;br /&gt;
|-&lt;br /&gt;
| Ignite;Melt;Contaminate || Explode existing oil and poison surfaces, melt ice, and turn water into poison&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S&amp;amp;(InSurface:SurfaceFire&amp;amp;#124;InSurface:SurfaceLava)):INF_FIRE,100,-1 || If target is incarnate and in fire or lava, permanently grant fire infusion.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(HasStatus:BLEEDING&amp;amp;#124;InSurface:SurfaceBlood):DECAYING_TOUCH,100,2 || If target is bleeding or standing in blood, then apply decaying touch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Best Practice ==&lt;br /&gt;
&lt;br /&gt;
When designing skills, consider the niche it fills and what sort of flavor it has. Try to make the skill feel distinct, but easy to understand. A little flavor text and a good name can go a long way to making a skill interesting.&lt;br /&gt;
&lt;br /&gt;
If you want the AI to use new skills intelligently, avoid scripting if you can. The AI can adapt to new skills, and can interpret the value of statuses with simple stat bonuses pr reductions. In general, a skill that does not depend on scripts will have less opportunity for bugs.&lt;br /&gt;
&lt;br /&gt;
If AI use is not a priority, and you've exhausted possibilities within the stats editor, then scripting can open up new opportunities. In general, the easiest way to script a skill is to have the skill apply a custom status, and use the OnStatusApplied(__Me,YOURSTATUS) trigger in a character script that every character this skill can be used on has (e.g., Base, or &amp;quot;Player&amp;quot; if this skill is only cast on players.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Stats]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Talk:Scripting&amp;diff=1855</id>
		<title>Talk:Scripting</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Talk:Scripting&amp;diff=1855"/>
		<updated>2017-09-10T03:29:22Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some very useful information here. I'm slightly confused about the purpose of SCRIPTFRAMES. It would be nice to see an example of one, including the Osiris code. Also an example of a LIST in action would be nice. I also think the example EVENT is not super helpful, since most people aren't going to know what the archetypes are.&lt;br /&gt;
&lt;br /&gt;
I also find the Behavior example confusing. It looks like maybe there's a ! on the second condition (for dangerous surfaces), that shouldn't be there?&lt;br /&gt;
&lt;br /&gt;
Under common mistakes there's CHECK or IF. Are there situations where you would use IF over CHECK in behavior?&lt;br /&gt;
&lt;br /&gt;
Another common mistake I think could be checking things in the wrong order. Something like:&lt;br /&gt;
&lt;br /&gt;
IsGreaterThen(_Vitality,.5)&lt;br /&gt;
CharacterGetStat(_Vitality,__Me,Vitality)&lt;br /&gt;
&lt;br /&gt;
(I mean, that is a mistake, right?)&lt;br /&gt;
&lt;br /&gt;
Will DebugText print the text exactly as you put it in? Like printing out the float value 0.47 exactly as &amp;quot;0.47&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
Going over types of variables (INT, FLOAT, FIXEDSTRING, STATUS, CHARACTERTEMPLATE, etc.) here or somewhere else would be useful too.&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Talk:Scripting&amp;diff=1854</id>
		<title>Talk:Scripting</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Talk:Scripting&amp;diff=1854"/>
		<updated>2017-09-10T03:27:36Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some very useful information here. I'm slightly confused about the purpose of SCRIPTFRAMES. It would be nice to see an example of one, including the Osiris code. Also an example of a LIST in action would be nice. I also think the example EVENT is not super helpful, since most people aren't going to know what the archetypes are.&lt;br /&gt;
&lt;br /&gt;
I also find the Behavior example confusing. It looks like maybe there's a ! on the second condition (for dangerous surfaces), that shouldn't be there?&lt;br /&gt;
&lt;br /&gt;
Under common mistakes there's CHECK or IF. Are there situations where you would use IF over CHECK in behavior?&lt;br /&gt;
&lt;br /&gt;
Another common mistake I think could be checking things in the wrong order. Something like:&lt;br /&gt;
&lt;br /&gt;
IsGreaterThen(_Vitality,.5)&lt;br /&gt;
CharacterGetStat(_Vitality,__Me,Vitality)&lt;br /&gt;
&lt;br /&gt;
(I mean, that is a mistake, right?)&lt;br /&gt;
&lt;br /&gt;
Will DebugText print the text exactly as you put it in? Like printing out the float value 0.47 exactly as &amp;quot;0.47&amp;quot;?&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Talk:Scripting&amp;diff=1853</id>
		<title>Talk:Scripting</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Talk:Scripting&amp;diff=1853"/>
		<updated>2017-09-10T00:04:06Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: Created page with &amp;quot;Some very useful information here. I'm slightly confused about the purpose of SCRIPTFRAMES. It would be nice to see an example of one, including the Osiris code. Also an examp...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some very useful information here. I'm slightly confused about the purpose of SCRIPTFRAMES. It would be nice to see an example of one, including the Osiris code. Also an example of a LIST in action would be nice. I also think the example EVENT is not super helpful, since most people aren't going to know what the archetypes are.&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1746</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1746"/>
		<updated>2017-09-08T05:17:53Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting. Almost any kind of skill is possible, though some things are more difficult than others. Skills, like most stats, can be edited in both the editor's stat editor and directly in a text editor. Both have their advantages, though it is recommended you start with adding skills in the stat editor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Type == &lt;br /&gt;
&lt;br /&gt;
Skill Type determines the fundamental behavior of the skill and what parameters are available to edit.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
== Basic Parameters ==&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. Usually a structure of &amp;quot;Skilltype_Skillname.&amp;quot;&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
== Damage ==&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
== Range ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetConditions''', what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
* '''AOEConditions''', conditions for an AOEBoost skill property.&lt;br /&gt;
* '''ForceTarget''', If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
* '''CanTargetCharacters''', if yes, can target characters&lt;br /&gt;
* '''CanTargetItems''', If yes, can target items.&lt;br /&gt;
* '''CanTargetTerrain''', If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;br /&gt;
&lt;br /&gt;
Conditions can include Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Example Target Conditions''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|(HasStatus:BURNING)|SurfaceFire // target either entities standing in fire or burning, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* (Chain Heal): !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Properties ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SkillProperties&amp;quot; parameter gives skills status effects and a few other specific effects. Like conditions, skill properties can take simple logic.&lt;br /&gt;
&lt;br /&gt;
* '''Statuses''', in the form of &amp;quot;''STATUS,CHANCE,DURATION.''&amp;quot;&lt;br /&gt;
* '''AOE dependent statuses''', with AOEBOOST&lt;br /&gt;
* '''Surface creation''', in the form of &amp;quot;''CreateSurface,Radius,?,SurfaceType,Chance,Duration?''&amp;quot; Can also appear only on targets with TargetCreateSurface.&lt;br /&gt;
* '''Surface manipulation''', such as ''ignite'' or ''curse''.&lt;br /&gt;
* '''Backstab conditions''', including ''AlwaysBackstab'' and ''CanBackstab''&lt;br /&gt;
* '''High ground''', use ''AlwaysHighGround'' to always grant a skill high ground bonuses.&lt;br /&gt;
* '''Equalize''', take vitality and armor percentages and equalize them among certain targets with Equalize, TargetType&lt;br /&gt;
* '''Summon''', for specific instances, you can summon characters with ''Summon,Template,Duration,SummonType,?.'' SummonType is totem or '-', for non-totem?&lt;br /&gt;
* '''Source''', steal source points with DRAIN,????&lt;br /&gt;
* '''Sabotage''', blow up a random arrow or grenade in an inventory with &amp;quot;Sabotage,Amount.&amp;quot;&lt;br /&gt;
* '''Movement based damage''', with DAMAGE_ON_MOVE,Chance,Duration,?,?&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SkillProperties !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BLEEDING,100,2 || 100% chance to set bleeding for 2 turns&lt;br /&gt;
|-&lt;br /&gt;
| AOEBOOST:HARMONY,100,2 || Heal the target according to the number of allies within range (determined by area radius and AOEboost Conditions)&lt;br /&gt;
|-&lt;br /&gt;
| CreateSurface,2,,Fire,100,2 || 100% chance to create a circle of fire with 2m radius that lasts 2 rounds.&lt;br /&gt;
|-&lt;br /&gt;
| CLEANSE_WOUNDS,100,1;TargetCreateSurface,1,,Water || Heal targets and create water of 1m radius under them.&lt;br /&gt;
|-&lt;br /&gt;
| Equalize,All; Sabotage,1 || Equalize the health of a group of targets, and explode 1 random arrow or grenade in each of their inventories.&lt;br /&gt;
|-&lt;br /&gt;
| SELF:IF(Surface:Fire):ARROWHEAD_FIRE,100,2 || If targeting a fire surface, apply fire damage buff to yourself for 2 turns.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S):INF_FIRE,100,-1 || If targeting an incarnate, permanently grant it fire infusion &lt;br /&gt;
|-&lt;br /&gt;
| Summon,4cd5defc-5d36-4d76-b606-b6ca69a13617,4,totem,Target_DummyTargetSkill; || Summon a bone totem for 4 turns. &lt;br /&gt;
|-&lt;br /&gt;
| Ignite;Melt;Contaminate || Explode existing oil and poison surfaces, melt ice, and turn water into poison&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S&amp;amp;(InSurface:SurfaceFire'InSurface:SurfaceLava)):INF_FIRE,100,-1 || If target is incarnate and in fire or lava, permanently grant fire infusion.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(HasStatus:BLEEDING'InSurface:SurfaceBlood):DECAYING_TOUCH,100,2 || If target is bleeding or standing in blood, then apply decaying touch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Best Practice ==&lt;br /&gt;
&lt;br /&gt;
When designing skills, consider the niche it fills and what sort of flavor it has. Try to make the skill feel distinct, but easy to understand. A little flavor text and a good name can go a long way to making a skill interesting.&lt;br /&gt;
&lt;br /&gt;
If you want the AI to use new skills intelligently, avoid scripting if you can. The AI can adapt to new skills, and can interpret the value of statuses with simple stat bonuses pr reductions. In general, a skill that does not depend on scripts will have less opportunity for bugs.&lt;br /&gt;
&lt;br /&gt;
If AI use is not a priority, and you've exhausted possibilities within the stats editor, then scripting can open up new opportunities. In general, the easiest way to script a skill is to have the skill apply a custom status, and use the OnStatusApplied(__Me,YOURSTATUS) trigger in a character script that every character this skill can be used on has (e.g., Base, or &amp;quot;Player&amp;quot; if this skill is only cast on players.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Stats]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1745</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1745"/>
		<updated>2017-09-08T03:33:00Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: /* Skill Properties */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting. Almost any kind of skill is possible, though some things are more difficult than others. Skills, like most stats, can be edited in both the editor's stat editor and directly in a text editor. Both have their advantages, though it is recommended you start with adding skills in the stat editor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Type == &lt;br /&gt;
&lt;br /&gt;
Skill Type determines the fundamental behavior of the skill and what parameters are available to edit.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
== Basic Parameters ==&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. Usually a structure of &amp;quot;Skilltype_Skillname.&amp;quot;&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
== Damage ==&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
== Range ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetConditions''', what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
* '''AOEConditions''', conditions for an AOEBoost skill property.&lt;br /&gt;
* '''ForceTarget''', If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
* '''CanTargetCharacters''', if yes, can target characters&lt;br /&gt;
* '''CanTargetItems''', If yes, can target items.&lt;br /&gt;
* '''CanTargetTerrain''', If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;br /&gt;
&lt;br /&gt;
Conditions can include Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Example Target Conditions''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|(HasStatus:BURNING)|SurfaceFire // target either entities standing in fire or burning, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* (Chain Heal): !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Properties ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SkillProperties&amp;quot; parameter gives skills status effects and a few other specific effects. Like conditions, skill properties can take simple logic.&lt;br /&gt;
&lt;br /&gt;
* '''Statuses''', in the form of &amp;quot;''STATUS,CHANCE,DURATION.''&amp;quot;&lt;br /&gt;
* '''AOE dependent statuses''', with AOEBOOST&lt;br /&gt;
* '''Surface creation''', in the form of &amp;quot;''CreateSurface,Radius,?,SurfaceType,Chance,Duration?''&amp;quot; Can also appear only on targets with TargetCreateSurface.&lt;br /&gt;
* '''Surface manipulation''', such as ''ignite'' or ''curse''.&lt;br /&gt;
* '''Backstab conditions''', including ''AlwaysBackstab'' and ''CanBackstab''&lt;br /&gt;
* '''High ground''', use ''AlwaysHighGround'' to always grant a skill high ground bonuses.&lt;br /&gt;
* '''Equalize''', take vitality and armor percentages and equalize them among certain targets with Equalize, TargetType&lt;br /&gt;
* '''Summon''', for specific instances, you can summon characters with ''Summon,Template,Duration,SummonType,?.'' SummonType is totem or '-', for non-totem?&lt;br /&gt;
* '''Source''', steal source points with DRAIN,????&lt;br /&gt;
* '''Sabotage''', blow up a random arrow or grenade in an inventory with &amp;quot;Sabotage,Amount.&amp;quot;&lt;br /&gt;
* '''Movement based damage''', with DAMAGE_ON_MOVE,Chance,Duration,?,?&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SkillProperties !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BLEEDING,100,2 || 100% chance to set bleeding for 2 turns&lt;br /&gt;
|-&lt;br /&gt;
| AOEBOOST:HARMONY,100,2 || Heal the target according to the number of allies within range (determined by area radius and AOEboost Conditions)&lt;br /&gt;
|-&lt;br /&gt;
| CreateSurface,2,,Fire,100,2 || 100% chance to create a circle of fire with 2m radius that lasts 2 rounds.&lt;br /&gt;
|-&lt;br /&gt;
|CLEANSE_WOUNDS,100,1;TargetCreateSurface,1,,Water || Heal targets and create water of 1m radius under them.&lt;br /&gt;
|-&lt;br /&gt;
| Equalize,All; Sabotage,1 || Equalize the health of a group of targets, and explode 1 random arrow or grenade in each of their inventories.&lt;br /&gt;
|-&lt;br /&gt;
| SELF:IF(Surface:Fire):ARROWHEAD_FIRE,100,2 || If targeting a fire surface, apply fire damage buff to yourself for 2 turns.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S):INF_FIRE,100,-1 || If targeting an incarnate, permanently grant it fire infusion &lt;br /&gt;
|-&lt;br /&gt;
| Summon,4cd5defc-5d36-4d76-b606-b6ca69a13617,4,totem,Target_DummyTargetSkill; || Summon a bone totem for 4 turns. &lt;br /&gt;
|-&lt;br /&gt;
| Ignite;Melt;Contaminate || Explode existing oil and poison surfaces, melt ice, and turn water into poison&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S&amp;amp;(InSurface:SurfaceFire'InSurface:SurfaceLava)):INF_FIRE,100,-1 || If target is incarnate and in fire or lava, permanently grant fire infusion.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(HasStatus:BLEEDING'InSurface:SurfaceBlood):DECAYING_TOUCH,100,2 || If target is bleeding or standing in blood, then apply decaying touch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Stats]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1665</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1665"/>
		<updated>2017-09-07T00:52:26Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting. Almost any kind of skill is possible, though some things are more difficult than others. Skills, like most stats, can be edited in both the editor's stat editor and directly in a text editor. Both have their advantages, though it is recommended you start with adding skills in the stat editor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Type == &lt;br /&gt;
&lt;br /&gt;
Skill Type determines the fundamental behavior of the skill and what parameters are available to edit.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
== Basic Parameters ==&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. Usually a structure of &amp;quot;Skilltype_Skillname.&amp;quot;&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
== Damage ==&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
== Range ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetConditions''', what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
* '''AOEConditions''', conditions for an AOEBoost skill property.&lt;br /&gt;
* '''ForceTarget''', If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
* '''CanTargetCharacters''', if yes, can target characters&lt;br /&gt;
* '''CanTargetItems''', If yes, can target items.&lt;br /&gt;
* '''CanTargetTerrain''', If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;br /&gt;
&lt;br /&gt;
Conditions can include Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Example Target Conditions''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|(HasStatus:BURNING)|SurfaceFire // target either entities standing in fire or burning, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* (Chain Heal): !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Properties ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SkillProperties&amp;quot; parameter gives skills status effects and a few other specific effects. Like conditions, skill properties can take simple logic.&lt;br /&gt;
&lt;br /&gt;
* '''Statuses''', in the form of &amp;quot;''STATUS,CHANCE,DURATION.''&amp;quot;&lt;br /&gt;
* '''AOE dependent statuses''', with AOEBOOST&lt;br /&gt;
* '''Surface creation''', in the form of &amp;quot;''CreateSurface,Radius,?,SurfaceType,Chance,Duration?''&amp;quot; Can also appear only on targets with TargetCreateSurface.&lt;br /&gt;
* '''Surface manipulation''', such as ''ignite'' or ''curse''.&lt;br /&gt;
* '''Backstab conditions''', including ''AlwaysBackstab'' and ''CanBackstab''&lt;br /&gt;
* '''High ground''', use ''AlwaysHighGround'' to always grant a skill high ground bonuses.&lt;br /&gt;
* '''Equalize''', take vitality and armor percentages and equalize them among certain targets with Equalize, TargetType&lt;br /&gt;
* '''Source''', steal source points with DRAIN,????&lt;br /&gt;
* '''Sabotage''', blow up a random arrow or grenade in an inventory with &amp;quot;Sabotage,Amount.&amp;quot;&lt;br /&gt;
* '''Movement based damage''', with DAMAGE_ON_MOVE,Chance,Duration,?,?&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SkillProperties !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BLEEDING,100,2 || 100% chance to set bleeding for 2 turns&lt;br /&gt;
|-&lt;br /&gt;
| AOEBOOST:HARMONY,100,2 || Heal the target according to the number of allies within range (determined by area radius and AOEboost Conditions)&lt;br /&gt;
|-&lt;br /&gt;
| CreateSurface,2,,Fire,100,2 || 100% chance to create a circle of fire with 2m radius that lasts 2 rounds.&lt;br /&gt;
|-&lt;br /&gt;
|CLEANSE_WOUNDS,100,1;TargetCreateSurface,1,,Water || Heal targets and create water of 1m radius under them.&lt;br /&gt;
|-&lt;br /&gt;
| Equalize,All; Sabotage,1 || Equalize the health of a group of targets, and explode 1 random arrow or grenade in each of their inventories.&lt;br /&gt;
|-&lt;br /&gt;
| SELF:IF(Surface:Fire):ARROWHEAD_FIRE,100,2 || If targeting a fire surface, apply fire damage buff to yourself for 2 turns.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S):INF_FIRE,100,-1 || If targeting an incarnate, permanently grant it fire infusion &lt;br /&gt;
|-&lt;br /&gt;
| Ignite;Melt;Contaminate || Explode existing oil and poison surfaces, melt ice, and turn water into poison&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S&amp;amp;(InSurface:SurfaceFire'InSurface:SurfaceLava)):INF_FIRE,100,-1 || If target is incarnate and in fire or lava, permanently grant fire infusion.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(HasStatus:BLEEDING'InSurface:SurfaceBlood):DECAYING_TOUCH,100,2 || If target is bleeding or standing in blood, then apply decaying touch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Stats]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=File:RainSkillStatEditor.png&amp;diff=1664</id>
		<title>File:RainSkillStatEditor.png</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=File:RainSkillStatEditor.png&amp;diff=1664"/>
		<updated>2017-09-07T00:26:27Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: Rain skill in Stat Editor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rain skill in Stat Editor&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=File:RainSkillTextEditor.png&amp;diff=1663</id>
		<title>File:RainSkillTextEditor.png</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=File:RainSkillTextEditor.png&amp;diff=1663"/>
		<updated>2017-09-07T00:23:54Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: Rain skill in text editor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rain skill in text editor&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1662</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1662"/>
		<updated>2017-09-07T00:23:00Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting. Almost any kind of skill is possible, though some things are more difficult than others. Skills, like most stats, can be edited in both the editor's stat editor and directly in a text editor. Both have their advantages, though it is recommended you start with adding skills in the stat editor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Type == &lt;br /&gt;
&lt;br /&gt;
Skill Type determines the fundamental behavior of the skill and what parameters are available to edit.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
== Basic Parameters ==&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. Usually a structure of &amp;quot;Skilltype_Skillname.&amp;quot;&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
== Damage ==&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
== Range ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetConditions''', what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
* '''AOEConditions''', conditions for an AOEBoost skill property.&lt;br /&gt;
* '''ForceTarget''', If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
* '''CanTargetCharacters''', if yes, can target characters&lt;br /&gt;
* '''CanTargetItems''', If yes, can target items.&lt;br /&gt;
* '''CanTargetTerrain''', If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;br /&gt;
&lt;br /&gt;
Conditions can include Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Example Target Conditions''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|(HasStatus:BURNING)|SurfaceFire // target either entities standing in fire or burning, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* (Chain Heal): !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Properties ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SkillProperties&amp;quot; parameter gives skills status effects and a few other specific effects. Like conditions, skill properties can take simple logic.&lt;br /&gt;
&lt;br /&gt;
* '''Statuses''', in the form of &amp;quot;''STATUS,CHANCE,DURATION.''&amp;quot;&lt;br /&gt;
* '''AOE dependent statuses''', with AOEBOOST&lt;br /&gt;
* '''Surface creation''', in the form of &amp;quot;''CreateSurface,Radius,?,SurfaceType,Chance,Duration?''&amp;quot; Can also appear only on targets with TargetCreateSurface.&lt;br /&gt;
* '''Surface manipulation''', such as ''ignite'' or ''curse''.&lt;br /&gt;
* '''Backstab conditions''', including ''AlwaysBackstab'' and ''CanBackstab''&lt;br /&gt;
* '''High ground''', use ''AlwaysHighGround'' to always grant a skill high ground bonuses.&lt;br /&gt;
* '''Equalize''', take vitality and armor percentages and equalize them among certain targets with Equalize, TargetType&lt;br /&gt;
* '''Source''', steal source points with DRAIN,????&lt;br /&gt;
* '''Sabotage''', blow up a random arrow or grenade in an inventory with &amp;quot;Sabotage,Amount.&amp;quot;&lt;br /&gt;
* '''Movement based damage''', with DAMAGE_ON_MOVE,Chance,Duration,?,?&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SkillProperties !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BLEEDING,100,2 || 100% chance to set bleeding for 2 turns&lt;br /&gt;
|-&lt;br /&gt;
| AOEBOOST:HARMONY,100,2 || Heal the target according to the number of allies within range (determined by area radius and AOEboost Conditions)&lt;br /&gt;
|-&lt;br /&gt;
| CreateSurface,2,,Fire,100,2 || 100% chance to create a circle of fire with 2m radius that lasts 2 rounds.&lt;br /&gt;
|-&lt;br /&gt;
|CLEANSE_WOUNDS,100,1;TargetCreateSurface,1,,Water || Heal targets and create water of 1m radius under them.&lt;br /&gt;
|-&lt;br /&gt;
| Equalize,All; Sabotage,1 || Equalize the health of a group of targets, and explode 1 random arrow or grenade in each of their inventories.&lt;br /&gt;
|-&lt;br /&gt;
| SELF:IF(Surface:Fire):ARROWHEAD_FIRE,100,2 || If targeting a fire surface, apply fire damage buff to yourself for 2 turns.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S):INF_FIRE,100,-1 || If targeting an incarnate, permanently grant it fire infusion &lt;br /&gt;
|-&lt;br /&gt;
| Ignite;Melt;Contaminate || Explode existing oil and poison surfaces, melt ice, and turn water into poison&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S&amp;amp;(InSurface:SurfaceFire'InSurface:SurfaceLava)):INF_FIRE,100,-1 || If target is incarnate and in fire or lava, permanently grant fire infusion.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(HasStatus:BLEEDING'InSurface:SurfaceBlood):DECAYING_TOUCH,100,2 || If target is bleeding or standing in blood, then apply decaying touch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Stats]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1661</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1661"/>
		<updated>2017-09-06T23:28:13Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting.&lt;br /&gt;
&lt;br /&gt;
== Skill Type == &lt;br /&gt;
&lt;br /&gt;
Skill Type determines the fundamental behavior of the skill and what parameters are available to edit.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
== Basic Parameters ==&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. Usually a structure of &amp;quot;Skilltype_Skillname.&amp;quot;&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
== Damage ==&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
== Range ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetConditions''', what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
* '''AOEConditions''', conditions for an AOEBoost skill property.&lt;br /&gt;
* '''ForceTarget''', If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
* '''CanTargetCharacters''', if yes, can target characters&lt;br /&gt;
* '''CanTargetItems''', If yes, can target items.&lt;br /&gt;
* '''CanTargetTerrain''', If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;br /&gt;
&lt;br /&gt;
Conditions can include Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Example Target Conditions''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|(HasStatus:BURNING)|SurfaceFire // target either entities standing in fire or burning, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* (Chain Heal): !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Properties ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SkillProperties&amp;quot; parameter gives skills status effects and a few other specific effects. Like conditions, skill properties can take simple logic.&lt;br /&gt;
&lt;br /&gt;
* '''Statuses''', in the form of &amp;quot;''STATUS,CHANCE,DURATION.''&amp;quot;&lt;br /&gt;
* '''AOE dependent statuses''', with AOEBOOST&lt;br /&gt;
* '''Surface creation''', in the form of &amp;quot;''CreateSurface,Radius,?,SurfaceType,Chance,Duration?''&amp;quot; Can also appear only on targets with TargetCreateSurface.&lt;br /&gt;
* '''Surface manipulation''', such as ''ignite'' or ''curse''.&lt;br /&gt;
* '''Backstab conditions''', including ''AlwaysBackstab'' and ''CanBackstab''&lt;br /&gt;
* '''High ground''', use ''AlwaysHighGround'' to always grant a skill high ground bonuses.&lt;br /&gt;
* '''Equalize''', take vitality and armor percentages and equalize them among certain targets with Equalize, TargetType&lt;br /&gt;
* '''Source''', steal source points with DRAIN,????&lt;br /&gt;
* '''Sabotage''', blow up a random arrow or grenade in an inventory with &amp;quot;Sabotage,Amount.&amp;quot;&lt;br /&gt;
* '''Movement based damage''', with DAMAGE_ON_MOVE,Chance,Duration,?,?&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SkillProperties !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BLEEDING,100,2 || 100% chance to set bleeding for 2 turns&lt;br /&gt;
|-&lt;br /&gt;
| AOEBOOST:HARMONY,100,2 || Heal the target according to the number of allies within range (determined by area radius and AOEboost Conditions)&lt;br /&gt;
|-&lt;br /&gt;
| CreateSurface,2,,Fire,100,2 || 100% chance to create a circle of fire with 2m radius that lasts 2 rounds.&lt;br /&gt;
|-&lt;br /&gt;
|CLEANSE_WOUNDS,100,1;TargetCreateSurface,1,,Water || Heal targets and create water of 1m radius under them.&lt;br /&gt;
|-&lt;br /&gt;
| Equalize,All; Sabotage,1 || Equalize the health of a group of targets, and explode 1 random arrow or grenade in each of their inventories.&lt;br /&gt;
|-&lt;br /&gt;
| SELF:IF(Surface:Fire):ARROWHEAD_FIRE,100,2 || If targeting a fire surface, apply fire damage buff to yourself for 2 turns.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S):INF_FIRE,100,-1 || If targeting an incarnate, permanently grant it fire infusion &lt;br /&gt;
|-&lt;br /&gt;
| Ignite;Melt;Contaminate || Explode existing oil and poison surfaces, melt ice, and turn water into poison&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S&amp;amp;(InSurface:SurfaceFire'InSurface:SurfaceLava)):INF_FIRE,100,-1 || If target is incarnate and in fire or lava, permanently grant fire infusion.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(HasStatus:BLEEDING'InSurface:SurfaceBlood):DECAYING_TOUCH,100,2 || If target is bleeding or standing in blood, then apply decaying touch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Stats]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1660</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1660"/>
		<updated>2017-09-06T20:46:56Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting.&lt;br /&gt;
&lt;br /&gt;
== Skill Type == &lt;br /&gt;
&lt;br /&gt;
Skill Type determines the fundamental behavior of the skill and what parameters are available to edit.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
== Basic Parameters ==&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. Usually a structure of &amp;quot;Skilltype_Skillname.&amp;quot;&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
== Damage ==&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
== Range ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetConditions''', what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
* '''AOEConditions''', conditions for an AOEBoost skill property.&lt;br /&gt;
* '''ForceTarget''', If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
* '''CanTargetCharacters''', if yes, can target characters&lt;br /&gt;
* '''CanTargetItems''', If yes, can target items.&lt;br /&gt;
* '''CanTargetTerrain''', If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;br /&gt;
&lt;br /&gt;
Conditions can include Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Example Target Conditions''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|(HasStatus:BURNING)|SurfaceFire // target either entities standing in fire or burning, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* (Chain Heal): !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Properties ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SkillProperties&amp;quot; parameter gives skills status effects and a few other specific effects. Like conditions, skill properties can take simple logic.&lt;br /&gt;
&lt;br /&gt;
* '''Statuses''', in the form of &amp;quot;''STATUS,CHANCE,DURATION.''&amp;quot;&lt;br /&gt;
* '''AOE dependent statuses''', with AOEBOOST&lt;br /&gt;
* '''Surface creation''', in the form of &amp;quot;''CreateSurface,Radius,?,SurfaceType,Chance,Duration?''&amp;quot; Can also appear only on targets with TargetCreateSurface.&lt;br /&gt;
* '''Surface manipulation''', such as ''ignite'' or ''curse''.&lt;br /&gt;
* '''Backstab conditions''', including ''AlwaysBackstab'' and ''CanBackstab''&lt;br /&gt;
* '''High ground''', use ''AlwaysHighGround'' to always grant a skill high ground bonuses.&lt;br /&gt;
* '''Equalize''', take vitality and armor percentages and equalize them among certain targets with Equalize, TargetType&lt;br /&gt;
* '''Source''', steal source points with DRAIN,????&lt;br /&gt;
* '''Sabotage''', blow up a random arrow or grenade in an inventory with &amp;quot;Sabotage,Amount.&amp;quot;&lt;br /&gt;
* '''Movement based damage''', with DAMAGE_ON_MOVE,Chance,Duration,?,?&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SkillProperties !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BLEEDING,100,2 || 100% chance to set bleeding for 2 turns&lt;br /&gt;
|-&lt;br /&gt;
| AOEBOOST:HARMONY,100,2 || Heal the target according to the number of allies within range (determined by area radius and AOEboost Conditions)&lt;br /&gt;
|-&lt;br /&gt;
| CreateSurface,2,,Fire,100,2 || 100% chance to create a circle of fire with 2m radius that lasts 2 rounds.&lt;br /&gt;
|-&lt;br /&gt;
|CLEANSE_WOUNDS,100,1;TargetCreateSurface,1,,Water || Heal targets and create water of 1m radius under them.&lt;br /&gt;
|-&lt;br /&gt;
| Equalize,All; Sabotage,1 || Equalize the health of a group of targets, and explode 1 random arrow or grenade in each of their inventories.&lt;br /&gt;
|-&lt;br /&gt;
| SELF:IF(Surface:Fire):ARROWHEAD_FIRE,100,2 || If targeting a fire surface, apply fire damage buff to yourself for 2 turns.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S):INF_FIRE,100,-1 || If targeting an incarnate, permanently grant it fire infusion &lt;br /&gt;
|-&lt;br /&gt;
| Ignite;Melt;Contaminate || Explode existing oil and poison surfaces, melt ice, and turn water into poison&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S&amp;amp;(InSurface:SurfaceFire'InSurface:SurfaceLava)):INF_FIRE,100,-1 || If target is incarnate and in fire or lava, permanently grant fire infusion.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(HasStatus:BLEEDING'InSurface:SurfaceBlood):DECAYING_TOUCH,100,2 || If target is bleeding, then apply decaying touch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Stats]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1659</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1659"/>
		<updated>2017-09-06T20:42:53Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting.&lt;br /&gt;
&lt;br /&gt;
== Skill Type == &lt;br /&gt;
&lt;br /&gt;
Skill Type determines the fundamental behavior of the skill and what parameters are available to edit.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
== Basic Parameters ==&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. Usually a structure of &amp;quot;Skilltype_Skillname.&amp;quot;&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
== Damage ==&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
== Range ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetConditions''', what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
* '''AOEConditions''', conditions for an AOEBoost skill property.&lt;br /&gt;
* '''ForceTarget''', If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
* '''CanTargetCharacters''', if yes, can target characters&lt;br /&gt;
* '''CanTargetItems''', If yes, can target items.&lt;br /&gt;
* '''CanTargetTerrain''', If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;br /&gt;
&lt;br /&gt;
Conditions can include Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Example Target Conditions''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|(HasStatus:BURNING)|SurfaceFire // target either entities standing in fire or burning, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* (Chain Heal): !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Properties ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SkillProperties&amp;quot; parameter gives skills status effects and a few other specific effects. Like conditions, skill properties can take simple logic.&lt;br /&gt;
&lt;br /&gt;
* '''Statuses''', in the form of &amp;quot;''STATUS,CHANCE,DURATION.''&amp;quot;&lt;br /&gt;
* '''AOE dependent statuses''', with AOEBOOST&lt;br /&gt;
* '''Surface creation''', in the form of &amp;quot;''CreateSurface,Radius,?,SurfaceType,Chance,Duration?''&amp;quot; Can also appear only on targets with TargetCreateSurface.&lt;br /&gt;
* '''Surface manipulation''', such as ''ignite'' or ''curse''.&lt;br /&gt;
* '''Backstab conditions''', including ''AlwaysBackstab'' and ''CanBackstab''&lt;br /&gt;
* '''High ground''', use ''AlwaysHighGround'' to always grant a skill high ground bonuses.&lt;br /&gt;
* '''Equalize''', take vitality and armor percentages and equalize them among certain targets with Equalize, TargetType&lt;br /&gt;
* '''Source''', steal source points with DRAIN,????&lt;br /&gt;
* '''Sabotage''', blow up a random arrow or grenade in an inventory with &amp;quot;Sabotage,Amount.&amp;quot;&lt;br /&gt;
* '''Movement based damage''', with DAMAGE_ON_MOVE,Chance,Duration,?,?&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SkillProperties !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BLEEDING,100,2 || 100% chance to set bleeding for 2 turns&lt;br /&gt;
|-&lt;br /&gt;
| AOEBOOST:HARMONY,100,2 || Heal the target according to the number of allies within range (determined by area radius and AOEboost Conditions)&lt;br /&gt;
|-&lt;br /&gt;
| CreateSurface,2,,Fire,100,2 || 100% chance to create a circle of fire with 2m radius that lasts 2 rounds.&lt;br /&gt;
|-&lt;br /&gt;
| TargetCreateSurface,1,,Water,100,2; CLEANSE_WOUNDS,100,0 || Heal targets and create water of 1m radius under them.&lt;br /&gt;
|-&lt;br /&gt;
| Equalize,All; Sabotage,1 || Equalize the health of a group of targets, and explode 1 random arrow or grenade in each of their inventories.&lt;br /&gt;
|-&lt;br /&gt;
| SELF:IF(Surface:Fire):ARROWHEAD_FIRE,100,2 || If targeting a fire surface, apply fire damage buff to yourself for 2 turns.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S):INF_FIRE,100,-1 || If targeting an incarnate, permanently grant it fire infusion &lt;br /&gt;
|-&lt;br /&gt;
| Ignite;Melt;Contaminate || Explode existing oil and poison surfaces, melt ice, and turn water into poison&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(Tagged:INCARNATE_S&amp;amp;(InSurface:SurfaceFire|InSurface:SurfaceLava)):INF_FIRE,100,-1 || If target is incarnate and in fire or lava, permanently grant fire infusion.&lt;br /&gt;
|-&lt;br /&gt;
| TARGET:IF(HasStatus:BLEEDING|InSurface:SurfaceBlood):DECAYING_TOUCH,100,2 || If target is bleeding, then apply decaying touch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Stats]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1658</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1658"/>
		<updated>2017-09-06T20:14:16Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: /* Skill Properties */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting.&lt;br /&gt;
&lt;br /&gt;
== Skill Type == &lt;br /&gt;
&lt;br /&gt;
Skill Type determines the fundamental behavior of the skill and what parameters are available to edit.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
== Basic Parameters ==&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. Usually a structure of &amp;quot;Skilltype_Skillname.&amp;quot;&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
== Damage ==&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
== Range ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetConditions''', what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
* '''AOEConditions''', conditions for an AOEBoost skill property.&lt;br /&gt;
* '''ForceTarget''', If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
* '''CanTargetCharacters''', if yes, can target characters&lt;br /&gt;
* '''CanTargetItems''', If yes, can target items.&lt;br /&gt;
* '''CanTargetTerrain''', If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;br /&gt;
&lt;br /&gt;
Conditions can include Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Example Target Conditions''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|(HasStatus:BURNING)|SurfaceFire // target either entities standing in fire or burning, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* (Chain Heal): !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Properties ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SkillProperties&amp;quot; parameter gives skills status effects and a few other specific effects. Like conditions, skill properties can take simple logic.&lt;br /&gt;
&lt;br /&gt;
* '''Statuses''', in the form of &amp;quot;''STATUS,CHANCE,DURATION.''&amp;quot;&lt;br /&gt;
* '''AOE dependent statuses''', with AOEBOOST&lt;br /&gt;
* '''Surface creation''', in the form of &amp;quot;''CreateSurface,Radius,?,SurfaceType,Chance,Duration?''&amp;quot; Can also appear only on targets with TargetCreateSurface.&lt;br /&gt;
* '''Surface manipulation''', such as ''ignite'' or ''curse''.&lt;br /&gt;
* '''Backstab conditions''', including ''AlwaysBackstab'' and ''CanBackstab''&lt;br /&gt;
* '''High ground''', use ''AlwaysHighGround'' to always grant a skill high ground bonuses.&lt;br /&gt;
* '''Equalize''', take vitality and armor percentages and equalize them among certain targets with Equalize, TargetType&lt;br /&gt;
* '''Source''', steal source points with DRAIN,????&lt;br /&gt;
* '''Sabotage''', blow up a random arrow or grenade in an inventory with &amp;quot;Sabotage,Amount.&amp;quot;&lt;br /&gt;
* '''Movement based damage''', with DAMAGE_ON_MOVE,Chance,Duration,?,?&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SkillProperties !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BLEEDING,100,2 || 100% chance to set bleeding for 2 turns&lt;br /&gt;
|-&lt;br /&gt;
| AOEBOOST:HARMONY,100,2 || Heal the target according to the number of allies within range (determined by area radius and AOEboost Conditions)&lt;br /&gt;
|-&lt;br /&gt;
| CreateSurface,2,,Fire,100,2 || 100% chance to create a circle of fire with 2m radius that lasts 2 rounds.&lt;br /&gt;
|-&lt;br /&gt;
| TargetCreateSurface,1,,Water,100,2; CLEANSE_WOUNDS,100,0 || Heal targets and create water of 1m radius under them.&lt;br /&gt;
|-&lt;br /&gt;
| Equalize,All; Sabotage,1 || Equalize the health of a group of targets, and explode 1 random arrow or grenade in each of their inventories.&lt;br /&gt;
|-&lt;br /&gt;
| Example || Example&lt;br /&gt;
|-&lt;br /&gt;
| Example || Example&lt;br /&gt;
|-&lt;br /&gt;
| Example || Example&lt;br /&gt;
|-&lt;br /&gt;
| Example || Example&lt;br /&gt;
|-&lt;br /&gt;
| Example || Example&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Stats]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1615</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1615"/>
		<updated>2017-09-05T20:41:42Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting.&lt;br /&gt;
&lt;br /&gt;
== Skill Type == &lt;br /&gt;
&lt;br /&gt;
Skill Type determines the fundamental behavior of the skill and what parameters are available to edit.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
== Basic Parameters ==&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. Usually a structure of &amp;quot;Skilltype_Skillname.&amp;quot;&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
== Damage ==&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
== Range ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetConditions''', what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
* '''AOEConditions''', conditions for an AOEBoost skill property.&lt;br /&gt;
* '''ForceTarget''', If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
* '''CanTargetCharacters''', if yes, can target characters&lt;br /&gt;
* '''CanTargetItems''', If yes, can target items.&lt;br /&gt;
* '''CanTargetTerrain''', If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;br /&gt;
&lt;br /&gt;
Conditions can include Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Example Target Conditions''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|(HasStatus:BURNING)|SurfaceFire // target either entities standing in fire or burning, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* (Chain Heal): !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skill Properties ==&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;SkillProperties&amp;quot; parameter gives skills status effects and a few other specific effects. Like conditions, skill properties can take simple logic.&lt;br /&gt;
* Statuses, in the form of &amp;quot;STATUS,CHANCE,DURATION.&amp;quot;&lt;br /&gt;
* Entity Dependent Statuses, with AOEBOOST&lt;br /&gt;
* Surface Creation, in the form of &amp;quot;CreateSurface,Radius,?,SurfaceType,Chance,Duration?&amp;quot;&lt;br /&gt;
  Surface Creation can also only appear on targets with &amp;quot;TargetCreateSurface.&amp;quot;&lt;br /&gt;
* Surface Manipulation, such as ''ignite'' or ''curse''.&lt;br /&gt;
* Backstab conditions, including AlwaysBackstab and CanBackstab&lt;br /&gt;
* High Ground, AlwaysHighGround&lt;br /&gt;
* Equalize, take vitality and armor percentages and equalize them among certain targets with Equalize, TargetType&lt;br /&gt;
* Steal source points with DRAIN,????&lt;br /&gt;
* Sabotage, blow up a random arrow or grenade in an inventory with &amp;quot;Sabotage,Amount.&amp;quot;&lt;br /&gt;
* Movement Based Damage with, DAMAGE_ON_MOVE,Chance,Duration,?,?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Stats]]&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=User:Baardvark&amp;diff=1555</id>
		<title>User:Baardvark</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=User:Baardvark&amp;diff=1555"/>
		<updated>2017-09-04T17:54:38Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: Created page with &amp;quot;Creator of the Bard &amp;amp; Artificer class and other mods.  http://www.nexusmods.com/divinityoriginalsin2/mods/3/?&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creator of the Bard &amp;amp; Artificer class and other mods.&lt;br /&gt;
&lt;br /&gt;
http://www.nexusmods.com/divinityoriginalsin2/mods/3/?&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1550</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1550"/>
		<updated>2017-09-01T18:16:48Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: /* Basic Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting.&lt;br /&gt;
&lt;br /&gt;
== Skill Type == &lt;br /&gt;
&lt;br /&gt;
Skill Type determines the fundamental behavior of the skill and what parameters are available to edit.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
== Basic Parameters ==&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. Usually a structure of &amp;quot;Skilltype_Skillname.&amp;quot;&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
== Damage ==&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
== Range ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetConditions''', what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
* '''AOEConditions''', conditions for an AOEBoost skill property.&lt;br /&gt;
* '''ForceTarget''', If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
* '''CanTargetCharacters''', if yes, can target characters&lt;br /&gt;
* '''CanTargetItems''', If yes, can target items.&lt;br /&gt;
* '''CanTargetTerrain''', If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;br /&gt;
&lt;br /&gt;
Conditions can include Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Example Target Conditions''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|(HasStatus:BURNING)|SurfaceFire // target either entities standing in fire or burning, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* (Chain Heal): !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1549</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1549"/>
		<updated>2017-09-01T18:16:19Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: /* Skill Type */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting.&lt;br /&gt;
&lt;br /&gt;
== Skill Type == &lt;br /&gt;
&lt;br /&gt;
Skill Type determines the fundamental behavior of the skill and what parameters are available to edit.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
== Basic Parameters ==&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. Usually a structure of &amp;quot;Skilltype_Skillname.&amp;quot;&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
== Damage ==&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
== Range ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetConditions''', what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
* '''AOEConditions''', conditions for an AOEBoost skill property.&lt;br /&gt;
* '''ForceTarget''', If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
* '''CanTargetCharacters''', if yes, can target characters&lt;br /&gt;
* '''CanTargetItems''', If yes, can target items.&lt;br /&gt;
* '''CanTargetTerrain''', If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;br /&gt;
&lt;br /&gt;
Conditions can include Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Example Target Conditions''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|(HasStatus:BURNING)|SurfaceFire // target either entities standing in fire or burning, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* (Chain Heal): !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1548</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1548"/>
		<updated>2017-09-01T18:15:50Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: /* Skill Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting.&lt;br /&gt;
&lt;br /&gt;
== Skill Type == &lt;br /&gt;
&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
Skill Type determines the fundamental behavior of the skill and what parameters are available to edit.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
== Basic Parameters ==&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. Usually a structure of &amp;quot;Skilltype_Skillname.&amp;quot;&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
== Damage ==&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
== Range ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
* '''TargetConditions''', what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
* '''AOEConditions''', conditions for an AOEBoost skill property.&lt;br /&gt;
* '''ForceTarget''', If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
* '''CanTargetCharacters''', if yes, can target characters&lt;br /&gt;
* '''CanTargetItems''', If yes, can target items.&lt;br /&gt;
* '''CanTargetTerrain''', If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;br /&gt;
&lt;br /&gt;
Conditions can include Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Example Target Conditions''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|(HasStatus:BURNING)|SurfaceFire // target either entities standing in fire or burning, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* (Chain Heal): !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1542</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1542"/>
		<updated>2017-09-01T17:46:22Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: /* Skill Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting.&lt;br /&gt;
&lt;br /&gt;
== Skill Parameters == &lt;br /&gt;
&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
Skill Type: Determines the fundamental behavior of the skill.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path. Can be used for a self-jump as well.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''MultiStrike''', a self-teleport skill that is also an attack.&lt;br /&gt;
* '''Rush''', a directional movement skill that requires a walkable path.&lt;br /&gt;
* '''Teleportation''', a teleportation of one or more characters&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Tornado''', a large area of effect skill that usually clears surfaces and statuses.&lt;br /&gt;
* '''Quake''', a large area of effect skill with screen shake and ground-based visual effects.&lt;br /&gt;
&lt;br /&gt;
===== Basic Parameters =====&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. Usually a structure of &amp;quot;Skilltype_Skillname.&amp;quot;&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
=== Damage ===&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''Damage''', an optional source of the damage amount which can take the caster or target's current or maximum armor or vitality&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
* '''UseWeaponProperties''', if yes, the skill can inflict on chance hits of your weapon and other properties, like &amp;quot;ignite.&amp;quot;&lt;br /&gt;
* '''DivideDamage''', if yes, splits the damage among the targets or projectiles you fire.&lt;br /&gt;
* '''Stealth Damage Multiplier''', multiplies the damage if you are in stealth.&lt;br /&gt;
* '''Distance Damage Multiplier''', the percentage extra damage you gain per 1m farther away you are from a target.&lt;br /&gt;
&lt;br /&gt;
=== Range ===&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
* '''AddRangeFromAbility''', (?)&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Conditions ===&lt;br /&gt;
&lt;br /&gt;
TargetConditions: what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
&lt;br /&gt;
AOEConditions: conditions for an AOEBoost skill property.&lt;br /&gt;
&lt;br /&gt;
Conditions can include Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Example Target Conditions''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|SurfaceFire // target either characters standing in fire, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* (Chain Heal): !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ForceTarget: If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
&lt;br /&gt;
CanTargetCharacters: if yes, can target characters&lt;br /&gt;
&lt;br /&gt;
CanTargetItems: If yes, can target items.&lt;br /&gt;
&lt;br /&gt;
CanTargetTerrain: If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1453</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1453"/>
		<updated>2017-08-30T00:38:26Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: /* Skill Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting.&lt;br /&gt;
&lt;br /&gt;
== Skill Parameters == &lt;br /&gt;
&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
Skill Type: Determines the fundamental behavior of the skill.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Zone''', cause an effect in a rectangular or square shape&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''Rush''', a self-directed movement skill.&lt;br /&gt;
* '''Teleportation''', a teleportation of a character.&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
&lt;br /&gt;
===== Basic Parameters =====&lt;br /&gt;
* '''Entry''', a unique name so that the skill can be referenced in scripts or other locations. Usually a structure of &amp;quot;Skilltype_Skillname.&amp;quot;&lt;br /&gt;
* '''Ability''', Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
* '''Level''', (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
* '''Tier''', (?)&lt;br /&gt;
* '''ActionPoints''', how many action points the skill costs.&lt;br /&gt;
* '''Cooldown''', the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
* '''Memory''', the memory cost&lt;br /&gt;
* '''Magic Cost''', How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
=== Damage ===&lt;br /&gt;
&lt;br /&gt;
* '''Damage Multiplier''', the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
* '''Damage Range''', the percentage of variation in damage. &lt;br /&gt;
* '''DamageType''', the type of damage.&lt;br /&gt;
* '''UseWeaponDamage''', if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
&lt;br /&gt;
=== Range ===&lt;br /&gt;
&lt;br /&gt;
* '''TargetRadius''', How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
* '''AreaRadius''', How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
* '''ExplodeRadius''', The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
* '''AddWeaponRange''', (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
* '''Range''', The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
* '''HitRadius''', Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Conditions ===&lt;br /&gt;
&lt;br /&gt;
TargetConditions: what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
&lt;br /&gt;
AOEConditions: conditions for an AOEBoost skill property.&lt;br /&gt;
&lt;br /&gt;
Conditions can include Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Example Target Conditions''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|SurfaceFire // target either characters standing in fire, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* (Chain Heal): !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ForceTarget: If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
&lt;br /&gt;
CanTargetCharacters: if yes, can target characters&lt;br /&gt;
&lt;br /&gt;
CanTargetItems: If yes, can target items.&lt;br /&gt;
&lt;br /&gt;
CanTargetTerrain: If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1452</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1452"/>
		<updated>2017-08-29T22:09:04Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: /* Skill Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting.&lt;br /&gt;
&lt;br /&gt;
== Skill Parameters == &lt;br /&gt;
&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
Entry: a unique name so that the skill can be referenced in scripts or other locations. Usually a structure of &amp;quot;Skilltype_Skillname.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Skill Type: Determines the fundamental behavior of the skill.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''Rush''', a self-directed movement skill.&lt;br /&gt;
* '''Teleportation''', a teleportation of a character.&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''Wall''', create one or more characters or objects.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
* '''Storm''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces, as well as raining projectiles down.&lt;br /&gt;
* '''Dome''', create a persisting area of effect with a dome visual.&lt;br /&gt;
&lt;br /&gt;
Ability: Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
&lt;br /&gt;
Level: (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
&lt;br /&gt;
Tier: (?)&lt;br /&gt;
&lt;br /&gt;
ActionPoints: how many action points the skill costs.&lt;br /&gt;
&lt;br /&gt;
Cooldown: the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
&lt;br /&gt;
Memory: the memory cost&lt;br /&gt;
&lt;br /&gt;
Magic Cost: How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Damage ===&lt;br /&gt;
&lt;br /&gt;
Damage Multiplier: the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
&lt;br /&gt;
Damage Range: the percentage of variation in damage. &lt;br /&gt;
&lt;br /&gt;
DamageType: the type of damage.&lt;br /&gt;
&lt;br /&gt;
UseWeaponDamage: if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
&lt;br /&gt;
=== Range ===&lt;br /&gt;
&lt;br /&gt;
TargetRadius: How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
&lt;br /&gt;
AreaRadius: How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
&lt;br /&gt;
ExplodeRadius: The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AddWeaponRange: (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
Range: The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
&lt;br /&gt;
HitRadius: Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Conditions ===&lt;br /&gt;
&lt;br /&gt;
TargetConditions: what conditions targets must meet to be direct targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses.&lt;br /&gt;
&lt;br /&gt;
AOEConditions: conditions for an AOEBoost skill property.&lt;br /&gt;
&lt;br /&gt;
Conditions can include Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Example Target Conditions''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|SurfaceFire // target either characters standing in fire, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* (Chain Heal): !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ForceTarget: If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
&lt;br /&gt;
CanTargetCharacters: if yes, can target characters&lt;br /&gt;
&lt;br /&gt;
CanTargetItems: If yes, can target items.&lt;br /&gt;
&lt;br /&gt;
CanTargetTerrain: If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1391</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1391"/>
		<updated>2017-08-26T23:49:43Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: /* Conditions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting.&lt;br /&gt;
&lt;br /&gt;
== Skill Parameters == &lt;br /&gt;
&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
Entry: a unique name so that the skill can be referenced in scripts or other locations. Usually a structure of &amp;quot;Skilltype_Skillname.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Skill Type: Determines the fundamental behavior of the skill.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''Rush''', a self-directed movement skill.&lt;br /&gt;
* '''Teleportation''', a teleportation of a character.&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
&lt;br /&gt;
Ability: Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
&lt;br /&gt;
Level: (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
&lt;br /&gt;
Tier: (?)&lt;br /&gt;
&lt;br /&gt;
ActionPoints: how many action points the skill costs.&lt;br /&gt;
&lt;br /&gt;
Cooldown: the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
&lt;br /&gt;
Memory: the memory cost&lt;br /&gt;
&lt;br /&gt;
Magic Cost: How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Damage ===&lt;br /&gt;
&lt;br /&gt;
Damage Multiplier: the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
&lt;br /&gt;
Damage Range: the percentage of variation in damage. &lt;br /&gt;
&lt;br /&gt;
DamageType: the type of damage.&lt;br /&gt;
&lt;br /&gt;
UseWeaponDamage: if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
&lt;br /&gt;
=== Range ===&lt;br /&gt;
&lt;br /&gt;
TargetRadius: How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
&lt;br /&gt;
AreaRadius: How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
&lt;br /&gt;
ExplodeRadius: The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AddWeaponRange: (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
Range: The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
&lt;br /&gt;
HitRadius: Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Conditions ===&lt;br /&gt;
&lt;br /&gt;
TargetConditions: what conditions targets must meet to be targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses. &lt;br /&gt;
&lt;br /&gt;
Conditions can include Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Example Target Conditions''&lt;br /&gt;
&lt;br /&gt;
* NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
* Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
* (InSurface:SurfaceFire)|SurfaceFire // target either characters standing in fire, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
* (Chain Heal): !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ForceTarget: If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
&lt;br /&gt;
CanTargetCharacters: if yes, can target characters&lt;br /&gt;
&lt;br /&gt;
CanTargetItems: If yes, can target items.&lt;br /&gt;
&lt;br /&gt;
CanTargetTerrain: If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1390</id>
		<title>Skill creation</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Skill_creation&amp;diff=1390"/>
		<updated>2017-08-26T23:48:57Z</updated>

		<summary type="html">&lt;p&gt;Baardvark: /* Conditions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can edit or create a wide array of skills with the Stats editor. While the skill creator is quite powerful, complex skills may require scripting.&lt;br /&gt;
&lt;br /&gt;
== Skill Parameters == &lt;br /&gt;
&lt;br /&gt;
Every skill requires the following parameters to be filled out.&lt;br /&gt;
&lt;br /&gt;
Entry: a unique name so that the skill can be referenced in scripts or other locations. Usually a structure of &amp;quot;Skilltype_Skillname.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Skill Type: Determines the fundamental behavior of the skill.&lt;br /&gt;
* '''Target''', usually affects one target with a non-projectile effect.&lt;br /&gt;
* '''Shout''', a self-buff or area of effect skill.&lt;br /&gt;
* '''Projectile''', fires one or more projectiles along a preset path.&lt;br /&gt;
* '''Cone''', cause an effect in a cone shape determined by angle and range.&lt;br /&gt;
* '''Jump''', a self-teleport skill.&lt;br /&gt;
* '''Rush''', a self-directed movement skill.&lt;br /&gt;
* '''Teleportation''', a teleportation of a character.&lt;br /&gt;
* '''Summon''', create one or more characters or objects.&lt;br /&gt;
* '''ProjectileStrike''', a series of projectiles which rain from the sky rather than originating from the caster.&lt;br /&gt;
* '''Rain''', a large area of effect skill that usually changes the atmosphere and creates a distribution of surfaces.&lt;br /&gt;
&lt;br /&gt;
Ability: Which ability tree this skill belongs to, which determines how it is sorted in the skill menu and which primary attribute scales its damage. Can be None.&lt;br /&gt;
&lt;br /&gt;
Level: (?)What level this skill scales to. All existing skills are set to -1 level, which means the skill's damage scales with character level.&lt;br /&gt;
&lt;br /&gt;
Tier: (?)&lt;br /&gt;
&lt;br /&gt;
ActionPoints: how many action points the skill costs.&lt;br /&gt;
&lt;br /&gt;
Cooldown: the cooldown in turns. Can be set to -1 for a once per combat skill.&lt;br /&gt;
&lt;br /&gt;
Memory: the memory cost&lt;br /&gt;
&lt;br /&gt;
Magic Cost: How many source points the skill costs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Damage ===&lt;br /&gt;
&lt;br /&gt;
Damage Multiplier: the base damage, &amp;quot;100&amp;quot; being an average damage skill, or using exact weapon damage if is a weapon skill.&lt;br /&gt;
&lt;br /&gt;
Damage Range: the percentage of variation in damage. &lt;br /&gt;
&lt;br /&gt;
DamageType: the type of damage.&lt;br /&gt;
&lt;br /&gt;
UseWeaponDamage: if yes, multiplies your weapon damage by the Damage Multiplier&lt;br /&gt;
&lt;br /&gt;
=== Range ===&lt;br /&gt;
&lt;br /&gt;
TargetRadius: How far a Target, Projectile, or Teleportation, skill can reach&lt;br /&gt;
&lt;br /&gt;
AreaRadius: How far an area of effect a shout or rain spell can reach from the caster, or the area of effect of a target or projectile skill.&lt;br /&gt;
&lt;br /&gt;
ExplodeRadius: The area of effect that a projectile deals damage in. This is often but not always the same as AreaRadius. &lt;br /&gt;
&lt;br /&gt;
''Example:'' Ricochet has a TargetRadius of 13 for the initial target, an AreaRadius of 5 for determining the area the projectile can bounce to other enemies, and an ExplodeRadius of 0, so that the arrow does not deal damage to multiple enemies each time it hits an enemy. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AddWeaponRange: (?) If your weapon range is greater than the primary range factor, than it takes into your weapon range into account.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Whirlwind has an AreaRadius of 3, but has AddWeaponRange as yes, so a spear with 3.5m weapon range will have half a meter more range.&lt;br /&gt;
&lt;br /&gt;
Range: The range of a cone or zone skill like Ground Slam.&lt;br /&gt;
&lt;br /&gt;
HitRadius: Typically the area of effect of a teleporting or rushing character.&lt;br /&gt;
&lt;br /&gt;
''Example:'' Battering Ram has a HitRadius of 1, meaning the character can hit characters or objects in a 2m wide path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Conditions ===&lt;br /&gt;
&lt;br /&gt;
TargetConditions: what conditions targets must meet to be targets of this skill. This can include simple logic, like &amp;quot;IF&amp;quot;, &amp;quot;not&amp;quot; (!), &amp;quot;and&amp;quot; (&amp;amp;), &amp;quot;or&amp;quot; (|), and parentheses. &lt;br /&gt;
&lt;br /&gt;
Conditions can include Character, Self, Nonself, Ally, Party, Player, Enemy, Item, Dead, Summon, NonSummon, MySummon, Owner, Party, Combat, Locked, AllowDead, FacingMe, CanPickup, HasStatus, InSurface, Surface.&lt;br /&gt;
&lt;br /&gt;
''Examples TargetConditions''&lt;br /&gt;
&lt;br /&gt;
NonSelf;Ally;!Dead;NonSummon // only target alive, non-summon allies (not including the caster)&lt;br /&gt;
&lt;br /&gt;
Tagged:UNDEAD;FacingMe // only target undead characters that are facing you (e.g., for a holy light spell)&lt;br /&gt;
&lt;br /&gt;
(InSurface:SurfaceFire)|SurfaceFire // target either characters standing in fire, or a fire surface directly.&lt;br /&gt;
&lt;br /&gt;
(Chain Heal): !Dead&amp;amp;((!Enemy&amp;amp;!DamagedOnHeal)|(Enemy&amp;amp;DamagedOnHeal)) // target living allies that aren't damaged by healing (undead or decaying touch), but also target enemies if they are damaged by healing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ForceTarget: If yes, you cannot cast this without targeting a valid target (e.g., no targeting terrain)&lt;br /&gt;
&lt;br /&gt;
CanTargetCharacters: if yes, can target characters&lt;br /&gt;
&lt;br /&gt;
CanTargetItems: If yes, can target items.&lt;br /&gt;
&lt;br /&gt;
CanTargetTerrain: If yes, you can target the terrain. Useful for skills that can manipulate surfaces, like Shocking Touch. Also good for area of effect attacks like Ground Slam, where you might want to target a space inbetween two characters to hit them both. Otherwise, make this no to prevent accidental casts.&lt;/div&gt;</summary>
		<author><name>Baardvark</name></author>
	</entry>
</feed>