generated from Jaysyn/ModuleTemplate
96 lines
4.8 KiB
Plaintext
96 lines
4.8 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: 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);
|
|
}
|