Overview
Comment: | Implement bit23 for HIT/HITBY to prevent cascading after shoving |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
b572dd834cb0dd152d7a3b1d27348492 |
User & Date: | user on 2021-03-21 20:34:45 |
Other Links: | manifest | tags |
Context
2021-03-23
| ||
05:00 | Implement the possibility to add new levels into the puzzle set. check-in: bbdc443497 user: user tags: trunk | |
2021-03-21
| ||
20:34 | Implement bit23 for HIT/HITBY to prevent cascading after shoving check-in: b572dd834c user: user tags: trunk | |
06:42 | Implement the "a?" and "ArrayCell" instructions check-in: e0a86ed98a user: user tags: trunk | |
Changes
Modified class.doc from [613227b86c] to [de4beeba2e].
︙ | ︙ | |||
1843 1844 1845 1846 1847 1848 1849 | Allows the object to move regardless of Height. The game engine sets this bit if currently the Climb/Height is OK for moving. bit22 * Prevents movement regardless of Height, but may still allow sliding. bit23 * | > | > | 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 | Allows the object to move regardless of Height. The game engine sets this bit if currently the Climb/Height is OK for moving. bit22 * Prevents movement regardless of Height, but may still allow sliding. bit23 * If this bit is set, then do not consider any further objects at the new location of the shoved object after successfully shoving, and instead restart the movement immediately. bit24 * Allows sliding to the left regardless of Height; the other attributes still need to be correct (unless bit26 is set). The game engine sets this bit if the Climb/Height is OK for moving. bit25 * |
︙ | ︙ |
Modified exec.c from [d5095c8102] to [701969d391].
︙ | ︙ | |||
884 885 886 887 888 889 890 891 892 893 894 895 896 897 | } // Shoving if(!(hit&0x44) && (oE->shovable&(1<<dir)) && o->inertia>=oE->weight && !(oE->oflags&OF_VISUALONLY)) { oE->inertia=o->inertia; if(move_dir(obj,objE,dir)) { if(!(oE->oflags&OF_DESTROYED)) o->inertia=oE->inertia; hit|=0x8000; } } if(hit&0x400) goto fail; objE=obj_below(objE); } if(hit&0x2008) goto fail; if((hit&0x48000)==0x8000) goto restart; | > | 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 | } // Shoving if(!(hit&0x44) && (oE->shovable&(1<<dir)) && o->inertia>=oE->weight && !(oE->oflags&OF_VISUALONLY)) { oE->inertia=o->inertia; if(move_dir(obj,objE,dir)) { if(!(oE->oflags&OF_DESTROYED)) o->inertia=oE->inertia; hit|=0x8000; if(hit&0x800000) goto restart; } } if(hit&0x400) goto fail; objE=obj_below(objE); } if(hit&0x2008) goto fail; if((hit&0x48000)==0x8000) goto restart; |
︙ | ︙ |