78 lines
3.0 KiB
Plaintext
78 lines
3.0 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Name x2_def_ondamage
|
|
//:: Copyright (c) 2001 Bioware Corp.
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
Default OnDamaged script
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Keith Warner
|
|
//:: Created On: June 11/03
|
|
//:://////////////////////////////////////////////
|
|
#include "color_header"
|
|
|
|
void main()
|
|
{
|
|
object oDamager=GetLastDamager();
|
|
object oMe=OBJECT_SELF;
|
|
object oCaster=GetLastSpellCaster();
|
|
object oItem=GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oDamager);
|
|
int nType=GetBaseItemType(oItem);
|
|
int nReflex;
|
|
int nRoll;
|
|
object oDrop;
|
|
string sMsg;
|
|
effect eE;
|
|
if (nType!=BASE_ITEM_GRENADE&&nType!=BASE_ITEM_DART&&nType!=BASE_ITEM_LIGHTCROSSBOW&&nType!=BASE_ITEM_LONGBOW&&nType!=BASE_ITEM_SHORTBOW&&nType!=BASE_ITEM_HEAVYCROSSBOW&&nType!=BASE_ITEM_SHURIKEN&&nType!=BASE_ITEM_SLING&&nType!=BASE_ITEM_THROWINGAXE)
|
|
{ // not a missile weapon
|
|
if (GetDistanceBetween(oMe,oDamager)<3.0)
|
|
{ // in range
|
|
if (oItem!=OBJECT_INVALID&&oCaster!=oDamager)
|
|
{ // see if weapon stuck
|
|
nReflex=GetReflexSavingThrow(oDamager);
|
|
nRoll=d20();
|
|
if (nRoll+nReflex<14)
|
|
{ // failed
|
|
sMsg="These things are sticky!! You failed reflex roll "+IntToString(nRoll)+"+"+IntToString(nReflex)+"="+IntToString(nRoll+nReflex)+" which does not beat the DC14.";
|
|
sMsg=ColorRGBString(sMsg,6,3,3);
|
|
SendMessageToPC(oDamager,sMsg);
|
|
nRoll=GetItemCharges(oItem);
|
|
oDrop=CreateObject(OBJECT_TYPE_ITEM,GetResRef(oItem),GetLocation(oMe));
|
|
nReflex=GetItemCharges(oDrop);
|
|
if (nRoll!=nReflex) SetItemCharges(oDrop,nRoll);
|
|
DestroyObject(oItem);
|
|
} // failed
|
|
} // see if weapon stuck
|
|
else if (oItem==OBJECT_INVALID&&oCaster!=oDamager)
|
|
{ // see if grappled
|
|
nReflex=GetReflexSavingThrow(oDamager);
|
|
nRoll=d20();
|
|
if (nRoll+nReflex<14)
|
|
{ // failed
|
|
sMsg="These things are sticky!! You failed reflex roll "+IntToString(nRoll)+"+"+IntToString(nReflex)+"="+IntToString(nRoll+nReflex)+" which does not beat the DC14.";
|
|
sMsg=ColorRGBString(sMsg,6,3,3);
|
|
SendMessageToPC(oDamager,sMsg);
|
|
eE=EffectEntangle();
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eE,oDamager,12.0);
|
|
} // failed
|
|
} // see if grappled
|
|
} // in range
|
|
} // not a missile weapon
|
|
|
|
//--------------------------------------------------------------------------
|
|
// GZ: 2003-10-16
|
|
// Make Plot Creatures Ignore Attacks
|
|
//--------------------------------------------------------------------------
|
|
if (GetPlotFlag(OBJECT_SELF))
|
|
{
|
|
return;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------
|
|
// Execute old NWN default AI code
|
|
//--------------------------------------------------------------------------
|
|
|
|
|
|
ExecuteScript("nw_c2_default6", OBJECT_SELF);
|
|
}
|