-
- case STATE_NORMAL:
- break;
-
- case STATE_BURNING:
- if (sprite->animation_done()) {
- state = STATE_DISINTEGRATING;
- sprite->set_action("disintegrating", 1);
- spreadHit();
- set_solid(false);
- set_group(COLGROUP_DISABLED);
- }
- break;
-
- case STATE_DISINTEGRATING:
- if (sprite->animation_done()) {
- remove_me();
- return;
- }
- break;
-
+
+ case STATE_NORMAL:
+ break;
+
+ case STATE_BURNING:
+ // cause burn light to flicker randomly
+ if (linked) {
+ if(gameRandom.rand(10) >= 7) {
+ lightsprite->set_color(Color(0.2f + gameRandom.rand(20)/100.0f, 0.1f + gameRandom.rand(20)/100.0f, 0.1f));
+ } else
+ lightsprite->set_color(Color(0.3f, 0.2f, 0.1f));
+ }
+
+ if (sprite->animation_done()) {
+ state = STATE_DISINTEGRATING;
+ sprite->set_action("disintegrating", 1);
+ spreadHit();
+ set_group(COLGROUP_DISABLED);
+ lightsprite = sprite_manager->create("images/objects/lightmap_light/lightmap_light-tiny.sprite");
+ lightsprite->set_blend(Blend(GL_SRC_ALPHA, GL_ONE));
+ lightsprite->set_color(Color(0.3f, 0.2f, 0.1f));
+ }
+ break;
+
+ case STATE_DISINTEGRATING:
+ if (sprite->animation_done()) {
+ remove_me();
+ return;
+ }
+ break;
+