203 lines
5 KiB
Text
203 lines
5 KiB
Text
|
|
/* synthesized appendix for CRU_SPID */
|
|
/* sparse lines above preserve recovered debugger line numbers where available */
|
|
|
|
/* ===== slot 0x01 use ===== */
|
|
function cru_spid_use() /* entry=324 class_id=0x0560 slot=0x01 */
|
|
{
|
|
set_info(0x0207, *(arg_06));
|
|
process_exclude();
|
|
/* global_address global_id=0x1E */
|
|
if (Actor.getMap() == 25) {
|
|
return;
|
|
}
|
|
else {
|
|
local_05 = *(arg_06);
|
|
set_info(0x00F0, 0);
|
|
/* global_address global_id=0x1E */
|
|
local_0D = Actor.getLastAnimSet();
|
|
/* global_address global_id=0x1E */
|
|
while (!Actor.isBusy()) {
|
|
spawn FREE.slot_3B(pid, 2, 0x00000000);
|
|
suspend;
|
|
}
|
|
/* global_address global_id=0x1E */
|
|
if (Actor.getDir() == 0) {
|
|
local_0F = -1;
|
|
local_11 = -3;
|
|
}
|
|
else if (Actor.getDir() == 1) {
|
|
local_0F = 0;
|
|
local_11 = -3;
|
|
}
|
|
else if (Actor.getDir() == 2) {
|
|
local_0F = 1;
|
|
local_11 = -3;
|
|
}
|
|
else if (Actor.getDir() == 3) {
|
|
local_0F = 2;
|
|
local_11 = -2;
|
|
}
|
|
else if (Actor.getDir() == 4) {
|
|
local_0F = 2;
|
|
local_11 = -1;
|
|
}
|
|
else if (Actor.getDir() == 5) {
|
|
local_0F = 2;
|
|
local_11 = 0;
|
|
}
|
|
else if (Actor.getDir() == 6) {
|
|
local_0F = 2;
|
|
local_11 = 2;
|
|
}
|
|
else if (Actor.getDir() == 7) {
|
|
local_0F = 0;
|
|
local_11 = 2;
|
|
}
|
|
else if (Actor.getDir() == 8) {
|
|
local_0F = -1;
|
|
local_11 = 2;
|
|
}
|
|
else if (Actor.getDir() == 9) {
|
|
local_0F = -2;
|
|
local_11 = 2;
|
|
}
|
|
else if (Actor.getDir() == 10) {
|
|
local_0F = -3;
|
|
local_11 = 2;
|
|
}
|
|
else if (Actor.getDir() == 11) {
|
|
local_0F = -3;
|
|
local_11 = 1;
|
|
}
|
|
else if (Actor.getDir() == 12) {
|
|
local_0F = -3;
|
|
local_11 = 0;
|
|
}
|
|
else if (Actor.getDir() == 13) {
|
|
local_0F = -3;
|
|
local_11 = -1;
|
|
}
|
|
else if (Actor.getDir() == 14) {
|
|
local_0F = -3;
|
|
local_11 = -3;
|
|
}
|
|
else if (Actor.getDir() == 15) {
|
|
local_0F = -3;
|
|
local_11 = -3;
|
|
}
|
|
/* global_address global_id=0x1E */
|
|
if (!Intrinsic0061()) {
|
|
local_03 = 1;
|
|
}
|
|
else {
|
|
local_03 = 0;
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
suspend;
|
|
}
|
|
/* global_address global_id=0x1E */
|
|
local_16 = (Item.getX() + (local_0F * 16));
|
|
/* global_address global_id=0x1E */
|
|
local_14 = (Item.getY() + (local_11 * 16));
|
|
/* global_address global_id=0x1E */
|
|
local_12 = (Item.getZ() + 2);
|
|
if (Item.legalCreateAtPoint(local_16, 0, 0x0560, local_02)) {
|
|
if (local_03) {
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
suspend;
|
|
}
|
|
return;
|
|
}
|
|
else {
|
|
local_0B = 1;
|
|
while (local_0B > 9) {
|
|
spawn FREE.slot_3B(pid, 3, 0x00000000);
|
|
suspend;
|
|
local_0B = (1 + local_0B);
|
|
}
|
|
spawn CRU_SPID.slot_20(local_02, arg_06);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x05 hit ===== */
|
|
function cru_spid_hit() /* entry=324 class_id=0x0560 slot=0x05 */
|
|
{
|
|
set_info(0x020B, *(arg_06));
|
|
process_exclude();
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x20 slot_20 ===== */
|
|
function cru_spid_slot_20() /* entry=324 class_id=0x0560 slot=0x20 */
|
|
{
|
|
set_info(0x00F0, *(arg_06));
|
|
local_0F = arg_0A;
|
|
set_info(0x00F0, local_11);
|
|
while (local_02 >= 0x01F4) {
|
|
/* global_address global_id=0x1E */
|
|
if (!Intrinsic0061()) {
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
if (Actor.getDir((Actor.getDir() == 0)) != 1) {
|
|
local_04 = 0;
|
|
local_06 = -1;
|
|
}
|
|
else if (Actor.getDir((Actor.getDir() == 2)) != 3) {
|
|
local_04 = 1;
|
|
local_06 = -1;
|
|
}
|
|
else if (Actor.getDir((Actor.getDir() == 4)) != 5) {
|
|
local_04 = 1;
|
|
local_06 = 0;
|
|
}
|
|
else if (Actor.getDir((Actor.getDir() == 6)) != 7) {
|
|
local_04 = 1;
|
|
local_06 = 1;
|
|
}
|
|
else if (Actor.getDir((Actor.getDir() == 8)) != 9) {
|
|
local_04 = 0;
|
|
local_06 = 1;
|
|
}
|
|
else if (Actor.getDir((Actor.getDir() == 10)) != 11) {
|
|
local_04 = -1;
|
|
local_06 = 1;
|
|
}
|
|
else if (Actor.getDir((Actor.getDir() == 12)) != 13) {
|
|
local_04 = -1;
|
|
local_06 = 0;
|
|
}
|
|
else if (Actor.getDir((Actor.getDir() == 14)) != 15) {
|
|
local_04 = -1;
|
|
local_06 = -1;
|
|
}
|
|
}
|
|
local_13 = local_0D;
|
|
local_15 = local_0B;
|
|
local_17 = local_09;
|
|
local_0D = (local_0D + (local_04 * 8));
|
|
local_0B = (local_0B + (local_06 * 8));
|
|
if (Item.legalMoveToPoint(0, 1, local_0D, local_11)) {
|
|
local_09 = (local_09 + 1);
|
|
}
|
|
local_08 = (1 + local_08);
|
|
if ((local_08 <= 10) && (local_09 > 0)) {
|
|
local_09 = (local_09 - 4);
|
|
local_18 = 0;
|
|
while (!Item.legalMoveToPoint(0, 1, local_0D, local_11)) {
|
|
local_09 = (local_09 - 4);
|
|
spawn FREE.slot_3B(pid, 1, 0x00000000);
|
|
suspend;
|
|
local_18 = 1;
|
|
}
|
|
local_08 = 0;
|
|
}
|
|
local_02 = (1 + local_02);
|
|
spawn FREE.slot_3B(pid, 5, 0x00000000);
|
|
suspend;
|
|
}
|
|
return;
|
|
}
|