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.
		
			
				
	
	
		
			134 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /*:://////////////////////////////////////////////
 | ||
| //:: Spell Name Refuge
 | ||
| //:: Spell FileName PHS_S_Refuge
 | ||
| //:://////////////////////////////////////////////
 | ||
| //:: In Game Spell desctiption
 | ||
| //:://////////////////////////////////////////////
 | ||
|     Conjuration (Teleportation)
 | ||
|     Level: Clr 7, Sor/Wiz 9
 | ||
|     Components: V, S, M
 | ||
|     Casting Time: 1 standard action
 | ||
|     Range: Touch
 | ||
|     Target: Object touched
 | ||
|     Duration: Permanent until discharged
 | ||
|     Saving Throw: None
 | ||
|     Spell Resistance: No
 | ||
| 
 | ||
|     You create powerful magic in some specially prepared object. This object
 | ||
|     contains the power to instantly transport its possessor across any distance
 | ||
|     within the same plane to you. Once the item is transmuted, only party
 | ||
|     members can activate it (and must be in your party at the time of breaking
 | ||
|     the item). When transmuted, breaking the item will cause it to be activated.
 | ||
|     When this is done, the individual and all objects it is wearing and carrying
 | ||
|     (to a maximum of the character’s heavy load) are instantly transported to
 | ||
|     your abode. No other creatures are affected (aside from familiars).
 | ||
| 
 | ||
|     You can alter the spell when casting it so that it transports you to within
 | ||
|     3 meters of the possessor of the item when it is broken. You will have a
 | ||
|     general idea of the location and situation of the item possessor at the time
 | ||
|     the refuge spell is discharged, but once you decide to alter the spell in
 | ||
|     this fashion, you have no choice whether or not to be transported. Again,
 | ||
|     only current party members may activate it.
 | ||
| 
 | ||
|     Material Component: The specially prepared object, whose construction
 | ||
|     requires gems worth 1,500 gp.
 | ||
| //:://////////////////////////////////////////////
 | ||
| //:: Spell Effects Applied / Notes
 | ||
| //:://////////////////////////////////////////////
 | ||
|     Can be cast on any item.
 | ||
| 
 | ||
|     Once the item has the spell, it has the caster's name set on it. Only PCs
 | ||
|     can cast this spell.
 | ||
| 
 | ||
|     Once used, the item power set (permamently) on the thing that is, it will
 | ||
|     transport the PC to the caster, or, Vice Versa.
 | ||
| 
 | ||
|     Cannot be dispelled, for easyness sakes, and needs a material component.
 | ||
| 
 | ||
|     It was also "to the casters Abode", but heck, that'd be so much more complicated
 | ||
|     and unfun.
 | ||
| //:://////////////////////////////////////////////
 | ||
| //:: Created By: Jasperre
 | ||
| //::////////////////////////////////////////////*/
 | ||
| 
 | ||
| #include "PHS_INC_SPELLS"
 | ||
| 
 | ||
| void main()
 | ||
| {
 | ||
|     // Spell Hook Check.
 | ||
|     if(!PHS_SpellHookCheck(PHS_SPELL_REFUGE)) return;
 | ||
| 
 | ||
|     //Declare major variables
 | ||
|     object oCaster = OBJECT_SELF;
 | ||
|     object oTarget = GetSpellTargetObject();// Should be a specific item
 | ||
|     object oPossessor = GetItemPossessor(oTarget);
 | ||
|     // * Only PC's can cast this. The name defines the PC.
 | ||
|     string sName = GetPCPlayerName(oCaster) + GetName(oCaster);
 | ||
|     // If TRUE, the caster is teleported to the target, so
 | ||
|     // it defaults to FALSE, which means the person using it (the target) is
 | ||
|     // teleported to the caster.
 | ||
|     // * It is kinda a "Move the caster to the target?" question for the name reference.
 | ||
|     int bMoveCaster = GetLocalInt(oCaster, "PHS_SPELL_REFUGE_MOVE_CASTER");
 | ||
| 
 | ||
|     // Check if it is a Pc casting it.
 | ||
|     if(oPossessor != oCaster)
 | ||
|     {
 | ||
|         // Doesn't work
 | ||
|         FloatingTextStringOnCreature("*Only a Player Character can cast this spell*", oCaster, FALSE);
 | ||
|         return;
 | ||
|     }
 | ||
| 
 | ||
|     // Check the item tag
 | ||
|     if(GetTag(oTarget) != PHS_ITEM_SPECIAL_REFUGE)
 | ||
|     {
 | ||
|         // Doesn't work
 | ||
|         FloatingTextStringOnCreature("*You may only transmute a specially prepared object*", oCaster, FALSE);
 | ||
|         return;
 | ||
|     }
 | ||
| 
 | ||
|     // Check if oPossessor is valid, and the caster
 | ||
|     if(oPossessor != oCaster)
 | ||
|     {
 | ||
|         // Doesn't work
 | ||
|         FloatingTextStringOnCreature("*You cannot cast this on an item not in your inventory*", oCaster, FALSE);
 | ||
|         return;
 | ||
|     }
 | ||
| 
 | ||
|     // Make sure they are not immune to spells (IE: Not plot)
 | ||
|     if(PHS_TotalSpellImmunity(oTarget)) return;
 | ||
| 
 | ||
|     // Declare effects
 | ||
|     effect eVis = EffectVisualEffect(VFX_IMP_HEAD_ODD);
 | ||
|     itemproperty IP_Spell = ItemPropertyCastSpell(PHS_IP_CONST_CASTSPELL_REFUGE, IP_CONST_CASTSPELL_NUMUSES_SINGLE_USE);
 | ||
| 
 | ||
|     // Fire cast spell at event for the specified target
 | ||
|     PHS_SignalSpellCastAt(oPossessor, PHS_SPELL_REFUGE, FALSE);
 | ||
| 
 | ||
|     // Cannot have this property already
 | ||
|     if(IPGetItemHasProperty(oTarget, IP_Spell, DURATION_TYPE_PERMANENT, TRUE))
 | ||
|     {
 | ||
|         // Doesn't work
 | ||
|         FloatingTextStringOnCreature("*This item already has a refuge spell transmuted upon it*", oCaster, FALSE);
 | ||
|         return;
 | ||
|     }
 | ||
| 
 | ||
|     // Sucess notification
 | ||
|     if(bMoveCaster == FALSE)
 | ||
|     {
 | ||
|         // Moves the target to the caster
 | ||
|         FloatingTextStringOnCreature("*You transmute the item so that a player can teleport himself to you*", oCaster, FALSE);
 | ||
|     }
 | ||
|     else
 | ||
|     {
 | ||
|         // Moves the caster to the target
 | ||
|         FloatingTextStringOnCreature("*You transmute the item so that a player can force you to teleport to him*", oCaster, FALSE);
 | ||
|     }
 | ||
| 
 | ||
|     // The person to teleport to/from.
 | ||
|     SetLocalString(oTarget, "PHS_REFUGE_CASTER_NAME", sName);
 | ||
|     // If this is TRUE, we move the caster to the user, not the user to the caster
 | ||
|     SetLocalInt(oTarget, "PHS_REFUGE_MOVE_CASTER", bMoveCaster);
 | ||
|     // We can add the item property
 | ||
|     AddItemProperty(DURATION_TYPE_PERMANENT, IP_Spell, oTarget);
 | ||
| }
 |