Divine Damage (Holy Water) (RESOLVED!)

I effectively have a holy water grenade do this damage on a hit …

effect eDam = EffectDamage(d4(5), DAMAGE_TYPE_DIVINE);	
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);	

The target is a dwarf “ghost” with DR 1, but the damage feedback says this target took only 3 damage, when the minimum should be 5, should it not? (Assuming DR does not count here.)

Bottom line, what may this target (ghost) have on it that may be reducing the damage, or is there any other reason this damage appears reduced? E.g. Concealment? but I thought that only affected to hit chances.

Doesn’t DR 1 mean Damage Reduction 1? So shouldn’t minimum damage be 4?

TR

2 Likes

@Tarot_Redhand

Yes, at least four five … so I do not know what else affects damage like this. :thinking: (Edit: Concluded it should be a minimum of 5 as DR does not apply here.)

I thought I had misread this, but then checked again and it is the “Perfected” version being used here.

DR relates to base damage not elemental damage, does the ghost have damage resistance?
Put this on a trigger and put down a ghost and posses it by a DM and test. In my test DR did not reduce the amount.
int iDam = d4(5);
SendMessageToPC(GetEnteringObject(),IntToString(iDam));
effect eDam = EffectDamage(iDam, DAMAGE_TYPE_DIVINE);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, GetEnteringObject());

1 Like

@ShadowM

Well, that was my initial thinking as well, but I was hoping the DR may have accounted for one point at least.

This means the splash damage is also down by a point as well then.

Here are the “ghost” stats…

image

image

image

P.S. I’m not sure that SOAK stuff does anything here. (Unless it is messing with the end result.) :thinking:

Soak is how much it can absorb on each hit, so if DR worked with elemental damage nothing would get through. So if the creature is hit with a weapon that not +1 or better then 50 points are absorbed. Incorporeal creature actually can’t take any damage from any non-magical damage (so the 50 makes sense) Might want to check it spawn script, sometimes people put extra stuff there. The script I gave you should or if you put feedback info like in your scripts you see how much damage is being absorbed.

1 Like

@ShadowM

I am that “people”. :wink: (It’s from my own module.)

As far as I can see, the script should have applied both better damage and splash damage, but both end scores are lower than expected.

Here is the full holy water damage passed …

int nDmg = 0; int nSplashDmg = 0;
	
	if (sTag == "x1_wmgrenade005"){nDmg = d4(2); nSplashDmg = 1;}
	else if (sTag == "n2_it_holy_2"){nDmg = d4(3); nSplashDmg = 2;}
	else if (sTag == "n2_it_holy_3"){nDmg = d4(4); nSplashDmg = d4(1);}
	else if (sTag == "n2_it_holy_4"){nDmg = d4(5); nSplashDmg = d4(1) + 1;}
		
	SendMessageToAllPCs(CWHITE + GetFirstName(OBJECT_SELF) + CORCHID + " throws a grenade: Holy Water!");
    
	LBDoGrenade(nDmg, nSplashDmg, VFX_HIT_SPELL_HOLY, VFX_HIT_AOE_HOLY, DAMAGE_TYPE_DIVINE, RADIUS_SIZE_MEDIUM, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, RACIAL_TYPE_UNDEAD, iSOURCE);

And the part fired on hit … Which did 3 damage instead of a minimum of 5.

// A -1 REPRESENTS A GROUND LOCATION SPLASH INTENDED AS DEFAULT
	int nTouch = -1;

    // IF TARGET VALID, THEN CHECK IF RANGE ATTACK HITS
	if (GetIsObjectValid(oTarget) == TRUE){nTouch = TouchAttackRanged(oTarget);}	
	
    // TARGET WAS SUCCESSFULLY HIT FOR GRENADE DAMAGE
	if (nTouch >= 1)
    {
        // A CRITICAL HIT (DOUBLE DAMAGE)
		if(nTouch == 2){nDirectDamage = nDirectDamage * 2;}

        // PREPARE DAMAGE TYPE
        effect eDam = EffectDamage(nDirectDamage, nDamageType);		
		
		// HOLY WATER VS UNDEAD CHECK
		if ((nRacialType != RACIAL_TYPE_ALL) && (nRacialType == GetRacialType(oTarget)))
		{
		    ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
		    SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId()));		    
		}

And the splash part … Which did 1 damage instead of a minimum of 2.

// THERE IS ALWAYS SOME VALID SPLASH DAMAGE (WHEN WITHIN RADIUS)	
	SendMessageToAllPCs(CORANGE + "<i>This type of grenade can cause additional splash damage.</i>");	    
	
	object oTargetSplash = GetFirstObjectInShape(SHAPE_SPHERE, fExplosionRadius, lTarget, TRUE, nObjectFilter);	
	
	while (GetIsObjectValid(oTargetSplash))
	{	
		float fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTargetSplash))/20;		         
		
		// PREPARE SPLASH DAMAGE AMOUNT
		effect eDam = EffectDamage(nSplashDamage, nDamageType);
		
		if(nSplashDamage > 0)
		{
			// HOLY WATER VS UNDEAD CHECK
			if ((nRacialType != RACIAL_TYPE_ALL) && (nRacialType == GetRacialType(oTargetSplash)))
			{				
				SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId()));
				DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTargetSplash));				
				DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTargetSplash));
			}

IMPORTANT: Yes, these creatures can increase in their abilities … but, I suppose my question is, if that is the case, what abilities might have been added that may account for this?

Add this feedback to see you grabbing the right damage amount.
SendMessageToAllPCs(IntToString(nDmg));

Added damage resistance that been added to skin property or effect damage resistance would lower the damage amount.

1 Like

@ShadowM

I’ll add that both prior function call and after and let you know. Give me a moment.

EDIT: Skin properties do not change, only possible class abilities.

1 Like

A good way to check this is to just put the ghost creature down and join the module as a dm and look at the creatures character sheet/effect it has and or take control and look at your those things.

1 Like

@ShadowM

That may be rather difficult as any changes need the PC to be there too, and that means setting up another computer, which is not that easy just now … I’m about to test that feedback - one sec.

RESULTS … That splash should not be a one!

image

These are even worse … I mean a 2?

image

1 Like

@ShadowM

OK, I think I have found it now - It looks like I may have done something stupid prior this stage and may have messed some tag checks up. :dizzy_face:

Give me a few moments, and I mark resolved if this is the case … and then I’ll go to a small hole and hide myself. :scream:

It all good. I hope you get it all straighten out. :slight_smile:

2 Likes

@ShadowM

Yep! Stupid tag moment … The tag was being incorrectly switched so it always used a basic holy water. Doh!

Thanks for your help. :+1:

That’s better …

image

2 Likes