Index: class.doc ================================================================== --- class.doc +++ class.doc @@ -1793,15 +1793,15 @@ bit27 * Allows hitting to the right regardless of Shape, Volume, etc. In order to actually move when sliding to the right, both bit25 and bit27 must be set, and bit7 must be clear. -bit28 - Available for your own use. +bit28 * + Reserved for future. -bit29 - Available for your own use. +bit29 * + Reserved for future. bit30 Available for your own use. bit31 Index: exec.c ================================================================== --- exec.c +++ exec.c @@ -777,16 +777,16 @@ oE=objects[objE]; if(oE->height>0) { hit&=0xFC287000; v=send_message(objE,obj,MSG_HIT,NVALUE(oE->x),NVALUE(oE->y),NVALUE(hit)); if(v.t) Throw("Type mismatch in HIT/HITBY"); - hit|=v.u&(classes[o->class]->cflags&CF_COMPATIBLE?0xF0098F7F:-1); + hit|=v.u&(classes[o->class]->cflags&CF_COMPATIBLE?0xC0098F7F:-1); if(hit&8) goto fail; if(!(hit&0x11)) { v=send_message(obj,objE,MSG_HITBY,NVALUE(o->x),NVALUE(o->y),NVALUE(hit)); if(v.t) Throw("Type mismatch in HIT/HITBY"); - hit|=v.u&(classes[oE->class]->cflags&CF_COMPATIBLE?0xF0098F7F:-1); + hit|=v.u&(classes[oE->class]->cflags&CF_COMPATIBLE?0xC0098F7F:-1); if(hit&8) goto fail; } } objE=obj_below(objE); } @@ -844,16 +844,16 @@ if(oE->height>0) { hit&=~7; // HIT/HITBY messages v=send_message(objE,obj,MSG_HIT,NVALUE(oE->x),NVALUE(oE->y),NVALUE(hit)); if(v.t) Throw("Type mismatch in HIT/HITBY"); - hit|=v.u&(classes[o->class]->cflags&CF_COMPATIBLE?0xF0098F7F:-1); + hit|=v.u&(classes[o->class]->cflags&CF_COMPATIBLE?0xC0098F7F:-1); if(hit&8) goto fail; if(!(hit&0x11)) { v=send_message(obj,objE,MSG_HITBY,NVALUE(o->x),NVALUE(o->y),NVALUE(hit)); if(v.t) Throw("Type mismatch in HIT/HITBY"); - hit|=v.u&(classes[oE->class]->cflags&CF_COMPATIBLE?0xF0098F7F:-1); + hit|=v.u&(classes[oE->class]->cflags&CF_COMPATIBLE?0xC0098F7F:-1); } if(hit&0x108) goto fail; // Hardness/sharpness if(!(hit&0x22)) { if(o->sharp[dir>>1]>oE->hard[(dir^4)>>1] && !v_bool(destroy(obj,objE,2))) hit|=0x8004; @@ -890,16 +890,16 @@ if(oE->height>0) { hit&=~7; // HIT/HITBY messages v=send_message(objE,obj,MSG_HIT,NVALUE(oE->x),NVALUE(oE->y),NVALUE(hit)); if(v.t) Throw("Type mismatch in HIT/HITBY"); - hit|=v.u&(classes[o->class]->cflags&CF_COMPATIBLE?0xF0098F7F:-1); + hit|=v.u&(classes[o->class]->cflags&CF_COMPATIBLE?0xC0098F7F:-1); if(hit&8) goto otherside; if(!(hit&0x11)) { v=send_message(obj,objE,MSG_HITBY,NVALUE(o->x),NVALUE(o->y),NVALUE(hit)); if(v.t) Throw("Type mismatch in HIT/HITBY"); - hit|=v.u&(classes[oE->class]->cflags&CF_COMPATIBLE?0xF0098F7F:-1); + hit|=v.u&(classes[oE->class]->cflags&CF_COMPATIBLE?0xC0098F7F:-1); } if(hit&0x108) goto otherside; // Hardness/sharpness if(!(hit&0x22)) { if(o->sharp[dir>>1]>oE->hard[(dir^4)>>1] && !v_bool(destroy(obj,objE,2))) hit|=0x8004; @@ -925,16 +925,16 @@ if(oE->height>0) { hit&=~7; // HIT/HITBY messages v=send_message(objE,obj,MSG_HIT,NVALUE(oE->x),NVALUE(oE->y),NVALUE(hit)); if(v.t) Throw("Type mismatch in HIT/HITBY"); - hit|=v.u&(classes[o->class]->cflags&CF_COMPATIBLE?0xF0098F7F:-1); + hit|=v.u&(classes[o->class]->cflags&CF_COMPATIBLE?0xC0098F7F:-1); if(hit&8) goto fail; if(!(hit&0x11)) { v=send_message(obj,objE,MSG_HITBY,NVALUE(o->x),NVALUE(o->y),NVALUE(hit)); if(v.t) Throw("Type mismatch in HIT/HITBY"); - hit|=v.u&(classes[oE->class]->cflags&CF_COMPATIBLE?0xF0098F7F:-1); + hit|=v.u&(classes[oE->class]->cflags&CF_COMPATIBLE?0xC0098F7F:-1); } if(hit&0x108) goto fail; // Hardness/sharpness if(!(hit&0x22)) { if(o->sharp[dir>>1]>oE->hard[(dir^4)>>1] && !v_bool(destroy(obj,objE,2))) hit|=0x8004;