diff options
-rw-r--r-- | src/game/g_buildable.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/game/g_buildable.c b/src/game/g_buildable.c index 7ae279d7..870fa6fe 100644 --- a/src/game/g_buildable.c +++ b/src/game/g_buildable.c @@ -1235,6 +1235,16 @@ qboolean AHovel_Blocked( gentity_t *hovel, gentity_t *player, qboolean provideEx VectorMaxComponent( hovelMaxs ) * M_ROOT3 + 1.0f; VectorMA( hovel->s.origin, displacement, forward, origin ); + + VectorCopy( hovel->s.origin, start ); + VectorCopy( origin, end ); + + // see if there's something between the hovel and its exit + // (eg built right up against a wall) + trap_Trace( &tr, start, NULL, NULL, end, player->s.number, MASK_PLAYERSOLID ); + if( tr.fraction < 1.0f ) + return qtrue; + vectoangles( forward, angles ); VectorMA( origin, HOVEL_TRACE_DEPTH, normal, start ); @@ -3081,7 +3091,7 @@ itemBuildError_t G_CanBuild( gentity_t *ent, buildable_t buildable, int distance //this assumes the adv builder is the biggest thing that'll use the hovel BG_ClassBoundingBox( PCL_ALIEN_BUILDER0_UPG, builderMins, builderMaxs, NULL, NULL, NULL ); - if( APropHovel_Blocked( angles, origin, normal, ent ) ) + if( APropHovel_Blocked( origin, angles, normal, ent ) ) reason = IBE_HOVELEXIT; } |