static void _summon_horde_spell(int cmd, variant *res) { switch (cmd) { case SPELL_NAME: var_set_string(res, "Summon Horde"); break; case SPELL_DESC: var_set_string(res, "Summons Warriors of the Dawn for assistance."); break; case SPELL_CAST: { int num = 3 + randint1(3); int mode = PM_FORCE_PET; int i; if (p_ptr->shero) mode |= PM_HASTE; for (i = 0; i < num; i++) { summon_named_creature(-1, py, px, MON_DAWN, mode); } var_set_bool(res, TRUE); break; } default: default_spell(cmd, res); break; } }
/********************************************************************** * Leprechaun Spells and Abilities **********************************************************************/ void _fanaticism_spell(int cmd, variant *res) { switch (cmd) { case SPELL_NAME: var_set_string(res, "Fanaticism"); break; case SPELL_DESC: var_set_string(res, "Summon many devoted leprechaun servants at chosen foe."); break; case SPELL_CAST: { int x, y, i; var_set_bool(res, FALSE); if (!target_set(TARGET_KILL)) return; x = target_col; y = target_row; for (i = 0; i < 8; i++) summon_named_creature(-1, y, x, MON_LEPRECHAUN_FANATIC, PM_FORCE_PET); var_set_bool(res, TRUE); break; } default: default_spell(cmd, res); break; } }
static void _pharaohs_curse_spell(int cmd, variant *res) { switch (cmd) { case SPELL_NAME: var_set_string(res, "Pharaoh's Curse"); break; case SPELL_DESC: var_set_string(res, "Curses all nearby monsters, doing great damage and various effects."); break; case SPELL_CAST: { int power = spell_power(p_ptr->lev * 4); project_hack(GF_PHARAOHS_CURSE, p_ptr->lev + randint1(p_ptr->lev)); if (p_ptr->lev >= 46) confuse_monsters(power); if (p_ptr->lev >= 47) slow_monsters(power); if (p_ptr->lev >= 48) turn_monsters(power); if (p_ptr->lev >= 49) stun_monsters(power); if (one_in_(5)) { int mode = 0; if (one_in_(2)) mode = PM_FORCE_PET; if (summon_named_creature(0, py, px, MON_GREATER_MUMMY, mode)) { msg_print("You have disturbed the rest of an ancient pharaoh!"); } } take_hit(DAMAGE_USELIFE, p_ptr->lev + randint1(p_ptr->lev), "the Pharaoh's Curse", -1); var_set_bool(res, TRUE); } break; default: default_spell(cmd, res); break; } }
static void _divide_spell(int cmd, variant *res) { switch (cmd) { case SPELL_NAME: var_set_string(res, "Divide"); break; case SPELL_DESC: var_set_string(res, "Replicate yourself."); break; case SPELL_CAST: { summon_named_creature(-1, py, px, p_ptr->current_r_idx, PM_FORCE_PET); var_set_bool(res, TRUE); break; } default: default_spell(cmd, res); break; } }
static void _summon_commando_team_spell(int cmd, variant *res) { switch (cmd) { case SPELL_NAME: var_set_string(res, "Summon Commando Team"); break; case SPELL_DESC: var_set_string(res, "Summons Grand Master Mystics for assistance."); break; case SPELL_CAST: { int num = 1 + randint1(2); int mode = PM_FORCE_PET; int i, x, y; var_set_bool(res, FALSE); if (p_ptr->shero) mode |= PM_HASTE; if (!target_set(TARGET_KILL)) return; x = target_col; y = target_row; for (i = 0; i < num; i++) { summon_named_creature(-1, y, x, MON_G_MASTER_MYS, mode); } var_set_bool(res, TRUE); break; } default: default_spell(cmd, res); break; } }
/* * Summon a creature of the specified type * * XXX XXX XXX This function is rather dangerous */ static void do_cmd_wiz_named_friendly(int r_idx, bool slp) { (void)summon_named_creature(p_ptr->py, p_ptr->px, r_idx, slp, TRUE, TRUE); }
/*! * @brief モンスターを種族IDを指定してペット召喚する / * Summon a creature of the specified type * @param r_idx モンスター種族ID * @return なし * @details * XXX XXX XXX This function is rather dangerous */ static void do_cmd_wiz_named_friendly(int r_idx) { (void)summon_named_creature(0, p_ptr->y, p_ptr->x, r_idx, (PM_ALLOW_SLEEP | PM_ALLOW_GROUP | PM_FORCE_PET)); }
/*! * @brief モンスターを種族IDを指定して敵対的に召喚する / * Summon a creature of the specified type * @param r_idx モンスター種族ID * @return なし * @details * XXX XXX XXX This function is rather dangerous */ static void do_cmd_wiz_named(int r_idx) { (void)summon_named_creature(0, p_ptr->y, p_ptr->x, r_idx, (PM_ALLOW_SLEEP | PM_ALLOW_GROUP)); }