forked from Jaysyn/PRC8
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);
|
|
} |