Files
HeroesStone_PRC8/_removed/nw_s2_bardsong.nss
Jaysyn904 1eefc84201 Initial Commit
Initial Commit.
2025-09-14 15:40:46 -04:00

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);
}