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.
		
			
				
	
	
		
			62 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| #include "moi_inc_moifunc" 
 | |
| #include "inc_dynconv"
 | |
| 
 | |
| void main()
 | |
| {
 | |
|     int nEvent = GetRunningEvent();
 | |
|     if(DEBUG) DoDebug("moi_soulborn running, event: " + IntToString(nEvent));
 | |
| 
 | |
|     // Get the PC. This is event-dependent
 | |
|     object oMeldshaper;
 | |
|     switch(nEvent)
 | |
|     {
 | |
|         case EVENT_ONPLAYERREST_FINISHED:   oMeldshaper = GetLastBeingRested();      break;
 | |
|         case EVENT_ONCLIENTENTER:           oMeldshaper = GetEnteringObject();       break;
 | |
| 
 | |
|         default:
 | |
|             oMeldshaper = OBJECT_SELF;
 | |
|     }
 | |
|     int nClass = GetLevelByClass(CLASS_TYPE_SOULBORN, oMeldshaper);
 | |
|     object oSkin = GetPCSkin(oMeldshaper);
 | |
| 
 | |
| 	if (!GetLocalInt(oMeldshaper, "SoulbornDelay"))
 | |
| 	{
 | |
| 		SetLocalInt(oMeldshaper, "SoulbornDelay", TRUE);
 | |
| 		DelayCommand(0.1, DeleteLocalInt(oMeldshaper, "SoulbornDelay"));
 | |
| 	    // We aren't being called from any event, instead from EvalPRCFeats
 | |
| 	    if(nEvent == FALSE)
 | |
| 	    {
 | |
| 	        // Add eventhook to OnRestFinished to reset the used marker
 | |
| 	        if (nClass >= 4) 
 | |
| 	        {
 | |
| 	        	AddEventScript(oMeldshaper, EVENT_ONPLAYERREST_FINISHED, "moi_soulborn", TRUE, FALSE); 
 | |
| 	        	AddEventScript(oMeldshaper, EVENT_ONPLAYEREQUIPITEM,     "moi_soulborn", TRUE, FALSE);
 | |
| 	        }
 | |
| 	        if (nClass >= 2) 
 | |
| 	        {
 | |
| 	        	object oSkin = GetPCSkin(oMeldshaper);
 | |
| 				if (GetAlignmentLawChaos(oMeldshaper) == ALIGNMENT_LAWFUL && GetAlignmentGoodEvil(oMeldshaper) == ALIGNMENT_GOOD)
 | |
| 					IPSafeAddItemProperty(oSkin, ItemPropertyImmunityMisc(IP_CONST_IMMUNITYMISC_FEAR), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, TRUE);
 | |
| 				if (GetAlignmentLawChaos(oMeldshaper) == ALIGNMENT_CHAOTIC && GetAlignmentGoodEvil(oMeldshaper) == ALIGNMENT_GOOD)
 | |
| 					IPSafeAddItemProperty(oSkin, ItemPropertyImmunityMisc(IP_CONST_IMMUNITYMISC_PARALYSIS), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, TRUE);	
 | |
| 				if (GetAlignmentLawChaos(oMeldshaper) == ALIGNMENT_LAWFUL && GetAlignmentGoodEvil(oMeldshaper) == ALIGNMENT_EVIL)	
 | |
| 					SetLocalInt(oMeldshaper, "IncarnumDefenseLE", TRUE);
 | |
| 				if (GetAlignmentLawChaos(oMeldshaper) == ALIGNMENT_CHAOTIC && GetAlignmentGoodEvil(oMeldshaper) == ALIGNMENT_EVIL)
 | |
| 	        		SetLocalInt(oMeldshaper, "IncarnumDefenseCE", TRUE);
 | |
| 	        }
 | |
| 	    }
 | |
| 	    else if(nEvent == EVENT_ONPLAYERREST_FINISHED && (PRCGetIsAliveCreature(oMeldshaper)|| GetHasFeat(FEAT_UNDEAD_MELDSHAPER, oMeldshaper)))    
 | |
| 	    {
 | |
| 	    	ClearMeldShapes(oMeldshaper);
 | |
| 	        AssignCommand(oMeldshaper, ClearAllActions(TRUE));
 | |
| 	        SetLocalInt(oMeldshaper, "MeldshapeClass", CLASS_TYPE_SOULBORN);
 | |
| 	        StartDynamicConversation("moi_meldshapecnv", oMeldshaper, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oMeldshaper);
 | |
| 	    }    
 | |
| 	    else if(nEvent == EVENT_ONPLAYEREQUIPITEM)
 | |
| 	    {
 | |
| 	        oMeldshaper   = GetItemLastEquippedBy();
 | |
| 	        ChakraBindUnequip(oMeldshaper, GetItemLastEquipped());
 | |
| 	    }    
 | |
| 	}    
 | |
| }
 |