This commit is contained in:
aozhiwei 2019-04-28 17:46:45 +08:00
parent 8b9cb4f482
commit 21f1e30ae1
4 changed files with 37 additions and 1 deletions

View File

@ -101,6 +101,28 @@ void FrameEvent::AddExplosion(Bullet* bullet, int item_id, Vector2D bomb_pos)
}
}
void FrameEvent::AddExplosionEx(Human* sender, int item_id, Vector2D bomb_pos, int effect)
{
{
auto& tuple = a8::FastAppend(explosions_);
std::get<0>(tuple) = sender;
auto& p = std::get<1>(tuple);
p.set_item_id(item_id);
bomb_pos.ToPB(p.mutable_pos());
p.set_player_id(sender->entity_uniid);
p.set_effect(effect);
}
{
int explosion_idx = explosions_.size() - 1;
for (auto& cell : sender->grid_list) {
for (auto& hum : cell->human_list) {
hum->explosions_.push_back(explosion_idx);
}
}
}
}
void FrameEvent::AddSmoke(Bullet* bullet, int item_id, Vector2D pos)
{
{

View File

@ -13,6 +13,7 @@ public:
void AddBullet(Human* hum, Vector2D born_pos, float fly_distance);
void AddExplosion(Bullet* bullet, int item_id, Vector2D bomb_pos);
void AddSmoke(Bullet* bullet, int item_id, Vector2D pos);
void AddExplosionEx(Human* sender, int item_id, Vector2D bomb_pos, int effect);
void Clear();
private:

View File

@ -536,6 +536,19 @@ void Room::FetchBuilding(Human* hum)
void Room::OnHumanDie(Human* hum)
{
if (hum->skill_meta && hum->skill_meta->i->condition() == ST_SelfDetonate) {
for (auto& pair : human_hash_) {
if (pair.second != hum) {
float distance = (hum->pos - pair.second->pos).Norm();
if (distance <= hum->skill_meta->i->area()) {
pair.second->DecHP(hum->skill_meta->i->value1(),
hum->entity_uniid,
hum->name);
}
}
}
frame_event.AddExplosionEx(hum, 0, hum->pos, 1);
}
--alive_count_;
}

View File

@ -485,7 +485,7 @@ message MFExplosion
optional int32 item_id = 1; //id
optional MFVector2D pos = 2; //
optional int32 player_id = 3; //id
optional int32 effect = 4; // 0 1:
optional int32 effect = 4 [default = 0]; // 0 1:
}
//