Free Hero Mesh

Check-in [22d38aadb5]
Login
This is a mirror of the main repository for Free Hero Mesh. New tickets and changes will not be accepted at this mirror.
Overview
Comment:Add some additional checks to JumpTo for Compatible classes only. This fixes three levels, one each in HEARTS1, HEARTS4, and SUPERHRO.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 22d38aadb538a90c793cb0a427f49b0e59baaf0f
User & Date: user on 2023-08-06 19:44:01
Other Links: manifest | tags
Context
2023-08-10
02:50
Add CancelTriggers and DeferTriggers instructions. check-in: 68320feb4f user: user tags: trunk
2023-08-06
19:44
Add some additional checks to JumpTo for Compatible classes only. This fixes three levels, one each in HEARTS1, HEARTS4, and SUPERHRO. check-in: 22d38aadb5 user: user tags: trunk
2023-08-04
23:03
Implement ,if ,while ,until instructions (conditions with keeping the value in the stack if it is nonzero) check-in: 41eca04785 user: user tags: trunk
Changes

Modified TODO from [76519b42a4] to [8c4700a5e2].

21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
  * Auto scroll option (using Player flag)
  * Configurable auto scroll option
  * Manual scroll option
* Bookmarks
* Message trace menu to enable/disable
* Bugs
  * Figure out why the $SeekerCloser class doesn't seem to work properly
  * Level 232 of SUPERHRO puzzle set (the Lava shouldn't expand? why?)
  * Animation stopping unexpectedly (until a key is pushed)
  * ObjLF.Volume+ObjRF.Volume+obj.Volume if ObjLF and/or ObjRF doesn't exist?
* Display solution comments/timestamp
* VCR mode
* Command-line switch for batch export levels
* SQL
  * Implement the GROUP column in the CLASSES table







<







21
22
23
24
25
26
27

28
29
30
31
32
33
34
  * Auto scroll option (using Player flag)
  * Configurable auto scroll option
  * Manual scroll option
* Bookmarks
* Message trace menu to enable/disable
* Bugs
  * Figure out why the $SeekerCloser class doesn't seem to work properly

  * Animation stopping unexpectedly (until a key is pushed)
  * ObjLF.Volume+ObjRF.Volume+obj.Volume if ObjLF and/or ObjRF doesn't exist?
* Display solution comments/timestamp
* VCR mode
* Command-line switch for batch export levels
* SQL
  * Implement the GROUP column in the CLASSES table

Modified class.doc from [792876c921] to [8def31bf08].

3025
3026
3027
3028
3029
3030
3031



3032
3033
3034
3035
3036
3037
3038
* Moving objects is not allowed during LASTIMAGE processing.

* The way that the trigger phase works is different.

* In the ARRIVED and DEPARTED messages, Arg1 is always zero.

* Diagonal shoving is not possible.





=== Level table definition ===

The following blocks are allowed in a level table definition:

(<label> <code...>)







>
>
>







3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
* Moving objects is not allowed during LASTIMAGE processing.

* The way that the trigger phase works is different.

* In the ARRIVED and DEPARTED messages, Arg1 is always zero.

* Diagonal shoving is not possible.

* The JumpTo instruction has an additional effect that rarely matters,
having to do with the timing of ARRIVED, DEPARTED, and MOVED messages.


=== Level table definition ===

The following blocks are allowed in a level table definition:

(<label> <code...>)

Modified exec.c from [1c5a8555ba] to [e4a58f292e].

1650
1651
1652
1653
1654
1655
1656




1657
1658
1659
1660
1661
1662
1663

static int jump_to(Uint32 from,Uint32 n,Uint32 x,Uint32 y) {
  int xx,yy;
  if(n==VOIDLINK) return 0;
  xx=objects[n]->x;
  yy=objects[n]->y;
  if(!move_to(from,n,x,y)) return 0;




  send_message(VOIDLINK,n,MSG_JUMPED,NVALUE(xx),NVALUE(yy),OVALUE(from));
  return 1;
}

static int defer_move(Uint32 obj,Uint32 dir,Uint8 plus) {
  Object*o;
  Object*q;







>
>
>
>







1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667

static int jump_to(Uint32 from,Uint32 n,Uint32 x,Uint32 y) {
  int xx,yy;
  if(n==VOIDLINK) return 0;
  xx=objects[n]->x;
  yy=objects[n]->y;
  if(!move_to(from,n,x,y)) return 0;
  if(classes[objects[n]->class]->cflags&CF_COMPATIBLE) {
    objects[n]->arrived2=objects[n]->departed2=0;
    objects[n]->oflags&=~OF_MOVED2;
  }
  send_message(VOIDLINK,n,MSG_JUMPED,NVALUE(xx),NVALUE(yy),OVALUE(from));
  return 1;
}

static int defer_move(Uint32 obj,Uint32 dir,Uint8 plus) {
  Object*o;
  Object*q;