Files
sslc/extra.c
T

1792 lines
60 KiB
C
Raw Normal View History

2019-11-14 11:57:39 +08:00
#include "parse.h"
#include "gencode.h"
#include "parselib.h"
#include "extra.h"
extern int backwardcompat;
// scripting function - expression
#define SFALLEXPR(name, token, args) {name, T_##token, O_##token, args, 1, 0, 0},
// scripting function - statement
#define SFALLSTMT(name, token, args) {name, T_##token, O_##token, args, 0, 1, 0},
// function to be used both as statement or expression
#define SFALLEXPRSTMT(name, token, args) {name, T_##token, O_##token, args, 1, 1, 0},
// statement with proc arguments
#define SFALLSTMTPROC(name, token, args, proc) {name, T_##token, O_##token, args, 0, 1, proc},
typedef struct {
const char* name;
int token;
int opcode;
int numArgs;
int isExpression;
int isStatement;
int procArgs;
} SfallOpcode;
// the above list must be in EXACTLY the same order as in tokens enum
static const int sfall_start_token = T_TS_SAVE_ARRAY;
static const SfallOpcode sfall_opcodes[] = {
SFALLSTMT("save_array", TS_SAVE_ARRAY, 2)
SFALLEXPR("load_array", TS_LOAD_ARRAY, 1)
SFALLEXPR("array_key", TS_GET_ARRAY_KEY, 2)
SFALLEXPR("arrayexpr", TS_STACK_ARRAY, 2)
SFALLEXPR(0, TS_RESERVD3, 1)
SFALLEXPR(0, TS_RESERVD4, 1)
SFALLSTMT("reg_anim_destroy", TS_REG_ANIM_DESTROY, 1)
SFALLSTMT("reg_anim_animate_and_hide", TS_REG_ANIM_ANIMATE_AND_HIDE, 3)
SFALLSTMT("reg_anim_combat_check", TS_REG_ANIM_COMBAT_CHECK, 1)
SFALLSTMT("reg_anim_light", TS_REG_ANIM_LIGHT, 3)
SFALLSTMT("reg_anim_change_fid", TS_REG_ANIM_CHANGE_FID, 3)
SFALLSTMT("reg_anim_take_out", TS_REG_ANIM_TAKE_OUT, 3)
SFALLSTMT("reg_anim_turn_towards", TS_REG_ANIM_TURN_TOWARDS, 3)
SFALLEXPRSTMT("metarule2_explosions", TS_EXPLOSIONS_METARULE, 3)
SFALLSTMTPROC("register_hook_proc", TS_REGISTER_HOOK_PROC, 2, (2))
SFALLEXPR("log", TS_LOG, 1)
SFALLEXPR("exponent", TS_EXP, 1)
SFALLEXPR("ceil", TS_CEIL, 1)
SFALLEXPR("round", TS_ROUND, 1)
SFALLEXPR("message_str_game", TS_MESSAGE_STR_GAME, 2)
SFALLEXPR("sneak_success", TS_SNEAK_SUCCESS, 0)
SFALLEXPR("tile_light", TS_TILE_LIGHT, 2)
SFALLEXPR("obj_blocking_line", TS_MAKE_STRAIGHT_PATH, 3)
SFALLEXPR("obj_blocking_tile", TS_OBJ_BLOCKING_AT, 3)
SFALLEXPR("tile_get_objs", TS_TILE_GET_OBJECTS, 2)
SFALLEXPR("party_member_list", TS_GET_PARTY_MEMBERS, 1)
SFALLEXPR("path_find_to", TS_PATH_FIND, 3)
SFALLEXPRSTMT("create_spatial", TS_CREATE_SPATIAL, 4)
SFALLEXPR("art_exists", TS_ART_EXISTS, 1)
SFALLEXPR("obj_is_carrying_obj", TS_OBJ_IS_CARRYING_OBJ, 2)
SFALLEXPRSTMT("sfall_func0", TS_SFALL_METARULE0, 1)
SFALLEXPRSTMT("sfall_func1", TS_SFALL_METARULE1, 2)
SFALLEXPRSTMT("sfall_func2", TS_SFALL_METARULE2, 3)
SFALLEXPRSTMT("sfall_func3", TS_SFALL_METARULE3, 4)
SFALLEXPRSTMT("sfall_func4", TS_SFALL_METARULE4, 5)
SFALLEXPRSTMT("sfall_func5", TS_SFALL_METARULE5, 6)
SFALLEXPRSTMT("sfall_func6", TS_SFALL_METARULE6, 7)
2019-11-14 12:59:22 +08:00
SFALLSTMTPROC("register_hook_proc_spec", TS_REGISTER_HOOK_PROC2, 2, 2)
SFALLSTMTPROC("reg_anim_callback", TS_REG_ANIM_CALLBACK, 1, 1)
2020-12-30 09:24:04 +08:00
SFALLEXPRSTMT("sfall_func7", TS_SFALL_METARULE7, 8)
SFALLEXPRSTMT("sfall_func8", TS_SFALL_METARULE8, 9)
2019-11-14 11:57:39 +08:00
};
int numSfallOpcodes() {
return sizeof(sfall_opcodes) / sizeof(SfallOpcode);
}
const SfallOpcode* getSfallOpcode(int token) {
if (token >= sfall_start_token && token < T_END_TOKEN) {
return &sfall_opcodes[token - sfall_start_token];
}
return 0;
}
void parseExtraExpression(Procedure *p, NodeList* nodes, int token)
{
p = p;
switch(token) {
PARSEEXP(HAS_SKILL, 2);
PARSEEXP(USING_SKILL, 2);
PARSEEXP(ROLL_VS_SKILL, 3);
PARSEEXP(SKILL_CONTEST, 3);
PARSEEXP(DO_CHECK, 3);
PARSEEXP(IS_SUCCESS, 1);
PARSEEXP(IS_CRITICAL, 1);
PARSEEXP(HOW_MUCH, 1);
PARSEEXP(REACTION_INFLUENCE, 3);
PARSEEXP(RANDOM, 2);
PARSEEXP(ROLL_DICE, 2);
PARSEEXP(MOVE_TO, 3);
PARSEEXP(CREATE_OBJECT_SID, 4);
PARSEEXP(OBJ_IS_CARRYING_OBJ_PID, 2);
PARSEEXP(TILE_CONTAINS_OBJ_PID, 3);
#if (FALLOUT_VERSION == 2)
PARSEEXP(TILE_IN_TILE_RECT, 5);
#endif
PARSEEXP(SELF_OBJ, 0);
PARSEEXP(SOURCE_OBJ, 0);
PARSEEXP(TARGET_OBJ, 0);
PARSEEXP(DUDE_OBJ, 0);
PARSEEXP(OBJ_BEING_USED_WITH, 0);
PARSEEXP(LOCAL_VAR, 1);
PARSEEXP(MAP_VAR, 1);
PARSEEXP(GLOBAL_VAR, 1);
PARSEEXP(SCRIPT_ACTION, 0);
PARSEEXP(OBJ_TYPE, 1);
PARSEEXP(OBJ_ITEM_SUBTYPE, 1);
PARSEEXP(GET_CRITTER_STAT, 2);
PARSEEXP(SET_CRITTER_STAT, 3);
PARSEEXP(TILE_DISTANCE, 2);
PARSEEXP(TILE_DISTANCE_OBJS, 2);
PARSEEXP(TILE_NUM, 1);
PARSEEXP(TILE_NUM_IN_DIRECTION, 3);
PARSEEXP(OBJ_CAN_SEE_OBJ, 2);
PARSEEXP(ANIM_BUSY, 1);
PARSEEXP(CRITTER_HEAL, 2);
PARSEEXP(GAME_TIME, 0);
PARSEEXP(GAME_TIME_IN_SECONDS, 0);
PARSEEXP(ELEVATION, 1);
PARSEEXP(GAME_TICKS, 1);
PARSEEXP(HAS_TRAIT, 3);
PARSEEXP(OBJ_CAN_HEAR_OBJ, 2);
PARSEEXP(GAME_TIME_HOUR, 0);
PARSEEXP(FIXED_PARAM, 0);
PARSEEXP(TILE_IS_VISIBLE, 1);
PARSEEXP(ACTION_BEING_USED, 0);
PARSEEXP(CRITTER_STATE, 1);
PARSEEXP(CRITTER_ATTEMPT_PLACEMENT, 3);
PARSEEXP(OBJ_PID, 1);
PARSEEXP(CUR_MAP_INDEX, 0);
PARSEEXP(CRITTER_ADD_TRAIT, 4);
PARSEEXP(CRITTER_RM_TRAIT, 4);
PARSEEXP(PROTO_DATA, 2);
PARSEEXP(MESSAGE_STR, 2);
PARSEEXP(CRITTER_INVEN_OBJ, 2);
#if (FALLOUT_VERSION == 2)
PARSEEXP(INVEN_CMDS, 3);
#endif
PARSEEXP(METARULE, 2);
#if (FALLOUT_VERSION == 2)
PARSEEXP(METARULE3, 4);
#endif
PARSEEXP(OBJ_CARRYING_PID_OBJ, 2);
PARSEEXP(RM_MULT_OBJS_FROM_INVEN, 3);
PARSEEXP(GET_MONTH, 0);
PARSEEXP(GET_DAY, 0);
PARSEEXP(DAYS_SINCE_VISITED, 0);
PARSEEXP(GET_POISON, 1);
PARSEEXP(COMBAT_IS_INITIALIZED, 0);
PARSEEXP(DIFFICULTY_LEVEL, 0);
PARSEEXP(RUNNING_BURNING_GUY, 0);
PARSEEXP(OBJ_IS_LOCKED, 1);
PARSEEXP(OBJ_IS_OPEN, 1);
PARSEEXP(GAME_UI_IS_DISABLED, 0);
PARSEEXP(ITEM_CAPS_TOTAL, 1);
PARSEEXP(ITEM_CAPS_ADJUST, 2);
PARSEEXP(ANIM_ACTION_FRAME, 2);
PARSEEXP(DESTROY_MULT_OBJS, 2);
PARSEEXP(OBJ_ART_FID, 1);
PARSEEXP(ART_ANIM, 1);
PARSEEXP(PARTY_MEMBER_OBJ, 1);
PARSEEXP(ROTATION_TO_TILE, 2);
PARSEEXP(SFX_BUILD_CHAR_NAME, 3);
PARSEEXP(SFX_BUILD_AMBIENT_NAME, 1);
PARSEEXP(SFX_BUILD_INTERFACE_NAME, 1);
PARSEEXP(SFX_BUILD_ITEM_NAME, 1);
PARSEEXP(SFX_BUILD_WEAPON_NAME, 4);
PARSEEXP(SFX_BUILD_SCENERY_NAME, 3);
PARSEEXP(SFX_BUILD_OPEN_NAME, 2);
PARSEEXP(GET_PC_STAT, 1);
PARSEEXP(COMBAT_DIFFICULTY, 0);
PARSEEXP(OBJ_ON_SCREEN, 1);
PARSEEXP(CRITTER_IS_FLEEING, 1);
PARSEEXP(TILE_CONTAINS_PID_OBJ, 3);
PARSEEXP(OBJ_NAME, 1);
PARSEEXP(TS_READ_BYTE, 1);
PARSEEXP(TS_READ_SHORT, 1);
PARSEEXP(TS_READ_INT, 1);
PARSEEXP(TS_READ_STRING, 1);
PARSEEXP(TS_GET_PC_BASE_STAT, 1);
PARSEEXP(TS_GET_PC_EXTRA_STAT, 1);
PARSEEXP(TS_GET_CRITTER_BASE_STAT, 2);
PARSEEXP(TS_GET_CRITTER_EXTRA_STAT, 2);
PARSEEXP(TS_GET_YEAR, 0);
PARSEEXP(TS_GAME_LOADED, 0);
PARSEEXP(TS_GRAPHICS_FUNCS_AVAILABLE, 0);
PARSEEXP(TS_LOAD_SHADER, 1);
PARSEEXP(TS_INPUT_FUNCS_AVAILABLE, 0);
PARSEEXP(TS_KEY_PRESSED, 1);
PARSEEXP(TS_IN_WORLD_MAP, 0);
PARSEEXP(TS_GET_WORLD_MAP_X_POS, 0);
PARSEEXP(TS_GET_WORLD_MAP_Y_POS, 0);
PARSEEXP(TS_GET_KILL_COUNTER, 1);
PARSEEXP(TS_GET_PERK_OWED, 0);
PARSEEXP(TS_GET_PERK_AVAILABLE, 1);
PARSEEXP(TS_GET_CRITTER_AP, 1);
PARSEEXP(TS_GET_ACTIVE_HAND, 0);
PARSEEXP(TS_AVAILABLE_GLOBAL_SCRIPT_TYPES, 0);
PARSEEXP(TS_GET_SFALL_GLOBAL_INT, 1);
PARSEEXP(TS_GET_SFALL_GLOBAL_FLOAT, 1);
PARSEEXP(TS_EAX_AVAILABLE, 0);
PARSEEXP(TS_GET_VIEWPORT_X, 0);
PARSEEXP(TS_GET_VIEWPORT_Y, 0);
PARSEEXP(TS_GET_INI_SETTING, 1);
PARSEEXP(TS_GET_SHADER_VERSION, 0);
PARSEEXP(TS_GET_GAME_MODE, 0);
PARSEEXP(TS_GET_SHADER_TEXTURE, 2);
PARSEEXP(TS_GET_UPTIME, 0);
PARSEEXP(TS_HAS_FAKE_PERK, 1);
PARSEEXP(TS_HAS_FAKE_TRAIT, 1);
PARSEEXP(TS_CALL_OFFSET_R0, 1);
PARSEEXP(TS_CALL_OFFSET_R1, 2);
PARSEEXP(TS_CALL_OFFSET_R2, 3);
PARSEEXP(TS_CALL_OFFSET_R3, 4);
PARSEEXP(TS_CALL_OFFSET_R4, 5);
PARSEEXP(TS_IS_IFACE_TAG_ACTIVE, 1);
PARSEEXP(TS_GET_BODYPART_HIT_MODIFIER, 1);
PARSEEXP(TS_GET_CRITICAL_TABLE, 4);
PARSEEXP(TS_GET_SFALL_ARG, 0);
PARSEEXP(TS_GET_UNSPENT_AP_BONUS, 0);
PARSEEXP(TS_GET_UNSPENT_AP_EBONUS, 0);
PARSEEXP(TS_INIT_HOOK, 0);
PARSEEXP(TS_GET_INI_STRING, 1);
PARSEEXP(TS_SQRT, 1);
PARSEEXP(TS_ABS, 1);
PARSEEXP(TS_SIN, 1);
PARSEEXP(TS_COS, 1);
PARSEEXP(TS_TAN, 1);
PARSEEXP(TS_ATAN, 2);
PARSEEXP(TS_GET_SCRIPT, 1);
PARSEEXP(TS_NB_CREATE_CHAR, 0);
PARSEEXP(TS_FS_CREATE, 2);
PARSEEXP(TS_FS_COPY, 2);
PARSEEXP(TS_FS_FIND, 1);
PARSEEXP(TS_FS_SIZE, 1);
PARSEEXP(TS_FS_POS, 1);
PARSEEXP(TS_GET_PROTO_DATA, 2);
PARSEEXP(TS_FS_READ_BYTE, 1);
PARSEEXP(TS_FS_READ_SHORT, 1);
PARSEEXP(TS_FS_READ_INT, 1);
PARSEEXP(TS_FS_READ_FLOAT, 1);
PARSEEXP(TS_LIST_BEGIN, 1);
PARSEEXP(TS_LIST_NEXT, 1);
PARSEEXP(TS_SFALL_VER_MAJOR, 0);
PARSEEXP(TS_SFALL_VER_MINOR, 0);
PARSEEXP(TS_SFALL_VER_BUILD, 0);
PARSEEXP(TS_GET_WEAPON_AMMO_PID, 1);
PARSEEXP(TS_GET_WEAPON_AMMO_COUNT, 1);
PARSEEXP(TS_GET_MOUSE_X, 0);
PARSEEXP(TS_GET_MOUSE_Y, 0);
PARSEEXP(TS_GET_MOUSE_BUTTONS, 0);
PARSEEXP(TS_GET_WINDOW_UNDER_MOUSE, 0);
PARSEEXP(TS_GET_SCREEN_WIDTH, 0);
PARSEEXP(TS_GET_SCREEN_HEIGHT, 0);
PARSEEXP(TS_GET_LIGHT_LEVEL, 0);
PARSEEXP(TS_GET_ATTACK_TYPE, 0);
PARSEEXP(TS_PLAY_SFALL_SOUND, 2);
PARSEEXP(TS_CREATE_ARRAY, 2);
PARSEEXP(TS_GET_ARRAY, 2);
PARSEEXP(TS_LEN_ARRAY, 1);
PARSEEXP(TS_TEMP_ARRAY, 2);
PARSEEXP(TS_STRING_SPLIT, 2);
PARSEEXP(TS_LIST_AS_ARRAY, 1);
PARSEEXP(TS_ATOI, 1);
PARSEEXP(TS_ATOF, 1);
PARSEEXP(TS_SCAN_ARRAY, 2);
PARSEEXP(TS_TILE_PID, 1);
PARSEEXP(TS_MODIFIED_INI, 0);
PARSEEXP(TS_GET_SFALL_ARGS, 0);
PARSEEXP(TS_GET_NPC_LEVEL, 1);
PARSEEXP(TS_GET_CRITTER_SKILL_POINTS, 2);
PARSEEXP(TS_GET_AVAILABLE_SKILL_POINTS, 0);
PARSEEXP(TS_GET_LAST_ATTACKER, 1);
PARSEEXP(TS_GET_LAST_TARGET, 1);
PARSEEXP(TS_TILE_UNDER_CURSOR, 0);
PARSEEXP(TS_GET_BARTER_MOD, 0);
PARSEEXP(TS_SUBSTR, 3);
PARSEEXP(TS_STRLEN, 1);
PARSEEXP(TS_SPRINTF, 2);
PARSEEXP(TS_ORD, 1);
// reserved
PARSEEXP(TS_TYPEOF, 1);
//PARSEEXP(TS_CREATE_BUTTON, 6);
//PARSEEXP(TS_BUTTON_PRESSED, 0);
#if (FALLOUT_VERSION != 2)
PARSEEXP(REACTION, 3); // 426
#endif
default: {
const SfallOpcode* opcode = getSfallOpcode(token);
if (opcode) {
emitOp(p, nodes, token);
parseLibArgs(p, nodes, opcode->numArgs, opcode->procArgs);
}
}
}
}
void parseExtraStatement(Procedure *p, NodeList* nodes, int token) {
switch (token) {
PARSE(GIVE_EXP_POINTS, 1); // 409
PARSE(SCR_RETURN, 1); // 410
PARSE(PLAY_SFX, 1); // 411
#if (FALLOUT_VERSION == 2)
PARSE(MARK_AREA_KNOWN, 3); // 426
#endif
PARSE(SET_MAP_START, 4); // 416
PARSE(OVERRIDE_MAP_START, 4); // 417
PARSE(HAS_SKILL, 2); // 418
PARSE(USING_SKILL, 2); // 419
PARSE(ROLL_VS_SKILL, 3); // 420
PARSE(SKILL_CONTEST, 3); // 421
PARSE(DO_CHECK, 3); // 422
PARSE(ROLL_DICE, 2); // 429
PARSE(MOVE_TO, 3); // 430
PARSE(CREATE_OBJECT_SID, 4); // 431
PARSE(DISPLAY_MSG, 1); // 432
PARSE(SCRIPT_OVERRIDES, 0); // 433
PARSE(SET_LOCAL_VAR, 2); // 442
PARSE(SET_MAP_VAR, 2); // 444
PARSE(SET_GLOBAL_VAR, 2); // 446
PARSE(SET_CRITTER_STAT, 3); // 451
PARSE(ANIMATE_STAND_OBJ, 1); // 452
PARSE(ANIMATE_STAND_REVERSE_OBJ, 1); // 453
PARSE(ANIMATE_MOVE_OBJ_TO_TILE, 3); // 454
PARSE(ATTACK_COMPLEX, 8); // 456
PARSE(MAKE_DAYTIME, 0); // 457
PARSE(PICKUP_OBJ, 1); // 462
PARSE(DROP_OBJ, 1); // 463
PARSE(ADD_OBJ_TO_INVEN, 2); // 464
PARSE(RM_OBJ_FROM_INVEN, 2); // 465
PARSE(WIELD_OBJ_CRITTER, 2); // 466
PARSE(USE_OBJ, 1); // 467
PARSE(ATTACK, 8); // 469
PARSE(START_GDIALOG, 5); // 470
PARSE(END_DIALOGUE, 0); // 471
PARSE(DIALOGUE_REACTION, 1); // 472
#if (FALLOUT_VERSION == 2)
PARSE(SET_MAP_MUSIC, 2); // 474
#endif
PARSE(SET_OBJ_VISIBILITY, 2); // 475
PARSE(LOAD_MAP, 2); // 476
#if (FALLOUT_VERSION == 2)
PARSE(WM_AREA_SET_POS, 3); // 477
PARSE(SET_EXIT_GRIDS, 5); // 478
#endif
PARSE(CRITTER_HEAL, 2); // 480
PARSE(SET_LIGHT_LEVEL, 1); // 481
PARSE(KILL_CRITTER, 2); // 485
PARSE(KILL_CRITTER_TYPE, 2); // 486
PARSE(CRITTER_DMG, 3); // 487
PARSE(ADD_TIMER_EVENT, 3); // 488
PARSE(RM_TIMER_EVENT, 1); // 489
PARSE(DESTROY_OBJECT, 1); // 492
PARSE(DIALOGUE_SYSTEM_ENTER, 0); // 497
PARSE(GAME_TIME_ADVANCE, 1); // 500
PARSE(RADIATION_INC, 2); // 501
PARSE(RADIATION_DEC, 2); // 502
PARSE(CRITTER_ATTEMPT_PLACEMENT, 3); // 503
PARSE(CRITTER_ADD_TRAIT, 4); // 506
PARSE(CRITTER_RM_TRAIT, 4); // 507
PARSE(OBJ_SET_LIGHT_LEVEL, 3); // 511
PARSE(WORLD_MAP, 0); // 512
PARSE(FLOAT_MSG, 3); // 514
PARSE(METARULE, 2); // 515
#if (FALLOUT_VERSION == 2)
PARSE(METARULE3, 4); // 473
#endif
PARSE(ANIM, 3); // 516
PARSE(REG_ANIM_FUNC, 2); // 518
PARSE(REG_ANIM_ANIMATE, 3); // 519
PARSE(REG_ANIM_ANIMATE_REVERSE, 3); // 520
PARSE(REG_ANIM_OBJ_MOVE_TO_OBJ, 3); // 521
PARSE(REG_ANIM_OBJ_RUN_TO_OBJ, 3); // 522
PARSE(REG_ANIM_OBJ_MOVE_TO_TILE, 3); // 523
PARSE(REG_ANIM_OBJ_RUN_TO_TILE, 3); // 524
PARSE(PLAY_GMOVIE, 1); // 525
PARSE(ADD_MULT_OBJS_TO_INVEN, 3); // 526
PARSE(EXPLOSION, 3); // 530
PARSE(GSAY_START, 0); // 532
PARSE(GSAY_END, 0); // 533
PARSE(GSAY_REPLY, 2); // 534
PARSEPROC(GSAY_OPTION, 4, 4); // 535
PARSE(GSAY_MESSAGE, 3); // 536
PARSEPROC(GIQ_OPTION, 5, 8); // 537
PARSE(POISON, 2); // 538
PARSE(PARTY_ADD, 1); // 540
PARSE(PARTY_REMOVE, 1); // 541
PARSE(REG_ANIM_ANIMATE_FOREVER, 2); // 542
PARSE(CRITTER_INJURE, 2); // 543
PARSE(GDIALOG_MOD_BARTER, 1); // 545
PARSE(INVEN_UNWIELD, 0); // 548
PARSE(OBJ_LOCK, 1); // 550
PARSE(OBJ_UNLOCK, 1); // 551
PARSE(OBJ_OPEN, 1); // 553
PARSE(OBJ_CLOSE, 1); // 554
PARSE(GAME_UI_DISABLE, 0); // 555
PARSE(GAME_UI_ENABLE, 0); // 556
PARSE(GFADE_OUT, 1); // 558
PARSE(GFADE_IN, 1); // 559
PARSE(ITEM_CAPS_ADJUST, 2); // 561
PARSE(REG_ANIM_PLAY_SFX, 3); // 563
PARSE(CRITTER_MOD_SKILL, 3); // 564
PARSE(ATTACK_SETUP, 2); // 571
PARSE(USE_OBJ_ON_OBJ, 2); // 573
PARSE(ENDGAME_SLIDESHOW, 0); // 574
PARSE(MOVE_OBJ_INVEN_TO_OBJ, 2); // 575
PARSE(ENDGAME_MOVIE, 0); // 576
PARSE(JAM_LOCK, 1); // 581
PARSE(GDIALOG_SET_BARTER_MOD, 1); // 582
PARSE(CRITTER_SET_FLEE_STATE, 2); // 586
PARSE(TERMINATE_COMBAT, 0); // 587 !!! Must be here
PARSE(DEBUG_MSG, 1); // 588
PARSE(CRITTER_STOP_ATTACKING, 1); // 589
PARSE(TS_SET_PC_BASE_STAT, 2);
PARSE(TS_SET_PC_EXTRA_STAT, 2);
PARSE(TS_SET_CRITTER_BASE_STAT, 3);
PARSE(TS_SET_CRITTER_EXTRA_STAT, 3);
PARSE(TS_TAP_KEY, 1);
PARSE(TS_FREE_SHADER, 1);
PARSE(TS_ACTIVATE_SHADER, 1);
PARSE(TS_DEACTIVATE_SHADER, 1);
PARSE(TS_SET_GLOBAL_SCRIPT_REPEAT, 1);
PARSE(TS_SET_SHADER_INT, 3);
PARSE(TS_SET_SHADER_FLOAT, 3);
PARSE(TS_SET_SHADER_VECTOR, 6);
PARSE(TS_FORCE_ENCOUNTER, 1);
PARSE(TS_SET_WORLD_MAP_POS, 2);
PARSE(TS_SET_DM_MODEL, 1);
PARSE(TS_SET_DF_MODEL, 1);
PARSE(TS_SET_MOVIE_PATH, 2);
PARSE(TS_SET_PERK_IMAGE, 2);
PARSE(TS_SET_PERK_RANKS, 2);
PARSE(TS_SET_PERK_LEVEL, 2);
PARSE(TS_SET_PERK_STAT, 2);
PARSE(TS_SET_PERK_STAT_MAG, 2);
PARSE(TS_SET_PERK_SKILL1, 2);
PARSE(TS_SET_PERK_SKILl1_MAG, 2);
PARSE(TS_SET_PERK_TYPE, 2);
PARSE(TS_SET_PERK_SKILL2, 2);
PARSE(TS_SET_PERK_SKILL2_MAG, 2);
PARSE(TS_SET_PERK_STR, 2);
PARSE(TS_SET_PERK_PER, 2);
PARSE(TS_SET_PERK_END, 2);
PARSE(TS_SET_PERK_CHR, 2);
PARSE(TS_SET_PERK_INT, 2);
PARSE(TS_SET_PERK_AGL, 2);
PARSE(TS_SET_PERK_LCK, 2);
PARSE(TS_SET_PERK_NAME, 2);
PARSE(TS_SET_PERK_DESC, 2);
PARSE(TS_SET_PIPBOY_AVAILABLE, 1);
PARSE(TS_MOD_KILL_COUNTER, 2);
PARSE(TS_SET_PERK_OWED, 1);
PARSE(TS_SET_CRITTER_AP, 2);
PARSE(TS_TOGGLE_ACTIVE_HAND, 0);
PARSE(TS_SET_WEAPON_KNOCKBACK, 3);
PARSE(TS_SET_TARGET_KNOCKBACK, 3);
PARSE(TS_SET_ATTACKER_KNOCKBACK, 3);
PARSE(TS_REMOVE_WEAPON_KNOCKBACK, 1);
PARSE(TS_REMOVE_TARGET_KNOCKBACK, 1);
PARSE(TS_REMOVE_ATTACKER_KNOCKBACK, 1);
PARSE(TS_SET_GLOBAL_SCRIPT_TYPE, 1);
PARSE(TS_SET_SFALL_GLOBAL, 2);
PARSE(TS_SET_PICKPOCKET_MAX, 1);
PARSE(TS_SET_HIT_CHANCE_MAX, 1);
PARSE(TS_SET_SKILL_MAX, 1);
PARSE(TS_EAX_AVAILABLE, 0);
PARSE(TS_SET_EAX_ENVIRONMENT, 1);
PARSE(TS_INC_NPC_LEVEL, 1);
PARSE(TS_SET_VIEWPORT_X, 1);
PARSE(TS_SET_VIEWPORT_Y, 1);
PARSE(TS_SET_XP_MOD, 1);
PARSE(TS_SET_PERK_LEVEL_MOD, 1);
PARSE(TS_SET_SHADER_MODE, 2);
PARSE(TS_FORCE_GRAPHICS_REFRESH, 1);
PARSE(TS_SET_SHADER_TEXTURE, 3);
PARSE(TS_SET_STAT_MAX, 2);
PARSE(TS_SET_STAT_MIN, 2);
PARSE(TS_SET_CAR_CURRENT_TOWN, 1);
PARSE(TS_SET_PC_STAT_MAX, 2);
PARSE(TS_SET_PC_STAT_MIN, 2);
PARSE(TS_SET_NPC_STAT_MAX, 2);
PARSE(TS_SET_NPC_STAT_MIN, 2);
PARSE(TS_SET_FAKE_PERK, 4);
PARSE(TS_SET_FAKE_TRAIT, 4);
PARSE(TS_SET_SELECTABLE_PERK, 4);
PARSE(TS_SET_PERKBOX_TITLE, 1);
PARSE(TS_HIDE_REAL_PERKS, 0);
PARSE(TS_SHOW_REAL_PERKS, 0);
PARSE(TS_PERK_ADD_MODE, 1);
PARSE(TS_CLEAR_SELECTABLE_PERKS, 0);
PARSE(TS_SET_CRITTER_HIT_CHANCE_MOD, 3);
PARSE(TS_SET_BASE_HIT_CHANCE_MOD, 2);
PARSE(TS_SET_CRITTER_SKILL_MOD, 2);
PARSE(TS_SET_BASE_SKILL_MOD, 1);
PARSE(TS_SET_CRITTER_PICKPOCKET_MOD, 3);
PARSE(TS_SET_BASE_PICKPOCKET_MOD, 2);
PARSE(TS_SET_PYROMANIAC_MOD, 1);
PARSE(TS_APPLY_HEAVEHO_FIX, 0);
PARSE(TS_SET_SWIFTLEARNER_MOD, 1);
PARSE(TS_SET_HP_LEVEL_MOD, 1);
PARSE(TS_WRITE_BYTE, 2);
PARSE(TS_WRITE_SHORT, 2);
PARSE(TS_WRITE_INT, 2);
PARSE(TS_CALL_OFFSET_V0, 1);
PARSE(TS_CALL_OFFSET_V1, 2);
PARSE(TS_CALL_OFFSET_V2, 3);
PARSE(TS_CALL_OFFSET_V3, 4);
PARSE(TS_CALL_OFFSET_V4, 5);
PARSE(TS_SHOW_IFACE_TAG, 1);
PARSE(TS_HIDE_IFACE_TAG, 1);
PARSE(TS_SET_BODYPART_HIT_MODIFIER, 2);
PARSE(TS_SET_CRITICAL_TABLE, 5);
PARSE(TS_RESET_CRITICAL_TABLE, 4);
PARSE(TS_SET_SFALL_RETURN, 1);
PARSE(TS_SET_UNSPENT_AP_BONUS, 1);
PARSE(TS_SET_UNSPENT_AP_EBONUS, 1);
PARSE(TS_SET_PALETTE, 1);
PARSE(TS_REMOVE_SCRIPT, 1);
PARSE(TS_SET_SCRIPT, 2);
PARSE(TS_FS_WRITE_BYTE, 2);
PARSE(TS_FS_WRITE_SHORT, 2);
PARSE(TS_FS_WRITE_INT, 2);
PARSE(TS_FS_WRITE_FLOAT, 2);
PARSE(TS_FS_WRITE_STRING, 2);
PARSE(TS_FS_DELETE, 1);
PARSE(TS_FS_SEEK, 2);
PARSE(TS_FS_RESIZE, 2);
PARSE(TS_SET_PROTO_DATA, 3);
PARSE(TS_SET_SELF, 1);
PARSE(TS_REGISTER_HOOK, 1);
PARSE(TS_FS_WRITE_BSTRING, 2);
PARSE(TS_LIST_END, 1);
PARSE(TS_HERO_SELECT_WIN, 1);
PARSE(TS_SET_HERO_RACE, 1);
PARSE(TS_SET_HERO_STYLE, 1);
PARSE(TS_SET_CRITTER_BURST_DISABLE, 2);
PARSE(TS_SET_WEAPON_AMMO_PID, 2);
PARSE(TS_SET_WEAPON_AMMO_COUNT, 2);
PARSE(TS_WRITE_STRING, 2);
PARSE(TS_STOP_GAME, 0);
PARSE(TS_RESUME_GAME, 0);
PARSE(TS_CREATE_MESSAGE_WINDOW, 1);
PARSE(TS_REMOVE_TRAIT, 1);
PARSE(TS_REFRESH_PC_ART, 0);
PARSE(TS_FORCE_ENCOUNTER_WITH_FLAGS, 2);
PARSE(TS_SET_MAP_TIME_MULTI, 1);
PARSE(TS_STOP_SFALL_SOUND, 1);
PARSE(TS_SET_ARRAY, 3);
PARSE(TS_FREE_ARRAY, 1);
PARSE(TS_RESIZE_ARRAY, 2);
PARSE(TS_FIX_ARRAY, 1);
PARSE(TS_SET_SFALL_ARG, 2);
PARSE(TS_FORCE_AIMED_SHOTS, 1);
PARSE(TS_DISABLE_AIMED_SHOTS, 1);
PARSE(TS_MARK_MOVIE_PLAYED, 1);
PARSE(TS_SET_CRITTER_SKILL_POINTS, 3);
PARSE(TS_SET_AVAILABLE_SKILL_POINTS, 1);
PARSE(TS_MOD_SKILL_POINTS_PER_LEVEL, 1);
PARSE(TS_SET_PERK_FREQ, 1);
PARSE(TS_BLOCK_COMBAT, 1);
PARSE(TS_SET_INVEN_AP_COST, 1);
#if (FALLOUT_VERSION != 2)
PARSE(ANIMATE_JUMP, 0); // 455
PARSE(TURN_OFF_OBJS_IN_AREA, 4); // 473
PARSE(TURN_ON_OBJS_IN_AREA, 4); // 474
PARSE(BARTER_OFFER, 3); // 477
PARSE(BARTER_ASKING, 3); // 478
PARSE(TOWN_MAP, 0); // 513
#endif
default: {
const SfallOpcode* opcode = getSfallOpcode(token);
if (opcode) {
parseLibArgs(p, nodes, opcode->numArgs, opcode->procArgs);
}
}
}
}
int writeExtraStatement(NodeList *n, int i, FILE *f) {
switch(n->nodes[i].token) {
EXP(GIVE_EXP_POINTS, 1); // 409
EXP(SCR_RETURN, 1); // 410
EXP(PLAY_SFX, 1); // 411
#if (FALLOUT_VERSION == 2)
EXP(MARK_AREA_KNOWN, 3); // 426
#endif
EXP(SET_MAP_START, 4); // 416
EXP(OVERRIDE_MAP_START, 4); // 417
EXPST(HAS_SKILL, 2); // 418
EXPST(USING_SKILL, 2); // 419
EXPST(ROLL_VS_SKILL, 3); // 420
EXPST(SKILL_CONTEST, 3); // 421
EXPST(DO_CHECK, 3); // 422
EXPST(ROLL_DICE, 2); // 429
EXPST(MOVE_TO, 3); // 430
EXPST(CREATE_OBJECT_SID, 4); // 431
EXP(DISPLAY_MSG, 1); // 432
EXP(SCRIPT_OVERRIDES, 0); // 433
EXP(SET_LOCAL_VAR, 2); // 442
EXP(SET_MAP_VAR, 2); // 444
EXP(SET_GLOBAL_VAR, 2); // 446
EXPST(SET_CRITTER_STAT, 3); // 451
EXP(ANIMATE_STAND_OBJ, 1); // 452
EXP(ANIMATE_STAND_REVERSE_OBJ, 1); // 453
EXP(ANIMATE_MOVE_OBJ_TO_TILE, 3); // 454
EXP(ATTACK_COMPLEX, 8); // 456
EXP(MAKE_DAYTIME, 0); // 457
EXP(PICKUP_OBJ, 1); // 462
EXP(DROP_OBJ, 1); // 463
EXP(ADD_OBJ_TO_INVEN, 2); // 464
EXP(RM_OBJ_FROM_INVEN, 2); // 465
EXP(WIELD_OBJ_CRITTER, 2); // 466
EXP(USE_OBJ, 1); // 467
EXP(ATTACK, 8); // 469
EXP(START_GDIALOG, 5); // 470
EXP(END_DIALOGUE, 0); // 471
EXP(DIALOGUE_REACTION, 1); // 472
#if (FALLOUT_VERSION == 2)
EXP(SET_MAP_MUSIC, 2); // 474
#endif
EXP(SET_OBJ_VISIBILITY, 2); // 475
EXP(LOAD_MAP, 2); // 476
#if (FALLOUT_VERSION == 2)
EXP(WM_AREA_SET_POS, 3); // 477
EXP(SET_EXIT_GRIDS, 5); // 478
#endif
EXPST(CRITTER_HEAL, 2); // 480
EXP(SET_LIGHT_LEVEL, 1); // 481
EXP(KILL_CRITTER, 2); // 485
EXP(KILL_CRITTER_TYPE, 2); // 486
EXP(CRITTER_DMG, 3); // 487
EXP(ADD_TIMER_EVENT, 3); // 488
EXP(RM_TIMER_EVENT, 1); // 489
EXP(DESTROY_OBJECT, 1); // 492
EXP(DIALOGUE_SYSTEM_ENTER, 0); // 497
EXP(GAME_TIME_ADVANCE, 1); // 500
EXP(RADIATION_INC, 2); // 501
EXP(RADIATION_DEC, 2); // 502
EXPST(CRITTER_ATTEMPT_PLACEMENT, 3); // 503
EXPST(CRITTER_ADD_TRAIT, 4); // 506
EXPST(CRITTER_RM_TRAIT, 4); // 507
EXP(OBJ_SET_LIGHT_LEVEL, 3); // 511
EXP(WORLD_MAP, 0); // 512
EXP(FLOAT_MSG, 3); // 514
EXPST(METARULE, 2); // 515
#if (FALLOUT_VERSION == 2)
EXPST(METARULE3, 4); // 473
#endif
EXP(ANIM, 3); // 516
EXP(REG_ANIM_FUNC, 2); // 518
EXP(REG_ANIM_ANIMATE, 3); // 519
EXP(REG_ANIM_ANIMATE_REVERSE, 3); // 520
EXP(REG_ANIM_OBJ_MOVE_TO_OBJ, 3); // 521
EXP(REG_ANIM_OBJ_RUN_TO_OBJ, 3); // 522
EXP(REG_ANIM_OBJ_MOVE_TO_TILE, 3); // 523
EXP(REG_ANIM_OBJ_RUN_TO_TILE, 3); // 524
EXP(PLAY_GMOVIE, 1); // 525
EXP(ADD_MULT_OBJS_TO_INVEN, 3); // 526
EXP(EXPLOSION, 3); // 530
ST(GSAY_START); // 532 !!!
ST(GSAY_END); // 533 !!!
EXP(GSAY_REPLY, 2); // 534
EXPPROC(GSAY_OPTION, 4); // 535 !!!
EXP(GSAY_MESSAGE, 3); // 536
EXPPROC(GIQ_OPTION, 5); // 537 !!!
EXP(POISON, 2); // 538
EXP(PARTY_ADD, 1); // 540
EXP(PARTY_REMOVE, 1); // 541
EXP(REG_ANIM_ANIMATE_FOREVER, 2); // 542
EXP(CRITTER_INJURE, 2); // 543
EXP(GDIALOG_MOD_BARTER, 1); // 545
EXP(INVEN_UNWIELD, 0); // 548
EXP(OBJ_LOCK, 1); // 550
EXP(OBJ_UNLOCK, 1); // 551
EXP(OBJ_OPEN, 1); // 553
EXP(OBJ_CLOSE, 1); // 554
EXP(GAME_UI_DISABLE, 0); // 555
EXP(GAME_UI_ENABLE, 0); // 556
EXP(GFADE_OUT, 1); // 558
EXP(GFADE_IN, 1); // 559
EXPST(ITEM_CAPS_ADJUST, 2); // 561
EXP(REG_ANIM_PLAY_SFX, 3); // 563
EXP(CRITTER_MOD_SKILL, 3); // 564
EXP(ATTACK_SETUP, 2); // 571
EXP(USE_OBJ_ON_OBJ, 2); // 573
EXP(ENDGAME_SLIDESHOW, 0); // 574
EXP(MOVE_OBJ_INVEN_TO_OBJ, 2); // 575
EXP(ENDGAME_MOVIE, 0); // 576
EXP(JAM_LOCK, 1); // 581
EXP(GDIALOG_SET_BARTER_MOD, 1); // 582
EXP(CRITTER_SET_FLEE_STATE, 2); // 586
EXP(TERMINATE_COMBAT, 0); // 587
EXP(DEBUG_MSG, 1); // 588
EXP(CRITTER_STOP_ATTACKING, 1); // 589
EXP(TS_SET_PC_BASE_STAT, 2);
EXP(TS_SET_PC_EXTRA_STAT, 2);
EXP(TS_SET_CRITTER_BASE_STAT, 3);
EXP(TS_SET_CRITTER_EXTRA_STAT, 3);
EXP(TS_TAP_KEY, 1);
EXP(TS_FREE_SHADER, 1);
EXP(TS_ACTIVATE_SHADER, 1);
EXP(TS_DEACTIVATE_SHADER, 1);
EXP(TS_SET_GLOBAL_SCRIPT_REPEAT, 1);
EXP(TS_SET_SHADER_INT, 3);
EXP(TS_SET_SHADER_FLOAT, 3);
EXP(TS_SET_SHADER_VECTOR, 6);
EXP(TS_FORCE_ENCOUNTER, 1);
EXP(TS_SET_WORLD_MAP_POS, 2);
EXP(TS_SET_DM_MODEL, 1);
EXP(TS_SET_DF_MODEL, 1);
EXP(TS_SET_MOVIE_PATH, 2);
EXP(TS_SET_PERK_IMAGE, 2);
EXP(TS_SET_PERK_RANKS, 2);
EXP(TS_SET_PERK_LEVEL, 2);
EXP(TS_SET_PERK_STAT, 2);
EXP(TS_SET_PERK_STAT_MAG, 2);
EXP(TS_SET_PERK_SKILL1, 2);
EXP(TS_SET_PERK_SKILl1_MAG, 2);
EXP(TS_SET_PERK_TYPE, 2);
EXP(TS_SET_PERK_SKILL2, 2);
EXP(TS_SET_PERK_SKILL2_MAG, 2);
EXP(TS_SET_PERK_STR, 2);
EXP(TS_SET_PERK_PER, 2);
EXP(TS_SET_PERK_END, 2);
EXP(TS_SET_PERK_CHR, 2);
EXP(TS_SET_PERK_INT, 2);
EXP(TS_SET_PERK_AGL, 2);
EXP(TS_SET_PERK_LCK, 2);
EXP(TS_SET_PERK_NAME, 2);
EXP(TS_SET_PERK_DESC, 2);
EXP(TS_SET_PIPBOY_AVAILABLE, 1);
EXP(TS_MOD_KILL_COUNTER, 2);
EXP(TS_SET_PERK_OWED, 1);
EXP(TS_SET_CRITTER_AP, 2);
EXP(TS_TOGGLE_ACTIVE_HAND, 0);
EXP(TS_SET_WEAPON_KNOCKBACK, 3);
EXP(TS_SET_TARGET_KNOCKBACK, 3);
EXP(TS_SET_ATTACKER_KNOCKBACK, 3);
EXP(TS_REMOVE_WEAPON_KNOCKBACK, 1);
EXP(TS_REMOVE_TARGET_KNOCKBACK, 1);
EXP(TS_REMOVE_ATTACKER_KNOCKBACK, 1);
EXP(TS_SET_GLOBAL_SCRIPT_TYPE, 1);
EXP(TS_SET_SFALL_GLOBAL, 2);
EXP(TS_SET_PICKPOCKET_MAX, 1);
EXP(TS_SET_HIT_CHANCE_MAX, 1);
EXP(TS_SET_SKILL_MAX, 1);
EXP(TS_SET_EAX_ENVIRONMENT, 1);
EXP(TS_INC_NPC_LEVEL, 1);
EXP(TS_SET_VIEWPORT_X, 1);
EXP(TS_SET_VIEWPORT_Y, 1);
EXP(TS_SET_XP_MOD, 1);
EXP(TS_SET_PERK_LEVEL_MOD, 1);
EXP(TS_SET_SHADER_MODE, 2);
EXP(TS_FORCE_GRAPHICS_REFRESH, 1);
EXP(TS_SET_SHADER_TEXTURE, 3);
EXP(TS_SET_STAT_MAX, 2);
EXP(TS_SET_STAT_MIN, 2);
EXP(TS_SET_CAR_CURRENT_TOWN, 1);
EXP(TS_SET_PC_STAT_MAX, 2);
EXP(TS_SET_PC_STAT_MIN, 2);
EXP(TS_SET_NPC_STAT_MAX, 2);
EXP(TS_SET_NPC_STAT_MIN, 2);
EXP(TS_SET_FAKE_PERK, 4);
EXP(TS_SET_FAKE_TRAIT, 4);
EXP(TS_SET_SELECTABLE_PERK, 4);
EXP(TS_SET_PERKBOX_TITLE, 1);
EXP(TS_HIDE_REAL_PERKS, 0);
EXP(TS_SHOW_REAL_PERKS, 0);
EXP(TS_PERK_ADD_MODE, 1);
EXP(TS_CLEAR_SELECTABLE_PERKS, 0);
EXP(TS_SET_CRITTER_HIT_CHANCE_MOD, 3);
EXP(TS_SET_BASE_HIT_CHANCE_MOD, 2);
EXP(TS_SET_CRITTER_SKILL_MOD, 2);
EXP(TS_SET_BASE_SKILL_MOD, 1);
EXP(TS_SET_CRITTER_PICKPOCKET_MOD, 3);
EXP(TS_SET_BASE_PICKPOCKET_MOD, 2);
EXP(TS_SET_PYROMANIAC_MOD, 1);
EXP(TS_APPLY_HEAVEHO_FIX, 0);
EXP(TS_SET_SWIFTLEARNER_MOD, 1);
EXP(TS_SET_HP_LEVEL_MOD, 1);
EXP(TS_WRITE_BYTE, 2);
EXP(TS_WRITE_SHORT, 2);
EXP(TS_WRITE_INT, 2);
EXP(TS_CALL_OFFSET_V0, 1);
EXP(TS_CALL_OFFSET_V1, 2);
EXP(TS_CALL_OFFSET_V2, 3);
EXP(TS_CALL_OFFSET_V3, 4);
EXP(TS_CALL_OFFSET_V4, 5);
EXP(TS_SHOW_IFACE_TAG, 1);
EXP(TS_HIDE_IFACE_TAG, 1);
EXP(TS_SET_BODYPART_HIT_MODIFIER, 2);
EXP(TS_SET_CRITICAL_TABLE, 5);
EXP(TS_RESET_CRITICAL_TABLE, 4);
EXP(TS_SET_SFALL_RETURN, 1);
EXP(TS_SET_UNSPENT_AP_BONUS, 1);
EXP(TS_SET_UNSPENT_AP_EBONUS, 1);
EXP(TS_SET_PALETTE, 1);
EXP(TS_REMOVE_SCRIPT, 1);
EXP(TS_SET_SCRIPT, 2);
EXP(TS_FS_WRITE_BYTE, 2);
EXP(TS_FS_WRITE_SHORT, 2);
EXP(TS_FS_WRITE_INT, 2);
EXP(TS_FS_WRITE_FLOAT, 2);
EXP(TS_FS_WRITE_STRING, 2);
EXP(TS_FS_DELETE, 1);
EXP(TS_FS_SEEK, 2);
EXP(TS_FS_RESIZE, 2);
EXP(TS_SET_PROTO_DATA, 3);
EXP(TS_SET_SELF, 1);
EXP(TS_REGISTER_HOOK, 1);
EXP(TS_FS_WRITE_BSTRING, 2);
EXP(TS_LIST_END, 1);
EXP(TS_HERO_SELECT_WIN, 1);
EXP(TS_SET_HERO_RACE, 1);
EXP(TS_SET_HERO_STYLE, 1);
EXP(TS_SET_CRITTER_BURST_DISABLE, 2);
EXP(TS_SET_WEAPON_AMMO_PID, 2);
EXP(TS_SET_WEAPON_AMMO_COUNT, 2);
EXP(TS_WRITE_STRING, 2);
EXP(TS_STOP_GAME, 0);
EXP(TS_RESUME_GAME, 0);
EXP(TS_CREATE_MESSAGE_WINDOW, 1);
EXP(TS_REMOVE_TRAIT, 1);
EXP(TS_REFRESH_PC_ART, 0);
EXP(TS_FORCE_ENCOUNTER_WITH_FLAGS, 2);
EXP(TS_SET_MAP_TIME_MULTI, 1);
EXP(TS_STOP_SFALL_SOUND, 1);
EXP(TS_SET_ARRAY, 3);
EXP(TS_FREE_ARRAY, 1);
EXP(TS_RESIZE_ARRAY, 2);
EXP(TS_FIX_ARRAY, 1);
EXP(TS_SET_SFALL_ARG, 2);
EXP(TS_FORCE_AIMED_SHOTS, 1);
EXP(TS_DISABLE_AIMED_SHOTS, 1);
EXP(TS_MARK_MOVIE_PLAYED, 1);
EXP(TS_SET_CRITTER_SKILL_POINTS, 3);
EXP(TS_SET_AVAILABLE_SKILL_POINTS, 1);
EXP(TS_MOD_SKILL_POINTS_PER_LEVEL, 1);
EXP(TS_SET_PERK_FREQ, 1);
EXP(TS_BLOCK_COMBAT, 1);
EXP(TS_SET_INVEN_AP_COST, 1);
#if (FALLOUT_VERSION != 2)
EXP(ANIMATE_JUMP, 0); // 455
EXP(TURN_OFF_OBJS_IN_AREA, 4); // 473
EXP(TURN_ON_OBJS_IN_AREA, 4); // 474
EXP(BARTER_OFFER, 3); // 477
EXP(BARTER_ASKING, 3); // 478
EXP(TOWN_MAP, 0); // 513
#endif
default: {
const SfallOpcode* opcode = getSfallOpcode(n->nodes[i].token);
i++;
if (opcode && opcode->isStatement) {
if (opcode->procArgs != 0) {
i = writeNumExpressionProc(n, i, opcode->numArgs, f);
} else {
i = writeNumExpression(n, i, opcode->numArgs, f);
}
writeOp(opcode->opcode, f);
if (opcode->isExpression) {
writeOp(O_POP, f);
}
}
break;
}
}
return i;
}
int writeExtraExpression(NodeList *n, int i, FILE *f) {
f = f;
switch(n->nodes[i].token) {
EXP(HAS_SKILL, 2); // 418
EXP(USING_SKILL, 2); // 419
EXP(ROLL_VS_SKILL, 3); // 420
EXP(SKILL_CONTEST, 3); // 421
EXP(DO_CHECK, 3); // 422
EXP(IS_SUCCESS, 1); // 423
EXP(IS_CRITICAL, 1); // 424
EXP(HOW_MUCH, 1); // 425
EXP(REACTION_INFLUENCE, 3); // 427
EXP(RANDOM, 2); // 428
EXP(ROLL_DICE, 2); // 429
EXP(MOVE_TO, 3); // 430
EXP(CREATE_OBJECT_SID, 4); // 431
EXP(OBJ_IS_CARRYING_OBJ_PID, 2); // 434
EXP(TILE_CONTAINS_OBJ_PID, 3); // 435
#if (FALLOUT_VERSION == 2)
EXP(TILE_IN_TILE_RECT, 5); // 455
#endif
EXP(SELF_OBJ, 0); // 436
EXP(SOURCE_OBJ, 0); // 437
EXP(TARGET_OBJ, 0); // 438
EXP(DUDE_OBJ, 0); // 439
EXP(OBJ_BEING_USED_WITH, 0); // 440
EXP(LOCAL_VAR, 1); // 441
EXP(MAP_VAR, 1); // 443
EXP(GLOBAL_VAR, 1); // 445
EXP(SCRIPT_ACTION, 0); // 447
EXP(OBJ_TYPE, 1); // 448
EXP(OBJ_ITEM_SUBTYPE, 1); // 449
EXP(GET_CRITTER_STAT, 2); // 450
EXP(SET_CRITTER_STAT, 3); // 451
EXP(TILE_DISTANCE, 2); // 458
EXP(TILE_DISTANCE_OBJS, 2); // 459
EXP(TILE_NUM, 1); // 460
EXP(TILE_NUM_IN_DIRECTION, 3); // 461
EXP(OBJ_CAN_SEE_OBJ, 2); // 468
EXP(ANIM_BUSY, 1); // 479
EXP(CRITTER_HEAL, 2); // 480
EXP(GAME_TIME, 0); // 482
EXP(GAME_TIME_IN_SECONDS, 0); // 483
EXP(ELEVATION, 1); // 484
EXP(GAME_TICKS, 1); // 490
EXP(HAS_TRAIT, 3); // 491
EXP(OBJ_CAN_HEAR_OBJ, 2); // 493
EXP(GAME_TIME_HOUR, 0); // 494
EXP(FIXED_PARAM, 0); // 495
EXP(TILE_IS_VISIBLE, 1); // 496
EXP(ACTION_BEING_USED, 0); // 498
EXP(CRITTER_STATE, 1); // 499
EXP(CRITTER_ATTEMPT_PLACEMENT, 3); // 503
EXP(OBJ_PID, 1); // 504
EXP(CUR_MAP_INDEX, 0); // 505
EXP(CRITTER_ADD_TRAIT, 4); // 506
EXP(CRITTER_RM_TRAIT, 4); // 507
EXP(PROTO_DATA, 2); // 508
EXP(MESSAGE_STR, 2); // 509
EXP(CRITTER_INVEN_OBJ, 2); // 510
#if (FALLOUT_VERSION == 2)
EXP(INVEN_CMDS, 3); // 513
#endif
EXP(METARULE, 2); // 515
#if (FALLOUT_VERSION == 2)
EXP(METARULE3, 4); // 473
#endif
EXP(OBJ_CARRYING_PID_OBJ, 2); // 517
// EXP(ADD_MULT_OBJS_TO_INVEN, 3); // 526
EXP(RM_MULT_OBJS_FROM_INVEN, 3); // 527
EXP(GET_MONTH, 0); // 528
EXP(GET_DAY, 0); // 529
EXP(DAYS_SINCE_VISITED, 0); // 531
EXP(GET_POISON, 1); // 539
EXP(COMBAT_IS_INITIALIZED, 0); // 544
EXP(DIFFICULTY_LEVEL, 0); // 546
EXP(RUNNING_BURNING_GUY, 0); // 547
EXP(OBJ_IS_LOCKED, 1); // 549
EXP(OBJ_IS_OPEN, 1); // 552
EXP(GAME_UI_IS_DISABLED, 0); // 557
EXP(ITEM_CAPS_TOTAL, 1); // 560
EXP(ITEM_CAPS_ADJUST, 2); // 561
EXP(ANIM_ACTION_FRAME, 2); // 562
EXP(DESTROY_MULT_OBJS, 2); // 572
EXP(ENDGAME_SLIDESHOW, 0); // 574
EXP(ENDGAME_MOVIE, 0); // 576
EXP(OBJ_ART_FID, 1); // 577
EXP(ART_ANIM, 1); // 578
EXP(PARTY_MEMBER_OBJ, 1); // 579
EXP(ROTATION_TO_TILE, 2); // 580
EXP(SFX_BUILD_CHAR_NAME, 3); // 565
EXP(SFX_BUILD_AMBIENT_NAME, 1); // 566
EXP(SFX_BUILD_INTERFACE_NAME, 1); // 567
EXP(SFX_BUILD_ITEM_NAME, 1); // 568
EXP(SFX_BUILD_WEAPON_NAME, 4); // 569
EXP(SFX_BUILD_SCENERY_NAME, 3); // 570
EXP(SFX_BUILD_OPEN_NAME, 2); // 413
EXP(GET_PC_STAT, 1); // 414
EXP(COMBAT_DIFFICULTY, 0); // 583
EXP(OBJ_ON_SCREEN, 1); // 584
EXP(CRITTER_IS_FLEEING, 1); // 585
EXP(TILE_CONTAINS_PID_OBJ, 3); // 415
EXP(OBJ_NAME, 1); // 412
EXP(TS_READ_BYTE, 1);
EXP(TS_READ_SHORT, 1);
EXP(TS_READ_INT, 1);
EXP(TS_READ_STRING, 1);
EXP(TS_GET_PC_BASE_STAT, 1);
EXP(TS_GET_PC_EXTRA_STAT, 1);
EXP(TS_GET_CRITTER_BASE_STAT, 2);
EXP(TS_GET_CRITTER_EXTRA_STAT, 2);
EXP(TS_GET_YEAR, 0);
EXP(TS_GAME_LOADED, 0);
EXP(TS_GRAPHICS_FUNCS_AVAILABLE, 0);
EXP(TS_LOAD_SHADER, 1);
EXP(TS_INPUT_FUNCS_AVAILABLE, 0);
EXP(TS_KEY_PRESSED, 1);
EXP(TS_IN_WORLD_MAP, 0);
EXP(TS_GET_WORLD_MAP_X_POS, 0);
EXP(TS_GET_WORLD_MAP_Y_POS, 0);
EXP(TS_GET_KILL_COUNTER, 1);
EXP(TS_GET_PERK_OWED, 0);
EXP(TS_GET_PERK_AVAILABLE, 1);
EXP(TS_GET_CRITTER_AP, 1);
EXP(TS_GET_ACTIVE_HAND, 0);
EXP(TS_AVAILABLE_GLOBAL_SCRIPT_TYPES, 0);
EXP(TS_GET_SFALL_GLOBAL_INT, 1);
EXP(TS_GET_SFALL_GLOBAL_FLOAT, 1);
EXP(TS_EAX_AVAILABLE, 0);
EXP(TS_GET_VIEWPORT_X, 0);
EXP(TS_GET_VIEWPORT_Y, 0);
EXP(TS_GET_INI_SETTING, 1);
EXP(TS_GET_SHADER_VERSION, 0);
EXP(TS_GET_GAME_MODE, 0);
EXP(TS_GET_SHADER_TEXTURE, 2);
EXP(TS_GET_UPTIME, 0);
EXP(TS_HAS_FAKE_PERK, 1);
EXP(TS_HAS_FAKE_TRAIT, 1);
EXP(TS_CALL_OFFSET_R0, 1);
EXP(TS_CALL_OFFSET_R1, 2);
EXP(TS_CALL_OFFSET_R2, 3);
EXP(TS_CALL_OFFSET_R3, 4);
EXP(TS_CALL_OFFSET_R4, 5);
EXP(TS_IS_IFACE_TAG_ACTIVE, 1);
EXP(TS_GET_BODYPART_HIT_MODIFIER, 1);
EXP(TS_GET_CRITICAL_TABLE, 4);
EXP(TS_GET_SFALL_ARG, 0);
EXP(TS_GET_UNSPENT_AP_BONUS, 0);
EXP(TS_GET_UNSPENT_AP_EBONUS, 0);
EXP(TS_INIT_HOOK, 0);
EXP(TS_GET_INI_STRING, 1);
EXP(TS_SQRT, 1);
EXP(TS_ABS, 1);
EXP(TS_SIN, 1);
EXP(TS_COS, 1);
EXP(TS_TAN, 1);
EXP(TS_ATAN, 2);
EXP(TS_GET_SCRIPT, 1);
EXP(TS_NB_CREATE_CHAR, 0);
EXP(TS_FS_CREATE, 2);
EXP(TS_FS_COPY, 2);
EXP(TS_FS_FIND, 1);
EXP(TS_FS_SIZE, 1);
EXP(TS_FS_POS, 1);
EXP(TS_GET_PROTO_DATA, 2);
EXP(TS_FS_READ_BYTE, 1);
EXP(TS_FS_READ_SHORT, 1);
EXP(TS_FS_READ_INT, 1);
EXP(TS_FS_READ_FLOAT, 1);
EXP(TS_LIST_BEGIN, 1);
EXP(TS_LIST_NEXT, 1);
EXP(TS_SFALL_VER_MAJOR, 0);
EXP(TS_SFALL_VER_MINOR, 0);
EXP(TS_SFALL_VER_BUILD, 0);
EXP(TS_GET_WEAPON_AMMO_PID, 1);
EXP(TS_GET_WEAPON_AMMO_COUNT, 1);
EXP(TS_GET_MOUSE_X, 0);
EXP(TS_GET_MOUSE_Y, 0);
EXP(TS_GET_MOUSE_BUTTONS, 0);
EXP(TS_GET_WINDOW_UNDER_MOUSE, 0);
EXP(TS_GET_SCREEN_WIDTH, 0);
EXP(TS_GET_SCREEN_HEIGHT, 0);
EXP(TS_GET_LIGHT_LEVEL, 0);
EXP(TS_GET_ATTACK_TYPE, 0);
EXP(TS_PLAY_SFALL_SOUND, 2);
EXP(TS_CREATE_ARRAY, 2);
EXP(TS_GET_ARRAY, 2);
EXP(TS_LEN_ARRAY, 1);
EXP(TS_TEMP_ARRAY, 2);
EXP(TS_STRING_SPLIT, 2);
EXP(TS_LIST_AS_ARRAY, 1);
EXP(TS_ATOI, 1);
EXP(TS_ATOF, 1);
EXP(TS_SCAN_ARRAY, 2);
EXP(TS_TILE_PID, 1);
EXP(TS_MODIFIED_INI, 0);
EXP(TS_GET_SFALL_ARGS, 0);
EXP(TS_GET_NPC_LEVEL, 1);
EXP(TS_GET_CRITTER_SKILL_POINTS, 2);
EXP(TS_GET_AVAILABLE_SKILL_POINTS, 0);
EXP(TS_GET_LAST_ATTACKER, 1);
EXP(TS_GET_LAST_TARGET, 1);
EXP(TS_TILE_UNDER_CURSOR, 0);
EXP(TS_GET_BARTER_MOD, 0);
EXP(TS_SUBSTR, 3);
EXP(TS_STRLEN, 1);
EXP(TS_SPRINTF, 2);
EXP(TS_ORD, 1);
// EXP(TS_, 2); RESERVED
EXP(TS_TYPEOF, 1);
//EXP(TS_CREATE_BUTTON, 6);
//EXP(TS_BUTTON_PRESSED, 0);
#if (FALLOUT_VERSION != 2)
EXP(REACTION, 3); // 426
#endif
default: {
const SfallOpcode* opcode = getSfallOpcode(n->nodes[i].token);
i++;
if (opcode && opcode->isExpression) {
if (opcode->procArgs != 0) {
i = writeNumExpressionProc(n, i, opcode->numArgs, f);
} else {
i = writeNumExpression(n, i, opcode->numArgs, f);
}
writeOp(opcode->opcode, f);
}
break;
}
}
return i;
}
void initLexExtras(void)
{
lexAddToken(T_GIVE_EXP_POINTS, "give_exp_points");
lexAddToken(T_SCR_RETURN, "scr_return");
lexAddToken(T_PLAY_SFX, "play_sfx");
lexAddToken(T_OBJ_NAME, "obj_name");
lexAddToken(T_SFX_BUILD_OPEN_NAME, "sfx_build_open_name");
lexAddToken(T_GET_PC_STAT, "get_pc_stat");
lexAddToken(T_TILE_CONTAINS_PID_OBJ, "tile_contains_pid_obj");
lexAddToken(T_SET_MAP_START, "set_map_start");
lexAddToken(T_OVERRIDE_MAP_START, "override_map_start");
lexAddToken(T_HAS_SKILL, "has_skill");
lexAddToken(T_USING_SKILL, "using_skill");
lexAddToken(T_ROLL_VS_SKILL, "roll_vs_skill");
lexAddToken(T_SKILL_CONTEST, "skill_contest");
lexAddToken(T_DO_CHECK, "do_check");
lexAddToken(T_IS_SUCCESS, "is_success");
lexAddToken(T_IS_CRITICAL, "is_critical");
lexAddToken(T_HOW_MUCH, "how_much");
#if (FALLOUT_VERSION == 2)
lexAddToken(T_MARK_AREA_KNOWN, "mark_area_known");
#else
lexAddToken(T_REACTION, "reaction");
#endif
lexAddToken(T_REACTION_INFLUENCE, "reaction_influence");
lexAddToken(T_RANDOM, "random");
lexAddToken(T_ROLL_DICE, "roll_dice");
lexAddToken(T_MOVE_TO, "move_to");
lexAddToken(T_CREATE_OBJECT_SID, "create_object_sid");
lexAddToken(T_DISPLAY_MSG, "display_msg");
lexAddToken(T_SCRIPT_OVERRIDES, "script_overrides");
lexAddToken(T_OBJ_IS_CARRYING_OBJ_PID, "obj_is_carrying_obj_pid");
lexAddToken(T_TILE_CONTAINS_OBJ_PID, "tile_contains_obj_pid");
lexAddToken(T_SELF_OBJ, "self_obj");
lexAddToken(T_SOURCE_OBJ, "source_obj");
lexAddToken(T_TARGET_OBJ, "target_obj");
lexAddToken(T_DUDE_OBJ, "dude_obj");
lexAddToken(T_OBJ_BEING_USED_WITH, "obj_being_used_with");
lexAddToken(T_LOCAL_VAR, "local_var");
lexAddToken(T_SET_LOCAL_VAR, "set_local_var");
lexAddToken(T_MAP_VAR, "map_var");
lexAddToken(T_SET_MAP_VAR, "set_map_var");
lexAddToken(T_GLOBAL_VAR, "global_var");
lexAddToken(T_SET_GLOBAL_VAR, "set_global_var");
lexAddToken(T_SCRIPT_ACTION, "script_action");
lexAddToken(T_OBJ_TYPE, "obj_type");
lexAddToken(T_OBJ_ITEM_SUBTYPE, "obj_item_subtype");
lexAddToken(T_GET_CRITTER_STAT, "get_critter_stat");
lexAddToken(T_SET_CRITTER_STAT, "set_critter_stat");
lexAddToken(T_ANIMATE_STAND_OBJ, "animate_stand_obj");
lexAddToken(T_ANIMATE_STAND_REVERSE_OBJ, "animate_stand_reverse_obj");
lexAddToken(T_ANIMATE_MOVE_OBJ_TO_TILE, "animate_move_obj_to_tile");
#if (FALLOUT_VERSION == 2)
lexAddToken(T_TILE_IN_TILE_RECT, "tile_in_tile_rect");
#else
lexAddToken(T_ANIMATE_JUMP, "animate_jump");
#endif
lexAddToken(T_ATTACK_COMPLEX, "attack_complex");
lexAddToken(T_MAKE_DAYTIME, "make_daytime");
lexAddToken(T_TILE_DISTANCE, "tile_distance");
lexAddToken(T_TILE_DISTANCE_OBJS, "tile_distance_objs");
lexAddToken(T_TILE_NUM, "tile_num");
lexAddToken(T_TILE_NUM_IN_DIRECTION, "tile_num_in_direction");
lexAddToken(T_PICKUP_OBJ, "pickup_obj");
lexAddToken(T_DROP_OBJ, "drop_obj");
lexAddToken(T_ADD_OBJ_TO_INVEN, "add_obj_to_inven");
lexAddToken(T_RM_OBJ_FROM_INVEN, "rm_obj_from_inven");
lexAddToken(T_WIELD_OBJ_CRITTER, "wield_obj_critter");
lexAddToken(T_USE_OBJ, "use_obj");
lexAddToken(T_OBJ_CAN_SEE_OBJ, "obj_can_see_obj");
lexAddToken(T_ATTACK, "attack");
lexAddToken(T_START_GDIALOG, "start_gdialog");
lexAddToken(T_END_DIALOGUE, "end_dialogue");
lexAddToken(T_DIALOGUE_REACTION, "dialogue_reaction");
#if (FALLOUT_VERSION == 2)
lexAddToken(T_METARULE3, "metarule3");
lexAddToken(T_SET_MAP_MUSIC, "set_map_music");
#else
lexAddToken(T_TURN_OFF_OBJS_IN_AREA, "turn_off_objs_in_area");
lexAddToken(T_TURN_ON_OBJS_IN_AREA, "turn_on_objs_in_area");
#endif
lexAddToken(T_SET_OBJ_VISIBILITY, "set_obj_visibility");
lexAddToken(T_LOAD_MAP, "load_map");
#if (FALLOUT_VERSION == 2)
lexAddToken(T_WM_AREA_SET_POS, "wm_area_set_pos");
lexAddToken(T_SET_EXIT_GRIDS, "set_exit_grids");
#else
lexAddToken(T_BARTER_OFFER, "barter_offer");
lexAddToken(T_BARTER_ASKING, "barter_asking");
#endif
lexAddToken(T_ANIM_BUSY, "anim_busy");
lexAddToken(T_CRITTER_HEAL, "critter_heal");
lexAddToken(T_SET_LIGHT_LEVEL, "set_light_level");
lexAddToken(T_GAME_TIME, "game_time");
lexAddToken(T_GAME_TIME_IN_SECONDS, "game_time_in_seconds");
lexAddToken(T_ELEVATION, "elevation");
lexAddToken(T_KILL_CRITTER, "kill_critter");
lexAddToken(T_KILL_CRITTER_TYPE, "kill_critter_type");
lexAddToken(T_CRITTER_DMG, "critter_dmg");
lexAddToken(T_ADD_TIMER_EVENT, "add_timer_event");
lexAddToken(T_RM_TIMER_EVENT, "rm_timer_event");
lexAddToken(T_GAME_TICKS, "game_ticks");
lexAddToken(T_HAS_TRAIT, "has_trait");
lexAddToken(T_DESTROY_OBJECT, "destroy_object");
lexAddToken(T_OBJ_CAN_HEAR_OBJ, "obj_can_hear_obj");
lexAddToken(T_GAME_TIME_HOUR, "game_time_hour");
lexAddToken(T_FIXED_PARAM, "fixed_param");
lexAddToken(T_TILE_IS_VISIBLE, "tile_is_visible");
lexAddToken(T_DIALOGUE_SYSTEM_ENTER, "dialogue_system_enter");
lexAddToken(T_ACTION_BEING_USED, "action_being_used");
lexAddToken(T_CRITTER_STATE, "critter_state");
lexAddToken(T_GAME_TIME_ADVANCE, "game_time_advance");
lexAddToken(T_RADIATION_INC, "radiation_inc");
lexAddToken(T_RADIATION_DEC, "radiation_dec");
lexAddToken(T_CRITTER_ATTEMPT_PLACEMENT, "critter_attempt_placement");
lexAddToken(T_OBJ_PID, "obj_pid");
lexAddToken(T_CUR_MAP_INDEX, "cur_map_index");
lexAddToken(T_CRITTER_ADD_TRAIT, "critter_add_trait");
lexAddToken(T_CRITTER_RM_TRAIT, "critter_rm_trait");
lexAddToken(T_PROTO_DATA, "proto_data");
lexAddToken(T_MESSAGE_STR, "message_str");
lexAddToken(T_CRITTER_INVEN_OBJ, "critter_inven_obj");
lexAddToken(T_OBJ_SET_LIGHT_LEVEL, "obj_set_light_level");
lexAddToken(T_WORLD_MAP, "world_map");
#if (FALLOUT_VERSION == 2)
lexAddToken(T_INVEN_CMDS, "inven_cmds");
#else
lexAddToken(T_TOWN_MAP, "town_map");
#endif
lexAddToken(T_FLOAT_MSG, "float_msg");
lexAddToken(T_METARULE, "metarule");
lexAddToken(T_ANIM, "anim");
lexAddToken(T_OBJ_CARRYING_PID_OBJ, "obj_carrying_pid_obj");
lexAddToken(T_REG_ANIM_FUNC, "REG_ANIM_FUNC");
lexAddToken(T_REG_ANIM_ANIMATE, "reg_anim_animate");
lexAddToken(T_REG_ANIM_ANIMATE_REVERSE, "reg_anim_animate_reverse");
lexAddToken(T_REG_ANIM_OBJ_MOVE_TO_OBJ, "reg_anim_obj_move_to_obj");
lexAddToken(T_REG_ANIM_OBJ_RUN_TO_OBJ, "reg_anim_obj_run_to_obj");
lexAddToken(T_REG_ANIM_OBJ_MOVE_TO_TILE, "reg_anim_obj_move_to_tile");
lexAddToken(T_REG_ANIM_OBJ_RUN_TO_TILE, "reg_anim_obj_run_to_tile");
lexAddToken(T_PLAY_GMOVIE, "play_gmovie");
lexAddToken(T_ADD_MULT_OBJS_TO_INVEN, "add_mult_objs_to_inven");
lexAddToken(T_RM_MULT_OBJS_FROM_INVEN, "rm_mult_objs_from_inven");
lexAddToken(T_GET_MONTH, "get_month");
lexAddToken(T_GET_DAY, "get_day");
lexAddToken(T_EXPLOSION, "explosion");
lexAddToken(T_DAYS_SINCE_VISITED, "days_since_visited");
lexAddToken(T_GSAY_START, "gsay_start");
lexAddToken(T_GSAY_END, "gsay_end");
lexAddToken(T_GSAY_REPLY, "gsay_reply");
lexAddToken(T_GSAY_OPTION, "gsay_option");
lexAddToken(T_GSAY_MESSAGE, "gsay_message");
lexAddToken(T_GIQ_OPTION, "giq_option");
lexAddToken(T_POISON, "poison");
lexAddToken(T_GET_POISON, "get_poison");
lexAddToken(T_PARTY_ADD, "party_add");
lexAddToken(T_PARTY_REMOVE, "party_remove");
lexAddToken(T_REG_ANIM_ANIMATE_FOREVER, "reg_anim_animate_forever");
lexAddToken(T_CRITTER_INJURE, "critter_injure");
lexAddToken(T_COMBAT_IS_INITIALIZED, "combat_is_initialized");
lexAddToken(T_GDIALOG_MOD_BARTER, "gdialog_mod_barter");
lexAddToken(T_DIFFICULTY_LEVEL, "difficulty_level");
lexAddToken(T_RUNNING_BURNING_GUY, "running_burning_guy");
lexAddToken(T_INVEN_UNWIELD, "inven_unwield");
lexAddToken(T_OBJ_IS_LOCKED, "obj_is_locked");
lexAddToken(T_OBJ_LOCK, "obj_lock");
lexAddToken(T_OBJ_UNLOCK, "obj_unlock");
lexAddToken(T_OBJ_IS_OPEN, "obj_is_open");
lexAddToken(T_OBJ_OPEN, "obj_open");
lexAddToken(T_OBJ_CLOSE, "obj_close");
lexAddToken(T_GAME_UI_DISABLE, "game_ui_disable");
lexAddToken(T_GAME_UI_ENABLE, "game_ui_enable");
lexAddToken(T_GAME_UI_IS_DISABLED, "game_ui_is_disabled");
lexAddToken(T_GFADE_OUT, "gfade_out");
lexAddToken(T_GFADE_IN, "gfade_in");
lexAddToken(T_ITEM_CAPS_TOTAL, "item_caps_total");
lexAddToken(T_ITEM_CAPS_ADJUST, "item_caps_adjust");
lexAddToken(T_ANIM_ACTION_FRAME, "anim_action_frame");
lexAddToken(T_REG_ANIM_PLAY_SFX, "reg_anim_play_sfx");
lexAddToken(T_CRITTER_MOD_SKILL, "critter_mod_skill");
lexAddToken(T_SFX_BUILD_CHAR_NAME, "sfx_build_char_name");
lexAddToken(T_SFX_BUILD_AMBIENT_NAME, "sfx_build_ambient_name");
lexAddToken(T_SFX_BUILD_INTERFACE_NAME, "sfx_build_interface_name");
lexAddToken(T_SFX_BUILD_ITEM_NAME, "sfx_build_item_name");
lexAddToken(T_SFX_BUILD_WEAPON_NAME, "sfx_build_weapon_name");
lexAddToken(T_SFX_BUILD_SCENERY_NAME, "sfx_build_scenery_name");
lexAddToken(T_ATTACK_SETUP, "attack_setup");
lexAddToken(T_DESTROY_MULT_OBJS, "destroy_mult_objs");
lexAddToken(T_USE_OBJ_ON_OBJ, "use_obj_on_obj");
lexAddToken(T_ENDGAME_SLIDESHOW, "endgame_slideshow");
lexAddToken(T_MOVE_OBJ_INVEN_TO_OBJ, "move_obj_inven_to_obj");
lexAddToken(T_ENDGAME_MOVIE, "endgame_movie");
lexAddToken(T_OBJ_ART_FID, "obj_art_fid");
lexAddToken(T_ART_ANIM, "art_anim");
lexAddToken(T_PARTY_MEMBER_OBJ, "party_member_obj");
lexAddToken(T_ROTATION_TO_TILE, "rotation_to_tile");
lexAddToken(T_JAM_LOCK, "jam_lock");
lexAddToken(T_GDIALOG_SET_BARTER_MOD, "gdialog_set_barter_mod");
lexAddToken(T_COMBAT_DIFFICULTY, "combat_difficulty");
lexAddToken(T_OBJ_ON_SCREEN, "obj_on_screen");
lexAddToken(T_CRITTER_IS_FLEEING, "critter_is_fleeing");
lexAddToken(T_CRITTER_SET_FLEE_STATE, "critter_set_flee_state");
lexAddToken(T_TERMINATE_COMBAT, "terminate_combat");
lexAddToken(T_DEBUG_MSG, "debug_msg");
lexAddToken(T_CRITTER_STOP_ATTACKING, "critter_stop_attacking");
if (backwardcompat == 0) {
lexAddToken(T_TS_READ_BYTE, "read_byte");
lexAddToken(T_TS_READ_SHORT, "read_short");
lexAddToken(T_TS_READ_INT, "read_int");
lexAddToken(T_TS_READ_STRING, "read_string");
lexAddToken(T_TS_SET_PC_BASE_STAT, "set_pc_base_stat");
lexAddToken(T_TS_SET_PC_EXTRA_STAT, "set_pc_extra_stat");
lexAddToken(T_TS_GET_PC_BASE_STAT, "get_pc_base_stat");
lexAddToken(T_TS_GET_PC_EXTRA_STAT, "get_pc_extra_stat");
lexAddToken(T_TS_SET_CRITTER_BASE_STAT, "set_critter_base_stat");
lexAddToken(T_TS_SET_CRITTER_EXTRA_STAT, "set_critter_extra_stat");
lexAddToken(T_TS_GET_CRITTER_BASE_STAT, "get_critter_base_stat");
lexAddToken(T_TS_GET_CRITTER_EXTRA_STAT, "get_critter_extra_stat");
lexAddToken(T_TS_TAP_KEY, "tap_key");
lexAddToken(T_TS_GET_YEAR, "get_year");
lexAddToken(T_TS_GAME_LOADED, "game_loaded");
lexAddToken(T_TS_GRAPHICS_FUNCS_AVAILABLE, "graphics_funcs_available");
lexAddToken(T_TS_LOAD_SHADER, "load_shader");
lexAddToken(T_TS_FREE_SHADER, "free_shader");
lexAddToken(T_TS_ACTIVATE_SHADER, "activate_shader");
lexAddToken(T_TS_DEACTIVATE_SHADER, "deactivate_shader");
lexAddToken(T_TS_SET_GLOBAL_SCRIPT_REPEAT, "set_global_script_repeat");
lexAddToken(T_TS_INPUT_FUNCS_AVAILABLE, "input_funcs_available");
lexAddToken(T_TS_KEY_PRESSED, "key_pressed");
lexAddToken(T_TS_SET_SHADER_INT, "set_shader_int");
lexAddToken(T_TS_SET_SHADER_FLOAT, "set_shader_float");
lexAddToken(T_TS_SET_SHADER_VECTOR, "set_shader_vector");
lexAddToken(T_TS_IN_WORLD_MAP, "in_world_map");
lexAddToken(T_TS_FORCE_ENCOUNTER, "force_encounter");
lexAddToken(T_TS_SET_WORLD_MAP_POS, "set_world_map_pos");
lexAddToken(T_TS_GET_WORLD_MAP_X_POS, "get_world_map_x_pos");
lexAddToken(T_TS_GET_WORLD_MAP_Y_POS, "get_world_map_y_pos");
lexAddToken(T_TS_SET_DM_MODEL, "set_dm_model");
lexAddToken(T_TS_SET_DF_MODEL, "set_df_model");
lexAddToken(T_TS_SET_MOVIE_PATH, "set_movie_path");
lexAddToken(T_TS_SET_PERK_IMAGE, "set_perk_image");
lexAddToken(T_TS_SET_PERK_RANKS, "set_perk_ranks");
lexAddToken(T_TS_SET_PERK_LEVEL, "set_perk_level");
lexAddToken(T_TS_SET_PERK_STAT, "set_perk_stat");
lexAddToken(T_TS_SET_PERK_STAT_MAG, "set_perk_stat_mag");
lexAddToken(T_TS_SET_PERK_SKILL1, "set_perk_skill1");
lexAddToken(T_TS_SET_PERK_SKILl1_MAG, "set_perk_skill1_mag");
lexAddToken(T_TS_SET_PERK_TYPE, "set_perk_type");
lexAddToken(T_TS_SET_PERK_SKILL2, "set_perk_skill2");
lexAddToken(T_TS_SET_PERK_SKILL2_MAG, "set_perk_skill2_mag");
lexAddToken(T_TS_SET_PERK_STR, "set_perk_str");
lexAddToken(T_TS_SET_PERK_PER, "set_perk_per");
lexAddToken(T_TS_SET_PERK_END, "set_perk_end");
lexAddToken(T_TS_SET_PERK_CHR, "set_perk_chr");
lexAddToken(T_TS_SET_PERK_INT, "set_perk_int");
lexAddToken(T_TS_SET_PERK_AGL, "set_perk_agl");
lexAddToken(T_TS_SET_PERK_LCK, "set_perk_lck");
lexAddToken(T_TS_SET_PERK_NAME, "set_perk_name");
lexAddToken(T_TS_SET_PERK_DESC, "set_perk_desc");
lexAddToken(T_TS_SET_PIPBOY_AVAILABLE, "set_pipboy_available");
lexAddToken(T_TS_GET_KILL_COUNTER, "get_kill_counter");
lexAddToken(T_TS_MOD_KILL_COUNTER, "mod_kill_counter");
lexAddToken(T_TS_GET_PERK_OWED, "get_perk_owed");
lexAddToken(T_TS_SET_PERK_OWED, "set_perk_owed");
lexAddToken(T_TS_GET_PERK_AVAILABLE, "get_perk_available");
lexAddToken(T_TS_GET_CRITTER_AP, "get_critter_current_ap");
lexAddToken(T_TS_SET_CRITTER_AP, "set_critter_current_ap");
lexAddToken(T_TS_GET_ACTIVE_HAND, "active_hand");
lexAddToken(T_TS_TOGGLE_ACTIVE_HAND, "toggle_active_hand");
lexAddToken(T_TS_SET_WEAPON_KNOCKBACK, "set_weapon_knockback");
lexAddToken(T_TS_SET_TARGET_KNOCKBACK, "set_target_knockback");
lexAddToken(T_TS_SET_ATTACKER_KNOCKBACK, "set_attacker_knockback");
lexAddToken(T_TS_REMOVE_WEAPON_KNOCKBACK, "remove_weapon_knockback");
lexAddToken(T_TS_REMOVE_TARGET_KNOCKBACK, "remove_target_knockback");
lexAddToken(T_TS_REMOVE_ATTACKER_KNOCKBACK, "remove_attacker_knockback");
lexAddToken(T_TS_SET_GLOBAL_SCRIPT_TYPE, "set_global_script_type");
lexAddToken(T_TS_AVAILABLE_GLOBAL_SCRIPT_TYPES, "available_global_script_types");
lexAddToken(T_TS_SET_SFALL_GLOBAL, "set_sfall_global");
lexAddToken(T_TS_GET_SFALL_GLOBAL_INT, "get_sfall_global_int");
lexAddToken(T_TS_GET_SFALL_GLOBAL_FLOAT, "get_sfall_global_float");
lexAddToken(T_TS_SET_PICKPOCKET_MAX, "set_pickpocket_max");
lexAddToken(T_TS_SET_HIT_CHANCE_MAX, "set_hit_chance_max");
lexAddToken(T_TS_SET_SKILL_MAX, "set_skill_max");
lexAddToken(T_TS_EAX_AVAILABLE, "eax_available");
lexAddToken(T_TS_SET_EAX_ENVIRONMENT, "set_eax_environment");
lexAddToken(T_TS_INC_NPC_LEVEL, "inc_npc_level");
lexAddToken(T_TS_GET_VIEWPORT_X, "get_viewport_x");
lexAddToken(T_TS_GET_VIEWPORT_Y, "get_viewport_y");
lexAddToken(T_TS_SET_VIEWPORT_X, "set_viewport_x");
lexAddToken(T_TS_SET_VIEWPORT_Y, "set_viewport_y");
lexAddToken(T_TS_SET_XP_MOD, "set_xp_mod");
lexAddToken(T_TS_SET_PERK_LEVEL_MOD, "set_perk_level_mod");
lexAddToken(T_TS_GET_INI_SETTING, "get_ini_setting");
lexAddToken(T_TS_GET_SHADER_VERSION, "get_shader_version");
lexAddToken(T_TS_SET_SHADER_MODE, "set_shader_mode");
lexAddToken(T_TS_GET_GAME_MODE, "get_game_mode");
lexAddToken(T_TS_FORCE_GRAPHICS_REFRESH, "force_graphics_refresh");
lexAddToken(T_TS_GET_SHADER_TEXTURE, "get_shader_texture");
lexAddToken(T_TS_SET_SHADER_TEXTURE, "set_shader_texture");
lexAddToken(T_TS_GET_UPTIME, "get_uptime");
lexAddToken(T_TS_SET_STAT_MAX, "set_stat_max");
lexAddToken(T_TS_SET_STAT_MIN, "set_stat_min");
lexAddToken(T_TS_SET_CAR_CURRENT_TOWN, "set_car_current_town");
lexAddToken(T_TS_SET_PC_STAT_MAX, "set_pc_stat_max");
lexAddToken(T_TS_SET_PC_STAT_MIN, "set_pc_stat_min");
lexAddToken(T_TS_SET_NPC_STAT_MAX, "set_npc_stat_max");
lexAddToken(T_TS_SET_NPC_STAT_MIN, "set_npc_stat_min");
lexAddToken(T_TS_SET_FAKE_PERK, "set_fake_perk");
lexAddToken(T_TS_SET_FAKE_TRAIT, "set_fake_trait");
lexAddToken(T_TS_SET_SELECTABLE_PERK, "set_selectable_perk");
lexAddToken(T_TS_SET_PERKBOX_TITLE, "set_perkbox_title");
lexAddToken(T_TS_HIDE_REAL_PERKS, "hide_real_perks");
lexAddToken(T_TS_SHOW_REAL_PERKS, "show_real_perks");
lexAddToken(T_TS_HAS_FAKE_PERK, "has_fake_perk");
lexAddToken(T_TS_HAS_FAKE_TRAIT, "has_fake_trait");
lexAddToken(T_TS_PERK_ADD_MODE, "perk_add_mode");
lexAddToken(T_TS_CLEAR_SELECTABLE_PERKS, "clear_selectable_perks");
lexAddToken(T_TS_SET_CRITTER_HIT_CHANCE_MOD, "set_critter_hit_chance_mod");
lexAddToken(T_TS_SET_BASE_HIT_CHANCE_MOD, "set_base_hit_chance_mod");
lexAddToken(T_TS_SET_CRITTER_SKILL_MOD, "set_critter_skill_mod");
lexAddToken(T_TS_SET_BASE_SKILL_MOD, "set_base_skill_mod");
lexAddToken(T_TS_SET_CRITTER_PICKPOCKET_MOD, "set_critter_pickpocket_mod");
lexAddToken(T_TS_SET_BASE_PICKPOCKET_MOD, "set_base_pickpocket_mod");
lexAddToken(T_TS_SET_PYROMANIAC_MOD, "set_pyromaniac_mod");
lexAddToken(T_TS_APPLY_HEAVEHO_FIX, "apply_heaveho_fix");
lexAddToken(T_TS_SET_SWIFTLEARNER_MOD, "set_swiftlearner_mod");
lexAddToken(T_TS_SET_HP_LEVEL_MOD, "set_hp_per_level_mod");
lexAddToken(T_TS_WRITE_BYTE, "write_byte");
lexAddToken(T_TS_WRITE_SHORT, "write_short");
lexAddToken(T_TS_WRITE_INT, "write_int");
lexAddToken(T_TS_CALL_OFFSET_V0, "call_offset_v0");
lexAddToken(T_TS_CALL_OFFSET_V1, "call_offset_v1");
lexAddToken(T_TS_CALL_OFFSET_V2, "call_offset_v2");
lexAddToken(T_TS_CALL_OFFSET_V3, "call_offset_v3");
lexAddToken(T_TS_CALL_OFFSET_V4, "call_offset_v4");
lexAddToken(T_TS_CALL_OFFSET_R0, "call_offset_r0");
lexAddToken(T_TS_CALL_OFFSET_R1, "call_offset_r1");
lexAddToken(T_TS_CALL_OFFSET_R2, "call_offset_r2");
lexAddToken(T_TS_CALL_OFFSET_R3, "call_offset_r3");
lexAddToken(T_TS_CALL_OFFSET_R4, "call_offset_r4");
lexAddToken(T_TS_SHOW_IFACE_TAG, "show_iface_tag");
lexAddToken(T_TS_HIDE_IFACE_TAG, "hide_iface_tag");
lexAddToken(T_TS_IS_IFACE_TAG_ACTIVE, "is_iface_tag_active");
lexAddToken(T_TS_GET_BODYPART_HIT_MODIFIER, "get_bodypart_hit_modifier");
lexAddToken(T_TS_SET_BODYPART_HIT_MODIFIER, "set_bodypart_hit_modifier");
lexAddToken(T_TS_SET_CRITICAL_TABLE, "set_critical_table");
lexAddToken(T_TS_GET_CRITICAL_TABLE, "get_critical_table");
lexAddToken(T_TS_RESET_CRITICAL_TABLE, "reset_critical_table");
lexAddToken(T_TS_GET_SFALL_ARG, "get_sfall_arg");
lexAddToken(T_TS_SET_SFALL_RETURN, "set_sfall_return");
lexAddToken(T_TS_SET_UNSPENT_AP_BONUS, "set_unspent_ap_bonus");
lexAddToken(T_TS_GET_UNSPENT_AP_BONUS, "get_unspent_ap_bonus");
lexAddToken(T_TS_SET_UNSPENT_AP_EBONUS, "set_unspent_ap_perk_bonus");
lexAddToken(T_TS_GET_UNSPENT_AP_EBONUS, "get_unspent_ap_perk_bonus");
lexAddToken(T_TS_INIT_HOOK, "init_hook");
lexAddToken(T_TS_GET_INI_STRING, "get_ini_string");
lexAddToken(T_TS_SQRT, "sqrt");
lexAddToken(T_TS_ABS, "abs");
lexAddToken(T_TS_SIN, "sin");
lexAddToken(T_TS_COS, "cos");
lexAddToken(T_TS_TAN, "tan");
lexAddToken(T_TS_ATAN, "arctan");
//lexAddToken(T_TS_CREATE_BUTTON, "create_button");
lexAddToken(T_TS_SET_PALETTE, "set_palette");
//lexAddToken(T_TS_BUTTON_PRESSED, "button_pressed");
lexAddToken(T_TS_REMOVE_SCRIPT, "remove_script");
lexAddToken(T_TS_SET_SCRIPT, "set_script");
lexAddToken(T_TS_GET_SCRIPT, "get_script");
lexAddToken(T_TS_NB_CREATE_CHAR, "nb_create_char");
lexAddToken(T_TS_FS_CREATE, "fs_create");
lexAddToken(T_TS_FS_COPY, "fs_copy");
lexAddToken(T_TS_FS_FIND, "fs_find");
lexAddToken(T_TS_FS_WRITE_BYTE, "fs_write_byte");
lexAddToken(T_TS_FS_WRITE_SHORT, "fs_write_short");
lexAddToken(T_TS_FS_WRITE_INT, "fs_write_int");
lexAddToken(T_TS_FS_WRITE_FLOAT, "fs_write_float");
lexAddToken(T_TS_FS_WRITE_STRING, "fs_write_string");
lexAddToken(T_TS_FS_DELETE, "fs_delete");
lexAddToken(T_TS_FS_SIZE, "fs_size");
lexAddToken(T_TS_FS_POS, "fs_pos");
lexAddToken(T_TS_FS_SEEK, "fs_seek");
lexAddToken(T_TS_FS_RESIZE, "fs_resize");
lexAddToken(T_TS_GET_PROTO_DATA, "get_proto_data");
lexAddToken(T_TS_SET_PROTO_DATA, "set_proto_data");
lexAddToken(T_TS_SET_SELF, "set_self");
lexAddToken(T_TS_REGISTER_HOOK, "register_hook");
lexAddToken(T_TS_FS_WRITE_BSTRING, "fs_write_bstring");
lexAddToken(T_TS_FS_READ_BYTE, "fs_read_byte");
lexAddToken(T_TS_FS_READ_SHORT, "fs_read_short");
lexAddToken(T_TS_FS_READ_INT, "fs_read_int");
lexAddToken(T_TS_FS_READ_FLOAT, "fs_read_float");
lexAddToken(T_TS_LIST_BEGIN, "list_begin");
lexAddToken(T_TS_LIST_NEXT, "list_next");
lexAddToken(T_TS_LIST_END, "list_end");
lexAddToken(T_TS_SFALL_VER_MAJOR, "sfall_ver_major");
lexAddToken(T_TS_SFALL_VER_MINOR, "sfall_ver_minor");
lexAddToken(T_TS_SFALL_VER_BUILD, "sfall_ver_build");
lexAddToken(T_TS_HERO_SELECT_WIN, "hero_select_win");
lexAddToken(T_TS_SET_HERO_RACE, "set_hero_race");
lexAddToken(T_TS_SET_HERO_STYLE, "set_hero_style");
lexAddToken(T_TS_SET_CRITTER_BURST_DISABLE, "set_critter_burst_disable");
lexAddToken(T_TS_GET_WEAPON_AMMO_PID, "get_weapon_ammo_pid");
lexAddToken(T_TS_SET_WEAPON_AMMO_PID, "set_weapon_ammo_pid");
lexAddToken(T_TS_GET_WEAPON_AMMO_COUNT, "get_weapon_ammo_count");
lexAddToken(T_TS_SET_WEAPON_AMMO_COUNT, "set_weapon_ammo_count");
lexAddToken(T_TS_WRITE_STRING, "write_String");
lexAddToken(T_TS_GET_MOUSE_X, "get_mouse_x");
lexAddToken(T_TS_GET_MOUSE_Y, "get_mouse_y");
lexAddToken(T_TS_GET_MOUSE_BUTTONS, "get_mouse_buttons");
lexAddToken(T_TS_GET_WINDOW_UNDER_MOUSE, "get_window_under_mouse");
lexAddToken(T_TS_GET_SCREEN_WIDTH, "get_screen_width");
lexAddToken(T_TS_GET_SCREEN_HEIGHT, "get_screen_height");
lexAddToken(T_TS_STOP_GAME, "stop_game");
lexAddToken(T_TS_RESUME_GAME, "resume_game");
lexAddToken(T_TS_CREATE_MESSAGE_WINDOW, "create_message_window");
lexAddToken(T_TS_REMOVE_TRAIT, "remove_trait");
lexAddToken(T_TS_GET_LIGHT_LEVEL, "get_light_level");
lexAddToken(T_TS_REFRESH_PC_ART, "refresh_pc_art");
lexAddToken(T_TS_GET_ATTACK_TYPE, "get_attack_type");
lexAddToken(T_TS_FORCE_ENCOUNTER_WITH_FLAGS, "force_encounter_with_flags");
lexAddToken(T_TS_SET_MAP_TIME_MULTI, "set_map_time_multi");
lexAddToken(T_TS_PLAY_SFALL_SOUND, "play_sfall_sound");
lexAddToken(T_TS_STOP_SFALL_SOUND, "stop_sfall_sound");
lexAddToken(T_TS_CREATE_ARRAY, "create_array");
lexAddToken(T_TS_SET_ARRAY, "set_array");
lexAddToken(T_TS_GET_ARRAY, "get_array");
lexAddToken(T_TS_FREE_ARRAY, "free_array");
lexAddToken(T_TS_LEN_ARRAY, "len_array");
lexAddToken(T_TS_RESIZE_ARRAY, "resize_array");
lexAddToken(T_TS_TEMP_ARRAY, "temp_array");
lexAddToken(T_TS_FIX_ARRAY, "fix_array");
lexAddToken(T_TS_STRING_SPLIT, "string_split");
lexAddToken(T_TS_LIST_AS_ARRAY, "list_as_array");
lexAddToken(T_TS_ATOI, "atoi");
lexAddToken(T_TS_ATOF, "atof");
lexAddToken(T_TS_SCAN_ARRAY, "scan_array");
lexAddToken(T_TS_TILE_PID, "get_tile_fid");
lexAddToken(T_TS_MODIFIED_INI, "modified_ini");
lexAddToken(T_TS_GET_SFALL_ARGS, "get_sfall_args");
lexAddToken(T_TS_SET_SFALL_ARG, "set_sfall_arg");
lexAddToken(T_TS_FORCE_AIMED_SHOTS, "force_aimed_shots");
lexAddToken(T_TS_DISABLE_AIMED_SHOTS, "disable_aimed_shots");
lexAddToken(T_TS_MARK_MOVIE_PLAYED, "mark_movie_played");
lexAddToken(T_TS_GET_NPC_LEVEL, "get_npc_level");
lexAddToken(T_TS_SET_CRITTER_SKILL_POINTS, "set_critter_skill_points");
lexAddToken(T_TS_GET_CRITTER_SKILL_POINTS, "get_critter_skill_points");
lexAddToken(T_TS_SET_AVAILABLE_SKILL_POINTS, "set_available_skill_points");
lexAddToken(T_TS_GET_AVAILABLE_SKILL_POINTS, "get_available_skill_points");
lexAddToken(T_TS_MOD_SKILL_POINTS_PER_LEVEL, "mod_skill_points_per_level");
lexAddToken(T_TS_SET_PERK_FREQ, "set_perk_freq");
lexAddToken(T_TS_GET_LAST_ATTACKER, "get_last_attacker");
lexAddToken(T_TS_GET_LAST_TARGET, "get_last_target");
lexAddToken(T_TS_BLOCK_COMBAT, "block_combat");
lexAddToken(T_TS_TILE_UNDER_CURSOR, "tile_under_cursor");
lexAddToken(T_TS_GET_BARTER_MOD, "gdialog_get_barter_mod");
lexAddToken(T_TS_SET_INVEN_AP_COST, "set_inven_ap_cost");
lexAddToken(T_TS_SUBSTR, "substr");
lexAddToken(T_TS_STRLEN, "strlen");
lexAddToken(T_TS_SPRINTF, "sprintf");
lexAddToken(T_TS_ORD, "charcode");
// reserved
lexAddToken(T_TS_TYPEOF, "typeof");
/*lexAddToken(T_TS_LOG, "log");
lexAddToken(T_TS_EXP, "exponent");*/
// ceil function temporarily disabled because vanilla "floor" function works incorrectly with negative values
// lexAddToken(T_TS_CEIL, "ceil");
//lexAddToken(T_TS_ROUND, "round");
lexAddToken(T_TS_SAVE_ARRAY, "save_array");
lexAddToken(T_TS_LOAD_ARRAY, "load_array");
lexAddToken(T_TS_GET_ARRAY_KEY, "array_key");
lexAddToken(T_TS_STACK_ARRAY, "arrayexpr");
// reserved
// reserved
lexAddToken(T_TS_REG_ANIM_DESTROY, "reg_anim_destroy");
lexAddToken(T_TS_REG_ANIM_ANIMATE_AND_HIDE, "reg_anim_animate_and_hide");
lexAddToken(T_TS_REG_ANIM_COMBAT_CHECK, "reg_anim_combat_check");
lexAddToken(T_TS_REG_ANIM_LIGHT, "reg_anim_light");
lexAddToken(T_TS_REG_ANIM_CHANGE_FID, "reg_anim_change_fid");
lexAddToken(T_TS_REG_ANIM_TAKE_OUT, "reg_anim_take_out");
lexAddToken(T_TS_REG_ANIM_TURN_TOWARDS, "reg_anim_turn_towards");
lexAddToken(T_TS_EXPLOSIONS_METARULE, "metarule2_explosions");
/*lexAddToken(T_TS_REGISTER_HOOK_PROC, "register_hook_proc");
lexAddToken(T_TS_MESSAGE_STR_GAME, "message_str_game");
lexAddToken(T_TS_SNEAK_SUCCESS, "sneak_success");
lexAddToken(T_TS_TILE_LIGHT, "tile_light");
lexAddToken(T_TS_MAKE_STRAIGHT_PATH, "obj_blocking_line");
lexAddToken(T_TS_OBJ_BLOCKING_AT, "obj_blocking_tile");
lexAddToken(T_TS_TILE_GET_OBJECTS, "tile_get_objs");
lexAddToken(T_TS_GET_PARTY_MEMBERS, "party_member_list");
lexAddToken(T_TS_PATH_FIND, "path_find_to");
lexAddToken(T_TS_CREATE_SPATIAL, "create_spatial");*/
{
int i;
for (i = 0; i < numSfallOpcodes(); i++) {
if (sfall_opcodes[i].name != 0)
lexAddToken(sfall_opcodes[i].token, (char*)sfall_opcodes[i].name);
}
}
}
}