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.
		
			
				
	
	
		
			111 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| //::///////////////////////////////////////////////
 | |
| //:: Baelnorn Projection - Eventhooks
 | |
| //:: prc_bn_prj_event
 | |
| //::///////////////////////////////////////////////
 | |
| /**
 | |
|     This script prevents a Baelnorn using Projection
 | |
|     from picking up items. It forces an
 | |
|     ActionPutDownItem repeatedly until the item is
 | |
|     dropped.
 | |
| 
 | |
|     This script is fired via eventhook from the
 | |
|     OnAcquire event.
 | |
| 
 | |
| 
 | |
|     Possible problems
 | |
|     - The dropping may be workable around somehow.
 | |
|      - Might be replaced by a copy of the item to
 | |
|        ground and deletion of the original
 | |
|       - This has it's own problems. It will at the
 | |
|         very least break any object references to
 | |
|         the item.
 | |
| 
 | |
|     @author Ornedan
 | |
|     @date   Created  - 2005.05.18
 | |
|     @date   Modified - 2005.11.04
 | |
| */
 | |
| //:://////////////////////////////////////////////
 | |
| //:://////////////////////////////////////////////
 | |
| 
 | |
| #include "prc_alterations"
 | |
| 
 | |
| const float DROP_DELAY = 2.0f;
 | |
| 
 | |
| // A pseudo-hb function that checks if the item has been dropped yet
 | |
| // If it hasn't, clears action queue and queues another drop.
 | |
| void CheckIsDropped(object oCreature, object oItem)
 | |
| {
 | |
| 	if(DEBUG) DoDebug("prc_bn_prj_event: CheckIsDropped()");
 | |
| 	
 | |
|     if(GetItemPossessor(oItem) == oCreature)
 | |
|     {
 | |
| 	    if(DEBUG) DoDebug("prc_bn_prj_event:GetItemPosessor(oItem) == oCreature");
 | |
|         // No check for commandability here. Let's not break any cutscenes
 | |
|         // If cheating does occur, set the char to commandable first here.
 | |
|         //And remember to restore the setting.
 | |
| 
 | |
|         AssignCommand(oCreature, ClearAllActions());
 | |
|         AssignCommand(oCreature, ActionPutDownItem(oItem));
 | |
| 
 | |
|         DelayCommand(DROP_DELAY, CheckIsDropped(oCreature, oItem));
 | |
|     }
 | |
| }
 | |
| 
 | |
| void main()
 | |
| {
 | |
|     int nEvent = GetRunningEvent();
 | |
|     object oPC, oItem;
 | |
| if(DEBUG) DoDebug("prc_bn_prj_event running, event = " + IntToString(nEvent));
 | |
|     switch(nEvent)
 | |
|     {
 | |
|         // Nerf equipped weapons
 | |
|         case EVENT_ONPLAYEREQUIPITEM:
 | |
|             oPC   = GetItemLastEquippedBy();
 | |
|             oItem = GetItemLastEquipped();
 | |
| if(DEBUG) DoDebug("Equipped item, nerfing:"
 | |
|                 + "oPC = " + DebugObject2Str(oItem) + "\n"
 | |
|                 + "oItem = " + DebugObject2Str(oItem) + "\n"
 | |
|                   );
 | |
|             if(IPGetIsMeleeWeapon(oItem) || GetWeaponRanged(oItem))
 | |
|             {
 | |
|                 AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyNoDamage(), oItem);
 | |
|                 array_set_object(oPC, "PRC_BaelnornProj_Nerfed", array_get_size(oPC, "PRC_BaelnornProj_Nerfed"), oItem);
 | |
|             }
 | |
| 
 | |
|             break;
 | |
|         /*case EVENT_ONPLAYERUNEQUIPITEM:
 | |
|             break;*/
 | |
|         case EVENT_ONACQUIREITEM:
 | |
|             oPC   = GetModuleItemAcquiredBy();
 | |
|             oItem = GetModuleItemAcquired();
 | |
| 
 | |
|             AssignCommand(oPC, ActionPutDownItem(oItem));
 | |
|             DelayCommand(DROP_DELAY, CheckIsDropped(oPC, oItem));
 | |
| 
 | |
|             break;
 | |
|         /*case EVENT_ONUNAQUIREITEM:
 | |
|             break;*/
 | |
|         case EVENT_ONPLAYERREST_STARTED:
 | |
|             oPC = GetLastBeingRested();
 | |
| 
 | |
|             // Signal the projection monitoring HB
 | |
|             SetLocalInt(oPC, "PRC_BaelnornProjection_Abort", TRUE);
 | |
|             break;
 | |
|             
 | |
|         case EVENT_ONCLIENTENTER:
 | |
|              object oPC = GetEnteringObject();
 | |
|              
 | |
|              // Remove eventhooks
 | |
|              RemoveEventScript(oPC, EVENT_ONPLAYEREQUIPITEM,    "prc_bn_prj_event", TRUE, FALSE); // OnEquip
 | |
|              RemoveEventScript(oPC, EVENT_ONACQUIREITEM,        "prc_bn_prj_event", TRUE, FALSE); // OnAcquire
 | |
|              RemoveEventScript(oPC, EVENT_ONPLAYERREST_STARTED, "prc_bn_prj_event", FALSE, FALSE); // OnRest
 | |
|              RemoveEventScript(oPC, EVENT_ONCLIENTENTER,        "prc_bn_prj_event", TRUE, FALSE); //OnClientEnter   
 | |
|              break;
 | |
| 
 | |
|         /*default:
 | |
|             if(DEBUG) DoDebug("prc_bn_prj_event: ERROR: Called for unhandled event: " + IntToString(nEvent));
 | |
|             return;*/
 | |
|     }
 | |
| }
 | |
| 
 |