Pattern script
From Blood Wiki
(Difference between revisions)
Line 2: | Line 2: | ||
== Introduction == | == Introduction == | ||
− | Pattern scripts is special kind of expressions that returns 1 or 0 | + | Pattern scripts is special kind of expressions that returns 1 or 0. Script can check and combine wide range of conditions (gametime, special parms of entities, [[Infoportions | infoportions]] etc.). Patters script are used for enemy appearance, gamemodel damage masks, trigger touchability and other events which only need to control availability of some action. |
− | + | === Script input === | |
+ | * Pattern - script string | ||
+ | * Script owner - entity that owns pattern comparison | ||
+ | * Script activator - entity that launched comparison event | ||
− | * | + | === Script rules === |
− | * | + | * Instructions are case sensative |
− | * | + | * Operators (excluding ''()'') should be separated by space or tab. |
+ | * Null script always returns 1 | ||
Basic syntax: | Basic syntax: | ||
Line 20: | Line 24: | ||
// this script check if it's fullmoon night or raining | // this script check if it's fullmoon night or raining | ||
(night & fullmoon) | raining | (night & fullmoon) | raining | ||
− | |||
− | |||
− | |||
− | |||
− | |||
== Operators == | == Operators == |
Revision as of 00:28, 18 July 2012
Contents |
Introduction
Pattern scripts is special kind of expressions that returns 1 or 0. Script can check and combine wide range of conditions (gametime, special parms of entities, infoportions etc.). Patters script are used for enemy appearance, gamemodel damage masks, trigger touchability and other events which only need to control availability of some action.
Script input
- Pattern - script string
- Script owner - entity that owns pattern comparison
- Script activator - entity that launched comparison event
Script rules
- Instructions are case sensative
- Operators (excluding ()) should be separated by space or tab.
- Null script always returns 1
Basic syntax:
// this script check if its a night or if there is an enemy within 300 units night | enemy<300>.found
// this scripts check if gametime is between 12 and 14 hours hour =><= 12 14
// this script check if it's fullmoon night or raining (night & fullmoon) | raining
Operators
Link expressions together.
Operator | Example | Description |
---|---|---|
Logical operators (only applicable between expressions) | ||
( ) | (expression) | Expression |
& | x & y | Logical 'And'. Must be always separated by space. |
| | x | y | Logical 'Or'. Must be always separated by space. |
not | x & not y | Logical Not. Must be always separated by space. |
Comparison operators (must be always separated by space) | ||
= | x = y | Equal |
!= | x != y | Not equal |
> | x > y | Greater |
>= | x >= y | Greater or equal |
< | x < y | Lesser |
<= | x <= y | Lesser or equal |
>< | x >< start end | x > start And x < end |
=>< | x =>< start end | x >= start And x < end |
><= | x ><= start end | x > start And x <= end |
=><= | x =><= start end | x >= start And x <= end |
Functions
Set of functions is determined by pattern implementation. There is two pattern implementations as of yet.
GenericPattern
This is generic appearance pattern. It used on enemies appearance, zone appearance.
Operator | Description |
---|---|
true | Always returns 1 |
false | Always returns 0 |
self.field | Checks one of the field of script owner. Fields could be:
|
enemy.field | Check field of script owner enemy. See fields list above. |
target<name>.field | Find entity by targetname (return first match). See fields list above. |
enemy<radius>.field | Find enemy of script owner within given radius. See fields list above. |
sid<name>.field | Find entity by SaveId. See fields list above. |
GamemodelHitPattern
Used on misc_gamemodel when model is hit.
GamemodelHitPattern functions
Operator | Description |
---|---|
true | Always returns 1 |
false | Always returns 0 |
pushonly | System word. Allows to push object but not destroy. This should be the first operator in expression if used. |
tag_tagname | Returns 1 if model tag closest to hit position matches this tag. Otherwise 0. |
number% | Randomly returns 1 with this chance percentage. Typical values are 25%, 50%, 90% etc. |
damagetype | Check if weapon have this damage type. Damagetype should be one of following constants:
|