Bazaar developer reference

CvMinorCivAI::GetPersonalityQuestBias(MinorCivQuestTypes)

Defined in
CvMinorCivAI.cpp, line 4671
Class
CvMinorCivAI
Hook name
CivHooks::CvMinorCivAI_GetPersonalityQuestBias

Hooks

static bool BeforeCvMinorCivAI_GetPersonalityQuestBias(CvMinorCivAI* self, MinorCivQuestTypes eQuest, int& result);static void AfterCvMinorCivAI_GetPersonalityQuestBias(CvMinorCivAI* self, MinorCivQuestTypes eQuest, int& result);static int ReplaceCvMinorCivAI_GetPersonalityQuestBias(int (*original)(CvMinorCivAI*, MinorCivQuestTypes), CvMinorCivAI* self, MinorCivQuestTypes eQuest);CivRegisterBefore<CivHooks::CvMinorCivAI_GetPersonalityQuestBias>(host, &BeforeCvMinorCivAI_GetPersonalityQuestBias);CivRegisterAfter<CivHooks::CvMinorCivAI_GetPersonalityQuestBias>(host, &AfterCvMinorCivAI_GetPersonalityQuestBias);CivRegisterReplace<CivHooks::CvMinorCivAI_GetPersonalityQuestBias>(host, &ReplaceCvMinorCivAI_GetPersonalityQuestBias);

Code

4670/// How more or less likely is this minor to offer a particular quest type based on its personality?4671int CvMinorCivAI::GetPersonalityQuestBias(MinorCivQuestTypes eQuest)4672{4673	// Multiply by 10 to give us some more fidelity. We'll remove it at the bottom4674#if defined(MOD_EVENTS_QUESTS)4675	int iFidelity = 10;4676	int iCount = iFidelity * /*10*/ GC.getMINOR_CIV_QUEST_WEIGHT_DEFAULT();4677#else4678	int iCount = 10 * /*10*/ GC.getMINOR_CIV_QUEST_WEIGHT_DEFAULT();4679#endif46804681	MinorCivPersonalityTypes ePersonality = GetPersonality();4682	MinorCivTraitTypes eTrait = GetTrait();46834684	// ******************4685	// Personal Quests4686	// ******************46874688#if defined(MOD_EVENTS_QUESTS)4689	CvQuestInfo* pQuestInfo = GC.getQuestInfo(eQuest);4690	4691	if (MOD_EVENTS_QUESTS && pQuestInfo) {4692		int iBiasPersonality = 100;4693		int iBiasTrait = 100;4694		4695		if(ePersonality == MINOR_CIV_PERSONALITY_FRIENDLY)4696		{4697			iBiasPersonality = pQuestInfo->getBiasFriendly();4698		}4699		else if(ePersonality == MINOR_CIV_PERSONALITY_NEUTRAL)4700		{4701			iBiasPersonality = pQuestInfo->getBiasNeutral();4702		}4703		else if(ePersonality == MINOR_CIV_PERSONALITY_HOSTILE)4704		{4705			iBiasPersonality = pQuestInfo->getBiasHostile();4706		}4707		else if(ePersonality == MINOR_CIV_PERSONALITY_IRRATIONAL)4708		{4709			iBiasPersonality = pQuestInfo->getBiasIrrational();4710		}4711		4712		if(eTrait == MINOR_CIV_TRAIT_MARITIME)4713		{4714			iBiasTrait = pQuestInfo->getBiasMaritime();4715		}4716		else if(eTrait == MINOR_CIV_TRAIT_MERCANTILE)4717		{4718			iBiasTrait = pQuestInfo->getBiasMercantile();4719		}4720		else if(eTrait == MINOR_CIV_TRAIT_CULTURED)4721		{4722			iBiasTrait = pQuestInfo->getBiasCultured();4723		}4724		else if(eTrait == MINOR_CIV_TRAIT_RELIGIOUS)4725		{4726			iBiasTrait = pQuestInfo->getBiasReligious();4727		}4728		else if(eTrait == MINOR_CIV_TRAIT_MILITARISTIC)4729		{4730			iBiasTrait = pQuestInfo->getBiasMilitaristic();4731		}47324733		iCount = iCount * iBiasPersonality / 100 * iBiasTrait / 100;4734	} else {4735#endif4736	// ROUTE4737	if(eQuest == MINOR_CIV_QUEST_ROUTE)4738	{4739		if(ePersonality == MINOR_CIV_PERSONALITY_FRIENDLY)		// Friendly4740		{4741			iCount *= /*200*/ GC.getMINOR_CIV_QUEST_WEIGHT_MULTIPLIER_FRIENDLY_ROUTE();4742			iCount /= 100;4743		}4744		if(ePersonality == MINOR_CIV_PERSONALITY_HOSTILE)		// Hostile4745		{4746			iCount *= /*20*/ GC.getMINOR_CIV_QUEST_WEIGHT_MULTIPLIER_HOSTILE_ROUTE();4747			iCount /= 100;4748		}4749		if(eTrait == MINOR_CIV_TRAIT_MARITIME)						// Maritime4750		{4751			iCount *= /*120*/ GC.getMINOR_CIV_QUEST_WEIGHT_MULTIPLIER_MARITIME_ROUTE();4752			iCount /= 100;4753		}4754		if(eTrait == MINOR_CIV_TRAIT_MERCANTILE)4755		{4756			iCount *= /*150*/ GC.getMINOR_CIV_QUEST_WEIGHT_MULTIPLIER_MERCANTILE_ROUTE();4757			iCount /= 100;4758		}4759	}47604761	// CONNECT A RESOURCE4762	else if(eQuest == MINOR_CIV_QUEST_CONNECT_RESOURCE)4763	{4764		if(eTrait == MINOR_CIV_TRAIT_MARITIME)						// Maritime4765		{4766			iCount *= /*200*/ GC.getMINOR_CIV_QUEST_WEIGHT_MULTIPLIER_MARITIME_CONNECT_RESOURCE();4767			iCount /= 100;4768		}4769		if(eTrait == MINOR_CIV_TRAIT_MERCANTILE)4770		{4771			iCount *= /*300*/ GC.getMINOR_CIV_QUEST_WEIGHT_MULTIPLIER_MERCANTILE_CONNECT_RESOURCE();4772			iCount /= 100;4773		}4774	}47754776	// CONSTRUCT A WONDER4777	else if(eQuest == MINOR_CIV_QUEST_CONSTRUCT_WONDER)4778	{4779		if(eTrait == MINOR_CIV_TRAIT_CULTURED)						// Cultured4780		{4781			iCount *= /*300*/ GC.getMINOR_CIV_QUEST_WEIGHT_MULTIPLIER_CULTURED_CONSTRUCT_WONDER();4782			iCount /= 100;4783		}4784	}47854786	// GREAT PERSON4787	else if(eQuest == MINOR_CIV_QUEST_GREAT_PERSON)4788	{4789		if(eTrait == MINOR_CIV_TRAIT_CULTURED)						// Cultured4790		{4791			iCount *= /*300*/ GC.getMINOR_CIV_QUEST_WEIGHT_MULTIPLIER_CULTURED_GREAT_PERSON();4792			iCount /= 100;4793		}4794	}47954796	// KILL ANOTHER CITY STATE4797	else if(eQuest == MINOR_CIV_QUEST_KILL_CITY_STATE)4798	{4799		if(eTrait == MINOR_CIV_TRAIT_MILITARISTIC)					// Militaristic4800		{4801			iCount *= /*200*/ GC.getMINOR_CIV_QUEST_WEIGHT_MULTIPLIER_MILITARISTIC_KILL_CITY_STATE();4802			iCount /= 100;4803		}4804		if(ePersonality == MINOR_CIV_PERSONALITY_HOSTILE)		// Hostile4805		{4806			iCount *= /*200*/ GC.getMINOR_CIV_QUEST_WEIGHT_MULTIPLIER_HOSTILE_KILL_CITY_STATE();4807			iCount /= 100;4808		}4809		if(ePersonality == MINOR_CIV_PERSONALITY_NEUTRAL)		// Neutral4810		{4811			iCount *= /*40*/ GC.getMINOR_CIV_QUEST_WEIGHT_MULTIPLIER_NEUTRAL_KILL_CITY_STATE();4812			iCount /= 100;4813		}4814	}48154816	// FIND ANOTHER PLAYER4817	else if(eQuest == MINOR_CIV_QUEST_FIND_PLAYER)4818	{4819		if(eTrait == MINOR_CIV_TRAIT_MARITIME)						// Maritime4820		{4821			iCount *= /*300*/ GC.getMINOR_CIV_QUEST_WEIGHT_MULTIPLIER_MARITIME_FIND_PLAYER();4822			iCount /= 100;4823		}4824		if(eTrait == MINOR_CIV_TRAIT_MERCANTILE)4825		{4826			iCount *= /*200*/ GC.getMINOR_CIV_QUEST_WEIGHT_MULTIPLIER_MERCANTILE_FIND_PLAYER();4827			iCount /= 100;4828		}4829	}48304831	// FIND NATURAL WONDER4832	else if(eQuest == MINOR_CIV_QUEST_FIND_NATURAL_WONDER)4833	{4834		if(eTrait == MINOR_CIV_TRAIT_MILITARISTIC)					// Militaristic4835		{4836			iCount *= /*50*/ GC.getMINOR_CIV_QUEST_WEIGHT_MULTIPLIER_MILITARISTIC_FIND_NATURAL_WONDER();4837			iCount /= 100;4838		}4839		if(ePersonality == MINOR_CIV_PERSONALITY_HOSTILE)		// Hostile4840		{4841			iCount *= /*30*/ GC.getMINOR_CIV_QUEST_WEIGHT_MULTIPLIER_HOSTILE_FIND_NATURAL_WONDER();4842			iCount /= 100;4843		}4844	}48454846	// GOLD GIFT4847	else if(eQuest == MINOR_CIV_QUEST_GIVE_GOLD)4848	{4849		//antonjs: consider: split quest bias into two categories, so that we can guarantee a support quest when a CS is bullied recently48504851		if(eTrait == MINOR_CIV_TRAIT_MILITARISTIC)  // We are tough, we don't need your charity4852		{4853			iCount *= /*200*/ GC.getMINOR_CIV_QUEST_WEIGHT_MULTIPLIER_MILITARISTIC_GIVE_GOLD();4854			iCount /= 100;4855		}4856		else if(eTrait == MINOR_CIV_TRAIT_MERCANTILE)  // Money is the answer to everything!4857		{4858			iCount *= /*350*/ GC.getMINOR_CIV_QUEST_WEIGHT_MULTIPLIER_MERCANTILE_GIVE_GOLD();4859			iCount /= 100;4860		}4861		else4862		{4863			iCount *= /*300*/ GC.getMINOR_CIV_QUEST_WEIGHT_MULTIPLIER_OTHER_GIVE_GOLD();4864			iCount /= 100;4865		}4866	}48674868	// PLEDGE TO PROTECT4869	else if(eQuest == MINOR_CIV_QUEST_PLEDGE_TO_PROTECT)4870	{4871		if(eTrait == MINOR_CIV_TRAIT_MILITARISTIC)  // We are tough, we don't need your charity4872		{4873			iCount *= /*200*/ GC.getMINOR_CIV_QUEST_WEIGHT_MULTIPLIER_MILITARISTIC_PLEDGE_TO_PROTECT();4874			iCount /= 100;4875		}4876		else if(eTrait == MINOR_CIV_TRAIT_CULTURED)  // Military?  We don't have one of those!4877		{4878			iCount *= /*350*/ GC.getMINOR_CIV_QUEST_WEIGHT_MULTIPLIER_CULTURED_PLEDGE_TO_PROTECT();4879			iCount /= 100;4880		}4881		else4882		{4883			iCount *= /*300*/ GC.getMINOR_CIV_QUEST_WEIGHT_MULTIPLIER_OTHER_PLEDGE_TO_PROTECT();4884			iCount /= 100;4885		}4886	}48874888	// Bully target City-State4889	else if(eQuest == MINOR_CIV_QUEST_BULLY_CITY_STATE)4890	{4891		if(ePersonality == MINOR_CIV_PERSONALITY_HOSTILE)4892		{4893			iCount *= 200; //antonjs: todo: XML4894			iCount /= 100;4895		}4896		else if(ePersonality == MINOR_CIV_PERSONALITY_IRRATIONAL)4897		{4898			iCount *= 150; //antonjs: todo: xml4899			iCount /= 100;4900		}4901		else if(ePersonality == MINOR_CIV_PERSONALITY_FRIENDLY)4902		{4903			iCount *= 30; //antonjs: todo: xml4904			iCount /= 100;4905		}4906	}49074908	// Denounce target Major4909	else if(eQuest == MINOR_CIV_QUEST_DENOUNCE_MAJOR)4910	{4911		if(eTrait == MINOR_CIV_TRAIT_RELIGIOUS)4912		{4913			iCount *= 250; //antonjs: todo: xml4914			iCount /= 100;4915		}4916		else if(eTrait == MINOR_CIV_TRAIT_MARITIME)4917		{4918			iCount *= 200; //antonjs: todo: xml4919			iCount /= 100;4920		}4921		else4922		{4923			iCount *= 150; //antonjs: todo: xml4924			iCount /= 100;4925		}4926	}49274928	// Spread your religion to us4929	else if(eQuest == MINOR_CIV_QUEST_SPREAD_RELIGION)4930	{4931		if(eTrait == MINOR_CIV_TRAIT_RELIGIOUS)4932		{4933			iCount *= 300; //antonjs: todo: xml4934			iCount /= 100;4935		}4936	}49374938	// Trade Route4939	else if(eQuest == MINOR_CIV_QUEST_TRADE_ROUTE)4940	{4941		if(eTrait == MINOR_CIV_TRAIT_MARITIME)4942		{4943			iCount *= 200; //xml4944			iCount /= 100;4945		}4946		else if(eTrait == MINOR_CIV_TRAIT_MERCANTILE)4947		{4948			iCount *= 200; //xml4949			iCount /= 100;4950		}4951	}49524953	// ******************4954	// Global Quests4955	// ******************49564957	// CONTEST CULTURE4958	else if(eQuest == MINOR_CIV_QUEST_CONTEST_CULTURE)4959	{4960		if(eTrait == MINOR_CIV_TRAIT_CULTURED)4961		{4962			iCount *= 200; //antonjs: todo: XML4963			iCount /= 100;4964		}4965	}4966	// CONTEST FAITH4967	else if(eQuest == MINOR_CIV_QUEST_CONTEST_FAITH)4968	{4969		if(eTrait == MINOR_CIV_TRAIT_RELIGIOUS)4970		{4971			iCount *= 200; //antonjs: todo: XML4972			iCount /= 100;4973		}4974		else4975		{4976			iCount *= 50; //antonjs: todo: XML4977			iCount /= 100;4978		}4979	}4980	// CONTEST TECHS4981	else if(eQuest == MINOR_CIV_QUEST_CONTEST_TECHS)4982	{4983		if(eTrait == MINOR_CIV_TRAIT_RELIGIOUS)4984		{4985#if defined(MOD_BUGFIX_MINOR)4986			iCount *= 50; //antonjs: todo: XML4987#else4988			iCount += 50; //antonjs: todo: XML4989#endif4990			iCount /= 100;4991		}4992	}49934994	// KILL A CAMP4995	else if(eQuest == MINOR_CIV_QUEST_KILL_CAMP)4996	{4997		iCount *= 300;4998		iCount /= 100;49995000		if(eTrait == MINOR_CIV_TRAIT_MILITARISTIC)					// Militaristic5001		{5002			iCount *= /*300*/ GC.getMINOR_CIV_QUEST_WEIGHT_MULTIPLIER_MILITARISTIC_KILL_CAMP();5003			iCount /= 100;5004		}5005	}50065007	// Invest5008	else if(eQuest == MINOR_CIV_QUEST_INVEST)5009	{5010		if(eTrait == MINOR_CIV_TRAIT_MERCANTILE)5011		{5012			iCount *= 150; //antonjs: todo: XML5013			iCount /= 100;5014		}5015	}5016#if defined(MOD_EVENTS_QUESTS)5017	}5018#endif50195020#if defined(MOD_EVENTS_QUESTS)5021	return iCount / iFidelity;5022#else5023	return iCount / 10;5024#endif5025}

Calls

Called by