PRC8/nwn/nwnprc/trunk/smp/phs_s_changestaf.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

93 lines
3.6 KiB
Plaintext

/*:://////////////////////////////////////////////
//:: Spell Name Changestaff
//:: Spell FileName PHS_S_Changestaf
//:://////////////////////////////////////////////
//:: In Game Spell desctiption
//:://////////////////////////////////////////////
Transmutation
Level: Drd 7
Components: V, S, F
Casting Time: 1 round
Range: Touch
Target: Your touched staff on the ground
Duration: 1 hour/level (D)
Saving Throw: None
Spell Resistance: No
You change a specially prepared quarterstaff into a Huge treantlike
creature, about 24 feet tall. When you plant the end of the staff in the
ground andcast the spell at it, your staff turns into a creature that looks
and fights just like a treant. The staff-treant defends you and obeys any
commands as a summoned creature would. However, it is by no means a true
treant; it cannot converse with actual treants or control trees. If the
staff-treant is reduced to 0 or fewer hit points, it crumbles to powder
and the staff is destroyed. Otherwise, the staff returns to its normal
form when the spell duration expires (or when the spell is dismissed), and
it can be used as the focus for another casting of the spell. The
staff-treant is always at full strength when created, despite any wounds it
may have incurred the last time it appeared.
Focus: The quarterstaff, which must be specially prepared, probably perchased beforehand.
//:://////////////////////////////////////////////
//:: Spell Effects Applied / Notes
//:://////////////////////////////////////////////
The AI scripts do the stuff for returning the staff. It is placed on the ground
when the creature is unsummoned/duration runs out.
If the creature is killed, it is destroyed as normal in the death script.
//:://////////////////////////////////////////////
//:: Created By: Jasperre
//::////////////////////////////////////////////*/
#include "PHS_INC_SPELLS"
void main()
{
// Spell Hook Check
if(!PHS_SpellHookCheck()) return;
// Declare major variables
object oCaster = OBJECT_SELF;
object oTarget = GetSpellTargetObject(); // Only item!
object oPossessor = GetItemPossessor(oTarget);
location lTarget = GetLocation(oTarget);
int nCasterLevel = PHS_GetCasterLevel();
int nMetaMagic = PHS_GetMetaMagicFeat();
// Get Duration
float fDuration = PHS_GetDuration(PHS_HOURS, nCasterLevel, nMetaMagic);
// Declare effects
effect eCessate = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
// Make sure we have targeted a prepared staff
// - Can be any staff with this local on it
if(GetLocalInt(oTarget, "PHS_CHANGESTAFF") != TRUE)
{
FloatingTextStringOnCreature("Only a specially prepared staff can be used for Changestaff.", oCaster, FALSE);
return;
}
// Make sure it is not in an inventory
if(GetIsObjectValid(oPossessor))
{
FloatingTextStringOnCreature("You must put the staff on the ground to cast Changestaff.", oCaster, FALSE);
return;
}
// We create the object, move the staff into its inventory, and add it as
// a henchman. You cannot look at any summoned creatures inventory - good!
object oTreant = CreateObject(OBJECT_TYPE_CREATURE, PHS_CREATURE_RESREF_CHANGESTAFF_TREANT, lTarget);
// Apply effects
PHS_ApplyDuration(oTarget, eCessate, fDuration);
// Set master
AddHenchman(oCaster, oTreant);
// Move the staff
object oStaff = CopyItem(oTarget, oTreant, TRUE);
// Set the staff so its easier to script.
SetLocalObject(oTreant, "PHS_CHANGESTAFF_STAFF", oStaff);
}