Initial commit

Adding all of the current content for Anphillia Unlimited.
This commit is contained in:
Jaysyn904
2024-01-04 07:49:38 -05:00
parent df18cd54c8
commit 28cdb617b3
12943 changed files with 9727121 additions and 0 deletions

View File

@@ -0,0 +1,187 @@
//::///////////////////////////////////////////////
//:: Wild Shape
//:: NW_S2_WildShape
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Allows the Druid to change into animal forms.
Updated: Sept 30 2003, Georg Z.
* Made Armor merge with druid to make forms
more useful.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Jan 22, 2002
//:://////////////////////////////////////////////
//:: Modified By: Deva Winblood
//:: Modified Date: January 15th-16th, 2008
//:://////////////////////////////////////////////
/*
Modified to insure no shapeshifting spells are castable upon
mounted targets. This prevents problems that can occur due
to dismounting after shape shifting, or other issues that can
occur due to preserved appearances getting out of synch.
This can additional check can be disabled by setting the variable
X3_NO_SHAPESHIFT_SPELL_CHECK to 1 on the module object. If this
variable is set then this script will function as it did prior to
this modification.
*/
#include "x2_inc_itemprop"
#include "x3_inc_horse"
#include "dlg_wand_const"
void main()
{
//Declare major variables
int nSpell = GetSpellId();
object oTarget = GetSpellTargetObject();
effect eVis = EffectVisualEffect(VFX_IMP_POLYMORPH);
effect ePoly;
int nPoly;
int nMetaMagic = GetMetaMagicFeat();
int nDuration = GetLevelByClass(CLASS_TYPE_DRUID);
if (!GetLocalInt(GetModule(),"X3_NO_SHAPESHIFT_SPELL_CHECK"))
{ // check to see if abort due to being mounted
if (HorseGetIsMounted(oTarget))
{ // abort
if (GetIsPC(oTarget)) FloatingTextStrRefOnCreature(111982,oTarget,FALSE);
return;
} // abort
} // check to see if abort due to being mounted
//Enter Metamagic conditions
if (nMetaMagic == METAMAGIC_EXTEND)
nDuration = nDuration *2; //Duration is +100%
object oShapeInfo = GetItemPossessedBy(OBJECT_SELF, "pc_actionwand");
//Determine Polymorph subradial type
if(nSpell == 401)
{
// Get the modified spell to cast, if there is one
nPoly = GetLocalInt(oShapeInfo, CS_DRUID_VAR_SHAPE + "_" + IntToString(CI_ACTION_DRUID_POLYMORPH_SET_BROWNBEAR)) - 1;
if (nPoly == -1)
{
nPoly = POLYMORPH_TYPE_BROWN_BEAR;
if (nDuration >= 12)
{
nPoly = POLYMORPH_TYPE_DIRE_BROWN_BEAR;
}
}
}
else if (nSpell == 402)
{
// Get the modified spell to cast, if there is one
nPoly = GetLocalInt(oShapeInfo, CS_DRUID_VAR_SHAPE + "_" + IntToString(CI_ACTION_DRUID_POLYMORPH_SET_PANTHER)) - 1;
if (nPoly == -1)
{
nPoly = POLYMORPH_TYPE_PANTHER;
if (nDuration >= 12)
{
nPoly = POLYMORPH_TYPE_DIRE_PANTHER;
}
}
}
else if (nSpell == 403)
{
// Get the modified spell to cast, if there is one
nPoly = GetLocalInt(oShapeInfo, CS_DRUID_VAR_SHAPE + "_" + IntToString(CI_ACTION_DRUID_POLYMORPH_SET_WOLF)) - 1;
if (nPoly == -1)
{
nPoly = POLYMORPH_TYPE_WOLF;
if (nDuration >= 12)
{
nPoly = POLYMORPH_TYPE_DIRE_WOLF;
}
}
}
else if (nSpell == 404)
{
// Get the modified spell to cast, if there is one
nPoly = GetLocalInt(oShapeInfo, CS_DRUID_VAR_SHAPE + "_" + IntToString(CI_ACTION_DRUID_POLYMORPH_SET_BOAR)) - 1;
if (nPoly == -1)
{
nPoly = POLYMORPH_TYPE_BOAR;
if (nDuration >= 12)
{
nPoly = POLYMORPH_TYPE_DIRE_BOAR;
}
}
}
else if (nSpell == 405)
{
// Get the modified spell to cast, if there is one
nPoly = GetLocalInt(oShapeInfo, CS_DRUID_VAR_SHAPE + "_" + IntToString(CI_ACTION_DRUID_POLYMORPH_SET_BADGER)) - 1;
if (nPoly == -1)
{
nPoly = POLYMORPH_TYPE_BADGER;
if (nDuration >= 12)
{
nPoly = POLYMORPH_TYPE_DIRE_BADGER;
}
}
}
ePoly = EffectPolymorph(nPoly);
ePoly = ExtraordinaryEffect(ePoly);
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_WILD_SHAPE, FALSE));
int bWeapon = StringToInt(Get2DAString("polymorph","MergeW",nPoly)) == 1;
int bArmor = StringToInt(Get2DAString("polymorph","MergeA",nPoly)) == 1;
int bItems = StringToInt(Get2DAString("polymorph","MergeI",nPoly)) == 1;
object oWeaponOld = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF);
object oArmorOld = GetItemInSlot(INVENTORY_SLOT_CHEST,OBJECT_SELF);
object oRing1Old = GetItemInSlot(INVENTORY_SLOT_LEFTRING,OBJECT_SELF);
object oRing2Old = GetItemInSlot(INVENTORY_SLOT_RIGHTRING,OBJECT_SELF);
object oAmuletOld = GetItemInSlot(INVENTORY_SLOT_NECK,OBJECT_SELF);
object oCloakOld = GetItemInSlot(INVENTORY_SLOT_CLOAK,OBJECT_SELF);
object oBootsOld = GetItemInSlot(INVENTORY_SLOT_BOOTS,OBJECT_SELF);
object oBeltOld = GetItemInSlot(INVENTORY_SLOT_BELT,OBJECT_SELF);
object oHelmetOld = GetItemInSlot(INVENTORY_SLOT_HEAD,OBJECT_SELF);
object oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,OBJECT_SELF);
if (GetIsObjectValid(oShield))
{
if (GetBaseItemType(oShield) !=BASE_ITEM_LARGESHIELD &&
GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD &&
GetBaseItemType(oShield) !=BASE_ITEM_TOWERSHIELD)
{
oShield = OBJECT_INVALID;
}
}
//Apply the VFX impact and effects
ClearAllActions(); // prevents an exploit
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePoly, OBJECT_SELF, HoursToSeconds(nDuration));
object oWeaponNew = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF);
object oArmorNew = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF);
if (bWeapon)
{
IPWildShapeCopyItemProperties(oWeaponOld,oWeaponNew, TRUE);
}
if (bArmor)
{
IPWildShapeCopyItemProperties(oShield,oArmorNew);
IPWildShapeCopyItemProperties(oHelmetOld,oArmorNew);
IPWildShapeCopyItemProperties(oArmorOld,oArmorNew);
}
if (bItems)
{
IPWildShapeCopyItemProperties(oRing1Old,oArmorNew);
IPWildShapeCopyItemProperties(oRing2Old,oArmorNew);
IPWildShapeCopyItemProperties(oAmuletOld,oArmorNew);
IPWildShapeCopyItemProperties(oCloakOld,oArmorNew);
IPWildShapeCopyItemProperties(oBootsOld,oArmorNew);
IPWildShapeCopyItemProperties(oBeltOld,oArmorNew);
}
}