Fix all smashables not playing animations (#1112)

Fixes an issue where most smashables did not explode into bricks upon death.  This included anything that was spawned or didnt have the flag is_smashable set.
Tested that in races, all objects smash into bricks
Tested that the player properly explodes in their car if they crash
Tested that Shooting Gallery plays the special smash animation when a ship is smashed
Tested that all spawned objects play smash animations

* Fix warning, Fix modular assembly not smashing

* Rename variable to correct name
This commit is contained in:
David Markowitz 2023-06-14 15:44:22 -07:00 committed by GitHub
parent 12d7ab9034
commit 2a0f63c0a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 7 additions and 8 deletions

View File

@ -386,8 +386,8 @@ void Entity::Initialize() {
comp->SetMaxCoins(currencyValues[0].maxvalue); comp->SetMaxCoins(currencyValues[0].maxvalue);
} }
// extraInfo overrides // extraInfo overrides. Client ORs the database smashable and the luz smashable.
comp->SetIsSmashable(GetVarAs<int32_t>(u"is_smashable") != 0); comp->SetIsSmashable(comp->GetIsSmashable() | (GetVarAs<int32_t>(u"is_smashable") != 0));
} }
} else { } else {
comp->SetHealth(1); comp->SetHealth(1);

View File

@ -51,7 +51,7 @@ DestroyableComponent::DestroyableComponent(Entity* parent) : Component(parent) {
m_IsGMImmune = false; m_IsGMImmune = false;
m_IsShielded = false; m_IsShielded = false;
m_DamageToAbsorb = 0; m_DamageToAbsorb = 0;
m_HasBricks = false; m_IsModuleAssembly = m_Parent->HasComponent(eReplicaComponentType::MODULE_ASSEMBLY);
m_DirtyThreatList = false; m_DirtyThreatList = false;
m_HasThreats = false; m_HasThreats = false;
m_ExplodeFactor = 1.0f; m_ExplodeFactor = 1.0f;
@ -163,7 +163,7 @@ void DestroyableComponent::Serialize(RakNet::BitStream* outBitStream, bool bIsIn
outBitStream->Write(m_IsSmashed); outBitStream->Write(m_IsSmashed);
if (m_IsSmashable) { if (m_IsSmashable) {
outBitStream->Write(m_HasBricks); outBitStream->Write(m_IsModuleAssembly);
outBitStream->Write(m_ExplodeFactor != 1.0f); outBitStream->Write(m_ExplodeFactor != 1.0f);
if (m_ExplodeFactor != 1.0f) outBitStream->Write(m_ExplodeFactor); if (m_ExplodeFactor != 1.0f) outBitStream->Write(m_ExplodeFactor);
} }

View File

@ -239,7 +239,7 @@ public:
* Returns whether or not this entity has bricks flying out when smashed * Returns whether or not this entity has bricks flying out when smashed
* @return whether or not this entity has bricks flying out when smashed * @return whether or not this entity has bricks flying out when smashed
*/ */
bool GetHasBricks() const { return m_HasBricks; } bool GetHasBricks() const { return m_IsModuleAssembly; }
/** /**
* Sets the multiplier for the explosion that's visible when the bricks fly out when this entity is smashed * Sets the multiplier for the explosion that's visible when the bricks fly out when this entity is smashed
@ -546,7 +546,7 @@ private:
/** /**
* Whether this entity has bricks flying out when smashed (causes the client to look up the files) * Whether this entity has bricks flying out when smashed (causes the client to look up the files)
*/ */
bool m_HasBricks; bool m_IsModuleAssembly;
/** /**
* The rate at which bricks fly out when smashed * The rate at which bricks fly out when smashed

View File

@ -1002,7 +1002,6 @@ void InventoryComponent::HandlePossession(Item* item) {
// Setup the destroyable stats // Setup the destroyable stats
auto* destroyableComponent = mount->GetComponent<DestroyableComponent>(); auto* destroyableComponent = mount->GetComponent<DestroyableComponent>();
if (destroyableComponent) { if (destroyableComponent) {
destroyableComponent->SetIsSmashable(false);
destroyableComponent->SetIsImmune(true); destroyableComponent->SetIsImmune(true);
} }

View File

@ -11,7 +11,7 @@ void BuccaneerValiantShip::OnStartup(Entity* self) {
// Kill self if missed // Kill self if missed
self->AddCallbackTimer(1.1F, [self]() { self->AddCallbackTimer(1.1F, [self]() {
self->Kill(); self->Smash();
}); });
} }
}); });