Memory footprint of 3.5 damage on doors & placeables
Posted: Tue Aug 22, 2006 11:04 am
I had been doing 3.5's damage rules on non-plot, non-static doors and placeables in the following manner:
Mostly I dislike those low energy damage weapons being able to bust down metal doors. I knew this would increase the memory footprint of each door, but I didn't think it would increase it much compared to the footprint of the door itself. However, in testing with 1,536 placeables, I found out the opposite was true.
The following are the states of the mod I tested with, and the memory footprint of a running nwserver:
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