// documented in /docs/sdk/script/fn global func Explode(int level, bool silent, int damage_level) { if(!this) FatalError("Function Explode must be called from object context"); // Special: Implode if (level <= 0) return RemoveObject(); // Shake the viewport. ShakeViewport(level); // Explosion parameters. var x = GetX(), y = GetY(); var cause_plr = GetController(); var container = Contained(); var exploding_id = GetID(); var layer = GetObjectLayer(); // Explosion parameters saved: Remove object now, since it should not be involved in the explosion. RemoveObject(); // Execute the explosion in global context. // There is no possibility to interact with the global context, apart from GameCall. // So at least remove the object context. exploding_id->DoExplosion(x, y, level, container, cause_plr, layer, silent, damage_level); }
global func BlueExplode(int level) { // Shake the viewport. ShakeViewport(level, GetX(), GetY()); // Sound must be created before object removal, for it to be played at the right position. var grade = BoundBy(level / 10 - 1, 1, 3); Sound(Format("Blast%d", grade), false); // Explosion parameters. var x = GetX(), y = GetY(); var cause_plr = GetController(); var container = Contained(); var exploding_id = GetID(); var layer = GetObjectLayer(); // Explosion parameters saved: Remove object now, since it should not be involved in the explosion. RemoveObject(); // Execute the explosion in global context. // There is no possibility to interact with the global context, apart from GameCall. // So at least remove the object context. exploding_id->DoBlueExplosion(x, y, level, container, cause_plr, layer); return; }