diff options
Diffstat (limited to 'lib/mods/theme/scpt/s_music.lua')
-rw-r--r-- | lib/mods/theme/scpt/s_music.lua | 443 |
1 files changed, 443 insertions, 0 deletions
diff --git a/lib/mods/theme/scpt/s_music.lua b/lib/mods/theme/scpt/s_music.lua new file mode 100644 index 00000000..9da6393a --- /dev/null +++ b/lib/mods/theme/scpt/s_music.lua @@ -0,0 +1,443 @@ +-- handle the music school +-- *ALL* lasting spell must return the mana cost in the lasting function + +MUSIC_STOP = add_spell +{ + ["name"] = "Stop singing(I)", + ["school"] = {SCHOOL_MUSIC}, + ["level"] = 1, + ["mana"] = 0, + ["mana_max"] = 0, + ["fail"] = -400, + ["stat"] = A_CHR, + ["random"] = SKILL_MUSIC, + ["pval"] = 1, + ["blind"] = FALSE, + ["spell"] = function() + player.start_lasting_spell(0) + return TRUE + end, + ["info"] = function() + return "" + end, + ["desc"] = { + "Stops the current song, if any." + } +} + +--- Drums +MUSIC_HOLD = add_spell +{ + ["name"] = "Holding Pattern(I)", + ["school"] = {SCHOOL_MUSIC}, + ["level"] = 1, + ["mana"] = 1, + ["mana_max"] = 10, + ["fail"] = 20, + ["stat"] = A_CHR, + ["random"] = SKILL_MUSIC, + ["pval"] = 1, + ["blind"] = FALSE, + ["lasting"] = function() + project_los(GF_OLD_SLOW, 10 + get_level(MUSIC_HOLD, 100)) + return get_mana(MUSIC_HOLD) + end, + ["spell"] = function() + player.start_lasting_spell(MUSIC_HOLD) + return TRUE + end, + ["info"] = function() + return "power "..(10 + get_level(MUSIC_HOLD, 100)) + end, + ["desc"] = { + "Slows down all monsters listening the song.", + "Consumes the amount of mana each turn.", + } +} + +MUSIC_CONF = add_spell +{ + ["name"] = "Illusion Pattern(II)", + ["school"] = {SCHOOL_MUSIC}, + ["level"] = 5, + ["mana"] = 2, + ["mana_max"] = 15, + ["fail"] = 30, + ["stat"] = A_CHR, + ["random"] = SKILL_MUSIC, + ["pval"] = 2, + ["blind"] = FALSE, + ["lasting"] = function() + project_los(GF_OLD_CONF, 10 + get_level(MUSIC_CONF, 100)) + return get_mana(MUSIC_CONF) + end, + ["spell"] = function() + player.start_lasting_spell(MUSIC_CONF) + return TRUE + end, + ["info"] = function() + return "power "..(10 + get_level(MUSIC_CONF, 100)) + end, + ["desc"] = { + "Tries to confuse all monsters listening the song.", + "Consumes the amount of mana each turn.", + } +} + +MUSIC_STUN = add_spell +{ + ["name"] = "Stun Pattern(IV)", + ["school"] = {SCHOOL_MUSIC}, + ["level"] = 10, + ["mana"] = 3, + ["mana_max"] = 25, + ["fail"] = 45, + ["stat"] = A_CHR, + ["random"] = SKILL_MUSIC, + ["pval"] = 4, + ["blind"] = FALSE, + ["lasting"] = function() + project_los(GF_STUN, 10 + get_level(MUSIC_STUN, 90)) + return get_mana(MUSIC_STUN) + end, + ["spell"] = function() + player.start_lasting_spell(MUSIC_STUN) + return TRUE + end, + ["info"] = function() + return "power "..(10 + get_level(MUSIC_STUN, 90)) + end, + ["desc"] = { + "Stuns all monsters listening the song.", + "Consumes the amount of mana each turn.", + } +} + +--- Harps +MUSIC_LITE = add_spell +{ + ["name"] = "Song of the Sun(I)", + ["school"] = {SCHOOL_MUSIC}, + ["level"] = 1, + ["mana"] = 1, + ["mana_max"] = 1, + ["fail"] = 20, + ["stat"] = A_CHR, + ["random"] = SKILL_MUSIC, + ["blind"] = FALSE, + ["pval"] = 1, + ["lasting"] = function() + set_lite(5) + return 1 + end, + ["spell"] = function() + player.start_lasting_spell(MUSIC_LITE) + return TRUE + end, + ["info"] = function() + return "" + end, + ["desc"] = { + "Provides light as long as you sing.", + "Consumes the amount of mana each turn.", + } +} + +MUSIC_HEAL = add_spell +{ + ["name"] = "Flow of Life(II)", + ["school"] = {SCHOOL_MUSIC}, + ["level"] = 7, + ["mana"] = 5, + ["mana_max"] = 30, + ["fail"] = 35, + ["stat"] = A_CHR, + ["random"] = SKILL_MUSIC, + ["pval"] = 2, + ["lasting"] = function() + hp_player(7 + get_level(MUSIC_HEAL, 100)) + return get_mana(MUSIC_HEAL) + end, + ["spell"] = function() + player.start_lasting_spell(MUSIC_HEAL) + return TRUE + end, + ["info"] = function() + return "heal "..(7 + get_level(MUSIC_HEAL, 100)).."/turn" + end, + ["desc"] = { + "Heals you as long as you sing.", + "Consumes the amount of mana each turn.", + } +} + +MUSIC_HERO = add_spell +{ + ["name"] = "Heroic Ballad(II)", + ["school"] = {SCHOOL_MUSIC}, + ["level"] = 10, + ["mana"] = 4, + ["mana_max"] = 14, + ["fail"] = 45, + ["stat"] = A_CHR, + ["random"] = SKILL_MUSIC, + ["pval"] = 2, + ["lasting"] = function() + set_hero(5) + if get_level(MUSIC_HERO) >= 10 then + set_shero(5) + end + if get_level(MUSIC_HERO) >= 20 then + set_strike(5) + end + if get_level(MUSIC_HERO) >= 25 then + set_oppose_cc(5) + end + return get_mana(MUSIC_HERO) + end, + ["spell"] = function() + player.start_lasting_spell(MUSIC_HERO) + return TRUE + end, + ["info"] = function() + return "" + end, + ["desc"] = { + "Increases melee accuracy", + "At level 10 it increases it even more and reduces armour a bit", + "At level 20 it increases it again", + "At level 25 it grants protection against chaos and confusion", + "Consumes the amount of mana each turn.", + } +} + +MUSIC_TIME = add_spell +{ + ["name"] = "Hobbit Melodies(III)", + ["school"] = {SCHOOL_MUSIC}, + ["level"] = 20, + ["mana"] = 10, + ["mana_max"] = 30, + ["fail"] = 70, + ["stat"] = A_CHR, + ["random"] = SKILL_MUSIC, + ["pval"] = 3, + ["lasting"] = function() + set_shield(5, 10 + get_level(MUSIC_TIME, 50), 0, 0, 0) + if get_level(MUSIC_TIME) >= 15 then + set_fast(5, 7 + get_level(MUSIC_TIME, 10)) + end + return get_mana(MUSIC_TIME) + end, + ["spell"] = function() + player.start_lasting_spell(MUSIC_TIME) + return TRUE + end, + ["info"] = function() + if get_level(MUSIC_TIME) >= 15 then + return "AC "..(10 + get_level(MUSIC_TIME, 50)).." speed "..(7 + get_level(MUSIC_TIME, 10)) + else + return "AC "..(10 + get_level(MUSIC_TIME, 50)) + end + end, + ["desc"] = { + "Greatly increases your reflexes allowing you to block more melee blows.", + "At level 15 it also makes you faster.", + "Consumes the amount of mana each turn.", + } +} + +MUSIC_MIND = add_spell +{ + ["name"] = "Clairaudience(IV)", + ["school"] = {SCHOOL_MUSIC}, + ["level"] = 25, + ["mana"] = 15, + ["mana_max"] = 30, + ["fail"] = 75, + ["stat"] = A_CHR, + ["random"] = SKILL_MUSIC, + ["pval"] = 4, + ["lasting"] = function() + set_tim_esp(5) + if get_level(MUSIC_MIND) >= 10 then + fire_ball(GF_IDENTIFY, 0, 1, 1 + get_level(MUSIC_MIND, 3, 0)) + end + return get_mana(MUSIC_MIND) + end, + ["spell"] = function() + player.start_lasting_spell(MUSIC_MIND) + return TRUE + end, + ["info"] = function() + if get_level(MUSIC_MIND) >= 10 then + return "rad "..(1 + get_level(MUSIC_MIND, 3, 0)) + else + return "" + end + end, + ["desc"] = { + "Allows you to sense monster minds as long as you sing.", + "At level 10 it identifies all objects in a radius on the floor,", + "as well as probing monsters in that radius.", + "Consumes the amount of mana each turn.", + } +} + +--- Horns + +MUSIC_BLOW = add_spell +{ + ["name"] = "Blow(I)", + ["school"] = {SCHOOL_MUSIC}, + ["level"] = 4, + ["mana"] = 3, + ["mana_max"] = 30, + ["fail"] = 20, + ["stat"] = A_CHR, + ["random"] = SKILL_MUSIC, + ["pval"] = 1, + ["spell"] = function() + fire_ball(GF_SOUND, + 0, + damroll(2 + get_level(MUSIC_BLOW, 10, 0), 4 + get_level(MUSIC_BLOW, 40, 0)), + 1 + get_level(MUSIC_BLOW, 12, 0) + ) + return TRUE + end, + ["info"] = function() + return "dam "..(2 + get_level(MUSIC_BLOW, 10, 0)).."d"..(4 + get_level(MUSIC_BLOW, 40, 0)).." rad "..(1 + get_level(MUSIC_BLOW, 12, 0)) + end, + ["desc"] = { + "Produces a powerful, blowing, sound all around you.", + } +} + +MUSIC_WIND = add_spell +{ + ["name"] = "Gush of Wind(II)", + ["school"] = {SCHOOL_MUSIC}, + ["level"] = 14, + ["mana"] = 15, + ["mana_max"] = 45, + ["fail"] = 30, + ["stat"] = A_CHR, + ["random"] = SKILL_MUSIC, + ["pval"] = 2, + ["spell"] = function() + fire_ball(GF_AWAY_ALL, + 0, + 10 + get_level(MUSIC_BLOW, 40, 0), + 1 + get_level(MUSIC_BLOW, 12, 0) + ) + return TRUE + end, + ["info"] = function() + return "dist "..(10 + get_level(MUSIC_BLOW, 40, 0)).." rad "..(1 + get_level(MUSIC_BLOW, 12, 0)) + end, + ["desc"] = { + "Produces a outgoing gush of wind that sends monsters away.", + } +} + +MUSIC_YLMIR = add_spell +{ + ["name"] = "Horns of Ylmir(III)", + ["school"] = {SCHOOL_MUSIC}, + ["level"] = 20, + ["mana"] = 25, + ["mana_max"] = 30, + ["fail"] = 20, + ["stat"] = A_CHR, + ["random"] = SKILL_MUSIC, + ["pval"] = 3, + ["spell"] = function() + earthquake(player.py, player.px, 2 + get_level(SHAKE, 10)) + return TRUE + end, + ["info"] = function() + return "rad "..(2 + get_level(SHAKE, 10)) + end, + ["desc"] = { + "Produces an earth shaking sound.", + } +} + +MUSIC_AMBARKANTA = add_spell +{ + ["name"] = "Ambarkanta(IV)", + ["school"] = {SCHOOL_MUSIC}, + ["level"] = 25, + ["mana"] = 70, + ["mana_max"] = 70, + ["fail"] = 60, + ["stat"] = A_CHR, + ["random"] = SKILL_MUSIC, + ["pval"] = 4, + ["spell"] = function() + alter_reality() + return TRUE + end, + ["info"] = function() + return "" + end, + ["desc"] = { + "Produces a reality shaking sound that transports you to a nearly", + "identical reality.", + } +} + + +--[[ +MUSIC_ = add_spell +{ + ["name"] = "(I)", + ["school"] = {SCHOOL_MUSIC}, + ["level"] = 1, + ["mana"] = 0, + ["mana_max"] = 0, + ["fail"] = 20, + ["stat"] = A_CHR, + ["random"] = SKILL_MUSIC, + ["pval"] = 1, + ["lasting"] = function() + return get_mana(MUSIC_) + end, + ["spell"] = function() + player.start_lasting_spell(MUSIC_) + return TRUE + end, + ["info"] = function() + return "" + end, + ["desc"] = { + "", + "Consumes the amount of mana each turn.", + } +} + +or + +MUSIC_ = add_spell +{ + ["name"] = "(I)", + ["school"] = {SCHOOL_MUSIC}, + ["level"] = 1, + ["mana"] = 0, + ["mana_max"] = 0, + ["fail"] = 20, + ["stat"] = A_CHR, + ["random"] = SKILL_MUSIC, + ["pval"] = 1, + ["spell"] = function() + + return TRUE + end, + ["info"] = function() + return "" + end, + ["desc"] = { + "", + } +} +]] |