public Vector3(float x, float y, float z)
public string name = "Player";
public Condition(dynamic val)
public virtual bool IsSatisified(Player player)
public class HasKills : Condition
public HasKills(int value): base (value)
public override bool IsSatisified(Player player)
return player.kills >= value;
public class HasName : Condition
public HasName(string value): base (value)
public override bool IsSatisified(Player player)
return player.name.Equals(value);
public class HasPosition : Condition
public HasPosition(Vector3 value): base (value)
public override bool IsSatisified(Player player)
return player.position.x == value.x && player.position.y == value.y && player.position.z == value.z;
public static void Main()
var player = new Player();
var killsTest = new HasKills(5);
var nameTest = new HasName("Foo");
var posTest = new HasPosition(new Vector3(1, 2, 3));
Console.WriteLine("KillsTest(1): " + killsTest.IsSatisified(player));
Console.WriteLine("KillsTest(2): " + killsTest.IsSatisified(player));
Console.WriteLine("NameTest(1): " + nameTest.IsSatisified(player));
Console.WriteLine("NameTest(2): " + nameTest.IsSatisified(player));
Console.WriteLine("PosTest(1): " + posTest.IsSatisified(player));
player.position = new Vector3(1, 2, 3);
Console.WriteLine("PosTest(2): " + posTest.IsSatisified(player));