# Talk:Shambling horror
UnNetHack details found here:
http://sourceforge.net/p/unnethack/code/1588/

you are on your own for the Sporkhack details.

--Ozymandias (talk) 20:58, 11 August 2013 (UTC)

EDIT: here are *some* of the Sporkhack details

/* what a horrible night to have a curse */
	shambler-&gt;mlevel += rnd(6)-3;				/* shuffle level */
	shambler-&gt;mmove = rn2(10)+9;				/* slow to very fast */
	shambler-&gt;ac = rn2(21)-10;					/* any AC */
	shambler-&gt;mr = rn2(5)*25;					/* varying amounts of MR */
	shambler-&gt;maligntyp = rn2(21)-10;			/* any alignment */
	/* attacks...?  */
	for (i = 0; i &lt; rnd(4); i++) {
		attkptr = &amp;shambler-&gt;mattk[i];
		attkptr-&gt;aatyp = rn2(AT_GAZE);		/* limit it to semi-normal attacks for now */
		/* theoretically rnd(AT_GAZE)-3 should work since these are uchar, but
		 * let's not totally confuse the poor people browsing... */
		if (attkptr-&gt;aatyp == AT_BOOM) {
			attkptr-&gt;aatyp = AT_MAGC;
		}
		if (attkptr-&gt;aatyp == AT_EXPL) {
			attkptr-&gt;aatyp = AT_WEAP;
		}
		attkptr-&gt;adtyp = 0;
		/* Don't let the special Rider attacks be used here 
		 * ...everything else is fair game :D */
		while (attkptr-&gt;adtyp == 0 || attkptr-&gt;adtyp == AD_DETH ||
					attkptr-&gt;adtyp == AD_PEST || attkptr-&gt;adtyp == AD_FAMN ||
					attkptr-&gt;adtyp == AD_SPC1 || attkptr-&gt;adtyp == AD_SPC2) {
			attkptr-&gt;adtyp = rnd(AD_CORR);
		}
		if (attkptr-&gt;aatyp == AT_MAGC) {
			attkptr-&gt;adtyp = AD_CLRC + rn2(2);	 /* AT_MAGC must correspond to a spell type */
		}
		if (attkptr-&gt;aatyp == AT_BREA) {
			attkptr-&gt;adtyp == AD_RBRE;				 /* Tiamat's breath weapon if you're a breather at all&nbsp;:)  */
		}
		attkptr-&gt;damn = 2;							 /* we're almost sure to get this wrong first time */
		attkptr-&gt;damd = 10;							 /* either too high or too low */
	}
	shambler-&gt;msize = rn2(MZ_GIGANTIC+1);	/* any size */
	shambler-&gt;cwt = 20;							/* fortunately moot as it's flagged NOCORPSE */
	shambler-&gt;cnutrit = 20;						/* see above */
	shambler-&gt;msound = rn2(MS_HUMANOID);	/* any but the specials */
	shambler-&gt;mresists = 0;
	for (i = 0; i &lt; rnd(6); i++) {
		shambler-&gt;mresists |= (1 &lt;&lt; rn2(8));		/* physical resistances... */
	}
	for (i = 0; i &lt; rnd(5); i++) {
		shambler-&gt;mresists |= (0x100 &lt;&lt; rn2(7));	/* 'different' resistances, even clumsy */
	}
	shambler-&gt;mconveys = 0;						/* flagged NOCORPSE */
	/*
	 * now time for the random flags.  this will likely produce
	 * a number of complete trainwreck monsters at first, but
	 * every so often something will dial up nasty stuff
	 */
	shambler-&gt;mflags1 = 0;
	for (i = 0; i &lt; rnd(17); i++) {
		shambler-&gt;mflags1 |= (1 &lt;&lt; rn2(33));		/* trainwreck this way :D */
	}
	shambler-&gt;mflags1 &amp;= ~M1_UNSOLID;				/* no ghosts */
	shambler-&gt;mflags1 &amp;= ~M1_WALLWALK;				/* no wall-walkers */

	shambler-&gt;mflags2 = M2_NOPOLY | M2_HOSTILE;	/* Don't let the player be one of these yet. */
	for (i = 0; i &lt; rnd(17); i++) {
		shambler-&gt;mflags2 |= (1 &lt;&lt; rn2(33));
	}
	shambler-&gt;mflags2 &amp;= ~M2_MERC;					/* no guards */
	shambler-&gt;mflags2 &amp;= ~M2_PEACEFUL;				/* no peacefuls */
	shambler-&gt;mflags2 &amp;= ~M2_WERE;					/* no lycanthropes */
	shambler-&gt;mflags2 &amp;= ~M2_PNAME;					/* not a proper name */

	for (i = 0; i &lt; rnd(5); i++) {
		shambler-&gt;mflags3 |= (0x100 &lt;&lt; rn2(6));	/* no covetous, but any of the middle M3_ flags are OK */
	}
	if (rn2(2)) {
		shambler-&gt;mflags4 |= (1 &lt;&lt; rn2(4));			/* don't overload it with vulnerabilities */
	}

	return;

--Ozymandias (talk) 22:12, 11 August 2013 (UTC)