home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 109 / EnigmaAmiga109CD.iso / dalla rivista / amiga.free / sorgenti vari / wolf3dmacsource.sit / Wolf3DMacSource / EnMove.c < prev    next >
MacBinary  |  1994-10-04  |  10.6 KB  |  [TEXT/CWIE]

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: MacBinary (archive/macBinary).

ConfidenceProgramDetectionMatch TypeSupport
66% dexvert Compact Compressed (Unix) (archive/compact) ext Supported
10% dexvert MacBinary (archive/macBinary) fallback Supported
1% dexvert Text File (text/txt) fallback Supported
100% file MacBinary II, inited, Tue Oct 4 12:34:16 1994, modified Tue Oct 4 12:34:16 1994, creator 'CWIE', type ASCII, 10257 bytes "EnMove.c" , at 0x2891 382 bytes resource default (weak)
99% file data default
74% TrID Macintosh plain text (MacBinary) default
25% TrID MacBinary 2 default (weak)
100% lsar MacBinary default
100% xdgMime text/x-devicetree-source default (weak)


id metadata
keyvalue
macFileType[TEXT]
macFileCreator[CWIE]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 08 45 6e 4d 6f 76 65 | 2e 63 00 00 00 00 00 00 |..EnMove|.c......|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 43 57 49 | 45 01 00 00 00 00 00 00 |.TEXTCWI|E.......|
|00000050| 00 00 00 00 00 28 11 00 | 00 01 7e aa b7 34 88 aa |.....(..|..~..4..|
|00000060| b7 34 88 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |.4......|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 a0 ca 00 00 |........|........|
|00000080| 2f 2a 20 65 6e 6d 6f 76 | 65 2e 63 2a 2f 0d 23 69 |/* enmov|e.c*/.#i|
|00000090| 6e 63 6c 75 64 65 20 22 | 77 6f 6c 66 64 65 66 2e |nclude "|wolfdef.|
|000000a0| 68 22 0d 0d 64 69 72 74 | 79 70 65 20 6f 70 70 6f |h"..dirt|ype oppo|
|000000b0| 73 69 74 65 5b 39 5d 20 | 3d 0d 09 7b 77 65 73 74 |site[9] |=..{west|
|000000c0| 2c 73 6f 75 74 68 77 65 | 73 74 2c 73 6f 75 74 68 |,southwe|st,south|
|000000d0| 2c 73 6f 75 74 68 65 61 | 73 74 2c 65 61 73 74 2c |,southea|st,east,|
|000000e0| 6e 6f 72 74 68 65 61 73 | 74 2c 6e 6f 72 74 68 2c |northeas|t,north,|
|000000f0| 6e 6f 72 74 68 77 65 73 | 74 2c 6e 6f 64 69 72 7d |northwes|t,nodir}|
|00000100| 3b 0d 0d 64 69 72 74 79 | 70 65 20 64 69 61 67 6f |;..dirty|pe diago|
|00000110| 6e 61 6c 5b 39 5d 5b 39 | 5d 20 3d 20 7b 0d 2f 2a |nal[9][9|] = {./*|
|00000120| 20 65 61 73 74 20 2a 2f | 09 7b 6e 6f 64 69 72 2c | east */|.{nodir,|
|00000130| 6e 6f 64 69 72 2c 6e 6f | 72 74 68 65 61 73 74 2c |nodir,no|rtheast,|
|00000140| 6e 6f 64 69 72 2c 6e 6f | 64 69 72 2c 6e 6f 64 69 |nodir,no|dir,nodi|
|00000150| 72 2c 73 6f 75 74 68 65 | 61 73 74 2c 6e 6f 64 69 |r,southe|ast,nodi|
|00000160| 72 2c 6e 6f 64 69 72 7d | 2c 0d 09 09 09 7b 6e 6f |r,nodir}|,....{no|
|00000170| 64 69 72 2c 6e 6f 64 69 | 72 2c 6e 6f 64 69 72 2c |dir,nodi|r,nodir,|
|00000180| 6e 6f 64 69 72 2c 6e 6f | 64 69 72 2c 6e 6f 64 69 |nodir,no|dir,nodi|
|00000190| 72 2c 6e 6f 64 69 72 2c | 6e 6f 64 69 72 2c 6e 6f |r,nodir,|nodir,no|
|000001a0| 64 69 72 7d 2c 0d 2f 2a | 20 6e 6f 72 74 68 20 2a |dir},./*| north *|
|000001b0| 2f 20 7b 6e 6f 72 74 68 | 65 61 73 74 2c 6e 6f 64 |/ {north|east,nod|
|000001c0| 69 72 2c 6e 6f 64 69 72 | 2c 6e 6f 64 69 72 2c 6e |ir,nodir|,nodir,n|
|000001d0| 6f 72 74 68 77 65 73 74 | 2c 6e 6f 64 69 72 2c 6e |orthwest|,nodir,n|
|000001e0| 6f 64 69 72 2c 6e 6f 64 | 69 72 2c 6e 6f 64 69 72 |odir,nod|ir,nodir|
|000001f0| 7d 2c 0d 09 09 09 7b 6e | 6f 64 69 72 2c 6e 6f 64 |},....{n|odir,nod|
|00000200| 69 72 2c 6e 6f 64 69 72 | 2c 6e 6f 64 69 72 2c 6e |ir,nodir|,nodir,n|
|00000210| 6f 64 69 72 2c 6e 6f 64 | 69 72 2c 6e 6f 64 69 72 |odir,nod|ir,nodir|
|00000220| 2c 6e 6f 64 69 72 2c 6e | 6f 64 69 72 7d 2c 0d 2f |,nodir,n|odir},./|
|00000230| 2a 20 77 65 73 74 20 2a | 2f 09 7b 6e 6f 64 69 72 |* west *|/.{nodir|
|00000240| 2c 6e 6f 64 69 72 2c 6e | 6f 72 74 68 77 65 73 74 |,nodir,n|orthwest|
|00000250| 2c 6e 6f 64 69 72 2c 6e | 6f 64 69 72 2c 6e 6f 64 |,nodir,n|odir,nod|
|00000260| 69 72 2c 73 6f 75 74 68 | 77 65 73 74 2c 6e 6f 64 |ir,south|west,nod|
|00000270| 69 72 2c 6e 6f 64 69 72 | 7d 2c 0d 09 09 09 7b 6e |ir,nodir|},....{n|
|00000280| 6f 64 69 72 2c 6e 6f 64 | 69 72 2c 6e 6f 64 69 72 |odir,nod|ir,nodir|
|00000290| 2c 6e 6f 64 69 72 2c 6e | 6f 64 69 72 2c 6e 6f 64 |,nodir,n|odir,nod|
|000002a0| 69 72 2c 6e 6f 64 69 72 | 2c 6e 6f 64 69 72 2c 6e |ir,nodir|,nodir,n|
|000002b0| 6f 64 69 72 7d 2c 0d 2f | 2a 20 73 6f 75 74 68 20 |odir},./|* south |
|000002c0| 2a 2f 20 7b 73 6f 75 74 | 68 65 61 73 74 2c 6e 6f |*/ {sout|heast,no|
|000002d0| 64 69 72 2c 6e 6f 64 69 | 72 2c 6e 6f 64 69 72 2c |dir,nodi|r,nodir,|
|000002e0| 73 6f 75 74 68 77 65 73 | 74 2c 6e 6f 64 69 72 2c |southwes|t,nodir,|
|000002f0| 6e 6f 64 69 72 2c 6e 6f | 64 69 72 2c 6e 6f 64 69 |nodir,no|dir,nodi|
|00000300| 72 7d 2c 0d 09 09 09 7b | 6e 6f 64 69 72 2c 6e 6f |r},....{|nodir,no|
|00000310| 64 69 72 2c 6e 6f 64 69 | 72 2c 6e 6f 64 69 72 2c |dir,nodi|r,nodir,|
|00000320| 6e 6f 64 69 72 2c 6e 6f | 64 69 72 2c 6e 6f 64 69 |nodir,no|dir,nodi|
|00000330| 72 2c 6e 6f 64 69 72 2c | 6e 6f 64 69 72 7d 2c 0d |r,nodir,|nodir},.|
|00000340| 09 09 09 7b 6e 6f 64 69 | 72 2c 6e 6f 64 69 72 2c |...{nodi|r,nodir,|
|00000350| 6e 6f 64 69 72 2c 6e 6f | 64 69 72 2c 6e 6f 64 69 |nodir,no|dir,nodi|
|00000360| 72 2c 6e 6f 64 69 72 2c | 6e 6f 64 69 72 2c 6e 6f |r,nodir,|nodir,no|
|00000370| 64 69 72 2c 6e 6f 64 69 | 72 7d 0d 7d 3b 0d 0d 2f |dir,nodi|r}.};../|
|00000380| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000390| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000003a0| 2a 2a 0d 0d 09 43 68 61 | 6e 67 65 73 20 61 63 74 |**...Cha|nges act|
|000003b0| 6f 72 20 74 6f 20 61 20 | 6e 65 77 20 73 74 61 74 |or to a |new stat|
|000003c0| 65 2c 20 73 65 74 74 69 | 6e 67 20 74 69 63 63 6f |e, setti|ng ticco|
|000003d0| 75 6e 74 20 74 6f 20 74 | 68 65 20 6d 61 78 20 66 |unt to t|he max f|
|000003e0| 6f 72 20 74 68 61 74 20 | 73 74 61 74 65 0d 0d 2a |or that |state..*|
|000003f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000400| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000410| 2a 2f 0d 0d 76 6f 69 64 | 20 4e 65 77 53 74 61 74 |*/..void| NewStat|
|00000420| 65 28 61 63 74 6f 72 5f | 74 20 2a 41 63 74 6f 72 |e(actor_|t *Actor|
|00000430| 50 74 72 2c 73 74 61 74 | 65 69 6e 64 65 78 5f 74 |Ptr,stat|eindex_t|
|00000440| 20 73 74 61 74 65 29 0d | 7b 0d 09 73 74 61 74 65 | state).|{..state|
|00000450| 5f 74 20 2a 53 74 61 74 | 65 50 74 72 3b 0d 09 53 |_t *Stat|ePtr;..S|
|00000460| 74 61 74 65 50 74 72 20 | 3d 20 26 73 74 61 74 65 |tatePtr |= &state|
|00000470| 73 5b 73 74 61 74 65 5d | 3b 09 2f 2a 20 47 65 74 |s[state]|;./* Get|
|00000480| 20 74 68 65 20 73 74 61 | 74 65 20 72 65 63 6f 72 | the sta|te recor|
|00000490| 64 20 70 6f 69 6e 74 65 | 72 20 2a 2f 0d 09 41 63 |d pointe|r */..Ac|
|000004a0| 74 6f 72 50 74 72 2d 3e | 73 74 61 74 65 20 3d 20 |torPtr->|state = |
|000004b0| 73 74 61 74 65 3b 09 09 | 2f 2a 20 53 65 74 20 74 |state;..|/* Set t|
|000004c0| 68 65 20 61 63 74 6f 72 | 27 73 20 73 74 61 74 65 |he actor|'s state|
|000004d0| 20 2a 2f 0d 09 41 63 74 | 6f 72 50 74 72 2d 3e 74 | */..Act|orPtr->t|
|000004e0| 69 63 63 6f 75 6e 74 20 | 3d 20 53 74 61 74 65 50 |iccount |= StateP|
|000004f0| 74 72 2d 3e 74 69 63 74 | 69 6d 65 3b 09 2f 2a 20 |tr->tict|ime;./* |
|00000500| 53 65 74 20 74 68 65 20 | 69 6e 69 74 69 61 6c 20 |Set the |initial |
|00000510| 74 69 63 6b 20 76 61 6c | 75 65 20 2a 2f 0d 09 41 |tick val|ue */..A|
|00000520| 63 74 6f 72 50 74 72 2d | 3e 70 69 63 20 3d 20 53 |ctorPtr-|>pic = S|
|00000530| 74 61 74 65 50 74 72 2d | 3e 73 68 61 70 65 6e 75 |tatePtr-|>shapenu|
|00000540| 6d 3b 09 2f 2a 20 53 65 | 74 20 74 68 65 20 63 75 |m;./* Se|t the cu|
|00000550| 72 72 65 6e 74 20 73 68 | 61 70 65 20 6e 75 6d 62 |rrent sh|ape numb|
|00000560| 65 72 20 2a 2f 0d 7d 0d | 0d 2f 2a 2a 2a 2a 2a 2a |er */.}.|./******|
|00000570| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000580| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 0d 0d 09 41 |********|****...A|
|00000590| 74 74 65 6d 70 74 73 20 | 74 6f 20 6d 6f 76 65 20 |ttempts |to move |
|000005a0| 61 63 74 6f 72 20 69 6e | 20 69 74 73 20 63 75 72 |actor in| its cur|
|000005b0| 72 65 6e 74 20 28 41 63 | 74 6f 72 50 74 72 2d 3e |rent (Ac|torPtr->|
|000005c0| 64 69 72 29 20 64 69 72 | 65 63 74 69 6f 6e 2e 0d |dir) dir|ection..|
|000005d0| 0d 09 49 66 20 62 6c 6f | 63 6b 65 64 20 62 79 20 |..If blo|cked by |
|000005e0| 65 69 74 68 65 72 20 61 | 20 77 61 6c 6c 20 6f 72 |either a| wall or|
|000005f0| 20 61 6e 20 61 63 74 6f | 72 20 72 65 74 75 72 6e | an acto|r return|
|00000600| 73 20 46 41 4c 53 45 0d | 0d 09 49 66 20 6d 6f 76 |s FALSE.|..If mov|
|00000610| 65 20 69 73 20 65 69 74 | 68 65 72 20 63 6c 65 61 |e is eit|her clea|
|00000620| 72 20 6f 72 20 62 6c 6f | 63 6b 65 64 20 6f 6e 6c |r or blo|cked onl|
|00000630| 79 20 62 79 20 61 20 64 | 6f 6f 72 2c 20 72 65 74 |y by a d|oor, ret|
|00000640| 75 72 6e 73 20 54 52 55 | 45 20 61 6e 64 20 73 65 |urns TRU|E and se|
|00000650| 74 73 0d 0d 09 41 63 74 | 6f 72 50 74 72 2d 3e 74 |ts...Act|orPtr->t|
|00000660| 69 6c 65 78 20 3d 20 6e | 65 77 20 64 65 73 74 69 |ilex = n|ew desti|
|00000670| 6e 61 74 69 6f 6e 0d 09 | 41 63 74 6f 72 50 74 72 |nation..|ActorPtr|
|00000680| 2d 3e 74 69 6c 65 79 0d | 09 41 63 74 6f 72 50 74 |->tiley.|.ActorPt|
|00000690| 72 2d 3e 61 72 65 61 6e | 75 6d 62 65 72 20 3d 20 |r->arean|umber = |
|000006a0| 74 68 65 20 66 6c 6f 6f | 72 20 74 69 6c 65 20 6e |the floo|r tile n|
|000006b0| 75 6d 62 65 72 20 28 30 | 2d 28 4d 41 58 41 52 45 |umber (0|-(MAXARE|
|000006c0| 41 53 2d 31 29 29 20 6f | 66 20 64 65 73 74 69 6e |AS-1)) o|f destin|
|000006d0| 61 74 69 6f 6e 0d 09 41 | 63 74 6f 72 50 74 72 2d |ation..A|ctorPtr-|
|000006e0| 3e 64 69 73 74 61 6e 63 | 65 20 3d 20 54 49 4c 45 |>distanc|e = TILE|
|000006f0| 47 4c 4f 42 41 4c 2c 20 | 6f 72 20 64 6f 6f 72 6e |GLOBAL, |or doorn|
|00000700| 75 6d 62 65 72 20 69 66 | 20 61 20 64 6f 6f 72 20 |umber if| a door |
|00000710| 69 73 20 62 6c 6f 63 6b | 69 6e 67 20 74 68 65 20 |is block|ing the |
|00000720| 77 61 79 0d 0d 09 49 66 | 20 61 20 64 6f 6f 72 20 |way...If| a door |
|00000730| 69 73 20 69 6e 20 74 68 | 65 20 77 61 79 2c 20 61 |is in th|e way, a|
|00000740| 6e 20 4f 70 65 6e 44 6f | 6f 72 20 63 61 6c 6c 20 |n OpenDo|or call |
|00000750| 69 73 20 6d 61 64 65 20 | 74 6f 20 73 74 61 72 74 |is made |to start|
|00000760| 20 69 74 20 6f 70 65 6e | 69 6e 67 2e 0d 09 54 68 | it open|ing...Th|
|00000770| 65 20 61 63 74 6f 72 20 | 63 6f 64 65 20 73 68 6f |e actor |code sho|
|00000780| 75 6c 64 20 77 61 69 74 | 20 75 6e 74 69 6c 0d 20 |uld wait| until. |
|00000790| 09 64 6f 6f 72 6f 62 6a | 6c 69 73 74 5b 41 63 74 |.doorobj|list[Act|
|000007a0| 6f 72 50 74 72 2d 3e 64 | 69 73 74 61 6e 63 65 5d |orPtr->d|istance]|
|000007b0| 2e 61 63 74 69 6f 6e 20 | 3d 20 64 72 5f 6f 70 65 |.action |= dr_ope|
|000007c0| 6e 2c 20 6d 65 61 6e 69 | 6e 67 20 74 68 65 20 64 |n, meani|ng the d|
|000007d0| 6f 6f 72 20 68 61 73 20 | 62 65 65 6e 0d 09 66 75 |oor has |been..fu|
|000007e0| 6c 6c 79 20 6f 70 65 6e | 65 64 0d 0d 2a 2a 2a 2a |lly open|ed..****|
|000007f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000800| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2f 0d |********|******/.|
|00000810| 0d 2f 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |./******|********|
|00000820| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000830| 2a 2a 2a 2a 0d 0d 09 43 | 68 65 63 6b 20 69 66 20 |****...C|heck if |
|00000840| 49 20 63 61 6e 20 6d 6f | 76 65 20 69 6e 20 61 20 |I can mo|ve in a |
|00000850| 64 69 61 67 6f 6e 61 6c | 20 64 69 72 65 63 74 69 |diagonal| directi|
|00000860| 6f 6e 0d 09 0d 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |on...***|********|
|00000870| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000880| 2a 2a 2a 2a 2a 2a 2a 2f | 0d 0d 42 6f 6f 6c 65 61 |*******/|..Boolea|
|00000890| 6e 20 43 68 65 63 6b 44 | 69 61 67 28 57 6f 72 64 |n CheckD|iag(Word|
|000008a0| 20 78 2c 57 6f 72 64 20 | 79 29 0d 7b 0d 09 2f 2a | x,Word |y).{../*|
|000008b0| 20 61 6e 79 74 68 69 6e | 67 20 62 6c 6f 63 6b 69 | anythin|g blocki|
|000008c0| 6e 67 20 73 74 6f 70 73 | 20 64 69 61 67 6f 6e 61 |ng stops| diagona|
|000008d0| 6c 20 6d 6f 76 65 2a 2f | 0d 09 69 66 20 28 74 69 |l move*/|..if (ti|
|000008e0| 6c 65 6d 61 70 5b 79 5d | 5b 78 5d 26 28 54 49 5f |lemap[y]|[x]&(TI_|
|000008f0| 42 4c 4f 43 4b 4d 4f 56 | 45 7c 54 49 5f 41 43 54 |BLOCKMOV|E|TI_ACT|
|00000900| 4f 52 29 29 20 7b 0d 09 | 09 72 65 74 75 72 6e 20 |OR)) {..|.return |
|00000910| 46 41 4c 53 45 3b 09 09 | 2f 2a 20 49 74 27 73 20 |FALSE;..|/* It's |
|00000920| 62 6c 6f 63 6b 65 64 20 | 2a 2f 0d 09 7d 0d 09 72 |blocked |*/..}..r|
|00000930| 65 74 75 72 6e 20 54 52 | 55 45 3b 09 09 2f 2a 20 |eturn TR|UE;../* |
|00000940| 49 74 27 73 20 6f 70 65 | 6e 21 20 2a 2f 0d 7d 0d |It's ope|n! */.}.|
|00000950| 0d 2f 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |./******|********|
|00000960| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000970| 2a 2a 2a 2a 0d 0d 09 43 | 68 65 63 6b 20 69 66 20 |****...C|heck if |
|00000980| 49 20 63 61 6e 20 6d 6f | 76 65 20 69 6e 20 61 20 |I can mo|ve in a |
|00000990| 73 69 64 65 77 61 79 73 | 20 64 69 72 65 63 74 69 |sideways| directi|
|000009a0| 6f 6e 0d 09 61 6c 73 6f | 20 64 6f 20 74 68 65 20 |on..also| do the |
|000009b0| 63 6f 64 65 20 66 6f 72 | 20 61 6e 20 61 63 74 6f |code for| an acto|
|000009c0| 72 20 74 6f 20 6f 70 65 | 6e 20 61 20 64 6f 6f 72 |r to ope|n a door|
|000009d0| 0d 09 72 65 74 75 72 6e | 20 30 20 69 66 20 62 6c |..return| 0 if bl|
|000009e0| 6f 63 6b 65 64 2c 20 31 | 20 69 66 20 6f 70 65 6e |ocked, 1| if open|
|000009f0| 2c 20 32 20 69 66 20 49 | 20 6e 65 65 64 20 74 6f |, 2 if I| need to|
|00000a00| 20 6f 70 65 6e 20 61 20 | 64 6f 6f 72 0d 09 0d 2a | open a |door...*|
|00000a10| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000a20| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000a30| 2a 2f 0d 0d 57 6f 72 64 | 20 43 68 65 63 6b 53 69 |*/..Word| CheckSi|
|00000a40| 64 65 28 57 6f 72 64 20 | 78 2c 57 6f 72 64 20 79 |de(Word |x,Word y|
|00000a50| 2c 61 63 74 6f 72 5f 74 | 20 2a 41 63 74 6f 72 50 |,actor_t| *ActorP|
|00000a60| 74 72 29 0d 7b 0d 09 57 | 6f 72 64 20 74 65 6d 70 |tr).{..W|ord temp|
|00000a70| 3b 0d 0d 09 74 65 6d 70 | 3d 74 69 6c 65 6d 61 70 |;...temp|=tilemap|
|00000a80| 5b 79 5d 5b 78 5d 3b 09 | 09 2f 2a 20 47 65 74 20 |[y][x];.|./* Get |
|00000a90| 74 68 65 20 74 69 6c 65 | 20 2a 2f 0d 0d 09 69 66 |the tile| */...if|
|00000aa0| 20 28 74 65 6d 70 20 26 | 20 54 49 5f 44 4f 4f 52 | (temp &| TI_DOOR|
|00000ab0| 29 20 7b 09 2f 2a 20 44 | 6f 6f 72 3f 20 2a 2f 0d |) {./* D|oor? */.|
|00000ac0| 09 09 69 66 20 28 21 28 | 74 65 6d 70 26 54 49 5f |..if (!(|temp&TI_|
|00000ad0| 42 4c 4f 43 4b 4d 4f 56 | 45 29 29 20 7b 09 2f 2a |BLOCKMOV|E)) {./*|
|00000ae0| 20 4e 6f 74 20 62 6c 6f | 63 6b 65 64 3f 20 2a 2f | Not blo|cked? */|
|00000af0| 0d 09 09 09 72 65 74 75 | 72 6e 20 31 3b 09 2f 2a |....retu|rn 1;./*|
|00000b00| 20 64 6f 6f 72 20 69 73 | 20 6f 70 65 6e 2a 2f 0d | door is| open*/.|
|00000b10| 09 09 7d 0d 09 09 69 66 | 20 28 41 63 74 6f 72 50 |..}...if| (ActorP|
|00000b20| 74 72 2d 3e 63 6c 61 73 | 73 20 3d 3d 20 43 4c 5f |tr->clas|s == CL_|
|00000b30| 44 4f 47 29 09 7b 0d 09 | 09 09 72 65 74 75 72 6e |DOG).{..|..return|
|00000b40| 20 30 3b 09 2f 2a 20 64 | 6f 67 73 20 63 61 6e 27 | 0;./* d|ogs can'|
|00000b50| 74 20 6f 70 65 6e 20 64 | 6f 6f 72 73 20 2a 2f 0d |t open d|oors */.|
|00000b60| 09 09 7d 0d 09 09 72 65 | 74 75 72 6e 20 32 3b 09 |..}...re|turn 2;.|
|00000b70| 09 2f 2a 20 49 20 68 61 | 76 65 20 74 6f 20 6f 70 |./* I ha|ve to op|
|00000b80| 65 6e 20 74 68 65 20 64 | 6f 6f 72 20 2a 2f 0d 09 |en the d|oor */..|
|00000b90| 7d 0d 09 69 66 20 28 74 | 65 6d 70 26 28 54 49 5f |}..if (t|emp&(TI_|
|00000ba0| 42 4c 4f 43 4b 4d 4f 56 | 45 7c 54 49 5f 41 43 54 |BLOCKMOV|E|TI_ACT|
|00000bb0| 4f 52 29 29 20 7b 09 2f | 2a 20 4e 6f 72 6d 61 6c |OR)) {./|* Normal|
|00000bc0| 6c 79 20 62 6c 6f 63 6b | 65 64 3f 20 2a 2f 0d 09 |ly block|ed? */..|
|00000bd0| 09 72 65 74 75 72 6e 20 | 30 3b 09 09 2f 2a 20 43 |.return |0;../* C|
|00000be0| 61 6e 27 74 20 67 6f 20 | 74 68 69 73 20 77 61 79 |an't go |this way|
|00000bf0| 20 2a 2f 0d 09 7d 0d 09 | 72 65 74 75 72 6e 20 31 | */..}..|return 1|
|00000c00| 3b 09 09 2f 2a 20 49 20 | 63 61 6e 20 67 6f 21 20 |;../* I |can go! |
|00000c10| 2a 2f 0d 7d 0d 0d 2f 2a | 2a 2a 2a 2a 2a 2a 2a 2a |*/.}../*|********|
|00000c20| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000c30| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 0d 0d 09 54 72 79 20 |********|*...Try |
|00000c40| 74 6f 20 6d 6f 76 65 20 | 74 68 65 20 61 63 74 6f |to move |the acto|
|00000c50| 72 20 61 72 6f 75 6e 64 | 0d 09 09 0d 2a 2a 2a 2a |r around|....****|
|00000c60| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000c70| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2f 0d |********|******/.|
|00000c80| 0d 42 6f 6f 6c 65 61 6e | 20 54 72 79 57 61 6c 6b |.Boolean| TryWalk|
|00000c90| 20 28 61 63 74 6f 72 5f | 74 20 2a 41 63 74 6f 72 | (actor_|t *Actor|
|00000ca0| 50 74 72 29 0d 7b 0d 09 | 57 6f 72 64 20 78 2c 79 |Ptr).{..|Word x,y|
|00000cb0| 3b 0d 09 57 6f 72 64 20 | 54 65 6d 70 3b 0d 09 57 |;..Word |Temp;..W|
|00000cc0| 6f 72 64 20 2a 54 69 6c | 65 4d 61 70 50 74 72 3b |ord *Til|eMapPtr;|
|00000cd0| 0d 09 57 6f 72 64 20 74 | 69 6c 65 3b 0d 0d 09 78 |..Word t|ile;...x|
|00000ce0| 20 3d 20 41 63 74 6f 72 | 50 74 72 2d 3e 67 6f 61 | = Actor|Ptr->goa|
|00000cf0| 6c 78 3b 09 09 2f 2a 20 | 57 68 65 72 65 20 69 73 |lx;../* |Where is|
|00000d00| 20 6d 79 20 67 6f 61 6c | 20 78 2c 79 3f 20 2a 2f | my goal| x,y? */|
|00000d10| 0d 09 79 20 3d 20 41 63 | 74 6f 72 50 74 72 2d 3e |..y = Ac|torPtr->|
|00000d20| 67 6f 61 6c 79 3b 0d 0d | 09 73 77 69 74 63 68 20 |goaly;..|.switch |
|00000d30| 28 41 63 74 6f 72 50 74 | 72 2d 3e 64 69 72 29 20 |(ActorPt|r->dir) |
|00000d40| 7b 09 2f 2a 20 47 6f 20 | 69 6e 20 6d 79 20 64 69 |{./* Go |in my di|
|00000d50| 72 65 63 74 69 6f 6e 20 | 2a 2f 0d 09 63 61 73 65 |rection |*/..case|
|00000d60| 20 6e 6f 72 74 68 3a 09 | 09 09 09 2f 2a 20 47 6f | north:.|.../* Go|
|00000d70| 20 6e 2c 73 2c 65 2c 77 | 20 2a 2f 0d 09 09 2d 2d | n,s,e,w| */...--|
|00000d80| 79 3b 0d 09 09 67 6f 74 | 6f 20 44 6f 53 69 64 65 |y;...got|o DoSide|
|00000d90| 3b 0d 09 09 0d 09 63 61 | 73 65 20 65 61 73 74 3a |;.....ca|se east:|
|00000da0| 0d 09 09 2b 2b 78 3b 0d | 09 09 67 6f 74 6f 20 44 |...++x;.|..goto D|
|00000db0| 6f 53 69 64 65 3b 0d 09 | 09 09 09 0d 09 63 61 73 |oSide;..|.....cas|
|00000dc0| 65 20 73 6f 75 74 68 3a | 0d 09 09 2b 2b 79 3b 0d |e south:|...++y;.|
|00000dd0| 09 09 67 6f 74 6f 20 44 | 6f 53 69 64 65 3b 0d 09 |..goto D|oSide;..|
|00000de0| 09 09 09 0d 09 63 61 73 | 65 20 77 65 73 74 3a 0d |.....cas|e west:.|
|00000df0| 09 09 2d 2d 78 3b 0d 44 | 6f 53 69 64 65 3a 0d 09 |..--x;.D|oSide:..|
|00000e00| 09 54 65 6d 70 20 3d 20 | 43 68 65 63 6b 53 69 64 |.Temp = |CheckSid|
|00000e10| 65 28 78 2c 79 2c 41 63 | 74 6f 72 50 74 72 29 3b |e(x,y,Ac|torPtr);|
|00000e20| 09 2f 2a 20 53 65 65 20 | 69 66 20 49 20 63 61 6e |./* See |if I can|
|00000e30| 20 6d 6f 76 65 20 74 68 | 69 73 20 77 61 79 20 2a | move th|is way *|
|00000e40| 2f 0d 09 09 69 66 20 28 | 21 54 65 6d 70 29 20 7b |/...if (|!Temp) {|
|00000e50| 09 09 2f 2a 20 4e 6f 74 | 20 74 68 69 73 20 77 61 |../* Not| this wa|
|00000e60| 79 3f 20 2a 2f 0d 09 09 | 09 72 65 74 75 72 6e 20 |y? */...|.return |
|00000e70| 46 41 4c 53 45 3b 09 2f | 2a 20 45 78 69 74 20 2a |FALSE;./|* Exit *|
|00000e80| 2f 0d 09 09 7d 0d 09 09 | 69 66 20 28 54 65 6d 70 |/...}...|if (Temp|
|00000e90| 3d 3d 32 29 20 7b 09 09 | 2f 2a 20 44 6f 6f 72 3f |==2) {..|/* Door?|
|00000ea0| 20 2a 2f 0d 09 09 09 4f | 70 65 6e 44 6f 6f 72 28 | */....O|penDoor(|
|00000eb0| 26 64 6f 6f 72 73 5b 74 | 69 6c 65 6d 61 70 5b 79 |&doors[t|ilemap[y|
|00000ec0| 5d 5b 78 5d 26 54 49 5f | 4e 55 4d 4d 41 53 4b 5d |][x]&TI_|NUMMASK]|
|00000ed0| 29 3b 09 2f 2a 20 4f 70 | 65 6e 20 74 68 65 20 64 |);./* Op|en the d|
|00000ee0| 6f 6f 72 20 2a 2f 0d 09 | 09 09 41 63 74 6f 72 50 |oor */..|..ActorP|
|00000ef0| 74 72 2d 3e 66 6c 61 67 | 73 20 7c 3d 20 28 46 4c |tr->flag|s |= (FL|
|00000f00| 5f 57 41 49 54 44 4f 4f | 52 7c 46 4c 5f 4e 4f 54 |_WAITDOO|R|FL_NOT|
|00000f10| 4d 4f 56 49 4e 47 29 3b | 09 2f 2a 20 46 6f 72 63 |MOVING);|./* Forc|
|00000f20| 65 20 74 68 65 20 61 63 | 74 6f 72 20 74 6f 20 70 |e the ac|tor to p|
|00000f30| 61 75 73 65 20 2a 2f 0d | 09 09 09 72 65 74 75 72 |ause */.|...retur|
|00000f40| 6e 20 54 52 55 45 3b 09 | 2f 2a 20 49 27 6d 20 6f |n TRUE;.|/* I'm o|
|00000f50| 6b 21 20 2a 2f 0d 09 09 | 7d 0d 09 09 62 72 65 61 |k! */...|}...brea|
|00000f60| 6b 3b 09 09 2f 2a 20 43 | 6f 6e 74 69 6e 75 65 20 |k;../* C|ontinue |
|00000f70| 2a 2f 0d 09 09 0d 09 63 | 61 73 65 20 6e 6f 72 74 |*/.....c|ase nort|
|00000f80| 68 65 61 73 74 3a 0d 09 | 09 69 66 20 28 21 43 68 |heast:..|.if (!Ch|
|00000f90| 65 63 6b 44 69 61 67 28 | 78 2b 31 2c 79 29 29 20 |eckDiag(|x+1,y)) |
|00000fa0| 7b 0d 09 09 09 72 65 74 | 75 72 6e 20 46 41 4c 53 |{....ret|urn FALS|
|00000fb0| 45 3b 0d 09 09 7d 0d 09 | 09 79 2d 2d 3b 0d 09 09 |E;...}..|.y--;...|
|00000fc0| 67 6f 74 6f 20 46 69 78 | 45 61 73 74 3b 0d 0d 09 |goto Fix|East;...|
|00000fd0| 63 61 73 65 20 73 6f 75 | 74 68 65 61 73 74 3a 0d |case sou|theast:.|
|00000fe0| 09 09 69 66 20 28 21 43 | 68 65 63 6b 44 69 61 67 |..if (!C|heckDiag|
|00000ff0| 28 78 2b 31 2c 79 29 29 | 20 7b 0d 09 09 09 72 65 |(x+1,y))| {....re|
|00001000| 74 75 72 6e 20 46 41 4c | 53 45 3b 0d 09 09 7d 0d |turn FAL|SE;...}.|
|00001010| 09 09 79 2b 2b 3b 0d 46 | 69 78 45 61 73 74 3a 0d |..y++;.F|ixEast:.|
|00001020| 09 09 69 66 20 28 21 43 | 68 65 63 6b 44 69 61 67 |..if (!C|heckDiag|
|00001030| 28 78 2c 79 29 29 20 7b | 0d 09 09 09 72 65 74 75 |(x,y)) {|....retu|
|00001040| 72 6e 20 46 41 4c 53 45 | 3b 0d 09 09 7d 0d 09 09 |rn FALSE|;...}...|
|00001050| 78 2b 2b 3b 0d 09 09 69 | 66 20 28 21 43 68 65 63 |x++;...i|f (!Chec|
|00001060| 6b 44 69 61 67 28 78 2c | 79 29 29 20 7b 0d 09 09 |kDiag(x,|y)) {...|
|00001070| 09 72 65 74 75 72 6e 20 | 46 41 4c 53 45 3b 0d 09 |.return |FALSE;..|
|00001080| 09 7d 0d 09 09 62 72 65 | 61 6b 3b 0d 0d 09 63 61 |.}...bre|ak;...ca|
|00001090| 73 65 20 73 6f 75 74 68 | 77 65 73 74 3a 0d 09 09 |se south|west:...|
|000010a0| 69 66 20 28 21 43 68 65 | 63 6b 44 69 61 67 28 78 |if (!Che|ckDiag(x|
|000010b0| 2d 31 2c 79 29 29 20 7b | 0d 09 09 09 72 65 74 75 |-1,y)) {|....retu|
|000010c0| 72 6e 20 46 41 4c 53 45 | 3b 0d 09 09 7d 0d 09 09 |rn FALSE|;...}...|
|000010d0| 79 2b 2b 3b 0d 09 09 67 | 6f 74 6f 20 46 69 78 57 |y++;...g|oto FixW|
|000010e0| 65 73 74 3b 0d 0d 09 63 | 61 73 65 20 6e 6f 72 74 |est;...c|ase nort|
|000010f0| 68 77 65 73 74 3a 0d 09 | 09 69 66 20 28 21 43 68 |hwest:..|.if (!Ch|
|00001100| 65 63 6b 44 69 61 67 28 | 78 2d 31 2c 79 29 29 20 |eckDiag(|x-1,y)) |
|00001110| 7b 0d 09 09 09 72 65 74 | 75 72 6e 20 46 41 4c 53 |{....ret|urn FALS|
|00001120| 45 3b 0d 09 09 7d 0d 09 | 09 79 2d 2d 3b 0d 46 69 |E;...}..|.y--;.Fi|
|00001130| 78 57 65 73 74 3a 0d 09 | 09 69 66 20 28 21 43 68 |xWest:..|.if (!Ch|
|00001140| 65 63 6b 44 69 61 67 28 | 78 2c 79 29 29 20 7b 0d |eckDiag(|x,y)) {.|
|00001150| 09 09 09 72 65 74 75 72 | 6e 20 46 41 4c 53 45 3b |...retur|n FALSE;|
|00001160| 0d 09 09 7d 0d 09 09 78 | 2d 2d 3b 0d 09 09 69 66 |...}...x|--;...if|
|00001170| 20 28 21 43 68 65 63 6b | 44 69 61 67 28 78 2c 79 | (!Check|Diag(x,y|
|00001180| 29 29 20 7b 0d 09 09 09 | 72 65 74 75 72 6e 20 46 |)) {....|return F|
|00001190| 41 4c 53 45 3b 0d 09 09 | 7d 0d 09 7d 0d 0d 2f 2a |ALSE;...|}..}../*|
|000011a0| 20 69 6e 76 61 6c 69 64 | 61 74 65 20 74 68 65 20 | invalid|ate the |
|000011b0| 6d 6f 76 65 20 69 66 20 | 6d 6f 76 69 6e 67 20 6f |move if |moving o|
|000011c0| 6e 74 6f 20 74 68 65 20 | 70 6c 61 79 65 72 20 2a |nto the |player *|
|000011d0| 2f 0d 0d 09 69 66 20 28 | 61 72 65 61 62 79 70 6c |/...if (|areabypl|
|000011e0| 61 79 65 72 5b 4d 61 70 | 50 74 72 2d 3e 61 72 65 |ayer[Map|Ptr->are|
|000011f0| 61 73 6f 75 6e 64 6e 75 | 6d 5b 41 63 74 6f 72 50 |asoundnu|m[ActorP|
|00001200| 74 72 2d 3e 61 72 65 61 | 6e 75 6d 62 65 72 5d 5d |tr->area|number]]|
|00001210| 29 20 7b 0d 09 09 69 66 | 20 28 77 5f 61 62 73 28 |) {...if| (w_abs(|
|00001220| 28 28 78 3c 3c 46 52 41 | 43 42 49 54 53 29 7c 30 |((x<<FRA|CBITS)|0|
|00001230| 78 38 30 29 20 2d 20 61 | 63 74 6f 72 73 5b 30 5d |x80) - a|ctors[0]|
|00001240| 2e 78 29 20 3c 20 4d 49 | 4e 41 43 54 4f 52 44 49 |.x) < MI|NACTORDI|
|00001250| 53 54 0d 09 09 26 26 20 | 77 5f 61 62 73 28 28 28 |ST...&& |w_abs(((|
|00001260| 79 3c 3c 46 52 41 43 42 | 49 54 53 29 7c 30 78 38 |y<<FRACB|ITS)|0x8|
|00001270| 30 29 20 2d 20 61 63 74 | 6f 72 73 5b 30 5d 2e 79 |0) - act|ors[0].y|
|00001280| 29 20 3c 20 4d 49 4e 41 | 43 54 4f 52 44 49 53 54 |) < MINA|CTORDIST|
|00001290| 29 20 7b 0d 09 09 09 72 | 65 74 75 72 6e 20 46 41 |) {....r|eturn FA|
|000012a0| 4c 53 45 3b 0d 09 09 7d | 0d 09 7d 0d 0d 2f 2a 20 |LSE;...}|..}../* |
|000012b0| 72 65 6d 6f 76 65 20 6f | 6c 64 20 61 63 74 6f 72 |remove o|ld actor|
|000012c0| 20 6d 61 72 6b 65 72 2a | 2f 0d 0d 09 74 69 6c 65 | marker*|/...tile|
|000012d0| 6d 61 70 5b 41 63 74 6f | 72 50 74 72 2d 3e 67 6f |map[Acto|rPtr->go|
|000012e0| 61 6c 79 5d 5b 41 63 74 | 6f 72 50 74 72 2d 3e 67 |aly][Act|orPtr->g|
|000012f0| 6f 61 6c 78 5d 20 26 3d | 20 7e 54 49 5f 41 43 54 |oalx] &=| ~TI_ACT|
|00001300| 4f 52 3b 0d 09 0d 2f 2a | 20 70 6c 61 63 65 20 6e |OR;.../*| place n|
|00001310| 65 77 20 61 63 74 6f 72 | 20 6d 61 72 6b 65 72 2a |ew actor| marker*|
|00001320| 2f 0d 0d 09 54 69 6c 65 | 4d 61 70 50 74 72 20 3d |/...Tile|MapPtr =|
|00001330| 20 26 74 69 6c 65 6d 61 | 70 5b 79 5d 5b 78 5d 3b | &tilema|p[y][x];|
|00001340| 09 2f 2a 20 47 65 74 20 | 70 6f 69 6e 74 65 72 20 |./* Get |pointer |
|00001350| 74 6f 20 63 65 6c 6c 20 | 2a 2f 0d 09 74 69 6c 65 |to cell |*/..tile|
|00001360| 20 3d 20 54 69 6c 65 4d | 61 70 50 74 72 5b 30 5d | = TileM|apPtr[0]|
|00001370| 3b 09 09 09 2f 2a 20 47 | 65 74 20 74 68 65 20 63 |;.../* G|et the c|
|00001380| 65 6c 6c 20 2a 2f 0d 09 | 54 69 6c 65 4d 61 70 50 |ell */..|TileMapP|
|00001390| 74 72 5b 30 5d 20 3d 20 | 74 69 6c 65 20 7c 20 54 |tr[0] = |tile | T|
|000013a0| 49 5f 41 43 54 4f 52 3b | 09 2f 2a 20 4d 61 72 6b |I_ACTOR;|./* Mark|
|000013b0| 20 77 69 74 68 20 61 6e | 20 61 63 74 6f 72 20 2a | with an| actor *|
|000013c0| 2f 0d 09 54 65 6d 70 20 | 3d 20 41 63 74 6f 72 50 |/..Temp |= ActorP|
|000013d0| 74 72 20 2d 20 26 61 63 | 74 6f 72 73 5b 30 5d 3b |tr - &ac|tors[0];|
|000013e0| 0d 09 4d 61 70 50 74 72 | 2d 3e 74 69 6c 65 6d 61 |..MapPtr|->tilema|
|000013f0| 70 5b 79 5d 5b 78 5d 20 | 3d 20 54 65 6d 70 3b 09 |p[y][x] |= Temp;.|
|00001400| 2f 2a 20 53 61 76 65 20 | 74 68 65 20 63 75 72 72 |/* Save |the curr|
|00001410| 65 6e 74 20 61 63 74 6f | 72 20 23 20 2a 2f 0d 09 |ent acto|r # */..|
|00001420| 41 63 74 6f 72 50 74 72 | 2d 3e 67 6f 61 6c 78 20 |ActorPtr|->goalx |
|00001430| 3d 20 78 3b 0d 09 41 63 | 74 6f 72 50 74 72 2d 3e |= x;..Ac|torPtr->|
|00001440| 67 6f 61 6c 79 20 3d 20 | 79 3b 0d 0d 09 69 66 20 |goaly = |y;...if |
|00001450| 28 21 28 74 69 6c 65 26 | 54 49 5f 44 4f 4f 52 29 |(!(tile&|TI_DOOR)|
|00001460| 20 29 20 7b 09 09 2f 2a | 20 64 6f 6f 72 77 61 79 | ) {../*| doorway|
|00001470| 73 20 61 72 65 20 6e 6f | 74 20 61 72 65 61 73 2a |s are no|t areas*|
|00001480| 2f 0d 09 09 41 63 74 6f | 72 50 74 72 2d 3e 61 72 |/...Acto|rPtr->ar|
|00001490| 65 61 6e 75 6d 62 65 72 | 20 3d 20 74 69 6c 65 26 |eanumber| = tile&|
|000014a0| 54 49 5f 4e 55 4d 4d 41 | 53 4b 3b 0d 09 7d 0d 09 |TI_NUMMA|SK;..}..|
|000014b0| 41 63 74 6f 72 50 74 72 | 2d 3e 64 69 73 74 61 6e |ActorPtr|->distan|
|000014c0| 63 65 20 3d 20 54 49 4c | 45 47 4c 4f 42 41 4c 3b |ce = TIL|EGLOBAL;|
|000014d0| 09 2f 2a 20 4d 6f 76 65 | 20 61 63 72 6f 73 73 20 |./* Move| across |
|000014e0| 31 20 77 68 6f 6c 65 20 | 74 69 6c 65 20 2a 2f 0d |1 whole |tile */.|
|000014f0| 09 41 63 74 6f 72 50 74 | 72 2d 3e 66 6c 61 67 73 |.ActorPt|r->flags|
|00001500| 20 26 3d 20 7e 28 46 4c | 5f 57 41 49 54 44 4f 4f | &= ~(FL|_WAITDOO|
|00001510| 52 7c 46 4c 5f 4e 4f 54 | 4d 4f 56 49 4e 47 29 3b |R|FL_NOT|MOVING);|
|00001520| 09 2f 2a 20 49 27 6d 20 | 6e 6f 74 20 77 61 69 74 |./* I'm |not wait|
|00001530| 69 6e 67 20 61 6e 64 20 | 49 27 6d 20 6d 6f 76 69 |ing and |I'm movi|
|00001540| 6e 67 20 2a 2f 0d 0d 09 | 72 65 74 75 72 6e 20 54 |ng */...|return T|
|00001550| 52 55 45 3b 09 09 2f 2a | 20 49 74 27 73 20 6f 6b |RUE;../*| It's ok|
|00001560| 21 20 2a 2f 0d 7d 0d 0d | 2f 2a 2a 2a 2a 2a 2a 2a |! */.}..|/*******|
|00001570| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001580| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 0d 09 0d 09 41 |********|***....A|
|00001590| 74 74 65 6d 70 74 73 20 | 74 6f 20 63 68 6f 6f 73 |ttempts |to choos|
|000015a0| 65 20 61 6e 64 20 69 6e | 69 74 69 61 74 65 20 61 |e and in|itiate a|
|000015b0| 20 6d 6f 76 65 6d 65 6e | 74 20 66 6f 72 20 61 63 | movemen|t for ac|
|000015c0| 74 6f 72 20 74 68 61 74 | 20 73 65 6e 64 73 20 69 |tor that| sends i|
|000015d0| 74 20 74 6f 77 61 72 64 | 73 0d 09 74 68 65 20 70 |t toward|s..the p|
|000015e0| 6c 61 79 65 72 20 77 68 | 69 6c 65 20 64 6f 64 67 |layer wh|ile dodg|
|000015f0| 69 6e 67 0d 09 09 0d 2a | 2a 2a 2a 2a 2a 2a 2a 2a |ing....*|********|
|00001600| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001610| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2f 0d 0d 76 6f 69 64 |********|*/..void|
|00001620| 20 53 65 6c 65 63 74 44 | 6f 64 67 65 44 69 72 28 | SelectD|odgeDir(|
|00001630| 61 63 74 6f 72 5f 74 20 | 2a 41 63 74 6f 72 50 74 |actor_t |*ActorPt|
|00001640| 72 29 0d 7b 0d 09 69 6e | 74 09 64 65 6c 74 61 78 |r).{..in|t.deltax|
|00001650| 2c 64 65 6c 74 61 79 3b | 0d 09 57 6f 72 64 20 69 |,deltay;|..Word i|
|00001660| 3b 0d 09 57 6f 72 64 20 | 61 62 73 64 78 2c 61 62 |;..Word |absdx,ab|
|00001670| 73 64 79 3b 0d 09 64 69 | 72 74 79 70 65 20 64 69 |sdy;..di|rtype di|
|00001680| 72 74 72 79 5b 35 5d 3b | 0d 09 64 69 72 74 79 70 |rtry[5];|..dirtyp|
|00001690| 65 20 74 75 72 6e 61 72 | 6f 75 6e 64 2c 74 64 69 |e turnar|ound,tdi|
|000016a0| 72 3b 0d 0d 09 74 75 72 | 6e 61 72 6f 75 6e 64 3d |r;...tur|naround=|
|000016b0| 6f 70 70 6f 73 69 74 65 | 5b 41 63 74 6f 72 50 74 |opposite|[ActorPt|
|000016c0| 72 2d 3e 64 69 72 5d 3b | 0d 0d 09 64 65 6c 74 61 |r->dir];|...delta|
|000016d0| 78 20 3d 20 61 63 74 6f | 72 73 5b 30 5d 2e 78 20 |x = acto|rs[0].x |
|000016e0| 2d 20 41 63 74 6f 72 50 | 74 72 2d 3e 78 3b 0d 09 |- ActorP|tr->x;..|
|000016f0| 64 65 6c 74 61 79 20 3d | 20 61 63 74 6f 72 73 5b |deltay =| actors[|
|00001700| 30 5d 2e 79 20 2d 20 41 | 63 74 6f 72 50 74 72 2d |0].y - A|ctorPtr-|
|00001710| 3e 79 3b 0d 0d 2f 2a 20 | 61 72 61 6e 67 65 20 35 |>y;../* |arange 5|
|00001720| 20 64 69 72 65 63 74 69 | 6f 6e 20 63 68 6f 69 63 | directi|on choic|
|00001730| 65 73 20 69 6e 20 6f 72 | 64 65 72 20 6f 66 20 70 |es in or|der of p|
|00001740| 72 65 66 65 72 65 6e 63 | 65 2a 2f 0d 2f 2a 20 74 |referenc|e*/./* t|
|00001750| 68 65 20 66 6f 75 72 20 | 63 61 72 64 69 6e 61 6c |he four |cardinal|
|00001760| 20 64 69 72 65 63 74 69 | 6f 6e 73 20 70 6c 75 73 | directi|ons plus|
|00001770| 20 74 68 65 20 64 69 61 | 67 6f 6e 61 6c 20 73 74 | the dia|gonal st|
|00001780| 72 61 69 67 68 74 20 74 | 6f 77 61 72 64 73 2a 2f |raight t|owards*/|
|00001790| 0d 2f 2a 20 74 68 65 20 | 70 6c 61 79 65 72 2a 2f |./* the |player*/|
|000017a0| 0d 0d 09 69 66 20 28 64 | 65 6c 74 61 78 3e 30 29 |...if (d|eltax>0)|
|000017b0| 20 7b 0d 09 09 64 69 72 | 74 72 79 5b 31 5d 3d 20 | {...dir|try[1]= |
|000017c0| 65 61 73 74 3b 0d 09 09 | 64 69 72 74 72 79 5b 33 |east;...|dirtry[3|
|000017d0| 5d 3d 20 77 65 73 74 3b | 0d 09 7d 20 65 6c 73 65 |]= west;|..} else|
|000017e0| 20 7b 0d 09 09 64 69 72 | 74 72 79 5b 31 5d 3d 20 | {...dir|try[1]= |
|000017f0| 77 65 73 74 3b 0d 09 09 | 64 69 72 74 72 79 5b 33 |west;...|dirtry[3|
|00001800| 5d 3d 20 65 61 73 74 3b | 0d 09 7d 0d 0d 09 69 66 |]= east;|..}...if|
|00001810| 20 28 64 65 6c 74 61 79 | 3e 30 29 20 7b 0d 09 09 | (deltay|>0) {...|
|00001820| 64 69 72 74 72 79 5b 32 | 5d 3d 20 73 6f 75 74 68 |dirtry[2|]= south|
|00001830| 3b 0d 09 09 64 69 72 74 | 72 79 5b 34 5d 3d 20 6e |;...dirt|ry[4]= n|
|00001840| 6f 72 74 68 3b 0d 09 7d | 20 65 6c 73 65 20 7b 0d |orth;..}| else {.|
|00001850| 09 09 64 69 72 74 72 79 | 5b 32 5d 3d 20 6e 6f 72 |..dirtry|[2]= nor|
|00001860| 74 68 3b 0d 09 09 64 69 | 72 74 72 79 5b 34 5d 3d |th;...di|rtry[4]=|
|00001870| 20 73 6f 75 74 68 3b 0d | 09 7d 0d 0d 2f 2a 20 72 | south;.|.}../* r|
|00001880| 61 6e 64 6f 6d 69 7a 65 | 20 61 20 62 69 74 20 66 |andomize| a bit f|
|00001890| 6f 72 20 64 6f 64 67 69 | 6e 67 2a 2f 0d 0d 09 61 |or dodgi|ng*/...a|
|000018a0| 62 73 64 78 20 3d 20 77 | 5f 61 62 73 28 64 65 6c |bsdx = w|_abs(del|
|000018b0| 74 61 78 29 3b 0d 09 61 | 62 73 64 79 20 3d 20 77 |tax);..a|bsdy = w|
|000018c0| 5f 61 62 73 28 64 65 6c | 74 61 79 29 3b 0d 0d 09 |_abs(del|tay);...|
|000018d0| 69 66 20 28 61 62 73 64 | 78 20 3e 20 61 62 73 64 |if (absd|x > absd|
|000018e0| 79 29 20 7b 0d 09 09 74 | 64 69 72 20 3d 20 64 69 |y) {...t|dir = di|
|000018f0| 72 74 72 79 5b 31 5d 3b | 0d 09 09 64 69 72 74 72 |rtry[1];|...dirtr|
|00001900| 79 5b 31 5d 20 3d 20 64 | 69 72 74 72 79 5b 32 5d |y[1] = d|irtry[2]|
|00001910| 3b 0d 09 09 64 69 72 74 | 72 79 5b 32 5d 20 3d 20 |;...dirt|ry[2] = |
|00001920| 74 64 69 72 3b 0d 09 09 | 74 64 69 72 20 3d 20 64 |tdir;...|tdir = d|
|00001930| 69 72 74 72 79 5b 33 5d | 3b 0d 09 09 64 69 72 74 |irtry[3]|;...dirt|
|00001940| 72 79 5b 33 5d 20 3d 20 | 64 69 72 74 72 79 5b 34 |ry[3] = |dirtry[4|
|00001950| 5d 3b 0d 09 09 64 69 72 | 74 72 79 5b 34 5d 20 3d |];...dir|try[4] =|
|00001960| 20 74 64 69 72 3b 0d 09 | 7d 0d 0d 09 69 66 20 28 | tdir;..|}...if (|
|00001970| 77 5f 72 6e 64 28 29 20 | 26 20 31 29 20 7b 0d 09 |w_rnd() |& 1) {..|
|00001980| 09 74 64 69 72 20 3d 20 | 64 69 72 74 72 79 5b 31 |.tdir = |dirtry[1|
|00001990| 5d 3b 0d 09 09 64 69 72 | 74 72 79 5b 31 5d 20 3d |];...dir|try[1] =|
|000019a0| 20 64 69 72 74 72 79 5b | 32 5d 3b 0d 09 09 64 69 | dirtry[|2];...di|
|000019b0| 72 74 72 79 5b 32 5d 20 | 3d 20 74 64 69 72 3b 0d |rtry[2] |= tdir;.|
|000019c0| 09 09 74 64 69 72 20 3d | 20 64 69 72 74 72 79 5b |..tdir =| dirtry[|
|000019d0| 33 5d 3b 0d 09 09 64 69 | 72 74 72 79 5b 33 5d 20 |3];...di|rtry[3] |
|000019e0| 3d 20 64 69 72 74 72 79 | 5b 34 5d 3b 0d 09 09 64 |= dirtry|[4];...d|
|000019f0| 69 72 74 72 79 5b 34 5d | 20 3d 20 74 64 69 72 3b |irtry[4]| = tdir;|
|00001a00| 0d 09 7d 0d 0d 09 64 69 | 72 74 72 79 5b 30 5d 20 |..}...di|rtry[0] |
|00001a10| 3d 20 64 69 61 67 6f 6e | 61 6c 5b 64 69 72 74 72 |= diagon|al[dirtr|
|00001a20| 79 5b 31 5d 5d 5b 64 69 | 72 74 72 79 5b 32 5d 5d |y[1]][di|rtry[2]]|
|00001a30| 3b 0d 0d 2f 2a 20 74 72 | 79 20 74 68 65 20 64 69 |;../* tr|y the di|
|00001a40| 72 65 63 74 69 6f 6e 73 | 20 75 6e 74 69 6c 20 6f |rections| until o|
|00001a50| 6e 65 20 77 6f 72 6b 73 | 2a 2f 0d 0d 09 69 20 3d |ne works|*/...i =|
|00001a60| 20 30 3b 0d 09 64 6f 20 | 7b 0d 09 09 74 64 69 72 | 0;..do |{...tdir|
|00001a70| 20 3d 20 64 69 72 74 72 | 79 5b 69 5d 3b 0d 09 09 | = dirtr|y[i];...|
|00001a80| 69 66 20 28 74 64 69 72 | 20 21 3d 20 6e 6f 64 69 |if (tdir| != nodi|
|00001a90| 72 20 26 26 20 74 64 69 | 72 20 21 3d 20 74 75 72 |r && tdi|r != tur|
|00001aa0| 6e 61 72 6f 75 6e 64 29 | 20 7b 0d 09 09 09 41 63 |naround)| {....Ac|
|00001ab0| 74 6f 72 50 74 72 2d 3e | 64 69 72 20 3d 20 74 64 |torPtr->|dir = td|
|00001ac0| 69 72 3b 0d 09 09 09 69 | 66 20 28 54 72 79 57 61 |ir;....i|f (TryWa|
|00001ad0| 6c 6b 28 41 63 74 6f 72 | 50 74 72 29 29 20 7b 09 |lk(Actor|Ptr)) {.|
|00001ae0| 2f 2a 20 43 61 6e 20 49 | 20 67 6f 20 74 68 69 73 |/* Can I| go this|
|00001af0| 20 77 61 79 3f 20 2a 2f | 0d 09 09 09 09 72 65 74 | way? */|.....ret|
|00001b00| 75 72 6e 3b 09 09 2f 2a | 20 59 65 70 21 20 2a 2f |urn;../*| Yep! */|
|00001b10| 0d 09 09 09 7d 0d 09 09 | 7d 0d 09 7d 20 77 68 69 |....}...|}..} whi|
|00001b20| 6c 65 28 2b 2b 69 3c 35 | 29 3b 09 09 2f 2a 20 41 |le(++i<5|);../* A|
|00001b30| 6c 6c 20 74 72 69 65 73 | 20 64 6f 6e 65 3f 20 2a |ll tries| done? *|
|00001b40| 2f 0d 0d 2f 2a 20 74 75 | 72 6e 20 61 72 6f 75 6e |/../* tu|rn aroun|
|00001b50| 64 20 6f 6e 6c 79 20 61 | 73 20 61 20 6c 61 73 74 |d only a|s a last|
|00001b60| 20 72 65 73 6f 72 74 2a | 2f 0d 0d 09 69 66 20 28 | resort*|/...if (|
|00001b70| 74 75 72 6e 61 72 6f 75 | 6e 64 20 21 3d 20 6e 6f |turnarou|nd != no|
|00001b80| 64 69 72 29 20 7b 0d 09 | 09 41 63 74 6f 72 50 74 |dir) {..|.ActorPt|
|00001b90| 72 2d 3e 64 69 72 20 3d | 20 74 75 72 6e 61 72 6f |r->dir =| turnaro|
|00001ba0| 75 6e 64 3b 0d 09 09 69 | 66 20 28 54 72 79 57 61 |und;...i|f (TryWa|
|00001bb0| 6c 6b 28 41 63 74 6f 72 | 50 74 72 29 29 20 7b 0d |lk(Actor|Ptr)) {.|
|00001bc0| 09 09 09 72 65 74 75 72 | 6e 3b 0d 09 09 7d 0d 09 |...retur|n;...}..|
|00001bd0| 7d 0d 09 41 63 74 6f 72 | 50 74 72 2d 3e 64 69 72 |}..Actor|Ptr->dir|
|00001be0| 20 3d 20 6e 6f 64 69 72 | 3b 09 09 2f 2a 20 53 74 | = nodir|;../* St|
|00001bf0| 6f 70 20 74 68 65 20 6d | 6f 74 69 6f 6e 20 2a 2f |op the m|otion */|
|00001c00| 0d 09 41 63 74 6f 72 50 | 74 72 2d 3e 66 6c 61 67 |..ActorP|tr->flag|
|00001c10| 73 20 7c 3d 20 46 4c 5f | 4e 4f 54 4d 4f 56 49 4e |s |= FL_|NOTMOVIN|
|00001c20| 47 3b 09 2f 2a 20 4b 69 | 6c 6c 20 74 68 65 20 6c |G;./* Ki|ll the l|
|00001c30| 6f 67 69 63 21 20 2a 2f | 0d 7d 0d 0d 2f 2a 2a 2a |ogic! */|.}../***|
|00001c40| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001c50| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 0d |********|*******.|
|00001c60| 09 0d 09 41 74 74 65 6d | 70 74 73 20 74 6f 20 63 |...Attem|pts to c|
|00001c70| 68 6f 6f 73 65 20 61 6e | 64 20 69 6e 69 74 69 61 |hoose an|d initia|
|00001c80| 74 65 20 61 20 6d 6f 76 | 65 6d 65 6e 74 20 66 6f |te a mov|ement fo|
|00001c90| 72 20 61 63 74 6f 72 20 | 74 68 61 74 20 73 65 6e |r actor |that sen|
|00001ca0| 64 73 20 69 74 20 74 6f | 77 61 72 64 73 0d 09 74 |ds it to|wards..t|
|00001cb0| 68 65 20 70 6c 61 79 65 | 72 20 62 75 74 20 64 6f |he playe|r but do|
|00001cc0| 65 73 6e 27 74 20 74 72 | 79 20 74 6f 20 64 6f 64 |esn't tr|y to dod|
|00001cd0| 67 65 0d 09 09 0d 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |ge....**|********|
|00001ce0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001cf0| 2a 2a 2a 2a 2a 2a 2a 2a | 2f 0d 0d 76 6f 69 64 20 |********|/..void |
|00001d00| 53 65 6c 65 63 74 43 68 | 61 73 65 44 69 72 28 61 |SelectCh|aseDir(a|
|00001d10| 63 74 6f 72 5f 74 20 2a | 41 63 74 6f 72 50 74 72 |ctor_t *|ActorPtr|
|00001d20| 29 0d 7b 0d 09 69 6e 74 | 20 64 65 6c 74 61 78 2c |).{..int| deltax,|
|00001d30| 64 65 6c 74 61 79 3b 0d | 09 64 69 72 74 79 70 65 |deltay;.|.dirtype|
|00001d40| 20 64 5b 33 5d 3b 0d 09 | 64 69 72 74 79 70 65 20 | d[3];..|dirtype |
|00001d50| 74 64 69 72 2c 20 6f 6c | 64 64 69 72 2c 20 74 75 |tdir, ol|ddir, tu|
|00001d60| 72 6e 61 72 6f 75 6e 64 | 3b 0d 0d 09 6f 6c 64 64 |rnaround|;...oldd|
|00001d70| 69 72 20 3d 20 28 64 69 | 72 74 79 70 65 29 20 41 |ir = (di|rtype) A|
|00001d80| 63 74 6f 72 50 74 72 2d | 3e 64 69 72 3b 09 2f 2a |ctorPtr-|>dir;./*|
|00001d90| 20 53 61 76 65 20 74 68 | 65 20 63 75 72 72 65 6e | Save th|e curren|
|00001da0| 74 20 64 69 72 65 63 74 | 69 6f 6e 20 2a 2f 0d 09 |t direct|ion */..|
|00001db0| 74 75 72 6e 61 72 6f 75 | 6e 64 3d 6f 70 70 6f 73 |turnarou|nd=oppos|
|00001dc0| 69 74 65 5b 6f 6c 64 64 | 69 72 5d 3b 09 2f 2a 20 |ite[oldd|ir];./* |
|00001dd0| 57 68 61 74 27 73 20 74 | 68 65 20 6f 70 70 6f 73 |What's t|he oppos|
|00001de0| 69 74 65 20 64 69 72 65 | 63 74 69 6f 6e 20 2a 2f |ite dire|ction */|
|00001df0| 0d 0d 09 64 65 6c 74 61 | 78 20 3d 20 61 63 74 6f |...delta|x = acto|
|00001e00| 72 73 5b 30 5d 2e 78 20 | 2d 20 41 63 74 6f 72 50 |rs[0].x |- ActorP|
|00001e10| 74 72 2d 3e 78 3b 09 2f | 2a 20 57 68 69 63 68 20 |tr->x;./|* Which |
|00001e20| 77 61 79 20 74 6f 20 74 | 72 61 76 65 6c 3f 20 2a |way to t|ravel? *|
|00001e30| 2f 0d 09 64 65 6c 74 61 | 79 20 3d 20 61 63 74 6f |/..delta|y = acto|
|00001e40| 72 73 5b 30 5d 2e 79 20 | 2d 20 41 63 74 6f 72 50 |rs[0].y |- ActorP|
|00001e50| 74 72 2d 3e 79 3b 0d 0d | 09 69 66 20 28 64 65 6c |tr->y;..|.if (del|
|00001e60| 74 61 78 3e 30 29 20 7b | 0d 09 09 64 5b 31 5d 3d |tax>0) {|...d[1]=|
|00001e70| 20 65 61 73 74 3b 0d 09 | 7d 20 65 6c 73 65 20 69 | east;..|} else i|
|00001e80| 66 20 28 21 64 65 6c 74 | 61 78 29 20 7b 0d 09 09 |f (!delt|ax) {...|
|00001e90| 64 5b 31 5d 3d 20 6e 6f | 64 69 72 3b 0d 09 7d 20 |d[1]= no|dir;..} |
|00001ea0| 65 6c 73 65 20 7b 0d 09 | 09 64 5b 31 5d 3d 20 77 |else {..|.d[1]= w|
|00001eb0| 65 73 74 3b 0d 09 7d 0d | 09 69 66 20 28 64 65 6c |est;..}.|.if (del|
|00001ec0| 74 61 79 3e 30 29 20 7b | 0d 09 09 64 5b 32 5d 3d |tay>0) {|...d[2]=|
|00001ed0| 73 6f 75 74 68 3b 0d 09 | 7d 20 65 6c 73 65 20 69 |south;..|} else i|
|00001ee0| 66 20 28 21 64 65 6c 74 | 61 79 29 20 7b 0d 09 09 |f (!delt|ay) {...|
|00001ef0| 64 5b 32 5d 3d 6e 6f 64 | 69 72 3b 0d 09 7d 20 65 |d[2]=nod|ir;..} e|
|00001f00| 6c 73 65 20 7b 0d 09 09 | 64 5b 32 5d 3d 6e 6f 72 |lse {...|d[2]=nor|
|00001f10| 74 68 3b 0d 09 7d 0d 09 | 0d 09 69 66 20 28 77 5f |th;..}..|..if (w_|
|00001f20| 61 62 73 28 64 65 6c 74 | 61 79 29 3e 77 5f 61 62 |abs(delt|ay)>w_ab|
|00001f30| 73 28 64 65 6c 74 61 78 | 29 29 20 7b 09 2f 2a 20 |s(deltax|)) {./* |
|00001f40| 53 77 61 70 20 69 66 20 | 59 20 69 73 20 67 72 65 |Swap if |Y is gre|
|00001f50| 61 74 65 72 20 2a 2f 0d | 09 09 74 64 69 72 3d 64 |ater */.|..tdir=d|
|00001f60| 5b 31 5d 3b 0d 09 09 64 | 5b 31 5d 3d 64 5b 32 5d |[1];...d|[1]=d[2]|
|00001f70| 3b 0d 09 09 64 5b 32 5d | 3d 74 64 69 72 3b 0d 09 |;...d[2]|=tdir;..|
|00001f80| 7d 0d 0d 09 69 66 20 28 | 64 5b 31 5d 3d 3d 74 75 |}...if (|d[1]==tu|
|00001f90| 72 6e 61 72 6f 75 6e 64 | 29 20 7b 09 2f 2a 20 54 |rnaround|) {./* T|
|00001fa0| 72 79 20 6e 6f 74 20 74 | 6f 20 74 75 72 6e 20 61 |ry not t|o turn a|
|00001fb0| 72 6f 75 6e 64 20 2a 2f | 0d 09 09 64 5b 31 5d 3d |round */|...d[1]=|
|00001fc0| 6e 6f 64 69 72 3b 0d 09 | 7d 0d 09 69 66 20 28 64 |nodir;..|}..if (d|
|00001fd0| 5b 32 5d 3d 3d 74 75 72 | 6e 61 72 6f 75 6e 64 29 |[2]==tur|naround)|
|00001fe0| 20 7b 09 2f 2a 20 54 72 | 79 20 6e 6f 74 20 74 6f | {./* Tr|y not to|
|00001ff0| 20 74 75 72 6e 20 61 72 | 6f 75 6e 64 20 2a 2f 0d | turn ar|ound */.|
|00002000| 09 09 64 5b 32 5d 3d 6e | 6f 64 69 72 3b 0d 09 7d |..d[2]=n|odir;..}|
|00002010| 0d 0d 09 69 66 20 28 64 | 5b 31 5d 21 3d 6e 6f 64 |...if (d|[1]!=nod|
|00002020| 69 72 29 20 7b 09 2f 2a | 20 45 61 73 74 2f 57 65 |ir) {./*| East/We|
|00002030| 73 74 20 6d 6f 76 65 6d | 65 6e 74 3f 20 2a 2f 0d |st movem|ent? */.|
|00002040| 09 09 41 63 74 6f 72 50 | 74 72 2d 3e 64 69 72 20 |..ActorP|tr->dir |
|00002050| 3d 20 64 5b 31 5d 3b 09 | 2f 2a 20 54 72 79 20 74 |= d[1];.|/* Try t|
|00002060| 6f 20 6d 6f 76 65 20 2a | 2f 0d 09 09 69 66 20 28 |o move *|/...if (|
|00002070| 54 72 79 57 61 6c 6b 28 | 41 63 74 6f 72 50 74 72 |TryWalk(|ActorPtr|
|00002080| 29 29 20 7b 0d 09 09 09 | 72 65 74 75 72 6e 3b 09 |)) {....|return;.|
|00002090| 2f 2a 65 69 74 68 65 72 | 20 6d 6f 76 65 64 20 66 |/*either| moved f|
|000020a0| 6f 72 77 61 72 64 20 6f | 72 20 61 74 74 61 63 6b |orward o|r attack|
|000020b0| 65 64 2a 2f 0d 09 09 7d | 0d 09 7d 0d 0d 09 69 66 |ed*/...}|..}...if|
|000020c0| 20 28 64 5b 32 5d 21 3d | 6e 6f 64 69 72 29 20 7b | (d[2]!=|nodir) {|
|000020d0| 09 2f 2a 20 4e 6f 72 74 | 68 2f 53 6f 75 74 68 20 |./* Nort|h/South |
|000020e0| 6d 6f 76 65 6d 65 6e 74 | 3f 20 2a 2f 0d 09 09 41 |movement|? */...A|
|000020f0| 63 74 6f 72 50 74 72 2d | 3e 64 69 72 20 3d 64 5b |ctorPtr-|>dir =d[|
|00002100| 32 5d 3b 0d 09 09 69 66 | 20 28 54 72 79 57 61 6c |2];...if| (TryWal|
|00002110| 6b 28 41 63 74 6f 72 50 | 74 72 29 29 20 7b 0d 09 |k(ActorP|tr)) {..|
|00002120| 09 09 72 65 74 75 72 6e | 3b 0d 09 09 7d 0d 09 7d |..return|;...}..}|
|00002130| 0d 0d 2f 2a 20 74 68 65 | 72 65 20 69 73 20 6e 6f |../* the|re is no|
|00002140| 20 64 69 72 65 63 74 20 | 70 61 74 68 20 74 6f 20 | direct |path to |
|00002150| 74 68 65 20 70 6c 61 79 | 65 72 2c 20 73 6f 20 70 |the play|er, so p|
|00002160| 69 63 6b 20 61 6e 6f 74 | 68 65 72 20 64 69 72 65 |ick anot|her dire|
|00002170| 63 74 69 6f 6e 20 2a 2f | 0d 0d 09 69 66 20 28 6f |ction */|...if (o|
|00002180| 6c 64 64 69 72 21 3d 6e | 6f 64 69 72 29 20 7b 0d |lddir!=n|odir) {.|
|00002190| 09 09 41 63 74 6f 72 50 | 74 72 2d 3e 64 69 72 20 |..ActorP|tr->dir |
|000021a0| 3d 6f 6c 64 64 69 72 3b | 09 09 2f 2a 20 43 6f 6e |=olddir;|../* Con|
|000021b0| 74 69 6e 75 65 20 69 6e | 20 74 68 65 20 6f 6c 64 |tinue in| the old|
|000021c0| 20 64 69 72 65 63 74 69 | 6f 6e 20 2a 2f 0d 09 09 | directi|on */...|
|000021d0| 69 66 20 28 54 72 79 57 | 61 6c 6b 28 41 63 74 6f |if (TryW|alk(Acto|
|000021e0| 72 50 74 72 29 29 20 7b | 0d 09 09 09 72 65 74 75 |rPtr)) {|....retu|
|000021f0| 72 6e 3b 0d 09 09 7d 0d | 09 7d 0d 0d 09 69 66 20 |rn;...}.|.}...if |
|00002200| 28 77 5f 72 6e 64 28 29 | 26 31 29 20 7b 09 2f 2a |(w_rnd()|&1) {./*|
|00002210| 72 61 6e 64 6f 6d 6c 79 | 20 64 65 74 65 72 6d 69 |randomly| determi|
|00002220| 6e 65 20 64 69 72 65 63 | 74 69 6f 6e 20 6f 66 20 |ne direc|tion of |
|00002230| 73 65 61 72 63 68 2a 2f | 0d 09 09 74 64 69 72 20 |search*/|...tdir |
|00002240| 3d 20 6e 6f 72 74 68 3b | 0d 09 09 64 6f 20 7b 0d |= north;|...do {.|
|00002250| 09 09 09 69 66 20 28 74 | 64 69 72 21 3d 74 75 72 |...if (t|dir!=tur|
|00002260| 6e 61 72 6f 75 6e 64 29 | 20 7b 0d 09 09 09 09 41 |naround)| {.....A|
|00002270| 63 74 6f 72 50 74 72 2d | 3e 64 69 72 20 3d 74 64 |ctorPtr-|>dir =td|
|00002280| 69 72 3b 0d 09 09 09 09 | 69 66 20 28 54 72 79 57 |ir;.....|if (TryW|
|00002290| 61 6c 6b 28 41 63 74 6f | 72 50 74 72 29 29 20 7b |alk(Acto|rPtr)) {|
|000022a0| 0d 09 09 09 09 09 72 65 | 74 75 72 6e 3b 0d 09 09 |......re|turn;...|
|000022b0| 09 09 7d 0d 09 09 09 7d | 0d 09 09 7d 20 77 68 69 |..}....}|...} whi|
|000022c0| 6c 65 28 2b 2b 74 64 69 | 72 3c 28 77 65 73 74 2b |le(++tdi|r<(west+|
|000022d0| 31 29 29 3b 0d 09 7d 20 | 65 6c 73 65 20 7b 0d 09 |1));..} |else {..|
|000022e0| 09 74 64 69 72 20 3d 20 | 77 65 73 74 3b 0d 09 09 |.tdir = |west;...|
|000022f0| 64 6f 20 7b 0d 09 09 09 | 69 66 20 28 74 64 69 72 |do {....|if (tdir|
|00002300| 21 3d 74 75 72 6e 61 72 | 6f 75 6e 64 29 20 7b 0d |!=turnar|ound) {.|
|00002310| 09 09 09 09 41 63 74 6f | 72 50 74 72 2d 3e 64 69 |....Acto|rPtr->di|
|00002320| 72 20 3d 74 64 69 72 3b | 0d 09 09 09 09 69 66 20 |r =tdir;|.....if |
|00002330| 28 20 54 72 79 57 61 6c | 6b 28 41 63 74 6f 72 50 |( TryWal|k(ActorP|
|00002340| 74 72 29 29 20 7b 0d 09 | 09 09 09 09 72 65 74 75 |tr)) {..|....retu|
|00002350| 72 6e 3b 0d 09 09 09 09 | 7d 0d 09 09 09 7d 0d 09 |rn;.....|}....}..|
|00002360| 09 7d 20 77 68 69 6c 65 | 28 2d 2d 74 64 69 72 3e |.} while|(--tdir>|
|00002370| 3d 6e 6f 72 74 68 29 3b | 0d 09 7d 0d 0d 09 69 66 |=north);|..}...if|
|00002380| 20 28 74 75 72 6e 61 72 | 6f 75 6e 64 20 21 3d 20 | (turnar|ound != |
|00002390| 6e 6f 64 69 72 29 20 7b | 09 2f 2a 20 41 6c 72 69 |nodir) {|./* Alri|
|000023a0| 67 68 74 2c 20 74 72 79 | 20 62 61 63 6b 77 61 72 |ght, try| backwar|
|000023b0| 64 73 20 6e 6f 77 20 2a | 2f 0d 09 09 41 63 74 6f |ds now *|/...Acto|
|000023c0| 72 50 74 72 2d 3e 64 69 | 72 20 3d 74 75 72 6e 61 |rPtr->di|r =turna|
|000023d0| 72 6f 75 6e 64 3b 0d 09 | 09 69 66 20 28 20 54 72 |round;..|.if ( Tr|
|000023e0| 79 57 61 6c 6b 28 41 63 | 74 6f 72 50 74 72 29 20 |yWalk(Ac|torPtr) |
|000023f0| 29 20 7b 0d 09 09 09 72 | 65 74 75 72 6e 3b 0d 09 |) {....r|eturn;..|
|00002400| 09 7d 0d 09 7d 0d 09 41 | 63 74 6f 72 50 74 72 2d |.}..}..A|ctorPtr-|
|00002410| 3e 64 69 72 20 3d 20 6e | 6f 64 69 72 3b 09 09 2f |>dir = n|odir;../|
|00002420| 2a 20 43 61 6e 27 74 20 | 6d 6f 76 65 2c 20 49 20 |* Can't |move, I |
|00002430| 67 69 76 65 20 75 70 20 | 2a 2f 0d 09 41 63 74 6f |give up |*/..Acto|
|00002440| 72 50 74 72 2d 3e 66 6c | 61 67 73 20 7c 3d 20 46 |rPtr->fl|ags |= F|
|00002450| 4c 5f 4e 4f 54 4d 4f 56 | 49 4e 47 3b 0d 7d 0d 0d |L_NOTMOV|ING;.}..|
|00002460| 2f 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |/*******|********|
|00002470| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002480| 2a 2a 2a 0d 09 0d 09 4d | 6f 76 65 73 20 61 63 74 |***....M|oves act|
|00002490| 6f 72 20 3c 6d 6f 76 65 | 3e 20 67 6c 6f 62 61 6c |or <move|> global|
|000024a0| 20 75 6e 69 74 73 20 69 | 6e 20 61 63 74 6f 72 2d | units i|n actor-|
|000024b0| 3e 64 69 72 20 64 69 72 | 65 63 74 69 6f 6e 0d 09 |>dir dir|ection..|
|000024c0| 41 63 74 6f 72 73 20 61 | 72 65 20 6e 6f 74 20 61 |Actors a|re not a|
|000024d0| 6c 6c 6f 77 65 64 20 74 | 6f 20 6d 6f 76 65 20 69 |llowed t|o move i|
|000024e0| 6e 73 69 64 65 20 74 68 | 65 20 70 6c 61 79 65 72 |nside th|e player|
|000024f0| 0d 09 44 6f 65 73 20 4e | 4f 54 20 63 68 65 63 6b |..Does N|OT check|
|00002500| 20 74 6f 20 73 65 65 20 | 69 66 20 74 68 65 20 6d | to see |if the m|
|00002510| 6f 76 65 20 69 73 20 74 | 69 6c 65 20 6d 61 70 20 |ove is t|ile map |
|00002520| 76 61 6c 69 64 0d 09 09 | 0d 2a 2a 2a 2a 2a 2a 2a |valid...|.*******|
|00002530| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002540| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2f 0d 0d 76 6f |********|***/..vo|
|00002550| 69 64 20 4d 6f 76 65 41 | 63 74 6f 72 28 61 63 74 |id MoveA|ctor(act|
|00002560| 6f 72 5f 74 20 2a 41 63 | 74 6f 72 50 74 72 2c 57 |or_t *Ac|torPtr,W|
|00002570| 6f 72 64 20 6d 6f 76 65 | 29 0d 7b 0d 09 57 6f 72 |ord move|).{..Wor|
|00002580| 64 20 74 72 79 78 2c 74 | 72 79 79 3b 0d 0d 09 74 |d tryx,t|ryy;...t|
|00002590| 72 79 78 20 3d 20 41 63 | 74 6f 72 50 74 72 2d 3e |ryx = Ac|torPtr->|
|000025a0| 78 3b 09 2f 2a 20 47 65 | 74 20 74 68 65 20 78 20 |x;./* Ge|t the x |
|000025b0| 61 6e 64 20 79 20 2a 2f | 0d 09 74 72 79 79 20 3d |and y */|..tryy =|
|000025c0| 20 41 63 74 6f 72 50 74 | 72 2d 3e 79 3b 0d 0d 09 | ActorPt|r->y;...|
|000025d0| 73 77 69 74 63 68 20 28 | 41 63 74 6f 72 50 74 72 |switch (|ActorPtr|
|000025e0| 2d 3e 64 69 72 29 20 7b | 3b 0d 09 63 61 73 65 20 |->dir) {|;..case |
|000025f0| 6e 6f 72 74 68 65 61 73 | 74 3a 09 09 2f 2a 20 4d |northeas|t:../* M|
|00002600| 6f 76 65 20 74 6f 20 74 | 68 65 20 6e 65 77 20 78 |ove to t|he new x|
|00002610| 2c 79 20 2a 2f 0d 09 09 | 74 72 79 78 20 2b 3d 20 |,y */...|tryx += |
|00002620| 6d 6f 76 65 3b 0d 09 63 | 61 73 65 20 6e 6f 72 74 |move;..c|ase nort|
|00002630| 68 3a 0d 09 09 74 72 79 | 79 20 2d 3d 20 6d 6f 76 |h:...try|y -= mov|
|00002640| 65 3b 0d 09 09 62 72 65 | 61 6b 3b 0d 09 09 0d 09 |e;...bre|ak;.....|
|00002650| 63 61 73 65 20 73 6f 75 | 74 68 65 61 73 74 3a 0d |case sou|theast:.|
|00002660| 09 09 74 72 79 79 20 2b | 3d 20 6d 6f 76 65 3b 0d |..tryy +|= move;.|
|00002670| 09 63 61 73 65 20 65 61 | 73 74 3a 0d 09 09 74 72 |.case ea|st:...tr|
|00002680| 79 78 20 2b 3d 20 6d 6f | 76 65 3b 0d 09 09 62 72 |yx += mo|ve;...br|
|00002690| 65 61 6b 3b 0d 09 0d 09 | 63 61 73 65 20 73 6f 75 |eak;....|case sou|
|000026a0| 74 68 77 65 73 74 3a 0d | 09 09 74 72 79 78 20 2d |thwest:.|..tryx -|
|000026b0| 3d 20 6d 6f 76 65 3b 0d | 09 63 61 73 65 20 73 6f |= move;.|.case so|
|000026c0| 75 74 68 3a 0d 09 09 74 | 72 79 79 20 2b 3d 20 6d |uth:...t|ryy += m|
|000026d0| 6f 76 65 3b 0d 09 09 62 | 72 65 61 6b 3b 0d 09 09 |ove;...b|reak;...|
|000026e0| 0d 09 63 61 73 65 20 6e | 6f 72 74 68 77 65 73 74 |..case n|orthwest|
|000026f0| 3a 0d 09 09 74 72 79 79 | 20 2d 3d 20 6d 6f 76 65 |:...tryy| -= move|
|00002700| 3b 0d 09 63 61 73 65 20 | 77 65 73 74 3a 0d 09 09 |;..case |west:...|
|00002710| 74 72 79 78 20 2d 3d 20 | 6d 6f 76 65 3b 0d 09 7d |tryx -= |move;..}|
|00002720| 0d 0d 2f 2a 20 63 68 65 | 63 6b 20 74 6f 20 6d 61 |../* che|ck to ma|
|00002730| 6b 65 20 73 75 72 65 20 | 69 74 27 73 20 6e 6f 74 |ke sure |it's not|
|00002740| 20 6d 6f 76 69 6e 67 20 | 6f 6e 20 74 6f 70 20 6f | moving |on top o|
|00002750| 66 20 70 6c 61 79 65 72 | 2a 2f 0d 0d 09 69 66 20 |f player|*/...if |
|00002760| 28 61 72 65 61 62 79 70 | 6c 61 79 65 72 5b 4d 61 |(areabyp|layer[Ma|
|00002770| 70 50 74 72 2d 3e 61 72 | 65 61 73 6f 75 6e 64 6e |pPtr->ar|easoundn|
|00002780| 75 6d 5b 41 63 74 6f 72 | 50 74 72 2d 3e 61 72 65 |um[Actor|Ptr->are|
|00002790| 61 6e 75 6d 62 65 72 5d | 5d 29 20 7b 0d 09 09 69 |anumber]|]) {...i|
|000027a0| 66 20 28 77 5f 61 62 73 | 28 74 72 79 78 20 2d 20 |f (w_abs|(tryx - |
|000027b0| 61 63 74 6f 72 73 5b 30 | 5d 2e 78 29 3c 4d 49 4e |actors[0|].x)<MIN|
|000027c0| 41 43 54 4f 52 44 49 53 | 54 29 20 7b 0d 09 09 09 |ACTORDIS|T) {....|
|000027d0| 69 66 20 28 77 5f 61 62 | 73 28 74 72 79 79 20 2d |if (w_ab|s(tryy -|
|000027e0| 20 61 63 74 6f 72 73 5b | 30 5d 2e 79 29 3c 4d 49 | actors[|0].y)<MI|
|000027f0| 4e 41 43 54 4f 52 44 49 | 53 54 29 20 7b 0d 09 09 |NACTORDI|ST) {...|
|00002800| 09 09 72 65 74 75 72 6e | 3b 0d 09 09 09 7d 0d 09 |..return|;....}..|
|00002810| 09 7d 0d 09 7d 09 0d 09 | 41 63 74 6f 72 50 74 72 |.}..}...|ActorPtr|
|00002820| 2d 3e 64 69 73 74 61 6e | 63 65 2d 3d 20 6d 6f 76 |->distan|ce-= mov|
|00002830| 65 3b 09 2f 2a 20 52 65 | 6d 6f 76 65 20 74 68 65 |e;./* Re|move the|
|00002840| 20 64 69 73 74 61 6e 63 | 65 20 2a 2f 0d 09 41 63 | distanc|e */..Ac|
|00002850| 74 6f 72 50 74 72 2d 3e | 78 20 3d 20 74 72 79 78 |torPtr->|x = tryx|
|00002860| 3b 09 09 2f 2a 20 53 61 | 76 65 20 74 68 65 20 6e |;../* Sa|ve the n|
|00002870| 65 77 20 78 2c 79 20 2a | 2f 0d 09 41 63 74 6f 72 |ew x,y *|/..Actor|
|00002880| 50 74 72 2d 3e 79 20 3d | 20 74 72 79 79 3b 0d 7d |Ptr->y =| tryy;.}|
|00002890| 0d 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000028a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000028b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000028c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000028d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000028e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000028f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002900| 00 00 01 00 00 00 01 4c | 00 00 00 4c 00 00 00 32 |.......L|...L...2|
|00002910| d4 fe d0 91 57 11 fe c8 | 89 01 02 07 11 ab c9 03 |....W...|........|
|00002920| 3e 1f 21 ee fe d0 9b 11 | 4a 47 8e 01 00 d2 50 03 |>.!.....|JG....P.|
|00002930| 08 45 6e 4d 6f 76 65 2e | 63 00 02 00 00 00 54 45 |.EnMove.|c.....TE|
|00002940| 58 54 70 64 6f 73 01 00 | 00 00 01 c0 00 00 00 00 |XTpdos..|........|
|00002950| 00 00 54 45 58 54 70 64 | 6f 73 01 00 00 00 01 c0 |..TEXTpd|os......|
|00002960| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002970| 00 00 a9 61 c9 bc 00 00 | 28 11 00 00 01 7e cc 2f |...a....|(....~./|
|00002980| 2e fe c8 2f 3c 69 63 01 | 73 34 14 30 3c 06 08 ab |.../<ic.|s4.0<...|
|00002990| c9 54 8f 02 60 20 70 08 | 42 01 6e 18 43 01 73 38 |.T..` p.|B.n.C.s8|
|000029a0| 44 7d 42 01 6c 1e 52 57 | 31 50 01 1d 0a 7a 3c 6d |D}B.l.RW|1P...z<m|
|000029b0| d6 57 3c 50 41 da 3c 01 | 67 1c 3f 01 66 18 43 01 |.W<PA.<.|g.?.f.C.|
|000029c0| 73 23 44 da 3c b0 3f 01 | 67 18 91 5a 3d 7d 01 1f |s#D.<.?.|g..Z=}..|
|000029d0| 00 89 01 03 02 3e 55 7a | 3d 2b da 3d 01 67 22 91 |.....>Uz|=+.=.g".|
|000029e0| 5a 3d 86 01 0b f5 2f 3a | 6d b3 89 01 03 16 3e 01 |Z=..../:|m.....>.|
|000029f0| 3e 1f 91 2e 86 01 0b f2 | 2f 3a 6d b3 55 b3 5a 3d |>.......|/:m.U.Z=|
|00002a00| 00 00 00 48 00 09 4d 6f | 6e 61 63 6f 00 00 00 00 |...H..Mo|naco....|
|00002a10| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002a20| 00 00 00 00 00 00 00 03 | 00 04 00 30 00 1a 01 c8 |........|...0....|
|00002a30| 02 7e 00 30 00 1a 01 c8 | 02 7e aa b6 f0 16 00 00 |.~.0....|.~......|
|00002a40| 13 18 00 00 13 18 00 00 | 11 1d 01 00 00 00 01 00 |........|........|
|00002a50| 00 00 01 4c 00 00 00 4c | 00 00 00 32 00 b6 c4 e8 |...L...L|...2....|
|00002a60| 0d f6 00 00 00 1c 00 32 | 00 00 4d 50 53 52 00 00 |.......2|..MPSR..|
|00002a70| 00 0a 03 ed ff ff 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+