using Microsoft.VisualStudio.TestTools.UnitTesting;
using IceBlink2.Scripting;
public void BasicMeleeAdjacentTest()
string scriptFile = "ai_script_test1.js";
ScriptInputs inputs = new ScriptInputs();
Creature crt = getBasicCreature("Ranged");
Player p1 = getBasicPlayer("P1", "Fighter");
System.Collections.Generic.List<IceBlink2.AI.AITarget> targets = new System.Collections.Generic.List<IceBlink2.AI.AITarget>();
targets.Add(getAITargetFromPlayer(p1));
inputs["closestPC"] = p1.name;
inputs["cr_category"] = crt.cr_category;
inputs["targets"] = targets.ToArray();
inputs["memory"] = crt.aiCombatMemory;
ScriptEngine engine = ScriptEngine.getEngine();
ScriptOutputs outputs = engine.RunScript(System.IO.File.ReadAllText(scriptFile), inputs);
Assert.AreEqual(outputs["ActionToTake"], "Attack");
Assert.AreEqual(outputs["CombatTarget"], p1.name);
public void BasicRangedDistanceTest()
string scriptFile = "ai_script_test1.js";
ScriptInputs inputs = new ScriptInputs();
Creature crt = getBasicCreature("Ranged");
Player p1 = getBasicPlayer("P1", "Fighter");
System.Collections.Generic.List<IceBlink2.AI.AITarget> targets = new System.Collections.Generic.List<IceBlink2.AI.AITarget>();
targets.Add(getAITargetFromPlayer(p1));
inputs["closestPC"] = p1.name;
inputs["cr_category"] = crt.cr_category;
inputs["targets"] = targets.ToArray();
inputs["memory"] = crt.aiCombatMemory;
ScriptEngine engine = ScriptEngine.getEngine();
ScriptOutputs outputs = engine.RunScript(System.IO.File.ReadAllText(scriptFile), inputs);
Assert.AreEqual(outputs["ActionToTake"], "Attack");
Assert.AreEqual(outputs["CombatTarget"], p1.name);
private Creature getBasicCreature(string category)
Creature crt = new Creature
aiModel = new ScriptedAttacker(),
aiCombatMemory = new Memory()
private Player getBasicPlayer(string name, string clazzName)
PlayerClass clazz = new PlayerClass
private AITarget getAITargetFromPlayer(Player p)
AITarget target = new AITarget();
target.hpPercentage = p.hp / p.hpMax;
target.playerClass = p.playerClass.name;