Hengband  2.2.1
データ構造 | マクロ定義 | 型定義 | 関数 | 変数
monster-spell.h ファイル
被依存関係図:

[ソースコード]

データ構造

struct  monster_power
 

マクロ定義

#define MONSTER_TO_PLAYER   0x01
 
#define MONSTER_TO_MONSTER   0x02
 
#define S_NUM_6   (easy_band ? 2 : 6)
 
#define S_NUM_4   (easy_band ? 1 : 4)
 
#define RF4_SPELL_START   32 * 3
 
#define RF5_SPELL_START   32 * 4
 
#define RF6_SPELL_START   32 * 5
 
#define RF4_SPELL_SIZE   32
 
#define RF5_SPELL_SIZE   32
 
#define RF6_SPELL_SIZE   32
 
#define DAM_ROLL   1
 
#define DAM_MAX   2
 
#define DAM_MIN   3
 
#define DICE_NUM   4
 
#define DICE_SIDE   5
 
#define DICE_MULT   6
 
#define DICE_DIV   7
 
#define BASE_DAM   8
 
#define MAX_MONSPELLS   96
 
#define MONSPELL_TYPE_BOLT   1
 
#define MONSPELL_TYPE_BALL   2
 
#define MONSPELL_TYPE_BREATH   3
 
#define MONSPELL_TYPE_SUMMON   4
 
#define MONSPELL_TYPE_OTHER   5
 
#define MS_SHRIEK   0
 
#define MS_XXX1   1
 
#define MS_DISPEL   2
 
#define MS_ROCKET   3
 
#define MS_SHOOT   4
 
#define MS_XXX2   5
 
#define MS_XXX3   6
 
#define MS_XXX4   7
 
#define MS_BR_ACID   8
 
#define MS_BR_ELEC   9
 
#define MS_BR_FIRE   10
 
#define MS_BR_COLD   11
 
#define MS_BR_POIS   12
 
#define MS_BR_NETHER   13
 
#define MS_BR_LITE   14
 
#define MS_BR_DARK   15
 
#define MS_BR_CONF   16
 
#define MS_BR_SOUND   17
 
#define MS_BR_CHAOS   18
 
#define MS_BR_DISEN   19
 
#define MS_BR_NEXUS   20
 
#define MS_BR_TIME   21
 
#define MS_BR_INERTIA   22
 
#define MS_BR_GRAVITY   23
 
#define MS_BR_SHARDS   24
 
#define MS_BR_PLASMA   25
 
#define MS_BR_FORCE   26
 
#define MS_BR_MANA   27
 
#define MS_BALL_NUKE   28
 
#define MS_BR_NUKE   29
 
#define MS_BALL_CHAOS   30
 
#define MS_BR_DISI   31
 
#define MS_BALL_ACID   32
 
#define MS_BALL_ELEC   33
 
#define MS_BALL_FIRE   34
 
#define MS_BALL_COLD   35
 
#define MS_BALL_POIS   36
 
#define MS_BALL_NETHER   37
 
#define MS_BALL_WATER   38
 
#define MS_BALL_MANA   39
 
#define MS_BALL_DARK   40
 
#define MS_DRAIN_MANA   41
 
#define MS_MIND_BLAST   42
 
#define MS_BRAIN_SMASH   43
 
#define MS_CAUSE_1   44
 
#define MS_CAUSE_2   45
 
#define MS_CAUSE_3   46
 
#define MS_CAUSE_4   47
 
#define MS_BOLT_ACID   48
 
#define MS_BOLT_ELEC   49
 
#define MS_BOLT_FIRE   50
 
#define MS_BOLT_COLD   51
 
#define MS_STARBURST   52
 
#define MS_BOLT_NETHER   53
 
#define MS_BOLT_WATER   54
 
#define MS_BOLT_MANA   55
 
#define MS_BOLT_PLASMA   56
 
#define MS_BOLT_ICE   57
 
#define MS_MAGIC_MISSILE   58
 
#define MS_SCARE   59
 
#define MS_BLIND   60
 
#define MS_CONF   61
 
#define MS_SLOW   62
 
#define MS_SLEEP   63
 
#define MS_SPEED   64
 
#define MS_HAND_DOOM   65
 
#define MS_HEAL   66
 
#define MS_INVULNER   67
 
#define MS_BLINK   68
 
#define MS_TELEPORT   69
 
#define MS_WORLD   70
 
#define MS_SPECIAL   71
 
#define MS_TELE_TO   72
 
#define MS_TELE_AWAY   73
 
#define MS_TELE_LEVEL   74
 
#define MS_PSY_SPEAR   75
 
#define MS_DARKNESS   76
 
#define MS_MAKE_TRAP   77
 
#define MS_FORGET   78
 
#define MS_RAISE_DEAD   79
 
#define MS_S_KIN   80
 
#define MS_S_CYBER   81
 
#define MS_S_MONSTER   82
 
#define MS_S_MONSTERS   83
 
#define MS_S_ANT   84
 
#define MS_S_SPIDER   85
 
#define MS_S_HOUND   86
 
#define MS_S_HYDRA   87
 
#define MS_S_ANGEL   88
 
#define MS_S_DEMON   89
 
#define MS_S_UNDEAD   90
 
#define MS_S_DRAGON   91
 
#define MS_S_HI_UNDEAD   92
 
#define MS_S_HI_DRAGON   93
 
#define MS_S_AMBERITE   94
 
#define MS_S_UNIQUE   95
 
#define RF4_INT_MASK   (RF4_SUMMON_MASK | RF4_DISPEL)
 
#define RF5_INT_MASK
 
#define RF6_INT_MASK
 
#define RF4_RIDING_MASK   (RF4_SHRIEK)
 
#define RF5_RIDING_MASK   0UL
 
#define RF6_RIDING_MASK   (RF6_BLINK | RF6_TPORT | RF6_TRAPS | RF6_DARKNESS | RF6_SPECIAL)
 
#define RF4_BOLT_MASK   (RF4_ROCKET | RF4_SHOOT)
 
#define RF5_BOLT_MASK
 
#define RF6_BOLT_MASK   0UL
 
#define RF4_BEAM_MASK   0UL
 
#define RF5_BEAM_MASK   0UL
 
#define RF6_BEAM_MASK   (RF6_PSY_SPEAR)
 
#define RF4_BALL_MASK
 
#define RF5_BALL_MASK
 
#define RF6_BALL_MASK   (RF6_BIG_BALL_MASK | RF6_BREATH_MASK)
 
#define RF4_BIG_BALL_MASK   (RF4_BA_CHAO)
 
#define RF5_BIG_BALL_MASK   (RF5_BA_LITE | RF5_BA_DARK | RF5_BA_WATE | RF5_BA_MANA)
 
#define RF6_BIG_BALL_MASK   0UL
 
#define RF4_BREATH_MASK
 
#define RF5_BREATH_MASK   0UL
 
#define RF6_BREATH_MASK   0UL
 
#define RF4_SUMMON_MASK   0UL
 
#define RF5_SUMMON_MASK   0UL
 
#define RF6_SUMMON_MASK
 
#define RF4_ATTACK_MASK   (RF4_BOLT_MASK | RF4_BEAM_MASK | RF4_BALL_MASK | RF4_DISPEL)
 
#define RF5_ATTACK_MASK
 
#define RF6_ATTACK_MASK
 
#define RF4_INDIRECT_MASK   (RF4_SUMMON_MASK | RF4_SHRIEK)
 
#define RF5_INDIRECT_MASK   (RF5_SUMMON_MASK)
 
#define RF6_INDIRECT_MASK
 
#define RF4_NOMAGIC_MASK   (RF4_BREATH_MASK | RF4_SHRIEK | RF4_ROCKET | RF4_SHOOT)
 
#define RF5_NOMAGIC_MASK   (RF5_BREATH_MASK)
 
#define RF6_NOMAGIC_MASK   (RF6_BREATH_MASK | RF6_SPECIAL)
 

型定義

typedef struct monster_power monster_power
 

関数

bool clean_shot (POSITION y1, POSITION x1, POSITION y2, POSITION x2, bool is_friend)
 モンスターにとってボルト型魔法が有効な状態かを返す / Determine if a bolt spell will hit the player. [詳解]
 
bool summon_possible (POSITION y1, POSITION x1)
 モンスターにとって所定の地点が召還に相応しい地点かどうかを返す。 / Determine if there is a space near the player in which a summoned creature can appear [詳解]
 
bool raise_possible (monster_type *m_ptr)
 モンスターにとって死者復活を行うべき状態かどうかを返す / Determine if there is a space near the player in which a summoned creature can appear [詳解]
 
bool dispel_check (MONSTER_IDX m_idx)
 モンスターがプレイヤーに魔力消去を与えるべきかを判定するルーチン Check should monster cast dispel spell. [詳解]
 
bool spell_is_inate (SPELL_IDX spell)
 ID値が非魔術的な特殊技能かどうかを返す / Return TRUE if a spell is inate spell. [詳解]
 
bool make_attack_spell (MONSTER_IDX m_idx)
 モンスターの特殊技能メインルーチン / Creatures can cast spells, shoot missiles, and breathe. [詳解]
 
void beam (MONSTER_IDX m_idx, POSITION y, POSITION x, EFFECT_ID typ, int dam_hp, int monspell, int target_type)
 モンスターのビーム型魔法処理 / [詳解]
 
void bolt (MONSTER_IDX m_idx, POSITION y, POSITION x, EFFECT_ID typ, int dam_hp, int monspell, int target_type)
 モンスターのボルト型魔法処理 / Cast a bolt at the player Stop if we hit a monster Affect monsters and the player [詳解]
 
void breath (POSITION y, POSITION x, MONSTER_IDX m_idx, EFFECT_ID typ, int dam_hp, POSITION rad, bool breath, int monspell, int target_type)
 モンスターのボール型&ブレス型魔法処理 / Cast a breath (or ball) attack at the player Pass over any monsters that may be in the way Affect grids, objects, monsters, and the player [詳解]
 
void get_project_point (POSITION sy, POSITION sx, POSITION *ty, POSITION *tx, BIT_FLAGS flg)
 モンスターが特殊能力の目標地点を決める処理 / Get the actual center point of ball spells (rad > 1) (originally from TOband) [詳解]
 
bool monst_spell_monst (MONSTER_IDX m_idx)
 モンスターが敵モンスターに特殊能力を使う処理のメインルーチン / Monster tries to 'cast a spell' (or breath, etc) at another monster. [詳解]
 
bool do_cmd_cast_learned (void)
 青魔法コマンドのメインルーチン / do_cmd_cast calls this function if the player's class is 'Blue-Mage'. [詳解]
 
void learn_spell (int monspell)
 青魔法のラーニング判定と成功した場合のラーニング処理 [詳解]
 
void set_rf_masks (BIT_FLAGS *f4, BIT_FLAGS *f5, BIT_FLAGS *f6, BIT_FLAGS mode)
 モンスター特殊能力のフラグ配列から特定条件の魔法だけを抜き出す処理 Extract monster spells mask for the given mode [詳解]
 
bool spell_learnable (MONSTER_IDX m_idx)
 モンスターの唱えた呪文を青魔法で学習できるか判定する / [詳解]
 
HIT_POINT monspell_to_player (int SPELL_NUM, POSITION y, POSITION x, MONSTER_IDX m_idx)
 モンスターからプレイヤーへの呪文の振り分け関数。 / [詳解]
 
HIT_POINT monspell_to_monster (int SPELL_NUM, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx)
 モンスターからモンスターへの呪文の振り分け関数。 / [詳解]
 
HIT_POINT monspell_damage (int SPELL_NUM, MONSTER_IDX m_idx, int TYPE)
 モンスターの使う呪文の威力を返す / [詳解]
 
HIT_POINT monspell_race_damage (int SPELL_NUM, MONRACE_IDX r_idx, int TYPE)
 モンスターの使う呪文の威力を返す / [詳解]
 
HIT_POINT monspell_bluemage_damage (int SPELL_NUM, PLAYER_LEVEL plev, int TYPE)
 青魔導師の使う呪文の威力を返す / [詳解]
 

変数

const monster_power monster_powers [MAX_MONSPELLS]
 青魔法テーブル [詳解]
 
const concptr monster_powers_short [MAX_MONSPELLS]
 モンスター魔法名テーブル [詳解]
 

マクロ定義詳解

◆ BASE_DAM

#define BASE_DAM   8

◆ DAM_MAX

#define DAM_MAX   2

◆ DAM_MIN

#define DAM_MIN   3

◆ DAM_ROLL

#define DAM_ROLL   1

◆ DICE_DIV

#define DICE_DIV   7

◆ DICE_MULT

#define DICE_MULT   6

◆ DICE_NUM

#define DICE_NUM   4

◆ DICE_SIDE

#define DICE_SIDE   5

◆ MAX_MONSPELLS

#define MAX_MONSPELLS   96

◆ MONSPELL_TYPE_BALL

#define MONSPELL_TYPE_BALL   2

◆ MONSPELL_TYPE_BOLT

#define MONSPELL_TYPE_BOLT   1

◆ MONSPELL_TYPE_BREATH

#define MONSPELL_TYPE_BREATH   3

◆ MONSPELL_TYPE_OTHER

#define MONSPELL_TYPE_OTHER   5

◆ MONSPELL_TYPE_SUMMON

#define MONSPELL_TYPE_SUMMON   4

◆ MONSTER_TO_MONSTER

#define MONSTER_TO_MONSTER   0x02

◆ MONSTER_TO_PLAYER

#define MONSTER_TO_PLAYER   0x01

◆ MS_BALL_ACID

#define MS_BALL_ACID   32

◆ MS_BALL_CHAOS

#define MS_BALL_CHAOS   30

◆ MS_BALL_COLD

#define MS_BALL_COLD   35

◆ MS_BALL_DARK

#define MS_BALL_DARK   40

◆ MS_BALL_ELEC

#define MS_BALL_ELEC   33

◆ MS_BALL_FIRE

#define MS_BALL_FIRE   34

◆ MS_BALL_MANA

#define MS_BALL_MANA   39

◆ MS_BALL_NETHER

#define MS_BALL_NETHER   37

◆ MS_BALL_NUKE

#define MS_BALL_NUKE   28

◆ MS_BALL_POIS

#define MS_BALL_POIS   36

◆ MS_BALL_WATER

#define MS_BALL_WATER   38

◆ MS_BLIND

#define MS_BLIND   60

◆ MS_BLINK

#define MS_BLINK   68

◆ MS_BOLT_ACID

#define MS_BOLT_ACID   48

◆ MS_BOLT_COLD

#define MS_BOLT_COLD   51

◆ MS_BOLT_ELEC

#define MS_BOLT_ELEC   49

◆ MS_BOLT_FIRE

#define MS_BOLT_FIRE   50

◆ MS_BOLT_ICE

#define MS_BOLT_ICE   57

◆ MS_BOLT_MANA

#define MS_BOLT_MANA   55

◆ MS_BOLT_NETHER

#define MS_BOLT_NETHER   53

◆ MS_BOLT_PLASMA

#define MS_BOLT_PLASMA   56

◆ MS_BOLT_WATER

#define MS_BOLT_WATER   54

◆ MS_BR_ACID

#define MS_BR_ACID   8

◆ MS_BR_CHAOS

#define MS_BR_CHAOS   18

◆ MS_BR_COLD

#define MS_BR_COLD   11

◆ MS_BR_CONF

#define MS_BR_CONF   16

◆ MS_BR_DARK

#define MS_BR_DARK   15

◆ MS_BR_DISEN

#define MS_BR_DISEN   19

◆ MS_BR_DISI

#define MS_BR_DISI   31

◆ MS_BR_ELEC

#define MS_BR_ELEC   9

◆ MS_BR_FIRE

#define MS_BR_FIRE   10

◆ MS_BR_FORCE

#define MS_BR_FORCE   26

◆ MS_BR_GRAVITY

#define MS_BR_GRAVITY   23

◆ MS_BR_INERTIA

#define MS_BR_INERTIA   22

◆ MS_BR_LITE

#define MS_BR_LITE   14

◆ MS_BR_MANA

#define MS_BR_MANA   27

◆ MS_BR_NETHER

#define MS_BR_NETHER   13

◆ MS_BR_NEXUS

#define MS_BR_NEXUS   20

◆ MS_BR_NUKE

#define MS_BR_NUKE   29

◆ MS_BR_PLASMA

#define MS_BR_PLASMA   25

◆ MS_BR_POIS

#define MS_BR_POIS   12

◆ MS_BR_SHARDS

#define MS_BR_SHARDS   24

◆ MS_BR_SOUND

#define MS_BR_SOUND   17

◆ MS_BR_TIME

#define MS_BR_TIME   21

◆ MS_BRAIN_SMASH

#define MS_BRAIN_SMASH   43

◆ MS_CAUSE_1

#define MS_CAUSE_1   44

◆ MS_CAUSE_2

#define MS_CAUSE_2   45

◆ MS_CAUSE_3

#define MS_CAUSE_3   46

◆ MS_CAUSE_4

#define MS_CAUSE_4   47

◆ MS_CONF

#define MS_CONF   61

◆ MS_DARKNESS

#define MS_DARKNESS   76

◆ MS_DISPEL

#define MS_DISPEL   2

◆ MS_DRAIN_MANA

#define MS_DRAIN_MANA   41

◆ MS_FORGET

#define MS_FORGET   78

◆ MS_HAND_DOOM

#define MS_HAND_DOOM   65

◆ MS_HEAL

#define MS_HEAL   66

◆ MS_INVULNER

#define MS_INVULNER   67

◆ MS_MAGIC_MISSILE

#define MS_MAGIC_MISSILE   58

◆ MS_MAKE_TRAP

#define MS_MAKE_TRAP   77

◆ MS_MIND_BLAST

#define MS_MIND_BLAST   42

◆ MS_PSY_SPEAR

#define MS_PSY_SPEAR   75

◆ MS_RAISE_DEAD

#define MS_RAISE_DEAD   79

◆ MS_ROCKET

#define MS_ROCKET   3

◆ MS_S_AMBERITE

#define MS_S_AMBERITE   94

◆ MS_S_ANGEL

#define MS_S_ANGEL   88

◆ MS_S_ANT

#define MS_S_ANT   84

◆ MS_S_CYBER

#define MS_S_CYBER   81

◆ MS_S_DEMON

#define MS_S_DEMON   89

◆ MS_S_DRAGON

#define MS_S_DRAGON   91

◆ MS_S_HI_DRAGON

#define MS_S_HI_DRAGON   93

◆ MS_S_HI_UNDEAD

#define MS_S_HI_UNDEAD   92

◆ MS_S_HOUND

#define MS_S_HOUND   86

◆ MS_S_HYDRA

#define MS_S_HYDRA   87

◆ MS_S_KIN

#define MS_S_KIN   80

◆ MS_S_MONSTER

#define MS_S_MONSTER   82

◆ MS_S_MONSTERS

#define MS_S_MONSTERS   83

◆ MS_S_SPIDER

#define MS_S_SPIDER   85

◆ MS_S_UNDEAD

#define MS_S_UNDEAD   90

◆ MS_S_UNIQUE

#define MS_S_UNIQUE   95

◆ MS_SCARE

#define MS_SCARE   59

◆ MS_SHOOT

#define MS_SHOOT   4

◆ MS_SHRIEK

#define MS_SHRIEK   0

◆ MS_SLEEP

#define MS_SLEEP   63

◆ MS_SLOW

#define MS_SLOW   62

◆ MS_SPECIAL

#define MS_SPECIAL   71

◆ MS_SPEED

#define MS_SPEED   64

◆ MS_STARBURST

#define MS_STARBURST   52

◆ MS_TELE_AWAY

#define MS_TELE_AWAY   73

◆ MS_TELE_LEVEL

#define MS_TELE_LEVEL   74

◆ MS_TELE_TO

#define MS_TELE_TO   72

◆ MS_TELEPORT

#define MS_TELEPORT   69

◆ MS_WORLD

#define MS_WORLD   70

◆ MS_XXX1

#define MS_XXX1   1

◆ MS_XXX2

#define MS_XXX2   5

◆ MS_XXX3

#define MS_XXX3   6

◆ MS_XXX4

#define MS_XXX4   7

◆ RF4_ATTACK_MASK

#define RF4_ATTACK_MASK   (RF4_BOLT_MASK | RF4_BEAM_MASK | RF4_BALL_MASK | RF4_DISPEL)

◆ RF4_BALL_MASK

#define RF4_BALL_MASK
値:
RF4_ROCKET | RF4_BA_NUKE)
#define RF4_BIG_BALL_MASK
Definition: monster-spell.h:221
#define RF4_BREATH_MASK
Definition: monster-spell.h:233
#define RF4_BA_NUKE
モンスター能力: 放射能球 / TY: Nuke Ball
Definition: monsterrace.h:202

◆ RF4_BEAM_MASK

#define RF4_BEAM_MASK   0UL

◆ RF4_BIG_BALL_MASK

#define RF4_BIG_BALL_MASK   (RF4_BA_CHAO)

◆ RF4_BOLT_MASK

#define RF4_BOLT_MASK   (RF4_ROCKET | RF4_SHOOT)

◆ RF4_BREATH_MASK

#define RF4_BREATH_MASK
値:
RF4_BR_POIS | RF4_BR_NETH | RF4_BR_LITE | RF4_BR_DARK | \
RF4_BR_CONF | RF4_BR_SOUN | RF4_BR_CHAO | RF4_BR_DISE | \
RF4_BR_NEXU | RF4_BR_SHAR | RF4_BR_TIME | RF4_BR_INER | \
RF4_BR_GRAV | RF4_BR_PLAS | RF4_BR_WALL | RF4_BR_MANA | \
RF4_BR_NUKE | RF4_BR_DISI)
#define RF4_BR_SHAR
Definition: load.c:1189
#define RF4_BR_DISI
モンスター能力: 分解のブレス / Breathe Disintegration
Definition: monsterrace.h:205
#define RF4_BR_DARK
Definition: load.c:1182
#define RF4_BR_ELEC
モンスター能力: 電撃のブレス / Breathe Elec
Definition: monsterrace.h:183
#define RF4_BR_COLD
モンスター能力: 冷気のブレス / Breathe Cold
Definition: monsterrace.h:185
#define RF4_BR_MANA
モンスター能力: 魔力のブレス / Breathe Mana
Definition: monsterrace.h:201
#define RF4_BR_FIRE
モンスター能力: 火炎のブレス / Breathe Fire
Definition: monsterrace.h:184
#define RF4_BR_PLAS
モンスター能力: プラズマのブレス / Breathe Plasma
Definition: monsterrace.h:199
#define RF4_BR_INER
Definition: load.c:1187
#define RF4_BR_CHAO
Definition: load.c:1185
#define RF4_BR_WALL
Definition: load.c:1190
#define RF4_BR_NETH
モンスター能力: 地獄のブレス / Breathe Nether
Definition: monsterrace.h:187
#define RF4_BR_LITE
Definition: load.c:1181
#define RF4_BR_SOUN
Definition: load.c:1184
#define RF4_BR_DISE
モンスター能力: 劣化のブレス / Breathe Disenchant
Definition: monsterrace.h:193
#define RF4_BR_TIME
Definition: load.c:1186
#define RF4_BR_ACID
モンスター能力: 酸のブレス / Breathe Acid
Definition: monsterrace.h:182

◆ RF4_INDIRECT_MASK

#define RF4_INDIRECT_MASK   (RF4_SUMMON_MASK | RF4_SHRIEK)

◆ RF4_INT_MASK

#define RF4_INT_MASK   (RF4_SUMMON_MASK | RF4_DISPEL)

◆ RF4_NOMAGIC_MASK

#define RF4_NOMAGIC_MASK   (RF4_BREATH_MASK | RF4_SHRIEK | RF4_ROCKET | RF4_SHOOT)

◆ RF4_RIDING_MASK

#define RF4_RIDING_MASK   (RF4_SHRIEK)

◆ RF4_SPELL_SIZE

#define RF4_SPELL_SIZE   32

◆ RF4_SPELL_START

#define RF4_SPELL_START   32 * 3

◆ RF4_SUMMON_MASK

#define RF4_SUMMON_MASK   0UL

◆ RF5_ATTACK_MASK

#define RF5_ATTACK_MASK
値:
RF5_DRAIN_MANA | RF5_MIND_BLAST | RF5_BRAIN_SMASH | \
RF5_CAUSE_1 | RF5_CAUSE_2 | RF5_CAUSE_3 | RF5_CAUSE_4 | \
RF5_SCARE | RF5_BLIND | RF5_CONF | RF5_SLOW | RF5_HOLD)
#define RF5_CONF
モンスター能力: 混乱 / Confuse Player
Definition: monsterrace.h:341
#define RF5_SLOW
モンスター能力: 減速 / Slow Player
Definition: monsterrace.h:342
#define RF5_BEAM_MASK
Definition: monster-spell.h:196
#define RF5_BALL_MASK
Definition: monster-spell.h:209
#define RF5_HOLD
モンスター能力: 麻痺 / Paralyze Player
Definition: monsterrace.h:343
#define RF5_BOLT_MASK
Definition: monster-spell.h:183
#define RF5_CAUSE_3
モンスター能力: 致命傷の呪い / Cause Critical Wound
Definition: monsterrace.h:326
#define RF5_MIND_BLAST
モンスター能力: 精神攻撃 / Blast Mind
Definition: monsterrace.h:322
#define RF5_CAUSE_4
モンスター能力: 秘孔を突く / Cause Mortal Wound
Definition: monsterrace.h:327
#define RF5_BRAIN_SMASH
モンスター能力: 脳攻撃 / Smash Brain
Definition: monsterrace.h:323
#define RF5_BLIND
モンスター能力: 盲目 / Blind Player
Definition: monsterrace.h:340
#define RF5_CAUSE_2
モンスター能力: 重症の頃い / Cause Serious Wound
Definition: monsterrace.h:325

◆ RF5_BALL_MASK

#define RF5_BALL_MASK
値:
RF5_BA_ACID | RF5_BA_ELEC | RF5_BA_FIRE | RF5_BA_COLD | \
RF5_BA_POIS | RF5_BA_NETH)
#define RF5_BA_ELEC
モンスター能力: サンダー・ボール / Elec Ball
Definition: monsterrace.h:313
#define RF5_BA_FIRE
モンスター能力: ファイア・ボール / Fire Ball
Definition: monsterrace.h:314
#define RF5_BIG_BALL_MASK
Definition: monster-spell.h:224
#define RF5_BREATH_MASK
Definition: monster-spell.h:241
#define RF5_BA_NETH
モンスター能力: 地獄球 / Nether Ball
Definition: monsterrace.h:317
#define RF5_BA_COLD
モンスター能力: アイス・ボール / Cold Ball
Definition: monsterrace.h:315

◆ RF5_BEAM_MASK

#define RF5_BEAM_MASK   0UL

◆ RF5_BIG_BALL_MASK

#define RF5_BIG_BALL_MASK   (RF5_BA_LITE | RF5_BA_DARK | RF5_BA_WATE | RF5_BA_MANA)

◆ RF5_BOLT_MASK

#define RF5_BOLT_MASK
値:
RF5_BO_NETH | RF5_BO_WATE | RF5_BO_MANA | RF5_BO_PLAS | \
RF5_BO_ICEE | RF5_MISSILE)
#define RF5_BO_ELEC
モンスター能力: サンダー・ボルト / Elec Bolt
Definition: monsterrace.h:329
#define RF5_MISSILE
モンスター能力: マジック・ミサイルt / Magic Missile
Definition: monsterrace.h:338
#define RF5_BO_WATE
モンスター能力: ウォーター・ボルト / Water Bolt
Definition: monsterrace.h:334
#define RF5_BO_MANA
モンスター能力: 魔力の矢 / Mana Bolt
Definition: monsterrace.h:335
#define RF5_BO_ACID
モンスター能力: アシッド・ボルト / Acid Bolt
Definition: monsterrace.h:328
#define RF5_BO_FIRE
モンスター能力: ファイア・ボルト / Fire Bolt
Definition: monsterrace.h:330
#define RF5_BO_PLAS
モンスター能力: プラズマ・ボルト / Plasma Bolt
Definition: monsterrace.h:336
#define RF5_BO_COLD
モンスター能力: アイス・ボルト / Cold Bolt
Definition: monsterrace.h:331

◆ RF5_BREATH_MASK

#define RF5_BREATH_MASK   0UL

◆ RF5_INDIRECT_MASK

#define RF5_INDIRECT_MASK   (RF5_SUMMON_MASK)

◆ RF5_INT_MASK

#define RF5_INT_MASK
値:
#define RF5_CONF
モンスター能力: 混乱 / Confuse Player
Definition: monsterrace.h:341
#define RF5_SUMMON_MASK
Definition: monster-spell.h:251
#define RF5_SCARE
モンスター能力: 恐慌 / Frighten Player
Definition: monsterrace.h:339
#define RF5_SLOW
モンスター能力: 減速 / Slow Player
Definition: monsterrace.h:342
#define RF5_BLIND
モンスター能力: 盲目 / Blind Player
Definition: monsterrace.h:340

◆ RF5_NOMAGIC_MASK

#define RF5_NOMAGIC_MASK   (RF5_BREATH_MASK)

◆ RF5_RIDING_MASK

#define RF5_RIDING_MASK   0UL

◆ RF5_SPELL_SIZE

#define RF5_SPELL_SIZE   32

◆ RF5_SPELL_START

#define RF5_SPELL_START   32 * 4

◆ RF5_SUMMON_MASK

#define RF5_SUMMON_MASK   0UL

◆ RF6_ATTACK_MASK

#define RF6_ATTACK_MASK
値:
RF6_HAND_DOOM | RF6_TELE_TO | RF6_TELE_AWAY | RF6_TELE_LEVEL | \
RF6_DARKNESS | RF6_TRAPS | RF6_FORGET)
#define RF6_TRAPS
Definition: monsterrace.h:359
#define RF6_BEAM_MASK
Definition: monster-spell.h:198
#define RF6_BOLT_MASK
Definition: monster-spell.h:188
#define RF6_TELE_TO
Definition: monsterrace.h:354
#define RF6_TELE_LEVEL
Definition: monsterrace.h:356
#define RF6_FORGET
Definition: monsterrace.h:360
#define RF6_BALL_MASK
Definition: monster-spell.h:214
#define RF6_TELE_AWAY
Definition: monsterrace.h:355

◆ RF6_BALL_MASK

#define RF6_BALL_MASK   (RF6_BIG_BALL_MASK | RF6_BREATH_MASK)

◆ RF6_BEAM_MASK

#define RF6_BEAM_MASK   (RF6_PSY_SPEAR)

◆ RF6_BIG_BALL_MASK

#define RF6_BIG_BALL_MASK   0UL

◆ RF6_BOLT_MASK

#define RF6_BOLT_MASK   0UL

◆ RF6_BREATH_MASK

#define RF6_BREATH_MASK   0UL

◆ RF6_INDIRECT_MASK

#define RF6_INDIRECT_MASK
値:
RF6_HASTE | RF6_HEAL | RF6_INVULNER | RF6_BLINK | RF6_WORLD | \
RF6_TPORT | RF6_RAISE_DEAD)
#define RF6_INVULNER
Definition: monsterrace.h:349
#define RF6_BLINK
Definition: monsterrace.h:350
#define RF6_HEAL
Definition: monsterrace.h:348
#define RF6_SUMMON_MASK
Definition: monster-spell.h:253
#define RF6_RAISE_DEAD
Definition: monsterrace.h:361
#define RF6_WORLD
Definition: monsterrace.h:352

◆ RF6_INT_MASK

#define RF6_INT_MASK
値:
#define RF6_TRAPS
Definition: monsterrace.h:359
#define RF6_TPORT
Definition: monsterrace.h:351
#define RF6_INVULNER
Definition: monsterrace.h:349
#define RF6_TELE_LEVEL
Definition: monsterrace.h:356
#define RF6_HASTE
Definition: monsterrace.h:346
#define RF6_SUMMON_MASK
Definition: monster-spell.h:253
#define RF6_TELE_AWAY
Definition: monsterrace.h:355

◆ RF6_NOMAGIC_MASK

#define RF6_NOMAGIC_MASK   (RF6_BREATH_MASK | RF6_SPECIAL)

◆ RF6_RIDING_MASK

#define RF6_RIDING_MASK   (RF6_BLINK | RF6_TPORT | RF6_TRAPS | RF6_DARKNESS | RF6_SPECIAL)

◆ RF6_SPELL_SIZE

#define RF6_SPELL_SIZE   32

◆ RF6_SPELL_START

#define RF6_SPELL_START   32 * 5

◆ RF6_SUMMON_MASK

#define RF6_SUMMON_MASK
値:
RF6_S_AMBERITES | RF6_S_UNIQUE)
#define RF6_S_ANT
Definition: monsterrace.h:366
#define RF6_S_CYBER
Definition: monsterrace.h:363
#define RF6_S_UNIQUE
Definition: monsterrace.h:377
#define RF6_S_HI_UNDEAD
Definition: monsterrace.h:374
#define RF6_S_MONSTERS
Definition: monsterrace.h:365
#define RF6_S_HOUND
Definition: monsterrace.h:368
#define RF6_S_HYDRA
Definition: monsterrace.h:369
#define RF6_S_DEMON
Definition: monsterrace.h:371
#define RF6_S_KIN
Definition: monsterrace.h:362
#define RF6_S_HI_DRAGON
Definition: monsterrace.h:375
#define RF6_S_MONSTER
Definition: monsterrace.h:364
#define RF6_S_DRAGON
Definition: monsterrace.h:373
#define RF6_S_ANGEL
Definition: monsterrace.h:370

◆ S_NUM_4

#define S_NUM_4   (easy_band ? 1 : 4)

◆ S_NUM_6

#define S_NUM_6   (easy_band ? 2 : 6)

型定義詳解

◆ monster_power

typedef struct monster_power monster_power

関数詳解

◆ beam()

void beam ( MONSTER_IDX  m_idx,
POSITION  y,
POSITION  x,
EFFECT_ID  typ,
int  dam_hp,
int  monspell,
int  target_type 
)

モンスターのビーム型魔法処理 /

引数
m_idxモンスターのID
y目標のY座標
x目標のX座標
typ効果属性ID
dam_hp威力
monspellモンスター魔法のID
target_typeモンスターからモンスターへ撃つならMONSTER_TO_MONSTER、モンスターからプレイヤーならMONSTER_TO_PLAYER
戻り値
なし
呼び出し関係図:

◆ bolt()

void bolt ( MONSTER_IDX  m_idx,
POSITION  y,
POSITION  x,
EFFECT_ID  typ,
int  dam_hp,
int  monspell,
int  target_type 
)

モンスターのボルト型魔法処理 / Cast a bolt at the player Stop if we hit a monster Affect monsters and the player

引数
m_idxモンスターのID
y目標のY座標
x目標のX座標
typ効果属性ID
dam_hp威力
monspellモンスター魔法のID
target_typeモンスターからモンスターへ撃つならMONSTER_TO_MONSTER、モンスターからプレイヤーならMONSTER_TO_PLAYER
戻り値
なし
呼び出し関係図:

◆ breath()

void breath ( POSITION  y,
POSITION  x,
MONSTER_IDX  m_idx,
EFFECT_ID  typ,
int  dam_hp,
POSITION  rad,
bool  breath,
int  monspell,
int  target_type 
)

モンスターのボール型&ブレス型魔法処理 / Cast a breath (or ball) attack at the player Pass over any monsters that may be in the way Affect grids, objects, monsters, and the player

引数
y目標地点のY座標
x目標地点のX座標
m_idxモンスターのID
typ効果属性ID
dam_hp威力
rad半径
breath
monspellモンスター魔法のID
target_typeモンスターからモンスターへ撃つならMONSTER_TO_MONSTER、モンスターからプレイヤーならMONSTER_TO_PLAYER
戻り値
なし
呼び出し関係図:

◆ clean_shot()

bool clean_shot ( POSITION  y1,
POSITION  x1,
POSITION  y2,
POSITION  x2,
bool  is_friend 
)

モンスターにとってボルト型魔法が有効な状態かを返す / Determine if a bolt spell will hit the player.

引数
y1ボルト魔法発射地点のY座標
x1ボルト魔法発射地点のX座標
y2ボルト魔法目標地点のY座標
x2ボルト魔法目標地点のX座標
is_friendモンスターがプレイヤーに害意を持たない(ペットか友好的)ならばTRUEをつける
戻り値
ボルト型魔法が有効ならばTRUEを返す。

Originally, it was possible for a friendly to shoot another friendly.
Change it so a "clean shot" means no equally friendly monster is
between the attacker and target.

This is exactly like "projectable", but it will
return FALSE if a monster is in the way.
no equally friendly monster is
between the attacker and target.

呼び出し関係図:

◆ dispel_check()

bool dispel_check ( MONSTER_IDX  m_idx)

モンスターがプレイヤーに魔力消去を与えるべきかを判定するルーチン Check should monster cast dispel spell.

引数
m_idxモンスターの構造体配列ID
戻り値
魔力消去をかけるべきならTRUEを返す。

◆ do_cmd_cast_learned()

bool do_cmd_cast_learned ( void  )

青魔法コマンドのメインルーチン / do_cmd_cast calls this function if the player's class is 'Blue-Mage'.

戻り値
処理を実行したらTRUE、キャンセルした場合FALSEを返す。
呼び出し関係図:

◆ get_project_point()

void get_project_point ( POSITION  sy,
POSITION  sx,
POSITION ty,
POSITION tx,
BIT_FLAGS  flg 
)

モンスターが特殊能力の目標地点を決める処理 / Get the actual center point of ball spells (rad > 1) (originally from TOband)

引数
sy始点のY座標
sx始点のX座標
ty目標Y座標を返す参照ポインタ
tx目標X座標を返す参照ポインタ
flg判定のフラグ配列
戻り値
なし
呼び出し関係図:

◆ learn_spell()

void learn_spell ( int  monspell)

青魔法のラーニング判定と成功した場合のラーニング処理

引数
monspellラーニングを試みるモンスター攻撃のID
戻り値
なし
呼び出し関係図:

◆ make_attack_spell()

bool make_attack_spell ( MONSTER_IDX  m_idx)

モンスターの特殊技能メインルーチン / Creatures can cast spells, shoot missiles, and breathe.

引数
m_idxモンスター構造体配列のID
戻り値
実際に特殊技能を利用したらTRUEを返す

Returns "TRUE" if a spell (or whatever) was (successfully) cast.

This function could use some work, but remember to
keep it as optimized as possible, while retaining generic code.

Verify the various "blind-ness" checks in the code.

Note that several effects should really not be "seen"
if the player is blind. See also "effects.c" for other "mistakes".

Perhaps monsters should breathe at locations near the player,
since this would allow them to inflict "partial" damage.

Perhaps smart monsters should decline to use "bolt" spells if
there is a monster in the way, unless they wish to kill it.

Note that, to allow the use of the "track_target" option at some
later time, certain non-optimal things are done in the code below,
including explicit checks against the "direct" variable, which is
currently always true by the time it is checked, but which should
really be set according to an explicit "projectable()" test, and
the use of generic "x,y" locations instead of the player location,
with those values being initialized with the player location.

It will not be possible to "correctly" handle the case in which a
monster attempts to attack a location which is thought to contain
the player, but which in fact is nowhere near the player, since this
might induce all sorts of messages about the attack itself, and about
the effects of the attack, which the player might or might not be in
a position to observe. Thus, for simplicity, it is probably best to
only allow "faulty" attacks by a monster if one of the important grids
(probably the initial or final grid) is in fact in view of the player.
It may be necessary to actually prevent spell attacks except when the
monster actually has line of sight to the player. Note that a monster
could be left in a bizarre situation after the player ducked behind a
pillar and then teleported away, for example.

覚え書き
that certain spell attacks do not use the "project()" function
but "simulate" it via the "direct" variable, which is always at least
as restrictive as the "project()" function. This is necessary to
prevent "blindness" attacks and such from bending around walls, etc,
and to allow the use of the "track_target" option in the future.

Note that this function attempts to optimize the use of spells for the
cases in which the monster has no spells, or has spells but cannot use
them, or has spells but they will have no "useful" effect. Note that
this function has been an efficiency bottleneck in the past.

Note the special "MFLAG_NICE" flag, which prevents a monster from using
any spell attacks until the player has had a single chance to move.
呼び出し関係図:

◆ monspell_bluemage_damage()

HIT_POINT monspell_bluemage_damage ( int  SPELL_NUM,
PLAYER_LEVEL  plev,
int  TYPE 
)

青魔導師の使う呪文の威力を返す /

引数
SPELL_NUM呪文番号
plev使用するレベル。2倍して扱う。
TYPEDAM_MAXで最大値を返し、DAM_MINで最小値を返す。DAM_ROLLはダイスを振って値を決定する。
戻り値
攻撃呪文のダメージを返す。攻撃呪文以外は-1を返す。
呼び出し関係図:

◆ monspell_damage()

HIT_POINT monspell_damage ( int  SPELL_NUM,
MONSTER_IDX  m_idx,
int  TYPE 
)

モンスターの使う呪文の威力を返す /

引数
SPELL_NUM呪文番号
m_idx呪文を唱えるモンスターID
TYPEDAM_MAXで最大値を返し、DAM_MINで最小値を返す。DAM_ROLLはダイスを振って値を決定する。
戻り値
攻撃呪文のダメージを返す。攻撃呪文以外は-1を返す。
呼び出し関係図:

◆ monspell_race_damage()

HIT_POINT monspell_race_damage ( int  SPELL_NUM,
MONRACE_IDX  r_idx,
int  TYPE 
)

モンスターの使う呪文の威力を返す /

引数
SPELL_NUM呪文番号
r_idx呪文を唱えるモンスターの種族ID
TYPEDAM_MAXで最大値を返し、DAM_MINで最小値を返す。DAM_ROLLはダイスを振って値を決定する。
戻り値
攻撃呪文のダメージを返す。攻撃呪文以外は-1を返す。
呼び出し関係図:

◆ monspell_to_monster()

HIT_POINT monspell_to_monster ( int  SPELL_NUM,
POSITION  y,
POSITION  x,
MONSTER_IDX  m_idx,
MONSTER_IDX  t_idx 
)

モンスターからモンスターへの呪文の振り分け関数。 /

引数
SPELL_NUMモンスター魔法ID
y対象の地点のy座標
x対象の地点のx座標
m_idx呪文を唱えるモンスターID
t_idx呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
戻り値
攻撃呪文のダメージ、または召喚したモンスターの数を返す。その他の場合0。以降の処理を中断するなら-1を返す。

◆ monspell_to_player()

HIT_POINT monspell_to_player ( int  SPELL_NUM,
POSITION  y,
POSITION  x,
MONSTER_IDX  m_idx 
)

モンスターからプレイヤーへの呪文の振り分け関数。 /

引数
SPELL_NUMモンスター魔法ID
y対象の地点のy座標
x対象の地点のx座標
m_idx呪文を唱えるモンスターID
戻り値
攻撃呪文のダメージ、または召喚したモンスターの数を返す。その他の場合0。以降の処理を中断するなら-1を返す。

◆ monst_spell_monst()

bool monst_spell_monst ( MONSTER_IDX  m_idx)

モンスターが敵モンスターに特殊能力を使う処理のメインルーチン / Monster tries to 'cast a spell' (or breath, etc) at another monster.

引数
m_idx術者のモンスターID
戻り値
実際に特殊能力を使った場合TRUEを返す

The player is only disturbed if able to be affected by the spell.

呼び出し関係図:

◆ raise_possible()

bool raise_possible ( monster_type m_ptr)

モンスターにとって死者復活を行うべき状態かどうかを返す / Determine if there is a space near the player in which a summoned creature can appear

引数
m_ptr判定を行いたいモンスターの構造体参照ポインタ
戻り値
死者復活が有効な状態ならばTRUEを返す。
呼び出し関係図:

◆ set_rf_masks()

void set_rf_masks ( BIT_FLAGS f4,
BIT_FLAGS f5,
BIT_FLAGS f6,
BIT_FLAGS  mode 
)

モンスター特殊能力のフラグ配列から特定条件の魔法だけを抜き出す処理 Extract monster spells mask for the given mode

引数
f4モンスター特殊能力の4番目のフラグ配列
f5モンスター特殊能力の5番目のフラグ配列
f6モンスター特殊能力の6番目のフラグ配列
mode抜き出したい条件
戻り値
なし

◆ spell_is_inate()

bool spell_is_inate ( SPELL_IDX  spell)

ID値が非魔術的な特殊技能かどうかを返す / Return TRUE if a spell is inate spell.

引数
spell判定対象のID
戻り値
非魔術的な特殊技能ならばTRUEを返す。

◆ spell_learnable()

bool spell_learnable ( MONSTER_IDX  m_idx)

モンスターの唱えた呪文を青魔法で学習できるか判定する /

引数
m_idxモンスターID
戻り値
プレイヤーが青魔法で学習できるならTRUE、そうでなければFALSEを返す。

◆ summon_possible()

bool summon_possible ( POSITION  y1,
POSITION  x1 
)

モンスターにとって所定の地点が召還に相応しい地点かどうかを返す。 / Determine if there is a space near the player in which a summoned creature can appear

引数
y1判定を行いたいマスのY座標
x1判定を行いたいマスのX座標
戻り値
召還に相応しいならばTRUEを返す
呼び出し関係図:

変数詳解

◆ monster_powers

const monster_power monster_powers[MAX_MONSPELLS]

青魔法テーブル

level, smana, fail, manedam, manefail, use_stat, name

◆ monster_powers_short

const concptr monster_powers_short[MAX_MONSPELLS]

モンスター魔法名テーブル