修复 9.机甲,射杀敌人未显示击杀信息

This commit is contained in:
aozhiwei 2021-06-04 15:06:40 +08:00
parent 056fe43a24
commit 0bbf83d6a3
7 changed files with 22 additions and 4 deletions

View File

@ -23,6 +23,7 @@ class Bullet : public MoveableEntity
MetaData::EquipUpgrade* gun_upgrade_meta = nullptr;
MetaData::Equip* meta = nullptr;
CreatureWeakPtr sender;
CreatureWeakPtr passenger;
a8::Vec2 dir;
a8::Vec2 born_pos;
a8::Vec2 born_dir;

View File

@ -68,6 +68,7 @@ void InternalShot(Creature* c,
(c->room->GetGasData().gas_mode == GasJump &&
!c->HasBuffEffect(kBET_Jump))) {
c->room->CreateBullet(c,
c->shot_passenger,
weapon_meta,
weapon_upgrade_meta,
bullet_meta,

View File

@ -44,6 +44,7 @@ class Creature : public MoveableEntity
long long aiming_frameno = 0;
a8::Vec2 shoot_offset;
int shot_hole = 0;
Creature* shot_passenger = nullptr;
HumanAbility ability;
a8::Vec2 target_pos;
std::function<bool ()> on_move_collision;

View File

@ -3693,10 +3693,17 @@ void Human::OnBulletHit(Bullet* bullet)
if (bullet->meta->buff_meta) {
MustBeAddBuff(this, bullet->meta->i->buffid());
}
DecHP(finaly_dmg,
bullet->sender.Get()->GetEntityUniId(),
bullet->sender.Get()->GetName(),
bullet->gun_meta->i->id());
if (bullet->sender.Get() && bullet->sender.Get()->IsCar() && bullet->passenger.Get()) {
DecHP(finaly_dmg,
bullet->passenger.Get()->GetEntityUniId(),
bullet->passenger.Get()->GetName(),
bullet->gun_meta->i->id());
} else {
DecHP(finaly_dmg,
bullet->sender.Get()->GetEntityUniId(),
bullet->sender.Get()->GetName(),
bullet->gun_meta->i->id());
}
#ifdef DEBUG
bullet->sender.Get()->SendDebugMsg
(a8::Format("bullet weapon_id:%d atk:%f",

View File

@ -200,9 +200,11 @@ void Player::UpdateShot()
a8::Vec2 target_dir = GetAttackDir();
a8::Vec2 old_car_shoot_offset = GetCar()->shoot_offset;
a8::Vec2 old_car_attack_dir = GetCar()->GetAttackDir();
Creature* old_car_shot_passenger = GetCar()->shot_passenger;
int old_car_shot_hole = GetCar()->shot_hole;
GetCar()->shoot_offset = shoot_offset;
GetCar()->shot_hole = GetSeat();
GetCar()->shot_passenger = this;
GetCar()->SetAttackDir(GetAttackDir());
GetCar()->Shot(target_dir, shot_ok, fly_distance);
if (!moving && GetCar()->IsDriver(this)) {
@ -213,6 +215,7 @@ void Player::UpdateShot()
}
GetCar()->shot_hole = old_car_shot_hole;
GetCar()->shoot_offset = old_car_shoot_offset;
GetCar()->shot_passenger = old_car_shot_passenger;
}
shot_start = false;
return;

View File

@ -547,6 +547,7 @@ int Room::CreateLootEx(int equip_id, a8::Vec2 born_pos, a8::Vec2 pos, int count,
}
void Room::CreateBullet(Creature* sender,
Creature* passenger,
MetaData::Equip* weapon_meta,
MetaData::EquipUpgrade* weapon_upgrade_meta,
MetaData::Equip* bullet_meta,
@ -558,6 +559,9 @@ void Room::CreateBullet(Creature* sender,
if (grid_service->CanAdd(pos.x, pos.y)) {
Bullet* bullet = EntityFactory::Instance()->MakeBullet(AllocUniid());
bullet->sender.Attach(sender);
if (passenger) {
bullet->passenger.Attach(passenger);
}
bullet->room = this;
bullet->gun_meta = weapon_meta;
bullet->gun_upgrade_meta = weapon_upgrade_meta;

View File

@ -110,6 +110,7 @@ public:
int CreateLoot(int equip_id, a8::Vec2 pos, int count, int equip_lv);
int CreateLootEx(int equip_id, a8::Vec2 born_pos, a8::Vec2 pos, int count, int equip_lv, bool show_anim);
void CreateBullet(Creature* sender,
Creature* passenger,
MetaData::Equip* weapon_meta,
MetaData::EquipUpgrade* weapon_upgrade_meta,
MetaData::Equip* bullet_meta,