mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-11-25 23:17:28 +00:00
Fix overread in projectile behavior and address broken stuns (#898)
* Fix overread in projectile behavior * Fix stuns * Correctly read in bitStream
This commit is contained in:
parent
d69f733772
commit
2fdcf62ec6
@ -13,7 +13,7 @@ void AttackDelayBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bi
|
|||||||
};
|
};
|
||||||
|
|
||||||
for (auto i = 0u; i < this->m_numIntervals; ++i) {
|
for (auto i = 0u; i < this->m_numIntervals; ++i) {
|
||||||
context->RegisterSyncBehavior(handle, this, branch);
|
context->RegisterSyncBehavior(handle, this, branch, m_ignoreInterrupts);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,12 +45,13 @@ uint32_t BehaviorContext::GetUniqueSkillId() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void BehaviorContext::RegisterSyncBehavior(const uint32_t syncId, Behavior* behavior, const BehaviorBranchContext& branchContext) {
|
void BehaviorContext::RegisterSyncBehavior(const uint32_t syncId, Behavior* behavior, const BehaviorBranchContext& branchContext, bool ignoreInterrupts) {
|
||||||
auto entry = BehaviorSyncEntry();
|
auto entry = BehaviorSyncEntry();
|
||||||
|
|
||||||
entry.handle = syncId;
|
entry.handle = syncId;
|
||||||
entry.behavior = behavior;
|
entry.behavior = behavior;
|
||||||
entry.branchContext = branchContext;
|
entry.branchContext = branchContext;
|
||||||
|
entry.ignoreInterrupts = ignoreInterrupts;
|
||||||
|
|
||||||
this->syncEntries.push_back(entry);
|
this->syncEntries.push_back(entry);
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,7 @@ struct BehaviorContext
|
|||||||
|
|
||||||
uint32_t GetUniqueSkillId() const;
|
uint32_t GetUniqueSkillId() const;
|
||||||
|
|
||||||
void RegisterSyncBehavior(uint32_t syncId, Behavior* behavior, const BehaviorBranchContext& branchContext);
|
void RegisterSyncBehavior(uint32_t syncId, Behavior* behavior, const BehaviorBranchContext& branchContext, bool ignoreInterrupts = false);
|
||||||
|
|
||||||
void RegisterTimerBehavior(Behavior* behavior, const BehaviorBranchContext& branchContext, LWOOBJID second = LWOOBJID_EMPTY);
|
void RegisterTimerBehavior(Behavior* behavior, const BehaviorBranchContext& branchContext, LWOOBJID second = LWOOBJID_EMPTY);
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ void ProjectileAttackBehavior::Handle(BehaviorContext* context, RakNet::BitStrea
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_useMouseposit) {
|
if (m_ProjectileType == 1) {
|
||||||
NiPoint3 targetPosition = NiPoint3::ZERO;
|
NiPoint3 targetPosition = NiPoint3::ZERO;
|
||||||
if (!bitStream->Read(targetPosition)) {
|
if (!bitStream->Read(targetPosition)) {
|
||||||
Game::logger->Log("ProjectileAttackBehavior", "Unable to read targetPosition from bitStream, aborting Handle! %i", bitStream->GetNumberOfUnreadBits());
|
Game::logger->Log("ProjectileAttackBehavior", "Unable to read targetPosition from bitStream, aborting Handle! %i", bitStream->GetNumberOfUnreadBits());
|
||||||
@ -157,4 +157,6 @@ void ProjectileAttackBehavior::Load() {
|
|||||||
this->m_trackRadius = GetFloat("track_radius");
|
this->m_trackRadius = GetFloat("track_radius");
|
||||||
|
|
||||||
this->m_useMouseposit = GetBoolean("use_mouseposit");
|
this->m_useMouseposit = GetBoolean("use_mouseposit");
|
||||||
|
|
||||||
|
this->m_ProjectileType = GetInt("projectile_type");
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,8 @@ public:
|
|||||||
|
|
||||||
bool m_useMouseposit;
|
bool m_useMouseposit;
|
||||||
|
|
||||||
|
int32_t m_ProjectileType;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Inherited
|
* Inherited
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user