Resist messages

All new ideas for the upcoming releases of ToME 4.x.x should be discussed here

Moderator: Moderator

Post Reply
Message
Author
Grey
Loremaster
Posts: 3517
Joined: Thu Sep 23, 2010 10:18 pm
Location: London, England
Contact:

Resist messages

#1 Post 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
http://www.gamesofgrey.com - My own T-Engine games!
Roguelike Radio - A podcast about roguelikes

lukep
Sher'Tul Godslayer
Posts: 1712
Joined: Mon Mar 14, 2011 10:32 am
Location: Canada

Re: Resist messages

#2 Post 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.)
Some of my tools for helping make talents:
Melee Talent Creator
Annotated Talent Code (incomplete)

Aquillion
Spiderkin
Posts: 503
Joined: Sun Jun 12, 2011 7:02 am

Re: Resist messages

#3 Post 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.

jenx
Sher'Tul Godslayer
Posts: 2263
Joined: Mon Feb 14, 2011 11:16 pm

Re: Resist messages

#4 Post by jenx »

+1
MADNESS rocks

edge2054
Retired Ninja
Posts: 3756
Joined: Fri May 28, 2010 4:38 pm

Re: Resist messages

#5 Post 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?

Grey
Loremaster
Posts: 3517
Joined: Thu Sep 23, 2010 10:18 pm
Location: London, England
Contact:

Re: Resist messages

#6 Post 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.
http://www.gamesofgrey.com - My own T-Engine games!
Roguelike Radio - A podcast about roguelikes

edge2054
Retired Ninja
Posts: 3756
Joined: Fri May 28, 2010 4:38 pm

Re: Resist messages

#7 Post 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.

Post Reply