Jump to content

Shockwave in Exile 3


Cinoo

Recommended Posts

I tried using it in the Troglo Temple to kill various enemies while I was holed up in a small corner, and I also tried using it in a similar scenario in one of the destroyed towns in Footracer, with a fire barrier in the doorway of an otherwise intact building. The only damage coming up was to my own party.

Edited by Cinoo
Link to comment
Share on other sites

2 hours ago, Thaluikhain said:

IIRC, Firestorm spells can be blocked (partially) by walls, don't specifically remember for Shockwave.

 

Save the game, go to a friendly town, cast in one room with nobody in it but people nearby and reload when you find out?

Good idea. I tried this and it turns out that my shockwave caused no damage through either walls or fire barriers, even with a townsperson on the immediate other side of a wall. That's sad, that spell was awesome! Haha. maybe it was too good.

Link to comment
Share on other sites

I just tested it and confirmed than in Exile 3, Shockwave will not do damage past solid walls, but will do damage through clear terrain. That's disappointing, because it is supposed to work through walls. :(

 

EDIT: Also, Thaluikhain, you may be confusing Shockwave with Shockstorm. Shockstorm is the same as Firestorm except with magical damage type and more damage, but ShockWAVE is supposed to center an earthquake on the caster's location. The farther away a character is, up to a radius 10 circle, the more damage it does, much like an earthquake, and as such it would normally do damage through walls, as it travels through the ground. Now I wonder if legacy BoE had that problem... I'll test in a little bit.

Edited by The Almighty Doer of Stuff
Link to comment
Share on other sites

Huh, weird!

 

I wonder if this means there were also changes, between E2 and E3, regarding how line of sight was processed for other attacks -- AoE, individual missiles, and barrier placement.

 

This doesn't make much sense for Shockwave, but maybe it was put in to stop e.g. Fireball from going through walls and magic barriers.  (Considering it's a plot point in E1/2 that magic barriers block fireballs, it would be weird to discover that they don't in the game...)

Link to comment
Share on other sites

I just did some tests. Shockwave works through walls in E2, but not in E3 or BoE. Shockwave behaves as a line of sight "explosion" in BoE, where even if doors are open to a victim within 10 steps away, they will not be damaged unless they are in direct line of sight. I didn't test the open-doors trick with E3. Interestingly, Shockwave just makes an explosion sound and displays "The ground shakes!" in the text area, without displaying special effects or doing damage, if the party has just entered a legacy BoE scenario and one complete "round", in Town or Combat Mode, has not passed yet. The first "round" is glitchy in many ways in legacy BoE; for example, you can't save your game until you move.

 

I tested line of sight with Firestorm. Since the area of effect is a 3x3 square with the corners missing, one can try to "hook" the explosion around a corner. However, if the tile around the corner is not in direct line of sight, it doesn't matter that there is a "path" to that victim; it won't damage them. That hasn't changed between E2, E3, and legacy BoE.

 

I didn't do any of these tests with Magic Barriers, however.

Edited by The Almighty Doer of Stuff
Link to comment
Share on other sites

20 hours ago, The Almighty Doer of Stuff said:

I just tested it and confirmed than in Exile 3, Shockwave will not do damage past solid walls, but will do damage through clear terrain. That's disappointing, because it is supposed to work through walls. :(

 

EDIT: Also, Thaluikhain, you may be confusing Shockwave with Shockstorm. Shockstorm is the same as Firestorm except with magical damage type and more damage, but ShockWAVE is supposed to center an earthquake on the caster's location. The farther away a character is, up to a radius 10 circle, the more damage it does, much like an earthquake, and as such it would normally do damage through walls, as it travels through the ground. Now I wonder if legacy BoE had that problem... I'll test in a little bit.

 

I knew how Shockwave worked, but either forgot (or never knew) that it's supposed to be an earthquake, I just thought it was magic damage that spread in all directions that got more powerful because it's magic.  And to do more damage to the enemy than the rest of your party, who are presumably closer, I guess.

 

Doesn't Shockstorm use the same "template" (5x5 except the 4 corners) as Firestorm, but places a persistent magical damage thing, like Conflagration or the wall spells?  Always liked those spells once the fighters/terrain have created a line to fix the enemy.  Or against invisible monsters.

Link to comment
Share on other sites

12 hours ago, Celtic Minstrel said:

So now the question is… should Shockwave pass through walls, or is this a bug that was fixed in Exile 3?

Maybe the big man himself can weigh in on this. I used shockwave to grind for my magic casters in Exile 2 and was sad that I can't do it in Exile 3 haha.

Link to comment
Share on other sites

I'm pretty sure he doesn't read the forums very often, so if you want his opinion that much, you'd probably have to ask by email or something.

 

Given that it changed between E2 and E3, and the manual never says it's supposed to pass through walls, I'm currently leaning towards it being a bug that he fixed in E3.

Link to comment
Share on other sites

I'm not sure that change was intentional.  It might have been an accidental side effect of E3 refining line-of-sight rules for an environment with far more trees, open skies, etc., particularly given the observation that it follows the same obstruction rules as those do.

 

I suspect this because Shockwave was transparently modeled after Ultima's Tremor spell, which ignored obstacles entirely.  It seems pretty unlikely that this was a bug for all of the first two games Jeff made, when he was programming all the spells from scratch.

Link to comment
Share on other sites

That argument does make sense, but… this is the code for shockwave in Blades of Exile (original version, not the OBoE source):

void do_shockwave(location target)
{
	short i;

	start_missile_anim();
	for (i = 0; i < 6; i++)
		if ((dist(target,pc_pos[i]) > 0) && (dist(target,pc_pos[i]) < 11)
			&& (adven[i].main_status == 1))
				damage_pc(i, get_ran(2 + dist(target,pc_pos[i]) / 2, 1, 6), 4,-1);
	for (i = 0; i < T_M; i++)
		if ((c_town.monst.dudes[i].active != 0) && (dist(target,c_town.monst.dudes[i].m_loc) > 0)
			 && (dist(target,c_town.monst.dudes[i].m_loc) < 11)
			 && (can_see(target,c_town.monst.dudes[i].m_loc,0) < 5))
				damage_monst(i, current_pc, get_ran(2 + dist(target,c_town.monst.dudes[i].m_loc) / 2 , 1, 6), 0, 4);
	do_explosion_anim(5,0);
	end_missile_anim();
	handle_marked_damage();
}

As you can see, there's a clear call to the "can_see" function. It seems odd that he would have inserted that by mistake.

Link to comment
Share on other sites

Interesting!  Well that's a good piece of evidence.

 

Out of curiosity, what does can_see actually return?  Since it needs to be less than 5 to count as seen for purposes of the spell.

 

I also note that other PCs get damaged even if they aren't visible to the caster... it seems a little weird for it to work that way for PCs but not enemies.  Though maybe that's standard for BoE?  I haven't looked at that code in a decade.

Link to comment
Share on other sites

It's a degree of obscurity based on a sum of opacity over the path between the two tiles. A fully-opaque tile has opacity 5, so that's why there's a comparison to 5 in can_see. It checks a total of max(dx, dy) tiles to determine the final obscurity.

 

Opacity is normally based on the terrain (5 if it blocks sight, 1 if it's obstructed but you can shoot through it, 0 if it blocks nothing), unless there's a fire or force barrier there, in which case it's 5. A web on the space increases opacity by 2, and a crate, barrel, or town special spot increases it by 1. When in combat, lava and pits are also forced to opacity level 5.

 

This time I looked at OBoE rather than the original source, but I don't think there are any appreciable changes in this area (if there are, it's a bug).

Link to comment
Share on other sites

OK, I went and looked at the code and a few things jump out.

 

First and most importantly, the snippet CM pasted above (do_shockwave) appears to be a modified cut-and-paste -- or vice versa -- of radius_damage.  Identical lines with a few different parameters.  It seems entirely possible that radius_damage was updated, and it was pasted into do_shockwave with some changes made, but forgetting to remove the visibility requirement that had not previously been present.

 

In other words, the function above is particular to Shockwave, but the code isn't.  This could easily be a mistake.

 

Second, the same visibility check does apply to Slow Group and the other status spells in BoE.

 

Third, can_see has three modes.  Comments and usage elsewhere in the code line up here:

Mode 0 - normal

Mode 1 - counts pits and lava as fully blocked; used for party placement when combat begins

Mode 2 - normal but ignores the requirement for light

 

Notably, AoE spells use mode 2, so I guess they require line of sight, but light is optional.  Missiles require light, which makes sense.  Shockwave also requires light, which makes absolutely no sense.  Since it affects friendly creatures too, it's clearly not something the caster is manually controlling.  Slow Group, with its nearly identical code, requires light, but it only affects hostile creatures, so that is less confusing.  This, again, leads me to hypothesize: mistake.

Link to comment
Share on other sites

It could be fixed for open source BoE projects, but it would have to remain the same for legacy scenarios. It might be hard for players to understand the seemingly-arbitrary and possibly unclear discrepancy between legacy scenarios and new scenarios if that were done, though.

Link to comment
Share on other sites

On 2/23/2021 at 6:54 PM, Celtic Minstrel said:

It's a degree of obscurity based on a sum of opacity over the path between the two tiles. A fully-opaque tile has opacity 5, so that's why there's a comparison to 5 in can_see. It checks a total of max(dx, dy) tiles to determine the final obscurity.

 

Opacity is normally based on the terrain (5 if it blocks sight, 1 if it's obstructed but you can shoot through it, 0 if it blocks nothing), unless there's a fire or force barrier there, in which case it's 5. A web on the space increases opacity by 2, and a crate, barrel, or town special spot increases it by 1. When in combat, lava and pits are also forced to opacity level 5.

 

This time I looked at OBoE rather than the original source, but I don't think there are any appreciable changes in this area (if there are, it's a bug).

 

Huh, so, for example, you're in a store with a long counter (like most store in E3 and BoE, it seems), and if you are standing at one short end, the Shockwave spell won't affect someone at the opposite end if it's 5 or more spaces long?

 

Also, how does it determine LoS if you are aren't in a straight line?  Say the target is 6 spaces above and one to the right, so there's 5 vertical spaces in two columns, which are you looking through?

 

Getting a bit off-topic and obscure with that, though, but am interested in working out LOS in a grid.

Link to comment
Share on other sites

13 hours ago, Thaluikhain said:

 

Huh, so, for example, you're in a store with a long counter (like most store in E3 and BoE, it seems), and if you are standing at one short end, the Shockwave spell won't affect someone at the opposite end if it's 5 or more spaces long?

 

I think counters are transparent, so they wouldn't affect line of sight. If you had a line of pillars though, then yes.

 

13 hours ago, Thaluikhain said:

 

Also, how does it determine LoS if you are aren't in a straight line?  Say the target is 6 spaces above and one to the right, so there's 5 vertical spaces in two columns, which are you looking through?

 

It just uses a naive line-drawing algorithm to figure out which hexes affect your vision. The algorithm described on that page only works for lines with small slope (less than 1), but Blades of Exile swaps the role of x and y if the line has a large slope (greater than 1), so it still produces a reasonable result.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...