Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Recommended Posts

Can demon survive a direct rocket hit? According to the wiki it is possible (minimal damage is 148 and demon's HP is 150), but has it ever happened? I'm not talking about weird cases like Requiem MAP02 where reject table somehow reduces rocket damage (removes splash damage completely?).


Late to the party, but, yeah, it happens so often to me it's surprising to even see it mentioned in a "rare kills" topic. :)

Share this post


Link to post
Zahid said:

mancubus in 2 ssg shots:0
it happens twice first time i experience....use whitemar.wd to play


That's because crossing linedef 1126 crushes some barrels that can damage the monsters before they teleport. I was surprised too the first time I played that map :)

Edit: Having actually watched the demo now, getting 2 in 2 shots each is pretty rare

Share this post


Link to post

That's pretty cool, that trick could be used as an alternative way of creating difficulty levels, if you want a cyber to teleport into the map, you could adjust the health of the monster by adding barrels in the dummy room depending on the difficulty level.
I am so doing this at some point :)

Actually is there any wads which do this already? Just curious

Share this post


Link to post
cannonball said:

Actually is there any wads which do this already? Just curious


I haven't seen it used that way before, but I think Scythe map 28 uses it to teleport corpses.

Share this post


Link to post
TimeOfDeath said:

Good idea, but it wouldn't work on cybers since they're immune to splash damage. Eternal Doom also teleported corpses.

Of course *facepalm*
Yeah that pretty much explains why it hasn't been done, it's a bit pointless doing it on other monsters as their health isn't overly high.

Share this post


Link to post

I actually had an idea of a tricks and traps themed map once in which when you pick up a chaingun a bunch of AVs would teleport all around you and there would be no cover either. But they would die of a shot or two because of the barrel trick :D

Share this post


Link to post
Plut said:

Killing archvile by 3 SSG shoots. Plays back with scythe.wad .

still rare, but AV damage himself with a flame attack (if its that one u speak about)

Share this post


Link to post

Can anyone explain what happened at 0:04?
If I am not mistaken, the maximum damage a rocket can do is 288!

Plays back with Perdition's Gate.

pg29-wow.zip

Share this post


Link to post

On a single monster. On a group of monsters it can be even 600. The most I "measured" was in e1m9-216 by stx-Vile.

Killing 2 revs (one near another) with 2 rockets is rare, but perfectly possible.

Just think about it: when the revenant eats 288 hp, all it needs to die is a tiny amount of splash damage from the second rocket directed elsewhere.

Share this post


Link to post

?! -trace_thingshealth 35 shows "-80" after that rev dies, does that mean that one rocket did 380 damage?
My only guess is that due to blockmap/reject/whatever weirdness the blast damage counted twice or something... No idea.

Share this post


Link to post

Interesting demo, your first rocket did 603 damage (total).
380 (160 impact + 110 radius + 110 radius) to one revenant, 200 (100 radius + 100 radius) to the other and 23 (radius) to the imp.

The explosion damage from the rocket was applied a second time to both revenants. It's basically a quirk with the blockmap links that you have successfully exploited in your demo.

Share this post


Link to post
j4rio said:

Play it back slowly. One rev died in one rocket.


Cool. I Wonder how many times weird stuff like this have happened while playing huge slaughtermaps so populated that it's impossible to even notice it happening :P

Share this post


Link to post

Wow, so I guessed right? =)
How difficult it is to check a map for such glitchy places then? If it isn't too unrealistic, perhaps they could be successfully exploited at least in tool assisted maxes?

Share this post


Link to post

Well I recall when I used rl at monster straight in front of me, once I took no splash damage and monster died. No demo.

Share this post


Link to post

any chance for someone with code knowledge to clear it up for us measly commoners? would love to abuse that when possible, really neat thing.

Share this post


Link to post

Watch this demo of mine on e1m5 (it's the e1fa1409 one, felt too lazy to create a separate zip for this so it's all straight from my ultimate doom done fastest project lol). Near the soulsphere secret while I'm firing rockets at demons and stuff I take no splash damage, multiple times. It's at like the 37th second.

doom done 100% fastest.zip

Share this post


Link to post
j4rio said:

Well I recall when I used rl at monster straight in front of me, once I took no splash damage and monster died. No demo.

That happens fairly frequently, it's a well-known reject bug. See another example in this demo, just before the 4 minute mark. Never heard of radius damage being applied twice however.

Share this post


Link to post

No, as an imp with 1% health (minimum) shot with plasma (40 damage maximum) would still have -39 hp; it would need -61 hp to be "gibbed" if I get it right.

Share this post


Link to post
vdgg said:

No, as an imp with 1% health (minimum) shot with plasma (40 damage maximum) would still have -39 hp; it would need -61 hp to be "gibbed" if I get it right.


Ohh, OK. Thanks for the info!

Share this post


Link to post

A stylish SSG finish (3 heavy monsters dead at the same time): -skipsec 360
A caco charging forward with a lost soul speed: -skipsec 188

plays back with etrnyour.wad

I had to quit after 8 or 9 minutes because I was too sleepy and forgot the blue key :)

test8.zip

Share this post


Link to post

Rizera said:
Can anyone explain what happened at 0:04?
If I am not mistaken, the maximum damage a rocket can do is 288!

Plays back with Perdition's Gate.

marineController said:
Interesting demo, your first rocket did 603 damage (total).
380 (160 impact + 110 radius + 110 radius) to one revenant, 200 (100 radius + 100 radius) to the other and 23 (radius) to the imp.

The explosion damage from the rocket was applied a second time to both revenants. It's basically a quirk with the blockmap links that you have successfully exploited in your demo.

I just saw this and had to look into it.

There are two revenants, an imp, and two boxes of shells in the same blockmap square. The player opens the door, the two revenants wake up, but importantly, the imp does not.

The player fires the rocket. When it explodes P_BlockThingsIterator runs PIT_RadiusAttack over these things in order, first damaging the two revenants, then the imp.

In P_DamageMobj, because the imp is still asleep (in spawnstate), it wakes it up.¹ This calls A_Chase and a long chain of functions that ends up finally in P_TryMove. P_TryMove moves the imp.

When a thing moves, it is unlinked from its old position in the blockmap and linked into the new one. In this case, it remains within the same block, so it is re-inserted into the same thing list. However it is not inserted back into the same position in the list, it is re-inserted back at the start of the list. Therefore P_BlockThingsIterator continues to loop, processing the revenants a second time and causing them to receive two doses of splash damage.²


——
¹ from P_DamageMobj:

if (target->state == &states[target->info->spawnstate]
    && target->info->seestate != S_NULL)
  P_SetMobjState (target, target->info->seestate);
It's worth noting that a sleeping monster is not always in state spawnstate; most sleeping monsters cycle through the well-known two-step dance, which means they're only in spawnstate half the time. This would make getting this code to trigger somewhat unreliable. (I certainly haven't managed to replicate the double splash damage in my own tests.)


² from P_BlockThingsIterator loop, with added comments. Note that 'func' is PIT_RadiusAttack and 'mobj' is the imp.
for (mobj = blocklinks[y*bmapwidth+x]; mobj; mobj = mobj->bnext)
{
  // before PIT_RadiusAttack: imp is last in list, mobj->bnext is NULL
  // (i.e. the loop should end after this iteration when mobj is set to mobj->bnext)
  if (!func(mobj))
    return false;
  // after PIT_RadiusAttack: list has been re-ordered;
  // imp is now first, mobj->bnext is one of the revenants, the loop continues
}
Essentially, the list being iterated over is modified in place. This is something they tell you you should never do ☺

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×