#include "sy_t_tclass" //:://///////////////////////////////////////////// //:: sy_t_genloot.nss //:: Copyright (c) 2001 Bioware Corp. //::////////////////////////////////////////////// //::////////////////////////////////////////////// //:: Created By: Syrsuro //:: Created On: November - May //::////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// ///////This script is intended to be used as the OnDeath and OnOpen script of a container. ///////In addition to sy_t_tlass, the files sy_t_magic.nss and sy_t_mundane are necessary. /////////////////////////////////////////////////////////////////////////////////////////// //Declarations/////////////////////////// object GetLastOpener(); void ShoutDisturbed(); //////////////////////////////////////// //This script is supposed to create an average treasure. Thus, the modifier is set to 5. //This modifier is passed to the other scripts and used to determine the quantity of gold and //the frequency of gems. /////////////////////////////////////////////////////////////////////////////////// ////////This script takes the Level of the PC who opens or destroys the container and ////////uses this to scale the treasure off of. If you want to pre-set the CR of the ////////encounter/ container; you can set nCR directly. //////////////////////////////////////////////////////////////////////////////////// //This script generates a POOR treasure. The odds of a magic item, the amount of //cash found and the likelihood of finding gems is reduced relative to a standard treasure. void main() { int nTModifier = 2; //Default values are 2 (poor), 6 (standard) and 10 (rich). if (GetLocalInt(OBJECT_SELF,"NW_DO_ONCE") != 0) { return; } object oLastOpener = GetLastOpener(); int nCR = GetHitDice(oLastOpener); /// Sets the CR = level of opener.. //nCR = 20; /// Sets the CR as a pre-set value. TreasureChance(OBJECT_SELF, nCR, nTModifier); /// The Treasure Generation Function (defined in sy_t_tcass) SetLocalInt(OBJECT_SELF,"NW_DO_ONCE",1); ShoutDisturbed(); /// Should make local NPCs of the same faction as the chest hostile. } ///////////////////////////////////////////////////////////////////////////////// // * GET OPENER ////////////////////////////////////////////////////////////// // * Returns the object that either last opened the container or destroyed it object GetLastOpener() { if (GetIsObjectValid(GetLastOpenedBy()) == TRUE) { return GetLastOpenedBy(); } else if (GetIsObjectValid(GetLastKiller()) == TRUE) { return GetLastKiller(); } return OBJECT_INVALID; } /////////////////////////////////////////////////////////////////////////////// //:://///////////////////////////////////////////// //:: ShoutDisturbed //:: Copyright (c) 2001 Bioware Corp. //::////////////////////////////////////////////// //::////////////////////////////////////////////// //:: Created By:BioWare //:: Created On: //::////////////////////////////////////////////// // * Container shouts if disturbed void ShoutDisturbed() { if (GetIsDead(OBJECT_SELF) == TRUE) { object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF), TRUE, OBJECT_TYPE_CREATURE); //Cycle through the targets within the spell shape until an invalid object is captured. while (GetIsObjectValid(oTarget)) { if (GetFactionEqual(oTarget, OBJECT_SELF) == TRUE) { // * Make anyone who is a member of my faction hostile if I am violated object oAttacker = GetLastAttacker(); SetIsTemporaryEnemy(oAttacker,oTarget); AssignCommand(oTarget, ActionAttack(oAttacker)); } oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF), TRUE, OBJECT_TYPE_CREATURE); } } else (GetIsOpen(OBJECT_SELF) == TRUE); { object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF), TRUE, OBJECT_TYPE_CREATURE); //Cycle through the targets within the spell shape until an invalid object is captured. while (GetIsObjectValid(oTarget)) { if (GetFactionEqual(oTarget, OBJECT_SELF) == TRUE) { // * Make anyone who is a member of my faction hostile if I am violated object oAttacker = GetLastOpener(); SetIsTemporaryEnemy(oAttacker,oTarget); AssignCommand(oTarget, ActionAttack(oAttacker)); } oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF), TRUE, OBJECT_TYPE_CREATURE); } } } //////////////////////////////////////////////////////////////////////////////////////////////