--- orig/rpggame/rpgent.h
+++ mod/rpggame/rpgent.h
@@ -205,6 +205,14 @@
         move = yes;
     }
 
+    float r_dist(rpgent &te)
+    {
+        vec target;
+        if(raycubelos(o, te.o, target))
+            return target.dist(o);
+        return -1;
+    }
+
     void gotopos(vec &pos, int s, int m, int t) { gotoyaw(vecyaw(pos), s, m, t); }
 
     void goroam()


--- orig/rpggame/rpgobjset.h
+++ mod/rpggame/rpgobjset.h
@@ -88,6 +88,7 @@
         CCOMMAND(r_push_weapon, "",    (rpgobjset *self), { if (self->stack[0]->ent) self->pushobj(&self->stack[0]->selectedweapon()); });
         CCOMMAND(r_npcstate,    "i",   (rpgobjset *self, int *d), { if (self->stack[0]->ent) self->stack[0]->ent->npcstate = *d; });
         CCOMMAND(r_get_npcstate,"",    (rpgobjset *self), { if (self->stack[0]->ent) intret(self->stack[0]->ent->npcstate); });
+        CCOMMAND(r_dist,        "",    (rpgobjset *self), { if (self->stack[0]->ent && self->stack[1]->ent) floatret(self->stack[1]->ent->r_dist(*self->stack[0]->ent)); });
         clearworld();
     }
 



