Overview
Comment: | Implement the ,WinLevel instruction too set the score (currently not used by anything). |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
1ed0e6ebf4f316ca25dcf1da14fdedb7 |
User & Date: | user on 2022-03-31 02:12:56 |
Other Links: | manifest | tags |
Context
2022-04-02
| ||
23:11 | Add fileformat.doc check-in: 13c67423df user: user tags: trunk | |
2022-03-31
| ||
02:12 | Implement the ,WinLevel instruction too set the score (currently not used by anything). check-in: 1ed0e6ebf4 user: user tags: trunk | |
2022-03-23
| ||
00:46 | Some corrections of the logic of making up level tables from title strings containing data entry. check-in: 79b77f8924 user: user tags: trunk | |
Changes
Modified class.doc from [99fc2e3e3e] to [a0b21321f2].
︙ | ︙ | |||
2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 | WinLevel ( -- ) Ends all execution and accepts the input sequence that resulted in the current game state as a valid solution. (In other words, the goal of the game is to find a sequence of inputs that result in the execution of a WinLevel instruction, without causing any errors or executing LoseLevel.) XDir ( dir -- newx ) Finds the X coordinate of the cell in the specified direction. ,XDir ( obj dir -- newx ) Finds the X coordinate of the cell in the specified direction of the specified object. | > > > > > | 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 | WinLevel ( -- ) Ends all execution and accepts the input sequence that resulted in the current game state as a valid solution. (In other words, the goal of the game is to find a sequence of inputs that result in the execution of a WinLevel instruction, without causing any errors or executing LoseLevel.) ,WinLevel ( score -- ) Same as WinLevel but you can set the score, which is treated as a signed number; lower numbers are considered to be a better score. (Currently, the score is not used by anything.) XDir ( dir -- newx ) Finds the X coordinate of the cell in the specified direction. ,XDir ( obj dir -- newx ) Finds the X coordinate of the cell in the specified direction of the specified object. |
︙ | ︙ |
Modified exec.c from [171c864429] to [01a454ca8b].
︙ | ︙ | |||
39 40 41 42 43 44 45 46 47 48 49 50 51 52 | Uint16 nlevelstrings; Value*array_data; Uint16 ndeadanim; DeadAnimation*deadanim; Uint8 no_dead_anim; Uint32 max_trigger; Uint8 conn_option; typedef struct { Uint16 msg; Uint32 from; Value arg1,arg2,arg3; } MessageVars; | > | 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | Uint16 nlevelstrings; Value*array_data; Uint16 ndeadanim; DeadAnimation*deadanim; Uint8 no_dead_anim; Uint32 max_trigger; Uint8 conn_option; Sint32 gameover_score; typedef struct { Uint16 msg; Uint32 from; Value arg1,arg2,arg3; } MessageVars; |
︙ | ︙ | |||
3187 3188 3189 3190 3191 3192 3193 | case OP_VOLUMEAT: StackReq(2,1); t2=Pop(); Numeric(t2); t1=Pop(); Numeric(t1); Push(NVALUE(volume_at(t1.u,t2.u))); break; case OP_WEIGHT: StackReq(0,1); Push(NVALUE(o->weight)); break; case OP_WEIGHT_C: StackReq(1,1); Push(GetVariableOrAttributeOf(weight,NVALUE)); break; case OP_WEIGHT_E: NoIgnore(); StackReq(1,0); t1=Pop(); Numeric(t1); o->weight=t1.u; break; case OP_WEIGHT_E16: NoIgnore(); StackReq(1,0); t1=Pop(); Numeric(t1); o->weight=t1.u&0xFFFF; break; case OP_WEIGHT_EC: NoIgnore(); StackReq(2,0); t1=Pop(); Numeric(t1); i=v_object(Pop()); if(i!=VOIDLINK) objects[i]->weight=t1.u; break; case OP_WEIGHT_EC16: NoIgnore(); StackReq(2,0); t1=Pop(); Numeric(t1); i=v_object(Pop()); if(i!=VOIDLINK) objects[i]->weight=t1.u&0xFFFF; break; | | > | 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 | case OP_VOLUMEAT: StackReq(2,1); t2=Pop(); Numeric(t2); t1=Pop(); Numeric(t1); Push(NVALUE(volume_at(t1.u,t2.u))); break; case OP_WEIGHT: StackReq(0,1); Push(NVALUE(o->weight)); break; case OP_WEIGHT_C: StackReq(1,1); Push(GetVariableOrAttributeOf(weight,NVALUE)); break; case OP_WEIGHT_E: NoIgnore(); StackReq(1,0); t1=Pop(); Numeric(t1); o->weight=t1.u; break; case OP_WEIGHT_E16: NoIgnore(); StackReq(1,0); t1=Pop(); Numeric(t1); o->weight=t1.u&0xFFFF; break; case OP_WEIGHT_EC: NoIgnore(); StackReq(2,0); t1=Pop(); Numeric(t1); i=v_object(Pop()); if(i!=VOIDLINK) objects[i]->weight=t1.u; break; case OP_WEIGHT_EC16: NoIgnore(); StackReq(2,0); t1=Pop(); Numeric(t1); i=v_object(Pop()); if(i!=VOIDLINK) objects[i]->weight=t1.u&0xFFFF; break; case OP_WINLEVEL: key_ignored=0; gameover=1; gameover_score=move_number+1; Throw(0); break; case OP_WINLEVEL_C: StackReq(1,0); t1=Pop(); Numeric(t1); key_ignored=0; gameover=1; gameover_score=t1.s; Throw(0); break; case OP_XDIR: StackReq(1,1); t1=Pop(); Numeric(t1); Push(NVALUE(o->x+x_delta[resolve_dir(obj,t1.u)])); break; case OP_XDIR_C: StackReq(2,1); t1=Pop(); Numeric(t1); i=v_object(Pop()); if(i==VOIDLINK) Push(NVALUE(0)); else Push(NVALUE(objects[i]->x+x_delta[resolve_dir(i,t1.u)])); break; case OP_XLOC: StackReq(0,1); Push(NVALUE(o->x)); break; case OP_XLOC_C: StackReq(1,1); Push(GetVariableOf(x,NVALUE)); break; case OP_XSTEP: StackReq(1,1); t1=Pop(); Numeric(t1); Push(NVALUE(x_delta[resolve_dir(obj,t1.u)])); break; case OP_XSTEP_C: StackReq(2,1); t1=Pop(); Numeric(t1); i=v_object(Pop()); if(i==VOIDLINK) Push(NVALUE(0)); else Push(NVALUE(x_delta[resolve_dir(i,t1.u)])); break; case OP_XYDIR: StackReq(1,2); t1=Pop(); Numeric(t1); i=resolve_dir(obj,t1.u); Push(NVALUE(o->x+x_delta[i])); Push(NVALUE(o->y+y_delta[i])); break; |
︙ | ︙ |
Modified heromesh.h from [5a98591922] to [1eb8371df6].
︙ | ︙ | |||
301 302 303 304 305 306 307 308 309 310 311 312 313 314 | extern Uint16 nlevelstrings; extern Value*array_data; extern Uint16 ndeadanim; extern DeadAnimation*deadanim; extern Uint8 no_dead_anim; extern Uint32 max_trigger; extern Uint8 conn_option; const unsigned char*value_string_ptr(Value v); void pfunlink(Uint32 n); void pflink(Uint32 n); Uint32 objalloc(Uint16 c); void objtrash(Uint32 n); void annihilate(void); | > | 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 | extern Uint16 nlevelstrings; extern Value*array_data; extern Uint16 ndeadanim; extern DeadAnimation*deadanim; extern Uint8 no_dead_anim; extern Uint32 max_trigger; extern Uint8 conn_option; extern Sint32 gameover_score; const unsigned char*value_string_ptr(Value v); void pfunlink(Uint32 n); void pflink(Uint32 n); Uint32 objalloc(Uint16 c); void objtrash(Uint32 n); void annihilate(void); |
︙ | ︙ |
Modified instruc from [9080651e62] to [916ec56ae6].
︙ | ︙ | |||
285 286 287 288 289 290 291 | Synchronize ,Target Trace ,TraceStack Trigger TriggerAt VolumeAt | | | 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 | Synchronize ,Target Trace ,TraceStack Trigger TriggerAt VolumeAt ,WinLevel ,XDir ,XStep XYDir ,YDir ,YStep ; Operations with marks |
︙ | ︙ |
Modified instruc.h from [67fc3e7eb1] to [d8eb492638].
︙ | ︙ | |||
427 428 429 430 431 432 433 434 435 436 437 438 439 440 | #define OP_TRACE 32981 #define OP_TRACESTACK 32982 #define OP_TRACESTACK_C 35030 #define OP_TRIGGER 32983 #define OP_TRIGGERAT 32984 #define OP_VOLUMEAT 32985 #define OP_WINLEVEL 32986 #define OP_XDIR 32987 #define OP_XDIR_C 35035 #define OP_XSTEP 32988 #define OP_XSTEP_C 35036 #define OP_XYDIR 32989 #define OP_YDIR 32990 #define OP_YDIR_C 35038 | > | 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 | #define OP_TRACE 32981 #define OP_TRACESTACK 32982 #define OP_TRACESTACK_C 35030 #define OP_TRIGGER 32983 #define OP_TRIGGERAT 32984 #define OP_VOLUMEAT 32985 #define OP_WINLEVEL 32986 #define OP_WINLEVEL_C 35034 #define OP_XDIR 32987 #define OP_XDIR_C 35035 #define OP_XSTEP 32988 #define OP_XSTEP_C 35036 #define OP_XYDIR 32989 #define OP_YDIR 32990 #define OP_YDIR_C 35038 |
︙ | ︙ | |||
739 740 741 742 743 744 745 | {"VisualOnly",8618099}, {"Volume",9142350}, {"VolumeAt",8421593}, {"W",9437188}, {"WAHOO",8389400}, {"WHACK",8389423}, {"Weight",9142352}, | | | 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 | {"VisualOnly",8618099}, {"Volume",9142350}, {"VolumeAt",8421593}, {"W",9437188}, {"WAHOO",8389400}, {"WHACK",8389423}, {"Weight",9142352}, {"WinLevel",8487130}, {"XDir",8487131}, {"XStep",8487132}, {"XYDir",8421597}, {"Xloc",8486980}, {"YDir",8487134}, {"YEEHAW",8389401}, {"YStep",8487135}, |
︙ | ︙ |