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.
		
			
				
	
	
		
			86 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /*:://////////////////////////////////////////////
 | |
| //:: Spell Name Find the Path
 | |
| //:: Spell FileName phs_s_findthpthc
 | |
| //:://////////////////////////////////////////////
 | |
|     This is the find the paths heartbeat, "c" script.
 | |
| 
 | |
|     - Moves only if the master is in 10M.
 | |
|     - Moves to the target object
 | |
|     - Removes itself if the master is not valid (or is dead) or if the spell finnishes.
 | |
| //:://////////////////////////////////////////////
 | |
|     Creates a henchmen (should work fine with Hordes anyway) which will move
 | |
|     with ActionMoveToObject and using an object a PC will set for location to
 | |
|     move to.
 | |
| 
 | |
|     The object is set via. the spell conversation (however that is done) if they
 | |
|     have the spell memorised.
 | |
| 
 | |
|     Note: 3 rounds to cast
 | |
| 
 | |
|     Need to add "henchmen" scripts and new creature. Make the creature eathreal,
 | |
|     maybe, or just ignore.
 | |
| //:://////////////////////////////////////////////
 | |
| //:: Created By: Jasperre
 | |
| //::////////////////////////////////////////////*/
 | |
| 
 | |
| // Destroys ourself.
 | |
| void Go(string sMessage);
 | |
| 
 | |
| void main()
 | |
| {
 | |
|     // Heartbeat counter.
 | |
|     int iHeartbeatsLeft = GetLocalInt(OBJECT_SELF, "PHS_SPELL_FIND_THE_PATH_DURATION_COUNTER");
 | |
|     // Master
 | |
|     object oMaster = GetMaster();
 | |
| 
 | |
|     // Stop before anything else.
 | |
|     ClearAllActions();
 | |
| 
 | |
| 
 | |
|     // Remove it by 1
 | |
|     iHeartbeatsLeft--;
 | |
| 
 | |
|     // If the new amount is 1 or over, carry on moving, else stop.
 | |
|     if(iHeartbeatsLeft >= 1 && GetIsObjectValid(oMaster))
 | |
|     {
 | |
|         // Set the amount
 | |
|         SetLocalInt(OBJECT_SELF, "PHS_SPELL_FIND_THE_PATH_DURATION_COUNTER", iHeartbeatsLeft);
 | |
| 
 | |
|         // Make sure the master is within 10M
 | |
|         if(GetDistanceToObject(oMaster) <= 10.0)
 | |
|         {
 | |
|             // Get the location to move to
 | |
|             object oTarget = GetLocalObject(OBJECT_SELF, "PHS_SPELL_FIND_THE_PATH_OBJECT");
 | |
| 
 | |
|             if(GetIsObjectValid(oTarget))
 | |
|             {
 | |
|                 ActionMoveToObject(oTarget, TRUE);
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 // Go - no location left.
 | |
|                 Go("Find the path Ended, No location to go to");
 | |
|             }
 | |
|         }
 | |
|         return;
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|         // Else, there are no heartbeats left - we go!
 | |
|         // - Can be if we have no master
 | |
|         Go("Find the Path finished");
 | |
|         return;
 | |
|     }
 | |
| }
 | |
| 
 | |
| void Go(string sMessage)
 | |
| {
 | |
|     SendMessageToPC(GetMaster(), sMessage);
 | |
|     // Else, there are no heartbeats left - we go!
 | |
|     effect eGo = EffectVisualEffect(VFX_IMP_UNSUMMON);
 | |
|     ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eGo, GetLocation(OBJECT_SELF));
 | |
|     SetPlotFlag(OBJECT_SELF, FALSE);
 | |
|     SetImmortal(OBJECT_SELF, FALSE);
 | |
|     DestroyObject(OBJECT_SELF);
 | |
| }
 |