forked from Jaysyn/PRC8
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.
83 lines
2.8 KiB
Plaintext
83 lines
2.8 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Poison Weapon spellscript
|
|
//:: x2_s2_poisonwp
|
|
//:: Copyright (c) 2003 Bioware Corp.
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
Spell allows to add temporary poison properties
|
|
to a melee weapon or stack of arrows
|
|
|
|
The exact details of the poison are loaded from
|
|
a 2da defined in prc_x2_itemprop X2_IP_POSIONWEAPON_2DA
|
|
taken from the row that matches the last three letters
|
|
of GetTag(GetSpellCastItem())
|
|
|
|
Example: if an item is given the poison weapon property
|
|
and its tag ending on 004, the 4th row of the
|
|
2da will be used (1d2IntDmg DC14 18 seconds)
|
|
|
|
Rows 0 to 99 are bioware reserved
|
|
|
|
Non Assassins have a chance of poisoning themselves
|
|
when handling an item with this spell
|
|
|
|
Restrictions
|
|
... only weapons and ammo can be poisoned
|
|
... restricted to piercing / slashing damage
|
|
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Georg Zoeller
|
|
//:: Created On: 2003-05-11
|
|
//:: Updated On: 2003-08-21
|
|
//:://////////////////////////////////////////////
|
|
#include "prc_alterations"
|
|
#include "x2_inc_switches"
|
|
#include "prc_ipfeat_const"
|
|
#include "prc_class_const"
|
|
|
|
int GetIsSlashingWeapon(object oItem)
|
|
{
|
|
int iWeapType = StringToInt(Get2DACache("baseitems", "WeaponType", GetBaseItemType(oItem)));
|
|
|
|
if (iWeapType == 3 || iWeapType == 4) // slashing or slashing & piercing
|
|
return TRUE;
|
|
else
|
|
return FALSE;
|
|
}
|
|
|
|
void main()
|
|
{
|
|
|
|
object oItem = GetSpellCastItem();
|
|
object oPC = OBJECT_SELF;
|
|
object oTarget = PRCGetSpellTargetObject();
|
|
string sTag = GetTag(oItem);
|
|
|
|
if (oTarget == OBJECT_INVALID || GetObjectType(oTarget) != OBJECT_TYPE_ITEM)
|
|
{
|
|
FloatingTextStrRefOnCreature(83359,oPC); //"Invalid target "
|
|
return;
|
|
}
|
|
int nType = GetBaseItemType(oTarget);
|
|
if (!GetIsSlashingWeapon(oTarget))
|
|
{
|
|
FloatingTextStringOnCreature("You may only target slashing melee weapons.", oPC); //"Invalid target "
|
|
return;
|
|
}
|
|
|
|
float nDuration = HoursToSeconds(2);
|
|
|
|
itemproperty ip = ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_NIGHTSHADEPOISON,2);
|
|
IPSafeAddItemProperty(oTarget, ip,nDuration,X2_IP_ADDPROP_POLICY_KEEP_EXISTING,TRUE,TRUE);
|
|
IPSafeAddItemProperty(oTarget, ItemPropertyLimitUseByClass(CLASS_TYPE_NIGHTSHADE),nDuration,X2_IP_ADDPROP_POLICY_KEEP_EXISTING,TRUE,TRUE);
|
|
|
|
effect eVis = EffectVisualEffect(VFX_IMP_PULSE_NATURE);
|
|
|
|
FloatingTextStrRefOnCreature(83361,oPC); //"Weapon is coated with poison"
|
|
IPSafeAddItemProperty(oTarget, ItemPropertyVisualEffect(ITEM_VISUAL_ACID),nDuration,X2_IP_ADDPROP_POLICY_KEEP_EXISTING,TRUE,FALSE);
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, GetItemPossessor(oTarget));
|
|
|
|
|
|
}
|