#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"
}
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));
else /* RARE */
{
dispel_monsters(150);
- slow_monsters();
- sleep_monsters();
+ slow_monsters(plev);
+ sleep_monsters(plev);
hp_player(300);
}
}
}
else if (die < 31)
{
- poly_monster(dir);
+ poly_monster(dir, plev);
}
else if (die < 36)
{
}
else if (die < 51)
{
- (void)lite_line(dir);
+ (void)lite_line(dir, damroll(6, 8));
}
else if (die < 56)
{
else
{ /* RARE */
dispel_monsters(150);
- slow_monsters();
- sleep_monsters();
+ slow_monsters(plev);
+ sleep_monsters(plev);
hp_player(300);
}
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:
msg_print("It's a teleport trump card.");
#endif
- teleport_player(10, TRUE);
+ teleport_player(10, TELEPORT_PASSIVE);
}
else if (die < 42)
{
msg_print("It's a teleport trump card.");
#endif
- teleport_player(100, TRUE);
+ teleport_player(100, TELEPORT_PASSIVE);
}
else if (die < 52)
{
msg_print("It's a teleport trump card.");
#endif
- teleport_player(200, TRUE);
+ teleport_player(200, TELEPORT_PASSIVE);
}
else if (die < 60)
{
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;
}
-/*
- * 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 "²ø²æ¤ÈÂÎÎϤò¾¯¤·²óÉü¤µ¤»¤ë¡£";
}
break;
- case LIFE_SPEL_BLESS:
+ case 1:
#ifdef JP
if (name) return "½ËÊ¡";
if (desc) return "°ìÄê»þ´Ö¡¢Ì¿ÃæΨ¤ÈAC¤Ë¥Ü¡¼¥Ê¥¹¤òÆÀ¤ë¡£";
}
break;
- case LIFE_SPEL_CAUSE_LIGHT_WOUNDS:
+ case 2:
#ifdef JP
if (name) return "·Ú½ý";
if (desc) return "1ÂΤΥâ¥ó¥¹¥¿¡¼¤Ë¾®¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case LIFE_SPEL_CALL_LIGHT:
+ case 3:
#ifdef JP
if (name) return "¸÷¤Î¾¤´";
if (desc) return "¸÷¸»¤¬¾È¤é¤·¤Æ¤¤¤ëÈϰϤ«Éô²°Á´ÂΤò±Êµ×¤ËÌÀ¤ë¤¯¤¹¤ë¡£";
}
break;
- case LIFE_SPEL_DETECT_DOORS_AND_TRAPS:
+ case 4:
#ifdef JP
if (name) return "æ« & ±£¤·Èâ´¶ÃÎ";
if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î櫤ÈÈâ¤È³¬Ãʤò´¶ÃΤ¹¤ë¡£";
}
break;
- case LIFE_SPEL_CURE_MEDIUM_WOUNDS:
+ case 5:
#ifdef JP
if (name) return "½Å½ý¤Î¼£Ìþ";
if (desc) return "²ø²æ¤ÈÂÎÎϤòÃæÄøÅÙ²óÉü¤µ¤»¤ë¡£";
}
break;
- case LIFE_SPEL_CURE_POISON:
+ case 6:
#ifdef JP
if (name) return "²òÆÇ";
if (desc) return "ÂÎÆâ¤ÎÆǤò¼è¤ê½ü¤¯¡£";
}
break;
- case LIFE_SPEL_SATISFY_HUNGER:
+ case 7:
#ifdef JP
if (name) return "¶õÊ¢½¼Â";
if (desc) return "ËþÊ¢¤Ë¤¹¤ë¡£";
}
break;
- case LIFE_SPEL_REMOVE_CURSE:
+ case 8:
#ifdef JP
if (name) return "²ò¼ö";
if (desc) return "¥¢¥¤¥Æ¥à¤Ë¤«¤«¤Ã¤¿¼å¤¤¼ö¤¤¤ò²ò½ü¤¹¤ë¡£";
}
break;
- case LIFE_SPEL_CAUSE_MEDIUM_WOUNDS:
+ case 9:
#ifdef JP
if (name) return "½Å½ý";
if (desc) return "1ÂΤΥâ¥ó¥¹¥¿¡¼¤ËÃæ¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case LIFE_SPEL_CURE_CRITICAL_WOUNDS:
+ case 10:
#ifdef JP
if (name) return "Ã×Ì¿½ý¤Î¼£Ìþ";
if (desc) return "ÂÎÎϤòÂçÉý¤Ë²óÉü¤µ¤»¡¢Éé½ý¤ÈÛ¯Û°¾õÂÖ¤âÁ´²÷¤¹¤ë¡£";
}
break;
- case LIFE_SPEL_RESIST_HEAT_AND_COLD:
+ case 11:
#ifdef JP
if (name) return "ÂÑÇ®ÂÑ´¨";
if (desc) return "°ìÄê»þ´Ö¡¢²Ð±ê¤ÈÎ䵤¤ËÂФ¹¤ëÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
}
break;
- case LIFE_SPEL_SENSE_SURROUNDINGS:
+ case 12:
#ifdef JP
if (name) return "¼þÊÕ´¶ÃÎ";
if (desc) return "¼þÊÕ¤ÎÃÏ·Á¤ò´¶ÃΤ¹¤ë¡£";
}
break;
- case LIFE_SPEL_TURN_UNDEAD:
+ case 13:
#ifdef JP
if (name) return "¥Ñ¥Ë¥Ã¥¯¡¦¥¢¥ó¥Ç¥Ã¥É";
if (desc) return "»ë³¦Æâ¤Î¥¢¥ó¥Ç¥Ã¥É¤ò¶²Éݤµ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case LIFE_SPEL_HEALING:
+ case 14:
#ifdef JP
if (name) return "ÂÎÎϲóÉü";
if (desc) return "¶Ë¤á¤Æ¶¯ÎϤʲóÉü¼öʸ¤Ç¡¢Éé½ý¤ÈÛ¯Û°¾õÂÖ¤âÁ´²÷¤¹¤ë¡£";
}
break;
- case LIFE_SPEL_GLYPH_OF_WARDING:
+ case 15:
#ifdef JP
if (name) return "·ë³¦¤ÎÌæ¾Ï";
if (desc) return "¼«Ê¬¤Î¤¤¤ë¾²¤Î¾å¤Ë¡¢¥â¥ó¥¹¥¿¡¼¤¬Ä̤êÈ´¤±¤¿¤ê¾¤´¤µ¤ì¤¿¤ê¤¹¤ë¤³¤È¤¬¤Ç¤¤Ê¤¯¤Ê¤ë¥ë¡¼¥ó¤òÉÁ¤¯¡£";
}
break;
- case LIFE_SPEL_DISPEL_CURSE:
+ case 16:
#ifdef JP
if (name) return "*²ò¼ö*";
if (desc) return "¥¢¥¤¥Æ¥à¤Ë¤«¤«¤Ã¤¿¶¯ÎϤʼö¤¤¤ò²ò½ü¤¹¤ë¡£";
}
break;
- case LIFE_SPEL_PERCEPTION:
+ case 17:
#ifdef JP
if (name) return "´Õ¼±";
if (desc) return "¥¢¥¤¥Æ¥à¤ò¼±Ê̤¹¤ë¡£";
}
break;
- case LIFE_SPEL_DISPEL_UNDEAD:
+ case 18:
#ifdef JP
if (name) return "¥¢¥ó¥Ç¥Ã¥ÉÂ໶";
if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥¢¥ó¥Ç¥Ã¥É¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
}
break;
- case LIFE_SPEL_DAY_OF_THE_DOVE:
+ case 19:
#ifdef JP
if (name) return "Æä¤Î¹ï";
if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case LIFE_SPEL_CAUSE_CRITICAL_WOUNDS:
+ case 20:
#ifdef JP
if (name) return "Ã×Ì¿½ý";
if (desc) return "1ÂΤΥâ¥ó¥¹¥¿¡¼¤ËÂç¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case LIFE_SPEL_WORD_OF_RECALL:
+ case 21:
#ifdef JP
if (name) return "µ¢´Ô¤Î¾Û";
if (desc) return "ÃϾå¤Ë¤¤¤ë¤È¤¤Ï¥À¥ó¥¸¥ç¥ó¤ÎºÇ¿¼³¬¤Ø¡¢¥À¥ó¥¸¥ç¥ó¤Ë¤¤¤ë¤È¤¤ÏÃϾå¤Ø¤È°ÜÆ°¤¹¤ë¡£";
}
break;
- case LIFE_SPEL_ALTER_REALITY:
+ case 22:
#ifdef JP
if (name) return "¿¿¼Â¤Îº×ÃÅ";
if (desc) return "¸½ºß¤Î³¬¤òºÆ¹½À®¤¹¤ë¡£";
}
break;
- case LIFE_SPEL_WARDING_TRUE:
+ case 23:
#ifdef JP
if (name) return "¿¿¡¦·ë³¦";
if (desc) return "¼«Ê¬¤Î¤¤¤ë¾²¤È¼þ°Ï8¥Þ¥¹¤Î¾²¤Î¾å¤Ë¡¢¥â¥ó¥¹¥¿¡¼¤¬Ä̤êÈ´¤±¤¿¤ê¾¤´¤µ¤ì¤¿¤ê¤¹¤ë¤³¤È¤¬¤Ç¤¤Ê¤¯¤Ê¤ë¥ë¡¼¥ó¤òÉÁ¤¯¡£";
}
break;
- case LIFE_SPEL_STERILIZATION:
+ case 24:
#ifdef JP
if (name) return "ÉÔÌÓ²½";
if (desc) return "¤³¤Î³¬¤ÎÁý¿£¤¹¤ë¥â¥ó¥¹¥¿¡¼¤¬Áý¿£¤Ç¤¤Ê¤¯¤Ê¤ë¡£";
}
break;
- case LIFE_SPEL_DETECTION:
+ case 25:
#ifdef JP
if (name) return "Á´´¶ÃÎ";
if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¡¢æ«¡¢Èâ¡¢³¬ÃÊ¡¢ºâÊõ¡¢¤½¤·¤Æ¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
}
break;
- case LIFE_SPEL_ANNIHILATE_UNDEAD:
+ case 26:
#ifdef JP
if (name) return "¥¢¥ó¥Ç¥Ã¥É¾ÃÌÇ";
if (desc) return "¼«Ê¬¤Î¼þ°Ï¤Ë¤¤¤ë¥¢¥ó¥Ç¥Ã¥É¤ò¸½ºß¤Î³¬¤«¤é¾Ã¤·µî¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case LIFE_SPEL_CLAIRVOYANCE:
+ case 27:
#ifdef JP
if (name) return "ÀéΤ´ã";
if (desc) return "¤½¤Î³¬Á´ÂΤò±Êµ×¤Ë¾È¤é¤·¡¢¥À¥ó¥¸¥ç¥óÆ⤹¤Ù¤Æ¤Î¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
}
break;
- case LIFE_SPEL_RESTORATION:
+ case 28:
#ifdef JP
if (name) return "Á´Éü³è";
if (desc) return "¤¹¤Ù¤Æ¤Î¥¹¥Æ¡¼¥¿¥¹¤È·Ð¸³Ãͤò²óÉü¤¹¤ë¡£";
}
break;
- case LIFE_SPEL_HEALING_TRUE:
+ case 29:
#ifdef JP
if (name) return "*ÂÎÎϲóÉü*";
if (desc) return "ºÇ¶¯¤Î¼£Ìþ¤ÎËâË¡¤Ç¡¢Éé½ý¤ÈÛ¯Û°¾õÂÖ¤âÁ´²÷¤¹¤ë¡£";
}
break;
- case LIFE_SPEL_HOLY_VISION:
+ case 30:
#ifdef JP
if (name) return "À»¤Ê¤ë¥Ó¥¸¥ç¥ó";
if (desc) return "¥¢¥¤¥Æ¥à¤Î»ý¤ÄǽÎϤò´°Á´¤ËÃΤ롣";
}
break;
- case LIFE_SPEL_ULTIMATE_RESISTANCE:
+ case 31:
#ifdef JP
if (name) return "µæ¶Ë¤ÎÂÑÀ";
if (desc) return "°ìÄê»þ´Ö¡¢¤¢¤é¤æ¤ëÂÑÀ¤òÉÕ¤±¡¢AC¤ÈËâË¡ËɸæǽÎϤò¾å¾º¤µ¤»¤ë¡£";
}
}
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 "¶á¤¯¤ÎÁ´¤Æ¤Î¸«¤¨¤ë¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
}
break;
- case SORC_SPEL_PHASE_DOOR:
+ case 1:
#ifdef JP
if (name) return "¥·¥ç¡¼¥È¡¦¥Æ¥ì¥Ý¡¼¥È";
if (desc) return "¶áµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
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 "¶á¤¯¤ÎÁ´¤Æ¤ÎÈâ¤È櫤ò´¶ÃΤ¹¤ë¡£";
}
break;
- case SORC_SPEL_LIGHT_AREA:
+ case 3:
#ifdef JP
if (name) return "¥é¥¤¥È¡¦¥¨¥ê¥¢";
if (desc) return "¸÷¸»¤¬¾È¤é¤·¤Æ¤¤¤ëÈϰϤ«Éô²°Á´ÂΤò±Êµ×¤ËÌÀ¤ë¤¯¤¹¤ë¡£";
}
break;
- case SORC_SPEL_CONFUSE_MONSTER:
+ case 4:
#ifdef JP
if (name) return "¥Ñ¥Ë¥Ã¥¯¡¦¥â¥ó¥¹¥¿¡¼";
if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤòº®Í𤵤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case SORC_SPEL_TELEPORT:
+ case 5:
#ifdef JP
if (name) return "¥Æ¥ì¥Ý¡¼¥È";
if (desc) return "±óµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
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ÂΤò̲¤é¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
{
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 "¾ó/ËâË¡ËÀ¤Î½¼Å¶²ó¿ô¤òÁý¤ä¤¹¤«¡¢½¼Å¶Ãæ¤Î¥í¥Ã¥É¤Î½¼Å¶»þ´Ö¤ò¸º¤é¤¹¡£";
}
break;
- case SORC_SPEL_MAGIC_MAPPING:
+ case 8:
#ifdef JP
if (name) return "ËâË¡¤ÎÃÏ¿Þ";
if (desc) return "¼þÊÕ¤ÎÃÏ·Á¤ò´¶ÃΤ¹¤ë¡£";
}
break;
- case SORC_SPEL_IDENTIFY:
+ case 9:
#ifdef JP
if (name) return "´ÕÄê";
if (desc) return "¥¢¥¤¥Æ¥à¤ò¼±Ê̤¹¤ë¡£";
}
break;
- case SORC_SPEL_SLOW_MONSTER:
+ case 10:
#ifdef JP
if (name) return "¥¹¥í¥¦¡¦¥â¥ó¥¹¥¿¡¼";
if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò¸ºÂ®¤µ¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
{
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 "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò̲¤é¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
if (cast)
{
- sleep_monsters();
+ sleep_monsters(plev);
}
}
break;
- case SORC_SPEL_TELEPORT_AWAY:
+ case 12:
#ifdef JP
if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥â¥ó¥¹¥¿¡¼";
if (desc) return "¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¥Ó¡¼¥à¤òÊü¤Ä¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case SORC_SPEL_HASTE_SELF:
+ case 13:
#ifdef JP
if (name) return "¥¹¥Ô¡¼¥É";
if (desc) return "°ìÄê»þ´Ö¡¢²Ã®¤¹¤ë¡£";
}
break;
- case SORC_SPEL_DETECTION_TRUE:
+ case 14:
#ifdef JP
if (name) return "¿¿¡¦´¶ÃÎ";
if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¡¢æ«¡¢Èâ¡¢³¬ÃÊ¡¢ºâÊõ¡¢¤½¤·¤Æ¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
}
break;
- case SORC_SPEL_IDENTIFY_TRUE:
+ case 15:
#ifdef JP
if (name) return "¿¿¡¦´ÕÄê";
if (desc) return "¥¢¥¤¥Æ¥à¤Î»ý¤ÄǽÎϤò´°Á´¤ËÃΤ롣";
}
break;
- case SORC_SPEL_DETECT_ITEMS_AND_TREASURE:
+ case 16:
#ifdef JP
if (name) return "ʪÂΤȺâÊõ´¶ÃÎ";
if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥¢¥¤¥Æ¥à¤ÈºâÊõ¤ò´¶ÃΤ¹¤ë¡£";
}
break;
- case SORC_SPEL_CHARM_MONSTER:
+ case 17:
#ifdef JP
if (name) return "¥Á¥ã¡¼¥à¡¦¥â¥ó¥¹¥¿¡¼";
if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case SORC_SPEL_SENSE_MINDS:
+ case 18:
#ifdef JP
if (name) return "Àº¿À´¶ÃÎ";
if (desc) return "°ìÄê»þ´Ö¡¢¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤòÆÀ¤ë¡£";
}
break;
- case SORC_SPEL_TELEPORT_TO_TOWN:
+ case 19:
#ifdef JP
if (name) return "³¹°ÜÆ°";
if (desc) return "³¹¤Ø°ÜÆ°¤¹¤ë¡£ÃϾå¤Ë¤¤¤ë¤È¤¤·¤«»È¤¨¤Ê¤¤¡£";
}
break;
- case SORC_SPEL_SELF_KNOWLEDGE:
+ case 20:
#ifdef JP
if (name) return "¼«¸ÊʬÀÏ";
if (desc) return "¸½ºß¤Î¼«Ê¬¤Î¾õÂÖ¤ò´°Á´¤ËÃΤ롣";
}
break;
- case SORC_SPEL_TELEPORT_LEVEL:
+ case 21:
#ifdef JP
if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥ì¥Ù¥ë";
if (desc) return "½Ö»þ¤Ë¾å¤«²¼¤Î³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ë¡£";
}
break;
- case SORC_SPEL_WORD_OF_RECALL:
+ case 22:
#ifdef JP
if (name) return "µ¢´Ô¤Î¼öʸ";
if (desc) return "ÃϾå¤Ë¤¤¤ë¤È¤¤Ï¥À¥ó¥¸¥ç¥ó¤ÎºÇ¿¼³¬¤Ø¡¢¥À¥ó¥¸¥ç¥ó¤Ë¤¤¤ë¤È¤¤ÏÃϾå¤Ø¤È°ÜÆ°¤¹¤ë¡£";
}
break;
- case SORC_SPEL_DIMENSION_DOOR:
+ case 23:
#ifdef JP
if (name) return "¼¡¸µ¤ÎÈâ";
if (desc) return "ûµ÷Î¥Æâ¤Î»ØÄꤷ¤¿¾ì½ê¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ë¡£";
}
break;
- case SORC_SPEL_PROBING:
+ case 24:
#ifdef JP
if (name) return "Ä´ºº";
if (desc) return "¥â¥ó¥¹¥¿¡¼¤Î°À¡¢»Ä¤êÂÎÎÏ¡¢ºÇÂçÂÎÎÏ¡¢¥¹¥Ô¡¼¥É¡¢ÀµÂΤòÃΤ롣";
}
break;
- case SORC_SPEL_EXPLOSIVE_RUNE:
+ case 25:
#ifdef JP
if (name) return "Çúȯ¤Î¥ë¡¼¥ó";
if (desc) return "¼«Ê¬¤Î¤¤¤ë¾²¤Î¾å¤Ë¡¢¥â¥ó¥¹¥¿¡¼¤¬Ä̤ë¤ÈÇúȯ¤·¤Æ¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¥ë¡¼¥ó¤òÉÁ¤¯¡£";
}
break;
- case SORC_SPEL_TELEKINESIS:
+ case 26:
#ifdef JP
if (name) return "Ç°Æ°ÎÏ";
if (desc) return "¥¢¥¤¥Æ¥à¤ò¼«Ê¬¤Î¸µ¤Ø°ÜÆ°¤µ¤»¤ë¡£";
}
break;
- case SORC_SPEL_CLAIRVOYANCE:
+ case 27:
#ifdef JP
if (name) return "ÀéΤ´ã";
if (desc) return "¤½¤Î³¬Á´ÂΤò±Êµ×¤Ë¾È¤é¤·¡¢¥À¥ó¥¸¥ç¥óÆ⤹¤Ù¤Æ¤Î¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£¤µ¤é¤Ë¡¢°ìÄê»þ´Ö¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤòÆÀ¤ë¡£";
}
break;
- case SORC_SPEL_CHARM_MONSTERS:
+ case 28:
#ifdef JP
if (name) return "̥λ¤Î»ëÀþ";
if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case SORC_SPEL_ALCHEMY:
+ case 29:
#ifdef JP
if (name) return "Ï£¶â½Ñ";
if (desc) return "¥¢¥¤¥Æ¥à1¤Ä¤ò¤ª¶â¤ËÊѤ¨¤ë¡£";
}
break;
- case SORC_SPEL_BANISHMENT:
+ case 30:
#ifdef JP
if (name) return "²øʪÄÉÊü";
if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case SORC_SPEL_GLOBE_OF_INVULNERABILITY:
+ case 31:
#ifdef JP
if (name) return "̵½ý¤Îµå";
if (desc) return "°ìÄê»þ´Ö¡¢¥À¥á¡¼¥¸¤ò¼õ¤±¤Ê¤¯¤Ê¤ë¥Ð¥ê¥¢¤òÄ¥¤ë¡£Àڤ줿½Ö´Ö¤Ë¾¯¤·¥¿¡¼¥ó¤ò¾ÃÈñ¤¹¤ë¤Î¤ÇÃí°Õ¡£";
}
}
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 "¶á¤¯¤ÎÁ´¤Æ¤Î¸«¤¨¤ë¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
}
break;
- case NATU_SPEL_LIGHTNING:
+ case 1:
#ifdef JP
if (name) return "°ðºÊ";
if (desc) return "ÅÅ·â¤Îû¤¤¥Ó¡¼¥à¤òÊü¤Ä¡£";
}
break;
- case NATU_SPEL_DETECT_DOORS_AND_TRAPS:
+ case 2:
#ifdef JP
if (name) return "櫤ÈÈâ´¶ÃÎ";
if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î櫤ÈÈâ¤ò´¶ÃΤ¹¤ë¡£";
}
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
{
}
break;
- case NATU_SPEL_DAYLIGHT:
+ case 4:
#ifdef JP
if (name) return "Æü¤Î¸÷";
if (desc) return "¸÷¸»¤¬¾È¤é¤·¤Æ¤¤¤ëÈϰϤ«Éô²°Á´ÂΤò±Êµ×¤ËÌÀ¤ë¤¯¤¹¤ë¡£";
}
break;
- case NATU_SPEL_ANIMAL_TAMING:
+ case 5:
#ifdef JP
if (name) return "ưʪ½¬¤·";
if (desc) return "ưʪ1ÂΤò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case NATU_SPEL_RESIST_ENVIRONMENT:
+ case 6:
#ifdef JP
if (name) return "´Ä¶¤Ø¤ÎÂÑÀ";
if (desc) return "°ìÄê»þ´Ö¡¢Î䵤¡¢±ê¡¢ÅÅ·â¤ËÂФ¹¤ëÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
}
break;
- case NATU_SPEL_CURE_WOUNDS_AND_POISON:
+ case 7:
#ifdef JP
if (name) return "½ý¤ÈÆǼ£ÎÅ";
if (desc) return "²ø²æ¤òÁ´²÷¤µ¤»¡¢ÆǤòÂΤ«¤é´°Á´¤Ë¼è¤ê½ü¤¡¢ÂÎÎϤò¾¯¤·²óÉü¤µ¤»¤ë¡£";
}
break;
- case NATU_SPEL_STONE_TO_MUD:
+ case 8:
#ifdef JP
if (name) return "´äÀÐÍϲò";
if (desc) return "ÊɤòÍϤ«¤·¤Æ¾²¤Ë¤¹¤ë¡£";
{
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 "Î䵤¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
}
break;
- case NATU_SPEL_NATURE_AWARENESS:
+ case 10:
#ifdef JP
if (name) return "¼«Á³¤Î³ÐÀÃ";
if (desc) return "¼þÊÕ¤ÎÃÏ·Á¤ò´¶ÃΤ·¡¢¶á¤¯¤Îæ«¡¢Èâ¡¢³¬ÃÊ¡¢Á´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
}
break;
- case NATU_SPEL_FIRE_BOLT:
+ case 11:
#ifdef JP
if (name) return "¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È";
if (desc) return "²Ð±ê¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
}
break;
- case NATU_SPEL_RAY_OF_SUNLIGHT:
+ case 12:
#ifdef JP
if (name) return "ÂÀÍÛ¸÷Àþ";
if (desc) return "¸÷Àþ¤òÊü¤Ä¡£¸÷¤ê¤ò·ù¤¦¥â¥ó¥¹¥¿¡¼¤Ë¸ú²Ì¤¬¤¢¤ë¡£";
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 "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò¸ºÂ®¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
if (cast)
{
- slow_monsters();
+ slow_monsters(plev);
}
}
break;
- case NATU_SPEL_SUMMON_ANIMAL:
+ case 14:
#ifdef JP
if (name) return "ưʪ¾¤´";
if (desc) return "ưʪ¤ò1Âξ¤´¤¹¤ë¡£";
}
break;
- case NATU_SPEL_HERBAL_HEALING:
+ case 15:
#ifdef JP
if (name) return "ÌôÁð¼£ÎÅ";
if (desc) return "ÂÎÎϤòÂçÉý¤Ë²óÉü¤µ¤»¡¢Éé½ý¡¢Û¯Û°¾õÂÖ¡¢ÆǤ«¤éÁ´²÷¤¹¤ë¡£";
}
break;
- case NATU_SPEL_STAIR_BUILDING:
+ case 16:
#ifdef JP
if (name) return "³¬ÃÊÀ¸À®";
if (desc) return "¼«Ê¬¤Î¤¤¤ë°ÌÃ֤˳¬Ãʤòºî¤ë¡£";
}
break;
- case NATU_SPEL_STONE_SKIN:
+ case 17:
#ifdef JP
if (name) return "È©Àв½";
if (desc) return "°ìÄê»þ´Ö¡¢AC¤ò¾å¾º¤µ¤»¤ë¡£";
}
break;
- case NATU_SPEL_RESISTANCE_TRUE:
+ case 18:
#ifdef JP
if (name) return "¿¿¡¦ÂÑÀ";
if (desc) return "°ìÄê»þ´Ö¡¢»À¡¢ÅÅ·â¡¢±ê¡¢Î䵤¡¢ÆǤËÂФ¹¤ëÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
}
break;
- case NATU_SPEL_FOREST_CREATION:
+ case 19:
#ifdef JP
if (name) return "¿¹ÎÓÁϤ";
if (desc) return "¼þ°Ï¤ËÌÚ¤òºî¤ê½Ð¤¹¡£";
}
break;
- case NATU_SPEL_ANIMAL_FRIENDSHIP:
+ case 20:
#ifdef JP
if (name) return "ưʪͧÏÂ";
if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Îưʪ¤ò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case NATU_SPEL_STONE_TELL:
+ case 21:
#ifdef JP
if (name) return "»î¶âÀÐ";
if (desc) return "¥¢¥¤¥Æ¥à¤Î»ý¤ÄǽÎϤò´°Á´¤ËÃΤ롣";
}
break;
- case NATU_SPEL_WALL_OF_STONE:
+ case 22:
#ifdef JP
if (name) return "ÀФÎÊÉ";
if (desc) return "¼«Ê¬¤Î¼þ°Ï¤Ë²ÖÖ¾´ä¤ÎÊɤòºî¤ë¡£";
}
break;
- case NATU_SPEL_PROTECT_FROM_CORROSION:
+ case 23:
#ifdef JP
if (name) return "Éå¿©ËÉ»ß";
if (desc) return "¥¢¥¤¥Æ¥à¤ò»À¤Ç½ý¤Ä¤«¤Ê¤¤¤è¤¦²Ã¹©¤¹¤ë¡£";
}
break;
- case NATU_SPEL_EARTHQUAKE:
+ case 24:
#ifdef JP
if (name) return "ÃÏ¿Ì";
if (desc) return "¼þ°Ï¤Î¥À¥ó¥¸¥ç¥ó¤òÍɤ餷¡¢ÊɤȾ²¤ò¥é¥ó¥À¥à¤ËÆþ¤ìÊѤ¨¤ë¡£";
}
break;
- case NATU_SPEL_CYCLONE:
+ case 25:
#ifdef JP
if (name) return "¥«¥Þ¥¤¥¿¥Á";
if (desc) return "Á´Êý¸þ¤Ë¸þ¤«¤Ã¤Æ¹¶·â¤¹¤ë¡£";
}
break;
- case NATU_SPEL_BLIZZARD:
+ case 26:
#ifdef JP
if (name) return "¥Ö¥ê¥¶¡¼¥É";
if (desc) return "µðÂç¤ÊÎ䵤¤Îµå¤òÊü¤Ä¡£";
}
break;
- case NATU_SPEL_LIGHTNING_STORM:
+ case 27:
#ifdef JP
if (name) return "°ðºÊÍò";
if (desc) return "µðÂç¤ÊÅÅ·â¤Îµå¤òÊü¤Ä¡£";
}
break;
- case NATU_SPEL_WHIRLPOOL:
+ case 28:
#ifdef JP
if (name) return "±²Ä¬";
if (desc) return "µðÂç¤Ê¿å¤Îµå¤òÊü¤Ä¡£";
}
break;
- case NATU_SPEL_CALL_SUNLIGHT:
+ case 29:
#ifdef JP
if (name) return "ÍÛ¸÷¾¤´";
if (desc) return "¼«Ê¬¤òÃæ¿´¤È¤·¤¿¸÷¤Îµå¤òȯÀ¸¤µ¤»¤ë¡£¤µ¤é¤Ë¡¢¤½¤Î³¬Á´ÂΤò±Êµ×¤Ë¾È¤é¤·¡¢¥À¥ó¥¸¥ç¥óÆ⤹¤Ù¤Æ¤Î¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
}
break;
- case NATU_SPEL_ELEMENTAL_BRANDING:
+ case 30:
#ifdef JP
if (name) return "ÀºÎî¤Î¿Ï";
if (desc) return "Éð´ï¤Ë±ê¤«Î䵤¤Î°À¤ò¤Ä¤±¤ë¡£";
}
break;
- case NATU_SPEL_NATURES_WRATH:
+ case 31:
#ifdef JP
if (name) return "¼«Á³¤Î¶¼°Ò";
if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¡¢ÃϿ̤òµ¯¤³¤·¡¢¼«Ê¬¤òÃæ¿´¤È¤·¤¿Ê¬²ò¤Îµå¤òȯÀ¸¤µ¤»¤ë¡£";
}
}
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 "¼å¤¤ËâË¡¤ÎÌð¤òÊü¤Ä¡£";
}
break;
- case CHAO_SPEL_TRAP_DOOR_DESTRUCTION:
+ case 1:
#ifdef JP
if (name) return "¥È¥é¥Ã¥×/¥É¥¢Ç˲õ";
if (desc) return "ÎÙÀܤ¹¤ë櫤ÈÈâ¤òÇ˲õ¤¹¤ë¡£";
}
break;
- case CHAO_SPEL_FLASH_OF_LIGHT:
+ case 2:
#ifdef JP
if (name) return "Á®¸÷";
if (desc) return "¸÷¸»¤¬¾È¤é¤·¤Æ¤¤¤ëÈϰϤ«Éô²°Á´ÂΤò±Êµ×¤ËÌÀ¤ë¤¯¤¹¤ë¡£";
}
break;
- case CHAO_SPEL_TOUCH_OF_CONFUSION:
+ case 3:
#ifdef JP
if (name) return "º®Íð¤Î¼ê";
if (desc) return "Áê¼ê¤òº®Í𤵤»¤ë¹¶·â¤ò¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ë¡£";
}
break;
- case CHAO_SPEL_MANA_BURST:
+ case 4:
#ifdef JP
if (name) return "ËâÎÏßÚÎö";
if (desc) return "ËâË¡¤Îµå¤òÊü¤Ä¡£";
}
break;
- case CHAO_SPEL_FIRE_BOLT:
+ case 5:
#ifdef JP
if (name) return "¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È";
if (desc) return "±ê¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
}
break;
- case CHAO_SPEL_FIST_OF_FORCE:
+ case 6:
#ifdef JP
if (name) return "ÎϤηý";
if (desc) return "¤´¤¯¾®¤µ¤Êʬ²ò¤Îµå¤òÊü¤Ä¡£";
}
break;
- case CHAO_SPEL_TELEPORT_SELF:
+ case 7:
#ifdef JP
if (name) return "¥Æ¥ì¥Ý¡¼¥È";
if (desc) return "±óµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
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 "¥â¥ó¥¹¥¿¡¼¤Ë¥é¥ó¥À¥à¤Ê¸ú²Ì¤òÍ¿¤¨¤ë¡£";
}
break;
- case CHAO_SPEL_CHAOS_BOLT:
+ case 9:
#ifdef JP
if (name) return "¥«¥ª¥¹¡¦¥Ü¥ë¥È";
if (desc) return "¥«¥ª¥¹¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
}
break;
- case CHAO_SPEL_SONIC_BOOM:
+ case 10:
#ifdef JP
if (name) return "¥½¥Ë¥Ã¥¯¡¦¥Ö¡¼¥à";
if (desc) return "¼«Ê¬¤òÃæ¿´¤È¤·¤¿¹ì²»¤Îµå¤òȯÀ¸¤µ¤»¤ë¡£";
}
break;
- case CHAO_SPEL_DOOM_BOLT:
+ case 11:
#ifdef JP
if (name) return "ÇËÌǤÎÌð";
if (desc) return "½ã¿è¤ÊËâÎϤΥӡ¼¥à¤òÊü¤Ä¡£";
}
break;
- case CHAO_SPEL_FIRE_BALL:
+ case 12:
#ifdef JP
if (name) return "¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë";
if (desc) return "±ê¤Îµå¤òÊü¤Ä¡£";
}
break;
- case CHAO_SPEL_TELEPORT_OTHER:
+ case 13:
#ifdef JP
if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥¢¥¦¥§¥¤";
if (desc) return "¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¥Ó¡¼¥à¤òÊü¤Ä¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case CHAO_SPEL_WORD_OF_DESTRUCTION:
+ case 14:
#ifdef JP
if (name) return "Ç˲õ¤Î¸ÀÍÕ";
if (desc) return "¼þÊդΥ¢¥¤¥Æ¥à¡¢¥â¥ó¥¹¥¿¡¼¡¢ÃÏ·Á¤òÇ˲õ¤¹¤ë¡£";
}
break;
- case CHAO_SPEL_INVOKE_LOGRUS:
+ case 15:
#ifdef JP
if (name) return "¥í¥°¥ë¥¹È¯Æ°";
if (desc) return "µðÂç¤Ê¥«¥ª¥¹¤Îµå¤òÊü¤Ä¡£";
}
break;
- case CHAO_SPEL_POLYMORPH_OTHER:
+ case 16:
#ifdef JP
if (name) return "¾¼ÔÊÑÍÆ";
if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤòÊѿȤµ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
{
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 "Á´Êý¸þ¤ËÂФ·¤ÆÅÅ·â¤Î¥Ó¡¼¥à¤òÊü¤Ä¡£";
}
break;
- case CHAO_SPEL_ARCANE_BINDING:
+ case 18:
#ifdef JP
if (name) return "ËâÎÏÉõÆþ";
if (desc) return "¾ó/ËâË¡ËÀ¤Î½¼Å¶²ó¿ô¤òÁý¤ä¤¹¤«¡¢½¼Å¶Ãæ¤Î¥í¥Ã¥É¤Î½¼Å¶»þ´Ö¤ò¸º¤é¤¹¡£";
}
break;
- case CHAO_SPEL_DISINTEGRATE:
+ case 19:
#ifdef JP
if (name) return "¸¶»Òʬ²ò";
if (desc) return "µðÂç¤Êʬ²ò¤Îµå¤òÊü¤Ä¡£";
}
break;
- case CHAO_SPEL_ALTER_REALITY:
+ case 20:
#ifdef JP
if (name) return "¸½¼ÂÊÑÍÆ";
if (desc) return "¸½ºß¤Î³¬¤òºÆ¹½À®¤¹¤ë¡£";
}
break;
- case CHAO_SPEL_MAGIC_ROCKET:
+ case 21:
#ifdef JP
if (name) return "¥Þ¥¸¥Ã¥¯¡¦¥í¥±¥Ã¥È";
if (desc) return "¥í¥±¥Ã¥È¤òȯ¼Í¤¹¤ë¡£";
}
break;
- case CHAO_SPEL_CHAOS_BRANDING:
+ case 22:
#ifdef JP
if (name) return "º®Æ٤οÏ";
if (desc) return "Éð´ï¤Ë¥«¥ª¥¹¤Î°À¤ò¤Ä¤±¤ë¡£";
}
break;
- case CHAO_SPEL_SUMMON_DEMON:
+ case 23:
#ifdef JP
if (name) return "°Ë⾤´";
if (desc) return "°Ëâ¤ò1Âξ¤´¤¹¤ë¡£";
}
break;
- case CHAO_SPEL_BEAM_OF_GRAVITY:
+ case 24:
#ifdef JP
if (name) return "½ÅÎϸ÷Àþ";
if (desc) return "½ÅÎϤΥӡ¼¥à¤òÊü¤Ä¡£";
}
break;
- case CHAO_SPEL_METEOR_SWARM:
+ case 25:
#ifdef JP
if (name) return "ήÀ±·²";
if (desc) return "¼«Ê¬¤Î¼þÊÕ¤Ëð¨ÀФòÍî¤È¤¹¡£";
}
break;
- case CHAO_SPEL_FLAME_STRIKE:
+ case 26:
#ifdef JP
if (name) return "±ë¤Î°ì·â";
if (desc) return "¼«Ê¬¤òÃæ¿´¤È¤·¤¿Ä¶µðÂç¤Ê±ê¤Îµå¤òȯÀ¸¤µ¤»¤ë¡£";
}
break;
- case CHAO_SPEL_CALL_CHAOS:
+ case 27:
#ifdef JP
if (name) return "º®ÆÙ¾¤Íè";
if (desc) return "¥é¥ó¥À¥à¤Ê°À¤Îµå¤ä¥Ó¡¼¥à¤òȯÀ¸¤µ¤»¤ë¡£";
}
break;
- case CHAO_SPEL_POLYMORPH_SELF:
+ case 28:
#ifdef JP
if (name) return "¼«¸ÊÊÑÍÆ";
if (desc) return "¼«Ê¬¤òÊѿȤµ¤»¤è¤¦¤È¤¹¤ë¡£";
}
break;
- case CHAO_SPEL_MANA_STORM:
+ case 29:
#ifdef JP
if (name) return "ËâÎϤÎÍò";
if (desc) return "Èó¾ï¤Ë¶¯ÎϤǵðÂç¤Ê½ã¿è¤ÊËâÎϤεå¤òÊü¤Ä¡£";
}
break;
- case CHAO_SPEL_BREATHE_LOGRUS:
+ case 30:
#ifdef JP
if (name) return "¥í¥°¥ë¥¹¤Î¥Ö¥ì¥¹";
if (desc) return "Èó¾ï¤Ë¶¯ÎϤʥ«¥ª¥¹¤Îµå¤òÊü¤Ä¡£";
}
break;
- case CHAO_SPEL_CALL_THE_VOID:
+ case 31:
#ifdef JP
if (name) return "µõ̵¾¤Íè";
if (desc) return "¼«Ê¬¤Ë¼þ°Ï¤Ë¸þ¤«¤Ã¤Æ¡¢¥í¥±¥Ã¥È¡¢½ã¿è¤ÊËâÎϤε塢Êü¼ÍÀÇÑ´þʪ¤Îµå¤òÊü¤Ä¡£¤¿¤À¤·¡¢ÊɤËÎÙÀܤ·¤Æ»ÈÍѤ¹¤ë¤È¹ÈϰϤòÇ˲õ¤¹¤ë¡£";
}
}
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
{
}
break;
- case DEAT_SPEL_MALEDICTION:
+ case 1:
#ifdef JP
if (name) return "¼ö»¦ÃÆ";
if (desc) return "¤´¤¯¾®¤µ¤Ê¼Ù°¤ÊÎϤò»ý¤Ä¥Ü¡¼¥ë¤òÊü¤Ä¡£Á±Îɤʥâ¥ó¥¹¥¿¡¼¤Ë¤ÏÂ礤ʥÀ¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
}
break;
- case DEAT_SPEL_DETECT_EVIL:
+ case 2:
#ifdef JP
if (name) return "¼Ù°´¶ÃÎ";
if (desc) return "¶á¤¯¤Î¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
}
break;
- case DEAT_SPEL_STINKING_CLOUD:
+ case 3:
#ifdef JP
if (name) return "°½±À";
if (desc) return "ÆǤεå¤òÊü¤Ä¡£";
}
break;
- case DEAT_SPEL_BLACK_SLEEP:
+ case 4:
#ifdef JP
if (name) return "¹õ¤¤Ì²¤ê";
if (desc) return "1ÂΤΥâ¥ó¥¹¥¿¡¼¤ò̲¤é¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
{
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 "°ìÄê»þ´Ö¡¢ÆǤؤÎÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
}
break;
- case DEAT_SPEL_HORRIFY:
+ case 6:
#ifdef JP
if (name) return "¶²¹²";
if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò¶²Éݤµ¤»¡¢Û¯Û°¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case DEAT_SPEL_ENSLAVE_UNDEAD:
+ case 7:
#ifdef JP
if (name) return "¥¢¥ó¥Ç¥Ã¥É½¾Â°";
if (desc) return "¥¢¥ó¥Ç¥Ã¥É1ÂΤò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case DEAT_SPEL_ORB_OF_ENTROPY:
+ case 8:
#ifdef JP
if (name) return "¥¨¥ó¥È¥í¥Ô¡¼¤Îµå";
if (desc) return "À¸Ì¿¤Î¤¢¤ë¼Ô¤Ë¸ú²Ì¤Î¤¢¤ëµå¤òÊü¤Ä¡£";
}
break;
- case DEAT_SPEL_NETHER_BOLT:
+ case 9:
#ifdef JP
if (name) return "ÃϹö¤ÎÌð";
if (desc) return "ÃϹö¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
}
break;
- case DEAT_SPEL_CLOUD_KILL:
+ case 10:
#ifdef JP
if (name) return "»¦Ù¤±À";
if (desc) return "¼«Ê¬¤òÃæ¿´¤È¤·¤¿ÆǤεå¤òȯÀ¸¤µ¤»¤ë¡£";
}
break;
- case DEAT_SPEL_GENOCIDE_ONE:
+ case 11:
#ifdef JP
if (name) return "¥â¥ó¥¹¥¿¡¼¾ÃÌÇ";
if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò¾Ã¤·µî¤ë¡£·Ð¸³Ãͤ䥢¥¤¥Æ¥à¤Ï¼ê¤ËÆþ¤é¤Ê¤¤¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case DEAT_SPEL_POISON_BRANDING:
+ case 12:
#ifdef JP
if (name) return "ÆǤοÏ";
if (desc) return "Éð´ï¤ËÆǤΰÀ¤ò¤Ä¤±¤ë¡£";
}
break;
- case DEAT_SPEL_VAMPIRIC_DRAIN:
+ case 13:
#ifdef JP
if (name) return "µÛ·ì¥É¥ì¥¤¥ó";
if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤ«¤éÀ¸Ì¿ÎϤòµÛ¤¤¤È¤ë¡£µÛ¤¤¤È¤Ã¤¿À¸Ì¿ÎϤˤè¤Ã¤ÆËþÊ¢ÅÙ¤¬¾å¤¬¤ë¡£";
}
break;
- case DEAT_SPEL_ANIMATE_DEAD:
+ case 14:
#ifdef JP
if (name) return "È¿º²¤Î½Ñ";
if (desc) return "¼þ°Ï¤Î»àÂΤä¹ü¤òÀ¸¤ÊÖ¤¹¡£";
}
break;
- case DEAT_SPEL_GENOCIDE:
+ case 15:
#ifdef JP
if (name) return "Ëõ»¦";
if (desc) return "»ØÄꤷ¤¿Ê¸»ú¤Î¥â¥ó¥¹¥¿¡¼¤ò¸½ºß¤Î³¬¤«¤é¾Ã¤·µî¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case DEAT_SPEL_BERSERK:
+ case 16:
#ifdef JP
if (name) return "¶¸Àï»Î²½";
if (desc) return "¶¸Àï»Î²½¤·¡¢¶²Éݤò½üµî¤¹¤ë¡£";
}
break;
- case DEAT_SPEL_INVOKE_SPIRITS:
+ case 17:
#ifdef JP
if (name) return "°Î´";
if (desc) return "¥é¥ó¥À¥à¤ÇÍÍ¡¹¤Ê¸ú²Ì¤¬µ¯¤³¤ë¡£";
}
break;
- case DEAT_SPEL_DARK_BOLT:
+ case 18:
#ifdef JP
if (name) return "°Å¹õ¤ÎÌð";
if (desc) return "°Å¹õ¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
}
break;
- case DEAT_SPEL_BATTLE_FRENZY:
+ case 19:
#ifdef JP
if (name) return "¶¸ÍðÀï»Î";
if (desc) return "¶¸Àï»Î²½¤·¡¢¶²Éݤò½üµî¤·¡¢²Ã®¤¹¤ë¡£";
}
break;
- case DEAT_SPEL_VAMPIRIC_BRANDING:
+ case 20:
#ifdef JP
if (name) return "µÛ·ì¤Î¿Ï";
if (desc) return "Éð´ï¤ËµÛ·ì¤Î°À¤ò¤Ä¤±¤ë¡£";
}
break;
- case DEAT_SPEL_VAMPIRISM_TRUE:
+ case 21:
#ifdef JP
if (name) return "¿¿¡¦µÛ·ì";
if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤ«¤éÀ¸Ì¿ÎϤòµÛ¤¤¤È¤ë¡£µÛ¤¤¤È¤Ã¤¿À¸Ì¿ÎϤˤè¤Ã¤ÆÂÎÎϤ¬²óÉü¤¹¤ë¡£";
}
break;
- case DEAT_SPEL_NETHER_WAVE:
+ case 22:
#ifdef JP
if (name) return "»à¤Î¸Àº²";
if (desc) return "»ë³¦Æâ¤ÎÀ¸Ì¿¤Î¤¢¤ë¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
}
break;
- case DEAT_SPEL_DARKNESS_STORM:
+ case 23:
#ifdef JP
if (name) return "°Å¹õ¤ÎÍò";
if (desc) return "µðÂç¤Ê°Å¹õ¤Îµå¤òÊü¤Ä¡£";
}
break;
- case DEAT_SPEL_DEATH_RAY:
+ case 24:
#ifdef JP
if (name) return "»à¤Î¸÷Àþ";
if (desc) return "»à¤Î¸÷Àþ¤òÊü¤Ä¡£";
}
break;
- case DEAT_SPEL_RAISE_THE_DEAD:
+ case 25:
#ifdef JP
if (name) return "»à¼Ô¾¤´";
if (desc) return "1ÂΤΥ¢¥ó¥Ç¥Ã¥É¤ò¾¤´¤¹¤ë¡£";
}
break;
- case DEAT_SPEL_ESOTERIA:
+ case 26:
#ifdef JP
if (name) return "»à¼Ô¤ÎÈëÅÁ";
if (desc) return "¥¢¥¤¥Æ¥à¤ò1¤Ä¼±Ê̤¹¤ë¡£¥ì¥Ù¥ë¤¬¹â¤¤¤È¥¢¥¤¥Æ¥à¤ÎǽÎϤò´°Á´¤ËÃΤ뤳¤È¤¬¤Ç¤¤ë¡£";
}
break;
- case DEAT_SPEL_POLYMORPH_VAMPIRE:
+ case 27:
#ifdef JP
if (name) return "µÛ·ìµ´ÊѲ½";
if (desc) return "°ìÄê»þ´Ö¡¢µÛ·ìµ´¤ËÊѲ½¤¹¤ë¡£ÊѲ½¤·¤Æ¤¤¤ë´Ö¤ÏËÜÍè¤Î¼ï²¤ÎǽÎϤò¼º¤¤¡¢Âå¤ï¤ê¤ËµÛ·ìµ´¤È¤·¤Æ¤ÎǽÎϤòÆÀ¤ë¡£";
}
break;
- case DEAT_SPEL_RESTORE_LIFE:
+ case 28:
#ifdef JP
if (name) return "À¸Ì¿ÎÏÉü³è";
if (desc) return "¼º¤Ã¤¿·Ð¸³Ãͤò²óÉü¤¹¤ë¡£";
}
break;
- case DEAT_SPEL_MASS_GENOCIDE:
+ case 29:
#ifdef JP
if (name) return "¼þÊÕËõ»¦";
if (desc) return "¼«Ê¬¤Î¼þ°Ï¤Ë¤¤¤ë¥â¥ó¥¹¥¿¡¼¤ò¸½ºß¤Î³¬¤«¤é¾Ã¤·µî¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case DEAT_SPEL_HELLFIRE:
+ case 30:
#ifdef JP
if (name) return "ÃϹö¤Î¹å²Ð";
if (desc) return "¼Ù°¤ÊÎϤò»ý¤ÄÊõ¼î¤òÊü¤Ä¡£Á±Îɤʥâ¥ó¥¹¥¿¡¼¤Ë¤ÏÂ礤ʥÀ¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
}
break;
- case DEAT_SPEL_WRAITHFORM:
+ case 31:
#ifdef JP
if (name) return "Í©Âβ½";
if (desc) return "°ìÄê»þ´Ö¡¢ÊɤòÄ̤êÈ´¤±¤ë¤³¤È¤¬¤Ç¤¼õ¤±¤ë¥À¥á¡¼¥¸¤¬·Ú¸º¤µ¤ì¤ëÍ©ÂΤξõÂÖ¤ËÊѿȤ¹¤ë¡£";
}
}
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 "¶áµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
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 "ÃØéá¤ò¾¤´¤¹¤ë¡£";
}
break;
- case TRUM_SPEL_SHUFFLE:
+ case 2:
#ifdef JP
if (name) return "¥·¥ã¥Ã¥Õ¥ë";
if (desc) return "¥«¡¼¥É¤ÎÀꤤ¤ò¤¹¤ë¡£";
}
break;
- case TRUM_SPEL_RESET_RECALL:
+ case 3:
#ifdef JP
if (name) return "¥Õ¥í¥¢¡¦¥ê¥»¥Ã¥È";
if (desc) return "ºÇ¿¼³¬¤òÊѹ¹¤¹¤ë¡£";
}
break;
- case TRUM_SPEL_TELEPORT:
+ case 4:
#ifdef JP
if (name) return "¥Æ¥ì¥Ý¡¼¥È";
if (desc) return "±óµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
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 "°ìÄê»þ´Ö¡¢¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤòÆÀ¤ë¡£";
}
break;
- case TRUM_SPEL_TELEPORT_AWAY:
+ case 6:
#ifdef JP
if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥â¥ó¥¹¥¿¡¼";
if (desc) return "¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¥Ó¡¼¥à¤òÊü¤Ä¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case TRUM_SPEL_TRUMP_ANIMALS:
+ case 7:
#ifdef JP
if (name) return "ưʪ¤Î¥«¡¼¥É";
if (desc) return "1ÂΤÎưʪ¤ò¾¤´¤¹¤ë¡£";
}
break;
- case TRUM_SPEL_TRUMP_REACH:
+ case 8:
#ifdef JP
if (name) return "°ÜÆ°¤Î¥«¡¼¥É";
if (desc) return "¥¢¥¤¥Æ¥à¤ò¼«Ê¬¤Î¸µ¤Ø°ÜÆ°¤µ¤»¤ë¡£";
}
break;
- case TRUM_SPEL_TRUMP_KAMIKAZE:
+ case 9:
#ifdef JP
if (name) return "¥«¥ß¥«¥¼¤Î¥«¡¼¥É";
if (desc) return "Ê£¿ô¤ÎÇúȯ¤¹¤ë¥â¥ó¥¹¥¿¡¼¤ò¾¤´¤¹¤ë¡£";
}
break;
- case TRUM_SPEL_PHANTASMAL_SERVANT:
+ case 10:
#ifdef JP
if (name) return "¸¸Î´";
if (desc) return "1ÂΤÎÍ©Îî¤ò¾¤´¤¹¤ë¡£";
}
break;
- case TRUM_SPEL_HASTE_MONSTER:
+ case 11:
#ifdef JP
if (name) return "¥¹¥Ô¡¼¥É¡¦¥â¥ó¥¹¥¿¡¼";
if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò²Ã®¤µ¤»¤ë¡£";
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 "½Ö»þ¤Ë¾å¤«²¼¤Î³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ë¡£";
}
break;
- case TRUM_SPEL_DIMENSION_DOOR:
+ case 13:
#ifdef JP
if (name) return "¼¡¸µ¤ÎÈâ";
if (desc) return "ûµ÷Î¥Æâ¤Î»ØÄꤷ¤¿¾ì½ê¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ë¡£";
}
break;
- case TRUM_SPEL_WORD_OF_RECALL:
+ case 14:
#ifdef JP
if (name) return "µ¢´Ô¤Î¼öʸ";
if (desc) return "ÃϾå¤Ë¤¤¤ë¤È¤¤Ï¥À¥ó¥¸¥ç¥ó¤ÎºÇ¿¼³¬¤Ø¡¢¥À¥ó¥¸¥ç¥ó¤Ë¤¤¤ë¤È¤¤ÏÃϾå¤Ø¤È°ÜÆ°¤¹¤ë¡£";
}
break;
- case TRUM_SPEL_BANISH:
+ case 15:
#ifdef JP
if (name) return "²øʪÄÉÊü";
if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case TRUM_SPEL_SWAP_POSITION:
+ case 16:
#ifdef JP
if (name) return "°ÌÃÖ¸ò´¹¤Î¥«¡¼¥É";
if (desc) return "1ÂΤΥâ¥ó¥¹¥¿¡¼¤È°ÌÃÖ¤ò¸ò´¹¤¹¤ë¡£";
}
break;
- case TRUM_SPEL_TRUMP_UNDEAD:
+ case 17:
#ifdef JP
if (name) return "¥¢¥ó¥Ç¥Ã¥É¤Î¥«¡¼¥É";
if (desc) return "1ÂΤΥ¢¥ó¥Ç¥Ã¥É¤ò¾¤´¤¹¤ë¡£";
}
break;
- case TRUM_SPEL_TRUMP_REPTILES:
+ case 18:
#ifdef JP
if (name) return "à¨ÃîÎà¤Î¥«¡¼¥É";
if (desc) return "1ÂΤΥҥɥé¤ò¾¤´¤¹¤ë¡£";
}
break;
- case TRUM_SPEL_TRUMP_MONSTERS:
+ case 19:
#ifdef JP
if (name) return "¥â¥ó¥¹¥¿¡¼¤Î¥«¡¼¥É";
if (desc) return "Ê£¿ô¤Î¥â¥ó¥¹¥¿¡¼¤ò¾¤´¤¹¤ë¡£";
}
break;
- case TRUM_SPEL_TRUMP_HOUNDS:
+ case 20:
#ifdef JP
if (name) return "¥Ï¥¦¥ó¥É¤Î¥«¡¼¥É";
if (desc) return "1¥°¥ë¡¼¥×¤Î¥Ï¥¦¥ó¥É¤ò¾¤´¤¹¤ë¡£";
}
break;
- case TRUM_SPEL_TRUMP_BRANDING:
+ case 21:
#ifdef JP
if (name) return "¥È¥é¥ó¥×¤Î¿Ï";
if (desc) return "Éð´ï¤Ë¥È¥é¥ó¥×¤Î°À¤ò¤Ä¤±¤ë¡£";
}
break;
- case TRUM_SPEL_LIVING_TRUMP:
+ case 22:
#ifdef JP
if (name) return "¿Í´Ö¥È¥é¥ó¥×";
if (desc) return "¥é¥ó¥À¥à¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ëÆÍÁ³ÊÑ°Û¤«¡¢¼«Ê¬¤Î°Õ»×¤Ç¥Æ¥ì¥Ý¡¼¥È¤¹¤ëÆÍÁ³ÊÑ°Û¤¬¿È¤Ë¤Ä¤¯¡£";
}
break;
- case TRUM_SPEL_TRUMP_CYBERDEMON:
+ case 23:
#ifdef JP
if (name) return "¥µ¥¤¥Ð¡¼¥Ç¡¼¥â¥ó¤Î¥«¡¼¥É";
if (desc) return "1ÂΤΥµ¥¤¥Ð¡¼¥Ç¡¼¥â¥ó¤ò¾¤´¤¹¤ë¡£";
}
break;
- case TRUM_SPEL_TRUMP_DIVINATION:
+ case 24:
#ifdef JP
if (name) return "ͽ¸«¤Î¥«¡¼¥É";
if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¡¢æ«¡¢Èâ¡¢³¬ÃÊ¡¢ºâÊõ¡¢¤½¤·¤Æ¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
}
break;
- case TRUM_SPEL_TRUMP_LORE:
+ case 25:
#ifdef JP
if (name) return "Ãμ±¤Î¥«¡¼¥É";
if (desc) return "¥¢¥¤¥Æ¥à¤Î»ý¤ÄǽÎϤò´°Á´¤ËÃΤ롣";
}
break;
- case TRUM_SPEL_HEAL_MONSTER:
+ case 26:
#ifdef JP
if (name) return "²óÉü¥â¥ó¥¹¥¿¡¼";
if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤÎÂÎÎϤò²óÉü¤µ¤»¤ë¡£";
}
break;
- case TRUM_SPEL_TRUMP_DRAGON:
+ case 27:
#ifdef JP
if (name) return "¥É¥é¥´¥ó¤Î¥«¡¼¥É";
if (desc) return "1ÂΤΥɥ饴¥ó¤ò¾¤´¤¹¤ë¡£";
}
break;
- case TRUM_SPEL_TRUMP_METEOR:
+ case 28:
#ifdef JP
if (name) return "ð¨ÀФΥ«¡¼¥É";
if (desc) return "¼«Ê¬¤Î¼þÊÕ¤Ëð¨ÀФòÍî¤È¤¹¡£";
}
break;
- case TRUM_SPEL_TRUMP_DEMON:
+ case 29:
#ifdef JP
if (name) return "¥Ç¡¼¥â¥ó¤Î¥«¡¼¥É";
if (desc) return "1ÂΤΰËâ¤ò¾¤´¤¹¤ë¡£";
}
break;
- case TRUM_SPEL_TRUMP_GREATER_UNDEAD:
+ case 30:
#ifdef JP
if (name) return "ÃϹö¤Î¥«¡¼¥É";
if (desc) return "1ÂΤξåµé¥¢¥ó¥Ç¥Ã¥É¤ò¾¤´¤¹¤ë¡£";
}
break;
- case TRUM_SPEL_TRUMP_ANCIENT_DRAGON:
+ case 31:
#ifdef JP
if (name) return "¸ÅÂå¥É¥é¥´¥ó¤Î¥«¡¼¥É";
if (desc) return "1ÂΤθÅÂå¥É¥é¥´¥ó¤ò¾¤´¤¹¤ë¡£";
}
}
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 "ÅÅ·â¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
}
break;
- case ARCA_SPEL_WIZARD_LOCK:
+ case 1:
#ifdef JP
if (name) return "ËâË¡¤Î»Ü¾û";
if (desc) return "Èâ¤Ë¸°¤ò¤«¤±¤ë¡£";
}
break;
- case ARCA_SPEL_DETECT_INVISIBILITY:
+ case 2:
#ifdef JP
if (name) return "Æ©ÌÀÂδ¶ÃÎ";
if (desc) return "¶á¤¯¤ÎÆ©ÌÀ¤Ê¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
}
break;
- case ARCA_SPEL_DETECT_MONSTERS:
+ case 3:
#ifdef JP
if (name) return "¥â¥ó¥¹¥¿¡¼´¶ÃÎ";
if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¸«¤¨¤ë¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
}
break;
- case ARCA_SPEL_BLINK:
+ case 4:
#ifdef JP
if (name) return "¥·¥ç¡¼¥È¡¦¥Æ¥ì¥Ý¡¼¥È";
if (desc) return "¶áµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
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 "¸÷¸»¤¬¾È¤é¤·¤Æ¤¤¤ëÈϰϤ«Éô²°Á´ÂΤò±Êµ×¤ËÌÀ¤ë¤¯¤¹¤ë¡£";
}
break;
- case ARCA_SPEL_TRAP_AND_DOOR_DESTRUCTION:
+ case 6:
#ifdef JP
if (name) return "櫤ÈÈâ Ç˲õ";
if (desc) return "°ìľÀþ¾å¤ÎÁ´¤Æ¤Î櫤ÈÈâ¤òÇ˲õ¤¹¤ë¡£";
}
break;
- case ARCA_SPEL_CURE_LIGHT_WOUNDS:
+ case 7:
#ifdef JP
if (name) return "·Ú½ý¤Î¼£Ìþ";
if (desc) return "²ø²æ¤ÈÂÎÎϤò¾¯¤·²óÉü¤µ¤»¤ë¡£";
}
break;
- case ARCA_SPEL_DETECT_DOORS_AND_TRAPS:
+ case 8:
#ifdef JP
if (name) return "櫤ÈÈâ ´¶ÃÎ";
if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î櫤ÈÈâ¤È³¬Ãʤò´¶ÃΤ¹¤ë¡£";
}
break;
- case ARCA_SPEL_PHLOGISTON:
+ case 9:
#ifdef JP
if (name) return "dzÁÇ";
if (desc) return "¸÷¸»¤ËdzÎÁ¤òÊäµë¤¹¤ë¡£";
}
break;
- case ARCA_SPEL_DETECT_TREASURE:
+ case 10:
#ifdef JP
if (name) return "ºâÊõ´¶ÃÎ";
if (desc) return "¶á¤¯¤ÎºâÊõ¤ò´¶ÃΤ¹¤ë¡£";
}
break;
- case ARCA_SPEL_DETECT_ENCHANTMENT:
+ case 11:
#ifdef JP
if (name) return "ËâË¡ ´¶ÃÎ";
if (desc) return "¶á¤¯¤ÎËâË¡¤¬¤«¤«¤Ã¤¿¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
}
break;
- case ARCA_SPEL_DETECT_OBJECTS:
+ case 12:
#ifdef JP
if (name) return "¥¢¥¤¥Æ¥à´¶ÃÎ";
if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
}
break;
- case ARCA_SPEL_CURE_POISON:
+ case 13:
#ifdef JP
if (name) return "²òÆÇ";
if (desc) return "ÆǤòÂÎÆ⤫¤é´°Á´¤Ë¼è¤ê½ü¤¯¡£";
}
break;
- case ARCA_SPEL_RESIST_COLD:
+ case 14:
#ifdef JP
if (name) return "ÂÑÎä";
if (desc) return "°ìÄê»þ´Ö¡¢Î䵤¤Ø¤ÎÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
}
break;
- case ARCA_SPEL_RESIST_FIRE:
+ case 15:
#ifdef JP
if (name) return "ÂѲÐ";
if (desc) return "°ìÄê»þ´Ö¡¢±ê¤Ø¤ÎÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
}
break;
- case ARCA_SPEL_RESIST_LIGHTNING:
+ case 16:
#ifdef JP
if (name) return "ÂÑÅÅ";
if (desc) return "°ìÄê»þ´Ö¡¢ÅÅ·â¤Ø¤ÎÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
}
break;
- case ARCA_SPEL_RESIST_ACID:
+ case 17:
#ifdef JP
if (name) return "ÂÑ»À";
if (desc) return "°ìÄê»þ´Ö¡¢»À¤Ø¤ÎÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
}
break;
- case ARCA_SPEL_CURE_MEDIUM_WOUNDS:
+ case 18:
#ifdef JP
if (name) return "½Å½ý¤Î¼£Ìþ";
if (desc) return "²ø²æ¤ÈÂÎÎϤòÃæÄøÅÙ²óÉü¤µ¤»¤ë¡£";
}
break;
- case ARCA_SPEL_TELEPORT:
+ case 19:
#ifdef JP
if (name) return "¥Æ¥ì¥Ý¡¼¥È";
if (desc) return "±óµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
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 "¥¢¥¤¥Æ¥à¤ò¼±Ê̤¹¤ë¡£";
}
break;
- case ARCA_SPEL_STONE_TO_MUD:
+ case 21:
#ifdef JP
if (name) return "´äÀÐÍϲò";
if (desc) return "ÊɤòÍϤ«¤·¤Æ¾²¤Ë¤¹¤ë¡£";
{
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 "¸÷Àþ¤òÊü¤Ä¡£¸÷¤ê¤ò·ù¤¦¥â¥ó¥¹¥¿¡¼¤Ë¸ú²Ì¤¬¤¢¤ë¡£";
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 "ËþÊ¢¤Ë¤¹¤ë¡£";
}
break;
- case ARCA_SPEL_SEE_INVISIBLE:
+ case 24:
#ifdef JP
if (name) return "Æ©ÌÀ»ëǧ";
if (desc) return "°ìÄê»þ´Ö¡¢Æ©ÌÀ¤Ê¤â¤Î¤¬¸«¤¨¤ë¤è¤¦¤Ë¤Ê¤ë¡£";
}
break;
- case ARCA_SPEL_CONJURE_ELEMENTAL:
+ case 25:
#ifdef JP
if (name) return "¥¨¥ì¥á¥ó¥¿¥ë¾¤´";
if (desc) return "1ÂΤΥ¨¥ì¥á¥ó¥¿¥ë¤ò¾¤´¤¹¤ë¡£";
}
break;
- case ARCA_SPEL_TELEPORT_LEVEL:
+ case 26:
#ifdef JP
if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥ì¥Ù¥ë";
if (desc) return "½Ö»þ¤Ë¾å¤«²¼¤Î³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ë¡£";
}
break;
- case ARCA_SPEL_TELEPORT_AWAY:
+ case 27:
#ifdef JP
if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥â¥ó¥¹¥¿¡¼";
if (desc) return "¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¥Ó¡¼¥à¤òÊü¤Ä¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case ARCA_SPEL_ELEMENTAL_BALL:
+ case 28:
#ifdef JP
if (name) return "¸µÁǤεå";
if (desc) return "±ê¡¢ÅÅ·â¡¢Î䵤¡¢»À¤Î¤É¤ì¤«¤Îµå¤òÊü¤Ä¡£";
}
break;
- case ARCA_SPEL_DETECTION:
+ case 29:
#ifdef JP
if (name) return "Á´´¶ÃÎ";
if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¡¢æ«¡¢Èâ¡¢³¬ÃÊ¡¢ºâÊõ¡¢¤½¤·¤Æ¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
}
break;
- case ARCA_SPEL_WORD_OF_RECALL:
+ case 30:
#ifdef JP
if (name) return "µ¢´Ô¤Î¼öʸ";
if (desc) return "ÃϾå¤Ë¤¤¤ë¤È¤¤Ï¥À¥ó¥¸¥ç¥ó¤ÎºÇ¿¼³¬¤Ø¡¢¥À¥ó¥¸¥ç¥ó¤Ë¤¤¤ë¤È¤¤ÏÃϾå¤Ø¤È°ÜÆ°¤¹¤ë¡£";
}
break;
- case ARCA_SPEL_CLAIRVOYANCE:
+ case 31:
#ifdef JP
if (name) return "ÀéΤ´ã";
if (desc) return "¤½¤Î³¬Á´ÂΤò±Êµ×¤Ë¾È¤é¤·¡¢¥À¥ó¥¸¥ç¥óÆ⤹¤Ù¤Æ¤Î¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£¤µ¤é¤Ë¡¢°ìÄê»þ´Ö¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤòÆÀ¤ë¡£";
}
}
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 "°ìÄê»þ´Ö¡¢ÀÖ³°Àþ»ëÎϤ¬Áý¶¯¤µ¤ì¤ë¡£";
}
break;
- case CRAF_SPEL_REGENERATION:
+ case 1:
#ifdef JP
if (name) return "²óÉüÎ϶¯²½";
if (desc) return "°ìÄê»þ´Ö¡¢²óÉüÎϤ¬Áý¶¯¤µ¤ì¤ë¡£";
}
break;
- case CRAF_SPEL_SATISFY_HUNGER:
+ case 2:
#ifdef JP
if (name) return "¶õÊ¢½¼Â";
if (desc) return "ËþÊ¢¤Ë¤Ê¤ë¡£";
}
break;
- case CRAF_SPEL_RESIST_COLD:
+ case 3:
#ifdef JP
if (name) return "ÂÑÎ䵤";
if (desc) return "°ìÄê»þ´Ö¡¢Î䵤¤Ø¤ÎÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
}
break;
- case CRAF_SPEL_RESIST_FIRE:
+ case 4:
#ifdef JP
if (name) return "ÂѲбê";
if (desc) return "°ìÄê»þ´Ö¡¢±ê¤Ø¤ÎÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
}
break;
- case CRAF_SPEL_HEROISM:
+ case 5:
#ifdef JP
if (name) return "»Îµ¤¹âÍÈ";
if (desc) return "°ìÄê»þ´Ö¡¢¥Ò¡¼¥í¡¼µ¤Ê¬¤Ë¤Ê¤ë¡£";
}
break;
- case CRAF_SPEL_RESIST_LIGHTNING:
+ case 6:
#ifdef JP
if (name) return "ÂÑÅÅ·â";
if (desc) return "°ìÄê»þ´Ö¡¢ÅÅ·â¤Ø¤ÎÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
}
break;
- case CRAF_SPEL_RESIST_ACID:
+ case 7:
#ifdef JP
if (name) return "ÂÑ»À";
if (desc) return "°ìÄê»þ´Ö¡¢»À¤Ø¤ÎÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
}
break;
- case CRAF_SPEL_SEE_INVISIBILITY:
+ case 8:
#ifdef JP
if (name) return "Æ©ÌÀ»ëǧ";
if (desc) return "°ìÄê»þ´Ö¡¢Æ©ÌÀ¤Ê¤â¤Î¤¬¸«¤¨¤ë¤è¤¦¤Ë¤Ê¤ë¡£";
}
break;
- case CRAF_SPEL_REMOVE_CURSE:
+ case 9:
#ifdef JP
if (name) return "²ò¼ö";
if (desc) return "¥¢¥¤¥Æ¥à¤Ë¤«¤«¤Ã¤¿¼å¤¤¼ö¤¤¤ò²ò½ü¤¹¤ë¡£";
}
break;
- case CRAF_SPEL_RESIST_POISON:
+ case 10:
#ifdef JP
if (name) return "ÂÑÆÇ";
if (desc) return "°ìÄê»þ´Ö¡¢ÆǤؤÎÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
}
break;
- case CRAF_SPEL_BERSERK:
+ case 11:
#ifdef JP
if (name) return "¶¸Àï»Î²½";
if (desc) return "¶¸Àï»Î²½¤·¡¢¶²Éݤò½üµî¤¹¤ë¡£";
}
break;
- case CRAF_SPEL_SELF_KNOWLEDGE:
+ case 12:
#ifdef JP
if (name) return "¼«¸ÊʬÀÏ";
if (desc) return "¸½ºß¤Î¼«Ê¬¤Î¾õÂÖ¤ò´°Á´¤ËÃΤ롣";
}
break;
- case CRAF_SPEL_PROTECTION_FROM_EVIL:
+ case 13:
#ifdef JP
if (name) return "Âмٰ·ë³¦";
if (desc) return "¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼¤Î¹¶·â¤òËɤ°¥Ð¥ê¥¢¤òÄ¥¤ë¡£";
}
break;
- case CRAF_SPEL_CURE:
+ case 14:
#ifdef JP
if (name) return "Ìþ¤·";
if (desc) return "ÆÇ¡¢Û¯Û°¾õÂÖ¡¢Éé½ý¤òÁ´²÷¤µ¤»¡¢¸¸³Ð¤òľ¤¹¡£";
}
break;
- case CRAF_SPEL_MANA_BRANDING:
+ case 15:
#ifdef JP
if (name) return "ËâË¡·õ";
if (desc) return "°ìÄê»þ´Ö¡¢Éð´ï¤ËÎ䵤¡¢±ê¡¢ÅÅ·â¡¢»À¡¢ÆǤΤ¤¤º¤ì¤«¤Î°À¤ò¤Ä¤±¤ë¡£Éð´ï¤ò»ý¤¿¤Ê¤¤¤È»È¤¨¤Ê¤¤¡£";
}
break;
- case CRAF_SPEL_TELEPATHY:
+ case 16:
#ifdef JP
if (name) return "¥Æ¥ì¥Ñ¥·¡¼";
if (desc) return "°ìÄê»þ´Ö¡¢¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤòÆÀ¤ë¡£";
}
break;
- case CRAF_SPEL_STONE_SKIN:
+ case 17:
#ifdef JP
if (name) return "È©Àв½";
if (desc) return "°ìÄê»þ´Ö¡¢AC¤ò¾å¾º¤µ¤»¤ë¡£";
}
break;
- case CRAF_SPEL_RESISTANCE:
+ case 18:
#ifdef JP
if (name) return "Á´ÂÑÀ";
if (desc) return "°ìÄê»þ´Ö¡¢»À¡¢ÅÅ·â¡¢±ê¡¢Î䵤¡¢ÆǤËÂФ¹¤ëÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
}
break;
- case CRAF_SPEL_HASTE_SELF:
+ case 19:
#ifdef JP
if (name) return "¥¹¥Ô¡¼¥É";
if (desc) return "°ìÄê»þ´Ö¡¢²Ã®¤¹¤ë¡£";
}
break;
- case CRAF_SPEL_WALK_THROUGH_WALL:
+ case 20:
#ifdef JP
if (name) return "ÊÉÈ´¤±";
if (desc) return "°ìÄê»þ´Ö¡¢È¾Êª¼Á²½¤·ÊɤòÄ̤êÈ´¤±¤é¤ì¤ë¤è¤¦¤Ë¤Ê¤ë¡£";
}
break;
- case CRAF_SPEL_POLISH_SHIELD:
+ case 21:
#ifdef JP
if (name) return "½âËá¤";
if (desc) return "½â¤ËÈ¿¼Í¤Î°À¤ò¤Ä¤±¤ë¡£";
}
break;
- case CRAF_SPEL_CREATE_GOLEM:
+ case 22:
#ifdef JP
if (name) return "¥´¡¼¥ì¥àÀ½Â¤";
if (desc) return "1ÂΤΥ´¡¼¥ì¥à¤òÀ½Â¤¤¹¤ë¡£";
}
break;
- case CRAF_SPEL_MAGICAL_ARMOR:
+ case 23:
#ifdef JP
if (name) return "ËâË¡¤Î³»";
if (desc) return "°ìÄê»þ´Ö¡¢ËâË¡ËɸæÎϤÈAC¤¬¾å¤¬¤ê¡¢º®Íð¤ÈÌÕÌܤÎÂÑÀ¡¢È¿¼ÍǽÎÏ¡¢ËãáãÃΤ餺¡¢ÉâÍ·¤òÆÀ¤ë¡£";
}
break;
- case CRAF_SPEL_REMOVE_ENCHANTMENT:
+ case 24:
#ifdef JP
if (name) return "ÁõÈ÷̵Îϲ½";
if (desc) return "Éð´ï¡¦Ëɶñ¤Ë¤«¤±¤é¤ì¤¿¤¢¤é¤æ¤ëËâÎϤò´°Á´¤Ë²ò½ü¤¹¤ë¡£";
}
break;
- case CRAF_SPEL_REMOVE_ALL_CURSE:
+ case 25:
#ifdef JP
if (name) return "¼ö¤¤Ê´ºÕ";
if (desc) return "¥¢¥¤¥Æ¥à¤Ë¤«¤«¤Ã¤¿¶¯ÎϤʼö¤¤¤ò²ò½ü¤¹¤ë¡£";
}
break;
- case CRAF_SPEL_KNOWLEDGE_TRUE:
+ case 26:
#ifdef JP
if (name) return "´°Á´¤Ê¤ëÃμ±";
if (desc) return "¥¢¥¤¥Æ¥à¤Î»ý¤ÄǽÎϤò´°Á´¤ËÃΤ롣";
}
break;
- case CRAF_SPEL_ENCHANT_WEAPON:
+ case 27:
#ifdef JP
if (name) return "Éð´ï¶¯²½";
if (desc) return "Éð´ï¤ÎÌ¿ÃæΨ½¤Àµ¤È¥À¥á¡¼¥¸½¤Àµ¤ò¶¯²½¤¹¤ë¡£";
}
break;
- case CRAF_SPEL_ENCHANT_ARMOR:
+ case 28:
#ifdef JP
if (name) return "Ëɶñ¶¯²½";
if (desc) return "³»¤ÎËɸ潤Àµ¤ò¶¯²½¤¹¤ë¡£";
}
break;
- case CRAF_SPEL_BRAND_WEAPON:
+ case 29:
#ifdef JP
if (name) return "Éð´ï°ÀÉÕÍ¿";
if (desc) return "Éð´ï¤Ë¥é¥ó¥À¥à¤Ë°À¤ò¤Ä¤±¤ë¡£";
}
break;
- case CRAF_SPEL_LIVING_TRUMP:
+ case 30:
#ifdef JP
if (name) return "¿Í´Ö¥È¥é¥ó¥×";
if (desc) return "¥é¥ó¥À¥à¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ëÆÍÁ³ÊÑ°Û¤«¡¢¼«Ê¬¤Î°Õ»×¤Ç¥Æ¥ì¥Ý¡¼¥È¤¹¤ëÆÍÁ³ÊÑ°Û¤¬¿È¤Ë¤Ä¤¯¡£";
}
break;
- case CRAF_SPEL_IMMUNITY:
+ case 31:
#ifdef JP
if (name) return "°À¤Ø¤ÎÌȱÖ";
if (desc) return "°ìÄê»þ´Ö¡¢Î䵤¡¢±ê¡¢ÅÅ·â¡¢»À¤Î¤¤¤º¤ì¤«¤ËÂФ¹¤ëÌȱ֤òÆÀ¤ë¡£";
}
}
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 "¼å¤¤ËâË¡¤ÎÌð¤òÊü¤Ä¡£";
}
break;
- case DAEM_SPEL_DETECT_UNLIFE:
+ case 1:
#ifdef JP
if (name) return "̵À¸Ì¿´¶ÃÎ";
if (desc) return "¶á¤¯¤ÎÀ¸Ì¿¤Î¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
}
break;
- case DAEM_SPEL_EVIL_BLESS:
+ case 2:
#ifdef JP
if (name) return "¼Ù¤Ê¤ë½ËÊ¡";
if (desc) return "°ìÄê»þ´Ö¡¢Ì¿ÃæΨ¤ÈAC¤Ë¥Ü¡¼¥Ê¥¹¤òÆÀ¤ë¡£";
}
break;
- case DAEM_SPEL_RESIST_FIRE:
+ case 3:
#ifdef JP
if (name) return "ÂѲбê";
if (desc) return "°ìÄê»þ´Ö¡¢±ê¤Ø¤ÎÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
}
break;
- case DAEM_SPEL_HORRIFY:
+ case 4:
#ifdef JP
if (name) return "¶²¹²";
if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò¶²Éݤµ¤»¡¢Û¯Û°¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case DAEM_SPEL_NETHER_BOLT:
+ case 5:
#ifdef JP
if (name) return "ÃϹö¤ÎÌð";
if (desc) return "ÃϹö¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
}
break;
- case DAEM_SPEL_SUMMON_MANES:
+ case 6:
#ifdef JP
if (name) return "¸ÅÂå¤Î»àÎ´";
if (desc) return "¸ÅÂå¤Î»àÎî¤ò¾¤´¤¹¤ë¡£";
}
break;
- case DAEM_SPEL_HELLISH_FLAME:
+ case 7:
#ifdef JP
if (name) return "ÃϹö¤Î±ë";
if (desc) return "¼Ù°¤ÊÎϤò»ý¤Ä¥Ü¡¼¥ë¤òÊü¤Ä¡£Á±Îɤʥâ¥ó¥¹¥¿¡¼¤Ë¤ÏÂ礤ʥÀ¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
}
break;
- case DAEM_SPEL_DOMINATE_DEMON:
+ case 8:
#ifdef JP
if (name) return "¥Ç¡¼¥â¥ó»ÙÇÛ";
if (desc) return "°Ëâ1ÂΤò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú";
}
break;
- case DAEM_SPEL_VISION:
+ case 9:
#ifdef JP
if (name) return "¥Ó¥¸¥ç¥ó";
if (desc) return "¼þÊÕ¤ÎÃÏ·Á¤ò´¶ÃΤ¹¤ë¡£";
}
break;
- case DAEM_SPEL_RESIST_NETHER:
+ case 10:
#ifdef JP
if (name) return "ÂÑÃϹö";
if (desc) return "°ìÄê»þ´Ö¡¢ÃϹö¤Ø¤ÎÂÑÀ¤òÆÀ¤ë¡£";
}
break;
- case DAEM_SPEL_PLASMA_BOLT:
+ case 11:
#ifdef JP
if (name) return "¥×¥é¥º¥Þ¡¦¥Ü¥ë¥È";
if (desc) return "¥×¥é¥º¥Þ¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
}
break;
- case DAEM_SPEL_FIRE_BALL:
+ case 12:
#ifdef JP
if (name) return "¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë";
if (desc) return "±ê¤Îµå¤òÊü¤Ä¡£";
}
break;
- case DAEM_SPEL_FIRE_BRANDING:
+ case 13:
#ifdef JP
if (name) return "±ê¤Î¿Ï";
if (desc) return "Éð´ï¤Ë±ê¤Î°À¤ò¤Ä¤±¤ë¡£";
}
break;
- case DAEM_SPEL_NETHER_BALL:
+ case 14:
#ifdef JP
if (name) return "ÃϹöµå";
if (desc) return "Â礤ÊÃϹö¤Îµå¤òÊü¤Ä¡£";
}
break;
- case DAEM_SPEL_SUMMON_DEMON:
+ case 15:
#ifdef JP
if (name) return "¥Ç¡¼¥â¥ó¾¤´";
if (desc) return "°Ëâ1ÂΤò¾¤´¤¹¤ë¡£";
}
break;
- case DAEM_SPEL_DEVILISH_EYE:
+ case 16:
#ifdef JP
if (name) return "°Ëâ¤ÎÌÜ";
if (desc) return "°ìÄê»þ´Ö¡¢¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤòÆÀ¤ë¡£";
}
break;
- case DAEM_SPEL_DEVIL_CLOAK:
+ case 17:
#ifdef JP
if (name) return "°Ëâ¤Î¥¯¥í¡¼¥¯";
if (desc) return "¶²Éݤò¼è¤ê½ü¤¡¢°ìÄê»þ´Ö¡¢±ê¤ÈÎ䵤¤ÎÂÑÀ¡¢±ê¤Î¥ª¡¼¥é¤òÆÀ¤ë¡£ÂÑÀ¤ÏÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
}
break;
- case DAEM_SPEL_THE_FLOW_OF_LAVA:
+ case 18:
#ifdef JP
if (name) return "ÍÏ´äή";
if (desc) return "¼«Ê¬¤òÃæ¿´¤È¤·¤¿±ê¤Îµå¤òºî¤ê½Ð¤·¡¢¾²¤òÍÏ´ä¤ËÊѤ¨¤ë¡£";
}
break;
- case DAEM_SPEL_PLASMA_BALL:
+ case 19:
#ifdef JP
if (name) return "¥×¥é¥º¥Þµå";
if (desc) return "¥×¥é¥º¥Þ¤Îµå¤òÊü¤Ä¡£";
}
break;
- case DAEM_SPEL_POLYMORPH_DEMON:
+ case 20:
#ifdef JP
if (name) return "°ËâÊѲ½";
if (desc) return "°ìÄê»þ´Ö¡¢°Ëâ¤ËÊѲ½¤¹¤ë¡£ÊѲ½¤·¤Æ¤¤¤ë´Ö¤ÏËÜÍè¤Î¼ï²¤ÎǽÎϤò¼º¤¤¡¢Âå¤ï¤ê¤Ë°Ëâ¤È¤·¤Æ¤ÎǽÎϤòÆÀ¤ë¡£";
}
break;
- case DAEM_SPEL_NATHER_WAVE:
+ case 21:
#ifdef JP
if (name) return "ÃϹö¤ÎÇÈÆ°";
if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£Á±Îɤʥâ¥ó¥¹¥¿¡¼¤ËÆäËÂ礤ʥÀ¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
}
break;
- case DAEM_SPEL_KISS_OF_SUCCUBUS:
+ case 22:
#ifdef JP
if (name) return "¥µ¥¥å¥Ð¥¹¤ÎÀÜÊ";
if (desc) return "°ø²Ìº®Íð¤Îµå¤òÊü¤Ä¡£";
}
break;
- case DAEM_SPEL_DOOM_HAND:
+ case 23:
#ifdef JP
if (name) return "ÇËÌǤμê";
if (desc) return "ÇËÌǤμê¤òÊü¤Ä¡£¿©¤é¤Ã¤¿¥â¥ó¥¹¥¿¡¼¤Ï¤½¤Î¤È¤¤ÎHP¤ÎȾʬÁ°¸å¤Î¥À¥á¡¼¥¸¤ò¼õ¤±¤ë¡£";
}
break;
- case DAEM_SPEL_RAISE_THE_MORALE:
+ case 24:
#ifdef JP
if (name) return "»Îµ¤¹âÍÈ";
if (desc) return "°ìÄê»þ´Ö¡¢¥Ò¡¼¥í¡¼µ¤Ê¬¤Ë¤Ê¤ë¡£";
}
break;
- case DAEM_SPEL_IMMORTAL_BODY:
+ case 25:
#ifdef JP
if (name) return "ÉÔÌǤÎÆùÂÎ";
if (desc) return "°ìÄê»þ´Ö¡¢»þ´ÖµÕž¤Ø¤ÎÂÑÀ¤òÆÀ¤ë¡£";
}
break;
- case DAEM_SPEL_INSANITY_CIRCLE:
+ case 26:
#ifdef JP
if (name) return "¶¸µ¤¤Î±ß´Ä";
if (desc) return "¼«Ê¬¤òÃæ¿´¤È¤·¤¿¥«¥ª¥¹¤Îµå¡¢º®Íð¤Îµå¤òȯÀ¸¤µ¤»¡¢¶á¤¯¤Î¥â¥ó¥¹¥¿¡¼¤ò̥λ¤¹¤ë¡£";
}
break;
- case DAEM_SPEL_EXPLODE_PETS:
+ case 27:
#ifdef JP
if (name) return "¥Ú¥Ã¥ÈÇúÇË";
if (desc) return "Á´¤Æ¤Î¥Ú¥Ã¥È¤ò¶¯À©Åª¤ËÇúÇˤµ¤»¤ë¡£";
}
break;
- case DAEM_SPEL_SUMMON_GREATER_DEMON:
+ case 28:
#ifdef JP
if (name) return "¥°¥ì¡¼¥¿¡¼¥Ç¡¼¥â¥ó¾¤´";
if (desc) return "¾åµé¥Ç¡¼¥â¥ó¤ò¾¤´¤¹¤ë¡£¾¤´¤¹¤ë¤Ë¤Ï¿Í´Ö('p','h','t'¤Çɽ¤µ¤ì¤ë¥â¥ó¥¹¥¿¡¼)¤Î»àÂΤòÊû¤²¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£";
}
break;
- case DAEM_SPEL_NETHER_STORM:
+ case 29:
#ifdef JP
if (name) return "ÃϹöÍò";
if (desc) return "ĶµðÂç¤ÊÃϹö¤Îµå¤òÊü¤Ä¡£";
}
break;
- case DAEM_SPEL_BLOODY_CURSE:
+ case 30:
#ifdef JP
if (name) return "·ì¤Î¼ö¤¤";
if (desc) return "¼«Ê¬¤¬¥À¥á¡¼¥¸¤ò¼õ¤±¤ë¤³¤È¤Ë¤è¤Ã¤ÆÂоݤ˼ö¤¤¤ò¤«¤±¡¢¥À¥á¡¼¥¸¤òÍ¿¤¨ÍÍ¡¹¤Ê¸ú²Ì¤ò°ú¤µ¯¤³¤¹¡£";
}
break;
- case DAEM_SPEL_POLYMORPH_DEMONLORD:
+ case 31:
#ifdef JP
if (name) return "ËⲦÊѲ½";
if (desc) return "°Ëâ¤Î²¦¤ËÊѲ½¤¹¤ë¡£ÊѲ½¤·¤Æ¤¤¤ë´Ö¤ÏËÜÍè¤Î¼ï²¤ÎǽÎϤò¼º¤¤¡¢Âå¤ï¤ê¤Ë°Ëâ¤Î²¦¤È¤·¤Æ¤ÎǽÎϤòÆÀ¡¢ÊɤòÇ˲õ¤·¤Ê¤¬¤éÊ⤯¡£";
}
}
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 "ÅÅ·â¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
}
break;
- case CRUS_SPEL_DETECT_EVIL:
+ case 1:
#ifdef JP
if (name) return "¼Ù°Â¸ºß´¶ÃÎ";
if (desc) return "¶á¤¯¤Î¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
}
break;
- case CRUS_SPEL_REMOVE_FEAR:
+ case 2:
#ifdef JP
if (name) return "¶²Éݽüµî";
if (desc) return "¶²Éݤò¼è¤ê½ü¤¯¡£";
}
break;
- case CRUS_SPEL_SCARE_MONSTER:
+ case 3:
#ifdef JP
if (name) return "°Ò°µ";
if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò¶²Éݤµ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case CRUS_SPEL_SANCTUARY:
+ case 4:
#ifdef JP
if (name) return "À»°è";
if (desc) return "ÎÙÀܤ·¤¿Á´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò̲¤é¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case CRUS_SPEL_PORTAL:
+ case 5:
#ifdef JP
if (name) return "Æþ¸ý";
if (desc) return "Ãæµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
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 "¥¿¡¼¥²¥Ã¥ÈÉÕ¶á¤ËÁ®¸÷¤Î¥Ü¥ë¥È¤òÏ¢¼Í¤¹¤ë¡£";
}
break;
- case CRUS_SPEL_PURIFY:
+ case 7:
#ifdef JP
if (name) return "¿ÈÂξô²½";
if (desc) return "½ý¡¢ÆÇ¡¢Û¯Û°¤«¤éÁ´²÷¤¹¤ë¡£";
}
break;
- case CRUS_SPEL_SCATTER_EVIL:
+ case 8:
#ifdef JP
if (name) return "¼Ù°Èô¤Ð¤·";
if (desc) return "¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼1ÂΤò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case CRUS_SPEL_HOLY_ORB:
+ case 9:
#ifdef JP
if (name) return "À»¤Ê¤ë¸÷µå";
if (desc) return "À»¤Ê¤ëÎϤò¤â¤ÄÊõ¼î¤òÊü¤Ä¡£¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼¤ËÂФ·¤ÆÂ礤ʥÀ¥á¡¼¥¸¤òÍ¿¤¨¤ë¤¬¡¢Á±Îɤʥâ¥ó¥¹¥¿¡¼¤Ë¤Ï¸ú²Ì¤¬¤Ê¤¤¡£";
}
break;
- case CRUS_SPEL_EXORCISM:
+ case 10:
#ifdef JP
if (name) return "°Ëâʧ¤¤";
if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥¢¥ó¥Ç¥Ã¥ÉµÚ¤Ó°Ëâ¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¡¢¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼¤ò¶²Éݤµ¤»¤ë¡£";
}
break;
- case CRUS_SPEL_REMOVE_CURSE:
+ case 11:
#ifdef JP
if (name) return "²ò¼ö";
if (desc) return "¥¢¥¤¥Æ¥à¤Ë¤«¤«¤Ã¤¿¼å¤¤¼ö¤¤¤ò²ò½ü¤¹¤ë¡£";
}
break;
- case CRUS_SPEL_SENSE_UNSEEN:
+ case 12:
#ifdef JP
if (name) return "Æ©ÌÀ»ëǧ";
if (desc) return "°ìÄê»þ´Ö¡¢Æ©ÌÀ¤Ê¤â¤Î¤¬¸«¤¨¤ë¤è¤¦¤Ë¤Ê¤ë¡£";
}
break;
- case CRUS_SPEL_PROTECTION_FROM_EVIL:
+ case 13:
#ifdef JP
if (name) return "Âмٰ·ë³¦";
if (desc) return "¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼¤Î¹¶·â¤òËɤ°¥Ð¥ê¥¢¤òÄ¥¤ë¡£";
}
break;
- case CRUS_SPEL_JUDGMENT_THUNDER:
+ case 14:
#ifdef JP
if (name) return "ºÛ¤¤ÎÍë";
if (desc) return "¶¯ÎϤÊÅÅ·â¤Î¥Ü¥ë¥È¤òÊü¤Ä¡£";
}
break;
- case CRUS_SPEL_HOLY_WORD:
+ case 15:
#ifdef JP
if (name) return "À»¤Ê¤ë¸æ¸ÀÍÕ";
if (desc) return "»ë³¦Æâ¤Î¼Ù°¤Ê¸ºß¤ËÂ礤ʥÀ¥á¡¼¥¸¤òÍ¿¤¨¡¢ÂÎÎϤò²óÉü¤·¡¢ÆÇ¡¢¶²ÉÝ¡¢Û¯Û°¾õÂÖ¡¢Éé½ý¤«¤éÁ´²÷¤¹¤ë¡£";
}
break;
- case CRUS_SPEL_UNBARRING_WAYS:
+ case 16:
#ifdef JP
if (name) return "³«¤«¤ì¤¿Æ»";
if (desc) return "°ìľÀþ¾å¤ÎÁ´¤Æ¤Î櫤ÈÈâ¤òÇ˲õ¤¹¤ë¡£";
}
break;
- case CRUS_SPEL_ARREST:
+ case 17:
#ifdef JP
if (name) return "ÉõËâ";
if (desc) return "¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼¤ÎÆ°¤¤ò»ß¤á¤ë¡£";
}
break;
- case CRUS_SPEL_HOLY_AURA:
+ case 18:
#ifdef JP
if (name) return "À»¤Ê¤ë¥ª¡¼¥é";
if (desc) return "°ìÄê»þ´Ö¡¢¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼¤ò½ý¤Ä¤±¤ëÀ»¤Ê¤ë¥ª¡¼¥é¤òÆÀ¤ë¡£";
}
break;
- case CRUS_SPEL_DISPEL_UNDEAD_AND_DEMONS:
+ case 19:
#ifdef JP
if (name) return "¥¢¥ó¥Ç¥Ã¥É&°ËâÂ໶";
if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥¢¥ó¥Ç¥Ã¥ÉµÚ¤Ó°Ëâ¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
}
break;
- case CRUS_SPEL_DISPEL_EVIL:
+ case 20:
#ifdef JP
if (name) return "¼Ù°Â໶";
if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
}
break;
- case CRUS_SPEL_HOLY_BLADE:
+ case 21:
#ifdef JP
if (name) return "À»¤Ê¤ë¿Ï";
if (desc) return "Ä̾ï¤ÎÉð´ï¤ËÌǼ٤ΰÀ¤ò¤Ä¤±¤ë¡£";
}
break;
- case CRUS_SPEL_STAR_BURST:
+ case 22:
#ifdef JP
if (name) return "¥¹¥¿¡¼¥Ð¡¼¥¹¥È";
if (desc) return "µðÂç¤ÊÁ®¸÷¤Îµå¤òÊü¤Ä¡£";
}
break;
- case CRUS_SPEL_SUMMON_ANGEL:
+ case 23:
#ifdef JP
if (name) return "Å·»È¾¤´";
if (desc) return "Å·»È¤ò1Âξ¤´¤¹¤ë¡£";
}
break;
- case CRUS_SPEL_HEROISM:
+ case 24:
#ifdef JP
if (name) return "»Îµ¤¹âÍÈ";
if (desc) return "°ìÄê»þ´Ö¡¢¥Ò¡¼¥í¡¼µ¤Ê¬¤Ë¤Ê¤ë¡£";
}
break;
- case CRUS_SPEL_DISPEL_CURSE:
+ case 25:
#ifdef JP
if (name) return "¼ö¤¤Â໶";
if (desc) return "¥¢¥¤¥Æ¥à¤Ë¤«¤«¤Ã¤¿¶¯ÎϤʼö¤¤¤ò²ò½ü¤¹¤ë¡£";
}
break;
- case CRUS_SPEL_BANISH_EVIL:
+ case 26:
#ifdef JP
if (name) return "¼Ù°ÄÉÊü";
if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case CRUS_SPEL_ARMAGEDDON:
+ case 27:
#ifdef JP
if (name) return "¥Ï¥ë¥Þ¥²¥É¥ó";
if (desc) return "¼þÊդΥ¢¥¤¥Æ¥à¡¢¥â¥ó¥¹¥¿¡¼¡¢ÃÏ·Á¤òÇ˲õ¤¹¤ë¡£";
}
break;
- case CRUS_SPEL_AN_EYE_FOR_AN_EYE:
+ case 28:
#ifdef JP
if (name) return "ÌܤˤÏÌܤò";
if (desc) return "°ìÄê»þ´Ö¡¢¼«Ê¬¤¬¥À¥á¡¼¥¸¤ò¼õ¤±¤¿¤È¤¤Ë¹¶·â¤ò¹Ô¤Ã¤¿¥â¥ó¥¹¥¿¡¼¤ËÂФ·¤ÆƱÅù¤Î¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
}
break;
- case CRUS_SPEL_WRATH_OF_THE_GOD:
+ case 29:
#ifdef JP
if (name) return "¿À¤ÎÅܤê";
if (desc) return "¥¿¡¼¥²¥Ã¥È¤Î¼þ°Ï¤Ëʬ²ò¤Îµå¤ò¿¿ôÍî¤È¤¹¡£";
}
break;
- case CRUS_SPEL_DIVINE_INTERVENTION:
+ case 30:
#ifdef JP
if (name) return "¿À°Ò";
if (desc) return "ÎÙÀܤ¹¤ë¥â¥ó¥¹¥¿¡¼¤ËÀ»¤Ê¤ë¥À¥á¡¼¥¸¤òÍ¿¤¨¡¢»ë³¦Æâ¤Î¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¡¢¸ºÂ®¡¢Û¯Û°¡¢º®Í𡢶²ÉÝ¡¢Ì²¤ê¤òÍ¿¤¨¤ë¡£¤µ¤é¤ËÂÎÎϤò²óÉü¤¹¤ë¡£";
{
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);
}
break;
- case CRUS_SPEL_CRUSADE:
+ case 31:
#ifdef JP
if (name) return "À»Àï";
if (desc) return "»ë³¦Æâ¤ÎÁ±Îɤʥâ¥ó¥¹¥¿¡¼¤ò¥Ú¥Ã¥È¤Ë¤·¤è¤¦¤È¤·¡¢¤Ê¤é¤Ê¤«¤Ã¤¿¾ì¹çµÚ¤ÓÁ±ÎɤǤʤ¤¥â¥ó¥¹¥¿¡¼¤ò¶²Éݤµ¤»¤ë¡£¤µ¤é¤Ë¿¿ô¤Î²Ã®¤µ¤ì¤¿µ³»Î¤ò¾¤´¤·¡¢¥Ò¡¼¥í¡¼¡¢½ËÊ¡¡¢²Ã®¡¢Âмٰ·ë³¦¤òÆÀ¤ë¡£";
}
}
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 "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò¸ºÂ®¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
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¤Î¥Ü¡¼¥Ê¥¹¤òÆÀ¤ë¡£";
break;
- case MUSI_SPEL_WRECKING_NOTE:
+ case 2:
#ifdef JP
if (name) return "Êø²õ¤Î²»¿§";
if (desc) return "¹ì²»¤Î¥Ü¥ë¥È¤òÊü¤Ä¡£";
}
break;
- case MUSI_SPEL_STUN_PATTERN:
+ case 3:
#ifdef JP
if (name) return "Û¯Û°¤ÎÀûΧ";
if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤òÛ¯Û°¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
break;
- case MUSI_SPEL_FLOW_OF_LIFE:
+ case 4:
#ifdef JP
if (name) return "À¸Ì¿¤Îή¤ì";
if (desc) return "ÂÎÎϤò¾¯¤·²óÉü¤µ¤»¤ë¡£";
break;
- case MUSI_SPEL_SONG_OF_THE_SUN:
+ case 5:
#ifdef JP
if (name) return "ÂÀÍۤβÎ";
if (desc) return "¸÷¸»¤¬¾È¤é¤·¤Æ¤¤¤ëÈϰϤ«Éô²°Á´ÂΤò±Êµ×¤ËÌÀ¤ë¤¯¤¹¤ë¡£";
}
break;
- case MUSI_SPEL_SONG_OF_FEAR:
+ case 6:
#ifdef JP
if (name) return "¶²ÉݤβÎ";
if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò¶²Éݤµ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
break;
- case MUSI_SPEL_HEROIC_BALLAD:
+ case 7:
#ifdef JP
if (name) return "À襤¤Î²Î";
if (desc) return "¥Ò¡¼¥í¡¼µ¤Ê¬¤Ë¤Ê¤ë¡£";
break;
- case MUSI_SPEL_CLAIRAUDIENCE:
+ case 8:
#ifdef JP
if (name) return "ÎîŪÃγÐ";
if (desc) return "¶á¤¯¤Îæ«/Èâ/³¬Ãʤò´¶ÃΤ¹¤ë¡£¥ì¥Ù¥ë15¤ÇÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¡¢20¤ÇºâÊõ¤È¥¢¥¤¥Æ¥à¤ò´¶ÃΤǤ¤ë¤è¤¦¤Ë¤Ê¤ë¡£¥ì¥Ù¥ë25¤Ç¼þÊÕ¤ÎÃÏ·Á¤ò´¶ÃΤ·¡¢40¤Ç¤½¤Î³¬Á´ÂΤò±Êµ×¤Ë¾È¤é¤·¡¢¥À¥ó¥¸¥ç¥óÆâ¤Î¤¹¤Ù¤Æ¤Î¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£¤³¤Î¸ú²Ì¤Ï²Î¤¤Â³¤±¤ë¤³¤È¤Ç½ç¤Ëµ¯¤³¤ë¡£";
break;
- case MUSI_SPEL_SOUL_SHRIEK:
+ case 9:
#ifdef JP
if (name) return "º²¤Î²Î";
if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ËÂФ·¤ÆÀº¿À¹¶·â¤ò¹Ô¤¦¡£";
break;
- case MUSI_SPEL_SONG_OF_LORE:
+ case 10:
#ifdef JP
if (name) return "Ãμ±¤Î²Î";
if (desc) return "¼«Ê¬¤Î¤¤¤ë¥Þ¥¹¤ÈÎÙ¤ê¤Î¥Þ¥¹¤ËÍî¤Á¤Æ¤¤¤ë¥¢¥¤¥Æ¥à¤ò´ÕÄꤹ¤ë¡£";
break;
- case MUSI_SPEL_HIDING_TUNE:
+ case 11:
#ifdef JP
if (name) return "±£ÆۤβÎ";
if (desc) return "±£Ì©¹ÔưǽÎϤò¾å¾º¤µ¤»¤ë¡£";
break;
- case MUSI_SPEL_ILLUSION_PATTERN:
+ case 12:
#ifdef JP
if (name) return "¸¸±Æ¤ÎÀûΧ";
if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤òº®Í𤵤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
break;
- case MUSI_SPEL_DOOMCALL:
+ case 13:
#ifdef JP
if (name) return "ÇËÌǤ櫤Ó";
if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ËÂФ·¤Æ¹ì²»¹¶·â¤ò¹Ô¤¦¡£";
break;
- case MUSI_SPEL_FIRIELS_SONG:
+ case 14:
#ifdef JP
if (name) return "¥Õ¥£¥ê¥¨¥ë¤Î²Î";
if (desc) return "¼þ°Ï¤Î»àÂΤä¹ü¤òÀ¸¤ÊÖ¤¹¡£";
}
break;
- case MUSI_SPEL_FELLOWSHIP_CHANT:
+ case 15:
#ifdef JP
if (name) return "ι¤ÎÃç´Ö";
if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
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 */
}
break;
- case MUSI_SPEL_FINRODS_RESISTANCE:
+ case 17:
#ifdef JP
if (name) return "¸µÁÇÂÑÀ";
if (desc) return "»À¡¢ÅÅ·â¡¢±ê¡¢Î䵤¡¢ÆǤËÂФ¹¤ëÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
break;
- case MUSI_SPEL_HOBBIT_MELODIES:
+ case 18:
#ifdef JP
if (name) return "¥Û¥Ó¥Ã¥È¤Î¥á¥í¥Ç¥£";
if (desc) return "²Ã®¤¹¤ë¡£";
break;
- case MUSI_SPEL_WORLD_CONTORTION:
+ case 19:
#ifdef JP
if (name) return "ÏĤó¤ÀÀ¤³¦";
if (desc) return "¶á¤¯¤Î¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
}
break;
- case MUSI_SPEL_DISPELLING_CHANT:
+ case 20:
#ifdef JP
if (name) return "Â໶¤Î²Î";
if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼¤ËÆäËÂ礤ʥÀ¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
}
break;
- case MUSI_SPEL_THE_VOICE_OF_SARUMAN:
+ case 21:
#ifdef JP
if (name) return "¥µ¥ë¥Þ¥ó¤Î´Å¸À";
if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò¸ºÂ®¤µ¤»¡¢Ì²¤é¤»¤è¤¦¤È¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
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 "¹ì²»¤Î¥Ó¡¼¥à¤òÊü¤Ä¡£";
}
break;
- case MUSI_SPEL_AMBARKANTA:
+ case 23:
#ifdef JP
if (name) return "¤â¤¦°ì¤Ä¤ÎÀ¤³¦";
if (desc) return "¸½ºß¤Î³¬¤òºÆ¹½À®¤¹¤ë¡£";
}
break;
- case MUSI_SPEL_WRECKING_PATTERN:
+ case 24:
#ifdef JP
if (name) return "Ç˲õ¤ÎÀûΧ";
if (desc) return "¼þ°Ï¤Î¥À¥ó¥¸¥ç¥ó¤òÍɤ餷¡¢ÊɤȾ²¤ò¥é¥ó¥À¥à¤ËÆþ¤ìÊѤ¨¤ë¡£";
break;
- case MUSI_SPEL_STATIONARY_SHRIEK:
+ case 25:
#ifdef JP
if (name) return "ÄäÂڤβÎ";
if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤òËãá㤵¤»¤è¤¦¤È¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
break;
- case MUSI_SPEL_ENDURANCE:
+ case 26:
#ifdef JP
if (name) return "¼é¤ê¤Î²Î";
if (desc) return "¼«Ê¬¤Î¤¤¤ë¾²¤Î¾å¤Ë¡¢¥â¥ó¥¹¥¿¡¼¤¬Ä̤êÈ´¤±¤¿¤ê¾¤´¤µ¤ì¤¿¤ê¤¹¤ë¤³¤È¤¬¤Ç¤¤Ê¤¯¤Ê¤ë¥ë¡¼¥ó¤òÉÁ¤¯¡£";
}
break;
- case MUSI_SPEL_THE_HEROS_POEM:
+ case 27:
#ifdef JP
if (name) return "±Ñͺ¤Î»í";
if (desc) return "²Ã®¤·¡¢¥Ò¡¼¥í¡¼µ¤Ê¬¤Ë¤Ê¤ê¡¢»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
}
break;
- case MUSI_SPEL_RELIEF_OF_YAVANNA:
+ case 28:
#ifdef JP
if (name) return "¥ä¥ô¥¡¥ó¥Ê¤Î½õ¤±";
if (desc) return "¶¯ÎϤʲóÉü¤Î²Î¤Ç¡¢Éé½ý¤ÈÛ¯Û°¾õÂÖ¤âÁ´²÷¤¹¤ë¡£";
break;
- case MUSI_SPEL_GODDESS_REBIRTH:
+ case 29:
#ifdef JP
if (name) return "ºÆÀ¸¤Î²Î";
if (desc) return "¤¹¤Ù¤Æ¤Î¥¹¥Æ¡¼¥¿¥¹¤È·Ð¸³Ãͤò²óÉü¤¹¤ë¡£";
}
break;
- case MUSI_SPEL_WIZARDRY_OF_SAURON:
+ case 30:
#ifdef JP
if (name) return "¥µ¥¦¥í¥ó¤ÎËâ½Ñ";
if (desc) return "Èó¾ï¤Ë¶¯ÎϤǤ´¤¯¾®¤µ¤¤¹ì²»¤Îµå¤òÊü¤Ä¡£";
}
break;
- case MUSI_SPEL_FINGOLFINS_CHALLENGE:
+ case 31:
#ifdef JP
if (name) return "¥Õ¥£¥ó¥´¥ë¥Õ¥£¥ó¤ÎÄ©Àï";
if (desc) return "¥À¥á¡¼¥¸¤ò¼õ¤±¤Ê¤¯¤Ê¤ë¥Ð¥ê¥¢¤òÄ¥¤ë¡£";
}
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¥Þ¥¹Î¥¤ì¤¿¤È¤³¤í¤Ë¤¤¤ë¥â¥ó¥¹¥¿¡¼¤ò¹¶·â¤¹¤ë¡£";
}
break;
- case TECH_SPEL_3_WAY_ATTACK:
+ case 1:
#ifdef JP
if (name) return "¸Þ·î±«»Â¤ê";
if (desc) return "3Êý¸þ¤ËÂФ·¤Æ¹¶·â¤¹¤ë¡£";
}
break;
- case TECH_SPEL_BOOMERANG:
+ case 2:
#ifdef JP
if (name) return "¥Ö¡¼¥á¥é¥ó";
if (desc) return "Éð´ï¤ò¼ê¸µ¤ËÌá¤Ã¤Æ¤¯¤ë¤è¤¦¤ËÅꤲ¤ë¡£Ìá¤Ã¤Æ¤³¤Ê¤¤¤³¤È¤â¤¢¤ë¡£";
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 "²Ð±êÂÑÀ¤Î¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤ËÂç¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
}
break;
- case TECH_SPEL_DETECT_FEROCITY:
+ case 4:
#ifdef JP
if (name) return "»¦µ¤´¶ÃÎ";
if (desc) return "¶á¤¯¤Î»×¹Í¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
}
break;
- case TECH_SPEL_STRIKE_TO_STUN:
+ case 5:
#ifdef JP
if (name) return "¤ß¤ÍÂǤÁ";
if (desc) return "Áê¼ê¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤Ê¤¤¤¬¡¢Û¯Û°¤È¤µ¤»¤ë¡£";
}
break;
- case TECH_SPEL_COUNTER:
+ case 6:
#ifdef JP
if (name) return "¥«¥¦¥ó¥¿¡¼";
if (desc) return "Áê¼ê¤Ë¹¶·â¤µ¤ì¤¿¤È¤¤ËÈ¿·â¤¹¤ë¡£È¿·â¤¹¤ë¤¿¤Ó¤ËMP¤ò¾ÃÈñ¡£";
}
break;
- case TECH_SPEL_HARAINUKE:
+ case 7:
#ifdef JP
if (name) return "ʧ¤¤È´¤±";
if (desc) return "¹¶·â¤·¤¿¸å¡¢È¿ÂЦ¤ËÈ´¤±¤ë¡£";
}
break;
- case TECH_SPEL_SERPENTS_TONGUE:
+ case 8:
#ifdef JP
if (name) return "¥µ¡¼¥Ú¥ó¥Ä¥¿¥ó";
if (desc) return "ÆÇÂÑÀ¤Î¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤ËÂç¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
}
break;
- case TECH_SPEL_ZAMMAKEN:
+ case 9:
#ifdef JP
if (name) return "»ÂËâ·õÆõ¤ÎÂÀÅá";
if (desc) return "À¸Ì¿¤Î¤Ê¤¤¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼¤ËÂç¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¤¬¡¢Â¾¤Î¥â¥ó¥¹¥¿¡¼¤Ë¤ÏÁ´¤¯¸ú²Ì¤¬¤Ê¤¤¡£";
}
break;
- case TECH_SPEL_WIND_BLAST:
+ case 10:
#ifdef JP
if (name) return "ÎöÉ÷·õ";
if (desc) return "¹¶·â¤·¤¿Áê¼ê¤ò¸åÊý¤Ø¿á¤Èô¤Ð¤¹¡£";
}
break;
- case TECH_SPEL_JUDGE:
+ case 11:
#ifdef JP
if (name) return "Åá¾¢¤ÎÌÜÍø¤";
if (desc) return "Éð´ï¡¦Ëɶñ¤ò1¤Ä¼±Ê̤¹¤ë¡£¥ì¥Ù¥ë45°Ê¾å¤ÇÉð´ï¡¦Ëɶñ¤ÎǽÎϤò´°Á´¤ËÃΤ뤳¤È¤¬¤Ç¤¤ë¡£";
if (cast)
{
- if (p_ptr->lev > 44)
+ if (plev > 44)
{
if (!identify_fully(TRUE)) return NULL;
}
}
break;
- case TECH_SPEL_ROCK_SMASH:
+ case 12:
#ifdef JP
if (name) return "ÇË´ä»Â";
if (desc) return "´ä¤ò²õ¤·¡¢´äÀзϤΥâ¥ó¥¹¥¿¡¼¤ËÂç¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
}
break;
- case TECH_SPEL_MIDARE_SETSUGEKKA:
+ case 13:
#ifdef JP
if (name) return "Íð¤ìÀã·î²Ö";
if (desc) return "¹¶·â²ó¿ô¤¬Áý¤¨¡¢Î䵤ÂÑÀ¤Î¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤ËÂç¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
}
break;
- case TECH_SPEL_SPOT_AIMING:
+ case 14:
#ifdef JP
if (name) return "µÞ½êÆͤ";
if (desc) return "¥â¥ó¥¹¥¿¡¼¤ò°ì·â¤ÇÅݤ¹¹¶·â¤ò·«¤ê½Ð¤¹¡£¼ºÇÔ¤¹¤ë¤È1ÅÀ¤·¤«¥À¥á¡¼¥¸¤òÍ¿¤¨¤é¤ì¤Ê¤¤¡£";
}
break;
- case TECH_SPEL_MAJINGIRI:
+ case 15:
#ifdef JP
if (name) return "Ëâ¿À»Â¤ê";
if (desc) return "²ñ¿´¤Î°ì·â¤Ç¹¶·â¤¹¤ë¡£¹¶·â¤¬¤«¤ï¤µ¤ì¤ä¤¹¤¤¡£";
}
break;
- case TECH_SPEL_DESPERATE_ATTACK:
+ case 16:
#ifdef JP
if (name) return "¼Î¤Æ¿È";
if (desc) return "¶¯ÎϤʹ¶·â¤ò·«¤ê½Ð¤¹¡£¼¡¤Î¥¿¡¼¥ó¤Þ¤Ç¤Î´Ö¡¢¿©¤é¤¦¥À¥á¡¼¥¸¤¬Áý¤¨¤ë¡£";
}
break;
- case TECH_SPEL_LIGHTNING_EAGLE:
+ case 17:
#ifdef JP
if (name) return "Íë·âÏÉÄÞ»Â";
if (desc) return "ÅÅ·âÂÑÀ¤Î¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤ËÈó¾ï¤ËÂ礤¤¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
}
break;
- case TECH_SPEL_RUSH_ATTACK:
+ case 18:
#ifdef JP
if (name) return "Æþ¿È";
if (desc) return "ÁÇÁ᤯Áê¼ê¤Ë¶á´ó¤ê¹¶·â¤¹¤ë¡£";
}
break;
- case TECH_SPEL_BLOODY_MAELSTROM:
+ case 19:
#ifdef JP
if (name) return "ÀÖή±²";
if (desc) return "¼«Ê¬¼«¿È¤â½ý¤òºî¤ê¤Ä¤Ä¡¢¤½¤Î½ý¤¬¿¼¤¤¤Û¤ÉÂ礤¤°ÒÎϤÇÁ´Êý¸þ¤ÎŨ¤ò¹¶·â¤Ç¤¤ë¡£À¸¤¤Æ¤¤¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤Ë¤Ï¸ú²Ì¤¬¤Ê¤¤¡£";
}
break;
- case TECH_SPEL_EARTHQUAKE_BLOW:
+ case 20:
#ifdef JP
if (name) return "·ã¿Ì·â";
if (desc) return "ÃϿ̤òµ¯¤³¤¹¡£";
}
break;
- case TECH_SPEL_CRACK:
+ case 21:
#ifdef JP
if (name) return "ÃÏÁö¤ê";
if (desc) return "¾×·âÇȤΥӡ¼¥à¤òÊü¤Ä¡£";
}
break;
- case TECH_SPEL_WAR_CRY:
+ case 22:
#ifdef JP
if (name) return "µ¤Ç÷¤Îͺ¶«¤Ó";
if (desc) return "»ë³¦Æâ¤ÎÁ´¥â¥ó¥¹¥¿¡¼¤ËÂФ·¤Æ¹ì²»¤Î¹¶·â¤ò¹Ô¤¦¡£¤µ¤é¤Ë¡¢¶á¤¯¤Ë¤¤¤ë¥â¥ó¥¹¥¿¡¼¤òÅܤ餻¤ë¡£";
#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Ãʹ¶·â¤ò·«¤ê½Ð¤¹¡£";
/* 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 "¹¶·â¤·¤¿Áê¼ê¤ÎÂÎÎϤòµÛ¤¤¤È¤ê¡¢¼«Ê¬¤ÎÂÎÎϤò²óÉü¤µ¤»¤ë¡£À¸Ì¿¤ò»ý¤¿¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤Ë¤ÏÄ̤¸¤Ê¤¤¡£";
}
break;
- case TECH_SPEL_MOON_DAZZLING:
+ case 25:
#ifdef JP
if (name) return "¸¸ÏÇ";
if (desc) return "»ë³¦Æâ¤Îµ¯¤¤Æ¤¤¤ëÁ´¥â¥ó¥¹¥¿¡¼¤ËÛ¯Û°¡¢º®Íð¡¢Ì²¤ê¤òÍ¿¤¨¤è¤¦¤È¤¹¤ë¡£";
#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¤¬¤Ê¤¯¤Ê¤ë¤«¡¢¥â¥ó¥¹¥¿¡¼¤òÅݤ»¤Ê¤«¤Ã¤¿¤éÉ´¿Í»Â¤ê¤Ï½ªÎ»¤¹¤ë¡£";
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;
}
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 "»ë³¦Æâ¤Î¾ì½ê¤ò»ØÄꤷ¤Æ¡¢¤½¤Î¾ì½ê¤È¼«Ê¬¤Î´Ö¤Ë¤¤¤ëÁ´¥â¥ó¥¹¥¿¡¼¤ò¹¶·â¤·¡¢¤½¤Î¾ì½ê¤Ë°ÜÆ°¤¹¤ë¡£";
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))
{
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ÅÙ¹¶·â¤ò¹Ô¤¦¡£";
}
break;
- case TECH_SPEL_KOFUKU_ZETTOUSEI:
+ case 29:
#ifdef JP
if (name) return "¸×ÉúÀäÅáÀª";
if (desc) return "¶¯ÎϤʹ¶·â¤ò¹Ô¤¤¡¢¶á¤¯¤Î¾ì½ê¤Ë¤â¸ú²Ì¤¬µÚ¤Ö¡£";
}
break;
- case TECH_SPEL_KEIUN_KININKEN:
+ case 30:
#ifdef JP
if (name) return "·Ä±Àµ´Ç¦·õ";
if (desc) return "¼«Ê¬¤â¥À¥á¡¼¥¸¤ò¤¯¤é¤¦¤¬¡¢Áê¼ê¤ËÈó¾ï¤ËÂ礤ʥÀ¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£¥¢¥ó¥Ç¥Ã¥É¤Ë¤ÏÆä˸ú²Ì¤¬¤¢¤ë¡£";
}
break;
- case TECH_SPEL_HARAKIRI:
+ case 31:
#ifdef JP
if (name) return "ÀÚÊ¢";
if (desc) return "¡ÖÉð»ÎÆ»¤È¤Ï¡¢»à¤Ì¤³¤È¤È¸«¤Ä¤±¤¿¤ê¡£¡×";
{
#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;
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;
+}