OSDN Git Service

refactor a_m_aux2
[hengband/hengband.git] / src / do-spell.c
index 476e83e..aa07aa3 100644 (file)
@@ -4,837 +4,6 @@
 
 #include "angband.h"
 
-#define LIFE_SPEL_CURE_LIGHT_WOUNDS         0  
-#define LIFE_SPEL_BLESS                            1  
-#define LIFE_SPEL_CAUSE_LIGHT_WOUNDS       2  
-#define LIFE_SPEL_CALL_LIGHT               3  
-#define LIFE_SPEL_DETECT_DOORS_AND_TRAPS    4  
-#define LIFE_SPEL_CURE_MEDIUM_WOUNDS       5  
-#define LIFE_SPEL_CURE_POISON              6  
-#define LIFE_SPEL_SATISFY_HUNGER           7  
-#define LIFE_SPEL_REMOVE_CURSE             8  
-#define LIFE_SPEL_CAUSE_MEDIUM_WOUNDS      9  
-#define LIFE_SPEL_CURE_CRITICAL_WOUNDS     10 
-#define LIFE_SPEL_RESIST_HEAT_AND_COLD     11 
-#define LIFE_SPEL_SENSE_SURROUNDINGS       12 
-#define LIFE_SPEL_TURN_UNDEAD              13 
-#define LIFE_SPEL_HEALING                  14 
-#define LIFE_SPEL_GLYPH_OF_WARDING         15 
-#define LIFE_SPEL_DISPEL_CURSE             16 
-#define LIFE_SPEL_PERCEPTION               17 
-#define LIFE_SPEL_DISPEL_UNDEAD                    18 
-#define LIFE_SPEL_DAY_OF_THE_DOVE          19 
-#define LIFE_SPEL_CAUSE_CRITICAL_WOUNDS            20 
-#define LIFE_SPEL_WORD_OF_RECALL           21 
-#define LIFE_SPEL_ALTER_REALITY                    22 
-#define LIFE_SPEL_WARDING_TRUE             23 
-#define LIFE_SPEL_STERILIZATION                    24 
-#define LIFE_SPEL_DETECTION                25 
-#define LIFE_SPEL_ANNIHILATE_UNDEAD        26 
-#define LIFE_SPEL_CLAIRVOYANCE             27 
-#define LIFE_SPEL_RESTORATION              28 
-#define LIFE_SPEL_HEALING_TRUE             29 
-#define LIFE_SPEL_HOLY_VISION              30 
-#define LIFE_SPEL_ULTIMATE_RESISTANCE      31 
-#define SORC_SPEL_DETECT_MONSTERS          32 
-#define SORC_SPEL_PHASE_DOOR               33 
-#define SORC_SPEL_DETECT_DOORS_AND_TRAPS    34 
-#define SORC_SPEL_LIGHT_AREA               35 
-#define SORC_SPEL_CONFUSE_MONSTER          36 
-#define SORC_SPEL_TELEPORT                 37 
-#define SORC_SPEL_SLEEP_MONSTER                    38 
-#define SORC_SPEL_RECHARGING               39 
-#define SORC_SPEL_MAGIC_MAPPING                    40 
-#define SORC_SPEL_IDENTIFY                 41 
-#define SORC_SPEL_SLOW_MONSTER             42 
-#define SORC_SPEL_MASS_SLEEP               43 
-#define SORC_SPEL_TELEPORT_AWAY                    44 
-#define SORC_SPEL_HASTE_SELF               45 
-#define SORC_SPEL_DETECTION_TRUE           46 
-#define SORC_SPEL_IDENTIFY_TRUE                    47 
-#define SORC_SPEL_DETECT_ITEMS_AND_TREASURE 48 
-#define SORC_SPEL_CHARM_MONSTER                    49 
-#define SORC_SPEL_SENSE_MINDS              50 
-#define SORC_SPEL_TELEPORT_TO_TOWN         51 
-#define SORC_SPEL_SELF_KNOWLEDGE           52 
-#define SORC_SPEL_TELEPORT_LEVEL           53 
-#define SORC_SPEL_WORD_OF_RECALL           54 
-#define SORC_SPEL_DIMENSION_DOOR           55 
-#define SORC_SPEL_PROBING                  56 
-#define SORC_SPEL_EXPLOSIVE_RUNE           57 
-#define SORC_SPEL_TELEKINESIS              58 
-#define SORC_SPEL_CLAIRVOYANCE             59 
-#define SORC_SPEL_CHARM_MONSTERS           60 
-#define SORC_SPEL_ALCHEMY                  61 
-#define SORC_SPEL_BANISHMENT               62 
-#define SORC_SPEL_GLOBE_OF_INVULNERABILITY  63 
-#define NATU_SPEL_DETECT_CREATURES         64 
-#define NATU_SPEL_LIGHTNING                65 
-#define NATU_SPEL_DETECT_DOORS_AND_TRAPS    66 
-#define NATU_SPEL_PRODUCE_FOOD             67 
-#define NATU_SPEL_DAYLIGHT                 68 
-#define NATU_SPEL_ANIMAL_TAMING                    69 
-#define NATU_SPEL_RESIST_ENVIRONMENT       70 
-#define NATU_SPEL_CURE_WOUNDS_AND_POISON    71 
-#define NATU_SPEL_STONE_TO_MUD             72 
-#define NATU_SPEL_FROST_BOLT               73 
-#define NATU_SPEL_NATURE_AWARENESS         74 
-#define NATU_SPEL_FIRE_BOLT                75 
-#define NATU_SPEL_RAY_OF_SUNLIGHT          76 
-#define NATU_SPEL_ENTANGLE                 77 
-#define NATU_SPEL_SUMMON_ANIMAL                    78 
-#define NATU_SPEL_HERBAL_HEALING           79 
-#define NATU_SPEL_STAIR_BUILDING           80 
-#define NATU_SPEL_STONE_SKIN               81 
-#define NATU_SPEL_RESISTANCE_TRUE          82 
-#define NATU_SPEL_FOREST_CREATION          83 
-#define NATU_SPEL_ANIMAL_FRIENDSHIP        84 
-#define NATU_SPEL_STONE_TELL               85 
-#define NATU_SPEL_WALL_OF_STONE                    86 
-#define NATU_SPEL_PROTECT_FROM_CORROSION    87 
-#define NATU_SPEL_EARTHQUAKE               88 
-#define NATU_SPEL_CYCLONE                  89 
-#define NATU_SPEL_BLIZZARD                 90 
-#define NATU_SPEL_LIGHTNING_STORM          91 
-#define NATU_SPEL_WHIRLPOOL                92 
-#define NATU_SPEL_CALL_SUNLIGHT                    93 
-#define NATU_SPEL_ELEMENTAL_BRANDING       94 
-#define NATU_SPEL_NATURES_WRATH                    95 
-#define CHAO_SPEL_MAGIC_MISSILE                    96 
-#define CHAO_SPEL_TRAP_DOOR_DESTRUCTION     97 
-#define CHAO_SPEL_FLASH_OF_LIGHT           98 
-#define CHAO_SPEL_TOUCH_OF_CONFUSION       99 
-#define CHAO_SPEL_MANA_BURST               100
-#define CHAO_SPEL_FIRE_BOLT                101
-#define CHAO_SPEL_FIST_OF_FORCE                    102
-#define CHAO_SPEL_TELEPORT_SELF                    103
-#define CHAO_SPEL_WONDER                   104
-#define CHAO_SPEL_CHAOS_BOLT               105
-#define CHAO_SPEL_SONIC_BOOM               106
-#define CHAO_SPEL_DOOM_BOLT                107
-#define CHAO_SPEL_FIRE_BALL                108
-#define CHAO_SPEL_TELEPORT_OTHER           109
-#define CHAO_SPEL_WORD_OF_DESTRUCTION      110
-#define CHAO_SPEL_INVOKE_LOGRUS                    111
-#define CHAO_SPEL_POLYMORPH_OTHER          112
-#define CHAO_SPEL_CHAIN_LIGHTNING          113
-#define CHAO_SPEL_ARCANE_BINDING           114
-#define CHAO_SPEL_DISINTEGRATE             115
-#define CHAO_SPEL_ALTER_REALITY                    116
-#define CHAO_SPEL_MAGIC_ROCKET             117
-#define CHAO_SPEL_CHAOS_BRANDING           118
-#define CHAO_SPEL_SUMMON_DEMON             119
-#define CHAO_SPEL_BEAM_OF_GRAVITY          120
-#define CHAO_SPEL_METEOR_SWARM             121
-#define CHAO_SPEL_FLAME_STRIKE             122
-#define CHAO_SPEL_CALL_CHAOS               123
-#define CHAO_SPEL_POLYMORPH_SELF           124
-#define CHAO_SPEL_MANA_STORM               125
-#define CHAO_SPEL_BREATHE_LOGRUS           126
-#define CHAO_SPEL_CALL_THE_VOID                    127
-#define DEAT_SPEL_DETECT_UNLIFE                    128
-#define DEAT_SPEL_MALEDICTION              129
-#define DEAT_SPEL_DETECT_EVIL              130
-#define DEAT_SPEL_STINKING_CLOUD           131
-#define DEAT_SPEL_BLACK_SLEEP              132
-#define DEAT_SPEL_RESIST_POISON                    133
-#define DEAT_SPEL_HORRIFY                  134
-#define DEAT_SPEL_ENSLAVE_UNDEAD           135
-#define DEAT_SPEL_ORB_OF_ENTROPY           136
-#define DEAT_SPEL_NETHER_BOLT              137
-#define DEAT_SPEL_CLOUD_KILL               138
-#define DEAT_SPEL_GENOCIDE_ONE             139
-#define DEAT_SPEL_POISON_BRANDING          140
-#define DEAT_SPEL_VAMPIRIC_DRAIN           141
-#define DEAT_SPEL_ANIMATE_DEAD             142
-#define DEAT_SPEL_GENOCIDE                 143
-#define DEAT_SPEL_BERSERK                  144
-#define DEAT_SPEL_INVOKE_SPIRITS           145
-#define DEAT_SPEL_DARK_BOLT                146
-#define DEAT_SPEL_BATTLE_FRENZY                    147
-#define DEAT_SPEL_VAMPIRIC_BRANDING        148
-#define DEAT_SPEL_VAMPIRISM_TRUE           149
-#define DEAT_SPEL_NETHER_WAVE              150
-#define DEAT_SPEL_DARKNESS_STORM           151
-#define DEAT_SPEL_DEATH_RAY                152
-#define DEAT_SPEL_RAISE_THE_DEAD           153
-#define DEAT_SPEL_ESOTERIA                 154
-#define DEAT_SPEL_POLYMORPH_VAMPIRE        155
-#define DEAT_SPEL_RESTORE_LIFE             156
-#define DEAT_SPEL_MASS_GENOCIDE                    157
-#define DEAT_SPEL_HELLFIRE                 158
-#define DEAT_SPEL_WRAITHFORM               159
-#define TRUM_SPEL_PHASE_DOOR               160
-#define TRUM_SPEL_TRUMP_SPIDERS                    161
-#define TRUM_SPEL_SHUFFLE                  162
-#define TRUM_SPEL_RESET_RECALL             163
-#define TRUM_SPEL_TELEPORT                 164
-#define TRUM_SPEL_TRUMP_SPYING             165
-#define TRUM_SPEL_TELEPORT_AWAY                    166
-#define TRUM_SPEL_TRUMP_ANIMALS                    167
-#define TRUM_SPEL_TRUMP_REACH              168
-#define TRUM_SPEL_TRUMP_KAMIKAZE           169
-#define TRUM_SPEL_PHANTASMAL_SERVANT       170
-#define TRUM_SPEL_HASTE_MONSTER                    171
-#define TRUM_SPEL_TELEPORT_LEVEL           172
-#define TRUM_SPEL_DIMENSION_DOOR           173
-#define TRUM_SPEL_WORD_OF_RECALL           174
-#define TRUM_SPEL_BANISH                   175
-#define TRUM_SPEL_SWAP_POSITION                    176
-#define TRUM_SPEL_TRUMP_UNDEAD             177
-#define TRUM_SPEL_TRUMP_REPTILES           178
-#define TRUM_SPEL_TRUMP_MONSTERS           179
-#define TRUM_SPEL_TRUMP_HOUNDS             180
-#define TRUM_SPEL_TRUMP_BRANDING           181
-#define TRUM_SPEL_LIVING_TRUMP             182
-#define TRUM_SPEL_TRUMP_CYBERDEMON         183
-#define TRUM_SPEL_TRUMP_DIVINATION         184
-#define TRUM_SPEL_TRUMP_LORE               185
-#define TRUM_SPEL_HEAL_MONSTER             186
-#define TRUM_SPEL_TRUMP_DRAGON             187
-#define TRUM_SPEL_TRUMP_METEOR             188
-#define TRUM_SPEL_TRUMP_DEMON              189
-#define TRUM_SPEL_TRUMP_GREATER_UNDEAD     190
-#define TRUM_SPEL_TRUMP_ANCIENT_DRAGON     191
-#define ARCA_SPEL_ZAP                      192
-#define ARCA_SPEL_WIZARD_LOCK              193
-#define ARCA_SPEL_DETECT_INVISIBILITY      194
-#define ARCA_SPEL_DETECT_MONSTERS          195
-#define ARCA_SPEL_BLINK                            196
-#define ARCA_SPEL_LIGHT_AREA               197
-#define ARCA_SPEL_TRAP_AND_DOOR_DESTRUCTION 198
-#define ARCA_SPEL_CURE_LIGHT_WOUNDS        199
-#define ARCA_SPEL_DETECT_DOORS_AND_TRAPS    200
-#define ARCA_SPEL_PHLOGISTON               201
-#define ARCA_SPEL_DETECT_TREASURE          202
-#define ARCA_SPEL_DETECT_ENCHANTMENT       203
-#define ARCA_SPEL_DETECT_OBJECTS           204
-#define ARCA_SPEL_CURE_POISON              205
-#define ARCA_SPEL_RESIST_COLD              206
-#define ARCA_SPEL_RESIST_FIRE              207
-#define ARCA_SPEL_RESIST_LIGHTNING         208
-#define ARCA_SPEL_RESIST_ACID              209
-#define ARCA_SPEL_CURE_MEDIUM_WOUNDS       210
-#define ARCA_SPEL_TELEPORT                 211
-#define ARCA_SPEL_IDENTIFY                 212
-#define ARCA_SPEL_STONE_TO_MUD             213
-#define ARCA_SPEL_RAY_OF_LIGHT             214
-#define ARCA_SPEL_SATISFY_HUNGER           215
-#define ARCA_SPEL_SEE_INVISIBLE                    216
-#define ARCA_SPEL_CONJURE_ELEMENTAL        217
-#define ARCA_SPEL_TELEPORT_LEVEL           218
-#define ARCA_SPEL_TELEPORT_AWAY                    219
-#define ARCA_SPEL_ELEMENTAL_BALL           220
-#define ARCA_SPEL_DETECTION                221
-#define ARCA_SPEL_WORD_OF_RECALL           222
-#define ARCA_SPEL_CLAIRVOYANCE             223
-#define CRAF_SPEL_INFRAVISION              224
-#define CRAF_SPEL_REGENERATION             225
-#define CRAF_SPEL_SATISFY_HUNGER           226
-#define CRAF_SPEL_RESIST_COLD              227
-#define CRAF_SPEL_RESIST_FIRE              228
-#define CRAF_SPEL_HEROISM                  229
-#define CRAF_SPEL_RESIST_LIGHTNING         230
-#define CRAF_SPEL_RESIST_ACID              231
-#define CRAF_SPEL_SEE_INVISIBILITY         232
-#define CRAF_SPEL_REMOVE_CURSE             233
-#define CRAF_SPEL_RESIST_POISON                    234
-#define CRAF_SPEL_BERSERK                  235
-#define CRAF_SPEL_SELF_KNOWLEDGE           236
-#define CRAF_SPEL_PROTECTION_FROM_EVIL     237
-#define CRAF_SPEL_CURE                     238
-#define CRAF_SPEL_MANA_BRANDING                    239
-#define CRAF_SPEL_TELEPATHY                240
-#define CRAF_SPEL_STONE_SKIN               241
-#define CRAF_SPEL_RESISTANCE               242
-#define CRAF_SPEL_HASTE_SELF               243
-#define CRAF_SPEL_WALK_THROUGH_WALL        244
-#define CRAF_SPEL_POLISH_SHIELD                    245
-#define CRAF_SPEL_CREATE_GOLEM             246
-#define CRAF_SPEL_MAGICAL_ARMOR                    247
-#define CRAF_SPEL_REMOVE_ENCHANTMENT       248
-#define CRAF_SPEL_REMOVE_ALL_CURSE         249
-#define CRAF_SPEL_KNOWLEDGE_TRUE           250
-#define CRAF_SPEL_ENCHANT_WEAPON           251
-#define CRAF_SPEL_ENCHANT_ARMOR                    252
-#define CRAF_SPEL_BRAND_WEAPON             253
-#define CRAF_SPEL_LIVING_TRUMP             254
-#define CRAF_SPEL_IMMUNITY                 255
-#define DAEM_SPEL_MAGIC_MISSILE                    256
-#define DAEM_SPEL_DETECT_UNLIFE                    257
-#define DAEM_SPEL_EVIL_BLESS               258
-#define DAEM_SPEL_RESIST_FIRE              259
-#define DAEM_SPEL_HORRIFY                  260
-#define DAEM_SPEL_NETHER_BOLT              261
-#define DAEM_SPEL_SUMMON_MANES             262
-#define DAEM_SPEL_HELLISH_FLAME                    263
-#define DAEM_SPEL_DOMINATE_DEMON           264
-#define DAEM_SPEL_VISION                   265
-#define DAEM_SPEL_RESIST_NETHER                    266
-#define DAEM_SPEL_PLASMA_BOLT              267
-#define DAEM_SPEL_FIRE_BALL                268
-#define DAEM_SPEL_FIRE_BRANDING                    269
-#define DAEM_SPEL_NETHER_BALL              270
-#define DAEM_SPEL_SUMMON_DEMON             271
-#define DAEM_SPEL_DEVILISH_EYE             272
-#define DAEM_SPEL_DEVIL_CLOAK              273
-#define DAEM_SPEL_THE_FLOW_OF_LAVA         274
-#define DAEM_SPEL_PLASMA_BALL              275
-#define DAEM_SPEL_POLYMORPH_DEMON          276
-#define DAEM_SPEL_NATHER_WAVE              277
-#define DAEM_SPEL_KISS_OF_SUCCUBUS         278
-#define DAEM_SPEL_DOOM_HAND                279
-#define DAEM_SPEL_RAISE_THE_MORALE         280
-#define DAEM_SPEL_IMMORTAL_BODY                    281
-#define DAEM_SPEL_INSANITY_CIRCLE          282
-#define DAEM_SPEL_EXPLODE_PETS             283
-#define DAEM_SPEL_SUMMON_GREATER_DEMON     284
-#define DAEM_SPEL_NETHER_STORM             285
-#define DAEM_SPEL_BLOODY_CURSE             286
-#define DAEM_SPEL_POLYMORPH_DEMONLORD      287
-#define CRUS_SPEL_PUNISHMENT               288
-#define CRUS_SPEL_DETECT_EVIL              289
-#define CRUS_SPEL_REMOVE_FEAR              290
-#define CRUS_SPEL_SCARE_MONSTER                    291
-#define CRUS_SPEL_SANCTUARY                292
-#define CRUS_SPEL_PORTAL                   293
-#define CRUS_SPEL_STAR_DUST                294
-#define CRUS_SPEL_PURIFY                   295
-#define CRUS_SPEL_SCATTER_EVIL             296
-#define CRUS_SPEL_HOLY_ORB                 297
-#define CRUS_SPEL_EXORCISM                 298
-#define CRUS_SPEL_REMOVE_CURSE             299
-#define CRUS_SPEL_SENSE_UNSEEN             300
-#define CRUS_SPEL_PROTECTION_FROM_EVIL     301
-#define CRUS_SPEL_JUDGMENT_THUNDER         302
-#define CRUS_SPEL_HOLY_WORD                303
-#define CRUS_SPEL_UNBARRING_WAYS           304
-#define CRUS_SPEL_ARREST                   305
-#define CRUS_SPEL_HOLY_AURA                306
-#define CRUS_SPEL_DISPEL_UNDEAD_AND_DEMONS  307
-#define CRUS_SPEL_DISPEL_EVIL              308
-#define CRUS_SPEL_HOLY_BLADE               309
-#define CRUS_SPEL_STAR_BURST               310
-#define CRUS_SPEL_SUMMON_ANGEL             311
-#define CRUS_SPEL_HEROISM                  312
-#define CRUS_SPEL_DISPEL_CURSE             313
-#define CRUS_SPEL_BANISH_EVIL              314
-#define CRUS_SPEL_ARMAGEDDON               315
-#define CRUS_SPEL_AN_EYE_FOR_AN_EYE        316
-#define CRUS_SPEL_WRATH_OF_THE_GOD         317
-#define CRUS_SPEL_DIVINE_INTERVENTION      318
-#define CRUS_SPEL_CRUSADE                  319
-#define MUSI_SPEL_SONG_OF_HOLDING          320
-#define MUSI_SPEL_SONG_OF_BLESSING         321
-#define MUSI_SPEL_WRECKING_NOTE                    322
-#define MUSI_SPEL_STUN_PATTERN             323
-#define MUSI_SPEL_FLOW_OF_LIFE             324
-#define MUSI_SPEL_SONG_OF_THE_SUN          325
-#define MUSI_SPEL_SONG_OF_FEAR             326
-#define MUSI_SPEL_HEROIC_BALLAD                    327
-#define MUSI_SPEL_CLAIRAUDIENCE                    328
-#define MUSI_SPEL_SOUL_SHRIEK              329
-#define MUSI_SPEL_SONG_OF_LORE             330
-#define MUSI_SPEL_HIDING_TUNE              331
-#define MUSI_SPEL_ILLUSION_PATTERN         332
-#define MUSI_SPEL_DOOMCALL                 333
-#define MUSI_SPEL_FIRIELS_SONG             334
-#define MUSI_SPEL_FELLOWSHIP_CHANT         335
-#define MUSI_SPEL_SOUND_OF_DISINTEGRATION   336
-#define MUSI_SPEL_FINRODS_RESISTANCE       337
-#define MUSI_SPEL_HOBBIT_MELODIES          338
-#define MUSI_SPEL_WORLD_CONTORTION         339
-#define MUSI_SPEL_DISPELLING_CHANT         340
-#define MUSI_SPEL_THE_VOICE_OF_SARUMAN     341
-#define MUSI_SPEL_SONG_OF_THE_TEMPEST      342
-#define MUSI_SPEL_AMBARKANTA               343
-#define MUSI_SPEL_WRECKING_PATTERN         344
-#define MUSI_SPEL_STATIONARY_SHRIEK        345
-#define MUSI_SPEL_ENDURANCE                346
-#define MUSI_SPEL_THE_HEROS_POEM           347
-#define MUSI_SPEL_RELIEF_OF_YAVANNA        348
-#define MUSI_SPEL_GODDESS_REBIRTH          349
-#define MUSI_SPEL_WIZARDRY_OF_SAURON       350
-#define MUSI_SPEL_FINGOLFINS_CHALLENGE     351
-#define TECH_SPEL_TOBI_IZUNA               352
-#define TECH_SPEL_3_WAY_ATTACK             353
-#define TECH_SPEL_BOOMERANG                354
-#define TECH_SPEL_BURNING_STRIKE           355
-#define TECH_SPEL_DETECT_FEROCITY          356
-#define TECH_SPEL_STRIKE_TO_STUN           357
-#define TECH_SPEL_COUNTER                  358
-#define TECH_SPEL_HARAINUKE                359
-#define TECH_SPEL_SERPENTS_TONGUE          360
-#define TECH_SPEL_ZAMMAKEN                 361
-#define TECH_SPEL_WIND_BLAST               362
-#define TECH_SPEL_JUDGE                            363
-#define TECH_SPEL_ROCK_SMASH               364
-#define TECH_SPEL_MIDARE_SETSUGEKKA        365
-#define TECH_SPEL_SPOT_AIMING              366
-#define TECH_SPEL_MAJINGIRI                367
-#define TECH_SPEL_DESPERATE_ATTACK         368
-#define TECH_SPEL_LIGHTNING_EAGLE          369
-#define TECH_SPEL_RUSH_ATTACK              370
-#define TECH_SPEL_BLOODY_MAELSTROM         371
-#define TECH_SPEL_EARTHQUAKE_BLOW          372
-#define TECH_SPEL_CRACK                            373
-#define TECH_SPEL_WAR_CRY                  374
-#define TECH_SPEL_MUSOU_SANDAN             375
-#define TECH_SPEL_VAMPIRES_FANG                    376
-#define TECH_SPEL_MOON_DAZZLING                    377
-#define TECH_SPEL_HUNDRED_SLAUGHTER        378
-#define TECH_SPEL_DRAGONIC_FLASH           379
-#define TECH_SPEL_TWIN_SLASH               380
-#define TECH_SPEL_KOFUKU_ZETTOUSEI         381
-#define TECH_SPEL_KEIUN_KININKEN           382
-#define TECH_SPEL_HARAKIRI                 383
-
-
-/*
- * List of spell ID's for each realm
- */
-static s16b spell_id_list[][32] =
-{
-       {
-               LIFE_SPEL_CURE_LIGHT_WOUNDS,
-               LIFE_SPEL_BLESS,
-               LIFE_SPEL_CAUSE_LIGHT_WOUNDS,
-               LIFE_SPEL_CALL_LIGHT,
-               LIFE_SPEL_DETECT_DOORS_AND_TRAPS,
-               LIFE_SPEL_CURE_MEDIUM_WOUNDS,
-               LIFE_SPEL_CURE_POISON,
-               LIFE_SPEL_SATISFY_HUNGER,
-               LIFE_SPEL_REMOVE_CURSE,
-               LIFE_SPEL_CAUSE_MEDIUM_WOUNDS,
-               LIFE_SPEL_CURE_CRITICAL_WOUNDS,
-               LIFE_SPEL_RESIST_HEAT_AND_COLD,
-               LIFE_SPEL_SENSE_SURROUNDINGS,
-               LIFE_SPEL_TURN_UNDEAD,
-               LIFE_SPEL_HEALING,
-               LIFE_SPEL_GLYPH_OF_WARDING,
-               LIFE_SPEL_DISPEL_CURSE,
-               LIFE_SPEL_PERCEPTION,
-               LIFE_SPEL_DISPEL_UNDEAD,
-               LIFE_SPEL_DAY_OF_THE_DOVE,
-               LIFE_SPEL_CAUSE_CRITICAL_WOUNDS,
-               LIFE_SPEL_WORD_OF_RECALL,
-               LIFE_SPEL_ALTER_REALITY,
-               LIFE_SPEL_WARDING_TRUE,
-               LIFE_SPEL_STERILIZATION,
-               LIFE_SPEL_DETECTION,
-               LIFE_SPEL_ANNIHILATE_UNDEAD,
-               LIFE_SPEL_CLAIRVOYANCE,
-               LIFE_SPEL_RESTORATION,
-               LIFE_SPEL_HEALING_TRUE,
-               LIFE_SPEL_HOLY_VISION,
-               LIFE_SPEL_ULTIMATE_RESISTANCE,
-       },
-
-       {
-               SORC_SPEL_DETECT_MONSTERS,
-               SORC_SPEL_PHASE_DOOR,
-               SORC_SPEL_DETECT_DOORS_AND_TRAPS,
-               SORC_SPEL_LIGHT_AREA,
-               SORC_SPEL_CONFUSE_MONSTER,
-               SORC_SPEL_TELEPORT,
-               SORC_SPEL_SLEEP_MONSTER,
-               SORC_SPEL_RECHARGING,
-               SORC_SPEL_MAGIC_MAPPING,
-               SORC_SPEL_IDENTIFY,
-               SORC_SPEL_SLOW_MONSTER,
-               SORC_SPEL_MASS_SLEEP,
-               SORC_SPEL_TELEPORT_AWAY,
-               SORC_SPEL_HASTE_SELF,
-               SORC_SPEL_DETECTION_TRUE,
-               SORC_SPEL_IDENTIFY_TRUE,
-               SORC_SPEL_DETECT_ITEMS_AND_TREASURE,
-               SORC_SPEL_CHARM_MONSTER,
-               SORC_SPEL_SENSE_MINDS,
-               SORC_SPEL_TELEPORT_TO_TOWN,
-               SORC_SPEL_SELF_KNOWLEDGE,
-               SORC_SPEL_TELEPORT_LEVEL,
-               SORC_SPEL_WORD_OF_RECALL,
-               SORC_SPEL_DIMENSION_DOOR,
-               SORC_SPEL_PROBING,
-               SORC_SPEL_EXPLOSIVE_RUNE,
-               SORC_SPEL_TELEKINESIS,
-               SORC_SPEL_CLAIRVOYANCE,
-               SORC_SPEL_CHARM_MONSTERS,
-               SORC_SPEL_ALCHEMY,
-               SORC_SPEL_BANISHMENT,
-               SORC_SPEL_GLOBE_OF_INVULNERABILITY,
-       },
-
-       {
-               NATU_SPEL_DETECT_CREATURES,
-               NATU_SPEL_LIGHTNING,
-               NATU_SPEL_DETECT_DOORS_AND_TRAPS,
-               NATU_SPEL_PRODUCE_FOOD,
-               NATU_SPEL_DAYLIGHT,
-               NATU_SPEL_ANIMAL_TAMING,
-               NATU_SPEL_RESIST_ENVIRONMENT,
-               NATU_SPEL_CURE_WOUNDS_AND_POISON,
-               NATU_SPEL_STONE_TO_MUD,
-               NATU_SPEL_FROST_BOLT,
-               NATU_SPEL_NATURE_AWARENESS,
-               NATU_SPEL_FIRE_BOLT,
-               NATU_SPEL_RAY_OF_SUNLIGHT,
-               NATU_SPEL_ENTANGLE,
-               NATU_SPEL_SUMMON_ANIMAL,
-               NATU_SPEL_HERBAL_HEALING,
-               NATU_SPEL_STAIR_BUILDING,
-               NATU_SPEL_STONE_SKIN,
-               NATU_SPEL_RESISTANCE_TRUE,
-               NATU_SPEL_FOREST_CREATION,
-               NATU_SPEL_ANIMAL_FRIENDSHIP,
-               NATU_SPEL_STONE_TELL,
-               NATU_SPEL_WALL_OF_STONE,
-               NATU_SPEL_PROTECT_FROM_CORROSION,
-               NATU_SPEL_EARTHQUAKE,
-               NATU_SPEL_CYCLONE,
-               NATU_SPEL_BLIZZARD,
-               NATU_SPEL_LIGHTNING_STORM,
-               NATU_SPEL_WHIRLPOOL,
-               NATU_SPEL_CALL_SUNLIGHT,
-               NATU_SPEL_ELEMENTAL_BRANDING,
-               NATU_SPEL_NATURES_WRATH,
-       },
-
-       {
-               CHAO_SPEL_MAGIC_MISSILE,
-               CHAO_SPEL_TRAP_DOOR_DESTRUCTION,
-               CHAO_SPEL_FLASH_OF_LIGHT,
-               CHAO_SPEL_TOUCH_OF_CONFUSION,
-               CHAO_SPEL_MANA_BURST,
-               CHAO_SPEL_FIRE_BOLT,
-               CHAO_SPEL_FIST_OF_FORCE,
-               CHAO_SPEL_TELEPORT_SELF,
-               CHAO_SPEL_WONDER,
-               CHAO_SPEL_CHAOS_BOLT,
-               CHAO_SPEL_SONIC_BOOM,
-               CHAO_SPEL_DOOM_BOLT,
-               CHAO_SPEL_FIRE_BALL,
-               CHAO_SPEL_TELEPORT_OTHER,
-               CHAO_SPEL_WORD_OF_DESTRUCTION,
-               CHAO_SPEL_INVOKE_LOGRUS,
-               CHAO_SPEL_POLYMORPH_OTHER,
-               CHAO_SPEL_CHAIN_LIGHTNING,
-               CHAO_SPEL_ARCANE_BINDING,
-               CHAO_SPEL_DISINTEGRATE,
-               CHAO_SPEL_ALTER_REALITY,
-               CHAO_SPEL_MAGIC_ROCKET,
-               CHAO_SPEL_CHAOS_BRANDING,
-               CHAO_SPEL_SUMMON_DEMON,
-               CHAO_SPEL_BEAM_OF_GRAVITY,
-               CHAO_SPEL_METEOR_SWARM,
-               CHAO_SPEL_FLAME_STRIKE,
-               CHAO_SPEL_CALL_CHAOS,
-               CHAO_SPEL_POLYMORPH_SELF,
-               CHAO_SPEL_MANA_STORM,
-               CHAO_SPEL_BREATHE_LOGRUS,
-               CHAO_SPEL_CALL_THE_VOID,
-       },
-
-       {
-               DEAT_SPEL_DETECT_UNLIFE,
-               DEAT_SPEL_MALEDICTION,
-               DEAT_SPEL_DETECT_EVIL,
-               DEAT_SPEL_STINKING_CLOUD,
-               DEAT_SPEL_BLACK_SLEEP,
-               DEAT_SPEL_RESIST_POISON,
-               DEAT_SPEL_HORRIFY,
-               DEAT_SPEL_ENSLAVE_UNDEAD,
-               DEAT_SPEL_ORB_OF_ENTROPY,
-               DEAT_SPEL_NETHER_BOLT,
-               DEAT_SPEL_CLOUD_KILL,
-               DEAT_SPEL_GENOCIDE_ONE,
-               DEAT_SPEL_POISON_BRANDING,
-               DEAT_SPEL_VAMPIRIC_DRAIN,
-               DEAT_SPEL_ANIMATE_DEAD,
-               DEAT_SPEL_GENOCIDE,
-               DEAT_SPEL_BERSERK,
-               DEAT_SPEL_INVOKE_SPIRITS,
-               DEAT_SPEL_DARK_BOLT,
-               DEAT_SPEL_BATTLE_FRENZY,
-               DEAT_SPEL_VAMPIRIC_BRANDING,
-               DEAT_SPEL_VAMPIRISM_TRUE,
-               DEAT_SPEL_NETHER_WAVE,
-               DEAT_SPEL_DARKNESS_STORM,
-               DEAT_SPEL_DEATH_RAY,
-               DEAT_SPEL_RAISE_THE_DEAD,
-               DEAT_SPEL_ESOTERIA,
-               DEAT_SPEL_POLYMORPH_VAMPIRE,
-               DEAT_SPEL_RESTORE_LIFE,
-               DEAT_SPEL_MASS_GENOCIDE,
-               DEAT_SPEL_HELLFIRE,
-               DEAT_SPEL_WRAITHFORM,
-       },
-
-       {
-               TRUM_SPEL_PHASE_DOOR,
-               TRUM_SPEL_TRUMP_SPIDERS,
-               TRUM_SPEL_SHUFFLE,
-               TRUM_SPEL_RESET_RECALL,
-               TRUM_SPEL_TELEPORT,
-               TRUM_SPEL_TRUMP_SPYING,
-               TRUM_SPEL_TELEPORT_AWAY,
-               TRUM_SPEL_TRUMP_ANIMALS,
-               TRUM_SPEL_TRUMP_REACH,
-               TRUM_SPEL_TRUMP_KAMIKAZE,
-               TRUM_SPEL_PHANTASMAL_SERVANT,
-               TRUM_SPEL_HASTE_MONSTER,
-               TRUM_SPEL_TELEPORT_LEVEL,
-               TRUM_SPEL_DIMENSION_DOOR,
-               TRUM_SPEL_WORD_OF_RECALL,
-               TRUM_SPEL_BANISH,
-               TRUM_SPEL_SWAP_POSITION,
-               TRUM_SPEL_TRUMP_UNDEAD,
-               TRUM_SPEL_TRUMP_REPTILES,
-               TRUM_SPEL_TRUMP_MONSTERS,
-               TRUM_SPEL_TRUMP_HOUNDS,
-               TRUM_SPEL_TRUMP_BRANDING,
-               TRUM_SPEL_LIVING_TRUMP,
-               TRUM_SPEL_TRUMP_CYBERDEMON,
-               TRUM_SPEL_TRUMP_DIVINATION,
-               TRUM_SPEL_TRUMP_LORE,
-               TRUM_SPEL_HEAL_MONSTER,
-               TRUM_SPEL_TRUMP_DRAGON,
-               TRUM_SPEL_TRUMP_METEOR,
-               TRUM_SPEL_TRUMP_DEMON,
-               TRUM_SPEL_TRUMP_GREATER_UNDEAD,
-               TRUM_SPEL_TRUMP_ANCIENT_DRAGON,
-       },
-
-       {
-               ARCA_SPEL_ZAP,
-               ARCA_SPEL_WIZARD_LOCK,
-               ARCA_SPEL_DETECT_INVISIBILITY,
-               ARCA_SPEL_DETECT_MONSTERS,
-               ARCA_SPEL_BLINK,
-               ARCA_SPEL_LIGHT_AREA,
-               ARCA_SPEL_TRAP_AND_DOOR_DESTRUCTION,
-               ARCA_SPEL_CURE_LIGHT_WOUNDS,
-               ARCA_SPEL_DETECT_DOORS_AND_TRAPS,
-               ARCA_SPEL_PHLOGISTON,
-               ARCA_SPEL_DETECT_TREASURE,
-               ARCA_SPEL_DETECT_ENCHANTMENT,
-               ARCA_SPEL_DETECT_OBJECTS,
-               ARCA_SPEL_CURE_POISON,
-               ARCA_SPEL_RESIST_COLD,
-               ARCA_SPEL_RESIST_FIRE,
-               ARCA_SPEL_RESIST_LIGHTNING,
-               ARCA_SPEL_RESIST_ACID,
-               ARCA_SPEL_CURE_MEDIUM_WOUNDS,
-               ARCA_SPEL_TELEPORT,
-               ARCA_SPEL_IDENTIFY,
-               ARCA_SPEL_STONE_TO_MUD,
-               ARCA_SPEL_RAY_OF_LIGHT,
-               ARCA_SPEL_SATISFY_HUNGER,
-               ARCA_SPEL_SEE_INVISIBLE,
-               ARCA_SPEL_CONJURE_ELEMENTAL,
-               ARCA_SPEL_TELEPORT_LEVEL,
-               ARCA_SPEL_TELEPORT_AWAY,
-               ARCA_SPEL_ELEMENTAL_BALL,
-               ARCA_SPEL_DETECTION,
-               ARCA_SPEL_WORD_OF_RECALL,
-               ARCA_SPEL_CLAIRVOYANCE,
-       },
-
-       {
-               CRAF_SPEL_INFRAVISION,
-               CRAF_SPEL_REGENERATION,
-               CRAF_SPEL_SATISFY_HUNGER,
-               CRAF_SPEL_RESIST_COLD,
-               CRAF_SPEL_RESIST_FIRE,
-               CRAF_SPEL_HEROISM,
-               CRAF_SPEL_RESIST_LIGHTNING,
-               CRAF_SPEL_RESIST_ACID,
-               CRAF_SPEL_SEE_INVISIBILITY,
-               CRAF_SPEL_REMOVE_CURSE,
-               CRAF_SPEL_RESIST_POISON,
-               CRAF_SPEL_BERSERK,
-               CRAF_SPEL_SELF_KNOWLEDGE,
-               CRAF_SPEL_PROTECTION_FROM_EVIL,
-               CRAF_SPEL_CURE,
-               CRAF_SPEL_MANA_BRANDING,
-               CRAF_SPEL_TELEPATHY,
-               CRAF_SPEL_STONE_SKIN,
-               CRAF_SPEL_RESISTANCE,
-               CRAF_SPEL_HASTE_SELF,
-               CRAF_SPEL_WALK_THROUGH_WALL,
-               CRAF_SPEL_POLISH_SHIELD,
-               CRAF_SPEL_CREATE_GOLEM,
-               CRAF_SPEL_MAGICAL_ARMOR,
-               CRAF_SPEL_REMOVE_ENCHANTMENT,
-               CRAF_SPEL_REMOVE_ALL_CURSE,
-               CRAF_SPEL_KNOWLEDGE_TRUE,
-               CRAF_SPEL_ENCHANT_WEAPON,
-               CRAF_SPEL_ENCHANT_ARMOR,
-               CRAF_SPEL_BRAND_WEAPON,
-               CRAF_SPEL_LIVING_TRUMP,
-               CRAF_SPEL_IMMUNITY,
-       },
-
-       {
-               DAEM_SPEL_MAGIC_MISSILE,
-               DAEM_SPEL_DETECT_UNLIFE,
-               DAEM_SPEL_EVIL_BLESS,
-               DAEM_SPEL_RESIST_FIRE,
-               DAEM_SPEL_HORRIFY,
-               DAEM_SPEL_NETHER_BOLT,
-               DAEM_SPEL_SUMMON_MANES,
-               DAEM_SPEL_HELLISH_FLAME,
-               DAEM_SPEL_DOMINATE_DEMON,
-               DAEM_SPEL_VISION,
-               DAEM_SPEL_RESIST_NETHER,
-               DAEM_SPEL_PLASMA_BOLT,
-               DAEM_SPEL_FIRE_BALL,
-               DAEM_SPEL_FIRE_BRANDING,
-               DAEM_SPEL_NETHER_BALL,
-               DAEM_SPEL_SUMMON_DEMON,
-               DAEM_SPEL_DEVILISH_EYE,
-               DAEM_SPEL_DEVIL_CLOAK,
-               DAEM_SPEL_THE_FLOW_OF_LAVA,
-               DAEM_SPEL_PLASMA_BALL,
-               DAEM_SPEL_POLYMORPH_DEMON,
-               DAEM_SPEL_NATHER_WAVE,
-               DAEM_SPEL_KISS_OF_SUCCUBUS,
-               DAEM_SPEL_DOOM_HAND,
-               DAEM_SPEL_RAISE_THE_MORALE,
-               DAEM_SPEL_IMMORTAL_BODY,
-               DAEM_SPEL_INSANITY_CIRCLE,
-               DAEM_SPEL_EXPLODE_PETS,
-               DAEM_SPEL_SUMMON_GREATER_DEMON,
-               DAEM_SPEL_NETHER_STORM,
-               DAEM_SPEL_BLOODY_CURSE,
-               DAEM_SPEL_POLYMORPH_DEMONLORD,
-       },
-
-       {
-               CRUS_SPEL_PUNISHMENT,
-               CRUS_SPEL_DETECT_EVIL,
-               CRUS_SPEL_REMOVE_FEAR,
-               CRUS_SPEL_SCARE_MONSTER,
-               CRUS_SPEL_SANCTUARY,
-               CRUS_SPEL_PORTAL,
-               CRUS_SPEL_STAR_DUST,
-               CRUS_SPEL_PURIFY,
-               CRUS_SPEL_SCATTER_EVIL,
-               CRUS_SPEL_HOLY_ORB,
-               CRUS_SPEL_EXORCISM,
-               CRUS_SPEL_REMOVE_CURSE,
-               CRUS_SPEL_SENSE_UNSEEN,
-               CRUS_SPEL_PROTECTION_FROM_EVIL,
-               CRUS_SPEL_JUDGMENT_THUNDER,
-               CRUS_SPEL_HOLY_WORD,
-               CRUS_SPEL_UNBARRING_WAYS,
-               CRUS_SPEL_ARREST,
-               CRUS_SPEL_HOLY_AURA,
-               CRUS_SPEL_DISPEL_UNDEAD_AND_DEMONS,
-               CRUS_SPEL_DISPEL_EVIL,
-               CRUS_SPEL_HOLY_BLADE,
-               CRUS_SPEL_STAR_BURST,
-               CRUS_SPEL_SUMMON_ANGEL,
-               CRUS_SPEL_HEROISM,
-               CRUS_SPEL_DISPEL_CURSE,
-               CRUS_SPEL_BANISH_EVIL,
-               CRUS_SPEL_ARMAGEDDON,
-               CRUS_SPEL_AN_EYE_FOR_AN_EYE,
-               CRUS_SPEL_WRATH_OF_THE_GOD,
-               CRUS_SPEL_DIVINE_INTERVENTION,
-               CRUS_SPEL_CRUSADE,
-       },
-};
-
-
-/*
- * List of spell ID's for each special realm
- */
-static s16b technique_id_list[][32] =
-{
-       {
-               MUSI_SPEL_SONG_OF_HOLDING,
-               MUSI_SPEL_SONG_OF_BLESSING,
-               MUSI_SPEL_WRECKING_NOTE,
-               MUSI_SPEL_STUN_PATTERN,
-               MUSI_SPEL_FLOW_OF_LIFE,
-               MUSI_SPEL_SONG_OF_THE_SUN,
-               MUSI_SPEL_SONG_OF_FEAR,
-               MUSI_SPEL_HEROIC_BALLAD,
-               MUSI_SPEL_CLAIRAUDIENCE,
-               MUSI_SPEL_SOUL_SHRIEK,
-               MUSI_SPEL_SONG_OF_LORE,
-               MUSI_SPEL_HIDING_TUNE,
-               MUSI_SPEL_ILLUSION_PATTERN,
-               MUSI_SPEL_DOOMCALL,
-               MUSI_SPEL_FIRIELS_SONG,
-               MUSI_SPEL_FELLOWSHIP_CHANT,
-               MUSI_SPEL_SOUND_OF_DISINTEGRATION,
-               MUSI_SPEL_FINRODS_RESISTANCE,
-               MUSI_SPEL_HOBBIT_MELODIES,
-               MUSI_SPEL_WORLD_CONTORTION,
-               MUSI_SPEL_DISPELLING_CHANT,
-               MUSI_SPEL_THE_VOICE_OF_SARUMAN,
-               MUSI_SPEL_SONG_OF_THE_TEMPEST,
-               MUSI_SPEL_AMBARKANTA,
-               MUSI_SPEL_WRECKING_PATTERN,
-               MUSI_SPEL_STATIONARY_SHRIEK,
-               MUSI_SPEL_ENDURANCE,
-               MUSI_SPEL_THE_HEROS_POEM,
-               MUSI_SPEL_RELIEF_OF_YAVANNA,
-               MUSI_SPEL_GODDESS_REBIRTH,
-               MUSI_SPEL_WIZARDRY_OF_SAURON,
-               MUSI_SPEL_FINGOLFINS_CHALLENGE,
-       },
-
-       {
-               TECH_SPEL_TOBI_IZUNA,
-               TECH_SPEL_3_WAY_ATTACK,
-               TECH_SPEL_BOOMERANG,
-               TECH_SPEL_BURNING_STRIKE,
-               TECH_SPEL_DETECT_FEROCITY,
-               TECH_SPEL_STRIKE_TO_STUN,
-               TECH_SPEL_COUNTER,
-               TECH_SPEL_HARAINUKE,
-               TECH_SPEL_SERPENTS_TONGUE,
-               TECH_SPEL_ZAMMAKEN,
-               TECH_SPEL_WIND_BLAST,
-               TECH_SPEL_JUDGE,
-               TECH_SPEL_ROCK_SMASH,
-               TECH_SPEL_MIDARE_SETSUGEKKA,
-               TECH_SPEL_SPOT_AIMING,
-               TECH_SPEL_MAJINGIRI,
-               TECH_SPEL_DESPERATE_ATTACK,
-               TECH_SPEL_LIGHTNING_EAGLE,
-               TECH_SPEL_RUSH_ATTACK,
-               TECH_SPEL_BLOODY_MAELSTROM,
-               TECH_SPEL_EARTHQUAKE_BLOW,
-               TECH_SPEL_CRACK,
-               TECH_SPEL_WAR_CRY,
-               TECH_SPEL_MUSOU_SANDAN,
-               TECH_SPEL_VAMPIRES_FANG,
-               TECH_SPEL_MOON_DAZZLING,
-               TECH_SPEL_HUNDRED_SLAUGHTER,
-               TECH_SPEL_DRAGONIC_FLASH,
-               TECH_SPEL_TWIN_SLASH,
-               TECH_SPEL_KOFUKU_ZETTOUSEI,
-               TECH_SPEL_KEIUN_KININKEN,
-               TECH_SPEL_HARAKIRI,
-       },
-};
-
-
-/*
- * Get unique spell id from realm and spell number (0-31) in the realm
- */
-static int spell_id_from(int realm, int spell)
-{
-       if (is_magic(realm))
-               return (int)spell_id_list[realm - 1][spell];
-       else
-               return (int)technique_id_list[realm - MIN_TECHNIC][spell];
-}
-
 
 /*
  * Generate dice info string such as "foo 2d10"
@@ -1108,15 +277,15 @@ static void cast_wonder(int dir)
        }
 
        if (die < 8) clone_monster(dir);
-       else if (die < 14) speed_monster(dir);
+       else if (die < 14) speed_monster(dir, plev);
        else if (die < 26) heal_monster(dir, damroll(4, 6));
-       else if (die < 31) poly_monster(dir);
+       else if (die < 31) poly_monster(dir, plev);
        else if (die < 36)
                fire_bolt_or_beam(beam_chance() - 10, GF_MISSILE, dir,
                                  damroll(3 + ((plev - 1) / 5), 4));
        else if (die < 41) confuse_monster(dir, plev);
        else if (die < 46) fire_ball(GF_POIS, dir, 20 + (plev / 2), 3);
-       else if (die < 51) (void)lite_line(dir);
+       else if (die < 51) (void)lite_line(dir, damroll(6, 8));
        else if (die < 56)
                fire_bolt_or_beam(beam_chance() - 10, GF_ELEC, dir,
                                  damroll(3 + ((plev - 5) / 4), 8));
@@ -1151,8 +320,8 @@ static void cast_wonder(int dir)
        else /* RARE */
        {
                dispel_monsters(150);
-               slow_monsters();
-               sleep_monsters();
+               slow_monsters(plev);
+               sleep_monsters(plev);
                hp_player(300);
        }
 }
@@ -1227,7 +396,7 @@ static void cast_invoke_spirits(int dir)
        }
        else if (die < 31)
        {
-               poly_monster(dir);
+               poly_monster(dir, plev);
        }
        else if (die < 36)
        {
@@ -1244,7 +413,7 @@ static void cast_invoke_spirits(int dir)
        }
        else if (die < 51)
        {
-               (void)lite_line(dir);
+               (void)lite_line(dir, damroll(6, 8));
        }
        else if (die < 56)
        {
@@ -1309,8 +478,8 @@ static void cast_invoke_spirits(int dir)
        else
        { /* RARE */
                dispel_monsters(150);
-               slow_monsters();
-               sleep_monsters();
+               slow_monsters(plev);
+               sleep_monsters(plev);
                hp_player(300);
        }
 
@@ -1338,16 +507,16 @@ static void wild_magic(int spell)
        case 1:
        case 2:
        case 3:
-               teleport_player(10, TRUE);
+               teleport_player(10, TELEPORT_PASSIVE);
                break;
        case 4:
        case 5:
        case 6:
-               teleport_player(100, TRUE);
+               teleport_player(100, TELEPORT_PASSIVE);
                break;
        case 7:
        case 8:
-               teleport_player(200, TRUE);
+               teleport_player(200, TELEPORT_PASSIVE);
                break;
        case 9:
        case 10:
@@ -1553,7 +722,7 @@ static void cast_shuffle(void)
                msg_print("It's a teleport trump card.");
 #endif
 
-               teleport_player(10, TRUE);
+               teleport_player(10, TELEPORT_PASSIVE);
        }
        else if (die < 42)
        {
@@ -1573,7 +742,7 @@ static void cast_shuffle(void)
                msg_print("It's a teleport trump card.");
 #endif
 
-               teleport_player(100, TRUE);
+               teleport_player(100, TELEPORT_PASSIVE);
        }
        else if (die < 52)
        {
@@ -1583,7 +752,7 @@ static void cast_shuffle(void)
                msg_print("It's a teleport trump card.");
 #endif
 
-               teleport_player(200, TRUE);
+               teleport_player(200, TELEPORT_PASSIVE);
        }
        else if (die < 60)
        {
@@ -1762,7 +931,8 @@ static void cast_meteor(int dam, int rad)
 
                        if (d >= 9) continue;
 
-                       if (!in_bounds(y, x) || !projectable(py, px, y, x)) continue;
+                       if (!in_bounds(y, x) || !projectable(py, px, y, x)
+                           || !cave_have_flag_bold(y, x, FF_PROJECT)) continue;
 
                        /* Valid position */
                        break;
@@ -2016,37 +1186,19 @@ void stop_singing(void)
 }
 
 
-/*
- * Do everything for each spell
- */
-cptr do_spell(int realm, int spell, int mode)
+static cptr do_life_spell(int spell, int mode)
 {
        bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
        bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
        bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
        bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
-       bool fail = (mode == SPELL_FAIL) ? TRUE : FALSE;
-       bool cont = (mode == SPELL_CONT) ? TRUE : FALSE;
-       bool stop = (mode == SPELL_STOP) ? TRUE : FALSE;
-
-#ifdef JP
-       static const char s_dam[] = "»½ý:";
-       static const char s_random[] = "¥é¥ó¥À¥à";
-       static const char s_rng[] = "¼ÍÄø";
-#else
-       static const char s_dam[] = "dam ";
-       static const char s_random[] = "random";
-       static const char s_rng[] = "rng ";
-#endif
 
        int dir;
        int plev = p_ptr->lev;
 
-       int spellid = spell_id_from(realm, spell);
-
-       switch (spellid)
+       switch (spell)
        {
-       case LIFE_SPEL_CURE_LIGHT_WOUNDS:  
+       case 0:
 #ifdef JP
                if (name) return "·Ú½ý¤Î¼£Ìþ";
                if (desc) return "²ø²æ¤ÈÂÎÎϤò¾¯¤·²óÉü¤µ¤»¤ë¡£";
@@ -2069,7 +1221,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_BLESS:  
+       case 1:
 #ifdef JP
                if (name) return "½ËÊ¡";
                if (desc) return "°ìÄê»þ´Ö¡¢Ì¿ÃæΨ¤ÈAC¤Ë¥Ü¡¼¥Ê¥¹¤òÆÀ¤ë¡£";
@@ -2090,7 +1242,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_CAUSE_LIGHT_WOUNDS:  
+       case 2:
 #ifdef JP
                if (name) return "·Ú½ý";
                if (desc) return "1ÂΤΥâ¥ó¥¹¥¿¡¼¤Ë¾®¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -2113,7 +1265,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_CALL_LIGHT:  
+       case 3:
 #ifdef JP
                if (name) return "¸÷¤Î¾¤´­";
                if (desc) return "¸÷¸»¤¬¾È¤é¤·¤Æ¤¤¤ëÈϰϤ«Éô²°Á´ÂΤò±Êµ×¤ËÌÀ¤ë¤¯¤¹¤ë¡£";
@@ -2136,7 +1288,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_DETECT_DOORS_AND_TRAPS:  
+       case 4:
 #ifdef JP
                if (name) return "æ« & ±£¤·Èâ´¶ÃÎ";
                if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î櫤ÈÈâ¤È³¬Ãʤò´¶ÃΤ¹¤ë¡£";
@@ -2159,7 +1311,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_CURE_MEDIUM_WOUNDS:  
+       case 5:
 #ifdef JP
                if (name) return "½Å½ý¤Î¼£Ìþ";
                if (desc) return "²ø²æ¤ÈÂÎÎϤòÃæÄøÅÙ²óÉü¤µ¤»¤ë¡£";
@@ -2182,7 +1334,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_CURE_POISON:  
+       case 6:
 #ifdef JP
                if (name) return "²òÆÇ";
                if (desc) return "ÂÎÆâ¤ÎÆǤò¼è¤ê½ü¤¯¡£";
@@ -2199,7 +1351,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_SATISFY_HUNGER:  
+       case 7:
 #ifdef JP
                if (name) return "¶õÊ¢½¼Â­";
                if (desc) return "ËþÊ¢¤Ë¤¹¤ë¡£";
@@ -2216,7 +1368,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_REMOVE_CURSE:  
+       case 8:
 #ifdef JP
                if (name) return "²ò¼ö";
                if (desc) return "¥¢¥¤¥Æ¥à¤Ë¤«¤«¤Ã¤¿¼å¤¤¼ö¤¤¤ò²ò½ü¤¹¤ë¡£";
@@ -2240,7 +1392,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_CAUSE_MEDIUM_WOUNDS:  
+       case 9:
 #ifdef JP
                if (name) return "½Å½ý";
                if (desc) return "1ÂΤΥâ¥ó¥¹¥¿¡¼¤ËÃæ¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -2263,7 +1415,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_CURE_CRITICAL_WOUNDS: 
+       case 10:
 #ifdef JP
                if (name) return "Ã×Ì¿½ý¤Î¼£Ìþ";
                if (desc) return "ÂÎÎϤòÂçÉý¤Ë²óÉü¤µ¤»¡¢Éé½ý¤ÈÛ¯Û°¾õÂÖ¤âÁ´²÷¤¹¤ë¡£";
@@ -2287,7 +1439,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_RESIST_HEAT_AND_COLD: 
+       case 11:
 #ifdef JP
                if (name) return "ÂÑÇ®ÂÑ´¨";
                if (desc) return "°ìÄê»þ´Ö¡¢²Ð±ê¤ÈÎ䵤¤ËÂФ¹¤ëÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
@@ -2309,7 +1461,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_SENSE_SURROUNDINGS: 
+       case 12:
 #ifdef JP
                if (name) return "¼þÊÕ´¶ÃÎ";
                if (desc) return "¼þÊÕ¤ÎÃÏ·Á¤ò´¶ÃΤ¹¤ë¡£";
@@ -2330,7 +1482,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_TURN_UNDEAD: 
+       case 13:
 #ifdef JP
                if (name) return "¥Ñ¥Ë¥Ã¥¯¡¦¥¢¥ó¥Ç¥Ã¥É";
                if (desc) return "»ë³¦Æâ¤Î¥¢¥ó¥Ç¥Ã¥É¤ò¶²Éݤµ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -2347,7 +1499,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_HEALING: 
+       case 14:
 #ifdef JP
                if (name) return "ÂÎÎϲóÉü";
                if (desc) return "¶Ë¤á¤Æ¶¯ÎϤʲóÉü¼öʸ¤Ç¡¢Éé½ý¤ÈÛ¯Û°¾õÂÖ¤âÁ´²÷¤¹¤ë¡£";
@@ -2370,7 +1522,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_GLYPH_OF_WARDING: 
+       case 15:
 #ifdef JP
                if (name) return "·ë³¦¤ÎÌæ¾Ï";
                if (desc) return "¼«Ê¬¤Î¤¤¤ë¾²¤Î¾å¤Ë¡¢¥â¥ó¥¹¥¿¡¼¤¬Ä̤êÈ´¤±¤¿¤ê¾¤´­¤µ¤ì¤¿¤ê¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¯¤Ê¤ë¥ë¡¼¥ó¤òÉÁ¤¯¡£";
@@ -2387,7 +1539,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_DISPEL_CURSE: 
+       case 16:
 #ifdef JP
                if (name) return "*²ò¼ö*";
                if (desc) return "¥¢¥¤¥Æ¥à¤Ë¤«¤«¤Ã¤¿¶¯ÎϤʼö¤¤¤ò²ò½ü¤¹¤ë¡£";
@@ -2411,7 +1563,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_PERCEPTION: 
+       case 17:
 #ifdef JP
                if (name) return "´Õ¼±";
                if (desc) return "¥¢¥¤¥Æ¥à¤ò¼±Ê̤¹¤ë¡£";
@@ -2428,7 +1580,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_DISPEL_UNDEAD: 
+       case 18:
 #ifdef JP
                if (name) return "¥¢¥ó¥Ç¥Ã¥ÉÂ໶";
                if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥¢¥ó¥Ç¥Ã¥É¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
@@ -2450,7 +1602,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_DAY_OF_THE_DOVE: 
+       case 19:
 #ifdef JP
                if (name) return "Æä¤Î¹ï";
                if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -2471,7 +1623,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_CAUSE_CRITICAL_WOUNDS: 
+       case 20:
 #ifdef JP
                if (name) return "Ã×Ì¿½ý";
                if (desc) return "1ÂΤΥâ¥ó¥¹¥¿¡¼¤ËÂç¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -2494,7 +1646,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_WORD_OF_RECALL: 
+       case 21:
 #ifdef JP
                if (name) return "µ¢´Ô¤Î¾Û";
                if (desc) return "ÃϾå¤Ë¤¤¤ë¤È¤­¤Ï¥À¥ó¥¸¥ç¥ó¤ÎºÇ¿¼³¬¤Ø¡¢¥À¥ó¥¸¥ç¥ó¤Ë¤¤¤ë¤È¤­¤ÏÃϾå¤Ø¤È°ÜÆ°¤¹¤ë¡£";
@@ -2516,7 +1668,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_ALTER_REALITY: 
+       case 22:
 #ifdef JP
                if (name) return "¿¿¼Â¤Îº×ÃÅ";
                if (desc) return "¸½ºß¤Î³¬¤òºÆ¹½À®¤¹¤ë¡£";
@@ -2538,7 +1690,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_WARDING_TRUE: 
+       case 23:
 #ifdef JP
                if (name) return "¿¿¡¦·ë³¦";
                if (desc) return "¼«Ê¬¤Î¤¤¤ë¾²¤È¼þ°Ï8¥Þ¥¹¤Î¾²¤Î¾å¤Ë¡¢¥â¥ó¥¹¥¿¡¼¤¬Ä̤êÈ´¤±¤¿¤ê¾¤´­¤µ¤ì¤¿¤ê¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¯¤Ê¤ë¥ë¡¼¥ó¤òÉÁ¤¯¡£";
@@ -2560,7 +1712,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_STERILIZATION: 
+       case 24:
 #ifdef JP
                if (name) return "ÉÔÌÓ²½";
                if (desc) return "¤³¤Î³¬¤ÎÁý¿£¤¹¤ë¥â¥ó¥¹¥¿¡¼¤¬Áý¿£¤Ç¤­¤Ê¤¯¤Ê¤ë¡£";
@@ -2577,7 +1729,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_DETECTION: 
+       case 25:
 #ifdef JP
                if (name) return "Á´´¶ÃÎ";
                if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¡¢æ«¡¢Èâ¡¢³¬ÃÊ¡¢ºâÊõ¡¢¤½¤·¤Æ¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
@@ -2598,7 +1750,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_ANNIHILATE_UNDEAD: 
+       case 26:
 #ifdef JP
                if (name) return "¥¢¥ó¥Ç¥Ã¥É¾ÃÌÇ";
                if (desc) return "¼«Ê¬¤Î¼þ°Ï¤Ë¤¤¤ë¥¢¥ó¥Ç¥Ã¥É¤ò¸½ºß¤Î³¬¤«¤é¾Ã¤·µî¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -2619,7 +1771,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_CLAIRVOYANCE: 
+       case 27:
 #ifdef JP
                if (name) return "ÀéΤ´ã";
                if (desc) return "¤½¤Î³¬Á´ÂΤò±Êµ×¤Ë¾È¤é¤·¡¢¥À¥ó¥¸¥ç¥óÆ⤹¤Ù¤Æ¤Î¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
@@ -2636,7 +1788,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_RESTORATION: 
+       case 28:
 #ifdef JP
                if (name) return "Á´Éü³è";
                if (desc) return "¤¹¤Ù¤Æ¤Î¥¹¥Æ¡¼¥¿¥¹¤È·Ð¸³Ãͤò²óÉü¤¹¤ë¡£";
@@ -2659,7 +1811,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_HEALING_TRUE: 
+       case 29:
 #ifdef JP
                if (name) return "*ÂÎÎϲóÉü*";
                if (desc) return "ºÇ¶¯¤Î¼£Ìþ¤ÎËâË¡¤Ç¡¢Éé½ý¤ÈÛ¯Û°¾õÂÖ¤âÁ´²÷¤¹¤ë¡£";
@@ -2682,7 +1834,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_HOLY_VISION: 
+       case 30:
 #ifdef JP
                if (name) return "À»¤Ê¤ë¥Ó¥¸¥ç¥ó";
                if (desc) return "¥¢¥¤¥Æ¥à¤Î»ý¤ÄǽÎϤò´°Á´¤ËÃΤ롣";
@@ -2699,7 +1851,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_ULTIMATE_RESISTANCE: 
+       case 31:
 #ifdef JP
                if (name) return "µæ¶Ë¤ÎÂÑÀ­";
                if (desc) return "°ìÄê»þ´Ö¡¢¤¢¤é¤æ¤ëÂÑÀ­¤òÉÕ¤±¡¢AC¤ÈËâË¡ËɸæǽÎϤò¾å¾º¤µ¤»¤ë¡£";
@@ -2726,8 +1878,25 @@ cptr do_spell(int realm, int spell, int mode)
                        }
                }
                break;
+       }
+
+       return "";
+}
+
+
+static cptr do_sorcery_spell(int spell, int mode)
+{
+       bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
+       bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
+       bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
+       bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
+
+       int dir;
+       int plev = p_ptr->lev;
 
-       case SORC_SPEL_DETECT_MONSTERS: 
+       switch (spell)
+       {
+       case 0:
 #ifdef JP
                if (name) return "¥â¥ó¥¹¥¿¡¼´¶ÃÎ";
                if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¸«¤¨¤ë¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
@@ -2748,7 +1917,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_PHASE_DOOR: 
+       case 1:
 #ifdef JP
                if (name) return "¥·¥ç¡¼¥È¡¦¥Æ¥ì¥Ý¡¼¥È";
                if (desc) return "¶áµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
@@ -2764,12 +1933,12 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cast)
                        {
-                               teleport_player(range, FALSE);
+                               teleport_player(range, 0L);
                        }
                }
                break;
 
-       case SORC_SPEL_DETECT_DOORS_AND_TRAPS: 
+       case 2:
 #ifdef JP
                if (name) return "櫤ÈÈâ´¶ÃÎ";
                if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤ÎÈâ¤È櫤ò´¶ÃΤ¹¤ë¡£";
@@ -2792,7 +1961,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_LIGHT_AREA: 
+       case 3:
 #ifdef JP
                if (name) return "¥é¥¤¥È¡¦¥¨¥ê¥¢";
                if (desc) return "¸÷¸»¤¬¾È¤é¤·¤Æ¤¤¤ëÈϰϤ«Éô²°Á´ÂΤò±Êµ×¤ËÌÀ¤ë¤¯¤¹¤ë¡£";
@@ -2815,7 +1984,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_CONFUSE_MONSTER: 
+       case 4:
 #ifdef JP
                if (name) return "¥Ñ¥Ë¥Ã¥¯¡¦¥â¥ó¥¹¥¿¡¼";
                if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤòº®Í𤵤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -2838,7 +2007,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_TELEPORT: 
+       case 5:
 #ifdef JP
                if (name) return "¥Æ¥ì¥Ý¡¼¥È";
                if (desc) return "±óµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
@@ -2854,12 +2023,12 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cast)
                        {
-                               teleport_player(range, FALSE);
+                               teleport_player(range, 0L);
                        }
                }
                break;
 
-       case SORC_SPEL_SLEEP_MONSTER: 
+       case 6:
 #ifdef JP
                if (name) return "¥¹¥ê¡¼¥×¡¦¥â¥ó¥¹¥¿¡¼";
                if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò̲¤é¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -2877,12 +2046,12 @@ cptr do_spell(int realm, int spell, int mode)
                        {
                                if (!get_aim_dir(&dir)) return NULL;
 
-                               sleep_monster(dir);
+                               sleep_monster(dir, plev);
                        }
                }
                break;
 
-       case SORC_SPEL_RECHARGING: 
+       case 7:
 #ifdef JP
                if (name) return "ËâÎϽ¼Å¶";
                if (desc) return "¾ó/ËâË¡ËÀ¤Î½¼Å¶²ó¿ô¤òÁý¤ä¤¹¤«¡¢½¼Å¶Ãæ¤Î¥í¥Ã¥É¤Î½¼Å¶»þ´Ö¤ò¸º¤é¤¹¡£";
@@ -2903,7 +2072,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_MAGIC_MAPPING: 
+       case 8:
 #ifdef JP
                if (name) return "ËâË¡¤ÎÃÏ¿Þ";
                if (desc) return "¼þÊÕ¤ÎÃÏ·Á¤ò´¶ÃΤ¹¤ë¡£";
@@ -2924,7 +2093,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_IDENTIFY: 
+       case 9:
 #ifdef JP
                if (name) return "´ÕÄê";
                if (desc) return "¥¢¥¤¥Æ¥à¤ò¼±Ê̤¹¤ë¡£";
@@ -2941,7 +2110,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_SLOW_MONSTER: 
+       case 10:
 #ifdef JP
                if (name) return "¥¹¥í¥¦¡¦¥â¥ó¥¹¥¿¡¼";
                if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò¸ºÂ®¤µ¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -2959,12 +2128,12 @@ cptr do_spell(int realm, int spell, int mode)
                        {
                                if (!get_aim_dir(&dir)) return NULL;
 
-                               slow_monster(dir);
+                               slow_monster(dir, plev);
                        }
                }
                break;
 
-       case SORC_SPEL_MASS_SLEEP: 
+       case 11:
 #ifdef JP
                if (name) return "¼þÊÕ¥¹¥ê¡¼¥×";
                if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò̲¤é¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -2980,12 +2149,12 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cast)
                        {
-                               sleep_monsters();
+                               sleep_monsters(plev);
                        }
                }
                break;
 
-       case SORC_SPEL_TELEPORT_AWAY: 
+       case 12:
 #ifdef JP
                if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥â¥ó¥¹¥¿¡¼";
                if (desc) return "¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¥Ó¡¼¥à¤òÊü¤Ä¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -3008,7 +2177,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_HASTE_SELF: 
+       case 13:
 #ifdef JP
                if (name) return "¥¹¥Ô¡¼¥É";
                if (desc) return "°ìÄê»þ´Ö¡¢²Ã®¤¹¤ë¡£";
@@ -3030,7 +2199,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_DETECTION_TRUE: 
+       case 14:
 #ifdef JP
                if (name) return "¿¿¡¦´¶ÃÎ";
                if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¡¢æ«¡¢Èâ¡¢³¬ÃÊ¡¢ºâÊõ¡¢¤½¤·¤Æ¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
@@ -3051,7 +2220,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_IDENTIFY_TRUE: 
+       case 15:
 #ifdef JP
                if (name) return "¿¿¡¦´ÕÄê";
                if (desc) return "¥¢¥¤¥Æ¥à¤Î»ý¤ÄǽÎϤò´°Á´¤ËÃΤ롣";
@@ -3068,7 +2237,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_DETECT_ITEMS_AND_TREASURE: 
+       case 16:
 #ifdef JP
                if (name) return "ʪÂΤȺâÊõ´¶ÃÎ";
                if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥¢¥¤¥Æ¥à¤ÈºâÊõ¤ò´¶ÃΤ¹¤ë¡£";
@@ -3091,7 +2260,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_CHARM_MONSTER: 
+       case 17:
 #ifdef JP
                if (name) return "¥Á¥ã¡¼¥à¡¦¥â¥ó¥¹¥¿¡¼";
                if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -3114,7 +2283,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_SENSE_MINDS: 
+       case 18:
 #ifdef JP
                if (name) return "Àº¿À´¶ÃÎ";
                if (desc) return "°ìÄê»þ´Ö¡¢¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤòÆÀ¤ë¡£";
@@ -3136,7 +2305,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_TELEPORT_TO_TOWN: 
+       case 19:
 #ifdef JP
                if (name) return "³¹°ÜÆ°";
                if (desc) return "³¹¤Ø°ÜÆ°¤¹¤ë¡£ÃϾå¤Ë¤¤¤ë¤È¤­¤·¤«»È¤¨¤Ê¤¤¡£";
@@ -3153,7 +2322,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_SELF_KNOWLEDGE: 
+       case 20:
 #ifdef JP
                if (name) return "¼«¸ÊʬÀÏ";
                if (desc) return "¸½ºß¤Î¼«Ê¬¤Î¾õÂÖ¤ò´°Á´¤ËÃΤ롣";
@@ -3170,7 +2339,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_TELEPORT_LEVEL: 
+       case 21:
 #ifdef JP
                if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥ì¥Ù¥ë";
                if (desc) return "½Ö»þ¤Ë¾å¤«²¼¤Î³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ë¡£";
@@ -3192,7 +2361,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_WORD_OF_RECALL: 
+       case 22:
 #ifdef JP
                if (name) return "µ¢´Ô¤Î¼öʸ";
                if (desc) return "ÃϾå¤Ë¤¤¤ë¤È¤­¤Ï¥À¥ó¥¸¥ç¥ó¤ÎºÇ¿¼³¬¤Ø¡¢¥À¥ó¥¸¥ç¥ó¤Ë¤¤¤ë¤È¤­¤ÏÃϾå¤Ø¤È°ÜÆ°¤¹¤ë¡£";
@@ -3214,7 +2383,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_DIMENSION_DOOR: 
+       case 23:
 #ifdef JP
                if (name) return "¼¡¸µ¤ÎÈâ";
                if (desc) return "ûµ÷Î¥Æâ¤Î»ØÄꤷ¤¿¾ì½ê¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ë¡£";
@@ -3241,7 +2410,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_PROBING: 
+       case 24:
 #ifdef JP
                if (name) return "Ä´ºº";
                if (desc) return "¥â¥ó¥¹¥¿¡¼¤Î°À­¡¢»Ä¤êÂÎÎÏ¡¢ºÇÂçÂÎÎÏ¡¢¥¹¥Ô¡¼¥É¡¢ÀµÂΤòÃΤ롣";
@@ -3258,7 +2427,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_EXPLOSIVE_RUNE: 
+       case 25:
 #ifdef JP
                if (name) return "Çúȯ¤Î¥ë¡¼¥ó";
                if (desc) return "¼«Ê¬¤Î¤¤¤ë¾²¤Î¾å¤Ë¡¢¥â¥ó¥¹¥¿¡¼¤¬Ä̤ë¤ÈÇúȯ¤·¤Æ¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¥ë¡¼¥ó¤òÉÁ¤¯¡£";
@@ -3281,7 +2450,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_TELEKINESIS: 
+       case 26:
 #ifdef JP
                if (name) return "Ç°Æ°ÎÏ";
                if (desc) return "¥¢¥¤¥Æ¥à¤ò¼«Ê¬¤Î­¸µ¤Ø°ÜÆ°¤µ¤»¤ë¡£";
@@ -3304,7 +2473,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_CLAIRVOYANCE: 
+       case 27:
 #ifdef JP
                if (name) return "ÀéΤ´ã";
                if (desc) return "¤½¤Î³¬Á´ÂΤò±Êµ×¤Ë¾È¤é¤·¡¢¥À¥ó¥¸¥ç¥óÆ⤹¤Ù¤Æ¤Î¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£¤µ¤é¤Ë¡¢°ìÄê»þ´Ö¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤòÆÀ¤ë¡£";
@@ -3334,7 +2503,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_CHARM_MONSTERS: 
+       case 28:
 #ifdef JP
                if (name) return "̥λ¤Î»ëÀþ";
                if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -3355,7 +2524,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_ALCHEMY: 
+       case 29:
 #ifdef JP
                if (name) return "Ï£¶â½Ñ";
                if (desc) return "¥¢¥¤¥Æ¥à1¤Ä¤ò¤ª¶â¤ËÊѤ¨¤ë¡£";
@@ -3372,7 +2541,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_BANISHMENT: 
+       case 30:
 #ifdef JP
                if (name) return "²øʪÄÉÊü";
                if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -3393,7 +2562,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_GLOBE_OF_INVULNERABILITY: 
+       case 31:
 #ifdef JP
                if (name) return "̵½ý¤Îµå";
                if (desc) return "°ìÄê»þ´Ö¡¢¥À¥á¡¼¥¸¤ò¼õ¤±¤Ê¤¯¤Ê¤ë¥Ð¥ê¥¢¤òÄ¥¤ë¡£Àڤ줿½Ö´Ö¤Ë¾¯¤·¥¿¡¼¥ó¤ò¾ÃÈñ¤¹¤ë¤Î¤ÇÃí°Õ¡£";
@@ -3413,8 +2582,33 @@ cptr do_spell(int realm, int spell, int mode)
                        }
                }
                break;
+       }
+
+       return "";
+}
+
+
+static cptr do_nature_spell(int spell, int mode)
+{
+       bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
+       bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
+       bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
+       bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
+
+#ifdef JP
+       static const char s_dam[] = "»½ý:";
+       static const char s_rng[] = "¼ÍÄø";
+#else
+       static const char s_dam[] = "dam ";
+       static const char s_rng[] = "rng ";
+#endif
+
+       int dir;
+       int plev = p_ptr->lev;
 
-       case NATU_SPEL_DETECT_CREATURES: 
+       switch (spell)
+       {
+       case 0:
 #ifdef JP
                if (name) return "¥â¥ó¥¹¥¿¡¼´¶ÃÎ";
                if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¸«¤¨¤ë¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
@@ -3435,7 +2629,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_LIGHTNING: 
+       case 1:
 #ifdef JP
                if (name) return "°ðºÊ";
                if (desc) return "ÅÅ·â¤Îû¤¤¥Ó¡¼¥à¤òÊü¤Ä¡£";
@@ -3462,7 +2656,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_DETECT_DOORS_AND_TRAPS: 
+       case 2:
 #ifdef JP
                if (name) return "櫤ÈÈâ´¶ÃÎ";
                if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î櫤ÈÈâ¤ò´¶ÃΤ¹¤ë¡£";
@@ -3485,13 +2679,13 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_PRODUCE_FOOD: 
+       case 3:
 #ifdef JP
                if (name) return "¿©ÎÈÀ¸À®";
-               if (desc) return "ËþÊ¢¤Ë¤Ê¤ë¡£";
+               if (desc) return "¿©ÎÁ¤ò°ì¤Äºî¤ê½Ð¤¹¡£";
 #else
                if (name) return "Produce Food";
-               if (desc) return "Satisfies hunger.";
+               if (desc) return "Produces a Ration of Food.";
 #endif
     
                {
@@ -3514,7 +2708,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_DAYLIGHT: 
+       case 4:
 #ifdef JP
                if (name) return "Æü¤Î¸÷";
                if (desc) return "¸÷¸»¤¬¾È¤é¤·¤Æ¤¤¤ëÈϰϤ«Éô²°Á´ÂΤò±Êµ×¤ËÌÀ¤ë¤¯¤¹¤ë¡£";
@@ -3552,7 +2746,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_ANIMAL_TAMING: 
+       case 5:
 #ifdef JP
                if (name) return "ưʪ½¬¤·";
                if (desc) return "ưʪ1ÂΤò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -3575,7 +2769,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_RESIST_ENVIRONMENT: 
+       case 6:
 #ifdef JP
                if (name) return "´Ä¶­¤Ø¤ÎÂÑÀ­";
                if (desc) return "°ìÄê»þ´Ö¡¢Î䵤¡¢±ê¡¢ÅÅ·â¤ËÂФ¹¤ëÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
@@ -3598,7 +2792,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_CURE_WOUNDS_AND_POISON: 
+       case 7:
 #ifdef JP
                if (name) return "½ý¤ÈÆǼ£ÎÅ";
                if (desc) return "²ø²æ¤òÁ´²÷¤µ¤»¡¢ÆǤòÂΤ«¤é´°Á´¤Ë¼è¤ê½ü¤­¡¢ÂÎÎϤò¾¯¤·²óÉü¤µ¤»¤ë¡£";
@@ -3622,7 +2816,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_STONE_TO_MUD: 
+       case 8:
 #ifdef JP
                if (name) return "´äÀÐÍϲò";
                if (desc) return "ÊɤòÍϤ«¤·¤Æ¾²¤Ë¤¹¤ë¡£";
@@ -3642,12 +2836,12 @@ cptr do_spell(int realm, int spell, int mode)
                        {
                                if (!get_aim_dir(&dir)) return NULL;
 
-                               wall_to_mud(dir);
+                               wall_to_mud(dir, 20 + randint1(30));
                        }
                }
                break;
 
-       case NATU_SPEL_FROST_BOLT: 
+       case 9:
 #ifdef JP
                if (name) return "¥¢¥¤¥¹¡¦¥Ü¥ë¥È";
                if (desc) return "Î䵤¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
@@ -3670,7 +2864,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_NATURE_AWARENESS: 
+       case 10:
 #ifdef JP
                if (name) return "¼«Á³¤Î³ÐÀÃ";
                if (desc) return "¼þÊÕ¤ÎÃÏ·Á¤ò´¶ÃΤ·¡¢¶á¤¯¤Îæ«¡¢Èâ¡¢³¬ÃÊ¡¢Á´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
@@ -3696,7 +2890,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_FIRE_BOLT: 
+       case 11:
 #ifdef JP
                if (name) return "¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È";
                if (desc) return "²Ð±ê¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
@@ -3719,7 +2913,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_RAY_OF_SUNLIGHT: 
+       case 12:
 #ifdef JP
                if (name) return "ÂÀÍÛ¸÷Àþ";
                if (desc) return "¸÷Àþ¤òÊü¤Ä¡£¸÷¤ê¤ò·ù¤¦¥â¥ó¥¹¥¿¡¼¤Ë¸ú²Ì¤¬¤¢¤ë¡£";
@@ -3743,12 +2937,12 @@ cptr do_spell(int realm, int spell, int mode)
                                msg_print("A line of sunlight appears.");
 #endif
 
-                               lite_line(dir);
+                               lite_line(dir, damroll(6, 8));
                        }
                }
                break;
 
-       case NATU_SPEL_ENTANGLE: 
+       case 13:
 #ifdef JP
                if (name) return "­¤«¤»";
                if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò¸ºÂ®¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -3764,12 +2958,12 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cast)
                        {
-                               slow_monsters();
+                               slow_monsters(plev);
                        }
                }
                break;
 
-       case NATU_SPEL_SUMMON_ANIMAL: 
+       case 14:
 #ifdef JP
                if (name) return "ưʪ¾¤´­";
                if (desc) return "ưʪ¤ò1Âξ¤´­¤¹¤ë¡£";
@@ -3794,7 +2988,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_HERBAL_HEALING: 
+       case 15:
 #ifdef JP
                if (name) return "ÌôÁð¼£ÎÅ";
                if (desc) return "ÂÎÎϤòÂçÉý¤Ë²óÉü¤µ¤»¡¢Éé½ý¡¢Û¯Û°¾õÂÖ¡¢ÆǤ«¤éÁ´²÷¤¹¤ë¡£";
@@ -3818,7 +3012,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_STAIR_BUILDING: 
+       case 16:
 #ifdef JP
                if (name) return "³¬ÃÊÀ¸À®";
                if (desc) return "¼«Ê¬¤Î¤¤¤ë°ÌÃ֤˳¬Ãʤòºî¤ë¡£";
@@ -3835,7 +3029,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_STONE_SKIN: 
+       case 17:
 #ifdef JP
                if (name) return "È©Àв½";
                if (desc) return "°ìÄê»þ´Ö¡¢AC¤ò¾å¾º¤µ¤»¤ë¡£";
@@ -3857,7 +3051,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_RESISTANCE_TRUE: 
+       case 18:
 #ifdef JP
                if (name) return "¿¿¡¦ÂÑÀ­";
                if (desc) return "°ìÄê»þ´Ö¡¢»À¡¢ÅÅ·â¡¢±ê¡¢Î䵤¡¢ÆǤËÂФ¹¤ëÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
@@ -3882,7 +3076,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_FOREST_CREATION: 
+       case 19:
 #ifdef JP
                if (name) return "¿¹ÎÓÁϤ";
                if (desc) return "¼þ°Ï¤ËÌÚ¤òºî¤ê½Ð¤¹¡£";
@@ -3899,7 +3093,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_ANIMAL_FRIENDSHIP: 
+       case 20:
 #ifdef JP
                if (name) return "ưʪͧÏÂ";
                if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Îưʪ¤ò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -3920,7 +3114,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_STONE_TELL: 
+       case 21:
 #ifdef JP
                if (name) return "»î¶âÀÐ";
                if (desc) return "¥¢¥¤¥Æ¥à¤Î»ý¤ÄǽÎϤò´°Á´¤ËÃΤ롣";
@@ -3937,7 +3131,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_WALL_OF_STONE: 
+       case 22:
 #ifdef JP
                if (name) return "ÀФÎÊÉ";
                if (desc) return "¼«Ê¬¤Î¼þ°Ï¤Ë²ÖÖ¾´ä¤ÎÊɤòºî¤ë¡£";
@@ -3954,7 +3148,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_PROTECT_FROM_CORROSION: 
+       case 23:
 #ifdef JP
                if (name) return "Éå¿©ËÉ»ß";
                if (desc) return "¥¢¥¤¥Æ¥à¤ò»À¤Ç½ý¤Ä¤«¤Ê¤¤¤è¤¦²Ã¹©¤¹¤ë¡£";
@@ -3971,7 +3165,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_EARTHQUAKE: 
+       case 24:
 #ifdef JP
                if (name) return "ÃÏ¿Ì";
                if (desc) return "¼þ°Ï¤Î¥À¥ó¥¸¥ç¥ó¤òÍɤ餷¡¢ÊɤȾ²¤ò¥é¥ó¥À¥à¤ËÆþ¤ìÊѤ¨¤ë¡£";
@@ -3992,7 +3186,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_CYCLONE: 
+       case 25:
 #ifdef JP
                if (name) return "¥«¥Þ¥¤¥¿¥Á";
                if (desc) return "Á´Êý¸þ¤Ë¸þ¤«¤Ã¤Æ¹¶·â¤¹¤ë¡£";
@@ -4025,7 +3219,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_BLIZZARD: 
+       case 26:
 #ifdef JP
                if (name) return "¥Ö¥ê¥¶¡¼¥É";
                if (desc) return "µðÂç¤ÊÎ䵤¤Îµå¤òÊü¤Ä¡£";
@@ -4049,7 +3243,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_LIGHTNING_STORM: 
+       case 27:
 #ifdef JP
                if (name) return "°ðºÊÍò";
                if (desc) return "µðÂç¤ÊÅÅ·â¤Îµå¤òÊü¤Ä¡£";
@@ -4073,7 +3267,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_WHIRLPOOL: 
+       case 28:
 #ifdef JP
                if (name) return "±²Ä¬";
                if (desc) return "µðÂç¤Ê¿å¤Îµå¤òÊü¤Ä¡£";
@@ -4096,7 +3290,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_CALL_SUNLIGHT: 
+       case 29:
 #ifdef JP
                if (name) return "ÍÛ¸÷¾¤´­";
                if (desc) return "¼«Ê¬¤òÃæ¿´¤È¤·¤¿¸÷¤Îµå¤òȯÀ¸¤µ¤»¤ë¡£¤µ¤é¤Ë¡¢¤½¤Î³¬Á´ÂΤò±Êµ×¤Ë¾È¤é¤·¡¢¥À¥ó¥¸¥ç¥óÆ⤹¤Ù¤Æ¤Î¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
@@ -4136,7 +3330,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_ELEMENTAL_BRANDING: 
+       case 30:
 #ifdef JP
                if (name) return "ÀºÎî¤Î¿Ï";
                if (desc) return "Éð´ï¤Ë±ê¤«Î䵤¤Î°À­¤ò¤Ä¤±¤ë¡£";
@@ -4153,7 +3347,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_NATURES_WRATH: 
+       case 31:
 #ifdef JP
                if (name) return "¼«Á³¤Î¶¼°Ò";
                if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¡¢ÃϿ̤òµ¯¤³¤·¡¢¼«Ê¬¤òÃæ¿´¤È¤·¤¿Ê¬²ò¤Îµå¤òȯÀ¸¤µ¤»¤ë¡£";
@@ -4178,8 +3372,33 @@ cptr do_spell(int realm, int spell, int mode)
                        }
                }
                break;
+       }
+
+       return "";
+}
+
+
+static cptr do_chaos_spell(int spell, int mode)
+{
+       bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
+       bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
+       bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
+       bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
+
+#ifdef JP
+       static const char s_dam[] = "»½ý:";
+       static const char s_random[] = "¥é¥ó¥À¥à";
+#else
+       static const char s_dam[] = "dam ";
+       static const char s_random[] = "random";
+#endif
 
-       case CHAO_SPEL_MAGIC_MISSILE: 
+       int dir;
+       int plev = p_ptr->lev;
+
+       switch (spell)
+       {
+       case 0:
 #ifdef JP
                if (name) return "¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë";
                if (desc) return "¼å¤¤ËâË¡¤ÎÌð¤òÊü¤Ä¡£";
@@ -4203,7 +3422,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_TRAP_DOOR_DESTRUCTION: 
+       case 1:
 #ifdef JP
                if (name) return "¥È¥é¥Ã¥×/¥É¥¢Ç˲õ";
                if (desc) return "ÎÙÀܤ¹¤ë櫤ÈÈâ¤òÇ˲õ¤¹¤ë¡£";
@@ -4224,7 +3443,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_FLASH_OF_LIGHT: 
+       case 2:
 #ifdef JP
                if (name) return "Á®¸÷";
                if (desc) return "¸÷¸»¤¬¾È¤é¤·¤Æ¤¤¤ëÈϰϤ«Éô²°Á´ÂΤò±Êµ×¤ËÌÀ¤ë¤¯¤¹¤ë¡£";
@@ -4247,7 +3466,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_TOUCH_OF_CONFUSION: 
+       case 3:
 #ifdef JP
                if (name) return "º®Íð¤Î¼ê";
                if (desc) return "Áê¼ê¤òº®Í𤵤»¤ë¹¶·â¤ò¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ë¡£";
@@ -4274,7 +3493,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_MANA_BURST:
+       case 4:
 #ifdef JP
                if (name) return "ËâÎÏßÚÎö";
                if (desc) return "ËâË¡¤Îµå¤òÊü¤Ä¡£";
@@ -4314,7 +3533,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_FIRE_BOLT:
+       case 5:
 #ifdef JP
                if (name) return "¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È";
                if (desc) return "±ê¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
@@ -4338,7 +3557,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_FIST_OF_FORCE:
+       case 6:
 #ifdef JP
                if (name) return "ÎϤηý";
                if (desc) return "¤´¤¯¾®¤µ¤Êʬ²ò¤Îµå¤òÊü¤Ä¡£";
@@ -4363,7 +3582,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_TELEPORT_SELF:
+       case 7:
 #ifdef JP
                if (name) return "¥Æ¥ì¥Ý¡¼¥È";
                if (desc) return "±óµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
@@ -4379,12 +3598,12 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cast)
                        {
-                               teleport_player(range, FALSE);
+                               teleport_player(range, 0L);
                        }
                }
                break;
 
-       case CHAO_SPEL_WONDER:
+       case 8:
 #ifdef JP
                if (name) return "¥ï¥ó¥À¡¼";
                if (desc) return "¥â¥ó¥¹¥¿¡¼¤Ë¥é¥ó¥À¥à¤Ê¸ú²Ì¤òÍ¿¤¨¤ë¡£";
@@ -4406,7 +3625,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_CHAOS_BOLT:
+       case 9:
 #ifdef JP
                if (name) return "¥«¥ª¥¹¡¦¥Ü¥ë¥È";
                if (desc) return "¥«¥ª¥¹¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
@@ -4430,7 +3649,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_SONIC_BOOM:
+       case 10:
 #ifdef JP
                if (name) return "¥½¥Ë¥Ã¥¯¡¦¥Ö¡¼¥à";
                if (desc) return "¼«Ê¬¤òÃæ¿´¤È¤·¤¿¹ì²»¤Îµå¤òȯÀ¸¤µ¤»¤ë¡£";
@@ -4458,7 +3677,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_DOOM_BOLT:
+       case 11:
 #ifdef JP
                if (name) return "ÇËÌǤÎÌð";
                if (desc) return "½ã¿è¤ÊËâÎϤΥӡ¼¥à¤òÊü¤Ä¡£";
@@ -4482,7 +3701,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_FIRE_BALL:
+       case 12:
 #ifdef JP
                if (name) return "¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë";
                if (desc) return "±ê¤Îµå¤òÊü¤Ä¡£";
@@ -4506,7 +3725,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_TELEPORT_OTHER:
+       case 13:
 #ifdef JP
                if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥¢¥¦¥§¥¤";
                if (desc) return "¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¥Ó¡¼¥à¤òÊü¤Ä¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -4529,7 +3748,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_WORD_OF_DESTRUCTION:
+       case 14:
 #ifdef JP
                if (name) return "Ç˲õ¤Î¸ÀÍÕ";
                if (desc) return "¼þÊդΥ¢¥¤¥Æ¥à¡¢¥â¥ó¥¹¥¿¡¼¡¢ÃÏ·Á¤òÇ˲õ¤¹¤ë¡£";
@@ -4549,7 +3768,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_INVOKE_LOGRUS:
+       case 15:
 #ifdef JP
                if (name) return "¥í¥°¥ë¥¹È¯Æ°";
                if (desc) return "µðÂç¤Ê¥«¥ª¥¹¤Îµå¤òÊü¤Ä¡£";
@@ -4573,7 +3792,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_POLYMORPH_OTHER:
+       case 16:
 #ifdef JP
                if (name) return "¾¼ÔÊÑÍÆ";
                if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤòÊѿȤµ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -4591,12 +3810,12 @@ cptr do_spell(int realm, int spell, int mode)
                        {
                                if (!get_aim_dir(&dir)) return NULL;
 
-                               poly_monster(dir);
+                               poly_monster(dir, plev);
                        }
                }
                break;
 
-       case CHAO_SPEL_CHAIN_LIGHTNING:
+       case 17:
 #ifdef JP
                if (name) return "Ï¢º¿°ðºÊ";
                if (desc) return "Á´Êý¸þ¤ËÂФ·¤ÆÅÅ·â¤Î¥Ó¡¼¥à¤òÊü¤Ä¡£";
@@ -4619,7 +3838,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_ARCANE_BINDING:
+       case 18:
 #ifdef JP
                if (name) return "ËâÎÏÉõÆþ";
                if (desc) return "¾ó/ËâË¡ËÀ¤Î½¼Å¶²ó¿ô¤òÁý¤ä¤¹¤«¡¢½¼Å¶Ãæ¤Î¥í¥Ã¥É¤Î½¼Å¶»þ´Ö¤ò¸º¤é¤¹¡£";
@@ -4640,7 +3859,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_DISINTEGRATE:
+       case 19:
 #ifdef JP
                if (name) return "¸¶»Òʬ²ò";
                if (desc) return "µðÂç¤Êʬ²ò¤Îµå¤òÊü¤Ä¡£";
@@ -4664,7 +3883,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_ALTER_REALITY:
+       case 20:
 #ifdef JP
                if (name) return "¸½¼ÂÊÑÍÆ";
                if (desc) return "¸½ºß¤Î³¬¤òºÆ¹½À®¤¹¤ë¡£";
@@ -4686,7 +3905,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_MAGIC_ROCKET:
+       case 21:
 #ifdef JP
                if (name) return "¥Þ¥¸¥Ã¥¯¡¦¥í¥±¥Ã¥È";
                if (desc) return "¥í¥±¥Ã¥È¤òȯ¼Í¤¹¤ë¡£";
@@ -4716,7 +3935,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_CHAOS_BRANDING:
+       case 22:
 #ifdef JP
                if (name) return "º®Æ٤οÏ";
                if (desc) return "Éð´ï¤Ë¥«¥ª¥¹¤Î°À­¤ò¤Ä¤±¤ë¡£";
@@ -4733,7 +3952,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_SUMMON_DEMON:
+       case 23:
 #ifdef JP
                if (name) return "°­Ë⾤´­";
                if (desc) return "°­Ëâ¤ò1Âξ¤´­¤¹¤ë¡£";
@@ -4781,7 +4000,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_BEAM_OF_GRAVITY:
+       case 24:
 #ifdef JP
                if (name) return "½ÅÎϸ÷Àþ";
                if (desc) return "½ÅÎϤΥӡ¼¥à¤òÊü¤Ä¡£";
@@ -4805,7 +4024,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_METEOR_SWARM:
+       case 25:
 #ifdef JP
                if (name) return "ήÀ±·²";
                if (desc) return "¼«Ê¬¤Î¼þÊÕ¤Ëð¨ÀФòÍî¤È¤¹¡£";
@@ -4827,7 +4046,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_FLAME_STRIKE:
+       case 26:
 #ifdef JP
                if (name) return "±ë¤Î°ì·â";
                if (desc) return "¼«Ê¬¤òÃæ¿´¤È¤·¤¿Ä¶µðÂç¤Ê±ê¤Îµå¤òȯÀ¸¤µ¤»¤ë¡£";
@@ -4849,7 +4068,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_CALL_CHAOS:
+       case 27:
 #ifdef JP
                if (name) return "º®ÆÙ¾¤Íè";
                if (desc) return "¥é¥ó¥À¥à¤Ê°À­¤Îµå¤ä¥Ó¡¼¥à¤òȯÀ¸¤µ¤»¤ë¡£";
@@ -4868,7 +4087,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_POLYMORPH_SELF:
+       case 28:
 #ifdef JP
                if (name) return "¼«¸ÊÊÑÍÆ";
                if (desc) return "¼«Ê¬¤òÊѿȤµ¤»¤è¤¦¤È¤¹¤ë¡£";
@@ -4890,7 +4109,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_MANA_STORM:
+       case 29:
 #ifdef JP
                if (name) return "ËâÎϤÎÍò";
                if (desc) return "Èó¾ï¤Ë¶¯ÎϤǵðÂç¤Ê½ã¿è¤ÊËâÎϤεå¤òÊü¤Ä¡£";
@@ -4914,7 +4133,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_BREATHE_LOGRUS:
+       case 30:
 #ifdef JP
                if (name) return "¥í¥°¥ë¥¹¤Î¥Ö¥ì¥¹";
                if (desc) return "Èó¾ï¤Ë¶¯ÎϤʥ«¥ª¥¹¤Îµå¤òÊü¤Ä¡£";
@@ -4938,7 +4157,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_CALL_THE_VOID:
+       case 31:
 #ifdef JP
                if (name) return "µõ̵¾¤Íè";
                if (desc) return "¼«Ê¬¤Ë¼þ°Ï¤Ë¸þ¤«¤Ã¤Æ¡¢¥í¥±¥Ã¥È¡¢½ã¿è¤ÊËâÎϤε塢Êü¼ÍÀ­ÇÑ´þʪ¤Îµå¤òÊü¤Ä¡£¤¿¤À¤·¡¢ÊɤËÎÙÀܤ·¤Æ»ÈÍѤ¹¤ë¤È¹­ÈϰϤòÇ˲õ¤¹¤ë¡£";
@@ -4956,14 +4175,39 @@ cptr do_spell(int realm, int spell, int mode)
                        }
                }
                break;
+       }
+
+       return "";
+}
+
+
+static cptr do_death_spell(int spell, int mode)
+{
+       bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
+       bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
+       bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
+       bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
 
-       case DEAT_SPEL_DETECT_UNLIFE:
 #ifdef JP
-               if (name) return "̵À¸Ì¿´¶ÃÎ";
-               if (desc) return "¶á¤¯¤ÎÀ¸Ì¿¤Î¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
+       static const char s_dam[] = "»½ý:";
+       static const char s_random[] = "¥é¥ó¥À¥à";
 #else
-               if (name) return "Detect Unlife";
-               if (desc) return "Detects all nonliving monsters in your vicinity.";
+       static const char s_dam[] = "dam ";
+       static const char s_random[] = "random";
+#endif
+
+       int dir;
+       int plev = p_ptr->lev;
+
+       switch (spell)
+       {
+       case 0:
+#ifdef JP
+               if (name) return "̵À¸Ì¿´¶ÃÎ";
+               if (desc) return "¶á¤¯¤ÎÀ¸Ì¿¤Î¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
+#else
+               if (name) return "Detect Unlife";
+               if (desc) return "Detects all nonliving monsters in your vicinity.";
 #endif
     
                {
@@ -4978,7 +4222,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_MALEDICTION:
+       case 1:
 #ifdef JP
                if (name) return "¼ö»¦ÃÆ";
                if (desc) return "¤´¤¯¾®¤µ¤Ê¼Ù°­¤ÊÎϤò»ý¤Ä¥Ü¡¼¥ë¤òÊü¤Ä¡£Á±Îɤʥâ¥ó¥¹¥¿¡¼¤Ë¤ÏÂ礭¤Ê¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
@@ -5026,7 +4270,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_DETECT_EVIL:
+       case 2:
 #ifdef JP
                if (name) return "¼Ù°­´¶ÃÎ";
                if (desc) return "¶á¤¯¤Î¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
@@ -5047,7 +4291,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_STINKING_CLOUD:
+       case 3:
 #ifdef JP
                if (name) return "°­½­±À";
                if (desc) return "ÆǤεå¤òÊü¤Ä¡£";
@@ -5071,7 +4315,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_BLACK_SLEEP:
+       case 4:
 #ifdef JP
                if (name) return "¹õ¤¤Ì²¤ê";
                if (desc) return "1ÂΤΥâ¥ó¥¹¥¿¡¼¤ò̲¤é¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -5089,12 +4333,12 @@ cptr do_spell(int realm, int spell, int mode)
                        {
                                if (!get_aim_dir(&dir)) return NULL;
 
-                               sleep_monster(dir);
+                               sleep_monster(dir, plev);
                        }
                }
                break;
 
-       case DEAT_SPEL_RESIST_POISON:
+       case 5:
 #ifdef JP
                if (name) return "ÂÑÆÇ";
                if (desc) return "°ìÄê»þ´Ö¡¢ÆǤؤÎÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
@@ -5115,7 +4359,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_HORRIFY:
+       case 6:
 #ifdef JP
                if (name) return "¶²¹²";
                if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò¶²Éݤµ¤»¡¢Û¯Û°¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -5139,7 +4383,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_ENSLAVE_UNDEAD:
+       case 7:
 #ifdef JP
                if (name) return "¥¢¥ó¥Ç¥Ã¥É½¾Â°";
                if (desc) return "¥¢¥ó¥Ç¥Ã¥É1ÂΤò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -5162,7 +4406,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_ORB_OF_ENTROPY:
+       case 8:
 #ifdef JP
                if (name) return "¥¨¥ó¥È¥í¥Ô¡¼¤Îµå";
                if (desc) return "À¸Ì¿¤Î¤¢¤ë¼Ô¤Ë¸ú²Ì¤Î¤¢¤ëµå¤òÊü¤Ä¡£";
@@ -5196,7 +4440,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_NETHER_BOLT:
+       case 9:
 #ifdef JP
                if (name) return "ÃϹö¤ÎÌð";
                if (desc) return "ÃϹö¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
@@ -5220,7 +4464,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_CLOUD_KILL:
+       case 10:
 #ifdef JP
                if (name) return "»¦Ù¤±À";
                if (desc) return "¼«Ê¬¤òÃæ¿´¤È¤·¤¿ÆǤεå¤òȯÀ¸¤µ¤»¤ë¡£";
@@ -5242,7 +4486,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_GENOCIDE_ONE:
+       case 11:
 #ifdef JP
                if (name) return "¥â¥ó¥¹¥¿¡¼¾ÃÌÇ";
                if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò¾Ã¤·µî¤ë¡£·Ð¸³Ãͤ䥢¥¤¥Æ¥à¤Ï¼ê¤ËÆþ¤é¤Ê¤¤¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -5265,7 +4509,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_POISON_BRANDING:
+       case 12:
 #ifdef JP
                if (name) return "ÆǤοÏ";
                if (desc) return "Éð´ï¤ËÆǤΰÀ­¤ò¤Ä¤±¤ë¡£";
@@ -5282,7 +4526,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_VAMPIRIC_DRAIN:
+       case 13:
 #ifdef JP
                if (name) return "µÛ·ì¥É¥ì¥¤¥ó";
                if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤ«¤éÀ¸Ì¿ÎϤòµÛ¤¤¤È¤ë¡£µÛ¤¤¤È¤Ã¤¿À¸Ì¿ÎϤˤè¤Ã¤ÆËþÊ¢ÅÙ¤¬¾å¤¬¤ë¡£";
@@ -5332,7 +4576,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_ANIMATE_DEAD:
+       case 14:
 #ifdef JP
                if (name) return "È¿º²¤Î½Ñ";
                if (desc) return "¼þ°Ï¤Î»àÂΤä¹ü¤òÀ¸¤­ÊÖ¤¹¡£";
@@ -5349,7 +4593,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_GENOCIDE:
+       case 15:
 #ifdef JP
                if (name) return "Ëõ»¦";
                if (desc) return "»ØÄꤷ¤¿Ê¸»ú¤Î¥â¥ó¥¹¥¿¡¼¤ò¸½ºß¤Î³¬¤«¤é¾Ã¤·µî¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -5370,7 +4614,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_BERSERK:
+       case 16:
 #ifdef JP
                if (name) return "¶¸Àï»Î²½";
                if (desc) return "¶¸Àï»Î²½¤·¡¢¶²Éݤò½üµî¤¹¤ë¡£";
@@ -5393,7 +4637,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_INVOKE_SPIRITS:
+       case 17:
 #ifdef JP
                if (name) return "°­Î´­";
                if (desc) return "¥é¥ó¥À¥à¤ÇÍÍ¡¹¤Ê¸ú²Ì¤¬µ¯¤³¤ë¡£";
@@ -5414,7 +4658,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_DARK_BOLT:
+       case 18:
 #ifdef JP
                if (name) return "°Å¹õ¤ÎÌð";
                if (desc) return "°Å¹õ¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
@@ -5438,7 +4682,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_BATTLE_FRENZY:
+       case 19:
 #ifdef JP
                if (name) return "¶¸ÍðÀï»Î";
                if (desc) return "¶¸Àï»Î²½¤·¡¢¶²Éݤò½üµî¤·¡¢²Ã®¤¹¤ë¡£";
@@ -5464,7 +4708,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_VAMPIRIC_BRANDING:
+       case 20:
 #ifdef JP
                if (name) return "µÛ·ì¤Î¿Ï";
                if (desc) return "Éð´ï¤ËµÛ·ì¤Î°À­¤ò¤Ä¤±¤ë¡£";
@@ -5481,7 +4725,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_VAMPIRISM_TRUE:
+       case 21:
 #ifdef JP
                if (name) return "¿¿¡¦µÛ·ì";
                if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤ«¤éÀ¸Ì¿ÎϤòµÛ¤¤¤È¤ë¡£µÛ¤¤¤È¤Ã¤¿À¸Ì¿ÎϤˤè¤Ã¤ÆÂÎÎϤ¬²óÉü¤¹¤ë¡£";
@@ -5513,7 +4757,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_NETHER_WAVE:
+       case 22:
 #ifdef JP
                if (name) return "»à¤Î¸Àº²";
                if (desc) return "»ë³¦Æâ¤ÎÀ¸Ì¿¤Î¤¢¤ë¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
@@ -5534,7 +4778,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_DARKNESS_STORM:
+       case 23:
 #ifdef JP
                if (name) return "°Å¹õ¤ÎÍò";
                if (desc) return "µðÂç¤Ê°Å¹õ¤Îµå¤òÊü¤Ä¡£";
@@ -5558,7 +4802,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_DEATH_RAY:
+       case 24:
 #ifdef JP
                if (name) return "»à¤Î¸÷Àþ";
                if (desc) return "»à¤Î¸÷Àþ¤òÊü¤Ä¡£";
@@ -5577,7 +4821,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_RAISE_THE_DEAD:
+       case 25:
 #ifdef JP
                if (name) return "»à¼Ô¾¤´­";
                if (desc) return "1ÂΤΥ¢¥ó¥Ç¥Ã¥É¤ò¾¤´­¤¹¤ë¡£";
@@ -5633,7 +4877,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_ESOTERIA:
+       case 26:
 #ifdef JP
                if (name) return "»à¼Ô¤ÎÈëÅÁ";
                if (desc) return "¥¢¥¤¥Æ¥à¤ò1¤Ä¼±Ê̤¹¤ë¡£¥ì¥Ù¥ë¤¬¹â¤¤¤È¥¢¥¤¥Æ¥à¤ÎǽÎϤò´°Á´¤ËÃΤ뤳¤È¤¬¤Ç¤­¤ë¡£";
@@ -5657,7 +4901,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_POLYMORPH_VAMPIRE:
+       case 27:
 #ifdef JP
                if (name) return "µÛ·ìµ´ÊѲ½";
                if (desc) return "°ìÄê»þ´Ö¡¢µÛ·ìµ´¤ËÊѲ½¤¹¤ë¡£ÊѲ½¤·¤Æ¤¤¤ë´Ö¤ÏËÜÍè¤Î¼ï²¤ÎǽÎϤò¼º¤¤¡¢Âå¤ï¤ê¤ËµÛ·ìµ´¤È¤·¤Æ¤ÎǽÎϤòÆÀ¤ë¡£";
@@ -5678,7 +4922,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_RESTORE_LIFE:
+       case 28:
 #ifdef JP
                if (name) return "À¸Ì¿ÎÏÉü³è";
                if (desc) return "¼º¤Ã¤¿·Ð¸³Ãͤò²óÉü¤¹¤ë¡£";
@@ -5695,7 +4939,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_MASS_GENOCIDE:
+       case 29:
 #ifdef JP
                if (name) return "¼þÊÕËõ»¦";
                if (desc) return "¼«Ê¬¤Î¼þ°Ï¤Ë¤¤¤ë¥â¥ó¥¹¥¿¡¼¤ò¸½ºß¤Î³¬¤«¤é¾Ã¤·µî¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -5716,7 +4960,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_HELLFIRE:
+       case 30:
 #ifdef JP
                if (name) return "ÃϹö¤Î¹å²Ð";
                if (desc) return "¼Ù°­¤ÊÎϤò»ý¤ÄÊõ¼î¤òÊü¤Ä¡£Á±Îɤʥâ¥ó¥¹¥¿¡¼¤Ë¤ÏÂ礭¤Ê¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
@@ -5745,7 +4989,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_WRAITHFORM:
+       case 31:
 #ifdef JP
                if (name) return "Í©Âβ½";
                if (desc) return "°ìÄê»þ´Ö¡¢ÊɤòÄ̤êÈ´¤±¤ë¤³¤È¤¬¤Ç¤­¼õ¤±¤ë¥À¥á¡¼¥¸¤¬·Ú¸º¤µ¤ì¤ëÍ©ÂΤξõÂÖ¤ËÊѿȤ¹¤ë¡£";
@@ -5765,8 +5009,32 @@ cptr do_spell(int realm, int spell, int mode)
                        }
                }
                break;
+       }
+
+       return "";
+}
+
+
+static cptr do_trump_spell(int spell, int mode)
+{
+       bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
+       bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
+       bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
+       bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
+       bool fail = (mode == SPELL_FAIL) ? TRUE : FALSE;
+
+#ifdef JP
+       static const char s_random[] = "¥é¥ó¥À¥à";
+#else
+       static const char s_random[] = "random";
+#endif
+
+       int dir;
+       int plev = p_ptr->lev;
 
-       case TRUM_SPEL_PHASE_DOOR:
+       switch (spell)
+       {
+       case 0:
 #ifdef JP
                if (name) return "¥·¥ç¡¼¥È¡¦¥Æ¥ì¥Ý¡¼¥È";
                if (desc) return "¶áµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
@@ -5782,12 +5050,12 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cast)
                        {
-                               teleport_player(range, FALSE);
+                               teleport_player(range, 0L);
                        }
                }
                break;
 
-       case TRUM_SPEL_TRUMP_SPIDERS:
+       case 1:
 #ifdef JP
                if (name) return "ÃØéá¤Î¥«¡¼¥É";
                if (desc) return "ÃØéá¤ò¾¤´­¤¹¤ë¡£";
@@ -5820,7 +5088,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_SHUFFLE:
+       case 2:
 #ifdef JP
                if (name) return "¥·¥ã¥Ã¥Õ¥ë";
                if (desc) return "¥«¡¼¥É¤ÎÀꤤ¤ò¤¹¤ë¡£";
@@ -5839,7 +5107,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_RESET_RECALL:
+       case 3:
 #ifdef JP
                if (name) return "¥Õ¥í¥¢¡¦¥ê¥»¥Ã¥È";
                if (desc) return "ºÇ¿¼³¬¤òÊѹ¹¤¹¤ë¡£";
@@ -5856,7 +5124,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TELEPORT:
+       case 4:
 #ifdef JP
                if (name) return "¥Æ¥ì¥Ý¡¼¥È";
                if (desc) return "±óµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
@@ -5872,12 +5140,12 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cast)
                        {
-                               teleport_player(range, FALSE);
+                               teleport_player(range, 0L);
                        }
                }
                break;
 
-       case TRUM_SPEL_TRUMP_SPYING:
+       case 5:
 #ifdef JP
                if (name) return "´¶ÃΤΥ«¡¼¥É";
                if (desc) return "°ìÄê»þ´Ö¡¢¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤòÆÀ¤ë¡£";
@@ -5899,7 +5167,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TELEPORT_AWAY:
+       case 6:
 #ifdef JP
                if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥â¥ó¥¹¥¿¡¼";
                if (desc) return "¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¥Ó¡¼¥à¤òÊü¤Ä¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -5922,7 +5190,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TRUMP_ANIMALS:
+       case 7:
 #ifdef JP
                if (name) return "ưʪ¤Î¥«¡¼¥É";
                if (desc) return "1ÂΤÎưʪ¤ò¾¤´­¤¹¤ë¡£";
@@ -5957,7 +5225,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TRUMP_REACH:
+       case 8:
 #ifdef JP
                if (name) return "°ÜÆ°¤Î¥«¡¼¥É";
                if (desc) return "¥¢¥¤¥Æ¥à¤ò¼«Ê¬¤Î­¸µ¤Ø°ÜÆ°¤µ¤»¤ë¡£";
@@ -5980,7 +5248,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TRUMP_KAMIKAZE:
+       case 9:
 #ifdef JP
                if (name) return "¥«¥ß¥«¥¼¤Î¥«¡¼¥É";
                if (desc) return "Ê£¿ô¤ÎÇúȯ¤¹¤ë¥â¥ó¥¹¥¿¡¼¤ò¾¤´­¤¹¤ë¡£";
@@ -6034,7 +5302,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_PHANTASMAL_SERVANT:
+       case 10:
 #ifdef JP
                if (name) return "¸¸Î´­";
                if (desc) return "1ÂΤÎÍ©Îî¤ò¾¤´­¤¹¤ë¡£";
@@ -6061,7 +5329,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_HASTE_MONSTER:
+       case 11:
 #ifdef JP
                if (name) return "¥¹¥Ô¡¼¥É¡¦¥â¥ó¥¹¥¿¡¼";
                if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò²Ã®¤µ¤»¤ë¡£";
@@ -6086,12 +5354,12 @@ cptr do_spell(int realm, int spell, int mode)
 
                                if (!result) return NULL;
 
-                               speed_monster(dir);
+                               speed_monster(dir, plev);
                        }
                }
                break;
 
-       case TRUM_SPEL_TELEPORT_LEVEL:
+       case 12:
 #ifdef JP
                if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥ì¥Ù¥ë";
                if (desc) return "½Ö»þ¤Ë¾å¤«²¼¤Î³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ë¡£";
@@ -6113,7 +5381,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_DIMENSION_DOOR:
+       case 13:
 #ifdef JP
                if (name) return "¼¡¸µ¤ÎÈâ";
                if (desc) return "ûµ÷Î¥Æâ¤Î»ØÄꤷ¤¿¾ì½ê¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ë¡£";
@@ -6140,7 +5408,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_WORD_OF_RECALL:
+       case 14:
 #ifdef JP
                if (name) return "µ¢´Ô¤Î¼öʸ";
                if (desc) return "ÃϾå¤Ë¤¤¤ë¤È¤­¤Ï¥À¥ó¥¸¥ç¥ó¤ÎºÇ¿¼³¬¤Ø¡¢¥À¥ó¥¸¥ç¥ó¤Ë¤¤¤ë¤È¤­¤ÏÃϾå¤Ø¤È°ÜÆ°¤¹¤ë¡£";
@@ -6162,7 +5430,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_BANISH:
+       case 15:
 #ifdef JP
                if (name) return "²øʪÄÉÊü";
                if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -6183,7 +5451,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_SWAP_POSITION:
+       case 16:
 #ifdef JP
                if (name) return "°ÌÃÖ¸ò´¹¤Î¥«¡¼¥É";
                if (desc) return "1ÂΤΥâ¥ó¥¹¥¿¡¼¤È°ÌÃÖ¤ò¸ò´¹¤¹¤ë¡£";
@@ -6212,7 +5480,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TRUMP_UNDEAD:
+       case 17:
 #ifdef JP
                if (name) return "¥¢¥ó¥Ç¥Ã¥É¤Î¥«¡¼¥É";
                if (desc) return "1ÂΤΥ¢¥ó¥Ç¥Ã¥É¤ò¾¤´­¤¹¤ë¡£";
@@ -6245,7 +5513,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TRUMP_REPTILES:
+       case 18:
 #ifdef JP
                if (name) return "à¨ÃîÎà¤Î¥«¡¼¥É";
                if (desc) return "1ÂΤΥҥɥé¤ò¾¤´­¤¹¤ë¡£";
@@ -6278,7 +5546,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TRUMP_MONSTERS:
+       case 19:
 #ifdef JP
                if (name) return "¥â¥ó¥¹¥¿¡¼¤Î¥«¡¼¥É";
                if (desc) return "Ê£¿ô¤Î¥â¥ó¥¹¥¿¡¼¤ò¾¤´­¤¹¤ë¡£";
@@ -6319,7 +5587,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TRUMP_HOUNDS:
+       case 20:
 #ifdef JP
                if (name) return "¥Ï¥¦¥ó¥É¤Î¥«¡¼¥É";
                if (desc) return "1¥°¥ë¡¼¥×¤Î¥Ï¥¦¥ó¥É¤ò¾¤´­¤¹¤ë¡£";
@@ -6352,7 +5620,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TRUMP_BRANDING:
+       case 21:
 #ifdef JP
                if (name) return "¥È¥é¥ó¥×¤Î¿Ï";
                if (desc) return "Éð´ï¤Ë¥È¥é¥ó¥×¤Î°À­¤ò¤Ä¤±¤ë¡£";
@@ -6369,7 +5637,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_LIVING_TRUMP:
+       case 22:
 #ifdef JP
                if (name) return "¿Í´Ö¥È¥é¥ó¥×";
                if (desc) return "¥é¥ó¥À¥à¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ëÆÍÁ³ÊÑ°Û¤«¡¢¼«Ê¬¤Î°Õ»×¤Ç¥Æ¥ì¥Ý¡¼¥È¤¹¤ëÆÍÁ³ÊÑ°Û¤¬¿È¤Ë¤Ä¤¯¡£";
@@ -6403,7 +5671,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TRUMP_CYBERDEMON:
+       case 23:
 #ifdef JP
                if (name) return "¥µ¥¤¥Ð¡¼¥Ç¡¼¥â¥ó¤Î¥«¡¼¥É";
                if (desc) return "1ÂΤΥµ¥¤¥Ð¡¼¥Ç¡¼¥â¥ó¤ò¾¤´­¤¹¤ë¡£";
@@ -6436,7 +5704,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TRUMP_DIVINATION:
+       case 24:
 #ifdef JP
                if (name) return "ͽ¸«¤Î¥«¡¼¥É";
                if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¡¢æ«¡¢Èâ¡¢³¬ÃÊ¡¢ºâÊõ¡¢¤½¤·¤Æ¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
@@ -6457,7 +5725,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TRUMP_LORE:
+       case 25:
 #ifdef JP
                if (name) return "Ãμ±¤Î¥«¡¼¥É";
                if (desc) return "¥¢¥¤¥Æ¥à¤Î»ý¤ÄǽÎϤò´°Á´¤ËÃΤ롣";
@@ -6474,7 +5742,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_HEAL_MONSTER:
+       case 26:
 #ifdef JP
                if (name) return "²óÉü¥â¥ó¥¹¥¿¡¼";
                if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤÎÂÎÎϤò²óÉü¤µ¤»¤ë¡£";
@@ -6508,7 +5776,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TRUMP_DRAGON:
+       case 27:
 #ifdef JP
                if (name) return "¥É¥é¥´¥ó¤Î¥«¡¼¥É";
                if (desc) return "1ÂΤΥɥ饴¥ó¤ò¾¤´­¤¹¤ë¡£";
@@ -6541,7 +5809,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TRUMP_METEOR:
+       case 28:
 #ifdef JP
                if (name) return "ð¨ÀФΥ«¡¼¥É";
                if (desc) return "¼«Ê¬¤Î¼þÊÕ¤Ëð¨ÀФòÍî¤È¤¹¡£";
@@ -6563,7 +5831,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TRUMP_DEMON:
+       case 29:
 #ifdef JP
                if (name) return "¥Ç¡¼¥â¥ó¤Î¥«¡¼¥É";
                if (desc) return "1ÂΤΰ­Ëâ¤ò¾¤´­¤¹¤ë¡£";
@@ -6596,7 +5864,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TRUMP_GREATER_UNDEAD:
+       case 30:
 #ifdef JP
                if (name) return "ÃϹö¤Î¥«¡¼¥É";
                if (desc) return "1ÂΤξåµé¥¢¥ó¥Ç¥Ã¥É¤ò¾¤´­¤¹¤ë¡£";
@@ -6629,7 +5897,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TRUMP_ANCIENT_DRAGON:
+       case 31:
 #ifdef JP
                if (name) return "¸ÅÂå¥É¥é¥´¥ó¤Î¥«¡¼¥É";
                if (desc) return "1ÂΤθÅÂå¥É¥é¥´¥ó¤ò¾¤´­¤¹¤ë¡£";
@@ -6669,8 +5937,25 @@ cptr do_spell(int realm, int spell, int mode)
                        }
                }
                break;
+       }
+
+       return "";
+}
 
-       case ARCA_SPEL_ZAP:
+
+static cptr do_arcane_spell(int spell, int mode)
+{
+       bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
+       bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
+       bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
+       bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
+
+       int dir;
+       int plev = p_ptr->lev;
+
+       switch (spell)
+       {
+       case 0:
 #ifdef JP
                if (name) return "ÅÅ·â";
                if (desc) return "ÅÅ·â¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
@@ -6694,7 +5979,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_WIZARD_LOCK:
+       case 1:
 #ifdef JP
                if (name) return "ËâË¡¤Î»Ü¾û";
                if (desc) return "Èâ¤Ë¸°¤ò¤«¤±¤ë¡£";
@@ -6713,7 +5998,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_DETECT_INVISIBILITY:
+       case 2:
 #ifdef JP
                if (name) return "Æ©ÌÀÂδ¶ÃÎ";
                if (desc) return "¶á¤¯¤ÎÆ©ÌÀ¤Ê¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
@@ -6734,7 +6019,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_DETECT_MONSTERS:
+       case 3:
 #ifdef JP
                if (name) return "¥â¥ó¥¹¥¿¡¼´¶ÃÎ";
                if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¸«¤¨¤ë¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
@@ -6755,7 +6040,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_BLINK:
+       case 4:
 #ifdef JP
                if (name) return "¥·¥ç¡¼¥È¡¦¥Æ¥ì¥Ý¡¼¥È";
                if (desc) return "¶áµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
@@ -6771,12 +6056,12 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cast)
                        {
-                               teleport_player(range, FALSE);
+                               teleport_player(range, 0L);
                        }
                }
                break;
 
-       case ARCA_SPEL_LIGHT_AREA:
+       case 5:
 #ifdef JP
                if (name) return "¥é¥¤¥È¡¦¥¨¥ê¥¢";
                if (desc) return "¸÷¸»¤¬¾È¤é¤·¤Æ¤¤¤ëÈϰϤ«Éô²°Á´ÂΤò±Êµ×¤ËÌÀ¤ë¤¯¤¹¤ë¡£";
@@ -6799,7 +6084,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_TRAP_AND_DOOR_DESTRUCTION:
+       case 6:
 #ifdef JP
                if (name) return "櫤ÈÈâ Ç˲õ";
                if (desc) return "°ìľÀþ¾å¤ÎÁ´¤Æ¤Î櫤ÈÈâ¤òÇ˲õ¤¹¤ë¡£";
@@ -6818,7 +6103,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_CURE_LIGHT_WOUNDS:
+       case 7:
 #ifdef JP
                if (name) return "·Ú½ý¤Î¼£Ìþ";
                if (desc) return "²ø²æ¤ÈÂÎÎϤò¾¯¤·²óÉü¤µ¤»¤ë¡£";
@@ -6841,7 +6126,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_DETECT_DOORS_AND_TRAPS:
+       case 8:
 #ifdef JP
                if (name) return "櫤ÈÈâ ´¶ÃÎ";
                if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î櫤ÈÈâ¤È³¬Ãʤò´¶ÃΤ¹¤ë¡£";
@@ -6864,7 +6149,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_PHLOGISTON:
+       case 9:
 #ifdef JP
                if (name) return "dzÁÇ";
                if (desc) return "¸÷¸»¤ËdzÎÁ¤òÊäµë¤¹¤ë¡£";
@@ -6881,7 +6166,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_DETECT_TREASURE:
+       case 10:
 #ifdef JP
                if (name) return "ºâÊõ´¶ÃÎ";
                if (desc) return "¶á¤¯¤ÎºâÊõ¤ò´¶ÃΤ¹¤ë¡£";
@@ -6903,7 +6188,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_DETECT_ENCHANTMENT:
+       case 11:
 #ifdef JP
                if (name) return "ËâË¡ ´¶ÃÎ";
                if (desc) return "¶á¤¯¤ÎËâË¡¤¬¤«¤«¤Ã¤¿¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
@@ -6924,7 +6209,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_DETECT_OBJECTS:
+       case 12:
 #ifdef JP
                if (name) return "¥¢¥¤¥Æ¥à´¶ÃÎ";
                if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
@@ -6945,7 +6230,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_CURE_POISON:
+       case 13:
 #ifdef JP
                if (name) return "²òÆÇ";
                if (desc) return "ÆǤòÂÎÆ⤫¤é´°Á´¤Ë¼è¤ê½ü¤¯¡£";
@@ -6962,7 +6247,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_RESIST_COLD:
+       case 14:
 #ifdef JP
                if (name) return "ÂÑÎä";
                if (desc) return "°ìÄê»þ´Ö¡¢Î䵤¤Ø¤ÎÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
@@ -6983,7 +6268,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_RESIST_FIRE:
+       case 15:
 #ifdef JP
                if (name) return "ÂѲÐ";
                if (desc) return "°ìÄê»þ´Ö¡¢±ê¤Ø¤ÎÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
@@ -7004,7 +6289,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_RESIST_LIGHTNING:
+       case 16:
 #ifdef JP
                if (name) return "ÂÑÅÅ";
                if (desc) return "°ìÄê»þ´Ö¡¢ÅÅ·â¤Ø¤ÎÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
@@ -7025,7 +6310,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_RESIST_ACID:
+       case 17:
 #ifdef JP
                if (name) return "ÂÑ»À";
                if (desc) return "°ìÄê»þ´Ö¡¢»À¤Ø¤ÎÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
@@ -7046,7 +6331,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_CURE_MEDIUM_WOUNDS:
+       case 18:
 #ifdef JP
                if (name) return "½Å½ý¤Î¼£Ìþ";
                if (desc) return "²ø²æ¤ÈÂÎÎϤòÃæÄøÅÙ²óÉü¤µ¤»¤ë¡£";
@@ -7069,7 +6354,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_TELEPORT:
+       case 19:
 #ifdef JP
                if (name) return "¥Æ¥ì¥Ý¡¼¥È";
                if (desc) return "±óµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
@@ -7085,12 +6370,12 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cast)
                        {
-                               teleport_player(range, FALSE);
+                               teleport_player(range, 0L);
                        }
                }
                break;
 
-       case ARCA_SPEL_IDENTIFY:
+       case 20:
 #ifdef JP
                if (name) return "´ÕÄê";
                if (desc) return "¥¢¥¤¥Æ¥à¤ò¼±Ê̤¹¤ë¡£";
@@ -7107,7 +6392,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_STONE_TO_MUD:
+       case 21:
 #ifdef JP
                if (name) return "´äÀÐÍϲò";
                if (desc) return "ÊɤòÍϤ«¤·¤Æ¾²¤Ë¤¹¤ë¡£";
@@ -7127,12 +6412,12 @@ cptr do_spell(int realm, int spell, int mode)
                        {
                                if (!get_aim_dir(&dir)) return NULL;
 
-                               wall_to_mud(dir);
+                               wall_to_mud(dir, 20 + randint1(30));
                        }
                }
                break;
 
-       case ARCA_SPEL_RAY_OF_LIGHT:
+       case 22:
 #ifdef JP
                if (name) return "Á®¸÷";
                if (desc) return "¸÷Àþ¤òÊü¤Ä¡£¸÷¤ê¤ò·ù¤¦¥â¥ó¥¹¥¿¡¼¤Ë¸ú²Ì¤¬¤¢¤ë¡£";
@@ -7157,12 +6442,12 @@ cptr do_spell(int realm, int spell, int mode)
                                msg_print("A line of light appears.");
 #endif
 
-                               lite_line(dir);
+                               lite_line(dir, damroll(6, 8));
                        }
                }
                break;
 
-       case ARCA_SPEL_SATISFY_HUNGER:
+       case 23:
 #ifdef JP
                if (name) return "¶õÊ¢½¼Â­";
                if (desc) return "ËþÊ¢¤Ë¤¹¤ë¡£";
@@ -7179,7 +6464,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_SEE_INVISIBLE:
+       case 24:
 #ifdef JP
                if (name) return "Æ©ÌÀ»ëǧ";
                if (desc) return "°ìÄê»þ´Ö¡¢Æ©ÌÀ¤Ê¤â¤Î¤¬¸«¤¨¤ë¤è¤¦¤Ë¤Ê¤ë¡£";
@@ -7200,7 +6485,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_CONJURE_ELEMENTAL:
+       case 25:
 #ifdef JP
                if (name) return "¥¨¥ì¥á¥ó¥¿¥ë¾¤´­";
                if (desc) return "1ÂΤΥ¨¥ì¥á¥ó¥¿¥ë¤ò¾¤´­¤¹¤ë¡£";
@@ -7224,7 +6509,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_TELEPORT_LEVEL:
+       case 26:
 #ifdef JP
                if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥ì¥Ù¥ë";
                if (desc) return "½Ö»þ¤Ë¾å¤«²¼¤Î³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ë¡£";
@@ -7246,7 +6531,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_TELEPORT_AWAY:
+       case 27:
 #ifdef JP
                if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥â¥ó¥¹¥¿¡¼";
                if (desc) return "¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¥Ó¡¼¥à¤òÊü¤Ä¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -7269,7 +6554,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_ELEMENTAL_BALL:
+       case 28:
 #ifdef JP
                if (name) return "¸µÁǤεå";
                if (desc) return "±ê¡¢ÅÅ·â¡¢Î䵤¡¢»À¤Î¤É¤ì¤«¤Îµå¤òÊü¤Ä¡£";
@@ -7303,7 +6588,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_DETECTION:
+       case 29:
 #ifdef JP
                if (name) return "Á´´¶ÃÎ";
                if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¡¢æ«¡¢Èâ¡¢³¬ÃÊ¡¢ºâÊõ¡¢¤½¤·¤Æ¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
@@ -7324,7 +6609,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_WORD_OF_RECALL:
+       case 30:
 #ifdef JP
                if (name) return "µ¢´Ô¤Î¼öʸ";
                if (desc) return "ÃϾå¤Ë¤¤¤ë¤È¤­¤Ï¥À¥ó¥¸¥ç¥ó¤ÎºÇ¿¼³¬¤Ø¡¢¥À¥ó¥¸¥ç¥ó¤Ë¤¤¤ë¤È¤­¤ÏÃϾå¤Ø¤È°ÜÆ°¤¹¤ë¡£";
@@ -7346,7 +6631,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_CLAIRVOYANCE:
+       case 31:
 #ifdef JP
                if (name) return "ÀéΤ´ã";
                if (desc) return "¤½¤Î³¬Á´ÂΤò±Êµ×¤Ë¾È¤é¤·¡¢¥À¥ó¥¸¥ç¥óÆ⤹¤Ù¤Æ¤Î¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£¤µ¤é¤Ë¡¢°ìÄê»þ´Ö¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤòÆÀ¤ë¡£";
@@ -7375,8 +6660,24 @@ cptr do_spell(int realm, int spell, int mode)
                        }
                }
                break;
+       }
+
+       return "";
+}
+
+
+static cptr do_craft_spell(int spell, int mode)
+{
+       bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
+       bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
+       bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
+       bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
+
+       int plev = p_ptr->lev;
 
-       case CRAF_SPEL_INFRAVISION:
+       switch (spell)
+       {
+       case 0:
 #ifdef JP
                if (name) return "ÀÖ³°Àþ»ëÎÏ";
                if (desc) return "°ìÄê»þ´Ö¡¢ÀÖ³°Àþ»ëÎϤ¬Áý¶¯¤µ¤ì¤ë¡£";
@@ -7397,7 +6698,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_REGENERATION:
+       case 1:
 #ifdef JP
                if (name) return "²óÉüÎ϶¯²½";
                if (desc) return "°ìÄê»þ´Ö¡¢²óÉüÎϤ¬Áý¶¯¤µ¤ì¤ë¡£";
@@ -7418,7 +6719,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_SATISFY_HUNGER:
+       case 2:
 #ifdef JP
                if (name) return "¶õÊ¢½¼Â­";
                if (desc) return "ËþÊ¢¤Ë¤Ê¤ë¡£";
@@ -7435,7 +6736,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_RESIST_COLD:
+       case 3:
 #ifdef JP
                if (name) return "ÂÑÎ䵤";
                if (desc) return "°ìÄê»þ´Ö¡¢Î䵤¤Ø¤ÎÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
@@ -7456,7 +6757,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_RESIST_FIRE:
+       case 4:
 #ifdef JP
                if (name) return "ÂѲбê";
                if (desc) return "°ìÄê»þ´Ö¡¢±ê¤Ø¤ÎÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
@@ -7477,7 +6778,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_HEROISM:
+       case 5:
 #ifdef JP
                if (name) return "»Îµ¤¹âÍÈ";
                if (desc) return "°ìÄê»þ´Ö¡¢¥Ò¡¼¥í¡¼µ¤Ê¬¤Ë¤Ê¤ë¡£";
@@ -7500,7 +6801,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_RESIST_LIGHTNING:
+       case 6:
 #ifdef JP
                if (name) return "ÂÑÅÅ·â";
                if (desc) return "°ìÄê»þ´Ö¡¢ÅÅ·â¤Ø¤ÎÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
@@ -7521,7 +6822,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_RESIST_ACID:
+       case 7:
 #ifdef JP
                if (name) return "ÂÑ»À";
                if (desc) return "°ìÄê»þ´Ö¡¢»À¤Ø¤ÎÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
@@ -7542,7 +6843,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_SEE_INVISIBILITY:
+       case 8:
 #ifdef JP
                if (name) return "Æ©ÌÀ»ëǧ";
                if (desc) return "°ìÄê»þ´Ö¡¢Æ©ÌÀ¤Ê¤â¤Î¤¬¸«¤¨¤ë¤è¤¦¤Ë¤Ê¤ë¡£";
@@ -7563,7 +6864,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_REMOVE_CURSE:
+       case 9:
 #ifdef JP
                if (name) return "²ò¼ö";
                if (desc) return "¥¢¥¤¥Æ¥à¤Ë¤«¤«¤Ã¤¿¼å¤¤¼ö¤¤¤ò²ò½ü¤¹¤ë¡£";
@@ -7587,7 +6888,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_RESIST_POISON:
+       case 10:
 #ifdef JP
                if (name) return "ÂÑÆÇ";
                if (desc) return "°ìÄê»þ´Ö¡¢ÆǤؤÎÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
@@ -7608,7 +6909,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_BERSERK:
+       case 11:
 #ifdef JP
                if (name) return "¶¸Àï»Î²½";
                if (desc) return "¶¸Àï»Î²½¤·¡¢¶²Éݤò½üµî¤¹¤ë¡£";
@@ -7631,7 +6932,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_SELF_KNOWLEDGE:
+       case 12:
 #ifdef JP
                if (name) return "¼«¸ÊʬÀÏ";
                if (desc) return "¸½ºß¤Î¼«Ê¬¤Î¾õÂÖ¤ò´°Á´¤ËÃΤ롣";
@@ -7648,7 +6949,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_PROTECTION_FROM_EVIL:
+       case 13:
 #ifdef JP
                if (name) return "Âмٰ­·ë³¦";
                if (desc) return "¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤Î¹¶·â¤òËɤ°¥Ð¥ê¥¢¤òÄ¥¤ë¡£";
@@ -7670,7 +6971,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_CURE:
+       case 14:
 #ifdef JP
                if (name) return "Ìþ¤·";
                if (desc) return "ÆÇ¡¢Û¯Û°¾õÂÖ¡¢Éé½ý¤òÁ´²÷¤µ¤»¡¢¸¸³Ð¤òľ¤¹¡£";
@@ -7690,7 +6991,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_MANA_BRANDING:
+       case 15:
 #ifdef JP
                if (name) return "ËâË¡·õ";
                if (desc) return "°ìÄê»þ´Ö¡¢Éð´ï¤ËÎ䵤¡¢±ê¡¢ÅÅ·â¡¢»À¡¢ÆǤΤ¤¤º¤ì¤«¤Î°À­¤ò¤Ä¤±¤ë¡£Éð´ï¤ò»ý¤¿¤Ê¤¤¤È»È¤¨¤Ê¤¤¡£";
@@ -7711,7 +7012,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_TELEPATHY:
+       case 16:
 #ifdef JP
                if (name) return "¥Æ¥ì¥Ñ¥·¡¼";
                if (desc) return "°ìÄê»þ´Ö¡¢¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤòÆÀ¤ë¡£";
@@ -7733,7 +7034,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_STONE_SKIN:
+       case 17:
 #ifdef JP
                if (name) return "È©Àв½";
                if (desc) return "°ìÄê»þ´Ö¡¢AC¤ò¾å¾º¤µ¤»¤ë¡£";
@@ -7755,7 +7056,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_RESISTANCE:
+       case 18:
 #ifdef JP
                if (name) return "Á´ÂÑÀ­";
                if (desc) return "°ìÄê»þ´Ö¡¢»À¡¢ÅÅ·â¡¢±ê¡¢Î䵤¡¢ÆǤËÂФ¹¤ëÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
@@ -7780,7 +7081,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_HASTE_SELF:
+       case 19:
 #ifdef JP
                if (name) return "¥¹¥Ô¡¼¥É";
                if (desc) return "°ìÄê»þ´Ö¡¢²Ã®¤¹¤ë¡£";
@@ -7802,7 +7103,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_WALK_THROUGH_WALL:
+       case 20:
 #ifdef JP
                if (name) return "ÊÉÈ´¤±";
                if (desc) return "°ìÄê»þ´Ö¡¢È¾Êª¼Á²½¤·ÊɤòÄ̤êÈ´¤±¤é¤ì¤ë¤è¤¦¤Ë¤Ê¤ë¡£";
@@ -7823,7 +7124,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_POLISH_SHIELD:
+       case 21:
 #ifdef JP
                if (name) return "½âË᤭";
                if (desc) return "½â¤ËÈ¿¼Í¤Î°À­¤ò¤Ä¤±¤ë¡£";
@@ -7840,7 +7141,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_CREATE_GOLEM:
+       case 22:
 #ifdef JP
                if (name) return "¥´¡¼¥ì¥àÀ½Â¤";
                if (desc) return "1ÂΤΥ´¡¼¥ì¥à¤òÀ½Â¤¤¹¤ë¡£";
@@ -7872,7 +7173,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_MAGICAL_ARMOR:
+       case 23:
 #ifdef JP
                if (name) return "ËâË¡¤Î³»";
                if (desc) return "°ìÄê»þ´Ö¡¢ËâË¡ËɸæÎϤÈAC¤¬¾å¤¬¤ê¡¢º®Íð¤ÈÌÕÌܤÎÂÑÀ­¡¢È¿¼ÍǽÎÏ¡¢ËãáãÃΤ餺¡¢ÉâÍ·¤òÆÀ¤ë¡£";
@@ -7893,7 +7194,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_REMOVE_ENCHANTMENT:
+       case 24:
 #ifdef JP
                if (name) return "ÁõÈ÷̵Îϲ½";
                if (desc) return "Éð´ï¡¦Ëɶñ¤Ë¤«¤±¤é¤ì¤¿¤¢¤é¤æ¤ëËâÎϤò´°Á´¤Ë²ò½ü¤¹¤ë¡£";
@@ -7910,7 +7211,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_REMOVE_ALL_CURSE:
+       case 25:
 #ifdef JP
                if (name) return "¼ö¤¤Ê´ºÕ";
                if (desc) return "¥¢¥¤¥Æ¥à¤Ë¤«¤«¤Ã¤¿¶¯ÎϤʼö¤¤¤ò²ò½ü¤¹¤ë¡£";
@@ -7934,7 +7235,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_KNOWLEDGE_TRUE:
+       case 26:
 #ifdef JP
                if (name) return "´°Á´¤Ê¤ëÃμ±";
                if (desc) return "¥¢¥¤¥Æ¥à¤Î»ý¤ÄǽÎϤò´°Á´¤ËÃΤ롣";
@@ -7951,7 +7252,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_ENCHANT_WEAPON:
+       case 27:
 #ifdef JP
                if (name) return "Éð´ï¶¯²½";
                if (desc) return "Éð´ï¤ÎÌ¿ÃæΨ½¤Àµ¤È¥À¥á¡¼¥¸½¤Àµ¤ò¶¯²½¤¹¤ë¡£";
@@ -7968,7 +7269,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_ENCHANT_ARMOR:
+       case 28:
 #ifdef JP
                if (name) return "Ëɶñ¶¯²½";
                if (desc) return "³»¤ÎËɸ潤Àµ¤ò¶¯²½¤¹¤ë¡£";
@@ -7985,7 +7286,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_BRAND_WEAPON:
+       case 29:
 #ifdef JP
                if (name) return "Éð´ï°À­ÉÕÍ¿";
                if (desc) return "Éð´ï¤Ë¥é¥ó¥À¥à¤Ë°À­¤ò¤Ä¤±¤ë¡£";
@@ -8002,7 +7303,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_LIVING_TRUMP:
+       case 30:
 #ifdef JP
                if (name) return "¿Í´Ö¥È¥é¥ó¥×";
                if (desc) return "¥é¥ó¥À¥à¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ëÆÍÁ³ÊÑ°Û¤«¡¢¼«Ê¬¤Î°Õ»×¤Ç¥Æ¥ì¥Ý¡¼¥È¤¹¤ëÆÍÁ³ÊÑ°Û¤¬¿È¤Ë¤Ä¤¯¡£";
@@ -8036,7 +7337,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_IMMUNITY:
+       case 31:
 #ifdef JP
                if (name) return "°À­¤Ø¤ÎÌȱÖ";
                if (desc) return "°ìÄê»þ´Ö¡¢Î䵤¡¢±ê¡¢ÅÅ·â¡¢»À¤Î¤¤¤º¤ì¤«¤ËÂФ¹¤ëÌȱ֤òÆÀ¤ë¡£";
@@ -8056,8 +7357,31 @@ cptr do_spell(int realm, int spell, int mode)
                        }
                }
                break;
+       }
+
+       return "";
+}
+
+
+static cptr do_daemon_spell(int spell, int mode)
+{
+       bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
+       bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
+       bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
+       bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
+
+#ifdef JP
+       static const char s_dam[] = "»½ý:";
+#else
+       static const char s_dam[] = "dam ";
+#endif
 
-       case DAEM_SPEL_MAGIC_MISSILE:
+       int dir;
+       int plev = p_ptr->lev;
+
+       switch (spell)
+       {
+       case 0:
 #ifdef JP
                if (name) return "¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë";
                if (desc) return "¼å¤¤ËâË¡¤ÎÌð¤òÊü¤Ä¡£";
@@ -8081,7 +7405,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_DETECT_UNLIFE:
+       case 1:
 #ifdef JP
                if (name) return "̵À¸Ì¿´¶ÃÎ";
                if (desc) return "¶á¤¯¤ÎÀ¸Ì¿¤Î¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
@@ -8102,7 +7426,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_EVIL_BLESS:
+       case 2:
 #ifdef JP
                if (name) return "¼Ù¤Ê¤ë½ËÊ¡";
                if (desc) return "°ìÄê»þ´Ö¡¢Ì¿ÃæΨ¤ÈAC¤Ë¥Ü¡¼¥Ê¥¹¤òÆÀ¤ë¡£";
@@ -8123,7 +7447,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_RESIST_FIRE:
+       case 3:
 #ifdef JP
                if (name) return "ÂѲбê";
                if (desc) return "°ìÄê»þ´Ö¡¢±ê¤Ø¤ÎÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
@@ -8144,7 +7468,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_HORRIFY:
+       case 4:
 #ifdef JP
                if (name) return "¶²¹²";
                if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò¶²Éݤµ¤»¡¢Û¯Û°¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -8168,7 +7492,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_NETHER_BOLT:
+       case 5:
 #ifdef JP
                if (name) return "ÃϹö¤ÎÌð";
                if (desc) return "ÃϹö¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
@@ -8192,7 +7516,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_SUMMON_MANES:
+       case 6:
 #ifdef JP
                if (name) return "¸ÅÂå¤Î»àÎ´­";
                if (desc) return "¸ÅÂå¤Î»àÎî¤ò¾¤´­¤¹¤ë¡£";
@@ -8216,7 +7540,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_HELLISH_FLAME:
+       case 7:
 #ifdef JP
                if (name) return "ÃϹö¤Î±ë";
                if (desc) return "¼Ù°­¤ÊÎϤò»ý¤Ä¥Ü¡¼¥ë¤òÊü¤Ä¡£Á±Îɤʥâ¥ó¥¹¥¿¡¼¤Ë¤ÏÂ礭¤Ê¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
@@ -8250,7 +7574,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_DOMINATE_DEMON:
+       case 8:
 #ifdef JP
                if (name) return "¥Ç¡¼¥â¥ó»ÙÇÛ";
                if (desc) return "°­Ëâ1ÂΤò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú";
@@ -8273,7 +7597,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_VISION:
+       case 9:
 #ifdef JP
                if (name) return "¥Ó¥¸¥ç¥ó";
                if (desc) return "¼þÊÕ¤ÎÃÏ·Á¤ò´¶ÃΤ¹¤ë¡£";
@@ -8294,7 +7618,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_RESIST_NETHER:
+       case 10:
 #ifdef JP
                if (name) return "ÂÑÃϹö";
                if (desc) return "°ìÄê»þ´Ö¡¢ÃϹö¤Ø¤ÎÂÑÀ­¤òÆÀ¤ë¡£";
@@ -8315,7 +7639,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_PLASMA_BOLT:
+       case 11:
 #ifdef JP
                if (name) return "¥×¥é¥º¥Þ¡¦¥Ü¥ë¥È";
                if (desc) return "¥×¥é¥º¥Þ¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
@@ -8339,7 +7663,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_FIRE_BALL:
+       case 12:
 #ifdef JP
                if (name) return "¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë";
                if (desc) return "±ê¤Îµå¤òÊü¤Ä¡£";
@@ -8363,7 +7687,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_FIRE_BRANDING:
+       case 13:
 #ifdef JP
                if (name) return "±ê¤Î¿Ï";
                if (desc) return "Éð´ï¤Ë±ê¤Î°À­¤ò¤Ä¤±¤ë¡£";
@@ -8380,7 +7704,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_NETHER_BALL:
+       case 14:
 #ifdef JP
                if (name) return "ÃϹöµå";
                if (desc) return "Â礭¤ÊÃϹö¤Îµå¤òÊü¤Ä¡£";
@@ -8404,7 +7728,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_SUMMON_DEMON:
+       case 15:
 #ifdef JP
                if (name) return "¥Ç¡¼¥â¥ó¾¤´­";
                if (desc) return "°­Ëâ1ÂΤò¾¤´­¤¹¤ë¡£";
@@ -8462,7 +7786,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_DEVILISH_EYE:
+       case 16:
 #ifdef JP
                if (name) return "°­Ëâ¤ÎÌÜ";
                if (desc) return "°ìÄê»þ´Ö¡¢¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤòÆÀ¤ë¡£";
@@ -8484,7 +7808,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_DEVIL_CLOAK:
+       case 17:
 #ifdef JP
                if (name) return "°­Ëâ¤Î¥¯¥í¡¼¥¯";
                if (desc) return "¶²Éݤò¼è¤ê½ü¤­¡¢°ìÄê»þ´Ö¡¢±ê¤ÈÎ䵤¤ÎÂÑÀ­¡¢±ê¤Î¥ª¡¼¥é¤òÆÀ¤ë¡£ÂÑÀ­¤ÏÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
@@ -8511,7 +7835,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_THE_FLOW_OF_LAVA:
+       case 18:
 #ifdef JP
                if (name) return "ÍÏ´äή";
                if (desc) return "¼«Ê¬¤òÃæ¿´¤È¤·¤¿±ê¤Îµå¤òºî¤ê½Ð¤·¡¢¾²¤òÍÏ´ä¤ËÊѤ¨¤ë¡£";
@@ -8534,7 +7858,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_PLASMA_BALL:
+       case 19:
 #ifdef JP
                if (name) return "¥×¥é¥º¥Þµå";
                if (desc) return "¥×¥é¥º¥Þ¤Îµå¤òÊü¤Ä¡£";
@@ -8558,7 +7882,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_POLYMORPH_DEMON:
+       case 20:
 #ifdef JP
                if (name) return "°­ËâÊѲ½";
                if (desc) return "°ìÄê»þ´Ö¡¢°­Ëâ¤ËÊѲ½¤¹¤ë¡£ÊѲ½¤·¤Æ¤¤¤ë´Ö¤ÏËÜÍè¤Î¼ï²¤ÎǽÎϤò¼º¤¤¡¢Âå¤ï¤ê¤Ë°­Ëâ¤È¤·¤Æ¤ÎǽÎϤòÆÀ¤ë¡£";
@@ -8579,7 +7903,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_NATHER_WAVE:
+       case 21:
 #ifdef JP
                if (name) return "ÃϹö¤ÎÇÈÆ°";
                if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£Á±Îɤʥâ¥ó¥¹¥¿¡¼¤ËÆäËÂ礭¤Ê¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
@@ -8602,7 +7926,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_KISS_OF_SUCCUBUS:
+       case 22:
 #ifdef JP
                if (name) return "¥µ¥­¥å¥Ð¥¹¤ÎÀÜÊ­";
                if (desc) return "°ø²Ìº®Íð¤Îµå¤òÊü¤Ä¡£";
@@ -8625,7 +7949,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_DOOM_HAND:
+       case 23:
 #ifdef JP
                if (name) return "ÇËÌǤμê";
                if (desc) return "ÇËÌǤμê¤òÊü¤Ä¡£¿©¤é¤Ã¤¿¥â¥ó¥¹¥¿¡¼¤Ï¤½¤Î¤È¤­¤ÎHP¤ÎȾʬÁ°¸å¤Î¥À¥á¡¼¥¸¤ò¼õ¤±¤ë¡£";
@@ -8649,7 +7973,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_RAISE_THE_MORALE:
+       case 24:
 #ifdef JP
                if (name) return "»Îµ¤¹âÍÈ";
                if (desc) return "°ìÄê»þ´Ö¡¢¥Ò¡¼¥í¡¼µ¤Ê¬¤Ë¤Ê¤ë¡£";
@@ -8672,7 +7996,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_IMMORTAL_BODY:
+       case 25:
 #ifdef JP
                if (name) return "ÉÔÌǤÎÆùÂÎ";
                if (desc) return "°ìÄê»þ´Ö¡¢»þ´ÖµÕž¤Ø¤ÎÂÑÀ­¤òÆÀ¤ë¡£";
@@ -8693,7 +8017,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_INSANITY_CIRCLE:
+       case 26:
 #ifdef JP
                if (name) return "¶¸µ¤¤Î±ß´Ä";
                if (desc) return "¼«Ê¬¤òÃæ¿´¤È¤·¤¿¥«¥ª¥¹¤Îµå¡¢º®Íð¤Îµå¤òȯÀ¸¤µ¤»¡¢¶á¤¯¤Î¥â¥ó¥¹¥¿¡¼¤ò̥λ¤¹¤ë¡£";
@@ -8718,7 +8042,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_EXPLODE_PETS:
+       case 27:
 #ifdef JP
                if (name) return "¥Ú¥Ã¥ÈÇúÇË";
                if (desc) return "Á´¤Æ¤Î¥Ú¥Ã¥È¤ò¶¯À©Åª¤ËÇúÇˤµ¤»¤ë¡£";
@@ -8735,7 +8059,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_SUMMON_GREATER_DEMON:
+       case 28:
 #ifdef JP
                if (name) return "¥°¥ì¡¼¥¿¡¼¥Ç¡¼¥â¥ó¾¤´­";
                if (desc) return "¾åµé¥Ç¡¼¥â¥ó¤ò¾¤´­¤¹¤ë¡£¾¤´­¤¹¤ë¤Ë¤Ï¿Í´Ö('p','h','t'¤Çɽ¤µ¤ì¤ë¥â¥ó¥¹¥¿¡¼)¤Î»àÂΤòÊû¤²¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£";
@@ -8752,7 +8076,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_NETHER_STORM:
+       case 29:
 #ifdef JP
                if (name) return "ÃϹöÍò";
                if (desc) return "ĶµðÂç¤ÊÃϹö¤Îµå¤òÊü¤Ä¡£";
@@ -8776,7 +8100,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_BLOODY_CURSE:
+       case 30:
 #ifdef JP
                if (name) return "·ì¤Î¼ö¤¤";
                if (desc) return "¼«Ê¬¤¬¥À¥á¡¼¥¸¤ò¼õ¤±¤ë¤³¤È¤Ë¤è¤Ã¤ÆÂоݤ˼ö¤¤¤ò¤«¤±¡¢¥À¥á¡¼¥¸¤òÍ¿¤¨ÍÍ¡¹¤Ê¸ú²Ì¤ò°ú¤­µ¯¤³¤¹¡£";
@@ -8805,7 +8129,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_POLYMORPH_DEMONLORD:
+       case 31:
 #ifdef JP
                if (name) return "ËⲦÊѲ½";
                if (desc) return "°­Ëâ¤Î²¦¤ËÊѲ½¤¹¤ë¡£ÊѲ½¤·¤Æ¤¤¤ë´Ö¤ÏËÜÍè¤Î¼ï²¤ÎǽÎϤò¼º¤¤¡¢Âå¤ï¤ê¤Ë°­Ëâ¤Î²¦¤È¤·¤Æ¤ÎǽÎϤòÆÀ¡¢ÊɤòÇ˲õ¤·¤Ê¤¬¤éÊ⤯¡£";
@@ -8825,8 +8149,25 @@ cptr do_spell(int realm, int spell, int mode)
                        }
                }
                break;
+       }
+
+       return "";
+}
+
+
+static cptr do_crusade_spell(int spell, int mode)
+{
+       bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
+       bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
+       bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
+       bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
 
-       case CRUS_SPEL_PUNISHMENT:
+       int dir;
+       int plev = p_ptr->lev;
+
+       switch (spell)
+       {
+       case 0:
 #ifdef JP
                if (name) return "Ĩȳ";
                if (desc) return "ÅÅ·â¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
@@ -8850,7 +8191,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_DETECT_EVIL:
+       case 1:
 #ifdef JP
                if (name) return "¼Ù°­Â¸ºß´¶ÃÎ";
                if (desc) return "¶á¤¯¤Î¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
@@ -8871,7 +8212,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_REMOVE_FEAR:
+       case 2:
 #ifdef JP
                if (name) return "¶²Éݽüµî";
                if (desc) return "¶²Éݤò¼è¤ê½ü¤¯¡£";
@@ -8888,7 +8229,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_SCARE_MONSTER:
+       case 3:
 #ifdef JP
                if (name) return "°Ò°µ";
                if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò¶²Éݤµ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -8911,7 +8252,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_SANCTUARY:
+       case 4:
 #ifdef JP
                if (name) return "À»°è";
                if (desc) return "ÎÙÀܤ·¤¿Á´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò̲¤é¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -8932,7 +8273,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_PORTAL:
+       case 5:
 #ifdef JP
                if (name) return "Æþ¸ý";
                if (desc) return "Ãæµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
@@ -8948,12 +8289,12 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cast)
                        {
-                               teleport_player(range, FALSE);
+                               teleport_player(range, 0L);
                        }
                }
                break;
 
-       case CRUS_SPEL_STAR_DUST:
+       case 6:
 #ifdef JP
                if (name) return "¥¹¥¿¡¼¥À¥¹¥È";
                if (desc) return "¥¿¡¼¥²¥Ã¥ÈÉÕ¶á¤ËÁ®¸÷¤Î¥Ü¥ë¥È¤òÏ¢¼Í¤¹¤ë¡£";
@@ -8976,7 +8317,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_PURIFY:
+       case 7:
 #ifdef JP
                if (name) return "¿ÈÂξô²½";
                if (desc) return "½ý¡¢ÆÇ¡¢Û¯Û°¤«¤éÁ´²÷¤¹¤ë¡£";
@@ -8995,7 +8336,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_SCATTER_EVIL:
+       case 8:
 #ifdef JP
                if (name) return "¼Ù°­Èô¤Ð¤·";
                if (desc) return "¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼1ÂΤò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -9017,7 +8358,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_HOLY_ORB:
+       case 9:
 #ifdef JP
                if (name) return "À»¤Ê¤ë¸÷µå";
                if (desc) return "À»¤Ê¤ëÎϤò¤â¤ÄÊõ¼î¤òÊü¤Ä¡£¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤ËÂФ·¤ÆÂ礭¤Ê¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¤¬¡¢Á±Îɤʥâ¥ó¥¹¥¿¡¼¤Ë¤Ï¸ú²Ì¤¬¤Ê¤¤¡£";
@@ -9051,7 +8392,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_EXORCISM:
+       case 10:
 #ifdef JP
                if (name) return "°­Ëâʧ¤¤";
                if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥¢¥ó¥Ç¥Ã¥ÉµÚ¤Ó°­Ëâ¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¡¢¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤ò¶²Éݤµ¤»¤ë¡£";
@@ -9075,7 +8416,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_REMOVE_CURSE:
+       case 11:
 #ifdef JP
                if (name) return "²ò¼ö";
                if (desc) return "¥¢¥¤¥Æ¥à¤Ë¤«¤«¤Ã¤¿¼å¤¤¼ö¤¤¤ò²ò½ü¤¹¤ë¡£";
@@ -9099,7 +8440,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_SENSE_UNSEEN:
+       case 12:
 #ifdef JP
                if (name) return "Æ©ÌÀ»ëǧ";
                if (desc) return "°ìÄê»þ´Ö¡¢Æ©ÌÀ¤Ê¤â¤Î¤¬¸«¤¨¤ë¤è¤¦¤Ë¤Ê¤ë¡£";
@@ -9120,7 +8461,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_PROTECTION_FROM_EVIL:
+       case 13:
 #ifdef JP
                if (name) return "Âмٰ­·ë³¦";
                if (desc) return "¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤Î¹¶·â¤òËɤ°¥Ð¥ê¥¢¤òÄ¥¤ë¡£";
@@ -9142,7 +8483,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_JUDGMENT_THUNDER:
+       case 14:
 #ifdef JP
                if (name) return "ºÛ¤­¤ÎÍë";
                if (desc) return "¶¯ÎϤÊÅÅ·â¤Î¥Ü¥ë¥È¤òÊü¤Ä¡£";
@@ -9164,7 +8505,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_HOLY_WORD:
+       case 15:
 #ifdef JP
                if (name) return "À»¤Ê¤ë¸æ¸ÀÍÕ";
                if (desc) return "»ë³¦Æâ¤Î¼Ù°­¤Ê¸ºß¤ËÂ礭¤Ê¥À¥á¡¼¥¸¤òÍ¿¤¨¡¢ÂÎÎϤò²óÉü¤·¡¢ÆÇ¡¢¶²ÉÝ¡¢Û¯Û°¾õÂÖ¡¢Éé½ý¤«¤éÁ´²÷¤¹¤ë¡£";
@@ -9195,7 +8536,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_UNBARRING_WAYS:
+       case 16:
 #ifdef JP
                if (name) return "³«¤«¤ì¤¿Æ»";
                if (desc) return "°ìľÀþ¾å¤ÎÁ´¤Æ¤Î櫤ÈÈâ¤òÇ˲õ¤¹¤ë¡£";
@@ -9214,7 +8555,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_ARREST:
+       case 17:
 #ifdef JP
                if (name) return "ÉõËâ";
                if (desc) return "¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤ÎÆ°¤­¤ò»ß¤á¤ë¡£";
@@ -9236,7 +8577,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_HOLY_AURA:
+       case 18:
 #ifdef JP
                if (name) return "À»¤Ê¤ë¥ª¡¼¥é";
                if (desc) return "°ìÄê»þ´Ö¡¢¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤ò½ý¤Ä¤±¤ëÀ»¤Ê¤ë¥ª¡¼¥é¤òÆÀ¤ë¡£";
@@ -9257,7 +8598,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_DISPEL_UNDEAD_AND_DEMONS:
+       case 19:
 #ifdef JP
                if (name) return "¥¢¥ó¥Ç¥Ã¥É&°­ËâÂ໶";
                if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥¢¥ó¥Ç¥Ã¥ÉµÚ¤Ó°­Ëâ¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
@@ -9279,7 +8620,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_DISPEL_EVIL:
+       case 20:
 #ifdef JP
                if (name) return "¼Ù°­Â໶";
                if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
@@ -9300,7 +8641,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_HOLY_BLADE:
+       case 21:
 #ifdef JP
                if (name) return "À»¤Ê¤ë¿Ï";
                if (desc) return "Ä̾ï¤ÎÉð´ï¤ËÌǼ٤ΰÀ­¤ò¤Ä¤±¤ë¡£";
@@ -9317,7 +8658,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_STAR_BURST:
+       case 22:
 #ifdef JP
                if (name) return "¥¹¥¿¡¼¥Ð¡¼¥¹¥È";
                if (desc) return "µðÂç¤ÊÁ®¸÷¤Îµå¤òÊü¤Ä¡£";
@@ -9341,7 +8682,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_SUMMON_ANGEL:
+       case 23:
 #ifdef JP
                if (name) return "Å·»È¾¤´­";
                if (desc) return "Å·»È¤ò1Âξ¤´­¤¹¤ë¡£";
@@ -9383,7 +8724,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_HEROISM:
+       case 24:
 #ifdef JP
                if (name) return "»Îµ¤¹âÍÈ";
                if (desc) return "°ìÄê»þ´Ö¡¢¥Ò¡¼¥í¡¼µ¤Ê¬¤Ë¤Ê¤ë¡£";
@@ -9406,7 +8747,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_DISPEL_CURSE:
+       case 25:
 #ifdef JP
                if (name) return "¼ö¤¤Â໶";
                if (desc) return "¥¢¥¤¥Æ¥à¤Ë¤«¤«¤Ã¤¿¶¯ÎϤʼö¤¤¤ò²ò½ü¤¹¤ë¡£";
@@ -9430,7 +8771,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_BANISH_EVIL:
+       case 26:
 #ifdef JP
                if (name) return "¼Ù°­ÄÉÊü";
                if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -9459,7 +8800,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_ARMAGEDDON:
+       case 27:
 #ifdef JP
                if (name) return "¥Ï¥ë¥Þ¥²¥É¥ó";
                if (desc) return "¼þÊդΥ¢¥¤¥Æ¥à¡¢¥â¥ó¥¹¥¿¡¼¡¢ÃÏ·Á¤òÇ˲õ¤¹¤ë¡£";
@@ -9479,7 +8820,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_AN_EYE_FOR_AN_EYE:
+       case 28:
 #ifdef JP
                if (name) return "ÌܤˤÏÌܤò";
                if (desc) return "°ìÄê»þ´Ö¡¢¼«Ê¬¤¬¥À¥á¡¼¥¸¤ò¼õ¤±¤¿¤È¤­¤Ë¹¶·â¤ò¹Ô¤Ã¤¿¥â¥ó¥¹¥¿¡¼¤ËÂФ·¤ÆƱÅù¤Î¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
@@ -9500,7 +8841,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_WRATH_OF_THE_GOD:
+       case 29:
 #ifdef JP
                if (name) return "¿À¤ÎÅܤê";
                if (desc) return "¥¿¡¼¥²¥Ã¥È¤Î¼þ°Ï¤Ëʬ²ò¤Îµå¤ò¿¿ôÍî¤È¤¹¡£";
@@ -9522,7 +8863,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_DIVINE_INTERVENTION:
+       case 30:
 #ifdef JP
                if (name) return "¿À°Ò";
                if (desc) return "ÎÙÀܤ¹¤ë¥â¥ó¥¹¥¿¡¼¤ËÀ»¤Ê¤ë¥À¥á¡¼¥¸¤òÍ¿¤¨¡¢»ë³¦Æâ¤Î¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¡¢¸ºÂ®¡¢Û¯Û°¡¢º®Í𡢶²ÉÝ¡¢Ì²¤ê¤òÍ¿¤¨¤ë¡£¤µ¤é¤ËÂÎÎϤò²óÉü¤¹¤ë¡£";
@@ -9547,7 +8888,7 @@ cptr do_spell(int realm, int spell, int mode)
                        {
                                project(0, 1, py, px, b_dam, GF_HOLY_FIRE, PROJECT_KILL, -1);
                                dispel_monsters(d_dam);
-                               slow_monsters();
+                               slow_monsters(plev);
                                stun_monsters(power);
                                confuse_monsters(power);
                                turn_monsters(power);
@@ -9557,7 +8898,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_CRUSADE:
+       case 31:
 #ifdef JP
                if (name) return "À»Àï";
                if (desc) return "»ë³¦Æâ¤ÎÁ±Îɤʥâ¥ó¥¹¥¿¡¼¤ò¥Ú¥Ã¥È¤Ë¤·¤è¤¦¤È¤·¡¢¤Ê¤é¤Ê¤«¤Ã¤¿¾ì¹çµÚ¤ÓÁ±ÎɤǤʤ¤¥â¥ó¥¹¥¿¡¼¤ò¶²Éݤµ¤»¤ë¡£¤µ¤é¤Ë¿¿ô¤Î²Ã®¤µ¤ì¤¿µ³»Î¤ò¾¤´­¤·¡¢¥Ò¡¼¥í¡¼¡¢½ËÊ¡¡¢²Ã®¡¢Âмٰ­·ë³¦¤òÆÀ¤ë¡£";
@@ -9598,8 +8939,34 @@ cptr do_spell(int realm, int spell, int mode)
                        }
                }
                break;
+       }
+
+       return "";
+}
+
+
+static cptr do_music_spell(int spell, int mode)
+{
+       bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
+       bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
+       bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
+       bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
+       bool fail = (mode == SPELL_FAIL) ? TRUE : FALSE;
+       bool cont = (mode == SPELL_CONT) ? TRUE : FALSE;
+       bool stop = (mode == SPELL_STOP) ? TRUE : FALSE;
+
+#ifdef JP
+       static const char s_dam[] = "»½ý:";
+#else
+       static const char s_dam[] = "dam ";
+#endif
+
+       int dir;
+       int plev = p_ptr->lev;
 
-       case MUSI_SPEL_SONG_OF_HOLDING:
+       switch (spell)
+       {
+       case 0:
 #ifdef JP
                if (name) return "ÃÙÆߤβÎ";
                if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò¸ºÂ®¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -9628,12 +8995,12 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cont)
                        {
-                               slow_monsters();
+                               slow_monsters(plev);
                        }
                }
                break;
 
-       case MUSI_SPEL_SONG_OF_BLESSING:
+       case 1:
 #ifdef JP
                if (name) return "½ËÊ¡¤Î²Î";
                if (desc) return "Ì¿ÃæΨ¤ÈAC¤Î¥Ü¡¼¥Ê¥¹¤òÆÀ¤ë¡£";
@@ -9669,7 +9036,7 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_WRECKING_NOTE:
+       case 2:
 #ifdef JP
                if (name) return "Êø²õ¤Î²»¿§";
                if (desc) return "¹ì²»¤Î¥Ü¥ë¥È¤òÊü¤Ä¡£";
@@ -9696,7 +9063,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case MUSI_SPEL_STUN_PATTERN:
+       case 3:
 #ifdef JP
                if (name) return "Û¯Û°¤ÎÀûΧ";
                if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤òÛ¯Û°¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -9732,7 +9099,7 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_FLOW_OF_LIFE:
+       case 4:
 #ifdef JP
                if (name) return "À¸Ì¿¤Îή¤ì";
                if (desc) return "ÂÎÎϤò¾¯¤·²óÉü¤µ¤»¤ë¡£";
@@ -9768,7 +9135,7 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_SONG_OF_THE_SUN:
+       case 5:
 #ifdef JP
                if (name) return "ÂÀÍۤβÎ";
                if (desc) return "¸÷¸»¤¬¾È¤é¤·¤Æ¤¤¤ëÈϰϤ«Éô²°Á´ÂΤò±Êµ×¤ËÌÀ¤ë¤¯¤¹¤ë¡£";
@@ -9800,7 +9167,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case MUSI_SPEL_SONG_OF_FEAR:
+       case 6:
 #ifdef JP
                if (name) return "¶²ÉݤβÎ";
                if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò¶²Éݤµ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -9835,7 +9202,7 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_HEROIC_BALLAD:
+       case 7:
 #ifdef JP
                if (name) return "À襤¤Î²Î";
                if (desc) return "¥Ò¡¼¥í¡¼µ¤Ê¬¤Ë¤Ê¤ë¡£";
@@ -9880,7 +9247,7 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_CLAIRAUDIENCE:
+       case 8:
 #ifdef JP
                if (name) return "ÎîŪÃγÐ";
                if (desc) return "¶á¤¯¤Îæ«/Èâ/³¬Ãʤò´¶ÃΤ¹¤ë¡£¥ì¥Ù¥ë15¤ÇÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¡¢20¤ÇºâÊõ¤È¥¢¥¤¥Æ¥à¤ò´¶ÃΤǤ­¤ë¤è¤¦¤Ë¤Ê¤ë¡£¥ì¥Ù¥ë25¤Ç¼þÊÕ¤ÎÃÏ·Á¤ò´¶ÃΤ·¡¢40¤Ç¤½¤Î³¬Á´ÂΤò±Êµ×¤Ë¾È¤é¤·¡¢¥À¥ó¥¸¥ç¥óÆâ¤Î¤¹¤Ù¤Æ¤Î¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£¤³¤Î¸ú²Ì¤Ï²Î¤¤Â³¤±¤ë¤³¤È¤Ç½ç¤Ëµ¯¤³¤ë¡£";
@@ -9951,7 +9318,7 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_SOUL_SHRIEK:
+       case 9:
 #ifdef JP
                if (name) return "º²¤Î²Î";
                if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ËÂФ·¤ÆÀº¿À¹¶·â¤ò¹Ô¤¦¡£";
@@ -9987,7 +9354,7 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_SONG_OF_LORE:
+       case 10:
 #ifdef JP
                if (name) return "Ãμ±¤Î²Î";
                if (desc) return "¼«Ê¬¤Î¤¤¤ë¥Þ¥¹¤ÈÎÙ¤ê¤Î¥Þ¥¹¤ËÍî¤Á¤Æ¤¤¤ë¥¢¥¤¥Æ¥à¤ò´ÕÄꤹ¤ë¡£";
@@ -10026,7 +9393,7 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_HIDING_TUNE:
+       case 11:
 #ifdef JP
                if (name) return "±£ÆۤβÎ";
                if (desc) return "±£Ì©¹ÔưǽÎϤò¾å¾º¤µ¤»¤ë¡£";
@@ -10062,7 +9429,7 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_ILLUSION_PATTERN:
+       case 12:
 #ifdef JP
                if (name) return "¸¸±Æ¤ÎÀûΧ";
                if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤òº®Í𤵤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -10097,7 +9464,7 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_DOOMCALL:
+       case 13:
 #ifdef JP
                if (name) return "ÇËÌǤ櫤Ó";
                if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ËÂФ·¤Æ¹ì²»¹¶·â¤ò¹Ô¤¦¡£";
@@ -10133,7 +9500,7 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_FIRIELS_SONG:
+       case 14:
 #ifdef JP
                if (name) return "¥Õ¥£¥ê¥¨¥ë¤Î²Î";
                if (desc) return "¼þ°Ï¤Î»àÂΤä¹ü¤òÀ¸¤­ÊÖ¤¹¡£";
@@ -10159,7 +9526,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case MUSI_SPEL_FELLOWSHIP_CHANT:
+       case 15:
 #ifdef JP
                if (name) return "ι¤ÎÃç´Ö";
                if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -10195,13 +9562,13 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_SOUND_OF_DISINTEGRATION:
+       case 16:
 #ifdef JP
                if (name) return "ʬ²ò²»ÇÈ";
                if (desc) return "Êɤò·¡¤ê¿Ê¤à¡£¼«Ê¬¤Î­¸µ¤Î¥¢¥¤¥Æ¥à¤Ï¾øȯ¤¹¤ë¡£";
 #else
                if (name) return "Sound of disintegration";
-               if (desc) return "Turns all rocks in the adjacent squares to mud.";
+               if (desc) return "Makes you be able to burrow into walls. Objects under your feet evaporate.";
 #endif
 
                /* Stop singing before start another */
@@ -10230,7 +9597,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case MUSI_SPEL_FINRODS_RESISTANCE:
+       case 17:
 #ifdef JP
                if (name) return "¸µÁÇÂÑÀ­";
                if (desc) return "»À¡¢ÅÅ·â¡¢±ê¡¢Î䵤¡¢ÆǤËÂФ¹¤ëÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
@@ -10302,7 +9669,7 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_HOBBIT_MELODIES:
+       case 18:
 #ifdef JP
                if (name) return "¥Û¥Ó¥Ã¥È¤Î¥á¥í¥Ç¥£";
                if (desc) return "²Ã®¤¹¤ë¡£";
@@ -10338,7 +9705,7 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_WORLD_CONTORTION:
+       case 19:
 #ifdef JP
                if (name) return "ÏĤó¤ÀÀ¤³¦";
                if (desc) return "¶á¤¯¤Î¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -10369,7 +9736,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case MUSI_SPEL_DISPELLING_CHANT:
+       case 20:
 #ifdef JP
                if (name) return "Â໶¤Î²Î";
                if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤ËÆäËÂ礭¤Ê¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
@@ -10405,7 +9772,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case MUSI_SPEL_THE_VOICE_OF_SARUMAN:
+       case 21:
 #ifdef JP
                if (name) return "¥µ¥ë¥Þ¥ó¤Î´Å¸À";
                if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò¸ºÂ®¤µ¤»¡¢Ì²¤é¤»¤è¤¦¤È¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -10434,14 +9801,14 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cont)
                        {
-                               slow_monsters();
-                               sleep_monsters();
+                               slow_monsters(plev);
+                               sleep_monsters(plev);
                        }
                }
 
                break;
 
-       case MUSI_SPEL_SONG_OF_THE_TEMPEST:
+       case 22:
 #ifdef JP
                if (name) return "Íò¤Î²»¿§";
                if (desc) return "¹ì²»¤Î¥Ó¡¼¥à¤òÊü¤Ä¡£";
@@ -10468,7 +9835,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case MUSI_SPEL_AMBARKANTA:
+       case 23:
 #ifdef JP
                if (name) return "¤â¤¦°ì¤Ä¤ÎÀ¤³¦";
                if (desc) return "¸½ºß¤Î³¬¤òºÆ¹½À®¤¹¤ë¡£";
@@ -10499,7 +9866,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case MUSI_SPEL_WRECKING_PATTERN:
+       case 24:
 #ifdef JP
                if (name) return "Ç˲õ¤ÎÀûΧ";
                if (desc) return "¼þ°Ï¤Î¥À¥ó¥¸¥ç¥ó¤òÍɤ餷¡¢ÊɤȾ²¤ò¥é¥ó¥À¥à¤ËÆþ¤ìÊѤ¨¤ë¡£";
@@ -10535,7 +9902,7 @@ cptr do_spell(int realm, int spell, int mode)
                break;
 
 
-       case MUSI_SPEL_STATIONARY_SHRIEK:
+       case 25:
 #ifdef JP
                if (name) return "ÄäÂڤβÎ";
                if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤òËãá㤵¤»¤è¤¦¤È¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
@@ -10570,7 +9937,7 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_ENDURANCE:
+       case 26:
 #ifdef JP
                if (name) return "¼é¤ê¤Î²Î";
                if (desc) return "¼«Ê¬¤Î¤¤¤ë¾²¤Î¾å¤Ë¡¢¥â¥ó¥¹¥¿¡¼¤¬Ä̤êÈ´¤±¤¿¤ê¾¤´­¤µ¤ì¤¿¤ê¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¯¤Ê¤ë¥ë¡¼¥ó¤òÉÁ¤¯¡£";
@@ -10596,7 +9963,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case MUSI_SPEL_THE_HEROS_POEM:
+       case 27:
 #ifdef JP
                if (name) return "±Ñͺ¤Î»í";
                if (desc) return "²Ã®¤·¡¢¥Ò¡¼¥í¡¼µ¤Ê¬¤Ë¤Ê¤ê¡¢»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
@@ -10660,7 +10027,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case MUSI_SPEL_RELIEF_OF_YAVANNA:
+       case 28:
 #ifdef JP
                if (name) return "¥ä¥ô¥¡¥ó¥Ê¤Î½õ¤±";
                if (desc) return "¶¯ÎϤʲóÉü¤Î²Î¤Ç¡¢Éé½ý¤ÈÛ¯Û°¾õÂÖ¤âÁ´²÷¤¹¤ë¡£";
@@ -10698,7 +10065,7 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_GODDESS_REBIRTH:
+       case 29:
 #ifdef JP
                if (name) return "ºÆÀ¸¤Î²Î";
                if (desc) return "¤¹¤Ù¤Æ¤Î¥¹¥Æ¡¼¥¿¥¹¤È·Ð¸³Ãͤò²óÉü¤¹¤ë¡£";
@@ -10729,7 +10096,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case MUSI_SPEL_WIZARDRY_OF_SAURON:
+       case 30:
 #ifdef JP
                if (name) return "¥µ¥¦¥í¥ó¤ÎËâ½Ñ";
                if (desc) return "Èó¾ï¤Ë¶¯ÎϤǤ´¤¯¾®¤µ¤¤¹ì²»¤Îµå¤òÊü¤Ä¡£";
@@ -10757,7 +10124,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case MUSI_SPEL_FINGOLFINS_CHALLENGE:
+       case 31:
 #ifdef JP
                if (name) return "¥Õ¥£¥ó¥´¥ë¥Õ¥£¥ó¤ÎÄ©Àï";
                if (desc) return "¥À¥á¡¼¥¸¤ò¼õ¤±¤Ê¤¯¤Ê¤ë¥Ð¥ê¥¢¤òÄ¥¤ë¡£";
@@ -10810,8 +10177,24 @@ cptr do_spell(int realm, int spell, int mode)
                }
 
                break;
+       }
+
+       return "";
+}
+
+
+static cptr do_hissatsu_spell(int spell, int mode)
+{
+       bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
+       bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
+       bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
 
-       case TECH_SPEL_TOBI_IZUNA:
+       int dir;
+       int plev = p_ptr->lev;
+
+       switch (spell)
+       {
+       case 0:
 #ifdef JP
                if (name) return "ÈôÈÓ¹Ë";
                if (desc) return "2¥Þ¥¹Î¥¤ì¤¿¤È¤³¤í¤Ë¤¤¤ë¥â¥ó¥¹¥¿¡¼¤ò¹¶·â¤¹¤ë¡£";
@@ -10829,7 +10212,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_3_WAY_ATTACK:
+       case 1:
 #ifdef JP
                if (name) return "¸Þ·î±«»Â¤ê";
                if (desc) return "3Êý¸þ¤ËÂФ·¤Æ¹¶·â¤¹¤ë¡£";
@@ -10886,7 +10269,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_BOOMERANG:
+       case 2:
 #ifdef JP
                if (name) return "¥Ö¡¼¥á¥é¥ó";
                if (desc) return "Éð´ï¤ò¼ê¸µ¤ËÌá¤Ã¤Æ¤¯¤ë¤è¤¦¤ËÅꤲ¤ë¡£Ìá¤Ã¤Æ¤³¤Ê¤¤¤³¤È¤â¤¢¤ë¡£";
@@ -10897,11 +10280,11 @@ cptr do_spell(int realm, int spell, int mode)
     
                if (cast)
                {
-                       if (!do_cmd_throw_aux(1, TRUE, 0)) return NULL;
+                       if (!do_cmd_throw_aux(1, TRUE, -1)) return NULL;
                }
                break;
 
-       case TECH_SPEL_BURNING_STRIKE:
+       case 3:
 #ifdef JP
                if (name) return "±ëÎî";
                if (desc) return "²Ð±êÂÑÀ­¤Î¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤ËÂç¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
@@ -10934,7 +10317,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_DETECT_FEROCITY:
+       case 4:
 #ifdef JP
                if (name) return "»¦µ¤´¶ÃÎ";
                if (desc) return "¶á¤¯¤Î»×¹Í¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
@@ -10949,7 +10332,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_STRIKE_TO_STUN:
+       case 5:
 #ifdef JP
                if (name) return "¤ß¤ÍÂǤÁ";
                if (desc) return "Áê¼ê¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤Ê¤¤¤¬¡¢Û¯Û°¤È¤µ¤»¤ë¡£";
@@ -10982,7 +10365,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_COUNTER:
+       case 6:
 #ifdef JP
                if (name) return "¥«¥¦¥ó¥¿¡¼";
                if (desc) return "Áê¼ê¤Ë¹¶·â¤µ¤ì¤¿¤È¤­¤ËÈ¿·â¤¹¤ë¡£È¿·â¤¹¤ë¤¿¤Ó¤ËMP¤ò¾ÃÈñ¡£";
@@ -11011,7 +10394,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_HARAINUKE:
+       case 7:
 #ifdef JP
                if (name) return "ʧ¤¤È´¤±";
                if (desc) return "¹¶·â¤·¤¿¸å¡¢È¿ÂЦ¤ËÈ´¤±¤ë¡£";
@@ -11068,7 +10451,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_SERPENTS_TONGUE:
+       case 8:
 #ifdef JP
                if (name) return "¥µ¡¼¥Ú¥ó¥Ä¥¿¥ó";
                if (desc) return "ÆÇÂÑÀ­¤Î¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤ËÂç¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
@@ -11101,7 +10484,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_ZAMMAKEN:
+       case 9:
 #ifdef JP
                if (name) return "»ÂËâ·õÆõ¤ÎÂÀÅá";
                if (desc) return "À¸Ì¿¤Î¤Ê¤¤¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤ËÂç¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¤¬¡¢Â¾¤Î¥â¥ó¥¹¥¿¡¼¤Ë¤ÏÁ´¤¯¸ú²Ì¤¬¤Ê¤¤¡£";
@@ -11134,7 +10517,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_WIND_BLAST:
+       case 10:
 #ifdef JP
                if (name) return "ÎöÉ÷·õ";
                if (desc) return "¹¶·â¤·¤¿Áê¼ê¤ò¸åÊý¤Ø¿á¤­Èô¤Ð¤¹¡£";
@@ -11213,7 +10596,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_JUDGE:
+       case 11:
 #ifdef JP
                if (name) return "Åá¾¢¤ÎÌÜÍø¤­";
                if (desc) return "Éð´ï¡¦Ëɶñ¤ò1¤Ä¼±Ê̤¹¤ë¡£¥ì¥Ù¥ë45°Ê¾å¤ÇÉð´ï¡¦Ëɶñ¤ÎǽÎϤò´°Á´¤ËÃΤ뤳¤È¤¬¤Ç¤­¤ë¡£";
@@ -11224,7 +10607,7 @@ cptr do_spell(int realm, int spell, int mode)
     
                if (cast)
                {
-                       if (p_ptr->lev > 44)
+                       if (plev > 44)
                        {
                                if (!identify_fully(TRUE)) return NULL;
                        }
@@ -11235,7 +10618,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_ROCK_SMASH:
+       case 12:
 #ifdef JP
                if (name) return "ÇË´ä»Â";
                if (desc) return "´ä¤ò²õ¤·¡¢´äÀзϤΥâ¥ó¥¹¥¿¡¼¤ËÂç¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
@@ -11267,7 +10650,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_MIDARE_SETSUGEKKA:
+       case 13:
 #ifdef JP
                if (name) return "Íð¤ìÀã·î²Ö";
                if (desc) return "¹¶·â²ó¿ô¤¬Áý¤¨¡¢Î䵤ÂÑÀ­¤Î¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤ËÂç¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
@@ -11300,7 +10683,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_SPOT_AIMING:
+       case 14:
 #ifdef JP
                if (name) return "µÞ½êÆͤ­";
                if (desc) return "¥â¥ó¥¹¥¿¡¼¤ò°ì·â¤ÇÅݤ¹¹¶·â¤ò·«¤ê½Ð¤¹¡£¼ºÇÔ¤¹¤ë¤È1ÅÀ¤·¤«¥À¥á¡¼¥¸¤òÍ¿¤¨¤é¤ì¤Ê¤¤¡£";
@@ -11333,7 +10716,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_MAJINGIRI:
+       case 15:
 #ifdef JP
                if (name) return "Ëâ¿À»Â¤ê";
                if (desc) return "²ñ¿´¤Î°ì·â¤Ç¹¶·â¤¹¤ë¡£¹¶·â¤¬¤«¤ï¤µ¤ì¤ä¤¹¤¤¡£";
@@ -11366,7 +10749,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_DESPERATE_ATTACK:
+       case 16:
 #ifdef JP
                if (name) return "¼Î¤Æ¿È";
                if (desc) return "¶¯ÎϤʹ¶·â¤ò·«¤ê½Ð¤¹¡£¼¡¤Î¥¿¡¼¥ó¤Þ¤Ç¤Î´Ö¡¢¿©¤é¤¦¥À¥á¡¼¥¸¤¬Áý¤¨¤ë¡£";
@@ -11400,7 +10783,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_LIGHTNING_EAGLE:
+       case 17:
 #ifdef JP
                if (name) return "Íë·âÏÉÄÞ»Â";
                if (desc) return "ÅÅ·âÂÑÀ­¤Î¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤ËÈó¾ï¤ËÂ礭¤¤¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
@@ -11433,7 +10816,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_RUSH_ATTACK:
+       case 18:
 #ifdef JP
                if (name) return "Æþ¿È";
                if (desc) return "ÁÇÁ᤯Áê¼ê¤Ë¶á´ó¤ê¹¶·â¤¹¤ë¡£";
@@ -11448,7 +10831,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_BLOODY_MAELSTROM:
+       case 19:
 #ifdef JP
                if (name) return "ÀÖή±²";
                if (desc) return "¼«Ê¬¼«¿È¤â½ý¤òºî¤ê¤Ä¤Ä¡¢¤½¤Î½ý¤¬¿¼¤¤¤Û¤ÉÂ礭¤¤°ÒÎϤÇÁ´Êý¸þ¤ÎŨ¤ò¹¶·â¤Ç¤­¤ë¡£À¸¤­¤Æ¤¤¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤Ë¤Ï¸ú²Ì¤¬¤Ê¤¤¡£";
@@ -11498,7 +10881,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_EARTHQUAKE_BLOW:
+       case 20:
 #ifdef JP
                if (name) return "·ã¿Ì·â";
                if (desc) return "ÃϿ̤òµ¯¤³¤¹¡£";
@@ -11524,7 +10907,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_CRACK:
+       case 21:
 #ifdef JP
                if (name) return "ÃÏÁö¤ê";
                if (desc) return "¾×·âÇȤΥӡ¼¥à¤òÊü¤Ä¡£";
@@ -11574,7 +10957,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_WAR_CRY:
+       case 22:
 #ifdef JP
                if (name) return "µ¤Ç÷¤Îͺ¶«¤Ó";
                if (desc) return "»ë³¦Æâ¤ÎÁ´¥â¥ó¥¹¥¿¡¼¤ËÂФ·¤Æ¹ì²»¤Î¹¶·â¤ò¹Ô¤¦¡£¤µ¤é¤Ë¡¢¶á¤¯¤Ë¤¤¤ë¥â¥ó¥¹¥¿¡¼¤òÅܤ餻¤ë¡£";
@@ -11590,12 +10973,12 @@ cptr do_spell(int realm, int spell, int mode)
 #else
                        msg_print("You roar out!");
 #endif
-                       project_hack(GF_SOUND, randint1(p_ptr->lev * 3));
+                       project_hack(GF_SOUND, randint1(plev * 3));
                        aggravate_monsters(0);
                }
                break;
 
-       case TECH_SPEL_MUSOU_SANDAN:
+       case 23:
 #ifdef JP
                if (name) return "̵Áл°ÃÊ";
                if (desc) return "¶¯ÎϤÊ3Ãʹ¶·â¤ò·«¤ê½Ð¤¹¡£";
@@ -11675,14 +11058,18 @@ cptr do_spell(int realm, int spell, int mode)
                                        /* Move the player */
                                        if (!move_player_effect(y, x, MPE_FORGET_FLOW | MPE_HANDLE_STUFF | MPE_DONT_PICKUP)) break;
                                }
-       
+                               else
+                               {
+                                       break;
+                               }
+
                                /* -more- */
                                if (i < 2) msg_print(NULL);
                        }
                }
                break;
 
-       case TECH_SPEL_VAMPIRES_FANG:
+       case 24:
 #ifdef JP
                if (name) return "µÛ·ìµ´¤Î²ç";
                if (desc) return "¹¶·â¤·¤¿Áê¼ê¤ÎÂÎÎϤòµÛ¤¤¤È¤ê¡¢¼«Ê¬¤ÎÂÎÎϤò²óÉü¤µ¤»¤ë¡£À¸Ì¿¤ò»ý¤¿¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤Ë¤ÏÄ̤¸¤Ê¤¤¡£";
@@ -11715,7 +11102,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_MOON_DAZZLING:
+       case 25:
 #ifdef JP
                if (name) return "¸¸ÏÇ";
                if (desc) return "»ë³¦Æâ¤Îµ¯¤­¤Æ¤¤¤ëÁ´¥â¥ó¥¹¥¿¡¼¤ËÛ¯Û°¡¢º®Íð¡¢Ì²¤ê¤òÍ¿¤¨¤è¤¦¤È¤¹¤ë¡£";
@@ -11731,13 +11118,13 @@ cptr do_spell(int realm, int spell, int mode)
 #else
                        msg_print("You irregularly wave your weapon...");
 #endif
-                       project_hack(GF_ENGETSU, p_ptr->lev * 4);
-                       project_hack(GF_ENGETSU, p_ptr->lev * 4);
-                       project_hack(GF_ENGETSU, p_ptr->lev * 4);
+                       project_hack(GF_ENGETSU, plev * 4);
+                       project_hack(GF_ENGETSU, plev * 4);
+                       project_hack(GF_ENGETSU, plev * 4);
                }
                break;
 
-       case TECH_SPEL_HUNDRED_SLAUGHTER:
+       case 26:
 #ifdef JP
                if (name) return "É´¿Í»Â¤ê";
                if (desc) return "Ϣ³¤·¤ÆÆþ¿È¤Ç¥â¥ó¥¹¥¿¡¼¤ò¹¶·â¤¹¤ë¡£¹¶·â¤¹¤ë¤¿¤Ó¤ËMP¤ò¾ÃÈñ¡£MP¤¬¤Ê¤¯¤Ê¤ë¤«¡¢¥â¥ó¥¹¥¿¡¼¤òÅݤ»¤Ê¤«¤Ã¤¿¤éÉ´¿Í»Â¤ê¤Ï½ªÎ»¤¹¤ë¡£";
@@ -11749,17 +11136,17 @@ cptr do_spell(int realm, int spell, int mode)
                if (cast)
                {
                        const int mana_cost_per_monster = 8;
-                       bool new = TRUE;
+                       bool is_new = TRUE;
                        bool mdeath;
 
                        do
                        {
                                if (!rush_attack(&mdeath)) break;
-                               if (new)
+                               if (is_new)
                                {
                                        /* Reserve needed mana point */
                                        p_ptr->csp -= technic_info[REALM_HISSATSU - MIN_TECHNIC][26].smana;
-                                       new = FALSE;
+                                       is_new = FALSE;
                                }
                                else
                                        p_ptr->csp -= mana_cost_per_monster;
@@ -11772,14 +11159,14 @@ cptr do_spell(int realm, int spell, int mode)
                        }
                        while (p_ptr->csp > mana_cost_per_monster);
 
-                       if (new) return NULL;
+                       if (is_new) return NULL;
        
                        /* Restore reserved mana */
                        p_ptr->csp += technic_info[REALM_HISSATSU - MIN_TECHNIC][26].smana;
                }
                break;
 
-       case TECH_SPEL_DRAGONIC_FLASH:
+       case 27:
 #ifdef JP
                if (name) return "Å·æÆζÁ®";
                if (desc) return "»ë³¦Æâ¤Î¾ì½ê¤ò»ØÄꤷ¤Æ¡¢¤½¤Î¾ì½ê¤È¼«Ê¬¤Î´Ö¤Ë¤¤¤ëÁ´¥â¥ó¥¹¥¿¡¼¤ò¹¶·â¤·¡¢¤½¤Î¾ì½ê¤Ë°ÜÆ°¤¹¤ë¡£";
@@ -11794,7 +11181,7 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (!tgt_pt(&x, &y)) return NULL;
 
-                       if (!cave_player_teleportable_bold(y, x, FALSE, FALSE) ||
+                       if (!cave_player_teleportable_bold(y, x, 0L) ||
                            (distance(y, x, py, px) > MAX_SIGHT / 2) ||
                            !projectable(py, px, y, x))
                        {
@@ -11816,11 +11203,11 @@ cptr do_spell(int realm, int spell, int mode)
                                break;
                        }
                        project(0, 0, y, x, HISSATSU_ISSEN, GF_ATTACK, PROJECT_BEAM | PROJECT_KILL, -1);
-                       teleport_player_to(y, x, TRUE, FALSE);
+                       teleport_player_to(y, x, 0L);
                }
                break;
 
-       case TECH_SPEL_TWIN_SLASH:
+       case 28:
 #ifdef JP
                if (name) return "Æó½Å¤Î·õ·â";
                if (desc) return "1¥¿¡¼¥ó¤Ç2ÅÙ¹¶·â¤ò¹Ô¤¦¡£";
@@ -11859,7 +11246,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_KOFUKU_ZETTOUSEI:
+       case 29:
 #ifdef JP
                if (name) return "¸×ÉúÀäÅáÀª";
                if (desc) return "¶¯ÎϤʹ¶·â¤ò¹Ô¤¤¡¢¶á¤¯¤Î¾ì½ê¤Ë¤â¸ú²Ì¤¬µÚ¤Ö¡£";
@@ -11924,7 +11311,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_KEIUN_KININKEN:
+       case 30:
 #ifdef JP
                if (name) return "·Ä±Àµ´Ç¦·õ";
                if (desc) return "¼«Ê¬¤â¥À¥á¡¼¥¸¤ò¤¯¤é¤¦¤¬¡¢Áê¼ê¤ËÈó¾ï¤ËÂ礭¤Ê¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£¥¢¥ó¥Ç¥Ã¥É¤Ë¤ÏÆä˸ú²Ì¤¬¤¢¤ë¡£";
@@ -11962,7 +11349,7 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_HARAKIRI:
+       case 31:
 #ifdef JP
                if (name) return "ÀÚÊ¢";
                if (desc) return "¡ÖÉð»ÎÆ»¤È¤Ï¡¢»à¤Ì¤³¤È¤È¸«¤Ä¤±¤¿¤ê¡£¡×";
@@ -11999,11 +11386,10 @@ cptr do_spell(int realm, int spell, int mode)
                        {
 #ifdef JP
                                msg_print("Éð»ÎÆ»¤È¤Ï¡¢»à¤Ì¤³¤È¤È¸«¤Ä¤±¤¿¤ê¡£");
-                               take_hit(DAMAGE_FORCE, 9999, "ÀÚÊ¢", -1);
 #else
                                msg_print("Meaning of Bushi-do is found in the death.");
-                               take_hit(DAMAGE_FORCE, 9999, "Seppuku", -1);
 #endif
+                               take_hit(DAMAGE_FORCE, 9999, "Seppuku", -1);
                        }
                }
                break;
@@ -12011,3 +11397,1236 @@ cptr do_spell(int realm, int spell, int mode)
 
        return "";
 }
+
+
+/* Hex */
+static bool item_tester_hook_weapon_except_bow(object_type *o_ptr)
+{
+       switch (o_ptr->tval)
+       {
+               case TV_SWORD:
+               case TV_HAFTED:
+               case TV_POLEARM:
+               case TV_DIGGING:
+               {
+                       return (TRUE);
+               }
+       }
+
+       return (FALSE);
+}
+
+static bool item_tester_hook_cursed(object_type *o_ptr)
+{
+       return (bool)(object_is_cursed(o_ptr));
+}
+
+static cptr do_hex_spell(int spell, int mode)
+{
+       bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
+       bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
+       bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
+       bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
+       bool cont = (mode == SPELL_CONT) ? TRUE : FALSE;
+       bool stop = (mode == SPELL_STOP) ? TRUE : FALSE;
+
+       bool add = TRUE;
+
+       int plev = p_ptr->lev;
+       int power;
+
+       switch (spell)
+       {
+       /*** 1st book (0-7) ***/
+       case 0:
+#ifdef JP
+               if (name) return "¼Ù¤Ê¤ë½ËÊ¡";
+               if (desc) return "½ËÊ¡¤Ë¤è¤ê¹¶·âÀºÅÙ¤ÈËɸæÎϤ¬¾å¤¬¤ë¡£";
+#else
+               if (name) return "Evily blessing";
+               if (desc) return "Attempts to increase +to_hit of a weapon and AC";
+#endif
+               if (cast)
+               {
+                       if (!p_ptr->blessed)
+                       {
+#ifdef JP
+                               msg_print("¹â·é¤Êµ¤Ê¬¤Ë¤Ê¤Ã¤¿¡ª");
+#else
+                               msg_print("You feel righteous!");
+#endif
+                       }
+               }
+               if (stop)
+               {
+                       if (!p_ptr->blessed)
+                       {
+#ifdef JP
+                               msg_print("¹â·é¤Êµ¤Ê¬¤¬¾Ã¤¨¼º¤»¤¿¡£");
+#else
+                               msg_print("The prayer has expired.");
+#endif
+                       }
+               }
+               break;
+
+       case 1:
+#ifdef JP
+               if (name) return "·Ú½ý¤Î¼£Ìþ";
+               if (desc) return "HP¤ä½ý¤ò¾¯¤·²óÉü¤µ¤»¤ë¡£";
+#else
+               if (name) return "Cure light wounds";
+               if (desc) return "Heals cut and HP a little.";
+#endif
+               if (info) return info_heal(1, 10, 0);
+               if (cast)
+               {
+#ifdef JP
+                       msg_print("µ¤Ê¬¤¬Îɤ¯¤Ê¤Ã¤Æ¤¯¤ë¡£");
+#else
+                       msg_print("You feel better and better.");
+#endif
+               }
+               if (cast || cont)
+               {
+                       hp_player(damroll(1, 10));
+                       set_cut(p_ptr->cut - 10);
+               }
+               break;
+
+       case 2:
+#ifdef JP
+               if (name) return "°­Ëâ¤Î¥ª¡¼¥é";
+               if (desc) return "±ê¤Î¥ª¡¼¥é¤ò¿È¤Ë¤Þ¤È¤¤¡¢²óÉü®ÅÙ¤¬Â®¤¯¤Ê¤ë¡£";
+#else
+               if (name) return "Demonic aura";
+               if (desc) return "Gives fire aura and regeneration.";
+#endif
+               if (cast)
+               {
+#ifdef JP
+                       msg_print("ÂΤ¬±ê¤Î¥ª¡¼¥é¤Çʤ¤ï¤ì¤¿¡£");
+#else
+                       msg_print("You have enveloped by fiery aura!");
+#endif
+               }
+               if (stop)
+               {
+#ifdef JP
+                       msg_print("±ê¤Î¥ª¡¼¥é¤¬¾Ã¤¨µî¤Ã¤¿¡£");
+#else
+                       msg_print("Fiery aura disappeared.");
+#endif
+               }
+               break;
+
+       case 3:
+#ifdef JP
+               if (name) return "°­½­Ì¸";
+               if (desc) return "»ë³¦Æâ¤Î¥â¥ó¥¹¥¿¡¼¤ËÈù¼åÎ̤ÎÆǤΥÀ¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
+#else
+               if (name) return "Stinking mist";
+               if (desc) return "Deals few damages of poison to all monsters in your sight.";
+#endif
+               power = plev / 2 + 5;
+               if (info) return info_damage(1, power, 0);
+               if (cast || cont)
+               {
+                       project_hack(GF_POIS, randint1(power));
+               }
+               break;
+
+       case 4:
+#ifdef JP
+               if (name) return "ÏÓÎ϶¯²½";
+               if (desc) return "½Ñ¼Ô¤ÎÏÓÎϤò¾å¾º¤µ¤»¤ë¡£";
+#else
+               if (name) return "Extra might";
+               if (desc) return "Attempts to increase your strength.";
+#endif
+               if (cast)
+               {
+#ifdef JP
+                       msg_print("²¿¤À¤«ÎϤ¬Í¯¤¤¤ÆÍè¤ë¡£");
+#else
+                       msg_print("You feel you get stronger.");
+#endif
+               }
+               break;
+
+       case 5:
+#ifdef JP
+               if (name) return "Éð´ï¼öÇû";
+               if (desc) return "ÁõÈ÷¤·¤Æ¤¤¤ëÉð´ï¤ò¼ö¤¦¡£";
+#else
+               if (name) return "Curse weapon";
+               if (desc) return "Curses your weapon.";
+#endif
+               if (cast)
+               {
+                       int item;
+                       cptr q, s;
+                       char o_name[MAX_NLEN];
+                       object_type *o_ptr;
+                       u32b f[TR_FLAG_SIZE];
+
+                       item_tester_hook = item_tester_hook_weapon_except_bow;
+#ifdef JP
+                       q = "¤É¤ì¤ò¼ö¤¤¤Þ¤¹¤«¡©";
+                       s = "Éð´ï¤òÁõÈ÷¤·¤Æ¤¤¤Ê¤¤¡£";
+#else
+                       q = "Which weapon do you curse?";
+                       s = "You wield no weapons.";
+#endif
+
+                       if (!get_item(&item, q, s, (USE_EQUIP))) return FALSE;
+
+                       o_ptr = &inventory[item];
+                       object_desc(o_name, o_ptr, OD_NAME_ONLY);
+                       object_flags(o_ptr, f);
+
+#ifdef JP
+                       if (!get_check(format("ËÜÅö¤Ë %s ¤ò¼ö¤¤¤Þ¤¹¤«¡©", o_name))) return FALSE;
+#else
+                       if (!get_check(format("Do you curse %s, really¡©", o_name))) return FALSE;
+#endif
+
+                       if (!one_in_(3) &&
+                               (object_is_artifact(o_ptr) || have_flag(f, TR_BLESSED)))
+                       {
+#ifdef JP
+                               msg_format("%s ¤Ï¼ö¤¤¤òÄ·¤ÍÊÖ¤·¤¿¡£", o_name);
+#else
+                               msg_format("%s resists the effect.", o_name);
+#endif
+                               if (one_in_(3))
+                               {
+                                       if (o_ptr->to_d > 0)
+                                       {
+                                               o_ptr->to_d -= randint1(3) % 2;
+                                               if (o_ptr->to_d < 0) o_ptr->to_d = 0;
+                                       }
+                                       if (o_ptr->to_h > 0)
+                                       {
+                                               o_ptr->to_h -= randint1(3) % 2;
+                                               if (o_ptr->to_h < 0) o_ptr->to_h = 0;
+                                       }
+                                       if (o_ptr->to_a > 0)
+                                       {
+                                               o_ptr->to_a -= randint1(3) % 2;
+                                               if (o_ptr->to_a < 0) o_ptr->to_a = 0;
+                                       }
+#ifdef JP
+                                       msg_format("%s ¤ÏÎô²½¤·¤Æ¤·¤Þ¤Ã¤¿¡£", o_name);
+#else
+                                       msg_format("Your %s was disenchanted!", o_name);
+#endif
+                               }
+                       }
+                       else
+                       {
+                               int power = 0;
+#ifdef JP
+                               msg_format("¶²ÉݤΰŹõ¥ª¡¼¥é¤¬¤¢¤Ê¤¿¤Î%s¤òÊñ¤ß¹þ¤ó¤À¡ª", o_name);
+#else
+                               msg_format("A terrible black aura blasts your %s!", o_name);
+#endif
+                               o_ptr->curse_flags |= (TRC_CURSED);
+
+                               if (object_is_artifact(o_ptr) || object_is_ego(o_ptr))
+                               {
+
+                                       if (one_in_(3)) o_ptr->curse_flags |= (TRC_HEAVY_CURSE);
+                                       if (one_in_(666))
+                                       {
+                                               o_ptr->curse_flags |= (TRC_TY_CURSE);
+                                               if (one_in_(666)) o_ptr->curse_flags |= (TRC_PERMA_CURSE);
+
+                                               add_flag(o_ptr->art_flags, TR_AGGRAVATE);
+                                               add_flag(o_ptr->art_flags, TR_VORPAL);
+                                               add_flag(o_ptr->art_flags, TR_VAMPIRIC);
+#ifdef JP
+                                               msg_print("·ì¤À¡ª·ì¤À¡ª·ì¤À¡ª");
+#else
+                                               msg_print("Blood, Blood, Blood!");
+#endif
+                                               power = 2;
+                                       }
+                               }
+
+                               o_ptr->curse_flags |= get_curse(power, o_ptr);
+                       }
+
+                       p_ptr->update |= (PU_BONUS);
+                       add = FALSE;
+               }
+               break;
+
+       case 6:
+#ifdef JP
+               if (name) return "¼Ù°­´¶ÃÎ";
+               if (desc) return "¼þ°Ï¤Î¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
+#else
+               if (name) return "Evil detection";
+               if (desc) return "Detects evil monsters.";
+#endif
+               if (info) return info_range(MAX_SIGHT);
+               if (cast)
+               {
+#ifdef JP
+                       msg_print("¼Ù°­¤ÊÀ¸Êª¤Î¸ºß¤ò´¶¤¸¼è¤í¤¦¤È¤·¤¿¡£");
+#else
+                       msg_print("You attend to the presence of evil creatures.");
+#endif
+               }
+               break;
+
+       case 7:
+#ifdef JP
+               if (name) return "²æËý";
+               if (desc) return "¿ô¥¿¡¼¥ó¹¶·â¤òÂѤ¨¤¿¸å¡¢¼õ¤±¤¿¥À¥á¡¼¥¸¤òÃϹö¤Î¶È²Ð¤È¤·¤Æ¼þ°Ï¤ËÊü½Ð¤¹¤ë¡£";
+#else
+               if (name) return "Patience";
+               if (desc) return "Bursts hell fire strongly after patients any damage while few turns.";
+#endif
+               power = MIN(200, (p_ptr->magic_num1[2] * 2));
+               if (info) return info_damage(0, 0, power);
+               if (cast)
+               {
+                       int a = 3 - (p_ptr->pspeed - 100) / 10;
+                       int r = 3 + randint1(3) + MAX(0, MIN(3, a));
+
+                       if (p_ptr->magic_num2[2] > 0)
+                       {
+#ifdef JP
+                               msg_print("¤¹¤Ç¤Ë²æËý¤ò¤·¤Æ¤¤¤ë¡£");
+#else
+                               msg_print("You are already patienting.");
+#endif
+                               return NULL;
+                       }
+
+                       p_ptr->magic_num2[1] = 1;
+                       p_ptr->magic_num2[2] = r;
+                       p_ptr->magic_num1[2] = 0;
+#ifdef JP
+                       msg_print("¤¸¤Ã¤ÈÂѤ¨¤ë¤³¤È¤Ë¤·¤¿¡£");
+#else
+                       msg_print("You decide to patient all damages.");
+#endif
+                       add = FALSE;
+               }
+               if (cont)
+               {
+                       int rad = 2 + (power / 50);
+
+                       p_ptr->magic_num2[2]--;
+
+                       if ((p_ptr->magic_num2[2] <= 0) || (power >= 200))
+                       {
+#ifdef JP
+                               msg_print("²æËý¤¬²ò¤«¤ì¤¿¡ª");
+#else
+                               msg_print("Time for end of patioence!");
+#endif
+                               if (power)
+                               {
+                                       project(0, rad, py, px, power, GF_HELL_FIRE,
+                                               (PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL), -1);
+                               }
+                               if (p_ptr->wizard)
+                               {
+#ifdef JP
+                                       msg_format("%dÅÀ¤Î¥À¥á¡¼¥¸¤òÊÖ¤·¤¿¡£", power);
+#else
+                                       msg_format("You return %d damages.", power);
+#endif
+                               }
+
+                               /* Reset */
+                               p_ptr->magic_num2[1] = 0;
+                               p_ptr->magic_num2[2] = 0;
+                               p_ptr->magic_num1[2] = 0;
+                       }
+               }
+               break;
+
+       /*** 2nd book (8-15) ***/
+       case 8:
+#ifdef JP
+               if (name) return "ɹ¤Î³»";
+               if (desc) return "ɹ¤Î¥ª¡¼¥é¤ò¿È¤Ë¤Þ¤È¤¤¡¢ËɸæÎϤ¬¾å¾º¤¹¤ë¡£";
+#else
+               if (name) return "Ice armor";
+               if (desc) return "Gives fire aura and bonus to AC.";
+#endif
+               if (cast)
+               {
+#ifdef JP
+                       msg_print("ÂΤ¬É¹¤Î³»¤Çʤ¤ï¤ì¤¿¡£");
+#else
+                       msg_print("You have enveloped by ice armor!");
+#endif
+               }
+               if (stop)
+               {
+#ifdef JP
+                       msg_print("ɹ¤Î³»¤¬¾Ã¤¨µî¤Ã¤¿¡£");
+#else
+                       msg_print("Ice armor disappeared.");
+#endif
+               }
+               break;
+
+       case 9:
+#ifdef JP
+               if (name) return "½Å½ý¤Î¼£Ìþ";
+               if (desc) return "ÂÎÎϤä½ý¤ò¿¾¯²óÉü¤µ¤»¤ë¡£";
+#else
+               if (name) return "Cure serious wounds";
+               if (desc) return "Heals cut and HP more.";
+#endif
+               if (info) return info_heal(2, 10, 0);
+               if (cast)
+               {
+#ifdef JP
+                       msg_print("µ¤Ê¬¤¬Îɤ¯¤Ê¤Ã¤Æ¤¯¤ë¡£");
+#else
+                       msg_print("You feel better and better.");
+#endif
+               }
+               if (cast || cont)
+               {
+                       hp_player(damroll(2, 10));
+                       set_cut((p_ptr->cut / 2) - 10);
+               }
+               break;
+
+       case 10:
+#ifdef JP
+               if (name) return "ÌôÉʵÛÆþ";
+               if (desc) return "¼öʸ±Ó¾§¤òÃæ»ß¤¹¤ë¤³¤È¤Ê¤¯¡¢Ìô¤Î¸ú²Ì¤òÆÀ¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
+#else
+               if (name) return "Inhail potion";
+               if (desc) return "Quaffs a potion without canceling of casting a spell.";
+#endif
+               if (cast)
+               {
+                       p_ptr->magic_num1[0] |= (1L << HEX_INHAIL);
+                       do_cmd_quaff_potion();
+                       p_ptr->magic_num1[0] &= ~(1L << HEX_INHAIL);
+                       add = FALSE;
+               }
+               break;
+
+       case 11:
+#ifdef JP
+               if (name) return "µÛ·ì̸";
+               if (desc) return "»ë³¦Æâ¤Î¥â¥ó¥¹¥¿¡¼¤ËÈù¼åÎ̤ÎÀ¸Ì¿Îϵۼý¤Î¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£Í¿¤¨¤¿¥À¥á¡¼¥¸¤Îʬ¡¢ÂÎÎϤ¬²óÉü¤¹¤ë¡£";
+#else
+               if (name) return "Vampiric mist";
+               if (desc) return "Deals few dameges of drain life to all monsters in your sight.";
+#endif
+               power = (plev / 2) + 5;
+               if (info) return info_damage(1, power, 0);
+               if (cast || cont)
+               {
+                       project_hack(GF_OLD_DRAIN, randint1(power));
+               }
+               break;
+
+       case 12:
+#ifdef JP
+               if (name) return "Ëâ·õ²½";
+               if (desc) return "Éð´ï¤Î¹¶·âÎϤò¾å¤²¤ë¡£ÀÚ¤ìÌ£¤òÆÀ¡¢¼ö¤¤¤Ë±þ¤¸¤ÆÍ¿¤¨¤ë¥À¥á¡¼¥¸¤¬¾å¾º¤·¡¢Á±Îɤʥâ¥ó¥¹¥¿¡¼¤ËÂФ¹¤ë¥À¥á¡¼¥¸¤¬2Çܤˤʤ롣";
+#else
+               if (name) return "Swords to runeswords";
+               if (desc) return "Gives vorpal ability to your weapon. Increases damages by your weapon acccording to curse of your weapon.";
+#endif
+               if (cast)
+               {
+#ifdef JP
+                       msg_print("¤¢¤Ê¤¿¤ÎÉð´ï¤¬¹õ¤¯µ±¤¤¤¿¡£");
+#else
+                       if (!empty_hands(FALSE))
+                               msg_print("Your weapons glow bright black.");
+                       else
+                               msg_print("Your weapon glows bright black.");
+#endif
+               }
+               if (stop)
+               {
+#ifdef JP
+                       msg_print("Éð´ï¤Îµ±¤­¤¬¾Ã¤¨µî¤Ã¤¿¡£");
+#else
+                       msg_format("Brightness of weapon%s disappeared.", (empty_hands(FALSE)) ? "" : "s");
+#endif
+               }
+               break;
+
+       case 13:
+#ifdef JP
+               if (name) return "º®Íð¤Î¼ê";
+               if (desc) return "¹¶·â¤·¤¿ºÝ¥â¥ó¥¹¥¿¡¼¤òº®Í𤵤»¤ë¡£";
+#else
+               if (name) return "Touch of confusion";
+               if (desc) return "Confuses a monster when you attack.";
+#endif
+               if (cast)
+               {
+#ifdef JP
+                       msg_print("¤¢¤Ê¤¿¤Î¼ê¤¬ÀÖ¤¯µ±¤­»Ï¤á¤¿¡£");
+#else
+                       msg_print("Your hands glow bright red.");
+#endif
+               }
+               if (stop)
+               {
+#ifdef JP
+                       msg_print("¼ê¤Îµ±¤­¤¬¤Ê¤¯¤Ê¤Ã¤¿¡£");
+#else
+                       msg_print("Brightness on your hands disappeard.");
+#endif
+               }
+               break;
+
+       case 14:
+#ifdef JP
+               if (name) return "ÆùÂζ¯²½";
+               if (desc) return "½Ñ¼Ô¤ÎÏÓÎÏ¡¢´ïÍѤµ¡¢Âѵ×ÎϤò¾å¾º¤µ¤»¤ë¡£¹¶·â²ó¿ô¤Î¾å¸Â¤ò 1 Áý²Ã¤µ¤»¤ë¡£";
+#else
+               if (name) return "Building up";
+               if (desc) return "Attempts to increases your strength, dexterity and constitusion.";
+#endif
+               if (cast)
+               {
+#ifdef JP
+                       msg_print("¿ÈÂΤ¬¶¯¤¯¤Ê¤Ã¤¿µ¤¤¬¤·¤¿¡£");
+#else
+                       msg_print("You feel your body is developed more now.");
+#endif
+               }
+               break;
+
+       case 15:
+#ifdef JP
+               if (name) return "È¿¥Æ¥ì¥Ý¡¼¥È·ë³¦";
+               if (desc) return "»ë³¦Æâ¤Î¥â¥ó¥¹¥¿¡¼¤Î¥Æ¥ì¥Ý¡¼¥È¤òÁ˳²¤¹¤ë¥Ð¥ê¥¢¤òÄ¥¤ë¡£";
+#else
+               if (name) return "Anti teleport barrier";
+               if (desc) return "Obstructs all teleportations by monsters in your sight.";
+#endif
+               power = plev * 3 / 2;
+               if (info) return info_power(power);
+               if (cast)
+               {
+#ifdef JP
+                       msg_print("¥Æ¥ì¥Ý¡¼¥È¤òËɤ°¼ö¤¤¤ò¤«¤±¤¿¡£");
+#else
+                       msg_print("You feel anyone can not teleport except you.");
+#endif
+               }
+               break;
+
+       /*** 3rd book (16-23) ***/
+       case 16:
+#ifdef JP
+               if (name) return "¾×·â¤Î¥¯¥í¡¼¥¯";
+               if (desc) return "Åŵ¤¤Î¥ª¡¼¥é¤ò¿È¤Ë¤Þ¤È¤¤¡¢Æ°¤­¤¬Â®¤¯¤Ê¤ë¡£";
+#else
+               if (name) return "Cloak of shock";
+               if (desc) return "Gives lightning aura and a bonus to speed.";
+#endif
+               if (cast)
+               {
+#ifdef JP
+                       msg_print("ÂΤ¬°ðºÊ¤Î¥ª¡¼¥é¤Çʤ¤ï¤ì¤¿¡£");
+#else
+                       msg_print("You have enveloped by electrical aura!");
+#endif
+               }
+               if (stop)
+               {
+#ifdef JP
+                       msg_print("°ðºÊ¤Î¥ª¡¼¥é¤¬¾Ã¤¨µî¤Ã¤¿¡£");
+#else
+                       msg_print("Electrical aura disappeared.");
+#endif
+               }
+               break;
+
+       case 17:
+#ifdef JP
+               if (name) return "Ã×Ì¿½ý¤Î¼£Ìþ";
+               if (desc) return "ÂÎÎϤä½ý¤ò²óÉü¤µ¤»¤ë¡£";
+#else
+               if (name) return "Cure critical wounds";
+               if (desc) return "Heals cut and HP greatry.";
+#endif
+               if (info) return info_heal(4, 10, 0);
+               if (cast)
+               {
+#ifdef JP
+                       msg_print("µ¤Ê¬¤¬Îɤ¯¤Ê¤Ã¤Æ¤¯¤ë¡£");
+#else
+                       msg_print("You feel better and better.");
+#endif
+               }
+               if (cast || cont)
+               {
+                       hp_player(damroll(4, 10));
+                       set_stun(0);
+                       set_cut(0);
+                       set_poisoned(0);
+               }
+               break;
+
+       case 18:
+#ifdef JP
+               if (name) return "¼öÎÏÉõÆþ";
+               if (desc) return "ËâË¡¤ÎÆ»¶ñ¤ËËâÎϤòºÆ½¼Å¶¤¹¤ë¡£";
+#else
+               if (name) return "Recharging";
+               if (desc) return "Recharges a magic device.";
+#endif
+               power = plev * 2;
+               if (info) return info_power(power);
+               if (cast)
+               {
+                       if (!recharge(power)) return NULL;
+                       add = FALSE;
+               }
+               break;
+
+       case 19:
+#ifdef JP
+               if (name) return "»à¼ÔÉü³è";
+               if (desc) return "»àÂΤòÁɤ餻¤Æ¥Ú¥Ã¥È¤Ë¤¹¤ë¡£";
+#else
+               if (name) return "Animate Dead";
+               if (desc) return "Raises corpses and skeletons from dead.";
+#endif
+               if (cast)
+               {
+#ifdef JP
+                       msg_print("»à¼Ô¤Ø¤Î¸Æ¤Ó¤«¤±¤ò»Ï¤á¤¿¡£");
+#else
+                       msg_print("You start to call deads.!");
+#endif
+               }
+               if (cast || cont)
+               {
+                       animate_dead(0, py, px);
+               }
+               break;
+
+       case 20:
+#ifdef JP
+               if (name) return "Ëɶñ¼öÇû";
+               if (desc) return "ÁõÈ÷¤·¤Æ¤¤¤ëËɶñ¤Ë¼ö¤¤¤ò¤«¤±¤ë¡£";
+#else
+               if (name) return "Curse armor";
+               if (desc) return "Curse a piece of armour that you wielding.";
+#endif
+               if (cast)
+               {
+                       int item;
+                       cptr q, s;
+                       char o_name[MAX_NLEN];
+                       object_type *o_ptr;
+                       u32b f[TR_FLAG_SIZE];
+
+                       item_tester_hook = object_is_armour;
+#ifdef JP
+                       q = "¤É¤ì¤ò¼ö¤¤¤Þ¤¹¤«¡©";
+                       s = "Ëɶñ¤òÁõÈ÷¤·¤Æ¤¤¤Ê¤¤¡£";
+#else
+                       q = "Which piece of armour do you curse?";
+                       s = "You wield no piece of armours.";
+#endif
+
+                       if (!get_item(&item, q, s, (USE_EQUIP))) return FALSE;
+
+                       o_ptr = &inventory[item];
+                       object_desc(o_name, o_ptr, OD_NAME_ONLY);
+                       object_flags(o_ptr, f);
+
+#ifdef JP
+                       if (!get_check(format("ËÜÅö¤Ë %s ¤ò¼ö¤¤¤Þ¤¹¤«¡©", o_name))) return FALSE;
+#else
+                       if (!get_check(format("Do you curse %s, really¡©", o_name))) return FALSE;
+#endif
+
+                       if (!one_in_(3) &&
+                               (object_is_artifact(o_ptr) || have_flag(f, TR_BLESSED)))
+                       {
+#ifdef JP
+                               msg_format("%s ¤Ï¼ö¤¤¤òÄ·¤ÍÊÖ¤·¤¿¡£", o_name);
+#else
+                               msg_format("%s resists the effect.", o_name);
+#endif
+                               if (one_in_(3))
+                               {
+                                       if (o_ptr->to_d > 0)
+                                       {
+                                               o_ptr->to_d -= randint1(3) % 2;
+                                               if (o_ptr->to_d < 0) o_ptr->to_d = 0;
+                                       }
+                                       if (o_ptr->to_h > 0)
+                                       {
+                                               o_ptr->to_h -= randint1(3) % 2;
+                                               if (o_ptr->to_h < 0) o_ptr->to_h = 0;
+                                       }
+                                       if (o_ptr->to_a > 0)
+                                       {
+                                               o_ptr->to_a -= randint1(3) % 2;
+                                               if (o_ptr->to_a < 0) o_ptr->to_a = 0;
+                                       }
+#ifdef JP
+                                       msg_format("%s ¤ÏÎô²½¤·¤Æ¤·¤Þ¤Ã¤¿¡£", o_name);
+#else
+                                       msg_format("Your %s was disenchanted!", o_name);
+#endif
+                               }
+                       }
+                       else
+                       {
+                               int power = 0;
+#ifdef JP
+                               msg_format("¶²ÉݤΰŹõ¥ª¡¼¥é¤¬¤¢¤Ê¤¿¤Î%s¤òÊñ¤ß¹þ¤ó¤À¡ª", o_name);
+#else
+                               msg_format("A terrible black aura blasts your %s!", o_name);
+#endif
+                               o_ptr->curse_flags |= (TRC_CURSED);
+
+                               if (object_is_artifact(o_ptr) || object_is_ego(o_ptr))
+                               {
+
+                                       if (one_in_(3)) o_ptr->curse_flags |= (TRC_HEAVY_CURSE);
+                                       if (one_in_(666))
+                                       {
+                                               o_ptr->curse_flags |= (TRC_TY_CURSE);
+                                               if (one_in_(666)) o_ptr->curse_flags |= (TRC_PERMA_CURSE);
+
+                                               add_flag(o_ptr->art_flags, TR_AGGRAVATE);
+                                               add_flag(o_ptr->art_flags, TR_RES_POIS);
+                                               add_flag(o_ptr->art_flags, TR_RES_DARK);
+                                               add_flag(o_ptr->art_flags, TR_RES_NETHER);
+#ifdef JP
+                                               msg_print("·ì¤À¡ª·ì¤À¡ª·ì¤À¡ª");
+#else
+                                               msg_print("Blood, Blood, Blood!");
+#endif
+                                               power = 2;
+                                       }
+                               }
+
+                               o_ptr->curse_flags |= get_curse(power, o_ptr);
+                       }
+
+                       p_ptr->update |= (PU_BONUS);
+                       add = FALSE;
+               }
+               break;
+
+       case 21:
+#ifdef JP
+               if (name) return "±Æ¤Î¥¯¥í¡¼¥¯";
+               if (desc) return "±Æ¤Î¥ª¡¼¥é¤ò¿È¤Ë¤Þ¤È¤¤¡¢Å¨¤Ë±Æ¤Î¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
+#else
+               if (name) return "Cloak of shadow";
+               if (desc) return "Gives aura of shadow.";
+#endif
+               if (cast)
+               {
+                       object_type *o_ptr = &inventory[INVEN_OUTER];
+
+                       if (!o_ptr->k_idx)
+                       {
+#ifdef JP
+                               msg_print("¥¯¥í¡¼¥¯¤ò¿È¤Ë¤Ä¤±¤Æ¤¤¤Ê¤¤¡ª");
+#else
+                               msg_print("You don't ware any cloak.");
+#endif
+                               return NULL;
+                       }
+                       else if (!object_is_cursed(o_ptr))
+                       {
+#ifdef JP
+                               msg_print("¥¯¥í¡¼¥¯¤Ï¼ö¤ï¤ì¤Æ¤¤¤Ê¤¤¡ª");
+#else
+                               msg_print("Your cloak is not cursed.");
+#endif
+                               return NULL;
+                       }
+                       else
+                       {
+#ifdef JP
+                               msg_print("±Æ¤Î¥ª¡¼¥é¤ò¿È¤Ë¤Þ¤È¤Ã¤¿¡£");
+#else
+                               msg_print("You have enveloped by shadow aura!");
+#endif
+                       }
+               }
+               if (cont)
+               {
+                       object_type *o_ptr = &inventory[INVEN_OUTER];
+
+                       if ((!o_ptr->k_idx) || (!object_is_cursed(o_ptr)))
+                       {
+                               do_spell(REALM_HEX, spell, SPELL_STOP);
+                               p_ptr->magic_num1[0] &= ~(1L << spell);
+                               p_ptr->magic_num2[0]--;
+                               if (!p_ptr->magic_num2[0]) set_action(ACTION_NONE);
+                       }
+               }
+               if (stop)
+               {
+#ifdef JP
+                       msg_print("±Æ¤Î¥ª¡¼¥é¤¬¾Ã¤¨µî¤Ã¤¿¡£");
+#else
+                       msg_print("Shadow aura disappeared.");
+#endif
+               }
+               break;
+
+       case 22:
+#ifdef JP
+               if (name) return "¶ìÄˤòËâÎϤË";
+               if (desc) return "»ë³¦Æâ¤Î¥â¥ó¥¹¥¿¡¼¤ËÀº¿À¥À¥á¡¼¥¸Í¿¤¨¡¢ËâÎϤòµÛ¤¤¼è¤ë¡£";
+#else
+               if (name) return "Pains to mana";
+               if (desc) return "Deals psychic damages to all monsters in sight, and drains some mana.";
+#endif
+               power = plev * 3 / 2;
+               if (info) return info_damage(1, power, 0);
+               if (cast || cont)
+               {
+                       project_hack(GF_PSI_DRAIN, randint1(power));
+               }
+               break;
+
+       case 23:
+#ifdef JP
+               if (name) return "ÌܤˤÏÌܤò";
+               if (desc) return "ÂÇ·â¤äËâË¡¤Ç¼õ¤±¤¿¥À¥á¡¼¥¸¤ò¡¢¹¶·â¸µ¤Î¥â¥ó¥¹¥¿¡¼¤Ë¤âÍ¿¤¨¤ë¡£";
+#else
+               if (name) return "Eye for an eye";
+               if (desc) return "Returns same damage which you got to the monster which damaged you.";
+#endif
+               if (cast)
+               {
+#ifdef JP
+                       msg_print("Éü½²¤·¤¿¤¤Íß˾¤Ë¤«¤é¤ì¤¿¡£");
+#else
+                       msg_print("You wish strongly you want to revenge anything.");
+#endif
+               }
+               break;
+
+       /*** 4th book (24-31) ***/
+       case 24:
+#ifdef JP
+               if (name) return "È¿Áý¿£·ë³¦";
+               if (desc) return "¤½¤Î³¬¤ÎÁý¿£¤¹¤ë¥â¥ó¥¹¥¿¡¼¤ÎÁý¿£¤òÁ˻ߤ¹¤ë¡£";
+#else
+               if (name) return "Anti multiply barrier";
+               if (desc) return "Obstructs all multiplying by monsters in entire floor.";
+#endif
+               if (cast)
+               {
+#ifdef JP
+                       msg_print("Áý¿£¤òÁ˻ߤ¹¤ë¼ö¤¤¤ò¤«¤±¤¿¡£");
+#else
+                       msg_print("You feel anyone can not already multiply.");
+#endif
+               }
+               break;
+
+       case 25:
+#ifdef JP
+               if (name) return "À¸Ì¿ÎÏÉü³è";
+               if (desc) return "·Ð¸³Ãͤò½ù¡¹¤ËÉü³è¤·¡¢¸º¾¯¤·¤¿Ç½ÎÏÃͤò²óÉü¤µ¤»¤ë¡£";
+#else
+               if (name) return "Restore life";
+               if (desc) return "Restores life energy and status.";
+#endif
+               if (cast)
+               {
+#ifdef JP
+                       msg_print("À¸Ì¿ÎϤ¬Ìá¤ê»Ï¤á¤¿¡£");
+#else
+                       msg_print("You feel your life energy starting to return.");
+#endif
+               }
+               if (cast || cont)
+               {
+                       bool flag = FALSE;
+                       int d = (p_ptr->max_exp - p_ptr->exp);
+                       int r = (p_ptr->exp / 20);
+                       int i;
+
+                       if (d > 0)
+                       {
+                               if (d < r)
+                                       p_ptr->exp = p_ptr->max_exp;
+                               else
+                                       p_ptr->exp += r;
+
+                               /* Check the experience */
+                               check_experience();
+
+                               flag = TRUE;
+                       }
+                       for (i = A_STR; i < 6; i ++)
+                       {
+                               if (p_ptr->stat_cur[i] < p_ptr->stat_max[i])
+                               {
+                                       if (p_ptr->stat_cur[i] < 18)
+                                               p_ptr->stat_cur[i]++;
+                                       else
+                                               p_ptr->stat_cur[i] += 10;
+
+                                       if (p_ptr->stat_cur[i] > p_ptr->stat_max[i])
+                                               p_ptr->stat_cur[i] = p_ptr->stat_max[i];
+
+                                       /* Recalculate bonuses */
+                                       p_ptr->update |= (PU_BONUS);
+
+                                       flag = TRUE;
+                               }
+                       }
+
+                       if (!flag)
+                       {
+#ifdef JP
+                               msg_format("%s¤Î¼öʸ¤Î±Ó¾§¤ò¤ä¤á¤¿¡£", do_spell(REALM_HEX, HEX_RESTORE, SPELL_NAME));
+#else
+                               msg_format("Finish casting '%^s'.", do_spell(REALM_HEX, HEX_RESTORE, SPELL_NAME));
+#endif
+                               p_ptr->magic_num1[0] &= ~(1L << HEX_RESTORE);
+                               if (cont) p_ptr->magic_num2[0]--;
+                               if (p_ptr->magic_num2) p_ptr->action = ACTION_NONE;
+
+                               /* Redraw status */
+                               p_ptr->update |= (PU_BONUS | PU_HP | PU_MANA | PU_SPELLS);
+                               p_ptr->redraw |= (PR_EXTRA);
+
+                               return "";
+                       }
+               }
+               break;
+
+       case 26:
+#ifdef JP
+               if (name) return "¼öÎϵۼý";
+               if (desc) return "¼ö¤ï¤ì¤¿Éð´ï¤Î¼ö¤¤¤òµÛ¼ý¤·¤ÆËâÎϤò²óÉü¤¹¤ë¡£";
+#else
+               if (name) return "Drain curse power";
+               if (desc) return "Drains curse on your weapon and heals SP a little.";
+#endif
+               if (cast)
+               {
+                       int item;
+                       cptr s, q;
+                       u32b f[TR_FLAG_SIZE];
+                       object_type *o_ptr;
+
+                       item_tester_hook = item_tester_hook_cursed;
+#ifdef JP
+                       q = "¤É¤ÎÁõÈ÷Éʤ«¤éµÛ¼ý¤·¤Þ¤¹¤«¡©";
+                       s = "¼ö¤ï¤ì¤¿¥¢¥¤¥Æ¥à¤òÁõÈ÷¤·¤Æ¤¤¤Ê¤¤¡£";
+#else
+                       q = "Which cursed equipment do you drain mana from?";
+                       s = "You have no cursed equipment.";
+#endif
+
+                       if (!get_item(&item, q, s, (USE_EQUIP))) return FALSE;
+
+                       o_ptr = &inventory[item];
+                       object_flags(o_ptr, f);
+
+                       p_ptr->csp += (p_ptr->lev / 5) + randint1(p_ptr->lev / 5);
+                       if (have_flag(f, TR_TY_CURSE) || (o_ptr->curse_flags & TRC_TY_CURSE)) p_ptr->csp += randint1(5);
+                       if (p_ptr->csp > p_ptr->msp) p_ptr->csp = p_ptr->msp;
+
+                       if (o_ptr->curse_flags & TRC_PERMA_CURSE)
+                       {
+                               /* Nothing */
+                       }
+                       else if (o_ptr->curse_flags & TRC_HEAVY_CURSE)
+                       {
+                               if (one_in_(7))
+                               {
+#ifdef JP
+                                       msg_print("¼ö¤¤¤òÁ´¤ÆµÛ¤¤¼è¤Ã¤¿¡£");
+#else
+                                       msg_print("Heavy curse vanished away.");
+#endif
+                                       o_ptr->curse_flags = 0L;
+                               }
+                       }
+                       else if ((o_ptr->curse_flags & (TRC_CURSED)) && one_in_(3))
+                       {
+#ifdef JP
+                               msg_print("¼ö¤¤¤òÁ´¤ÆµÛ¤¤¼è¤Ã¤¿¡£");
+#else
+                               msg_print("Curse vanished away.");
+#endif
+                               o_ptr->curse_flags = 0L;
+                       }
+
+                       add = FALSE;
+               }
+               break;
+
+       case 27:
+#ifdef JP
+               if (name) return "µÛ·ì¤Î¿Ï";
+               if (desc) return "µÛ·ì°À­¤Ç¹¶·â¤¹¤ë¡£";
+#else
+               if (name) return "Swords to vampires";
+               if (desc) return "Gives vampiric ability to your weapon.";
+#endif
+               if (cast)
+               {
+#ifdef JP
+                       msg_print("¤¢¤Ê¤¿¤ÎÉð´ï¤¬·ì¤òÍߤ·¤Æ¤¤¤ë¡£");
+#else
+                       if (!empty_hands(FALSE))
+                               msg_print("Your weapons want more blood now.");
+                       else
+                               msg_print("Your weapon wants more blood now.");
+#endif
+               }
+               if (stop)
+               {
+#ifdef JP
+                       msg_print("Éð´ï¤Î³é˾¤¬¾Ã¤¨µî¤Ã¤¿¡£");
+#else
+                       msg_format("Thirsty of weapon%s disappeared.", (empty_hands(FALSE)) ? "" : "s");
+#endif
+               }
+               break;
+
+       case 28:
+#ifdef JP
+               if (name) return "Û¯Û°¤Î¸ÀÍÕ";
+               if (desc) return "»ë³¦Æâ¤Î¥â¥ó¥¹¥¿¡¼¤òÛ¯Û°¤È¤µ¤»¤ë¡£";
+#else
+               if (name) return "Word of stun";
+               if (desc) return "Stuns all monsters in your sight.";
+#endif
+               power = plev * 4;
+               if (info) return info_power(power);
+               if (cast || cont)
+               {
+                       stun_monsters(power);
+               }
+               break;
+
+       case 29:
+#ifdef JP
+               if (name) return "±Æ°ÜÆ°";
+               if (desc) return "¥â¥ó¥¹¥¿¡¼¤ÎÎ٤Υޥ¹¤Ë½Ö´Ö°ÜÆ°¤¹¤ë¡£";
+#else
+               if (name) return "Moving into shadow";
+               if (desc) return "Teleports you close to a monster.";
+#endif
+               if (cast)
+               {
+                       int i, y, x, dir;
+                       bool flag;
+
+                       for (i = 0; i < 3; i++)
+                       {
+                               if (!tgt_pt(&x, &y)) return FALSE;
+
+                               flag = FALSE;
+
+                               for (dir = 0; dir < 8; dir++)
+                               {
+                                       int dy = y + ddy_ddd[dir];
+                                       int dx = x + ddx_ddd[dir];
+                                       if (dir == 5) continue;
+                                       if(cave[dy][dx].m_idx) flag = TRUE;
+                               }
+
+                               if (!cave_empty_bold(y, x) || (cave[y][x].info & CAVE_ICKY) ||
+                                       (distance(y, x, py, px) > plev + 2))
+                               {
+#ifdef JP
+                                       msg_print("¤½¤³¤Ë¤Ï°ÜÆ°¤Ç¤­¤Ê¤¤¡£");
+#else
+                                       msg_print("Can not teleport to there.");
+#endif
+                                       continue;
+                               }
+                               break;
+                       }
+
+                       if (flag && randint0(plev * plev / 2))
+                       {
+                               teleport_player_to(y, x, 0L);
+                       }
+                       else
+                       {
+#ifdef JP
+                               msg_print("¤ª¤Ã¤È¡ª");
+#else
+                               msg_print("Oops!");
+#endif
+                               teleport_player(30, 0L);
+                       }
+
+                       add = FALSE;
+               }
+               break;
+
+       case 30:
+#ifdef JP
+               if (name) return "È¿ËâË¡·ë³¦";
+               if (desc) return "»ë³¦Æâ¤Î¥â¥ó¥¹¥¿¡¼¤ÎËâË¡¤òÁ˳²¤¹¤ë¥Ð¥ê¥¢¤òÄ¥¤ë¡£";
+#else
+               if (name) return "Anti magic barrier";
+               if (desc) return "Obstructs all magic spell of monsters in your sight.";
+#endif
+               power = plev * 3 / 2;
+               if (info) return info_power(power);
+               if (cast)
+               {
+#ifdef JP
+                       msg_print("ËâË¡¤òËɤ°¼ö¤¤¤ò¤«¤±¤¿¡£");
+#else
+                       msg_print("You feel anyone can not cast spells except you.");
+#endif
+               }
+               break;
+
+       case 31:
+#ifdef JP
+               if (name) return "Éü½²¤ÎÀë¹ð";
+               if (desc) return "¿ô¥¿¡¼¥ó¸å¤Ë¤½¤ì¤Þ¤Ç¼õ¤±¤¿¥À¥á¡¼¥¸¤Ë±þ¤¸¤¿°ÒÎϤÎÃϹö¤Î¹å²Ð¤ÎÃƤòÊü¤Ä¡£";
+#else
+               if (name) return "Revenge sentence";
+               if (desc) return "Fires  a ball of hell fire to try revenging after few turns.";
+#endif
+               power = p_ptr->magic_num1[2];
+               if (info) return info_damage(0, 0, power);
+               if (cast)
+               {
+                       int r;
+                       int a = 3 - (p_ptr->pspeed - 100) / 10;
+                       r = 1 + randint1(2) + MAX(0, MIN(3, a));
+
+                       if (p_ptr->magic_num2[2] > 0)
+                       {
+#ifdef JP
+                               msg_print("¤¹¤Ç¤ËÉü½²¤ÏÀë¹ðºÑ¤ß¤À¡£");
+#else
+                               msg_print("You already pronounced your revenge.");
+#endif
+                               return NULL;
+                       }
+
+                       p_ptr->magic_num2[1] = 2;
+                       p_ptr->magic_num2[2] = r;
+#ifdef JP
+                       msg_format("¤¢¤Ê¤¿¤ÏÉü½²¤òÀë¹ð¤·¤¿¡£¤¢¤È %d ¥¿¡¼¥ó¡£", r);
+#else
+                       msg_format("You pronounce your revenge. %d turns left.", r);
+#endif
+                       add = FALSE;
+               }
+               if (cont)
+               {
+                       p_ptr->magic_num2[2]--;
+
+                       if (p_ptr->magic_num2[2] <= 0)
+                       {
+                               int dir;
+
+                               if (power)
+                               {
+                                       command_dir = 0;
+
+                                       do
+                                       {
+#ifdef JP
+                                               msg_print("Éü½²¤Î»þ¤À¡ª");
+#else
+                                               msg_print("Time to revenge!");
+#endif
+                                       }
+                                       while (!get_aim_dir(&dir));
+
+                                       fire_ball(GF_HELL_FIRE, dir, power, 1);
+
+                                       if (p_ptr->wizard)
+                                       {
+#ifdef JP
+                                               msg_format("%dÅÀ¤Î¥À¥á¡¼¥¸¤òÊÖ¤·¤¿¡£", power);
+#else
+                                               msg_format("You return %d damages.", power);
+#endif
+                                       }
+                               }
+                               else
+                               {
+#ifdef JP
+                                       msg_print("Éü½²¤¹¤ëµ¤¤¬¼º¤»¤¿¡£");
+#else
+                                       msg_print("You are not a mood to revenge.");
+#endif
+                               }
+                               p_ptr->magic_num1[2] = 0;
+                       }
+               }
+               break;
+       }
+
+       /* start casting */
+       if ((cast) && (add))
+       {
+               /* add spell */
+               p_ptr->magic_num1[0] |= 1L << (spell);
+               p_ptr->magic_num2[0]++;
+
+               if (p_ptr->action != ACTION_SPELL) set_action(ACTION_SPELL);
+       }
+
+       /* Redraw status */
+       if (!info)
+       {
+               p_ptr->update |= (PU_BONUS | PU_HP | PU_MANA | PU_SPELLS);
+               p_ptr->redraw |= (PR_EXTRA | PR_HP | PR_MANA);
+       }
+
+       return "";
+}
+
+
+/*
+ * Do everything for each spell
+ */
+cptr do_spell(int realm, int spell, int mode)
+{
+       switch (realm)
+       {
+       case REALM_LIFE:     return do_life_spell(spell, mode);
+       case REALM_SORCERY:  return do_sorcery_spell(spell, mode);
+       case REALM_NATURE:   return do_nature_spell(spell, mode);
+       case REALM_CHAOS:    return do_chaos_spell(spell, mode);
+       case REALM_DEATH:    return do_death_spell(spell, mode);
+       case REALM_TRUMP:    return do_trump_spell(spell, mode);
+       case REALM_ARCANE:   return do_arcane_spell(spell, mode);
+       case REALM_CRAFT:    return do_craft_spell(spell, mode);
+       case REALM_DAEMON:   return do_daemon_spell(spell, mode);
+       case REALM_CRUSADE:  return do_crusade_spell(spell, mode);
+       case REALM_MUSIC:    return do_music_spell(spell, mode);
+       case REALM_HISSATSU: return do_hissatsu_spell(spell, mode);
+       case REALM_HEX:      return do_hex_spell(spell, mode);
+       }
+
+       return NULL;
+}