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.
		
			
				
	
	
		
			103 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /*:://////////////////////////////////////////////
 | ||
| //:: Spell Name Deathwatch
 | ||
| //:: Spell FileName PHS_S_Deathwatch
 | ||
| //:://////////////////////////////////////////////
 | ||
| //:: In Game Spell desctiption
 | ||
| //:://////////////////////////////////////////////
 | ||
|     30ft range (10M), Instant duration. Cone-shaped emanation.
 | ||
| 
 | ||
|     Using the foul sight granted by the powers of unlife, you can determine the
 | ||
|     condition of creatures near death within the spell’s range. You instantly
 | ||
|     know whether each creature within the area is dead, fragile (alive and
 | ||
|     wounded, with 3 or fewer hit points left), fighting off death (alive with 4
 | ||
|     or more hit points), undead, or neither alive nor dead (such as a construct).
 | ||
| 
 | ||
|     Deathwatch sees through any spell or ability that allows creatures to feign
 | ||
|     death.
 | ||
| //:://////////////////////////////////////////////
 | ||
| //:: Spell Effects Applied / Notes
 | ||
| //:://////////////////////////////////////////////
 | ||
|     I think the duration part can be removed.
 | ||
| 
 | ||
|     As above:
 | ||
|     dead <= -10
 | ||
|     fragile <= 3
 | ||
|     fighting off death >= 4
 | ||
|     undead = undead
 | ||
|     construct = construct
 | ||
| //:://////////////////////////////////////////////
 | ||
| //:: Created By: Jasperre
 | ||
| //::////////////////////////////////////////////*/
 | ||
| 
 | ||
| #include "PHS_INC_SPELLS"
 | ||
| 
 | ||
| void main()
 | ||
| {
 | ||
|     // Spell hook check
 | ||
|     if(!PHS_SpellHookCheck(PHS_SPELL_DEATHWATCH)) return;
 | ||
| 
 | ||
|     // Declare major variables
 | ||
|     object oCaster = OBJECT_SELF;
 | ||
|     location lTarget = GetSpellTargetLocation();
 | ||
|     float fDelay;
 | ||
|     string sString;
 | ||
|     int nHP;
 | ||
| 
 | ||
|     // Get the first target in the area - 30ft, 10M range.
 | ||
|     object oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTarget, TRUE);
 | ||
|     while(GetIsObjectValid(oTarget))
 | ||
|     {
 | ||
|         // Start string as name
 | ||
|         sString = GetName(oTarget);
 | ||
|         // Determine race
 | ||
|         switch(GetRacialType(oTarget))
 | ||
|         {
 | ||
|             // Undead
 | ||
|             case RACIAL_TYPE_UNDEAD:
 | ||
|             {
 | ||
|                 // Add on: " is an undead creature"
 | ||
|                 sString += " is an undead creature.";
 | ||
|             }
 | ||
|             break;
 | ||
| 
 | ||
|             // Constructs
 | ||
|             case RACIAL_TYPE_CONSTRUCT:
 | ||
|             {
 | ||
|                 // Add on: " is an construct"
 | ||
|                 sString += " is an construct.";
 | ||
|             }
 | ||
|             break;
 | ||
| 
 | ||
|             // Anything else
 | ||
|             default:
 | ||
|             {
 | ||
|                 // 3 states: "dead, dying, not dead"
 | ||
|                 nHP = GetCurrentHitPoints(oTarget);
 | ||
|                 // Dead: Must be actually dead (not dying!)
 | ||
|                 if(nHP <= -10)
 | ||
|                 {
 | ||
|                     sString += " is a dead creature.";
 | ||
|                 }
 | ||
|                 // Fragile - 3 or less, but not dead, can be dying.
 | ||
|                 else if(nHP <= 3)
 | ||
|                 {
 | ||
|                     sString += " is a fragile creature.";
 | ||
|                 }
 | ||
|                 // fighting off death - everything else, oddly enough.
 | ||
|                 else
 | ||
|                 {
 | ||
|                     sString += " is a creature fighting off death.";
 | ||
|                 }
 | ||
|             }
 | ||
|             break;
 | ||
|         }
 | ||
|         // Get delay - quite a big one.
 | ||
|         fDelay = GetDistanceToObject(oTarget)/2.0;
 | ||
|         // Send message to PC based on range.
 | ||
|         DelayCommand(fDelay, SendMessageToPC(oCaster, "[Deathwatch] " + GetName(oTarget) + " is " + sString));
 | ||
| 
 | ||
|         // Get next target
 | ||
|         oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTarget, TRUE);
 | ||
|     }
 | ||
| }
 |