PRC8/nwn/nwnprc/trunk/scripts/poison_cleanitem.nss
Jaysyn904 6ec137a24e Updated AMS marker feats
Updated AMS marker feats.  Removed arcane & divine marker feats.  Updated Dread Necromancer for epic progression. Updated weapon baseitem models.  Updated new weapons for crafting & npc equip.
 Updated prefix.  Updated release archive.
2024-02-11 14:01:05 -05:00

69 lines
2.3 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Clean Off Poison spellscript
//:: poison_cleanitem
//::///////////////////////////////////////////////
/*
Removes contact poison, all relevant locals
and this spell from the item casting this spell.
This spell is attached to any items that are
poisoned.
Any character other than the original poisoner
using this will have to roll Disable Traps
versus a DC stored on the item. On failure,
they get poisoned.
Either way, the removal happens.
Locals removed, integers:
pois_itm_idx
pois_itm_uses
pois_itm_trap_dc
pois_itm_safecount
Locals removed, objects:
pois_itm_poisoner
pois_itm_safe_X , where X is from 1 to pois_itm_safecount
*/
//:://////////////////////////////////////////////
//:: Created By: Ornedan
//:: Created On: 10.01.2005
//:://////////////////////////////////////////////
#include "prc_alterations"
#include "inc_poison"
#include "prc_inc_spells"
void main()
{
object oItem = GetSpellCastItem();
object oPC = OBJECT_SELF;
if(!(oPC == GetLocalObject(oItem, "pois_itm_poisoner")))
{
int nDC = GetLocalInt(oItem, "pois_itm_trap_dc");
if(!GetIsSkillSuccessful(oPC, SKILL_DISABLE_TRAP, nDC))
{
// Apply the poison to the cleaner
int nPoisonIdx = GetLocalInt(oItem, "pois_itm_idx");
effect ePoison = EffectPoison(nPoisonIdx);
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoison, oPC, 0.0f, FALSE);
// Inform the cleaner of the fact
SendMessageToPC(oPC,
GetStringByStrRef(STRREF_CLEAN_ITEM_FAIL_1) + " " +
GetName(oItem) + " " +
GetStringByStrRef(STRREF_CLEAN_ITEM_FAIL_2)
); // You slip while cleaning xxxx and touch the poison.
}// end if - Disable Trap check failed
}// end if - Handle cleaner != poisoner
// Remove the poison and inform player
DoPoisonRemovalFromItem(oItem);
SendMessageToPC(oPC,
GetStringByStrRef(STRREF_CLEAN_ITEM_SUCCESS) + " " +
GetName(oItem) + "."
); // You remove all traces of poison off of xxxx.
}