aboutsummaryrefslogtreecommitdiff
path: root/engines/hdb
diff options
context:
space:
mode:
authorNipun Garg2019-06-19 15:53:22 +0530
committerEugene Sandulenko2019-09-03 17:16:49 +0200
commitbbf32c1870afbadec658dce91bbb43bc163f592e (patch)
tree270625953526ddf13d93833be400aff7e8b72261 /engines/hdb
parent29eb8cc4e976f12cbcb8e46fc13cedfa2dd1f401 (diff)
downloadscummvm-rg350-bbf32c1870afbadec658dce91bbb43bc163f592e.tar.gz
scummvm-rg350-bbf32c1870afbadec658dce91bbb43bc163f592e.tar.bz2
scummvm-rg350-bbf32c1870afbadec658dce91bbb43bc163f592e.zip
HDB: Add init code for all AI Entities
Diffstat (limited to 'engines/hdb')
-rw-r--r--engines/hdb/ai-cinematic.cpp (renamed from engines/hdb/ai.cpp)5
-rw-r--r--engines/hdb/ai-init.cpp673
-rw-r--r--engines/hdb/ai-player.cpp968
-rw-r--r--engines/hdb/ai-player.h284
-rw-r--r--engines/hdb/hdb.h1
-rw-r--r--engines/hdb/lua-script.cpp2
-rw-r--r--engines/hdb/module.mk4
7 files changed, 1931 insertions, 6 deletions
diff --git a/engines/hdb/ai.cpp b/engines/hdb/ai-cinematic.cpp
index 3dfbbb6af1..8f6c5c1ee3 100644
--- a/engines/hdb/ai.cpp
+++ b/engines/hdb/ai-cinematic.cpp
@@ -24,11 +24,6 @@
namespace HDB {
-bool AI::init() {
- warning("STUB: AI::init required");
- return true;
-}
-
static const char *cineTypeStr[] = {
"C_NO_COMMAND",
"C_STOPCINE",
diff --git a/engines/hdb/ai-init.cpp b/engines/hdb/ai-init.cpp
new file mode 100644
index 0000000000..45b4b1838d
--- /dev/null
+++ b/engines/hdb/ai-init.cpp
@@ -0,0 +1,673 @@
+/* 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "hdb/hdb.h"
+
+namespace HDB {
+
+/*
+ Comment from Original:
+ these arrays list each of the game's actor's possible states and
+ which graphics to load for them.
+*/
+
+AIStateDef none[] = {
+ { STATE_ENDSTATES }
+};
+
+AIStateDef guy[] = {
+ { STATE_BLINK, "ent_guy_blink" },
+ { STATE_STANDDOWN, "ent_guy_standdown" },
+ { STATE_STANDUP, "ent_guy_standup" },
+ { STATE_STANDLEFT, "ent_guy_standleft" },
+ { STATE_STANDRIGHT, "ent_guy_standright" },
+ { STATE_MOVEDOWN, "ent_guy_walkdown" },
+ { STATE_MOVEUP, "ent_guy_walkup" },
+ { STATE_MOVELEFT, "ent_guy_walkleft" },
+ { STATE_MOVERIGHT, "ent_guy_walkright" },
+ { STATE_PUSHDOWN, "ent_guy_pushdown" },
+ { STATE_PUSHUP, "ent_guy_pushup" },
+ { STATE_PUSHLEFT, "ent_guy_pushleft" },
+ { STATE_PUSHRIGHT, "ent_guy_pushright" },
+ { STATE_GRABDOWN, "ent_guy_getdown" },
+ { STATE_GRABUP, "ent_guy_getup" },
+ { STATE_GRABLEFT, "ent_guy_getleft" },
+ { STATE_GRABRIGHT, "ent_guy_getright" },
+ { STATE_PLUMMET, "ent_guy_plummet" },
+ { STATE_ATK_STUN_DOWN, "ent_guy_stundown" },
+ { STATE_ATK_STUN_UP, "ent_guy_stunup" },
+ { STATE_ATK_STUN_LEFT, "ent_guy_stunleft" },
+ { STATE_ATK_STUN_RIGHT, "ent_guy_stunright" },
+ { STATE_ATK_SLUG_DOWN, "ent_guy_slingdown" },
+ { STATE_ATK_SLUG_UP, "ent_guy_slingup" },
+ { STATE_ATK_SLUG_LEFT, "ent_guy_slingleft" },
+ { STATE_ATK_SLUG_RIGHT, "ent_guy_slingright" },
+ { STATE_DYING, "ent_guy_die" },
+ { STATE_HORRIBLE1, "ent_guy_horrible1" },
+ { STATE_HORRIBLE2, "ent_guy_horrible2" },
+ { STATE_HORRIBLE3, "ent_guy_horrible3" },
+ { STATE_HORRIBLE4, "ent_guy_horrible4" },
+ { STATE_GOODJOB, "ent_guy_goodjob" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef gemAttack[] = {
+ { STATE_MOVEDOWN, "ent_gem_white_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef slugAttack[] = {
+ { STATE_ENDSTATES }
+};
+
+AIStateDef dolly[] = {
+ { STATE_MOVEDOWN, "ent_sergeant_walkdown" },
+ { STATE_MOVEUP, "ent_sergeant_walkup" },
+ { STATE_MOVELEFT, "ent_sergeant_walkleft" },
+ { STATE_MOVERIGHT, "ent_sergeant_walkright" },
+ { STATE_DOLLYUSERIGHT, "ent_sergeant_userright" },
+ { STATE_KISSRIGHT, "ent_sergeant_kissright" },
+ { STATE_KISSLEFT, "ent_sergeant_kissleft" },
+ { STATE_ANGRY, "ent_sergeant_angry"},
+ { STATE_LAUGH, "ent_sergeant_laugh" },
+ { STATE_PANIC, "ent_sergeant_panic" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef sergeant[] = {
+ { STATE_STANDDOWN, "ent_sergeant_standdown" },
+ { STATE_STANDUP, "ent_sergeant_standup" },
+ { STATE_STANDLEFT, "ent_sergeant_standleft" },
+ { STATE_STANDRIGHT, "ent_sergeant_standright" },
+ { STATE_YELL, "ent_sergeant_yell" },
+ { STATE_MOVEDOWN, "ent_sergeant_walkdown" },
+ { STATE_MOVEUP, "ent_sergeant_walkup" },
+ { STATE_MOVELEFT, "ent_sergeant_walkleft" },
+ { STATE_MOVERIGHT, "ent_sergeant_walkright" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef spacedude[] = {
+ { STATE_MOVEDOWN, "ent_spacedude_walkdown" },
+ { STATE_MOVEUP, "ent_spacedude_walkup" },
+ { STATE_MOVELEFT, "ent_spacedude_walkleft" },
+ { STATE_MOVERIGHT, "ent_spacedude_walkright" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef chicken[] = {
+ { STATE_STANDDOWN, "ent_chicken_standdown" },
+ { STATE_STANDUP, "ent_chicken_standup" },
+ { STATE_STANDLEFT, "ent_chicken_standleft" },
+ { STATE_STANDRIGHT, "ent_chicken_standright" },
+ { STATE_MOVEDOWN, "ent_chicken_walkdown" },
+ { STATE_MOVEUP, "ent_chicken_walkup" },
+ { STATE_MOVELEFT, "ent_chicken_walkleft" },
+ { STATE_MOVERIGHT, "ent_chicken_walkright" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef vortexian[] = {
+ { STATE_STANDDOWN, "ent_vortexian_standdown" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef maintBot[] = {
+ { STATE_STANDDOWN, "ent_maintbot_standdown" },
+ { STATE_STANDUP, "ent_maintbot_standup" },
+ { STATE_STANDLEFT, "ent_maintbot_standleft" },
+ { STATE_STANDRIGHT, "ent_maintbot_standright" },
+ { STATE_MOVEDOWN, "ent_maintbot_walkdown" },
+ { STATE_MOVEUP, "ent_maintbot_walkup" },
+ { STATE_MOVELEFT, "ent_maintbot_walkleft" },
+ { STATE_MOVERIGHT, "ent_maintbot_walkright" },
+ { STATE_USEDOWN, "ent_maintbot_usedown" },
+ { STATE_USEUP, "ent_maintbot_useup" },
+ { STATE_USELEFT, "ent_maintbot_useleft" },
+ { STATE_USERIGHT, "ent_maintbot_useright" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef scientist[] = {
+ { STATE_BLINK, "ent_scientist_blink" },
+ { STATE_STANDDOWN, "ent_scientist_standdown" },
+ { STATE_STANDUP, "ent_scientist_standup" },
+ { STATE_STANDLEFT, "ent_scientist_standleft" },
+ { STATE_STANDRIGHT, "ent_scientist_standright" },
+ { STATE_MOVEDOWN, "ent_scientist_walkdown" },
+ { STATE_MOVEUP, "ent_scientist_walkup" },
+ { STATE_MOVELEFT, "ent_scientist_walkleft" },
+ { STATE_MOVERIGHT, "ent_scientist_walkright" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef worker[] = {
+ { STATE_BLINK, "ent_worker_blink" },
+ { STATE_STANDDOWN, "ent_worker_standdown" },
+ { STATE_STANDUP, "ent_worker_standup" },
+ { STATE_STANDLEFT, "ent_worker_standleft" },
+ { STATE_STANDRIGHT, "ent_worker_standright" },
+ { STATE_MOVEDOWN, "ent_worker_walkdown" },
+ { STATE_MOVEUP, "ent_worker_walkup" },
+ { STATE_MOVELEFT, "ent_worker_walkleft" },
+ { STATE_MOVERIGHT, "ent_worker_walkright" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef deadWorker[] = {
+ { STATE_STANDDOWN, "ent_dead_worker_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef accountant[] = {
+ { STATE_STANDDOWN, "ent_accountant_standdown" },
+ { STATE_STANDUP, "ent_accountant_standup" },
+ { STATE_STANDLEFT, "ent_accountant_standleft" },
+ { STATE_STANDRIGHT, "ent_accountant_standright" },
+ { STATE_ENDSTATES }
+};
+
+// Enemies
+
+AIStateDef pushBot[] = {
+ { STATE_MOVEDOWN, "ent_pushbot_walkdown" },
+ { STATE_MOVEUP, "ent_pushbot_walkup" },
+ { STATE_MOVELEFT, "ent_pushbot_walkleft" },
+ { STATE_MOVERIGHT, "ent_pushbot_walkright" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef rightBot[] = {
+ { STATE_MOVEDOWN, "ent_rightbot_walkdown" },
+ { STATE_MOVEUP, "ent_rightbot_walkup" },
+ { STATE_MOVELEFT, "ent_rightbot_walkleft" },
+ { STATE_MOVERIGHT, "ent_rightbot_walkright" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef omniBot[] = {
+ { STATE_MOVEDOWN, "ent_omnibot_walkdown" },
+ { STATE_MOVEUP, "ent_omnibot_walkup" },
+ { STATE_MOVELEFT, "ent_omnibot_walkleft" },
+ { STATE_MOVERIGHT, "ent_omnibot_walkright" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef laser[] = {
+ { STATE_STANDDOWN, "ent_laser_down" },
+ { STATE_STANDUP, "ent_laser_up" },
+ { STATE_STANDLEFT, "ent_laser_left" },
+ { STATE_STANDRIGHT, "ent_laser_right" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef diverter[] = {
+ { STATE_DIVERTER_BL, "ent_deflectorbl_sit" },
+ { STATE_DIVERTER_BR, "ent_deflectorbr_sit" },
+ { STATE_DIVERTER_TL, "ent_deflectortl_sit" },
+ { STATE_DIVERTER_TR, "ent_deflectortr_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef turnBot[] = {
+ { STATE_MOVEDOWN, "ent_turnbot_walkdown" },
+ { STATE_MOVEUP, "ent_turnbot_walkup" },
+ { STATE_MOVELEFT, "ent_turnbot_walkleft" },
+ { STATE_MOVERIGHT, "ent_turnbot_walkright" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef deadEye[] = {
+ { STATE_MOVEDOWN, "ent_deadeye_walkdown" },
+ { STATE_MOVEUP, "ent_deadeye_walkup" },
+ { STATE_MOVELEFT, "ent_deadeye_walkleft" },
+ { STATE_MOVERIGHT, "ent_deadeye_walkright" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef meerkat[] = {
+ { STATE_MEER_MOVE, "ent_meerkat_dirtmove" },
+ { STATE_MEER_APPEAR, "ent_meerkat_appear" },
+ { STATE_MEER_BITE, "ent_meerkat_bite" },
+ { STATE_MEER_DISAPPEAR, "ent_meerkat_disappear" },
+ { STATE_MEER_LOOK, "ent_meerkat_look" },
+};
+
+AIStateDef goodFairy[] = {
+ { STATE_MOVEDOWN, "ent_goodfairy_walkdown" },
+ { STATE_MOVEUP, "ent_goodfairy_walkup" },
+ { STATE_MOVELEFT, "ent_goodfairy_walkleft" },
+ { STATE_MOVERIGHT, "ent_goodfairy_walkright" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef badFairy[] = {
+ { STATE_MOVEDOWN, "ent_badfairy_walkdown" },
+ { STATE_MOVEUP, "ent_badfairy_walkup" },
+ { STATE_MOVELEFT, "ent_badfairy_walkleft" },
+ { STATE_MOVERIGHT, "ent_badfairy_walkright" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef gatePuddle[] = {
+ { STATE_MOVEDOWN, "ent_gatepuddle_standdown"},
+ { STATE_ENDSTATES }
+};
+
+AIStateDef icePuff[] = {
+ { STATE_ICEP_PEEK, "ent_icepuff_peek" },
+ { STATE_ICEP_APPEAR, "ent_icepuff_appear" },
+ { STATE_ICEP_THROWDOWN, "ent_icepuff_throwdown" },
+ { STATE_ICEP_THROWRIGHT, "ent_icepuff_throwright" },
+ { STATE_ICEP_THROWLEFT, "ent_icepuff_throwleft" },
+ { STATE_ICEP_DISAPPEAR, "ent_icepuff_disappear" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef buzzfly[] = {
+ { STATE_MOVEDOWN, "ent_buzzfly_walkdown" },
+ { STATE_MOVEUP, "ent_buzzfly_walkup" },
+ { STATE_MOVELEFT, "ent_buzzfly_walkleft" },
+ { STATE_MOVERIGHT, "ent_buzzfly_walkright" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef fatFrog[] = {
+ { STATE_STANDDOWN, "ent_fatfrog_standdown" },
+ { STATE_STANDLEFT, "ent_fatfrog_standleft" },
+ { STATE_STANDRIGHT, "ent_fatfrog_standright" },
+ { STATE_LICKDOWN, "ent_fatfrog_lickdown" },
+ { STATE_LICKLEFT, "ent_fatfrog_lickleft" },
+ { STATE_LICKRIGHT, "ent_fatfrog_lickright" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef dragon[] = {
+ { STATE_ENDSTATES }
+};
+
+AIStateDef omniBotMissile[] = {
+ { STATE_MOVEDOWN, "ent_omnibot_missile"},
+ { STATE_ENDSTATES }
+};
+
+AIStateDef fourFirer[] = {
+ { STATE_STANDDOWN, "ent_four_laser_down" },
+ { STATE_STANDUP, "ent_four_laser_up" },
+ { STATE_STANDLEFT, "ent_four_laser_left" },
+ { STATE_STANDRIGHT, "ent_four_laser_right" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef railRider[] = {
+ { STATE_STANDDOWN, "ent_railrider_standdown" },
+ { STATE_STANDUP, "ent_railrider_standup" },
+ { STATE_MOVEDOWN, "ent_railrider_walkdown" },
+ { STATE_MOVEUP, "ent_railrider_walkup" },
+ { STATE_MOVELEFT, "ent_railrider_walkleft" },
+ { STATE_MOVERIGHT, "ent_railrider_walkright" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef shockBot[] = {
+ { STATE_MOVEDOWN, "ent_shockbot_walk" },
+ { STATE_SHOCKING, "ent_shock_spark_sit" },
+ { STATE_ENDSTATES }
+};
+
+// Pushables
+
+AIStateDef crate[] = {
+ { STATE_STANDDOWN, "ent_crate_sit" },
+ { STATE_FLOATING, "ent_crate_float" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef barrelLight[] = {
+ { STATE_STANDDOWN, "ent_barrel_light_sit" },
+ { STATE_FLOATING, "ent_barrel_light_float" },
+ { STATE_MELTED, "ent_barrel_light_melt" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef barrelHeavy[] = {
+ { STATE_STANDDOWN, "ent_barrel_heavy_sit" },
+ { STATE_FLOATING, "ent_barrel_heavy_float" },
+ { STATE_MELTED, "ent_barrel_heavy_melt" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef barrelExplode[] = {
+ { STATE_STANDDOWN, "ent_barrel_explode_sit" },
+ { STATE_EXPLODING, "explosion_boom_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef frogStatue[] = {
+ { STATE_STANDDOWN, "ent_frogstatue_sit" },
+ { STATE_ENDSTATES }
+};
+
+// Weapons
+
+AIStateDef club[] = {
+ { STATE_STANDDOWN, "ent_club_sit" },
+ { STATE_ENDSTATES }
+};
+AIStateDef roboStunner[] = {
+ { STATE_STANDDOWN, "ent_robostunner_sit" },
+ { STATE_ENDSTATES }
+};
+AIStateDef slugSlinger[] = {
+ { STATE_STANDDOWN, "ent_slugslinger_sit" },
+ { STATE_ENDSTATES }
+};
+
+// Items
+
+AIStateDef itemChicken[] = {
+ { STATE_STANDDOWN, "ent_chicken_standdown" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef envelopeWhite[] = {
+ { STATE_STANDDOWN, "ent_envelope_white_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef envelopeBlue[] = {
+ { STATE_STANDDOWN, "ent_envelope_blue_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef envelopeRed[] = {
+ { STATE_STANDDOWN, "ent_envelope_red_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef envelopeGreen[] = {
+ { STATE_STANDDOWN, "ent_envelope_green_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef transceiver[] = {
+ { STATE_STANDDOWN, "ent_transceiver_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef cell[] = {
+ { STATE_STANDDOWN, "ent_cell_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef gooCup[] = {
+ { STATE_STANDDOWN, "ent_goo_cup_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef gemWhite[] = {
+ { STATE_STANDDOWN, "ent_gem_white_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef gemBlue[] = {
+ { STATE_STANDDOWN, "ent_gem_blue_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef gemRed[] = {
+ { STATE_STANDDOWN, "ent_gem_red_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef gemGreen[] = {
+ { STATE_STANDDOWN, "ent_gem_green_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef cabKey[] = {
+ { STATE_STANDDOWN, "ent_cabkey_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef teaCup[] = {
+ { STATE_STANDDOWN, "ent_teacup_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef cookie[] = {
+ { STATE_STANDDOWN, "ent_cookie_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef burger[] = {
+ { STATE_STANDDOWN, "ent_burger_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef pda[] = {
+ { STATE_STANDDOWN, "ent_pda_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef book[] = {
+ { STATE_STANDDOWN, "ent_book_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef clipboard[] = {
+ { STATE_STANDDOWN, "ent_clipboard_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef note[] = {
+ { STATE_STANDDOWN, "ent_note_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef keycardWhite[] = {
+ { STATE_STANDDOWN, "ent_keycard_white_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef keycardBlue[] = {
+ { STATE_STANDDOWN, "ent_keycard_blue_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef keycardRed[] = {
+ { STATE_STANDDOWN, "ent_keycard_red_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef keycardGreen[] = {
+ { STATE_STANDDOWN, "ent_keycard_green_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef keycardPurple[] = {
+ { STATE_STANDDOWN, "ent_keycard_purple_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef keycardBlack[] = {
+ { STATE_STANDDOWN, "ent_keycard_black_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef magicEgg[] = {
+ { STATE_STANDDOWN, "ent_magic_egg_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef iceBlock[] = {
+ { STATE_STANDDOWN, "ent_ice_block_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef dollyTool1[] = {
+ { STATE_STANDDOWN, "ent_dolly_tool1_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef dollyTool2[] = {
+ { STATE_STANDDOWN, "ent_dolly_tool2_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef dollyTool3[] = {
+ { STATE_STANDDOWN, "ent_dolly_tool3_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef dollyTool4[] = {
+ { STATE_STANDDOWN, "ent_dolly_tool4_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef seed[] = {
+ { STATE_STANDDOWN, "ent_seed_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef soda[] = {
+ { STATE_STANDDOWN, "ent_soda_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef router[] = {
+ { STATE_STANDDOWN, "ent_router_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef slicer[] = {
+ { STATE_STANDDOWN, "ent_slicer_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef package[] = {
+ { STATE_STANDDOWN, "ent_package_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIStateDef monkeystone[] = {
+ { STATE_STANDDOWN, "ent_monkeystone_sit" },
+ { STATE_ENDSTATES }
+};
+
+AIEntTypeInfo aiEntList[] = {
+ // AI.H enum name lua name list of gfx for states name of init function
+ //--------------------------------------------------------------------------------------------
+ { AI_NONE, "AI_NONE", &none[0], aiNoneInit, NULL },
+ { AI_GUY, "AI_GUY", &guy[0], aiPlayerInit, aiPlayerInit2 },
+ { AI_DOLLY, "AI_DOLLY", &dolly[0], aiDollyInit, aiDollyInit2 },
+ { AI_SERGEANT, "AI_SERGEANT", &sergeant[0], aiSergeantInit, aiSergeantInit2 },
+ { AI_SPACEDUDE, "AI_SPACEDUDE", &spacedude[0], aiSpacedudeInit, aiSpacedudeInit2 },
+ { AI_CHICKEN, "AI_CHICKEN", &chicken[0], aiChickenInit, aiChickenInit2 },
+ { AI_VORTEXIAN, "AI_VORTEXIAN", &vortexian[0], aiVortexianInit, aiVortexianInit2 },
+ { AI_MAINTBOT, "AI_MAINTBOT", &maintBot[0], aiMaintBotInit, aiMaintBotInit2 },
+ { AI_SCIENTIST, "AI_SCIENTIST", &scientist[0], aiScientistInit, aiScientistInit2 },
+ { AI_RAILRIDER, "AI_RAILRIDER", &railRider[0], aiRailRiderInit, aiRailRiderInit2 },
+ { AI_RAILRIDER_ON, "AI_RAILRIDER", &railRider[0], aiRailRiderInit, aiRailRiderInit2 },
+ { AI_SHOCKBOT, "AI_SHOCKBOT", &shockBot[0], aiShockBotInit, aiShockBotInit2 },
+ { AI_FOURFIRER, "AI_FOURFIRER", &fourFirer[0], aiFourFirerInit, aiFourFirerInit2 },
+ { AI_OMNIBOT_MISSILE, "AI_OMNIBOT_MISSILE", &omniBotMissile[0], aiOmniBotMissileInit, aiOmniBotMissileInit2 },
+ { AI_GEM_ATTACK, "AI_GEM_ATTACK", &gemAttack[0], aiGemAttackInit, NULL },
+ { AI_WORKER, "AI_WORKER", &worker[0], aiWorkerInit, aiWorkerInit2 },
+ { AI_ACCOUNTANT, "AI_ACCOUNTANT", &accountant[0], aiAccountantInit, aiAccountantInit2 },
+ { AI_SLUG_ATTACK, "AI_SLUG_ATTACK", &slugAttack[0], aiSlugAttackInit, aiSlugAttackInit2 },
+ { AI_DEADWORKER, "AI_DEADWORKER", &deadWorker[0], aiDeadWorkerInit, aiDeadWorkerInit2 },
+
+ { AI_LASER, "AI_LASER", &laser[0], aiLaserInit, aiLaserInit2 },
+ { AI_DIVERTER, "AI_DIVERTER", &diverter[0], aiDiverterInit, aiDiverterInit2 },
+ { AI_OMNIBOT, "AI_OMNIBOT", &omniBot[0], aiOmniBotInit, aiOmniBotInit2 },
+ { AI_TURNBOT, "AI_TURNBOT", &turnBot[0], aiTurnBotInit, aiTurnBotInit2 },
+ { AI_RIGHTBOT, "AI_RIGHTBOT", &rightBot[0], aiRightBotInit, aiRightBotInit2 },
+ { AI_PUSHBOT, "AI_PUSHBOT", &pushBot[0], aiPushBotInit, aiPushBotInit2 },
+ { AI_DEADEYE, "AI_DEADEYE", &deadEye[0], aiDeadEyeInit, aiDeadEyeInit2 },
+ { AI_MEERKAT, "AI_MEERKAT", &meerkat[0], aiMeerkatInit, aiMeerkatInit2 },
+ { AI_FATFROG, "AI_FATFROG", &fatFrog[0], aiFatFrogInit, aiFatFrogInit2 },
+ { AI_GOODFAIRY, "AI_GOODFAIRY", &goodFairy[0], aiGoodFairyInit, aiGoodFairyInit2 },
+ { AI_BADFAIRY, "AI_BADFAIRY", &badFairy[0], aiBadFairyInit, aiBadFairyInit2 },
+ { AI_GATEPUDDLE, "AI_GATEPUDDLE", &gatePuddle[0], aiGatePuddleInit, aiGatePuddleInit2 },
+ { AI_ICEPUFF, "AI_ICEPUFF", &icePuff[0], aiIcePuffInit, aiIcePuffInit2 },
+ { AI_DRAGON, "AI_DRAGON", &dragon[0], aiDragonInit, aiDragonInit2 },
+ { AI_BUZZFLY, "AI_BUZZFLY", &buzzfly[0], aiBuzzflyInit, aiBuzzflyInit2 },
+ { AI_BOOMBARREL, "AI_BOOMBARREL", &barrelExplode[0], aiBarrelExplodeInit, aiBarrelExplodeInit2 },
+ { AI_FROGSTATUE, "AI_FROGSTATUE", &frogStatue[0], aiFrogStatueInit, aiFrogStatueInit2 },
+
+ { AI_MAGIC_EGG, "AI_MAGIC_EGG", &magicEgg[0], aiMagicEggInit, aiMagicEggInit2 },
+ { AI_ICE_BLOCK, "AI_ICE_BLOCK", &iceBlock[0], aiIceBlockInit, aiIceBlockInit2 },
+
+ { AI_CRATE, "AI_CRATE", &crate[0], aiCrateInit, aiCrateInit2 },
+ { AI_LIGHTBARREL, "AI_LIGHTBARREL", &barrelLight[0], aiBarrelLightInit, aiBarrelLightInit2 },
+ { AI_HEAVYBARREL, "AI_HEAVYBARREL", &barrelHeavy[0], aiBarrelHeavyInit, aiBarrelHeavyInit2 },
+
+ { ITEM_CELL, "ITEM_CELL", &cell[0], aiCellInit, aiCellInit2 },
+ { ITEM_ENV_WHITE, "ITEM_ENV_WHITE", &envelopeWhite[0], aiEnvelopeWhiteInit, aiEnvelopeWhiteInit2 },
+ { ITEM_TRANSCEIVER, "ITEM_TRANSCEIVER", &transceiver[0], aiTransceiverInit, aiTransceiverInit2 },
+ { ITEM_MONKEYSTONE, "ITEM_MONKEYSTONE", &monkeystone[0], aiMonkeystoneInit, aiMonkeystoneInit2 },
+ { ITEM_GEM_WHITE, "ITEM_GEM_WHITE", &gemWhite[0], aiGemWhiteInit, aiGemWhiteInit2 },
+ { ITEM_CHICKEN, "ITEM_CHICKEN", &itemChicken[0], aiItemChickenInit, aiItemChickenInit2 },
+ { ITEM_GOO_CUP, "ITEM_GOO_CUP", &gooCup[0], aiGooCupInit, aiGooCupInit2 },
+ { ITEM_CABKEY, "ITEM_CABKEY", &cabKey[0], aiCabKeyInit, aiCabKeyInit2 },
+ { ITEM_ENV_BLUE, "ITEM_ENV_BLUE", &envelopeBlue[0], aiEnvelopeBlueInit, aiEnvelopeBlueInit2 },
+ { ITEM_ENV_RED, "ITEM_ENV_RED", &envelopeRed[0], aiEnvelopeRedInit, aiEnvelopeRedInit2 },
+ { ITEM_CLUB, "ITEM_CLUB", &club[0], aiClubInit, aiClubInit2 },
+ { ITEM_ROBOSTUNNER, "ITEM_ROBOSTUNNER", &roboStunner[0], aiRoboStunnerInit, aiRoboStunnerInit2 },
+ { ITEM_SLUGSLINGER, "ITEM_SLUGSLINGER", &slugSlinger[0], aiSlugSlingerInit, aiSlugSlingerInit2 },
+
+ { ITEM_ENV_GREEN, "ITEM_ENV_GREEN", &envelopeGreen[0], aiEnvelopeGreenInit, aiEnvelopeGreenInit2 },
+ { ITEM_GEM_BLUE, "ITEM_GEM_BLUE", &gemBlue[0], aiGemBlueInit, aiGemBlueInit2 },
+ { ITEM_GEM_RED, "ITEM_GEM_RED", &gemRed[0], aiGemRedInit, aiGemRedInit2 },
+ { ITEM_GEM_GREEN, "ITEM_GEM_GREEN", &gemGreen[0], aiGemGreenInit, aiGemGreenInit2 },
+ { ITEM_TEACUP, "ITEM_TEACUP", &teaCup[0], aiTeaCupInit, aiTeaCupInit2 },
+ { ITEM_COOKIE, "ITEM_COOKIE", &cookie[0], aiCookieInit, aiCookieInit2 },
+ { ITEM_BURGER, "ITEM_BURGER", &burger[0], aiBurgerInit, aiBurgerInit2 },
+ { ITEM_PDA, "ITEM_PDA", &pda[0], aiPdaInit, aiPdaInit2 },
+ { ITEM_BOOK, "ITEM_BOOK", &book[0], aiBookInit, aiBookInit2 },
+ { ITEM_CLIPBOARD, "ITEM_CLIPBOARD", &clipboard[0], aiClipboardInit, aiClipboardInit2 },
+ { ITEM_NOTE, "ITEM_NOTE", &note[0], aiNoteInit, aiNoteInit2 },
+ { ITEM_KEYCARD_WHITE, "ITEM_KEYCARD_WHITE", &keycardWhite[0], aiKeycardWhiteInit, aiKeycardWhiteInit2 },
+ { ITEM_KEYCARD_BLUE, "ITEM_KEYCARD_BLUE", &keycardBlue[0], aiKeycardBlueInit, aiKeycardBlueInit2 },
+ { ITEM_KEYCARD_RED, "ITEM_KEYCARD_RED", &keycardRed[0], aiKeycardRedInit, aiKeycardRedInit2 },
+ { ITEM_KEYCARD_GREEN, "ITEM_KEYCARD_GREEN", &keycardGreen[0], aiKeycardGreenInit, aiKeycardGreenInit2 },
+ { ITEM_KEYCARD_PURPLE, "ITEM_KEYCARD_PURPLE", &keycardPurple[0], aiKeycardPurpleInit, aiKeycardPurpleInit2 },
+ { ITEM_KEYCARD_BLACK, "ITEM_KEYCARD_BLACK", &keycardBlack[0], aiKeycardBlackInit, aiKeycardBlackInit2 },
+ { ITEM_DOLLYTOOL1, "ITEM_DOLLYTOOL1", &dollyTool1[0], aiDollyTool1Init, aiDollyTool1Init2 },
+ { ITEM_DOLLYTOOL2, "ITEM_DOLLYTOOL2", &dollyTool2[0], aiDollyTool2Init, aiDollyTool2Init2 },
+ { ITEM_DOLLYTOOL3, "ITEM_DOLLYTOOL3", &dollyTool3[0], aiDollyTool3Init, aiDollyTool3Init2 },
+ { ITEM_DOLLYTOOL4, "ITEM_DOLLYTOOL4", &dollyTool4[0], aiDollyTool4Init, aiDollyTool4Init2 },
+ { ITEM_SEED, "ITEM_SEED", &seed[0], aiSeedInit, aiSeedInit2 },
+ { ITEM_SODA, "ITEM_SODA", &soda[0], aiSodaInit, aiSodaInit2 },
+ { ITEM_ROUTER, "ITEM_ROUTER", &router[0], aiRouterInit, aiRouterInit2 },
+ { ITEM_SLICER, "ITEM_SLICER", &slicer[0], aiSlicerInit, aiSlicerInit2 },
+ { ITEM_PACKAGE, "ITEM_PACKAGE", &package[0], aiPackageInit, aiPackageInit2 },
+
+ { END_AI_TYPES, NULL, NULL, NULL, NULL }
+};
+
+bool AI::init() {
+ warning("STUB: AI::init required");
+ return true;
+}
+} // End of Namespace
diff --git a/engines/hdb/ai-player.cpp b/engines/hdb/ai-player.cpp
new file mode 100644
index 0000000000..8c09ac1bcd
--- /dev/null
+++ b/engines/hdb/ai-player.cpp
@@ -0,0 +1,968 @@
+/* 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "hdb/hdb.h"
+
+namespace HDB {
+
+void aiPlayerInit(AIEntity *e) {
+ warning("STUB: AI: aiPlayerInit required");
+}
+
+void aiPlayerInit2(AIEntity *e) {
+ warning("STUB: AI: aiPlayerInit2 required");
+}
+
+void aiPlayerAction(AIEntity *e) {
+ warning("STUB: AI: aiPlayerAction required");
+}
+
+void aiPlayerDraw(AIEntity *e, int mx, int my) {
+ warning("STUB: AI: aiPlayerDraw required");
+}
+
+void aiGemAttackInit(AIEntity *e) {
+ warning("STUB: AI: aiGemAttackInit required");
+}
+
+void aiGemAttackInit2(AIEntity *e) {
+ warning("STUB: AI: aiGemAttackInit2 required");
+}
+
+void aiGemAttackAction(AIEntity *e) {
+ warning("STUB: AI: aiGemAttackAction required");
+}
+
+void aiChickenAction(AIEntity *e) {
+ warning("STUB: AI: aiChickenAction required");
+}
+
+void aiChickenUse(AIEntity *e) {
+ warning("STUB: AI: aiChickenUse required");
+}
+
+void aiChickenInit(AIEntity *e) {
+ warning("STUB: AI: aiChickenInit required");
+}
+
+void aiChickenInit2(AIEntity *e) {
+ warning("STUB: AI: aiChickenInit2 required");
+}
+
+void aiDollyInit(AIEntity *e) {
+ warning("STUB: AI: aiDollyInit required");
+}
+
+void aiDollyInit2(AIEntity *e) {
+ warning("STUB: AI: aiDollyInit2 required");
+}
+
+void aiSergeantInit(AIEntity *e) {
+ warning("STUB: AI: aiSergeantInit required");
+}
+
+void aiSergeantInit2(AIEntity *e) {
+ warning("STUB: AI: aiSergeantInit2 required");
+}
+
+void aiSergeantAction(AIEntity *e) {
+ warning("STUB: AI: aiSergeantAction required");
+}
+
+void aiSpacedudeInit(AIEntity *e) {
+ warning("STUB: AI: aiSpacedudeInit required");
+}
+
+void aiSpacedudeInit2(AIEntity *e) {
+ warning("STUB: AI: aiSpacedudeInit2 required");
+}
+
+void aiCrateAction(AIEntity *e) {
+ warning("STUB: AI: aiCrateAction required");
+}
+
+void aiCrateInit2(AIEntity *e) {
+ warning("STUB: AI: aiCrateInit2 required");
+}
+
+void aiCrateInit(AIEntity *e) {
+ warning("STUB: AI: aiCrateInit required");
+}
+
+void aiBarrelLightAction(AIEntity *e) {
+ warning("STUB: AI: aiBarrelLightAction required");
+}
+
+void aiBarrelLightInit2(AIEntity *e) {
+ warning("STUB: AI: aiBarrelLightInit2 required");
+}
+
+void aiBarrelLightInit(AIEntity *e) {
+ warning("STUB: AI: aiBarrelLightInit required");
+}
+
+void aiBarrelHeavyAction(AIEntity *e) {
+ warning("STUB: AI: aiBarrelHeavyAction required");
+}
+
+void aiBarrelHeavyInit2(AIEntity *e) {
+ warning("STUB: AI: aiBarrelHeavyInit2 required");
+}
+
+void aiBarrelHeavyInit(AIEntity *e) {
+ warning("STUB: AI: aiBarrelHeavyInit required");
+}
+
+void aiBarrelExplosionEnd(AIEntity *e) {
+ warning("STUB: AI: aiBarrelExplosionEnd required");
+}
+
+void aiBarrelExplosionAction(AIEntity *e) {
+ warning("STUB: AI: aiBarrelExplosionAction required");
+}
+
+void aiBarrelExplode(AIEntity *e) {
+ warning("STUB: AI: aiBarrelExplode required");
+}
+
+void aiBarrelExplodeInit(AIEntity *e) {
+ warning("STUB: AI: aiBarrelExplodeInit required");
+}
+
+void aiBarrelExplodeInit2(AIEntity *e) {
+ warning("STUB: AI: aiBarrelExplodeInit2 required");
+}
+
+void aiBarrelExplodeAction(AIEntity *e) {
+ warning("STUB: AI: aiBarrelExplodeAction required");
+}
+
+void aiBarrelExplodeSpread(AIEntity *e) {
+ warning("STUB: AI: aiBarrelExplodeSpread required");
+}
+
+void aiBarrelBlowup(AIEntity *e, int x, int y) {
+ warning("STUB: AI: aiBarrelBlowup required");
+}
+
+void aiMaintBotInit(AIEntity *e) {
+ warning("STUB: AI: aiMaintBotInit required");
+}
+
+void aiMaintBotInit2(AIEntity *e) {
+ warning("STUB: AI: aiMaintBotInit2 required");
+}
+
+void aiMaintBotInitAction(AIEntity *e) {
+ warning("STUB: AI: aiMaintBotInitAction required");
+}
+
+void aiShockBotAction(AIEntity *e) {
+ warning("STUB: AI: aiShockBotAction required");
+}
+
+void aiShockBotShock(AIEntity *e, int mx, int my) {
+ warning("STUB: AI: aiShockBotShock required");
+}
+
+void aiShockBotInit(AIEntity *e) {
+ warning("STUB: AI: aiShockBotInit required");
+}
+
+void aiShockBotInit2(AIEntity *e) {
+ warning("STUB: AI: aiShockBotInit2 required");
+}
+
+void aiScientistInit(AIEntity *e) {
+ warning("STUB: AI: aiScientistInit required");
+}
+
+void aiScientistInit2(AIEntity *e) {
+ warning("STUB: AI: aiScientistInit2 required");
+}
+
+void aiFourFirerInit(AIEntity *e) {
+ warning("STUB: AI: aiFourFirerInit required");
+}
+
+void aiFourFirerInit2(AIEntity *e) {
+ warning("STUB: AI: aiFourFirerInit2 required");
+}
+
+void aiFourFirerAction(AIEntity *e) {
+ warning("STUB: AI: aiFourFirerAction required");
+}
+
+void aiRailRiderInit(AIEntity *e) {
+ warning("STUB: AI: aiRailRiderInit required");
+}
+
+void aiRailRiderInit2(AIEntity *e) {
+ warning("STUB: AI: aiRailRiderInit2 required");
+}
+
+void aiRailRiderAction(AIEntity *e) {
+ warning("STUB: AI: aiRailRiderAction required");
+}
+
+void aiRailRiderUse(AIEntity *e) {
+ warning("STUB: AI: aiRailRiderUse required");
+}
+
+void aiRailRiderOnUse(AIEntity *e) {
+ warning("STUB: AI: aiRailRiderOnUse required");
+}
+
+void aiRailRiderOnAction(AIEntity *e) {
+ warning("STUB: AI: aiRailRiderOnAction required");
+}
+
+void aiOmniBotMissileAction(AIEntity *e) {
+ warning("STUB: AI: aiOmniBotMissileAction required");
+}
+
+void aiOmniBotMissileInit(AIEntity *e) {
+ warning("STUB: AI: aiOmniBotMissileInit required");
+}
+
+void aiOmniBotMissileInit2(AIEntity *e) {
+ warning("STUB: AI: aiOmniBotMissileInit2 required");
+}
+
+void aiSlugAttackAction(AIEntity *e) {
+ warning("STUB: AI: aiSlugAttackAction required");
+}
+
+void aiSlugAttackDraw(AIEntity *e, int mx, int my) {
+ warning("STUB: AI: aiSlugAttackDraw required");
+}
+
+void aiSlugAttackInit(AIEntity *e) {
+ warning("STUB: AI: aiSlugAttackInit required");
+}
+
+void aiSlugAttackInit2(AIEntity *e) {
+ warning("STUB: AI: aiSlugAttackInit2 required");
+}
+
+void aiDeadWorkerInit(AIEntity *e) {
+ warning("STUB: AI: aiDeadWorkerInit required");
+}
+
+void aiDeadWorkerInit2(AIEntity *e) {
+ warning("STUB: AI: aiDeadWorkerInit2 required");
+}
+
+void aiWorkerInit(AIEntity *e) {
+ warning("STUB: AI: aiWorkerInit required");
+}
+
+void aiWorkerInit2(AIEntity *e) {
+ warning("STUB: AI: aiWorkerInit2 required");
+}
+
+void aiAccountantInit(AIEntity *e) {
+ warning("STUB: AI: aiAccountantInit required");
+}
+
+void aiAccountantInit2(AIEntity *e) {
+ warning("STUB: AI: aiAccountantInit2 required");
+}
+
+void aiFrogStatueInit(AIEntity *e) {
+ warning("STUB: AI: aiFrogStatueInit required");
+}
+
+void aiFrogStatueInit2(AIEntity *e) {
+ warning("STUB: AI: aiFrogStatueInit2 required");
+}
+
+void aiFrogStatueAction(AIEntity *e) {
+ warning("STUB: AI: aiFrogStatueAction required");
+}
+
+void aiRoboStunnerAction(AIEntity *e) {
+ warning("STUB: AI: aiRoboStunnerAction required");
+}
+
+void aiRoboStunnerInit(AIEntity *e) {
+ warning("STUB: AI: aiRoboStunnerInit required");
+}
+
+void aiRoboStunnerInit2(AIEntity *e) {
+ warning("STUB: AI: aiRoboStunnerInit2 required");
+}
+
+void aiClubInit(AIEntity *e) {
+ warning("STUB: AI: aiClubInit required");
+}
+
+void aiClubInit2(AIEntity *e) {
+ warning("STUB: AI: aiClubInit2 required");
+}
+
+void aiSlugSlingerInit(AIEntity *e) {
+ warning("STUB: AI: aiSlugSlingerInit required");
+}
+
+void aiSlugSlingerInit2(AIEntity *e) {
+ warning("STUB: AI: aiSlugSlingerInit2 required");
+}
+
+void aiTurnBotAction(AIEntity *e) {
+ warning("STUB: AI: aiTurnBotAction required");
+}
+
+void aiPushBotAction(AIEntity *e) {
+ warning("STUB: AI: aiPushBotAction required");
+}
+
+void aiOmniBotAction(AIEntity *e) {
+ warning("STUB: AI: aiOmniBotAction required");
+}
+
+void aiOmniBotMove(AIEntity *e) {
+ warning("STUB: AI: aiOmniBotMove required");
+}
+
+void aiLaserAction(AIEntity *e) {
+ warning("STUB: AI: aiLaserAction required");
+}
+
+void aiLaserDraw(AIEntity *e, int mx, int my) {
+ warning("STUB: AI: aiLaserDraw required");
+}
+
+void aiDiverterAction(AIEntity *e) {
+ warning("STUB: AI: aiDiverterAction required");
+}
+
+void aiDiverterDraw(AIEntity *e, int mx, int my) {
+ warning("STUB: AI: aiDiverterDraw required");
+}
+
+void aiRightBotAction(AIEntity *e) {
+ warning("STUB: AI: aiRightBotAction required");
+}
+
+void aiDeadEyeAction(AIEntity *e) {
+ warning("STUB: AI: aiDeadEyeAction required");
+}
+
+void aiMeerkatDraw(AIEntity *e, int mx, int my) {
+ warning("STUB: AI: aiMeerkatDraw required");
+}
+
+void aiMeerkatAction(AIEntity *e) {
+ warning("STUB: AI: aiMeerkatAction required");
+}
+
+void aiMeerkatLookAround(AIEntity *e) {
+ warning("STUB: AI: aiMeerkatLookAround required");
+}
+
+void aiDeadEyeWalkInPlace(AIEntity *e) {
+ warning("STUB: AI: aiDeadEyeWalkInPlace required");
+}
+
+void aiFatFrogAction(AIEntity *e) {
+ warning("STUB: AI: aiFatFrogAction required");
+}
+
+void aiFatFrogTongueDraw(AIEntity *e, int mx, int my) {
+ warning("STUB: AI: aiFatFrogTongueDraw required");
+}
+
+void aiGoodFairyAction(AIEntity *e) {
+ warning("STUB: AI: aiGoodFairyAction required");
+}
+
+void aiBadFairyAction(AIEntity *e) {
+ warning("STUB: AI: aiBadFairyAction required");
+}
+
+void aiGatePuddleAction(AIEntity *e) {
+ warning("STUB: AI: aiGatePuddleAction required");
+}
+
+void aiIcePuffSnowballAction(AIEntity *e) {
+ warning("STUB: AI: aiIcePuffSnowballAction required");
+}
+
+void aiIcePuffSnowballDraw(AIEntity *e, int mx, int my) {
+ warning("STUB: AI: aiIcePuffSnowballDraw required");
+}
+
+void aiIcePuffAction(AIEntity *e) {
+ warning("STUB: AI: aiIcePuffAction required");
+}
+
+void aiBuzzflyAction(AIEntity *e) {
+ warning("STUB: AI: aiBuzzflyAction required");
+}
+
+void aiDragonAction(AIEntity *e) {
+ warning("STUB: AI: aiDragonAction required");
+}
+
+void aiDragonDraw(AIEntity *e, int mx, int my) {
+ warning("STUB: AI: aiDragonDraw required");
+}
+
+void aiTurnBotInit(AIEntity *e) {
+ warning("STUB: AI: aiTurnBotInit required");
+}
+
+void aiTurnBotInit2(AIEntity *e) {
+ warning("STUB: AI: aiTurnBotInit2 required");
+}
+
+void aiListenBotInit(AIEntity *e) {
+ warning("STUB: AI: aiListenBotInit required");
+}
+
+void aiListenBotInit2(AIEntity *e) {
+ warning("STUB: AI: aiListenBotInit2 required");
+}
+
+void aiOmniBotInit(AIEntity *e) {
+ warning("STUB: AI: aiOmniBotInit required");
+}
+
+void aiOmniBotInit2(AIEntity *e) {
+ warning("STUB: AI: aiOmniBotInit2 required");
+}
+
+void aiLaserInit(AIEntity *e) {
+ warning("STUB: AI: aiLaserInit required");
+}
+
+void aiLaserInit2(AIEntity *e) {
+ warning("STUB: AI: aiLaserInit2 required");
+}
+
+void aiDiverterInit(AIEntity *e) {
+ warning("STUB: AI: aiDiverterInit required");
+}
+
+void aiDiverterInit2(AIEntity *e) {
+ warning("STUB: AI: aiDiverterInit2 required");
+}
+
+void aiRightBotInit(AIEntity *e) {
+ warning("STUB: AI: aiRightBotInit required");
+}
+
+void aiRightBotInit2(AIEntity *e) {
+ warning("STUB: AI: aiRightBotInit2 required");
+}
+
+void aiPushBotInit(AIEntity *e) {
+ warning("STUB: AI: aiPushBotInit required");
+}
+
+void aiPushBotInit2(AIEntity *e) {
+ warning("STUB: AI: aiPushBotInit2 required");
+}
+
+void aiDeadEyeInit(AIEntity *e) {
+ warning("STUB: AI: aiDeadEyeInit required");
+}
+
+void aiDeadEyeInit2(AIEntity *e) {
+ warning("STUB: AI: aiDeadEyeInit2 required");
+}
+
+void aiMeerkatInit(AIEntity *e) {
+ warning("STUB: AI: aiMeerkatInit required");
+}
+
+void aiMeerkatInit2(AIEntity *e) {
+ warning("STUB: AI: aiMeerkatInit2 required");
+}
+
+void aiFatFrogInit(AIEntity *e) {
+ warning("STUB: AI: aiFatFrogInit required");
+}
+
+void aiFatFrogInit2(AIEntity *e) {
+ warning("STUB: AI: aiFatFrogInit2 required");
+}
+
+void aiGoodFairyInit(AIEntity *e) {
+ warning("STUB: AI: aiGoodFairyInit required");
+}
+
+void aiGoodFairyInit2(AIEntity *e) {
+ warning("STUB: AI: aiGoodFairyInit2 required");
+}
+
+void aiGoodFairyMoveaway(AIEntity *e) {
+ warning("STUB: AI: aiGoodFairyMoveaway required");
+}
+
+void aiBadFairyInit(AIEntity *e) {
+ warning("STUB: AI: aiBadFairyInit required");
+}
+
+void aiBadFairyInit2(AIEntity *e) {
+ warning("STUB: AI: aiBadFairyInit2 required");
+}
+
+void aiGatePuddleInit(AIEntity *e) {
+ warning("STUB: AI: aiGatePuddleInit required");
+}
+
+void aiGatePuddleInit2(AIEntity *e) {
+ warning("STUB: AI: aiGatePuddleInit2 required");
+}
+
+void aiIcePuffInit(AIEntity *e) {
+ warning("STUB: AI: aiIcePuffInit required");
+}
+
+void aiIcePuffInit2(AIEntity *e) {
+ warning("STUB: AI: aiIcePuffInit2 required");
+}
+
+void aiBuzzflyInit(AIEntity *e) {
+ warning("STUB: AI: aiBuzzflyInit required");
+}
+
+void aiBuzzflyInit2(AIEntity *e) {
+ warning("STUB: AI: aiBuzzflyInit2 required");
+}
+
+void aiDragonInit(AIEntity *e) {
+ warning("STUB: AI: aiDragonInit required");
+}
+
+void aiDragonInit2(AIEntity *e) {
+ warning("STUB: AI: aiDragonInit2 required");
+}
+
+void aiDragonWake(AIEntity *e) {
+ warning("STUB: AI: aiDragonWake required");
+}
+
+void aiDragonUse(AIEntity *e) {
+ warning("STUB: AI: aiDragonUse required");
+}
+
+void aiEnvelopeGreenInit(AIEntity *e) {
+ warning("STUB: AI: aiEnvelopeGreenInit required");
+}
+
+void aiEnvelopeGreenInit2(AIEntity *e) {
+ warning("STUB: AI: aiEnvelopeGreenInit2 required");
+}
+
+void aiGemBlueInit(AIEntity *e) {
+ warning("STUB: AI: aiGemBlueInit required");
+}
+
+void aiGemBlueInit2(AIEntity *e) {
+ warning("STUB: AI: aiGemBlueInit2 required");
+}
+
+void aiGemRedInit(AIEntity *e) {
+ warning("STUB: AI: aiGemRedInit required");
+}
+
+void aiGemRedInit2(AIEntity *e) {
+ warning("STUB: AI: aiGemRedInit2 required");
+}
+
+void aiGemGreenInit(AIEntity *e) {
+ warning("STUB: AI: aiGemGreenInit required");
+}
+
+void aiGemGreenInit2(AIEntity *e) {
+ warning("STUB: AI: aiGemGreenInit2 required");
+}
+
+void aiTeaCupInit(AIEntity *e) {
+ warning("STUB: AI: aiTeaCupInit required");
+}
+
+void aiTeaCupInit2(AIEntity *e) {
+ warning("STUB: AI: aiTeaCupInit2 required");
+}
+
+void aiCookieInit(AIEntity *e) {
+ warning("STUB: AI: aiCookieInit required");
+}
+
+void aiCookieInit2(AIEntity *e) {
+ warning("STUB: AI: aiCookieInit2 required");
+}
+
+void aiBurgerInit(AIEntity *e) {
+ warning("STUB: AI: aiBurgerInit required");
+}
+
+void aiBurgerInit2(AIEntity *e) {
+ warning("STUB: AI: aiBurgerInit2 required");
+}
+
+void aiBookInit(AIEntity *e) {
+ warning("STUB: AI: aiBookInit required");
+}
+
+void aiBookInit2(AIEntity *e) {
+ warning("STUB: AI: aiBookInit2 required");
+}
+
+void aiClipboardInit(AIEntity *e) {
+ warning("STUB: AI: aiClipboardInit required");
+}
+
+void aiClipboardInit2(AIEntity *e) {
+ warning("STUB: AI: aiClipboardInit2 required");
+}
+
+void aiNoteInit(AIEntity *e) {
+ warning("STUB: AI: aiNoteInit required");
+}
+
+void aiNoteInit2(AIEntity *e) {
+ warning("STUB: AI: aiNoteInit2 required");
+}
+
+void aiKeycardWhiteInit(AIEntity *e) {
+ warning("STUB: AI: aiKeycardWhiteInit required");
+}
+
+void aiKeycardWhiteInit2(AIEntity *e) {
+ warning("STUB: AI: aiKeycardWhiteInit2 required");
+}
+
+void aiKeycardBlueInit(AIEntity *e) {
+ warning("STUB: AI: aiKeycardBlueInit required");
+}
+
+void aiKeycardBlueInit2(AIEntity *e) {
+ warning("STUB: AI: aiKeycardBlueInit2 required");
+}
+
+void aiKeycardRedInit(AIEntity *e) {
+ warning("STUB: AI: aiKeycardRedInit required");
+}
+
+void aiKeycardRedInit2(AIEntity *e) {
+ warning("STUB: AI: aiKeycardRedInit2 required");
+}
+
+void aiKeycardGreenInit(AIEntity *e) {
+ warning("STUB: AI: aiKeycardGreenInit required");
+}
+
+void aiKeycardGreenInit2(AIEntity *e) {
+ warning("STUB: AI: aiKeycardGreenInit2 required");
+}
+
+void aiKeycardPurpleInit(AIEntity *e) {
+ warning("STUB: AI: aiKeycardPurpleInit required");
+}
+
+void aiKeycardPurpleInit2(AIEntity *e) {
+ warning("STUB: AI: aiKeycardPurpleInit2 required");
+}
+
+void aiKeycardBlackInit(AIEntity *e) {
+ warning("STUB: AI: aiKeycardBlackInit required");
+}
+
+void aiKeycardBlackInit2(AIEntity *e) {
+ warning("STUB: AI: aiKeycardBlackInit2 required");
+}
+
+void aiSeedInit(AIEntity *e) {
+ warning("STUB: AI: aiSeedInit required");
+}
+
+void aiSeedInit2(AIEntity *e) {
+ warning("STUB: AI: aiSeedInit2 required");
+}
+
+void aiSodaInit(AIEntity *e) {
+ warning("STUB: AI: aiSodaInit required");
+}
+
+void aiSodaInit2(AIEntity *e) {
+ warning("STUB: AI: aiSodaInit2 required");
+}
+
+void aiDollyTool1Init(AIEntity *e) {
+ warning("STUB: AI: aiDollyTool1Init required");
+}
+
+void aiDollyTool1Init2(AIEntity *e) {
+ warning("STUB: AI: aiDollyTool1Init2 required");
+}
+
+void aiDollyTool2Init(AIEntity *e) {
+ warning("STUB: AI: aiDollyTool2Init required");
+}
+
+void aiDollyTool2Init2(AIEntity *e) {
+ warning("STUB: AI: aiDollyTool2Init2 required");
+}
+
+void aiDollyTool3Init(AIEntity *e) {
+ warning("STUB: AI: aiDollyTool3Init required");
+}
+
+void aiDollyTool3Init2(AIEntity *e) {
+ warning("STUB: AI: aiDollyTool3Init2 required");
+}
+
+void aiDollyTool4Init(AIEntity *e) {
+ warning("STUB: AI: aiDollyTool4Init required");
+}
+
+void aiDollyTool4Init2(AIEntity *e) {
+ warning("STUB: AI: aiDollyTool4Init2 required");
+}
+
+void aiRouterInit(AIEntity *e) {
+ warning("STUB: AI: aiRouterInit required");
+}
+
+void aiRouterInit2(AIEntity *e) {
+ warning("STUB: AI: aiRouterInit2 required");
+}
+
+void aiSlicerInit(AIEntity *e) {
+ warning("STUB: AI: aiSlicerInit required");
+}
+
+void aiSlicerInit2(AIEntity *e) {
+ warning("STUB: AI: aiSlicerInit2 required");
+}
+
+void aiPackageInit(AIEntity *e) {
+ warning("STUB: AI: aiPackageInit required");
+}
+
+void aiPackageInit2(AIEntity *e) {
+ warning("STUB: AI: aiPackageInit2 required");
+}
+
+void aiMagicEggAction(AIEntity *e) {
+ warning("STUB: AI: aiMagicEggAction required");
+}
+
+void aiMagicEggInit(AIEntity *e) {
+ warning("STUB: AI: aiMagicEggInit required");
+}
+
+void aiMagicEggInit2(AIEntity *e) {
+ warning("STUB: AI: aiMagicEggInit2 required");
+}
+
+void aiMagicEggUse(AIEntity *e) {
+ warning("STUB: AI: aiMagicEggUse required");
+}
+
+void aiIceBlockAction(AIEntity *e) {
+ warning("STUB: AI: aiIceBlockAction required");
+}
+
+void aiIceBlockInit(AIEntity *e) {
+ warning("STUB: AI: aiIceBlockInit required");
+}
+
+void aiIceBlockInit2(AIEntity *e) {
+ warning("STUB: AI: aiIceBlockInit2 required");
+}
+
+void aiCabKeyInit(AIEntity *e) {
+ warning("STUB: AI: aiCabKeyInit required");
+}
+
+void aiCabKeyInit2(AIEntity *e) {
+ warning("STUB: AI: aiCabKeyInit2 required");
+}
+
+void aiItemChickenInit(AIEntity *e) {
+ warning("STUB: AI: aiItemChickenInit required");
+}
+
+void aiItemChickenInit2(AIEntity *e) {
+ warning("STUB: AI: aiItemChickenInit2 required");
+}
+
+void aiPdaInit(AIEntity *e) {
+ warning("STUB: AI: aiPdaInit required");
+}
+
+void aiPdaInit2(AIEntity *e) {
+ warning("STUB: AI: aiPdaInit2 required");
+}
+
+void aiCellUse(AIEntity *e) {
+ warning("STUB: AI: aiCellUse required");
+}
+
+void aiCellInit2(AIEntity *e) {
+ warning("STUB: AI: aiCellInit2 required");
+}
+
+void aiCellInit(AIEntity *e) {
+ warning("STUB: AI: aiCellInit required");
+}
+
+void aiEnvelopeWhiteInit(AIEntity *e) {
+ warning("STUB: AI: aiEnvelopeWhiteInit required");
+}
+
+void aiEnvelopeWhiteInit2(AIEntity *e) {
+ warning("STUB: AI: aiEnvelopeWhiteInit2 required");
+}
+
+void aiEnvelopeBlueInit(AIEntity *e) {
+ warning("STUB: AI: aiEnvelopeBlueInit required");
+}
+
+void aiEnvelopeBlueInit2(AIEntity *e) {
+ warning("STUB: AI: aiEnvelopeBlueInit2 required");
+}
+
+void aiEnvelopeRedInit(AIEntity *e) {
+ warning("STUB: AI: aiEnvelopeRedInit required");
+}
+
+void aiEnvelopeRedInit2(AIEntity *e) {
+ warning("STUB: AI: aiEnvelopeRedInit2 required");
+}
+
+void aiTransceiverInit(AIEntity *e) {
+ warning("STUB: AI: aiTransceiverInit required");
+}
+
+void aiTransceiverInit2(AIEntity *e) {
+ warning("STUB: AI: aiTransceiverInit2 required");
+}
+
+void aiTransceiverAction(AIEntity *e) {
+ warning("STUB: AI: aiTransceiverAction required");
+}
+
+void aiTransceiverUse(AIEntity *e) {
+ warning("STUB: AI: aiTransceiverUse required");
+}
+
+void aiMonkeystoneInit(AIEntity *e) {
+ warning("STUB: AI: aiMonkeystoneInit required");
+}
+
+void aiMonkeystoneAction(AIEntity *e) {
+ warning("STUB: AI: aiMonkeystoneAction required");
+}
+
+void aiMonkeystoneInit2(AIEntity *e) {
+ warning("STUB: AI: aiMonkeystoneInit2 required");
+}
+
+void aiMonkeystoneUse(AIEntity *e) {
+ warning("STUB: AI: aiMonkeystoneUse required");
+}
+
+void aiMonkeystoneUse2(AIEntity *e) {
+ warning("STUB: AI: aiMonkeystoneUse2 required");
+}
+
+void aiGemAction(AIEntity *e) {
+ warning("STUB: AI: aiGemAction required");
+}
+
+void aiGemAction2(AIEntity *e) {
+ warning("STUB: AI: aiGemAction2 required");
+}
+
+void aiGemWhiteInit(AIEntity *e) {
+ warning("STUB: AI: aiGemWhiteInit required");
+}
+
+void aiGemWhiteInit2(AIEntity *e) {
+ warning("STUB: AI: aiGemWhiteInit2 required");
+}
+
+void aiGooCupUse(AIEntity *e) {
+ warning("STUB: AI: aiGooCupUse required");
+}
+
+void aiGooCupInit(AIEntity *e) {
+ warning("STUB: AI: aiGooCupInit required");
+}
+
+void aiGooCupInit2(AIEntity *e) {
+ warning("STUB: AI: aiGooCupInit2 required");
+}
+
+void aiVortexianAction(AIEntity *e) {
+ warning("STUB: AI: aiVortexianAction required");
+}
+
+void aiVortexianUse(AIEntity *e) {
+ warning("STUB: AI: aiVortexianUse required");
+}
+
+void aiVortexianInit(AIEntity *e) {
+ warning("STUB: AI: aiVortexianInit required");
+}
+
+void aiVortexianInit2(AIEntity *e) {
+ warning("STUB: AI: aiVortexianInit2 required");
+}
+
+void aiNoneInit(AIEntity *e) {
+ warning("STUB: AI: aiNoneInit required");
+}
+
+void aiNoneInit2(AIEntity *e) {
+ warning("STUB: AI: aiNoneInit2 required");
+}
+
+void callbackDoorOpenClose(int x, int y) {
+ warning("STUB: AI: callbackDoorOpenClose required");
+}
+
+void callbackAutoDoorOpenClose(int x, int y) {
+ warning("STUB: AI: callbackAutoDoorOpenClose required");
+}
+
+// Utility Functions
+void aiAnimateStanddown(AIEntity *e, int speed) {
+ warning("STUB: AI: aiAnimateStanddown required");
+}
+
+void aiGenericAction(AIEntity *e) {
+ warning("STUB: AI: aiGenericAction required");
+}
+
+void aiGetItemAction(AIEntity *e) {
+ warning("STUB: AI: aiGetItemAction required");
+}
+
+} // End of Namespace \ No newline at end of file
diff --git a/engines/hdb/ai-player.h b/engines/hdb/ai-player.h
new file mode 100644
index 0000000000..b78d03cd62
--- /dev/null
+++ b/engines/hdb/ai-player.h
@@ -0,0 +1,284 @@
+/* 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef HDB_AI_PLAYER_H
+#define HDB_AI_PLAYER_H
+
+#include "hdb/hdb.h"
+
+namespace HDB {
+
+void aiPlayerInit(AIEntity *e);
+void aiPlayerInit2(AIEntity *e);
+void aiPlayerAction(AIEntity *e);
+void aiPlayerDraw(AIEntity *e, int mx, int my);
+void aiGemAttackInit(AIEntity *e);
+void aiGemAttackInit2(AIEntity *e);
+void aiGemAttackAction(AIEntity *e);
+void aiChickenAction(AIEntity *e);
+void aiChickenUse(AIEntity *e);
+void aiChickenInit(AIEntity *e);
+void aiChickenInit2(AIEntity *e);
+void aiDollyInit(AIEntity *e);
+void aiDollyInit2(AIEntity *e);
+void aiSergeantInit(AIEntity *e);
+void aiSergeantInit2(AIEntity *e);
+void aiSergeantAction(AIEntity *e);
+void aiSpacedudeInit(AIEntity *e);
+void aiSpacedudeInit2(AIEntity *e);
+
+void aiCrateAction(AIEntity *e);
+void aiCrateInit2(AIEntity *e);
+void aiCrateInit(AIEntity *e);
+void aiBarrelLightAction(AIEntity *e);
+void aiBarrelLightInit2(AIEntity *e);
+void aiBarrelLightInit(AIEntity *e);
+void aiBarrelHeavyAction(AIEntity *e);
+void aiBarrelHeavyInit(AIEntity *e);
+void aiBarrelHeavyInit2(AIEntity *e);
+void aiBarrelExplosionEnd(AIEntity *e);
+void aiBarrelExplosionAction(AIEntity *e);
+void aiBarrelExplode(AIEntity *e);
+void aiBarrelExplodeInit(AIEntity *e);
+void aiBarrelExplodeInit2(AIEntity *e);
+void aiBarrelExplodeAction(AIEntity *e);
+void aiBarrelExplodeSpread(AIEntity *e);
+void aiBarrelBlowup(AIEntity *e, int x, int y);
+
+void aiMaintBotInit(AIEntity *e);
+void aiMaintBotInit2(AIEntity *e);
+void aiMaintBotAction(AIEntity *e);
+void aiShockBotAction(AIEntity *e);
+void aiShockBotShock(AIEntity *e, int mx, int my);
+void aiShockBotInit(AIEntity *e);
+void aiShockBotInit2(AIEntity *e);
+void aiScientistInit(AIEntity *e);
+void aiScientistInit2(AIEntity *e);
+void aiFourFirerInit(AIEntity *e);
+void aiFourFirerInit2(AIEntity *e);
+void aiFourFirerAction(AIEntity *e);
+void aiRailRiderInit(AIEntity *e);
+void aiRailRiderInit2(AIEntity *e);
+void aiRailRiderAction(AIEntity *e);
+void aiRailRiderUse(AIEntity *e);
+void aiRailRiderOnUse(AIEntity *e);
+void aiRailRiderOnAction(AIEntity *e);
+void aiOmniBotMissileAction(AIEntity *e);
+void aiOmniBotMissileInit(AIEntity *e);
+void aiOmniBotMissileInit2(AIEntity *e);
+
+void aiSlugAttackAction(AIEntity *e);
+void aiSlugAttackDraw(AIEntity *e, int mx, int my);
+void aiSlugAttackInit(AIEntity *e);
+void aiSlugAttackInit2(AIEntity *e);
+void aiDeadWorkerInit(AIEntity *e);
+void aiDeadWorkerInit2(AIEntity *e);
+void aiWorkerInit(AIEntity *e);
+void aiWorkerInit2(AIEntity *e);
+void aiAccountantInit(AIEntity *e);
+void aiAccountantInit2(AIEntity *e);
+void aiFrogStatueInit(AIEntity *e);
+void aiFrogStatueInit2(AIEntity *e);
+void aiFrogStatueAction(AIEntity *e);
+
+void aiRoboStunnerAction(AIEntity *e);
+void aiRoboStunnerInit(AIEntity *e);
+void aiRoboStunnerInit2(AIEntity *e);
+void aiClubInit(AIEntity *e);
+void aiClubInit2(AIEntity *e);
+void aiSlugSlingerInit(AIEntity *e);
+void aiSlugSlingerInit2(AIEntity *e);
+
+void aiTurnBotAction(AIEntity *e);
+void aiPushBotAction(AIEntity *e);
+void aiOmniBotAction(AIEntity *e);
+void aiOmniBotMove(AIEntity *e);
+void aiLaserAction(AIEntity *e);
+void aiLaserDraw(AIEntity *e, int mx, int my);
+void aiDiverterAction(AIEntity *e);
+void aiDiverterDraw(AIEntity *e, int mx, int my);
+void aiRightBotAction(AIEntity *e);
+void aiDeadEyeAction(AIEntity *e);
+void aiMeerkatDraw(AIEntity *e, int mx, int my);
+void aiMeerkatAction(AIEntity *e);
+void aiMeerkatLookAround(AIEntity *e);
+void aiDeadEyeWalkInPlace(AIEntity *e);
+void aiFatFrogAction(AIEntity *e);
+void aiFatFrogTongueDraw(AIEntity *e, int mx, int my);
+void aiGoodFairyAction(AIEntity *e);
+void aiBadFairyAction(AIEntity *e);
+void aiGatePuddleAction(AIEntity *e);
+void aiIcePuffSnowballAction(AIEntity *e);
+void aiIcePuffSnowballDraw(AIEntity *e, int mx, int my);
+void aiIcePuffAction(AIEntity *e);
+void aiBuzzflyAction(AIEntity *e);
+void aiDragonAction(AIEntity *e);
+void aiDragonDraw(AIEntity *e, int mx, int my);
+
+void aiTurnBotInit(AIEntity *e);
+void aiTurnBotInit2(AIEntity *e);
+void aiListenBotInit(AIEntity *e);
+void aiListenBotInit2(AIEntity *e);
+void aiOmniBotInit(AIEntity *e);
+void aiOmniBotInit2(AIEntity *e);
+void aiLaserAction(AIEntity *e);
+void aiLaserInit(AIEntity *e);
+void aiLaserInit2(AIEntity *e);
+void aiDiverterInit(AIEntity *e);
+void aiDiverterInit2(AIEntity *e);
+void aiRightBotInit(AIEntity *e);
+void aiRightBotInit2(AIEntity *e);
+void aiPushBotInit(AIEntity *e);
+void aiPushBotInit2(AIEntity *e);
+void aiDeadEyeInit(AIEntity *e);
+void aiDeadEyeInit2(AIEntity *e);
+void aiMeerkatInit(AIEntity *e);
+void aiMeerkatInit2(AIEntity *e);
+void aiFatFrogInit(AIEntity *e);
+void aiFatFrogInit2(AIEntity *e);
+void aiGoodFairyInit(AIEntity *e);
+void aiGoodFairyInit2(AIEntity *e);
+void aiGoodFairyMoveaway(AIEntity *e);
+void aiBadFairyInit(AIEntity *e);
+void aiBadFairyInit2(AIEntity *e);
+void aiGatePuddleInit(AIEntity *e);
+void aiGatePuddleInit2(AIEntity *e);
+void aiIcePuffInit(AIEntity *e);
+void aiIcePuffInit2(AIEntity *e);
+void aiBuzzflyInit(AIEntity *e);
+void aiBuzzflyInit2(AIEntity *e);
+void aiDragonInit(AIEntity *e);
+void aiDragonInit2(AIEntity *e);
+void aiDragonWake(AIEntity *e);
+void aiDragonUse(AIEntity *e);
+
+void aiEnvelopeGreenInit(AIEntity *e);
+void aiEnvelopeGreenInit2(AIEntity *e);
+void aiGemBlueInit(AIEntity *e);
+void aiGemBlueInit2(AIEntity *e);
+void aiGemRedInit(AIEntity *e);
+void aiGemRedInit2(AIEntity *e);
+void aiGemGreenInit(AIEntity *e);
+void aiGemGreenInit2(AIEntity *e);
+
+void aiTeaCupInit(AIEntity *e);
+void aiTeaCupInit2(AIEntity *e);
+void aiCookieInit(AIEntity *e);
+void aiCookieInit2(AIEntity *e);
+void aiBurgerInit(AIEntity *e);
+void aiBurgerInit2(AIEntity *e);
+void aiBookInit(AIEntity *e);
+void aiBookInit2(AIEntity *e);
+void aiClipboardInit(AIEntity *e);
+void aiClipboardInit2(AIEntity *e);
+void aiNoteInit(AIEntity *e);
+void aiNoteInit2(AIEntity *e);
+void aiKeycardWhiteInit(AIEntity *e);
+void aiKeycardWhiteInit2(AIEntity *e);
+void aiKeycardBlueInit(AIEntity *e);
+void aiKeycardBlueInit2(AIEntity *e);
+void aiKeycardRedInit(AIEntity *e);
+void aiKeycardRedInit2(AIEntity *e);
+void aiKeycardGreenInit(AIEntity *e);
+void aiKeycardGreenInit2(AIEntity *e);
+void aiKeycardPurpleInit(AIEntity *e);
+void aiKeycardPurpleInit2(AIEntity *e);
+void aiKeycardBlackInit(AIEntity *e);
+void aiKeycardBlackInit2(AIEntity *e);
+void aiSeedInit(AIEntity *e);
+void aiSeedInit2(AIEntity *e);
+void aiSodaInit(AIEntity *e);
+void aiSodaInit2(AIEntity *e);
+void aiDollyTool1Init(AIEntity *e);
+void aiDollyTool1Init2(AIEntity *e);
+void aiDollyTool2Init(AIEntity *e);
+void aiDollyTool2Init2(AIEntity *e);
+void aiDollyTool3Init(AIEntity *e);
+void aiDollyTool3Init2(AIEntity *e);
+void aiDollyTool4Init(AIEntity *e);
+void aiDollyTool4Init2(AIEntity *e);
+void aiRouterInit(AIEntity *e);
+void aiRouterInit2(AIEntity *e);
+void aiSlicerInit(AIEntity *e);
+void aiSlicerInit2(AIEntity *e);
+void aiPackageInit(AIEntity *e);
+void aiPackageInit2(AIEntity *e);
+void aiMagicEggAction(AIEntity *e);
+void aiMagicEggInit(AIEntity *e);
+void aiMagicEggInit2(AIEntity *e);
+void aiMagicEggUse(AIEntity *e);
+void aiIceBlockAction(AIEntity *e);
+void aiIceBlockInit(AIEntity *e);
+void aiIceBlockInit2(AIEntity *e);
+
+void aiCabKeyInit(AIEntity *e);
+void aiCabKeyInit2(AIEntity *e);
+void aiItemChickenInit(AIEntity *e);
+void aiItemChickenInit2(AIEntity *e);
+
+void aiPdaInit(AIEntity *e);
+void aiPdaInit2(AIEntity *e);
+void aiCellUse(AIEntity *e);
+void aiCellInit2(AIEntity *e);
+void aiCellInit(AIEntity *e);
+void aiEnvelopeWhiteInit(AIEntity *e);
+void aiEnvelopeWhiteInit2(AIEntity *e);
+void aiEnvelopeBlueInit(AIEntity *e);
+void aiEnvelopeBlueInit2(AIEntity *e);
+void aiEnvelopeRedInit(AIEntity *e);
+void aiEnvelopeRedInit2(AIEntity *e);
+void aiTransceiverInit(AIEntity *e);
+void aiTransceiverInit2(AIEntity *e);
+void aiTransceiverAction(AIEntity *e);
+void aiTransceiverUse(AIEntity *e);
+void aiMonkeystoneInit(AIEntity *e);
+void aiMonkeystoneAction(AIEntity *e);
+void aiMonkeystoneInit2(AIEntity *e);
+void aiMonkeystoneUse(AIEntity *e);
+void aiMonkeystoneUse2(AIEntity *e);
+void aiGemAction(AIEntity *e);
+void aiGemAction2(AIEntity *e);
+void aiGemWhiteInit(AIEntity *e);
+void aiGemWhiteInit2(AIEntity *e);
+void aiGooCupUse(AIEntity *e);
+void aiGooCupInit(AIEntity *e);
+void aiGooCupInit2(AIEntity *e);
+
+void aiVortexianAction(AIEntity *e);
+void aiVortexianUse(AIEntity *e);
+void aiVortexianInit(AIEntity *e);
+void aiVortexianInit2(AIEntity *e);
+
+void aiNoneInit(AIEntity *e);
+void aiNoneInit2(AIEntity *e);
+
+void callbackDoorOpenClose(int x, int y);
+void callbackAutoDoorOpenClose(int x, int y);
+
+// Utility Functions
+void aiAnimateStanddown(AIEntity *e, int speed);
+void aiGenericAction(AIEntity *e);
+void aiGetItemAction(AIEntity *e);
+
+} // End of Namespace
+
+#endif // !HDB_AI_PLAYER_H
diff --git a/engines/hdb/hdb.h b/engines/hdb/hdb.h
index 8f81865290..6cad15168a 100644
--- a/engines/hdb/hdb.h
+++ b/engines/hdb/hdb.h
@@ -42,6 +42,7 @@
#include "hdb/lua-script.h"
#include "hdb/map-loader.h"
#include "hdb/ai.h"
+#include "hdb/ai-player.h"
#define MAX_SNDCACHE_MEM 0x400000 // 4Mb of sounds in memory
#define MAX_TILES_CACHED 3500 // Max no of tiles in memory at once
diff --git a/engines/hdb/lua-script.cpp b/engines/hdb/lua-script.cpp
index 4f0371f03a..ce635d4cb8 100644
--- a/engines/hdb/lua-script.cpp
+++ b/engines/hdb/lua-script.cpp
@@ -730,6 +730,8 @@ bool LuaScript::initScript(Common::SeekableReadStream *stream, const char *scrip
spawn names into Lua once they are implemented.
*/
+ warning("STUB: LuaScript::initScript: Load ai_all_ents");
+
// Register panic callback function
lua_atpanic(_state, panicCB);
diff --git a/engines/hdb/module.mk b/engines/hdb/module.mk
index fa904de77b..655d4b19f2 100644
--- a/engines/hdb/module.mk
+++ b/engines/hdb/module.mk
@@ -1,7 +1,9 @@
MODULE := engines/hdb
MODULE_OBJS := \
- ai.o \
+ ai-init.o \
+ ai-cinematic.o \
+ ai-player.o \
console.o \
draw-manager.o \
detection.o \