Jaysyn904 d1c309ae63 Initial commit
Initial commit
2024-09-13 09:10:39 -04:00

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);
}
}