#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) SFALLEXPRSTMT("sfall_func7", TS_SFALL_METARULE7, 8) SFALLEXPRSTMT("sfall_func8", TS_SFALL_METARULE8, 9) SFALLSTMTPROC("register_hook_proc_spec", TS_REGISTER_HOOK_PROC2, 2, 2) SFALLSTMTPROC("reg_anim_callback", TS_REG_ANIM_CALLBACK, 1, 1) }; 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); } } } }