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