mirror of
https://codeberg.org/noisytoot/notnotdnethack.git
synced 2025-08-08 21:55:25 +01:00
Merge branch 'compat-3.21.3' into devel-3.21.4
This commit is contained in:
commit
20530d8cef
17 changed files with 362 additions and 136 deletions
|
@ -337,8 +337,9 @@ NEARDATA extern coord bhitpos; /* place where throw or zap hits or stops */
|
|||
#define BEAT 22
|
||||
#define BONES 23
|
||||
#define EAR 24
|
||||
#define CREAK 25
|
||||
#define CRACK 26
|
||||
#define EARS 25
|
||||
#define CREAK 26
|
||||
#define CRACK 27
|
||||
|
||||
#define BALL_IN_MON (u.uswallow && uball && uball->where == OBJ_FREE)
|
||||
#define CHAIN_IN_MON (u.uswallow && uchain && uchain->where == OBJ_FREE)
|
||||
|
|
BIN
junethack_trophies/dnh_chiropteran.png
Normal file
BIN
junethack_trophies/dnh_chiropteran.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 933 B |
BIN
junethack_trophies/dnh_clockwork.png
Normal file
BIN
junethack_trophies/dnh_clockwork.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 1.1 KiB |
BIN
junethack_trophies/dnh_half_dragon.png
Normal file
BIN
junethack_trophies/dnh_half_dragon.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 648 B |
BIN
junethack_trophies/dnh_law_quest.png
Normal file
BIN
junethack_trophies/dnh_law_quest.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 749 B |
BIN
junethack_trophies/dnh_yuki_onna.png
Normal file
BIN
junethack_trophies/dnh_yuki_onna.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 699 B |
|
@ -19,11 +19,11 @@ dwarf_noble_quest,Durin's Bane's Bane,Completed the dwarf noble quest,x,@ and &
|
|||
dwarf_knight_quest,Battle of (5-4) armies,Completed the dwarf knight quest,x,@ facing a bunch of o
|
||||
gnome_ranger_quest,Strongest of all time,Completed the gnome ranger quest,x,Gnome sniping a kobold
|
||||
elf_shared_quest,Driven out,Completed the elf shared quest,dnh_elf_shared_quest.png,
|
||||
clockwork_ascension,Deus ex machina,Ascended a clockwork automaton,x,Gear-@ with a hovering crown
|
||||
chiropteran_ascension,Bat outa hell,Ascended a chiropteran,x,B above lava with a hovering crown
|
||||
yuki_onna_ascension,Snow in heaven,Ascended a yuki-onna,x,n with snowflakes with a hovering crown
|
||||
half_dragon_ascension,Three halves,Ascended a half-dragon,x,D with a hovering crown
|
||||
law_quest,Ripple-resistant tower,Completed the law quest,x,Butterfly
|
||||
clockwork_ascension,Deus ex machina,Ascended a clockwork automaton,dnh_clockwork.png,
|
||||
chiropteran_ascension,Bat outa hell,Ascended a chiropteran,dnh_chiropteran.png,
|
||||
yuki_onna_ascension,Snow in heaven,Ascended a yuki-onna,dnh_yuki_onna.png,
|
||||
half_dragon_ascension,Three halves,Ascended a half-dragon,dnh_half_dragon.png,
|
||||
law_quest,Ripple-resistant tower,Completed the law quest,dnh_law_quest.png,
|
||||
neutral_quest,Key to the (corpse) city,Completed the neutral quest,x,
|
||||
chaos_temple_quest,Asinine paradigm,Completed the chaos temple quest,dnh_chaos1_quest.png,
|
||||
mithardir_quest,Chasing after the wind,Completed the mithardir quest,x,
|
||||
|
|
|
19
src/apply.c
19
src/apply.c
|
@ -1964,18 +1964,17 @@ dorub()
|
|||
}
|
||||
}
|
||||
|
||||
if (!obj || !wield_tool(obj, "rub")) return 0;
|
||||
if (!obj) return 0;
|
||||
|
||||
/* now uwep is obj */
|
||||
if (uwep->otyp == MAGIC_LAMP) {
|
||||
if (uwep->spe > 0 && !rn2(3)) {
|
||||
check_unpaid_usage(uwep, TRUE); /* unusual item use */
|
||||
djinni_from_bottle(uwep);
|
||||
if (obj->otyp == MAGIC_LAMP) {
|
||||
if (obj->spe > 0 && !rn2(3)) {
|
||||
check_unpaid_usage(obj, TRUE); /* unusual item use */
|
||||
djinni_from_bottle(obj);
|
||||
makeknown(MAGIC_LAMP);
|
||||
uwep->otyp = OIL_LAMP;
|
||||
uwep->spe = 0; /* for safety */
|
||||
uwep->age = rn1(500,1000);
|
||||
if (uwep->lamplit) begin_burn(uwep);
|
||||
obj->otyp = OIL_LAMP;
|
||||
obj->spe = 0; /* for safety */
|
||||
obj->age = rn1(500,1000);
|
||||
if (obj->lamplit) begin_burn(obj);
|
||||
update_inventory();
|
||||
} else if (rn2(2) && !Blind)
|
||||
You("see a puff of smoke.");
|
||||
|
|
|
@ -11737,7 +11737,7 @@ int spe;
|
|||
pline("You hear chattering among the stars.");
|
||||
break;
|
||||
case 4:
|
||||
pline("You hear ringing in your %s.", makeplural(body_part(EAR)));
|
||||
pline("You hear ringing in your %s.", body_part(EARS));
|
||||
break;
|
||||
case 5:
|
||||
pline("You hear silence in heaven.");
|
||||
|
|
|
@ -8252,10 +8252,10 @@ struct monst *mtmp;
|
|||
}
|
||||
else {
|
||||
if(canseemon(tmpm) && canseemon(mtmp)){
|
||||
pline("Gray light shines from %s %s.", s_suffix(mon_nam(tmpm)), makeplural(mbodypart(tmpm, EAR)));
|
||||
pline("Gray light shines from %s %s.", s_suffix(mon_nam(tmpm)), mbodypart(tmpm, EARS));
|
||||
pline("The light is drawn under %s bell.", s_suffix(mon_nam(mtmp)));
|
||||
} else if(canseemon(tmpm)){
|
||||
pline("Gray light shines from %s %s.", s_suffix(mon_nam(tmpm)), makeplural(mbodypart(tmpm, EAR)));
|
||||
pline("Gray light shines from %s %s.", s_suffix(mon_nam(tmpm)), mbodypart(tmpm, EARS));
|
||||
} else if(canseemon(mtmp)){
|
||||
pline("Gray light is drawn under %s bell.", s_suffix(mon_nam(mtmp)));
|
||||
}
|
||||
|
|
|
@ -337,8 +337,8 @@ int template;
|
|||
ptr->mflagsm |= (MM_BREATHLESS);
|
||||
ptr->mflagst |= (MT_HOSTILE | MT_STALK);
|
||||
ptr->mflagst &= ~(MT_PEACEFUL | MT_ITEMS | MT_HIDE | MT_CONCEAL);
|
||||
ptr->mflagsg &= ~(MG_INFRAVISIBLE);
|
||||
ptr->mflagsg |= (MG_REGEN);
|
||||
ptr->mflagsg &= ~(MG_INFRAVISIBLE|MG_HATESUNHOLY);
|
||||
ptr->mflagsg |= (MG_REGEN|MG_HATESHOLY|MG_HATESSILVER);
|
||||
ptr->mflagsa |= (MA_UNDEAD | MA_VAMPIRE);
|
||||
/* resists: */
|
||||
ptr->mresists |= (MR_SLEEP | MR_POISON); /* individual monsters gain cold res at mlev >= 10 */
|
||||
|
|
|
@ -7276,7 +7276,7 @@ MM_FLY /*MM*/, MT_STALK|MT_HOSTILE|MT_COLLECT|MT_BOLD /*MT*/, MF_MARTIAL_E|MF_BA
|
|||
A(NO_ATTK),
|
||||
SIZ(WT_GIGANTIC, 0, MS_FLOWER, MZ_GIGANTIC), MR_COLD|MR_POISON|MR_STONE, 0,
|
||||
MM_BREATHLESS|MM_STATIONARY /*MM*/, MT_HOSTILE|MT_MINDLESS|MT_NOTAKE /*MT*/, 0 /*MF*/,
|
||||
MB_FEMALE|MB_HUMANOID /*MB*/, MG_WRESIST|MG_NOPOLY|MG_SANLOSS|MG_INSIGHT /*MG*/,
|
||||
MB_FEMALE|MB_HUMANOID|MB_NOFEET /*MB*/, MG_WRESIST|MG_NOPOLY|MG_SANLOSS|MG_INSIGHT /*MG*/,
|
||||
MA_G_O_O|MA_PLANT|MA_PRIMORDIAL /*MA*/, MV_NORMAL /*MV*/, CLR_GRAY),
|
||||
|
||||
MON("warden tree", S_PLANT,//19 /* Needs encyc entry */
|
||||
|
|
|
@ -167,6 +167,8 @@ int force_linedup; /* if TRUE, we have some offensive item ready that will work
|
|||
|
||||
/* get location of next target */
|
||||
if (mdef == &youmonst) {
|
||||
if(no_upos(magr)) //They don't know where you are.
|
||||
continue;
|
||||
tarx = magr->mux;
|
||||
tary = magr->muy;
|
||||
|
||||
|
|
|
@ -4674,9 +4674,9 @@ int wishflags;
|
|||
*wishreturn = WISH_SUCCESS;
|
||||
return (&zeroobj);
|
||||
#else
|
||||
otmp = mksobj(GOLD_PIECE, mkobjflags|MKOBJ_NOINIT);
|
||||
otmp = mksobj(GOLD_PIECE, mkobjflags|MKOBJ_NOINIT);
|
||||
otmp->quan = cnt;
|
||||
otmp->owt = weight(otmp);
|
||||
otmp->owt = weight(otmp);
|
||||
flags.botl=1;
|
||||
*wishreturn = WISH_SUCCESS;
|
||||
return (otmp);
|
||||
|
|
396
src/polyself.c
396
src/polyself.c
|
@ -2015,80 +2015,222 @@ struct monst *mon;
|
|||
int part;
|
||||
{
|
||||
static NEARDATA const char
|
||||
*humanoid_parts[] = { "arm", "eye", "face", "finger",
|
||||
"fingertip", "foot", "hand", "handed", "head", "leg",
|
||||
"light headed", "neck", "spine", "toe", "hair",
|
||||
"blood", "lung", "nose", "stomach","heart","skin",
|
||||
"flesh","beat","bones","ear","creak","crack"},
|
||||
*clockwork_parts[] = { "arm", "photoreceptor", "face", "grasping digit",
|
||||
"digit-tip", "foot", "manipulator", "manipulatored", "head", "leg",
|
||||
"addled", "neck", "chassis", "toe", "doll-hair",
|
||||
"oil", "gear", "chemoreceptor", "keyhole","mainspring","metal skin",
|
||||
"brass structure","tick","rods","phonoreceptor","creak","bend"},
|
||||
*jelly_parts[] = { "pseudopod", "dark spot", "front",
|
||||
"pseudopod extension", "pseudopod extremity",
|
||||
"pseudopod root", "grasp", "grasped", "cerebral area",
|
||||
"lower pseudopod", "viscous", "middle", "centriole",
|
||||
"pseudopod extremity", "ripples", "juices",
|
||||
"tiny cilia", "sensor", "stomach","cytoskeletal structure","membrane",
|
||||
"cortex","shift","cytoskeletal filaments","membrane","creak","crack" },
|
||||
*animal_parts[] = { "forelimb", "eye", "face", "foreclaw", "claw tip",
|
||||
"rear claw", "foreclaw", "clawed", "head", "rear limb",
|
||||
"light headed", "neck", "spine", "rear claw tip",
|
||||
"fur", "blood", "lung", "nose", "stomach","heart","skin",
|
||||
"flesh","beat","bones","ear","creak","crack" },
|
||||
*insect_parts[] = { "forelimb", "compound eye", "face", "foreclaw", "claw tip",
|
||||
"rear claw", "foreclaw", "clawed", "head", "rear limb",
|
||||
"light headed", "neck", "notochord", "rear claw tip",
|
||||
"setae", "ichor", "spriacle", "antenna", "stomach","dorsal vessel","exoskeleton",
|
||||
"chitin","pulse","apodeme","ear","creak","tear" },
|
||||
*bird_parts[] = { "wing", "eye", "face", "wing", "wing tip",
|
||||
"foot", "wing", "winged", "head", "leg",
|
||||
"light headed", "neck", "spine", "toe",
|
||||
"feathers", "blood", "lung", "bill", "stomach","heart","skin",
|
||||
"flesh","beat","bones","ear","creak","crack" },
|
||||
*horse_parts[] = { "foreleg", "eye", "face", "forehoof", "hoof tip",
|
||||
"rear hoof", "foreclaw", "hooved", "head", "rear leg",
|
||||
"light headed", "neck", "backbone", "rear hoof tip",
|
||||
"mane", "blood", "lung", "nose", "stomach","heart","skin",
|
||||
"flesh","beat","bones","ear","creak","crack"},
|
||||
*sphere_parts[] = { "appendage", "optic nerve", "body", "tentacle", "tentacle tip",
|
||||
"lower appendage", "tentacle", "tentacled", "body", "lower tentacle",
|
||||
"rotational", "equator", "body", "lower tentacle tip",
|
||||
"surface", "life force", "retina", "olfactory nerve","interior","core","surface",
|
||||
"subsurface layers","pulse","auras","tympanic membrane","flicker","blink out"},
|
||||
*fungus_parts[] = { "mycelium", "visual area", "front", "hypha",
|
||||
"hypha", "root", "strand", "stranded", "cap area",
|
||||
"rhizome", "sporulated", "stalk", "root", "rhizome tip",
|
||||
"spores", "juices", "gill", "gill", "interior","hyphal network","cuticle",
|
||||
"...it doesn't sound like much",
|
||||
"flesh","hyphae","tympanic area","stretch","tear" },
|
||||
*vortex_parts[] = { "region", "eye", "front", "minor current",
|
||||
"minor current", "lower current", "swirl", "swirled",
|
||||
"central core", "lower current", "addled", "center",
|
||||
"currents", "edge", "currents", "life force",
|
||||
"center", "leading edge", "interior","core","vaporous currents",
|
||||
"subsurface currents","pulse","currents","vapor","weaken","falter" },
|
||||
*snake_parts[] = { "vestigial limb", "eye", "face", "large scale",
|
||||
"large scale tip", "rear region", "scale gap", "scale gapped",
|
||||
"head", "rear region", "light headed", "neck", "length",
|
||||
"rear scale", "scales", "blood", "lung", "forked tongue", "stomach","heart","scales",
|
||||
"flesh","beat","bones","ear","creak","crack" },
|
||||
*fish_parts[] = { "fin", "eye", "premaxillary", "pelvic axillary",
|
||||
"pelvic fin", "anal fin", "pectoral fin", "finned", "head", "peduncle",
|
||||
"played out", "gills", "dorsal fin", "caudal fin",
|
||||
"scales", "blood", "gill", "nostril", "stomach","heart","scales",
|
||||
"flesh","beat","bones","ear","creak","crack" },
|
||||
*snakeleg_humanoid_parts[] = { "arm", "eye", "face", "finger",
|
||||
"fingertip", "serpentine lower body", "hand", "handed", "head", "rear region",
|
||||
"light headed", "neck", "spine", "tail-tip", "scales",
|
||||
"blood", "lung", "nose", "stomach","heart","scales",
|
||||
"flesh","beat","bones","ear","creak","crack" },
|
||||
*centauroid_parts[] = { "arm", "eye", "face", "finger",
|
||||
"fingertip", "hoof", "hand", "handed", "head", "front leg",
|
||||
"light headed", "neck", "spine", "hoof-nail", "hair",
|
||||
"blood", "lung", "nose", "stomach","heart","skin",
|
||||
"flesh","beat","bones","ear","creak","crack" };
|
||||
*humanoid_parts[] = {
|
||||
"arm", "eye", "face", "finger",
|
||||
"fingertip", "foot", "hand", "handed",
|
||||
"head", "leg", "light headed", "neck",
|
||||
"spine", "toe", "hair", "blood",
|
||||
"lung", "nose", "stomach", "heart",
|
||||
"skin", "flesh", "beat", "bones",
|
||||
"ear", "ears", "creak", "crack"},
|
||||
*uvuudaum_parts[] = {
|
||||
"arm", "eye", "headspike", "finger",
|
||||
"fingertip", "hand", "hand", "handed",
|
||||
"tentacle", "arm", "addled", "tentacle-base",
|
||||
"spine", "finger", "headspike", "ichor",
|
||||
"pore", "pore", "stomach", "heart",
|
||||
"skin", "flesh", "beat", "bones",
|
||||
"clairaudience", "clairaudience", "creak", "crack"},
|
||||
*clockwork_parts[] = {
|
||||
"arm", "photoreceptor", "face", "grasping digit",
|
||||
"digit-tip", "foot", "manipulator", "manipulatored",
|
||||
"head", "leg", "addled", "neck",
|
||||
"chassis", "toe", "doll-hair", "oil",
|
||||
"gear", "chemoreceptor", "keyhole", "mainspring",
|
||||
"foil skin", "brass structure", "tick", "armature",
|
||||
"phonoreceptor","phonoreceptors", "creak", "bend"},
|
||||
*doll_parts[] = {
|
||||
"arm", "glass eye", "face", "finger",
|
||||
"fingertip", "foot", "hand", "handed",
|
||||
"head", "leg", "addled", "neck",
|
||||
"trunk", "toe", "doll-hair", "ichor",
|
||||
"lip", "nose", "wood", "wood",
|
||||
"painted skin", "wood", "...it doesn't sound like much", "wood",
|
||||
"ear", "ears", "creak", "crack"},
|
||||
*android_parts[] = {
|
||||
"arm", "photoreceptor", "face", "finger",
|
||||
"fingertip", "foot", "hand", "handed",
|
||||
"head", "leg", "buggy", "neck",
|
||||
"dorsal wiring","toe", "doll-hair", "oily red liquid",
|
||||
"vocal pump", "chemoreceptor", "black box", "heart",
|
||||
"cosmetic layer","plasteel", "pump", "armature",
|
||||
"phonoreceptor","phonoreceptors", "flex", "crack"},
|
||||
*assessor_parts[] = {
|
||||
"arm", "eye", "central eye", "grasping digit",
|
||||
"digit-tip", "foot", "manipulator", "manipulatored",
|
||||
"head", "leg", "addled", "shoulders",
|
||||
"chassis", "toe", "topspike", "oil",
|
||||
"valve", "olfactory nerve", "gearbox", "eternal core",
|
||||
"armor", "brass structure", "tick", "armature",
|
||||
"phonoreceptor","phonoreceptors", "creak", "bend"},
|
||||
*audient_parts[] = {
|
||||
"distal limb", "photoreceptor", "front", "articulated distal spike",
|
||||
"spike-tip", "ventral needle", "distal spike", "spiked",
|
||||
"cap", "ventral limb", "addled", "stalk",
|
||||
"chassis", "needle-tip", "spores", "oil",
|
||||
"gear", "gill", "hyphal network","eternal core",
|
||||
"metal skin", "brass structure", "tick", "armature",
|
||||
"phonoreceptor horn","phonoreceptor horn","creak", "bend"},
|
||||
*jelly_parts[] = {
|
||||
"pseudopod", "dark spot", "front", "pseudopod extension",
|
||||
"pseudopod extremity","pseudopod root", "grasp", "grasped",
|
||||
"cerebral area", "lower pseudopod", "viscous", "middle",
|
||||
"centriole", "pseudopod extremity","ripples", "juices",
|
||||
"tiny cilia", "sensor", "stomach", "cytoskeletal structure",
|
||||
"membrane", "cortex", "shift", "cytoskeletal filaments",
|
||||
"membrane", "membrane", "creak", "crack" },
|
||||
*animal_parts[] = {
|
||||
"forelimb", "eye", "face", "foreclaw",
|
||||
"claw tip", "rear claw", "foreclaw", "clawed",
|
||||
"head", "rear limb", "light headed", "neck",
|
||||
"spine", "rear claw tip", "fur", "blood",
|
||||
"lung", "nose", "stomach", "heart",
|
||||
"skin", "flesh", "beat", "bones",
|
||||
"ear", "ears", "creak", "crack" },
|
||||
*insect_parts[] = {
|
||||
"forelimb", "compound eye", "face", "foreclaw",
|
||||
"claw tip", "rear claw", "foreclaw", "clawed",
|
||||
"head", "rear limb", "light headed", "neck",
|
||||
"notochord", "rear claw tip", "setae", "haemolymph",
|
||||
"spriacle", "antenna", "stomach", "dorsal vessel",
|
||||
"exoskeleton", "chitin", "pulse", "apodeme",
|
||||
"tympanum", "tympana", "creak", "tear" },
|
||||
*bird_parts[] = {
|
||||
"wing", "eye", "face", "wing",
|
||||
"wing tip", "foot", "wing", "winged",
|
||||
"head", "leg", "light headed", "neck",
|
||||
"spine", "toe", "feathers", "blood",
|
||||
"lung", "bill", "stomach", "heart",
|
||||
"skin", "flesh", "beat", "bones",
|
||||
"ear", "ears", "creak", "crack" },
|
||||
*horse_parts[] = {
|
||||
"foreleg", "eye", "face", "forehoof",
|
||||
"hoof tip", "rear hoof", "foreclaw", "hooved",
|
||||
"head", "rear leg", "light headed", "neck",
|
||||
"backbone", "rear hoof tip", "mane", "blood",
|
||||
"lung", "nose", "stomach", "heart",
|
||||
"skin", "flesh", "beat", "bones",
|
||||
"ear", "ears", "creak", "crack"},
|
||||
*sphere_parts[] = {
|
||||
"appendage", "optic nerve", "body", "tentacle",
|
||||
"tentacle tip", "lower appendage", "tentacle", "tentacled",
|
||||
"body", "lower tentacle", "rotational", "equator",
|
||||
"body", "lower tentacle tip","surface", "life force",
|
||||
"retina", "olfactory nerve", "interior", "core",
|
||||
"surface", "subsurface layers","pulse", "auras",
|
||||
"tympanic membrane","tympanic membranes","flicker", "blink out"},
|
||||
*spore_parts[] = {
|
||||
"stalk", "visual area", "front", "stalk",
|
||||
"stalk tip", "stalk", "stalk", "stalked",
|
||||
"annulus", "stalk", "addled", "equator",
|
||||
"body", "stalk tip", "surface", "sap",
|
||||
"lip", "lip", "interior", "spores",
|
||||
"annulus", "flesh", "...they don't sound like much","cells",
|
||||
"tympanic area", "tympanic area", "flex", "crack"},
|
||||
*fungus_parts[] = {
|
||||
"mycelium", "visual area", "front", "hypha",
|
||||
"hypha", "root", "strand", "stranded",
|
||||
"cap area", "rhizome", "sporulated", "stalk",
|
||||
"root", "rhizome tip", "spores", "juices",
|
||||
"gill", "gill", "interior", "hyphal network",
|
||||
"cuticle", "flesh", "...it doesn't sound like much","hyphae",
|
||||
"tympanic area", "tympanic area", "stretch", "tear" },
|
||||
*tree_parts[] = {
|
||||
"limb", "visual area", "front", "leaf",
|
||||
"leaftip", "taproot", "twig", "twigged",
|
||||
"crown", "root", "wilty", "trunk",
|
||||
"heartwood","root-tip", "leaves", "sap",
|
||||
"stoma", "stoma", "xylem", "phloem",
|
||||
"bark", "sapwood", "...it doesn't sound like much","wood",
|
||||
"tympanic area","tympanic area","creak", "crack" },
|
||||
*vipertree_parts[] = {
|
||||
"coil", "eye", "face", "mouth",
|
||||
"fang", "taproot", "viper head", "headed",
|
||||
"crown", "root", "disordered", "trunk",
|
||||
"heartwood","root-tip", "scales", "blood",
|
||||
"lung", "nose", "stomach", "heart",
|
||||
"scales", "sapwood", "beat", "wood",
|
||||
"ear", "ears", "creak", "crack" },
|
||||
*blackflower_parts[] = {
|
||||
"arm", "blank eye", "face", "finger",
|
||||
"fingertip", "petal" "hand", "handed",
|
||||
"head", "flower" , "light headed", "neck",
|
||||
"spine", "petal-tip", "hair", "pale fluid",
|
||||
"lung", "nose", "stomach", "heart",
|
||||
"skin", "flesh", "beat", "bones",
|
||||
"ear", "ears", "creak", "crack" },
|
||||
*plant_parts[] = {
|
||||
"shoot", "visual area", "front", "leaf",
|
||||
"leaftip", "lateral root", "twig", "twigged",
|
||||
"apical bud", "primary root", "wilty", "stem",
|
||||
"vascular tissue","root-tip", "leaves", "sap",
|
||||
"stoma", "stoma", "xylem", "phloem",
|
||||
"epidermis", "flesh", "...it doesn't sound like much","stem",
|
||||
"tympanic area","tympanic area","stretch", "tear" },
|
||||
*mandrake_parts[] = {
|
||||
"arm-root", "eye spot", "root-face", "arm-root tip",
|
||||
"arm-root hair","leg-root tip", "arm-root end", "rooted",
|
||||
"leaves", "leg-root", "wilty", "ground tissue",
|
||||
"spine", "leg-root hair","apical bud", "bloody sap",
|
||||
"stoma", "nose spots", "xylem", "phloem",
|
||||
"epidermis", "flesh", "...it doesn't sound like much","stem",
|
||||
"ear spot", "ear spots", "stretch", "tear" },
|
||||
*willow_parts[] = {
|
||||
"limb", "visual area", "front", "leaf",
|
||||
"leaftip", "taproot", "twig", "twigged",
|
||||
"crown", "root", "wilty", "trunk",
|
||||
"spine", "root-tip", "leaves", "blood",
|
||||
"stoma", "stoma", "xylem", "phloem",
|
||||
"bark", "flesh", "...it doesn't sound like much","wood",
|
||||
"tympanic area","tympanic area","creak", "crack" },
|
||||
*birch_parts[] = {
|
||||
"limb", "eye", "face", "thorn",
|
||||
"thorn-tip", "crawling-root","scaffold", "scaffolded",
|
||||
"head", "bud union", "light headed", "neck",
|
||||
"spine", "root-tip", "hair", "sap",
|
||||
"lung", "nose", "stomach", "heart",
|
||||
"bark", "sapwood", "beat", "wood",
|
||||
"ear", "ears", "creak", "crack" },
|
||||
*vortex_parts[] = {
|
||||
"region", "eye", "front", "minor current",
|
||||
"minor current", "lower current", "swirl", "swirled",
|
||||
"central core", "lower current", "addled", "center",
|
||||
"currents", "edge", "currents", "life force",
|
||||
"center", "leading edge", "interior", "core",
|
||||
"vaporous currents","subsurface currents","pulse", "currents",
|
||||
"vapor", "vapor", "weaken", "falter" },
|
||||
*snake_parts[] = {
|
||||
"vestigial limb", "eye", "face", "large scale",
|
||||
"large scale tip", "rear region", "scale gap", "scale gapped",
|
||||
"head", "rear region", "light headed", "neck",
|
||||
"length", "rear scale", "scales", "blood",
|
||||
"lung", "forked tongue", "stomach", "heart",
|
||||
"scales", "flesh", "beat", "bones",
|
||||
"ear", "ears", "creak", "crack" },
|
||||
*fish_parts[] = {
|
||||
"fin", "eye", "premaxillary", "pelvic axillary",
|
||||
"pelvic fin", "anal fin", "pectoral fin", "finned",
|
||||
"head", "peduncle", "played out", "gills",
|
||||
"dorsal fin", "caudal fin", "scales", "blood",
|
||||
"gill", "nostril", "stomach", "heart",
|
||||
"scales", "flesh", "beat", "bones",
|
||||
"ear", "ears", "creak", "crack" },
|
||||
*snakeleg_humanoid_parts[] = {
|
||||
"arm", "eye", "face", "finger",
|
||||
"fingertip", "serpentine lower body","hand", "handed",
|
||||
"head", "rear region", "light headed", "neck",
|
||||
"spine", "tail-tip", "scales", "blood",
|
||||
"lung", "nose", "stomach", "heart",
|
||||
"scales", "flesh", "beat", "bones",
|
||||
"ear", "ears", "creak", "crack" },
|
||||
*centauroid_parts[] = {
|
||||
"arm", "eye", "face", "finger",
|
||||
"fingertip", "hoof", "hand", "handed",
|
||||
"head", "front leg", "light headed", "neck",
|
||||
"spine", "hoof-nail", "hair", "blood",
|
||||
"lung", "nose", "stomach", "heart",
|
||||
"skin", "flesh", "beat", "bones",
|
||||
"ear", "ears", "creak", "crack" };
|
||||
/* claw attacks are overloaded in mons[]; most humanoids with
|
||||
such attacks should still reference hands rather than claws */
|
||||
static const char not_claws[] = {
|
||||
|
@ -2099,21 +2241,7 @@ int part;
|
|||
};
|
||||
struct permonst *mptr = mon->data;
|
||||
|
||||
if (part == HAND || part == HANDED) { /* some special cases */
|
||||
if (mptr->mlet == S_DOG || mptr->mlet == S_FELINE ||
|
||||
mptr->mlet == S_YETI)
|
||||
return part == HAND ? "paw" : "pawed";
|
||||
if(mon == &youmonst && youracedata->mtyp == PM_HALF_DRAGON)
|
||||
return part == HAND ? "claw" : "clawed";
|
||||
if(mon->mtyp == PM_HALF_DRAGON)
|
||||
return part == HAND ? "claw" : "clawed";
|
||||
if (humanoid(mptr) && attacktype(mptr, AT_CLAW) &&
|
||||
!index(not_claws, mptr->mlet) &&
|
||||
mptr->mtyp != PM_STONE_GOLEM &&
|
||||
mptr->mtyp != PM_SENTINEL_OF_MITHARDIR &&
|
||||
mptr->mtyp != PM_INCUBUS && mptr->mtyp != PM_SUCCUBUS)
|
||||
return part == HAND ? "claw" : "clawed";
|
||||
}
|
||||
//Specific overrides
|
||||
if ((mptr->mtyp == PM_MUMAK || mptr->mtyp == PM_MASTODON) &&
|
||||
part == NOSE)
|
||||
return "trunk";
|
||||
|
@ -2124,9 +2252,80 @@ int part;
|
|||
return "tentacle";
|
||||
if (mptr->mtyp == PM_FLOATING_EYE && part == EYE)
|
||||
return "cornea";
|
||||
if (mptr->mtyp == PM_SUNFLOWER || mptr->mtyp == PM_MIRRORED_MOONFLOWER){
|
||||
if(part == HEAD)
|
||||
return "flower";
|
||||
if(part == FACE)
|
||||
return "mirrored corolla";
|
||||
}
|
||||
if (mptr->mtyp == PM_DREADBLOSSOM_SWARM){
|
||||
if(part == HEAD)
|
||||
return "flower";
|
||||
if(part == FACE)
|
||||
return "corolla";
|
||||
}
|
||||
if (is_fern(mptr)){
|
||||
if(part == HEAD)
|
||||
return "crosier";
|
||||
}
|
||||
if (mptr->mtyp == PM_DREADBLOSSOM_SWARM && part == LEG)
|
||||
return "root-thorn";
|
||||
if ((mptr->mtyp == PM_DREADBLOSSOM_SWARM || mptr->mtyp == PM_SUNFLOWER || mptr->mtyp == PM_MIRRORED_MOONFLOWER) && part == HAIR)
|
||||
return "petals";
|
||||
if (is_delouseable(mptr)){
|
||||
if(mptr->mtyp == PM_PARASITIZED_DOLL){
|
||||
if(part == HEAD)
|
||||
return "nightmarish flesh mass";
|
||||
if(part == FACE)
|
||||
return "gnawing mouths";
|
||||
if(part == EYE)
|
||||
return "winking eye";
|
||||
if(part == BLOOD)
|
||||
return "seathing blood";
|
||||
} else {
|
||||
if(part == FACE)
|
||||
return "squid";
|
||||
if(part == EAR)
|
||||
return "skin";
|
||||
if(part == EARS)
|
||||
return "skin";
|
||||
if(part == EYE)
|
||||
return "eye";
|
||||
}
|
||||
}
|
||||
|
||||
//PM-based part lists
|
||||
if (mptr->mtyp == PM_RAVEN || mptr->mtyp == PM_CROW)
|
||||
return bird_parts[part];
|
||||
if (mptr->mlet == S_CENTAUR || mptr->mlet == S_UNICORN ||
|
||||
if (mptr->mtyp == PM_APHANACTONAN_ASSESSOR)
|
||||
return assessor_parts[part];
|
||||
if (mptr->mtyp == PM_APHANACTONAN_AUDIENT)
|
||||
return audient_parts[part];
|
||||
if (mptr->mtyp == PM_MANDRAKE)
|
||||
return mandrake_parts[part];
|
||||
if (mptr->mtyp == PM_CANDLE_TREE)
|
||||
return birch_parts[part];
|
||||
if (mptr->mtyp == PM_WEEPING_WILLOW)
|
||||
return willow_parts[part];
|
||||
if (mptr->mtyp == PM_VIPER_TREE)
|
||||
return vipertree_parts[part];
|
||||
if (mptr->mtyp == PM_BLACK_FLOWER)
|
||||
return blackflower_parts[part];
|
||||
if (is_fern_spore(mptr))
|
||||
return spore_parts[part];
|
||||
if (mptr->mtyp == PM_WARDEN_TREE)
|
||||
return tree_parts[part];
|
||||
if (mptr->mtyp == PM_LIVING_DOLL)
|
||||
return doll_parts[part];
|
||||
if (is_android(mptr))
|
||||
return android_parts[part];
|
||||
if (mptr->mtyp == PM_UVUUDAUM)
|
||||
return uvuudaum_parts[part];
|
||||
|
||||
//S-based part lists
|
||||
if (mptr->mlet == S_PLANT)
|
||||
return plant_parts[part];
|
||||
if (mptr->mlet == S_UNICORN ||
|
||||
(mptr->mtyp == PM_ROTHE && part != HAIR))
|
||||
return horse_parts[part];
|
||||
if (mptr->mlet == S_LIGHT) {
|
||||
|
@ -2148,6 +2347,23 @@ int part;
|
|||
return fish_parts[part];
|
||||
if (mptr->mlet == S_ANT)
|
||||
return insect_parts[part];
|
||||
|
||||
//General body shape-based
|
||||
if (part == HAND || part == HANDED) { /* some special cases */
|
||||
if (mptr->mlet == S_DOG || mptr->mlet == S_FELINE ||
|
||||
mptr->mlet == S_YETI)
|
||||
return part == HAND ? "paw" : "pawed";
|
||||
if(mon == &youmonst && youracedata->mtyp == PM_HALF_DRAGON)
|
||||
return part == HAND ? "claw" : "clawed";
|
||||
if(mon->mtyp == PM_HALF_DRAGON)
|
||||
return part == HAND ? "claw" : "clawed";
|
||||
if (humanoid(mptr) && attacktype(mptr, AT_CLAW) &&
|
||||
!index(not_claws, mptr->mlet) &&
|
||||
mptr->mtyp != PM_STONE_GOLEM &&
|
||||
mptr->mtyp != PM_SENTINEL_OF_MITHARDIR &&
|
||||
mptr->mtyp != PM_INCUBUS && mptr->mtyp != PM_SUCCUBUS)
|
||||
return part == HAND ? "claw" : "clawed";
|
||||
}
|
||||
if (serpentine(mptr) || (mptr->mlet == S_DRAGON && part == HAIR))
|
||||
return snake_parts[part];
|
||||
if (snakemanoid(mptr))
|
||||
|
|
48
src/potion.c
48
src/potion.c
|
@ -2767,30 +2767,38 @@ dodip()
|
|||
pline1(nothing_happens);
|
||||
} else {
|
||||
boolean was_wep = FALSE, was_swapwep = FALSE, was_quiver = FALSE;
|
||||
short save_otyp = obj->otyp;
|
||||
/* KMH, conduct */
|
||||
u.uconduct.polypiles++;
|
||||
short save_otyp = obj->otyp;
|
||||
/* KMH, conduct */
|
||||
u.uconduct.polypiles++;
|
||||
|
||||
if (obj == uwep) was_wep = TRUE;
|
||||
else if (obj == uswapwep) was_swapwep = TRUE;
|
||||
else if (obj == uquiver) was_quiver = TRUE;
|
||||
if (obj == uwep) was_wep = TRUE;
|
||||
else if (obj == uswapwep) was_swapwep = TRUE;
|
||||
else if (obj == uquiver) was_quiver = TRUE;
|
||||
|
||||
obj = randpoly_obj(obj);
|
||||
obj = randpoly_obj(obj);
|
||||
|
||||
if (was_wep) setuwep(obj);
|
||||
else if (was_swapwep) setuswapwep(obj);
|
||||
else if (was_quiver) setuqwep(obj);
|
||||
#ifndef GOLDOBJ
|
||||
if(obj->otyp == GOLD_PIECE){
|
||||
u.ugold += 2*obj->quan; //Gold piece handling disaster: useupall reduces the player's gold count by the ammount destroyed, so add the gold twice :(
|
||||
useupall(obj);
|
||||
obj = (struct obj *) 0;
|
||||
}
|
||||
#endif
|
||||
if (was_wep) setuwep(obj);
|
||||
else if (was_swapwep) setuswapwep(obj);
|
||||
else if (was_quiver) setuqwep(obj);
|
||||
|
||||
if (obj->otyp != save_otyp || (obj->otyp == HYPOSPRAY_AMPULE && objects[HYPOSPRAY_AMPULE].oc_name_known)) {
|
||||
if (save_otyp == POT_POLYMORPH || potion->otyp == POT_POLYMORPH)
|
||||
makeknown(POT_POLYMORPH);
|
||||
useup(potion);
|
||||
prinv((char *)0, obj, 0L);
|
||||
return 1;
|
||||
} else {
|
||||
pline("Nothing seems to happen.");
|
||||
goto poof;
|
||||
}
|
||||
if (!obj || obj->otyp != save_otyp || (obj->otyp == HYPOSPRAY_AMPULE && objects[HYPOSPRAY_AMPULE].oc_name_known)) {
|
||||
if (save_otyp == POT_POLYMORPH || potion->otyp == POT_POLYMORPH)
|
||||
makeknown(POT_POLYMORPH);
|
||||
useup(potion);
|
||||
if(obj)
|
||||
prinv((char *)0, obj, 0L);
|
||||
return 1;
|
||||
} else {
|
||||
pline("Nothing seems to happen.");
|
||||
goto poof;
|
||||
}
|
||||
}
|
||||
potion->in_use = FALSE; /* didn't go poof */
|
||||
return(1);
|
||||
|
|
|
@ -1690,7 +1690,7 @@ struct obj * obj;
|
|||
}
|
||||
/* gold scrolls of law turn a small randomize amount of gold (and were guaranteed to turn into gold pieces) */
|
||||
if (obj->otyp == SCR_GOLD_SCROLL_OF_LAW) {
|
||||
otmp->quan = rnd(50 * obj->quan) + 50 * obj->quan;
|
||||
otmp->quan = d(obj->quan,50) + 50 * obj->quan;
|
||||
}
|
||||
/* crocodile corpses were turned into shoes */
|
||||
if (obj->otyp == CORPSE && obj->corpsenm == PM_CROCODILE) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue