Updated Vanilla Campaigns
Updated Vanilla Campaigns
This commit is contained in:
		
							
								
								
									
										102
									
								
								nwn/nwnprc/trunk/ocfixerf/q4_kaboom.nss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								nwn/nwnprc/trunk/ocfixerf/q4_kaboom.nss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,102 @@ | ||||
| // explode golem power source | ||||
|  | ||||
|  | ||||
| //#include "X0_I0_SPELLS" | ||||
| //#include "x2_i0_spells" | ||||
| #include "x2_inc_spellhook" | ||||
| #include "prc_inc_spells" | ||||
|  | ||||
|  | ||||
| void Explode() | ||||
| { | ||||
|     SetPlotFlag(OBJECT_SELF, FALSE); | ||||
|     // End of Spell Cast Hook | ||||
|     //Declare major variables | ||||
|     int nDamage1, nDamage2, nDamage3, nDamage4; | ||||
|     float fDelay; | ||||
|     effect eExplode = EffectVisualEffect(464); | ||||
|     effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M); | ||||
|     int nKnockDur; | ||||
|  | ||||
|     int nSpellDC = 32; | ||||
|  | ||||
|     effect eDam1, eDam2, eDam3, eDam4, eDam5, eKnock; | ||||
|     eKnock = EffectKnockdown(); | ||||
|     //Get the spell target location as opposed to the spell target. | ||||
|     location lTarget = GetLocation(OBJECT_SELF); | ||||
|     //Apply the fireball explosion at the location captured above. | ||||
|     ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget); | ||||
|     //Declare the spell shape, size and the location.  Capture the first target object in the shape. | ||||
|     object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, 20.0f, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); | ||||
|     //Cycle through the targets within the spell shape until an invalid object is captured. | ||||
|     int nTotalDamage; | ||||
|     while (GetIsObjectValid(oTarget)) | ||||
|     { | ||||
|         if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, GetFirstPC())) | ||||
|         { | ||||
|             //Get the distance between the explosion and the target to calculate delay | ||||
|             fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20 + 0.5f; | ||||
|             if (!PRCDoResistSpell(OBJECT_SELF, oTarget, FloatToInt(fDelay))) | ||||
|             { | ||||
|                 //Roll damage for each target | ||||
|                 nDamage1 = d6(40); | ||||
|                 nDamage2 = d6(40); | ||||
|  | ||||
|                 if (PRCMySavingThrow(SAVING_THROW_REFLEX,oTarget,nSpellDC,SAVING_THROW_TYPE_SPELL,OBJECT_SELF,fDelay) >0) | ||||
|                 { | ||||
|                     nDamage1 /=2; | ||||
|                     nDamage2 /=2; | ||||
|  | ||||
|                 } | ||||
|                 nTotalDamage = nDamage1+nDamage2; | ||||
|                 //Set the damage effect | ||||
|                 eDam3 = EffectDamage(nDamage3, DAMAGE_TYPE_FIRE); | ||||
|                 eDam4 = EffectDamage(nDamage4, DAMAGE_TYPE_SONIC); | ||||
|                 //Link damage effects | ||||
|  | ||||
|                 if(nTotalDamage > 0) | ||||
|                 { | ||||
|                     if (nTotalDamage > 50) | ||||
|                     { | ||||
|                         nKnockDur = Random(6) + 4; | ||||
|                         DelayCommand(fDelay+0.3f, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eKnock, oTarget, IntToFloat(nKnockDur))); | ||||
|                     } | ||||
|  | ||||
|                     // Apply effects to the currently selected target. | ||||
|                     DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam1, oTarget)); | ||||
|                     DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam2, oTarget)); | ||||
|                     //This visual effect is applied to the target object not the location as above.  This visual effect | ||||
|                     //represents the flame that erupts on the target not on the ground. | ||||
|                     DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); | ||||
|  | ||||
|                  } | ||||
|              } | ||||
|         } | ||||
|        //Select the next target within the spell shape. | ||||
|        oTarget = GetNextObjectInShape(SHAPE_SPHERE, 20.0f, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); | ||||
|     } | ||||
|     // Destroy all golems in  the island of the maker(and make the bodies stay) | ||||
|     object oArea = GetArea(OBJECT_SELF); | ||||
|     if(GetTag(oArea) != "IslandoftheMakerLowerRuins") | ||||
|         oArea = GetObjectByTag("IslandoftheMakerLowerRuins"); | ||||
|  | ||||
|     SignalEvent(oArea, EventUserDefined(103)); // kill of the golems at the lower level of the maker dungeon | ||||
|  | ||||
|  | ||||
|     DestroyObject(OBJECT_SELF, 2.0); | ||||
| } | ||||
|  | ||||
| void main() | ||||
| { | ||||
|     effect eVis = EffectVisualEffect(469); | ||||
|     int i; | ||||
|     float fDelay; | ||||
|     // count down - the more the time advances - the more pulses would appear. | ||||
|     for(i = 1; i <= 150; i++) | ||||
|     { | ||||
|         DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF)); | ||||
|         fDelay += (1.0 - IntToFloat(i) / 30); | ||||
|     } | ||||
|     DelayCommand(14.0, Explode()); | ||||
|  | ||||
| } | ||||
							
								
								
									
										35
									
								
								nwn/nwnprc/trunk/ocfixerf/q4_s0_acidfoga.nss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								nwn/nwnprc/trunk/ocfixerf/q4_s0_acidfoga.nss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | ||||
| //:://///////////////////////////////////////////// | ||||
| //:: Acid Fog: On Enter | ||||
| //:: NW_S0_AcidFogA.nss | ||||
| //:: Copyright (c) 2001 Bioware Corp. | ||||
| //::////////////////////////////////////////////// | ||||
| /* | ||||
|     All creatures within the AoE take 2d6 acid damage | ||||
|     per round and upon entering if they fail a Fort Save | ||||
|     their movement is halved. | ||||
| */ | ||||
| //::////////////////////////////////////////////// | ||||
| //:: Created By: Preston Watamaniuk | ||||
| //:: Created On: May 17, 2001 | ||||
| //::////////////////////////////////////////////// | ||||
|  | ||||
| //#include "X0_I0_SPELLS" | ||||
| #include "x2_inc_spellhook" | ||||
| #include "prc_inc_spells" | ||||
|  | ||||
| void main() | ||||
| { | ||||
|     int nDamage; | ||||
|     effect eDam; | ||||
|     effect eVis = EffectVisualEffect(VFX_IMP_ACID_S); | ||||
|     effect eSlow = EffectMovementSpeedDecrease(50); | ||||
|     object oTarget = GetEnteringObject(); | ||||
|     float fDelay = PRCGetRandomDelay(1.0, 2.2); | ||||
|     nDamage = d6(3); | ||||
|     if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, 24, SAVING_THROW_TYPE_ACID, GetAreaOfEffectCreator(), fDelay)) | ||||
|            ApplyEffectToObject(DURATION_TYPE_PERMANENT, eSlow, oTarget); | ||||
|     eDam = EffectDamage(nDamage, DAMAGE_TYPE_ACID); | ||||
|     DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); | ||||
|     DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); | ||||
|  | ||||
| } | ||||
							
								
								
									
										42
									
								
								nwn/nwnprc/trunk/ocfixerf/q4_s0_acidfogc.nss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								nwn/nwnprc/trunk/ocfixerf/q4_s0_acidfogc.nss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | ||||
| //:://///////////////////////////////////////////// | ||||
| //:: Acid Fog: Heartbeat | ||||
| //:: NW_S0_AcidFogC.nss | ||||
| //:: Copyright (c) 2001 Bioware Corp. | ||||
| //::////////////////////////////////////////////// | ||||
| /* | ||||
|     All creatures within the AoE take 2d6 acid damage | ||||
|     per round and upon entering if they fail a Fort Save | ||||
|     their movement is halved. | ||||
| */ | ||||
| //::////////////////////////////////////////////// | ||||
| //:: Created By: Preston Watamaniuk | ||||
| //:: Created On: May 17, 2001 | ||||
| //::////////////////////////////////////////////// | ||||
|  | ||||
| //#include "X0_I0_SPELLS" | ||||
| #include "x2_inc_spellhook" | ||||
| #include "prc_inc_spells" | ||||
|  | ||||
| void main() | ||||
| { | ||||
|     int nDamage = d6(3); | ||||
|     effect eDam; | ||||
|     effect eVis = EffectVisualEffect(VFX_IMP_ACID_S); | ||||
|     object oTarget; | ||||
|     float fDelay; | ||||
|  | ||||
|     eDam = EffectDamage(nDamage, DAMAGE_TYPE_ACID); | ||||
|     //Start cycling through the AOE Object for viable targets including doors and placable objects. | ||||
|     oTarget = GetFirstInPersistentObject(OBJECT_SELF); | ||||
|     while(GetIsObjectValid(oTarget)) | ||||
|     { | ||||
|         if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, 24, SAVING_THROW_TYPE_ACID, GetAreaOfEffectCreator(), fDelay)) | ||||
|               nDamage = d6(3); | ||||
|         fDelay = PRCGetRandomDelay(0.4, 1.2); | ||||
|         DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); | ||||
|         DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); | ||||
|  | ||||
|         //Get next target. | ||||
|         oTarget = GetNextInPersistentObject(OBJECT_SELF); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										33
									
								
								nwn/nwnprc/trunk/ocfixerf/q4_s0_bladebara.nss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								nwn/nwnprc/trunk/ocfixerf/q4_s0_bladebara.nss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| //:://///////////////////////////////////////////// | ||||
| //:: Blade Barrier: On Enter | ||||
| //:: NW_S0_BladeBarA.nss | ||||
| //:: Copyright (c) 2001 Bioware Corp. | ||||
| //::////////////////////////////////////////////// | ||||
| /* | ||||
|     Creates a wall 10m long and 2m thick of whirling | ||||
|     blades that hack and slice anything moving into | ||||
|     them.  Anything caught in the blades takes | ||||
|     2d6 per caster level. | ||||
| */ | ||||
| //::////////////////////////////////////////////// | ||||
| //:: Created By: Preston Watamaniuk | ||||
| //:: Created On: July 20, 2001 | ||||
| //::////////////////////////////////////////////// | ||||
|  | ||||
| //#include "X0_I0_SPELLS" | ||||
| #include "x2_inc_spellhook" | ||||
| #include "prc_inc_spells" | ||||
|  | ||||
| void main() | ||||
| { | ||||
|     object oTarget = GetEnteringObject(); | ||||
|     effect eDam; | ||||
|     effect eVis = EffectVisualEffect(VFX_COM_BLOOD_LRG_RED); | ||||
|     int nDamage = d6(14); | ||||
|     if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, 24)) | ||||
|         nDamage = d6(8); | ||||
|     eDam = EffectDamage(nDamage, DAMAGE_TYPE_SLASHING); | ||||
|     ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); | ||||
|     ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); | ||||
| } | ||||
|  | ||||
							
								
								
									
										40
									
								
								nwn/nwnprc/trunk/ocfixerf/q4_s0_bladebarc.nss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								nwn/nwnprc/trunk/ocfixerf/q4_s0_bladebarc.nss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | ||||
| //:://///////////////////////////////////////////// | ||||
| //:: Blade Barrier: Heartbeat | ||||
| //:: NW_S0_BladeBarA.nss | ||||
| //:: Copyright (c) 2001 Bioware Corp. | ||||
| //::////////////////////////////////////////////// | ||||
| /* | ||||
|     Creates a wall 10m long and 2m thick of whirling | ||||
|     blades that hack and slice anything moving into | ||||
|     them.  Anything caught in the blades takes | ||||
|     2d6 per caster level. | ||||
| */ | ||||
| //::////////////////////////////////////////////// | ||||
| //:: Created By: Preston Watamaniuk | ||||
| //:: Created On: July 20, 2001 | ||||
| //::////////////////////////////////////////////// | ||||
|  | ||||
| //#include "X0_I0_SPELLS" | ||||
| #include "x2_inc_spellhook" | ||||
| #include "prc_inc_spells" | ||||
|  | ||||
| void main() | ||||
| { | ||||
|     object oTarget; | ||||
|     effect eDam; | ||||
|     effect eVis = EffectVisualEffect(VFX_COM_BLOOD_LRG_RED); | ||||
|  | ||||
|     oTarget = GetFirstInPersistentObject(); | ||||
|     while(GetIsObjectValid(oTarget)) | ||||
|     { | ||||
|         int nDamage = d6(14); | ||||
|         if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, 24)) | ||||
|             nDamage = d6(7); | ||||
|         eDam = EffectDamage(nDamage, DAMAGE_TYPE_SLASHING); | ||||
|         ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); | ||||
|         ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); | ||||
|         oTarget = GetNextInPersistentObject(); | ||||
|  | ||||
|     } | ||||
| } | ||||
|  | ||||
							
								
								
									
										33
									
								
								nwn/nwnprc/trunk/ocfixerf/q4_s0_firewalla.nss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								nwn/nwnprc/trunk/ocfixerf/q4_s0_firewalla.nss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| //:://///////////////////////////////////////////// | ||||
| //:: Blade Barrier: On Enter | ||||
| //:: NW_S0_BladeBarA.nss | ||||
| //:: Copyright (c) 2001 Bioware Corp. | ||||
| //::////////////////////////////////////////////// | ||||
| /* | ||||
|     Creates a wall 10m long and 2m thick of whirling | ||||
|     blades that hack and slice anything moving into | ||||
|     them.  Anything caught in the blades takes | ||||
|     2d6 per caster level. | ||||
| */ | ||||
| //::////////////////////////////////////////////// | ||||
| //:: Created By: Preston Watamaniuk | ||||
| //:: Created On: July 20, 2001 | ||||
| //::////////////////////////////////////////////// | ||||
|  | ||||
| //#include "X0_I0_SPELLS" | ||||
| #include "x2_inc_spellhook" | ||||
| #include "prc_inc_spells" | ||||
|  | ||||
| void main() | ||||
| { | ||||
|     object oTarget = GetEnteringObject(); | ||||
|     effect eDam; | ||||
|     effect eVis = EffectVisualEffect(VFX_COM_HIT_FIRE); | ||||
|     int nDamage = d6(10); | ||||
|     if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, 24)) | ||||
|         nDamage = d6(5); | ||||
|     eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE); | ||||
|     ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); | ||||
|     ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); | ||||
| } | ||||
|  | ||||
							
								
								
									
										40
									
								
								nwn/nwnprc/trunk/ocfixerf/q4_s0_firewallc.nss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								nwn/nwnprc/trunk/ocfixerf/q4_s0_firewallc.nss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | ||||
| //:://///////////////////////////////////////////// | ||||
| //:: Blade Barrier: Heartbeat | ||||
| //:: NW_S0_BladeBarA.nss | ||||
| //:: Copyright (c) 2001 Bioware Corp. | ||||
| //::////////////////////////////////////////////// | ||||
| /* | ||||
|     Creates a wall 10m long and 2m thick of whirling | ||||
|     blades that hack and slice anything moving into | ||||
|     them.  Anything caught in the blades takes | ||||
|     2d6 per caster level. | ||||
| */ | ||||
| //::////////////////////////////////////////////// | ||||
| //:: Created By: Preston Watamaniuk | ||||
| //:: Created On: July 20, 2001 | ||||
| //::////////////////////////////////////////////// | ||||
|  | ||||
| //#include "X0_I0_SPELLS" | ||||
| #include "x2_inc_spellhook" | ||||
| #include "prc_inc_spells" | ||||
|  | ||||
| void main() | ||||
| { | ||||
|     object oTarget; | ||||
|     effect eDam; | ||||
|     effect eVis = EffectVisualEffect(VFX_COM_HIT_FIRE); | ||||
|  | ||||
|     oTarget = GetFirstInPersistentObject(); | ||||
|     while(GetIsObjectValid(oTarget)) | ||||
|     { | ||||
|         int nDamage = d6(14); | ||||
|         if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, 24)) | ||||
|             nDamage = d6(7); | ||||
|         eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE); | ||||
|         ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); | ||||
|         ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); | ||||
|         oTarget = GetNextInPersistentObject(); | ||||
|  | ||||
|     } | ||||
| } | ||||
|  | ||||
							
								
								
									
										29
									
								
								nwn/nwnprc/trunk/ocfixerf/q4_s0_poisfoga.nss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								nwn/nwnprc/trunk/ocfixerf/q4_s0_poisfoga.nss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | ||||
| //:://///////////////////////////////////////////// | ||||
| //:: Acid Fog: On Enter | ||||
| //:: NW_S0_AcidFogA.nss | ||||
| //:: Copyright (c) 2001 Bioware Corp. | ||||
| //::////////////////////////////////////////////// | ||||
| /* | ||||
|     All creatures within the AoE take 2d6 acid damage | ||||
|     per round and upon entering if they fail a Fort Save | ||||
|     their movement is halved. | ||||
| */ | ||||
| //::////////////////////////////////////////////// | ||||
| //:: Created By: Preston Watamaniuk | ||||
| //:: Created On: May 17, 2001 | ||||
| //::////////////////////////////////////////////// | ||||
|  | ||||
| //#include "X0_I0_SPELLS" | ||||
| #include "x2_inc_spellhook" | ||||
| #include "prc_inc_spells" | ||||
|  | ||||
| void main() | ||||
| { | ||||
|     effect eVis = EffectVisualEffect(VFX_IMP_POISON_S); | ||||
|     effect ePoison = EffectPoison(POISON_COLOSSAL_SPIDER_VENOM); | ||||
|     object oTarget = GetEnteringObject(); | ||||
|     float fDelay = PRCGetRandomDelay(1.0, 2.2); | ||||
|     //DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); | ||||
|     DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, ePoison, oTarget)); | ||||
|  | ||||
| } | ||||
							
								
								
									
										46
									
								
								nwn/nwnprc/trunk/ocfixerf/q4_s0_poisfogb.nss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								nwn/nwnprc/trunk/ocfixerf/q4_s0_poisfogb.nss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | ||||
| //:://///////////////////////////////////////////// | ||||
| //:: Acid Fog: On Exit | ||||
| //:: NW_S0_AcidFogB.nss | ||||
| //:: Copyright (c) 2001 Bioware Corp. | ||||
| //::////////////////////////////////////////////// | ||||
| /* | ||||
|     All creatures within the AoE take 2d6 acid damage | ||||
|     per round and upon entering if they fail a Fort Save | ||||
|     their movement is halved. | ||||
| */ | ||||
| //::////////////////////////////////////////////// | ||||
| //:: Created By: Preston Watamaniuk | ||||
| //:: Created On: May 17, 2001 | ||||
| //::////////////////////////////////////////////// | ||||
| //:: Update Pass By: Preston W, On: July 20, 2001 | ||||
|  | ||||
| #include "x2_inc_spellhook" | ||||
|  | ||||
| void main() | ||||
| { | ||||
|  | ||||
|  | ||||
|     //Declare major variables | ||||
|     //Get the object that is exiting the AOE | ||||
|     object oTarget = GetExitingObject(); | ||||
|     int bValid = FALSE; | ||||
|     effect eAOE; | ||||
|        //Search through the valid effects on the target. | ||||
|         eAOE = GetFirstEffect(oTarget); | ||||
|         while (GetIsEffectValid(eAOE) && bValid == FALSE) | ||||
|         { | ||||
|             if (GetEffectCreator(eAOE) == GetAreaOfEffectCreator()) | ||||
|             { | ||||
|                 if(GetEffectType(eAOE) == EFFECT_TYPE_POISON) | ||||
|                 { | ||||
|                         RemoveEffect(oTarget, eAOE); | ||||
|                         bValid = TRUE; | ||||
|  | ||||
|                 } | ||||
|             } | ||||
|             //Get next effect on the target | ||||
|             eAOE = GetNextEffect(oTarget); | ||||
|         } | ||||
|  | ||||
| } | ||||
|  | ||||
							
								
								
									
										38
									
								
								nwn/nwnprc/trunk/ocfixerf/q4_s0_poisfogc.nss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								nwn/nwnprc/trunk/ocfixerf/q4_s0_poisfogc.nss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | ||||
| //:://///////////////////////////////////////////// | ||||
| //:: Acid Fog: Heartbeat | ||||
| //:: NW_S0_AcidFogC.nss | ||||
| //:: Copyright (c) 2001 Bioware Corp. | ||||
| //::////////////////////////////////////////////// | ||||
| /* | ||||
|     All creatures within the AoE take 2d6 acid damage | ||||
|     per round and upon entering if they fail a Fort Save | ||||
|     their movement is halved. | ||||
| */ | ||||
| //::////////////////////////////////////////////// | ||||
| //:: Created By: Preston Watamaniuk | ||||
| //:: Created On: May 17, 2001 | ||||
| //::////////////////////////////////////////////// | ||||
|  | ||||
| //#include "X0_I0_SPELLS" | ||||
| #include "x2_inc_spellhook" | ||||
| #include "prc_inc_spells" | ||||
|  | ||||
| void main() | ||||
| { | ||||
|     effect eVis = EffectVisualEffect(VFX_IMP_POISON_S); | ||||
|     object oTarget; | ||||
|     float fDelay; | ||||
|  | ||||
|     effect ePoison = EffectPoison(POISON_COLOSSAL_SPIDER_VENOM); | ||||
|     //Start cycling through the AOE Object for viable targets including doors and placable objects. | ||||
|     oTarget = GetFirstInPersistentObject(OBJECT_SELF); | ||||
|     while(GetIsObjectValid(oTarget)) | ||||
|     { | ||||
|         fDelay = PRCGetRandomDelay(0.4, 1.2); | ||||
|         //DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); | ||||
|         DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, ePoison, oTarget)); | ||||
|  | ||||
|         //Get next target. | ||||
|         oTarget = GetNextInPersistentObject(OBJECT_SELF); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										41
									
								
								nwn/nwnprc/trunk/ocfixerf/q5_s0_greasea.nss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								nwn/nwnprc/trunk/ocfixerf/q5_s0_greasea.nss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,41 @@ | ||||
| //:://///////////////////////////////////////////// | ||||
| //:: Grease: On Enter | ||||
| //:: NW_S0_GreaseA.nss | ||||
| //:: Copyright (c) 2001 Bioware Corp. | ||||
| //::////////////////////////////////////////////// | ||||
| /* | ||||
|     Creatures entering the zone of grease must make | ||||
|     a reflex save or fall down.  Those that make | ||||
|     their save have their movement reduced by 1/2. | ||||
| */ | ||||
| //::////////////////////////////////////////////// | ||||
| //:: Created By: Preston Watamaniuk | ||||
| //:: Created On: Aug 1, 2001 | ||||
| //::////////////////////////////////////////////// | ||||
| //#include "X0_I0_SPELLS" | ||||
| #include "x2_inc_spellhook" | ||||
| #include "prc_inc_spells" | ||||
| #include "prc_inc_skills" | ||||
|  | ||||
| void main() | ||||
| { | ||||
|  | ||||
|  | ||||
|  | ||||
|     //Declare major variables | ||||
|     int nMetaMagic = GetMetaMagicFeat(); | ||||
|     effect eVis = EffectVisualEffect(VFX_IMP_SLOW); | ||||
|     effect eSlow = ExtraordinaryEffect(EffectMovementSpeedDecrease(50)); | ||||
|     effect eLink = EffectLinkEffects(eVis, eSlow); | ||||
|     object oTarget = GetEnteringObject(); | ||||
|     int nAppear = GetAppearanceType(oTarget); | ||||
|     if(PRCGetHasEffect(EFFECT_TYPE_MOVEMENT_SPEED_DECREASE, oTarget)) | ||||
|             return; // do not apply the effect twice | ||||
|  | ||||
|     if(!PRCIsFlying(oTarget)) | ||||
|     { | ||||
|         SignalEvent(oTarget, EventSpellCastAt(OBJECT_INVALID, SPELL_GREASE)); | ||||
|         ApplyEffectToObject(DURATION_TYPE_PERMANENT, eSlow, oTarget); | ||||
|         ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										46
									
								
								nwn/nwnprc/trunk/ocfixerf/q5_s0_greasec.nss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								nwn/nwnprc/trunk/ocfixerf/q5_s0_greasec.nss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | ||||
| //:://///////////////////////////////////////////// | ||||
| //:: Grease: Heartbeat | ||||
| //:: NW_S0_GreaseC.nss | ||||
| //:: Copyright (c) 2001 Bioware Corp. | ||||
| //::////////////////////////////////////////////// | ||||
| /* | ||||
|     Creatures entering the zone of grease must make | ||||
|     a reflex save or fall down.  Those that make | ||||
|     their save have their movement reduced by 1/2. | ||||
| */ | ||||
| //::////////////////////////////////////////////// | ||||
| //:: Created By: Preston Watamaniuk | ||||
| //:: Created On: Aug 1, 2001 | ||||
| //::////////////////////////////////////////////// | ||||
| //#include "X0_I0_SPELLS" | ||||
| #include "x2_inc_spellhook" | ||||
| #include "prc_inc_spells" | ||||
| #include "prc_inc_skills" | ||||
|  | ||||
| void main() | ||||
| { | ||||
|  | ||||
|  | ||||
|     //Declare major variables | ||||
|     object oTarget; | ||||
|     effect eFall = ExtraordinaryEffect(EffectKnockdown()); | ||||
|     float fDelay; | ||||
|     //Get first target in spell area | ||||
|     oTarget = GetFirstInPersistentObject(); | ||||
|     int nAppear; | ||||
|     while(GetIsObjectValid(oTarget)) | ||||
|     { | ||||
|             if(!PRCIsFlying(oTarget)) | ||||
|             { | ||||
|                 SignalEvent(oTarget, EventSpellCastAt(OBJECT_INVALID, SPELL_GREASE)); | ||||
|                 if(!PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, 28, SAVING_THROW_TYPE_NONE, OBJECT_SELF, fDelay)) | ||||
|                 { | ||||
|                     ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eFall, oTarget, 4.0); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|         //Get next target in spell area | ||||
|         oTarget = GetNextInPersistentObject(); | ||||
|     } | ||||
| } | ||||
|  | ||||
							
								
								
									
										340
									
								
								nwn/nwnprc/trunk/ocfixerf/q6_shard.nss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										340
									
								
								nwn/nwnprc/trunk/ocfixerf/q6_shard.nss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,340 @@ | ||||
| // Shattered Mirror shard: | ||||
| // When used on a pillar - activate the pillar's power, and disable the pillar for a few rounds. | ||||
|  | ||||
| float PILLAR_CHARGE_TIME = 30.0; | ||||
| int TRAP_DUR = 5; | ||||
| //#include "X0_I0_SPELLS" | ||||
| #include "nw_i0_generic" | ||||
| #include "x2_inc_spellhook" | ||||
| #include "prc_inc_spells" | ||||
| #include "inc_dispel" | ||||
|  | ||||
|  | ||||
| void StripEffects(int nNumber, object oTarget); | ||||
| void AdjustCopy(object oCopy); | ||||
| void DestroyCopy(object oCopy); | ||||
| void CreateFence(location lLoc); | ||||
| void SetBlocker(object oCreature); | ||||
|  | ||||
| void main() | ||||
| { | ||||
|     object oPC = GetLocalObject(GetArea(OBJECT_SELF), "CURRENT_SHARD_USER"); | ||||
|     object oTarget; | ||||
|     if(oPC != OBJECT_INVALID && GetTag(oPC) == "q6_sabal") // if sabal is the one using the shard | ||||
|     { | ||||
|         // init the var | ||||
|         SetLocalObject(GetArea(OBJECT_SELF), "CURRENT_SHARD_USER", OBJECT_INVALID); | ||||
|         oTarget = GetLocalObject(GetArea(OBJECT_SELF), "CURRENT_SHARD_TARGET"); | ||||
|         SetLocalObject(GetArea(OBJECT_SELF), "CURRENT_SHARD_TARGET", OBJECT_INVALID); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         oPC = GetItemActivator(); | ||||
|         oTarget = GetItemActivatedTarget(); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     string sTag = GetTag(oTarget); | ||||
|     if(GetStringLeft(sTag, 11) != "q6f2_Pillar") | ||||
|         return; | ||||
|  | ||||
|     // pillar's type is in it's tag and determine's it's special power. | ||||
|     int nType = StringToInt(GetStringRight(sTag, 1)); | ||||
|  | ||||
|  | ||||
|     // making sure the pillar is active | ||||
|     int nActive = GetLocalInt(oTarget, "ACTIVE"); | ||||
|     if(nActive == 1) | ||||
|         return; | ||||
|     SetLocalInt(oTarget, "ACTIVE", 1); | ||||
|     DelayCommand(PILLAR_CHARGE_TIME, SetLocalInt(oTarget, "ACTIVE", 0)); | ||||
|  | ||||
|     // Apply a charged visual effect to pillar and start removing the effects | ||||
|     // until the pillar is discharged and ready for use again | ||||
|     effect eEff = GetFirstEffect(oTarget); | ||||
|     while(GetIsEffectValid(eEff)) | ||||
|     { | ||||
|         RemoveEffect(oTarget, eEff); | ||||
|         eEff = GetNextEffect(oTarget); | ||||
|     } | ||||
|     effect eBeam = EffectBeam(VFX_BEAM_ODD, oPC, BODY_NODE_HAND); | ||||
|     ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBeam, oTarget, 1.5); | ||||
|  | ||||
|     effect eImp = EffectVisualEffect(VFX_FNF_STRIKE_HOLY); | ||||
|     ApplyEffectToObject(DURATION_TYPE_INSTANT, eImp, oTarget); | ||||
|     effect eVis = EffectVisualEffect(VFX_DUR_PROT_SHADOW_ARMOR); | ||||
|     effect eVis2 = EffectVisualEffect(VFX_DUR_BLUR); | ||||
|     ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget, PILLAR_CHARGE_TIME); | ||||
|     DelayCommand(PILLAR_CHARGE_TIME, | ||||
|         ApplyEffectToObject(DURATION_TYPE_PERMANENT, eVis2, oTarget)); | ||||
|  | ||||
|     // Activate pillars power, depending on it's type | ||||
|  | ||||
|     if(nType == 1) // Revive | ||||
|     { | ||||
|         // Heal all allies | ||||
|         effect eVis = EffectVisualEffect(VFX_IMP_HEALING_X); | ||||
|         effect eHeal = EffectHeal(100); | ||||
|         effect eLink = EffectLinkEffects(eVis, eHeal); | ||||
|         int i = 1; | ||||
|         float fDelay = 1.0; | ||||
|         DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eLink, oPC)); | ||||
|         object oCreature = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_FRIEND, oPC, i); | ||||
|         while(oCreature != OBJECT_INVALID) | ||||
|         { | ||||
|             DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eLink, oCreature)); | ||||
|             fDelay += 1.0; | ||||
|             i++; | ||||
|             oCreature = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_FRIEND, oPC, i); | ||||
|         } | ||||
|     } | ||||
|     else if(nType == 2) // Dispel | ||||
|     { | ||||
|         // Mord' Disjunction on all enemies | ||||
|         int i = 1; | ||||
|         float fDelay = 1.0; | ||||
|         object oCreature = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, oPC, i); | ||||
|         while(oCreature != OBJECT_INVALID) | ||||
|         { | ||||
|             DelayCommand(fDelay, StripEffects(6, oCreature)); | ||||
|             fDelay += 1.0; | ||||
|             i++; | ||||
|             oCreature = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, oPC, i); | ||||
|         } | ||||
|     } | ||||
|     else if(nType == 3) // Entrapment | ||||
|     { | ||||
|         // jumping enemies into a trapped area. | ||||
|  | ||||
|         // First removing everyone from the trap areas: | ||||
|  | ||||
|         object oWP; | ||||
|         int i; | ||||
|         object oCreature = GetNearestCreature(CREATURE_TYPE_IS_ALIVE, TRUE, oTarget, i); | ||||
|         while(oCreature != OBJECT_INVALID) | ||||
|         { | ||||
|             if(GetLocalInt(oCreature, "Q6F_INSIDE") == 1) | ||||
|             { | ||||
|                 oWP = GetNearestObjectByTag("q6f_wp_trap_exit", oCreature); | ||||
|                 DelayCommand(0.5, AssignCommand(oCreature, JumpToObject(oWP))); | ||||
|                 DelayCommand(3.0, AssignCommand(oCreature, DetermineCombatRound(oPC))); | ||||
|             } | ||||
|             i++; | ||||
|             oCreature = GetNearestCreature(CREATURE_TYPE_IS_ALIVE, TRUE, oTarget, i); | ||||
|         } | ||||
|  | ||||
|         // Create the fence | ||||
|         i = 1; | ||||
|         //object oFence; | ||||
|         oWP = GetNearestObjectByTag("q6f_wp_fence", oTarget, i); | ||||
|         while(oWP != OBJECT_INVALID) | ||||
|         { | ||||
|             CreateFence(GetLocation(oWP)); | ||||
|             i++; | ||||
|             oWP = GetNearestObjectByTag("q6f_wp_fence", oTarget, i); | ||||
|         } | ||||
|  | ||||
|         // bring in the blades... | ||||
|         i = 1; | ||||
|         oWP = GetNearestObjectByTag("q6f_wp_blades", oTarget, i); | ||||
|         effect eBlades = EffectAreaOfEffect(AOE_PER_WALLBLADE, "q6f_s0_bladebara", "q6f_s0_bladebarc"); | ||||
|         while(oWP != OBJECT_INVALID) | ||||
|         { | ||||
|             DelayCommand(1.0, ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eBlades, GetLocation(oWP), RoundsToSeconds(TRAP_DUR))); | ||||
|             i++; | ||||
|             oWP = GetNearestObjectByTag("q6f_wp_blades", oTarget, i); | ||||
|         } | ||||
|         // bring in the victims | ||||
|  | ||||
|         i = 1; | ||||
|         object oBlock; // setting the nearest cage on the creature so he would attack it. | ||||
|         oCreature = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, oPC, i); | ||||
|         oWP = GetNearestObjectByTag("q6f_wp_trap_catch", oPC, i); | ||||
|         while(oCreature != OBJECT_INVALID && i <= 4) | ||||
|         { | ||||
|             if(GetMaster(oCreature) == OBJECT_INVALID) | ||||
|             { | ||||
|                 DelayCommand(1.5, AssignCommand(oCreature, JumpToObject(oWP))); | ||||
|                 DelayCommand(2.0, SetBlocker(oCreature)); | ||||
|                 SetLocalString(oCreature,"X2_SPECIAL_COMBAT_AI_SCRIPT", "q6f_ai_blocked"); | ||||
|                 i++; | ||||
|                 oCreature = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, oPC, i); | ||||
|                 oWP = GetNearestObjectByTag("q6f_wp_trap_catch", oPC, i); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|     } | ||||
|     else if(nType == 4) // Guardian | ||||
|     { | ||||
|         // polymorph into a golem for a few rounds | ||||
|         effect ePoly = EffectPolymorph(93); | ||||
|         effect eAttackBonus = EffectAttackIncrease(10, ATTACK_BONUS_MISC); | ||||
|         ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eAttackBonus, oPC, RoundsToSeconds(3)); | ||||
|         ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePoly, oPC, RoundsToSeconds(3)); | ||||
|     } | ||||
|     else if(nType == 5) // Time | ||||
|     { | ||||
|         // haste all allies and slow all enemies | ||||
|         effect eHaste = EffectHaste(); | ||||
|         effect eSlow = EffectSlow(); | ||||
|         effect eImpHaste = EffectVisualEffect(VFX_IMP_HASTE); | ||||
|         effect eImpSlow = EffectVisualEffect(VFX_IMP_SLOW); | ||||
|         int i = 1; | ||||
|         object oCreature = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, oPC, i); | ||||
|         while(oCreature != OBJECT_INVALID) | ||||
|         { | ||||
|             DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpSlow, oCreature)); | ||||
|             DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSlow, oCreature, RoundsToSeconds(5))); | ||||
|             i++; | ||||
|             oCreature = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, oPC, i); | ||||
|         } | ||||
|  | ||||
|         i = 1; | ||||
|         oCreature = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_FRIEND, oPC, i); | ||||
|         while(oCreature != OBJECT_INVALID) | ||||
|         { | ||||
|             DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpHaste, oCreature)); | ||||
|             DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHaste, oCreature, RoundsToSeconds(5))); | ||||
|             i++; | ||||
|             oCreature = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_FRIEND, oPC, i); | ||||
|         } | ||||
|  | ||||
|  | ||||
|  | ||||
|     } | ||||
|     else if(nType == 6) // Mirroring | ||||
|     { | ||||
|         effect eVis = EffectVisualEffect(VFX_FNF_DISPEL_DISJUNCTION); | ||||
|         ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, GetLocation(oPC)); | ||||
|         // creates 3 decoy copies of the player for a few rounds | ||||
|         object oCopy1 = CopyObject(oPC, GetLocation(oPC)); | ||||
|         object oCopy2 = CopyObject(oPC, GetLocation(oPC)); | ||||
|         object oCopy3 = CopyObject(oPC, GetLocation(oPC)); | ||||
|  | ||||
|         // Making sure the copies are not too powerful | ||||
|         AdjustCopy(oCopy1); | ||||
|         AdjustCopy(oCopy2); | ||||
|         AdjustCopy(oCopy3); | ||||
|  | ||||
|         DelayCommand(RoundsToSeconds(5), DestroyCopy(oCopy1)); | ||||
|         DelayCommand(RoundsToSeconds(5), DestroyCopy(oCopy2)); | ||||
|         DelayCommand(RoundsToSeconds(5), DestroyCopy(oCopy3)); | ||||
|     } | ||||
|  | ||||
| } | ||||
|  | ||||
| void AdjustCopy(object oCopy) | ||||
| { | ||||
|     // set hit points to a max of 50 | ||||
|     // set AC to 25 | ||||
|     // set base attack bonus to 20 | ||||
|     // set number of attack to 2 | ||||
|     // set all object's item as non-dropable | ||||
|  | ||||
|     ChangeFaction(oCopy, GetFirstPC()); | ||||
|  | ||||
|     int nHP = GetCurrentHitPoints(oCopy); | ||||
|     int nHPChange = nHP - 50; | ||||
|     if(nHPChange > 0) | ||||
|     { | ||||
|         effect eDamage = EffectDamage(nHPChange); | ||||
|         ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oCopy); | ||||
|     } | ||||
|     int nAC = GetAC(oCopy); | ||||
|     int nACChange = nAC - 25; | ||||
|     if(nACChange > 0) | ||||
|     { | ||||
|         effect eACDec = EffectACDecrease(nACChange); | ||||
|         ApplyEffectToObject(DURATION_TYPE_INSTANT, eACDec, oCopy); | ||||
|     } | ||||
|     int nAttBon = GetBaseAttackBonus(oCopy); | ||||
|     int nAttBonChange = 20 - nAttBon; | ||||
|     if(nAttBonChange > 0) | ||||
|     { | ||||
|         effect eAttDec = EffectAttackDecrease(nAttBonChange); | ||||
|         ApplyEffectToObject(DURATION_TYPE_INSTANT, eAttDec, oCopy); | ||||
|     } | ||||
|     SetBaseAttackBonus(2, oCopy); | ||||
|     object oEnemy = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, GetFirstPC()); | ||||
|     AssignCommand(oCopy, ActionMoveAwayFromObject(GetFirstPC(), TRUE, 10.0)); | ||||
|     AssignCommand(oCopy, ActionAttack(oEnemy)); | ||||
|  | ||||
|     object oItem = GetFirstItemInInventory(oCopy); | ||||
|     while(oItem != OBJECT_INVALID) | ||||
|     { | ||||
|         SetDroppableFlag(oItem, FALSE); | ||||
|         oItem = GetNextItemInInventory(oCopy); | ||||
|     } | ||||
|     oItem = GetItemInSlot(INVENTORY_SLOT_ARMS, oCopy); | ||||
|     SetDroppableFlag(oItem, FALSE); | ||||
|     oItem = GetItemInSlot(INVENTORY_SLOT_ARROWS, oCopy); | ||||
|     SetDroppableFlag(oItem, FALSE); | ||||
|     oItem = GetItemInSlot(INVENTORY_SLOT_BELT, oCopy); | ||||
|     SetDroppableFlag(oItem, FALSE); | ||||
|     oItem = GetItemInSlot(INVENTORY_SLOT_BOLTS, oCopy); | ||||
|     SetDroppableFlag(oItem, FALSE); | ||||
|     oItem = GetItemInSlot(INVENTORY_SLOT_BOOTS, oCopy); | ||||
|     SetDroppableFlag(oItem, FALSE); | ||||
|     oItem = GetItemInSlot(INVENTORY_SLOT_BULLETS, oCopy); | ||||
|     SetDroppableFlag(oItem, FALSE); | ||||
|     oItem = GetItemInSlot(INVENTORY_SLOT_CHEST, oCopy); | ||||
|     SetDroppableFlag(oItem, FALSE); | ||||
|     oItem = GetItemInSlot(INVENTORY_SLOT_CLOAK, oCopy); | ||||
|     SetDroppableFlag(oItem, FALSE); | ||||
|     oItem = GetItemInSlot(INVENTORY_SLOT_HEAD, oCopy); | ||||
|     SetDroppableFlag(oItem, FALSE); | ||||
|     oItem = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oCopy); | ||||
|     SetDroppableFlag(oItem, FALSE); | ||||
|     oItem = GetItemInSlot(INVENTORY_SLOT_LEFTRING, oCopy); | ||||
|     SetDroppableFlag(oItem, FALSE); | ||||
|     oItem = GetItemInSlot(INVENTORY_SLOT_NECK, oCopy); | ||||
|     SetDroppableFlag(oItem, FALSE); | ||||
|     oItem = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oCopy); | ||||
|     SetDroppableFlag(oItem, FALSE); | ||||
|     oItem = GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oCopy); | ||||
|     SetDroppableFlag(oItem, FALSE); | ||||
|  | ||||
|     TakeGoldFromCreature(GetGold(oCopy), oCopy, TRUE); | ||||
| } | ||||
|  | ||||
|  | ||||
| void StripEffects(int nNumber, object oTarget) | ||||
| { | ||||
|     //Declare major variables | ||||
|     effect eVis = EffectVisualEffect(VFX_IMP_BREACH); | ||||
|     int nCnt = 0; | ||||
|     int nIdx = 0; | ||||
|     int nTotal = nNumber; | ||||
|     if(GetIsEnemy(oTarget)) | ||||
|     { | ||||
|         //Search through and remove protections. | ||||
|         while(nCnt <= 17 && nIdx < nTotal) | ||||
|         { | ||||
|             nIdx = nIdx + PRCRemoveProtections(PRCGetSpellBreachProtection(nCnt), oTarget, nCnt); | ||||
|             nCnt++; | ||||
|         } | ||||
|     } | ||||
|     ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); | ||||
| } | ||||
|  | ||||
| void DestroyCopy(object oCopy) | ||||
| { | ||||
|     effect eVis = EffectVisualEffect(VFX_IMP_DESTRUCTION); | ||||
|     ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, GetLocation(oCopy)); | ||||
|     DestroyObject(oCopy); | ||||
| } | ||||
|  | ||||
| void CreateFence(location lLoc) | ||||
| { | ||||
|     object oFence = CreateObject(OBJECT_TYPE_PLACEABLE, "q6f_fence", lLoc); | ||||
|     DestroyObject(oFence, RoundsToSeconds(TRAP_DUR)); | ||||
|  | ||||
| } | ||||
|  | ||||
| void SetBlocker(object oCreature) | ||||
| { | ||||
|     AssignCommand(oCreature, ClearAllActions()); | ||||
|     object oBlocker = GetNearestObjectByTag("q6f_fence", oCreature); | ||||
|     SetLocalObject(oCreature, "Q6F_BLOCKER", oBlocker); | ||||
|     AssignCommand(oCreature, DetermineCombatRound()); | ||||
| } | ||||
							
								
								
									
										36
									
								
								nwn/nwnprc/trunk/ocfixerf/q6f_s0_bladebara.nss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								nwn/nwnprc/trunk/ocfixerf/q6f_s0_bladebara.nss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | ||||
| //:://///////////////////////////////////////////// | ||||
| //:: Blade Barrier: On Enter | ||||
| //:: NW_S0_BladeBarA.nss | ||||
| //:: Copyright (c) 2001 Bioware Corp. | ||||
| //::////////////////////////////////////////////// | ||||
| /* | ||||
|     Creates a wall 10m long and 2m thick of whirling | ||||
|     blades that hack and slice anything moving into | ||||
|     them.  Anything caught in the blades takes | ||||
|     2d6 per caster level. | ||||
| */ | ||||
| //::////////////////////////////////////////////// | ||||
| //:: Created By: Preston Watamaniuk | ||||
| //:: Created On: July 20, 2001 | ||||
| //::////////////////////////////////////////////// | ||||
|  | ||||
| //#include "X0_I0_SPELLS" | ||||
| #include "x2_inc_spellhook" | ||||
| #include "prc_inc_spells" | ||||
|  | ||||
| void main() | ||||
| { | ||||
|      //Declare major variables | ||||
|     object oTarget = GetEnteringObject(); | ||||
|     effect eDam; | ||||
|     effect eVis = EffectVisualEffect(VFX_COM_BLOOD_LRG_RED); | ||||
|     int nDamage = d6(6); | ||||
|     if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, 26)) | ||||
|     { | ||||
|        nDamage = d6(3); | ||||
|     } | ||||
|     eDam = EffectDamage(nDamage, DAMAGE_TYPE_SLASHING); | ||||
|     ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); | ||||
|     ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); | ||||
| } | ||||
|  | ||||
							
								
								
									
										40
									
								
								nwn/nwnprc/trunk/ocfixerf/q6f_s0_bladebarc.nss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								nwn/nwnprc/trunk/ocfixerf/q6f_s0_bladebarc.nss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | ||||
| //:://///////////////////////////////////////////// | ||||
| //:: Blade Barrier: Heartbeat | ||||
| //:: NW_S0_BladeBarA.nss | ||||
| //:: Copyright (c) 2001 Bioware Corp. | ||||
| //::////////////////////////////////////////////// | ||||
| /* | ||||
|     Creates a wall 10m long and 2m thick of whirling | ||||
|     blades that hack and slice anything moving into | ||||
|     them.  Anything caught in the blades takes | ||||
|     2d6 per caster level. | ||||
| */ | ||||
| //::////////////////////////////////////////////// | ||||
| //:: Created By: Preston Watamaniuk | ||||
| //:: Created On: July 20, 2001 | ||||
| //::////////////////////////////////////////////// | ||||
| //#include "X0_I0_SPELLS" | ||||
| #include "x2_inc_spellhook" | ||||
| #include "prc_inc_spells" | ||||
|  | ||||
| void main() | ||||
| { | ||||
|     object oTarget; | ||||
|     effect eDam; | ||||
|     effect eVis = EffectVisualEffect(VFX_COM_BLOOD_LRG_RED); | ||||
|  | ||||
|     oTarget = GetFirstInPersistentObject(); | ||||
|     while(GetIsObjectValid(oTarget)) | ||||
|     { | ||||
|         int nDamage = d6(6); | ||||
|         if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, 18)) | ||||
|         { | ||||
|             nDamage = d6(3); | ||||
|         } | ||||
|         eDam = EffectDamage(nDamage, DAMAGE_TYPE_SLASHING); | ||||
|         ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); | ||||
|         ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); | ||||
|        oTarget = GetNextInPersistentObject(); | ||||
|      } | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user