This document describes the classes and values of the scripting used by Trespasser. The syntax of the script is that used by TresEd, the Trespasser Level Editor.
Script Reference:
General Script Classes
Trigger Classes
Trigger Actions
Disclaimer: This page is work in progress, is far from complete, and has not been thoroughly checked so use it just as a guide.
Trespasser recognizes the following data types:
Values are case sensitive and strongly typed. This means that if you type "moveable" instead of "Moveable" or "int Frame" instead of "float Frame", Trespasser will ignore the value. Where the default value is listed as "must specify", Trespasser may behave badly or even crash if the value is not specified.
The Class value determines the type of object, and all objects should specify it.
Type | Name | Default | Description |
string | Class | "CInstance" | Class of object, described below. |
Example:
group MyTerrainTexture = { string Class = "CTerrainObj" int Height = 1 string SoundMaterial = "Grass" }
Classes:
AI Command
CAnimal
CBackdrop
CEntityAttached
CEntityWater
CGun
CHitSpang
CInstance
CJoint
CLightDirectional
CMagnet or MasterMagnet
SlaveMagnet
CSocket
CMuzzleFlash
CParticles
CSky
CSubsystem
CTerrainObj
CTest
CWaterDisturbance or Disturbance
Player
Player Settings
Settings
Teleport
Marker
TerrainPlacement
<no Class specified>
IGNORE
See also Trigger classes
Possible classes, with unknown usage (not used in original levels): CHitSpang, CInput, CSocket, Default, Marker, TerrainExtent, CTest, CSubsystem.
Type | Name | Default | Description | int | Dinosaur | must specify | 0 = 1 = 2 = 3 = 4 = 5 = 6 = |
---|---|---|---|
int | Vocal | must specify | 0=Pain (Ouch), 1=Call (Help), 2=Roar (Howl), 3=Snarl, 4=Stalk (Croon), 5=Whimper, 6=Dying (Die), 7=Attack, 8=Bite, 9=Chew (Eat), 10=Drink, 11=Swallow, 12=Sniff, 13=Tear |
string | A00, A01, ... | must specify | |
group | A00, A01, ... | must specify | |
string | Sample | must specify | |
float | Open | 0.0 ? | |
float | Close | 0.0 ? |
Example:
group VocalTriceratopsRoar = { string Class = "AI Command" int Dinosaur = 3 int Vocal = 2 string A00 = "TRIC-CALL-03" string A01 = "TRIC-STLK-01" object A02 = { string Sample = "TRIC-WMPR-02" float Open = 0.1 float Close = 0.2 } }
Vocal values are as follows: 0=Pain, 1=Call, 2=Roar, 3=Snarl, 4=Stalk, 5=Whimper, 6=Dying, 7=Attack, 8=Bite, 9=Chew, 10=Drink, 11=Swallow, 12=Sniff, 13=Tear
Type | Name | Default | Description |
---|---|---|---|
int | ArcheType | must specify | 1 = 0 = -1 = |
int | Dinosaur | must specify | 0 = 1 = 2 = 3 = 4 = 5 = 6 = |
int | Team | 0 | |
float | WalkOver | -0.3 | |
float | JumpOver | 0.5 | |
float | WalkUnder | 3.0 | |
float | CrouchUnder | 2.0 | |
float | JumpDistance | 3.0 | |
float | JumpUp | 1.0 | |
float | JumpDown | 1.0 | |
float | UpAngle | unknown | |
float | DownAngle | unknown | |
float | Bravery | 0.5 | |
float | HitPoints | 100.0 | |
float | MaxHitPoints | 100.0 | |
float | CriticalHit | unknown | |
float | Regeneration | 1.0 | |
float | ReallyDie | -20.0 | |
float | DieRate | 1.0 | |
float | Width | 1.0 | |
float | Height | 1.0 | |
float | HeadReach | 2.0 | |
float | TailReach | 4.0 | |
float | ClawReach | unknown | |
float | MoveableMass | 0.5 | |
float | Speed | unknown | |
float | Mouth | unknown | |
Physics | |||
string | Type | must specify | "Trike" = "Raptor" = "TRex" = Possibly it also defines the basic skeleton arrangement for the dino (number of joints and parent/child relationships between them), with any additional joints being defined based on the NumJoints, NumDoubleJoints and related values like Ratio and RotationRatio (see). |
int | PVA | must specify | |
float | WakeUp | 30.0 | |
float | Sleep | 30.0 | |
string | Head | must specify | |
string | Neck | must specify | |
string | Body | must specify | |
string | Tail | must specify | |
string | LeftRearFoot, RightRearFoot |
unknown | |
int | NumJoints | must specify | |
int | NumDoubleJoints | must specify | |
bool | ReverseKnees | false | |
Pathfinding | |||
bool | TerrainPathfinding | true | |
float | SenseTerrain | unknown | |
float | SenseObjects | unknown | |
float | SenseAnimates | unknown | |
int | MaxNodes | must specify | |
float | MaxPathLength | unknown | |
float | NodesPerSecond | unknown | |
float | TimeToForgetNode | unknown | |
float | TimeToForgetNode | unknown | |
int | MaxAStarSteps | must specify | |
Emotions | |||
float | Fear | 0.2 | |
float | Love | 0.2 | |
float | Anger | 0.2 | |
float | Curiosity | 0.2 | |
float | Hunger | 0.5 | |
float | Thirst | 0.5 | |
float | Fatigue | 0.0 | |
float | Pain | 0.0 | |
float | Solidity | 1.0 | |
float | HumanFear | 0.2 | |
float | HumanLove | 0.2 | |
float | HumanAnger | 0.2 | |
float | HumanCuriosity | 0.2 | |
float | HumanHunger | 0.5 | |
float | HumanThirst | 0.5 | |
float | HumanFatigue | 0.0 | |
float | HumanPain | 0.0 | |
float | HumanSolidity | 1.0 | |
float | DamageFear | 0.0 | Fear = Fear + DamageFear * Gun_Damage * $Object_Armour / MaxHitPoints |
float | DamageLove | 0.0 | Love = Love + DamageLove * Gun_Damage * $Object_Armour / MaxHitPoints Use negative values to decrease (otherwise, you're looking at "amor serrano" - "highlands love": "the more you beat me, the more I love you"). |
float | DamageAnger | 0.0 | Anger = Anger + DamageAnger * Gun_Damage * $Object_Armour / MaxHitPoints |
float | DamageCuriosity | 0.0 | Curiosity = Curiosity + DamageCuriosity * Gun_Damage * $Object_Armour / MaxHitPoints Use negative values to decrease. |
float | DamageHunger | 0.0 | Hunger = Hunger + DamageHunger * Gun_Damage * $Object_Armour / MaxHitPoints |
float | DamageThirst | 0.0 | Thirst = Thirst + DamageThirst * Gun_Damage * $Object_Armour / MaxHitPoints |
float | DamageFatigue | 0.0 | Fatigue = Fatigue + DamageFatigue * Gun_Damage * $Object_Armour / MaxHitPoints |
float | DamagePain | 0.0 | Pain = Pain + DamagePain * Gun_Damage * $Object_Armour / MaxHitPoints |
float | DamageSolidity | 0.0 | Solidity = Solidity + DamageSolidity * Gun_Damage * $Object_Armour / MaxHitPoints Use negative values to decrease. |
Activities | |||
bool | ActEat | false | |
float | ActEatFear | -10.0 | For example, Anger and Hunger will have a great influence in ActBite, while Love and Fatigue affect it negatively, and Pain will have a great influence on ActOuch. It's likely disabled activities like ActJump have simply had their default values set to 0, so the activity is never triggered... |
float | ActEatLove | -10.0 | |
float | ActEatAnger | -10.0 | |
float | ActEatCuriosity | 0.0 | |
float | ActEatHunger | 3.0 | |
float | ActEatThirst | 0.0 | |
float | ActEatFatigue | -10.0 | |
float | ActEatPain | -10.0 | |
float | ActEatSolidity | 0.0 | |
bool | ActBite | false | |
float | ActBiteFear | 0.0 | |
float | ActBiteLove | -4.0 | |
float | ActBiteAnger | 5.0 | |
float | ActBiteCuriosity | 0.0 | |
float | ActBiteHunger | 5.0 | |
float | ActBiteThirst | 0.0 | |
float | ActBiteFatigue | -3.0 | |
float | ActBitePain | 0.0 | |
float | ActBiteSolidity | 0.0 | |
bool | ActFeint | false | |
float | ActFeintFear | 0.0 | |
float | ActFeintLove | 0.0 | |
float | ActFeintAnger | 2.0 | |
float | ActFeintCuriosity | 0.0 | |
float | ActFeintHunger | 2.0 | |
float | ActFeintThirst | 0.0 | |
float | ActFeintFatigue | -4.0 | |
float | ActFeintPain | 0.0 | |
float | ActFeintSolidity | 0.0 | |
bool | ActRam | false | |
float | ActRamFear | -2.0 | |
float | ActRamLove | -1.0 | |
float | ActRamAnger | 3.0 | |
float | ActRamCuriosity | 0.0 | |
float | ActRamHunger | 0.0 | |
float | ActRamThirst | 0.0 | |
float | ActRamFatigue | 0.0 | |
float | ActRamPain | -0.5 | |
float | ActRamSolidity | -0.2 | |
bool | ActDrink | false | |
float | ActDrinkFear | -5.0 | |
float | ActDrinkLove | 0.0 | |
float | ActDrinkAnger | 0.0 | |
float | ActDrinkCuriosity | 0.0 | |
float | ActDrinkHunger | 0.0 | |
float | ActDrinkThirst | 5.0 | |
float | ActDrinkFatigue | 0.0 | |
float | ActDrinkPain | -5.0 | |
float | ActDrinkSolidity | 0.0 | |
bool | ActJumpBite | false | |
float | ActJumpBiteFear | -5.0 | |
float | ActJumpBiteLove | 0.0 | |
float | ActJumpBiteAnger | 0.0 | |
float | ActJumpBiteCuriosity | 1.0 | |
float | ActJumpBiteHunger | 0.0 | |
float | ActJumpBiteThirst | 5.0 | |
float | ActJumpBiteFatigue | 0.0 | |
float | ActJumpBitePain | -5.0 | |
float | ActJumpBiteSolidity | 0.0 | |
bool | ActShoulderCharge | false | |
float | ActShoulderChargeFear | -2.0 | |
float | ActShoulderChargeLove | -1.0 | |
float | ActShoulderChargeAnger | 3.0 | |
float | ActShoulderChargeCuriosity | 0.0 | |
float | ActShoulderChargeHunger | 0.0 | |
float | ActShoulderChargeThirst | 0.0 | |
float | ActShoulderChargeFatigue | 0.0 | |
float | ActShoulderChargePain | -0.5 | |
float | ActShoulderChargeSolidity | -0.2 | |
bool | ActTailSwipe | false | |
float | ActTailSwipeFear | -2.0 | |
float | ActTailSwipeLove | -1.0 | |
float | ActTailSwipeAnger | 3.0 | |
float | ActTailSwipeCuriosity | 0.0 | |
float | ActTailSwipeHunger | 0.0 | |
float | ActTailSwipeThirst | 0.0 | |
float | ActTailSwipeFatigue | 0.0 | |
float | ActTailSwipePain | -0.5 | |
float | ActTailSwipeSolidity | -0.2 | |
bool | ActOuch | false | |
float | ActOuchFear | 0.0 | |
float | ActOuchLove | 0.0 | |
float | ActOuchAnger | 0.0 | |
float | ActOuchCuriosity | 0.0 | |
float | ActOuchHunger | 0.0 | |
float | ActOuchThirst | 0.0 | |
float | ActOuchFatigue | 0.0 | |
float | ActOuchPain | 5.0 | |
float | ActOuchSolidity | 0.0 | |
bool | ActHelp | false | |
float | ActHelpFear | 1.0 | |
float | ActHelpLove | 0.0 | |
float | ActHelpAnger | 0.0 | |
float | ActHelpCuriosity | 2.0 | |
float | ActHelpHunger | 0.0 | |
float | ActHelpThirst | 0.0 | |
float | ActHelpFatigue | 1.0 | |
float | ActHelpPain | 0.0 | |
float | ActHelpSolidity | 0.0 | |
bool | ActHowl | false | |
float | ActHowlFear | -3.0 | |
float | ActHowlLove | 0.0 | |
float | ActHowlAnger | 0.0 | |
float | ActHowlCuriosity | 1.0 | |
float | ActHowlHunger | 2.0 | |
float | ActHowlThirst | 0.0 | |
float | ActHowlFatigue | -3.0 | |
float | ActHowlPain | 0.0 | |
float | ActHowlSolidity | 0.0 | |
bool | ActSnarl | false | |
float | ActSnarlFear | 0.0 | |
float | ActSnarlLove | 0.0 | |
float | ActSnarlAnger | 3.0 | |
float | ActSnarlCuriosity | 0.0 | |
float | ActSnarlHunger | -5.0 | |
float | ActSnarlThirst | 0.0 | |
float | ActSnarlFatigue | -2.0 | |
float | ActSnarlPain | 0.0 | |
float | ActSnarlSolidity | 0.0 | |
bool | ActCroon | false | |
float | ActCroonFear | -3.0 | |
float | ActCroonLove | 0.0 | |
float | ActCroonAnger | -2.0 | |
float | ActCroonCuriosity | 0.0 | |
float | ActCroonHunger | 5.0 | |
float | ActCroonThirst | 0.0 | |
float | ActCroonFatigue | -8.0 | |
float | ActCroonPain | 0.0 | |
float | ActCroonSolidity | 0.0 | |
bool | ActDie | false | |
float | ActDieFear | 0.0 | |
float | ActDieLove | 0.0 | |
float | ActDieAnger | 0.0 | |
float | ActDieCuriosity | 0.0 | |
float | ActDieHunger | 0.0 | |
float | ActDieThirst | 0.0 | |
float | ActDieFatigue | 1.0 | |
float | ActDiePain | 0.0 | |
float | ActDieSolidity | 0.0 | |
bool | ActMoveToward | false | |
float | ActMoveTowardFear | -3.0 | |
float | ActMoveTowardLove | 0.0 | |
float | ActMoveTowardAnger | 0.0 | |
float | ActMoveTowardCuriosity | 4.0 | |
float | ActMoveTowardHunger | 2.0 | |
float | ActMoveTowardThirst | 2.0 | |
float | ActMoveTowardFatigue | -3.0 | |
float | ActMoveTowardPain | -4.0 | |
float | ActMoveTowardSolidity | 0.0 | |
bool | ActJump | false | |
float | ActJumpFear | 1.0 | |
float | ActJumpLove | 1.0 | |
float | ActJumpAnger | 1.0 | |
float | ActJumpCuriosity | 0.0 | |
float | ActJumpHunger | 1.0 | |
float | ActJumpThirst | 0.0 | |
float | ActJumpFatigue | 1.0 | |
float | ActJumpPain | 1.0 | |
float | ActJumpSolidity | 1.0 | |
bool | ActMoveAway | false | |
float | ActMoveAwayFear | 4.0 | |
float | ActMoveAwayLove | 0.0 | |
float | ActMoveAwayAnger | -2.0 | |
float | ActMoveAwayCuriosity | 0.0 | |
float | ActMoveAwayHunger | -1.0 | |
float | ActMoveAwayThirst | 0.0 | |
float | ActMoveAwayFatigue | 2.0 | |
float | ActMoveAwayPain | -1.0 | |
float | ActMoveAwaySolidity | 0.0 | |
bool | ActDontTouch | false | |
float | ActDontTouchFear | 0.75 | |
float | ActDontTouchLove | 0.0 | |
float | ActDontTouchAnger | 0.0 | |
float | ActDontTouchCuriosity | 0.0 | |
float | ActDontTouchHunger | 0.0 | |
float | ActDontTouchThirst | 0.0 | |
float | ActDontTouchFatigue | 0.0 | |
float | ActDontTouchPain | 0.0 | |
float | ActDontTouchSolidity | 0.75 | |
bool | ActWander | false | |
float | ActWanderFear | 0.0 | |
float | ActWanderLove | 0.0 | |
float | ActWanderAnger | 0.0 | |
float | ActWanderCuriosity | 0.005 | |
float | ActWanderHunger | 0.005 | |
float | ActWanderThirst | 0.005 | |
float | ActWanderFatigue | 0.0 | |
float | ActWanderPain | 0.0 | |
float | ActWanderSolidity | 0.0 | |
bool | ActStalk | false | |
float | ActStalkFear | -3.0 | |
float | ActStalkLove | -1.0 | |
float | ActStalkAnger | 2.5 | |
float | ActStalkCuriosity | 0.0 | |
float | ActStalkHunger | 6.0 | |
float | ActStalkThirst | 0.0 | |
float | ActStalkFatigue | -4.0 | |
float | ActStalkPain | -4.0 | |
float | ActStalkSolidity | 0.0 | |
bool | ActCircle | false | |
float | ActCircleFear | -1.0 | |
float | ActCircleLove | 0.0 | |
float | ActCircleAnger | 1.0 | |
float | ActCircleCuriosity | 1.0 | |
float | ActCircleHunger | 1.0 | |
float | ActCircleThirst | 0.0 | |
float | ActCircleFatigue | -2.0 | |
float | ActCirclePain | -3.0 | |
float | ActCircleSolidity | 0.0 | |
bool | ActStayNear | false | |
float | ActStayNearFear | 0.0 | |
float | ActStayNearLove | 4.0 | |
float | ActStayNearAnger | 0.0 | |
float | ActStayNearCuriosity | 0.0 | |
float | ActStayNearHunger | 0.0 | |
float | ActStayNearThirst | 0.0 | |
float | ActStayNearFatigue | 0.0 | |
float | ActStayNearPain | 0.0 | |
float | ActStayNearSolidity | 0.0 | |
bool | ActStayAway | false | |
float | ActStayAwayFear | 4.0 | |
float | ActStayAwayLove | 0.0 | |
float | ActStayAwayAnger | 0.0 | |
float | ActStayAwayCuriosity | 0.0 | |
float | ActStayAwayHunger | 0.0 | |
float | ActStayAwayThirst | 0.0 | |
float | ActStayAwayFatigue | 0.0 | |
float | ActStayAwayPain | 0.0 | |
float | ActStayAwaySolidity | 0.0 | |
bool | ActFlee | false | |
float | ActFleeFear | 8.0 | |
float | ActFleeLove | -8.0 | |
float | ActFleeAnger | -8.0 | |
float | ActFleeCuriosity | 0.0 | |
float | ActFleeHunger | 0.0 | |
float | ActFleeThirst | 0.0 | |
float | ActFleeFatigue | 8.0 | |
float | ActFleePain | 8.0 | |
float | ActFleeSolidity | 0.0 | |
bool | ActPursue | false | |
float | ActPursueFear | -3.0 | |
float | ActPursueLove | -1.0 | |
float | ActPursueAnger | 4.5 | |
float | ActPursueCuriosity | 0.0 | |
float | ActPursueHunger | 4.0 | |
float | ActPursueThirst | 0.0 | |
float | ActPursueFatigue | -4.0 | |
float | ActPursuePain | -4.0 | |
float | ActPursueSolidity | 0.0 | |
bool | ActJumpBack | false | |
float | ActJumpBackFear | 4.0 | |
float | ActJumpBackLove | -3.0 | |
float | ActJumpBackAnger | 2.0 | |
float | ActJumpBackCuriosity | 0.0 | |
float | ActJumpBackHunger | 2.0 | |
float | ActJumpBackThirst | 0.0 | |
float | ActJumpBackFatigue | 4.0 | |
float | ActJumpBackPain | 4.0 | |
float | ActJumpBackSolidity | 0.0 | |
bool | ActGetOut | false | |
float | ActGetOutFear | 4.0 | |
float | ActGetOutLove | -1.0 | |
float | ActGetOutAnger | 2.0 | |
float | ActGetOutCuriosity | 0.0 | |
float | ActGetOutHunger | 2.0 | |
float | ActGetOutThirst | 0.0 | |
float | ActGetOutFatigue | 0.0 | |
float | ActGetOutPain | 4.0 | |
float | ActGetOutSolidity | 0.0 | |
bool | ActApproach | false | |
float | ActApproachFear | -1.0 | |
float | ActApproachLove | -1.0 | |
float | ActApproachAnger | 4.5 | |
float | ActApproachCuriosity | 0.0 | |
float | ActApproachHunger | 4.0 | |
float | ActApproachThirst | 0.0 | |
float | ActApproachFatigue | -4.0 | |
float | ActApproachPain | -4.0 | |
float | ActApproachSolidity | 0.0 | |
bool | ActDash | false | |
float | ActDashFear | 1.5 | |
float | ActDashLove | 0.0 | |
float | ActDashAnger | 1.5 | |
float | ActDashCuriosity | 0.0 | |
float | ActDashHunger | 1.5 | |
float | ActDashThirst | 0.0 | |
float | ActDashFatigue | 0.0 | |
float | ActDashPain | 4.5 | |
float | ActDashSolidity | 0.0 | |
bool | ActMoveBy | false | |
float | ActMoveByFear | -2.0 | |
float | ActMoveByLove | -1.0 | |
float | ActMoveByAnger | 3.0 | |
float | ActMoveByCuriosity | 0.0 | |
float | ActMoveByHunger | 4.0 | |
float | ActMoveByThirst | 0.0 | |
float | ActMoveByFatigue | -3.0 | |
float | ActMoveByPain | -3.0 | |
float | ActMoveBySolidity | 0.0 | |
bool | ActLookAt | false | |
float | ActLookAtFear | 0.0 | |
float | ActLookAtLove | 0.0 | |
float | ActLookAtAnger | 0.0 | |
float | ActLookAtCuriosity | 2.0 | |
float | ActLookAtHunger | 0.0 | |
float | ActLookAtThirst | 0.0 | |
float | ActLookAtFatigue | 0.0 | |
float | ActLookAtPain | 0.0 | |
float | ActLookAtSolidity | 0.0 | |
bool | ActTaste | false | |
float | ActTasteFear | 0.0 | |
float | ActTasteLove | 0.0 | |
float | ActTasteAnger | 0.0 | |
float | ActTasteCuriosity | 2.0 | |
float | ActTasteHunger | 0.0 | |
float | ActTasteThirst | 0.0 | |
float | ActTasteFatigue | 0.0 | |
float | ActTastePain | 0.0 | |
float | ActTasteSolidity | 0.0 | |
bool | ActSniffTarget | false | |
float | ActSniffTargetFear | 0.0 | |
float | ActSniffTargetLove | 0.0 | |
float | ActSniffTargetAnger | 0.0 | |
float | ActSniffTargetCuriosity | 2.0 | |
float | ActSniffTargetHunger | 0.0 | |
float | ActSniffTargetThirst | 0.0 | |
float | ActSniffTargetFatigue | 0.0 | |
float | ActSniffTargetPain | 0.0 | |
float | ActSniffTargetSolidity | 0.0 | |
bool | ActCockHead | false | |
float | ActCockHeadFear | 0.0 | |
float | ActCockHeadLove | 0.0 | |
float | ActCockHeadAnger | 0.0 | |
float | ActCockHeadCuriosity | 2.0 | |
float | ActCockHeadHunger | 0.0 | |
float | ActCockHeadThirst | 0.0 | |
float | ActCockHeadFatigue | 0.0 | |
float | ActCockHeadPain | 0.0 | |
float | ActCockHeadSolidity | 0.0 | |
bool | ActRearBack | false | |
float | ActRearBackFear | 0.0 | |
float | ActRearBackLove | 0.0 | |
float | ActRearBackAnger | -2.0 | |
float | ActRearBackCuriosity | 0.0 | |
float | ActRearBackHunger | 0.0 | |
float | ActRearBackThirst | 0.0 | |
float | ActRearBackFatigue | 0.0 | |
float | ActRearBackPain | 5.0 | |
float | ActRearBackSolidity | 0.0 | |
bool | ActBackAway | false | |
float | ActBackAwayFear | 0.0 | |
float | ActBackAwayLove | 0.0 | |
float | ActBackAwayAnger | 0.0 | |
float | ActBackAwayCuriosity | 2.0 | |
float | ActBackAwayHunger | 0.0 | |
float | ActBackAwayThirst | 0.0 | |
float | ActBackAwayFatigue | 0.0 | |
float | ActBackAwayPain | 0.0 | |
float | ActBackAwaySolidity | 0.0 | |
bool | ActCower | false | |
float | ActCowerFear | 3.0 | |
float | ActCowerLove | 0.0 | |
float | ActCowerAnger | -2.0 | |
float | ActCowerCuriosity | 0.0 | |
float | ActCowerHunger | 0.0 | |
float | ActCowerThirst | 0.0 | |
float | ActCowerFatigue | 4.0 | |
float | ActCowerPain | 0.0 | |
float | ActCowerSolidity | 0.0 | |
bool | ActGlare | false | |
float | ActGlareFear | 0.0 | |
float | ActGlareLove | -2.0 | |
float | ActGlareAnger | 2.0 | |
float | ActGlareCuriosity | 2.0 | |
float | ActGlareHunger | 0.0 | |
float | ActGlareThirst | 0.0 | |
float | ActGlareFatigue | -2.0 | |
float | ActGlarePain | -10.0 | |
float | ActGlareSolidity | 0.0 | |
bool | ActSniff | false | |
float | ActSniffFear | 0.0 | |
float | ActSniffLove | 0.0 | |
float | ActSniffAnger | 0.0 | |
float | ActSniffCuriosity | 2.0 | |
float | ActSniffHunger | 0.0 | |
float | ActSniffThirst | 0.0 | |
float | ActSniffFatigue | 0.0 | |
float | ActSniffPain | 0.0 | |
float | ActSniffSolidity | 0.0 | |
bool | ActLookAround | false | |
float | ActLookAroundFear | 0.1 | |
float | ActLookAroundLove | 0.0 | |
float | ActLookAroundAnger | 0.0 | |
float | ActLookAroundCuriosity | 0.1 | |
float | ActLookAroundHunger | 0.0 | |
float | ActLookAroundThirst | 0.0 | |
float | ActLookAroundFatigue | 0.0 | |
float | ActLookAroundPain | 0.0 | |
float | ActLookAroundSolidity | 0.0 | |
bool | ActNothing | false | |
float | ActNothingFear | 1.0 | |
float | ActNothingLove | 1.0 | |
float | ActNothingAnger | 1.0 | |
float | ActNothingCuriosity | 1.0 | |
float | ActNothingHunger | 1.0 | |
float | ActNothingThirst | 1.0 | |
float | ActNothingFatigue | 1.0 | |
float | ActNothingPain | 1.0 | |
float | ActNothingSolidity | 1.0 | |
bool | ActTestHeadCock | false | |
float | ActTestHeadCockFear | 0.5 | |
float | ActTestHeadCockLove | 0.5 | |
float | ActTestHeadCockAnger | 0.5 | |
float | ActTestHeadCockCuriosity | 0.5 | |
float | ActTestHeadCockHunger | 0.5 | |
float | ActTestHeadCockThirst | 0.5 | |
float | ActTestHeadCockFatigue | 0.5 | |
float | ActTestHeadCockPain | 0.5 | |
float | ActTestHeadCockSolidity | 0.5 | |
bool | ActTestHeadOrient | false | |
float | ActTestHeadOrientFear | 0.5 | |
float | ActTestHeadOrientLove | 0.5 | |
float | ActTestHeadOrientAnger | 0.5 | |
float | ActTestHeadOrientCuriosity | 0.5 | |
float | ActTestHeadOrientHunger | 0.5 | |
float | ActTestHeadOrientThirst | 0.5 | |
float | ActTestHeadOrientFatigue | 0.5 | |
float | ActTestHeadOrientPain | 0.5 | |
float | ActTestHeadOrientSolidity | 0.5 | |
bool | ActTestWagTail | false | |
float | ActTestWagTailFear | 0.5 | |
float | ActTestWagTailLove | 0.5 | |
float | ActTestWagTailAnger | 0.5 | |
float | ActTestWagTailCuriosity | 0.5 | |
float | ActTestWagTailHunger | 0.5 | |
float | ActTestWagTailThirst | 0.5 | |
float | ActTestWagTailFatigue | 0.5 | |
float | ActTestWagTailPain | 0.5 | |
float | ActTestWagTailSolidity | 0.5 | |
bool | ActTestHeadPosition | false | |
float | ActTestHeadPositionFear | 0.5 | |
float | ActTestHeadPositionLove | 0.5 | |
float | ActTestHeadPositionAnger | 0.5 | |
float | ActTestHeadPositionCuriosity | 0.5 | |
float | ActTestHeadPositionHunger | 0.5 | |
float | ActTestHeadPositionThirst | 0.5 | |
float | ActTestHeadPositionFatigue | 0.5 | |
float | ActTestHeadPositionPain | 0.5 | |
float | ActTestHeadPositionSolidity | 0.5 | |
bool | ActTestMouth | false | |
float | ActTestMouthFear | 0.5 | |
float | ActTestMouthLove | 0.5 | |
float | ActTestMouthAnger | 0.5 | |
float | ActTestMouthCuriosity | 0.5 | |
float | ActTestMouthHunger | 0.5 | |
float | ActTestMouthThirst | 0.5 | |
float | ActTestMouthFatigue | 0.5 | |
float | ActTestMouthPain | 0.5 | |
float | ActTestMouthSolidity | 0.5 | |
string | StayNearTarget | must specify | |
float | StayNearMax | must specify | |
float | StayNearOK | must specify | |
string | StayAwayTarget | must specify | |
float | StayAwayMin | must specify | |
float | StayAwayOK | must specify | |
float | BiteTargetDistance | must specify | |
float | FeintTargetDistance | must specify |
Type | Name | Default | Description |
---|---|---|---|
float | ResolutionRatio | 1.0 | |
string | SoundMaterial | none |
Type | Name | Default | Description |
---|---|---|---|
string | MFlashObject0, MFlashObject1, ... MFlashObject9 | must specify | |
string | MFlashOrg | must specify | |
bool | RandomRotate | false? | |
float | MFlashDuration | none | |
bool | AutoFire | false? | |
string | Sample | must specify | |
string | RingSample | must specify | |
string | EmptyClipSample | must specify | |
string | SoundMaterial | must specify | |
string | RecoilOrg | must specify | |
float | RecoilForce | must specify | |
string | Barrel | must specify | |
float | Push | must specify | |
float | Kick | must specify | |
float | Damage | must specify | |
float | DamageMultiplier | must specify | |
float | TranqDamage | must specify | |
float | Range | must specify | |
float | WakeUp | must specify | |
float | ROF | must specify | |
int | MaxAmmo | must specify | |
int | Ammo | must specify | |
bool | AltAmmoCount | false |
Other possible values: Kick
Example:
group Pak47drumagazine-00 = { string MFlashOrg = "$FAKDFlash-00" string MFlashObject0 = "FMFrifleMF03-00" string MFlashObject1 = "FMFrifleMF04-00" string MFlashObject2 = "FMFrifleMF05-00" bool RandomRotate = true float MFlashDuration = 0.000000 bool AutoFire = true string Sample = "GUN - AK47 SHOT" string RingSample = "GUN - AK47 REL" string EmptyClipSample = "GUN - AUTOMATIC DRYFIRE 01" string SoundMaterial = "Rifle" float WakeUp = 175.000000 float RecoilForce = 55.000000 float ROF = 10.000000 float Push = 230.000000 float Damage = 15.000000 float DamageMultiplier = 1.000000 float Range = 200.000000 int MaxAmmo = 100 bool AltAmmoCount = true string Class = "CGun" bool Tangible = true bool Moveable = true float Density = 0.080000 string Type = "Compound" string Model00 = "$Fak47drum00-00" string Model01 = "$Fak47drum01-00" string Detail1 = "$Pak47drumagazineDRC-00" float A01 = 30.000000 string DetailShadow = "$Pak47drumagazineShdw-00" string Barrel = "$FAKDbarrel-00" string RecoilOrg = "$FAKDrecoil-00" float Diffuse = 1.200000 float Specular = 1.200000 float SpecularAngle = 37.000000 }
Type | Name | Default | Description |
---|---|---|---|
string | A00, A01, ... | must specify | |
int | SpangCount | unknown | |
float | MinScale | unknown | |
float | MaxScale | unknown | |
float | Decay | unknown | |
float | ScaleLimit | unknown |
At some point, it was used to make the "hit spangle" effects when a gun's bullet hit different materials, in a way somewhat similar to the muzzle flashes, but apparently, with the addition of particles, it was dropped.
Example:
group FMFHitSpangDefault00-00 = { string Class = "CHitSpang" bool Shadow = false int Normals = 2 int SpangCount = 8 float MinScale = 0.100000 float MaxScale = 0.100000 float Decay = -300.000000 float ScaleLimit = 0.400000 } group FMFHitSpangChips00-00 = { string Class = "CHitSpang" bool Shadow = false int Normals = 2 int SpangCount = 8 float MinScale = 0.100000 float MaxScale = 0.100000 float Decay = -250.000000 float ScaleLimit = 0.700000 string A00 = "Terrain - Gravel" string A01 = "Terrain - Wood Loose" string A02 = "Terrain - Dirt" string A03 = "Log 1" string A04 = "Log 2" }
Type | Name | Default | Description |
---|---|---|---|
Misc | |||
bool | AI | true | |
bool | Climb | false | |
float | AIMass | unknown | |
int | AIType | unknown | 0 = 1 = 2 = 3 = 4 = 5 = 6 = 7 = |
float | Damage | 1.0 | |
float | Armour | 1.0 | HitPoints = HitPoints - $Object_Armour * Weapon_Damage |
float | Height | unknown | |
bool | Planted | false | |
string | Mesh | none | |
string | Physics | none | |
string | SoundMaterial | none | |
bool | Merge | true | |
bool | Split | true | |
bool | Wrap | true | |
Rendering | |||
int | AlphaChannel | none | |
bool | AlwaysFace | false | |
bool | Bumpmaps | unknown | |
float | Bumpiness | unknown | How bumpy are unspecified bumpmaps (normal maps). |
bool | Curved | false | |
float | Diffuse | 1.0 | WARNING: If this value is changed, Trespasser won't load the level unless the PID is updated. This is because the Diffuse value is used in the hash function that converts texture names in the GRF with texture IDs in the PID. |
float | Emissive | 0.0 | |
bool | MipMap | true | |
int | Normals | unknown | 0 = 1 = 2 = 3 = |
bool | Reflect | unknown | |
bool | Refract | unknown | |
float | RefractIndex | unknown | |
float | Specular | 0.0 | |
float | SpecularAngle | unknown | |
bool | Shadow | true | |
bool | Unlit | false | |
bool | Visible | true | |
Physics | |||
bool | Moveable | false | |
bool | Tangible | false | |
bool | Floats | false | |
bool | Frozen | false | |
float | Density | 0.1 | |
float | Elasticity | 0.2 | |
float | Friction | 5.0 | |
float | Mass | unknown | |
string | Type | "Box" | Arrangement of pysics boxes:
"Box" = "Compound" = |
string | none | Note: I believe that if geometry type2 objects are used as subobjects, the name must begin with '$', and the values cannot contain "Visible=false" (having the name start with '$' will make it invisible). |
|
Animated textures For a scrolling texture, set DeltaX and Delta. For animated texture, specify some Anim00s. When the current animation Frame changes, all textures in the object are replaced with the new Anim texture. Note that a model retains it's original textures until the first frame change (which occurs after Interval seconds). |
|||
float | DeltaX | 0.0 | |
float | DeltaY | 0.0 | |
string | 0 | ||
int | Frame | 0 | |
int | FreezeFrame | -1 | |
float | Interval | unknown | |
int | TrackTwo | 0 | |
Visibility culling and image caching: | |||
float | Culling | unknown | |
float | ShadowCulling | unknown | |
bool | CacheIntersecting | false | |
float | CacheMul | 1.0 | |
bool | NoCache | false | |
bool | NoCacheAlone | false | |
bool | HardwareOnly | false | |
bool | SoftwareOnly | false | |
bool | NoLowRes | false | |
bool | TrrMovingShadows | true | |
string | DetailShadow | none | |
int | Priority | unknown | |
string | Detail1 | none | |
float | A01 | none | |
string | Detail2 | none | |
float | A02 | none | |
bool | X | false | |
bool | Y | false | |
bool | Z | true |
Looking at the retail:
While in the beta:
Anim00 = 22
Anim01 = 16
Ratio = 0.500000
RotationRatio = 0.500000
Some analysis seems to imply that:
Example:
group $JRaptorB05 = { int A00 = 24 int A01 = 25 } group $JRaptorB26 = { int Anim00 = 7 int Anim01 = 6 float Ratio = 0.500000 float RotationRatio = 0.500000 int A00 = 0 int A01 = 1 int A02 = 2 int A03 = 15 }
Type | Name | Default | Description |
---|---|---|---|
int | A00, A01, ... | Not specified | |
int | Anim00 | Not specified | |
int | Anim01 | Not specified | |
float | Ratio | 0.5 ? | |
float | Rotationratio | 0.5 ? |
Example:
group DLight_JungleRoad = { string Class = "CLightDirectional" bool Visible = false }
Type | Name | Default | Description |
---|---|---|---|
float | Intensity | 0.99 |
Type | Name | Default | Description |
---|---|---|---|
string | MasterObject | none | |
string | SlaveObject | none | Slave object. If not specified, Master object is attached to the world. (Named object must exist.) |
bool | Breakable | false | |
float | BreakStrength | 0.0 | |
bool | false | ||
bool | false | ||
int | AngleMin | unknown | |
int | AngleMax | unknown | |
float | RestoreStrength | unknown | |
float | Drive | 0.0 | |
float | Friction | 0.0 | |
bool | HandPickup | false | |
bool | ShoulderHold | false | |
int | Substitute | none |
Type | Name | Default | Description |
---|---|---|---|
int | Gender | unknown | |
float | Radius | 0.0 |
Example:
group FMFrifleMF03-00 = { string Class = "CMuzzleFlash" bool Unlit = true bool Shadow = false }
Type | Name | Default | Description |
---|---|---|---|
string | must specify | ||
int | must specify | ||
bool | false ? | ||
bool | false ? | ||
bool | unknown | ||
bool | false ? | ||
group | must specify | ||
float | Threshold | 0.0/1.0 ? | |
float | Number | unknown | |
float | Velocity | unknown | |
float | Lifespan | unknown | |
float | Size | unknown | |
float | Length | unknown | |
float | Gravity | unknown | |
float | StuckGravity | unknown | |
float | Spread | unknown |
Example:
group EffectDefault = { string Class = "CParticles" int R = 188 int G = 188 int B = 188 bool Solid = true group Min = { float Threshold = 0.500000 float Number = 15.000000 float Velocity = 0.900000 float Lifespan = 0.300000 float Size = 0.003000 float Length = 0.050000 float Gravity = 0.050000 float StuckGravity = 0.000000 float Spread = 20.000000 } group Max = { float Threshold = 1.000000 float Number = 30.000000 float Velocity = 1.250000 float Lifespan = 0.500000 float Size = 0.007000 float Length = 0.050000 float Gravity = 0.050000 float StuckGravity = 0.000000 float Spread = 35.000000 } string A00 = "Default" }
Retail levels have "GravityStuck", which is a typo. Other possible values: Log, Dust.
Example:
group MySky-00 = { string Class = "CSky" bool MipMap = false // MUST specify false, so sky texture is always loaded int SkyFlatColour = 0 // Always 0 in original levels }
Type | Name | Default | Description |
---|---|---|---|
int | SkyFlatColour | unknown |
Type | Name | Default | Description |
---|---|---|---|
int | Height | must specify | |
string | SoundMaterial | none | |
float | Friction | unknown |
Example:
group MyTrnobj-00 = { string Class = "CTerrainObj" int Height = 2 string SoundMaterial = "Terrain - Cement" }
Example:
group WaterDisturb1-00 = { string Class = "CWaterDisturbance" float Interval = 1.0 // Either 1,2,3 in original levels float Strength = 0.1 // Either 0.1,0.2 in original levels }
Type | Name | Default | Description |
---|---|---|---|
float | Strength | unknown | |
float | Interval | unknown | |
float | Radius | unknown |
Example:
group Anne = { string Class = "Player" int PVA = -2 int NumJoints = 20 int NumDoubleJoints = 2 int Normals = 2 int AnimSubMaterial = 8 string Anim00 = "Anne2_Health_100t2.bmp" string Anim01 = "Anne2_Health_90t2.bmp" string Anim02 = "Anne2_Health_80t2.bmp" string Anim03 = "Anne2_Health_70t2.bmp" string Anim04 = "Anne2_Health_60t2.bmp" string Anim05 = "Anne2_Health_50t2.bmp" string Anim06 = "Anne2_Health_40t2.bmp" string Anim07 = "Anne2_Health_30t2.bmp" string Anim08 = "Anne2_Health_20t2.bmp" string Anim09 = "Anne2_Health_10t2.bmp" string Anim10 = "Anne2_Health_deadt2.bmp" string A00 = "$Anne_Gun1-00" string A01 = "$Anne_Bat-00" string A02 = "$Anne_Gun2-00" string A03 = "$Anne_Barrett-00" string A04 = "$Anne_TranqPistol-00" string A05 = "$Anne_Benelli-00" string A06 = "$Anne_ButtonFinger-00" string A07 = "$Anne_Natural-00" string A08 = "$Anne_Rock-00" string A09 = "$Anne_Bird-00" string A10 = "$Anne_HamRev-00" string A11 = "$Anne_KeyCard-00" string A12 = "$Anne_HuntRifle-00" bool Merge = false bool Split = false bool Wrap = false bool Shadow = false string Hand = "$AnneHand" string Foot = "$AnneFoot" string Body = "$AnneBody" }
Doesn't need to be called "Anne", Shadow can be set to true and the substitute meshes (A00 to A12) need to exist in order to pick up objects without the level crashing.
Example:
group VocalAnneJump = { string Class = "Player Settings" group JumpUp = { string A00 = "ANNEJUMP" } } group VocalAnneFall = { string Class = "Player Settings" group Fall = { group A00 = { float Damage = 0.650000 string A00 = "ANNEFALLDAMAGE01" string A01 = "ANNEFALLDAMAGE02" string A02 = "ANNEFALLDAMAGE03" string A03 = "ANNEFALLDAMAGE04" string A04 = "ANNEFALLDAMAGE05" } group A01 = { float Damage = 0.000000 string A00 = "ANNEFALLDEATH01" string A01 = "ANNEFALLDEATH02" string A02 = "ANNEFALLDEATH03" string A03 = "ANNEFALLDEATH04" string A04 = "ANNEFALLDEATH05" } } } group VocalAnneAmmoPickup = { string Class = "Player Settings" group AmmoPickup = { group AmmoAlmostEmpty = { string A00 = "ANNEAMMOAUTO1" string A01 = "ANNEAMMOAUTO2" string A02 = "ANNEAMMOAUTO3" } group AmmoHalfFull = { string A00 = "ANNEAMMOAUTO4" string A01 = "ANNEAMMOAUTO5" string A02 = "ANNEAMMOAUTO6" } group AmmoFull = { string A00 = "ANNEAMMOAUTO7" } group AmmoReallyFull = { string A00 = "ANNEAMMOAUTO8" string A01 = "ANNEAMMOAUTO9" } group A00 = { string A00 = "ANNEAMMOPHRASE2" string A01 = "ANNEAMMOPHRASE1" } group A01 = { string A00 = "ANNEAMMOPHRASE3" string A01 = "ANNEAMMOPHRASE4" } group A02 = { string A00 = "ANNEAMMOPHRASE5" string A01 = "ANNEAMMOPHRASE6" } group A03 = { string A00 = "ANNEAMMOPHRASE7" string A01 = "ANNEAMMOPHRASE8" } group A04 = { string A00 = "ANNEAMMOPHRASE9" string A01 = "ANNEAMMOPHRASE10" } group A05 = { string A00 = "ANNEAMMOPHRASE11" string A01 = "ANNEAMMOPHRASE12" } group A06 = { string A00 = "ANNEAMMOPHRASE13" string A01 = "ANNEAMMOPHRASE14" } group A07 = { string A00 = "ANNEAMMOPHRASE15" string A01 = "ANNEAMMOPHRASE16" } group A08 = { string A00 = "ANNEAMMOPHRASE18" string A01 = "ANNEAMMOPHRASE19" } group A09 = { string A00 = "ANNEAMMOPHRASE20" string A01 = "ANNEAMMOPHRASE21" } group A10 = { string A00 = "ANNEAMMOPHRASE22" string A01 = "ANNEAMMOPHRASE23" } group A11 = { string A00 = "ANNEAMMOPHRASE24" string A01 = "ANNEAMMOPHRASE25" } group A12 = { string A00 = "ANNEAMMOPHRASE24" string A01 = "ANNEAMMOPHRASE25" } group A13 = { string A00 = "ANNEAMMOPHRASE24" string A01 = "ANNEAMMOPHRASE25" } group A14 = { string A00 = "ANNEAMMOPHRASE9" string A01 = "ANNEAMMOPHRASE10" } group A15 = { string A00 = "ANNEAMMOPHRASE26" string A01 = "ANNEAMMOPHRASE27" } group A16 = { string A00 = "ANNEAMMOPHRASE26" string A01 = "ANNEAMMOPHRASE27" } group A17 = { string A00 = "ANNEAMMOPHRASE26" string A01 = "ANNEAMMOPHRASE27" } group A20 = { string A00 = "ANNEAMMOPHRASE28" string A01 = "ANNEAMMOPHRASE29" } group A30 = { string A00 = "ANNEAMMOPHRASE30" string A01 = "ANNEAMMOPHRASE31" } } } group VocalAnneAmmoCount = { string Class = "Player Settings" group Ammo = { group A00 = { string A00 = "ANNEAMMOPHRASE2" string A01 = "ANNEAMMOPHRASE1" } group A01 = { string A00 = "ANNEAMMONUMERAL1A" string A01 = "ANNEAMMONUMERAL1B" string A02 = "ANNEAMMONUMERAL1C" } group A02 = { string A00 = "ANNEAMMONUMERAL2A" string A01 = "ANNEAMMONUMERAL2B" } group A03 = { string A00 = "ANNEAMMONUMERAL3A" string A01 = "ANNEAMMONUMERAL3B" string A02 = "ANNEAMMONUMERAL3C" } group A04 = { string A00 = "ANNEAMMONUMERAL4A" string A01 = "ANNEAMMONUMERAL4B" } group A05 = { string A00 = "ANNEAMMONUMERAL5A" string A01 = "ANNEAMMONUMERAL5B" } group A06 = { string A00 = "ANNEAMMONUMERAL6A" string A01 = "ANNEAMMONUMERAL6C" } group A07 = { string A00 = "ANNEAMMONUMERAL7A" string A01 = "ANNEAMMONUMERAL7B" string A02 = "ANNEAMMONUMERAL7C" } group A08 = { string A00 = "ANNEAMMONUMERAL8A" string A01 = "ANNEAMMONUMERAL8B" } group A09 = { string A00 = "ANNEAMMONUMERAL9B" string A01 = "ANNEAMMONUMERAL9C" } group A10 = { string A00 = "ANNEAMMONUMERAL10A" string A01 = "ANNEAMMONUMERAL10B" } group A12 = { string A00 = "ANNEAMMONUMERAL12A" string A01 = "ANNEAMMONUMERAL12B" } group A13 = { string A00 = "ANNEAMMONUMERAL13A" string A01 = "ANNEAMMONUMERAL13B" string A02 = "ANNEAMMONUMERAL13C" } group A15 = { string A00 = "ANNEAMMONUMERAL15A" string A01 = "ANNEAMMONUMERAL15B" string A02 = "ANNEAMMONUMERAL15C" } group A17 = { string A00 = "ANNEAMMONUMERAL17A" string A01 = "ANNEAMMONUMERAL17B" string A02 = "ANNEAMMONUMERAL17C" } group A20 = { string A00 = "ANNEAMMONUMERAL20B" string A01 = "ANNEAMMONUMERAL20C" } group A30 = { string A00 = "ANNEAMMONUMERAL30A" string A01 = "ANNEAMMONUMERAL30B" string A02 = "ANNEAMMONUMERAL30C" } group AmmoAlmostEmpty = { string A00 = "ANNEAMMOAUTO1" string A01 = "ANNEAMMOAUTO2" string A02 = "ANNEAMMOAUTO3" } group AmmoHalfFull = { string A00 = "ANNEAMMOAUTO4" string A01 = "ANNEAMMOAUTO5" string A02 = "ANNEAMMOAUTO6" } } } group VocalAnneOuch = { string Class = "Player Settings" group Ouch = { group A00 = { float Damage = 0.500000 string A00 = "ANNELIGHTHIT02" string A01 = "ANNELIGHTHIT06" string A02 = "ANNELIGHTHIT07" string A03 = "ANNELIGHTHIT09" string A04 = "ANNEEFFORT3" } group A01 = { string A00 = "ANNELIGHTHIT03" string A01 = "ANNEEFFORT8" string A02 = "ANNELIGHTHIT08" string A03 = "ANNEEFFORT1" string A04 = "ANNEEFFORT7" } group A02 = { float Damage = 0.000000 string A00 = "ANNELIGHTHIT05" string A01 = "ANNEEFFORT2" } } }
Type | Name | Default | Description |
---|---|---|---|
float | Alpha | unknown | |
int | AlphaChannel | unknown | |
int | R | unknown | |
int | G | unknown | |
int | B | unknown |
Example:
group TeleportA = { string Class = "Teleport" }
Type | Name | Default | Description |
---|---|---|---|
string | File | must specify | |
bool | MipMap | must be "false" |
Example:
group TrnPlacement-00 = { string Class = "TerrainPlacement" string File = "be" bool MipMap = false }
Example:
group Trig_BEGlobalClut-00 = { group DefaultClutStartColor = { int B = 223 int G = 237 int R = 251 } group DefaultClutStopColor = { int B = 17 int G = 20 int R = 24 } }
Other possible values: DefaultClutReflectionColor, ClutStartColor, ClutStopColor, ClutReflectionColor
Triggers perform one or more actions when certain conditions are met. The base class CBooleanTrigger evaluates a FireExpression monitoring the state of trigger instances. All other trigger classes inherit CBooleanTrigger's values, and have additional contitions to determine when the trigger fires.
Class | What makes the trigger fire: |
CBooleanTrigger |
When boolean expression of other triggers' states is true When objects collide When Anne or a dino dies When (Anne/object/dino) (enters/is in/exits) a location Usage unknown (not used in original levels) When an object is picked up, used, or dropped When a sequence of events occurs When the level starts At certain intervals Not really a trigger, just stores a boolean variable |
Example:
These values are common to all trigger classes.group InsideHouseTigger = { string Class = "CLocationTrigger" bool PlayerEnterTrigger = true int ActionType = 34 string OverlayText = "You have entered the house" }
Type | Name | Default | Description | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
int | ActionType | none | |||||||||||||||||
int | BoundVol | 0 | 0 = 1 = |
||||||||||||||||
int | FireCount | -1 | |||||||||||||||||
float | FireDelay | 0.0 | |||||||||||||||||
string | FireExpression | true | By default the expression checks if a trigger has ever fired, and putting "@" before the trigger name means "check the current state", or "Evaluate Now", but not all triggers have that function. There is no operator precedence so parentheses must be used. eg. If Place1 etc. are all CLocationTriggers: "Place1 & Place2" to check if player has been in both places, or "@InRoom | InShed" to check if player is currently in the room, OR was in the shed at some time in the past. |
||||||||||||||||
int | Probability | 100 | |||||||||||||||||
int | ProcessStyle | 3 |
|
||||||||||||||||
float | RepeatPeriod | 0.0 | |||||||||||||||||
bool | FireAtZero | false | |||||||||||||||||
bool | ResetFire | false | |||||||||||||||||
float | SequenceDelayMin | unknown | |||||||||||||||||
float | SequenceDelayMax | unknown | |||||||||||||||||
int | AlphaChannel | unknown |
Type | Name | Default | Description |
---|---|---|---|
string | Element1 | unknown | |
string | Element2 | unknown | |
float | MaxVelocity | 1.0 | |
float | MinVelocity | 0.0 | |
bool | SoundMaterial1 | false | |
bool | SoundMaterial2 | false |
Type | Name | Default | Description |
---|---|---|---|
string | must specify | ||
bool | CreatureDie | false | |
bool | CreatureCriticalDamage | false | |
float | CreatureDamagePoints | must specify | |
bool | CreatureSleep | false | |
bool | CreatureWake | false | |
bool | EvaluateAll | false |
Example:
group CreatureDie-00 = { string Class = "CCreatureTrigger" string A00 = "RaptorB-300" bool CreatureDie = true int ActionType = 34 string OverlayText = "Raptor died" }
Type | Name | Default | Description |
---|---|---|---|
bool | PlayerEnterTrigger | false | |
bool | PlayerInTrigger | false | |
bool | PlayerLeaveTrigger | false | |
bool | ObjectEnterTrigger | false | |
bool | ObjectInTrigger | false | |
bool | ObjectLeaveTrigger | false | |
bool | CreatureEnterTrigger | false | |
bool | CreatureInTrigger | false | |
bool | CreatureLeaveTrigger | false | |
int | CreatureEnterCount | 0 | |
int | CreatureLeaveCount | 0 | |
string | TriggerActivate | none | If set, watch out if you're using Player* flags as it may never fire. If not set, any object or animal will fire the trigger. |
bool | PointTrigger | true | If false, it will fire whenever both bounding volumes intersect. |
Type | Name | Default | Description |
---|---|---|---|
string | unknown | ||
float | Mass | 0.0 | |
string | unknown |
Type | Name | Default | Description |
---|---|---|---|
string | A%d | must specify | |
bool | PickUpObject | false | |
bool | PutDownObject | false | |
bool | UseObject | false |
Eg. If there are 5 SequenceOrderNames, the trigger
waits until 5 triggers from the SequenceListenNames list have fired.
Or if any trigger in the SequenceEvalNowNames list fires, the sequence is evaluated immediately.
Then, if the order they fired matches the order listed in
SequenceOrderNames, the trigger fires. If the order does not match,
SequenceFalseTriggerName fires.
Type | Name | Default | Description |
---|---|---|---|
group | SequenceListenNames | must specify | |
group | SequenceOrderNames | must specify | |
group | SequenceEvalNowNames | unknown | |
string | SequenceFalseTriggerName | unknown |
Example:
group TrigKeypadSequence = { string Class = "CSequenceTrigger" group SequenceListenNames = { string A00 = "TrigButtonBeepLoc-00" string A01 = "TrigButtonBeepLoc-01" string A02 = "TrigButtonBeepLoc-02" string A03 = "TrigButtonBeepLoc-03" string A04 = "TrigButtonBeepLoc-04" string A05 = "TrigButtonBeepLoc-05" string A06 = "TrigButtonBeepLoc-06" string A07 = "TrigButtonBeepLoc-07" string A08 = "TrigButtonBeepLoc-08" string A09 = "TrigButtonBeepLoc-09" } string SequenceFalseTriggerName = "TrigBadKeyCode" group SequenceOrderNames = { string A00 = "TrigButtonBeepLoc-05" string A01 = "TrigButtonBeepLoc-02" string A02 = "TrigButtonBeepLoc-06" string A03 = "TrigButtonBeepLoc-03" string A04 = "TrigButtonBeepLoc-02" string A05 = "TrigButtonBeepLoc-07" } int FireCount = 1 int ActionType = 23 string Sample = "Spec-Keypad Confirmation01" int BoundVol = 1 }
Type | Name | Default | Description |
---|---|---|---|
bool | InitialState | false | |
float | MaxHighTime | 1.0 | |
float | MinHighTime | 1.0 | If MinHighTime and MaxHighTime are equal, trigger is on for that exact amount of time. |
float | MaxLowTime | 1.0 | |
float | MinLowTime | 1.0 | If MinLowTime and MaxLowTime are equal, trigger is off for that exact amount of time. |
Type | Name | Default | Description |
---|---|---|---|
bool | Value | must specify |
Example:
group MyBooleanVariable-00 = { string Class = "CVariableTrigger" bool Value = true // Initial state }
Actions that can happen when a trigger fires.
0 = "CVoiceOverAction"The type of action is specified in the ActionType value of a trigger. If there is only one action for a trigger, the ActionType and the action's values can simply be added into the trigger group:
group SimpleActionTrigger = { string Class = "CStartTrigger" int ActionType = 34 string OverlayText = "This trigger just displays some text." }
If there is more than one action, the actions are specified as ActionXX groups, each containing one ActionType, and that action's values. The trigger may also contain a ProcessStyle value to specify how the multiple actions are to be executed:
group MultipleActionTrigger = { string Class = "CStartTrigger" int ProcessStyle = 3 group Action00 = { int ActionType = 0 string Sample = "VA01" } group Action01 = { int ActionType = 25 float Delay = 4.0 } group Action02 = { int ActionType = 34 string OverlayText = "This trigger plays a sound, waits 4 seconds, then displays this text." } }
Some action types were not used in the original levels and their usage is unknown: 3, 4, 8, 12, 14, 15, 26, 30, 32, 33.
There is a difference
between ActionType 0 and 2. 0 is known as "CVoiceOverAction" and 2 is known as "CMusicAction".
All voiceovers and music are located in the Stream.tpa file (or your ATX additive file).
Only 1 sound out of any called to play using AT 0 will play at one time, and only 1 sound
out of any called to play using AT 2 will play at one time. However, a sound from AT 0 and
AT 2 may play at the same time. If a sound from Stream.tpa is playing via AT 2 while one
from AT 0 is playing, the sound from AT 0 is dominant - the volume of the AT 2 sound
is automatically lowered and the AT 0 sound plays over it. This is how you get voiceovers
to play while music is going. As far as I know, any sounds from Effects.tpa will play on
top of each other, since in some cases many collisions and dinosaur sounds must be played
immediately once they are called on.
Type | Name | Default | Description |
---|---|---|---|
string | Sample | must specify | |
int | SpatialType | 0 ? | 0 = constant-volume stereo 1 = distance-attenuated 2 = 3-D audio |
float | Attenuation | 1.0 ? | |
float | Volume | 0.0 ? | |
string | Emitter | must specify | |
float | Frustum | unknown | |
float | OutsideVolume | unknown |
Type | Name | Default | Description |
---|---|---|---|
string | Sample | must specify | |
int | SpatialType | 1 ? | 0 = constant-volume stereo 1 = distance-attenuated 2 = 3-D audio |
float | Attenuation | 1.0 ? | |
float | Volume | 0.0 ? | |
string | Emitter | must specify | |
float | Frustum | unknown | |
float | OutsideVolume | unknown | |
float | MaxVolDistance | unknown | |
float | BoundaryVolume | unknown | |
float | MaximumDistance | unknown | |
bool | Looped | false | Specifies if the sample is looped or not. |
int | LoopCount | -1 | Specifies how many times the sample is looped, -1 means continuously. |
float | MasterVolumeMin | unknown | |
float | MasterVolumeMax | unknown | |
bool | Mute | true | Specifies if the sample is muted or not when a dinosaur vocal is played. |
string | unknown |
Type | Name | Default | Description |
---|---|---|---|
string | Sample | must specify | |
int | SpatialType | 0 ? | 0 = constant-volume stereo 1 = distance-attenuated 2 = 3-D audio |
float | Attenuation | 1.0 ? | |
float | Volume | 0.0 ? | |
string | Emitter | must specify | |
float | Frustum | unknown | |
float | OutsideVolume | unknown |
Type | Name | Default | Description |
---|---|---|---|
float | VolumeFader | unknown | |
bool | StopAfterFade | unknown |
Type | Name | Default | Description |
---|---|---|---|
string | Bitmap | required | |
bool | Center | true | |
int | XPos | 0 | |
int | YPos | 0 | |
bool | Discard | false |
Type | Name | Default | Description |
---|---|---|---|
float | FogHalf | 0.28 | |
float | FogPower | 1.2 | |
int | FogType | 0 | |
int | R | unknown | |
int | G | unknown | |
int | B | unknown |
Type | Name | Default | Description |
---|---|---|---|
float | AmbientLight | 0.2 | |
float | CameraFOV | 75.0 | float | FarClipPlane | 1000.0 |
float | NearClipPlane | 0.025 | |
float | PixelError | 1.0 | |
int | SubdivisionLen | 16 | |
float | AltPixelError | 1.0 | |
int | AltSubdivisionLen | 32 | |
float | CullMaxDist | 800.0 | |
float | CullMaxRadius | 8.0 | |
float | CullMaxDistShadow | 120.0 | |
float | CullMaxRadiusShadow | 1.0 |
Type | Name | Default | Description |
---|---|---|---|
float | TrrPixelTol | 8.0 | |
float | TrrPixelTolFar | 20.0 | |
float | TrrNoDynTextureDist | 230.0 | |
float | TrrNoShadowDist | 32.0 | |
float | TrrNoTextureDist | 230.0 | |
bool | TrrMovingShadows | true |
Type | Name | Default | Description |
---|---|---|---|
bool | CacheActive | unknown | |
bool | CacheIntersect | unknown | |
float | PixelRatio | unknown | |
int | MinPixels | unknown | |
int | CacheAge | unknown |
Type | Name | Default | Description |
---|---|---|---|
string | Target | must specify | |
bool | ActStayAway | false | |
float | StayAwayMin | unknown | |
float | StayAwayOK | unknown | |
string | StayAwayTarget | none | (Named object must exist.) |
bool | ActStayNear | false | |
float | StayNearMax | unknown | |
float | StayNearOK | unknown | |
string | StayNearTarget | none | (Named object must exist.) |
float | Fear | must specify | |
float | Love | must specify | |
float | Anger | must specify | |
float | Curiosity | must specify | |
float | Hunger | must specify | |
float | Thirst | must specify | |
float | Fatigue | must specify | |
float | Pain | must specify | |
float | Solidity | must specify |
Type | Name | Default | Description |
---|---|---|---|
string | Target | must specify | |
bool | Frozen | none | |
bool | Impulse | false | |
float | Push | unknown | |
string | Emitter | none | |
float | X | 0.0 | |
float | Y | 0.0 | |
float | Z | 0.0 |
Type | Name | Default | Description |
---|---|---|---|
string | Target | must specify | |
int | Substitute | must specify |
Type | Name | Default | Description |
---|---|---|---|
float | NearTolerance | 0.0000025 | |
float | FarTolerance | 0.0078 | |
float | NearZ | 0.000644 | |
float | FarZ | 0.4 | |
float | FarZNo | 0.5 | |
float | SortPixelTol | 0.65 | |
int | MaxNumToSort | 1000 | |
int | Sort2PartAt | 1000 | 100<=Sort2PartAt<=2000 |
int | Sort4PartAt | 1500 | 100<=Sort4PartAt<=2000 |
float | TerrNearTolerance | 0.0001 | |
float | TerrFarTolerance | 0.02 | |
float | TerrNearZ | 0.000644 | |
float | TerrFarZ | 0.3 | |
bool | UseSeperateTol | false |
Type | Name | Default | Description |
---|---|---|---|
float | FogFar | 0.95 | |
float | FogNear | 0.75 | |
float | Height | 1000 | |
float | Scale | 0.055 | |
int | SubDivision | 32 | |
float | WindspeedX | 0.8 | |
float | WindspeedY | 1.8 | |
bool | FillScreen | unknown |
Type | Name | Default | Description |
---|---|---|---|
group | AlphaWaterProperties | none | |
group | NonAlphaWaterProperties | none | |
The following are sub-groups to the main AlphaWaterProperties and NonAlphaWaterProperties groups. | |||
group | A00 to A15 | none | |
The following values are each used once for every one of the GROUP type entries above (1 for each of the 16 groups, multiplied by 2 for each of the larger groups further above). | |||
int | R | unknown | |
int | G | unknown | |
int | B | unknown | |
float | Alpha | unknown |
Example:
group SomeTrigger { ; (trigger class start) string Class = "SomeTriggerType" ... int ActionType = 14 ... group AlphaWaterProperties { group A00 { int R = ? int G = ? int B = ? float Alpha = ? } group A01 { int R = ? int G = ? int B = ? float Alpha = ? } (same for group A02, A03, etc.) } ... group NonAlphaWaterProperties { group A00 { int R = ? int G = ? int B = ? float Alpha = ? } group A01 { int R = ? int G = ? int B = ? float Alpha = ? } (same for group A02, A03, etc.) } ... } ;(trigger class end)
Type | Name | Default | Description |
---|---|---|---|
string | ObjectName | unknown | |
bool | Enable | unknown |
Type | Name | Default | Description |
---|---|---|---|
string | LevelName | must specify |
Type | Name | Default | Description |
---|---|---|---|
string | ObjectName | must specify | |
float | Damage | 0.0 | |
float | CriticalHit | none | |
float | HitPoints | none | |
float | MaxHitPoints | none | |
float | Regeneration | none | |
float | DieRate | none | |
float | ReallyDie | none |
Type | Name | Default | Description |
---|---|---|---|
string | ObjectName | must specify | |
string | TeleportDestObjectName | must specify | |
bool | HeightRelative | true | If true, object will be teleported above anything at destination location. |
bool | OnTerrain | true | If true, object will be teleported on the terrain surface. |
bool | SetPosition | true | If true, object's pivot will be positioned at the same coordinates as destination's pivot. |
bool | SetOrientation | true | If true, object's orientation will be the same as destination's orientation. |
Type | Name | Default | Description |
---|---|---|---|
string | LevelName | Autosave.scn |
Type | Name | Default | Description |
---|---|---|---|
string | MasterObject | must specify | |
string | SlaveObject | must specify | |
bool | Enable | unknown | Set to true to activate the magnet, set to false to disable the magnet (freeing the object it's attached to). |
bool | Delta | false | Set to true to add values to the current magnet's ones, set to false to replace them. |
bool | Merge | false | Set to true to replace non-zero values, set to false to replace all. |
Type | Name | Default | Description |
---|---|---|---|
string | Target | must specify | |
int | Frame | unknown | |
int | FreezeFrame | none | |
float | Interval | none | |
int | TrackTwo | none |
Type | Name | Default | Description |
---|---|---|---|
string | ObjectName | must specify | |
bool | Volume | unknown | |
bool | Visible | must specify | |
bool | Toggle | false? |
If an object is initially set to bool Visible = false in its t-script, ActionType 22 can't make it visible. The way around this is to make it bool Visible = true and se a start trigger with ActionType 22 to make it invisible as soon as the level loads, and later use another trigger with ActionType 22 to make it visible again when you need to.
Type | Name | Default | Description |
---|---|---|---|
string | Sample | must specify | |
string | Emitter | must specify | |
bool | Attach | false | |
float | Volume | unknown | |
float | Attenuation | unknown | |
float | Frustum | unknown | |
float | OutsideVolume | unknown |
Type | Name | Default | Description |
---|---|---|---|
bool | WakeUp | true | |
string | Target | none | |
string | Location | none | |
float | Radius | unknown | |
float | X | none | |
float | Y | none | |
float | Z | none |
Type | Name | Default | Description |
---|---|---|---|
float | Delay | must specify |
Type | Name | Default | Description |
---|---|---|---|
string | AnimationName | must specify |
eg. To play animation script "D:\data\anim\test.asa" where D:\ is the Trespaser "Data Drive"
group Trig_Start2-00 = { string Class = "CStartTrigger" int FireCount = 1 int ActionType = 26 string AnimationName = "test" }
Type | Name | Default | Description |
---|---|---|---|
string | TriggerName | must specify | |
bool | Value | true | |
bool | Toggle | false |
Type | Name | Default | Description |
---|---|---|---|
int | HintID | must specify | Used without any other parameters to access predefined texts, encoded inside the executable, same as ResourceIDs. Values used are of the form x for the TestScene, 10x for the Beach, 20x for Jungle Road, 30x for Industrial Jungle, 40x for Ingen Town, 60x for the lab, 70x for Ascent, 80x for Ascent 2, 90x for Summit, where x is a number between 0-9 (not all are valid for all levels). The demo doesn't use a trigger to set Hints, so it's using the "default" HintID of 0, in all likelihood (which also appears in the TestScene until a trigger replaces it with HintID 1). Maybe 50x Hints were used for Pine Valley? Currently, selecting a 50x HintID displays only a blank message. |
Type | Name | Default | Description |
---|---|---|---|
int | AudioEnvironment | unknown | |
float | ReverbDamping | depends on preset | |
float | ReverbDecay | depends on preset | |
float | ReverbVolume | depends on preset |
The following table lists Creative EAX 1.0's 26 environment presets as used by Trespasser and their default values:
# | Preset Base Environment | Reverb Mix Volume | Reverb Decay Time | Damping |
0 | Generic | 0.5 | 1.49 | 0.5 |
1 | Padded Cell | 0.25 | 0.17 | 0.4 |
2 | Room | 0.42 | 0.4 | 0.66 |
3 | Bathroom | 0.65 | 1.49 | 0.16 |
4 | Living Room | 0.21 | 0.5 | 0.1 |
5 | Stone Room | 0.5 | 2.31 | 0.89 |
6 | Auditorium | 0.4 | 4.32 | 0.5 |
7 | Concert Hall | 0.5 | 3.92 | 0.5 |
8 | Cave | 0.5 | 2.91 | 1.3 |
9 | Arena | 0.36 | 7.24 | 0.33 |
10 | Hangar | 0.5 | 10.05 | 0.3 |
11 | Carpeted Hallway | 0.15 | 0.3 | 0.55 |
12 | Hallway | 0.36 | 1.49 | 0.5 |
13 | Stone Corridor | 0.44 | 2.7 | 0.64 |
14 | Alley | 0.25 | 1.49 | 0.5 |
15 | Forest | 0.11 | 1.49 | 0.5 |
16 | City | 0.11 | 1.49 | 0.5 |
17 | Mountains | 0.19 | 1.49 | 0.5 |
18 | Quarry | 1.0 | 1.49 | 0.5 |
19 | Plain | 0.1 | 1.49 | 0.17 |
20 | Parking Lot | 0.21 | 1.65 | 1.5 |
21 | Sewer Pipe | 0.65 | 2.81 | 0.25 |
22 | Underwater | 1.0 | 1.49 | 0.81 |
23 | Drugged | 0.88 | 8.39 | 1.39 |
24 | Dizzy | 0.14 | 17.23 | 0.66 |
25 | Psychotic | 0.49 | 7.56 | 0.81 |
Type | Name | Default | Description |
---|---|---|---|
string | Target | must specify | |
string | Substitute | must specify |
Type | Name | Default | Description |
---|---|---|---|
bool | PutDownObject | false |
Type | Name | Default | Description |
---|---|---|---|
bool | WakeUp | true |
Type | Name | Default | Description |
---|---|---|---|
string | OverlayText | must specify | |
bool | TextAtTop | true | |
float | TextDisplayTime | 3.0 | |
int | TextPosition | 1 | 0 = 1 = 2 = |
float | R | 1.0 | |
float | G | 1.0 | |
float | B | 1.0 | |
int | ResourceID | unknown | Tutorials on Beach use 1010, 1020, 1030, 1040, 1050, 1060, 1070, 1080, 1090, 1100, 1110, 1120, 1130, 1140, 1150, 1160, 1170, 1180, 1190, 1200, 1210, 1220, 1230, 1240, 1250, 1260, 1270, 1280, 1290 |
Type | Name | Default | Description |
---|---|---|---|
string | Target | unknown |
Animation scripts were not used in any of the original levels - I've had to determine the format myself.
An animation script is used to animate object and camera movements, and is used by trigger action CScriptedAnimationAction. File extensions are ".asb" for binary format, or ".asa" for ASCII format.
ASCII
Animation Script (.asa)
Binary
Animation Script (.asb)
I'll continue the example from the CScriptedAnimationAction section, then describe the script keywords.
Eg. For our earlier example, this is the file "C:\Tres CD\data\anim\test.asa" where "C:\Tres CD\" is the Trespaser "Data Drive". The level must contain a CInstance called "Box-00" |
version 1 object Box-00 frame 0 pos 0 5 3 rot 0 0 0 1 scale 1 frame 3.5 pos 5.5 3 3 rot 0 0 1 0 scale 1 end_object |
If there's a syntax error in the file, anything from that point on is ignored. If the file is not found, the trigger does nothing.
Keyword | Description |
version <number> |
This line is required, but the number seems to be ignored. |
forced_rate <number> |
Can specify after version, and I think before any "object" section. I'm not sure exactly what this means. "0" doesn't seem to do much, "1" makes the animation play very fast (perhaps it ignores the frame time, playing frames as fast as possible). |
object <name> |
Define animation for instance "<name>". If the instance is not found, script continues running, ignoring this object section. |
frame <time> |
Time (in seconds) for this keyframe |
pos <X> <Y> <Z> |
Position for this keyframe. Absolute (world) coordinates, as Trespasser has no hierarchy. |
rot <X> <Y> <Z> <W> |
Rotation quaternion for this keyframe. Will be normalized during loading. |
scale <S> |
Scale for this keyframe. (I think it might be multiplied by original object scale, so it would normally be set to 1.0) |
object Camera |
Define animation for "Camera". ie. give Anne an out-of-body
experience. Just like the object block described above, but
specifies animation of the viewport. With zero rotation, view
direction is along the positive Y-axis, positive Z is up. (I think,
perhaps it depends on Anne's orientation?) Note: If Anne is moving (eg. a movement key is pressed) when the first Camera frame is reached, she will continue moving while the animation plays, even though the key may be released. |
Trespasser loads these (from the data directory) in preference to a .asa file, and they should be used when a level is released. An .asb file is created automatically in the data directory the first time a .asa file is loaded.
Page researched and created by Andres, with additional research by Rebel, BigRed, Draconisaurus, chronzerg and machf.