Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
283 lines
8.3 KiB
Plaintext
283 lines
8.3 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Warlock Eldritch Blast Essences
|
|
//:: inv_blastessence.nss
|
|
//::///////////////////////////////////////////////
|
|
/*
|
|
Handles the Essence invocations for Warlocks
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Fox
|
|
//:: Created On: Feb 29, 2008
|
|
//:://////////////////////////////////////////////
|
|
|
|
#include "inv_inc_invfunc"
|
|
|
|
void main()
|
|
{
|
|
object oPC = OBJECT_SELF;
|
|
int nSpellID = GetSpellId();
|
|
int bSecondEssenceActive = GetLocalInt(oPC, "UsingSecondEssence");
|
|
|
|
if(GetLocalInt(oPC, "BlastEssence") == nSpellID)
|
|
{
|
|
DeleteLocalInt(oPC, "BlastEssence");
|
|
DeleteLocalInt(oPC, "EssenceData");
|
|
FloatingTextStringOnCreature("*Blast Essence Removed*", oPC, FALSE);
|
|
return;
|
|
}
|
|
|
|
if(GetLocalInt(oPC, "BlastEssence2") == nSpellID)
|
|
{
|
|
DeleteLocalInt(oPC, "BlastEssence2");
|
|
DeleteLocalInt(oPC, "EssenceData2");
|
|
FloatingTextStringOnCreature("*Second Blast Essence Removed*", oPC, FALSE);
|
|
return;
|
|
}
|
|
|
|
int nLevel, nRace = -1, nDamage = DAMAGE_TYPE_MAGICAL;
|
|
string sEssenceData, sBlastEssence, sMes;
|
|
if(bSecondEssenceActive)
|
|
{
|
|
sBlastEssence = "BlastEssence2";
|
|
sEssenceData = "EssenceData2";
|
|
}
|
|
else
|
|
{
|
|
sBlastEssence = "BlastEssence";
|
|
sEssenceData = "EssenceData";
|
|
}
|
|
|
|
switch(nSpellID)
|
|
{
|
|
case INVOKE_LORD_OF_ALL_ESSENCES:
|
|
if(bSecondEssenceActive)
|
|
{
|
|
DeleteLocalInt(oPC, "UsingSecondEssence");
|
|
sMes = "*Modifying First Essence*";
|
|
}
|
|
else
|
|
{
|
|
SetLocalInt(oPC, "UsingSecondEssence", TRUE);
|
|
sMes = "*Modifying Second Essence*";
|
|
}
|
|
break;
|
|
|
|
case INVOKE_FRIGHTFUL_BLAST:
|
|
nLevel = 2;
|
|
sMes = "*Frightful Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_HAMMER_BLAST:
|
|
nLevel = 2;
|
|
sMes = "*Hammer Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_SICKENING_BLAST:
|
|
nLevel = 2;
|
|
sMes = "*Sickening Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_BANEFUL_BLAST_ABBERATION:
|
|
nLevel = 3;
|
|
nRace = RACIAL_TYPE_ABERRATION;
|
|
sMes = "*Abberation Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_BANEFUL_BLAST_BEAST:
|
|
nLevel = 3;
|
|
nRace = RACIAL_TYPE_BEAST;
|
|
sMes = "*Beast Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_BANEFUL_BLAST_CONSTRUCT:
|
|
nLevel = 3;
|
|
nRace = RACIAL_TYPE_CONSTRUCT;
|
|
sMes = "*Construct Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_BANEFUL_BLAST_DRAGON:
|
|
nLevel = 3;
|
|
nRace = RACIAL_TYPE_DRAGON;
|
|
sMes = "*Dragon Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_BANEFUL_BLAST_DWARF:
|
|
nLevel = 3;
|
|
nRace = RACIAL_TYPE_DWARF;
|
|
sMes = "*Dwarf Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_BANEFUL_BLAST_ELEMENTAL:
|
|
nLevel = 3;
|
|
nRace = RACIAL_TYPE_ELEMENTAL;
|
|
sMes = "*Elemental Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_BANEFUL_BLAST_ELF:
|
|
nLevel = 3;
|
|
nRace = RACIAL_TYPE_ELF;
|
|
sMes = "*Elf Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_BANEFUL_BLAST_FEY:
|
|
nLevel = 3;
|
|
nRace = RACIAL_TYPE_FEY;
|
|
sMes = "*Fey Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_BANEFUL_BLAST_GIANT:
|
|
nLevel = 3;
|
|
nRace = RACIAL_TYPE_GIANT;
|
|
sMes = "*Giant Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_BANEFUL_BLAST_GOBLINOID:
|
|
nLevel = 3;
|
|
nRace = RACIAL_TYPE_HUMANOID_GOBLINOID;
|
|
sMes = "*Goblinoid Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_BANEFUL_BLAST_GNOME:
|
|
nLevel = 3;
|
|
nRace = RACIAL_TYPE_GNOME;
|
|
sMes = "*Gnome Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_BANEFUL_BLAST_HALFLING:
|
|
nLevel = 3;
|
|
nRace = RACIAL_TYPE_HALFLING;
|
|
sMes = "*Halfling Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_BANEFUL_BLAST_HUMAN:
|
|
nLevel = 3;
|
|
nRace = RACIAL_TYPE_HUMAN;
|
|
sMes = "*Human Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_BANEFUL_BLAST_MONSTEROUS:
|
|
nLevel = 3;
|
|
nRace = RACIAL_TYPE_HUMANOID_MONSTROUS;
|
|
sMes = "*Monstrous Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_BANEFUL_BLAST_ORC:
|
|
nLevel = 3;
|
|
nRace = RACIAL_TYPE_HUMANOID_ORC;
|
|
sMes = "*Orc Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_BANEFUL_BLAST_OUTSIDER:
|
|
nLevel = 3;
|
|
nRace = RACIAL_TYPE_OUTSIDER;
|
|
sMes = "*Outsider Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_BANEFUL_BLAST_PLANT:
|
|
nLevel = 3;
|
|
nRace = RACIAL_TYPE_PLANT;
|
|
sMes = "*Plant Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_BANEFUL_BLAST_REPTILIAN:
|
|
nLevel = 3;
|
|
nRace = RACIAL_TYPE_HUMANOID_REPTILIAN;
|
|
sMes = "*Reptilian Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_BANEFUL_BLAST_SHAPECHANGER:
|
|
nLevel = 3;
|
|
nRace = RACIAL_TYPE_SHAPECHANGER;
|
|
sMes = "*Shapechanger Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_BANEFUL_BLAST_UNDEAD:
|
|
nLevel = 3;
|
|
nRace = RACIAL_TYPE_UNDEAD;
|
|
sMes = "*Undead Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_BANEFUL_BLAST_VERMIN:
|
|
nLevel = 3;
|
|
nRace = RACIAL_TYPE_VERMIN;
|
|
sMes = "*Vermin Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_BESHADOWED_BLAST:
|
|
nLevel = 4;
|
|
sMes = "*Beshadowed Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_BRIMSTONE_BLAST:
|
|
nLevel = 3;
|
|
nDamage = DAMAGE_TYPE_FIRE;
|
|
sMes = "*Brimstone Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_HELLRIME_BLAST:
|
|
nLevel = 4;
|
|
nDamage = DAMAGE_TYPE_COLD;
|
|
sMes = "*Hellrime Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_BEWITCHING_BLAST:
|
|
nLevel = 4;
|
|
sMes = "*Bewitching Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_HINDERING_BLAST:
|
|
nLevel = 4;
|
|
sMes = "*Hindering Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_NOXIOUS_BLAST:
|
|
nLevel = 6;
|
|
sMes = "*Noxious Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_PENETRATING_BLAST:
|
|
nLevel = 6;
|
|
sMes = "*Penetrating Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_VITRIOLIC_BLAST:
|
|
nLevel = 6;
|
|
nDamage = DAMAGE_TYPE_ACID;
|
|
sMes = "*Vitriolic Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_BINDING_BLAST:
|
|
nLevel = 7;
|
|
sMes = "*Binding Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_UTTERDARK_BLAST:
|
|
nLevel = 8;
|
|
nDamage = DAMAGE_TYPE_NEGATIVE;
|
|
sMes = "*Utterdark Blast Essence Applied*";
|
|
break;
|
|
|
|
case INVOKE_CORRUPTING_BLAST:
|
|
nLevel = 1;
|
|
sMes = "*Corrupting Blast Applied*";
|
|
break;
|
|
}
|
|
|
|
if(nLevel)
|
|
{
|
|
nRace++;//bias race info
|
|
//Essence data format:
|
|
// 8 bits: [24...31] : ***UNUSED / IGNORED***
|
|
// 8 bits: [16...23] : bane race (biased by +1 == 0 if none)
|
|
// 12 bits: [ 4...15] : damage type (magical by default)
|
|
// 4 bits: [ 0... 3] : essence level
|
|
int nData = ((nRace & 0xFF) << 16) |
|
|
((nDamage & 0xFFF) << 4) |
|
|
(nLevel & 0xF);
|
|
|
|
SetLocalInt(oPC, sBlastEssence, nSpellID);
|
|
SetLocalInt(oPC, sEssenceData, nData);
|
|
}
|
|
|
|
FloatingTextStringOnCreature(sMes, oPC, FALSE);
|
|
} |