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.
		
			
				
	
	
		
			137 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			137 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| //::///////////////////////////////////////////////
 | |
| //:: x2_s0_cureother
 | |
| //:: Copyright (c) 2001 Bioware Corp.
 | |
| //:://////////////////////////////////////////////
 | |
| /*
 | |
|     Cure Critical Wounds on Others - causes 5 points
 | |
|     of damage to the spell caster as well.
 | |
| */
 | |
| //:://////////////////////////////////////////////
 | |
| //:: Created By: Keith Warner
 | |
| //:: Created On: Jan 2/03
 | |
| //:://////////////////////////////////////////////
 | |
| 
 | |
| //:: modified by mr_bumpkin Dec 4, 2003 for prc stuff
 | |
| 
 | |
| #include "prc_inc_sp_tch"
 | |
| #include "prc_inc_function"
 | |
| #include "prc_add_spell_dc"
 | |
| 
 | |
| void main()
 | |
| {
 | |
| DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
 | |
| SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_CONJURATION);
 | |
| 
 | |
|     /*
 | |
|       Spellcast Hook Code
 | |
|       Added 2003-07-07 by Georg Zoeller
 | |
|       If you want to make changes to all spells,
 | |
|       check x2_inc_spellhook.nss to find out more
 | |
| 
 | |
|     */
 | |
| 
 | |
|     if (!X2PreSpellCastCode())
 | |
|     {
 | |
|     // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
 | |
|         return;
 | |
|     }
 | |
| 
 | |
|     // End of Spell Cast Hook
 | |
| 
 | |
| 
 | |
|     //Declare major variables
 | |
|     object oTarget = PRCGetSpellTargetObject();
 | |
|     int nHeal;
 | |
|     int nDamage = d8(4);
 | |
|     int nMetaMagic = PRCGetMetaMagicFeat();
 | |
|     effect eVis = EffectVisualEffect(VFX_IMP_SUNSTRIKE);
 | |
|     effect eVis2 = EffectVisualEffect(VFX_IMP_SUPER_HEROISM);
 | |
|     effect eHeal, eDam;
 | |
|     int CasterLvl = PRCGetCasterLevel(OBJECT_SELF);
 | |
| 
 | |
|     int nExtraDamage = CasterLvl; // * figure out the bonus damage
 | |
|     if (nExtraDamage > 20)
 | |
|     {
 | |
|         nExtraDamage = 20;
 | |
|     }
 | |
|     // * if low or normal difficulty is treated as MAXIMIZED
 | |
|     if(GetIsPC(oTarget) && GetGameDifficulty() < GAME_DIFFICULTY_CORE_RULES)
 | |
|     {
 | |
|         nDamage = 32 + nExtraDamage;
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|         nDamage = nDamage + nExtraDamage;
 | |
|     }
 | |
| 
 | |
|     CasterLvl +=SPGetPenetr();
 | |
|     //Make metamagic checks
 | |
|     int iBlastFaith = BlastInfidelOrFaithHeal(OBJECT_SELF, oTarget, DAMAGE_TYPE_POSITIVE, TRUE);
 | |
|     if ((nMetaMagic & METAMAGIC_MAXIMIZE) || iBlastFaith)
 | |
|     {
 | |
|         nDamage = 32 + nExtraDamage;
 | |
|         // * if low or normal difficulty then MAXMIZED is doubled.
 | |
|         if(GetIsPC(OBJECT_SELF) && GetGameDifficulty() < GAME_DIFFICULTY_CORE_RULES)
 | |
|         {
 | |
|             nDamage = nDamage + nExtraDamage;
 | |
|         }
 | |
|     }
 | |
|     if (nMetaMagic & METAMAGIC_EMPOWER)
 | |
|     {
 | |
|         nDamage = nDamage + (nDamage/2);
 | |
|     }
 | |
| 
 | |
| 
 | |
|     if (MyPRCGetRacialType(oTarget) != RACIAL_TYPE_UNDEAD
 | |
|     && !(GetHasFeat(FEAT_TOMB_TAINTED_SOUL, oTarget) && GetAlignmentGoodEvil(oTarget) != ALIGNMENT_GOOD))
 | |
|     {
 | |
|         if (oTarget != OBJECT_SELF)
 | |
|         {
 | |
|             //Figure out the amount of damage to heal
 | |
|             nHeal = nDamage;
 | |
|             //Set the heal effect
 | |
|             eHeal = PRCEffectHeal(nHeal, oTarget);
 | |
|             //Apply heal effect and VFX impact
 | |
|             SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget);
 | |
|             SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget);
 | |
| 
 | |
|             //Apply Damage Effect to the Caster
 | |
|             SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, 5), OBJECT_SELF);
 | |
|             //Fire cast spell at event for the specified target
 | |
|             SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, 31, FALSE));
 | |
|         }
 | |
| 
 | |
|     }
 | |
|     //Check that the target is undead
 | |
|     else
 | |
|     {
 | |
|         int nTouch = PRCDoMeleeTouchAttack(oTarget);;
 | |
|         if (nTouch > 0)
 | |
|         {
 | |
|             if(!GetIsReactionTypeFriendly(oTarget))
 | |
|             {
 | |
|                 //Fire cast spell at event for the specified target
 | |
|                 SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, 31));
 | |
|                 if (!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl))
 | |
|                 {
 | |
|                 	nDamage += SpellDamagePerDice(OBJECT_SELF, 4);
 | |
|                     eDam = PRCEffectDamage(oTarget, nDamage,DAMAGE_TYPE_NEGATIVE);
 | |
|                     //Apply the VFX impact and effects
 | |
|                     DelayCommand(1.0, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
 | |
|                     SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
 | |
|                 }
 | |
|             }
 | |
|             //Apply Damage Effect to the Caster
 | |
|             SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, 5), OBJECT_SELF);
 | |
|         }
 | |
|     }
 | |
| 
 | |
| 
 | |
| DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
 | |
| // Erasing the variable used to store the spell's spell school
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 |