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.
165 lines
6.4 KiB
Plaintext
165 lines
6.4 KiB
Plaintext
/*:://////////////////////////////////////////////
|
|
//:: Spell Name Stone to Flesh
|
|
//:: Spell FileName PHS_S_StoneFlesh
|
|
//:://////////////////////////////////////////////
|
|
//:: In Game Spell desctiption
|
|
//:://////////////////////////////////////////////
|
|
Transmutation
|
|
Level: Sor/Wiz 6
|
|
Components: V, S, M
|
|
Casting Time: 1 standard action
|
|
Range: Medium (20M)
|
|
Target: One petrified creature or a cylinder of stone
|
|
Duration: Instantaneous
|
|
Saving Throw: Fortitude negates (object); see text
|
|
Spell Resistance: Yes
|
|
|
|
This spell restores a petrified creature to its normal state, restoring life
|
|
and goods. The creature must make a DC 15 Fortitude save to survive the
|
|
process. Any petrified creature, regardless of size, can be restored.
|
|
|
|
The spell also can convert a mass of stone into a fleshy substance. Such
|
|
flesh is inert and lacking a vital life force unless a life force or magical
|
|
energy is available. (For example, this spell would turn a stone golem into
|
|
a flesh golem, but an ordinary statue would become a corpse.) You can affect
|
|
an object that fits within a cylinder from 1 foot to 3 feet in diameter and
|
|
up to 10 feet long or a cylinder of up to those dimensions in a larger mass
|
|
of stone.
|
|
|
|
Material Component: A pinch of earth and a drop of blood.
|
|
//:://////////////////////////////////////////////
|
|
//:: Spell Effects Applied / Notes
|
|
//:://////////////////////////////////////////////
|
|
Easy to do:
|
|
|
|
- Restore any petrified creature
|
|
|
|
Not easy to do:
|
|
|
|
- Convert a stone golem to a flesh golem
|
|
- Convert stone to a fleshy substance.
|
|
|
|
Do the first, only, for now.
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Jasperre
|
|
//::////////////////////////////////////////////*/
|
|
|
|
#include "PHS_INC_SPELLS"
|
|
|
|
void main()
|
|
{
|
|
// Spell Hook Check.
|
|
if(!PHS_SpellHookCheck(PHS_SPELL_STONE_TO_FLESH)) return;
|
|
|
|
// Declare Major Variables
|
|
object oCaster = OBJECT_SELF;
|
|
object oTarget = GetSpellTargetObject();
|
|
int nCasterLevel = PHS_GetCasterLevel();
|
|
int nSpellSaveDC = PHS_GetSpellSaveDC();
|
|
int nType = GetObjectType(oTarget);
|
|
|
|
// Signal spell cast at
|
|
PHS_SignalSpellCastAt(oTarget, PHS_SPELL_STONE_TO_FLESH, FALSE);
|
|
|
|
// We restore them if it is a creature
|
|
if(nType == OBJECT_TYPE_CREATURE)
|
|
{
|
|
// Petrified? No SR checks
|
|
if(PHS_GetHasEffect(EFFECT_TYPE_PETRIFY, oTarget))
|
|
{
|
|
// DC 15 or death
|
|
if(!PHS_SavingThrow(SAVING_THROW_FORT, oTarget, 15))
|
|
{
|
|
// Death
|
|
PHS_ApplyDeathByDamage(oTarget);
|
|
}
|
|
else
|
|
{
|
|
// Removal of petrify
|
|
PHS_RemoveSpecificEffect(EFFECT_TYPE_PETRIFY, oTarget, SUBTYPE_IGNORE);
|
|
}
|
|
}
|
|
// Else, Golem?
|
|
// * Should work fine on PC's this method.
|
|
else if(GetAppearanceType(oTarget) == APPEARANCE_TYPE_GOLEM_STONE)
|
|
{
|
|
// Spell resistance checks
|
|
if(!PHS_SpellResistanceCheck(oCaster, oTarget))
|
|
{
|
|
// Fortitude negates
|
|
if(!PHS_SavingThrow(SAVING_THROW_FORT, oTarget, nSpellSaveDC))
|
|
{
|
|
// Turn to flesh golem
|
|
SetCreatureAppearanceType(oTarget, APPEARANCE_TYPE_GOLEM_FLESH);
|
|
|
|
// Destroy stone golem hide properties
|
|
object oHide = GetItemInSlot(INVENTORY_SLOT_CARMOUR, oTarget);
|
|
|
|
// Destroy them
|
|
IPRemoveAllItemProperties(oHide, DURATION_TYPE_PERMANENT);
|
|
/* // Add the flesh golem ones.
|
|
+1 Soak 15 damage
|
|
50% fire vunrability
|
|
Immunity:
|
|
Critical hits
|
|
Death magic
|
|
Disease
|
|
Level/Ability Drain
|
|
Mind-affecting
|
|
Paralysis
|
|
Poison
|
|
Sneak attack */
|
|
// Add those above
|
|
itemproperty IP_Add = ItemPropertyDamageReduction(IP_CONST_DAMAGEREDUCTION_1, IP_CONST_DAMAGESOAK_15_HP);
|
|
AddItemProperty(DURATION_TYPE_PERMANENT, IP_Add, oHide);
|
|
IP_Add = ItemPropertyDamageVulnerability(IP_CONST_DAMAGETYPE_FIRE, IP_CONST_DAMAGEVULNERABILITY_50_PERCENT);
|
|
AddItemProperty(DURATION_TYPE_PERMANENT, IP_Add, oHide);
|
|
IP_Add = ItemPropertyImmunityMisc(IP_CONST_IMMUNITYMISC_CRITICAL_HITS);
|
|
AddItemProperty(DURATION_TYPE_PERMANENT, IP_Add, oHide);
|
|
IP_Add = ItemPropertyImmunityMisc(IP_CONST_IMMUNITYMISC_DEATH_MAGIC);
|
|
AddItemProperty(DURATION_TYPE_PERMANENT, IP_Add, oHide);
|
|
IP_Add = ItemPropertyImmunityMisc(IP_CONST_IMMUNITYMISC_DISEASE);
|
|
AddItemProperty(DURATION_TYPE_PERMANENT, IP_Add, oHide);
|
|
IP_Add = ItemPropertyImmunityMisc(IP_CONST_IMMUNITYMISC_LEVEL_ABIL_DRAIN);
|
|
AddItemProperty(DURATION_TYPE_PERMANENT, IP_Add, oHide);
|
|
IP_Add = ItemPropertyImmunityMisc(IP_CONST_IMMUNITYMISC_MINDSPELLS);
|
|
AddItemProperty(DURATION_TYPE_PERMANENT, IP_Add, oHide);
|
|
IP_Add = ItemPropertyImmunityMisc(IP_CONST_IMMUNITYMISC_POISON);
|
|
AddItemProperty(DURATION_TYPE_PERMANENT, IP_Add, oHide);
|
|
IP_Add = ItemPropertyImmunityMisc(IP_CONST_IMMUNITYMISC_BACKSTAB);
|
|
AddItemProperty(DURATION_TYPE_PERMANENT, IP_Add, oHide);
|
|
|
|
// Change all attacks to 2d8 damage
|
|
int nCnt;
|
|
object oClaw;
|
|
for(nCnt = INVENTORY_SLOT_CWEAPON_L; nCnt <= INVENTORY_SLOT_CWEAPON_B; nCnt++)
|
|
{
|
|
// Get claw (or punch or whatever)
|
|
oClaw = GetItemInSlot(nCnt, oTarget);
|
|
|
|
// Remove old ones
|
|
IPRemoveAllItemProperties(oClaw, DURATION_TYPE_PERMANENT);
|
|
|
|
// 2d8 damage, nothing else
|
|
IP_Add = ItemPropertyMonsterDamage(IP_CONST_MONSTERDAMAGE_2d8);
|
|
AddItemProperty(DURATION_TYPE_PERMANENT, IP_Add, oClaw);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// Turn some stone...to flesh...
|
|
// Placables ETC.
|
|
// Spell resistance checks
|
|
if(!PHS_SpellResistanceCheck(oCaster, oTarget))
|
|
{
|
|
// Fortitude negates
|
|
if(!PHS_SavingThrow(SAVING_THROW_FORT, oTarget, nSpellSaveDC))
|
|
{
|
|
}
|
|
}
|
|
}
|
|
}
|