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.
156 lines
5.3 KiB
Plaintext
156 lines
5.3 KiB
Plaintext
/*:://////////////////////////////////////////////
|
|
//:: Spell Name Dragonblast
|
|
//:: Spell FileName XXX_S_Dragonblast
|
|
//:://////////////////////////////////////////////
|
|
//:: In Game Spell desctiption
|
|
//:://////////////////////////////////////////////
|
|
Evocation [See Text]
|
|
Level: Sor/Wiz 5
|
|
Components: V, S, M
|
|
Casting Time: 1 standard action
|
|
Range: Medium (20M)
|
|
Target: One creature or object
|
|
Duration: Instantaneous
|
|
Saving Throw: Reflex Partial (see text)
|
|
Spell Resistance: Yes
|
|
Source: Various (IceFractal)
|
|
|
|
A glowing, somewhat blurred image of dragon flies from your outstretched
|
|
hand, attacking the creature or object targeted with two claws (1d6 slashing
|
|
damage each), a bite (2d6 piercing damage), two wings (1d6 bludgeoning
|
|
damage each), a tail slap (2d6 bludgeoning damage), and a breath weapon
|
|
(1d6 + 1d6/caster level above 10th, maximum 10d6 at level 20) energy damage,
|
|
type of damage is chosen by caster. The damage type chosen by the caster
|
|
makes the spell a spell of that element, eg. fire damage makes it a [Fire]
|
|
spell. The breath weapon does normal energy damage and allows a reflex save
|
|
for half. All of the attacks hit automatically, there is no attack roll by
|
|
the caster required.
|
|
|
|
Arcane Material Component: A dragon scale.
|
|
//:://////////////////////////////////////////////
|
|
//:: Spell Effects Applied / Notes
|
|
//:://////////////////////////////////////////////
|
|
Although it is easy to script, the VFX might be harder - although it would
|
|
be insannneeellyyy cool to have! A projectile and a proper impact probably.
|
|
|
|
It is quite a hard spell to work out, but does:
|
|
x2 1d6 slashing
|
|
2d6 Piercing
|
|
2x 1d6 bludgeoning
|
|
2d6 bludgeoning
|
|
|
|
And the breath weapon, at 1d6+.
|
|
|
|
Meaning 9d6 minimum, 19d6 maximum.
|
|
|
|
Is this unbalanced? its easily changed!
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Jasperre
|
|
//::////////////////////////////////////////////*/
|
|
|
|
#include "SMP_INC_SPELLS"
|
|
|
|
void main()
|
|
{
|
|
// Spell Hook Check.
|
|
if(!SMP_SpellHookCheck(SMP_SPELL_DRAGONBLAST)) return;
|
|
|
|
// Declare major variables
|
|
object oCaster = OBJECT_SELF;
|
|
object oTarget = GetSpellTargetObject();
|
|
int nCasterLevel = SMP_GetCasterLevel();
|
|
int nMetaMagic = SMP_GetMetaMagicFeat();
|
|
int nSpellSaveDC = SMP_GetSpellSaveDC();
|
|
int nDam;
|
|
float fDelay;
|
|
|
|
// Get breath weapon damage, and thusly the save type
|
|
int nBreathWeaponDamage = GetLocalInt(oCaster, "SMP_SPELL_DRAGONBLAST_TYPE");
|
|
|
|
// Default to fire
|
|
int nDamageType = DAMAGE_TYPE_FIRE;
|
|
int nSaveType = SAVING_THROW_TYPE_FIRE;
|
|
|
|
// Fire
|
|
if(nBreathWeaponDamage == 0)
|
|
{
|
|
nDamageType = DAMAGE_TYPE_FIRE;
|
|
nSaveType = SAVING_THROW_TYPE_FIRE;
|
|
}
|
|
// Cold
|
|
else if(nBreathWeaponDamage == 1)
|
|
{
|
|
nDamageType = DAMAGE_TYPE_COLD;
|
|
nSaveType = SAVING_THROW_TYPE_COLD;
|
|
}
|
|
// Sonic
|
|
else if(nBreathWeaponDamage == 2)
|
|
{
|
|
nDamageType = DAMAGE_TYPE_SONIC;
|
|
nSaveType = SAVING_THROW_TYPE_SONIC;
|
|
}
|
|
// Acid
|
|
else if(nBreathWeaponDamage == 3)
|
|
{
|
|
nDamageType = DAMAGE_TYPE_ACID;
|
|
nSaveType = SAVING_THROW_TYPE_ACID;
|
|
}
|
|
// Electrical
|
|
else if(nBreathWeaponDamage == 4)
|
|
{
|
|
nDamageType = DAMAGE_TYPE_ELECTRICAL;
|
|
nSaveType = SAVING_THROW_TYPE_ELECTRICITY;
|
|
}
|
|
|
|
// Get the amount of d6's for the breath weapon
|
|
int nBreathDice = SMP_LimitInteger(nCasterLevel - 10, 10);
|
|
|
|
// Delcare effects
|
|
effect eVis = EffectVisualEffect(SMP_VFX_IMP_DRAGONBLAST);
|
|
|
|
|
|
// PvP check
|
|
if(!GetIsReactionTypeFriendly(oTarget))
|
|
{
|
|
// Signal event
|
|
SMP_SignalSpellCastAt(oTarget, SMP_SPELL_DRAGONBLAST);
|
|
|
|
|
|
// SR Resistance
|
|
if(!SMP_SpellResistanceCheck(oCaster, oTarget))
|
|
{
|
|
// Do two claws (1d6 slashing damage each)
|
|
nDam = SMP_MaximizeOrEmpower(6, 1, nMetaMagic);
|
|
SMP_ApplyDamageToObject(oTarget, nDam, DAMAGE_TYPE_SLASHING);
|
|
nDam = SMP_MaximizeOrEmpower(6, 1, nMetaMagic);
|
|
SMP_ApplyDamageToObject(oTarget, nDam, DAMAGE_TYPE_SLASHING);
|
|
|
|
// a bite (2d6 piercing damage)
|
|
nDam = SMP_MaximizeOrEmpower(6, 2, nMetaMagic);
|
|
DelayCommand(0.1, SMP_ApplyDamageToObject(oTarget, nDam, DAMAGE_TYPE_PIERCING));
|
|
|
|
// two wings (1d6 bludgeoning damage each)
|
|
nDam = SMP_MaximizeOrEmpower(6, 1, nMetaMagic);
|
|
DelayCommand(0.2, SMP_ApplyDamageToObject(oTarget, nDam, DAMAGE_TYPE_BLUDGEONING));
|
|
nDam = SMP_MaximizeOrEmpower(6, 1, nMetaMagic);
|
|
DelayCommand(0.2, SMP_ApplyDamageToObject(oTarget, nDam, DAMAGE_TYPE_BLUDGEONING));
|
|
|
|
// a tail slap (2d6 bludgeoning damage)
|
|
nDam = SMP_MaximizeOrEmpower(6, 2, nMetaMagic);
|
|
DelayCommand(0.3, SMP_ApplyDamageToObject(oTarget, nDam, DAMAGE_TYPE_BLUDGEONING));
|
|
|
|
// and a breath weapon (1d6 + 1d6/caster level above 10th,
|
|
// maximum 10d6 at level 20) energy damage
|
|
nDam = SMP_MaximizeOrEmpower(6, nBreathDice, nMetaMagic);
|
|
|
|
// Reflex save
|
|
nDam = SMP_GetAdjustedDamage( SAVING_THROW_REFLEX, nDam, oTarget, nSpellSaveDC, nSaveType, oCaster, 0.4);
|
|
|
|
if(nDam > 0)
|
|
{
|
|
DelayCommand(0.4, SMP_ApplyDamageToObject(oTarget, nDam, nDamageType));
|
|
}
|
|
}
|
|
}
|
|
}
|