diff --git a/dGame/dBehaviors/SwitchBehavior.cpp b/dGame/dBehaviors/SwitchBehavior.cpp index 089ccbd0..bd261906 100644 --- a/dGame/dBehaviors/SwitchBehavior.cpp +++ b/dGame/dBehaviors/SwitchBehavior.cpp @@ -30,7 +30,7 @@ void SwitchBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStre Game::logger->LogDebug("SwitchBehavior", "[%i] State: (%d), imagination: (%i) / (%f)", entity->GetLOT(), state, destroyableComponent->GetImagination(), destroyableComponent->GetMaxImagination()); - if (state && destroyableComponent->GetImagination() >= m_imagination) { + if (state) { this->m_actionTrue->Handle(context, bitStream, branch); } else { this->m_actionFalse->Handle(context, bitStream, branch); diff --git a/dGame/dComponents/RebuildComponent.cpp b/dGame/dComponents/RebuildComponent.cpp index 7f88a67c..acd84a64 100644 --- a/dGame/dComponents/RebuildComponent.cpp +++ b/dGame/dComponents/RebuildComponent.cpp @@ -196,18 +196,18 @@ void RebuildComponent::Update(float deltaTime) { DestroyableComponent* destComp = builder->GetComponent(); if (!destComp) break; - int newImagination = destComp->GetImagination() - 1; + int newImagination = destComp->GetImagination(); + if (newImagination <= 0) { + CancelRebuild(builder, eQuickBuildFailReason::OUT_OF_IMAGINATION, true); + break; + } + ++m_DrainedImagination; + --newImagination; destComp->SetImagination(newImagination); EntityManager::Instance()->SerializeEntity(builder); - ++m_DrainedImagination; - if (newImagination <= 0 && m_DrainedImagination < m_TakeImagination) { - CancelRebuild(builder, eQuickBuildFailReason::OUT_OF_IMAGINATION, true); - - break; - } } if (m_Timer >= m_CompleteTime && m_DrainedImagination >= m_TakeImagination) {