803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
|
if(!(hit&0x22)) {
if(o->sharp[dir>>1]>oE->hard[(dir^4)>>1] && !v_bool(destroy(obj,objE,2))) hit|=0x8004;
if(oE->sharp[(dir^4)>>1]>o->hard[dir>>1] && !v_bool(destroy(objE,obj,1))) hit|=0x4C;
}
if(hit&0x200) goto fail;
}
// Shoving
if(!(hit&0x44) && (oE->shovable&(1<<dir)) && o->inertia>=oE->weight) {
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;
|
|
|
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
|
if(!(hit&0x22)) {
if(o->sharp[dir>>1]>oE->hard[(dir^4)>>1] && !v_bool(destroy(obj,objE,2))) hit|=0x8004;
if(oE->sharp[(dir^4)>>1]>o->hard[dir>>1] && !v_bool(destroy(objE,obj,1))) hit|=0x4C;
}
if(hit&0x200) goto fail;
}
// 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;
|