B04005 - leash and uncontrolled teleportation
<Someone> reported that after an uncontrolled teleport due to eating a leprechaun, his leashed pet was still leashed until he took one more step. The usual approach which included disallowing the teleport seemed wrong in this case, so I put in an abbreviated version that does its checks but does not disallow the teleport. The pet teleports with you in the same cases as other teleports, but when it doesn't, the leash snaps loose.
This commit is contained in:
@@ -221,17 +221,18 @@ moveloop()
|
||||
|
||||
if(!u.uinvulnerable) {
|
||||
if(Teleportation && !rn2(85)) {
|
||||
#ifdef REDO
|
||||
xchar old_ux = u.ux, old_uy = u.uy;
|
||||
#endif
|
||||
tele();
|
||||
#ifdef REDO
|
||||
if (u.ux != old_ux || u.uy != old_uy) {
|
||||
if (!next_to_u()) {
|
||||
check_leash(old_ux, old_uy);
|
||||
}
|
||||
#ifdef REDO
|
||||
/* clear doagain keystrokes */
|
||||
pushch(0);
|
||||
savech(0);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
/* delayed change may not be valid anymore */
|
||||
if ((change == 1 && !Polymorph) ||
|
||||
|
||||
Reference in New Issue
Block a user