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