Example #1
0
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,
	]));
}
Example #2
0
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,
                                                })));
Example #3
0
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,
                    ]));
}
Example #4
0
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);
	}
Example #6
0
bool ITank::isDead() const { return armour() <= 0 || health() <= 0; }