- if (obj != AXE)
- return (discard(verb, obj, false));
- int i = ATDWRF(game.loc);
- if (i <= 0) {
- if (AT(DRAGON) && game.prop[DRAGON] == 0) {
- spk = DRAGON_SCALES;
- return throw_support(spk);
- }
- if (AT(TROLL)) {
- spk = TROLL_RETURNS;
- return throw_support(spk);
- }
- if (AT(OGRE)) {
- spk = OGRE_DODGE;
- return throw_support(spk);
- }
- if (HERE(BEAR) && game.prop[BEAR] == 0) {
- /* This'll teach him to throw the axe at the bear! */
- DROP(AXE, game.loc);
- game.fixed[AXE] = -1;
- game.prop[AXE] = 1;
- JUGGLE(BEAR);
- RSPEAK(AXE_LOST);
- return GO_CLEAROBJ;
+ if (command->obj != AXE)
+ return (discard(command->verb, command->obj, false));
+ else {
+ int i = atdwrf(game.loc);
+ if (i <= 0) {
+ if (AT(DRAGON) && game.prop[DRAGON] == 0)
+ return throw_support(DRAGON_SCALES);
+ if (AT(TROLL))
+ return throw_support(TROLL_RETURNS);
+ else if (AT(OGRE))
+ return throw_support(OGRE_DODGE);
+ else if (HERE(BEAR) && game.prop[BEAR] == UNTAMED_BEAR) {
+ /* This'll teach him to throw the axe at the bear! */
+ drop(AXE, game.loc);
+ game.fixed[AXE] = -1;
+ game.prop[AXE] = 1;
+ juggle(BEAR);
+ rspeak(AXE_LOST);
+ return GO_CLEAROBJ;
+ }
+ command->obj = 0;
+ return (attack(command));