Bug 3606 - Eggs and telenodes handling of blocked spawn area is problematic
Status: RESOLVED FIXED
Alias: None
Product: Tremulous
Classification: Unclassified
Component: Misc
Version: SVN HEAD
Hardware: PC All
: P3 major
Assignee: Tim Angus
QA Contact: Tremulous Bugs
URL:
Depends on:
Blocks:
 
Reported: 2008-04-19 17:29 EDT by Ben Millwood
Modified: 2009-10-17 19:21:19 EDT
0 users

See Also:


Attachments
do not allow building spawns where they would explode (1.27 KB, patch)
2008-08-27 13:09 EDT, /dev/humancontroller

Description Ben Millwood 2008-04-19 17:29:38 EDT
Eggs and telenodes have an area above them that the player spawns in, outside of their hitbox. They cannot be built if this area is blocked - fair enough.
But this causes a number of problems:

1) If they are blocked by a marked buildable, they do not offer to remove it. This results in situations where it is impossible to build a spawn somewhere without removing the blocking buildable by other means first - not always easy.
2) If a buildable is built in this area, the spawn explodes. Some griefers have caught on to this and have been "stealth deconning" by building in the spawn zone of eggs (even a very close barricade is sufficient) and thus destroying the egg without producing the decon message (and bypassing the last-spawn protection).
This is also incredibly annoying for legitimate builders, especially since the egg will allow placing, complete, and /then/ explode, wasting their build timer and forcing them to rearrange their buildings.

I think there are more issues here but I'm pressed for time, and these are quite enough to start us off.
Comment 1 Amanieu d'Antras 2008-08-27 04:06:54 EDT
Issue #2 is caused by a change in the position of the buildable between the moment when enough room for spawning is checked and when it is actually built. I do not know what causes the change.
Comment 2 /dev/humancontroller 2008-08-27 12:50:46 EDT
(In reply to comment #1)
> Issue #2 is caused by a change in the position of the buildable between the
> moment when enough room for spawning is checked and when it is actually built.

No.
Comment 3 /dev/humancontroller 2008-08-27 13:09:26 EDT
Created attachment 1848 [details]
do not allow building spawns where they would explode

+ Is it me, or should there really be a check for passing a segfault-potential parameter like passEntityNum = -1?
Comment 4 Chris "Lakitu7" Schwarz 2008-10-12 13:10:26 EDT
I verified and committed this fix at 1123. It successfully prevents building a spawn only to have it die by unbreaking those checks in G_CheckSpawnPoint(). Thank you DevHC.

It's still possible to build another buildable that blocks a spawn, but the possible fixes for it that I can come up with are either too hacky or need big refactorings. 

As such I have made a change (also in 1123) such that when this occurs, the new buildable is killed instead of the egg. This prevents griefers from exploiting the bug and the combined two changes produce a massive improvement. 

This bug remains open because the fix is only partial, although it is now quite severely neutered.
Comment 5 Tim Angus 2009-10-17 19:21:19 EDT
Meh, neutered enough for me.