|
楼主 |
发表于 2012-11-8 21:00:36
|
显示全部楼层
现在我们可以很容易地解释传教士做的事情了:在目标城市里一次性增加1000宗教压力。有了上面的理论基础,不难理解这个行为。
宗教审判官呢?看代码:- /// Remove other religions in a city (used by Inquisitor)
- void CvCityReligions::RemoveOtherReligions(ReligionTypes eReligion, PlayerTypes eResponsiblePlayer)
- {
- ReligionTypes eOldMajorityReligion = GetReligiousMajority();
- // Copy list
- ReligionInCityList tempList;
- ReligionInCityList::iterator it;
- for(it = m_ReligionStatus.begin(); it != m_ReligionStatus.end(); it++)
- {
- tempList.push_back(*it);
- }
- // Erase old list
- m_ReligionStatus.clear();
- // Recopy just what we want to keep
- for(it = tempList.begin(); it != tempList.end(); it++)
- {
- if(it->m_eReligion == NO_RELIGION || it->m_eReligion == eReligion)
- {
- m_ReligionStatus.push_back(*it);
- }
- }
- RecomputeFollowers(FOLLOWER_CHANGE_REMOVE_HERESY, eOldMajorityReligion, eResponsiblePlayer);
- }
复制代码 前几行枚举了当前城市拥有的宗教列表。
倒数几行的循环里有一句判断: if(it->m_eReligion == NO_RELIGION || it->m_eReligion == eReligion)
也就是说,只保留当前宗教以及无宗教的压力,其他宗教的压力均被直接抹除。(注意还有无宗教。)
现在知道异端审判官为什么那么贵了吧,后期刷宗教,杠杠的。当然如果本来周边城市就都是异端的话,异端审判官也救不了你了……
那么大先知呢?- void CvCityReligions::AddProphetSpread(ReligionTypes eReligion, int iPressure, PlayerTypes eResponsiblePlayer)
- {
- int iAtheismPressure = 0;
- int iReligionPressure = 0;
- ReligionTypes eOldMajorityReligion = GetReligiousMajority();
- ReligionTypes eHolyCityReligion = NO_RELIGION;
- bool bProphetsReligionFoundedHere = false;
- ReligionInCityList::iterator it;
- for(it = m_ReligionStatus.begin(); it != m_ReligionStatus.end(); it++)
- {
- if (it->m_eReligion == NO_RELIGION)
- {
- iAtheismPressure = it->m_iPressure;
- }
- else if (eReligion == it->m_eReligion)
- {
- iReligionPressure = it->m_iPressure;
- if (it->m_bFoundedHere)
- {
- bProphetsReligionFoundedHere = true;
- }
- }
- else if (it->m_bFoundedHere)
- {
- eHolyCityReligion = it->m_eReligion;
- }
- }
- // Clear list
- m_ReligionStatus.clear();
- // Add atheists and this back in
- CvReligionInCity atheism(NO_RELIGION, false/*bFoundedHere*/, 0, iAtheismPressure);
- m_ReligionStatus.push_back(atheism);
- CvReligionInCity prophetReligion(eReligion, bProphetsReligionFoundedHere, 0, iReligionPressure + iPressure);
- m_ReligionStatus.push_back(prophetReligion);
- // Reestablish Holy City religion
- if (eHolyCityReligion != NO_RELIGION && !bProphetsReligionFoundedHere)
- {
- CvReligionInCity holyCityReligion(eHolyCityReligion, true/*bFoundedHere*/, 0, 0);
- m_ReligionStatus.push_back(holyCityReligion);
- }
- RecomputeFollowers(FOLLOWER_CHANGE_PROPHET, eOldMajorityReligion, eResponsiblePlayer);
- }
复制代码 大先知做的事情其实就是异端审判+传教士。最后几行是判断洗了对方宗教圣城后把对应的宗教加回该城市信仰列表里(累积压力为0,但是圣城本身的30点并没有被洗掉),是为了应付一些需要判断圣城的情况。
因此所谓大先知能直接把别人圣城洗到不能翻身,也是不对的。
[ 本帖最后由 object022 于 2012-11-8 21:03 编辑 ] |
评分
-
1
查看全部评分
-
|