Page 1 of 1

Misdirection Mechanic Proposal

Posted: Tue Oct 07, 2014 6:12 am
by grayswandir
I'm not terribly fond of how projectile evasion works right now. Currently, how projectile evasion (like you get from misdirection) works as follows:
When something fires a projectile, it rolls your evasion chance. If it does, it picks a random value from -evasion_spread to +evasion_spread to add to the target x location, and another random value in the same range to add to the target y location.

I don't like this for a number of reasons. First, it only works on projectiles - not beam attacks or ranged weapon hits (like the projecting ego). Secondly, I don't like how it's split into two separate values. Also, the player can get around evasion by just targeting the square behind the enemy with evasion - it's only triggered when the enemy is in the square selected for the shot.

A nice misdirection mechanic that affected the player would probably actually show the enemy in a different location. That's pretty involved, though. I don't think there's any easy way to get a misdirection effect on the player that can't be easily circumvented.

Anyway, I'm suggesting two improvements.

First, I'd like the amount of misdirection to be multiplied by the distance between the two actors, and to have it applied to all actions equally. This would improve two circumstances. An enemy across the room will no longer ignore your misdirection because its a beam attack, and an adjacent enemy will no longer be fooled just because they're trying to hit you with a projectile.

The second is to change the misdirection attribute to be a misdirection area. So, roughly speaking, if you got +4 misdirection for a given attack, then the enemy should target one of 5 random squares, centered on the one you occupy. This'd let you get several misdirection items stack without making it too strong - it's basically a natural square root scaling, but expressed in actual physical terms.

So, the end result would be a misdirection attribute which is your effective misdirection area at range 10. Every tile closer reduces this by 1/9, until there's 0 effective misdirection for adjacent actors.

Proposed code:

Code: Select all

function(self, target)
	if not target:attr 'misdirection' then return target.x, target.y end
	local distance = core.fov.distance(self.x, self.y, target.x, target.y)
	local area = 1 + target.misdirection * (distance - 1) / 9
	local radius = math.sqrt(rng.float(0, area) / math.pi)
	local angle = rng.float(0, math.pi * 2)
	return math.floor(target.x + 0.5 + math.cos(angle) * radius), math.floor(target.y + 0.5 + math.sin(angle) * radius)
end

Re: Misdirection Mechanic Proposal

Posted: Tue Oct 07, 2014 4:31 pm
by Doctornull
Meh just give an Evasion chance which stacks with regular Evasion but only applies to Beams & Bolts.

Call it ... Ranged Evasion, to match with Ranged Defense.

Cap Evasion at 50% and Ranged Evasion at 50%.

Re: Misdirection Mechanic Proposal

Posted: Tue Oct 07, 2014 8:01 pm
by Davion Fuxa
I personally don't see anything wrong with being able to dodge something when you are in the face of it. In many ways, a good example of this perhaps could be used with a Hockey example:

Two Players are approaching the Goalee with puck in hand. Assuming the Two Players are like the Main and Off Hands of the Rogue, if one of those players literally 'blinds' the Goalee so he can't see what the other guy with the Puck is going to do then he won't know where to correctly position himself to prevent a goal on the net. That concept works just fine for me with Misdirection because that's partly how I see it working in game to avoid the enemy getting an accurate fix to throw the attack..

Re: Misdirection Mechanic Proposal

Posted: Fri Oct 10, 2014 4:03 pm
by Omega Blue
I think it would be easier to treat evasion as what it should be: your foe hits the correct point in 3 dimensional space, except that you are not there. Just do that for every critter along the path of a beam.

For range weapons, I recommend deal with the issue by reducing the chance to hit at longer ranges. For example:

point blank range (adjacent or 1 space away, say) - bonus to hit
short range (2 spaces - 5 spaces) - standard chance to hit
medium range (6 spaces - 9 spaces) - reduced chance hit
long range (10 spaces or more) - further reduced chances to hit and reduced damage

Those distances are for bows. Slings are worse off.

This makes ego bows more interesting as the diversity is greater (e.g bows of true flight ignore range penalties)

Re: Misdirection Mechanic Proposal

Posted: Fri Oct 10, 2014 8:24 pm
by cctobias
For misdirection specifically.

If we were talking about a player going against an NPC who had misdirection, then I would think the most directly 1-to-1 implementation would kind of work like stealth in that the NPC should be drawn as being on square x,y but is in fact on square x+/-m,y+/- m.

Of course the problem there is that you would need to roll each turn to see if had the correct or incorrect position and over time and given humans remember things the whole mechanic kind of fails.

From a computer perspective you could do this, in that you can enforce "dumbness", so rather than the trigger being on the targeting, you leave targetting alone and actually, sometimes, change where it think you are. This way everything is affected, movement, projectile beams etc.

How you would make such a thing work when a human is going against an NPC would take something far different and probably would be a different implementation entirely. Although having it be exactly the same as above would essentially create a "blinking" effect and if you made all the messages always appear as if you hit something that might work ok. In other words you also make various logging feedback "lie". The trick is basically figuring out which position is the non-misdirection position.

However if the creature is not actually moving, and misdirection is something like 20%. Then they would appear to be at x,y many times and then flicker around to various positions and it would become rather obvious which is the correct spot as he would keep "returning" to it often, so I doubt such a thing would really work. But it is close.

It seems to me some sort of false position that would follow a less obvious pattern could work well though. Basically like you see them drawn in a random place within rad 1-2. This would be rather different than the current straight up % avoidance type thing and I have no idea how it would scale and would be to good against computerized opponents. It would also be even less useful against AOE than normal misdirection of the rad is smaller.

Re: Misdirection Mechanic Proposal

Posted: Fri Oct 10, 2014 9:16 pm
by grayswandir
cctobias wrote:However if the creature is not actually moving, and misdirection is something like 20%. Then they would appear to be at x,y many times and then flicker around to various positions and it would become rather obvious which is the correct spot as he would keep "returning" to it often, so I doubt such a thing would really work. But it is close.
I'm completely fine with the player being able to figure it out given a few turns of observation. I don't see that as something desirable not to have.

Re: Misdirection Mechanic Proposal

Posted: Mon Oct 13, 2014 5:23 pm
by cctobias
grayswandir wrote:
cctobias wrote:However if the creature is not actually moving, and misdirection is something like 20%. Then they would appear to be at x,y many times and then flicker around to various positions and it would become rather obvious which is the correct spot as he would keep "returning" to it often, so I doubt such a thing would really work. But it is close.
I'm completely fine with the player being able to figure it out given a few turns of observation. I don't see that as something desirable not to have.

Well the thing with something like that isn't so much that its "figure outable" but rather that its actual effect would be hard to balance/scale/quantify or even understand in some sort numeric way. I mean it should create a few rounds of "uncertainty" upon initial sight. But is the value of that in terms of mitigation? If you somehow "increased the uncertainty" (lets say by making the distribution more regular) then how much on an increase in effectiveness is that(linear? expenential? neglible?)?


Right now the current Misdirection is a straight up mitigation, when taken over a large sample size, its numerically basically like having an extra ~15% mitigation effect multiplied onto your other mitigation for the things it applies to. Its avoidance so it can be spotty but on average its % mitigation.

So its not that its not desirable rather it can be problematic for the developer.