EgoScript Functions

Tutorials for game development.
Post Reply
User avatar
Zefz
Squirrel Knight (Administrator)
Squirrel Knight (Administrator)
Posts: 3820
Joined: Wed Jul 23, 2008 1:27 am
Location: Norway
Contact:

EgoScript Functions

Post by Zefz »

This is a list of all the functions that can be used for AI scripting in Egoboo.
Indent by 2 spaces for each level of nesting ( Do not use tabs!. )
An indented section is only run if the last function proceeded ( eg. didn't fail )
Order of operations are read from left to the right
Only the tmp* variable can be set, others only read
Don't do something like tmpx = -tmpy... Instead do tmpx = 0-tmpy...
Each script runs from top to bottom, 50 times per second
Commenting actually works in script files ( Use //)
Script errors are logged into log.txt (Located under main folder).
An AI script cannot have more than 2560 lines (Which should be more than enough).

Last updated: 16-05-2009
SOME SCRIPTS MAY ONLY WORK IN LATER VERISONS

SCRIPT FUNCTIONS

Code: Select all

--------------------------------------------------------------------------------
IfSpawned
  // This function proceeds if the character was spawned this update
--------------------------------------------------------------------------------
IfTimeOut
  // This function proceeds if the character's aitime is 0...  Use
  // in conjunction with SetTime
--------------------------------------------------------------------------------
IfAtWaypoint
  // This function proceeds if the character reached its waypoint this
  // update
--------------------------------------------------------------------------------
IfAtLastWaypoint
  // This function proceeds if the character reached its last waypoint this
  // update
--------------------------------------------------------------------------------
IfPutAway
  // This function proceeds if the character ( an item ) was put in its
  // owner's pocket this update
--------------------------------------------------------------------------------
IfAttacked
  // This function proceeds if the character sustained more than a point of
  // damage this update
--------------------------------------------------------------------------------
IfBumped
  // This function proceeds if the character was bumped by another character
  // this update
--------------------------------------------------------------------------------
IfOrdered
  // This function proceeds if the character got an order from another
  // character on its team this update
--------------------------------------------------------------------------------
IfCalledForHelp
  // This function proceeds if one of the character's teammates was nearly
  // killed this update
--------------------------------------------------------------------------------
SetContent
  // This function sets the content variable...  Used in conjunction with
  // GetContent...  Content is preserved from update to update
  tmpargument = 5
  SetContent
--------------------------------------------------------------------------------
IfKilled
  // This function proceeds if the character was killed this update
--------------------------------------------------------------------------------
IfTargetKilled
  // This function proceeds if the character's target from last update was
  // killed during this update
--------------------------------------------------------------------------------
ClearWaypoints
  // This function is used to move a character around...  Do this before
  // AddWaypoint
--------------------------------------------------------------------------------
AddWaypoint
  // This function tells the character where to move next
  ClearWaypoints
  tmpx = targetx
  tmpy = targety
  AddWaypoint
--------------------------------------------------------------------------------
FindPath
  //This function makes life easier through setting tmpx, tmpy, tmpturn, waypoints
  //tmpdistance and movement speed automatically. You only need to specify
  //which type of movement you want. You also might want to clear
  //existing waypoints. Movement modes are set in tmpdistance as constants.
  SetTargetToWideEnemy
    ClearWaypoints
    tmpdistance = MOVECHARGE
    FindPath            //Charge the found enemy
  Else
    SetTargetToLeader
    ClearWaypoints
    tmpdistance = MOVEFOLLOW
    FindPath            //Follow the leader
--------------------------------------------------------------------------------
Compass
  // This function modifies tmpx and tmpy, depending on the setting of
  // tmpdistance and tmpturn.  It acts like one of those Compass thing
  // with the two little needle legs
  tmpx = selfx
  tmpy = selfy
  tmpturn = selfturn
  tmpdistance = 500
  Compass
  // tmpx and tmpy are now 500 units in front of the character
--------------------------------------------------------------------------------
GetTargetArmorPrice
  // This function returns the cost of the desired skin upgrade, setting
  // tmpx to the price
  tmpargument = 0   // Find price for skin0.bmp
  GetTargetArmorPrice
--------------------------------------------------------------------------------
SetTime
  // This function sets the character's time...  50 clicks per second...
  // Used in conjunction with IfTimeOut
  tmpargument = 200
  SetTime
--------------------------------------------------------------------------------
GetContent
  // This function sets tmpargument to the character's content variable...
  // Used in conjunction with SetContent, or as a NOP to space out an Else
--------------------------------------------------------------------------------
JoinTargetTeam
  // This function lets a character join a different team...  Used
  // mostly for pets
--------------------------------------------------------------------------------
SetTargetToNearbyEnemy
  // This function sets the target to a nearby enemy, failing if there are none
--------------------------------------------------------------------------------
SetTargetToTargetLeftHand
  // This function sets the target to the item in the target's left hand,
  // failing if the target has no left hand item
--------------------------------------------------------------------------------
SetTargetToTargetRightHand
  // This function sets the target to the item in the target's right hand,
  // failing if the target has no right hand item
--------------------------------------------------------------------------------
SetTargetToWhoeverAttacked
  // This function sets the target to whoever attacked the character last...
  IfAttacked
    SetTargetToWhoeverAttacked
--------------------------------------------------------------------------------
SetTargetToWhoeverHealed
  // This function sets the target to whoever attacked the character last...
  // Sometimes, attacks actually heal the character, so it makes more sense
  // to use this instead of the above function...
  IfHealed
    SetTargetToWhoeverHealed
--------------------------------------------------------------------------------
SetTargetToWhoeverBumped
  // This function sets the target to whoever bumped the character last...
  IfBumped
    SetTargetToWhoeverBumped
--------------------------------------------------------------------------------
SetTargetToWhoeverCalledForHelp
  // This function sets the target to whoever called for help last...
  IfCalledForHelp
    SetTargetToWhoeverCalledForHelp
--------------------------------------------------------------------------------
SetTargetToOldTarget
  // This function sets the target to the target from last update, used to
  // undo other SetTarget functions
  SetTargetToNearbyEnemy
    tmpargument = [HUMA]
    IfTargetHasID
      SetTargetToOldTarget
--------------------------------------------------------------------------------
SetTurnModeToVelocity
  // This function sets the character's movement mode to the default
--------------------------------------------------------------------------------
SetTurnModeToWatch
  // This function makes the character look at its next waypoint, usually
  // used with close waypoints or the Stop function
--------------------------------------------------------------------------------
SetTurnModeToSpin
  // This function makes the character spin around in a circle, usually
  // used for magical items and such
--------------------------------------------------------------------------------
SetBumpHeight
  // This function makes the character taller or shorter, usually used when
  // the character dies
  IfKilled
    tmpargument = 45
    SetBumpHeight
--------------------------------------------------------------------------------
IfTargetHasID
  // This function proceeds if the target has either a parent or type IDSZ
  // matching tmpargument...
  tmpargument = [HUMA]
  IfTargetHasID
    KillTarget
--------------------------------------------------------------------------------
IfTargetHasItemID
  // This function proceeds if the target has a matching item in his/her
  // pockets or hands.
  tmpargument = [SWOR]
  IfTargetHasItemID
    KillTarget
--------------------------------------------------------------------------------
IfTargetHoldingItemID
  // This function proceeds if the target has a matching item in his/her
  // hands.  It also sets tmpargument to the proper latch button to press
  // to use that item
  tmpargument = [SWOR]
  IfTargetHoldingItemID
    PressLatch
--------------------------------------------------------------------------------
IfTargetHasSkillID
  // This function proceeds if the target has a matching skill IDSZ
  tmpargument = [DISA]
  IfTargetHasSkillID
    DoNothing   //Used because you need some padding before an Else
  Else
    KillTarget
--------------------------------------------------------------------------------
Else
  // This function proceeds if the last function failed...  Need padding
  // before it...  See the above function for an example...
--------------------------------------------------------------------------------
Run
  // This function sets the character's maximum acceleration to its
  // actual maximum
--------------------------------------------------------------------------------
Walk
  // This function sets the character's maximum acceleration to 66%
  // of its actual maximum
--------------------------------------------------------------------------------
Sneak
  // This function sets the character's maximum acceleration to 33%
  // of its actual maximum
--------------------------------------------------------------------------------
DoAction
  // This function makes the character do a given action if it isn't doing
  // anything better.  Fails if the character is busy.
  tmpargument = ACTIONDB
  DoAction
--------------------------------------------------------------------------------
KeepAction
  // This function makes the character's animation stop on its last frame
  // and stay there...  Usually used for dropped items
--------------------------------------------------------------------------------
IssueOrder
  // This function tells all of the character's teammates to do something,
  // though each teammate needs to interpret the order using IfOrdered in
  // its own script...
  SetTargetToNearbyEnemy
    tmpargument = 5 // The type of order
    IssueOrder
--------------------------------------------------------------------------------
DropWeapons
  // This function drops the character's in-hand items...  It will also
  // buck the rider if the character is a mount
--------------------------------------------------------------------------------
TargetDoAction
  // The function makes the target do a specific action
  tmpargument = ACTIONMG
  TargetDoAction
--------------------------------------------------------------------------------
OpenPassage
  // This function allows movement over the given passage area.  Passage
  // areas are defined in passage.txt.  Fails if the passage is already open
  tmpargument = passage // passage is set in spawn.txt for the given character
  OpenPassage
--------------------------------------------------------------------------------
ClosePassage
  // This function prohibits movement over the given passage area, proceeding
  // if the passage isn't blocked.  Crushable characters within the passage
  // are crushed.
  tmpargument = passage
  ClosePassage
    tmpargument = 0
    SendMessage
--------------------------------------------------------------------------------
IfPassageOpen
  // This function proceeds if the given passage is open to movement...  Used
  // mostly by door characters to tell them when to run their open animation.
  tmpargument = 2 // Check passage 2
  IfPassageOpen
    tmpargument = ACTIONMA
    DoAction
--------------------------------------------------------------------------------
GoPoof
  // This function removes the character from the game entirely...  This
  // doesn't work on players
  IfCrushed
    GoPoof
--------------------------------------------------------------------------------
CostTargetItemID
  // This function proceeds if the target has a matching item, and poofs
  // that item...  For one use keys and such
  IfBumped
    SetTargetToWhoeverBumped
    tmpargument = [KEYA]
    CostTargetItemID
      tmpargument = passage
      OpenPassage
--------------------------------------------------------------------------------
DoActionOverride
  // This function makes the character do a given action no matter what
  tmpargument = ACTIONDB
  DoAction
--------------------------------------------------------------------------------
IfHealed
  // This function proceeds if the character was healed by a healing particle
--------------------------------------------------------------------------------
SendMessage
  // This function sends a message...  All players will see the message
  tmpargument = MESSAGEDEATH
  SendMessage
--------------------------------------------------------------------------------
CallForHelp
  // This function calls all of the character's teammates for help...  The
  // teammates must use IfCalledForHelp in their scripts
--------------------------------------------------------------------------------
AddIDSZ
  // This function slaps an expansion IDSZ onto the module description...
  // Used to show completion of special quests for a given module
  tmpargument = [QUES]
  AddIDSZ
--------------------------------------------------------------------------------
End
  // This is the last function in a script
--------------------------------------------------------------------------------
SetState
  // This function sets the character's state...  VERY IMPORTANT...
  // State is preserved from update to update
  tmpargument = 5
  SetState
--------------------------------------------------------------------------------
GetState
  // This function sets tmpargument to the character's state...
--------------------------------------------------------------------------------
IfStateIs
  // This function proceeds if the character's state equals tmpargument
  tmpargument = 1
  IfStateIs
    tmpargument = ACTIONMG
    DoAction
--------------------------------------------------------------------------------
IfTargetCanOpenStuff
  // This function proceeds if the target can open stuff ( set in data.txt )
  // Used by chests and buttons and such so only "smart" creatures can operate
  // them
--------------------------------------------------------------------------------
IfGrabbed
  // This function proceeds if the character was grabbed this update...
  // Used mostly by item characters
--------------------------------------------------------------------------------
IfMounted
  // This function proceeds if a rider jumped on the character's back this
  // update
--------------------------------------------------------------------------------
IfDropped
  // This function proceeds if the character was dropped this update...
  // Used mostly by item characters
--------------------------------------------------------------------------------
IfDismounted
  // This function proceeds if the character's rider jumped off this update...
--------------------------------------------------------------------------------
SetTargetToWhoeverIsHolding
  // This function sets the target to the character's holder or mount,
  // failing if the character is not held
--------------------------------------------------------------------------------
DamageTarget
  // This function damages the target
  tmpargument = rand & 4095 + 2048
  DamageTarget
--------------------------------------------------------------------------------
IfXIsLessThanY
  // This function proceeds if tmpx is less than tmpy...
  tmpx = 0
  tmpy = 1
  IfXIsLessThanY
    DebugMessage
--------------------------------------------------------------------------------
IfYIsMoreThanX
  // This function proceeds if tmpy is more than tmpx...
  tmpx = 0
  tmpy = 1
  IfYIsMoreThanX
    DebugMessage
--------------------------------------------------------------------------------
SetWeatherTime
  // This function can be used to slow down or speed up or stop rain and
  // other weather effects
  tmpargument = 0
  SetWeatherTime
--------------------------------------------------------------------------------
GetBumpHeight
  // This function sets tmpargument to the character's height
--------------------------------------------------------------------------------
IfReaffirmed
  // This function proceeds if the character was damaged by its reaffirm
  // damage type...  Used to relight the torch...
--------------------------------------------------------------------------------
UnkeepAction
  // This function undoes KeepAction
--------------------------------------------------------------------------------
IfTargetIsOnOtherTeam
  // This function proceeds if the target is on another team
--------------------------------------------------------------------------------
IfTargetIsOnHatedTeam
  // This function proceeds if the target is on an enemy team
--------------------------------------------------------------------------------
PressLatchButton
  // This function emulates joystick button presses
  tmpargument = LATCHBUTTONLEFT
  PressLatchButton
--------------------------------------------------------------------------------
SetTargetToTargetOfLeader
  // This function sets the target to the team's leader's target
--------------------------------------------------------------------------------
IfLeaderKilled
  // This function proceeds if the team's leader died this update
--------------------------------------------------------------------------------
BecomeLeader
  // This function makes the character the leader of the team
--------------------------------------------------------------------------------
ChangeTargetArmor
  // This function sets the armor type of the target...  Used for chests
  // Sets tmpargument as the old type and tmpx as the new type
  tmpargument = 0
  ChangeTargetArmor
--------------------------------------------------------------------------------
GiveMoneyToTarget
  // This function increases the target's money, while decreasing the
  // character's own money.  tmpargument is set to the amount transferred
  tmpargument = 50
  GiveMoneyToTarget
--------------------------------------------------------------------------------
DropKeys
  // This function drops all of the keys in the character's inventory.
  // This does NOT drop keys in the character's hands.
--------------------------------------------------------------------------------
IfLeaderIsAlive
  // This function proceeds if the team has a leader
--------------------------------------------------------------------------------
IfTargetIsOldTarget
  // This function proceeds if the target is the same as it was last update
--------------------------------------------------------------------------------
SetTargetToLeader
  // This function sets the target to the leader, proceeding if their is
  // a valid leader for the character's team
--------------------------------------------------------------------------------
SpawnCharacter
  // This function spawns a character of the same type as the spawner...
  // This is horribly complicated to use, so see ANIMATE.OBJ for an example
  // tmpx and tmpy give the coodinates, tmpturn gives the new character's
  // direction, and tmpdistance gives the new character's initial velocity
  tmpx = selfx + 100
  tmpy = selfy
  tmpturn = selfturn
  tmpdistance = 0
  SpawnCharacter
--------------------------------------------------------------------------------
RespawnCharacter
  // This function respawns the character at its starting location...
  // Often used with the Clean functions
  IfCleanedUp
    RespawnCharacter
--------------------------------------------------------------------------------
ChangeTile
  // This function changes the tile under the character to the new tile type,
  // which is highly module dependent
  tmpargument = 50
  ChangeTile
--------------------------------------------------------------------------------
IfUsed
  // This function proceeds if the character was used by its holder or rider...
  // Character's cannot be used if their reload time is greater than 0
--------------------------------------------------------------------------------
DropMoney
  // This function drops a certain amount of money, if the character has that
  // much
  tmpargument = 1
  DropMoney
--------------------------------------------------------------------------------
SetOldTarget
  // This function sets the old target to the current target...  To allow
  // greater manipulations of the target
  SetOldTarget
  SetTargetToNearbyEnemy
    tmpx = targetx
    tmpy = targety
    SetTargetToOldTarget
--------------------------------------------------------------------------------
DetachFromHolder
  // This function drops the character or makes it get off its mount
  // Can be used to make slippery weapons, or to make certain characters
  // incapable of wielding certain weapons...  A troll can't grab a torch...
--------------------------------------------------------------------------------
IfTargetHasVulnerabilityID
  // This function proceeds if the target is vulnerable to the given IDSZ...
  tmpargument = [SILV]
  IfTargetHasVulnerabilityID
    tmpargument = 0
    SendMessageNear
--------------------------------------------------------------------------------
CleanUp
  // This function tells all the dead characters on the team to clean
  // themselves up...  Usually done by the boss creature every second or so
--------------------------------------------------------------------------------
IfCleanedUp
  // This function proceeds if the character is dead and if the boss told it
  // to clean itself up
  IfCleanedUp
    RespawnCharacter
--------------------------------------------------------------------------------
IfSitting
  // This function proceeds if the character is riding a mount
--------------------------------------------------------------------------------
IfHeld
  // This function proceeds if the character is held by another character
--------------------------------------------------------------------------------
IfTargetIsHurt
  // This function proceeds if the target has lost more than a point of life
--------------------------------------------------------------------------------
IfTargetIsAPlayer
  // This function proceeds if the target is controlled by a human
--------------------------------------------------------------------------------
PlaySound
  // This function plays one of the character's sounds...  The sound fades
  // out depending on its distance from the viewer
  tmpargument = 0      // sound0.wav
  tmpdistance = 11025  // the frequency
  PlaySound
--------------------------------------------------------------------------------
SpawnParticle
  // This function spawns a particle, offset from the character's location
  tmpargument = 0        // part0.txt
  tmpdistance = GRIPLEFT // Offset from the character's left hand
  tmpx = 100             // Offset amount
  tmpy = 100             // Offset amount
  SpawnParticle
--------------------------------------------------------------------------------
IfTargetIsAlive
  // This function proceeds if the target is alive
--------------------------------------------------------------------------------
Stop
  // This function sets the character's maximum acceleration to 0...  Used
  // along with Walk and Run and Sneak
--------------------------------------------------------------------------------
DisaffirmCharacter
  // This function removes all the attached particles from a character
  // ( stuck arrows, flames, etc )
--------------------------------------------------------------------------------
ReaffirmCharacter
  // This function makes sure it has all of its reaffirmation particles
  // attached to it...  Used to make the torch light again
--------------------------------------------------------------------------------
IfTargetIsSelf
  // This function proceeds if the character is targeting itself
--------------------------------------------------------------------------------
IfTargetIsMale
  // This function proceeds if the target is male
--------------------------------------------------------------------------------
IfTargetIsFemale
  // This function proceeds if the target is female
--------------------------------------------------------------------------------
SetTargetToSelf
  // This function sets the target to the character itself
--------------------------------------------------------------------------------
SetTargetToRider
  // This function sets the target to whoever is riding the character,
  // failing if there is no rider
--------------------------------------------------------------------------------
GetAttackTurn
  // This function sets tmpturn to the direction from which the last attack
  // came...  Not particularly useful in most cases, but it could be...
  IfAttacked
    GetAttackTurn
    tmpdistance = 500
    tmpx = selfx
    tmpy = selfy
    Compass
    ClearWaypoints
    AddWaypoint
--------------------------------------------------------------------------------
GetDamageType
  // This function sets tmpargument to the damage type of the last attack that
  // hit the character
  IfAttacked
    GetDamageType
    tmpx = tmpargument
    tmpy = DAMAGESLASH
    IfXIsEqualToY
      tmpargument = 0
      SendMessageNear
--------------------------------------------------------------------------------
BecomeSpell
  // This function turns a spellbook character into a spell...  TOO COMPLICATED
  // TO EXPLAIN...  SHOULDN'T EVER BE NEEDED BY YOU...
--------------------------------------------------------------------------------
BecomeSpellbook
  // This function turns a spell character into a spellbook...  TOO COMPLICATED
  // TO EXPLAIN...  Just copy the spells that already exist, and don't change
  // them too much
--------------------------------------------------------------------------------
IfScoredAHit
  // This function proceeds if the character damaged another character this
  // update...
--------------------------------------------------------------------------------
IfDisaffirmed
  // This function proceeds if the character was disaffirmed...  This doesn't
  // seem useful anymore...
--------------------------------------------------------------------------------
TranslateOrder
  // This function translates a packed order into understandable values...
  // See CreateOrder for more...  This function sets tmpx, tmpy, tmpargument,
  // and possibly sets the target ( which may not be good )
  IfOrdered
    SetOldTarget          // Save the current target
    TranslateOrder
    SetTargetToOldTarget  // Make sure the target doesn't change
    SetState
--------------------------------------------------------------------------------
SetTargetToWhoeverWasHit
  // This function sets the target to whoever was hit by the character last
  IfScoredAHit
    SetTargetToWhoeverWasHit
    IfTargetIsOnSameTeam
      tmpargument = 0
      SendMessageNear  // Sorry 'bout that...
--------------------------------------------------------------------------------
SetTargetToWideEnemy
  // This function sets the target to an enemy in the vicinity around the
  // character, failing if there are none
--------------------------------------------------------------------------------
IfChanged
  // This function proceeds if the character has changed shape...  Needed
  // for morph spells and such
--------------------------------------------------------------------------------
IfInWater
  // This function proceeds if the character has just entered into some water
  // this update ( and the water is really water, not fog or another effect )
--------------------------------------------------------------------------------
IfBored
  // This function proceeds if the character has been standing idle too long
--------------------------------------------------------------------------------
IfTooMuchBaggage
  // This function proceeds if the character tries to put an item in his/her
  // pockets, but the character already has 6 items in the inventory...
  // Used to tell the players what's going on...
--------------------------------------------------------------------------------
IfGrogged
  // This function proceeds if the character has been grogged ( a type of
  // confusion ) this update
--------------------------------------------------------------------------------
IfDazed
  // This function proceeds if the character has been dazed ( a type of
  // confusion ) this update
--------------------------------------------------------------------------------
IfTargetHasSpecialID
  // This function proceeds if the character has a special IDSZ ( in data.txt )
  tmpargument = [GOOD]
  IfTargetHasSpecialID
    tmpargument = 0
    SendMessageNear
--------------------------------------------------------------------------------
PressTargetLatchButton
  // This function mimics joystick button presses for the target...
  // For making items force their own usage and such
  tmpargument = LATCHLEFT
  PressTargetLatchButton
--------------------------------------------------------------------------------
IfInvisible
  // This function proceeds if the character is invisible
--------------------------------------------------------------------------------
IfArmorIs
  // This function proceeds if the character's skin type equals tmpargument
  tmpargument = 1
  IfArmorIs
    tmpargument = 0
    SendMessageNear
--------------------------------------------------------------------------------
GetTargetGrogTime
  // This function sets tmpargument to the number of updates before the
  // character is ungrogged, proceeding if the number is greater than 0
--------------------------------------------------------------------------------
GetTargetDazeTime
  // This function sets tmpargument to the number of updates before the
  // character is undazed, proceeding if the number is greater than 0
--------------------------------------------------------------------------------
SetDamageType
  // This function lets a weapon change the type of damage it inflicts
  tmpargument = DAMAGESLASH
  SetDamageType
--------------------------------------------------------------------------------
SetWaterLevel
  // This function raises or lowers the water in the module
  tmpargument = 100
  SetWaterLevel
--------------------------------------------------------------------------------
EnchantTarget
  // This function enchants the target with the enchantment given
  // in enchant.txt...  Make sure you use SetOwnerToTarget before
  // doing this...
  SetTargetToWhoeverIsHolding
  SetOwnerToTarget
  EnchantTarget
--------------------------------------------------------------------------------
EnchantChild
  // This function enchants the last character spawned with the enchantment
  // given in enchant.txt...  Make sure you use SetOwnerToTarget before
  // doing this...
--------------------------------------------------------------------------------
TeleportTarget
  // This function makes the target move instantly to the x, y location
  SetTargetToNearestEnemy
    tmpx = selfx - 200
    tmpy = selfy - 200
    TeleportTarget
--------------------------------------------------------------------------------
GiveExperienceToTarget
  // This function gives experience to the target
  tmpargument = 40          // The base amount of experience
  tmpdistance = EXPROLEPLAY   // The type of experience
  GiveExperienceToTarget
--------------------------------------------------------------------------------
IncreaseAmmo
  // This function increases the character's ammo by 1
--------------------------------------------------------------------------------
UnkurseTarget
  // This function unkurses the target
--------------------------------------------------------------------------------
GiveExperienceToTargetTeam
  // This function gives experience to everyone on the target's team
  tmpargument = 40      // The base amount of experience
  tmpdistance = EXPQUEST   // The type of experience
  GiveExperienceToTargetTeam
--------------------------------------------------------------------------------
IfUnarmed
  // This function proceeds if the character is holding no items in hand...
--------------------------------------------------------------------------------
RestockTargetAmmoIDAll
  // This function restocks the ammo of all of the target's items, if those
  // items have a matching parent or type IDSZ
  tmpargument = [XBOW]
  RestockTargetAmmoIDAll
--------------------------------------------------------------------------------
RestockTargetAmmoIDFirst
  // This function restocks the ammo of the first of the target's items that
  // matches the IDSZ
  tmpargument = [LBOW]
  RestockTargetAmmoIDFirst
--------------------------------------------------------------------------------
FlashTarget
  // This function makes the target flash
--------------------------------------------------------------------------------
SetRedShift
  // This function sets the character's red shift ( 0 - 3 ), higher values
  // making the character less red and darker
  tmpargument = 3
  SetRedShift
--------------------------------------------------------------------------------
SetGreenShift
  // This function sets the character's red shift ( 0 - 3 ), higher values
  // making the character less green and darker
  tmpargument = 1
  SetGreenShift
--------------------------------------------------------------------------------
SetBlueShift
  // This function sets the character's red shift ( 0 - 3 ), higher values
  // making the character less blue and darker
  tmpargument = 2
  SetBlueShift
--------------------------------------------------------------------------------
SetLight
  // This function alters the character's transparency ( 0 - 255 )
  tmpargument = 128
  SetLight
--------------------------------------------------------------------------------
SetAlpha
  // This function alters the character's transparency ( 0 - 255 )
  tmpargument = 128
  SetLight
--------------------------------------------------------------------------------
IfHitFromBehind
  // This function proceeds if the last attack to the character came
  // from behind
  IfAttacked
    IfHitFromBehind
      tmpargument = ACTIONHA
      DoActionOverride
--------------------------------------------------------------------------------
IfHitFromFront
  // This function proceeds if the last attack to the character came
  // from the front
  IfAttacked
    IfHitFromFront
      tmpargument = ACTIONHB
      DoActionOverride
--------------------------------------------------------------------------------
IfHitFromLeft
  // This function proceeds if the last attack to the character came
  // from the left
  IfAttacked
    IfHitFromLeft
      tmpargument = ACTIONHC
      DoActionOverride
--------------------------------------------------------------------------------
IfHitFromRight
  // This function proceeds if the last attack to the character came
  // from the right
  IfAttacked
    IfHitFromRight
      tmpargument = ACTIONHD
      DoActionOverride
--------------------------------------------------------------------------------
IfTargetIsOnSameTeam
  // This function proceeds if the target is on the character's team
--------------------------------------------------------------------------------
KillTarget
  // This function kills the target
--------------------------------------------------------------------------------
UndoEnchant
  // This function removes the last enchantment spawned by the character,
  // proceeding if an enchantment was removed
--------------------------------------------------------------------------------
GetWaterLevel
  // This function sets tmpargument to the current water level * 10...
  // A waterlevel in wawalight of 85 would set tmpargument to 850
  GetWaterLevel
  tmpargument = tmpargument - 1
  SetWaterLevel
--------------------------------------------------------------------------------
CostTargetMana
  // This function costs the target a specific amount of mana, proceeding
  // if the target was able to pay the price...  The amounts are * 256
  tmpargument = 256 // Cost one point of mana
  CostTargetMana
    tmpargument = 0
    SendMessageNear
--------------------------------------------------------------------------------
IfTargetHasAnyID
  // This function proceeds if the target has any IDSZ that matches the given
  // one
  tmpargument = [XFIR]
  IfTargetHasAnyID
    tmpargument = 0
    SendMessageNear
--------------------------------------------------------------------------------
SetBumpSize
  // This function sets the how wide the character is
  tmpargument = 60
  SetBumpSize
--------------------------------------------------------------------------------
IfNotDropped
  // This function proceeds if the character is kursed and another character
  // was holding it and tried to drop it
--------------------------------------------------------------------------------
IfYIsLessThanX
  // This function proceeds if tmpy is less than tmpx
  tmpx = 1
  tmpy = 0
  IfXIsLessThanY
    DebugMessage
--------------------------------------------------------------------------------
IfXIsMoreThanY
  // This function proceeds if tmpx is more than tmpy
  tmpx = 1
  tmpy = 0
  IfXIsLessThanY
    DebugMessage
--------------------------------------------------------------------------------
SetFlyHeight
  // This function makes the character fly ( or fall to ground if 0 )
  tmpargument = 50
  SetFlyHeight
--------------------------------------------------------------------------------
IfBlocked
  // This function proceeds if the character blocked the attack of another
  // character this update
--------------------------------------------------------------------------------
IfTargetIsDefending
  // This function proceeds if the target is holding up a shield or similar
  // defense
--------------------------------------------------------------------------------
IfTargetIsAttacking
  // This function proceeds if the target is doing an attack action
--------------------------------------------------------------------------------
IfStateIs0
IfStateIsParry    // Same as 0
IfStateIs1
IfStateIsWander   // Same as 1
IfStateIs2
IfStateIsGuard    // Same as 2
IfStateIs3
IfStateIsFollow   // Same as 3
IfStateIs4
IfStateIsSurround // Same as 4
IfStateIs5
IfStateIsRetreat  // Same as 5
IfStateIs6
IfStateIsCharge   // Same as 6
IfStateIs7
IfStateIsCombat   // Same as 7
IfStateIs8
IfStateIs9
IfStateIs10
IfStateIs11
IfStateIs12
IfStateIs13
IfStateIs14
IfStateIs15
  // These functions proceed if the state matches
--------------------------------------------------------------------------------
IfContentIs
  // This function proceeds if the content matches tmpargument
  tmpargument = 0
  IfContentIs
    tmpargument = 1
    SendMessageNear
--------------------------------------------------------------------------------
SetTurnModeToWatchTarget
  // This function makes the character face its target, no matter what
  // direction it is moving in...  Undo this with SetTurnModeToVelocity
--------------------------------------------------------------------------------
IfStateIsNot
  // This function proceeds if the character's state does not equal tmpargument
  tmpargument = 0
  IfStateIsNot
    tmpargument = 1
    SendMessageNear
--------------------------------------------------------------------------------
IfXIsEqualToY
IfYIsEqualToX
  // These functions proceed if tmpx and tmpy are the same
  tmpx = 0
  tmpy = 0
  IfXIsEqualToY
    DebugMessage
--------------------------------------------------------------------------------
DebugMessage
  // This function spits out some useful numbers
--------------------------------------------------------------------------------
BlackTarget
  // The opposite of FlashTarget, causing the target to turn black
--------------------------------------------------------------------------------
SendMessageNear
  // This function sends a message to all nearby players
  tmpargument = 0  // Message 0
  SendMessageNear
--------------------------------------------------------------------------------
IfHitGround
  // This function proceeds if a character hit the ground this update...
  // Used to determine when to play the sound for a dropped item
--------------------------------------------------------------------------------
IfNameIsKnown
  // This function proceeds if the character's name is known
--------------------------------------------------------------------------------
IfUsageIsKnown
  // This function proceeds if the character's usage is known
--------------------------------------------------------------------------------
IfHoldingItemID
  // This function proceeds if the character is holding a specified item
  // in hand, setting tmpargument to the latch button to press to use it
  tmpargument = [SWOR]
  IfHoldingItemID
    PressLatchButton
--------------------------------------------------------------------------------
IfHoldingRangedWeapon
  // This function proceeds if the character is holding a specified item
  // in hand, setting tmpargument to the latch button to press to use it
  IfHoldingRangedWeapon
    PressLatchButton
--------------------------------------------------------------------------------
IfHoldingMeleeWeapon
  // This function proceeds if the character is holding a specified item
  // in hand, setting tmpargument to the latch button to press to use it
  IfHoldingMeleeWeapon
    tmpargument = tmpargument < 5 // Put it away
    PressLatchButton
--------------------------------------------------------------------------------
IfHoldingShield
  // This function proceeds if the character is holding a specified item
  // in hand, setting tmpargument to the latch button to press to use it...
  // The button will need to be held down...
  IfHoldingMeleeWeapon
    tmpargument = tmpargument < 3 // Drop it on the ground
    PressLatchButton
--------------------------------------------------------------------------------
IfKursed
  // This function proceeds if the character is kursed
--------------------------------------------------------------------------------
IfTargetIsKursed
  // This function proceeds if the target is kursed
--------------------------------------------------------------------------------
IfTargetIsDressedUp
  // This function proceeds if the target is dressed in facy clothes
--------------------------------------------------------------------------------
IfOverWater
  // This function proceeds if the character is on a water tile
--------------------------------------------------------------------------------
IfThrown
  // This function proceeds if the character was thrown this update...
--------------------------------------------------------------------------------
MakeNameKnown
  // This function makes the name of the character known, for identifying
  // weapons and spells and such
--------------------------------------------------------------------------------
MakeUsageKnown
  // This function makes the usage known for this type of object
--------------------------------------------------------------------------------
StopTargetMovement
  // This function sets the target's x and y velocities to 0, and
  // sets the z velocity to 0 if the character is moving upwards...
  // This is a special function for the IronBall object
--------------------------------------------------------------------------------
SetXY
  // This function sets one of the 16 permanent storage variable slots
  // ( each of which holds an x,y pair )
  tmpargument = 0   // slot 0 to 7
  tmpx = selfx
  tmpy = selfy
  SetXY
--------------------------------------------------------------------------------
GetXY
  // This function reads one of the 8 permanent storage variable slots,
  // setting tmpx and tmpy accordingly
  tmpargument = 3   // slot 0 to 7
  GetXY
--------------------------------------------------------------------------------
AddXY
  // This function alters the contents of one of the 8 permanent storage
  // slots
  tmpargument = 7   // slot 0 to 7
  tmpx = 0
  tmpy = 50
  SetXY             // slot 7 now contains ( 0 and 50 )
  tmpx = 100
  tmpy = 50
  AddXY             // slot 7 now contains ( 100 and 100 )
--------------------------------------------------------------------------------
MakeAmmoKnown
  // This function makes the character's ammo known ( for items )
--------------------------------------------------------------------------------
SpawnAttachedParticle
  // This function spawns a particle attached to the character
  tmpargument = 0         // part0.txt
  tmpdistance = GRIPRIGHT // the character's right hand
  SpawnAttachedParticle
--------------------------------------------------------------------------------
SpawnExactParticle
  // This function spawns a particle at a specific x, y, z position
  tmpargument = 0         // part0.txt
  tmpx = selfx            // x
  tmpy = selfy            // y
  tmpdistance = selfz     // z
  SpawnExactParticle
--------------------------------------------------------------------------------
AccelerateTarget
  // This function changes the x and y speeds of the target
  tmpx = 10
  tmpy = 0
  AccelerateTarget
--------------------------------------------------------------------------------
IfDistanceIsMoreThanTurn
  // This function proceeds if tmpdistance is more than tmpturn
  tmpturn = 0
  tmpdistance = 50
  IfDistanceIsMoreThanTurn
    DebugMessage
--------------------------------------------------------------------------------
IfCrushed
  // This function proceeds if the character was crushed in a passage this
  // update...
--------------------------------------------------------------------------------
MakeCrushValid
  // This function makes a character able to be crushed by closing doors
  // and such
--------------------------------------------------------------------------------
SetTargetToLowestTarget
  // This function sets the target to the absolute bottom character...
  // The holder of the target, or the holder of the holder of the target, or
  // the holder of the holder of ther holder of the target, etc...
--------------------------------------------------------------------------------
IfNotPutAway
  // This function proceeds if the character couldn't be put into another
  // character's pockets for some reasong...  It might be kursed or too big
  // or something
--------------------------------------------------------------------------------
IfNotTakenOut
  // This function proceeds if the character is equiped in another's inventory,
  // and the holder tried to unequip it ( take it out of pack ), but the
  // item was kursed and didn't cooperate
--------------------------------------------------------------------------------
IfTakenOut
  // This function proceeds if the character is removed from another's
  // inventory
--------------------------------------------------------------------------------
IfAmmoOut
  // This function proceeds if the character itself has no ammo left...
  // This is for crossbows and such, not archers...
--------------------------------------------------------------------------------
PlaySoundLooped      //!!BAD!! DOESN'T WORK !!BAD!!
  // This function starts playing a continuous sound
  tmpargument = 0    // sound0.wav
  tmpdistance = 8000 // frequency
  PlaySoundLooped
--------------------------------------------------------------------------------
StopSound         //!!BAD!! DOESN'T WORK !!BAD!!
  // This function stops the playing of a continuous sound
  tmpargument = 0    // sound0.wav
  StopSound
--------------------------------------------------------------------------------
HealSelf
  // This function gives life back to the character...  Values given as * 256
  // This does NOT remove [HEAL] enchants ( poisons )
  tmpargument = 256 // One point of life
  HealSelf
--------------------------------------------------------------------------------
Equip
  // This function flags the character as being equipped...  This is used
  // by equipment items when they are placed in the inventory
--------------------------------------------------------------------------------
IfTargetHasItemIDEquipped
  // This function proceeds if the target already wearing a matching item
  tmpargument = [RING]
  IfTargetHasItemIDEquipped
    tmpargument = 0
    SendMessageNear
--------------------------------------------------------------------------------
SetOwnerToTarget
  // This function must be called before enchanting anything...  The owner
  // is the character that pays the sustain costs and such for the enchantment
--------------------------------------------------------------------------------
SetTargetToOwner
  // This function sets the target to whoever was previously declared as the
  // owner...
--------------------------------------------------------------------------------
SetFrame
  // This function sets the .MD2 frame for the character...  Values are * 4
  tmpargument = 8  // Frame 2
  SetFrame
--------------------------------------------------------------------------------
BreakPassage
  // This function causes the tiles of a passage to increment if stepped on.
  // tmpx and tmpy are both set to the location of whoever broke the tile if
  // the function passed...
  tmpargument = 20  // The passage to check
  tmpturn = 200     // The starting tile type
  tmpdistance = 4   // The number of frames ( tiles 200, 201, 202, 203 )
  tmpx = 0          // Don't animate
  tmpy = FXANIM     // Become an animated tile
  BreakPassage
    DebugMessage    // Done every time the tile changes



  // Or...
  tmpargument = 20  // The passage to check
  tmpturn = 200     // Start at tile 200
  tmpdistance = 5   // Tiles 200, 201, 202, 203, tmpx
  tmpx = 204        // Set it as an animated tile ( 204, 205, 206, 207 )
                    // Number of animated frames is in WAWALITE.TXT
  tmpy = FXANIM + FXWATER + FXDAMAGE
  BreakPassage
    DebugMessage    // Done every time the tile changes


--------------------------------------------------------------------------------
SetReloadTime
  // This function stops a character from being used for a while...  Used
  // by weapons to slow down their attack rate...  50 clicks per second...
  tmpargument = 100  // Two seconds
  SetReloadTime
--------------------------------------------------------------------------------
SetTargetToWideBlahID
  // This function sets the target to a character that matches the description,
  // and who is located in the general vicinity of the character
  tmpargument = [HUMA]
  tmpdistance = BLAHDEAD | BLAHENEMIES
  SetTargetToWideBlahID
    // Found a dead, humanoid enemy...
    DebugMessage


  tmpargument = [LUMP]
  tmpdistance = BLAHENEMIES | BLAHINVERTID
  SetTargetToWideBlahID
    // Found a living enemy, who is not a Lumpkin ( morph spell... )
    DebugMessage
--------------------------------------------------------------------------------
PoofTarget
  // This function removes the target from the game, failing if the
  // target is a player
--------------------------------------------------------------------------------
ChildDoActionOverride
  // This function lets a character set the action of the last character
  // it spawned.  It also sets the current frame to the first frame of the
  // action ( no interpolation from last frame ).
  tmpargument = ACTIONMD
  ChildDoActionOverride
--------------------------------------------------------------------------------
SpawnPoof
  // This function makes a poof at the character's location...  The
  // poof form and particle types are set in data.txt
--------------------------------------------------------------------------------
SetSpeedPercent
  // This function acts like Run or Walk, except it allows the explicit
  // setting of the speed
  tmpargument = 33  // 33%...  Same as Sneak
  SetSpeedPercent
--------------------------------------------------------------------------------
SetChildState
  // This function lets a character set the state of the last character it
  // spawned
  tmpargument = 3
  SetChildState
--------------------------------------------------------------------------------
SpawnAttachedSizedParticle
  // This function spawns a particle of the specific size attached to the
  // character...  For spell charging effects
  tmpargument = 5        // part5.txt
  tmpdistance = GRIPLEFT // in the left hand
  tmpturn = 50000
  SpawnAttachedSizedParticle
--------------------------------------------------------------------------------
ChangeArmor
  // This function changes the character's armor...
  // Sets tmpargument as the old type and tmpx as the new type
  tmpargument = 1
  ChangeArmor
--------------------------------------------------------------------------------
ShowTimer
  // This function sets the value displayed by the module timer...
  // For races and such...  50 clicks per second
  tmpargument = 243
  ShowTimer    // 00:04:86
--------------------------------------------------------------------------------
IfFacingTarget
  // This function proceeds if the character is more or less facing its
  // target
--------------------------------------------------------------------------------
SetVolume
  // This function modifies the playback volume of a given sound slot as it is
  // being played...  For fading out loops...
  tmpargument = 11    // Slot 11 (BAD! Not sound11.wav)
  tmpdistance = 45   // 45% of original playback volume
  SetVolume
--------------------------------------------------------------------------------
SpawnAttachedFacedParticle
  // This function spawns a particle attached to the character, facing the
  // same direction given by tmpturn
  tmpargument = 0         // part0.txt
  tmpdistance = GRIPRIGHT // the character's right hand
  tmpturn = selfturn      // face the same direction
  SpawnAttachedParticle
--------------------------------------------------------------------------------
IfStateIsOdd
  // This function proceeds if the character's state is 1, 3, 5, 7, etc
--------------------------------------------------------------------------------
SetTargetToDistantEnemy
  // This function finds a character within a certain distance of the
  // character, failing if there are none
  tmpdistance = 400000 // square of the radius
  SetTargetToDistantEnemy
    DebugMessage
--------------------------------------------------------------------------------
Teleport
  // This function teleports the character to a new location, failing if
  // the location is blocked or off the map
  tmpx = rand & 255 - 128 + selfx
  tmpy = rand & 255 - 128 + selfy
  Teleport
--------------------------------------------------------------------------------
GiveStrengthToTarget
GiveWisdomToTarget
GiveIntelligenceToTarget
GiveDexterityToTarget
GiveLifeToTarget
GiveManaToTarget
  // These functions increase the target's permanent stats...  Values are * 256
  tmpargument = 0 - 128 // Decrease by half a point
  GiveStrengthToTarget
--------------------------------------------------------------------------------
ShowMap
  // This function shows the module's map...  Fails if the map is already visible
--------------------------------------------------------------------------------
ShowYouAreHere
  // This function shows the blinking white blip on the map that represents the
  // camera location
--------------------------------------------------------------------------------
ShowBlipXY
  // This function draws a blip on the map, and must be done each update
  tmpx = selfx
  tmpy = selfy
  tmpargument = GREEN  // Color of the blip
  ShowBlipXY
--------------------------------------------------------------------------------
HealTarget
  // This function gives some life back to the target...  Values are * 256
  // Any enchantments that are removed by [HEAL], like poison, go away
  tmpargument = 2560  // 10 points
  HealTarget
--------------------------------------------------------------------------------
PumpTarget
  // This function gives some mana back to the target...  Values are * 256
  tmpargument = 2560  // 10 points
  PumpTarget
--------------------------------------------------------------------------------
CostAmmo
  // This function costs the character 1 point of ammo
--------------------------------------------------------------------------------
MakeSimilarNamesKnown
  // This function makes the names of similar objects known...  Checks
  // all 6 IDSZ types to make sure they match...
--------------------------------------------------------------------------------
SpawnAttachedHolderParticle
  // This function spawns a particle attached to the character's holder
  tmpargument = 0         // part0.txt
  tmpdistance = GRIPRIGHT // the holder's right hand
  SpawnAttachedParticle
--------------------------------------------------------------------------------
SetTargetReloadTime
  // This function stops the target from attacking for a while...
  // 50 clicks per second
  tmpargument = 50
  SetTargetReloadTime
--------------------------------------------------------------------------------
SetFogLevel      //!!BAD!! DOESN'T WORK !!BAD!!
  // This function sets the level of the module's fog...  Values are * 10
  tmpargument = 840
  SetFogLevel
--------------------------------------------------------------------------------
GetFogLevel      //!!BAD!! DOESN'T WORK !!BAD!!
  // This function sets tmpargument to the level of the module's fog...
  //  Values are * 10
  GetFogLevel
  tmpargument = tmpargument - 1
  SetFogLevel
--------------------------------------------------------------------------------
SetFogTAD      //!!BAD!! DOESN'T WORK !!BAD!!
  // This function sets the color of the module's fog...  TAD stands for
  // turn, argument, distance -> red, green, blue...  Makes sense, huh?
  tmpturn = 255     // red
  tmpargument = 255 // green
  tmpdistance = 255 // blue
  SetFogTAD
--------------------------------------------------------------------------------
SetFogBottomLevel      //!!BAD!! DOESN'T WORK !!BAD!!
  // This function sets the level of the module's fog...  Values are * 10
  tmpargument = 840
  SetFogBottomLevel
--------------------------------------------------------------------------------
GetFogBottomLevel      //!!BAD!! DOESN'T WORK !!BAD!!
  // This function sets tmpargument to the level of the module's fog...
  //  Values are * 10
  GetFogBottomLevel
  tmpargument = tmpargument - 1
  SetFogBottomLevel
--------------------------------------------------------------------------------
CorrectActionForHand
  // This function changes tmpargument according to which hand the character
  // is held in ( this is for wizards casting spells )
  tmpargument = ACTIONZA  // Must be an A...  ZA, BA, CA, DA, etc...
  CorrectActionForHand    // ZA or ZB if in left hand, ZC or ZD if in right
  SetTargetToWhoeverIsHolding
  TargetDoAction
--------------------------------------------------------------------------------
IfTargetIsMounted
  // This function proceeds if the target is riding a mount
--------------------------------------------------------------------------------
SparkleIcon
  // This function starts little sparklies going around the character's icon
  tmpargument = RED
  SparkleIcon
--------------------------------------------------------------------------------
UnsparkleIcon
  // This function stops little sparklies going around the character's icon
--------------------------------------------------------------------------------
GetTileXY
  // This function sets tmpargument to the tile type at the specified
  // coordinates
  tmpx = selfx
  tmpy = selfy
  GetTileXY
--------------------------------------------------------------------------------
SetTileXY
  // This function changes the tile type at the specified coordinates
  tmpx = selfx
  tmpy = selfy
  GetTileXY
  tmpargument = tmpargument + 1
  SetTileXY
--------------------------------------------------------------------------------
SetShadowSize
  // This function makes the character's shadow bigger or smaller
  tmpargument = 50
  SetShadowSize
--------------------------------------------------------------------------------
OrderTarget
  // This function issues an order to the given target
  tmpargument = 50
  OrderTarget
--------------------------------------------------------------------------------
SetTargetToWhoeverIsInPassage
  // This function sets the target to whoever is blocking the given passage
  tmpargument = passage
  SetTargetToWhoeverIsInPassage
    KillTarget
--------------------------------------------------------------------------------
IfCharacterWasABook
  // Proceeds if the character started life as a book or the spell object...
  // USED BY THE MORPH SPELL...  Not much use elsewhere
--------------------------------------------------------------------------------
SetEnchantBoostValues
  // This function sets the mana and life drains for the last enchantment
  // spawned by this character...  Values are * 256
  tmpargument = 0 - 256  // Cost owner 1 mana per second
  tmpdistance = 256      // Give owner 1 life per second
  tmpx = 0               // Give target 0 mana per second
  tmpy = 0 - 256         // Cost target 1 life per second
  SetEnchantBoostValues
--------------------------------------------------------------------------------
SpawnCharacterXYZ
  // This function spawns a character of the same type at a specific location
  tmpx = selfx               // X position of the new character
  tmpy = selfy               // Y position of the new character
  tmpdistance = selfz + 200  // Altitude of the new character
  tmpturn = selfturn         // facing of the new character
  SpawnCharacterXYZ
--------------------------------------------------------------------------------
SpawnExactCharacterXYZ
  // This function spawns a character at a specific location, using a
  // specific model type...  DON'T USE THIS FOR EXPORTABLE ITEMS OR CHARACTERS,
  // AS THE MODEL SLOTS MAY VARY FROM MODULE TO MODULE...
  tmpargument = 10           // The specific model slot
  tmpx = selfx               // X position of the new character
  tmpy = selfy               // Y position of the new character
  tmpdistance = selfz + 200  // Altitude of the new character
  tmpturn = selfturn         // facing of the new character
  SpawnExactCharacterXYZ
--------------------------------------------------------------------------------
Last edited by Zefz on Sat May 16, 2009 10:21 am, edited 3 times in total.
User avatar
Zefz
Squirrel Knight (Administrator)
Squirrel Knight (Administrator)
Posts: 3820
Joined: Wed Jul 23, 2008 1:27 am
Location: Norway
Contact:

Post by Zefz »

Code: Select all

--------------------------------------------------------------------------------
ChangeTargetClass
  // This function changes the target character's model slot...  DON'T USE
  // THIS FOR EXPORTABLE ITEMS OR CHARACTERS, AS THE MODEL SLOTS MAY VARY FROM
  // MODULE TO MODULE...  This is intended as a way to incorporate more
  // player classes into the game...
  tmpargument = [SOLD]
  IfTargetHasID                // Only let Soldiers undergo the class change
    tmpargument = 10           // The specific model slot to change to
    ChangeTargetClass
--------------------------------------------------------------------------------
PlayFullSound
  // This function plays one of the character's sounds...  The sound will
  // be heard at full volume by all players
  tmpargument = 0      // sound0.wav
  tmpdistance = 11025  // the frequency
  PlayFullSound
--------------------------------------------------------------------------------
SpawnExactChaseParticle
  // This function spawns a particle at a specific x, y, z position,
  // that will home in on the character's target
  tmpargument = 0         // part0.txt
  tmpx = selfx            // x
  tmpy = selfy            // y
  tmpdistance = selfz     // z
  SpawnExactChaseParticle
--------------------------------------------------------------------------------
CreateOrder
  // This function compresses tmpx, tmpy, tmpargument ( 0 - 15 ), and the
  // character's target into tmpargument...  This new tmpargument can then
  // be issued as an order to teammates...  TranslateOrder will undo the
  // compression
  tmpx = targetx
  tmpy = targety
  tmpargument = 0 // The order type
  CreateOrder
  IssueOrder
--------------------------------------------------------------------------------
OrderSpecialID
  // This function orders all characters with the given special IDSZ...
  // Note that the IDSZ is set in tmpdistance...
  tmpx = selfx
  tmpy = selfy
  tmpargument = 15     // The order type
  CreateOrder
  tmpdistance = [FRUN] // Yell at all characters that run from Fire
  OrderSpecialID
--------------------------------------------------------------------------------
UnkurseTargetInventory
  // This function unkurses all items held and in the pockets of the target
--------------------------------------------------------------------------------
IfTargetIsSneaking
  // This function proceeds if the target is doing ACTIONWA or ACTIONDA
--------------------------------------------------------------------------------
DropItems
  // This function drops all of the items the character is holding
--------------------------------------------------------------------------------
RespawnTarget
  // This function respawns the target at its current location
--------------------------------------------------------------------------------
TargetDoActionSetFrame
  // This function starts the target doing the given action, and also sets
  // the starting frame to the first of the animation ( so there is no
  // interpolation 'cause it looks awful in some circumstances )
  tmpargument = ACTIONMD
  TargetDoActionSetFrame
--------------------------------------------------------------------------------
IfTargetCanSeeInvisible
  // This function proceeds if the target can see invisible
--------------------------------------------------------------------------------
SetTargetToNearestBlahID
  // This function finds the NEAREST ( exact ) character that fits the given
  // parameters, failing if it finds none
  tmpargument = [HUMA]
  tmpdistance = BLAHDEAD | BLAHENEMIES
  SetTargetToWideBlahID
    // Found a dead, humanoid enemy...
    DebugMessage
--------------------------------------------------------------------------------
SetTargetToNearestEnemy
  // This function finds the NEAREST ( exact ) enemy, failing if it finds none
--------------------------------------------------------------------------------
SetTargetToNearestFriend
  // This function finds the NEAREST ( exact ) friend, failing if it finds none
--------------------------------------------------------------------------------
SetTargetToNearestLifeform
  // This function finds the NEAREST ( exact ) friend or enemy, failing if it
  // finds none
--------------------------------------------------------------------------------
FlashPassage
  // This function makes the given passage fully lit...  For debug purposes
  tmpargument = passage // passage is set in spawn.txt for the given character
  tmpdistance = 255   // color to flash it
  FlashPassage
--------------------------------------------------------------------------------
FindTileInPassage
  // This function finds all tiles of the specified type that lie within the
  // given passage.  Call multiple times to find multiple tiles.  tmpx and
  // tmpy will be set to the middle of the found tile if one is found, or
  // both will be set to 0 if no tile is found.
  tmpargument = passage // The passage to check
  tmpdistance = 51   // The tile type to find
  tmpx = 0         // Needed for first call
  tmpy = 0         // Needed for first call
  FindTileInPassage
    tmpargument = 52
    SetTileXY
  // Do it again, x and y set from last call
  tmpargument = passage
  FindTileInPassage
    tmpargument = 52
    SetTileXY
  // Do it again, x and y set from last call
  tmpargument = passage
  FindTileInPassage
    tmpargument = 52
    SetTileXY
--------------------------------------------------------------------------------
IfHeldInLeftHand
  // This function passes if another character is holding the character in its
  // left hand.  Used mostly by enchants that target the item of the other
  // hand
--------------------------------------------------------------------------------
NotAnItem
  // This function makes the character a non-item character...  Used for
  // spells that summon creatures
--------------------------------------------------------------------------------
SetChildAmmo
  // This function sets the ammo of the last character spawned by this
  // character
  tmpx = selfx + 100
  tmpy = selfy
  tmpturn = selfturn
  tmpdistance = 0
  SpawnCharacter
    tmpargument = 1
    SetChildAmmo
--------------------------------------------------------------------------------
IfHitVulnerable
  // This function proceeds if the character was hit by a weapon of its
  // vulnerability IDSZ...  For example, a werewolf gets hit by a [SILV]
  // bullet.
--------------------------------------------------------------------------------
IfTargetIsFlying
  // This function proceeds if the target is flying
--------------------------------------------------------------------------------
IdentifyTarget
  // This function reveals the target's name, ammo, and usage
  // Proceeds if the target was unknown
--------------------------------------------------------------------------------
BeatModule
  // This function displays the Module Ended message
--------------------------------------------------------------------------------
EndModule
  // This function presses the Escape key
--------------------------------------------------------------------------------
DisableExport
  // This function turns export off
--------------------------------------------------------------------------------
EnableExport
  // This function turns export on
--------------------------------------------------------------------------------
GetTargetState
  // This function sets tmpargument to the state of the target
--------------------------------------------------------------------------------
ClearEndMessage
  // This function empties the end-module text buffer
--------------------------------------------------------------------------------
AddEndMessage
  // This function adds a message to the end-module text buffer
  ClearEndMessage
  tmpargument = 0
  AddEndMessage
  tmpargument = 1
  AddEndMessage
--------------------------------------------------------------------------------
PlayMusic
  // This function starts playing track with with music
  tmpargument = 4   //The music track (Defined in playlist.txt located in the
         //music folder
  tmpdistance = 1000    //Fade time for the last song to fade, 1000 is one sec
  PlayMusic
--------------------------------------------------------------------------------
SetMusicPassage
  // This function keys a passage to play music when entered by the players
  tmpargument = passage // The passage to set
  tmpdistance = 0       // Which music track (Set in playlist.txt)
  SetMusicPassage
--------------------------------------------------------------------------------
MakeCrushInvalid
  // This function makes a character uncrushable by doors
--------------------------------------------------------------------------------
StopMusic
  // This function stops the interactive music
--------------------------------------------------------------------------------
FlashVariable
  // This function makes the character flash according to tmpargument
  tmpargument = 0
  FlashVariable
  // SetTargetToSelf
  // BlackTarget
--------------------------------------------------------------------------------
AccelerateUp
  // This function makes the character accelerate up and down
  tmpargument = 100
  AccelerateUp
--------------------------------------------------------------------------------
FlashVariableHeight
  // This function allows a character to have dark feet and a bright head
  tmpturn = 0      // 0 to 255, intensity below bottom height
  tmpx = 1000      // -32000 to 32000, Bottom height
  tmpdistance = 255   // 0 to 255, intensity above top height
  tmpy = 10000          // -32000 to 32000, Top height
  FlashVariableHeight
--------------------------------------------------------------------------------
SetDamageTime
  // This function makes the character invincible for tmpargument frames
  tmpargument = 50   // One Second
  SetDamageTime
--------------------------------------------------------------------------------
IfTargetIsAMount
  // This function passes if the target is a mountable character
--------------------------------------------------------------------------------
IfTargetIsAPlatform
  // This function passes if the target is a platform character
--------------------------------------------------------------------------------
AddStat
  // This function turns on an NPC's status display
--------------------------------------------------------------------------------
DisenchantTarget
  // This function removes all enchantments on the target character, proceeding
  // if there were any, failing if not
--------------------------------------------------------------------------------
DisenchantAll
  // This function removes all enchantments in the game
--------------------------------------------------------------------------------
SetVolumeNearestTeammate
  // This function lets insects buzz correctly...  The closest team member
  // is used to determine the overall sound level.
  tmpargument = 1     // The sound to manipulate
  tmpdistance = 0     // How far away the sound is
  SetVolumeClosestTeammate
--------------------------------------------------------------------------------
AddShopPassage
  // This function makes a passage behave as a shop area, as long as the
  // character is alive.
  tmpargument = passage
  AddShopPassage
--------------------------------------------------------------------------------
TargetPayForArmor
  // This function costs the target the appropriate amount of money for the
  // given armor type.  Passes if the character has enough, and fails if not.
  // Does trade-in bonus automatically.  tmpy is always set to cost of requested
  // skin tmpx is set to amount needed after trade-in ( 0 for pass ).
  tmpargument = 3  // The skin type to buy
  TargetPayForArmor
    // Give 'em the armor
    ChangeTargetArmor
  Else
    // Not enough money
    tmpargument = 2
    SendMessageNear
--------------------------------------------------------------------------------
JoinEvilTeam
  // This function makes the character join team E.
--------------------------------------------------------------------------------
JoinNullTeam
  // This function makes the character join team N.
--------------------------------------------------------------------------------
JoinGoodTeam
  // This function makes the character join team G.
--------------------------------------------------------------------------------
PitsKill
  // This function activates pit deaths for when characters fall below a
  // certain altitude...
--------------------------------------------------------------------------------
SetTargetToPassageID
  // This function sets the target to the first character in the passage
  // who has an item with the given IDSZ.  Fails if none are found.
  tmpargument = passage
  tmpdistance = [KEYA]
  SetTargetToPassageID
--------------------------------------------------------------------------------
MakeNameUnknown
  // This function makes the character's name unknown...  Use if you have
  // subspawning of creatures from a book...
--------------------------------------------------------------------------------
SpawnExactParticleEndSpawn
  // This function spawns a particle at a specific x, y, z position...
  // When the particle ends, a character is spawned at its final location.
  // The character is the same type of whatever spawned the particle.
  tmpargument = 0         // part0.txt
  tmpturn = 1             // The state of the child, when spawned
  tmpx = selfx            // x
  tmpy = selfy            // y
  tmpdistance = selfz     // z
  SpawnExactParticleEndSpawn
--------------------------------------------------------------------------------
SpawnPoofSpeedSpacingDamage
  // This function spawns a poof, but sets the XY Velocity and XY Spacing of
  // the poof particles first...  Base damage is also changed...
  tmpx = 10          // The xy velocity
  tmpy = 30          // The xy spacing
  tmpargument = 256  // Do 1 point of damage (+random amount in part file ).
                     // If the damage was originally 4-10, it's as if it said
                     // 1-7 instead...
  SpawnPoofSpeedSpacingDamage
--------------------------------------------------------------------------------
GiveExperienceToGoodTeam
  // This function gives experience to everyone on the G team
  tmpargument = 40      // The base amount of experience
  tmpdistance = EXPQUEST   // The type of experience
  GiveExperienceToGoodTeam
--------------------------------------------------------------------------------
DoNothing
  //This function does nothing at all. Use this for debugging or in combination
  //with a Else function
  IfTargetIsAlive      //Is the enemy alive?
    DoNothing      //Nop, no worries
  Else
    CallForHelp      //Got a enemy, call for backup
--------------------------------------------------------------------------------
DazeTarget
GrogTarget
  //These functions either Dazes og Grogs their targets (Or even both effects at
  //the same time if both are written)
  IfUsed
    SetTargetToWhoeverIsHolding
    tmpargument = 0 - 255      //Anything between -255 and 255
    DazeTarget            //This reduces all Daze effects by 255
--------------------------------------------------------------------------------
DropTargetKeys
  //This makes the target drop all his keys
  IfBumped
    SetTargetToWhoeverBumped
    IfTargetIsOnHatedTeam
      DropTargetKeys         //A silly way of pickpocketing
--------------------------------------------------------------------------------
DropTargetMoney
  //This forces the target to drop the specified amount of money (If it has any)
  IfBumped
    SetTargetToWhoeverBumped
    tmpx = rand & targetdex*2
    tmpy = rand & selfdex      //Check for pickpocket skill
    IfXIsLessThanY
      tmpargument = selfdex/256      //Steal 1 money per dex point
      DropTargetMoney
--------------------------------------------------------------------------------
ClearMusicPassage
  //This disables music switching in the specified passage
  tmpargument = 4
  ClearMusicPassage   //No more switching in passage 4
--------------------------------------------------------------------------------
JoinTeam
  //This function makes the character join the team specified in tmpargument
  //0 = team A, 1 = team B, 2 = team C, etc. It goes up to 23 = team Z
  //Remember that number 13 is team N which is always neutral.
  IfAttacked
    SetTargetToWhoeverAttacked
    IfTargetIsOnSameTeam      //Get unfriendly
      tmpargument = 4         //by joining team Evil
      JoinTeam
--------------------------------------------------------------------------------
TargetJoinTeam
  //Same as the above, but makes the target join the team instead.
--------------------------------------------------------------------------------
PlaySoundVolume
  //This plays the sound specified in tmpargument with the volume in tmpdistance
  //Volume is written in percent. If tmpdistance is -1, the sound plays normally.
  IfTimeOut
    tmpargument = 40
    SetTime
    tmpargument = 3
    tmpdistance = 125         //125% of original volume
    PlaySoundVolume
--------------------------------------------------------------------------------
IfTargetHasNotFullMana
  //This function proceeds if the target has used or lost more than one point of mana.
  IfBumped
    SetTargetToWhoeverBumped
    IfTargetHasNotFullMana
      tmpargument = rand & 255 + 512   //2-3 points
      PumpTarget
--------------------------------------------------------------------------------
IfDoingAction
  // Is the character doing the animation defined in tmpargument?
  tmpargument = ACTIONJA                //Jump animation
  IfDoingAction
    tmpargument = 5
    PlaySound
--------------------------------------------------------------------------------
GetTargetContent
  // This function sets tmpargument to the content of the target
--------------------------------------------------------------------------------
IfOperatorIsLinux
  // This function proceeds if the computer is currently using Linux OS
--------------------------------------------------------------------------------
IfTargetIsOwner
  // This function proceeds if the target is the character's owner
--------------------------------------------------------------------------------
AddQuest
  // This function adds a specified Quest IDSZ into the target player quest log
  // Fails if the target already has the IDSZ
  tmpargument = [SPOR]
  IfTargetHasItemID
    tmpargument = [MAIN]
    AddQuest
--------------------------------------------------------------------------------
IfTargetHasQuest
  // This function proceeds if the target player has the required quest IDSZ
  // and sets tmpx to the quest level of the specified quest we are looking for
  tmpargument = [QUES]
  IfTargetHasQuest
    tmpy = 5
    IfXIsMoreThanY      //Quest level is at least 5
      BeatQuest
--------------------------------------------------------------------------------
BeatQuest
  // This function marks the target player quest IDSZ as beaten (Quest Level = -2)
  // Fails if the quest is not found or already beaten.
  IfBumped
    tmpargument = [FIND]
    IfTargetHasQuest
      BeatQuest
--------------------------------------------------------------------------------
SetQuestLevel
  // This function changes a specified Quest IDSZ into a different Quest Level
  // The change is specified in tmpdistance and IDSZ in tmpargument. The change may
  // be negative too... Fails if the quest is beaten or not found.
  // Quest level cannot be reduced below 0, unless it is marked as beaten which is -2.
  IfBumped
    tmpargument = [KEYQ]
    IfTargetHasItemID
      tmpdistance = 1
    Else
      tmpdistance = 0 - 1
    tmpargument = [QUES]   //If the target has the key, the quest level is
    SetQuestLevel               //increased by 1, if not it is decreased by 1.
--------------------------------------------------------------------------------
EnableRespawn
DisableRespawn
  // These functions either enables or disables respawning in the module with the
  // JUMP button for all player characters.
--------------------------------------------------------------------------------
SetCameraSwing
  // This sets the camera swing (G'nome Starter for example). This is usually set in
  // wawalite.txt, but can be changed by scripts here. tmpargument defines swing rate
  // and tmpdistance defines swing amplitude.
  tmpargument = 80             //Should be 0 to 100
  tmpadistance = 0.040         //Between 0.0 and 0.1
  SetCameraSwing
--------------------------------------------------------------------------------
IfButtonPressed
  //This proceeds if the appropiate LATCHBUTTON defined in tmpargument is pressed
  //in this update by a player.
  tmpargument = LATCHLEFT
  IfButtonPressed
    tmpargument = 5
    SendMessage
--------------------------------------------------------------------------------
IfHolderScoredAHit
  //Did the holder of the character hit something last update?
  //Also sets the current target to who was hit
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
IfHolderBlocked
  //Did the holder of the character block something last update?
  //Also sets target to the one who attacked
--------------------------------------------------------------------------------
SetTargetToHolder
  //Same as SetTargetToWhoeverIsHolding
--------------------------------------------------------------------------------
SetTargetToAttacker
  //Same as SetTargetToWhoeverAttacked
--------------------------------------------------------------------------------
GetTargetSkillLevel
  //Sets tmpargumern to the skill level of the skill specified in tmpdistance
  SetTargetToWhoeverIsHolding
    tmpdistance = [AWEP]    //Advanced weapons profiency
    GetTargetSkillLevel
    tmpx = tmpargument
    tmpy = 2
    IfXIsMoreThanY
      FlashTarget
--------------------------------------------------------------------------------
SetTargetToLastItemUsed
  //Sets target to the last item the character used, failing if the target is self
SetTargetToLastItemUsed
  IfTargetIsAWeapon
    tmpargument = 0
    PlaySound           //Used a weapon last
Else
  DebugMessage          //Unarmed or dropped the item
--------------------------------------------------------------------------------
IfTargetIsAWeapon
  //Proceeds if the AI target is a melee or ranged weapon
--------------------------------------------------------------------------------
IfSomeoneIsStealing
  //Proceeds if the character detected someone stealing from his/her shop this update
  IfSomeoneIsStealing
    CallForHelp
--------------------------------------------------------------------------------
IfBackstabbed
  //Was the character stabbed in the back by a character with the [DISA] skill
  //who did it with either SLASH, POKE or CRUSH type damage.
  IfBackstabbed
    SetTargetToSelf
    KillTarget
--------------------------------------------------------------------------------
GetTargetDamageType
  // This function sets tmpargument to the damage type of the last attack that
  // hit the target
  IfScoredAHit
    SetTargetToWhoeverWasHit
    GetTargetDamageType
    tmpx = tmpargument
    tmpy = DAMAGESLASH
    IfXIsEqualToY
      tmpargument = 0
      SendMessageNear
--------------------------------------------------------------------------------
IfTargetIsArcaneSpell
  //Does the target have the [IDAM] expansion?
--------------------------------------------------------------------------------
TakePicture
  //Takes a screenshot, used for the tourist camera and for debugging
--------------------------------------------------------------------------------
IfModuleHasIDSZ
  //Proceeds if the specified module in message.txt (use tmpargument)
  //has the IDSZ specified in tmpdistance.
--------------------------------------------------------------------------------
IfOperatorIsMacintosh
  //Proceeds if Egoboo is running in a Mac enviroment.
--------------------------------------------------------------------------------
FollowLink
  //Links the module to the next module specified in message.txt (use tmpargument)
--------------------------------------------------------------------------------
Last edited by Zefz on Sat May 16, 2009 10:21 am, edited 3 times in total.
User avatar
Zefz
Squirrel Knight (Administrator)
Squirrel Knight (Administrator)
Posts: 3820
Joined: Wed Jul 23, 2008 1:27 am
Location: Norway
Contact:

Post by Zefz »

CONSTANTS

Code: Select all

BLAHDEAD
BLAHENEMIES
BLAHFRIENDS
BLAHITEMS
BLAHINVERTID
  // These are for the Blah style functions, to specify exactly what type
  // of target to find.  These are OR'd together, so I usually figure out the
  // number and write that exactly, rather than letting the compiler handle it.
  // For example, BLAHFRIENDS | BLAHENEMIES is the same as the number 6.


  // BLAHINVERTID only works with the SetTargetToWideBlahID function and
  // uses a IDSZ stated in tmpdistance. The script will not target anyone with that IDSZ

//!!Alternatively replace the tmpdistance constant with a number as shown below:
TMPDISTANCE      EFFECT
0         Target nothing.
1         Target dead.
2         Target enemies.
3         Target enemies and dead.
4         Target friends.
5         Target friends and dead.
6         Target friends and enemies.
7         Target friends, enemies, and dead.
8         Target items.
9         Target items and dead.
10         Target items and enemies.
11         Target items, enemies, and dead.
12         Target items and friends.
13         Target items, friends, and dead.
14         Target items, friends, and enemies.
15         Target items, friends, enemies, and dead.
--------------------------------------------------------------------------------
STATEPARRY
STATEWANDER
STATEGUARD
STATEFOLLOW
STATESURROUND
STATERETREAT
STATECHARGE
STATECOMBAT
  // These are generic, named states, in case you like using names instead of
  // numbers
--------------------------------------------------------------------------------
GRIPONLY
GRIPLEFT
GRIPRIGHT
SPAWNORIGIN
SPAWNLAST
  // These are grip and spawn locations for particle spawning and such
--------------------------------------------------------------------------------
LATCHLEFT
LATCHRIGHT
LATCHJUMP
LATCHALTLEFT
LATCHALTRIGHT
LATCHPACKLEFT
LATCHPACKRIGHT
  // These are the different buttons that can be pressed ( alt means get/drop )
--------------------------------------------------------------------------------
DAMAGESLASH
DAMAGECRUSH
DAMAGEPOKE
DAMAGEHOLY
DAMAGEEVIL
DAMAGEFIRE
DAMAGEICE
DAMAGEZAP
  // These are the different damage types
--------------------------------------------------------------------------------
ACTIONDA   // Dance ( Standing still )
ACTIONDB   // Dance
ACTIONDC   // Dance
ACTIONDD   // Dance
ACTIONUA   // Unarmed attack left
ACTIONUB   // Unarmed attack left
ACTIONUC   // Unarmed attack right
ACTIONUD   // Unarmed attack right
ACTIONTA   // Thrust attack left
ACTIONTB   // Thrust attack left
ACTIONTC   // Thrust attack right
ACTIONTD   // Thrust attack right
ACTIONCA   // Chop attack left
ACTIONCB   // Chop attack left
ACTIONCC   // Chop attack right
ACTIONCD   // Chop attack right
ACTIONSA   // Slice attack left
ACTIONSB   // Slice attack left
ACTIONSC   // Slice attack right
ACTIONSD   // Slice attack right
ACTIONBA   // Bash attack left
ACTIONBB   // Bash attack left
ACTIONBC   // Bash attack right
ACTIONBD   // Bash attack right
ACTIONLA   // Longbow attack left
ACTIONLB   // Longbow attack left
ACTIONLC   // Longbow attack right
ACTIONLD   // Longbow attack right
ACTIONXA   // Crossbow attack left
ACTIONXB   // Crossbow attack left
ACTIONXC   // Crossbow attack right
ACTIONXD   // Crossbow attack right
ACTIONFA   // Flinged attack left
ACTIONFB   // Flinged attack left
ACTIONFC   // Flinged attack right
ACTIONFD   // Flinged attack right
ACTIONPA   // Parry attack left ( 1 frame )
ACTIONPB   // Parry attack left ( DON'T USE )
ACTIONPC   // Parry attack right ( 1 frame )
ACTIONPD   // Parry attack right ( DON'T USE )
ACTIONEA   // Evade
ACTIONEB   // Evade
ACTIONRA   // Roll
ACTIONZA   // Zap left
ACTIONZB   // Zap left
ACTIONZC   // Zap right
ACTIONZD   // Zap right
ACTIONWA   // Sneak
ACTIONWB   // Walk
ACTIONWC   // Run
ACTIONWD   // Push
ACTIONJA   // Jump
ACTIONJB   // Falling from left hand
ACTIONJC   // Falling from right hand
ACTIONHA   // Hit
ACTIONHB   // Hit
ACTIONHC   // Hit
ACTIONHD   // Hit
ACTIONKA   // Killed
ACTIONKB   // Killed
ACTIONKC   // Killed
ACTIONKD   // Killed
ACTIONMA   // Drop item left
ACTIONMB   // Drop item right
ACTIONMC   // Cheer/Slam left
ACTIONMD   // Show off/Rise from ground/Slam right
ACTIONME   // Grab item left
ACTIONMF   // Grab item right
ACTIONMG   // Open chest
ACTIONMH   // Sit ( DON'T USE )
ACTIONMI   // Ride
ACTIONMJ   // Object activated
ACTIONMK   // Sleeping
ACTIONML   // Unlock
ACTIONMM   // Held left
ACTIONMN   // Held right
  // These are all of the available action types
--------------------------------------------------------------------------------
EXPSECRET   // For finding hidden things, Identifying items, etc
EXPQUEST   // For finishing a module, Completing a subquest, etc
EXPDARE      // For being brave and/or foolish
EXPKILL      // For killing a monster
EXPMURDER   // For killing a sleeping monster ( ACTIONMK )
EXPREVENGE   // For killing a hated monster ( hate group IDSZ )
EXPTEAMWORK   // A comrade killed a monster
EXPROLEPLAY   // For playing your character
EXPDIRECT   // Direct award, no modifications at all (Rather not use this one)
  // These are the experience types, which may be refined further by
  // IDSZ checks
--------------------------------------------------------------------------------
//Message Name         //Same as:
MESSAGEDEATH         //Message 0
MESSAGEHATE         //Message 1
MESSAGEOUCH         //Message 2
MESSAGEFRAG         //Message 3
MESSAGEACCIDENT      //Message 4
MESSAGECOSTUME      //Message 5
  // These are the standard message types, but feel free not to use them
--------------------------------------------------------------------------------
WHITE
RED
YELLOW
GREEN
BLUE
PURPLE
  // These are colors for blips and sparkles
--------------------------------------------------------------------------------
FXNOREFLECT
FXDRAWREFLECT
FXANIM
FXWATER
FXBARRIER
FXIMPASS
FXDAMAGE
FXSLIPPY
  // These are map effects
--------------------------------------------------------------------------------
//These are constant used in combination with the FindPath function (Adjusting
//speed, movement and turning accordingly)
MOVEMELEE   //Standard melee position
MOVERANGED   //Keep a distance away for use with ranged weapons
MOVEDISTANCE   //Keep a short melee distance for weapons with long reach
MOVERETREAT   //Run away from the target in full panic!
MOVECHARGE   //Charge the target in full speed!
MOVEFOLLOW   //Follow the target in group formation
--------------------------------------------------------------------------------


VARIABLES

Code: Select all

tmpx
tmpy
tmpdistance
tmpturn
tmpargument
  // These variables are used as arguments to functions, and are the only
  // variables that can be written to...
  tmpx = tmpx + 50        // This is okay
  tmpy = 0 - 200          // This is okay
  tmpdistance = 99
  tmpturn = rand & 255    // This is okay
  tmpargument =
  selfx = 30              // !!!THIS IS WRONG, WRONG, WRONG!!!
--------------------------------------------------------------------------------
rand
  // This variable is a random number between
--------------------------------------------------------------------------------
selfx
selfy
  // Location of the character
--------------------------------------------------------------------------------
selfturn
  // The facing of the character
--------------------------------------------------------------------------------
selfcounter
  // The character's number on the team
--------------------------------------------------------------------------------
selforder
  // The order given to the character...  Should probably now just use
  // TranslateOrder if possible
--------------------------------------------------------------------------------
selfmorale
  // The number of characters left in the character's team
--------------------------------------------------------------------------------
selflife
  // The life of the character...  Value is * 256
--------------------------------------------------------------------------------
targetx
targety
  // Location of the target
--------------------------------------------------------------------------------
targetdistance
  // Distance to the target.  This is NOT correct, but it usually works just
  // fine.  If you really need the correct distance, use xydistance after
  // setting tmpx and tmpy.
--------------------------------------------------------------------------------
targetturn
  // The facing of the target
--------------------------------------------------------------------------------
leaderx
leadery
  // Location of the team's leader
--------------------------------------------------------------------------------
leaderdistance
  // Distance to the leader ( not exact )
--------------------------------------------------------------------------------
leaderturn
  // Facing of the leader
--------------------------------------------------------------------------------
gotox
gotoy
  // Next waypoint location
--------------------------------------------------------------------------------
gotodistance
  // Distance to next waypoint
--------------------------------------------------------------------------------
targetturnto
  // Direction to the target from the character...  VERY USEFUL
--------------------------------------------------------------------------------
targetturnfrom
  //Direction in the opposite way of the target
--------------------------------------------------------------------------------
passage
  // The character's passage...  Set is spawn.txt
--------------------------------------------------------------------------------
weight
  // The amount of weight on top of a character ( not exact )...
  // For buttons that need heavy things dropped on them
--------------------------------------------------------------------------------
selfaltitude
  // The character's distance above the ground
--------------------------------------------------------------------------------
selfid
  // The character's type IDSZ
--------------------------------------------------------------------------------
selfhateid
  // The character's hate IDSZ
--------------------------------------------------------------------------------
selfmana
  // The mana of the character...  Value is * 256
--------------------------------------------------------------------------------
targetstr
targetwis
targetint
targetdex
targetlife
targetmana
  // The stats of the target...  Value is * 256
--------------------------------------------------------------------------------
targetlevel
  // The experience level of the target...  0-5
--------------------------------------------------------------------------------
selflevel
  // The experience level of the character...  0-5
--------------------------------------------------------------------------------
targetspeedx
targetspeedy
targetspeedz
  // The speeds of the target
--------------------------------------------------------------------------------
selfspawnx
selfspawny
  // The starting location of the character
--------------------------------------------------------------------------------
selfstate
  // The character's state
--------------------------------------------------------------------------------
selfstr
selfwis
selfint
selfdex
selfmanaflow
  // The stats of the character...  Value is * 256
--------------------------------------------------------------------------------
targetmanaflow
  // How much the target can pump spells...  Value is * 256
--------------------------------------------------------------------------------
selfattached
  // The number of particles attached to the character
--------------------------------------------------------------------------------
swingturn
  // For the sliding crate in the G'nome starter...  The tilt of the floor
--------------------------------------------------------------------------------
xydistance
  // An exact distance...  sqrt(tmpx * tmpx + tmpy * tmpy)
--------------------------------------------------------------------------------
selfz
  // Up down location of the character
--------------------------------------------------------------------------------
targetaltitude
  // Distance of the target above the ground
--------------------------------------------------------------------------------
targetz
  // Up down location of the target
--------------------------------------------------------------------------------
selfindex
  // The unique number associated with this character
--------------------------------------------------------------------------------
ownerx
ownery
  // The owner location
--------------------------------------------------------------------------------
ownerturn
  // The owner facing
--------------------------------------------------------------------------------
ownerdistance
  // The distance to the owner ( not exact )
--------------------------------------------------------------------------------
ownerturnto
  // The direction to the owner from the character...
--------------------------------------------------------------------------------
xyturnto
  // The direction to tmpx, tmpy from the character...
--------------------------------------------------------------------------------
selfmoney
  // The amount of money held by the character
--------------------------------------------------------------------------------
targetmoney
  // The amount of money the target has
--------------------------------------------------------------------------------
selfaccel
  // The current acceleration rate of the character
--------------------------------------------------------------------------------
targetexp
  // The amount of experience the target has earned so far
--------------------------------------------------------------------------------
selfammo
  // The amount of ammo the character has left ( for weapon scripts )
--------------------------------------------------------------------------------
targetammo
  // The amount of ammo the target has left ( used for checking your ammo for
  // example )
--------------------------------------------------------------------------------
spawndistance
  // This is the character's current distance from its spawn point
--------------------------------------------------------------------------------
targetmaxlife
  // This is the character's current target maximum life (eg. unhurt hp)
--------------------------------------------------------------------------------
selfcontent
  // This is the character's current AI content
--------------------------------------------------------------------------------


MATH

Order of operations
    Egoboo math operates from left to right, and does not respect normal order of operations.

    Code: Select all

    Normal math: 3 + 7 * 5 = 3 + (7 * 5) = 38
    Egoboo math: 3 + 7 * 5 = (3 + 7) * 5 = 50

Operators:

    Code: Select all

           DEFENITION
    +      Add
     -      Subtract
    >      Bitwise Left shift
    <      Bitwise Right shift
    *      Multiply
    /      Divide

Random number generation
    To choose a random number in a certain range you can use either the '&' or the '%' operators. Using the bitwise-and operator '&' is faster but is more or less restricted to using certain numbers : 1, 2, 7, 15, 31, 63, 127, ... (2^n) - 1.
    Using the '%' operator allows you to select any range you want, but is more processor intensive.

    Examples:
      rand & 7 generates a number between 0 and 7
      rand % 8 generates a number between 0 and 7
      rand & 8 generates EITHER the number 0 or the number 8

      rand & 31 generates all the numbers between 0 and 31
      rand & 30 generates the even numbers between 0 and 30 (we dropped the lowest order bit)
      rand & 30 + 1 generates all the odd numbers between 1 and 31
Cimeries
Lumberjack (Developer)
Lumberjack (Developer)
Posts: 7720
Joined: Wed Jul 23, 2008 6:56 am

Post by Cimeries »

What happened to the "IfXIsGreaterThanY" stuff? Why did you remove it?
:wink:
User avatar
Zefz
Squirrel Knight (Administrator)
Squirrel Knight (Administrator)
Posts: 3820
Joined: Wed Jul 23, 2008 1:27 am
Location: Norway
Contact:

Post by Zefz »

You mean

Code: Select all

IfYIsMoreThanX
  // This function proceeds if tmpy is more than tmpx...
  tmpx = 0
  tmpy = 1
  IfYIsMoreThanX
    DebugMessage
Cimeries
Lumberjack (Developer)
Lumberjack (Developer)
Posts: 7720
Joined: Wed Jul 23, 2008 6:56 am

Post by Cimeries »

Ah... My memory sucks. :P
I already found a better work around by now though (for my specific task). :D
:wink:
Chevcx
Tranch (Novice)
Tranch (Novice)
Posts: 115
Joined: Tue Aug 11, 2009 3:45 pm
Location: A place.

Post by Chevcx »

:? slowly learning ego-script
I must be a zombie, because I came back after, around, a year.
User avatar
Zefz
Squirrel Knight (Administrator)
Squirrel Knight (Administrator)
Posts: 3820
Joined: Wed Jul 23, 2008 1:27 am
Location: Norway
Contact:

Post by Zefz »

Btw, this list of the script functions is outdated now. The current up to date list of all Egoboo AI script functions can be found in the SVN under aidocs.txt
Chevcx
Tranch (Novice)
Tranch (Novice)
Posts: 115
Joined: Tue Aug 11, 2009 3:45 pm
Location: A place.

Post by Chevcx »

Gonna go look there instead of here now xD
I must be a zombie, because I came back after, around, a year.
User avatar
penguinflyer2222
Queen Penguin (Senior Member)
Queen Penguin (Senior Member)
Posts: 6614
Joined: Wed Jul 23, 2008 1:51 am

Post by penguinflyer2222 »

Ohhh. I didn't know that.
EgoScript Functions [outdated]
......
Post Reply