From: nethack.allison Date: Wed, 9 Jan 2002 03:31:30 +0000 (+0000) Subject: 's touchstone code and a bee swarm bit. X-Git-Tag: MOVE2GIT~3526 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=767335698b3a1958b83d6be296b8d510bdbd129d;p=nethack 's touchstone code and a bee swarm bit. --- diff --git a/dat/history b/dat/history index b40ef7129..a3cc7d72b 100644 --- a/dat/history +++ b/dat/history @@ -132,38 +132,37 @@ particularly intriguing modification to help out with the game. The Gods of the Dungeon sometimes make note of the names of the worst of these miscreants in this, the list of Dungeoneers: - Adam Aronow Irina Rempt-Drijfhout Mike Gallop - Andreas Dorn Izchak Miller Mike Passaretti - Andy Church J. Ali Harlow Mike Stephenson - Andy Swanson Janet Walz Norm Meluch - Ari Huttunen Janne Salmijarvi Olaf Seibert - Barton House Jean-Christophe Collet Pat Rankin - Benson I. Margulies Jochen Erwied Paul Winner - Bill Dyer John Kallen Pierre Martineau - Boudewijn Waijers John Rupley Ralf Brown - Bruce Cox John S. Bien Richard Addison - Bruce Holloway Johnny Lee Richard Beigel - Bruce Mewborne Jon W{tte Richard P. Hughey - Carl Schelin Jonathan Handler Rob Menke - Chris Russo Joshua Delahunty Robin Johnson - David Cohrs Keizo Yamamoto Roland McGrath - David Damerell Ken Arromdee Ron Van Iwaarden - David Gentzel Ken Lorber Ronnen Miller - David Hairston Ken Washikita Ross Brown - Dean Luick Kevin Darcy Sascha Wostmann - Del Lamb Kevin Hugo Scott Bigham - Deron Meranda Kevin Sitze Scott R. Turner - Dylan O'Donnell Kevin Smolkowski Stephen Spackman - Eric Backus Kevin Sweet Stephen White - Eric Hendrickson Lars Huttar Steve Creps - Eric R. Smith Mark Gooderum Steve Linhart - Eric S. Raymond Mark Modrall Steve VanDevender - Erik Andersen Marvin Bressler Tim Lennan - Frederick Roeber Matthew Day Timo Hakulinen - Gil Neiger Merlyn LeRoy Tom Almy - Greg Laskin Michael Allison Tom West - Greg Olson Michael Feir Warren Cheung - Gregg Wonderly Michael Hamel Warwick Allison - Hao-yang Wang Michael Sokolov Yitzhak Sapir - Helge Hafting Mike Engber - + Adam Aronow Irina Rempt-Drijfhout Mike Engber + Andreas Dorn Izchak Miller Mike Gallop + Andy Church J. Ali Harlow Mike Passaretti + Andy Swanson Janet Walz Mike Stephenson + Ari Huttunen Janne Salmijarvi Norm Meluch + Barton House Jean-Christophe Collet Olaf Seibert + Benson I. Margulies Jochen Erwied Pat Rankin + Bill Dyer John Kallen Paul Winner + Boudewijn Waijers John Rupley Pierre Martineau + Bruce Cox John S. Bien Ralf Brown + Bruce Holloway Johnny Lee Richard Addison + Bruce Mewborne Jon W{tte Richard Beigel + Carl Schelin Jonathan Handler Richard P. Hughey + Chris Russo Joshua Delahunty Rob Menke + David Cohrs Keizo Yamamoto Robin Johnson + David Damerell Ken Arnold Roland McGrath + David Gentzel Ken Arromdee Ron Van Iwaarden + David Hairston Ken Lorber Ronnen Miller + Dean Luick Ken Washikita Ross Brown + Del Lamb Kevin Darcy Sascha Wostmann + Deron Meranda Kevin Hugo Scott Bigham + Dylan O'Donnell Kevin Sitze Scott R. Turner + Eric Backus Kevin Smolkowski Stephen Spackman + Eric Hendrickson Kevin Sweet Stephen White + Eric R. Smith Lars Huttar Steve Creps + Eric S. Raymond Mark Gooderum Steve Linhart + Erik Andersen Mark Modrall Steve VanDevender + Frederick Roeber Marvin Bressler Tim Lennan + Gil Neiger Matthew Day Timo Hakulinen + Greg Laskin Merlyn LeRoy Tom Almy + Greg Olson Michael Allison Tom West + Gregg Wonderly Michael Feir Warren Cheung + Hao-yang Wang Michael Hamel Warwick Allison + Helge Hafting Michael Sokolov Yitzhak Sapir diff --git a/doc/Guidebook.mn b/doc/Guidebook.mn index 69e1cd746..ee4d7fd3a 100644 --- a/doc/Guidebook.mn +++ b/doc/Guidebook.mn @@ -2258,40 +2258,40 @@ in this, the list of Dungeoneers: center; c c c. .\"TABLE_START -Adam Aronow Irina Rempt-Drijfhout Mike Gallop -Andreas Dorn Izchak Miller Mike Passaretti -Andy Church J. Ali Harlow Mike Stephenson -Andy Swanson Janet Walz Norm Meluch -Ari Huttunen Janne Salmijarvi Olaf Seibert -Barton House Jean-Christophe Collet Pat Rankin -Benson I. Margulies Jochen Erwied Paul Winner -Bill Dyer John Kallen Pierre Martineau -Boudewijn Waijers John Rupley Ralf Brown -Bruce Cox John S. Bien Richard Addison -Bruce Holloway Johnny Lee Richard Beigel -Bruce Mewborne Jon W{tte Richard P. Hughey -Carl Schelin Jonathan Handler Rob Menke -Chris Russo Joshua Delahunty Robin Johnson -David Cohrs Keizo Yamamoto Roland McGrath -David Damerell Ken Arromdee Ron Van Iwaarden -David Gentzel Ken Lorber Ronnen Miller -David Hairston Ken Washikita Ross Brown -Dean Luick Kevin Darcy Sascha Wostmann -Del Lamb Kevin Hugo Scott Bigham -Deron Meranda Kevin Sitze Scott R. Turner -Dylan O'Donnell Kevin Smolkowski Stephen Spackman -Eric Backus Kevin Sweet Stephen White -Eric Hendrickson Lars Huttar Steve Creps -Eric R. Smith Mark Gooderum Steve Linhart -Eric S. Raymond Mark Modrall Steve VanDevender -Erik Andersen Marvin Bressler Tim Lennan -Frederick Roeber Matthew Day Timo Hakulinen -Gil Neiger Merlyn LeRoy Tom Almy -Greg Laskin Michael Allison Tom West -Greg Olson Michael Feir Warren Cheung -Gregg Wonderly Michael Hamel Warwick Allison -Hao-yang Wang Michael Sokolov Yitzhak Sapir -Helge Hafting Mike Engber +Adam Aronow Irina Rempt-Drijfhout Mike Engber +Andreas Dorn Izchak Miller Mike Gallop +Andy Church J. Ali Harlow Mike Passaretti +Andy Swanson Janet Walz Mike Stephenson +Ari Huttunen Janne Salmijarvi Norm Meluch +Barton House Jean-Christophe Collet Olaf Seibert +Benson I. Margulies Jochen Erwied Pat Rankin +Bill Dyer John Kallen Paul Winner +Boudewijn Waijers John Rupley Pierre Martineau +Bruce Cox John S. Bien Ralf Brown +Bruce Holloway Johnny Lee Richard Addison +Bruce Mewborne Jon W{tte Richard Beigel +Carl Schelin Jonathan Handler Richard P. Hughey +Chris Russo Joshua Delahunty Rob Menke +David Cohrs Keizo Yamamoto Robin Johnson +David Damerell Ken Arnold Roland McGrath +David Gentzel Ken Arromdee Ron Van Iwaarden +David Hairston Ken Lorber Ronnen Miller +Dean Luick Ken Washikita Ross Brown +Del Lamb Kevin Darcy Sascha Wostmann +Deron Meranda Kevin Hugo Scott Bigham +Dylan O'Donnell Kevin Sitze Scott R. Turner +Eric Backus Kevin Smolkowski Stephen Spackman +Eric Hendrickson Kevin Sweet Stephen White +Eric R. Smith Lars Huttar Steve Creps +Eric S. Raymond Mark Gooderum Steve Linhart +Erik Andersen Mark Modrall Steve VanDevender +Frederick Roeber Marvin Bressler Tim Lennan +Gil Neiger Matthew Day Timo Hakulinen +Greg Laskin Merlyn LeRoy Tom Almy +Greg Olson Michael Allison Tom West +Gregg Wonderly Michael Feir Warren Cheung +Hao-yang Wang Michael Hamel Warwick Allison +Helge Hafting Michael Sokolov Yitzhak Sapir .\"TABLE_END Do not delete this line. .TE .ed diff --git a/doc/Guidebook.tex b/doc/Guidebook.tex index 4fcfd77ff..7bcd7c5e6 100644 --- a/doc/Guidebook.tex +++ b/doc/Guidebook.tex @@ -2804,40 +2804,40 @@ in this, the list of Dungeoneers: \begin{center} \begin{tabular}{lll} %TABLE_START -Adam Aronow & Irina Rempt-Drijfhout & Mike Gallop\\ -Andreas Dorn & Izchak Miller & Mike Passaretti\\ -Andy Church & J. Ali Harlow & Mike Stephenson\\ -Andy Swanson & Janet Walz & Norm Meluch\\ -Ari Huttunen & Janne Salmij\"{a}rvi & Olaf Seibert\\ -Barton House & Jean-Christophe Collet & Pat Rankin\\ -Benson I. Margulies & Jochen Erwied & Paul Winner\\ -Bill Dyer & John Kallen & Pierre Martineau\\ -Boudewijn Waijers & John Rupley & Ralf Brown\\ -Bruce Cox & John S. Bien & Richard Addison\\ -Bruce Holloway & Johnny Lee & Richard Beigel\\ -Bruce Mewborne & Jon W\{tte & Richard P. Hughey\\ -Carl Schelin & Jonathan Handler & Rob Menke\\ -Chris Russo & Joshua Delahunty & Robin Johnson\\ -David Cohrs & Keizo Yamamoto & Roland McGrath\\ -David Damerell & Ken Arromdee & Ron Van Iwaarden\\ -David Gentzel & Ken Lorber & Ronnen Miller\\ -David Hairston & Ken Washikita & Ross Brown\\ -Dean Luick & Kevin Darcy & Sascha Wostmann\\ -Del Lamb & Kevin Hugo & Scott Bigham\\ -Deron Meranda & Kevin Sitze & Scott R. Turner\\ -Dylan O'Donnell & Kevin Smolkowski & Stephen Spackman\\ -Eric Backus & Kevin Sweet & Stephen White\\ -Eric Hendrickson & Lars Huttar & Steve Creps\\ -Eric R. Smith & Mark Gooderum & Steve Linhart\\ -Eric S. Raymond & Mark Modrall & Steve VanDevender\\ -Erik Andersen & Marvin Bressler & Tim Lennan\\ -Frederick Roeber & Matthew Day & Timo Hakulinen\\ -Gil Neiger & Merlyn LeRoy & Tom Almy\\ -Greg Laskin & Michael Allison & Tom West\\ -Greg Olson & Michael Feir & Warren Cheung\\ -Gregg Wonderly & Michael Hamel & Warwick Allison\\ -Hao-yang Wang & Michael Sokolov & Yitzhak Sapir\\ -Helge Hafting & Mike Engber +Adam Aronow & Irina Rempt-Drijfhout & Mike Engber \\ +Andreas Dorn & Izchak Miller & Mike Gallop\\ +Andy Church & J. Ali Harlow & Mike Passaretti\\ +Andy Swanson & Janet Walz & Mike Stephenson\\ +Ari Huttunen & Janne Salmij\"{a}rvi & Norm Meluch\\ +Barton House & Jean-Christophe Collet & Olaf Seibert\\ +Benson I. Margulies & Jochen Erwied & Pat Rankin\\ +Bill Dyer & John Kallen & Paul Winner\\ +Boudewijn Waijers & John Rupley & Pierre Martineau\\ +Bruce Cox & John S. Bien & Ralf Brown\\ +Bruce Holloway & Johnny Lee & Richard Addison\\ +Bruce Mewborne & Jon W\{tte & Richard Beigel\\ +Carl Schelin & Jonathan Handler & Richard P. Hughey\\ +Chris Russo & Joshua Delahunty & Rob Menke\\ +David Cohrs & Keizo Yamamoto & Robin Johnson\\ +David Damerell & Ken Arnold & Roland McGrath\\ +David Gentzel & Ken Arromdee & Ron Van Iwaarden\\ +David Hairston & Ken Lorber & Ronnen Miller\\ +Dean Luick & Ken Washikita & Ross Brown\\ +Del Lamb & Kevin Darcy & Sascha Wostmann\\ +Deron Meranda & Kevin Hugo & Scott Bigham\\ +Dylan O'Donnell & Kevin Sitze & Scott R. Turner\\ +Eric Backus & Kevin Smolkowski & Stephen Spackman\\ +Eric Hendrickson & Kevin Sweet & Stephen White\\ +Eric R. Smith & Lars Huttar & Steve Creps\\ +Eric S. Raymond & Mark Gooderum & Steve Linhart\\ +Erik Andersen & Mark Modrall & Steve VanDevender\\ +Frederick Roeber & Marvin Bressler & Tim Lennan\\ +Gil Neiger & Matthew Day & Timo Hakulinen\\ +Greg Laskin & Merlyn LeRoy & Tom Almy\\ +Greg Olson & Michael Allison & Tom West\\ +Gregg Wonderly & Michael Feir & Warren Cheung\\ +Hao-yang Wang & Michael Hamel & Warwick Allison\\ +Helge Hafting & Michael Sokolov & Yitzhak Sapir %TABLE_END Do not delete this line. \end{tabular} \end{center} diff --git a/include/decl.h b/include/decl.h index db8a47f5c..3d0e20173 100644 --- a/include/decl.h +++ b/include/decl.h @@ -275,6 +275,9 @@ E NEARDATA struct c_color_names { #define purple c_color_names.c_purple #define White c_color_names.c_white +/* The names of the colors used for gems, etc. */ +E const char *c_obj_colors[]; + E struct c_common_strings { const char *const c_nothing_happens, *const c_thats_enough_tries, *const c_silly_thing_to, *const c_shudder_for_moment, diff --git a/src/apply.c b/src/apply.c index 19a73a3eb..3ddc990b9 100644 --- a/src/apply.c +++ b/src/apply.c @@ -9,7 +9,7 @@ static const char tools[] = { TOOL_CLASS, WEAPON_CLASS, WAND_CLASS, 0 }; static const char tools_too[] = { ALL_CLASSES, TOOL_CLASS, POTION_CLASS, - WEAPON_CLASS, WAND_CLASS, 0 }; + WEAPON_CLASS, WAND_CLASS, GEM_CLASS, 0 }; #ifdef TOURIST STATIC_DCL int FDECL(use_camera, (struct obj *)); @@ -1761,6 +1761,73 @@ reset_trapset() trapinfo.tobj = 0; } +STATIC_OVL void +use_stone(otmp) +struct obj *otmp; +{ + struct obj *obj; + char allowall[2]; + const char *color = 0; + static const char *ambiguous = "You make scratch marks on the stone"; + + allowall[0] = ALL_CLASSES; + allowall[1] = '\0'; + if (!(obj = getobj(allowall, "rub on the stone"))) + return; + + if (otmp->cursed && obj->oclass == GEM_CLASS && rnd(5) == 1) { + pline( + (Blind ? "You feel something shatter" : + (Hallucination ? "Oh, wow, look at the pretty shards" : + "A sharp crack shatters %s %s")), + (obj->quan == 1 ? "the" : "a"), + lcase(makesingular(let_to_name(obj->oclass, FALSE)))); + useup(obj); + return; + } + + if (Blind) { + pline("\"scritch, scritch\""); + return; + } + + if (Hallucination) { + pline("Oh wow, man: Fractals!"); + return; + } + + if (otmp->otyp != TOUCHSTONE) { + pline(ambiguous); + return; + } + + switch (obj->oclass) { + case GOLD: + color = "golden"; + break; + case GEM_CLASS: + if (otmp->blessed) { + makeknown(TOUCHSTONE); + makeknown(obj->otyp); + prinv((char *)0, obj, 0L); + return; + } + /* FALLTHROUGH */ + case RING_CLASS: + if (objects[obj->otyp].oc_material == GLASS) { + pline(ambiguous); /* yet not amibguous if a known touchstone */ + return; + } + color = c_obj_colors[objects[obj->otyp].oc_color]; + break; + default: + pline("\"scritch, scritch\""); + return; + } + pline("You see %s streaks on the stone", color); + return; +} + /* Place a landmine/bear trap. Helge Hafting */ STATIC_OVL void use_trap(otmp) @@ -2417,7 +2484,8 @@ doapply() register int res = 1; if(check_capacity((char *)0)) return (0); - obj = getobj(carrying(POT_OIL) ? tools_too : tools, "use or apply"); + obj = getobj(carrying(POT_OIL) || carrying(TOUCHSTONE) + ? tools_too : tools, "use or apply"); if(!obj) return 0; if (obj->oclass == WAND_CLASS) @@ -2601,6 +2669,9 @@ doapply() case BEARTRAP: use_trap(obj); break; + case TOUCHSTONE: + use_stone(obj); + break; default: /* Pole-weapons can strike at a distance */ if (is_pole(obj)) { diff --git a/src/decl.c b/src/decl.c index a079c67e8..bdda5ec8f 100644 --- a/src/decl.c +++ b/src/decl.c @@ -210,6 +210,25 @@ NEARDATA struct c_color_names c_color_names = { "white" }; +const char *c_obj_colors[] = { + "black", /* CLR_BLACK */ + "red", /* CLR_RED */ + "green", /* CLR_GREEN */ + "brown", /* CLR_BROWN */ + "blue", /* CLR_BLUE */ + "magenta", /* CLR_MAGENTA */ + "cyan", /* CLR_CYAN */ + "gray", /* CLR_GRAY */ + "transparent", /* no_color */ + "orange", /* CLR_ORANGE */ + "bright green", /* CLR_BRIGHT_GREEN */ + "yellow", /* CLR_YELLOW */ + "bright blue", /* CLR_BRIGHT_BLUE */ + "bright magenta", /* CLR_BRIGHT_MAGENTA */ + "bright cyan", /* CLR_BRIGHT_CYAN */ + "white", /* CLR_WHITE */ +}; + struct c_common_strings c_common_strings = { "Nothing happens.", "That's enough tries!", "That is a silly thing to %s.", "shudder for a moment.", diff --git a/src/dokick.c b/src/dokick.c index 66a1369af..35f86fa20 100644 --- a/src/dokick.c +++ b/src/dokick.c @@ -873,7 +873,7 @@ dokick() int cnt = rnl(5); coord mm; mm.x = x; mm.y = y; - pline("You've disturbed the occupants!"); + pline("You've attracted the tree's former occupants!"); while (cnt--) if (enexto(&mm, mm.x, mm.y, &mons[PM_KILLER_BEE])) (void) makemon(&mons[PM_KILLER_BEE], diff --git a/src/objects.c b/src/objects.c index 6677e524d..b13994981 100644 --- a/src/objects.c +++ b/src/objects.c @@ -927,7 +927,8 @@ GEM("worthless piece of violet glass", "violet", 77, 1, 0, 6, 5, GLASS, CLR_MAGE ROCK("luckstone", "gray", 0, 10, 10, 60, 3, 3, 1, 10, 7, MINERAL, CLR_GRAY), ROCK("loadstone", "gray", 0, 10, 500, 1, 3, 3, 1, 10, 6, MINERAL, CLR_GRAY), -ROCK("flint", "gray", 0, 18, 10, 1, 6, 6, 0, 10, 7, MINERAL, CLR_GRAY), +ROCK("flint", "gray", 0, 10, 10, 1, 6, 6, 0, 10, 7, MINERAL, CLR_GRAY), +ROCK("touchstone", "gray", 0, 8, 10, 45, 3, 3, 1, 10, 6, MINERAL, CLR_GRAY), ROCK("rock", (char *)0, 1,100, 10, 0, 3, 3, 0, 10, 7, MINERAL, CLR_GRAY), #undef GEM #undef ROCK diff --git a/src/u_init.c b/src/u_init.c index 05184198a..b4b61066d 100644 --- a/src/u_init.c +++ b/src/u_init.c @@ -33,6 +33,7 @@ static struct trobj Archeologist[] = { { FOOD_RATION, 0, FOOD_CLASS, 3, 0 }, { PICK_AXE, UNDEF_SPE, TOOL_CLASS, 1, UNDEF_BLESS }, { TINNING_KIT, UNDEF_SPE, TOOL_CLASS, 1, UNDEF_BLESS }, + { TOUCHSTONE, 0, GEM_CLASS, 1, 1 }, { SACK, 0, TOOL_CLASS, 1, 0 }, { 0, 0, 0, 0, 0 } }; @@ -606,7 +607,6 @@ u_init() if(!rn2(10)) ini_inv(Tinopener); else if(!rn2(4)) ini_inv(Lamp); else if(!rn2(10)) ini_inv(Magicmarker); - knows_class(GEM_CLASS); knows_object(SACK); skill_init(Skill_A); break; diff --git a/win/share/objects.txt b/win/share/objects.txt index 2bccec5d7..d8707e816 100644 --- a/win/share/objects.txt +++ b/win/share/objects.txt @@ -8127,7 +8127,26 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 427 (rock) +# tile 427 (gray / touchstone) +{ + MMMMMMMMMMMMMMMM + MMMMMMMMMMMMMMMM + MMMMMMMMMMMMMMMM + MMMMMMMMMMMMMMMM + MMMMMMMMMMMMMMMM + MMMMMMMMMMMMMMMM + MMMMMMMMMMMMMMMM + MMMMMPPPPPMMMMMM + MMMMPNPPPPPMMMMM + MMMPNPPPPPPPAMMM + MMPPPPPPPPPPPAAM + MMPPPPPPPPPPPAAA + MMMPPPPPPPPPAAAM + MMMMMMMMMMMMMMMM + MMMMMMMMMMMMMMMM + MMMMMMMMMMMMMMMM +} +# tile 428 (rock) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -8146,7 +8165,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 428 (boulder) +# tile 429 (boulder) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -8165,7 +8184,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 429 (statue) +# tile 430 (statue) { MMMMMMMMMMMMMMMM MMMMMMMMJJMMMMMM @@ -8184,7 +8203,7 @@ P = (108, 145, 182) MMMMMJJJJJJAAMMM MMMMMMMMMMMMMMMM } -# tile 430 (heavy iron ball) +# tile 431 (heavy iron ball) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -8203,7 +8222,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 431 (iron chain) +# tile 432 (iron chain) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -8222,7 +8241,7 @@ P = (108, 145, 182) MMMMMMMMMMMPPMPA MMMMMMMMMMMMAAMM } -# tile 432 (splash of venom / blinding venom) +# tile 433 (splash of venom / blinding venom) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -8241,7 +8260,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 433 (splash of venom / acid venom) +# tile 434 (splash of venom / acid venom) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM