Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
114 lines
4.1 KiB
Plaintext
114 lines
4.1 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Poison System includes
|
|
//:: inc_poison
|
|
//::///////////////////////////////////////////////
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Ornedan
|
|
//:: Created On: 12.12.2004
|
|
//:: Updated On: 09.01.2005
|
|
//:://////////////////////////////////////////////
|
|
|
|
|
|
const int POISONED_WEAPON_CASTERLEVEL = 1;
|
|
|
|
const int STRREF_POISON_WORN_OFF = 16826227;
|
|
const int STRREF_POISON_APPLY_SUCCESS = 16826228;
|
|
const int STRREF_POISON_APPLY_FAILURE = 16826230;
|
|
const int STRREF_POISON_CLEAN_OFF_WEAPON = 16826229;
|
|
const int STRREF_POISON_NOT_VALID_FOR_WEAPON = 16826231;
|
|
const int STRREF_SHATTER_HARMLESS = 16826234;
|
|
const int STRREF_POISON_ITEM_USE_1 = 16826236;
|
|
const int STRREF_POISON_ITEM_USE_2 = 16826237;
|
|
const int STRREF_POISON_FOOD_USE_1 = 16826239;
|
|
const int STRREF_POISON_FOOD_USE_2 = 16826240;
|
|
const int STRREF_CLEAN_ITEM_SUCCESS = 16826242;
|
|
const int STRREF_CLEAN_ITEM_FAIL_1 = 16826243;
|
|
const int STRREF_CLEAN_ITEM_FAIL_2 = 16826244;
|
|
const int STRREF_INVALID_TARGET = 16826245;
|
|
const int STRREF_NOT_CONTACT_POISON = 16826246;
|
|
const int STRREF_TARGET_ALREADY_POISONED = 16826247;
|
|
const int STRREF_NOT_INGESTED_POISON = 16826251;
|
|
const int STRREF_TARGET_NOT_FOOD = 16826252;
|
|
const int STRREF_ACQUIRE_SPOT_SUCCESS1 = 16826253;
|
|
const int STRREF_ACQUIRE_SPOT_SUCCESS2 = 16826254;
|
|
const int STRREF_ONEQUIP_CLEAN_ITEM = 16826255;
|
|
|
|
const int POISON_TYPE_CONTACT = 0;
|
|
const int POISON_TYPE_INGESTED = 1;
|
|
const int POISON_TYPE_INHALED = 2;
|
|
const int POISON_TYPE_INJURY = 3;
|
|
|
|
/**
|
|
* Gets the type of the given poison.
|
|
*
|
|
* @param nPoison POISON_* constant
|
|
* @return POISON_TYPE_* constant
|
|
*/
|
|
int GetPoisonType(int nPoison);
|
|
|
|
|
|
// Poison removal handlers
|
|
void DoPoisonRemovalFromWeapon(object oWeapon);
|
|
void DoPoisonRemovalFromItem(object oItem);
|
|
|
|
|
|
//#include "inc_utility"
|
|
//#include "inc_poison_const"
|
|
#include "prc_inc_spells"
|
|
#include "prc_ipfeat_const"
|
|
|
|
/****************************************************
|
|
************** The implementations ******************
|
|
****************************************************/
|
|
|
|
int GetPoisonType(int nPoison)
|
|
{
|
|
return StringToInt(Get2DACache("poison", "Poison_Type", nPoison));
|
|
}
|
|
|
|
// Handles removing of itemproperties and locals on a poisoned weapon
|
|
void DoPoisonRemovalFromWeapon(object oWeapon)
|
|
{
|
|
DeleteLocalInt(oWeapon, "pois_wpn_idx");
|
|
DeleteLocalInt(oWeapon, "pois_wpn_uses");
|
|
RemoveEventScript(oWeapon, EVENT_ITEM_ONHIT, "poison_wpn_onhit", TRUE, TRUE);
|
|
|
|
// Remove the UniquePower only if poisoning the weapon added it.
|
|
if(GetLocalInt(oWeapon, "PoisonedWeapon_DoDelete"))
|
|
RemoveSpecificProperty(oWeapon,
|
|
ITEM_PROPERTY_ONHITCASTSPELL,
|
|
IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER,
|
|
0,
|
|
1,
|
|
"",
|
|
-1,
|
|
DURATION_TYPE_PERMANENT);
|
|
}
|
|
|
|
// Handles removing of itemproperties and locals on a poisoned item
|
|
void DoPoisonRemovalFromItem(object oItem)
|
|
{
|
|
DeleteLocalInt(oItem, "pois_itm_idx");
|
|
DeleteLocalInt(oItem, "pois_itm_uses");
|
|
DeleteLocalInt(oItem, "pois_itm_trap_dc");
|
|
DeleteLocalObject(oItem, "pois_itm_poisoner");
|
|
|
|
int nSafeCount = GetLocalInt(oItem, "pois_itm_safecount");
|
|
DeleteLocalInt(oItem, "pois_itm_safecount");
|
|
int i;
|
|
for(i = 1; i <= nSafeCount; i++)
|
|
DeleteLocalObject(oItem, "pois_itm_safe_" + IntToString(i));
|
|
|
|
RemoveSpecificProperty(oItem,
|
|
ITEM_PROPERTY_CAST_SPELL,
|
|
IP_CONST_CASTSPELL_CLEAN_POISON_OFF,
|
|
IP_CONST_CASTSPELL_NUMUSES_UNLIMITED_USE,
|
|
1,
|
|
"",
|
|
-1,
|
|
DURATION_TYPE_PERMANENT);
|
|
|
|
RemoveEventScript(oItem, EVENT_ITEM_ONACQUIREITEM, "poison_onaquire", TRUE, TRUE);
|
|
RemoveEventScript(oItem, EVENT_ITEM_ONPLAYEREQUIPITEM, "poison_onequip", TRUE, TRUE);
|
|
}
|