70 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
int IsColdSubType( object oTarget )
 | 
						|
{
 | 
						|
    object oHide = GetItemInSlot(INVENTORY_SLOT_CARMOUR,oTarget);
 | 
						|
 | 
						|
    if ( !GetIsObjectValid( oHide ) )
 | 
						|
        return FALSE;
 | 
						|
 | 
						|
    int bCold = FALSE;
 | 
						|
    int bFire = FALSE;
 | 
						|
    int nIPType;
 | 
						|
    int nIPSubType;
 | 
						|
 | 
						|
    itemproperty ipIP = GetFirstItemProperty(oHide);
 | 
						|
 | 
						|
    while ( GetIsItemPropertyValid(ipIP) )
 | 
						|
    {
 | 
						|
        nIPType =  GetItemPropertyType(ipIP);
 | 
						|
        nIPSubType = GetItemPropertySubType(ipIP);
 | 
						|
        if ( nIPType == ITEM_PROPERTY_DAMAGE_VULNERABILITY &&
 | 
						|
             nIPSubType == 10 ) // fire vuln
 | 
						|
            bFire = TRUE;
 | 
						|
        if ( nIPType == ITEM_PROPERTY_IMMUNITY_DAMAGE_TYPE &&
 | 
						|
             nIPSubType == 7 ) // cold immunity
 | 
						|
            bCold = TRUE;
 | 
						|
 | 
						|
        if ( bFire && bCold )
 | 
						|
            return TRUE;
 | 
						|
 | 
						|
        ipIP = GetNextItemProperty(oHide);
 | 
						|
    }
 | 
						|
    return FALSE;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
void main()
 | 
						|
{
 | 
						|
    object oCaster = GetAreaOfEffectCreator();
 | 
						|
 | 
						|
    effect eCold;
 | 
						|
    effect eVis = EffectVisualEffect(VFX_IMP_FROST_S);
 | 
						|
    effect eRegen = EffectRegenerate(10,6.0);
 | 
						|
    effect eTurn = EffectTurnResistanceIncrease(6);
 | 
						|
    effect eVis2 = EffectVisualEffect(VFX_IMP_SUPER_HEROISM);
 | 
						|
 | 
						|
    object oTarget = GetFirstInPersistentObject();
 | 
						|
    while ( GetIsObjectValid(oTarget ) )
 | 
						|
    {
 | 
						|
        if ( oTarget != oCaster && !GetIsDead(oTarget) )
 | 
						|
        {
 | 
						|
            if ( GetIsEnemy(oTarget,oCaster))
 | 
						|
            {
 | 
						|
                eCold = EffectDamage(d10(2),DAMAGE_TYPE_COLD);
 | 
						|
                ApplyEffectToObject(DURATION_TYPE_INSTANT,eCold,oTarget);
 | 
						|
                ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oTarget);
 | 
						|
            }
 | 
						|
            if ( IsColdSubType(oTarget) )
 | 
						|
            {
 | 
						|
                ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis2,oTarget);
 | 
						|
                ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eRegen,oTarget,6.0);
 | 
						|
                if ( GetRacialType(oTarget) == RACIAL_TYPE_UNDEAD )
 | 
						|
                {
 | 
						|
                    ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eTurn,oTarget,6.0);
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
        oTarget = GetNextInPersistentObject();
 | 
						|
    }
 | 
						|
}
 |