Barrel Breaking v1.02;
#1
Just when you think you know every inch of Diablo. . . .

Previously, I had thought barrels that explode never damage a tile that _already_ has a barrel in it WHEN THAT BARREL generates a skeleton. They'll damage barrels without skeletons, but you NEVER EVER see them destroy a barrel and release a skeleton. This would lead one to think that the tile that contains a barrel that releases a skeleton then should be impervious to explosive damage from adjacent barrels. However, with a little testing in Single Player, I found this was not the case.

I located a dungeon setup very close to this:

1 2 3 4 5

6 B S b 7

8 9 0 I Z

The numbers 1-9, O, I, and Z all are empty tiles surrounding barrels at B, S and b.

Now barrel B and b are both exploding barrels.

And barrel S has a skeleton inside it. (It is not an exploding barrel.)

If you attack barrel B from ANY empty adjacent tile, you may receive damage but the explosion it generates NEVER strikes barrel S.

If you attack barrel b from ANY empty adjacent tile, you may receive damage but the explosion it generates NEVER strikes barrel S.

Now attack and destroy barrel S, then kill the Skeleton that pops out, and then move into tile S.

From tile S, if you strike Barrel B, you WILL sustain damage!
From tile S, if you strike Barrel b, you WILL sustain damage!

To me this seems odd. Tile S receives no explosion damage (thus destroying its barrel) UNLESS you are standing IN tile S, having destroyed the barrel (and the skeleton it released). We all know that exploding barrels can hit adjacent barrels, setting off a whole string of explosions -- especially inside rooms! Yet somehow the game must factor in whether the adjacent barrel has a skeleton inside it. If it does, then the game will NOT allow the exploding barrel to destroy that particular barrel in question (and release/destroy the skeleton?).

Wierd. Anyone else notice this?

Just curious.

Attika
Reply
#2
You play D1 waaaay too much.

*plays Counterstrike for 8 hours*
Lahve and peace!
Lahve and peace!
Lahve and peace!
Reply
#3
...just read this:

Recently, I found an skeleton in a small chamber, in the church (normal diff.). The point is that that area was suposed to have been totally cleared before. Where did the skeleton had come from?. I figured out what had happened, and promised myself I would test my theory (if I would find myself in the appropiate situation...) next time.
Some time later, I found other small chamber in the church (again, normal diff.), with this peculiarity: a Scavenger trapped in a corner, behind three exploding barrels. I casted a Town Portal spell, hit the barrels (which then killed the Scavenger), went through the Town Portal to Tristram and then back to the dungeon. The Scavenger had RESURRECTED and was waiting for me to kill it again, there.

Conclusion (?): this is a happy day for the most sadistic Diablo players. Under certain circumstancies, barrels allow you to kill some monsters TWICE. Now I'm wondering if I was accounted the kill twice, if the monster resurrected because it "regenarated" HPs, if another player would have seen "a ghost" of the monster if he had remained in the level, if this can happen with other traps...

Sorry, I didn't ask your question and also brought questions of my own... but I believe that only exploding barrels will explode when "hit" by an adjacent exploding barrel... wait, let me check JG...
Es fácil descender al infierno. De día o de noche, las puertas de la Muerte están abiertas de par en par; pero retornar, volver sobre tus pasos para llegar a la superficie... He aquí el auténtico desafío.

Virgilio, La Eneida
Reply
#4
I have a faint idea of having seen, and replied to, a post very similar to this one somewhere quite some time ago. Anyway, lets see if I can do it again.

First of, all barrels are pre determined as far as what they do when the level is generated. That is they are set to either explode, generate a skeleton or be normal ones.

Next, a skeleton from a barell doesn't exist until you actually break the barell.

Now, when a barell explodes, it will make an attack on all 8 surrounding tiles that is pretty much the same as if a firebolt had struck. Or rather, it will make an attack on any monster or player standing on any of the 8 surrounding tiles.

In addition, it will check if any of the surrounding tiles has an exploding barell (and ONLY check for a exploding barells, not normal ones, not the ones which will generate a skeleton). If there is any such, they will be set of as well and will in turn attack any monster or player adjacent to it and check for further exploding barells. This has the effect that adjacent players or monsters can be attacked multiple times if they happen to stand adjacent to several exploding barells.

With all that sorted out, your experience is not at all weired and exactly as it should be :)
There are three types of people in the world. Those who can count and those who can't.
Reply
#5
Barrels and players are completely different things from the code's perspective, so different things are going to happen when different things occupy the same tiles.

Because the game is tiled based, I am going to assume the following happens when a barrel is broken (assuming it will explode). I don't know what the code is exactly for Diablo, but it is how most things are done (so where ever I say "will" it means "most probably"). Let's say we have this, where B is the barrel and X are the adjacent spaces around it.

X X X
X B X
X X X

The game will go to each adjacent square one by one and perform certain checks and actions. The order doesn't really matter, but let's say it is this:

1 2 3
4 B 5
6 7 8

For a barrel that is will explode, the checks could go something like this:

For <spaces 1-8>

If <current space> = empty
do nothing

If <current space> = barrel
{
If <barrel> = <exploding barrel>
<detonate barrel>

Else
do nothing
}

If <current space> = <player>
<possibly damage player>

}

Yes, that was horrible psuedo psuedo-code, but it is simple and understandable. Also, where is says "<possibly damage player>", I couldn't remember what chance a barrel has to hit and what factors it is based on, but that is where all of that goes. I can't read J.P.'s Guide right now :) Also, I only included checks for barrels and players, even if the game checks for other things as well. The game will also check for enemies around the barrel, and will possible damage them as it does a player.

>We all know that exploding barrels can hit adjacent barrels, setting off a whole string of explosions -- especially inside rooms!

Exploding barrels can only detonate adjacent exploding barrels (barrels that would explode if you hit them). Normal barrels will not explode. Many adjacent barrels will explode inside of rooms because there is a high probability in enclosed areas that barrels will be flagged to explode (see J.P.'s guide). Just wanted to make sure this was clear because they only check in the "code" above is for exploding barrels.

>From tile S, if you strike Barrel B, you WILL sustain damage! From tile S, if you strike Barrel b, you WILL sustain damage!

You should have the same chance to get hit as if you were on any of the other adjacent tiles. If you actually did have a 100% chance to get hit from a space that was once occupied by a barrel with a skeleton, then the game would have to keep track of all the tiles that previously contained barrels with skeletons. It would need to check from where the player is hitting the barrel, and then compare the players locatoin to the all the barrel locations it was keeping track of (with skeletons). This doesn't make any sense logically, i.e. it woudn't make sense to have the previous location of skeleton-trapped barrels have a greater chance to hit than any other tile. It would be a "feature" that would use up unnecessary memory for something that didn't make sense in the first place.

It would have to be very deliberate for the programmers to makes those tiles in question have a 100% chance to hit a player(/enemy) and I highly doubt they would do something like that.
--Lang

Diabolic Psyche - the site with Diablo on the Brain!
Reply
#6
You just have to think logically - the exploding barrels have explosive gas inside and when other gas is around it will explode, others just have skeletons which are not explosive :P

Also, this one time I was in hell and cleared level 15, I went back up to town to ID some items and went back down to see every monster was resurrected! It was really weird, I got the same items (including king's basty of gore, but I didn't keep both - only one). It was very odd, I accounted it to one of the many glitches left out by buzzard.
Reply
#7
Dude, the barrels that explode in chain reactions are barrles that would otherwise explode if struck singly. In other words, an exploding barrel can only detonate other exploding barrels.

Barrels holding treasure or skeletons cannot destroyed/opened by a barrel explosion.

And skellies spawned from a barrel will die in a nearby barrel blast. have seen it many times. Hell, I've seen a skeleton spawned from a sarc take the firebolt trap hit that I set off by opening the thing in the first place!
Political Correctness is the idea that you can foster tolerance in a diverse world through the intolerance of anything that strays from a clinical standard.
Reply
#8
Quote:Hell, I've seen a skeleton spawned from a sarc take the firebolt trap hit that I set off by opening the thing in the first place!

Or when you use a sword with elemental damage then the sword hits the barrel and the following elemental damage takes down the skeleton, no additional swing required, it felt like killing them while they are at sleep. (I got the same feeling when killing some type of the winged demons with a single fireball, should I play games that include less killing? :P)
-Cytrex
Reply
#9
>For a barrel that is will explode, the checks could go
>something like this:


Quite good, although the order is not correct :)


>For <spaces 1-8>
>
>If <current space> = empty
> do nothing

This is not done, since if we get to the end, there was nothing and we can move on.



>If <current space> = barrel
>{
> If <barrel> = <exploding barrel>
> <detonate barrel>

The detonation actually includes a full, recursive, call to the handle of a barrel, which in turn will check all the 8 squares surrounding THAT barell.

> Else
> do nothing
>}

These elses are not really needed, although they don't do harm of course.


>If <current space> = <player>
> <possibly damage player>
>
>}

> Also, I only included checks for barrels and players,
>even if the game checks for other things as well. The
>game will also check for enemies around the barrel,
>and will possible damage them as it does a player.

Correct. First it check for a monster. Then it check for a player and finally it check for another exploding barell. Obviously the order is not that important and is of course impossible to know unless you check the code :)

Ohh, the ToHit chances are that of a trap since that is how the attack from the barrel is flaged. See my guide for trap ToHit, I really have no idea about them without checking myself.
There are three types of people in the world. Those who can count and those who can't.
Reply
#10
Reading all that barrel theory kinda depresses me...
and that is b/c i developed the stupid (and probably useless) habit to approach barrels in a diagonal way:

yxy
xBx
yxy

I always find myself automatically moving to the "y" spots before smashing a barrel, honestly believing that i reduce the dmg this way:(

This post is just for your amusement btw;)
Reply
#11
I think the reason for gaining such a habit has to do with approaching clusters of barrels. When approaching a given barrel in a cluster, a diagonal approach often puts you in a position where you are only adjacent to the barrel you are bashing. So you take less damage than if you had moved in orthagonally and gotten hit by two barrels. Getting hit by two or three barrels is very traumatic, and unconsciously you never want to do the same thing that put you in that position :)
Reply
#12
Hi,

Back when I started playing Diablo, in my ignorance and naivety I gave Buzzard more credit than their due. I figured the four positions on the rank and file were one space away and those on the diagonals 1.414 spaces away (square root of two). If the to hit for traps (including barrels) followed some kind of distance rule, then the diagonal was better. And if the damage for expanding effects dropped off by distance, then the diagonal was better still.

Of course, now that we know that Buzzard can't even do simple sums and would probably farkel the use of them anyway we could drop the old habit. But I stick to it, in memory of how foolish I was back then ;)

--Pete

How big was the aquarium in Noah's ark?

Reply
#13
Try to think of a tile not as a distance, but a unit. Each "space" is simply one element in an array. [quote] values are integers, like placeholders. For instance, there is no such thing as a [1.3 , 2] position. It can't simply be described how "fary away" a tile is.

Basically, from a game point of view, it doesn't make sense that there is no accounting for distance like you describe. But from a programming viewpoint, it doesn't really make sense to account for this distance.
--Lang

Diabolic Psyche - the site with Diablo on the Brain!
Reply
#14
Hi,

Try to think of a tile not as a distance, but a unit.

Bull. Thanks, but I know enough math to know of many measures of "distance". Such as next nearest neighbor or least deviation, etc. So what? Diablo represents a three dimensional space similar to the world we live in. And the *only* rational measure of distance in this world (or Diablo's) is the Euclidean norm. Not the taxi cab metric. That's a mistake that is pointed out to anyone taking intro calc when they get to line integrals.

But from a programming viewpoint, it doesn't really make sense to account for this distance.

Oh, really? The "distance" they keep track of is

WrongDistance = (deltaX + deltaY).

An adequate representation of Euclidean distance is

RightDistanceSquared = (deltaX * deltaX + deltaY * deltaY)

(since most things *should* drop off as R^2). And given the power of processors even when D1 came out, taking the square root of RightDistanceSquared would not have been a burdensome load on the FPU.

If you still think that's too much of a computative load, there's always table look up. Since the distances involved are in the range from 0 to 25 tiles in each direction, a simple two dimensional array of real distance could have been set up. All it needs is 625 values (about 2.5 k of storage), and there isn't even the overhead of a function call.

So, no. It is not hard to implement, it is not computationally intensive. Buzzard just doesn't have any real programmers (or designers). Just a bunch of kids messing with crayons and computers. They are very talented kids, sure. But they are too arrogant to get someone on board who has a clue.

--Pete

How big was the aquarium in Noah's ark?

Reply
#15
Diablo represents a three dimensional space similar to the world we live in. And the *only* rational measure of distance in this world (or Diablo's) is the Euclidean norm.

This is true. But in a world like ours, standing at a certain angle to a round barrel still will not allow you to reach it from farther away :)
Reply
#16
Hi,

. . . if you were a chessman ;)

If you were constrained to move on a square matrix, then being on the diagonal would put you farther away. And, as an example, consider a built up city block (and make it square). Let's suppose that there is a round water tower smack in middle of the block. But the only access you have is on the sidewalks. If you're standing on a corner, you are further away from the tower than if your standing in mid block, and yet the tower is "half a block away" in both cases.

Of course, the square matrix was just another another example of the limitation of Buzzard's programming talents. I mean, rogue had a square matrix, and it was programmed in the stone age. ;)

--Pete

How big was the aquarium in Noah's ark?

Reply
#17
You guys really need to get out more. Just a bit of friendly advice.
Reply
#18
Hi,

So, you need to STFU and lurk till you have a clue. Just a bit of "friendly" advice.

--Pete

How big was the aquarium in Noah's ark?

Reply
#19
"Eines Tages wird die Welt erkennen, daß wir Recht hatten."

I know what that means, literally, but who are you quoting? I have seen it before, but I can't put my finger on who is being quoted.

Von Manstein? Von Rundstedt? Doenitz?
Cry 'Havoc' and let slip the Men 'O War!
In War, the outcome is never final. --Carl von Clausewitz--
Igitur qui desiderat pacem, praeparet bellum
John 11:35 - consider why.
In Memory of Pete
Reply
#20
Greetings Karasu,

You're on a gaming forum: you're going to get gamers at it. Enough said. I hope I don't see anything like this again...
May the wind pick up your heels and your sword strike true.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)