PoA_PRC8/_haks/poa_exp_abilities/x2_s2_cursesong.nss
Jaysyn904 7dd83ad168 Spell & Ability Upgrade
Reorganized hak files & removed duplicates.  Added @rafhot's PRC spell & ability level scaling expansion.  Further script integration.  Full compile.
2023-08-19 21:08:35 -04:00

2095 lines
42 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Curse Song
//:: X2_S2_CurseSong
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
This spells applies penalties to all of the
bard's enemies within 30ft for a set duration of
10 rounds.
*/
//:://////////////////////////////////////////////
//:: Created By: Andrew Nobbs
//:: Created On: May 16, 2003
//:://////////////////////////////////////////////
//:: Last Updated By: Andrew Nobbs May 20, 2003
#include "prc_inc_clsfunc"
void main()
{
if (!GetHasFeat(FEAT_BARD_SONGS, OBJECT_SELF))
{
FloatingTextStrRefOnCreature(85587,OBJECT_SELF); // no more bardsong uses left
return;
}
if (PRCGetHasEffect(EFFECT_TYPE_SILENCE,OBJECT_SELF))
{
FloatingTextStrRefOnCreature(85764,OBJECT_SELF); // not useable when silenced
return;
}
//RemoveOldSongEffects(OBJECT_SELF,GetSpellId());
//Declare major variables
int nLevel = GetLevelByClass(CLASS_TYPE_BARD) +
GetLevelByClass(CLASS_TYPE_MINSTREL_EDGE)/2 +
GetLevelByClass(CLASS_TYPE_DIRGESINGER) +
GetLevelByClass(CLASS_TYPE_DRAGONSONG_LYRIST) +
GetLevelByClass(CLASS_TYPE_HEARTWARDER) +
GetLevelByClass(CLASS_TYPE_SPELLDANCER) +
GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD) +
GetLevelByClass(CLASS_TYPE_BLADESINGER) +
GetLevelByClass(CLASS_TYPE_VIRTUOSO);
int nRanks = GetSkillRank(SKILL_PERFORM);
if (GetHasFeat(FEAT_DRAGONSONG, OBJECT_SELF)) nRanks+= 2;
int nPerform = nRanks;
int nDuration = 10; //+ nChr;
effect eAttack;
effect eDamage;
effect eWill;
effect eFort;
effect eReflex;
effect eHP;
effect eAC;
effect eSkill;
int nAttack;
int nDamage;
int nWill;
int nFort;
int nReflex;
int nHP;
int nAC;
int nSkill;
//Check to see if the caster has Lasting Impression and increase duration.
if(GetHasFeat(870))
{
nDuration *= 10;
}
if(GetHasFeat(424)) // lingering song
{
nDuration += 5;
}
if(nPerform >= 125 && nLevel >= 180)
{
nAttack = 36;
nDamage = 36;
nWill = 18;
nFort = 18;
nReflex = 18;
nHP = 348;
nAC = 36;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 179)
{
nAttack = 36;
nDamage = 36;
nWill = 18;
nFort = 18;
nReflex = 18;
nHP = 346;
nAC = 35;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 178)
{
nAttack = 35;
nDamage = 36;
nWill = 18;
nFort = 18;
nReflex = 18;
nHP = 344;
nAC = 35;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 177)
{
nAttack = 35;
nDamage = 35;
nWill = 18;
nFort = 18;
nReflex = 18;
nHP = 342;
nAC = 35;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 176)
{
nAttack = 35;
nDamage = 35;
nWill = 18;
nFort = 18;
nReflex = 18;
nHP = 340;
nAC = 34;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 175)
{
nAttack = 34;
nDamage = 35;
nWill = 18;
nFort = 18;
nReflex = 18;
nHP = 338;
nAC = 34;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 174)
{
nAttack = 34;
nDamage = 34;
nWill = 18;
nFort = 18;
nReflex = 18;
nHP = 336;
nAC = 34;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 173)
{
nAttack = 34;
nDamage = 34;
nWill = 17;
nFort = 18;
nReflex = 18;
nHP = 334;
nAC = 34;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 172)
{
nAttack = 34;
nDamage = 34;
nWill = 17;
nFort = 17;
nReflex = 18;
nHP = 332;
nAC = 34;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 171)
{
nAttack = 34;
nDamage = 34;
nWill = 17;
nFort = 17;
nReflex = 17;
nHP = 330;
nAC = 34;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 170)
{
nAttack = 34;
nDamage = 34;
nWill = 17;
nFort = 17;
nReflex = 17;
nHP = 328;
nAC = 33;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 169)
{
nAttack = 33;
nDamage = 34;
nWill = 17;
nFort = 17;
nReflex = 17;
nHP = 326;
nAC = 33;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 168)
{
nAttack = 33;
nDamage = 33;
nWill = 17;
nFort = 17;
nReflex = 17;
nHP = 324;
nAC = 33;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 167)
{
nAttack = 33;
nDamage = 33;
nWill = 17;
nFort = 17;
nReflex = 17;
nHP = 322;
nAC = 32;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 166)
{
nAttack = 32;
nDamage = 33;
nWill = 17;
nFort = 17;
nReflex = 17;
nHP = 320;
nAC = 32;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 165)
{
nAttack = 32;
nDamage = 32;
nWill = 17;
nFort = 17;
nReflex = 17;
nHP = 318;
nAC = 32;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 164)
{
nAttack = 32;
nDamage = 32;
nWill = 16;
nFort = 17;
nReflex = 17;
nHP = 316;
nAC = 32;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 163)
{
nAttack = 32;
nDamage = 32;
nWill = 16;
nFort = 16;
nReflex = 17;
nHP = 314;
nAC = 32;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 162)
{
nAttack = 32;
nDamage = 32;
nWill = 16;
nFort = 16;
nReflex = 16;
nHP = 312;
nAC = 32;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 161)
{
nAttack = 31;
nDamage = 32;
nWill = 16;
nFort = 16;
nReflex = 16;
nHP = 310;
nAC = 32;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 160)
{
nAttack = 31;
nDamage = 31;
nWill = 16;
nFort = 16;
nReflex = 16;
nHP = 308;
nAC = 32;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 159)
{
nAttack = 30;
nDamage = 31;
nWill = 16;
nFort = 16;
nReflex = 16;
nHP = 306;
nAC = 32;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 158)
{
nAttack = 30;
nDamage = 30;
nWill = 16;
nFort = 16;
nReflex = 16;
nHP = 304;
nAC = 32;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 157)
{
nAttack = 30;
nDamage = 30;
nWill = 16;
nFort = 16;
nReflex = 16;
nHP = 302;
nAC = 31;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 156)
{
nAttack = 29;
nDamage = 30;
nWill = 16;
nFort = 16;
nReflex = 16;
nHP = 300;
nAC = 31;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 155)
{
nAttack = 29;
nDamage = 29;
nWill = 16;
nFort = 16;
nReflex = 16;
nHP = 298;
nAC = 31;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 154)
{
nAttack = 29;
nDamage = 29;
nWill = 16;
nFort = 16;
nReflex = 16;
nHP = 296;
nAC = 30;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 153)
{
nAttack = 29;
nDamage = 28;
nWill = 16;
nFort = 16;
nReflex = 16;
nHP = 294;
nAC = 30;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 152)
{
nAttack = 29;
nDamage = 28;
nWill = 15;
nFort = 16;
nReflex = 16;
nHP = 292;
nAC = 30;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 151)
{
nAttack = 29;
nDamage = 28;
nWill = 15;
nFort = 15;
nReflex = 16;
nHP = 290;
nAC = 30;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 150)
{
nAttack = 29;
nDamage = 28;
nWill = 15;
nFort = 15;
nReflex = 15;
nHP = 288;
nAC = 30;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 149)
{
nAttack = 29;
nDamage = 28;
nWill = 15;
nFort = 15;
nReflex = 15;
nHP = 286;
nAC = 29;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 148)
{
nAttack = 28;
nDamage = 28;
nWill = 15;
nFort = 15;
nReflex = 15;
nHP = 284;
nAC = 29;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 147)
{
nAttack = 28;
nDamage = 27;
nWill = 15;
nFort = 15;
nReflex = 15;
nHP = 282;
nAC = 29;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 146)
{
nAttack = 28;
nDamage = 27;
nWill = 15;
nFort = 15;
nReflex = 15;
nHP = 280;
nAC = 28;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 145)
{
nAttack = 27;
nDamage = 27;
nWill = 15;
nFort = 15;
nReflex = 15;
nHP = 278;
nAC = 28;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 144)
{
nAttack = 27;
nDamage = 26;
nWill = 15;
nFort = 15;
nReflex = 15;
nHP = 276;
nAC = 28;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 143)
{
nAttack = 27;
nDamage = 26;
nWill = 14;
nFort = 15;
nReflex = 15;
nHP = 274;
nAC = 28;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 142)
{
nAttack = 27;
nDamage = 26;
nWill = 14;
nFort = 14;
nReflex = 15;
nHP = 272;
nAC = 28;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 141)
{
nAttack = 27;
nDamage = 26;
nWill = 14;
nFort = 14;
nReflex = 14;
nHP = 270;
nAC = 28;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 140)
{
nAttack = 27;
nDamage = 26;
nWill = 14;
nFort = 14;
nReflex = 14;
nHP = 268;
nAC = 27;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 139)
{
nAttack = 27;
nDamage = 25;
nWill = 14;
nFort = 14;
nReflex = 14;
nHP = 266;
nAC = 27;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 138)
{
nAttack = 27;
nDamage = 25;
nWill = 14;
nFort = 14;
nReflex = 14;
nHP = 264;
nAC = 26;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 137)
{
nAttack = 26;
nDamage = 25;
nWill = 14;
nFort = 14;
nReflex = 14;
nHP = 262;
nAC = 26;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 136)
{
nAttack = 26;
nDamage = 24;
nWill = 14;
nFort = 14;
nReflex = 14;
nHP = 260;
nAC = 26;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 135)
{
nAttack = 26;
nDamage = 24;
nWill = 13;
nFort = 14;
nReflex = 14;
nHP = 258;
nAC = 26;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 134)
{
nAttack = 26;
nDamage = 24;
nWill = 13;
nFort = 13;
nReflex = 14;
nHP = 256;
nAC = 26;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 133)
{
nAttack = 26;
nDamage = 24;
nWill = 13;
nFort = 13;
nReflex = 13;
nHP = 254;
nAC = 26;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 132)
{
nAttack = 26;
nDamage = 23;
nWill = 13;
nFort = 13;
nReflex = 13;
nHP = 252;
nAC = 26;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 131)
{
nAttack = 26;
nDamage = 23;
nWill = 13;
nFort = 13;
nReflex = 13;
nHP = 250;
nAC = 25;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 130)
{
nAttack = 25;
nDamage = 23;
nWill = 13;
nFort = 13;
nReflex = 13;
nHP = 248;
nAC = 25;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 129)
{
nAttack = 25;
nDamage = 22;
nWill = 13;
nFort = 13;
nReflex = 13;
nHP = 246;
nAC = 25;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 128)
{
nAttack = 25;
nDamage = 22;
nWill = 12;
nFort = 13;
nReflex = 13;
nHP = 244;
nAC = 25;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 127)
{
nAttack = 25;
nDamage = 22;
nWill = 12;
nFort = 12;
nReflex = 13;
nHP = 242;
nAC = 25;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 126)
{
nAttack = 25;
nDamage = 22;
nWill = 12;
nFort = 12;
nReflex = 12;
nHP = 240;
nAC = 25;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 125)
{
nAttack = 25;
nDamage = 21;
nWill = 12;
nFort = 12;
nReflex = 12;
nHP = 238;
nAC = 25;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 124)
{
nAttack = 24;
nDamage = 21;
nWill = 12;
nFort = 12;
nReflex = 12;
nHP = 236;
nAC = 25;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 123)
{
nAttack = 24;
nDamage = 21;
nWill = 12;
nFort = 12;
nReflex = 12;
nHP = 234;
nAC = 24;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 122)
{
nAttack = 24;
nDamage = 20;
nWill = 12;
nFort = 12;
nReflex = 12;
nHP = 232;
nAC = 24;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 121)
{
nAttack = 23;
nDamage = 20;
nWill = 12;
nFort = 12;
nReflex = 12;
nHP = 230;
nAC = 24;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 120)
{
nAttack = 23;
nDamage = 19;
nWill = 12;
nFort = 12;
nReflex = 12;
nHP = 228;
nAC = 24;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 119)
{
nAttack = 23;
nDamage = 19;
nWill = 11;
nFort = 12;
nReflex = 12;
nHP = 226;
nAC = 24;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 118)
{
nAttack = 23;
nDamage = 19;
nWill = 11;
nFort = 11;
nReflex = 12;
nHP = 224;
nAC = 24;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 117)
{
nAttack = 23;
nDamage = 19;
nWill = 11;
nFort = 11;
nReflex = 11;
nHP = 222;
nAC = 24;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 116)
{
nAttack = 23;
nDamage = 19;
nWill = 11;
nFort = 11;
nReflex = 11;
nHP = 220;
nAC = 23;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 115)
{
nAttack = 22;
nDamage = 19;
nWill = 11;
nFort = 11;
nReflex = 11;
nHP = 218;
nAC = 23;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 114)
{
nAttack = 22;
nDamage = 18;
nWill = 11;
nFort = 11;
nReflex = 11;
nHP = 216;
nAC = 23;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 113)
{
nAttack = 22;
nDamage = 18;
nWill = 10;
nFort = 11;
nReflex = 11;
nHP = 214;
nAC = 23;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 112)
{
nAttack = 22;
nDamage = 18;
nWill = 10;
nFort = 10;
nReflex = 11;
nHP = 212;
nAC = 23;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 111)
{
nAttack = 22;
nDamage = 18;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 210;
nAC = 23;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 110)
{
nAttack = 22;
nDamage = 18;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 208;
nAC = 22;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 109)
{
nAttack = 22;
nDamage = 17;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 206;
nAC = 22;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 108)
{
nAttack = 21;
nDamage = 17;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 204;
nAC = 22;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 107)
{
nAttack = 21;
nDamage = 16;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 202;
nAC = 22;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 106)
{
nAttack = 21;
nDamage = 16;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 200;
nAC = 21;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 105)
{
nAttack = 21;
nDamage = 16;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 198;
nAC = 21;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 104)
{
nAttack = 20;
nDamage = 16;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 196;
nAC = 21;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 103)
{
nAttack = 20;
nDamage = 16;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 194;
nAC = 21;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 102)
{
nAttack = 20;
nDamage = 15;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 192;
nAC = 21;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 101)
{
nAttack = 20;
nDamage = 15;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 190;
nAC = 21;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 100)
{
nAttack = 20;
nDamage = 15;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 188;
nAC = 20;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 99)
{
nAttack = 20;
nDamage = 15;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 186;
nAC = 20;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 98)
{
nAttack = 20;
nDamage = 15;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 184;
nAC = 20;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 97)
{
nAttack = 20;
nDamage = 14;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 182;
nAC = 20;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 96)
{
nAttack = 19;
nDamage = 14;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 180;
nAC = 20;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 95)
{
nAttack = 19;
nDamage = 14;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 178;
nAC = 19;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 94)
{
nAttack = 19;
nDamage = 14;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 176;
nAC = 19;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 93)
{
nAttack = 18;
nDamage = 14;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 174;
nAC = 19;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 92)
{
nAttack = 18;
nDamage = 13;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 172;
nAC = 19;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 91)
{
nAttack = 18;
nDamage = 12;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 170;
nAC = 19;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 90)
{
nAttack = 18;
nDamage = 12;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 168;
nAC = 18;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 89)
{
nAttack = 18;
nDamage = 12;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 166;
nAC = 18;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 88)
{
nAttack = 17;
nDamage = 12;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 164;
nAC = 18;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 87)
{
nAttack = 17;
nDamage = 12;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 162;
nAC = 18;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 86)
{
nAttack = 17;
nDamage = 12;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 160;
nAC = 17;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 85)
{
nAttack = 17;
nDamage = 12;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 158;
nAC = 17;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 84)
{
nAttack = 16;
nDamage = 12;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 156;
nAC = 17;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 83)
{
nAttack = 15;
nDamage = 12;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 154;
nAC = 17;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 82)
{
nAttack = 14;
nDamage = 12;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 152;
nAC = 17;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 81)
{
nAttack = 14;
nDamage = 12;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 150;
nAC = 16;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 80)
{
nAttack = 13;
nDamage = 12;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 148;
nAC = 16;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 79)
{
nAttack = 12;
nDamage = 12;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 146;
nAC = 16;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 78)
{
nAttack = 12;
nDamage = 11;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 144;
nAC = 16;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 77)
{
nAttack = 11;
nDamage = 11;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 142;
nAC = 16;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 76)
{
nAttack = 11;
nDamage = 11;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 140;
nAC = 15;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 75)
{
nAttack = 11;
nDamage = 10;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 138;
nAC = 15;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 74)
{
nAttack = 10;
nDamage = 10;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 136;
nAC = 15;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 73)
{
nAttack = 10;
nDamage = 10;
nWill = 10;
nFort = 10;
nReflex = 10;
nHP = 134;
nAC = 14;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 72)
{
nAttack = 10;
nDamage = 10;
nWill = 9;
nFort = 10;
nReflex = 10;
nHP = 132;
nAC = 14;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 71)
{
nAttack = 10;
nDamage = 10;
nWill = 9;
nFort = 9;
nReflex = 10;
nHP = 130;
nAC = 14;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 70)
{
nAttack = 10;
nDamage = 10;
nWill = 9;
nFort = 9;
nReflex = 9;
nHP = 128;
nAC = 14;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 69)
{
nAttack = 10;
nDamage = 9;
nWill = 9;
nFort = 9;
nReflex = 9;
nHP = 126;
nAC = 14;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 68)
{
nAttack = 9;
nDamage = 9;
nWill = 9;
nFort = 9;
nReflex = 9;
nHP = 124;
nAC = 14;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 67)
{
nAttack = 9;
nDamage = 9;
nWill = 9;
nFort = 9;
nReflex = 9;
nHP = 122;
nAC = 13;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 66)
{
nAttack = 9;
nDamage = 9;
nWill = 8;
nFort = 9;
nReflex = 9;
nHP = 120;
nAC = 13;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 65)
{
nAttack = 9;
nDamage = 9;
nWill = 8;
nFort = 8;
nReflex = 9;
nHP = 118;
nAC = 13;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 64)
{
nAttack = 9;
nDamage = 9;
nWill = 8;
nFort = 8;
nReflex = 8;
nHP = 116;
nAC = 13;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 63)
{
nAttack = 9;
nDamage = 8;
nWill = 8;
nFort = 8;
nReflex = 8;
nHP = 114;
nAC = 13;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 62)
{
nAttack = 8;
nDamage = 8;
nWill = 8;
nFort = 8;
nReflex = 8;
nHP = 112;
nAC = 13;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 61)
{
nAttack = 8;
nDamage = 8;
nWill = 8;
nFort = 8;
nReflex = 8;
nHP = 110;
nAC = 12;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 60)
{
nAttack = 8;
nDamage = 8;
nWill = 7;
nFort = 8;
nReflex = 8;
nHP = 108;
nAC = 12;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 59)
{
nAttack = 8;
nDamage = 8;
nWill = 7;
nFort = 7;
nReflex = 8;
nHP = 106;
nAC = 12;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 58)
{
nAttack = 8;
nDamage = 8;
nWill = 7;
nFort = 7;
nReflex = 7;
nHP = 104;
nAC = 12;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 57)
{
nAttack = 8;
nDamage = 7;
nWill = 7;
nFort = 7;
nReflex = 7;
nHP = 102;
nAC = 12;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 56)
{
nAttack = 7;
nDamage = 7;
nWill = 7;
nFort = 7;
nReflex = 7;
nHP = 100;
nAC = 12;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 55)
{
nAttack = 7;
nDamage = 7;
nWill = 7;
nFort = 7;
nReflex = 7;
nHP = 98;
nAC = 11;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 54)
{
nAttack = 7;
nDamage = 7;
nWill = 6;
nFort = 7;
nReflex = 7;
nHP = 96;
nAC = 11;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 53)
{
nAttack = 7;
nDamage = 7;
nWill = 6;
nFort = 6;
nReflex = 7;
nHP = 94;
nAC = 11;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 52)
{
nAttack = 7;
nDamage = 7;
nWill = 6;
nFort = 6;
nReflex = 6;
nHP = 92;
nAC = 11;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 51)
{
nAttack = 6;
nDamage = 7;
nWill = 6;
nFort = 6;
nReflex = 6;
nHP = 90;
nAC = 11;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 50)
{
nAttack = 6;
nDamage = 6;
nWill = 6;
nFort = 6;
nReflex = 6;
nHP = 88;
nAC = 11;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 49)
{
nAttack = 6;
nDamage = 6;
nWill = 6;
nFort = 6;
nReflex = 6;
nHP = 86;
nAC = 10;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 48)
{
nAttack = 6;
nDamage = 6;
nWill = 5;
nFort = 6;
nReflex = 6;
nHP = 84;
nAC = 10;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 47)
{
nAttack = 6;
nDamage = 6;
nWill = 5;
nFort = 5;
nReflex = 6;
nHP = 82;
nAC = 10;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 46)
{
nAttack = 6;
nDamage = 6;
nWill = 5;
nFort = 5;
nReflex = 5;
nHP = 80;
nAC = 10;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 45)
{
nAttack = 6;
nDamage = 5;
nWill = 5;
nFort = 5;
nReflex = 5;
nHP = 78;
nAC = 10;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 44)
{
nAttack = 5;
nDamage = 5;
nWill = 5;
nFort = 5;
nReflex = 5;
nHP = 76;
nAC = 10;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 43)
{
nAttack = 5;
nDamage = 5;
nWill = 5;
nFort = 5;
nReflex = 5;
nHP = 74;
nAC = 9;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 42)
{
nAttack = 4;
nDamage = 5;
nWill = 5;
nFort = 5;
nReflex = 5;
nHP = 72;
nAC = 9;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 41)
{
nAttack = 4;
nDamage = 4;
nWill = 5;
nFort = 5;
nReflex = 5;
nHP = 70;
nAC = 9;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 40)
{
nAttack = 4;
nDamage = 4;
nWill = 4;
nFort = 5;
nReflex = 5;
nHP = 68;
nAC = 9;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 39)
{
nAttack = 4;
nDamage = 4;
nWill = 4;
nFort = 4;
nReflex = 5;
nHP = 66;
nAC = 8;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 38)
{
nAttack = 4;
nDamage = 4;
nWill = 4;
nFort = 4;
nReflex = 4;
nHP = 64;
nAC = 8;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 37)
{
nAttack = 3;
nDamage = 4;
nWill = 4;
nFort = 4;
nReflex = 4;
nHP = 62;
nAC = 8;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 36)
{
nAttack = 3;
nDamage = 4;
nWill = 4;
nFort = 3;
nReflex = 4;
nHP = 60;
nAC = 8;
nSkill = 20;
}
if(nPerform >= 125 && nLevel >= 35)
{
nAttack = 3;
nDamage = 4;
nWill = 4;
nFort = 3;
nReflex = 3;
nHP = 58;
nAC = 7;
nSkill = 20;
}
if(nPerform >= 120 && nLevel >= 34)
{
nAttack = 3;
nDamage = 4;
nWill = 3;
nFort = 3;
nReflex = 3;
nHP = 56;
nAC = 7;
nSkill = 20;
}
if(nPerform >= 115 && nLevel >= 33)
{
nAttack = 3;
nDamage = 3;
nWill = 3;
nFort = 3;
nReflex = 3;
nHP = 54;
nAC = 7;
nSkill = 20;
}
if(nPerform >= 110 && nLevel >= 32)
{
nAttack = 2;
nDamage = 3;
nWill = 3;
nFort = 3;
nReflex = 3;
nHP = 52;
nAC = 7;
nSkill = 20;
}
if(nPerform >= 105 && nLevel >= 31)
{
nAttack = 2;
nDamage = 3;
nWill = 3;
nFort = 2;
nReflex = 3;
nHP = 50;
nAC = 7;
nSkill = 20;
}
if(nPerform >= 100 && nLevel >= 30)
{
nAttack = 2;
nDamage = 3;
nWill = 3;
nFort = 2;
nReflex = 2;
nHP = 48;
nAC = 7;
nSkill = 18;
}
else if(nPerform >= 95 && nLevel >= 29)
{
nAttack = 2;
nDamage = 3;
nWill = 3;
nFort = 2;
nReflex = 2;
nHP = 46;
nAC = 6;
nSkill = 17;
}
else if(nPerform >= 90 && nLevel >= 28)
{
nAttack = 2;
nDamage = 3;
nWill = 3;
nFort = 2;
nReflex = 2;
nHP = 44;
nAC = 6;
nSkill = 16;
}
else if(nPerform >= 85 && nLevel >= 27)
{
nAttack = 2;
nDamage = 3;
nWill = 3;
nFort = 2;
nReflex = 2;
nHP = 42;
nAC = 6;
nSkill = 15;
}
else if(nPerform >= 80 && nLevel >= 26)
{
nAttack = 2;
nDamage = 3;
nWill = 3;
nFort = 2;
nReflex = 2;
nHP = 40;
nAC = 6;
nSkill = 14;
}
else if(nPerform >= 75 && nLevel >= 25)
{
nAttack = 2;
nDamage = 3;
nWill = 3;
nFort = 2;
nReflex = 2;
nHP = 38;
nAC = 6;
nSkill = 13;
}
else if(nPerform >= 70 && nLevel >= 24)
{
nAttack = 2;
nDamage = 3;
nWill = 3;
nFort = 2;
nReflex = 2;
nHP = 36;
nAC = 5;
nSkill = 12;
}
else if(nPerform >= 65 && nLevel >= 23)
{
nAttack = 2;
nDamage = 3;
nWill = 3;
nFort = 2;
nReflex = 2;
nHP = 34;
nAC = 5;
nSkill = 11;
}
else if(nPerform >= 60 && nLevel >= 22)
{
nAttack = 2;
nDamage = 3;
nWill = 3;
nFort = 2;
nReflex = 2;
nHP = 32;
nAC = 5;
nSkill = 10;
}
else if(nPerform >= 55 && nLevel >= 21)
{
nAttack = 2;
nDamage = 3;
nWill = 3;
nFort = 2;
nReflex = 2;
nHP = 30;
nAC = 5;
nSkill = 9;
}
else if(nPerform >= 50 && nLevel >= 20)
{
nAttack = 2;
nDamage = 3;
nWill = 3;
nFort = 2;
nReflex = 2;
nHP = 28;
nAC = 5;
nSkill = 8;
}
else if(nPerform >= 45 && nLevel >= 19)
{
nAttack = 2;
nDamage = 3;
nWill = 3;
nFort = 2;
nReflex = 2;
nHP = 26;
nAC = 5;
nSkill = 7;
}
else if(nPerform >= 40 && nLevel >= 18)
{
nAttack = 2;
nDamage = 3;
nWill = 3;
nFort = 2;
nReflex = 2;
nHP = 24;
nAC = 5;
nSkill = 6;
}
else if(nPerform >= 35 && nLevel >= 17)
{
nAttack = 2;
nDamage = 3;
nWill = 3;
nFort = 2;
nReflex = 2;
nHP = 22;
nAC = 5;
nSkill = 5;
}
else if(nPerform >= 30 && nLevel >= 16)
{
nAttack = 2;
nDamage = 3;
nWill = 3;
nFort = 2;
nReflex = 2;
nHP = 20;
nAC = 5;
nSkill = 4;
}
else if(nPerform >= 24 && nLevel >= 15)
{
nAttack = 2;
nDamage = 3;
nWill = 2;
nFort = 2;
nReflex = 2;
nHP = 16;
nAC = 4;
nSkill = 3;
}
else if(nPerform >= 21 && nLevel >= 14)
{
nAttack = 2;
nDamage = 3;
nWill = 1;
nFort = 1;
nReflex = 1;
nHP = 16;
nAC = 3;
nSkill = 2;
}
else if(nPerform >= 18 && nLevel >= 11)
{
nAttack = 2;
nDamage = 2;
nWill = 1;
nFort = 1;
nReflex = 1;
nHP = 8;
nAC = 2;
nSkill = 2;
}
else if(nPerform >= 15 && nLevel >= 8)
{
nAttack = 2;
nDamage = 2;
nWill = 1;
nFort = 1;
nReflex = 1;
nHP = 8;
nAC = 0;
nSkill = 1;
}
else if(nPerform >= 12 && nLevel >= 6)
{
nAttack = 1;
nDamage = 2;
nWill = 1;
nFort = 1;
nReflex = 1;
nHP = 0;
nAC = 0;
nSkill = 1;
}
else if(nPerform >= 9 && nLevel >= 3)
{
nAttack = 1;
nDamage = 2;
nWill = 1;
nFort = 1;
nReflex = 0;
nHP = 0;
nAC = 0;
nSkill = 0;
}
else if(nPerform >= 6 && nLevel >= 2)
{
nAttack = 1;
nDamage = 1;
nWill = 1;
nFort = 0;
nReflex = 0;
nHP = 0;
nAC = 0;
nSkill = 0;
}
else if(nPerform >= 3 && nLevel >= 1)
{
nAttack = 1;
nDamage = 1;
nWill = 0;
nFort = 0;
nReflex = 0;
nHP = 0;
nAC = 0;
nSkill = 0;
}
effect eVis = EffectVisualEffect(VFX_IMP_DOOM);
eAttack = EffectAttackDecrease(nAttack);
eDamage = EffectDamageDecrease(nDamage, DAMAGE_TYPE_BLUDGEONING|DAMAGE_TYPE_PIERCING|DAMAGE_TYPE_SLASHING);
effect eLink = EffectLinkEffects(eAttack, eDamage);
if(nWill > 0)
{
eWill = EffectSavingThrowDecrease(SAVING_THROW_WILL, nWill);
eLink = EffectLinkEffects(eLink, eWill);
}
if(nFort > 0)
{
eFort = EffectSavingThrowDecrease(SAVING_THROW_FORT, nFort);
eLink = EffectLinkEffects(eLink, eFort);
}
if(nReflex > 0)
{
eReflex = EffectSavingThrowDecrease(SAVING_THROW_REFLEX, nReflex);
eLink = EffectLinkEffects(eLink, eReflex);
}
if(nAC > 0)
{
eAC = EffectACDecrease(nAC, AC_DODGE_BONUS);
eLink = EffectLinkEffects(eLink, eAC);
}
if(nSkill > 0)
{
eSkill = EffectSkillDecrease(SKILL_ALL_SKILLS, nSkill);
eLink = EffectLinkEffects(eLink, eSkill);
}
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eDur2 = EffectVisualEffect(507);
eLink = EffectLinkEffects(eLink, eDur);
effect eImpact = EffectVisualEffect(VFX_IMP_HEAD_SONIC);
effect eFNF = EffectVisualEffect(VFX_FNF_LOS_EVIL_30);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eFNF, GetLocation(OBJECT_SELF));
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF));
eHP = ExtraordinaryEffect(eHP);
eLink = ExtraordinaryEffect(eLink);
string sCurseSongHP = "CURSE_SONG_HP_" + ObjectToString(OBJECT_SELF);
RemoveSongEffects(GetSpellId(),OBJECT_SELF,OBJECT_SELF);
float fDelay;
while(GetIsObjectValid(oTarget))
{
if(spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF))
{
// * GZ Oct 2003: If we are deaf, we do not have negative effects from curse song
if (!PRCGetHasEffect(EFFECT_TYPE_SILENCE,oTarget) && !PRCGetHasEffect(EFFECT_TYPE_DEAF,oTarget))
{
RemoveSongEffects(GetSpellId(),OBJECT_SELF,oTarget);
int nRace = MyPRCGetRacialType(oTarget);
// Undead and Constructs are immune to mind effecting abilities.
// A bard with requiem can effect undead
if ((nRace == RACIAL_TYPE_UNDEAD && GetHasFeat(FEAT_REQUIEM, OBJECT_SELF)) || nRace != RACIAL_TYPE_UNDEAD && nRace != RACIAL_TYPE_CONSTRUCT || GetIsWarforged(oTarget))
{
// Even with requiem, they have half duration
if (nRace == RACIAL_TYPE_UNDEAD) nDuration /= 2;
if (nHP > 0 && !GetLocalInt(oTarget, sCurseSongHP))
{
eHP = PRCEffectDamage(oTarget, nHP, DAMAGE_TYPE_SONIC, DAMAGE_POWER_NORMAL);
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_SONIC), oTarget);
DelayCommand(0.01, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHP, oTarget));
SetLocalInt(oTarget, sCurseSongHP, TRUE);
DelayCommand(RoundsToSeconds(nDuration),DeleteLocalInt(oTarget, sCurseSongHP));
}
if (!GetIsDead(oTarget))
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration));
DelayCommand(PRCGetRandomDelay(0.1,0.5), ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
//StoreSongRecipient(oTarget, OBJECT_SELF, GetSpellId(), nDuration);
}
}
}
else
{
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_MAGIC_RESISTANCE_USE), oTarget);
}
}
oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF));
}
DecrementRemainingFeatUses(OBJECT_SELF, FEAT_BARD_SONGS);
}