PRC8/nwn/nwnprc/trunk/scripts/prc_blightlord.nss
Jaysyn904 6ec137a24e Updated AMS marker feats
Updated AMS marker feats.  Removed arcane & divine marker feats.  Updated Dread Necromancer for epic progression. Updated weapon baseitem models.  Updated new weapons for crafting & npc equip.
 Updated prefix.  Updated release archive.
2024-02-11 14:01:05 -05:00

191 lines
6.9 KiB
Plaintext

#include "prc_alterations"
#include "prc_feat_const"
#include "prc_ipfeat_const"
#include "prc_class_const"
void BLKGlaive(object oPC,int iEquip)
{
FloatingTextStringOnCreature("Black Glaive is firing", OBJECT_SELF, FALSE);
object oItem;
if (iEquip==2) // On Equip
{
FloatingTextStringOnCreature("Black Glaive is equipped", OBJECT_SELF, FALSE);
FloatingTextStringOnCreature("Value of BKGlaive: " + IntToString(GetLocalInt(oPC,"BKGlaive")), OBJECT_SELF, FALSE);
oItem=GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC);
if (GetLocalInt(oPC,"BKGlaive")) return;
if (GetBaseItemType(oItem)==BASE_ITEM_HALBERD)
{
FloatingTextStringOnCreature("Black Glaive is a Halberd", OBJECT_SELF, FALSE);
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_COLD,IP_CONST_DAMAGEBONUS_1d6),oItem,9999.0);
SetLocalInt(oPC,"BKGlaive",1);
FloatingTextStringOnCreature("Value of BKGlaive: " + IntToString(GetLocalInt(oPC,"BKGlaive")), OBJECT_SELF, FALSE);
FloatingTextStringOnCreature("Applied Blightlord Cold Damage", OBJECT_SELF, FALSE);
}
}
else if (iEquip==1) // Unequip
{
FloatingTextStringOnCreature("Black Glaive is unequipped", OBJECT_SELF, FALSE);
oItem=GetItemLastUnequipped();
//if (GetBaseItemType(oItem)!=BASE_ITEM_HALBERD) return;
FloatingTextStringOnCreature("Unequipped item is a Halberd", OBJECT_SELF, FALSE);
FloatingTextStringOnCreature("Value of BKGlaive: " + IntToString(GetLocalInt(oPC,"BKGlaive")), OBJECT_SELF, FALSE);
if (GetLocalInt(oPC,"BKGlaive"))
{
SpawnScriptDebugger();
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS,IP_CONST_DAMAGETYPE_COLD,IP_CONST_DAMAGEBONUS_1d6,1,"",-1,DURATION_TYPE_TEMPORARY);
FloatingTextStringOnCreature("Removed Blightlord Cold Damage", OBJECT_SELF, FALSE);
DeleteLocalInt(oPC,"BKGlaive");
FloatingTextStringOnCreature("Value of BKGlaive: " + IntToString(GetLocalInt(oPC,"BKGlaive")), OBJECT_SELF, FALSE);
}
}
/*else
{
FloatingTextStringOnCreature("Black Glaive is in Else statement", OBJECT_SELF, FALSE);
oItem=GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC);
//if (GetLocalInt(oPC,"BKGlaive")) return;
if (GetBaseItemType(oItem)==BASE_ITEM_HALBERD)
{
FloatingTextStringOnCreature("Black Glaive is an ELSE Halberd", OBJECT_SELF, FALSE);
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_COLD,IP_CONST_DAMAGEBONUS_1d6),oItem,9999.0);
//SetLocalInt(oPC,"BKGlaive",1);
FloatingTextStringOnCreature("Applied Blightlord Cold Damage", OBJECT_SELF, FALSE);
}
}*/
}
/*
void RemoveBlackGlaive(object oPC, object oWeap)
{
FloatingTextStringOnCreature("Remove Black Glaive is firing", OBJECT_SELF, FALSE);
RemoveSpecificProperty(oWeap, ITEM_PROPERTY_DAMAGE_BONUS, IP_CONST_DAMAGETYPE_FIRE, IP_CONST_DAMAGEBONUS_1d6, 1, "BlackGlaive", -1, DURATION_TYPE_TEMPORARY);
DeleteLocalInt(oWeap, "BlackGlaive");
}
void AddBlackGlaive(object oPC, object oWeap)
{
if(GetLocalInt(oWeap, "BlackGlaive") == TRUE) return;
FloatingTextStringOnCreature("Add Black Glaive is firing", OBJECT_SELF, FALSE);
RemoveBlackGlaive(oPC, oWeap);
DelayCommand(0.1, AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_COLD, IP_CONST_DAMAGEBONUS_1d6), oWeap, 999999.0));
SetLocalInt(oWeap, "BlackGlaive", TRUE);
}
*/
void Corrupt(object oPC, int iEquip)
{
object oItem = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC);
if(iEquip == 2)
{
oItem = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC);
if(GetLocalInt(oItem,"CorruptGlaive")) return ;
if(GetBaseItemType(oItem) == BASE_ITEM_HALBERD)
{
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyOnHitProps(IP_CONST_ONHIT_WOUNDING,IP_CONST_ONHIT_SAVEDC_20),oItem,9999.0);
SetLocalInt(oItem,"CorruptGlaive",1);
}
}
else if(iEquip == 1)
{
oItem = GetItemLastUnequipped();
if(GetBaseItemType(oItem) != BASE_ITEM_HALBERD) return;
if(GetLocalInt(oItem,"CorruptGlaive"))
RemoveSpecificProperty(oItem,ITEM_PROPERTY_ON_HIT_PROPERTIES,IP_CONST_ONHIT_WOUNDING,IP_CONST_ONHIT_SAVEDC_20,1,"",-1,DURATION_TYPE_TEMPORARY);
DeleteLocalInt(oItem, "CorruptGlaive");
}
else
{
oItem = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC);
if(GetLocalInt(oItem,"CorruptGlaive")) return ;
if(GetBaseItemType(oItem) == BASE_ITEM_HALBERD)
{
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyOnHitProps(IP_CONST_ONHIT_WOUNDING,IP_CONST_ONHIT_SAVEDC_20),oItem,9999.0);
SetLocalInt(oItem,"CorruptGlaive",1);
}
}
}
//Immunity to Disease - Blightblood
void BltBlood(object oPC, object oSkin)
{
if(GetLocalInt(oSkin, "BlightBlood") == 1)
return;
AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyImmunityMisc(IP_CONST_IMMUNITYMISC_DISEASE), oSkin);
SetLocalInt(oSkin, "BlightBlood", 1);
//SendMessageToPC(oPC, "Blightblood is firing");
}
//Plant Type Gained - Winterheart
void Winterheart(object oPC ,object oSkin )
{
if(GetLocalInt(oSkin, "WntrHeart") == 1)
return;
AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertySpellImmunitySpecific(IP_CONST_IMMUNITYSPELL_CHARM_PERSON),oSkin);
AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertySpellImmunitySpecific(IP_CONST_IMMUNITYSPELL_DOMINATE_PERSON),oSkin);
AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertySpellImmunitySpecific(IP_CONST_IMMUNITYSPELL_HOLD_PERSON),oSkin);
AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertySpellImmunitySpecific(IP_CONST_IMMUNITYSPELL_MASS_CHARM),oSkin);
AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertyImmunityMisc(IP_CONST_IMMUNITYMISC_MINDSPELLS), oSkin);
AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertyImmunityMisc(IP_CONST_IMMUNITYMISC_POISON), oSkin);
AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertyImmunityMisc(IP_CONST_IMMUNITYMISC_PARALYSIS), oSkin);
AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertyImmunityMisc(IP_CONST_IMMUNITYMISC_CRITICAL_HITS), oSkin);
AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertyImmunityMisc(IP_CONST_IMMUNITYMISC_DISEASE), oSkin);
AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertyImmunityMisc(IP_CONST_IMMUNITYMISC_BACKSTAB), oSkin);
SetLocalInt(oSkin, "WntrHeart",1);
SendMessageToPC(oPC, "Winterheart is Firing");
}
void main()
{
object oPC = OBJECT_SELF;
object oSkin = GetPCSkin(oPC);
object oWeap = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC);
object oUnequip = GetItemLastUnequipped();
int iEquip = GetLocalInt(oPC, "ONEQUIP");
/*
if(GetLevelByClass(CLASS_TYPE_BLIGHTLORD) >= 6)
{
if (iEquip == 1) RemoveBlackGlaive(oPC, oUnequip);
if (iEquip == 2) AddBlackGlaive(oPC, oWeap);
}
*/
SendMessageToPC(oPC, "Blightlord Main is Firing");
if(GetLevelByClass(CLASS_TYPE_BLIGHTLORD) >= 1)
BltBlood(oPC, oSkin);
if(GetLevelByClass(CLASS_TYPE_BLIGHTLORD) >= 6)
BLKGlaive(oPC, GetLocalInt(oPC,"ONEQUIP"));
if(GetLevelByClass(CLASS_TYPE_BLIGHTLORD) >= 8)
Corrupt(oPC, GetLocalInt(oPC,"ONEQUIP"));
if(GetLevelByClass(CLASS_TYPE_BLIGHTLORD) >= 10)
Winterheart(oPC, oSkin);
}