︙ | | |
411
412
413
414
415
416
417
418
419
420
421
422
423
424
|
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
|
+
+
+
|
,Compatible
Sets the Compatible flag for this class, but removes the restriction of
some variables limited to 16-bits.
Connection
Sets the Connection flag for this class.
Crush
Sets the Crush flag for this class.
(DefaultImage <list...>)
Each entry is either a number of an image in this class, or two
numbers in parentheses giving a range of images, or () to indicate
that there are no default images. This specifies which images can
be used in objects of this class which are initially present on
the level (placed in the editor). If () is used, then this class
is not available in the editor. If there is no (DefaultImage) block,
|
︙ | | |
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
|
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
|
-
+
|
dispatch block matches and it is not a key which is implicitly ignored,
and Arg3 is both zero, then it will execute this block instead.
Player
Set the Player flag for this class.
(Queen <code...>)
Combines the effects of the (Rook) and (Queen) blocks.
Combines the effects of the (Rook) and (Bishop) blocks.
Quiz
If specified, the internal variables of objects of this class cannot
normally be examined by the player. However, the player can override
this definition at run time; you cannot rely on it. Class codes cannot
read the value of this flag.
|
︙ | | |
930
931
932
933
934
935
936
937
938
939
940
941
942
943
|
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
|
+
+
+
+
+
+
|
Connection : bool [c]
If this flag is set, then moving this object by the use of the Move
instruction will try to move an entire connected group of objects,
instead of only one. This changes some of the behaviour and will
cause additional messages to be sent, too. Deferred movement is not
possible if this flag is set.
Crush : bool [c]
If this flag is set, then objects that try to move into it will destroy
it if it is unable to shove it out of the way. Unlike sharpness checking,
crushing is checked after shoving instead of before. Crushing is never
possible if warping occurs.
Density : int16/int32 [c]
Determines the order that objects are stacked within each cell. When an
object is moved or created, its Density is compared with the Density of
the objects already present at that location, in order to insert it into
the stack of objects there, at the top, bottom, or middle, where lesser
numbers mean closer to the top, and greater numbers are deeper. If there
are multiple objects of the same Density, the new one goes above others
|
︙ | | |
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
|
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
|
-
-
+
+
|
the saved Departed value. The Departed variable will usually be set
automatically; see the section about variables.
DESTROY
Received when the object is about to be destroyed. Arg3 is the reason:
0 for the Destroy or ,Destroy instruction, 1 due to this object moving
into something sharp, 2 due to something sharp moving into this one,
or 3 for a conflict with CollisionLayers. The return value is false to
allow it to be destroyed or true to keep the object.
3 for a conflict with CollisionLayers, or 4 for crushing. The return
value is false to allow it to be destroyed or true to keep the object.
DESTROYED
Sent to all objects whose Departures care about objects in the location
where an object has just been destroyed (if its VisualOnly flag isn't
set). From is the object which has just been destroyed. Arg3 is the
reason, as for the DESTROY message.
|
︙ | | |
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
|
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
|
-
+
-
-
+
+
+
-
+
|
bit0
Do not send the HITBY message to the target object. If the moving object
has the Connection flag, then this bit is set in Arg3, but this does not
prevent sending the HITBY message unless the return value also has bit0.
bit1
Do not destroy either object due to hardness/sharpness.
Do not destroy either object due to hardness/sharpness or crushing.
bit2
Do not attempt to shove the target object.
bit3
Abort the move attempt immediately. Do not send any more HIT or HITBY
messages, do not check hardness/sharpness, and do nothing else either.
This bit is also set in Arg3 if the object can't move due to Volume.
bit4
Do not send the HITBY message to the target object or to any further
objects at the target location.
bit5
Do not destroy either object due to hardness/sharpness, nor should any
further objects at the target location be destroyed due to sharpness.
Do not destroy either object due to hardness/sharpness or crushing, nor
should any further objects at the target location be destroyed due to
hardness/sharpness or crushing.
bit6
Do not attempt to shove the target object, nor attempt to shove any
other objects at the target location. (If you are using the two pass
HIT/HITBY for connection movement, then this bit will automatically
be set during the first pass.)
bit7 *
Do not attempt sliding. (This bit is always set in Arg3 if it is due
to Connection, and always prevents sliding in this case.)
bit8
Abort after sending the HITBY message.
bit9
Abort after hardness/sharpness checking.
bit10
Abort after attempting shoving.
Abort after attempting shoving and crushing.
bit11
Set by the game engine if the move attempt has been restarted due to
bit15 being set during the previous attempt.
bit12 *
If the move attempt fails, pretend it was successful, even though the
|
︙ | | |