This commit is contained in:
aozhiwei 2021-06-15 14:45:45 +08:00
parent 4a80e4e660
commit e987129307
3 changed files with 16 additions and 2 deletions

View File

@ -27,6 +27,7 @@ enum CreatureStatus
{
CS_AlreadyLordMode = 1,
CS_Disable = 2,
CS_Collisioning = 3,
CS_DisableAttack = 8,
CS_End
};

View File

@ -1775,11 +1775,12 @@ void Human::_UpdateSpecMove()
void Human::_UpdateMove(int speed)
{
if (!HasBuffEffect(kBET_Vertigo)) {
a8::UnSetBitFlag(status, CS_Collisioning);
do {
int distance = std::min(5, speed);
_InternalUpdateMove(distance);
speed -= distance;
} while (speed > 0);
} while (speed > 0 && !a8::HasBitFlag(status, CS_Collisioning));
CheckSpecObject();
}
}
@ -1918,9 +1919,17 @@ void Human::_InternalUpdateMove(float speed)
}
}
#endif
if (a8::HasBitFlag(status, CS_Collisioning)) {
SetPos(old_pos);
return;
}
SetPos(old_pos + a8::Vec2(nx, 0));
if (IsCollisionInMapService()) {
if (a8::HasBitFlag(status, CS_Collisioning)) {
SetPos(old_pos);
return;
}
if (on_move_collision && !on_move_collision()) {
SetPos(old_pos);
return;
@ -1930,6 +1939,10 @@ void Human::_InternalUpdateMove(float speed)
SetPos(old_pos + a8::Vec2(nx, ny));
if (IsCollisionInMapService()) {
if (a8::HasBitFlag(status, CS_Collisioning)) {
SetPos(old_pos);
return;
}
if (on_move_collision && !on_move_collision()) {
SetPos(old_pos);
return;

View File

@ -3946,7 +3946,7 @@ void Room::AirRaid(int airraid_id)
(SERVER_FRAME_RATE * raid_meta->i->appear_time() / 1000.f,
a8::XParams()
.SetSender(this)
.SetParam2(raid_meta)
.SetParam1(raid_meta)
.SetParam2(center.x)
.SetParam3(center.y),
raid_cb,