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.
		
			
				
	
	
		
			123 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| //::///////////////////////////////////////////////
 | |
| //:: Draconian Death Throes
 | |
| //:: race_deaththroes.nss
 | |
| //::///////////////////////////////////////////////
 | |
| /*
 | |
|     Handles the after-death effects of Draconians
 | |
| */
 | |
| //:://////////////////////////////////////////////
 | |
| //:: Created By: Fox
 | |
| //:: Created On: Feb 09, 2008
 | |
| //:://////////////////////////////////////////////
 | |
| 
 | |
| #include "prc_inc_spells"
 | |
| 
 | |
| //function to handle the damage from a kapak's acid pool
 | |
| void DoKapakAcidDamage(object oPC, location lTarget)
 | |
| {
 | |
|     float fRadius = FeetToMeters(5.0);
 | |
|     object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, fRadius, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
 | |
|     while(GetIsObjectValid(oTarget))
 | |
|     {
 | |
|         if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oPC))
 | |
|         {
 | |
|             float fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20;
 | |
| 
 | |
|             int nDamage = d6();
 | |
|             effect eDam = EffectDamage(nDamage, DAMAGE_TYPE_ACID);
 | |
|             effect eVis = EffectVisualEffect(VFX_IMP_ACID_S);
 | |
| 
 | |
|             // Apply effects to the currently selected target.
 | |
|             DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
 | |
|             DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
 | |
|         }
 | |
|         oTarget = MyNextObjectInShape(SHAPE_SPHERE, fRadius, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
 | |
|     }
 | |
| }
 | |
| 
 | |
| void main()
 | |
| {
 | |
|  /*   int nEvent = GetRunningEvent();
 | |
|     if(DEBUG) DoDebug("race_deaththroes running, event: " + IntToString(nEvent));
 | |
| 
 | |
|     // Init the PC.
 | |
|     object oPC;
 | |
| 
 | |
|     // We aren't being called from any event, instead from EvalPRCFeats
 | |
|     if(nEvent == FALSE)
 | |
|     {
 | |
|         oPC = OBJECT_SELF;
 | |
|         // Hook in the events
 | |
|         if(DEBUG) DoDebug("race_deaththroes: Adding eventhooks");
 | |
|         AddEventScript(oPC, EVENT_ONPLAYERDEATH, "race_deaththroes", TRUE, FALSE);
 | |
|     }
 | |
|     else if(nEvent == EVENT_ONPLAYERDEATH)
 | |
|     {
 | |
|         oPC = GetLastPlayerDied();
 | |
|         object oEnemy = GetLastHostileActor();
 | |
|         if(DEBUG) DoDebug("race_deaththroes - OnDeath");
 | |
| 
 | |
|         int nRace = GetRacialType(oPC);
 | |
|         if(nRace == RACIAL_TYPE_BOZAK)
 | |
|         {
 | |
|             location lTarget = GetLocation(oPC);
 | |
|             int nDC = 10 + GetAbilityModifier(ABILITY_CONSTITUTION, oPC);
 | |
| 
 | |
|             ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_PULSE_FIRE), lTarget);
 | |
| 
 | |
|             object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
 | |
|             while (GetIsObjectValid(oTarget))
 | |
|             {
 | |
|                 if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oPC))
 | |
|                 {
 | |
|                     float fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20;
 | |
| 
 | |
|                     int nDamage = d6();
 | |
|                     nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_NONE);
 | |
|                     if(nDamage)
 | |
|                     {
 | |
|                         effect eDam = EffectDamage(nDamage, DAMAGE_TYPE_MAGICAL);
 | |
|                         effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
 | |
| 
 | |
|                         DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
 | |
|                         DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
 | |
|                     }
 | |
|                 }
 | |
|                 oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
 | |
|             }
 | |
|         }
 | |
|         else if(nRace == RACIAL_TYPE_KAPAK)
 | |
|         {
 | |
|             int nDuration = d6();
 | |
|             location lTarget = GetLocation(oPC);
 | |
| 
 | |
|             //use a switch to set the proper amount of "pulses" of damage
 | |
|             switch(nDuration)
 | |
|             {
 | |
|                 case 6:
 | |
|                     DelayCommand(RoundsToSeconds(5), DoKapakAcidDamage(oPC, lTarget));
 | |
|                 case 5:
 | |
|                     DelayCommand(RoundsToSeconds(4), DoKapakAcidDamage(oPC, lTarget));
 | |
|                 case 4:
 | |
|                     DelayCommand(RoundsToSeconds(3), DoKapakAcidDamage(oPC, lTarget));
 | |
|                 case 3:
 | |
|                     DelayCommand(RoundsToSeconds(2), DoKapakAcidDamage(oPC, lTarget));
 | |
|                 case 2:
 | |
|                     DelayCommand(RoundsToSeconds(1), DoKapakAcidDamage(oPC, lTarget));
 | |
|                 case 1:
 | |
|                     DoKapakAcidDamage(oPC, lTarget); break;
 | |
|             }
 | |
|         }
 | |
|         else if(nRace == RACIAL_TYPE_BAAZ)
 | |
|         {
 | |
|             //disarm code
 | |
|             if(GetIsCreatureDisarmable(oEnemy) && !GetPRCSwitch(PRC_PNP_DISARM))
 | |
|             {
 | |
|                 if(DEBUG) DoDebug("race_deaththroes: Disarming Enemy");
 | |
|                 AssignCommand(oEnemy, ActionGiveItem(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oEnemy), oPC));
 | |
|             }
 | |
|             else
 | |
|                 if(DEBUG) DoDebug("race_deaththroes: Enemy not disarmable.");
 | |
|         }
 | |
|     }*/
 | |
| } |