Merge branch 'NetHack-3.7' into twitch-interact
This commit is contained in:
@@ -100,5 +100,6 @@ be old and miserly.
|
||||
The name of Elbereth may strike fear into the hearts of thine enemies, if
|
||||
thou dost write it upon the ground at thy feet. If thou maintainest the
|
||||
utmost calm, thy safety will be aided greatly, but beware lest thy clumsy
|
||||
feet scuff the inscription, cancelling its potence.
|
||||
feet scuff the inscription, cancelling its potence, or thy wayward
|
||||
sword-arm break the truce.
|
||||
-----
|
||||
|
||||
@@ -2,6 +2,7 @@ A blindfold can be very useful if you're telepathic.
|
||||
A candelabrum affixed with seven candles shows the way with a magical light.
|
||||
A cream pie has two uses: food... and entertainment.
|
||||
A crystal plate mail will not rust.
|
||||
A dead body may protect your live body. But only an item can protect an item.
|
||||
A katana might slice a worm in two.
|
||||
A magic vomit pump could be useful for gourmands.
|
||||
A nymph knows how to unlock chains.
|
||||
@@ -29,7 +30,6 @@ Bandaging wounds helps keep up appearances.
|
||||
Bashing monsters with a bow is not such a good idea.
|
||||
Be careful! The Wizard may plan an ambush!
|
||||
Be nice to a nurse: Put away your weapon and take off your clothes.
|
||||
Being digested is a painfully slow process.
|
||||
Blank scrolls make more interesting reading.
|
||||
Blind? Catch a floating eye!
|
||||
Booksellers never read scrolls; they might get carried away.
|
||||
@@ -45,6 +45,7 @@ Don't forget! Large dogs are MUCH harder to kill than little dogs.
|
||||
Don't lash out at people while blinded.
|
||||
Don't mess with shopkeepers, or you'll get the Guild after you.
|
||||
Dragons never whip their children; they wouldn't feel it!
|
||||
Dwarves use their cloaks to keep their drinks cool.
|
||||
Eat your carrots. They're good for your eyes.
|
||||
Eating a freezing sphere is like eating a yeti.
|
||||
Eating a killer bee is like eating a scorpion.
|
||||
@@ -56,9 +57,10 @@ Elf corpses are incompatible with the sandman, and at times the gods as well.
|
||||
Elven cloaks cannot rust.
|
||||
Elves can help you feel less tired.
|
||||
Even evil players have a guardian angel.
|
||||
Even the most powerful heroes sometimes need to quaff away their injuries.
|
||||
Ever fought with an enchanted tooth?
|
||||
Ever tried reading while confused?
|
||||
Ever tried to put a troll into a large box?
|
||||
Ever tried to lock a troll inside a large box?
|
||||
Ever wondered why one would want to dip something in a potion?
|
||||
Expensive cameras have penetrating flash lights.
|
||||
Extra staircases lead to extra levels.
|
||||
@@ -74,6 +76,7 @@ Got a question? Try rec.games.roguelike.nethack.
|
||||
Grave robbers sometimes get rich.
|
||||
Guy Montag keeps his scrolls in a bag.
|
||||
Handle your flasks carefully -- there might be a ghost inside!
|
||||
Heavy-duty boots can protect more than just your feet.
|
||||
Holy water has many uses.
|
||||
Horses trust their riders, even when not so deserved.
|
||||
Hunger is a confusing experience for a dog!
|
||||
@@ -90,6 +93,7 @@ If you want to hit, use a dagger.
|
||||
If you want to rob a shop, train your dog.
|
||||
If you're lost, try buying a map next time you're in a shop.
|
||||
If your hands are greasy, why not wash them?
|
||||
If your items get destroyed, you weren't wearing the right ring.
|
||||
Inside a shop you better take a look at the price tags before buying anything.
|
||||
It is bad manners to use a wand in a shop.
|
||||
It is dangerous to visit a graveyard at midnight.
|
||||
@@ -98,7 +102,7 @@ It is rumored that the Wizard has hired some help.
|
||||
It is the letter 'c' and not 'e' that changes status to statue.
|
||||
It might be a good idea to offer the unicorn a ruby.
|
||||
It would be peculiarly sad were your dog turned to stone.
|
||||
It's a `d' eats `d' world.
|
||||
It's a 'd' eats 'd' world.
|
||||
Just because it says READ ME doesn't mean you should.
|
||||
Keep your armors away from rust.
|
||||
Keep your weaponry away from acids.
|
||||
@@ -119,6 +123,7 @@ Nurses are trained to touch naked persons: they don't harm them.
|
||||
Nymphs can unlink more than your chain mail.
|
||||
Once your little dog will be a big dog, and you will be proud of it.
|
||||
Only female monsters can lay eggs.
|
||||
Only the most confused adventurers would read cursed destroy armor scrolls.
|
||||
Opening a tin is difficult, especially when you attempt it bare handed!
|
||||
Orcs and killer bees share their lifestyle.
|
||||
Orcs do not procreate in dark rooms.
|
||||
@@ -155,12 +160,14 @@ Sometimes monsters are more likely to fight each other than attack you.
|
||||
Spinach, carrot, and jelly -- a meal fit for a nurse!
|
||||
Surviving the full extent of the mines could mean that your luck is changing.
|
||||
Tainted meat is even more sickening than poison!
|
||||
Take your healing potions to the next level!
|
||||
Telepathy is just a trick: once you know how to do it, it's easy.
|
||||
The Leprechaun Gold Tru$t is no division of the Magic Memory Vault.
|
||||
The Wizard finds death to be quite an experience.
|
||||
The best equipment for your work is, of course, the most expensive.
|
||||
The gods don't appreciate pesky priesthood.
|
||||
The gods will get angry if you kill your dog.
|
||||
The less magic in your armor, the more you can add.
|
||||
The magic marker is mightier than the sword.
|
||||
The moon is not the only heavenly body to influence this game.
|
||||
The orc swings his orcish broadsword named Elfrist at you. You die...
|
||||
@@ -173,10 +180,10 @@ There is no harm in praising a large dog.
|
||||
There is nothing like eating a mimic.
|
||||
There once was a Knight named Lancelot who liked to ride with his lance a lot.
|
||||
They say a gelatinous cube can paralyze you...
|
||||
They say that Juiblex is afraid of a wand of digging.
|
||||
They say that Juiblex is somewhat afraid of a wand of digging.
|
||||
They say that Medusa would like to put you on a pedestal.
|
||||
They say that Vlad lives!!! ... in the mazes.
|
||||
They say that `Elbereth' is often written about.
|
||||
They say that Vlad lives!!! ... near the mazes.
|
||||
They say that 'Elbereth' is often written about.
|
||||
They say that a bag of holding can't hold everything.
|
||||
They say that a blessed tin of quasit meat is a quick meal.
|
||||
They say that a cat avoids traps.
|
||||
@@ -205,6 +212,7 @@ They say that a unicorn might bring you luck.
|
||||
They say that a wand of cancellation is like a wand of polymorph.
|
||||
They say that a wand of locking can close more than just doors.
|
||||
They say that a wand of polymorph can change your game.
|
||||
They say that a wise choice of donations lets you choose your blessings.
|
||||
They say that a wizard is even more powerful the second time around.
|
||||
They say that a xorn knows of no obstacles when pursuing you.
|
||||
They say that abusing a credit card could shock you sooner or later.
|
||||
@@ -216,7 +224,6 @@ They say that antique dealers are always interested in precious stones.
|
||||
They say that bandaging one's wounds helps to keep up one's appearance.
|
||||
They say that booze can be diluted but not cancelled.
|
||||
They say that by listening carefully, you can hear a secret door!
|
||||
They say that calculating your donations lets you choose your blessings.
|
||||
They say that carrots and carrot juice may improve your vision.
|
||||
They say that cave spiders are not considered expensive health food.
|
||||
They say that demigods must leave behind their prized earthly possessions.
|
||||
@@ -227,11 +234,12 @@ They say that dwarves lawfully mind their own business.
|
||||
They say that eating a bat corpse will make you batty, for a while.
|
||||
They say that eating a cram ration is a smart move.
|
||||
They say that eating blue jelly is cool if you don't fight the feeling.
|
||||
They say that elven armor can hold the most magic.
|
||||
They say that escaping a dungeon is only the beginning of the end.
|
||||
They say that feeling an unexpected draft of air is sort of a breakthrough.
|
||||
They say that finding a cursed gray stone is always bad luck.
|
||||
They say that gaining a level is an experience that can raise your sights.
|
||||
They say that garter snake meat rarely tastes good but it's still healthy.
|
||||
They say that garter snake meat may not taste good but it's still healthy.
|
||||
They say that gauntlets of dexterity have a hidden enchanted touch.
|
||||
They say that going to heaven is just another way of escaping the dungeon.
|
||||
They say that golden nagas are law-abiding denizens as long as you are too.
|
||||
@@ -239,6 +247,7 @@ They say that gremlins can make you feel cooler than you are now.
|
||||
They say that grid bugs only exist in a strictly Cartesian sense.
|
||||
They say that hackers often feel jumpy about eating nymphs.
|
||||
They say that having polymorph control won't shock you.
|
||||
They say that healing potions often come in pairs.
|
||||
They say that if it's hard getting your food down another bite could kill.
|
||||
They say that if you don't wear glasses why bother with carrots?
|
||||
They say that if you notice a loose board beneath you, don't step on it.
|
||||
@@ -271,6 +280,7 @@ They say that only chaotics can kill shopkeepers and get away with it.
|
||||
They say that only female monsters can lay eggs.
|
||||
They say that playing a horn really bad is really good.
|
||||
They say that prayer at an altar can sometimes make the water there holy.
|
||||
They say that the right wand may help you chase a nymph.
|
||||
They say that rubbing a glowing potion does not make it a magic lamp.
|
||||
They say that scalpels become dull because they're not athames.
|
||||
They say that shopkeepers don't like pick-axes.
|
||||
@@ -280,6 +290,7 @@ They say that shopkeepers often have a large amount of money in their purses.
|
||||
They say that shopkeepers often remember things that you might forget.
|
||||
They say that sinks and armor don't mix, take your cloak off now!
|
||||
They say that sinks run hot and cold and many flavors in between.
|
||||
They say that sitting on a vampire's throne is worth the danger.
|
||||
They say that snake charmers aren't charismatic, just musical.
|
||||
They say that soldiers are always prepared and usually protected.
|
||||
They say that some eggs could hatch in your pack, lucky or not.
|
||||
@@ -296,6 +307,7 @@ They say that teleport traps are the devil's work.
|
||||
They say that tengu don't wear rings, why should you?
|
||||
They say that tengu never steal gold although they would be good at it.
|
||||
They say that that which was stolen once can be stolen again, ask any nymph.
|
||||
They say that the best way to fix your injuries is a potion.
|
||||
They say that the Delphic Oracle knows that lizard corpses aren't confusing.
|
||||
They say that the Hand of Elbereth can hold up your prayers.
|
||||
They say that the Leprechaun King is rich as Croesus.
|
||||
@@ -313,6 +325,7 @@ They say that the view from a fog cloud is really very moving.
|
||||
They say that the walls in shops are made of extra hard material.
|
||||
They say that there are at least 15 ways to lose a pair of levitation boots.
|
||||
They say that throwing glass gems is the same as throwing rocks.
|
||||
They say that to block a shocking sphere, you need the right shield.
|
||||
They say that trespassing a boulder is probably beneath you.
|
||||
They say that true power comes from within...except when it doesn't.
|
||||
They say that unicorns are fond of precious gems.
|
||||
@@ -324,6 +337,7 @@ They say that with a floating eye you could see in the dark.
|
||||
They say that you are lucky if you can get a unicorn to catch a ruby.
|
||||
They say that you are what you eat.
|
||||
They say that you can find named weapons at an altar if you're lucky.
|
||||
They say that you can give potions of extra healing new energy.
|
||||
They say that you can safely touch cockatrice eggs but why bother?
|
||||
They say that you can't break an amulet of reflection.
|
||||
They say that you don't always get what you wish for.
|
||||
@@ -351,6 +365,7 @@ Vampires hate garlic.
|
||||
Vault guards never disturb their Lords.
|
||||
Vegetarians enjoy lichen and seaweed.
|
||||
Visitors are requested not to apply genocide to shopkeepers.
|
||||
Want to heal faster? Dip your potions of healing in a potion of speed!
|
||||
Watch out, the Wizard might come back.
|
||||
Water traps have no effect on dragons.
|
||||
What is a cockatrice going to eat when it gets hungry?
|
||||
@@ -361,6 +376,7 @@ Why would anybody in his sane mind engrave "Elbereth"?
|
||||
Wishing too much may bring you too little.
|
||||
You can't bribe soldier ants.
|
||||
You can't leave a shop through the back door: there isn't one!
|
||||
You can't reflect explosions. But you might resist them.
|
||||
You may discover a fine spirit inside a potion bottle.
|
||||
You may want to dip into a potion of bottled blessings.
|
||||
You might be able to bribe a demon lord.
|
||||
|
||||
@@ -60,9 +60,10 @@ des.object("boulder", 09, 12);
|
||||
des.object("boulder", 03, 14);
|
||||
|
||||
-- prevent monster generation over the (filled) holes
|
||||
des.exclusion({ type = "monster-generation", region = { 08,01, 23,01 } });
|
||||
des.exclusion({ type = "monster-generation", region = { 07,01, 23,01 } });
|
||||
-- Traps
|
||||
des.trap("hole", 08, 01);
|
||||
des.trap("hole", 07, 01);
|
||||
des.trap("rolling boulder", 08, 01);
|
||||
des.trap("hole", 09, 01);
|
||||
des.trap("hole", 10, 01);
|
||||
des.trap("hole", 11, 01);
|
||||
|
||||
@@ -61,9 +61,9 @@ des.object("boulder",12,09);
|
||||
des.object("boulder",11,10);
|
||||
|
||||
-- prevent monster generation over the (filled) holes
|
||||
des.exclusion({ type = "monster-generation", region = { 05,01, 22,01 } });
|
||||
des.exclusion({ type = "monster-generation", region = { 05,01, 23,01 } });
|
||||
-- Traps
|
||||
des.trap("hole",05,01)
|
||||
des.trap("rolling boulder",05,01)
|
||||
des.trap("hole",06,01)
|
||||
des.trap("hole",07,01)
|
||||
des.trap("hole",08,01)
|
||||
@@ -81,6 +81,7 @@ des.trap("hole",19,01)
|
||||
des.trap("hole",20,01)
|
||||
des.trap("hole",21,01)
|
||||
des.trap("hole",22,01)
|
||||
des.trap("hole",23,01)
|
||||
|
||||
des.monster({ id = "giant mimic", appear_as = "obj:boulder" });
|
||||
des.monster({ id = "giant mimic", appear_as = "obj:boulder" });
|
||||
|
||||
@@ -49,6 +49,7 @@ des.object("boulder",06,06)
|
||||
-- prevent monster generation over the (filled) holes
|
||||
des.exclusion({ type = "monster-generation", region = { 07,09, 18,09 } });
|
||||
-- Traps
|
||||
des.trap("rolling boulder",07,09)
|
||||
des.trap("hole",08,09)
|
||||
des.trap("hole",09,09)
|
||||
des.trap("hole",10,09)
|
||||
|
||||
@@ -7,26 +7,27 @@ des.level_init({ style = "solidfill", fg = " " });
|
||||
des.level_flags("mazelevel", "noteleport", "premapped", "sokoban", "solidify");
|
||||
|
||||
des.map([[
|
||||
--------
|
||||
--|.|....|
|
||||
|........|----------
|
||||
|.-...-..|.|.......|
|
||||
|...-......|.......|
|
||||
|.-....|...|.......|
|
||||
|....-.--.-|.......|
|
||||
|..........|.......|
|
||||
|.--...|...|.......|
|
||||
|....-.|---|.......|
|
||||
--|....|----------+|
|
||||
|................|
|
||||
------------------
|
||||
--------
|
||||
--|.|....|
|
||||
|........|----------
|
||||
|.-...-..|.|.......|
|
||||
|...-......|.......|
|
||||
|.-....|...|.......|
|
||||
|....-.--.-|.......|
|
||||
|..........|.......|
|
||||
|.--...|...|.......---
|
||||
|....-.|---|.......+.|
|
||||
--|....|------------.|
|
||||
|................+.|
|
||||
--------------------
|
||||
]]);
|
||||
des.stair("down", 06,11)
|
||||
des.stair("up", 15,06)
|
||||
des.door("locked",18,10)
|
||||
des.region(selection.area(00,00,19,12), "lit");
|
||||
des.non_diggable(selection.area(00,00,19,12));
|
||||
des.non_passwall(selection.area(00,00,19,12));
|
||||
des.door("locked",19,09)
|
||||
des.door("locked",19,11)
|
||||
des.region(selection.area(00,00,21,12), "lit");
|
||||
des.non_diggable(selection.area(00,00,21,12));
|
||||
des.non_passwall(selection.area(00,00,21,12));
|
||||
|
||||
-- Boulders
|
||||
des.object("boulder",04,02)
|
||||
@@ -49,7 +50,7 @@ des.object("boulder",05,11)
|
||||
-- prevent monster generation over the (filled) holes
|
||||
des.exclusion({ type = "monster-generation", region = { 06,11, 18,11 } });
|
||||
-- Traps
|
||||
des.trap("hole",07,11)
|
||||
des.trap("rolling boulder",07,11)
|
||||
des.trap("hole",08,11)
|
||||
des.trap("hole",09,11)
|
||||
des.trap("hole",10,11)
|
||||
@@ -60,6 +61,7 @@ des.trap("hole",14,11)
|
||||
des.trap("hole",15,11)
|
||||
des.trap("hole",16,11)
|
||||
des.trap("hole",17,11)
|
||||
des.trap("hole",18,11)
|
||||
|
||||
-- Random objects
|
||||
des.object({ class = "%" });
|
||||
|
||||
@@ -55,6 +55,7 @@ des.object("boulder",10,10)
|
||||
-- prevent monster generation over the (filled) holes
|
||||
des.exclusion({ type = "monster-generation", region = { 11,10, 27,10 } });
|
||||
-- Traps
|
||||
des.trap("rolling boulder",11,10)
|
||||
des.trap("hole",12,10)
|
||||
des.trap("hole",13,10)
|
||||
des.trap("hole",14,10)
|
||||
|
||||
@@ -48,8 +48,9 @@ des.object("boulder",10,10)
|
||||
des.object("boulder",03,11)
|
||||
|
||||
-- prevent monster generation over the (filled) holes
|
||||
des.exclusion({ type = "monster-generation", region = { 12,10, 24,10 } });
|
||||
des.exclusion({ type = "monster-generation", region = { 11,10, 24,10 } });
|
||||
-- Traps
|
||||
des.trap("rolling boulder",11,10)
|
||||
des.trap("hole",12,10)
|
||||
des.trap("hole",13,10)
|
||||
des.trap("hole",14,10)
|
||||
|
||||
@@ -74,16 +74,21 @@ des.object("boulder",10,10)
|
||||
|
||||
-- prevent monster generation over the (filled) pits
|
||||
des.exclusion({ type = "monster-generation", region = { 01,06, 07,11 } });
|
||||
|
||||
-- Traps
|
||||
des.trap("pit",03,06)
|
||||
des.trap("pit",04,06)
|
||||
des.trap("pit",05,06)
|
||||
|
||||
des.trap("pit",02,06)
|
||||
des.trap("pit",02,07)
|
||||
des.trap("pit",02,08)
|
||||
des.trap("pit",02,09)
|
||||
des.trap("rolling boulder",02,09)
|
||||
|
||||
des.trap("pit",02,10)
|
||||
des.trap("pit",03,10)
|
||||
des.trap("pit",04,10)
|
||||
des.trap("pit",05,10)
|
||||
des.trap("pit",06,10)
|
||||
des.trap("pit",07,10)
|
||||
des.trap("rolling boulder",07,10)
|
||||
|
||||
-- A little help
|
||||
des.object("scroll of earth",02,11)
|
||||
|
||||
@@ -50,11 +50,14 @@ des.trap("pit",01,03)
|
||||
des.trap("pit",01,04)
|
||||
des.trap("pit",01,05)
|
||||
des.trap("pit",01,06)
|
||||
des.trap("pit",01,07)
|
||||
des.trap("rolling boulder",01,07)
|
||||
|
||||
des.trap("pit",01,08)
|
||||
des.trap("pit",02,08)
|
||||
des.trap("pit",03,08)
|
||||
des.trap("pit",04,08)
|
||||
des.trap("pit",05,08)
|
||||
des.trap("pit",06,08)
|
||||
des.trap("rolling boulder",06,08)
|
||||
|
||||
-- A little help
|
||||
des.object("scroll of earth",01,09)
|
||||
|
||||
@@ -1583,8 +1583,8 @@ allow rogues to also backstab sleeping or paralyzed monsters
|
||||
rogues cannot backstab monsters that have no backside
|
||||
give experience if opening Schroedinger's Box causes death of the cat inside
|
||||
priest donation amounts are explicitly stated, randomized slightly, based on
|
||||
peak rather than current level, and allow for bulk donations (buying
|
||||
larger amounts of clairvoyance/protection) if you have a lot of gold
|
||||
peak rather than current level, and allow for bulk donations (buying
|
||||
larger amounts of clairvoyance/protection) if you have a lot of gold
|
||||
amulet of magical breathing increases power regeneration
|
||||
change some command keys, 'v' is now chronicle, 'V' is versionshort,
|
||||
m-prefix 'V' is longer version, remove key binding of #history
|
||||
@@ -1596,6 +1596,8 @@ prevent phaseable monsters hiding deep inside nondiggable walls
|
||||
blessed potion of see invisible does not guarantee the intrinsic
|
||||
prevent selecting all options in #optionsfull menu
|
||||
shapeshifters change shape less
|
||||
rolling boulder traps aren't removed when stepped on and move boulders
|
||||
pushed onto them
|
||||
|
||||
|
||||
Fixes to 3.7.0-x General Problems Exposed Via git Repository
|
||||
@@ -2915,7 +2917,7 @@ add "make fetch-docs" to download pre-formatted documentation
|
||||
monsters will use throw-and-return weapons such as an aklys
|
||||
archeologists can identify scrolls by deciphering their labels
|
||||
monster destroy armor -spell first erodes armor
|
||||
iron shoes protect the wearer against certain floor-based traps
|
||||
iron footwear protects the wearer against certain floor-based traps
|
||||
ring of stealth prevents hero from leaving tracks
|
||||
the game now automatically tracks which sell prices and buy prices you have
|
||||
seen for each type of item; these are visible in the discoveries list,
|
||||
|
||||
@@ -3292,6 +3292,7 @@ extern struct monst *activate_statue_trap(struct trap *, coordxy, coordxy,
|
||||
extern int immune_to_trap(struct monst *, unsigned) NO_NNARGS; /* revisit */
|
||||
extern void set_utrap(unsigned, unsigned);
|
||||
extern void reset_utrap(boolean);
|
||||
extern boolean wearing_iron_shoes(struct monst *);
|
||||
extern boolean m_harmless_trap(struct monst *, struct trap *) NONNULLPTRS;
|
||||
extern void dotrap(struct trap *, unsigned) NONNULLARG1;
|
||||
extern void seetrap(struct trap *) NONNULLARG1;
|
||||
|
||||
20
src/hack.c
20
src/hack.c
@@ -592,6 +592,26 @@ moverock_core(coordxy sx, coordxy sy)
|
||||
}
|
||||
seetrap(ttmp);
|
||||
return sobj_at(BOULDER, sx, sy) ? -1 : 0;
|
||||
case ROLLING_BOULDER_TRAP:
|
||||
{
|
||||
int tox = rx;
|
||||
int toy = ry;
|
||||
/* the boulder continues until it reaches one of
|
||||
the trap's launch spots or hits a wall / out-of-bounds */
|
||||
while (isok(tox + u.dx, toy + u.dy)) {
|
||||
tox += u.dx;
|
||||
toy += u.dy;
|
||||
if (tox == ttmp->launch.x && toy == ttmp->launch.y)
|
||||
break;
|
||||
if (tox == ttmp->launch2.x && toy == ttmp->launch2.y)
|
||||
break;
|
||||
}
|
||||
pline("%s away from you!",
|
||||
Tobjnam(otmp, "suddenly roll"));
|
||||
feeltrap(ttmp);
|
||||
launch_obj(BOULDER, sx, sy, tox, toy, ROLL | LAUNCH_KNOWN);
|
||||
return sobj_at(BOULDER, sx, sy) ? -1 : 0;
|
||||
}
|
||||
default:
|
||||
break; /* boulder not affected by this trap */
|
||||
}
|
||||
|
||||
@@ -2131,8 +2131,10 @@ find_misc(struct monst *mtmp)
|
||||
if ((t = t_at(xx, yy)) != 0
|
||||
&& (ignore_boulders || !sobj_at(BOULDER, xx, yy))
|
||||
&& !onscary(xx, yy, mtmp)) {
|
||||
/* use trap if it's the correct type */
|
||||
if (t->ttyp == POLY_TRAP) {
|
||||
/* use trap if it's the correct type and will
|
||||
polymorph the monster */
|
||||
if (t->ttyp == POLY_TRAP &&
|
||||
!wearing_iron_shoes(mtmp)) {
|
||||
gt.trapx = xx;
|
||||
gt.trapy = yy;
|
||||
gm.m.has_misc = MUSE_POLY_TRAP;
|
||||
|
||||
@@ -1176,9 +1176,20 @@ break_armor(void)
|
||||
if ((otmp = uarmc) != 0
|
||||
/* mummy wrapping adapts to small and very big sizes */
|
||||
&& (otmp->otyp != MUMMY_WRAPPING || !WrappingAllowed(uptr))) {
|
||||
pline_The("clasp on your %s breaks open!", cloak_simple_name(otmp));
|
||||
(void) Cloak_off();
|
||||
dropp(otmp);
|
||||
if (otmp->otyp == MUMMY_WRAPPING) {
|
||||
/* doesn't have a clasp to break open */
|
||||
Your("%s tears apart!", cloak_simple_name(otmp));
|
||||
(void) Cloak_off();
|
||||
useup(otmp);
|
||||
} else if (otmp->otyp == ALCHEMY_SMOCK) {
|
||||
pline_The("knot on your %s is pulled apart!", cloak_simple_name(otmp));
|
||||
(void) Cloak_off();
|
||||
dropp(otmp);
|
||||
} else {
|
||||
pline_The("clasp on your %s breaks open!", cloak_simple_name(otmp));
|
||||
(void) Cloak_off();
|
||||
dropp(otmp);
|
||||
}
|
||||
}
|
||||
if (uarmu) {
|
||||
Your("shirt rips to shreds!");
|
||||
|
||||
10
src/sit.c
10
src/sit.c
@@ -325,9 +325,13 @@ special_throne_effect(int effect) {
|
||||
case 11:
|
||||
/* polymorph effect (not blocked by magic resistance, but other things
|
||||
that protect from polymorphs work) */
|
||||
pline("This throne was not meant for those such as you!");
|
||||
You_feel("a change coming over you.");
|
||||
polyself(POLY_NOFLAGS);
|
||||
if (is_vampire(gy.youmonst.data)) {
|
||||
You_feel("unworthy.");
|
||||
} else {
|
||||
pline("This throne was not meant for those such as you!");
|
||||
You_feel("a change coming over you.");
|
||||
polyself(POLY_NOFLAGS);
|
||||
}
|
||||
break;
|
||||
case 12:
|
||||
/* acid damage */
|
||||
|
||||
31
src/trap.c
31
src/trap.c
@@ -16,7 +16,6 @@ staticfn boolean mu_maybe_destroy_web(struct monst *, boolean, struct trap *);
|
||||
staticfn struct obj *t_missile(int, struct trap *);
|
||||
staticfn boolean floor_trigger(int);
|
||||
staticfn boolean check_in_air(struct monst *, unsigned);
|
||||
staticfn boolean wearing_iron_shoes(struct monst *);
|
||||
staticfn int trapeffect_arrow_trap(struct monst *, struct trap *, unsigned);
|
||||
staticfn int trapeffect_dart_trap(struct monst *, struct trap *, unsigned);
|
||||
staticfn int trapeffect_rocktrap(struct monst *, struct trap *, unsigned);
|
||||
@@ -1094,12 +1093,12 @@ check_in_air(struct monst *mtmp, unsigned trflags)
|
||||
|| ((is_you ? Flying : is_flyer(mtmp->data)) && !plunged));
|
||||
}
|
||||
|
||||
/* return TRUE if mtmp is wearing iron shoes */
|
||||
staticfn boolean
|
||||
/* return TRUE if mtmp is wearing shoes made of iron (iron/kicking) */
|
||||
boolean
|
||||
wearing_iron_shoes(struct monst *mtmp)
|
||||
{
|
||||
struct obj *armf = which_armor(mtmp, W_ARMF);
|
||||
return armf && armf->otyp == IRON_SHOES;
|
||||
return armf && objects[armf->otyp].oc_material == IRON;
|
||||
}
|
||||
|
||||
/* is trap ttmp harmless to monster mtmp? */
|
||||
@@ -2453,10 +2452,6 @@ trapeffect_poly_trap(
|
||||
struct trap *trap,
|
||||
unsigned int trflags)
|
||||
{
|
||||
static int possible_boots[] = {
|
||||
ELVEN_BOOTS, KICKING_BOOTS, FUMBLE_BOOTS, LEVITATION_BOOTS,
|
||||
JUMPING_BOOTS, SPEED_BOOTS, WATER_WALKING_BOOTS };
|
||||
|
||||
if (mtmp == &gy.youmonst) {
|
||||
boolean viasitting = (trflags & VIASITTING) != 0;
|
||||
int steed_article = ARTICLE_THE;
|
||||
@@ -2480,7 +2475,8 @@ trapeffect_poly_trap(
|
||||
if (wearing_iron_shoes(mtmp)) {
|
||||
deltrap(trap);
|
||||
pline("%s warps strangely.", Yname2(uarmf));
|
||||
poly_obj(uarmf, ROLL_FROM(possible_boots));
|
||||
poly_obj(
|
||||
uarmf, uarmf->otyp == IRON_SHOES ? KICKING_BOOTS : IRON_SHOES);
|
||||
update_inventory();
|
||||
if (uarmf)
|
||||
prinv(NULL, uarmf, 0);
|
||||
@@ -2506,7 +2502,8 @@ trapeffect_poly_trap(
|
||||
impossible("re-equipping iron shoes destroyed them?");
|
||||
return Trap_Effect_Finished;
|
||||
}
|
||||
shoes = poly_obj(shoes, ROLL_FROM(possible_boots));
|
||||
shoes = poly_obj(
|
||||
shoes, shoes->otyp == IRON_SHOES ? KICKING_BOOTS : IRON_SHOES);
|
||||
/* now equip them again */
|
||||
if (shoes) {
|
||||
mtmp->misc_worn_check |= W_ARMF;
|
||||
@@ -2671,9 +2668,13 @@ trapeffect_rolling_boulder_trap(
|
||||
!Deaf ? "Click! " : "");
|
||||
if (!launch_obj(BOULDER, trap->launch.x, trap->launch.y,
|
||||
trap->launch2.x, trap->launch2.y, style)) {
|
||||
deltrap(trap);
|
||||
newsym(u.ux, u.uy); /* get rid of trap symbol */
|
||||
pline("Fortunately for you, no boulder was released.");
|
||||
/* if this is a known trap, the player may have known there wasn't
|
||||
a lined up boulder, so use a shorter message to avoid --More--
|
||||
spam */
|
||||
if (style & LAUNCH_KNOWN)
|
||||
pline("No boulder was released.");
|
||||
else
|
||||
pline("Fortunately for you, no boulder was released.");
|
||||
}
|
||||
} else {
|
||||
if (!m_in_air(mtmp)) {
|
||||
@@ -2816,6 +2817,8 @@ immune_to_trap(struct monst *mon, unsigned ttype)
|
||||
hanging to the ceiling */
|
||||
if (Sokoban && (is_pit(ttype) || is_hole(ttype)))
|
||||
return TRAP_NOT_IMMUNE;
|
||||
if (In_sokoban(&u.uz) && ttype == ROLLING_BOULDER_TRAP)
|
||||
return TRAP_CLEARLY_IMMUNE; /* not dangerous in Sokoban */
|
||||
if (is_floater(pm) || is_flyer(pm)
|
||||
|| (is_clinger(pm) && has_ceiling(&u.uz)))
|
||||
return TRAP_CLEARLY_IMMUNE;
|
||||
@@ -3585,7 +3588,7 @@ find_random_launch_coord(struct trap *ttmp, coord *cc)
|
||||
coordxy dx, dy;
|
||||
coordxy x, y;
|
||||
|
||||
if (!ttmp || !cc)
|
||||
if (!ttmp || !cc || Sokoban)
|
||||
return FALSE;
|
||||
|
||||
x = ttmp->tx;
|
||||
|
||||
Reference in New Issue
Block a user