X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/micropolis/blobdiff_plain/6f214ac0ef5899987197c2e4c9baa0b51a04c197..176c45720f3b9e5555fe1084d3e6ea59488c1785:/src/sim/w_sprite.c?ds=sidebyside diff --git a/src/sim/w_sprite.c b/src/sim/w_sprite.c index 1268e3d..bbd0640 100644 --- a/src/sim/w_sprite.c +++ b/src/sim/w_sprite.c @@ -120,14 +120,14 @@ DoSpriteCmd(CLIENT_ARGS) SimSprite *sprite = (SimSprite *) clientData; Tcl_HashEntry *ent; int result = TCL_OK; - int (*cmd)(); + int (*cmd)(SimSprite*, Tcl_Interp*, int, char**); if (argc < 2) { return TCL_ERROR; } if ((ent = Tcl_FindHashEntry(&SpriteCmds, argv[1]))) { - cmd = (int (*)())ent->clientData; + cmd = (int (*)(SimSprite*, Tcl_Interp*, int, char**))ent->clientData; Tk_Preserve((ClientData) sprite); result = cmd(sprite, interp, argc, argv); Tk_Release((ClientData) sprite); @@ -156,7 +156,7 @@ SpriteCmd(CLIENT_ARGS) sprite->frame = 0; Tcl_CreateCommand(interp, sprite->name, - DoSpriteCmd, (ClientData) sprite, (void (*)()) NULL); + DoSpriteCmd, (ClientData) sprite, (void (*)(int *)) NULL); interp->result = sprite->name; return TCL_OK; @@ -221,7 +221,7 @@ sprite_command_init(void) int i; Tcl_CreateCommand(tk_mainInterp, "sprite", SpriteCmd, - (ClientData)NULL, (void (*)()) NULL); + (ClientData)NULL, (void (*)(int *)) NULL); Tcl_InitHashTable(&SpriteCmds, TCL_STRING_KEYS); @@ -1052,10 +1052,14 @@ DoMonsterSprite(SimSprite *sprite) if (sprite->count > 0) sprite->count--; c = GetChar(sprite->x + sprite->x_hot, sprite->y + sprite->y_hot); - if ((c == -1) || - ((c == RIVER) && + if ((c == -1) +#ifndef ORIGINAL_MONSTER_BEHAVIOUR + || ((c == RIVER) && (sprite->count != 0) && - (sprite->control == -1))) { + (sprite->count < 900) && + (sprite->control == -1)) +#endif + ) { sprite->frame = 0; /* kill zilla */ }