Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/effects.cc b/effects.cc
- index 27c74f2a..80fc1653 100644
- --- a/effects.cc
- +++ b/effects.cc
- @@ -1769,6 +1769,22 @@ Fire_field_effect::Fire_field_effect(
- field = Game_object_weak(field_shared);
- field_obj->set_flag(Obj_flags::is_temporary);
- field_obj->move(t.tx, t.ty, t.tz);
- + for (int frame = 1; frame <= 5; ++frame) {
- + Game_object_shared dust_shared = gmap->create_ireg_object(224, frame);
- + Game_object *dust_obj = dust_shared.get();
- + dust = Game_object_weak(dust_shared);
- + dust_obj->set_flag(Obj_flags::is_temporary);
- + if (frame == 5)
- + dust_obj->move(t.tx, t.ty, t.tz);
- + else if (frame == 1)
- + dust_obj->move(t.tx, t.ty + 1, t.tz);
- + else if (frame == 2)
- + dust_obj->move(t.tx, t.ty - 1, t.tz);
- + else if (frame == 3)
- + dust_obj->move(t.tx - 1, t.ty, t.tz);
- + else if (frame == 4)
- + dust_obj->move(t.tx + 1, t.ty, t.tz);
- + }
- gwin->get_tqueue()->add(Game::get_ticks() + 3000 + rand() % 2000, this);
- }
- @@ -1781,10 +1797,13 @@ void Fire_field_effect::handle_event(
- uintptr udata
- ) {
- Game_object_shared field_obj = field.lock();
- + Game_object_shared dust_obj = dust.lock();
- int frnum = field_obj ? field_obj->get_framenum() : 0;
- if (frnum == 0) { // All done?
- - if (field_obj)
- - field_obj->remove_this();
- + if (field_obj) {
- + field_obj->remove_this();
- + dust_obj->remove_this();
- + }
- auto ownHandle = eman->remove_effect(this);
- return;
- } else {
- diff --git a/effects.h b/effects.h
- index da9d3bf9..00b57600 100644
- --- a/effects.h
- +++ b/effects.h
- @@ -379,6 +379,7 @@ class Earthquake : public Time_sensitive {
- */
- class Fire_field_effect : public Special_effect {
- Game_object_weak field; // What we create.
- + Game_object_weak dust;
- public:
- Fire_field_effect(Tile_coord const &t);
- void handle_event(unsigned long curtime, uintptr udata) override;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement