diff src/th06/ecl_vm.rs @ 720:cffb0f1531fc

ecl_vm: implemented spellcard QED: Ripple of 495 years
author Gauvain "GovanifY" Roussel-Tarbouriech <gauvain@govanify.com>
date Wed, 25 Sep 2019 16:59:21 +0200
parents c187e0a6b751
children bbf0da7de481
line wrap: on
line diff
--- a/src/th06/ecl_vm.rs
+++ b/src/th06/ecl_vm.rs
@@ -988,6 +988,22 @@ impl EclRunner {
                                    rand_y * range_y + enemy.pos.x as f64 - range_y / 2.];
                         enemy.bullet_attributes.fire();
                     }
+                    16 => { // QED: Ripples of 495 years
+                        let mut enemy = self.enemy.borrow_mut();
+                        let game = enemy.game.upgrade().unwrap();
+                        let mut game = game.borrow_mut();
+                        if arg == 0 {
+                            self.frame.floats[3] = 2. - (enemy.life as f32) / 6000.;
+                            self.frame.ints2[1] = ((enemy.life * 240) / 6000 + 40) as i32;
+                        } else {
+                            let fx = (320. - ((enemy.life as f32) * 160.) / 6000.) as f64;
+                            let fy = (128. - ((enemy.life as f32) * 64.) / 6000.) as f64;
+                            let rand_x = game.prng.borrow_mut().get_f64();
+                            let rand_y = game.prng.borrow_mut().get_f64();
+                            self.frame.floats[2] = (rand_x * fx + (192. - fx / 2.)) as f32;
+                            self.frame.floats[3] = (rand_y * fy + (96. - fy / 2.)) as f32;
+                        }
+                    }
                     _ => unimplemented!("spellcards are a bitch and a half")
                 }
             }