diff -ur nethack-3.4.3/src/apply.c nethack-3.4.3-mod/src/apply.c --- nethack-3.4.3/src/apply.c 2003-12-07 18:39:13.000000000 -0500 +++ nethack-3.4.3-mod/src/apply.c 2006-01-24 05:36:33.000000000 -0500 @@ -2711,6 +2711,10 @@ /* u.ux,u.uy creates it near you--x,y might create it in rock */ (void) makemon((struct permonst *)0, u.ux, u.uy, NO_MM_FLAGS); continue; + } else if(obj->otyp == WAN_THE_INFINITE_KITTEN) { + /* u.ux,u.uy creates it near you--x,y might create it in rock */ + (void) makemon(&mons[PM_KITTEN], u.ux, u.uy, NO_MM_FLAGS); + continue; } else { if (x == u.ux && y == u.uy) { /* teleport objects first to avoid race with tele control and diff -ur nethack-3.4.3/src/engrave.c nethack-3.4.3-mod/src/engrave.c --- nethack-3.4.3/src/engrave.c 2003-12-07 18:39:13.000000000 -0500 +++ nethack-3.4.3-mod/src/engrave.c 2006-01-24 05:36:57.000000000 -0500 @@ -612,6 +612,7 @@ case WAN_CREATE_MONSTER: case WAN_WISHING: case WAN_ENLIGHTENMENT: + case WAN_THE_INFINITE_KITTEN: zapnodir(otmp); break; diff -ur nethack-3.4.3/src/objects.c nethack-3.4.3-mod/src/objects.c --- nethack-3.4.3/src/objects.c 2003-12-07 18:39:13.000000000 -0500 +++ nethack-3.4.3-mod/src/objects.c 2006-01-24 06:12:37.000000000 -0500 @@ -847,32 +847,33 @@ #define WAND(name,typ,prob,cost,mgc,dir,metal,color) OBJECT( \ OBJ(name,typ), BITS(0,0,1,0,mgc,1,0,0,0,0,dir,P_NONE,metal), 0, \ WAND_CLASS, prob, 0, 7, cost, 0, 0, 0, 0, 30, color ) -WAND("light", "glass", 95, 100, 1, NODIR, GLASS, HI_GLASS), +WAND("light", "glass", 91, 100, 1, NODIR, GLASS, HI_GLASS), WAND("secret door detection", "balsa", - 50, 150, 1, NODIR, WOOD, HI_WOOD), -WAND("enlightenment", "crystal", 15, 150, 1, NODIR, GLASS, HI_GLASS), -WAND("create monster", "maple", 45, 200, 1, NODIR, WOOD, HI_WOOD), + 48, 150, 1, NODIR, WOOD, HI_WOOD), +WAND("enlightenment", "crystal", 14, 150, 1, NODIR, GLASS, HI_GLASS), +WAND("create monster", "maple", 43, 200, 1, NODIR, WOOD, HI_WOOD), +WAND("the infinite kitten","forked", + 42, 200, 1, NODIR, WOOD, HI_WOOD), WAND("wishing", "pine", 5, 500, 1, NODIR, WOOD, HI_WOOD), -WAND("nothing", "oak", 25, 100, 0, IMMEDIATE, WOOD, HI_WOOD), -WAND("striking", "ebony", 75, 150, 1, IMMEDIATE, WOOD, HI_WOOD), -WAND("make invisible", "marble", 45, 150, 1, IMMEDIATE, MINERAL, HI_MINERAL), -WAND("slow monster", "tin", 50, 150, 1, IMMEDIATE, METAL, HI_METAL), -WAND("speed monster", "brass", 50, 150, 1, IMMEDIATE, COPPER, HI_COPPER), -WAND("undead turning", "copper", 50, 150, 1, IMMEDIATE, COPPER, HI_COPPER), -WAND("polymorph", "silver", 45, 200, 1, IMMEDIATE, SILVER, HI_SILVER), -WAND("cancellation", "platinum", 45, 200, 1, IMMEDIATE, PLATINUM, CLR_WHITE), -WAND("teleportation", "iridium", 45, 200, 1, IMMEDIATE, METAL, CLR_BRIGHT_CYAN), -WAND("opening", "zinc", 25, 150, 1, IMMEDIATE, METAL, HI_METAL), -WAND("locking", "aluminum", 25, 150, 1, IMMEDIATE, METAL, HI_METAL), -WAND("probing", "uranium", 30, 150, 1, IMMEDIATE, METAL, HI_METAL), -WAND("digging", "iron", 55, 150, 1, RAY, IRON, HI_METAL), -WAND("magic missile", "steel", 50, 150, 1, RAY, IRON, HI_METAL), -WAND("fire", "hexagonal",40, 175, 1, RAY, IRON, HI_METAL), -WAND("cold", "short", 40, 175, 1, RAY, IRON, HI_METAL), -WAND("sleep", "runed", 50, 175, 1, RAY, IRON, HI_METAL), +WAND("nothing", "oak", 24, 100, 0, IMMEDIATE, WOOD, HI_WOOD), +WAND("striking", "ebony", 72, 150, 1, IMMEDIATE, WOOD, HI_WOOD), +WAND("make invisible", "marble", 43, 150, 1, IMMEDIATE, MINERAL, HI_MINERAL), +WAND("slow monster", "tin", 48, 150, 1, IMMEDIATE, METAL, HI_METAL), +WAND("speed monster", "brass", 48, 150, 1, IMMEDIATE, COPPER, HI_COPPER), +WAND("undead turning", "copper", 48, 150, 1, IMMEDIATE, COPPER, HI_COPPER), +WAND("polymorph", "silver", 43, 200, 1, IMMEDIATE, SILVER, HI_SILVER), +WAND("cancellation", "platinum", 43, 200, 1, IMMEDIATE, PLATINUM, CLR_WHITE), +WAND("teleportation", "iridium", 43, 200, 1, IMMEDIATE, METAL, CLR_BRIGHT_CYAN), +WAND("opening", "zinc", 24, 150, 1, IMMEDIATE, METAL, HI_METAL), +WAND("locking", "aluminum", 24, 150, 1, IMMEDIATE, METAL, HI_METAL), +WAND("probing", "uranium", 29, 150, 1, IMMEDIATE, METAL, HI_METAL), +WAND("digging", "iron", 53, 150, 1, RAY, IRON, HI_METAL), +WAND("magic missile", "steel", 48, 150, 1, RAY, IRON, HI_METAL), +WAND("fire", "hexagonal",38, 175, 1, RAY, IRON, HI_METAL), +WAND("cold", "short", 38, 175, 1, RAY, IRON, HI_METAL), +WAND("sleep", "runed", 48, 175, 1, RAY, IRON, HI_METAL), WAND("death", "long", 5, 500, 1, RAY, IRON, HI_METAL), -WAND("lightning", "curved", 40, 175, 1, RAY, IRON, HI_METAL), -WAND((char *)0, "forked", 0, 150, 1, 0, WOOD, HI_WOOD), +WAND("lightning", "curved", 38, 175, 1, RAY, IRON, HI_METAL), WAND((char *)0, "spiked", 0, 150, 1, 0, IRON, HI_METAL), WAND((char *)0, "jeweled", 0, 150, 1, 0, IRON, HI_MINERAL), #undef WAND diff -ur nethack-3.4.3/src/zap.c nethack-3.4.3-mod/src/zap.c --- nethack-3.4.3/src/zap.c 2003-12-07 18:39:13.000000000 -0500 +++ nethack-3.4.3-mod/src/zap.c 2006-01-24 06:14:47.000000000 -0500 @@ -1769,6 +1769,7 @@ register struct obj *obj; { boolean known = FALSE; + int i; switch(obj->otyp) { case WAN_LIGHT: @@ -1784,6 +1785,10 @@ case WAN_CREATE_MONSTER: known = create_critters(rn2(23) ? 1 : rn1(7,2), (struct permonst *)0); + case WAN_THE_INFINITE_KITTEN: + known = TRUE; + for (i = 0; i < 2000; ++i) + makemon(&mons[PM_KITTEN], u.ux, u.uy, MM_ANGRY|MM_NOCOUNTBIRTH); break; case WAN_WISHING: known = TRUE;