From 59595e75c0b2a756b622c57e41587b8b11a33413 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 17 Jul 2019 17:54:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=BF=BD=E8=B8=AA=E5=BC=B9?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/bullet.cc | 9 ++++++++- server/gameserver/human.cc | 3 ++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index cc34de1..5a0683b 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -241,9 +241,16 @@ void Bullet::ProcMissible(const a8::XParams& param) Human* sender = (Human*)param.sender.GetUserData(); MetaData::Equip* bullet_meta = MetaMgr::Instance()->GetEquip(param.param1); if (sender && bullet_meta && !sender->room->IsGameOver()) { + a8::Vec2 src_pos(a8::Low32(param.param3.GetInt64()), a8::High32(param.param3.GetInt64())); Human* target = sender->room->GetHumanByUniId(param.param2); if (target && !target->dead) { - target->DecHP(10, sender->entity_uniid, sender->name, bullet_meta->i->id()); + if (bullet_meta->i->equip_subtype() == BulletType_Trace) { + if (src_pos.Distance(target->pos) < bullet_meta->i->range()) { + target->DecHP(bullet_meta->i->atk(), sender->entity_uniid, sender->name, bullet_meta->i->id()); + } + } else { + target->DecHP(bullet_meta->i->atk(), sender->entity_uniid, sender->name, bullet_meta->i->id()); + } } } } diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index bb68ba3..42ff3c9 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -220,7 +220,8 @@ void Human::Shot() a8::XParams() .SetSender(this) .SetParam1(curr_weapon->meta->i->id()) - .SetParam2(shot_target_id), + .SetParam2(shot_target_id) + .SetParam3(a8::MakeInt64(pos.x, pos.y)), Bullet::ProcMissible, &xtimer_attacher.timer_list_); }