Difference between revisions of "Talk:Shambling horror"

From NetHackWiki
Jump to navigation Jump to search
(Created page with "UnNetHack details found here: http://sourceforge.net/p/unnethack/code/1588/ you are on your own for the Sporkhack details. --~~~~")
 
Line 9: Line 9:
  
 
--[[User:Ozymandias|Ozymandias]] ([[User talk:Ozymandias|talk]]) 20:58, 11 August 2013 (UTC)
 
--[[User:Ozymandias|Ozymandias]] ([[User talk: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->mlevel += rnd(6)-3; /* shuffle level */
 +
shambler->mmove = rn2(10)+9; /* slow to very fast */
 +
shambler->ac = rn2(21)-10; /* any AC */
 +
shambler->mr = rn2(5)*25; /* varying amounts of MR */
 +
shambler->maligntyp = rn2(21)-10; /* any alignment */
 +
/* attacks...?  */
 +
for (i = 0; i < rnd(4); i++) {
 +
attkptr = &shambler->mattk[i];
 +
attkptr->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->aatyp == AT_BOOM) {
 +
attkptr->aatyp = AT_MAGC;
 +
}
 +
if (attkptr->aatyp == AT_EXPL) {
 +
attkptr->aatyp = AT_WEAP;
 +
}
 +
attkptr->adtyp = 0;
 +
/* Don't let the special Rider attacks be used here
 +
* ...everything else is fair game :D */
 +
while (attkptr->adtyp == 0 || attkptr->adtyp == AD_DETH ||
 +
attkptr->adtyp == AD_PEST || attkptr->adtyp == AD_FAMN ||
 +
attkptr->adtyp == AD_SPC1 || attkptr->adtyp == AD_SPC2) {
 +
attkptr->adtyp = rnd(AD_CORR);
 +
}
 +
if (attkptr->aatyp == AT_MAGC) {
 +
attkptr->adtyp = AD_CLRC + rn2(2); /* AT_MAGC must correspond to a spell type */
 +
}
 +
if (attkptr->aatyp == AT_BREA) {
 +
attkptr->adtyp == AD_RBRE; /* Tiamat's breath weapon if you're a breather at all :)  */
 +
}
 +
attkptr->damn = 2; /* we're almost sure to get this wrong first time */
 +
attkptr->damd = 10; /* either too high or too low */
 +
}
 +
shambler->msize = rn2(MZ_GIGANTIC+1); /* any size */
 +
shambler->cwt = 20; /* fortunately moot as it's flagged NOCORPSE */
 +
shambler->cnutrit = 20; /* see above */
 +
shambler->msound = rn2(MS_HUMANOID); /* any but the specials */
 +
shambler->mresists = 0;
 +
for (i = 0; i < rnd(6); i++) {
 +
shambler->mresists |= (1 << rn2(8)); /* physical resistances... */
 +
}
 +
for (i = 0; i < rnd(5); i++) {
 +
shambler->mresists |= (0x100 << rn2(7)); /* 'different' resistances, even clumsy */
 +
}
 +
shambler->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->mflags1 = 0;
 +
for (i = 0; i < rnd(17); i++) {
 +
shambler->mflags1 |= (1 << rn2(33)); /* trainwreck this way :D */
 +
}
 +
shambler->mflags1 &= ~M1_UNSOLID; /* no ghosts */
 +
shambler->mflags1 &= ~M1_WALLWALK; /* no wall-walkers */
 +
 +
shambler->mflags2 = M2_NOPOLY | M2_HOSTILE; /* Don't let the player be one of these yet. */
 +
for (i = 0; i < rnd(17); i++) {
 +
shambler->mflags2 |= (1 << rn2(33));
 +
}
 +
shambler->mflags2 &= ~M2_MERC; /* no guards */
 +
shambler->mflags2 &= ~M2_PEACEFUL; /* no peacefuls */
 +
shambler->mflags2 &= ~M2_WERE; /* no lycanthropes */
 +
shambler->mflags2 &= ~M2_PNAME; /* not a proper name */
 +
 +
for (i = 0; i < rnd(5); i++) {
 +
shambler->mflags3 |= (0x100 << rn2(6)); /* no covetous, but any of the middle M3_ flags are OK */
 +
}
 +
if (rn2(2)) {
 +
shambler->mflags4 |= (1 << rn2(4)); /* don't overload it with vulnerabilities */
 +
}
 +
 +
return;
 +
 +
--[[User:Ozymandias|Ozymandias]] ([[User talk:Ozymandias|talk]]) 22:12, 11 August 2013 (UTC)

Revision as of 22:12, 11 August 2013

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->mlevel += rnd(6)-3; /* shuffle level */ shambler->mmove = rn2(10)+9; /* slow to very fast */ shambler->ac = rn2(21)-10; /* any AC */ shambler->mr = rn2(5)*25; /* varying amounts of MR */ shambler->maligntyp = rn2(21)-10; /* any alignment */ /* attacks...? */ for (i = 0; i < rnd(4); i++) { attkptr = &shambler->mattk[i]; attkptr->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->aatyp == AT_BOOM) { attkptr->aatyp = AT_MAGC; } if (attkptr->aatyp == AT_EXPL) { attkptr->aatyp = AT_WEAP; } attkptr->adtyp = 0; /* Don't let the special Rider attacks be used here * ...everything else is fair game :D */ while (attkptr->adtyp == 0 || attkptr->adtyp == AD_DETH || attkptr->adtyp == AD_PEST || attkptr->adtyp == AD_FAMN || attkptr->adtyp == AD_SPC1 || attkptr->adtyp == AD_SPC2) { attkptr->adtyp = rnd(AD_CORR); } if (attkptr->aatyp == AT_MAGC) { attkptr->adtyp = AD_CLRC + rn2(2); /* AT_MAGC must correspond to a spell type */ } if (attkptr->aatyp == AT_BREA) { attkptr->adtyp == AD_RBRE; /* Tiamat's breath weapon if you're a breather at all :) */ } attkptr->damn = 2; /* we're almost sure to get this wrong first time */ attkptr->damd = 10; /* either too high or too low */ } shambler->msize = rn2(MZ_GIGANTIC+1); /* any size */ shambler->cwt = 20; /* fortunately moot as it's flagged NOCORPSE */ shambler->cnutrit = 20; /* see above */ shambler->msound = rn2(MS_HUMANOID); /* any but the specials */ shambler->mresists = 0; for (i = 0; i < rnd(6); i++) { shambler->mresists |= (1 << rn2(8)); /* physical resistances... */ } for (i = 0; i < rnd(5); i++) { shambler->mresists |= (0x100 << rn2(7)); /* 'different' resistances, even clumsy */ } shambler->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->mflags1 = 0; for (i = 0; i < rnd(17); i++) { shambler->mflags1 |= (1 << rn2(33)); /* trainwreck this way :D */ } shambler->mflags1 &= ~M1_UNSOLID; /* no ghosts */ shambler->mflags1 &= ~M1_WALLWALK; /* no wall-walkers */

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

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

return;

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