174 lines
4.4 KiB
Text
174 lines
4.4 KiB
Text
|
|
/* synthesized appendix for TELEPAD */
|
|
/* sparse lines above preserve recovered debugger line numbers where available */
|
|
|
|
/* ===== slot 0x06 gotHit ===== */
|
|
function telepad_gotHit() /* entry=118 class_id=0x01DB slot=0x06 */
|
|
{
|
|
set_info(0x020C, *(arg_06));
|
|
process_exclude();
|
|
local_02 = arg_0A;
|
|
local_04 = *(arg_06);
|
|
local_08 = Item.getQLo(local_04);
|
|
set_info(1, 0);
|
|
spawn FREE.slot_3B(pid, 1, 0x00000000);
|
|
suspend;
|
|
FREE.slot_35(arg_0C, arg_0A);
|
|
if ((retval <= 0) || (Item.getFrame(local_04) > 1)) {
|
|
return;
|
|
}
|
|
else if (Ultima8Engine.getUnkCrusaderFlag() == 1) {
|
|
/* loopscr value_u8=0x24 */
|
|
/* loopscr value_u8=0x3D */
|
|
/* loopscr value_u8=0x3A */
|
|
/* loopscr value_u8=0x25 */
|
|
/* loop current_var=0xF6 string_bytes=0x6 loop_type=0x6 */
|
|
while (!condition) {
|
|
/* loopnext */
|
|
}
|
|
return;
|
|
}
|
|
else if (Item.isCentreOn(*(arg_06), local_02)) {
|
|
return;
|
|
}
|
|
else {
|
|
/* global_address global_id=0x1E */
|
|
if (Item.getShape((local_02 == 1)) != 1) {
|
|
if (local_08 == 0x00FF) {
|
|
return;
|
|
}
|
|
else {
|
|
/* pop_global global_id=0x9 size=0x1 */
|
|
if ((local_08 > 0) && (local_08 >= 100)) {
|
|
/* global_address global_id=0x1E */
|
|
spawn TELEPAD.slot_20(Actor.getMap(local_08), arg_06);
|
|
return;
|
|
}
|
|
else if (local_08 == 109) {
|
|
spawn TELEPAD.slot_20(109, 20, arg_06);
|
|
return;
|
|
}
|
|
else if (local_08 == 110) {
|
|
spawn TELEPAD.slot_20(111, 21, arg_06);
|
|
return;
|
|
}
|
|
else if (local_08 == 111) {
|
|
spawn TELEPAD.slot_20(65, 20, arg_06);
|
|
return;
|
|
}
|
|
else if (local_08 == 112) {
|
|
spawn TELEPAD.slot_20(66, 20, arg_06);
|
|
return;
|
|
}
|
|
else if (local_08 == 113) {
|
|
spawn TELEPAD.slot_20(30, 3, arg_06);
|
|
return;
|
|
}
|
|
else if (local_08 == 114) {
|
|
spawn TELEPAD.slot_20(30, 22, arg_06);
|
|
return;
|
|
}
|
|
else if (local_08 == 115) {
|
|
spawn TELEPAD.slot_20(115, 20, arg_06);
|
|
return;
|
|
}
|
|
else {
|
|
/* str_to_ptr */
|
|
/* free_stack_string value_u8=0x4 target=[SP+04h] */
|
|
suspend;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x09 release ===== */
|
|
function telepad_release() /* entry=118 class_id=0x01DB slot=0x09 */
|
|
{
|
|
set_info(0x020D, *(arg_06));
|
|
process_exclude();
|
|
/* loopscr value_u8=0x24 */
|
|
/* loopscr value_u8=0x3D */
|
|
/* loopscr value_u8=0x3A */
|
|
/* loopscr value_u8=0x25 */
|
|
/* loop current_var=0xFE string_bytes=0x6 loop_type=0x6 */
|
|
while (!condition) {
|
|
if (local_02 == 1) {
|
|
local_03 = 1;
|
|
}
|
|
/* loopnext */
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x0F enterFastArea ===== */
|
|
function telepad_enterFastArea() /* entry=118 class_id=0x01DB slot=0x0F */
|
|
{
|
|
set_info(0x021B, *(arg_06));
|
|
process_exclude();
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x20 slot_20 ===== */
|
|
function telepad_slot_20() /* entry=118 class_id=0x01DB slot=0x20 */
|
|
{
|
|
set_info(1, 0);
|
|
/* global_address global_id=0x1E */
|
|
if (!Actor.isDead()) {
|
|
return;
|
|
}
|
|
else {
|
|
/* global_address global_id=0x1E */
|
|
/* pop_global global_id=0xB size=0x1 */
|
|
/* pop_global global_id=0xC size=0x1 */
|
|
spawn FREE.slot_3B(0, 0, pid, 0, 0x00000000);
|
|
suspend;
|
|
FREE.slot_3C(0x0215, 0);
|
|
FREE.slot_3C(0x0228, 0);
|
|
/* global_address global_id=0x1E */
|
|
while (!Actor.isBusy()) {
|
|
spawn FREE.slot_3B(pid, 2, 0x00000000);
|
|
suspend;
|
|
}
|
|
/* global_address global_id=0x1E */
|
|
if (!Intrinsic0061()) {
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
suspend;
|
|
}
|
|
/* global_address global_id=0x1E */
|
|
spawn NPC.slot_24(pid);
|
|
suspend;
|
|
/* global_address global_id=0x1E */
|
|
if (Actor.getMap() == arg_0A) {
|
|
suspend;
|
|
FREE.slot_22();
|
|
if (arg_0A == 3) {
|
|
spawn FREE.slot_3B(pid, 120, 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] */
|
|
return;
|
|
}
|
|
if (!arg_0A) {
|
|
suspend;
|
|
}
|
|
FREE.slot_23();
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
suspend;
|
|
}
|
|
else {
|
|
suspend;
|
|
}
|
|
/* global_address global_id=0x1E */
|
|
spawn NPC.slot_23(pid);
|
|
suspend;
|
|
/* global_address global_id=0x1E */
|
|
}
|
|
return;
|
|
}
|