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
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
  * 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

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

3025
3026
3027
3028
3029
3030
3031



3032
3033
3034
3035
3036
3037
3038
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
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;