自爆ok
This commit is contained in:
parent
8b9cb4f482
commit
21f1e30ae1
@ -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)
|
||||
{
|
||||
{
|
||||
|
@ -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:
|
||||
|
@ -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_;
|
||||
}
|
||||
|
||||
|
@ -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:核爆炸
|
||||
}
|
||||
|
||||
//烟雾
|
||||
|
Loading…
x
Reference in New Issue
Block a user