====== Scripting ====== [[https://raydev.wiki/cpa:scripting|Like it's predecessor, CPA]], Jade uses a C-like proprietary scripting language for implementing game, object and world specific behaviours. This language appears to be only typically used for development purposes, and instead as when a title is shipped, the scripting language will usually be converted into C/C++ and compiled natively for the target platform for better performance. A basic guide on getting started with scripting in Jade is available [[jade:scripting:getting-started|here]]. ===== Functions ===== //FIXME TODO: List all the functions of the language// With some of these, if you have an object variable, you can preface the function with @objectVariable to specify what the function is for. ''OBJ_Me()'' : A reference to the object the script is attached to. === Position === ''OBJ_PosGet()'' : Returns a vector of the position of an object ''OBJ_PosSet(VECTOR)'' : Sets object position to vector === Rotation === ''OBJ_RotateLocalZ(FLOAT)'': Rotates an object locally around the z axis ''OBJ_RotateLocalX(FLOAT)'': Rotates an object locally around the x axis ''OBJ_RotateLocalY(FLOAT)'': Rotates an object locally around the y axis === Flag === ''OBJ_FlagInvisibleSet(INT)'': Disables the AI of an object with hiding it ''OBJ_FlagInactiveSet(INT)'': Disables the AI of an object without hiding it ''OBJ_FlagsIdentityTest(INT)'' : returns int ===Sight=== ''OBJ_SightGet():'' Returns vector of forward vector of the object ===Misc.=== ''OBJ_Duplicate(VECTOR)'' : Duplicates current object to location (?) ''OBJ_Rotate_FromTo(VECTOR, VECTOR)'' : Rotates an object from one rotation to another. ''OBJ_Destroy()'': Destroys object ''OBJ_MorphProgSet(INT, FLOAT)'' : Determines the current frame of a shapekey/morph animation ''OBJ_SqrDist(OBJECT)'' : returns float, also gets the distance between objects? ===== Procedures ===== //FIXME TODO: List all the functions of the language// ===== Basic Concepts ===== //FIXME TODO: Explain the basic concepts of the language// ==== ETAT/States ==== Certain characters are laid out with multiple states and execs, which handles different parts of the character’s movement. The function ''AI_TrackCurChangeNow()''changes the state. ''AI_Execute()'' executes other scripts, usually used for those with EXEC in the title. Rayman’s States ==== Rayman's ETATs/States ==== ''raym_ETAT_main'': rayman’s default state, handles code on whether or not rayman should switch to another state. ''raym_ETAT_accroch'': Rayman attached to something ''raym_ETAT_cheat'': Cheat mode, for devs ''raym_ETAT_danse'': Dancing ''raym_ETAT_mort_AHahah'': Rayman’s death ''raym_ETAT_paf'': Taking Damage ''raym_ETAT_void'': Blank state, does nothing ===== Syntax ===== //FIXME TODO: Explain the syntax of the language// ===== Keywords ===== //FIXME TODO: List all the keywords of the language// ===== Conditions ===== //FIXME TODO: List all the conditions of the language//