git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5702 c06c8d41-db1a-0410-9941-cceddc491573
KATZLWENEIQMKKWIV4ZLXJ5HFUW6SU5K4ZU6NENBOL4XAAVTDUKAC U2AV5FJ7UR6QMGMSZBW6MMLBZHWTANK46QOBP42PYHMAXJCBMRBQC DMN63LCKBTJZN3X2XKYFV2XY3AEKDRJJTKBANH3TT6ZDPELAA3MQC RSRV6GOBFVU7GA4LEOWMUEOXODWRF6AUCAYTUGAKXNPB6I6ABFOQC IXJLPPT3ORIZEA6563MAPB6OCTR2PC2UMWFYO6UATHH5LU3PC65QC VQCEREOVOQYOCAHAO4OTEHN5ROGPBJ44WK4WKRFIYIJI2PF56UHQC ATIPL5YS7PRHIEEBBLNOJMAZWTQLPBWGWOQZO5SHPZB475GEZK7AC GSJA56E3ORVIBCBA6T6WU2HE4DCLJ6NZPW76O7L54N4CYPKLJOWQC NQMXQ6OQVUSC7Y7F7IL252QW4A5JED224EECNHWAM4ZZYVNY745AC EFS55XWWSC2ARLHL7KI3SZYQB45IUT33RW7JFDGCLUP4A4MBHDYQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC QCIPZ52TOIKLA6O22P7USLEAYI4VAZRLGVXMAASSGEP37KN5PEVAC FLAGBNUNSIQNFDN53CDWABJRTTFWDL4PG34AI474ZKPXDEPYHOAQC ZGUJWUFJ4NFFJ6PGXLFGQWCWBCZHPWGWI44NJHJEVPRG5L36PADQC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC JM7UAK777RAVDAVLQLEOBRTGNW2B47S5G55XITJXO243IUNZHVYQC JCWJWGMQIKQGSSFJUQRKNIWW3HBOJSHYDTOPPE5BWOJTIJTDYUTAC 2U47I7M3TKXUM3KHMO3UH7KGMRKOGHJQFVYPC4CTAWBV22T2HTEQC DDU4A3JGN5IUIPP5IASOODKPR2WBHSDSV4FITZ6HNXNSXXQACWAQC DH3D44HGNRXTSZLL5HTHKOPKCO4VZQZVBEMFOAPRJGQMLGN2BFQAC B62ICMDTN5V7R7RBL4JALFVKEMVOOVLRSJASRNYS6CGFWBEEF5JQC H6ZPCZ7HN5UZTOS6QFAE4WUJR6BCDU4OB7ONQ7ELXIK65ASPJOTAC LS3DAZVRDCXVN2BKBC6RGCKO3R43Z7HKG4GXJWLBK4AKBL2G6QDQC MIMVAKQXKJMHYLKXKY2TJEBL4HCOHKLDQYX6J5H4MWCI442NWEHAC AMFTO4UE74UYQBU3R2EYUU6BJ7SC4O4NOAFICRTLMT3MIFRQ6AKAC GZMPIDNMBXZ4B2ZWKREHBPAVN53J6WRVY5W5KY52KEBHKU6IW4IQC C7ZG3QMG2CDCRQFCCC5BAY7Q7EQ2I634BXGVOOTMSR7EYBARJ6MAC 226KYCTMLIXUKD734QATY3JKWUUKC5Q3O75JT5EWIX6BKR7ANZSAC VBQODM6G5B35WWYGNT36EQDJFVTHMZB6CJWAFP3UQVD6NRUSKJAQC GP7DDCLYNLI6SDXJJ7MH6XHXS5FGFM4SNL2J7J5DGE2EJOETJPHAC OJXLFQMDM4XF2WSDVMAC3FXG5HJQB3QAQXLZM35RA34YYLTAP2HQC WZWOQZCXUB7QX7PGQMIUCH5JM5YME25GE2GMMT2NIJP5OIZUZLBQC BGJ7P65JV2OFVXMGAJDHV5Y36TR7JOFDWJUZJBHUBD7SCQMDRBEAC FMSYEPHQUC3RGEOEJ77OZ43JTIFITY56SOOKYPU4CKAVB4VP65FAC PDOFPXD2X6VI23AHKCGQ5RVDBG74CNP2E3YOHKXLOARHHBXEK3HQC CGYTZT5QWIEGYKUOLOK7MFXSLJKLYRZONER5ZCDZO5XYWSLG475QC UHOAWBSBZBPHWMNXZCVB4SBJM4DTZAG3YRNNJNIKJN4CE2DP27JQC 27P4FR22LK2JH5476TDTKBWT4RU72W6A3FOEUC35MLNTLRI2LKOAC DODCHP2S4I6VZKQAVXX6D76OPNFI2YWZ4XH3HZTMAJZXA2RJ3XRQC YXNQKP2F4I3PCURJS7RD7SVOWMNPPW3LKMVRRBHHGILWSRKGCKDQC 4JNV6RTRY2UR3PZFMCNPRGCBSUAB7QTXYJCSYBIUAFMCCYVGN6PQC 4NBPZKMZBKB3QYX4FFUAKDXQS43NJCBDLMHKDJFVXHQLX4MQDINAC HPE7PVDIOJDELSCDLCMFYFSDKOEJN35IZPWT57U3AIAPU45QOP6QC RDZUMV3A5TREQHLPPJWDWVXBNIOWC3CQJJ35TYFBQQVQNTU7SPXQC GT7BSR54BVJKHUCLEBTELGBMNBFFDQW52EVC4XKVEMUVG2UGZMDAC YCL3W2PFE6ILTGBFODCSXNPDIA46KVSZP2TI7HDMYAOEJT65RIEAC CUB27EJDQG66FF2YCKOV4HU3LAJVJIHUJ5QYLURRDIEVGPK666DQC PFEJ4LMDNEKLMGRCMWQ7EIRVU4JMYGICI4G7X4WVWOROVXQCBZ7QC QEEJFAETO6B2J4IWDIDCJ5UNIFNNHHG22IWF2CUJRTJJBNE47CWQC QKGDOYIYKE6B36ION5O2DRW65DWWPZMYNWJVH7LJJ7FPGGM2MYAQC LFBNFE3PZBXTR2ROPKYPARUWLJAYWAKGTS7VBWADZWVVSJ5CLX6AC REVECUB3H65Q6RELFWCJJJXN7EK4FB5JJYZP5VJHDDRCV7GXSQUQC I2B33Z7NZGC33AMDSSK446AZZYWKPHWLAGULVHKKZU4MVB4BNJOAC U63Y7KF5BVZFSYK2SCNJSVBSUHSRSDNBDNPAAKTL7NWKT47Q4QIAC ZI3XDQ75HFW54FG6ZK6ERZYV6FEXUGFY35Z6VZMKMQK3IMDG6XBQC NFJKJYTT6CBLOKLGT6HIVIDEPWXMGXJV5AAL37SBZTG2HSFMJMKQC HHKRUVC6WMVKQRUQRYB5VAEDXUS6TMAKO7BSTBGVVL2AUOEBFUJAC (testbits( flags, SPFLAG_TARGET ) ? DIR_TARGET :testbits( flags, SPFLAG_GRID ) ? DIR_TARGET :testbits( flags, SPFLAG_DIR ) ? DIR_DIR: DIR_NONE);
(testbits( flags, SPFLAG_TARGET ) ? DIR_TARGET :testbits( flags, SPFLAG_GRID ) ? DIR_TARGET :testbits( flags, SPFLAG_DIR ) ? DIR_DIR: DIR_NONE);
case SPELL_CREATE_NOISE: // unused, the player can shout to do this - bwrnoisy(25, you.x_pos, you.y_pos, "You hear a voice calling your name!");break;case SPELL_REMOVE_CURSE:remove_curse(false);
case SPELL_ARC:if (burn_freeze(powc, BEAM_ELECTRICITY) == -1)return (SPRET_ABORT);
break;case SPELL_DELAYED_FIREBALL:crawl_state.cant_cmd_repeat("You can't repeat delayed fireball.");// This spell has two main advantages over Fireball://// (1) The release is instantaneous, so monsters will not// get an action before the player... this allows the// player to hit monsters with a double fireball (this// is why we only allow one delayed fireball at a time,// if you want to allow for more, then the release should// take at least some amount of time).//// The casting of this spell still costs a turn. So// casting Delayed Fireball and immediately releasing// the fireball is only slightly different than casting// a regular Fireball (monsters act in the middle instead// of at the end). This is why we allow for the spell// level discount so that Fireball is free with this spell// (so that it only costs 7 levels instead of 13 to have// both).//// (2) When the fireball is released, it is guaranteed to// go off... the spell only fails at this point. This can// be a large advantage for characters who have difficulty// casting Fireball in their standard equipment. However,// the power level for the actual fireball is determined at// release, so if you do swap out your enhancers you'll// get a less powerful ball when its released. -- bwr//if (!you.attribute[ ATTR_DELAYED_FIREBALL ]){// okay, this message is weak but functional -- bwrmpr( "You feel magically charged." );you.attribute[ ATTR_DELAYED_FIREBALL ] = 1;}elsecanned_msg( MSG_NOTHING_HAPPENS );
case SPELL_RING_OF_FLAMES:cast_ring_of_flames(powc);break;case SPELL_RESTORE_STRENGTH:restore_stat(STAT_STRENGTH, 0, false);
case SPELL_LEHUDIBS_CRYSTAL_SPEAR:if (!zapping(ZAP_CRYSTAL_SPEAR, powc, beam, true))return (SPRET_ABORT);
case SPELL_TELEPORT_OTHER:// teleport creature (I think)if (!zapping(ZAP_TELEPORTATION, powc, beam, true))
case SPELL_THUNDERBOLT:if (!zapping(ZAP_LIGHTNING, powc, beam, true))
case SPELL_DETECT_CURSE:detect_curse(false);break;case SPELL_ABJURATION_I:case SPELL_ABJURATION_II:abjuration(powc);break;case SPELL_LEVITATION:potion_effect( POT_LEVITATION, powc );
case SPELL_REPEL_UNDEAD:turn_undead(50);
case SPELL_BOLT_OF_DRAINING:if (!zapping(ZAP_NEGATIVE_ENERGY, powc, beam, true))
case SPELL_HELLFIRE:// Should only be available from// staff of Dispater & Sceptre of Asmodeusif (!zapping(ZAP_HELLFIRE, powc, beam, true))
case SPELL_BOLT_OF_INACCURACY:if (!zapping(ZAP_BEAM_OF_ENERGY, powc, beam, true))return (SPRET_ABORT);
case SPELL_EVAPORATE:if (!cast_evaporate(powc, beam, potion))return SPRET_ABORT;
case SPELL_POISON_ARROW:if (!zapping(ZAP_POISON_ARROW, powc, beam, true))return (SPRET_ABORT);
case SPELL_FREEZING_CLOUD:cast_big_c(powc, CLOUD_COLD, KC_YOU, beam);
case SPELL_MAGIC_MAPPING:if (you.level_type == LEVEL_PANDEMONIUM)
case SPELL_DELAYED_FIREBALL:crawl_state.cant_cmd_repeat("You can't repeat delayed fireball.");// This spell has two main advantages over Fireball://// (1) The release is instantaneous, so monsters will not// get an action before the player... this allows the// player to hit monsters with a double fireball (this// is why we only allow one delayed fireball at a time,// if you want to allow for more, then the release should// take at least some amount of time).//// The casting of this spell still costs a turn. So// casting Delayed Fireball and immediately releasing// the fireball is only slightly different than casting// a regular Fireball (monsters act in the middle instead// of at the end). This is why we allow for the spell// level discount so that Fireball is free with this spell// (so that it only costs 7 levels instead of 13 to have// both).//// (2) When the fireball is released, it is guaranteed to// go off... the spell only fails at this point. This can// be a large advantage for characters who have difficulty// casting Fireball in their standard equipment. However,// the power level for the actual fireball is determined at// release, so if you do swap out your enhancers you'll// get a less powerful ball when its released. -- bwr//if (!you.attribute[ ATTR_DELAYED_FIREBALL ])
{powc = stepdown_value( powc, 10, 10, 40, 45 );magic_mapping( 5 + powc, 50 + random2avg( powc * 2, 2 ), false );}
canned_msg( MSG_NOTHING_HAPPENS );
case SPELL_PAIN:if (!zapping(ZAP_PAIN, powc, beam, true))return (SPRET_ABORT);dec_hp(1, false);
case SPELL_TWIST:cast_twist(powc);break;case SPELL_AIRSTRIKE:airstrike(powc, spd);
case SPELL_FREEZE:if (burn_freeze(powc, BEAM_COLD) == -1)return (SPRET_ABORT);
case SPELL_SYMBOL_OF_TORMENT:torment(TORMENT_SPELL, you.x_pos, you.y_pos);
// Spells that create new monsters. If a god is making you cast one// of these spells, any monsters produced will count as god gifts.
case SPELL_ROTTING:cast_rotting(powc);break;// Summoning spells, and other spells that create new monsters.// If a god is making you cast one of these spells, any monsters produced// will count as god gifts.
case SPELL_FLAME_OF_CLEANSING:if (!zapping(ZAP_CLEANSING_FLAME, powc, beam, true))
case SPELL_TAME_BEASTS:cast_tame_beasts(powc);break;case SPELL_SLEEP:{const int sleep_power =stepdown_value( powc * 9 / 10, 5, 35, 45, 50 );#ifdef DEBUG_DIAGNOSTICSmprf(MSGCH_DIAGNOSTICS, "Sleep power stepdown: %d -> %d",powc, sleep_power);#endifif (!zapping(ZAP_SLEEP, sleep_power, beam, true))
case SPELL_BONE_SHARDS:if (!cast_bone_shards(powc, beam))
case SPELL_POLYMORPH_OTHER:// Trying is already enough, even if it fails.did_god_conduct(DID_DELIBERATE_MUTATING, 10);if (!zapping(ZAP_POLYMORPH_OTHER, powc, beam, true))return (SPRET_ABORT);break;case SPELL_TELEPORT_OTHER:if (!zapping(ZAP_TELEPORTATION, powc, beam, true))
case SPELL_INTOXICATE:cast_intoxicate(powc);break;case SPELL_MASS_CONFUSION:mass_enchantment(ENCH_CONFUSION, powc, MHITYOU);break;case SPELL_MASS_SLEEP:cast_mass_sleep(powc);break;case SPELL_CONTROL_UNDEAD:mass_enchantment(ENCH_CHARM, powc, MHITYOU);break;case SPELL_ABJURATION_I:case SPELL_ABJURATION_II:abjuration(powc);break;
case SPELL_CIGOTUVIS_DEGENERATION:if (!zapping(ZAP_DEGENERATION, powc, beam, true))
case SPELL_OLGREBS_TOXIC_RADIANCE:cast_toxic_radiance();break;// beneficial enchantmentscase SPELL_HASTE:if (!zapping(ZAP_HASTING, powc, beam, true))
case SPELL_HELLFIRE:// Should only be available from:// staff of Dispater & Sceptre of Asmodeusif (!zapping(ZAP_HELLFIRE, powc, beam, true))
case SPELL_GREATER_HEALING:if (!cast_healing(25))
case SPELL_RESIST_POISON:cast_resist_poison(powc);break;case SPELL_SEE_INVISIBLE:cast_see_invisible(powc);break;case SPELL_CONTROL_TELEPORT:cast_teleport_control(powc);break;// Healing.case SPELL_CURE_POISON_I: // Ely versioncase SPELL_CURE_POISON_II: // Poison magic version// both use same functioncast_cure_poison(powc);break;case SPELL_PURIFICATION:purification();break;case SPELL_RESTORE_STRENGTH:restore_stat(STAT_STRENGTH, 0, false);break;case SPELL_RESTORE_INTELLIGENCE:restore_stat(STAT_INTELLIGENCE, 0, false);break;case SPELL_RESTORE_DEXTERITY:restore_stat(STAT_DEXTERITY, 0, false);break;// Weapon brands.case SPELL_SURE_BLADE:cast_sure_blade(powc);break;
case SPELL_STONE_ARROW:if (!zapping(ZAP_STONE_ARROW, powc, beam, true))return (SPRET_ABORT);
case SPELL_EXCRUCIATING_WOUNDS:if (!brand_weapon(SPWPN_PAIN, powc))canned_msg(MSG_SPELL_FIZZLES);
case SPELL_FLY:cast_fly(powc);break;case SPELL_INSULATION:cast_insulation(powc);break;case SPELL_ORB_OF_ELECTROCUTION:if (!zapping(ZAP_ORB_OF_ELECTRICITY, powc, beam, true))return (SPRET_ABORT);
case SPELL_SPIDER_FORM:transform(powc, TRAN_SPIDER);
if (!num_creatures)mpr("You detect nothing.");else if (num_creatures == known_plants)mpr("You detect no further creatures.");elsempr("You detect creatures!");break;}case SPELL_CURE_POISON_II: // poison magic version of cure poisoncast_cure_poison(powc);
case SPELL_STATUE_FORM:transform(powc, TRAN_STATUE);
case SPELL_DEBUGGING_RAY:if (!zapping(ZAP_DEBUGGING_RAY, powc, beam, true))return (SPRET_ABORT);
// General enhancement.case SPELL_BERSERKER_RAGE:cast_berserk();
case SPELL_RECALL:recall(0);break;case SPELL_PORTAL:crawl_state.cant_cmd_repeat("You can't repeat create portal.");if (portal() == -1)return (SPRET_ABORT);
case SPELL_REGENERATION:cast_regen(powc);
case SPELL_DISINTEGRATE:if (!zapping(ZAP_DISINTEGRATION, powc, beam, true))return (SPRET_ABORT);
case SPELL_LEVITATION:potion_effect( POT_LEVITATION, powc );
case SPELL_ORB_OF_FRAGMENTATION:if (!zapping(ZAP_ORB_OF_FRAGMENTATION, powc, beam, true))return (SPRET_ABORT);break;
// othercase SPELL_SELECTIVE_AMNESIA:crawl_state.cant_cmd_repeat("You can't repeat selective amnesia.");
case SPELL_ICE_STORM:if (!zapping(ZAP_ICE_STORM, powc, beam, true))return (SPRET_ABORT);
case SPELL_SUBLIMATION_OF_BLOOD:cast_sublimation_of_blood(powc);
//jmf: new spells 19mar2000case SPELL_FLAME_TONGUE:if (!zapping(ZAP_FLAME_TONGUE, powc, beam, true))return (SPRET_ABORT);
case SPELL_DEATHS_DOOR:cast_deaths_door(powc);
case SPELL_SLEEP:{const int sleep_power =stepdown_value( powc * 9 / 10, 5, 35, 45, 50 );#ifdef DEBUG_DIAGNOSTICSmprf(MSGCH_DIAGNOSTICS, "Sleep power stepdown: %d -> %d",powc, sleep_power);#endifif (!zapping(ZAP_SLEEP, sleep_power, beam, true))
case SPELL_SEMI_CONTROLLED_BLINK://jmf: powc is ignoredif (cast_semi_controlled_blink(powc) == -1)
case SPELL_DISPERSAL:cast_dispersal(powc);
case SPELL_MAGIC_MAPPING:if (you.level_type == LEVEL_PANDEMONIUM){mpr("Your Earth magic cannot map Pandemonium.");}else{powc = stepdown_value( powc, 10, 10, 40, 45 );magic_mapping( 5 + powc, 50 + random2avg( powc * 2, 2 ), false );}
case SPELL_STONESKIN:cast_stoneskin(powc);break;case SPELL_CHAIN_LIGHTNING:cast_chain_lightning(powc);break;case SPELL_TWIST:cast_twist(powc);
case SPELL_CORPSE_ROT:corpse_rot(0);
noisy(30, you.x_pos, you.y_pos);mprf((sil ? MSGCH_PLAIN : MSGCH_SOUND),"The dungeon %s!", (sil ? "shakes" : "rumbles"));
if (silence)mpr("The dungeon shakes!");else{noisy(30, you.x_pos, you.y_pos);mpr("The dungeon rumbles!", MSGCH_SOUND);}
for ( unsigned int i = 0; i < ARRAYSZ(types); ++i )if ( types[i] == type )return true;return false;
for (unsigned int i = 0; i < ARRAYSZ(types); ++i)if (types[i] == type)return (true);return (false);
if (mon == NON_MONSTER) return 0;if (mons_friendly(&menv[mon])) return 0;if (one_chance_in(4)) return 0;if (mons_char(menv[mon].type) != 'S') return 0;if (check_mons_resist_magic(&menv[mon], pow)) return 0;
if (mon == NON_MONSTER|| one_chance_in(4)|| mons_friendly(&menv[mon])|| mons_char(menv[mon].type) != 'S'|| check_mons_resist_magic(&menv[mon], pow)){return 0;}
case 8: //jmf: changed to red wasp; was wolf spidermon = MONS_WOLF_SPIDER; //jmf: spiders aren't insectsbreak; // think: "Kingdom of the Spiders" {dlb}// not just insects!!! - changed back {dlb}
case 8:mon = MONS_WOLF_SPIDER; // think: "Kingdom of the Spiders" {dlb}break;