void configure() { ::configure(); add_description(Description_Type_Generic); set_craft(Craft_Exquisite); armour()->set_autonomon_adapt(True); armour()->set_armour_type(Armour_Type_Pair_of_Fingerless_Gloves); armour()->set_armour_style(Armour_Style_Simple); add_proportion(([ Element_Type : Material_Leather, Element_Proportion : 0.85, ])); add_proportion(([ Element_Type : Material_Fur, Element_Proportion : 0.15, Element_Part : Part_Underlayer, ])); }
void configure() { ::configure(); armour()->set_autonomon_adapt(True); armour()->set_armour_type(random_element(({ Armour_Type_Halfsuit, Armour_Type_Pteralorica, Armour_Type_Tailed_Halfsuit, Armour_Type_Sithalica, })));
void configure() { ::configure(); add_description(Description_Type_Generic); set_craft(Craft_Exquisite); armour()->set_autonomon_adapt(True); armour()->set_armour_type(Armour_Type_Hauberk); armour()->set_armour_style(Armour_Style_Light_Mail); add_proportion(([ Element_Type : Material_Mithril, Element_Proportion : 0.85, Element_Color : "gray", ])); add_proportion(([ Element_Type : Material_Leather, Element_Proportion : 0.15, Element_Part : Part_Underlayer, ])); }
void configure() { ::configure(); add_description(Description_Type_Generic); set_craft(Craft_Exquisite); armour()->set_autonomon_adapt(True); armour()->set_armour_type(Armour_Type_Greathelm); armour()->set_armour_style(Armour_Style_Splint_Mounted); armour()->set_race("orc"); add_proportion(([ Element_Type : Material_Steel, Element_Proportion : 3.0, Element_Color : "gray", ])); add_proportion(([ Element_Type : Material_Leather, Element_Proportion : 0.15, Element_Part : Part_Underlayer, ])); }
void FuzzyAITest(void) { AI::Fuzzy::Logic health("Health"); health.getSet("Bad")->add(AI::Fuzzy::Set::Member(0.0f,1.0f)); health.getSet("Bad")->add(AI::Fuzzy::Set::Member(0.3f,1.0f)); health.getSet("Bad")->add(AI::Fuzzy::Set::Member(0.6f,0.0f)); health.getSet("Good")->add(AI::Fuzzy::Set::Member(0.4f,0.0f)); health.getSet("Good")->add(AI::Fuzzy::Set::Member(0.7f,1.0f)); health.getSet("Good")->add(AI::Fuzzy::Set::Member(1.0f,1.0f)); AI::Fuzzy::Logic armour("Armour"); armour.getSet("Inadequate")->add(AI::Fuzzy::Set::Member(0.0f, 1.0f)); armour.getSet("Inadequate")->add(AI::Fuzzy::Set::Member(0.2f, 1.0f)); armour.getSet("Inadequate")->add(AI::Fuzzy::Set::Member(0.4f, 0.0f)); armour.getSet("Marginal")->add(AI::Fuzzy::Set::Member(0.3f, 0.0f)); armour.getSet("Marginal")->add(AI::Fuzzy::Set::Member(0.5f, 1.0f)); armour.getSet("Marginal")->add(AI::Fuzzy::Set::Member(0.7f, 0.0f)); armour.getSet("Adequate")->add(AI::Fuzzy::Set::Member(0.6f, 0.0f)); armour.getSet("Adequate")->add(AI::Fuzzy::Set::Member(0.8f, 1.0f)); armour.getSet("Adequate")->add(AI::Fuzzy::Set::Member(1.0f, 1.0f)); AI::Fuzzy::Logic risk("Risk"); risk.getSet("Low")->add(AI::Fuzzy::Set::Member(0.0f, 1.0f)); risk.getSet("Low")->add(AI::Fuzzy::Set::Member(0.2f, 1.0f)); risk.getSet("Low")->add(AI::Fuzzy::Set::Member(0.4f, 0.0f)); risk.getSet("Med")->add(AI::Fuzzy::Set::Member(0.3f, 0.0f)); risk.getSet("Med")->add(AI::Fuzzy::Set::Member(0.5f, 1.0f)); risk.getSet("Med")->add(AI::Fuzzy::Set::Member(0.7f, 0.0f)); risk.getSet("High")->add(AI::Fuzzy::Set::Member(0.6f, 0.0f)); risk.getSet("High")->add(AI::Fuzzy::Set::Member(0.8f, 1.0f)); risk.getSet("High")->add(AI::Fuzzy::Set::Member(1.0f, 1.0f)); AI::Fuzzy::Set::Ptr a = risk.getSet(0.35f, AI::Fuzzy::Logic::MAX); AI::Fuzzy::Set::Ptr b = risk.getSet(0.35f, AI::Fuzzy::Logic::MIN); AI::Fuzzy::Set::Ptr c = risk.getSet(0.35f, AI::Fuzzy::Logic::RAND); AI::Fuzzy::Set::Member currHealth(0.45f), currArmour(0.65f); float badHealth = health.getSet("Bad")->membership(currHealth.value()); float goodHealth = health.getSet("Good")->membership(currHealth.value()); float inadequateArmour = armour.getSet("Inadequate")->membership(currArmour.value()); float marginalArmour = armour.getSet("Marginal")->membership(currArmour.value()); float adequateArmour = armour.getSet("Adequate")->membership(currArmour.value()); AI::Fuzzy::EvalRule::Ptr healthGood(new AI::Fuzzy::EvalRule(health.getSet("Good"), currHealth)); AI::Fuzzy::Rule::Ptr armourAdequate(new AI::Fuzzy::EvalRule(armour.getSet("Adequate"), currArmour)); AI::Fuzzy::Rule::Ptr healthGoodAndArmourAdequate(new AI::Fuzzy::AndRule(healthGood, armourAdequate)); AI::Fuzzy::EvalRule::Ptr healthBad(new AI::Fuzzy::EvalRule(health.getSet("Bad"), currHealth)); AI::Fuzzy::Rule::Ptr armourMarginal(new AI::Fuzzy::EvalRule(armour.getSet("Marginal"), currArmour)); AI::Fuzzy::Rule::Ptr healthBadAndArmourMarginal(new AI::Fuzzy::OrRule(healthBad, armourMarginal)); AI::Fuzzy::EvalRule::Ptr armourInadequate(new AI::Fuzzy::EvalRule(armour.getSet("Inadequate"), currArmour)); AI::Fuzzy::Rule::Ptr healthBadAndArmourInadequate(new AI::Fuzzy::AndRule(healthBad, armourInadequate)); AI::Fuzzy::RuleSet ruleset; ruleset.add(AI::Fuzzy::RuleSet::Pair(risk.getSet("Low"), healthGoodAndArmourAdequate)); ruleset.add(AI::Fuzzy::RuleSet::Pair(risk.getSet("Med"), healthBadAndArmourMarginal)); ruleset.add(AI::Fuzzy::RuleSet::Pair(risk.getSet("High"), healthBadAndArmourInadequate)); float centroid = ruleset.apply(10); }
bool ITank::isDead() const { return armour() <= 0 || health() <= 0; }