323 lines
13 KiB
Plaintext
323 lines
13 KiB
Plaintext
//::///////////////////////////////////////////////////
|
|
//:: X0_O2_WEAPUNIQ.NSS
|
|
//:: OnOpened/OnDeath script for a treasure container.
|
|
//:: Treasure type: Any kind of weapon
|
|
//:: Treasure level: TREASURE_TYPE_UNIQUE
|
|
//::
|
|
//:: Copyright (c) 2002 Floodgate Entertainment
|
|
//:: Created By: Naomi Novik
|
|
//:: Created On: 11/21/2002
|
|
//::///////////////////////////////////////////////////
|
|
|
|
#include "x0_i0_treasure"
|
|
|
|
int iLocked =GetLocalInt(OBJECT_SELF, "iLocked");
|
|
int iLockDC =GetLocalInt(OBJECT_SELF, "iLockDC");
|
|
int iLockUnlockDC =GetLocalInt(OBJECT_SELF, "iLockUnlockDC");
|
|
int iLockKeyRequired =GetLocalInt(OBJECT_SELF, "iLockKeyRequired");
|
|
int iLockLockable=GetLocalInt(OBJECT_SELF, "iLockLockable");
|
|
string sLockKeyTag =GetLocalString(OBJECT_SELF, "sLockKeyTag");
|
|
|
|
|
|
int iIsTrapped = GetLocalInt(OBJECT_SELF, "iIsTrapped");
|
|
int iTrapActive = GetLocalInt(OBJECT_SELF, "iTrapActive");
|
|
int iTrapBaseType = GetLocalInt(OBJECT_SELF, "iTrapBaseType");
|
|
int iTrapDetectable = GetLocalInt(OBJECT_SELF, "iTrapDetectable");
|
|
int iTrapDetectDC = GetLocalInt(OBJECT_SELF, "iTrapDetectDC");
|
|
int iTrapDisarmable = GetLocalInt(OBJECT_SELF, "iTrapDisarmable");
|
|
int iTrapDisarmDC = GetLocalInt(OBJECT_SELF, "iTrapDisarmDC");
|
|
string sTrapKeyTag = GetLocalString(OBJECT_SELF, "sTrapKeyTag");
|
|
int iTrapOneShot = GetLocalInt(OBJECT_SELF, "iTrapOneShot");
|
|
int iTrapRecoverable = GetLocalInt(OBJECT_SELF, "iTrapRecoverable");
|
|
|
|
int iTresLowArmor = GetLocalInt(OBJECT_SELF, "iTresLowArmor");
|
|
int iTresLowClothing = GetLocalInt(OBJECT_SELF, "iTresLowClothing");
|
|
int iTresLowWeapon = GetLocalInt(OBJECT_SELF, "iTresLowWeapon");
|
|
int iTresLowWpnMelee = GetLocalInt(OBJECT_SELF, "iTresLowWpnMelee");
|
|
int iTresLowWpnNoAmmo = GetLocalInt(OBJECT_SELF, "iTresLowWpnNoAmmo");
|
|
int iTresLowWpnRanged = GetLocalInt(OBJECT_SELF, "iTresLowWpnRanged");
|
|
|
|
int iTresMedArmor = GetLocalInt(OBJECT_SELF, "iTresMedArmor");
|
|
int iTresMedClothing = GetLocalInt(OBJECT_SELF, "iTresMedClothing");
|
|
int iTresMedWeapon = GetLocalInt(OBJECT_SELF, "iTresMedWeapon");
|
|
int iTresMedWpnMelee = GetLocalInt(OBJECT_SELF, "iTresMedWpnMelee");
|
|
int iTresMedWpnNoAmmo = GetLocalInt(OBJECT_SELF, "iTresMedWpnNoAmmo");
|
|
int iTresMedWpnRanged = GetLocalInt(OBJECT_SELF, "iTresMedWpnRanged");
|
|
|
|
int iTresHighArmor = GetLocalInt(OBJECT_SELF, "iTresHighArmor");
|
|
int iTresHighClothing = GetLocalInt(OBJECT_SELF, "iTresHighClothing");
|
|
int iTresHighWeapon = GetLocalInt(OBJECT_SELF, "iTresHighWeapon");
|
|
int iTresHighWpnMelee = GetLocalInt(OBJECT_SELF, "iTresHighWpnMelee");
|
|
int iTresHighWpnNoAmmo = GetLocalInt(OBJECT_SELF, "iTresHighWpnNoAmmo");
|
|
int iTresHighWpnRanged = GetLocalInt(OBJECT_SELF, "iTresHighWpnRanged");
|
|
|
|
int iTresUniqArmor = GetLocalInt(OBJECT_SELF, "iTresUniqArmor");
|
|
int iTresUniqClothing = GetLocalInt(OBJECT_SELF, "iTresUniqClothing");
|
|
int iTresUniqWeapon = GetLocalInt(OBJECT_SELF, "iTresUniqWeapon");
|
|
int iTresUniqWpnMelee = GetLocalInt(OBJECT_SELF, "iTresUniqWpnMelee");
|
|
int iTresUniqWpnNoAmmo = GetLocalInt(OBJECT_SELF, "iTresUniqWpnNoAmmo");
|
|
int iTresUniqWpnRanged = GetLocalInt(OBJECT_SELF, "iTresUniqWpnRanged");
|
|
|
|
|
|
void ResetLockTrapInfo(object oObject)
|
|
{
|
|
SetLocked(oObject, iLocked);
|
|
SetLockLockDC(oObject, iLockDC);
|
|
SetLockUnlockDC(oObject, iLockUnlockDC);
|
|
SetLockKeyRequired(oObject, iLockKeyRequired);
|
|
SetLockKeyTag(oObject, sLockKeyTag);
|
|
SetLockLockable(oObject, iLockLockable);
|
|
|
|
if (iIsTrapped = TRUE)CreateTrapOnObject(iTrapBaseType, oObject);
|
|
SetTrapActive(oObject, iTrapActive);
|
|
SetTrapDetectable(oObject, iTrapDetectable);
|
|
SetTrapDetectDC(oObject, iTrapDetectDC);
|
|
SetTrapDetectDC(oObject, iTrapDetectDC);
|
|
SetTrapDisarmable(oObject, iTrapDisarmable);
|
|
SetTrapDisarmDC(oObject, iTrapDisarmDC);
|
|
SetTrapKeyTag(oObject, sTrapKeyTag);
|
|
SetTrapOneShot(oObject, iTrapOneShot);
|
|
SetTrapRecoverable(oObject, iTrapRecoverable);
|
|
|
|
SetLocalInt(oObject, "iTresLowArmor", iTresLowArmor);
|
|
SetLocalInt(oObject, "iTresLowClothing", iTresLowClothing);
|
|
SetLocalInt(oObject, "iTresLowWeapon", iTresLowWeapon);
|
|
SetLocalInt(oObject, "iTresLowWpnMelee", iTresLowWpnMelee);
|
|
SetLocalInt(oObject, "iTresLowWpnNoAmmo", iTresLowWpnNoAmmo);
|
|
SetLocalInt(oObject, "iTresLowWpnRanged", iTresLowWpnRanged);
|
|
|
|
SetLocalInt(oObject, "iTresMedArmor", iTresMedArmor);
|
|
SetLocalInt(oObject, "iTresMedClothing", iTresMedClothing);
|
|
SetLocalInt(oObject, "iTresMedWeapon", iTresMedWeapon);
|
|
SetLocalInt(oObject, "iTresMedWpnMelee", iTresMedWpnMelee);
|
|
SetLocalInt(oObject, "iTresMedWpnNoAmmo", iTresMedWpnNoAmmo);
|
|
SetLocalInt(oObject, "iTresMedWpnRanged", iTresMedWpnRanged);
|
|
|
|
SetLocalInt(oObject, "iTresHighArmor", iTresHighArmor);
|
|
SetLocalInt(oObject, "iTresHighClothing", iTresHighClothing);
|
|
SetLocalInt(oObject, "iTresHighWeapon", iTresHighWeapon);
|
|
SetLocalInt(oObject, "iTresHighWpnMelee", iTresHighWpnMelee);
|
|
SetLocalInt(oObject, "iTresHighWpnNoAmmo", iTresHighWpnNoAmmo);
|
|
SetLocalInt(oObject, "iTresHighWpnRanged", iTresHighWpnRanged);
|
|
|
|
SetLocalInt(oObject, "iTresUniqArmor", iTresUniqArmor);
|
|
SetLocalInt(oObject, "iTresUniqClothing", iTresUniqClothing);
|
|
SetLocalInt(oObject, "iTresUniqWeapon", iTresUniqWeapon);
|
|
SetLocalInt(oObject, "iTresUniqWpnMelee", iTresUniqWpnMelee);
|
|
SetLocalInt(oObject, "iTresUniqWpnNoAmmo", iTresUniqWpnNoAmmo);
|
|
SetLocalInt(oObject, "iTresUniqWpnRanged", iTresUniqWpnRanged);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void RespawnPLC(string sResRef, location lLocation, float fdelay)
|
|
{
|
|
object oObject = CreateObject(OBJECT_TYPE_PLACEABLE, sResRef, lLocation);
|
|
ResetLockTrapInfo(oObject);
|
|
ExecuteScript("ethsetuplocktrap", oObject);
|
|
SetLocalFloat(oObject, "fRespawnRate", fdelay);
|
|
return;
|
|
}
|
|
|
|
void main()
|
|
{
|
|
object oObject = OBJECT_SELF;
|
|
location lObject = GetLocation(OBJECT_SELF);
|
|
string sResRefObject = GetResRef(OBJECT_SELF);
|
|
string sTagObject = GetTag(OBJECT_SELF);
|
|
float fdelay = GetLocalFloat(OBJECT_SELF, "fRespawnRate");
|
|
if (FloatToInt(fdelay) == 0) fdelay = 3600.0;
|
|
|
|
|
|
if (GetCurrentHitPoints(OBJECT_SELF) > 0)
|
|
{
|
|
if (!GetLocalInt(OBJECT_SELF, "ntimecheck") == 1)
|
|
{
|
|
DelayCommand(fdelay, CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE));
|
|
SetLocalInt(OBJECT_SELF, "ntimecheck", 1);
|
|
DelayCommand(fdelay, SetLocalInt(OBJECT_SELF, "ntimecheck", 0));
|
|
DelayCommand(fdelay, ResetLockTrapInfo(OBJECT_SELF));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
AssignCommand(GetArea(OBJECT_SELF), DelayCommand(fdelay, RespawnPLC(sResRefObject, lObject, fdelay)));
|
|
}
|
|
if (CTG_GetIsTreasureGenerated(OBJECT_SELF) == FALSE)
|
|
{
|
|
int nCount = iTresLowArmor;
|
|
while (nCount > 0)
|
|
{
|
|
CTG_CreateSpecificBaseTypeTreasure(TREASURE_TYPE_LOW, GetLastOpener(), OBJECT_SELF, TREASURE_BASE_TYPE_ARMOR);
|
|
nCount = nCount - 1;
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE);
|
|
}
|
|
nCount = iTresLowClothing;
|
|
while (nCount > 0)
|
|
{
|
|
CTG_CreateSpecificBaseTypeTreasure(TREASURE_TYPE_LOW, GetLastOpener(), OBJECT_SELF, TREASURE_BASE_TYPE_CLOTHING);
|
|
nCount = nCount - 1;
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE);
|
|
}
|
|
nCount = iTresLowWeapon;
|
|
while (nCount > 0)
|
|
{
|
|
CTG_CreateSpecificBaseTypeTreasure(TREASURE_TYPE_LOW, GetLastOpener(), OBJECT_SELF, TREASURE_BASE_TYPE_WEAPON);
|
|
nCount = nCount - 1;
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE);
|
|
}
|
|
nCount = iTresLowWpnMelee;
|
|
while (nCount > 0)
|
|
{
|
|
CTG_CreateSpecificBaseTypeTreasure(TREASURE_TYPE_LOW, GetLastOpener(), OBJECT_SELF, TREASURE_BASE_TYPE_WEAPON_MELEE);
|
|
nCount = nCount - 1;
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE);
|
|
}
|
|
nCount = iTresLowWpnNoAmmo;
|
|
while (nCount > 0)
|
|
{
|
|
CTG_CreateSpecificBaseTypeTreasure(TREASURE_TYPE_LOW, GetLastOpener(), OBJECT_SELF, TREASURE_BASE_TYPE_WEAPON_NOAMMO);
|
|
nCount = nCount - 1;
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE);
|
|
}
|
|
nCount = iTresLowWpnRanged;
|
|
while (nCount > 0)
|
|
{
|
|
CTG_CreateSpecificBaseTypeTreasure(TREASURE_TYPE_LOW, GetLastOpener(), OBJECT_SELF, TREASURE_BASE_TYPE_WEAPON_RANGED);
|
|
nCount = nCount - 1;
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE);
|
|
}
|
|
nCount = iTresMedArmor;
|
|
while (nCount > 0)
|
|
{
|
|
CTG_CreateSpecificBaseTypeTreasure(TREASURE_TYPE_MED, GetLastOpener(), OBJECT_SELF, TREASURE_BASE_TYPE_ARMOR);
|
|
nCount = nCount - 1;
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE);
|
|
}
|
|
nCount = iTresMedClothing;
|
|
while (nCount > 0)
|
|
{
|
|
CTG_CreateSpecificBaseTypeTreasure(TREASURE_TYPE_MED, GetLastOpener(), OBJECT_SELF, TREASURE_BASE_TYPE_CLOTHING);
|
|
nCount = nCount - 1;
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE);
|
|
}
|
|
nCount = iTresMedWeapon;
|
|
while (nCount > 0)
|
|
{
|
|
CTG_CreateSpecificBaseTypeTreasure(TREASURE_TYPE_MED, GetLastOpener(), OBJECT_SELF, TREASURE_BASE_TYPE_WEAPON);
|
|
nCount = nCount - 1;
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE);
|
|
}
|
|
nCount = iTresMedWpnMelee;
|
|
while (nCount > 0)
|
|
{
|
|
CTG_CreateSpecificBaseTypeTreasure(TREASURE_TYPE_MED, GetLastOpener(), OBJECT_SELF, TREASURE_BASE_TYPE_WEAPON_MELEE);
|
|
nCount = nCount - 1;
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE);
|
|
}
|
|
nCount = iTresMedWpnNoAmmo;
|
|
while (nCount > 0)
|
|
{
|
|
CTG_CreateSpecificBaseTypeTreasure(TREASURE_TYPE_MED, GetLastOpener(), OBJECT_SELF, TREASURE_BASE_TYPE_WEAPON_NOAMMO);
|
|
nCount = nCount - 1;
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE);
|
|
}
|
|
nCount = iTresMedWpnRanged;
|
|
while (nCount > 0)
|
|
{
|
|
CTG_CreateSpecificBaseTypeTreasure(TREASURE_TYPE_MED, GetLastOpener(), OBJECT_SELF, TREASURE_BASE_TYPE_WEAPON_RANGED);
|
|
nCount = nCount - 1;
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE);
|
|
}
|
|
nCount = iTresHighArmor;
|
|
while (nCount > 0)
|
|
{
|
|
CTG_CreateSpecificBaseTypeTreasure(TREASURE_TYPE_HIGH, GetLastOpener(), OBJECT_SELF, TREASURE_BASE_TYPE_ARMOR);
|
|
nCount = nCount - 1;
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE);
|
|
}
|
|
nCount = iTresHighClothing;
|
|
while (nCount > 0)
|
|
{
|
|
CTG_CreateSpecificBaseTypeTreasure(TREASURE_TYPE_HIGH, GetLastOpener(), OBJECT_SELF, TREASURE_BASE_TYPE_CLOTHING);
|
|
nCount = nCount - 1;
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE);
|
|
}
|
|
nCount = iTresHighWeapon;
|
|
while (nCount > 0)
|
|
{
|
|
CTG_CreateSpecificBaseTypeTreasure(TREASURE_TYPE_HIGH, GetLastOpener(), OBJECT_SELF, TREASURE_BASE_TYPE_WEAPON);
|
|
nCount = nCount - 1;
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE);
|
|
}
|
|
nCount = iTresHighWpnMelee;
|
|
while (nCount > 0)
|
|
{
|
|
CTG_CreateSpecificBaseTypeTreasure(TREASURE_TYPE_HIGH, GetLastOpener(), OBJECT_SELF, TREASURE_BASE_TYPE_WEAPON_MELEE);
|
|
nCount = nCount - 1;
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE);
|
|
}
|
|
nCount = iTresHighWpnNoAmmo;
|
|
while (nCount > 0)
|
|
{
|
|
CTG_CreateSpecificBaseTypeTreasure(TREASURE_TYPE_HIGH, GetLastOpener(), OBJECT_SELF, TREASURE_BASE_TYPE_WEAPON_NOAMMO);
|
|
nCount = nCount - 1;
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE);
|
|
}
|
|
nCount = iTresHighWpnRanged;
|
|
while (nCount > 0)
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE);
|
|
{
|
|
CTG_CreateSpecificBaseTypeTreasure(TREASURE_TYPE_HIGH, GetLastOpener(), OBJECT_SELF, TREASURE_BASE_TYPE_WEAPON_RANGED);
|
|
nCount = nCount - 1;
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE);
|
|
}
|
|
nCount = iTresUniqArmor;
|
|
while (nCount > 0)
|
|
{
|
|
CTG_CreateSpecificBaseTypeTreasure(TREASURE_TYPE_UNIQUE, GetLastOpener(), OBJECT_SELF, TREASURE_BASE_TYPE_ARMOR);
|
|
nCount = nCount - 1;
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE);
|
|
}
|
|
nCount = iTresUniqClothing;
|
|
while (nCount > 0)
|
|
{
|
|
CTG_CreateSpecificBaseTypeTreasure(TREASURE_TYPE_UNIQUE, GetLastOpener(), OBJECT_SELF, TREASURE_BASE_TYPE_CLOTHING);
|
|
nCount = nCount - 1;
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE);
|
|
}
|
|
nCount = iTresUniqWeapon;
|
|
while (nCount > 0)
|
|
{
|
|
CTG_CreateSpecificBaseTypeTreasure(TREASURE_TYPE_UNIQUE, GetLastOpener(), OBJECT_SELF, TREASURE_BASE_TYPE_WEAPON);
|
|
nCount = nCount - 1;
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE);
|
|
}
|
|
nCount = iTresUniqWpnMelee;
|
|
while (nCount > 0)
|
|
{
|
|
CTG_CreateSpecificBaseTypeTreasure(TREASURE_TYPE_UNIQUE, GetLastOpener(), OBJECT_SELF, TREASURE_BASE_TYPE_WEAPON_MELEE);
|
|
nCount = nCount - 1;
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE);
|
|
}
|
|
nCount = iTresUniqWpnNoAmmo;
|
|
while (nCount > 0)
|
|
{
|
|
CTG_CreateSpecificBaseTypeTreasure(TREASURE_TYPE_UNIQUE, GetLastOpener(), OBJECT_SELF, TREASURE_BASE_TYPE_WEAPON_NOAMMO);
|
|
nCount = nCount - 1;
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE);
|
|
}
|
|
nCount = iTresUniqWpnRanged;
|
|
while (nCount > 0)
|
|
{
|
|
CTG_CreateSpecificBaseTypeTreasure(TREASURE_TYPE_UNIQUE, GetLastOpener(), OBJECT_SELF, TREASURE_BASE_TYPE_WEAPON_RANGED);
|
|
nCount = nCount - 1;
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, FALSE);
|
|
}
|
|
CTG_SetIsTreasureGenerated(OBJECT_SELF, TRUE);
|
|
}
|
|
}
|
|
|