Free Hero Mesh

Check-in [eab8aabd4b]
Login
This is a mirror of the main repository for Free Hero Mesh. New tickets and changes will not be accepted at this mirror.
Overview
Comment:If object being shoved is made VisualOnly, do not allow it to be shoved
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: eab8aabd4b1c064f24a3cb9c308a93ac8d08c1c4
User & Date: user on 2020-12-21 07:53:09
Other Links: manifest | tags
Context
2020-12-21
22:10
A correction in the compile script check-in: 80137c63d2 user: user tags: trunk
07:53
If object being shoved is made VisualOnly, do not allow it to be shoved check-in: eab8aabd4b user: user tags: trunk
01:26
The direction for NewX and NewY should use only the low 3-bits; correct that so that it is. check-in: f1962f879e user: user tags: trunk
Changes

Modified exec.c from [e9aa24edae] to [fd399e3ec1].

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;