Code: Select all
void ALFA_InitializePhysicalObject(object oObject) {
int nHardness = GetHardness(oObject);
effect eEffects = EffectDamageResistance(DAMAGE_TYPE_ACID, nHardness);
eEffects = EffectLinkEffects(eEffects, EffectDamageResistance(DAMAGE_TYPE_ACID, nHardness) );
eEffects = EffectLinkEffects(eEffects, EffectDamageResistance(DAMAGE_TYPE_COLD, nHardness) );
eEffects = EffectLinkEffects(eEffects, EffectDamageResistance(DAMAGE_TYPE_DIVINE, nHardness) );
eEffects = EffectLinkEffects(eEffects, EffectDamageResistance(DAMAGE_TYPE_ELECTRICAL, nHardness) );
eEffects = EffectLinkEffects(eEffects, EffectDamageResistance(DAMAGE_TYPE_FIRE, nHardness) );
eEffects = EffectLinkEffects(eEffects, EffectDamageResistance(DAMAGE_TYPE_MAGICAL, nHardness) );
eEffects = EffectLinkEffects(eEffects, EffectDamageResistance(DAMAGE_TYPE_NEGATIVE, nHardness) );
eEffects = EffectLinkEffects(eEffects, EffectDamageResistance(DAMAGE_TYPE_POSITIVE, nHardness) );
eEffects = EffectLinkEffects(eEffects, EffectDamageResistance(DAMAGE_TYPE_SONIC, nHardness) );
eEffects = EffectLinkEffects(eEffects, EffectDamageImmunityIncrease(DAMAGE_TYPE_ACID, 0) );
eEffects = EffectLinkEffects(eEffects, EffectDamageImmunityIncrease(DAMAGE_TYPE_BLUDGEONING, 0) );
eEffects = EffectLinkEffects(eEffects, EffectDamageImmunityIncrease(DAMAGE_TYPE_COLD, 75) );
eEffects = EffectLinkEffects(eEffects, EffectDamageImmunityIncrease(DAMAGE_TYPE_DIVINE, 0) );
eEffects = EffectLinkEffects(eEffects, EffectDamageImmunityIncrease(DAMAGE_TYPE_FIRE, 50) );
eEffects = EffectLinkEffects(eEffects, EffectDamageImmunityIncrease(DAMAGE_TYPE_ELECTRICAL, 50) );
eEffects = EffectLinkEffects(eEffects, EffectDamageImmunityIncrease(DAMAGE_TYPE_MAGICAL, 0) );
eEffects = EffectLinkEffects(eEffects, EffectDamageImmunityIncrease(DAMAGE_TYPE_NEGATIVE, 0) );
eEffects = EffectLinkEffects(eEffects, EffectDamageImmunityIncrease(DAMAGE_TYPE_PIERCING, 100) );
eEffects = EffectLinkEffects(eEffects, EffectDamageImmunityIncrease(DAMAGE_TYPE_POSITIVE, 0) );
eEffects = EffectLinkEffects(eEffects, EffectDamageImmunityIncrease(DAMAGE_TYPE_SLASHING, 0) );
eEffects = EffectLinkEffects(eEffects, EffectDamageImmunityIncrease(DAMAGE_TYPE_SONIC, 50) );
eEffects = EffectLinkEffects(eEffects, EffectImmunity(IMMUNITY_TYPE_CRITICAL_HIT) );
ApplyEffectToObject(DURATION_TYPE_PERMANENT, SupernaturalEffect(eEffects), oObject);
}The following are the states of the mod I tested with, and the memory footprint of a running nwserver:
Thats 13k of RAM for those effects per placeable, while the placeables themselves only take up 2.3k each. Needless to say we'll have to apply these damage rules OnDamaged, or modify them a bit1,536 placeables, 43,940k with full 3.5 damage rules.
1,536 placeables, 23,944k with no damage rules.
0 placeables (cut their area from the mod), 20,344k
