diff --git a/nwn/nwnprc/trunk/ocfixerf/x2_s1_beholdray.nss b/nwn/nwnprc/trunk/ocfixerf/x2_s1_beholdray.nss
new file mode 100644
index 00000000..bfc0c90b
--- /dev/null
+++ b/nwn/nwnprc/trunk/ocfixerf/x2_s1_beholdray.nss
@@ -0,0 +1,218 @@
+//::///////////////////////////////////////////////
+//:: Beholder Ray Attacks
+//:: x2_s2_beholdray
+//:: Copyright (c) 2003 Bioware Corp.
+//:://////////////////////////////////////////////
+/*
+    Implementation for the new version of the
+    beholder rays, using projectiles instead of
+    rays
+*/
+//:://////////////////////////////////////////////
+//:: Created By: Georg Zoeller
+//:: Created On: 2003-09-16
+//:://////////////////////////////////////////////
+
+
+#include "x0_i0_spells"
+
+
+void DoBeholderPetrify(int nDuration,object oSource, object oTarget, int nSpellID);
+
+void main()
+{
+
+    int     nSpell = GetSpellId();
+    object  oTarget = GetSpellTargetObject();
+    int     nSave, bSave;
+    int     nSaveDC = 15;
+    float   fDelay;
+    effect  e1, eLink, eVis, eDur;
+
+
+    switch (nSpell)
+    {
+         case 776 :
+                                  nSave = SAVING_THROW_FORT;      //BEHOLDER_RAY_DEATH
+                                  break;
+
+        case  777:
+                                  nSave = SAVING_THROW_WILL;     //BEHOLDER_RAY_TK
+                                  break;
+
+        case 778 :                                              //BEHOLDER_RAY_PETRI
+                                  nSave = SAVING_THROW_FORT;
+                                  break;
+
+        case 779:                                                   // BEHOLDER_RAY_CHARM
+                                  nSave = SAVING_THROW_WILL;
+                                  break;
+
+        case 780:                                                   //BEHOLDER_RAY_SLOW
+                                  nSave = SAVING_THROW_WILL;
+                                  break;
+
+       case 783:
+                                  nSave = SAVING_THROW_FORT;        //BEHOLDER_RAY_WOUND
+                                  break;
+
+       case 784:                                                    // BEHOLDER_RAY_FEAR
+                                  nSave = SAVING_THROW_WILL;
+                                  break;
+
+       case 785:
+       case 786:
+       case 787:
+    }
+
+    SignalEvent(oTarget,EventSpellCastAt(OBJECT_SELF,GetSpellId(),TRUE));
+    fDelay  = 0.0f;  //old -- GetSpellEffectDelay(GetLocation(oTarget),OBJECT_SELF);
+    if (nSave == SAVING_THROW_WILL)
+    {
+        bSave = MySavingThrow(SAVING_THROW_WILL,oTarget, nSaveDC,SAVING_THROW_TYPE_ALL,OBJECT_SELF,fDelay) >0;
+    }
+    else if (nSave == SAVING_THROW_FORT)
+    {
+      bSave = MySavingThrow(SAVING_THROW_FORT,oTarget, nSaveDC,SAVING_THROW_TYPE_ALL,OBJECT_SELF,fDelay) >0;
+    }
+
+    if (!bSave)
+    {
+
+      switch (nSpell)
+      {
+         case 776:                 e1 = EffectDeath(TRUE);
+                                   eVis = EffectVisualEffect(VFX_IMP_DEATH);
+                                   eLink = EffectLinkEffects(e1,eVis);
+                                   ApplyEffectToObject(DURATION_TYPE_INSTANT,eLink,oTarget);
+                                   break;
+
+          case 777:                e1 = ExtraordinaryEffect(EffectKnockdown());
+                                   eVis = EffectVisualEffect(VFX_IMP_STUN);
+                                   ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oTarget);
+                                   ApplyEffectToObject(DURATION_TYPE_TEMPORARY,e1,oTarget,6.0f);
+                                   break;
+
+          // Petrify for one round per SaveDC
+          case 778:                eVis = EffectVisualEffect(VFX_IMP_POLYMORPH);
+                                   ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oTarget);
+                                   DoBeholderPetrify(nSaveDC,OBJECT_SELF,oTarget,GetSpellId());
+                                   break;
+
+
+          case 779:                e1 = EffectCharmed();
+                                   eVis = EffectVisualEffect(VFX_IMP_CHARM);
+                                   ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oTarget);
+                                   ApplyEffectToObject(DURATION_TYPE_TEMPORARY,e1,oTarget,24.0f);
+                                   break;
+
+
+          case 780:                e1 = EffectSlow();
+                                   eVis = EffectVisualEffect(VFX_IMP_SLOW);
+                                   ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oTarget);
+                                   ApplyEffectToObject(DURATION_TYPE_TEMPORARY,e1,oTarget,RoundsToSeconds(6));
+                                   break;
+
+          case 783:                e1 = EffectDamage(d8(2)+10);
+                                   eVis = EffectVisualEffect(VFX_COM_BLOOD_REG_RED);
+                                   ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oTarget);
+                                   ApplyEffectToObject(DURATION_TYPE_INSTANT,e1,oTarget);
+                                   break;
+
+
+          case 784:
+                                   e1 = EffectFrightened();
+                                   eVis = EffectVisualEffect(VFX_IMP_FEAR_S);
+                                   eDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR);
+                                   e1 = EffectLinkEffects(eDur,e1);
+                                   ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oTarget);
+                                   ApplyEffectToObject(DURATION_TYPE_TEMPORARY,e1,oTarget,RoundsToSeconds(1+d4()));
+                                   break;
+
+
+       }
+
+    }
+    else
+    {
+         switch (nSpell)
+         {
+               case 776:         e1 = EffectDamage(d6(3)+13);
+                                 eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
+                                 eLink = EffectLinkEffects(e1,eVis);
+                                 ApplyEffectToObject(DURATION_TYPE_INSTANT,eLink,oTarget);
+        }
+    }
+}
+
+
+
+void DoBeholderPetrify(int nDuration,object oSource, object oTarget, int nSpellID)
+{
+
+    if(!GetIsReactionTypeFriendly(oTarget) && !GetIsDead(oTarget))
+    {
+        // * exit if creature is immune to petrification
+        if (spellsIsImmuneToPetrification(oTarget) == TRUE || GetHasFeat(4643))  //:: PRC's Immunity to Petrification
+        {
+            return;
+        }
+        float fDifficulty = 0.0;
+        int bIsPC = GetIsPC(oTarget);
+        int bShowPopup = FALSE;
+
+        // * calculate Duration based on difficulty settings
+        int nGameDiff = GetGameDifficulty();
+        switch (nGameDiff)
+        {
+            case GAME_DIFFICULTY_VERY_EASY:
+            case GAME_DIFFICULTY_EASY:
+            case GAME_DIFFICULTY_NORMAL:
+                    fDifficulty = RoundsToSeconds(nDuration); // One Round per hit-die or caster level
+                break;
+            case GAME_DIFFICULTY_CORE_RULES:
+            case GAME_DIFFICULTY_DIFFICULT:
+                if (!GetPlotFlag(oTarget))
+                {
+                    bShowPopup = TRUE;
+                }
+            break;
+        }
+
+        effect ePetrify = EffectPetrify();
+        effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
+        effect eLink = EffectLinkEffects(eDur, ePetrify);
+
+
+                /// * The duration is permanent against NPCs but only temporary against PCs
+                if (bIsPC == TRUE)
+                {
+                    if (bShowPopup == TRUE)
+                    {
+                        // * under hardcore rules or higher, this is an instant death
+                        ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget);
+                        DelayCommand(2.75, PopUpDeathGUIPanel(oTarget, FALSE , TRUE, 40579));
+                        // if in hardcore, treat the player as an NPC
+                        bIsPC = FALSE;
+                    }
+                    else
+                        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDifficulty);
+                }
+                else
+                {
+                    ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget);
+                    // * Feb 11 2003 BK I don't think this is necessary anymore
+                    //if the target was an NPC - make him uncommandable until Stone to Flesh is cast
+                    //SetCommandable(FALSE, oTarget);
+
+                    // Feb 5 2004 - Jon
+                    // Added kick-henchman-out-of-party code from generic petrify script
+                    if (GetAssociateType(oTarget) == ASSOCIATE_TYPE_HENCHMAN)
+                    {
+                        FireHenchman(GetMaster(oTarget),oTarget);
+                    }
+                }
+                // April 2003: Clearing actions to kick them out of conversation when petrified
+                AssignCommand(oTarget, ClearAllActions());
+    }
+}