protected override string DoExecuteEffect() { if (!Params.LocalContext.Map.ListTileSet.Contains(sprTileset)) { Params.LocalContext.Map.ListTileSet.Add(sprTileset); } int TilesetIndex = Params.LocalContext.Map.ListTileSet.IndexOf(sprTileset); MapLayer ActiveLayer = Params.LocalContext.Map.ListLayer[Params.LocalContext.Map.ActiveLayerIndex]; foreach (Vector3 ActivePosition in Params.LocalContext.ArrayAttackPosition) { int X = (int)ActivePosition.X; int Y = (int)ActivePosition.Y; DrawableTile ActiveTile = ActiveLayer.OriginalLayerGrid.GetTile(X, Y); ActiveTile.Origin = TerrainAttribute.Origin; ActiveTile.Tileset = TilesetIndex; ActiveLayer.OriginalLayerGrid.ReplaceTile(X, Y, ActiveTile); } ActiveLayer.ResetGrid(); return(TerrainAttribute.Tileset + " (" + TerrainAttribute.Origin.X + ", " + TerrainAttribute.Origin.Y + ")"); }
protected override string DoExecuteEffect() { MapLayer ActiveLayer = Params.LocalContext.Map.ListLayer[Params.LocalContext.Map.ActiveLayerIndex]; foreach (Vector3 ActivePosition in Params.LocalContext.ArrayAttackPosition) { for (int X = -_Radius; X <= _Radius; ++X) { for (int Y = -_Radius; Y <= _Radius; ++Y) { int FinalX = (int)ActivePosition.X + X; int FinalY = (int)ActivePosition.Y + Y; if (Math.Abs(X) + Math.Abs(Y) > Radius || FinalX < 0 || FinalX >= Params.LocalContext.Map.MapSize.X || FinalY < 0 || FinalY >= Params.LocalContext.Map.MapSize.Y) { continue; } ActiveLayer.ArrayTerrain[FinalX, FinalY].Position.Z -= Depth; } } } ActiveLayer.ResetGrid(); return("Depth: " + _Depth + " - Radius: " + _Radius); }