255 lines
9.5 KiB
Plaintext
255 lines
9.5 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Name x2_def_ondeath
|
|
//:: Copyright (c) 2001 Bioware Corp.
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
Default OnDeath script
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Keith Warner
|
|
//:: Created On: June 11/03
|
|
//:://////////////////////////////////////////////
|
|
#include "sql_db_partywide"
|
|
|
|
void main()
|
|
{
|
|
object oNPC = OBJECT_SELF;
|
|
object oKiller = GetLastKiller();
|
|
|
|
string sResRef = GetResRef(oNPC);
|
|
|
|
|
|
//:: Mark if the PC has killed various NPCs for use w/ NESS & quests
|
|
|
|
//: Special handling for Dung Monster
|
|
if (sResRef == "ra_dungmonster")
|
|
{
|
|
float fRejuveTime = HoursToSeconds(24) * d4(1);
|
|
|
|
SetLocalInt(GetModule(), "DungMonsterActive", FALSE);
|
|
SetLocalInt(GetModule(), "DungMonsterDead", TRUE);
|
|
ActionDoCommand(DelayCommand(fRejuveTime, SetLocalInt(GetModule(), "DungMonsterDead", FALSE)));
|
|
}
|
|
|
|
//: Fiilaar the wererat
|
|
if (sResRef == "npc_fiilaar01")
|
|
{
|
|
SQL_SetLocalIntOnAll(oKiller, "KilledFiilaar", 1);
|
|
}
|
|
|
|
|
|
//:: Makes sure armor's droppable flag is set to 0
|
|
SetDroppableFlag(GetItemInSlot(INVENTORY_SLOT_CHEST, OBJECT_SELF), 0);
|
|
|
|
if ((GetResRef(oNPC) == "ra_bandit001") ||
|
|
(GetResRef(oNPC) == "ra_brigand001") ||
|
|
(GetResRef(oNPC) == "ra_brigand002"))
|
|
{
|
|
object oArmor = GetItemInSlot(INVENTORY_SLOT_CHEST, oNPC);
|
|
object oWeapon = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oNPC);
|
|
object oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oNPC);
|
|
|
|
// Give a 3% chance to drop armor &/or equipped weapon
|
|
int bDroppableA = d100() > 97;
|
|
int bDroppableW = d100() > 97;
|
|
int bDroppableS = d100() > 97;
|
|
|
|
SetDroppableFlag(oArmor, bDroppableA);
|
|
SetDroppableFlag(oWeapon, bDroppableW);
|
|
SetDroppableFlag(oWeapon, bDroppableS);
|
|
|
|
}
|
|
|
|
int nVFX = GetLocalInt(OBJECT_SELF,"SpawnVFX");
|
|
if(nVFX)
|
|
{
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT,SupernaturalEffect(EffectVisualEffect(nVFX)),OBJECT_SELF);
|
|
}
|
|
int nFirey = GetLocalInt(OBJECT_SELF,"FIREY");
|
|
if (nFirey)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_INFERNO_NO_SOUND);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
|
|
int nShadowy = GetLocalInt(OBJECT_SELF,"SHADOWY");
|
|
if (nShadowy)
|
|
{
|
|
|
|
effect eVis = EffectVisualEffect(VFX_DUR_PROT_SHADOW_ARMOR);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
|
|
int nStony = GetLocalInt(OBJECT_SELF,"STONY");
|
|
if (nStony)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_PROT_STONESKIN);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
|
|
int nWoody = GetLocalInt(OBJECT_SELF,"WOODY");
|
|
if (nWoody)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_PROT_BARKSKIN);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
|
|
int nIcy = GetLocalInt(OBJECT_SELF,"ICY");
|
|
if (nIcy)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_ICESKIN);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
int nConcealed20 = GetLocalInt(OBJECT_SELF,"CONCEALED20");
|
|
if (nConcealed20)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_BLUR );
|
|
effect eConceal = EffectConcealment(20, 0);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
|
|
int nConcealed50 = GetLocalInt(OBJECT_SELF,"CONCEALED50");
|
|
if (nConcealed50)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_BLUR );
|
|
effect eConceal = EffectConcealment(50, 0);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
|
|
int nGlow = GetLocalInt (OBJECT_SELF,"GLOW_COLOR");
|
|
if (nGlow == 1)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_BLUE);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 2)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_BROWN);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 3)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_GREEN);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 4)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_GREY);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 5)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_BLUE);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 6)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_BROWN);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 7)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_GREEN);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 8)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_ORANGE);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 9)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_PURPLE);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 10)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_RED);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 11)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_YELLOW);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 12)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_ORANGE);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 13)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_PURPLE);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 14)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_RED);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
|
|
else if (nGlow == 15)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_WHITE);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 16)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_YELLOW);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
|
|
//:: Execute Default NPC OnDeath script
|
|
ExecuteScript("nw_c2_default7", OBJECT_SELF);
|
|
|
|
|
|
//:: Execute PRC NPC OnDeath script
|
|
ExecuteScript("prc_npc_death", OBJECT_SELF);
|
|
}
|