// Damage and hurl objects away. // documented in /docs/sdk/script/fn global func BlastObjects(int x, int y, int level, object container, int cause_plr, int damage_level, object layer, object prev_container) { var obj; // Coordinates are always supplied globally, convert to local coordinates. var l_x = x - GetX(), l_y = y - GetY(); // caused by: if not specified, controller of calling object if (cause_plr == nil) if (this) cause_plr = GetController(); // damage: if not specified this is the same as the explosion radius if (damage_level == nil) damage_level = level; // In a container? if (container) { if (container->GetObjectLayer() == layer) { container->BlastObject(damage_level, cause_plr); if (!container) return true; // Container could be removed in the meanwhile. for (obj in FindObjects(Find_Container(container), Find_Layer(layer), Find_Exclude(prev_container))) if (obj) obj->BlastObject(damage_level, cause_plr); } }
global func BlastObjectsBlue(int x, int y, int level, object container, int cause_plr, object layer) { var obj; // Coordinates are always supplied globally, convert to local coordinates. var l_x = x - GetX(), l_y = y - GetY(); // In a container? if (container) { if (container->GetObjectLayer() == layer) { container->BlastObject(level, cause_plr); if (!container) return true; // Container could be removed in the meanwhile. for (obj in FindObjects(Find_Container(container), Find_Layer(layer))) if (obj) obj->BlastObject(level, cause_plr); } }