(script 996)

(string
    string_04e0 "Ego"
    string_04e4 "Saisir commande"
    string_04f4 "User"
    string_04f9 ""
)

(said
)

(local
    local0 = $0000
    local1 = $0000
    local2 = $0000
    local3 = $0000
    local4 = $0000
    local5 = $0000
    local6 = $0000
    local7 = $0000
    local8 = $0000
    local9 = $0000
    local10 = $0000
    local11 = $0000
    local12 = $0000
    local13 = $0000
    local14 = $0000
    local15 = $0000
    local16 = $0000
    local17 = $0000
    local18 = $0000
    local19 = $0000
    local20 = $0000
    local21 = $0000
    local22 = $0000
    local23 = $0000
)

// 0376
(class User of Obj
    (properties
        alterEgo $0
        canInput $0
        controls $0
        echo $20
        prevDir $0
        prompt"Saisir commande"
        inputLineAddr $0
        x $ffff
        y $ffff
        blocks $1
        mapKeyToDir $1
    )
    (method (init) // method_0004
  0004:87 00              lap paramTotal 
  0006:31 04              bnt code_000c 
  0008:87 01              lap param1 
  000a:33 03              jmp code_000f 

        code_000c
  000c:5b 02 00           lea 2 0 

        code_000f
  000f:65 14             aTop inputLineAddr 
  0011:8f 00              lsp paramTotal 
  0013:35 02              ldi 2 
  0015:1a                 eq? 
  0016:31 04              bnt code_001c 
  0018:87 02              lap param2 
  001a:33 02              jmp code_001e 

        code_001c
  001c:35 2d              ldi 2d 

        code_001e
  001e:a3 17              sal local23 
  0020:48                 ret 
    )

    (method (doit) // method_0021
  0021:39 6f            pushi 6f // $6f handleEvent
  0023:78               push1 
  0024:39 56            pushi 56 // $56 new
  0026:76               push0 
  0027:51 06            class Event 
  0029:4a 04             send 4 

  002b:36                push 
  002c:54 06             self 6 

  002e:48                 ret 
    )

    (method (handleEvent) // method_002f
  002f:3f 02             link 2 // (var $2)
  0031:39 22            pushi 22 // $22 type
  0033:76               push0 
  0034:87 01              lap param1 
  0036:4a 04             send 4 

  0038:30 0104            bnt code_013f 
  003b:87 01              lap param1 
  003d:a1 18              sag gLastEvent 
  003f:39 22            pushi 22 // $22 type
  0041:76               push0 
  0042:87 01              lap param1 
  0044:4a 04             send 4 

  0046:a5 00              sat temp0 
  0048:63 1c             pToa mapKeyToDir 
  004a:31 06              bnt code_0052 
  004c:78               push1 
  004d:8f 01              lsp param1 
  004f:43 1f 02         callk MapKeyToDir 2 


        code_0052
  0052:51 14            class TheMenuBar 
  0054:31 0b              bnt code_0061 
  0056:39 6f            pushi 6f // $6f handleEvent
  0058:7a               push2 
  0059:8f 01              lsp param1 
  005b:8d 00              lst temp0 
  005d:51 14            class TheMenuBar 
  005f:4a 08             send 8 


        code_0061
  0061:78               push1 
  0062:8f 01              lsp param1 
  0064:43 1d 02         callk GlobalToLocal 2 

  0067:39 4c            pushi 4c // $4c claimed
  0069:76               push0 
  006a:87 01              lap param1 
  006c:4a 04             send 4 

  006e:18                 not 
  006f:31 0b              bnt code_007c 
  0071:39 6f            pushi 6f // $6f handleEvent
  0073:7a               push2 
  0074:8f 01              lsp param1 
  0076:8d 00              lst temp0 
  0078:81 01              lag gGame 
  007a:4a 08             send 8 


        code_007c
  007c:63 0c             pToa controls 
  007e:31 20              bnt code_00a0 
  0080:39 4c            pushi 4c // $4c claimed
  0082:76               push0 
  0083:87 01              lap param1 
  0085:4a 04             send 4 

  0087:18                 not 
  0088:31 16              bnt code_00a0 
  008a:39 65            pushi 65 // $65 contains
  008c:78               push1 
  008d:67 08             pTos alterEgo 
  008f:81 05              lag gCast 
  0091:4a 06             send 6 

  0093:31 0b              bnt code_00a0 
  0095:39 6f            pushi 6f // $6f handleEvent
  0097:7a               push2 
  0098:8f 01              lsp param1 
  009a:8d 00              lst temp0 
  009c:63 08             pToa alterEgo 
  009e:4a 08             send 8 


        code_00a0
  00a0:63 0a             pToa canInput 
  00a2:31 57              bnt code_00fb 
  00a4:39 4c            pushi 4c // $4c claimed
  00a6:76               push0 
  00a7:87 01              lap param1 
  00a9:4a 04             send 4 

  00ab:18                 not 
  00ac:31 4d              bnt code_00fb 
  00ae:39 22            pushi 22 // $22 type
  00b0:76               push0 
  00b1:87 01              lap param1 
  00b3:4a 04             send 4 

  00b5:36                push 
  00b6:35 04              ldi 4 
  00b8:1a                 eq? 
  00b9:31 40              bnt code_00fb 
  00bb:39 28            pushi 28 // $28 message
  00bd:76               push0 
  00be:87 01              lap param1 
  00c0:4a 04             send 4 

  00c2:36                push 
  00c3:63 0e             pToa echo 
  00c5:1a                 eq? 
  00c6:2f 13               bt code_00db 
  00c8:39 20            pushi 20 // $20 state
  00ca:39 28            pushi 28 // $28 message
  00cc:76               push0 
  00cd:87 01              lap param1 
  00cf:4a 04             send 4 

  00d1:24                 le? 
  00d2:31 05              bnt code_00d9 
  00d4:60               pprev 
  00d5:34 00ff            ldi ff 
  00d8:24                 le? 

        code_00d9
  00d9:31 20              bnt code_00fb 

        code_00db
  00db:38 00ea          pushi ea // $ea getInput
  00de:78               push1 
  00df:8f 01              lsp param1 
  00e1:54 06             self 6 

  00e3:31 16              bnt code_00fb 
  00e5:7a               push2 
  00e6:5b 02 00           lea 2 0 
  00e9:36                push 
  00ea:8f 01              lsp param1 
  00ec:43 24 04         callk Parse 4 

  00ef:31 0a              bnt code_00fb 
  00f1:39 22            pushi 22 // $22 type
  00f3:78               push1 
  00f4:38 0080          pushi 80 // $80 timeLeft
  00f7:87 01              lap param1 
  00f9:4a 06             send 6 


        code_00fb
  00fb:39 22            pushi 22 // $22 type
  00fd:76               push0 
  00fe:87 01              lap param1 
  0100:4a 04             send 4 

  0102:36                push 
  0103:34 0080            ldi 80 
  0106:1a                 eq? 
  0107:31 36              bnt code_013f 
  0109:80 00b0            lag gMMSaidsAnchor 
  010c:31 20              bnt code_012e 
  010e:39 7a            pushi 7a // $7a setScript
  0110:78               push1 
  0111:7a               push2 
  0112:38 019d          pushi 19d // $19d sel_413
  0115:76               push0 
  0116:43 02 04         callk ScriptID 4 

  0119:36                push 
  011a:80 00b0            lag gMMSaidsAnchor 
  011d:4a 06             send 6 

  011f:39 6f            pushi 6f // $6f handleEvent
  0121:78               push1 
  0122:8f 01              lsp param1 
  0124:39 76            pushi 76 // $76 script
  0126:76               push0 
  0127:80 00b0            lag gMMSaidsAnchor 
  012a:4a 04             send 4 

  012c:4a 06             send 6 


        code_012e
  012e:39 4c            pushi 4c // $4c claimed
  0130:76               push0 
  0131:87 01              lap param1 
  0133:4a 04             send 4 

  0135:18                 not 
  0136:31 07              bnt code_013f 
  0138:39 4b            pushi 4b // $4b said
  013a:78               push1 
  013b:8f 01              lsp param1 
  013d:54 06             self 6 


        code_013f
  013f:39 58            pushi 58 // $58 dispose
  0141:76               push0 
  0142:87 01              lap param1 
  0144:4a 04             send 4 

  0146:35 00              ldi 0 
  0148:a1 18              sag gLastEvent 
  014a:48                 ret 
    )

    (method (getInput) // method_014b
  014b:3f 02             link 2 // (var $2)
  014d:39 22            pushi 22 // $22 type
  014f:76               push0 
  0150:87 01              lap param1 
  0152:4a 04             send 4 

  0154:36                push 
  0155:35 04              ldi 4 
  0157:1c                 ne? 
  0158:31 04              bnt code_015e 
  015a:35 00              ldi 0 
  015c:a3 00              sal local0 

        code_015e
  015e:39 28            pushi 28 // $28 message
  0160:76               push0 
  0161:87 01              lap param1 
  0163:4a 04             send 4 

  0165:36                push 
  0166:63 0e             pToa echo 
  0168:1c                 ne? 
  0169:31 15              bnt code_0180 
  016b:39 04            pushi 4 // $4 x
  016d:5b 02 00           lea 2 0 
  0170:36                push 
  0171:38 03e4          pushi 3e4 // $3e4 sel_996
  0174:76               push0 
  0175:39 28            pushi 28 // $28 message
  0177:76               push0 
  0178:87 01              lap param1 
  017a:4a 04             send 4 

  017c:36                push 
  017d:43 4c 08         callk Format 8 


        code_0180
  0180:39 06            pushi 6 // $6 loop
  0182:5b 02 00           lea 2 0 
  0185:36                push 
  0186:8b 17              lsl local23 
  0188:67 12             pTos prompt 
  018a:39 43            pushi 43 // $43 at
  018c:67 16             pTos x 
  018e:67 18             pTos y 
  0190:46 00ff 0002 0c  calle ff procedure_0002 c // GetInput 

  0196:a5 01              sat temp1 
  0198:48                 ret 
    )

    (method (canControl) // method_0199
  0199:87 00              lap paramTotal 
  019b:31 08              bnt code_01a5 
  019d:87 01              lap param1 
  019f:65 0c             aTop controls 
  01a1:35 00              ldi 0 
  01a3:65 10             aTop prevDir 

        code_01a5
  01a5:63 0c             pToa controls 
  01a7:48                 ret 
    )

    (method (said) // method_01a8
  01a8:81 36              lag global54 
  01aa:31 12              bnt code_01be 
  01ac:39 04            pushi 4 // $4 x
  01ae:67 08             pTos alterEgo 
  01b0:89 35              lsg gSortedFeatures 
  01b2:89 05              lsg gCast 
  01b4:89 34              lsg gFeatures 
  01b6:46 03d8 0000 08  calle 3d8 procedure_0000 8 // SortedAdd 

  01bc:33 0b              jmp code_01c9 

        code_01be
  01be:39 61            pushi 61 // $61 add
  01c0:7a               push2 
  01c1:89 05              lsg gCast 
  01c3:89 34              lsg gFeatures 
  01c5:81 35              lag gSortedFeatures 
  01c7:4a 08             send 8 


        code_01c9
  01c9:51 14            class TheMenuBar 
  01cb:31 0a              bnt code_01d7 
  01cd:39 6b            pushi 6b // $6b addToFront
  01cf:78               push1 
  01d0:51 14            class TheMenuBar 
  01d2:36                push 
  01d3:81 35              lag gSortedFeatures 
  01d5:4a 06             send 6 


        code_01d7
  01d7:39 6c            pushi 6c // $6c addToEnd
  01d9:78               push1 
  01da:89 01              lsg gGame 
  01dc:39 6f            pushi 6f // $6f handleEvent
  01de:78               push1 
  01df:8f 01              lsp param1 
  01e1:39 68            pushi 68 // $68 release
  01e3:76               push0 
  01e4:81 35              lag gSortedFeatures 
  01e6:4a 10             send 10 

  01e8:39 22            pushi 22 // $22 type
  01ea:76               push0 
  01eb:87 01              lap param1 
  01ed:4a 04             send 4 

  01ef:36                push 
  01f0:34 0080            ldi 80 
  01f3:1a                 eq? 
  01f4:31 15              bnt code_020b 
  01f6:39 4c            pushi 4c // $4c claimed
  01f8:76               push0 
  01f9:87 01              lap param1 
  01fb:4a 04             send 4 

  01fd:18                 not 
  01fe:31 0b              bnt code_020b 
  0200:39 4a            pushi 4a // $4a pragmaFail
  0202:78               push1 
  0203:5b 02 00           lea 2 0 
  0206:36                push 
  0207:81 01              lag gGame 
  0209:4a 06             send 6 


        code_020b
  020b:48                 ret 
    )

)

// 03da
(class Ego of Act
    (properties
        y $0
        x $0
        z $0
        heading $0
        yStep $2
        view $0
        loop $0
        cel $0
        priority $0
        underBits $0
        signal $2000
        nsTop $0
        nsLeft $0
        nsBottom $0
        nsRight $0
        lsTop $0
        lsLeft $0
        lsBottom $0
        lsRight $0
        brTop $0
        brLeft $0
        brBottom $0
        brRight $0
        cycleSpeed $0
        script $0
        cycler $0
        timer $0
        illegalBits $8000
        xLast $0
        yLast $0
        xStep $3
        moveSpeed $0
        blocks $0
        baseSetter $0
        mover $0
        looper $0
        viewer $0
        avoider $0
        edgeHit $0
    )
    (method (init) // method_020c
  020c:39 57            pushi 57 // $57 init
  020e:76               push0 
  020f:57 28 04         super Act 4 

  0212:63 3a             pToa cycler 
  0214:18                 not 
  0215:31 08              bnt code_021f 
  0217:39 7e            pushi 7e // $7e setCycle
  0219:78               push1 
  021a:51 17            class Walk 
  021c:36                push 
  021d:54 06             self 6 


        code_021f
  021f:48                 ret 
    )

    (method (doit) // method_0220
  0220:39 3c            pushi 3c // $3c doit
  0222:76               push0 
  0223:57 28 04         super Act 4 

  0226:67 0a             pTos x 
  0228:35 00              ldi 0 
  022a:24                 le? 
  022b:31 04              bnt code_0231 
  022d:35 04              ldi 4 
  022f:33 2b              jmp code_025c 

        code_0231
  0231:67 08             pTos y 
  0233:38 00de          pushi de // $de horizon
  0236:76               push0 
  0237:81 02              lag gCurRoom 
  0239:4a 04             send 4 

  023b:24                 le? 
  023c:31 04              bnt code_0242 
  023e:35 01              ldi 1 
  0240:33 1a              jmp code_025c 

        code_0242
  0242:67 0a             pTos x 
  0244:34 013f            ldi 13f 
  0247:20                 ge? 
  0248:31 04              bnt code_024e 
  024a:35 02              ldi 2 
  024c:33 0e              jmp code_025c 

        code_024e
  024e:67 08             pTos y 
  0250:34 00bd            ldi bd 
  0253:20                 ge? 
  0254:31 04              bnt code_025a 
  0256:35 03              ldi 3 
  0258:33 02              jmp code_025c 

        code_025a
  025a:35 00              ldi 0 

        code_025c
  025c:65 54             aTop edgeHit 
  025e:48                 ret 
    )

    (method (get) // method_025f
  025f:3f 01             link 1 // (var $1)
  0261:35 00              ldi 0 
  0263:a5 00              sat temp0 

        code_0265
  0265:8d 00              lst temp0 
  0267:87 00              lap paramTotal 
  0269:22                 lt? 
  026a:31 16              bnt code_0282 
  026c:38 008f          pushi 8f // $8f moveTo
  026f:78               push1 
  0270:7c            pushSelf 
  0271:39 43            pushi 43 // $43 at
  0273:78               push1 
  0274:85 00              lat temp0 
  0276:9f 01             lspi param1 
  0278:81 09              lag gInventory 
  027a:4a 06             send 6 

  027c:4a 06             send 6 

  027e:c5 00              +at temp0 
  0280:33 e3              jmp code_0265 

        code_0282
  0282:48                 ret 
    )

    (method (put) // method_0283
  0283:38 00ee          pushi ee // $ee has
  0286:78               push1 
  0287:8f 01              lsp param1 
  0289:54 06             self 6 

  028b:31 1d              bnt code_02aa 
  028d:38 008f          pushi 8f // $8f moveTo
  0290:78               push1 
  0291:8f 00              lsp paramTotal 
  0293:35 01              ldi 1 
  0295:1a                 eq? 
  0296:31 04              bnt code_029c 
  0298:35 ff              ldi ff 
  029a:33 02              jmp code_029e 

        code_029c
  029c:87 02              lap param2 

        code_029e
  029e:36                push 
  029f:39 43            pushi 43 // $43 at
  02a1:78               push1 
  02a2:8f 01              lsp param1 
  02a4:81 09              lag gInventory 
  02a6:4a 06             send 6 

  02a8:4a 06             send 6 


        code_02aa
  02aa:48                 ret 
    )

    (method (has) // method_02ab
  02ab:3f 01             link 1 // (var $1)
  02ad:39 43            pushi 43 // $43 at
  02af:78               push1 
  02b0:8f 01              lsp param1 
  02b2:81 09              lag gInventory 
  02b4:4a 06             send 6 

  02b6:a5 00              sat temp0 
  02b8:31 09              bnt code_02c3 
  02ba:38 00ef          pushi ef // $ef ownedBy
  02bd:78               push1 
  02be:7c            pushSelf 
  02bf:85 00              lat temp0 
  02c1:4a 06             send 6 


        code_02c3
  02c3:48                 ret 
    )

    (method (handleEvent) // method_02c4
  02c4:3f 01             link 1 // (var $1)
  02c6:39 6f            pushi 6f // $6f handleEvent
  02c8:78               push1 
  02c9:8f 01              lsp param1 
  02cb:57 28 06         super Act 6 

  02ce:18                 not 
  02cf:30 0095            bnt code_0367 
  02d2:39 22            pushi 22 // $22 type
  02d4:76               push0 
  02d5:87 01              lap param1 
  02d7:4a 04             send 4 

  02d9:36                push 
  02da:3c                 dup 
  02db:35 01              ldi 1 
  02dd:1a                 eq? 
  02de:31 45              bnt code_0325 
  02e0:39 40            pushi 40 // $40 modifiers
  02e2:76               push0 
  02e3:87 01              lap param1 
  02e5:4a 04             send 4 

  02e7:36                push 
  02e8:35 03              ldi 3 
  02ea:12                 and 
  02eb:18                 not 
  02ec:31 35              bnt code_0323 
  02ee:38 00e3          pushi e3 // $e3 controls
  02f1:76               push0 
  02f2:51 2b            class User 
  02f4:4a 04             send 4 

  02f6:31 2b              bnt code_0323 
  02f8:38 00d3          pushi d3 // $d3 setMotion
  02fb:39 03            pushi 3 // $3 y
  02fd:51 1d            class MoveTo 
  02ff:36                push 
  0300:39 04            pushi 4 // $4 x
  0302:76               push0 
  0303:87 01              lap param1 
  0305:4a 04             send 4 

  0307:36                push 
  0308:39 03            pushi 3 // $3 y
  030a:76               push0 
  030b:87 01              lap param1 
  030d:4a 04             send 4 

  030f:36                push 
  0310:54 0a             self a 

  0312:38 00e5          pushi e5 // $e5 prevDir
  0315:78               push1 
  0316:76               push0 
  0317:51 2b            class User 
  0319:4a 06             send 6 

  031b:39 4c            pushi 4c // $4c claimed
  031d:78               push1 
  031e:78               push1 
  031f:87 01              lap param1 
  0321:4a 06             send 6 


        code_0323
  0323:33 41              jmp code_0366 

        code_0325
  0325:3c                 dup 
  0326:35 40              ldi 40 
  0328:1a                 eq? 
  0329:31 3b              bnt code_0366 
  032b:39 28            pushi 28 // $28 message
  032d:76               push0 
  032e:87 01              lap param1 
  0330:4a 04             send 4 

  0332:a5 00              sat temp0 
  0334:36                push 
  0335:38 00e5          pushi e5 // $e5 prevDir
  0338:76               push0 
  0339:51 2b            class User 
  033b:4a 04             send 4 

  033d:1a                 eq? 
  033e:31 0c              bnt code_034c 
  0340:78               push1 
  0341:67 4c             pTos mover 
  0343:43 06 02         callk IsObject 2 

  0346:31 04              bnt code_034c 
  0348:35 00              ldi 0 
  034a:a5 00              sat temp0 

        code_034c
  034c:38 00e5          pushi e5 // $e5 prevDir
  034f:78               push1 
  0350:8d 00              lst temp0 
  0352:51 2b            class User 
  0354:4a 06             send 6 

  0356:38 00dd          pushi dd // $dd setDirection
  0359:78               push1 
  035a:8d 00              lst temp0 
  035c:54 06             self 6 

  035e:39 4c            pushi 4c // $4c claimed
  0360:78               push1 
  0361:78               push1 
  0362:87 01              lap param1 
  0364:4a 06             send 6 


        code_0366
  0366:3a                toss 

        code_0367
  0367:39 4c            pushi 4c // $4c claimed
  0369:76               push0 
  036a:87 01              lap param1 
  036c:4a 04             send 4 

  036e:48                 ret 
  036f:00                bnot 
    )

)



