From fe5244c52da005d049062107551ace50a5d30d7e Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 16 Nov 2023 22:20:07 +0800 Subject: [PATCH] 1 --- server/gameserver/creature.cc | 4 ++- server/gameserver/player.cc | 54 ++++------------------------------- 2 files changed, 9 insertions(+), 49 deletions(-) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index ea101278..cbd11c3c 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -3841,7 +3841,9 @@ void Creature::Throw(int throw_uniid, int slot, 0, 1, nullptr); - //pending_throw_bomb[throw_uniid] = throw_bomb; + if (IsPlayer()) { + AsPlayer()->pending_throw_bomb[throw_uniid] = AsPlayer()->throw_bomb; + } room->xtimer.SetTimeoutEx ( SERVER_FRAME_RATE * 15, diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 2943dea9..a75d72c4 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -1725,29 +1725,6 @@ void Player::UpdateThrowBomb() if (weapon.weapon_idx != 0 && weapon.meta && weapon.ammo > 0) { - if (HasBuffEffect(kBET_Hide)) { - RemoveHideEffect(kShotReason); - } - if (!nature_recover_hp_idle_timer.expired()) { - room->xtimer.FireEvent - ( - nature_recover_hp_idle_timer, - kRemoveNatureRecoverTimerEvent, - nullptr); - } - --weapon.ammo; - room->frame_event.AddPropChgEx - ( - GetWeakPtrRef(), - kPropWeaponAmmo, - weapon.weapon_idx, - weapon.ammo, - weapon.GetClipVolume(this), - 0, - true - ); - DecInventory(equip_meta->_inventory_slot(), 1); - SyncVolume(equip_meta->_inventory_slot()); glm::vec3 bomb_pos = glm::vec3( throw_bomb->pos().x(), throw_bomb->pos().y(), @@ -1758,31 +1735,12 @@ void Player::UpdateThrowBomb() throw_bomb->dir().y(), throw_bomb->dir().z() ); - SetAttackDir(bomb_dir); - int throw_uniid = room->AllocUniid(); - room->frame_event.AddBullet - ( - throw_uniid, - GetWeakPtrRef(), - equip_meta, - 1, - bomb_pos, - bomb_dir, - throw_bomb->fly_distance(), - 0, - 1, - nullptr); - pending_throw_bomb[throw_uniid] = throw_bomb; - room->xtimer.SetTimeoutEx - ( - SERVER_FRAME_RATE * 15, - [this, throw_uniid] (int event, const a8::Args* args) - { - if (a8::TIMER_DELETE_EVENT == event) { - ProcThrowDmg(throw_uniid); - } - }, - &room->xtimer_attacher_); + Throw(0, + slot_id, + bomb_pos, + bomb_dir, + throw_bomb->fly_distance(), + 0); } } }