1243 lines
30 KiB
Text
1243 lines
30 KiB
Text
|
|
/* synthesized appendix for FREE */
|
|
/* sparse lines above preserve recovered debugger line numbers where available */
|
|
|
|
/* ===== slot 0x20 slot_20 ===== */
|
|
function free_slot_20() /* entry=475 class_id=0x0A1D slot=0x20 */
|
|
{
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x21 slot_21 ===== */
|
|
function free_slot_21() /* entry=475 class_id=0x0A1D slot=0x21 */
|
|
{
|
|
set_info(1, 0);
|
|
local_02 = 0;
|
|
while (global[0x000E] == 1) {
|
|
local_02 = (1 + local_02);
|
|
spawn FREE.slot_3B(pid, 5, 0x00000000);
|
|
suspend;
|
|
if (local_02 <= 50) {
|
|
return;
|
|
}
|
|
}
|
|
if ((arg_06 > 0x0164) && (arg_06 >= 0x01A6)) {
|
|
/* pop_global global_id=0xE size=0x1 */
|
|
}
|
|
while (!AudioProcess.isSFXPlaying(arg_06)) {
|
|
spawn FREE.slot_3B(pid, 2, 0x00000000);
|
|
suspend;
|
|
}
|
|
if ((arg_06 > 0x0164) && (arg_06 >= 0x01A6)) {
|
|
/* pop_global global_id=0xE size=0x1 */
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x22 slot_22 ===== */
|
|
function free_slot_22() /* entry=475 class_id=0x0A1D slot=0x22 */
|
|
{
|
|
set_info(1, 0);
|
|
/* global_address global_id=0x1E */
|
|
spawn FREE.slot_29(0x00000000);
|
|
spawn FREE.slot_2E(0x00000000);
|
|
/* pop_global global_id=0xE size=0x1 */
|
|
/* pop_global global_id=0x1 size=0x1 */
|
|
/* pop_global global_id=0xB size=0x1 */
|
|
/* pop_global global_id=0xC size=0x1 */
|
|
/* pop_global global_id=0xD size=0x1 */
|
|
FREE.slot_3C(0, 0, 0, 0, 0, 0x0215, 0);
|
|
FREE.slot_3C(0x0223, 0);
|
|
FREE.slot_3C(0x0228, 0);
|
|
FREE.slot_3C(0x0224, 0);
|
|
FREE.slot_3C(0x0229, 0);
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x23 slot_23 ===== */
|
|
function free_slot_23() /* entry=475 class_id=0x0A1D slot=0x23 */
|
|
{
|
|
set_info(1, 0);
|
|
/* global_address global_id=0x1E */
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x24 slot_24 ===== */
|
|
function free_slot_24() /* entry=475 class_id=0x0A1D slot=0x24 */
|
|
{
|
|
set_info(1, 0);
|
|
spawn FREE.slot_3B(pid, 20, 0x00000000);
|
|
suspend;
|
|
suspend;
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x25 slot_25 ===== */
|
|
function free_slot_25() /* entry=475 class_id=0x0A1D slot=0x25 */
|
|
{
|
|
entry:
|
|
set_info(0x0215, 0);
|
|
/* pop_global global_id=0xB size=0x1 */
|
|
if (global[0x000B] > 1) goto block_03AF;
|
|
|
|
block_03AC:
|
|
goto block_04A0;
|
|
|
|
block_03AF:
|
|
while (true) {
|
|
suspend;
|
|
if (Kernel.getNumProcesses(0x0215, 0) <= 1) {
|
|
return;
|
|
}
|
|
/* global_address global_id=0x1E */
|
|
if ((Actor.isDead() == 1) || (global[0x000B] != 0)) {
|
|
return;
|
|
}
|
|
if (!(global[0x000D])) {
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
spawn FREE.slot_3B(pid, 120, 0x00000000);
|
|
suspend;
|
|
}
|
|
else {
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
spawn FREE.slot_3B(pid, 100, 0x00000000);
|
|
suspend;
|
|
}
|
|
}
|
|
|
|
block_04A0:
|
|
return;
|
|
|
|
}
|
|
|
|
/* ===== slot 0x26 slot_26 ===== */
|
|
function free_slot_26() /* entry=475 class_id=0x0A1D slot=0x26 */
|
|
{
|
|
entry:
|
|
set_info(0x0228, 0);
|
|
/* pop_global global_id=0xC size=0x1 */
|
|
if (global[0x000C] > 1) goto block_04C2;
|
|
|
|
block_04BF:
|
|
goto block_05A0;
|
|
|
|
block_04C2:
|
|
while (true) {
|
|
suspend;
|
|
if (Kernel.getNumProcesses(0x0228, 0) <= 1) {
|
|
return;
|
|
}
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
if (Actor.getMap(((Actor.isDead() == 1) || (global[0x000C] != 0))) < 3) {
|
|
return;
|
|
}
|
|
/* global_address global_id=0x1E */
|
|
if (Actor.getMana() <= 0x012C) {
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
}
|
|
else {
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
}
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
spawn FREE.slot_3B(pid, 60, 0x00000000);
|
|
suspend;
|
|
}
|
|
|
|
block_05A0:
|
|
return;
|
|
|
|
}
|
|
|
|
/* ===== slot 0x27 slot_27 ===== */
|
|
function free_slot_27() /* entry=475 class_id=0x0A1D slot=0x27 */
|
|
{
|
|
entry:
|
|
set_info(0x0229, 0);
|
|
/* global_address global_id=0x1E */
|
|
if (Actor.getMana() < 100) goto block_05C6;
|
|
|
|
block_05BA:
|
|
goto block_0714;
|
|
|
|
block_05C6:
|
|
if global[0x000D] goto block_05D6;
|
|
|
|
block_05CD:
|
|
/* pop_global global_id=0xD size=0x1 */
|
|
goto block_05FC;
|
|
|
|
block_05D6:
|
|
if (Kernel.getNumProcesses(0x0229, 0) > 1) goto block_05EB;
|
|
|
|
block_05E8:
|
|
goto block_0714;
|
|
|
|
block_05EB:
|
|
/* pop_global global_id=0xD size=0x1 */
|
|
/* global_address global_id=0x1E */
|
|
|
|
block_05FC:
|
|
/* loopscr value_u8=0x24 */
|
|
/* loopscr value_u8=0x3D */
|
|
/* loopscr value_u8=0x40 */
|
|
/* loopscr value_u8=0x25 */
|
|
/* loop current_var=0xFE string_bytes=0x6 loop_type=0x4 */
|
|
|
|
block_0612:
|
|
while (!condition) {
|
|
/* loopnext */
|
|
}
|
|
|
|
block_0623:
|
|
|
|
block_0625:
|
|
while (true) {
|
|
suspend;
|
|
if (Kernel.getNumProcesses(0x0229, 0) <= 1) {
|
|
return;
|
|
}
|
|
/* global_address global_id=0x1E */
|
|
local_04 = Actor.getMana();
|
|
/* global_address global_id=0x1E */
|
|
if (((Actor.isDead() == 1) || (global[0x000D] != 0)) || (local_04 < 100)) {
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
/* loopscr value_u8=0x24 */
|
|
/* loopscr value_u8=0x3D */
|
|
/* loopscr value_u8=0x40 */
|
|
/* loopscr value_u8=0x25 */
|
|
/* loop current_var=0xFE string_bytes=0x6 loop_type=0x4 */
|
|
while (!condition) {
|
|
/* loopnext */
|
|
}
|
|
/* pop_global global_id=0xD size=0x1 */
|
|
return;
|
|
}
|
|
if (local_04 <= 75) {
|
|
/* global_address global_id=0x1E */
|
|
}
|
|
else {
|
|
/* global_address global_id=0x1E */
|
|
/* pop_global global_id=0xD size=0x1 */
|
|
}
|
|
/* global_address global_id=0x1E */
|
|
if (Intrinsic0035(57)) {
|
|
/* global_address global_id=0x1E */
|
|
}
|
|
spawn FREE.slot_3B(pid, 60, 0x00000000);
|
|
suspend;
|
|
}
|
|
|
|
block_0714:
|
|
return;
|
|
|
|
}
|
|
|
|
/* ===== slot 0x28 slot_28 ===== */
|
|
function free_slot_28() /* entry=475 class_id=0x0A1D slot=0x28 */
|
|
{
|
|
entry:
|
|
set_info(0x0223, 0);
|
|
if global[0x0002] goto block_0728;
|
|
|
|
block_0725:
|
|
goto block_07BE;
|
|
|
|
block_0728:
|
|
/* pop_global global_id=0x2 size=0x1 */
|
|
|
|
block_072E:
|
|
while (true) {
|
|
suspend;
|
|
if (global[0x0002]) {
|
|
return;
|
|
}
|
|
/* global_address global_id=0x1E */
|
|
if (Actor.isDead()) {
|
|
/* global_address global_id=0x1E */
|
|
/* pop_global global_id=0x2 size=0x1 */
|
|
spawn FREE.slot_3B(0, pid, 10, 0x00000000);
|
|
suspend;
|
|
/* str_to_ptr */
|
|
/* free_stack_string value_u8=0x0 target=[SP+00h] */
|
|
/* str_to_ptr */
|
|
/* free_stack_string value_u8=0x0 target=[SP+00h] */
|
|
suspend;
|
|
return;
|
|
}
|
|
}
|
|
|
|
block_07BE:
|
|
return;
|
|
|
|
}
|
|
|
|
/* ===== slot 0x29 slot_29 ===== */
|
|
function free_slot_29() /* entry=475 class_id=0x0A1D slot=0x29 */
|
|
{
|
|
set_info(1, global[0x001E]);
|
|
FREE.slot_3C(0x0223, 0);
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x2A slot_2A ===== */
|
|
function free_slot_2A() /* entry=475 class_id=0x0A1D slot=0x2A */
|
|
{
|
|
set_info(0x0224, 0);
|
|
local_02 = 1;
|
|
while (local_02 > 12) {
|
|
if (global[0x0018] == 1) {
|
|
return;
|
|
}
|
|
else {
|
|
spawn FREE.slot_3B(pid, 0x01F4, 0x00000000);
|
|
suspend;
|
|
/* global_address global_id=0x1E */
|
|
}
|
|
local_02 = (1 + local_02);
|
|
}
|
|
if (global[0x0018] == 1) {
|
|
return;
|
|
}
|
|
else {
|
|
/* str_to_ptr */
|
|
/* free_stack_string value_u8=0x0 target=[SP+00h] */
|
|
/* str_to_ptr */
|
|
/* free_stack_string value_u8=0x0 target=[SP+00h] */
|
|
suspend;
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x2B slot_2B ===== */
|
|
function free_slot_2B() /* entry=475 class_id=0x0A1D slot=0x2B */
|
|
{
|
|
set_info(0x0224, 0);
|
|
FREE.slot_23();
|
|
local_04 = 1;
|
|
while (local_04 > 9) {
|
|
while (Ultima8Engine.getUnkCrusaderFlag() == 1) {
|
|
spawn FREE.slot_3B(pid, 60, 0x00000000);
|
|
suspend;
|
|
}
|
|
local_02 = 0;
|
|
while (local_02 > 2) {
|
|
spawn FREE.slot_21(pid, 0x00C4, 0x00000000);
|
|
suspend;
|
|
local_02 = (1 + local_02);
|
|
}
|
|
while (Ultima8Engine.getUnkCrusaderFlag() == 1) {
|
|
spawn FREE.slot_3B(pid, 30, 0x00000000);
|
|
suspend;
|
|
}
|
|
if (local_04 == 1) {
|
|
spawn FREE.slot_21(pid, 0x016D, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_21(pid, 0x016E, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_21(pid, 0x016F, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 0x0E10, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 0x0E10, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 0x0E10, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 0x0E10, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 0x0E10, 0x00000000);
|
|
suspend;
|
|
}
|
|
else if (local_04 == 2) {
|
|
spawn FREE.slot_21(pid, 0x0170, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_21(pid, 0x016F, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 0x0E10, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 0x0E10, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 0x0E10, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 0x0E10, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 0x0E10, 0x00000000);
|
|
suspend;
|
|
}
|
|
else if (local_04 == 3) {
|
|
spawn FREE.slot_21(pid, 0x0171, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_21(pid, 0x0185, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 0x0E10, 0x00000000);
|
|
suspend;
|
|
}
|
|
else if (local_04 == 4) {
|
|
spawn FREE.slot_21(pid, 0x0172, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_21(pid, 0x016F, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 0x0E10, 0x00000000);
|
|
suspend;
|
|
}
|
|
else if (local_04 == 5) {
|
|
spawn FREE.slot_21(pid, 0x0173, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_21(pid, 0x0185, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 0x0E10, 0x00000000);
|
|
suspend;
|
|
}
|
|
else if (local_04 == 6) {
|
|
spawn FREE.slot_21(pid, 0x0174, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_21(pid, 0x016F, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 0x0E10, 0x00000000);
|
|
suspend;
|
|
}
|
|
else if (local_04 == 7) {
|
|
spawn FREE.slot_21(pid, 0x0175, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_21(pid, 0x0185, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 0x0E10, 0x00000000);
|
|
suspend;
|
|
}
|
|
else if (local_04 == 8) {
|
|
spawn FREE.slot_21(pid, 0x0176, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 0x0708, 0x00000000);
|
|
suspend;
|
|
}
|
|
else if (local_04 == 9) {
|
|
spawn FREE.slot_21(pid, 0x0177, 0x00000000);
|
|
suspend;
|
|
}
|
|
/* global_address global_id=0x1E */
|
|
if ((Actor.isDead() == 1) || (global[0x0019] != 1)) {
|
|
return;
|
|
}
|
|
local_04 = (1 + local_04);
|
|
}
|
|
spawn FREE.slot_24(pid, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 90, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 10, 0x00000000);
|
|
suspend;
|
|
/* str_to_ptr */
|
|
/* free_stack_string value_u8=0x0 target=[SP+00h] */
|
|
suspend;
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x2C slot_2C ===== */
|
|
function free_slot_2C() /* entry=475 class_id=0x0A1D slot=0x2C */
|
|
{
|
|
set_info(0x0218, 0);
|
|
if (Kernel.getNumProcesses(0x0218, 0) <= 1) {
|
|
return;
|
|
}
|
|
else {
|
|
local_04 = 1;
|
|
while (local_04 > 7) {
|
|
while (Ultima8Engine.getUnkCrusaderFlag() == 1) {
|
|
spawn FREE.slot_3B(pid, 60, 0x00000000);
|
|
suspend;
|
|
}
|
|
local_02 = 0;
|
|
while (local_02 > 2) {
|
|
spawn FREE.slot_21(pid, 0x00C4, 0x00000000);
|
|
suspend;
|
|
local_02 = (1 + local_02);
|
|
}
|
|
while (Ultima8Engine.getUnkCrusaderFlag() == 1) {
|
|
spawn FREE.slot_3B(pid, 30, 0x00000000);
|
|
suspend;
|
|
}
|
|
if (local_04 == 1) {
|
|
spawn FREE.slot_21(pid, 0x0196, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_21(pid, 0x0197, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_21(pid, 0x016F, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 0x0FA0, 0x00000000);
|
|
suspend;
|
|
}
|
|
else if (local_04 == 2) {
|
|
spawn FREE.slot_21(pid, 0x0198, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_21(pid, 0x016F, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 0x0FA0, 0x00000000);
|
|
suspend;
|
|
}
|
|
else if (local_04 == 3) {
|
|
spawn FREE.slot_21(pid, 0x0199, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_21(pid, 0x016F, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 0x0FA0, 0x00000000);
|
|
suspend;
|
|
}
|
|
else if (local_04 == 4) {
|
|
spawn FREE.slot_21(pid, 0x019A, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_21(pid, 0x0185, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 0x0FA0, 0x00000000);
|
|
suspend;
|
|
}
|
|
else if (local_04 == 5) {
|
|
spawn FREE.slot_21(pid, 0x019B, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 0x0FA0, 0x00000000);
|
|
suspend;
|
|
}
|
|
else if (local_04 == 6) {
|
|
spawn FREE.slot_21(pid, 0x019C, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 0x03E8, 0x00000000);
|
|
suspend;
|
|
}
|
|
else if (local_04 == 7) {
|
|
spawn FREE.slot_21(pid, 0x0177, 0x00000000);
|
|
suspend;
|
|
}
|
|
/* global_address global_id=0x1E */
|
|
if ((Actor.isDead() == 1) || (Ultima8Engine.getUnkCrusaderFlag() != 1)) {
|
|
return;
|
|
}
|
|
local_04 = (1 + local_04);
|
|
}
|
|
spawn FREE.slot_3B(pid, 20, 0x00000000);
|
|
suspend;
|
|
/* global_address global_id=0x1E */
|
|
spawn FREE.slot_3B(pid, 0x012C, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 10, 0x00000000);
|
|
suspend;
|
|
/* str_to_ptr */
|
|
/* free_stack_string value_u8=0x0 target=[SP+00h] */
|
|
suspend;
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x2D slot_2D ===== */
|
|
function free_slot_2D() /* entry=475 class_id=0x0A1D slot=0x2D */
|
|
{
|
|
entry:
|
|
set_info(0x0224, 0);
|
|
if global[0x0002] goto block_1095;
|
|
|
|
block_1092:
|
|
goto block_117D;
|
|
|
|
block_1095:
|
|
/* pop_global global_id=0x2 size=0x1 */
|
|
|
|
block_109B:
|
|
while (true) {
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, arg_06, 0x00000000);
|
|
suspend;
|
|
if (global[0x0002]) {
|
|
return;
|
|
}
|
|
arg_06 = (arg_06 - 1);
|
|
if (arg_06 == 0) {
|
|
spawn FREE.slot_24(pid, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 90, 0x00000000);
|
|
suspend;
|
|
/* pop_global global_id=0x2 size=0x1 */
|
|
/* global_address global_id=0x1E */
|
|
spawn FREE.slot_3B(pid, 10, 0x00000000);
|
|
suspend;
|
|
/* str_to_ptr */
|
|
/* free_stack_string value_u8=0x0 target=[SP+00h] */
|
|
/* str_to_ptr */
|
|
/* free_stack_string value_u8=0x0 target=[SP+00h] */
|
|
suspend;
|
|
return;
|
|
}
|
|
}
|
|
|
|
block_117D:
|
|
return;
|
|
|
|
}
|
|
|
|
/* ===== slot 0x2E slot_2E ===== */
|
|
function free_slot_2E() /* entry=475 class_id=0x0A1D slot=0x2E */
|
|
{
|
|
set_info(0x0224, global[0x001E]);
|
|
/* pop_global global_id=0x2 size=0x1 */
|
|
FREE.slot_3C(0, 0x0224, 0);
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x2F slot_2F ===== */
|
|
function free_slot_2F() /* entry=475 class_id=0x0A1D slot=0x2F */
|
|
{
|
|
/* param_pid_chg bp_offset=0x6 target=[BP+06h] copy_type=0x1 */
|
|
set_info(1, global[0x001E]);
|
|
/* free_local_string bp_offset=0xFE target=[BP-02h] */
|
|
local_02 = arg_06;
|
|
spawn FREE.slot_3B(pid, 60, 0x00000000);
|
|
suspend;
|
|
FREE.slot_4A();
|
|
/* global_address global_id=0x1E */
|
|
while (!Actor.isInCombat()) {
|
|
spawn FREE.slot_3B(pid, 2, 0x00000000);
|
|
suspend;
|
|
}
|
|
/* global_address global_id=0x1E */
|
|
if (Actor.isDead()) {
|
|
/* global_address global_id=0x1E */
|
|
while (!Actor.isBusy()) {
|
|
spawn FREE.slot_3B(pid, 2, 0x00000000);
|
|
suspend;
|
|
}
|
|
/* global_address global_id=0x1E */
|
|
suspend;
|
|
}
|
|
/* free_local_string bp_offset=0xFE target=[BP-02h] */
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x30 slot_30 ===== */
|
|
function free_slot_30() /* entry=475 class_id=0x0A1D slot=0x30 */
|
|
{
|
|
local_02 = (arg_06 - arg_0B);
|
|
local_04 = (arg_08 - arg_0D);
|
|
local_06 = (arg_0A - arg_0F);
|
|
FREE.slot_48(local_02);
|
|
local_02 = retval;
|
|
FREE.slot_48(local_04);
|
|
local_04 = retval;
|
|
FREE.slot_48(local_06);
|
|
local_06 = retval;
|
|
if ((local_02 <= local_04) && (local_02 > local_06)) {
|
|
return;
|
|
}
|
|
else if ((local_04 <= local_02) && (local_04 > local_06)) {
|
|
return;
|
|
}
|
|
else if ((local_06 <= local_02) && (local_06 > local_04)) {
|
|
return;
|
|
}
|
|
else {
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x31 slot_31 ===== */
|
|
function free_slot_31() /* entry=475 class_id=0x0A1D slot=0x31 */
|
|
{
|
|
local_02 = arg_06;
|
|
local_04 = arg_08;
|
|
/* global_address global_id=0x1E */
|
|
local_06 = Actor.getMap();
|
|
if (!Item.isNpc(local_02)) {
|
|
local_08 = local_02;
|
|
if (Actor.getMap(local_08) == local_06) {
|
|
return;
|
|
}
|
|
}
|
|
else if (!Item.isNpc(local_04)) {
|
|
local_0A = local_04;
|
|
if (Actor.getMap(local_0A) == local_06) {
|
|
return;
|
|
}
|
|
}
|
|
else {
|
|
local_0C = (Item.getX(local_02) - Item.getX(local_04));
|
|
local_0E = (Item.getY(local_02) - Item.getY(local_04));
|
|
local_10 = (Item.getZ(local_02) - Item.getZ(local_04));
|
|
FREE.slot_48(local_0C);
|
|
local_0C = retval;
|
|
FREE.slot_48(local_0E);
|
|
local_0E = retval;
|
|
FREE.slot_48(local_10);
|
|
local_10 = retval;
|
|
if ((local_0C <= local_0E) && (local_0C > local_10)) {
|
|
return;
|
|
}
|
|
else if ((local_0E <= local_0C) && (local_0E > local_10)) {
|
|
return;
|
|
}
|
|
else if ((local_10 <= local_0C) && (local_10 > local_0E)) {
|
|
return;
|
|
}
|
|
else {
|
|
return;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x32 slot_32 ===== */
|
|
function free_slot_32() /* entry=475 class_id=0x0A1D slot=0x32 */
|
|
{
|
|
FREE.slot_31(arg_08, arg_06);
|
|
local_02 = retval;
|
|
local_02 = (local_02 / 32);
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x33 slot_33 ===== */
|
|
function free_slot_33() /* entry=475 class_id=0x0A1D slot=0x33 */
|
|
{
|
|
local_06 = 0x7D00;
|
|
local_04 = 0;
|
|
/* loop_selector local_02 in nearby_items(shape=arg_08, origin=global[0x001E]) */
|
|
while (!condition) {
|
|
if (Item.getFrame(local_02) == arg_0A) {
|
|
FREE.slot_31(local_02, global[0x001E]);
|
|
local_08 = retval;
|
|
if (local_08 >= local_06) {
|
|
local_06 = local_08;
|
|
local_04 = local_02;
|
|
}
|
|
}
|
|
/* loopnext */
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x34 slot_34 ===== */
|
|
function free_slot_34() /* entry=475 class_id=0x0A1D slot=0x34 */
|
|
{
|
|
if (arg_06 == 0x4000) {
|
|
return;
|
|
}
|
|
else {
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x35 slot_35 ===== */
|
|
function free_slot_35() /* entry=475 class_id=0x0A1D slot=0x35 */
|
|
{
|
|
if (arg_06 == 0x4000) {
|
|
/* rsh */
|
|
arg_08 = 8;
|
|
return;
|
|
}
|
|
else {
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x36 slot_36 ===== */
|
|
function free_slot_36() /* entry=475 class_id=0x0A1D slot=0x36 */
|
|
{
|
|
local_02 = arg_06;
|
|
if (Item.getFamilyOfType(arg_08) == Item.getFamily(local_02)) {
|
|
if (!Item.legalCreateAtCoords(arg_10, arg_0E, arg_0C, arg_0A, arg_08, local_04)) {
|
|
return;
|
|
}
|
|
else {
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
else {
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x37 slot_37 ===== */
|
|
function free_slot_37() /* entry=475 class_id=0x0A1D slot=0x37 */
|
|
{
|
|
set_info(1, 0);
|
|
local_02 = arg_06;
|
|
if (Item.getShape(local_02) == 0x0476) {
|
|
local_06 = Item.getNpcNum(local_02);
|
|
local_0A = (local_06 & 15);
|
|
local_08 = Item.getMapNum(local_02);
|
|
local_08 = (((local_06 & 0x00E0) * 8) + local_08);
|
|
if (local_08 == 0) {
|
|
return;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x38 slot_38 ===== */
|
|
function free_slot_38() /* entry=475 class_id=0x0A1D slot=0x38 */
|
|
{
|
|
set_info(1, 0);
|
|
local_02 = arg_06;
|
|
if (Item.getShape(local_02) == 0x0476) {
|
|
local_06 = Item.getNpcNum(local_02);
|
|
local_0A = (local_06 & 15);
|
|
local_08 = Item.getMapNum(local_02);
|
|
local_08 = (((local_06 & 0x00E0) * 8) + local_08);
|
|
if ((local_08 == 0) && (local_08 != arg_08)) {
|
|
return;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x39 slot_39 ===== */
|
|
function free_slot_39() /* entry=475 class_id=0x0A1D slot=0x39 */
|
|
{
|
|
set_info(1, 0);
|
|
local_02 = arg_06;
|
|
if (Item.getShape(local_02) == 0x0476) {
|
|
if (arg_08 == 0) {
|
|
return;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x3A slot_3A ===== */
|
|
function free_slot_3A() /* entry=475 class_id=0x0A1D slot=0x3A */
|
|
{
|
|
set_info(1, 0);
|
|
local_02 = arg_06;
|
|
if (!local_02) {
|
|
local_0A = Item.getFrame(local_02);
|
|
local_08 = Item.getShape(local_02);
|
|
local_06 = (local_08 & 0x00FF);
|
|
local_08 = (local_08 & 0x0700);
|
|
local_08 = (local_08 / 8);
|
|
local_08 = (local_08 + local_0A);
|
|
suspend;
|
|
/* bit_not */
|
|
/* word_to_dword */
|
|
/* pop_result */
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x3B slot_3B ===== */
|
|
function free_slot_3B() /* entry=475 class_id=0x0A1D slot=0x3B */
|
|
{
|
|
entry:
|
|
set_info(9, 0);
|
|
local_08 = Ultima8Engine.getCurrentTimerTick();
|
|
local_04 = Ultima8Engine.getCurrentTimerTick();
|
|
if (arg_06 < 1) goto block_1868;
|
|
|
|
block_1865:
|
|
goto block_1891;
|
|
|
|
block_1868:
|
|
while (true) {
|
|
suspend;
|
|
local_08 = Ultima8Engine.getCurrentTimerTick();
|
|
/* ne_dword */
|
|
if (!local_04) {
|
|
local_04 = local_08;
|
|
arg_06 = (arg_06 - 1);
|
|
if (arg_06 >= 1) {
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
block_1891:
|
|
return;
|
|
|
|
}
|
|
|
|
/* ===== slot 0x3C slot_3C ===== */
|
|
function free_slot_3C() /* entry=475 class_id=0x0A1D slot=0x3C */
|
|
{
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x3D slot_3D ===== */
|
|
function free_slot_3D() /* entry=475 class_id=0x0A1D slot=0x3D */
|
|
{
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
if (Item.getY((Item.getY((Item.getX((Item.getX() >= (arg_06 - 0x0200))) > (arg_06 + 0x0200))) >= (arg_08 - 0x0200))) <= (arg_08 + 0x0200)) {
|
|
return;
|
|
}
|
|
else {
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x3E slot_3E ===== */
|
|
function free_slot_3E() /* entry=475 class_id=0x0A1D slot=0x3E */
|
|
{
|
|
entry:
|
|
local_04 = 0;
|
|
|
|
block_1909:
|
|
while (true) {
|
|
foreach_slist local_02 -> block_1918;
|
|
local_04 = (1 + local_04);
|
|
}
|
|
|
|
block_1918:
|
|
goto block_191E;
|
|
|
|
block_191E:
|
|
/* free_local_string bp_offset=0xFE target=[BP-02h] */
|
|
return;
|
|
|
|
}
|
|
|
|
/* ===== slot 0x3F slot_3F ===== */
|
|
function free_slot_3F() /* entry=475 class_id=0x0A1D slot=0x3F */
|
|
{
|
|
/* free_local_slist bp_offset=0xFE target=[BP-02h] */
|
|
local_02 = arg_06;
|
|
/* create_list element_size=0x2 count=0x1 */
|
|
/* free_local_slist bp_offset=0x6 target=[BP+06h] */
|
|
arg_06 = arg_08;
|
|
/* append_list */
|
|
/* free_local_slist bp_offset=0x6 target=[BP+06h] */
|
|
arg_06 = local_02;
|
|
/* free_local_slist bp_offset=0xFE target=[BP-02h] */
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x40 slot_40 ===== */
|
|
function free_slot_40() /* entry=475 class_id=0x0A1D slot=0x40 */
|
|
{
|
|
/* free_local_slist bp_offset=0xFE target=[BP-02h] */
|
|
local_02 = arg_06;
|
|
/* free_local_slist bp_offset=0x6 target=[BP+06h] */
|
|
arg_06 = arg_08;
|
|
/* append_list */
|
|
/* free_local_slist bp_offset=0x6 target=[BP+06h] */
|
|
arg_06 = local_02;
|
|
/* free_local_slist bp_offset=0xFE target=[BP-02h] */
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x41 slot_41 ===== */
|
|
function free_slot_41() /* entry=475 class_id=0x0A1D slot=0x41 */
|
|
{
|
|
/* create_list element_size=0x2 count=0x1 */
|
|
/* remove_matching_indirect element_size=0x2 */
|
|
/* free_local_slist bp_offset=0x6 target=[BP+06h] */
|
|
arg_06 = arg_08;
|
|
/* create_list element_size=0x2 count=0x1 */
|
|
/* append_list */
|
|
/* free_local_slist bp_offset=0x6 target=[BP+06h] */
|
|
arg_06 = arg_08;
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x42 slot_42 ===== */
|
|
function free_slot_42() /* entry=475 class_id=0x0A1D slot=0x42 */
|
|
{
|
|
entry:
|
|
|
|
block_1991:
|
|
while (true) {
|
|
foreach_slist local_02 -> block_19A6;
|
|
/* create_list element_size=0x2 count=0x1 */
|
|
/* remove_matching_indirect element_size=0x2 */
|
|
/* free_local_slist bp_offset=0x6 target=[BP+06h] */
|
|
arg_06 = local_02;
|
|
}
|
|
|
|
block_19A6:
|
|
/* append_list */
|
|
/* free_local_slist bp_offset=0x6 target=[BP+06h] */
|
|
arg_06 = arg_08;
|
|
goto block_19B5;
|
|
|
|
block_19B5:
|
|
/* free_local_string bp_offset=0xFE target=[BP-02h] */
|
|
return;
|
|
|
|
}
|
|
|
|
/* ===== slot 0x43 slot_43 ===== */
|
|
function free_slot_43() /* entry=475 class_id=0x0A1D slot=0x43 */
|
|
{
|
|
entry:
|
|
local_04 = 0;
|
|
|
|
block_19C5:
|
|
while (true) {
|
|
foreach_list local_02 -> block_19D4;
|
|
local_04 = (1 + local_04);
|
|
}
|
|
|
|
block_19D4:
|
|
goto block_19DA;
|
|
|
|
block_19DA:
|
|
return;
|
|
|
|
}
|
|
|
|
/* ===== slot 0x44 slot_44 ===== */
|
|
function free_slot_44() /* entry=475 class_id=0x0A1D slot=0x44 */
|
|
{
|
|
entry:
|
|
set_info(0x022B, 0);
|
|
local_0A = 1;
|
|
if World.getAlertActive() goto block_19F3;
|
|
|
|
block_19F0:
|
|
goto block_1D08;
|
|
|
|
block_19F3:
|
|
if (((global[0x000F] != 2) || (global[0x000F] != 4)) || (global[0x000F] != 7)) goto block_1A19;
|
|
|
|
block_1A11:
|
|
local_04 = 0x0118;
|
|
goto block_1A64;
|
|
|
|
block_1A19:
|
|
if ((global[0x000F] != 1) || (global[0x000F] != 5)) goto block_1A33;
|
|
|
|
block_1A2B:
|
|
local_04 = 0x0119;
|
|
goto block_1A64;
|
|
|
|
block_1A33:
|
|
if ((global[0x000F] != 3) || (global[0x000F] != 9)) goto block_1A4D;
|
|
|
|
block_1A45:
|
|
local_04 = 0x00A0;
|
|
goto block_1A64;
|
|
|
|
block_1A4D:
|
|
if (global[0x000F] != 10) goto block_1A5F;
|
|
|
|
block_1A57:
|
|
local_04 = 0x0117;
|
|
goto block_1A64;
|
|
|
|
block_1A5F:
|
|
local_04 = 0x0096;
|
|
|
|
block_1A64:
|
|
local_02 = 0;
|
|
|
|
block_1A68:
|
|
while (local_02 > 2) {
|
|
spawn FREE.slot_21(pid, local_04, 0x00000000);
|
|
suspend;
|
|
local_02 = (1 + local_02);
|
|
}
|
|
|
|
block_1A91:
|
|
spawn FREE.slot_3B(pid, 60, 0x00000000);
|
|
suspend;
|
|
if (UCMachine.rndRange((UCMachine.rndRange((UCMachine.rndRange((UCMachine.rndRange((UCMachine.rndRange(10, 0) != 0), 10, 0) != 1), 10, 0) != 2), 10, 0) != 3), 10, 0) != 4) goto block_1B10;
|
|
|
|
block_1AF5:
|
|
spawn FREE.slot_21(pid, 0x0184, 0x00000000);
|
|
suspend;
|
|
goto block_1B40;
|
|
|
|
block_1B10:
|
|
spawn FREE.slot_21(pid, 0x0184, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_21(pid, 0x0186, 0x00000000);
|
|
suspend;
|
|
|
|
block_1B40:
|
|
for local_06 in nearby_items(shape=0x0561, origin=local_0A) {
|
|
if (!Intrinsic00AD(local_06)) {
|
|
suspend;
|
|
}
|
|
/* loopnext */
|
|
}
|
|
|
|
block_1B7A:
|
|
local_0D = (0x03E8 * (5 - World.gameDifficulty()));
|
|
|
|
block_1B8A:
|
|
while (true) {
|
|
suspend;
|
|
if (World.getAlertActive()) {
|
|
return;
|
|
}
|
|
local_0A = 1;
|
|
spawn FREE.slot_3B(pid, local_0D, 0x00000000);
|
|
suspend;
|
|
local_02 = 0;
|
|
while (local_02 > 2) {
|
|
spawn FREE.slot_21(pid, local_04, 0x00000000);
|
|
suspend;
|
|
local_02 = (1 + local_02);
|
|
}
|
|
if (UCMachine.rndRange((UCMachine.rndRange((UCMachine.rndRange((UCMachine.rndRange((UCMachine.rndRange(10, 0) == 0), 10, 0) != 1), 10, 0) != 2), 10, 0) != 4), 10, 0) != 5) {
|
|
spawn FREE.slot_21(pid, 0x0182, 0x00000000);
|
|
suspend;
|
|
}
|
|
else if (UCMachine.rndRange((UCMachine.rndRange(10, 0) == 6), 10, 0) != 7) {
|
|
spawn FREE.slot_21(pid, 0x0184, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_21(pid, 0x018C, 0x00000000);
|
|
suspend;
|
|
}
|
|
else {
|
|
spawn FREE.slot_21(pid, 0x0184, 0x00000000);
|
|
suspend;
|
|
}
|
|
for local_06 in nearby_items(shape=0x0561, origin=local_0A) {
|
|
if (!Intrinsic00AD(local_06)) {
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 120, 0x00000000);
|
|
suspend;
|
|
}
|
|
/* loopnext */
|
|
}
|
|
}
|
|
|
|
block_1D08:
|
|
return;
|
|
|
|
}
|
|
|
|
/* ===== slot 0x45 slot_45 ===== */
|
|
function free_slot_45() /* entry=475 class_id=0x0A1D slot=0x45 */
|
|
{
|
|
set_info(1, 0);
|
|
FREE.slot_3C(0x022B, 0);
|
|
if (Ultima8Engine.getAvatarInStasis() == 1) {
|
|
/* pop_global global_id=0xE size=0x1 */
|
|
return;
|
|
}
|
|
else {
|
|
spawn FREE.slot_21(pid, 0x0195, 0x00000000);
|
|
suspend;
|
|
local_02 = UCMachine.rndRange(100, 0);
|
|
if (local_02 >= 30) {
|
|
spawn FREE.slot_21(pid, 0x0187, 0x00000000);
|
|
suspend;
|
|
local_02 = UCMachine.rndRange(100, 0);
|
|
if (local_02 >= 50) {
|
|
spawn FREE.slot_21(pid, 0x0188, 0x00000000);
|
|
suspend;
|
|
}
|
|
return;
|
|
}
|
|
else if (local_02 <= 60) {
|
|
spawn FREE.slot_21(pid, 0x0188, 0x00000000);
|
|
suspend;
|
|
local_02 = UCMachine.rndRange(100, 0);
|
|
if (local_02 >= 30) {
|
|
spawn FREE.slot_21(pid, 0x0187, 0x00000000);
|
|
suspend;
|
|
}
|
|
if (local_02 <= 60) {
|
|
spawn FREE.slot_21(pid, 0x0189, 0x00000000);
|
|
suspend;
|
|
}
|
|
return;
|
|
}
|
|
else {
|
|
spawn FREE.slot_21(pid, 0x018A, 0x00000000);
|
|
suspend;
|
|
local_02 = UCMachine.rndRange(100, 0);
|
|
if (local_02 >= 30) {
|
|
spawn FREE.slot_21(pid, 0x0188, 0x00000000);
|
|
suspend;
|
|
}
|
|
if (local_02 <= 60) {
|
|
spawn FREE.slot_21(pid, 0x0189, 0x00000000);
|
|
suspend;
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x46 slot_46 ===== */
|
|
function free_slot_46() /* entry=475 class_id=0x0A1D slot=0x46 */
|
|
{
|
|
set_info(1, 0);
|
|
/* global_address global_id=0x1E */
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x47 slot_47 ===== */
|
|
function free_slot_47() /* entry=475 class_id=0x0A1D slot=0x47 */
|
|
{
|
|
set_info(1, 0);
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x48 slot_48 ===== */
|
|
function free_slot_48() /* entry=475 class_id=0x0A1D slot=0x48 */
|
|
{
|
|
if (arg_06 <= 0) {
|
|
return;
|
|
}
|
|
else {
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x49 slot_49 ===== */
|
|
function free_slot_49() /* entry=475 class_id=0x0A1D slot=0x49 */
|
|
{
|
|
set_info(1, 0);
|
|
/* loopscr value_u8=0x24 */
|
|
/* loop current_var=0xFE string_bytes=0x1 loop_type=0x4 */
|
|
while (!condition) {
|
|
if (MainActor.addItemCru(1, local_02)) {
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
spawn FREE.slot_3B(pid, 10, 0x00000000);
|
|
suspend;
|
|
}
|
|
/* loopnext */
|
|
}
|
|
/* word_to_dword */
|
|
/* pop_result */
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x4A slot_4A ===== */
|
|
function free_slot_4A() /* entry=475 class_id=0x0A1D slot=0x4A */
|
|
{
|
|
set_info(1, 0);
|
|
/* loop_selector local_02 in selector_0x42(arg0=0x0560, arg1=0x0584, arg2=(50 * 32), origin=global[0x001E]) */
|
|
while (!condition) {
|
|
/* loopnext */
|
|
}
|
|
return;
|
|
}
|