From ea09e4db6f5f49a67ae7f3edaf7f2f3bfeca0709 Mon Sep 17 00:00:00 2001
From: Jaysyn904 <68194417+Jaysyn904@users.noreply.github.com>
Date: Fri, 8 Nov 2024 19:02:23 -0500
Subject: [PATCH] Really fixed Evard's on wands this time

Really fixed Evard's on wands this time.  Fixed Acidic Spatter in regards to Acid Fog being spell #0.
---
 nwn/nwnprc/trunk/2das/des_crft_spells.2da    |  2 +-
 nwn/nwnprc/trunk/scripts/prc_equip.nss       | 48 ++++++++++----------
 nwn/nwnprc/trunk/scripts/prc_reservefeat.nss |  8 +++-
 3 files changed, 32 insertions(+), 26 deletions(-)

diff --git a/nwn/nwnprc/trunk/2das/des_crft_spells.2da b/nwn/nwnprc/trunk/2das/des_crft_spells.2da
index ed23cd4f..7b63a797 100644
--- a/nwn/nwnprc/trunk/2das/des_crft_spells.2da
+++ b/nwn/nwnprc/trunk/2das/des_crft_spells.2da
@@ -376,7 +376,7 @@
 372   Aura_of_Vitality                                          321             1        1      0        7     0           
 373   War_Cry                                                   322             1        1      0        4     0           
 374   Regenerate                                                323             1        1      0        7     0           
-375   Evards_Black_Tentacles                                    324             1        1      0        4     0           
+375   Evards_Black_Tentacles                                    324             1        0      0        4     0           
 376   Legend_Lore                                               326             1        1      0        5     0           
 377   Find_Traps                                                327             0        0      0        3     0           
 378   Summon_Mephit                                             ****            1        1      1        5     0           
diff --git a/nwn/nwnprc/trunk/scripts/prc_equip.nss b/nwn/nwnprc/trunk/scripts/prc_equip.nss
index d06caa72..124c6e2b 100644
--- a/nwn/nwnprc/trunk/scripts/prc_equip.nss
+++ b/nwn/nwnprc/trunk/scripts/prc_equip.nss
@@ -86,28 +86,6 @@ void main()
     //timestop noncombat equip
     DoTimestopEquip(oPC, oItem);
 	
-//:: Clear Echoblade effect if weapon is changed
-	int nBaseItem = GetBaseItemType(oItem);
-	
-	effect eEffect = GetFirstEffect(oPC);
-	
-	if (nBaseItem == BASE_ITEM_AMULET || nBaseItem == BASE_ITEM_ARMOR ||  nBaseItem == BASE_ITEM_ARROW ||  nBaseItem == BASE_ITEM_BELT ||  nBaseItem == BASE_ITEM_BOLT ||  nBaseItem == BASE_ITEM_BOOTS 
-	||  nBaseItem == BASE_ITEM_BRACER ||  nBaseItem == BASE_ITEM_BULLET ||  nBaseItem == BASE_ITEM_CBLUDGWEAPON ||  nBaseItem == BASE_ITEM_CLOAK ||  nBaseItem == BASE_ITEM_CPIERCWEAPON 
-	||  nBaseItem == BASE_ITEM_CREATUREITEM ||  nBaseItem == BASE_ITEM_CSLASHWEAPON ||  nBaseItem == BASE_ITEM_CSLSHPRCWEAP ||  nBaseItem == BASE_ITEM_GLOVES ||  nBaseItem == BASE_ITEM_HELMET 
-	||  nBaseItem == BASE_ITEM_RING ||  nBaseItem == BASE_ITEM_LARGESHIELD ||  nBaseItem == BASE_ITEM_RING ||  nBaseItem == BASE_ITEM_SMALLSHIELD ||  nBaseItem == BASE_ITEM_TOWERSHIELD)  
-	{
-		return;
-	}
-	else
-	{
-		while(GetIsEffectValid(eEffect))
-		{
-			if(GetEffectTag(eEffect) == "Echoblade")
-			RemoveEffect(oPC, eEffect);
-			eEffect = GetNextEffect(oPC);
-		}	
-	}	
-	
 //:: Saint / Holy Touch doesn't work w/ ranged weapons
 	if (GetHasTemplate(TEMPLATE_SAINT, oPC))
 	{
@@ -137,12 +115,34 @@ void main()
 		
 		}
 
-//:: check if equipped with a ranged weapon and apply effect again if not
+	//:: Check if equipped with a ranged weapon and apply effect again if not
         if (!GetWeaponRanged(oItem))
 			ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oPC);
 	}
 
-    // Execute scripts hooked to this event for the creature and item triggering it
+//:: Clear Echoblade effect if weapon is changed
+	int nBaseItem = GetBaseItemType(oItem);
+	
+	effect eEffect = GetFirstEffect(oPC);
+	
+	if (nBaseItem == BASE_ITEM_AMULET || nBaseItem == BASE_ITEM_ARMOR ||  nBaseItem == BASE_ITEM_ARROW ||  nBaseItem == BASE_ITEM_BELT ||  nBaseItem == BASE_ITEM_BOLT ||  nBaseItem == BASE_ITEM_BOOTS 
+	||  nBaseItem == BASE_ITEM_BRACER ||  nBaseItem == BASE_ITEM_BULLET ||  nBaseItem == BASE_ITEM_CBLUDGWEAPON ||  nBaseItem == BASE_ITEM_CLOAK ||  nBaseItem == BASE_ITEM_CPIERCWEAPON 
+	||  nBaseItem == BASE_ITEM_CREATUREITEM ||  nBaseItem == BASE_ITEM_CSLASHWEAPON ||  nBaseItem == BASE_ITEM_CSLSHPRCWEAP ||  nBaseItem == BASE_ITEM_GLOVES ||  nBaseItem == BASE_ITEM_HELMET 
+	||  nBaseItem == BASE_ITEM_RING ||  nBaseItem == BASE_ITEM_LARGESHIELD ||  nBaseItem == BASE_ITEM_RING ||  nBaseItem == BASE_ITEM_SMALLSHIELD ||  nBaseItem == BASE_ITEM_TOWERSHIELD)  
+	{
+		return;
+	}
+	else
+	{
+		while(GetIsEffectValid(eEffect))
+		{
+			if(GetEffectTag(eEffect) == "Echoblade")
+			RemoveEffect(oPC, eEffect);
+			eEffect = GetNextEffect(oPC);
+		}	
+	}	
+	
+//:: Execute scripts hooked to this event for the creature and item triggering it
     ExecuteAllScriptsHookedToEvent(oPC, EVENT_ONPLAYEREQUIPITEM);
     ExecuteAllScriptsHookedToEvent(oItem, EVENT_ITEM_ONPLAYEREQUIPITEM);
 
diff --git a/nwn/nwnprc/trunk/scripts/prc_reservefeat.nss b/nwn/nwnprc/trunk/scripts/prc_reservefeat.nss
index 11e04712..0e299ad0 100644
--- a/nwn/nwnprc/trunk/scripts/prc_reservefeat.nss
+++ b/nwn/nwnprc/trunk/scripts/prc_reservefeat.nss
@@ -97,7 +97,7 @@ int GetHighestSpellAvailableBySchool(object oPC, string sSchool)
     return nSpellLevel;
 }
 
-int GetHighestDomainSpellAvailable(object oPC, string sDomain)  //This will loop all domain spells for a given doamain and return the highest level available to cast
+int GetHighestDomainSpellAvailable(object oPC, string sDomain)  //This will loop all domain spells for a given domain and return the highest level available to cast
 {
     string sFile = "prc_desc_" + sDomain;
 
@@ -207,6 +207,12 @@ void UpdateReserveFeats(object oPC)  //This will check for each reserve feat, ca
     if(GetHasFeat(FEAT_ACIDIC_SPLATTER, oPC))
     {
         nBonus = GetHighestSpellAvailableByDescriptor(oPC, RESERVESPELL_DESCRIPTOR_ACID);
+		
+		if((GetHasSpell(SPELL_ACID_FOG, oPC)) || (PRCGetIsRealSpellKnown(SPELL_ACID_FOG, oPC)))
+        {
+			nBonus = 6;
+		}
+			
         DeleteLocalInt(oPC, "AcidicSplatterBonus");
 
         if (nBonus > 1) SetLocalInt(oPC, "AcidicSplatterBonus", nBonus);