自爆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)
|
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 AddBullet(Human* hum, Vector2D born_pos, float fly_distance);
|
||||||
void AddExplosion(Bullet* bullet, int item_id, Vector2D bomb_pos);
|
void AddExplosion(Bullet* bullet, int item_id, Vector2D bomb_pos);
|
||||||
void AddSmoke(Bullet* bullet, int item_id, Vector2D pos);
|
void AddSmoke(Bullet* bullet, int item_id, Vector2D pos);
|
||||||
|
void AddExplosionEx(Human* sender, int item_id, Vector2D bomb_pos, int effect);
|
||||||
|
|
||||||
void Clear();
|
void Clear();
|
||||||
private:
|
private:
|
||||||
|
@ -536,6 +536,19 @@ void Room::FetchBuilding(Human* hum)
|
|||||||
|
|
||||||
void Room::OnHumanDie(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_;
|
--alive_count_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -485,7 +485,7 @@ message MFExplosion
|
|||||||
optional int32 item_id = 1; //配置表id
|
optional int32 item_id = 1; //配置表id
|
||||||
optional MFVector2D pos = 2; //位置
|
optional MFVector2D pos = 2; //位置
|
||||||
optional int32 player_id = 3; //玩家id
|
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