Files
2026-02-02 04:50:13 +01:00

338 lines
7.8 KiB
C++

/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef ULTIMA8_USECODE_U8INTRINSICS_H
#define ULTIMA8_USECODE_U8INTRINSICS_H
#include "ultima/ultima8/usecode/intrinsics.h"
#include "ultima/ultima8/world/item.h"
#include "ultima/ultima8/usecode/uc_machine.h"
#include "ultima/ultima8/world/container.h"
#include "ultima/ultima8/world/actors/actor.h"
#include "ultima/ultima8/world/actors/main_actor.h"
#include "ultima/ultima8/kernel/kernel.h"
#include "ultima/ultima8/world/camera_process.h"
#include "ultima/ultima8/ultima8.h"
#include "ultima/ultima8/world/egg.h"
#include "ultima/ultima8/world/monster_egg.h"
#include "ultima/ultima8/world/current_map.h"
#include "ultima/ultima8/gfx/palette_fader_process.h"
#include "ultima/ultima8/world/sprite_process.h"
#include "ultima/ultima8/audio/music_process.h"
#include "ultima/ultima8/gumps/scroll_gump.h"
#include "ultima/ultima8/gumps/book_gump.h"
#include "ultima/ultima8/gumps/readable_gump.h"
#include "ultima/ultima8/gumps/target_gump.h"
#include "ultima/ultima8/world/actors/grant_peace_process.h"
#include "ultima/ultima8/world/fireball_process.h"
#include "ultima/ultima8/world/actors/heal_process.h"
#include "ultima/ultima8/gfx/inverter_process.h"
#include "ultima/ultima8/audio/audio_process.h"
#include "ultima/ultima8/games/game.h"
namespace Ultima {
namespace Ultima8 {
// Ultima 8 Intrinsics
const Intrinsic U8Intrinsics[] = {
// 0x000
TargetGump::I_target,
0, //U
Item::I_touch,
Item::I_getX,
Item::I_getY,
Item::I_getZ,
Item::I_getCX,
Item::I_getCY,
Item::I_getCZ,
0, //U
0, //U
0, //U
Item::I_getPoint,
Item::I_getShape,
Item::I_setShape,
Item::I_getFrame,
// 0x010
Item::I_setFrame,
Item::I_getQuality,
Item::I_getUnkEggType,
Item::I_getQuantity,
0, //U
Item::I_getContainer,
Item::I_getRootContainer,
0, //U
0, //U
Item::I_getQ,
Item::I_setQ,
Item::I_setQuality,
0, //U
Item::I_setQuantity,
Item::I_getFamily,
Item::I_getTypeFlag,
// 0x020
Item::I_getStatus,
Item::I_orStatus,
Item::I_andStatus,
Item::I_getFootpadData,
0, //U
Item::I_overlaps,
Item::I_overlapsXY,
Item::I_isOn,
0, //U
0, //U
0, //U
Item::I_ascend,
Item::I_getWeight,
Item::I_getWeightIncludingContents,
Item::I_getSurfaceWeight,
0, //U
// 0x030
0, //U
Item::I_legalCreateAtCoords,
Item::I_create,
Item::I_legalCreateAtPoint,
Item::I_legalCreateInCont,
Item::I_push,
Item::I_popToCoords,
Item::I_popToContainer,
Item::I_pop,
Item::I_popToEnd,
Item::I_destroy,
Container::I_removeContents,
Container::I_destroyContents,
Item::I_isExplosive,
Item::I_move,
0, //U
// 0x040
Item::I_legalMoveToPoint,
Item::I_legalMoveToContainer,
Actor::I_isNPC,
0, //U
Item::I_hurl,
Item::I_shoot,
Item::I_fall,
Item::I_grab,
0, //U
Item::I_bark,
Item::I_ask,
Item::I_getSliderInput,
Item::I_openGump,
Item::I_closeGump,
0, //U
0, //U
// 0x050
Item::I_getMapArray,
0, //U
Item::I_setMapArray,
Item::I_receiveHit,
Item::I_explode,
Item::I_canReach,
Item::I_getRange,
0, //U
Item::I_getDirToCoords,
Item::I_getDirFromCoords,
Item::I_getDirToItem,
Item::I_getDirFromItem,
Item::I_look,
Item::I_use,
0, //U
0, //U
// 0x060
0, //U
Item::I_gotHit,
0, //U
0, //U
0, //U
0, //U
0, //U
Item::I_enterFastArea,
0, //U
0, //U
0, //U
0, //U
0, //U
Item::I_guardianBark,
BookGump::I_readBook,
ScrollGump::I_readScroll,
// 0x070
ReadableGump::I_readGrave,
ReadableGump::I_readPlaque,
Egg::I_getEggXRange,
Egg::I_getEggYRange,
Egg::I_setEggXRange,
Egg::I_setEggYRange,
Egg::I_getEggId,
Egg::I_setEggId,
0, //U
MonsterEgg::I_monsterEggHatch,
MonsterEgg::I_getMonId,
0, //U
0, //U
0, //U
0, //U
0, //U
// 0x080
Actor::I_isBusy,
Actor::I_areEnemiesNear,
Actor::I_isInCombat,
Actor::I_setInCombat,
Actor::I_clrInCombat,
Actor::I_setTarget,
Actor::I_getTarget,
Actor::I_setAlignment,
Actor::I_getAlignment,
Actor::I_setEnemyAlignment,
Actor::I_getEnemyAlignment,
Actor::I_isEnemy,
Actor::I_isDead,
Actor::I_setDead,
Actor::I_clrDead,
Actor::I_isImmortal,
// 0x090
Actor::I_setImmortal,
Actor::I_clrImmortal,
Actor::I_isWithstandDeath,
Actor::I_setWithstandDeath,
Actor::I_clrWithstandDeath,
Actor::I_isFeignDeath,
Actor::I_setFeignDeath,
Actor::I_clrFeignDeath,
0, //U
0, //U
0, //U
0, //U
Actor::I_getDir,
Actor::I_getMap,
Actor::I_teleport,
Actor::I_doAnim,
// 0x0A0
Actor::I_getLastAnimSet,
Actor::I_pathfindToPoint,
Actor::I_pathfindToItem,
Actor::I_getStr,
Actor::I_getInt,
Actor::I_getDex,
Actor::I_getHp,
Actor::I_getMana,
Actor::I_setStr,
Actor::I_setInt,
Actor::I_setDex,
Actor::I_setHp,
Actor::I_setMana,
Actor::I_createActor,
Actor::I_setActivity,
Actor::I_setAirWalkEnabled,
// 0x0B0
Actor::I_getAirWalkEnabled,
Actor::I_schedule,
Actor::I_getEquip,
Actor::I_setEquip,
Ultima8Engine::I_closeItemGumps,
CameraProcess::I_scrollTo,
UCMachine::I_urandom,
UCMachine::I_rndRange,
GrantPeaceProcess::I_castGrantPeace,
UCMachine::I_numToStr,
0, //U
MusicProcess::I_playMusic,
UCMachine::I_getName, //temp
Item::I_igniteChaos,
CameraProcess::I_setCenterOn,
CameraProcess::I_moveTo,
// 0x0C0
0, //U
0, //U
0, //U
0, //U
0, //U
0, //U
CameraProcess::I_startQuake,
CameraProcess::I_stopQuake,
InverterProcess::I_invertScreen,
0, //U
Kernel::I_getNumProcesses,
Kernel::I_resetRef,
MainActor::I_teleportToEgg,
Kernel::I_resetRef,
0, // setRef
Ultima8Engine::I_getAvatarInStasis,
// 0x0D0
Ultima8Engine::I_setAvatarInStasis,
Item::I_getEtherealTop,
Ultima8Engine::I_getCurrentTimerTick,
0, //U (canGetThere)
CurrentMap::I_canExistAt,
SpriteProcess::I_createSprite,
SpriteProcess::I_createSprite,
Item::I_getFamilyOfType,
Ultima8Engine::I_getTimeInGameHours,
Ultima8Engine::I_getTimeInMinutes,
Ultima8Engine::I_getTimeInSeconds,
Ultima8Engine::I_setTimeInGameHours,
0, // U (SetTimeInMinutes)
0, // U (SetTimeInSeconds)
PaletteFaderProcess::I_fadeToBlack,
PaletteFaderProcess::I_fadeFromBlack,
// 0x0E0
PaletteFaderProcess::I_fadeToPaletteTransform,
PaletteFaderProcess::I_lightningBolt,
PaletteFaderProcess::I_fadeToWhite,
PaletteFaderProcess::I_fadeFromWhite,
Game::I_playEndgame,
HealProcess::I_feedAvatar,
MainActor::I_accumulateStrength,
MainActor::I_accumulateIntelligence,
MainActor::I_accumulateDexterity,
MainActor::I_clrAvatarInCombat,
MainActor::I_setAvatarInCombat,
MainActor::I_isAvatarInCombat,
AudioProcess::I_playSFX, // int16
AudioProcess::I_playSFX, // int16 uint8
AudioProcess::I_playSFX, // int16 uint16 ObjID
AudioProcess::I_playAmbientSFX, // int16 Unused (but implemented)
// 0x0F0
AudioProcess::I_playAmbientSFX, // int16 uint8 Unused (but implemented)
AudioProcess::I_playAmbientSFX, // int16 uint16 ObjID
AudioProcess::I_isSFXPlaying,
AudioProcess::I_setVolumeSFX,
AudioProcess::I_stopSFX, // int16
AudioProcess::I_stopSFX, // int16 ObjID
0, //U
0, //U
MusicProcess::I_stopMusic,
0, //U
0, //U
FireballProcess::I_TonysBalls,
Ultima8Engine::I_avatarCanCheat,
Ultima8Engine::I_makeAvatarACheater,
UCMachine::I_true, // isGameRunning
0, //U
// 0x100
0, //U
0 //U
};
} // End of namespace Ultima8
} // End of namespace Ultima
#endif