PRC8/nwn/trunk/scripts/poison_cleanitem.nss
Jaysyn904 5914ed2ab5 Updated Release Archive
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.
2023-08-22 10:00:21 -04: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.
}