How to "teleport" units?

Okay, another newbie question.

So what I want to do is use stairs tiles to move one unit from one area of the map to another. The first idea I got was to “disappear” the unit, reposition it to the destination, and then “reappear” them.

So it seems that the DISA command doesn’t quite work right, so what I did was to skip that step and go straight to repositioning. That doesn’t seem to quite work right though, and I just end the unit’s turn and nothing happens.

After some code tinkering I think the issue is with the area code.

Here’s my event code fwiw:

#define DISABLE_TUTORIALS
#include EAstdlib.event

EventPointerTable(0x36,Pointers)

ORG 0xD82200

Pointers:
POIN Turn_events
POIN Character_events
POIN Location_events
POIN Misc_events
POIN TrapData TrapData
POIN Bad Bad Bad Bad
POIN Good Good Good Good
POIN Opening_event Ending_event

Good:
UNIT 0x01 0x01 0x01 Level(1, Ally, 0) [2,21] [2,21] [0x01] NoAI
UNIT 0x2D 0x02 0x01 Level(1, Ally, 0) [1,21] [1,21] [0x14] NoAI
UNIT 0x2F 0x2B 0x01 Level(1, Ally, 0) [3,21] [3,21] [0x1F] NoAI
UNIT 0x30 0x29 0x01 Level(1, Ally, 0) [4,21] [4,21] [0x14] NoAI
UNIT 0x04 0x0A 0x01 Level(1, Ally, 0) [0,21] [0,21] [0x01] NoAI
UNIT 0x0E 0x19 0x01 Level(1, Ally, 0) [2,22] [2,22] [0x2C] NoAI
UNIT 0x11 0x1D 0x01 Level(1, Ally, 0) [1,22] [1,22] [0x4A] NoAI
UNIT 0x13 0x20 0x01 Level(1, Ally, 0) [3,22] [3,22] [0x37] NoAI
UNIT 0x31 0x32 0x01 Level(1, Ally, 0) [0,22] [0,22] [0x14] NoAI
UNIT 0x34 0x30 0x01 Level(1, Ally, 0) [4,22] [4,22] [0x2C] NoAI
UNIT

Bad:
UNIT 0xC5 0x16 0xC5 Level(3, Enemy, 1) [12,3] [12,3] [0x03, 0x20, 0x1C]

Guard
UNIT 0x21 0x35 0x01 Level(10, Enemy, 0) [7,10] [7,10] [0x20, 0x28] Guard
UNIT 0x61 0x12 0x01 Level(10, Enemy, 1) [7,19] [7,19] [0x20] AttackInRange
UNIT 0x61 0x12 0x01 Level(10, Enemy, 1) [8,20] [8,20] [0x20] AttackInRange
UNIT 0x61 0x18 0x01 Level(10, Enemy, 1) [11,18] [11,18] [0x2D]

AttackInRange
UNIT 0x61 0x18 0x01 Level(10, Enemy, 1) [11,21] [11,21] [0x2D]

AttackInRange
UNIT 0x61 0x38 0x01 Level(10, Enemy, 1) [9,13] [9,13] [0x16] AttackInRange
UNIT 0x61 0x20 0x01 Level(10, Enemy, 1) [10,14] [10,14] [0x38]

AttackInRange
UNIT 0x61 0x0E 0x01 Level(10, Enemy, 1) [9,15] [9,15] [0x03] AttackInRange
UNIT 0x61 0x0E 0x01 Level(10, Enemy, 1) [4,8] [4,8] [0x03] AttackInRange
UNIT 0x61 0x0E 0x01 Level(10, Enemy, 1) [4,10] [4,10] [0x03] AttackInRange
UNIT 0x61 0x18 0x01 Level(10, Enemy, 1) [3,15] [3,15] [0x33] AttackInRange
UNIT 0x61 0x17 0x01 Level(10, Enemy, 1) [10,9] [10,9] [0x20] AttackInRange
UNIT 0x61 0x12 0x01 Level(10, Enemy, 1) [4,3] [4,3] [0x20] AttackInRange
UNIT 0x61 0x12 0x01 Level(10, Enemy, 1) [4,5] [4,5] [0x20] AttackInRange
UNIT 0x61 0x0E 0x01 Level(10, Enemy, 1) [6,2] [6,2] [0x03] AttackInRange
UNIT 0x61 0x14 0x01 Level(10, Enemy, 1) [8,4] [8,4] [0x16] Guard
UNIT 0x61 0x2E 0xC5 Level(10, Enemy, 1) [14,4] [14,4] [0x2D] AttackInRange
UNIT 0x61 0x2E 0xC5 Level(10, Enemy, 1) [13,5] [13,5] [0x2D] AttackInRange
UNIT

Turn_events:
TurnEventPlayer(0x0,EventAfterExitingPrepScreen,1)
TurnEventPlayer(0x0,rein_c10_1,3)
TurnEventPlayer(0x0,rein_c10_2,10)
TurnEventPlayer(0x0,rein_c10_1,7)
TurnEventPlayer(0x0,rein_c10_2,14)
End_MAIN

Character_events:
CharacterEvent(0x5,Opening_event,0x01,0x21)
End_MAIN

Location_events:
Seize(0x0,Ending_event,12,3)
Door(5,14)
Chest(0x67,1,20)
Chest(0x66,2,14)
ChestMoney(5000,3,14)
CHES 0x0 0x0E [1,9] 0x14
End_MAIN

Misc_events:
CauseGameOverIfLordDies
AREA 0x1 first_to_second [13,20] [13,20] //first stairs
AREA 0x2 second_to_first [13,14] [13,14] //second stairs
AREA 0x3 second_to_third [13,9] [13,9] //and so on
AREA 0x4 third_to_second [2,4] [2,4]
End_MAIN

TrapData:
End_MAIN

Opening_event:
OOBB
ASMC 0x7A8B9
CALL EventAfterExitingPrepScreen
ENDB

Ending_event:
MoveToChapter(0x0C)
ENDA

// Events
first_to_second:
MOVE [13,20] [13,14]
ENUN
ENDA

second_to_third:
MOVE [13,9] [2,4]
ENUN
ENDA

second_to_first:
MOVE [13,14] [13,20]
ENUN
ENDA

third_to_second:
MOVE [2,4] [13,9]
ENUN
ENDA

EventAfterExitingPrepScreen:
LOU1 Good
ENUN
LOU1 Bad
ENUN
OOBB
ENDA

rein_c10_1:
LOU1 reinf_c10_1
ENUN
ENDA

rein_c10_2:
LOU1 reinf_c10_2
ENUN
ENDA

treasure:
LOU1 treasure_guard
ENUN
ENDA

ingrid:
TurnAlly(0x21)
ENDA

// Manual Movement

// Scripted Fights

// Units
reinf_c10_1:
UNIT 0x61 0x28 0x01 Level(10, Enemy, 1) [15,18] [15,18] [0x03]

AttackInRange
UNIT 0x61 0x29 0x01 Level(10, Enemy, 1) [15,19] [15,19] [0x16]

AttackInRange
UNIT

reinf_c10_2:
UNIT 0x61 0x29 0x01 Level(10, Enemy, 1) [2,0] [2,0] [0x16] AttackInRange
UNIT 0x61 0x28 0x01 Level(10, Enemy, 1) [3,0] [3,0] [0x03] AttackInRange
UNIT

treasure_guard:
UNIT 0x61 0x0E 0x01 Level(10, Enemy, 1) [1,8] [1,8] [0x03] AttackInRange
UNIT 0x61 0x0E 0x01 Level(10, Enemy, 1) [1,10] [1,10] [0x03] AttackInRange
UNIT

// Shop Data

MESSAGE Events end at offset currentOffset

i do know that a unit will never be able to be moved unless its inactive. like if it is in the moving animation in its map sprite it can’t be moved until it ends its action.
learned that the hard way

1 Like

^ This. We tried making Escape on the active unit for EN and it took both efforts of some of out best hackers and was kinda buggy and a pain.