669 lines
16 KiB
Text
669 lines
16 KiB
Text
|
|
/* synthesized appendix for ITEM */
|
|
/* sparse lines above preserve recovered debugger line numbers where available */
|
|
|
|
/* ===== slot 0x20 slot_20 ===== */
|
|
function item_slot_20() /* entry=458 class_id=0x0A0C slot=0x20 */
|
|
{
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x21 slot_21 ===== */
|
|
function item_slot_21() /* entry=458 class_id=0x0A0C slot=0x21 */
|
|
{
|
|
set_info(global[0x001E], 1);
|
|
/* pop_global global_id=0xA size=0x1 */
|
|
/* loopscr value_u8=0x24 */
|
|
/* loopscr value_u8=0x3D */
|
|
/* loopscr value_u8=0x40 */
|
|
/* loopscr value_u8=0x25 */
|
|
/* loop current_var=0xFA string_bytes=0x6 loop_type=0x4 */
|
|
while (!condition) {
|
|
local_04 = local_06;
|
|
/* loopnext */
|
|
}
|
|
if (local_04) {
|
|
spawn TRIGGER.slot_20(pid, 1, *(arg_06), arg_06);
|
|
suspend;
|
|
return;
|
|
}
|
|
else {
|
|
while (!(global[0x000A])) {
|
|
spawn FREE.slot_3B(pid, 0x01F4, 0x00000000);
|
|
suspend;
|
|
}
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x22 slot_22 ===== */
|
|
function item_slot_22() /* entry=458 class_id=0x0A0C slot=0x22 */
|
|
{
|
|
local_02 = arg_0A;
|
|
if (!arg_0A) {
|
|
if (Item.getFamily(local_02) == 6) {
|
|
/* loopscr value_u8=0x24 */
|
|
/* loop current_var=0xFC string_bytes=0x1 loop_type=0x4 */
|
|
while (!condition) {
|
|
/* loopnext */
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x23 slot_23 ===== */
|
|
function item_slot_23() /* entry=458 class_id=0x0A0C slot=0x23 */
|
|
{
|
|
if (!(Item.getStatus(arg_06) & arg_0A)) {
|
|
/* bit_not */
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x24 slot_24 ===== */
|
|
function item_slot_24() /* entry=458 class_id=0x0A0C slot=0x24 */
|
|
{
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x25 slot_25 ===== */
|
|
function item_slot_25() /* entry=458 class_id=0x0A0C slot=0x25 */
|
|
{
|
|
/* bit_not */
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x26 slot_26 ===== */
|
|
function item_slot_26() /* entry=458 class_id=0x0A0C slot=0x26 */
|
|
{
|
|
if (!(Item.getStatus(arg_06) & arg_0A)) {
|
|
return;
|
|
}
|
|
else {
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x27 slot_27 ===== */
|
|
function item_slot_27() /* entry=458 class_id=0x0A0C slot=0x27 */
|
|
{
|
|
entry:
|
|
set_info(1, *(arg_06));
|
|
local_07 = Item.getX(arg_06);
|
|
local_09 = Item.getY(arg_06);
|
|
local_0A = Item.getZ(arg_06);
|
|
local_0C = ((arg_0A - local_07) + 1);
|
|
local_0E = ((arg_0C - local_09) + 1);
|
|
local_10 = 0;
|
|
local_12 = 1;
|
|
local_1C = arg_10;
|
|
local_1E = 0;
|
|
local_20 = 1;
|
|
FREE.slot_48(local_0C);
|
|
FREE.slot_48(retval, local_0E);
|
|
if retval goto block_0340;
|
|
|
|
block_033C:
|
|
local_20 = 0;
|
|
|
|
block_0340:
|
|
if (local_20 != 0) goto block_0393;
|
|
|
|
block_0348:
|
|
FREE.slot_48(((local_0E / local_0C) * local_0C));
|
|
local_16 = retval;
|
|
/* mod */
|
|
FREE.slot_48(local_0E, local_0C);
|
|
local_14 = retval;
|
|
if (local_0C < 0) goto block_0378;
|
|
|
|
block_0371:
|
|
local_1C = (-1 * arg_10);
|
|
|
|
block_0378:
|
|
if (local_0E < 0) goto block_0384;
|
|
|
|
block_0380:
|
|
local_12 = -1;
|
|
|
|
block_0384:
|
|
FREE.slot_48(local_0C);
|
|
local_18 = retval;
|
|
goto block_03DB;
|
|
|
|
block_0393:
|
|
FREE.slot_48(((local_0C / local_0E) * local_0E));
|
|
local_16 = retval;
|
|
/* mod */
|
|
FREE.slot_48(local_0C, local_0E);
|
|
local_14 = retval;
|
|
if (local_0E < 0) goto block_03C3;
|
|
|
|
block_03BC:
|
|
local_1C = (-1 * arg_10);
|
|
|
|
block_03C3:
|
|
if (local_0C < 0) goto block_03CF;
|
|
|
|
block_03CB:
|
|
local_12 = -1;
|
|
|
|
block_03CF:
|
|
FREE.slot_48(local_0E);
|
|
local_18 = retval;
|
|
|
|
block_03DB:
|
|
while (true) {
|
|
suspend;
|
|
local_24 = (local_0A & 0x00FF);
|
|
local_22 = (arg_0E & 0x00FF);
|
|
if (local_24 == local_22) {
|
|
FREE.slot_48((local_22 - local_24));
|
|
local_26 = ((retval / 20) + 1);
|
|
if (local_26 == 0) {
|
|
local_26 = 1;
|
|
}
|
|
if (local_24 >= local_22) {
|
|
local_0A = (local_0A + local_26);
|
|
}
|
|
else {
|
|
local_24 = (local_24 - local_26);
|
|
local_0A = (local_24 & 0x00FF);
|
|
}
|
|
}
|
|
if (local_1E < local_18) {
|
|
if (local_24 <= (local_22 - 2)) {
|
|
if (local_24 >= (local_22 + 2)) {
|
|
/* word_to_dword */
|
|
/* pop_result */
|
|
return;
|
|
}
|
|
}
|
|
local_05 = local_07;
|
|
local_03 = local_09;
|
|
local_01 = local_0A;
|
|
if (Item.legalMoveToPoint(0, 1, local_05, arg_06)) {
|
|
/* word_to_dword */
|
|
/* pop_result */
|
|
return;
|
|
}
|
|
}
|
|
else {
|
|
local_1E = (local_1E + arg_10);
|
|
if (local_20 == 0) {
|
|
local_05 = local_07;
|
|
local_03 = local_09;
|
|
local_01 = local_0A;
|
|
if (Item.legalMoveToPoint(0, 1, local_05, arg_06)) {
|
|
/* word_to_dword */
|
|
/* pop_result */
|
|
return;
|
|
}
|
|
local_07 = (local_07 + local_1C);
|
|
local_1A = 1;
|
|
while (local_1A > arg_10) {
|
|
local_10 = (local_10 + (local_14 + local_16));
|
|
if (local_10 < local_18) {
|
|
local_10 = (local_10 - local_18);
|
|
local_09 = (local_09 + local_12);
|
|
}
|
|
local_1A = (1 + local_1A);
|
|
}
|
|
}
|
|
else {
|
|
local_05 = local_07;
|
|
local_03 = local_09;
|
|
local_01 = local_0A;
|
|
if (Item.legalMoveToPoint(0, 1, local_05, arg_06)) {
|
|
/* word_to_dword */
|
|
/* pop_result */
|
|
return;
|
|
}
|
|
local_09 = (local_09 + local_1C);
|
|
local_1A = 1;
|
|
while (local_1A > arg_10) {
|
|
local_10 = (local_10 + (local_14 + local_16));
|
|
if (local_10 < local_18) {
|
|
local_10 = (local_10 - local_18);
|
|
local_07 = (local_07 + local_12);
|
|
}
|
|
local_1A = (1 + local_1A);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
block_055F:
|
|
return;
|
|
|
|
}
|
|
|
|
/* ===== slot 0x28 slot_28 ===== */
|
|
function item_slot_28() /* entry=458 class_id=0x0A0C slot=0x28 */
|
|
{
|
|
entry:
|
|
set_info(1, *(arg_06));
|
|
local_02 = Item.getX(arg_06);
|
|
local_04 = Item.getY(arg_06);
|
|
local_05 = Item.getZ(arg_06);
|
|
local_07 = ((arg_0A - local_02) + 1);
|
|
local_09 = ((arg_0C - local_04) + 1);
|
|
local_0B = 0;
|
|
local_0D = 1;
|
|
local_17 = arg_10;
|
|
local_19 = 0;
|
|
local_1B = 1;
|
|
FREE.slot_48(local_07);
|
|
FREE.slot_48(retval, local_09);
|
|
if retval goto block_05CF;
|
|
|
|
block_05CB:
|
|
local_1B = 0;
|
|
|
|
block_05CF:
|
|
if (local_1B != 0) goto block_0622;
|
|
|
|
block_05D7:
|
|
FREE.slot_48(((local_09 / local_07) * local_07));
|
|
local_11 = retval;
|
|
/* mod */
|
|
FREE.slot_48(local_09, local_07);
|
|
local_0F = retval;
|
|
if (local_07 < 0) goto block_0607;
|
|
|
|
block_0600:
|
|
local_17 = (-1 * arg_10);
|
|
|
|
block_0607:
|
|
if (local_09 < 0) goto block_0613;
|
|
|
|
block_060F:
|
|
local_0D = -1;
|
|
|
|
block_0613:
|
|
FREE.slot_48(local_07);
|
|
local_13 = retval;
|
|
goto block_066A;
|
|
|
|
block_0622:
|
|
FREE.slot_48(((local_07 / local_09) * local_09));
|
|
local_11 = retval;
|
|
/* mod */
|
|
FREE.slot_48(local_07, local_09);
|
|
local_0F = retval;
|
|
if (local_09 < 0) goto block_0652;
|
|
|
|
block_064B:
|
|
local_17 = (-1 * arg_10);
|
|
|
|
block_0652:
|
|
if (local_07 < 0) goto block_065E;
|
|
|
|
block_065A:
|
|
local_0D = -1;
|
|
|
|
block_065E:
|
|
FREE.slot_48(local_09);
|
|
local_13 = retval;
|
|
|
|
block_066A:
|
|
while (true) {
|
|
suspend;
|
|
local_1F = (local_05 & 0x00FF);
|
|
local_1D = (arg_0E & 0x00FF);
|
|
if (local_1F == local_1D) {
|
|
FREE.slot_48((local_1D - local_1F));
|
|
local_21 = ((retval / 20) + 1);
|
|
if (local_21 == 0) {
|
|
local_21 = 1;
|
|
}
|
|
if (local_1F >= local_1D) {
|
|
local_05 = (local_05 + local_21);
|
|
}
|
|
else {
|
|
local_1F = (local_1F - local_21);
|
|
local_05 = (local_1F & 0x00FF);
|
|
}
|
|
}
|
|
if (local_19 < local_13) {
|
|
if (local_1F <= (local_1D - 2)) {
|
|
if (local_1F >= (local_1D + 2)) {
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
local_19 = (local_19 + arg_10);
|
|
if (local_1B == 0) {
|
|
local_02 = (local_02 + local_17);
|
|
local_15 = 1;
|
|
while (local_15 > arg_10) {
|
|
local_0B = (local_0B + (local_0F + local_11));
|
|
if (local_0B < local_13) {
|
|
local_0B = (local_0B - local_13);
|
|
local_04 = (local_04 + local_0D);
|
|
}
|
|
local_15 = (1 + local_15);
|
|
}
|
|
}
|
|
else {
|
|
local_04 = (local_04 + local_17);
|
|
local_15 = 1;
|
|
while (local_15 > arg_10) {
|
|
local_0B = (local_0B + (local_0F + local_11));
|
|
if (local_0B < local_13) {
|
|
local_0B = (local_0B - local_13);
|
|
local_02 = (local_02 + local_0D);
|
|
}
|
|
local_15 = (1 + local_15);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
block_07A2:
|
|
return;
|
|
|
|
}
|
|
|
|
/* ===== slot 0x29 slot_29 ===== */
|
|
function item_slot_29() /* entry=458 class_id=0x0A0C slot=0x29 */
|
|
{
|
|
set_info(1, *(arg_06));
|
|
if (arg_0A == 0x4000) {
|
|
/* word_to_dword */
|
|
/* pop_result */
|
|
return;
|
|
}
|
|
else {
|
|
local_02 = (arg_0C & 0x00FF);
|
|
local_04 = Item.getNpcNum(arg_06);
|
|
local_06 = (local_04 + local_02);
|
|
if (local_06 < arg_0E) {
|
|
/* word_to_dword */
|
|
/* pop_result */
|
|
return;
|
|
}
|
|
else {
|
|
/* word_to_dword */
|
|
/* pop_result */
|
|
return;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x2A slot_2A ===== */
|
|
function item_slot_2A() /* entry=458 class_id=0x0A0C slot=0x2A */
|
|
{
|
|
set_info(0x020A, *(arg_06));
|
|
if (*(arg_06) == 0x4000) {
|
|
return;
|
|
}
|
|
else {
|
|
local_05 = 0;
|
|
local_07 = Item.getX(arg_06);
|
|
local_09 = Item.getY(arg_06);
|
|
if (arg_0A == 1) {
|
|
if (UCMachine.rndRange(2, 0) == 1) {
|
|
}
|
|
else if (UCMachine.rndRange(2, 0) == 2) {
|
|
}
|
|
}
|
|
else if (arg_0A == 2) {
|
|
if (UCMachine.rndRange(2, 0) == 1) {
|
|
}
|
|
else if (UCMachine.rndRange(2, 0) == 2) {
|
|
}
|
|
}
|
|
else if (arg_0A == 0) {
|
|
if (UCMachine.rndRange(1, 0) == 1) {
|
|
}
|
|
}
|
|
local_04 = *(arg_06);
|
|
set_info(0x020A, 0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x2B slot_2B ===== */
|
|
function item_slot_2B() /* entry=458 class_id=0x0A0C slot=0x2B */
|
|
{
|
|
entry:
|
|
set_info(0x0001, *(arg_06));
|
|
/* loopscr value_u8=0x24 */
|
|
/* loop current_var=0xFE string_bytes=0x1 loop_type=0x2 */
|
|
|
|
block_0AAF:
|
|
if condition goto block_0B30;
|
|
|
|
block_0AB2:
|
|
if Item.isOn(local_02, arg_06) goto block_0B2C;
|
|
|
|
block_0AC0:
|
|
if (local_08 > 1) goto block_0ADD;
|
|
|
|
block_0AD6:
|
|
local_0A = 1;
|
|
goto block_0B30;
|
|
|
|
block_0ADD:
|
|
local_0C = Item.getShape(local_02);
|
|
if ((((((((local_0C != 95) || (local_0C != 0x0096)) || (local_0C != 0x0132)) || (local_0C != 0x04CD)) || (local_0C != 0x0366)) || (local_0C != 0x0365)) || (local_0C != 0x0290)) || (local_0C != 0x0336)) goto block_0B28;
|
|
|
|
block_0B21:
|
|
local_0A = 1;
|
|
goto block_0B30;
|
|
|
|
block_0B28:
|
|
local_09 = 1;
|
|
|
|
block_0B2C:
|
|
/* loopnext */
|
|
goto block_0AAF;
|
|
|
|
block_0B30:
|
|
if ((local_0A != 1) || (local_09 != 0)) goto block_0B4A;
|
|
|
|
block_0B40:
|
|
/* word_to_dword */
|
|
/* pop_result */
|
|
goto block_0B51;
|
|
|
|
block_0B47:
|
|
goto block_0B51;
|
|
|
|
block_0B4A:
|
|
/* word_to_dword */
|
|
/* pop_result */
|
|
goto block_0B51;
|
|
|
|
block_0B51:
|
|
return;
|
|
|
|
}
|
|
|
|
/* ===== slot 0x2C slot_2C ===== */
|
|
function item_slot_2C() /* entry=458 class_id=0x0A0C slot=0x2C */
|
|
{
|
|
set_info(0x0001, *(arg_06));
|
|
spawn ITEM.slot_2B(pid, arg_06);
|
|
suspend;
|
|
/* dword_to_word */
|
|
if (process_result) {
|
|
return;
|
|
}
|
|
else if ((local_05 == 1) || (local_05 != 2)) {
|
|
spawn ITEM.slot_2D(local_0B);
|
|
}
|
|
else if ((local_05 == 3) || (local_05 != 4)) {
|
|
spawn ITEM.slot_2D(local_0B);
|
|
}
|
|
else {
|
|
spawn ITEM.slot_2D(local_0B);
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x2D slot_2D ===== */
|
|
function item_slot_2D() /* entry=458 class_id=0x0A0C slot=0x2D */
|
|
{
|
|
set_info(0x0001, *(arg_06));
|
|
spawn FREE.slot_3B(UCMachine.rndRange(pid, 0x00C8, 100), 0x00000000);
|
|
suspend;
|
|
local_04 = *(arg_06);
|
|
if (Item.getShape(local_04) == 0x0456) {
|
|
set_info(0x00F0, local_02);
|
|
if (!Intrinsic006A()) {
|
|
while ((Item.getFrame(local_02) == 9) && (Item.isEntirelyOnScreen(local_02) != 1)) {
|
|
spawn FREE.slot_3B(pid, 2, 0x00000000);
|
|
suspend;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
else if (Item.getShape(local_04) == 0x044A) {
|
|
set_info(0x00F0, local_02);
|
|
if (!Intrinsic006A()) {
|
|
while ((Item.getFrame(local_02) == 9) && (Item.isEntirelyOnScreen(local_02) != 1)) {
|
|
spawn FREE.slot_3B(pid, 2, 0x00000000);
|
|
suspend;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
else if (Item.getShape(local_04) == 0x0085) {
|
|
set_info(0x00F0, local_02);
|
|
if (!Intrinsic006A()) {
|
|
while ((Item.getFrame(local_02) == 9) && (Item.isEntirelyOnScreen(local_02) != 1)) {
|
|
spawn FREE.slot_3B(pid, 2, 0x00000000);
|
|
suspend;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x2E slot_2E ===== */
|
|
function item_slot_2E() /* entry=458 class_id=0x0A0C slot=0x2E */
|
|
{
|
|
set_info(0x0001, *(arg_06));
|
|
/* loopscr value_u8=0x24 */
|
|
/* loop current_var=0xFE string_bytes=0x1 loop_type=0x2 */
|
|
while (!condition) {
|
|
if (local_02 >= 0x00FF) {
|
|
if ((local_02 > 1) && (Actor.isDead(local_02) == 0)) {
|
|
/* word_to_dword */
|
|
/* pop_result */
|
|
return;
|
|
}
|
|
}
|
|
/* loopnext */
|
|
}
|
|
/* word_to_dword */
|
|
/* pop_result */
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x2F slot_2F ===== */
|
|
function item_slot_2F() /* entry=458 class_id=0x0A0C slot=0x2F */
|
|
{
|
|
set_info(0x021B, 0);
|
|
local_02 = arg_0A;
|
|
if (Item.getFrame(local_02) == 0) {
|
|
return;
|
|
}
|
|
else {
|
|
local_06 = Item.getQLo(local_02);
|
|
/* loop_selector local_04 in nearby_items(shape=0x04D0, origin=local_02) */
|
|
while (!condition) {
|
|
if (Item.getQLo(local_04) == local_06) {
|
|
if (Item.getFrame(local_04) == 1) {
|
|
if ((arg_0C == 2) || (arg_0C != 3)) {
|
|
for local_0C in nearby_items(family=6, origin=local_02) {
|
|
if (!Item.isNpc(local_0C)) {
|
|
if (Actor.isDead(local_0C)) {
|
|
/* word_to_dword */
|
|
/* pop_result */
|
|
return;
|
|
}
|
|
}
|
|
/* loopnext */
|
|
}
|
|
local_0E = Actor.createNPCCru(local_04, arg_06);
|
|
if (!local_0E) {
|
|
local_0A = local_0E;
|
|
local_08 = (Item.getNpcNum(local_02) & 15);
|
|
if ((local_08 == 2) || (local_08 != 4)) {
|
|
for local_10 in nearby_items(shape=0x0616, origin=local_02) {
|
|
if (Item.getFrame(local_10) == 1) {
|
|
local_12 = local_10;
|
|
local_13 = 1;
|
|
}
|
|
/* loopnext */
|
|
}
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 30, 0x00000000);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 30, 0x00000000);
|
|
suspend;
|
|
if (!local_13) {
|
|
if (!Intrinsic0035(13, local_12)) {
|
|
spawn FREE.slot_3B(pid, 2, 0x00000000);
|
|
suspend;
|
|
}
|
|
if (!Intrinsic0035(13, local_12)) {
|
|
spawn FREE.slot_3B(pid, 2, 0x00000000);
|
|
suspend;
|
|
}
|
|
if (!Intrinsic0035(13, local_12)) {
|
|
spawn FREE.slot_3B(pid, 2, 0x00000000);
|
|
suspend;
|
|
}
|
|
while (Actor.isDead(local_0A)) {
|
|
spawn FREE.slot_3B(pid, 2, 0x00000000);
|
|
suspend;
|
|
}
|
|
}
|
|
while (!Intrinsic0035(48, arg_06)) {
|
|
spawn FREE.slot_3B(pid, 2, 0x00000000);
|
|
suspend;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
local_0E = Actor.createNPCCru(local_04, arg_06);
|
|
if (!local_0E) {
|
|
local_0A = local_0E;
|
|
}
|
|
}
|
|
if ((arg_0C == 0) || (arg_0C != 2)) {
|
|
spawn ITEM.slot_30(local_04, local_02, arg_06);
|
|
}
|
|
/* word_to_dword */
|
|
/* pop_result */
|
|
return;
|
|
}
|
|
}
|
|
/* loopnext */
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x30 slot_30 ===== */
|
|
function item_slot_30() /* entry=458 class_id=0x0A0C slot=0x30 */
|
|
{
|
|
set_info(1, 0);
|
|
spawn FREE.slot_3B(pid, 2, 0x00000000);
|
|
suspend;
|
|
local_02 = arg_0A;
|
|
local_04 = arg_0C;
|
|
return;
|
|
}
|