Page 1 of 1

Resist messages

Posted: Sat Aug 13, 2011 11:01 pm
by Grey
Currently you get the same message of a creature resisting an effect whether it was due to a saving throw or a % resistance. This makes it hard to see how effective your own resistances are, and how effective your abilities are against the enemy. I suggest changing the messages to the following:

- "foo resists" for passing a saving throw
- "foo is unaffected" for winning a % check (eg if it had 60% stun res)
- "foo is utterly unaffected" if it's 100% resistant to that effect

Re: Resist messages

Posted: Sat Aug 13, 2011 11:18 pm
by lukep
Something like:
jotwebe wrote:How about verbal info then?
  • "You resist effortlessly!" >90%
  • "You resist easily!" 75-90%
  • "You resist confidently!" 60-75%
  • "You resist!" 40-60%
  • "You resist with some effort!" 25-40%
  • "You barely resist!" 10-25%
  • "You resist by pure luck!" <10%
but including the source as well? (from this thread.)

Re: Resist messages

Posted: Sun Aug 14, 2011 12:03 am
by Aquillion
Make the 100% one completely clear, since it's the most important one -- "foo is totally immune!" or something along those lines. Something unambiguous. Similarly, all the other ones should try to at least hint at the fact that there's a chance that it could have been affected.

Re: Resist messages

Posted: Sun Aug 14, 2011 12:13 am
by jenx
+1

Re: Resist messages

Posted: Sun Aug 14, 2011 12:31 am
by edge2054
I would be all for this if I didn't have to code it ;) In other words, something like this would be a lot of tedious work. To give you guys some idea let's take the blind damage type as it is now.

Code: Select all

		if target then
			if target:checkHit(src:combatSpellpower(), target:combatSpellResist(), 0, 95, 15) and target:canBe("blind") then
				target:setEffect(target.EFF_BLINDED, math.ceil(dam), {})
			else
				game.logSeen(target, "%s resists the blinding light!", target.name:capitalize())
			end
		end
And as it would be if this idea was implemented.

Code: Select all

newDamageType{
	name = "blindness", type = "BLIND",
	projector = function(src, x, y, type, dam)
		local target = game.level.map(x, y, Map.ACTOR)
		if target then
			if target:checkHit(src:combatSpellpower(), target:combatSpellResist(), 0, 95, 15) and target:canBe("blind") then
				target:setEffect(target.EFF_BLINDED, math.ceil(dam), {})
			elseif target:attr("blind_immune") >= 1 then
				game.logSeen(target, "%s is immune!", target.name:capitalize())
			elseif target:attr("blind_immune") < 1 then
				game.logSeen(target, "%s is unaffected by the light!", target.name:capitalize())
			else
				game.logSeen(target, "%s resists the light!", target.name:capitalize())
			end
		end
	end,
}

Granted there's a third way to do it which would involve a bit less work but still would mean going through every damage type, timed effect, and talent.

Basically this would put a string return on the canBe("blind") function that would say either (X ignores the blindness or X is immune). But as you can see this would still require the blind damage type to be modified so the %resists the light! string is skipped.

Code: Select all

newDamageType{
	name = "blindness", type = "BLIND",
	projector = function(src, x, y, type, dam)
		local target = game.level.map(x, y, Map.ACTOR)
		if target then
			if target:checkHit(src:combatSpellpower(), target:combatSpellResist(), 0, 95, 15) and target:canBe("blind") then
				target:setEffect(target.EFF_BLINDED, math.ceil(dam), {})
			elseif not target:attr("blind_immune") then
				game.logSeen(target, "%s resists the light!", target.name:capitalize())
			end
		end
	end,
}
I'm sure there might be an easier way but if the job is as tedious as I'm thinking it might be.. I wouldn't personally volunteer to code it.


Can anyone think of an easier way to do it?

Re: Resist messages

Posted: Sun Aug 14, 2011 1:24 am
by Grey
The second option isn't even particularly accurate, as you're skipping the "resists" message even if it did resist but it failed a 5% blindness resist check.

The easiest way that isn't quite perfect is to just add it to the canBe check, and have the resist message from the talent still displayed as a redundant flavour message. Another option would be to have the "ignore" and "immune" as flyouts so as not to clutter the log further.

Re: Resist messages

Posted: Sun Aug 14, 2011 2:58 am
by edge2054
Grey wrote:The second option isn't even particularly accurate, as you're skipping the "resists" message even if it did resist but it failed a 5% blindness resist check.

The easiest way that isn't quite perfect is to just add it to the canBe check, and have the resist message from the talent still displayed as a redundant flavour message. Another option would be to have the "ignore" and "immune" as flyouts so as not to clutter the log further.
I like the ignore and immune flyouts. I don't like particularly like every status effect having the potential to create two log messages.

But I guess the two log message option would be better then nothing and pretty easy to code.