myers@uwmacc.UUCP (Latitudinarian Lobster) (06/05/85)
I've always thought it a bit funny that shopkeepers didn't mind you having a box or pickaxe IN the shop -- you are only checked when you enter. It was recently pointed out that you can currently always get in the front door with a pickaxe if you are patient enough. Below is a context diff for a patch (with a couple of older ones included) which will cause the shopkeeper to become angry if you are ever in his shop with a box or a pickaxe (aside from standing on the front door). *** hack.shk.c.old Mon Apr 29 18:42:44 1985 --- hack.shk.c Tue Jun 4 18:16:25 1985 *************** *** 233,239 if(ANGRY(shopkeeper) && strncmp(ESHK(shopkeeper)->customer,plname,PL_NSIZ)) NOTANGRY(shopkeeper) = 1; - billobjs = 0; return; } shopkeeper = 0; --- 233,238 ----- if(ANGRY(shopkeeper) && strncmp(ESHK(shopkeeper)->customer,plname,PL_NSIZ)) NOTANGRY(shopkeeper) = 1; return; } shopkeeper = 0; *************** *** 816,821 else { uondoor = (u.ux == ESHK(shkp)->shd.x && u.uy == ESHK(shkp)->shd.y); if(uondoor) { if(ESHK(shkp)->billct) pline("Hello %s! Will you please pay before leaving?", --- 815,821 ----- else { uondoor = (u.ux == ESHK(shkp)->shd.x && u.uy == ESHK(shkp)->shd.y); + badinv = (carrying(PICK_AXE) || carrying(ICE_BOX)); if(uondoor) { if(ESHK(shkp)->billct) pline("Hello %s! Will you please pay before leaving?", *************** *** 820,826 if(ESHK(shkp)->billct) pline("Hello %s! Will you please pay before leaving?", plname); - badinv = (carrying(PICK_AXE) || carrying(ICE_BOX)); if(satdoor && badinv) return(0); avoid = !badinv; --- 820,825 ----- if(ESHK(shkp)->billct) pline("Hello %s! Will you please pay before leaving?", plname); if(satdoor && badinv) return(0); avoid = !badinv; *************** *** 824,832 if(satdoor && badinv) return(0); avoid = !badinv; ! } else { ! avoid = (u.uinshop && dist(gx,gy) > 8); ! badinv = FALSE; } if(((!ESHK(shkp)->robbed && !ESHK(shkp)->billct) || avoid) --- 823,833 ----- if(satdoor && badinv) return(0); avoid = !badinv; ! } else { /* uwmacc!myers; get angry */ ! if(u.uinshop && badinv) { /* if you're not in doorway */ ! avoid = FALSE; ! setmangry(shkp); ! } else avoid = (u.uinshop && dist(gx,gy) > 8); } if(((!ESHK(shkp)->robbed && !ESHK(shkp)->billct) || avoid)
aeb@mcvax.UUCP (Andries Brouwer) (06/08/85)
I disagree with this "fix" - it violates the shopkeeper philosophy. As it is now the shopkeeper will NEVER attack you unless you attacked him first. This pseudo-fix would make the shopkeeper attack you under other circumstances as well, e.g. when you fall into a shop through a trapdoor while carrying a pick-axe.