mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-11-13 19:58:21 +00:00
Fix baseEnemyApe stuns and fix IdleFlags serialization (#914)
* Fix baseEnemyApe stuns * Correct serialization
This commit is contained in:
parent
9ebb06ba24
commit
675cf1d2a4
@ -3924,14 +3924,16 @@ void GameMessages::SendDisplayChatBubble(LWOOBJID objectId, const std::u16string
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void GameMessages::SendChangeIdleFlags(LWOOBJID objectId, eAnimationFlags FlagsOn, eAnimationFlags FlagsOff, const SystemAddress& sysAddr) {
|
void GameMessages::SendChangeIdleFlags(LWOOBJID objectId, eAnimationFlags flagsOn, eAnimationFlags flagsOff, const SystemAddress& sysAddr) {
|
||||||
CBITSTREAM;
|
CBITSTREAM;
|
||||||
CMSGHEADER;
|
CMSGHEADER;
|
||||||
|
|
||||||
bitStream.Write(objectId);
|
bitStream.Write(objectId);
|
||||||
bitStream.Write(GAME_MSG::GAME_MSG_CHANGE_IDLE_FLAGS);
|
bitStream.Write(GAME_MSG::GAME_MSG_CHANGE_IDLE_FLAGS);
|
||||||
bitStream.Write(FlagsOff);
|
bitStream.Write<bool>(flagsOff != eAnimationFlags::IDLE_NONE);
|
||||||
bitStream.Write(FlagsOn);
|
if (flagsOff != eAnimationFlags::IDLE_NONE) bitStream.Write(flagsOff);
|
||||||
|
bitStream.Write<bool>(flagsOn != eAnimationFlags::IDLE_NONE);
|
||||||
|
if (flagsOn != eAnimationFlags::IDLE_NONE) bitStream.Write(flagsOn);
|
||||||
|
|
||||||
SEND_PACKET_BROADCAST;
|
SEND_PACKET_BROADCAST;
|
||||||
}
|
}
|
||||||
|
@ -31,9 +31,12 @@ void BaseEnemyApe::OnHit(Entity* self, Entity* attacker) {
|
|||||||
if (destroyableComponent != nullptr && destroyableComponent->GetArmor() < 1 && !self->GetBoolean(u"knockedOut")) {
|
if (destroyableComponent != nullptr && destroyableComponent->GetArmor() < 1 && !self->GetBoolean(u"knockedOut")) {
|
||||||
StunApe(self, true);
|
StunApe(self, true);
|
||||||
self->CancelTimer("spawnQBTime");
|
self->CancelTimer("spawnQBTime");
|
||||||
|
auto* skillComponent = self->GetComponent<SkillComponent>();
|
||||||
|
if (skillComponent) {
|
||||||
|
skillComponent->Reset();
|
||||||
|
}
|
||||||
GameMessages::SendPlayAnimation(self, u"disable", 1.7f);
|
GameMessages::SendPlayAnimation(self, u"disable", 1.7f);
|
||||||
|
GameMessages::SendChangeIdleFlags(self->GetObjectID(), eAnimationFlags::IDLE_NONE, eAnimationFlags::IDLE_COMBAT, UNASSIGNED_SYSTEM_ADDRESS);
|
||||||
const auto reviveTime = self->GetVar<float_t>(u"reviveTime") != 0.0f
|
const auto reviveTime = self->GetVar<float_t>(u"reviveTime") != 0.0f
|
||||||
? self->GetVar<float_t>(u"reviveTime") : 12.0f;
|
? self->GetVar<float_t>(u"reviveTime") : 12.0f;
|
||||||
self->AddTimer("reviveTime", reviveTime);
|
self->AddTimer("reviveTime", reviveTime);
|
||||||
@ -50,6 +53,7 @@ void BaseEnemyApe::OnTimerDone(Entity* self, std::string timerName) {
|
|||||||
destroyableComponent->SetArmor(destroyableComponent->GetMaxArmor() / timesStunned);
|
destroyableComponent->SetArmor(destroyableComponent->GetMaxArmor() / timesStunned);
|
||||||
}
|
}
|
||||||
EntityManager::Instance()->SerializeEntity(self);
|
EntityManager::Instance()->SerializeEntity(self);
|
||||||
|
GameMessages::SendChangeIdleFlags(self->GetObjectID(), eAnimationFlags::IDLE_COMBAT, eAnimationFlags::IDLE_NONE, UNASSIGNED_SYSTEM_ADDRESS);
|
||||||
self->SetVar<uint32_t>(u"timesStunned", timesStunned + 1);
|
self->SetVar<uint32_t>(u"timesStunned", timesStunned + 1);
|
||||||
StunApe(self, false);
|
StunApe(self, false);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user