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.
		
			
				
	
	
		
			229 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			229 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| //:://////////////////////////////////////////////
 | |
| //:: Short description
 | |
| //:: filename
 | |
| //:://////////////////////////////////////////////
 | |
| /** @file
 | |
|     Long description
 | |
| 
 | |
| 
 | |
|     @author Joe Random
 | |
|     @date   Created  - yyyy.mm.dd
 | |
| */
 | |
| //:://////////////////////////////////////////////
 | |
| //:://////////////////////////////////////////////
 | |
| 
 | |
| #include "prc_alterations"
 | |
| #include "inc_dynconv"
 | |
| 
 | |
| //////////////////////////////////////////////////
 | |
| /* Constant defintions                          */
 | |
| //////////////////////////////////////////////////
 | |
| 
 | |
| const int STAGE_ENTRY                   =  0;
 | |
| const int STAGE_BIOWARE_VISUAL_EFFECT   = 10;
 | |
| const int STAGE_SHADEGUY_SCRIPT_EFFECT  = 20;
 | |
| const int STAGE_GAONENG_SCRIPT_EFFECT   = 30;
 | |
| 
 | |
| 
 | |
| //////////////////////////////////////////////////
 | |
| /* Aid functions                                */
 | |
| //////////////////////////////////////////////////
 | |
| 
 | |
| 
 | |
| 
 | |
| //////////////////////////////////////////////////
 | |
| /* Main function                                */
 | |
| //////////////////////////////////////////////////
 | |
| 
 | |
| void AddVisualEffectList(int nMin, int nMax, int nInterval);
 | |
| void AddVisualEffectList(int nMin, int nMax, int nInterval)
 | |
| {
 | |
|     int i;
 | |
|     for(i=nMin; i<nMin+nInterval && i<nMax; i++)
 | |
|     {
 | |
|         string sLabel = Get2DACache("visualeffects", "Label", i);
 | |
|         string sType = Get2DACache("visualeffects", "Type_FD", i);
 | |
|         if(sType != "")
 | |
|             AddChoice(sLabel, i);
 | |
|     }
 | |
|     if(i<nMax)
 | |
|         DelayCommand(0.0, AddVisualEffectList(nMin+nInterval, nMax, nInterval));
 | |
| }    
 | |
| 
 | |
| void DrawScriptedEffect(int nID, object oTarget)
 | |
| {
 | |
|     location lLoc       = GetLocation(oTarget);
 | |
|     int nDurationType   = DURATION_TYPE_INSTANT;
 | |
|     int nVFX            = VFX_IMP_DOMINATE_S;
 | |
|     switch(nID)
 | |
|     {
 | |
|         case  1: DrawCircle(            nDurationType, nVFX, lLoc, 5.0); break;
 | |
|         case  2: DrawSpiral(            nDurationType, nVFX, lLoc, 5.0); break;
 | |
|         case  3: DrawSpring(            nDurationType, nVFX, lLoc, 5.0); break;
 | |
|         case  4: DrawPolygon(           nDurationType, nVFX, lLoc, 5.0); break;
 | |
|         case  5: DrawPolygonalSpiral(   nDurationType, nVFX, lLoc, 5.0); break;
 | |
|         case  6: DrawPolygonalSpring(   nDurationType, nVFX, lLoc, 5.0); break;
 | |
|         case  7: DrawPentacle(          nDurationType, nVFX, lLoc, 5.0); break;
 | |
|         case  8: DrawPentaclicSpiral(   nDurationType, nVFX, lLoc, 5.0); break;
 | |
|         case  9: DrawPentaclicSpring(   nDurationType, nVFX, lLoc, 5.0); break;
 | |
|         case 10: DrawStar(              nDurationType, nVFX, lLoc, 5.0, 10.0); break;
 | |
|         case 11: DrawStarSpiral(        nDurationType, nVFX, lLoc, 5.0, 10.0); break;
 | |
|         case 12: DrawStarSpring(        nDurationType, nVFX, lLoc, 5.0, 10.0); break;
 | |
|         case 13: DrawHemisphere(        nDurationType, nVFX, lLoc, 5.0); break;
 | |
|         case 14: DrawSphere(            nDurationType, nVFX, lLoc, 5.0); break;
 | |
|     }  
 | |
| }
 | |
| 
 | |
| void ApplyStandardEffect(int nID, object oTarget)
 | |
| {
 | |
|     string sType = Get2DACache("visualeffects", "Type_FD", nID);
 | |
|     //fnf effect
 | |
|     if(sType == "F")
 | |
|         ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(nID), GetLocation(oTarget));
 | |
|     else if(sType == "D")
 | |
|         ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(nID), oTarget, 6.0);
 | |
|     else if(sType == "P")
 | |
|         ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(nID), oTarget);
 | |
|     else if(sType == "B")
 | |
|         ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(nID, OBJECT_SELF, BODY_NODE_CHEST), oTarget, 6.0);  
 | |
| }    
 | |
| 
 | |
| void main()
 | |
| {
 | |
|     object oPC = GetPCSpeaker();
 | |
|     object oTarget = GetObjectByTag("EffectCreature");
 | |
|     /* Get the value of the local variable set by the conversation script calling
 | |
|      * this script. Values:
 | |
|      * DYNCONV_ABORTED     Conversation aborted
 | |
|      * DYNCONV_EXITED      Conversation exited via the exit node
 | |
|      * DYNCONV_SETUP_STAGE System's reply turn
 | |
|      * 0                   Error - something else called the script
 | |
|      * Other               The user made a choice
 | |
|      */
 | |
|     int nValue = GetLocalInt(oPC, DYNCONV_VARIABLE);
 | |
|     // The stage is used to determine the active conversation node.
 | |
|     // 0 is the entry node.
 | |
|     int nStage = GetStage(oPC);
 | |
| 
 | |
|     // Check which of the conversation scripts called the scripts
 | |
|     if(nValue == 0) // All of them set the DynConv_Var to non-zero value, so something is wrong -> abort
 | |
|         return;
 | |
| 
 | |
|     if(nValue == DYNCONV_SETUP_STAGE)
 | |
|     {
 | |
|         // Check if this stage is marked as already set up
 | |
|         // This stops list duplication when scrolling
 | |
|         if(!GetIsStageSetUp(nStage, oPC))
 | |
|         {
 | |
|             if(nStage == STAGE_ENTRY)
 | |
|             {
 | |
|                 SetHeader("Select an effect category:");
 | |
|                 AddChoice("Bioware effects", 1);
 | |
|                 AddChoice("Gaoneng's Pentagrams & Summoning Circles", 2);
 | |
|                 AddChoice("Shadguy's effects", 3);
 | |
|                 AddChoice("apply a random effect", 4);
 | |
|                 AddChoice("clear any lingering effects", -1);
 | |
|                 MarkStageSetUp(nStage, oPC); // This prevents the setup being run for this stage again until MarkStageNotSetUp is called for it
 | |
|                 SetDefaultTokens(); // Set the next, previous, exit and wait tokens to default values            
 | |
|             }            
 | |
|             else if(nStage == STAGE_BIOWARE_VISUAL_EFFECT)
 | |
|             {
 | |
|                 SetHeader("Select an effect:");
 | |
|                 AddVisualEffectList(0, 600, 100);
 | |
|                 MarkStageSetUp(nStage, oPC); // This prevents the setup being run for this stage again until MarkStageNotSetUp is called for it
 | |
|                 SetDefaultTokens(); // Set the next, previous, exit and wait tokens to default values
 | |
|             }        
 | |
|             else if(nStage == STAGE_SHADEGUY_SCRIPT_EFFECT)
 | |
|             {
 | |
|                 SetHeader("Select an effect:");
 | |
|                 AddVisualEffectList(1000, 1400, 100);
 | |
|                 MarkStageSetUp(nStage, oPC); // This prevents the setup being run for this stage again until MarkStageNotSetUp is called for it
 | |
|                 SetDefaultTokens(); // Set the next, previous, exit and wait tokens to default values
 | |
|             }     
 | |
|             else if(nStage == STAGE_GAONENG_SCRIPT_EFFECT)
 | |
|             {
 | |
|                 SetHeader("Select an effect:");
 | |
|                 AddChoice("Circle", 1);
 | |
|                 AddChoice("Spiral", 2);
 | |
|                 AddChoice("Spring", 3);
 | |
|                 AddChoice("Polygon", 4);
 | |
|                 AddChoice("PolygonalSpiral", 5);
 | |
|                 AddChoice("PolygonalSpring", 6);
 | |
|                 AddChoice("Pentacle", 7);
 | |
|                 AddChoice("PentaclicSpiral", 8);
 | |
|                 AddChoice("PentaclicSpring", 9);
 | |
|                 AddChoice("Star", 10);
 | |
|                 AddChoice("StarSpiral", 11);
 | |
|                 AddChoice("StarSpring", 12);
 | |
|                 AddChoice("Hemisphere", 13);
 | |
|                 AddChoice("Sphere", 14);
 | |
|                 MarkStageSetUp(nStage, oPC); // This prevents the setup being run for this stage again until MarkStageNotSetUp is called for it
 | |
|                 SetDefaultTokens(); // Set the next, previous, exit and wait tokens to default values
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         // Do token setup
 | |
|         SetupTokens();
 | |
|     }
 | |
|     // End of conversation cleanup
 | |
|     else if(nValue == DYNCONV_EXITED)
 | |
|     {
 | |
|         // Add any locals set through this conversation
 | |
|     }
 | |
|     // Abort conversation cleanup.
 | |
|     // NOTE: This section is only run when the conversation is aborted
 | |
|     // while aborting is allowed. When it isn't, the dynconvo infrastructure
 | |
|     // handles restoring the conversation in a transparent manner
 | |
|     else if(nValue == DYNCONV_ABORTED)
 | |
|     {
 | |
|         // Add any locals set through this conversation
 | |
|     }
 | |
|     // Handle PC responses
 | |
|     else
 | |
|     {
 | |
|         // variable named nChoice is the value of the player's choice as stored when building the choice list
 | |
|         // variable named nStage determines the current conversation node
 | |
|         int nChoice = GetChoice(oPC);
 | |
|         if(nStage == STAGE_ENTRY)
 | |
|         {
 | |
|             if(nChoice == 1)
 | |
|                 nStage = STAGE_BIOWARE_VISUAL_EFFECT;
 | |
|             else if(nChoice == 2)    
 | |
|                 nStage = STAGE_GAONENG_SCRIPT_EFFECT;
 | |
|             else if(nChoice == 3)    
 | |
|                 nStage = STAGE_SHADEGUY_SCRIPT_EFFECT;
 | |
|             else if(nChoice == 4)    
 | |
|             {
 | |
|                 //random
 | |
|                 int nRandom = Random(3);
 | |
|                 if(nRandom == 0
 | |
|                     || nRandom == 1)
 | |
|                 {   
 | |
|                     int nVFX;
 | |
|                     if(nRandom == 0)
 | |
|                         nVFX = Random(580);
 | |
|                     else if(nRandom == 1)
 | |
|                         nVFX = Random(327)+1000;
 | |
|                     ApplyStandardEffect(Random(14)+1, oTarget); 
 | |
|                 }
 | |
|                 else
 | |
|                     DrawScriptedEffect(nChoice, oTarget);     
 | |
|             }
 | |
|             else if(nChoice == -1)    
 | |
|                 AssignCommand(oTarget, ForceRest(oTarget));
 | |
|         }
 | |
|         else if(nStage == STAGE_BIOWARE_VISUAL_EFFECT
 | |
|             || nStage == STAGE_SHADEGUY_SCRIPT_EFFECT)
 | |
|         {
 | |
|             ApplyStandardEffect(nChoice, oTarget);       
 | |
|         }
 | |
|         else if(nStage == STAGE_GAONENG_SCRIPT_EFFECT)
 | |
|         {      
 | |
|             DrawScriptedEffect(nChoice, oTarget);
 | |
|         }
 | |
| 
 | |
|         // Store the stage value. If it has been changed, this clears out the choices
 | |
|         SetStage(nStage, oPC);
 | |
|     }
 | |
| }
 |