Added a WeatherOverlay
This commit is contained in:
@@ -145,7 +145,6 @@ namespace OpenRA.Graphics
|
||||
for (var i = 0; i < renderables.Count; i++)
|
||||
renderables[i].Render(this);
|
||||
|
||||
// added for contrails
|
||||
foreach (var a in World.ActorsWithTrait<IPostRender>())
|
||||
if (a.Actor.IsInWorld && !a.Actor.Disposed)
|
||||
a.Trait.RenderAfterWorld(this, a.Actor);
|
||||
|
||||
@@ -304,6 +304,7 @@ namespace OpenRA.Traits
|
||||
}
|
||||
|
||||
public interface IPostRender { void RenderAfterWorld(WorldRenderer wr, Actor self); }
|
||||
|
||||
public interface IRenderShroud { void RenderShroud(WorldRenderer wr, Shroud shroud); }
|
||||
|
||||
public interface IPostRenderSelection { IEnumerable<IRenderable> RenderAfterWorld(WorldRenderer wr); }
|
||||
|
||||
@@ -522,6 +522,7 @@
|
||||
<Compile Include="Traits\World\SpawnMPUnits.cs" />
|
||||
<Compile Include="Traits\World\StartGameNotification.cs" />
|
||||
<Compile Include="Traits\World\TerrainGeometryOverlay.cs" />
|
||||
<Compile Include="Traits\World\WeatherOverlay.cs" />
|
||||
<Compile Include="UtilityCommands\CheckYaml.cs" />
|
||||
<Compile Include="UtilityCommands\CheckCodeStyle.cs" />
|
||||
<Compile Include="UtilityCommands\ConvertPngToShpCommand.cs" />
|
||||
|
||||
310
OpenRA.Mods.Common/Traits/World/WeatherOverlay.cs
Normal file
310
OpenRA.Mods.Common/Traits/World/WeatherOverlay.cs
Normal file
@@ -0,0 +1,310 @@
|
||||
#region Copyright & License Information
|
||||
/*
|
||||
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
|
||||
* This file is part of OpenRA, which is free software. It is made
|
||||
* available to you under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation. For more information,
|
||||
* see COPYING.
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using OpenRA.Graphics;
|
||||
using OpenRA.Traits;
|
||||
|
||||
namespace OpenRA.Mods.Common.Traits
|
||||
{
|
||||
[Desc("Adds a particle-based overlay.")]
|
||||
public class WeatherOverlayInfo : ITraitInfo
|
||||
{
|
||||
[Desc("Factor for particle density. As higher as more particles will get spawned.")]
|
||||
public readonly float ParticleDensityFactor = 0.0007625f;
|
||||
|
||||
[Desc("Should the level of the wind change over time, or just stick to the first value of WindLevels?")]
|
||||
public readonly bool ChangingWindLevel = true;
|
||||
|
||||
[Desc("The levels of wind intensity (particles x-axis movement in px/tick).")]
|
||||
public readonly int[] WindLevels = { -5, -3, -2, 0, 2, 3, 5 };
|
||||
|
||||
[Desc("Works only if ChangingWindLevel is enabled. Min. and max. ticks needed to change the WindLevel.")]
|
||||
public readonly int[] WindTick = { 150, 750 };
|
||||
|
||||
[Desc("Hard or soft fading between the WindLevels.")]
|
||||
public readonly bool InstantWindChanges = false;
|
||||
|
||||
[Desc("Particles are drawn in squares when enabled, else with lines.")]
|
||||
public readonly bool UseSquares = true;
|
||||
|
||||
[Desc("Works only with squares enabled. Size min. and max. value in pixels.")]
|
||||
public readonly int[] PaticleSize = { 1, 3 };
|
||||
|
||||
[Desc("Scatters falling direction on the x-axis. Scatter min. and max. value in px/tick.")]
|
||||
public readonly int[] ScatterDirection = { -1, 1 };
|
||||
|
||||
[Desc("Min. and max. speed at which particles fall in px/tick.")]
|
||||
public readonly float[] Gravity = { 1.00f, 2.00f };
|
||||
|
||||
[Desc("The current offset value for the swing movement. SwingOffset min. and max. value in px/tick.")]
|
||||
public readonly float[] SwingOffset = { 1.0f, 1.5f };
|
||||
|
||||
[Desc("The value that particles swing to the side each update. SwingSpeed min. and max. value in px/tick.")]
|
||||
public readonly float[] SwingSpeed = { 0.001f, 0.025f };
|
||||
|
||||
[Desc("The value range that can be swung to the left or right. SwingAmplitude min. and max. value in px/tick.")]
|
||||
public readonly float[] SwingAmplitude = { 1.0f, 1.5f };
|
||||
|
||||
[Desc("The randomly selected ArgbColors for the particles. Use this order: a,r,g,b, a,r,g,b, a,...")]
|
||||
public readonly Color[] ParticleColors = {
|
||||
Color.FromArgb(255, 236, 236, 236),
|
||||
Color.FromArgb(255, 228, 228, 228),
|
||||
Color.FromArgb(255, 208, 208, 208),
|
||||
Color.FromArgb(255, 188, 188, 188)
|
||||
};
|
||||
|
||||
[Desc("Works only with line enabled and can get used to fade out the tail of the line like a contrail.")]
|
||||
public readonly byte LineTailAlphaValue = 200;
|
||||
|
||||
public object Create(ActorInitializer init) { return new WeatherOverlay(init.World, this); }
|
||||
}
|
||||
|
||||
public class WeatherOverlay : ITick, IPostRender
|
||||
{
|
||||
readonly WeatherOverlayInfo info;
|
||||
readonly World world;
|
||||
struct Particle
|
||||
{
|
||||
public float PosX;
|
||||
public float PosY;
|
||||
public int Size;
|
||||
public float DirectionScatterX;
|
||||
public float Gravity;
|
||||
public float SwingOffset;
|
||||
public float SwingSpeed;
|
||||
public int SwingDirection;
|
||||
public float SwingAmplitude;
|
||||
public Color Color;
|
||||
public Color TailColor;
|
||||
}
|
||||
|
||||
readonly List<Particle> particleList = new List<Particle>();
|
||||
readonly int maxParticleCount;
|
||||
|
||||
enum ParticleCountFaderType { Hold, FadeIn, FadeOut }
|
||||
ParticleCountFaderType particleCountFader = ParticleCountFaderType.FadeIn;
|
||||
|
||||
float targetWindXOffset = 0f;
|
||||
float currentWindXOffset = 0f;
|
||||
int currentWindIndex = 0;
|
||||
long windTickCountdown = 1500;
|
||||
float2 antiScrollPrevTopLeft;
|
||||
|
||||
public WeatherOverlay(World world, WeatherOverlayInfo info)
|
||||
{
|
||||
this.info = info;
|
||||
this.world = world;
|
||||
currentWindIndex = info.WindLevels.Length / 2;
|
||||
targetWindXOffset = info.WindLevels[0];
|
||||
maxParticleCount = CalculateParticleCount(Game.Renderer.Resolution.Width, Game.Renderer.Resolution.Height);
|
||||
}
|
||||
|
||||
int CalculateParticleCount(int x, int y)
|
||||
{
|
||||
return (int)(x * y * info.ParticleDensityFactor);
|
||||
}
|
||||
|
||||
void SpawnParticles(int count, int rangeY, int spawnChancePercent)
|
||||
{
|
||||
for (var i = 0; i < count; i++)
|
||||
{
|
||||
if (Game.CosmeticRandom.Next(100) < spawnChancePercent)
|
||||
{
|
||||
var tempColor = info.ParticleColors.Random(Game.CosmeticRandom);
|
||||
var tempColorTail = Color.FromArgb(info.LineTailAlphaValue, tempColor.R, tempColor.G, tempColor.B);
|
||||
var tempSwingDirection = Game.CosmeticRandom.Next(2) == 0 ? 1 : -1;
|
||||
|
||||
particleList.Add(
|
||||
new Particle
|
||||
{
|
||||
PosX = Game.CosmeticRandom.Next(Game.Renderer.Resolution.Width),
|
||||
PosY = Game.CosmeticRandom.Next(rangeY),
|
||||
Size = Game.CosmeticRandom.Next(info.PaticleSize[0], info.PaticleSize[1] + 1),
|
||||
DirectionScatterX = info.ScatterDirection[0] + Game.CosmeticRandom.Next(info.ScatterDirection[1] - info.ScatterDirection[0]),
|
||||
Gravity = float2.Lerp(info.Gravity[0], info.Gravity[1], Game.CosmeticRandom.NextFloat()),
|
||||
SwingOffset = float2.Lerp(info.SwingOffset[0], info.SwingOffset[1], Game.CosmeticRandom.NextFloat()),
|
||||
SwingSpeed = float2.Lerp(info.SwingSpeed[0], info.SwingSpeed[1], Game.CosmeticRandom.NextFloat()),
|
||||
SwingDirection = tempSwingDirection,
|
||||
SwingAmplitude = float2.Lerp(info.SwingAmplitude[0], info.SwingAmplitude[1], Game.CosmeticRandom.NextFloat()),
|
||||
Color = tempColor,
|
||||
TailColor = tempColorTail
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ParticlesCountLogic(WorldRenderer wr)
|
||||
{
|
||||
// Logic to switch between the states of the particleCountFader
|
||||
if (particleCountFader == ParticleCountFaderType.Hold && particleList.Count < maxParticleCount)
|
||||
particleCountFader = ParticleCountFaderType.FadeIn;
|
||||
else if (particleCountFader == ParticleCountFaderType.FadeIn && particleList.Count >= maxParticleCount)
|
||||
particleCountFader = ParticleCountFaderType.Hold;
|
||||
else if (particleCountFader == ParticleCountFaderType.FadeOut && particleList.Count == 0)
|
||||
particleCountFader = ParticleCountFaderType.Hold;
|
||||
|
||||
// Do the fade functions
|
||||
if (particleCountFader == ParticleCountFaderType.FadeIn)
|
||||
FadeInParticleCount(wr);
|
||||
else if (particleCountFader == ParticleCountFaderType.FadeOut)
|
||||
FadeOutParticleCount(wr);
|
||||
}
|
||||
|
||||
void FadeInParticleCount(WorldRenderer wr)
|
||||
{
|
||||
SpawnParticles(1, 0, 100);
|
||||
|
||||
// Remove Particles, which are getting replaced from the top to the bottom by the "EdgeCheckReplace",
|
||||
// when scrolling down, as long as the FadeIn is not completed,
|
||||
// to avoid having particles at the top and bottom, but not in the middle of the screen.
|
||||
for (var i = 0; i < particleList.Count; i++)
|
||||
if (particleList[i].PosY < 0)
|
||||
particleList.RemoveAt(i);
|
||||
|
||||
// Add Particles when the weather is fading in and scrolling up, to fill areas above
|
||||
if (antiScrollPrevTopLeft.Y > wr.Viewport.TopLeft.Y)
|
||||
{
|
||||
// Get delta Y and limit to the max value
|
||||
var tempRangeY = antiScrollPrevTopLeft.Y - wr.Viewport.TopLeft.Y;
|
||||
var tempParticleCount = CalculateParticleCount(Game.Renderer.Resolution.Width, (int)tempRangeY);
|
||||
if (particleList.Count + tempParticleCount > maxParticleCount)
|
||||
tempParticleCount = maxParticleCount - particleList.Count;
|
||||
|
||||
SpawnParticles(tempParticleCount, (int)tempRangeY, 50);
|
||||
}
|
||||
}
|
||||
|
||||
void FadeOutParticleCount(WorldRenderer wr)
|
||||
{
|
||||
for (var i = 0; i < particleList.Count; i++)
|
||||
if (particleList[i].PosY > (Game.Renderer.Resolution.Height - particleList[i].Gravity))
|
||||
particleList.RemoveAt(i);
|
||||
}
|
||||
|
||||
void XAxisSwing(ref Particle tempParticle)
|
||||
{
|
||||
// Direction turn
|
||||
if (tempParticle.SwingOffset < -tempParticle.SwingAmplitude || tempParticle.SwingOffset > tempParticle.SwingAmplitude)
|
||||
tempParticle.SwingDirection *= -1;
|
||||
|
||||
// Perform the X-Axis-Swing
|
||||
tempParticle.SwingOffset += tempParticle.SwingDirection * tempParticle.SwingSpeed;
|
||||
}
|
||||
|
||||
public void Tick(Actor self)
|
||||
{
|
||||
windTickCountdown--;
|
||||
}
|
||||
|
||||
void WindLogic(ref Particle tempParticle)
|
||||
{
|
||||
if (!info.ChangingWindLevel)
|
||||
targetWindXOffset = info.WindLevels[0];
|
||||
else if (windTickCountdown <= 0)
|
||||
{
|
||||
windTickCountdown = Game.CosmeticRandom.Next(info.WindTick[0], info.WindTick[1]);
|
||||
if (Game.CosmeticRandom.Next(2) == 1 && currentWindIndex > 0)
|
||||
{
|
||||
currentWindIndex--;
|
||||
targetWindXOffset = info.WindLevels[currentWindIndex];
|
||||
}
|
||||
else if (currentWindIndex < info.WindLevels.Length - 1)
|
||||
{
|
||||
currentWindIndex++;
|
||||
targetWindXOffset = info.WindLevels[currentWindIndex];
|
||||
}
|
||||
}
|
||||
|
||||
// Fading the wind in little steps towards the TargetWindOffset
|
||||
if (info.InstantWindChanges)
|
||||
currentWindXOffset = targetWindXOffset;
|
||||
else if (currentWindXOffset != targetWindXOffset)
|
||||
{
|
||||
if (currentWindXOffset > targetWindXOffset)
|
||||
currentWindXOffset -= 0.00001f;
|
||||
else if (currentWindXOffset < targetWindXOffset)
|
||||
currentWindXOffset += 0.00001f;
|
||||
}
|
||||
}
|
||||
|
||||
void Movement(ref Particle tempParticle)
|
||||
{
|
||||
tempParticle.PosX += tempParticle.DirectionScatterX + tempParticle.SwingOffset + currentWindXOffset;
|
||||
tempParticle.PosY += tempParticle.Gravity;
|
||||
}
|
||||
|
||||
// AntiScroll keeps the particles in place when scrolling the viewport
|
||||
void AntiScroll(ref Particle tempParticle, WorldRenderer wr)
|
||||
{
|
||||
tempParticle.PosX += antiScrollPrevTopLeft.X - wr.Viewport.TopLeft.X;
|
||||
tempParticle.PosY += antiScrollPrevTopLeft.Y - wr.Viewport.TopLeft.Y;
|
||||
}
|
||||
|
||||
void EdgeCheckReplace(ref Particle tempParticle, WorldRenderer wr)
|
||||
{
|
||||
tempParticle.PosX %= Game.Renderer.Resolution.Width;
|
||||
if (tempParticle.PosX < 0)
|
||||
tempParticle.PosX += Game.Renderer.Resolution.Width;
|
||||
|
||||
tempParticle.PosY %= Game.Renderer.Resolution.Height;
|
||||
if (tempParticle.PosY < 0 && particleCountFader != ParticleCountFaderType.FadeIn)
|
||||
tempParticle.PosY += Game.Renderer.Resolution.Height;
|
||||
}
|
||||
|
||||
void UpdateWeatherOverlay(WorldRenderer wr)
|
||||
{
|
||||
ParticlesCountLogic(wr);
|
||||
|
||||
for (var i = 0; i < particleList.Count; i++)
|
||||
{
|
||||
Particle tempParticle = particleList[i];
|
||||
|
||||
XAxisSwing(ref tempParticle);
|
||||
WindLogic(ref tempParticle);
|
||||
Movement(ref tempParticle);
|
||||
AntiScroll(ref tempParticle, wr);
|
||||
EdgeCheckReplace(ref tempParticle, wr);
|
||||
|
||||
particleList[i] = tempParticle;
|
||||
}
|
||||
|
||||
antiScrollPrevTopLeft = wr.Viewport.TopLeft;
|
||||
}
|
||||
|
||||
void DrawWeatherOverlay(WorldRenderer wr)
|
||||
{
|
||||
var topLeft = wr.Viewport.TopLeft;
|
||||
foreach (var item in particleList)
|
||||
{
|
||||
var tempPos = new float2(item.PosX + topLeft.X, item.PosY + topLeft.Y);
|
||||
|
||||
if (info.UseSquares)
|
||||
Game.Renderer.WorldQuadRenderer.FillRect(new RectangleF(tempPos.X, tempPos.Y, item.Size, item.Size), item.Color);
|
||||
else
|
||||
{
|
||||
var tempPosTail = new float2(topLeft.X + item.PosX - currentWindXOffset, item.PosY - (item.Gravity * 2 / 3) + topLeft.Y);
|
||||
Game.Renderer.WorldLineRenderer.DrawLine(tempPos, tempPosTail, item.Color, item.TailColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void RenderAfterWorld(WorldRenderer wr, Actor self)
|
||||
{
|
||||
if (!world.Paused)
|
||||
UpdateWeatherOverlay(wr);
|
||||
|
||||
DrawWeatherOverlay(wr);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -501,6 +501,21 @@ Rules:
|
||||
CrateActors: fortcrate
|
||||
-SpawnMPUnits:
|
||||
-MPStartLocations:
|
||||
WeatherOverlay:
|
||||
ParticleDensityFactor: 0.0007625
|
||||
ChangingWindLevel: true
|
||||
WindLevels: -5, -3, -2, 0, 2, 3, 5
|
||||
WindTick: 150, 550
|
||||
InstantWindChanges: false
|
||||
UseSquares: false
|
||||
PaticleSize: 0, 0
|
||||
ScatterDirection: 0, 0
|
||||
Gravity: 8.00, 12.00
|
||||
SwingOffset: 0, 0
|
||||
SwingSpeed: 0, 0
|
||||
SwingAmplitude: 0, 0
|
||||
ParticleColors: 255,48,64,116, 255,40,56,108, 255,32,44,96, 255,24,44,84
|
||||
LineTailAlphaValue: 150
|
||||
GlobalLightingPaletteEffect:
|
||||
Red: 0.75
|
||||
Green: 0.85
|
||||
|
||||
Binary file not shown.
BIN
mods/ra/maps/snow town/map.bin
Normal file
BIN
mods/ra/maps/snow town/map.bin
Normal file
Binary file not shown.
695
mods/ra/maps/snow town/map.yaml
Normal file
695
mods/ra/maps/snow town/map.yaml
Normal file
@@ -0,0 +1,695 @@
|
||||
MapFormat: 7
|
||||
|
||||
RequiresMod: ra
|
||||
|
||||
Title: Snow Town
|
||||
|
||||
Description: 3v3
|
||||
|
||||
Author: MicroBit
|
||||
|
||||
Tileset: SNOW
|
||||
|
||||
MapSize: 128,128
|
||||
|
||||
Bounds: 16,16,96,96
|
||||
|
||||
Visibility: Lobby
|
||||
|
||||
Type: Conquest
|
||||
|
||||
Videos:
|
||||
|
||||
Options:
|
||||
|
||||
Players:
|
||||
PlayerReference@Neutral:
|
||||
Name: Neutral
|
||||
OwnsWorld: True
|
||||
NonCombatant: True
|
||||
Faction: allies
|
||||
PlayerReference@Multi0:
|
||||
Name: Multi0
|
||||
Playable: True
|
||||
Faction: Random
|
||||
Enemies: Creeps
|
||||
PlayerReference@Multi1:
|
||||
Name: Multi1
|
||||
Playable: True
|
||||
Faction: Random
|
||||
Enemies: Creeps
|
||||
PlayerReference@Multi2:
|
||||
Name: Multi2
|
||||
Playable: True
|
||||
Faction: Random
|
||||
Enemies: Creeps
|
||||
PlayerReference@Multi3:
|
||||
Name: Multi3
|
||||
Playable: True
|
||||
Faction: Random
|
||||
Enemies: Creeps
|
||||
PlayerReference@Multi4:
|
||||
Name: Multi4
|
||||
Playable: True
|
||||
Faction: Random
|
||||
Enemies: Creeps
|
||||
PlayerReference@Multi5:
|
||||
Name: Multi5
|
||||
Playable: True
|
||||
Faction: Random
|
||||
Enemies: Creeps
|
||||
PlayerReference@Creeps:
|
||||
Name: Creeps
|
||||
NonCombatant: True
|
||||
Faction: allies
|
||||
Enemies: Multi0, Multi1, Multi2, Multi3, Multi4, Multi5
|
||||
|
||||
Actors:
|
||||
Actor12: v10
|
||||
Location: 63,62
|
||||
Owner: Neutral
|
||||
Actor20: v04
|
||||
Location: 61,66
|
||||
Owner: Neutral
|
||||
Actor21: v12
|
||||
Location: 67,62
|
||||
Owner: Neutral
|
||||
Actor22: v13
|
||||
Location: 65,60
|
||||
Owner: Neutral
|
||||
Actor23: v05
|
||||
Location: 67,59
|
||||
Owner: Neutral
|
||||
Actor24: t07
|
||||
Location: 65,57
|
||||
Owner: Neutral
|
||||
Actor25: t05
|
||||
Location: 65,66
|
||||
Owner: Neutral
|
||||
Actor13: v11
|
||||
Location: 65,65
|
||||
Owner: Neutral
|
||||
Actor47: ice01
|
||||
Location: 22,107
|
||||
Owner: Neutral
|
||||
Actor32: v06
|
||||
Location: 59,61
|
||||
Owner: Neutral
|
||||
Actor50: tanktrap2
|
||||
Location: 46,75
|
||||
Owner: Neutral
|
||||
Actor31: v03
|
||||
Location: 58,63
|
||||
Owner: Neutral
|
||||
Actor30: v01
|
||||
Location: 65,62
|
||||
Owner: Neutral
|
||||
Actor26: t02
|
||||
Location: 61,60
|
||||
Owner: Neutral
|
||||
Actor0: v08
|
||||
Location: 63,63
|
||||
Owner: Neutral
|
||||
Actor8: tc04
|
||||
Location: 69,54
|
||||
Owner: Neutral
|
||||
Actor138: mine
|
||||
Location: 45,24
|
||||
Owner: Neutral
|
||||
Actor7: tc04
|
||||
Location: 54,58
|
||||
Owner: Neutral
|
||||
Actor5: mine
|
||||
Location: 45,48
|
||||
Owner: Neutral
|
||||
Actor4: mine
|
||||
Location: 106,103
|
||||
Owner: Neutral
|
||||
Actor3: mine
|
||||
Location: 82,79
|
||||
Owner: Neutral
|
||||
Actor14: v17
|
||||
Location: 66,65
|
||||
Owner: Neutral
|
||||
Actor18: v18
|
||||
Location: 67,66
|
||||
Owner: Neutral
|
||||
Actor17: v18
|
||||
Location: 67,65
|
||||
Owner: Neutral
|
||||
Actor19: brl3
|
||||
Location: 63,65
|
||||
Owner: Neutral
|
||||
Actor16: v11
|
||||
Location: 59,69
|
||||
Owner: Neutral
|
||||
Actor45: ice05
|
||||
Location: 106,26
|
||||
Owner: Neutral
|
||||
Actor15: v17
|
||||
Location: 66,66
|
||||
Owner: Neutral
|
||||
Actor11: t07
|
||||
Location: 72,70
|
||||
Owner: Neutral
|
||||
Actor10: t07
|
||||
Location: 59,74
|
||||
Owner: Neutral
|
||||
Actor9: t05
|
||||
Location: 55,75
|
||||
Owner: Neutral
|
||||
Actor41: mpspawn
|
||||
Location: 104,59
|
||||
Owner: Neutral
|
||||
Actor43: mpspawn
|
||||
Location: 63,103
|
||||
Owner: Neutral
|
||||
Actor29: t06
|
||||
Location: 58,61
|
||||
Owner: Neutral
|
||||
Actor28: tc05
|
||||
Location: 59,58
|
||||
Owner: Neutral
|
||||
Actor27: t02
|
||||
Location: 62,59
|
||||
Owner: Neutral
|
||||
Actor44: ice02
|
||||
Location: 99,22
|
||||
Owner: Neutral
|
||||
Actor49: ice03
|
||||
Location: 19,107
|
||||
Owner: Neutral
|
||||
Actor46: ice03
|
||||
Location: 102,27
|
||||
Owner: Neutral
|
||||
Actor48: ice04
|
||||
Location: 18,99
|
||||
Owner: Neutral
|
||||
Actor42: mpspawn
|
||||
Location: 94,91
|
||||
Owner: Neutral
|
||||
Actor40: mpspawn
|
||||
Location: 65,24
|
||||
Owner: Neutral
|
||||
Actor1: mpspawn
|
||||
Location: 21,68
|
||||
Owner: Neutral
|
||||
Actor2: mpspawn
|
||||
Location: 33,36
|
||||
Owner: Neutral
|
||||
Actor39: ice04
|
||||
Location: 98,24
|
||||
Owner: Neutral
|
||||
Actor38: t10
|
||||
Location: 101,21
|
||||
Owner: Neutral
|
||||
Actor35: oilb
|
||||
Location: 103,22
|
||||
Owner: Neutral
|
||||
Actor36: t03
|
||||
Location: 104,20
|
||||
Owner: Neutral
|
||||
Actor37: t06
|
||||
Location: 105,21
|
||||
Owner: Neutral
|
||||
Actor34: t07
|
||||
Location: 21,101
|
||||
Owner: Neutral
|
||||
Actor33: oilb
|
||||
Location: 19,102
|
||||
Owner: Neutral
|
||||
Actor51: tanktrap2
|
||||
Location: 43,77
|
||||
Owner: Neutral
|
||||
Actor52: tanktrap2
|
||||
Location: 51,74
|
||||
Owner: Neutral
|
||||
Actor53: tanktrap2
|
||||
Location: 53,70
|
||||
Owner: Neutral
|
||||
Actor54: utilpol1
|
||||
Location: 57,64
|
||||
Owner: Neutral
|
||||
Actor55: utilpol2
|
||||
Location: 63,57
|
||||
Owner: Neutral
|
||||
Actor56: utilpol2
|
||||
Location: 66,68
|
||||
Owner: Neutral
|
||||
Actor57: utilpol2
|
||||
Location: 62,68
|
||||
Owner: Neutral
|
||||
Actor58: utilpol1
|
||||
Location: 69,71
|
||||
Owner: Neutral
|
||||
Actor59: tc03
|
||||
Location: 67,71
|
||||
Owner: Neutral
|
||||
Actor60: tc03
|
||||
Location: 71,56
|
||||
Owner: Neutral
|
||||
Actor61: fenc
|
||||
Location: 41,77
|
||||
Owner: Neutral
|
||||
Actor62: fenc
|
||||
Location: 42,77
|
||||
Owner: Neutral
|
||||
Actor63: fenc
|
||||
Location: 48,75
|
||||
Owner: Neutral
|
||||
Actor64: fenc
|
||||
Location: 45,75
|
||||
Owner: Neutral
|
||||
Actor65: fenc
|
||||
Location: 52,69
|
||||
Owner: Neutral
|
||||
Actor66: fenc
|
||||
Location: 52,70
|
||||
Owner: Neutral
|
||||
Actor67: fenc
|
||||
Location: 55,73
|
||||
Owner: Neutral
|
||||
Actor68: fenc
|
||||
Location: 54,74
|
||||
Owner: Neutral
|
||||
Actor69: fenc
|
||||
Location: 55,74
|
||||
Owner: Neutral
|
||||
Actor70: tc05
|
||||
Location: 67,51
|
||||
Owner: Neutral
|
||||
Actor71: tc04
|
||||
Location: 68,48
|
||||
Owner: Neutral
|
||||
Actor72: tc01
|
||||
Location: 74,46
|
||||
Owner: Neutral
|
||||
Actor73: tc02
|
||||
Location: 75,52
|
||||
Owner: Neutral
|
||||
Actor74: tc02
|
||||
Location: 71,51
|
||||
Owner: Neutral
|
||||
Actor75: tc03
|
||||
Location: 73,45
|
||||
Owner: Neutral
|
||||
Actor76: tc04
|
||||
Location: 78,49
|
||||
Owner: Neutral
|
||||
Actor77: tc04
|
||||
Location: 77,47
|
||||
Owner: Neutral
|
||||
Actor78: t11
|
||||
Location: 74,42
|
||||
Owner: Neutral
|
||||
Actor79: v11
|
||||
Location: 82,51
|
||||
Owner: Neutral
|
||||
Actor80: utilpol1
|
||||
Location: 81,51
|
||||
Owner: Neutral
|
||||
Actor81: v04
|
||||
Location: 75,47
|
||||
Owner: Neutral
|
||||
Actor82: t06
|
||||
Location: 80,54
|
||||
Owner: Neutral
|
||||
Actor83: t06
|
||||
Location: 76,57
|
||||
Owner: Neutral
|
||||
Actor84: tc02
|
||||
Location: 78,55
|
||||
Owner: Neutral
|
||||
Actor85: t03
|
||||
Location: 74,53
|
||||
Owner: Neutral
|
||||
Actor86: t03
|
||||
Location: 72,59
|
||||
Owner: Neutral
|
||||
Actor87: t10
|
||||
Location: 61,55
|
||||
Owner: Neutral
|
||||
Actor88: t13
|
||||
Location: 67,55
|
||||
Owner: Neutral
|
||||
Actor89: t14
|
||||
Location: 64,55
|
||||
Owner: Neutral
|
||||
Actor90: v17
|
||||
Location: 61,70
|
||||
Owner: Neutral
|
||||
Actor91: v18
|
||||
Location: 60,71
|
||||
Owner: Neutral
|
||||
Actor92: v17
|
||||
Location: 59,71
|
||||
Owner: Neutral
|
||||
Actor93: v14
|
||||
Location: 61,71
|
||||
Owner: Neutral
|
||||
Actor94: v09
|
||||
Location: 63,69
|
||||
Owner: Neutral
|
||||
Actor95: v08
|
||||
Location: 65,69
|
||||
Owner: Neutral
|
||||
Actor96: v07
|
||||
Location: 62,71
|
||||
Owner: Neutral
|
||||
Actor97: mine
|
||||
Location: 65,84
|
||||
Owner: Neutral
|
||||
Actor99: tc02
|
||||
Location: 56,75
|
||||
Owner: Neutral
|
||||
Actor101: mine
|
||||
Location: 45,64
|
||||
Owner: Neutral
|
||||
Actor103: barl
|
||||
Location: 66,70
|
||||
Owner: Neutral
|
||||
Actor104: barl
|
||||
Location: 102,25
|
||||
Owner: Neutral
|
||||
Actor105: tc03
|
||||
Location: 41,33
|
||||
Owner: Neutral
|
||||
Actor106: tc05
|
||||
Location: 38,32
|
||||
Owner: Neutral
|
||||
Actor107: tc04
|
||||
Location: 36,29
|
||||
Owner: Neutral
|
||||
Actor108: tc03
|
||||
Location: 37,16
|
||||
Owner: Neutral
|
||||
Actor109: tc02
|
||||
Location: 37,18
|
||||
Owner: Neutral
|
||||
Actor110: tc02
|
||||
Location: 34,20
|
||||
Owner: Neutral
|
||||
Actor111: tc04
|
||||
Location: 35,25
|
||||
Owner: Neutral
|
||||
Actor112: tc04
|
||||
Location: 18,38
|
||||
Owner: Neutral
|
||||
Actor113: tc05
|
||||
Location: 24,39
|
||||
Owner: Neutral
|
||||
Actor114: tc03
|
||||
Location: 28,44
|
||||
Owner: Neutral
|
||||
Actor115: tc01
|
||||
Location: 28,41
|
||||
Owner: Neutral
|
||||
Actor116: tc01
|
||||
Location: 30,57
|
||||
Owner: Neutral
|
||||
Actor117: tc02
|
||||
Location: 33,61
|
||||
Owner: Neutral
|
||||
Actor118: tc01
|
||||
Location: 37,72
|
||||
Owner: Neutral
|
||||
Actor119: tc02
|
||||
Location: 35,71
|
||||
Owner: Neutral
|
||||
Actor120: t07
|
||||
Location: 34,64
|
||||
Owner: Neutral
|
||||
Actor121: t05
|
||||
Location: 33,67
|
||||
Owner: Neutral
|
||||
Actor122: tc01
|
||||
Location: 31,78
|
||||
Owner: Neutral
|
||||
Actor123: t07
|
||||
Location: 34,75
|
||||
Owner: Neutral
|
||||
Actor124: tc04
|
||||
Location: 50,34
|
||||
Owner: Neutral
|
||||
Actor125: tc05
|
||||
Location: 53,33
|
||||
Owner: Neutral
|
||||
Actor126: tc02
|
||||
Location: 56,35
|
||||
Owner: Neutral
|
||||
Actor127: tc02
|
||||
Location: 60,37
|
||||
Owner: Neutral
|
||||
Actor128: tc03
|
||||
Location: 58,36
|
||||
Owner: Neutral
|
||||
Actor129: t16
|
||||
Location: 66,40
|
||||
Owner: Neutral
|
||||
Actor130: t05
|
||||
Location: 48,42
|
||||
Owner: Neutral
|
||||
Actor131: tc03
|
||||
Location: 42,56
|
||||
Owner: Neutral
|
||||
Actor132: tc02
|
||||
Location: 40,55
|
||||
Owner: Neutral
|
||||
Actor133: mine
|
||||
Location: 83,103
|
||||
Owner: Neutral
|
||||
Actor134: mine
|
||||
Location: 106,79
|
||||
Owner: Neutral
|
||||
Actor135: mine
|
||||
Location: 43,103
|
||||
Owner: Neutral
|
||||
Actor136: mine
|
||||
Location: 106,39
|
||||
Owner: Neutral
|
||||
Actor137: mine
|
||||
Location: 85,24
|
||||
Owner: Neutral
|
||||
Actor6: mine
|
||||
Location: 21,24
|
||||
Owner: Neutral
|
||||
Actor139: mine
|
||||
Location: 21,88
|
||||
Owner: Neutral
|
||||
Actor140: mine
|
||||
Location: 21,48
|
||||
Owner: Neutral
|
||||
Actor141: mine
|
||||
Location: 26,89
|
||||
Owner: Neutral
|
||||
Actor142: mine
|
||||
Location: 39,108
|
||||
Owner: Neutral
|
||||
Actor143: mine
|
||||
Location: 110,42
|
||||
Owner: Neutral
|
||||
Actor144: mine
|
||||
Location: 84,19
|
||||
Owner: Neutral
|
||||
Actor145: tc02
|
||||
Location: 46,92
|
||||
Owner: Neutral
|
||||
Actor146: tc02
|
||||
Location: 48,93
|
||||
Owner: Neutral
|
||||
Actor147: tc05
|
||||
Location: 57,94
|
||||
Owner: Neutral
|
||||
Actor148: tc01
|
||||
Location: 53,94
|
||||
Owner: Neutral
|
||||
Actor149: tc02
|
||||
Location: 61,94
|
||||
Owner: Neutral
|
||||
Actor150: tc03
|
||||
Location: 63,94
|
||||
Owner: Neutral
|
||||
Actor151: tc01
|
||||
Location: 65,92
|
||||
Owner: Neutral
|
||||
Actor152: t16
|
||||
Location: 43,87
|
||||
Owner: Neutral
|
||||
Actor153: t02
|
||||
Location: 42,88
|
||||
Owner: Neutral
|
||||
Actor154: t01
|
||||
Location: 46,82
|
||||
Owner: Neutral
|
||||
Actor155: tc03
|
||||
Location: 90,110
|
||||
Owner: Neutral
|
||||
Actor156: tc03
|
||||
Location: 84,96
|
||||
Owner: Neutral
|
||||
Actor157: tc05
|
||||
Location: 86,95
|
||||
Owner: Neutral
|
||||
Actor158: tc05
|
||||
Location: 90,101
|
||||
Owner: Neutral
|
||||
Actor159: t05
|
||||
Location: 91,104
|
||||
Owner: Neutral
|
||||
Actor160: t07
|
||||
Location: 90,108
|
||||
Owner: Neutral
|
||||
Actor161: tc04
|
||||
Location: 90,105
|
||||
Owner: Neutral
|
||||
Actor162: t08
|
||||
Location: 89,99
|
||||
Owner: Neutral
|
||||
Actor163: t08
|
||||
Location: 93,82
|
||||
Owner: Neutral
|
||||
Actor164: t17
|
||||
Location: 92,83
|
||||
Owner: Neutral
|
||||
Actor165: tc02
|
||||
Location: 93,84
|
||||
Owner: Neutral
|
||||
Actor166: tc02
|
||||
Location: 109,85
|
||||
Owner: Neutral
|
||||
Actor167: tc04
|
||||
Location: 106,86
|
||||
Owner: Neutral
|
||||
Actor168: tc02
|
||||
Location: 95,85
|
||||
Owner: Neutral
|
||||
Actor169: tc02
|
||||
Location: 100,85
|
||||
Owner: Neutral
|
||||
Actor170: t06
|
||||
Location: 98,86
|
||||
Owner: Neutral
|
||||
Actor171: t16
|
||||
Location: 104,87
|
||||
Owner: Neutral
|
||||
Actor172: tc03
|
||||
Location: 94,64
|
||||
Owner: Neutral
|
||||
Actor173: tc01
|
||||
Location: 84,64
|
||||
Owner: Neutral
|
||||
Actor174: t05
|
||||
Location: 92,64
|
||||
Owner: Neutral
|
||||
Actor175: t06
|
||||
Location: 87,66
|
||||
Owner: Neutral
|
||||
Actor176: t11
|
||||
Location: 81,61
|
||||
Owner: Neutral
|
||||
Actor177: tc04
|
||||
Location: 85,65
|
||||
Owner: Neutral
|
||||
Actor178: tc04
|
||||
Location: 88,65
|
||||
Owner: Neutral
|
||||
Actor179: tc01
|
||||
Location: 84,53
|
||||
Owner: Neutral
|
||||
Actor180: tc03
|
||||
Location: 86,53
|
||||
Owner: Neutral
|
||||
Actor181: t01
|
||||
Location: 92,56
|
||||
Owner: Neutral
|
||||
Actor182: t14
|
||||
Location: 88,54
|
||||
Owner: Neutral
|
||||
Actor183: t17
|
||||
Location: 90,55
|
||||
Owner: Neutral
|
||||
Actor184: t02
|
||||
Location: 99,45
|
||||
Owner: Neutral
|
||||
Actor185: t07
|
||||
Location: 110,63
|
||||
Owner: Neutral
|
||||
Actor186: t07
|
||||
Location: 92,77
|
||||
Owner: Neutral
|
||||
Actor188: t07
|
||||
Location: 55,109
|
||||
Owner: Neutral
|
||||
Actor189: t07
|
||||
Location: 51,94
|
||||
Owner: Neutral
|
||||
Actor190: t07
|
||||
Location: 95,108
|
||||
Owner: Neutral
|
||||
Actor191: t07
|
||||
Location: 105,88
|
||||
Owner: Neutral
|
||||
Actor192: t07
|
||||
Location: 18,56
|
||||
Owner: Neutral
|
||||
Actor193: t07
|
||||
Location: 17,76
|
||||
Owner: Neutral
|
||||
Actor194: t13
|
||||
Location: 32,52
|
||||
Owner: Neutral
|
||||
Actor195: t07
|
||||
Location: 54,23
|
||||
Owner: Neutral
|
||||
Actor196: t07
|
||||
Location: 75,19
|
||||
Owner: Neutral
|
||||
Actor197: t05
|
||||
Location: 74,20
|
||||
Owner: Neutral
|
||||
Actor198: tc02
|
||||
Location: 25,17
|
||||
Owner: Neutral
|
||||
Actor98: snowhut
|
||||
Location: 58,65
|
||||
Owner: Neutral
|
||||
Actor100: snowhut
|
||||
Location: 75,43
|
||||
Owner: Neutral
|
||||
|
||||
Smudges:
|
||||
|
||||
Rules:
|
||||
World:
|
||||
WeatherOverlay:
|
||||
ParticleDensityFactor: 0.0007625
|
||||
ChangingWindLevel: true
|
||||
WindLevels: -5, -3, -2, 0, 2, 3, 5
|
||||
WindTick: 150, 550
|
||||
InstantWindChanges: false
|
||||
UseSquares: true
|
||||
PaticleSize: 1, 3
|
||||
ScatterDirection: -1, 1
|
||||
Gravity: 1.00, 2.00
|
||||
SwingOffset: 1.0, 1.5
|
||||
SwingSpeed: 0.001, 0.025
|
||||
SwingAmplitude: 1.0, 1.5
|
||||
ParticleColors: 255,236,236,236, 255,228,228,228, 255,208,208,208, 255,188,188,188
|
||||
LineTailAlphaValue: 0
|
||||
GlobalLightingPaletteEffect:
|
||||
Red: 0.9
|
||||
Green: 0.9
|
||||
Blue: 1.0
|
||||
Ambient: 1.2
|
||||
|
||||
Sequences:
|
||||
|
||||
VoxelSequences:
|
||||
|
||||
Weapons:
|
||||
|
||||
Voices:
|
||||
|
||||
Notifications:
|
||||
|
||||
Translations:
|
||||
Reference in New Issue
Block a user