//:://///////////////////////////////////////////// //:: Bard Song //:: NW_S2_BardSong //:: Copyright (c) 2001 Bioware Corp. //::////////////////////////////////////////////// /* This spells applies bonuses to all of the bard's allies within 30ft for a set duration of 10 rounds. */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk, Edited Kilana Evra //:: Created On: Nov 10, 2006 //::////////////////////////////////////////////// #include "inc_bardsong" void main() { if (GetHasEffect(EFFECT_TYPE_SILENCE,OBJECT_SELF)) { FloatingTextStrRefOnCreature(85764,OBJECT_SELF); // not useable when silenced return; } //Declare major variables int nLevel = GetLevelByClass(CLASS_TYPE_BARD); int nPerform = GetSkillRank(SKILL_PERFORM); int nDuration = 10; int nSong = GetLocalInt(OBJECT_SELF, "HELPSONG"); //Determine what song //Special Level Bonus int nBonus = GetLocalInt(OBJECT_SELF, "BARDCASTERBONUS"); if(nBonus>0) nLevel = nLevel + nBonus; if(GetHasFeat(870)) nDuration *= 10; //X2 Lasting Inspiration(10x duration) if(GetHasFeat(424)) nDuration += 5; //X0 Lingering Song(+5 rounds) //Determine Song Strength int nSongStrength = 0; if (nPerform >= 100 && nLevel >= 30) nSongStrength = 23; else if(nPerform >= 95 && nLevel >= 29) nSongStrength = 22; else if(nPerform >= 90 && nLevel >= 28) nSongStrength = 21; else if(nPerform >= 85 && nLevel >= 27) nSongStrength = 20; else if(nPerform >= 80 && nLevel >= 26) nSongStrength = 19; else if(nPerform >= 75 && nLevel >= 25) nSongStrength = 18; else if(nPerform >= 70 && nLevel >= 24) nSongStrength = 17; else if(nPerform >= 65 && nLevel >= 23) nSongStrength = 16; else if(nPerform >= 60 && nLevel >= 22) nSongStrength = 15; else if(nPerform >= 55 && nLevel >= 21) nSongStrength = 14; else if(nPerform >= 50 && nLevel >= 20) nSongStrength = 13; else if(nPerform >= 45 && nLevel >= 19) nSongStrength = 12; else if(nPerform >= 40 && nLevel >= 18) nSongStrength = 11; else if(nPerform >= 35 && nLevel >= 17) nSongStrength = 10; else if(nPerform >= 30 && nLevel >= 16) nSongStrength = 9; else if(nPerform >= 24 && nLevel >= 15) nSongStrength = 8; else if(nPerform >= 21 && nLevel >= 14) nSongStrength = 7; else if(nPerform >= 18 && nLevel >= 11) nSongStrength = 6; else if(nPerform >= 15 && nLevel >= 8) nSongStrength = 5; else if(nPerform >= 12 && nLevel >= 6) nSongStrength = 4; else if(nPerform >= 9 && nLevel >= 3) nSongStrength = 3; else if(nPerform >= 6 && nLevel >= 2) nSongStrength = 2; else if(nPerform >= 3 && nLevel >= 1) nSongStrength = 1; effect eFNF = EffectVisualEffect(VFX_FNF_LOS_NORMAL_30); ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eFNF, GetLocation(OBJECT_SELF)); //Default Bioware - Inspire Allies if(nSong==0) SongInspire(OBJECT_SELF, nSongStrength, nDuration); //Sharp Note - Pierce/Slash weapons gain keen else if(nSong==1) SongSharp(OBJECT_SELF, nSongStrength, nDuration); //Crescendo - Steady offensive Bonus else if(nSong==2) SongCrescendo(OBJECT_SELF, nSongStrength, nDuration); //Allegro - Movement Speed Bonus else if(nSong==3) SongAllegro(OBJECT_SELF, nSongStrength, nDuration); //Hymn of Praise - Good Alignment Bonus else if(nSong==4) SongHymn(OBJECT_SELF, nSongStrength, nDuration); //Infernal Threnody - Evil Alignment Bonus else if(nSong==5) SongThrenody(OBJECT_SELF, nSongStrength, nDuration); //Song of Fury else if(nSong==6) SongRage(OBJECT_SELF); //Elemental Weapon else if(nSong==7) SongEleWeap(OBJECT_SELF, nSongStrength, nDuration, IP_CONST_DAMAGETYPE_FIRE); else if(nSong==8) SongEleWeap(OBJECT_SELF, nSongStrength, nDuration, IP_CONST_DAMAGETYPE_COLD); else if(nSong==9) SongEleWeap(OBJECT_SELF, nSongStrength, nDuration, IP_CONST_DAMAGETYPE_ELECTRICAL); else if(nSong==10) SongEleWeap(OBJECT_SELF, nSongStrength, nDuration, IP_CONST_DAMAGETYPE_ACID); else if(nSong==11) SongEleWeap(OBJECT_SELF, nSongStrength, nDuration, IP_CONST_DAMAGETYPE_SONIC); //Elemental Defense (70% Max) else if(nSong==13) SongEleDef(OBJECT_SELF, nSongStrength, nDuration, DAMAGE_TYPE_SONIC, VFX_IMP_HEAD_SONIC); else if(nSong==14) SongEleDef(OBJECT_SELF, nSongStrength, nDuration, DAMAGE_TYPE_FIRE, VFX_IMP_HEAD_FIRE); else if(nSong==15) SongEleDef(OBJECT_SELF, nSongStrength, nDuration, DAMAGE_TYPE_COLD, VFX_IMP_HEAD_COLD); else if(nSong==16) SongEleDef(OBJECT_SELF, nSongStrength, nDuration, DAMAGE_TYPE_ELECTRICAL, VFX_IMP_HEAD_ELECTRICITY); else if(nSong==17) SongEleDef(OBJECT_SELF, nSongStrength, nDuration, DAMAGE_TYPE_ACID, VFX_IMP_HEAD_ACID); //Regenerate 1 + (SongStrength/2) + HealSkill/5 (Max 35HP/Round) else if(nSong==18) SongRegen(OBJECT_SELF, nSongStrength, nDuration); //Massive Crit on Bludge Weapon/Gauntlet else if(nSong==19) SongBrawl(OBJECT_SELF, nSongStrength, nDuration); }