Beispiel #1
0
/**
 * Removes momentum for deconstructing a buildable.
 */
float G_RemoveMomentumForDecon( gentity_t *buildable, gentity_t *deconner )
{
	float     value;
	team_t    team;

	// sanity check buildable
	if ( !buildable || buildable->s.eType != entityType_t::ET_BUILDABLE )
	{
		return 0.0f;
	}
	team = BG_Buildable( buildable->s.modelindex )->team;

	if ( buildable->momentumEarned )
	{
		value = buildable->momentumEarned;
	}
	else
	{
		// assume the buildable has just been placed
		value = G_PredictMomentumForBuilding( buildable );
	}

	// Remove only partial momentum as the lost health fraction awards momentum to the enemy.
	value *= buildable->entity->Get<HealthComponent>()->HealthFraction();

	return AddMomentum( CONF_DECONSTRUCTING, team, -value, deconner, false );
}
Beispiel #2
0
/**
 * Removes momentum for deconstructing a buildable.
 */
float G_RemoveMomentumForDecon(gentity_t* buildable, gentity_t* deconner) {
    float value;
    team_t team;

    // sanity check buildable
    if (!buildable || buildable->s.eType != ET_BUILDABLE) {
        return 0.0f;
    }
    team = BG_Buildable(buildable->s.modelindex)->team;

    if (buildable->momentumEarned) {
        value = buildable->momentumEarned;
    } else {
        // assume the buildable has just been placed
        value = G_PredictMomentumForBuilding(buildable);
    }

    value *= buildable->deconHealthFrac;

    return AddMomentum(CONF_DECONSTRUCTING, team, -value, deconner, false);
}