#include "spell-kind/spells-launcher.h"
#include "spell-kind/spells-teleport.h"
#include "spell-realm/spells-hex.h"
+#include "spell-realm/spells-song.h"
#include "spell/spell-types.h"
#include "sv-definition/sv-lite-types.h"
#include "sv-definition/sv-ring-types.h"
#include "player/player-status.h"
#include "player/special-defense-types.h"
#include "spell-realm/spells-hex.h"
+#include "spell-realm/spells-song.h"
#include "status/action-setter.h"
#include "system/floor-type-definition.h"
#include "system/player-type-definition.h"
#include "player/player-status.h"
#include "player/special-defense-types.h"
#include "spell-realm/spells-hex.h"
+#include "spell-realm/spells-song.h"
#include "spell/spells-status.h"
#include "status/action-setter.h"
#include "status/bad-status-setter.h"
#include "spell-kind/spells-teleport.h"
#include "spell-kind/spells-world.h"
#include "spell-realm/spells-hex.h"
+#include "spell-realm/spells-song.h"
#include "spell/spell-types.h"
#include "spell/summon-types.h"
#include "status/bad-status-setter.h"
#include "player/player-status.h"
#include "spell-kind/spells-launcher.h"
#include "spell-realm/spells-hex.h"
+#include "spell-realm/spells-song.h"
#include "spell/spell-types.h"
#include "status/element-resistance.h"
#include "sv-definition/sv-ring-types.h"
#include "spell-kind/spells-teleport.h"
#include "spell-kind/spells-world.h"
#include "spell-realm/spells-hex.h"
+#include "spell-realm/spells-song.h"
#include "spell/spell-types.h"
#include "spell/spells-status.h"
#include "status/bad-status-setter.h"
#include "spell-kind/spells-perception.h"
#include "spell-kind/spells-teleport.h"
#include "spell-realm/spells-hex.h"
+#include "spell-realm/spells-song.h"
#include "spell/spells-status.h"
#include "status/bad-status-setter.h"
#include "status/base-status.h"
#include "spell-kind/spells-teleport.h"
#include "spell-kind/spells-world.h"
#include "spell-realm/spells-hex.h"
+#include "spell-realm/spells-song.h"
#include "spell/spell-types.h"
#include "spell/spells-object.h"
#include "spell/spells-summon.h"
#include "specific-object/bow.h"
#include "specific-object/torch.h"
#include "spell-realm/spells-hex.h"
+#include "spell-realm/spells-song.h"
#include "spell/range-calc.h"
#include "spell/spells-describer.h"
#include "spell/spells-execution.h"
}
/*!
- * @brief 歌の停止を処理する / Stop singing if the player is a Bard
- * @return なし
- */
-void stop_singing(player_type *creature_ptr)
-{
- if (creature_ptr->pclass != CLASS_BARD)
- return;
-
- /* Are there interupted song? */
- if (get_interrupting_song_effect(creature_ptr) != 0) {
- /* Forget interupted song */
- set_interrupting_song_effect(creature_ptr, MUSIC_NONE);
- return;
- }
-
- /* The player is singing? */
- if (get_singing_song_effect(creature_ptr) == 0)
- return;
-
- /* Hack -- if called from set_action(), avoid recursive loop */
- if (creature_ptr->action == ACTION_SING)
- set_action(creature_ptr, ACTION_NONE);
-
- /* Message text of each song or etc. */
- exe_spell(creature_ptr, REALM_MUSIC, get_singing_song_id(creature_ptr), SPELL_STOP);
-
- set_singing_song_effect(creature_ptr, MUSIC_NONE);
- set_singing_song_id(creature_ptr, 0);
- set_bits(creature_ptr->update, PU_BONUS);
- set_bits(creature_ptr->redraw, PR_STATUS);
-}
-
-/*!
* @brief 口を使う継続的な処理を中断する
* @param caster_ptr プレーヤーへの参照ポインタ
* @return なし
bool is_echizen(player_type *creature_ptr);
bool is_in_dungeon(player_type *creature_ptr);
-void stop_singing(player_type *creature_ptr);
void stop_mouth(player_type *caster_ptr);
PERCENTAGE calculate_upkeep(player_type *creature_ptr);
bool music_singing(player_type *caster_ptr, int music_songs);
#include "spell-kind/spells-teleport.h"
#include "spell-kind/spells-world.h"
#include "spell-realm/spells-hex.h"
+#include "spell-realm/spells-song.h"
#include "spell/spell-types.h"
#include "spell/spells-status.h"
#include "status/action-setter.h"
#include "spell-kind/spells-neighbor.h"
#include "spell-kind/spells-sight.h"
#include "spell-kind/spells-world.h"
+#include "spell-realm/spells-song.h"
#include "spell/spell-types.h"
#include "spell/spells-status.h"
#include "status/action-setter.h"
#include "spell/spell-info.h"
#include "spell/spells-execution.h"
#include "spell/technic-info-table.h"
+#include "status/action-setter.h"
#include "system/floor-type-definition.h"
#include "system/player-type-definition.h"
+#include "util/bit-flags-calculator.h"
#include "view/display-messages.h"
/*!
handle_stuff(creature_ptr);
return TRUE;
}
+
+/*!
+ * @brief 歌の停止を処理する / Stop singing if the player is a Bard
+ * @return なし
+ */
+void stop_singing(player_type *creature_ptr)
+{
+ if (creature_ptr->pclass != CLASS_BARD)
+ return;
+
+ if (get_interrupting_song_effect(creature_ptr) != 0) {
+ set_interrupting_song_effect(creature_ptr, MUSIC_NONE);
+ return;
+ }
+
+ if (get_singing_song_effect(creature_ptr) == 0)
+ return;
+
+ if (creature_ptr->action == ACTION_SING)
+ set_action(creature_ptr, ACTION_NONE);
+
+ (void)exe_spell(creature_ptr, REALM_MUSIC, get_singing_song_id(creature_ptr), SPELL_STOP);
+ set_singing_song_effect(creature_ptr, MUSIC_NONE);
+ set_singing_song_id(creature_ptr, 0);
+ set_bits(creature_ptr->update, PU_BONUS);
+ set_bits(creature_ptr->redraw, PR_STATUS);
+}
typedef struct player_type player_type;
void check_music(player_type *caster_ptr);
bool set_tim_stealth(player_type *creature_ptr, TIME_EFFECT v, bool do_dec);
+void stop_singing(player_type *creature_ptr);
#include "player/player-status.h"
#include "player/special-defense-types.h"
#include "spell-realm/spells-hex.h"
+#include "spell-realm/spells-song.h"
#include "system/player-type-definition.h"
#include "view/display-messages.h"