[net.games.hack] Hack 1.0.2 fix for mellow shopkeepers.

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.