diff options
Diffstat (limited to 'src/game/g_buildable.c')
-rw-r--r-- | src/game/g_buildable.c | 108 |
1 files changed, 54 insertions, 54 deletions
diff --git a/src/game/g_buildable.c b/src/game/g_buildable.c index d855af5..18a0fae 100644 --- a/src/game/g_buildable.c +++ b/src/game/g_buildable.c @@ -3618,51 +3618,51 @@ static int G_CompareBuildablesForRemoval( const void *a, const void *b ) BA_A_SPAWN, BA_A_OVERMIND, BA_A_PANZER_SMALL, - BA_A_PANZER_MEDIUM, - BA_A_PANZER_LARGE, - BA_A_TENDON_SMALL, - BA_A_TENDON_MEDIUM, - BA_A_TENDON_LARGE, - BA_A_NET, - BA_A_NET_SPIKE, - BA_A_INFESTATION_SLIME, - BA_A_INFESTATION_THICKET, - BA_A_INFESTATION_BLISTER, - BA_A_REFLECTOR, - BA_A_MUSCLE, - BA_A_SPITEFUL_ABCESS, - BA_A_COCOON, - BA_A_ORGANIC_BULB, - BA_A_POD, - BA_A_POD_STUMP, - BA_A_CREEPCOLONY, - + BA_A_PANZER_MEDIUM, + BA_A_PANZER_LARGE, + BA_A_TENDON_SMALL, + BA_A_TENDON_MEDIUM, + BA_A_TENDON_LARGE, + BA_A_NET, + BA_A_NET_SPIKE, + BA_A_INFESTATION_SLIME, + BA_A_INFESTATION_THICKET, + BA_A_INFESTATION_BLISTER, + BA_A_REFLECTOR, + BA_A_MUSCLE, + BA_A_SPITEFUL_ABCESS, + BA_A_COCOON, + BA_A_ORGANIC_BULB, + BA_A_POD, + BA_A_POD_STUMP, + BA_A_CREEPCOLONY, + BA_H_MGTURRET, - BA_H_MGTURRET2, + BA_H_MGTURRET2, BA_H_TESLAGEN, BA_H_DCC, BA_H_MEDISTAT, BA_H_ARMOURY, BA_H_SPAWN, BA_H_REPEATER, - BA_H_CONTAINER_SMALL, + BA_H_CONTAINER_SMALL, BA_H_CONTAINER_MEDIUM, - BA_H_CONTAINER_LARGE, - BA_H_PLATE_SMALL, - BA_H_PLATE_LARGE, + BA_H_CONTAINER_LARGE, + BA_H_PLATE_SMALL, + BA_H_PLATE_LARGE, BA_H_FENCE, BA_H_FENCE_ROD, BA_H_BARRIER_LINE, BA_H_BARRIER_CORNER, BA_H_BARRIER_POINT, - BA_H_SHIELD, - BA_H_LADDER, - BA_H_TEFLON_FOIL, + BA_H_SHIELD, + BA_H_LADDER, + BA_H_TEFLON_FOIL, BA_H_BARREL, BA_H_LIGHT, - BA_H_COVER, - BA_H_COVER_STUMP, - BA_H_REFINERY, + BA_H_COVER, + BA_H_COVER_STUMP, + BA_H_REFINERY, }; gentity_t *buildableA, *buildableB; @@ -4237,13 +4237,19 @@ itemBuildError_t G_CanBuild( gentity_t *ent, buildable_t buildable, int distance { case 0: break; case 1: // only creep providing buildings are blocked - // if( buildable != BA_A_OVERMIND && buildable != BA_A_SPAWN ) - break; - // otherwise check the power + if( buildable != BA_A_OVERMIND && buildable != BA_A_SPAWN ) + break; + if( G_IsPowered( entity_origin ) != BA_NONE ) + reason = IBE_BLOCKEDBYENEMY; + break; + case 2: // Creeps/colonies block building for enemy team + if( G_IsGathered( TEAM_HUMANS, entity_origin, qfalse, ent ) ) + reason = IBE_BLOCKEDBYENEMY; + break; default: if( G_IsPowered( entity_origin ) != BA_NONE ) reason = IBE_BLOCKEDBYENEMY; - break; + break; } // Check that there isn't another refinery/colony nearby @@ -4266,22 +4272,11 @@ itemBuildError_t G_CanBuild( gentity_t *ent, buildable_t buildable, int distance // Check for power { //tell player to build a repeater to provide power - if( buildable != BA_H_REACTOR && buildable != BA_H_REPEATER && buildable != BA_H_LADDER -&& buildable != BA_H_CONTAINER_SMALL -&& buildable != BA_H_CONTAINER_MEDIUM -&& buildable != BA_H_CONTAINER_LARGE -&& buildable != BA_H_PLATE_SMALL -&& buildable != BA_H_PLATE_LARGE -&& buildable != BA_H_FENCE -&& buildable != BA_H_FENCE_ROD -&& buildable != BA_H_BARRIER_LINE -&& buildable != BA_H_BARRIER_CORNER -&& buildable != BA_H_BARRIER_POINT -&& buildable != BA_H_TEFLON_FOIL -&& buildable != BA_H_BARREL -&& buildable != BA_H_COVER -&& buildable != BA_H_COVER_STUMP - ) + if( buildable != BA_H_REACTOR && buildable != BA_H_REPEATER && buildable != BA_H_LADDER && + buildable != BA_H_CONTAINER_SMALL && buildable != BA_H_CONTAINER_MEDIUM && buildable != BA_H_CONTAINER_LARGE && + buildable != BA_H_PLATE_SMALL && buildable != BA_H_PLATE_LARGE && buildable != BA_H_FENCE && buildable != BA_H_FENCE_ROD && + buildable != BA_H_BARRIER_LINE && buildable != BA_H_BARRIER_CORNER && buildable != BA_H_BARRIER_POINT && + buildable != BA_H_TEFLON_FOIL && buildable != BA_H_BARREL && buildable != BA_H_COVER && buildable != BA_H_COVER_STUMP ) reason = IBE_NOPOWERHERE; } @@ -4291,13 +4286,18 @@ itemBuildError_t G_CanBuild( gentity_t *ent, buildable_t buildable, int distance { case 0: break; case 1: // only power providing buildings are blocked -// if( buildable != BA_H_REACTOR && buildable != BA_H_REPEATER ) - + if( buildable != BA_H_REACTOR && buildable != BA_H_REPEATER ) break; - // otherwise check the creep - default: if( G_IsCreepHere( entity_origin ) ) reason = IBE_BLOCKEDBYENEMY; + case 2: // Creeps/colonies block building for enemy team + if( G_IsGathered( TEAM_ALIENS, entity_origin, qfalse, ent ) ) + reason = IBE_BLOCKEDBYENEMY; + break; + default: + if( G_IsCreepHere( entity_origin ) ) + reason = IBE_BLOCKEDBYENEMY; + break; } //this buildable requires a DCC |