Battledale_PRC8/_module/nss/tri_towaopal.nss
Jaysyn904 7b9e44ebbb Initial upload
Initial upload.  PRC8 has been added.  Module compiles, PRC's default AI & treasure scripts have been integrated.  Started work on top hak for SLA / Ability / Scripting modifications.
2024-03-11 23:44:08 -04:00

99 lines
2.9 KiB
Plaintext

void main()
{
//Checks for a gem, if the right gem, kill the guardians and opens doors
//By Trito
object oObject=GetInventoryDisturbItem();
// Run this when something is added to the inventory
if (GetInventoryDisturbType()==INVENTORY_DISTURB_TYPE_ADDED)
{
// The Item placed in it is NOT the right object
// .. so tells the PC
if ((GetTag(oObject)!="tri_toweropal"))
{
ActionSpeakString("Nothing Happens");
}
else
{
// The item placed in the inventory IS the right gem
if ((GetTag(oObject)=="tri_toweropal"))
{
SetPlotFlag(oObject, FALSE);
DestroyObject(oObject);
effect eExplode = EffectVisualEffect(VFX_FNF_STRIKE_HOLY);
location lTarget = GetLocation(OBJECT_SELF);
SpeakString("The opal shatters and you hear doors unlock at a distance", TALKVOLUME_TALK);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget);
effect eDam;
effect eRay;
effect eVis = EffectVisualEffect(VFX_IMP_HOLY_AID);
object oTarget;
int nDamage;
nDamage=400;
oTarget = GetObjectByTag("tri_battlhorror" );
eDam = EffectDamage(nDamage, DAMAGE_TYPE_MAGICAL);
eRay = EffectBeam(VFX_BEAM_HOLY, OBJECT_SELF, BODY_NODE_HAND);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRay, oTarget, 1.7);
DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
//get the second guardian and kill it
oTarget = GetObjectByTag("tri_battlhorror2" );
eDam = EffectDamage(nDamage, DAMAGE_TYPE_MAGICAL);
eRay = EffectBeam(VFX_BEAM_HOLY, OBJECT_SELF, BODY_NODE_HAND);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRay, oTarget, 1.7);
DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
//get the third guardian and kill it
oTarget = GetObjectByTag("tri_battlhorror3" );
eDam = EffectDamage(nDamage, DAMAGE_TYPE_MAGICAL);
eRay = EffectBeam(VFX_BEAM_HOLY, OBJECT_SELF, BODY_NODE_HAND);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRay, oTarget, 1.7);
DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
//get the fourth guardian and kill it
oTarget = GetObjectByTag("tri_battlhorror4" );
eDam = EffectDamage(nDamage, DAMAGE_TYPE_MAGICAL);
eRay = EffectBeam(VFX_BEAM_HOLY, OBJECT_SELF, BODY_NODE_HAND);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRay, oTarget, 1.7);
DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
//gets doors and unlock them
object oDoor = GetObjectByTag("tri_zhentlvl1d1");
object jDoor = GetObjectByTag("tri_zhentlvl1d2");
SetLocked(oDoor, 0);
SetLocked(jDoor, 0);
DelayCommand(100.0, SetLocked(oDoor, TRUE));
DelayCommand(100.0, SetLocked(jDoor, TRUE));
}
}
}
}