#ifndef INTERPRETER_EXTRA_H #define INTERPRETER_EXTRA_H #include "game_movie.h" #include "geometry.h" #include "interpreter.h" #include "obj_types.h" typedef enum ScriptError { SCRIPT_ERROR_NOT_IMPLEMENTED, SCRIPT_ERROR_OBJECT_IS_NULL, SCRIPT_ERROR_CANT_MATCH_PROGRAM_TO_SID, SCRIPT_ERROR_FOLLOWS, SCRIPT_ERROR_COUNT, } ScriptError; typedef enum Metarule { METARULE_SIGNAL_END_GAME = 13, METARULE_FIRST_RUN = 14, METARULE_ELEVATOR = 15, METARULE_PARTY_COUNT = 16, METARULE_AREA_KNOWN = 17, METARULE_WHO_ON_DRUGS = 18, METARULE_MAP_KNOWN = 19, METARULE_IS_LOADGAME = 22, METARULE_CAR_CURRENT_TOWN = 30, METARULE_GIVE_CAR_TO_PARTY = 31, METARULE_GIVE_CAR_GAS = 32, METARULE_SKILL_CHECK_TAG = 40, METARULE_DROP_ALL_INVEN = 42, METARULE_INVEN_UNWIELD_WHO = 43, METARULE_GET_WORLDMAP_XPOS = 44, METARULE_GET_WORLDMAP_YPOS = 45, METARULE_CURRENT_TOWN = 46, METARULE_LANGUAGE_FILTER = 47, METARULE_VIOLENCE_FILTER = 48, METARULE_WEAPON_DAMAGE_TYPE = 49, METARULE_CRITTER_BARTERS = 50, METARULE_CRITTER_KILL_TYPE = 51, METARULE_SET_CAR_CARRY_AMOUNT = 52, METARULE_GET_CAR_CARRY_AMOUNT = 53, } Metarule; typedef enum Metarule3 { METARULE3_CLR_FIXED_TIMED_EVENTS = 100, METARULE3_MARK_SUBTILE = 101, METARULE3_SET_WM_MUSIC = 102, METARULE3_GET_KILL_COUNT = 103, METARULE3_MARK_MAP_ENTRANCE = 104, METARULE3_WM_SUBTILE_STATE = 105, METARULE3_TILE_GET_NEXT_CRITTER = 106, METARULE3_ART_SET_BASE_FID_NUM = 107, METARULE3_TILE_SET_CENTER = 108, // chem use preference METARULE3_109 = 109, // probably true if car is out of fuel METARULE3_110 = 110, // probably returns city index METARULE3_111 = 111, } Metarule3; typedef enum CritterTrait { CRITTER_TRAIT_PERK = 0, CRITTER_TRAIT_OBJECT = 1, CRITTER_TRAIT_TRAIT = 2, } CritterTrait; typedef enum CritterTraitObject { CRITTER_TRAIT_OBJECT_AI_PACKET = 5, CRITTER_TRAIT_OBJECT_TEAM = 6, CRITTER_TRAIT_OBJECT_ROTATION = 10, CRITTER_TRAIT_OBJECT_IS_INVISIBLE = 666, CRITTER_TRAIT_OBJECT_GET_INVENTORY_WEIGHT = 669, } CritterTraitObject; // See [opGetCritterState]. typedef enum CritterState { CRITTER_STATE_NORMAL = 0x00, CRITTER_STATE_DEAD = 0x01, CRITTER_STATE_PRONE = 0x02, } CritterState; enum { INVEN_TYPE_WORN = 0, INVEN_TYPE_RIGHT_HAND = 1, INVEN_TYPE_LEFT_HAND = 2, INVEN_TYPE_INV_COUNT = -2, }; typedef enum FloatingMessageType { FLOATING_MESSAGE_TYPE_WARNING = -2, FLOATING_MESSAGE_TYPE_COLOR_SEQUENCE = -1, FLOATING_MESSAGE_TYPE_NORMAL = 0, FLOATING_MESSAGE_TYPE_BLACK, FLOATING_MESSAGE_TYPE_RED, FLOATING_MESSAGE_TYPE_GREEN, FLOATING_MESSAGE_TYPE_BLUE, FLOATING_MESSAGE_TYPE_PURPLE, FLOATING_MESSAGE_TYPE_NEAR_WHITE, FLOATING_MESSAGE_TYPE_LIGHT_RED, FLOATING_MESSAGE_TYPE_YELLOW, FLOATING_MESSAGE_TYPE_WHITE, FLOATING_MESSAGE_TYPE_GREY, FLOATING_MESSAGE_TYPE_DARK_GREY, FLOATING_MESSAGE_TYPE_LIGHT_GREY, FLOATING_MESSAGE_TYPE_COUNT, } FloatingMessageType; typedef enum OpRegAnimFunc { OP_REG_ANIM_FUNC_BEGIN = 1, OP_REG_ANIM_FUNC_CLEAR = 2, OP_REG_ANIM_FUNC_END = 3, } OpRegAnimFunc; extern char _Error_0[]; extern char _aCritter[]; extern const int dword_453F90[3]; extern const unsigned short word_453F9C[MOVIE_COUNT]; extern Rect stru_453FC0; extern const char* _dbg_error_strs[SCRIPT_ERROR_COUNT]; extern const int _ftList[11]; extern char* _errStr; extern int _last_color; extern char* _strName; extern int gGameDialogReactionOrFidget; void scriptPredefinedError(Program* program, const char* name, int error); void scriptError(const char* format, ...); int tileIsVisible(int tile); int _correctFidForRemovedItem(Object* a1, Object* a2, int a3); void opGiveExpPoints(Program* program); void opScrReturn(Program* program); void opPlaySfx(Program* program); void opSetMapStart(Program* program); void opOverrideMapStart(Program* program); void opHasSkill(Program* program); void opUsingSkill(Program* program); void opRollVsSkill(Program* program); void opSkillContest(Program* program); void opDoCheck(Program* program); void opSuccess(Program* program); void opCritical(Program* program); void opHowMuch(Program* program); void opMarkAreaKnown(Program* program); void opReactionInfluence(Program* program); void opRandom(Program* program); void opRollDice(Program* program); void opMoveTo(Program* program); void opCreateObject(Program* program); void opDestroyObject(Program* program); void opDisplayMsg(Program* program); void opScriptOverrides(Program* program); void opObjectIsCarryingObjectWithPid(Program* program); void opTileContainsObjectWithPid(Program* program); void opGetSelf(Program* program); void opGetSource(Program* program); void opGetTarget(Program* program); void opGetDude(Program* program); void opGetObjectBeingUsed(Program* program); void opGetLocalVar(Program* program); void opSetLocalVar(Program* program); void opGetMapVar(Program* program); void opSetMapVar(Program* program); void opGetGlobalVar(Program* program); void opSetGlobalVar(Program* program); void opGetScriptAction(Program* program); void opGetObjectType(Program* program); void opGetItemType(Program* program); void opGetCritterStat(Program* program); void opSetCritterStat(Program* program); void opAnimateStand(Program* program); void opAnimateStandReverse(Program* program); void opAnimateMoveObjectToTile(Program* program); void opTileInTileRect(Program* program); void opMakeDayTime(Program* program); void opTileDistanceBetween(Program* program); void opTileDistanceBetweenObjects(Program* program); void opGetObjectTile(Program* program); void opGetTileInDirection(Program* program); void opPickup(Program* program); void opDrop(Program* program); void opAddObjectToInventory(Program* program); void opRemoveObjectFromInventory(Program* program); void opWieldItem(Program* program); void opUseObject(Program* program); void opObjectCanSeeObject(Program* program); void opAttackComplex(Program* program); void opStartGameDialog(Program* program); void opEndGameDialog(Program* program); void opGameDialogReaction(Program* program); void opMetarule3(Program* program); void opSetMapMusic(Program* program); void opSetObjectVisibility(Program* program); void opLoadMap(Program* program); void opWorldmapCitySetPos(Program* program); void opSetExitGrids(Program* program); void opAnimBusy(Program* program); void opCritterHeal(Program* program); void opSetLightLevel(Program* program); void opGetGameTime(Program* program); void opGetGameTimeInSeconds(Program* program); void opGetObjectElevation(Program* program); void opKillCritter(Program* program); int _correctDeath(Object* critter, int anim, bool a3); void opKillCritterType(Program* program); void opCritterDamage(Program* program); void opAddTimerEvent(Program* program); void opRemoveTimerEvent(Program* program); void opGameTicks(Program* program); void opHasTrait(Program* program); void opObjectCanHearObject(Program* program); void opGameTimeHour(Program* program); void opGetFixedParam(Program* program); void opTileIsVisible(Program* program); void opGameDialogSystemEnter(Program* program); void opGetActionBeingUsed(Program* program); void opGetCritterState(Program* program); void opGameTimeAdvance(Program* program); void opRadiationIncrease(Program* program); void opRadiationDecrease(Program* program); void opCritterAttemptPlacement(Program* program); void opGetObjectPid(Program* program); void opGetCurrentMap(Program* program); void opCritterAddTrait(Program* program); void opCritterRemoveTrait(Program* program); void opGetProtoData(Program* program); void opGetMessageString(Program* program); void opCritterGetInventoryObject(Program* program); void opSetObjectLightLevel(Program* program); void opWorldmap(Program* program); void _op_inven_cmds(Program* program); void opFloatMessage(Program* program); void opMetarule(Program* program); void opAnim(Program* program); void opObjectCarryingObjectByPid(Program* program); void opRegAnimFunc(Program* program); void opRegAnimAnimate(Program* program); void opRegAnimAnimateReverse(Program* program); void opRegAnimObjectMoveToObject(Program* program); void opRegAnimObjectRunToObject(Program* program); void opRegAnimObjectMoveToTile(Program* program); void opRegAnimObjectRunToTile(Program* program); void opPlayGameMovie(Program* program); void opAddMultipleObjectsToInventory(Program* program); void opRemoveMultipleObjectsFromInventory(Program* program); void opGetMonth(Program* program); void opGetDay(Program* program); void opExplosion(Program* program); void opGetDaysSinceLastVisit(Program* program); void _op_gsay_start(Program* program); void _op_gsay_end(Program* program); void _op_gsay_reply(Program* program); void _op_gsay_option(Program* program); void _op_gsay_message(Program* program); void _op_giq_option(Program* program); void opPoison(Program* program); void opGetPoison(Program* program); void opPartyAdd(Program* program); void opPartyRemove(Program* program); void opRegAnimAnimateForever(Program* program); void opCritterInjure(Program* program); void opCombatIsInitialized(Program* program); void _op_gdialog_barter(Program* program); void opGetGameDifficulty(Program* program); void opGetRunningBurningGuy(Program* program); void _op_inven_unwield(Program* program); void opObjectIsLocked(Program* program); void opObjectLock(Program* program); void opObjectUnlock(Program* program); void opObjectIsOpen(Program* program); void opObjectOpen(Program* program); void opObjectClose(Program* program); void opGameUiDisable(Program* program); void opGameUiEnable(Program* program); void opGameUiIsDisabled(Program* program); void opFadeOut(Program* program); void opFadeIn(Program* program); void opItemCapsTotal(Program* program); void opItemCapsAdjust(Program* program); void _op_anim_action_frame(Program* program); void opRegAnimPlaySfx(Program* program); void opCritterModifySkill(Program* program); void opSfxBuildCharName(Program* program); void opSfxBuildAmbientName(Program* program); void opSfxBuildInterfaceName(Program* program); void opSfxBuildItemName(Program* program); void opSfxBuildWeaponName(Program* program); void opSfxBuildSceneryName(Program* program); void opSfxBuildOpenName(Program* program); void opAttackSetup(Program* program); void opDestroyMultipleObjects(Program* program); void opUseObjectOnObject(Program* program); void opEndgameSlideshow(Program* program); void opMoveObjectInventoryToObject(Program* program); void opEndgameMovie(Program* program); void opGetObjectFid(Program* program); void opGetFidAnim(Program* program); void opGetPartyMember(Program* program); void opGetRotationToTile(Program* program); void opJamLock(Program* program); void opGameDialogSetBarterMod(Program* program); void opGetCombatDifficulty(Program* program); void opObjectOnScreen(Program* program); void opCritterIsFleeing(Program* program); void opCritterSetFleeState(Program* program); void opTerminateCombat(Program* program); void opDebugMessage(Program* program); void opCritterStopAttacking(Program* program); void opTileGetObjectWithPid(Program* program); void opGetObjectName(Program* program); void opGetPcStat(Program* program); void _intExtraClose_(); void _initIntExtra(); void _intExtraRemoveProgramReferences_(); #endif /* INTERPRETER_EXTRA_H */