[sanguoforciv4] r356 committed - 0.310: 添加民忠度对城市产出、回血速率、间谍拦截率的影响...

2 views
Skip to first unread message

codesite...@google.com

unread,
Oct 20, 2009, 11:13:44 PM10/20/09
to sanguom...@googlegroups.com
Revision: 356
Author: TongShen.Martin
Date: Tue Oct 20 20:12:35 2009
Log: 0.310: 添加民忠度对城市产出、回血速率、间谍拦截率的影响

0.310: add effect of loyalty on city yield, heal rate and spy interception
http://code.google.com/p/sanguoforciv4/source/detail?r=356

Added:
/trunk/The History of Three
Kingdoms/Assets/XML/GameInfo/CIV4CultureLevelInfo.xml
Modified:
/trunk/The History of Three
Kingdoms/Assets/XML/GameInfo/CIV4GameInfoSchema.xml
/trunk/The History of Three
Kingdoms/Assets/XML/Text/Civ4GameText_Sanguo_CityLoyalty.xml
/trunk/The History of Three Kingdoms/CvGameCoreDLL/CvCity.cpp
/trunk/The History of Three Kingdoms/CvGameCoreDLL/CvGameTextMgr.cpp
/trunk/The History of Three Kingdoms/CvGameCoreDLL/CvInfos.cpp
/trunk/The History of Three Kingdoms/CvGameCoreDLL/CvInfos.h
/trunk/The History of Three Kingdoms/CvGameCoreDLL/CvUnit.cpp
/trunk/The History of Three Kingdoms/CvGameCoreDLL/CyInfoInterface3.cpp
/trunk/The History of Three Kingdoms/Documents/changelog.txt
/trunk/The History of Three Kingdoms/Documents/changelog_en.txt

=======================================
--- /dev/null
+++ /trunk/The History of Three
Kingdoms/Assets/XML/GameInfo/CIV4CultureLevelInfo.xml Tue Oct 20 20:12:35
2009
@@ -0,0 +1,178 @@
+<?xml version="1.0"?>
+<!-- edited with XMLSPY v2004 rel. 2 U (http://www.xmlspy.com) by Jesse
Smith (Firaxis Games) -->
+<!-- Sid Meier's Civilization 4 -->
+<!-- Copyright Firaxis Games 2005 -->
+<!-- -->
+<!-- Culture Level Infos -->
+<Civ4CultureLevelInfo xmlns="x-schema:CIV4GameInfoSchema.xml">
+ <CultureLevelInfos>
+ <CultureLevelInfo>
+ <Type>CULTURELEVEL_NONE</Type>
+ <Description>TXT_KEY_CULTURELEVEL_NONE</Description>
+ <iCityDefenseModifier>0</iCityDefenseModifier>
+ <iYieldModifier>0</iYieldModifier>
+ <SpeedThresholds>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_MARATHON</GameSpeedType>
+ <iThreshold>0</iThreshold>
+ </SpeedThreshold>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_EPIC</GameSpeedType>
+ <iThreshold>0</iThreshold>
+ </SpeedThreshold>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_NORMAL</GameSpeedType>
+ <iThreshold>0</iThreshold>
+ </SpeedThreshold>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_QUICK</GameSpeedType>
+ <iThreshold>0</iThreshold>
+ </SpeedThreshold>
+ </SpeedThresholds>
+ </CultureLevelInfo>
+ <CultureLevelInfo>
+ <Type>CULTURELEVEL_POOR</Type>
+ <Description>TXT_KEY_CULTURELEVEL_POOR</Description>
+ <iCityDefenseModifier>0</iCityDefenseModifier>
+ <iYieldModifier>5</iYieldModifier>
+ <SpeedThresholds>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_MARATHON</GameSpeedType>
+ <iThreshold>0</iThreshold>
+ </SpeedThreshold>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_EPIC</GameSpeedType>
+ <iThreshold>0</iThreshold>
+ </SpeedThreshold>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_NORMAL</GameSpeedType>
+ <iThreshold>0</iThreshold>
+ </SpeedThreshold>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_QUICK</GameSpeedType>
+ <iThreshold>0</iThreshold>
+ </SpeedThreshold>
+ </SpeedThresholds>
+ </CultureLevelInfo>
+ <CultureLevelInfo>
+ <Type>CULTURELEVEL_FLEDGLING</Type>
+ <Description>TXT_KEY_CULTURELEVEL_FLEDGLING</Description>
+ <iCityDefenseModifier>20</iCityDefenseModifier>
+ <iYieldModifier>10</iYieldModifier>
+ <SpeedThresholds>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_MARATHON</GameSpeedType>
+ <iThreshold>30</iThreshold>
+ </SpeedThreshold>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_EPIC</GameSpeedType>
+ <iThreshold>15</iThreshold>
+ </SpeedThreshold>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_NORMAL</GameSpeedType>
+ <iThreshold>10</iThreshold>
+ </SpeedThreshold>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_QUICK</GameSpeedType>
+ <iThreshold>5</iThreshold>
+ </SpeedThreshold>
+ </SpeedThresholds>
+ </CultureLevelInfo>
+ <CultureLevelInfo>
+ <Type>CULTURELEVEL_DEVELOPING</Type>
+ <Description>TXT_KEY_CULTURELEVEL_DEVELOPING</Description>
+ <iCityDefenseModifier>40</iCityDefenseModifier>
+ <iYieldModifier>20</iYieldModifier>
+ <SpeedThresholds>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_MARATHON</GameSpeedType>
+ <iThreshold>300</iThreshold>
+ </SpeedThreshold>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_EPIC</GameSpeedType>
+ <iThreshold>150</iThreshold>
+ </SpeedThreshold>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_NORMAL</GameSpeedType>
+ <iThreshold>100</iThreshold>
+ </SpeedThreshold>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_QUICK</GameSpeedType>
+ <iThreshold>50</iThreshold>
+ </SpeedThreshold>
+ </SpeedThresholds>
+ </CultureLevelInfo>
+ <CultureLevelInfo>
+ <Type>CULTURELEVEL_REFINED</Type>
+ <Description>TXT_KEY_CULTURELEVEL_REFINED</Description>
+ <iCityDefenseModifier>60</iCityDefenseModifier>
+ <iYieldModifier>40</iYieldModifier>
+ <SpeedThresholds>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_MARATHON</GameSpeedType>
+ <iThreshold>1500</iThreshold>
+ </SpeedThreshold>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_EPIC</GameSpeedType>
+ <iThreshold>750</iThreshold>
+ </SpeedThreshold>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_NORMAL</GameSpeedType>
+ <iThreshold>500</iThreshold>
+ </SpeedThreshold>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_QUICK</GameSpeedType>
+ <iThreshold>250</iThreshold>
+ </SpeedThreshold>
+ </SpeedThresholds>
+ </CultureLevelInfo>
+ <CultureLevelInfo>
+ <Type>CULTURELEVEL_INFLUENTIAL</Type>
+ <Description>TXT_KEY_CULTURELEVEL_INFLUENTIAL</Description>
+ <iCityDefenseModifier>80</iCityDefenseModifier>
+ <iYieldModifier>70</iYieldModifier>
+ <SpeedThresholds>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_MARATHON</GameSpeedType>
+ <iThreshold>15000</iThreshold>
+ </SpeedThreshold>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_EPIC</GameSpeedType>
+ <iThreshold>7500</iThreshold>
+ </SpeedThreshold>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_NORMAL</GameSpeedType>
+ <iThreshold>5000</iThreshold>
+ </SpeedThreshold>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_QUICK</GameSpeedType>
+ <iThreshold>2500</iThreshold>
+ </SpeedThreshold>
+ </SpeedThresholds>
+ </CultureLevelInfo>
+ <CultureLevelInfo>
+ <Type>CULTURELEVEL_LEGENDARY</Type>
+ <Description>TXT_KEY_CULTURELEVEL_LEGENDARY</Description>
+ <iCityDefenseModifier>100</iCityDefenseModifier>
+ <iYieldModifier>100</iYieldModifier>
+ <SpeedThresholds>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_MARATHON</GameSpeedType>
+ <iThreshold>150000</iThreshold>
+ </SpeedThreshold>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_EPIC</GameSpeedType>
+ <iThreshold>75000</iThreshold>
+ </SpeedThreshold>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_NORMAL</GameSpeedType>
+ <iThreshold>50000</iThreshold>
+ </SpeedThreshold>
+ <SpeedThreshold>
+ <GameSpeedType>GAMESPEED_QUICK</GameSpeedType>
+ <iThreshold>25000</iThreshold>
+ </SpeedThreshold>
+ </SpeedThresholds>
+ </CultureLevelInfo>
+ </CultureLevelInfos>
+</Civ4CultureLevelInfo>
=======================================
--- /trunk/The History of Three
Kingdoms/Assets/XML/GameInfo/CIV4GameInfoSchema.xml Tue Sep 22 03:53:27 2009
+++ /trunk/The History of Three
Kingdoms/Assets/XML/GameInfo/CIV4GameInfoSchema.xml Tue Oct 20 20:12:35 2009
@@ -936,10 +936,12 @@
<ElementType name="SpeedThresholds" content="eltOnly">
<element type="SpeedThreshold" minOccurs="0" maxOccurs="*"/>
</ElementType>
+ <ElementType name="iYieldModifier" content="textOnly" dt:type="int"/>
<ElementType name="CultureLevelInfo" content="eltOnly">
<element type="Type"/>
<element type="Description"/>
<element type="iCityDefenseModifier"/>
+ <element type="iYieldModifier"/>
</ElementType>
<ElementType name="CultureLevelInfos" content="eltOnly">
<element type="CultureLevelInfo" maxOccurs="*"/>
=======================================
--- /trunk/The History of Three
Kingdoms/Assets/XML/Text/Civ4GameText_Sanguo_CityLoyalty.xml Tue Oct 20
02:50:19 2009
+++ /trunk/The History of Three
Kingdoms/Assets/XML/Text/Civ4GameText_Sanguo_CityLoyalty.xml Tue Oct 20
20:12:35 2009
@@ -29,4 +29,10 @@
<L1 /><L2 /><L3 /><L4 />
<Chinese>-----------------------[NEWLINE](50%
- %d1%%)/%d2[ICON_COMMERCE] = %s3 %F4</Chinese>
</TEXT>
+ <TEXT>
+ <Tag>TXT_KEY_MISC_HELP_YIELD_CULTURE</Tag>
+ <English>[ICON_BULLET]%D1%%%F2 from City Loyalty</English>
+<L1 /><L2 /><L3 /><L4 />
+ <Chinese>[ICON_BULLET]%D1%%%F2 À´×ÔÃñÖÒ¶È</Chinese>
+ </TEXT>
</Civ4GameText>
=======================================
--- /trunk/The History of Three Kingdoms/CvGameCoreDLL/CvCity.cpp Tue Oct
20 02:50:19 2009
+++ /trunk/The History of Three Kingdoms/CvGameCoreDLL/CvCity.cpp Tue Oct
20 20:12:35 2009
@@ -8259,6 +8259,13 @@
{
iModifier +=
GET_PLAYER(getOwnerINLINE()).getCapitalYieldRateModifier(eIndex);
}
+
+ // Sanguo Mod City Loyalty, start, by poyuzhe 10.20.09
+ if (getCultureLevel() != NO_CULTURELEVEL)
+ {
+ iModifier +=
GC.getCultureLevelInfo(getCultureLevel()).getYieldModifier();
+ }
+ // Sanguo Mod City Loyalty, end

iModifier += iExtra;

=======================================
--- /trunk/The History of Three Kingdoms/CvGameCoreDLL/CvGameTextMgr.cpp
Tue Oct 20 02:50:19 2009
+++ /trunk/The History of Three Kingdoms/CvGameCoreDLL/CvGameTextMgr.cpp
Tue Oct 20 20:12:35 2009
@@ -13407,6 +13407,17 @@
szBuffer.append(NEWLINE);
iBaseModifier += iCivicMod;
}
+
+ // Sanguo Mod City Loyalty, start, by poyuzhe 10.20.09
+ // Culture Level
+ if (city.getCultureLevel() != NO_CULTURELEVEL)
+ {
+ int iCultureLevelMod =
GC.getCultureLevelInfo(city.getCultureLevel()).getYieldModifier();
+ szBuffer.append(gDLL->getText("TXT_KEY_MISC_HELP_YIELD_CULTURE",
iCultureLevelMod, info.getChar()));
+ szBuffer.append(NEWLINE);
+ iBaseModifier += iCultureLevelMod;
+ }
+ // Sanguo Mod City Loyalty, end

FAssertMsg((iBaseModifier * iBaseProduction) / 100 ==
city.getYieldRate(eYieldType), "Yield Modifier in setProductionHelp does
not agree with actual value");

=======================================
--- /trunk/The History of Three Kingdoms/CvGameCoreDLL/CvInfos.cpp Tue Sep
29 23:51:43 2009
+++ /trunk/The History of Three Kingdoms/CvGameCoreDLL/CvInfos.cpp Tue Oct
20 20:12:35 2009
@@ -20203,6 +20203,9 @@

CvCultureLevelInfo::CvCultureLevelInfo() :
m_iCityDefenseModifier(0),
+// Sanguo Mod City Loyalty, start, by poyuzhe 10.20.09
+m_iYieldModifier(0),
+// Sanguo Mod City Loyalty, end
m_paiSpeedThreshold(NULL)
{
}
@@ -20223,6 +20226,13 @@
FAssert(i > -1);
return m_paiSpeedThreshold[i];
}
+
+// Sanguo Mod City Loyalty, start, by poyuzhe 10.20.09
+int CvCultureLevelInfo::getYieldModifier() const
+{
+ return m_iYieldModifier;
+}
+// Sanguo Mod City Loyalty, end

bool CvCultureLevelInfo::read(CvXMLLoadUtility* pXml)
{
@@ -20233,6 +20243,10 @@


pXml->GetChildXmlValByName(&m_iCityDefenseModifier, "iCityDefenseModifier");

+ // Sanguo Mod City Loyalty, start, by poyuzhe 10.20.09
+ pXml->GetChildXmlValByName(&m_iYieldModifier, "iYieldModifier");
+ // Sanguo Mod City Loyalty, end
+
pXml->SetVariableListTagPair(&m_paiSpeedThreshold, "SpeedThresholds",
sizeof(GC.getGameSpeedInfo((GameSpeedTypes)0)), GC.getNumGameSpeedInfos());

return true;
=======================================
--- /trunk/The History of Three Kingdoms/CvGameCoreDLL/CvInfos.h Tue Sep 29
23:51:43 2009
+++ /trunk/The History of Three Kingdoms/CvGameCoreDLL/CvInfos.h Tue Oct 20
20:12:35 2009
@@ -5619,12 +5619,19 @@

int getSpeedThreshold(int i) const; // Exposed to Python

+ // Sanguo Mod City Loyalty, start, by poyuzhe 10.20.09
+ int getYieldModifier() const; // Exposed to Python
+ // Sanguo Mod City Loyalty, end
+
bool read(CvXMLLoadUtility* pXML);

//---------------------------------------PROTECTED MEMBER
VARIABLES---------------------------------
protected:

int m_iCityDefenseModifier;
+ // Sanguo Mod City Loyalty, start, by poyuzhe 10.20.09
+ int m_iYieldModifier;
+ // Sanguo Mod City Loyalty, end

int* m_paiSpeedThreshold;

=======================================
--- /trunk/The History of Three Kingdoms/CvGameCoreDLL/CvUnit.cpp Tue Oct
20 02:50:19 2009
+++ /trunk/The History of Three Kingdoms/CvGameCoreDLL/CvUnit.cpp Tue Oct
20 20:12:35 2009
@@ -4966,6 +4966,12 @@
iTotalHeal += iBestHeal;
// XXX

+ // Sanguo Mod City Loyalty, start, by poyuzhe 10.20.09
+ // plot loyalty influence heal rate
+ iTotalHeal *= std::max(25,
pPlot->calculateCulturePercent(getOwnerINLINE()));
+ iTotalHeal /= 100;
+ // Sanguo Mod City Loyalty, end
+
return iTotalHeal;
}

@@ -7927,6 +7933,8 @@

int CvUnit::getSpyInterceptPercent(TeamTypes eTargetTeam) const
{
+ PROFILE_FUNC();
+
FAssert(isSpy());
FAssert(getTeam() != eTargetTeam);

@@ -7951,30 +7959,31 @@
iSuccess += GC.getDefineINT("ESPIONAGE_INTERCEPT_RECENT_MISSION");
}

- // Sanguo Mod Civilization Trait, start, by poyuzhe 12.21.08
+ // Sanguo Mod City Loyalty, start, by poyuzhe 10.20.09
+ int iModifier = 0;
+ if (eTargetTeam != NO_TEAM)
+ {
+ for (int iI = 0; iI < GET_TEAM(eTargetTeam).getPlayerMemberListSize();
iI++)
+ {
+ iModifier +=
plot()->calculateCulturePercent(GET_TEAM(eTargetTeam).getPlayerMemberAt(iI));
+ }
+ }
+
+ // Civilization Trait, start, by poyuzhe 12.21.08
// Kong Rong, TRAIT_CELEBRITY
- bool bCelebrity = false;
- for (int iI = 0; iI < MAX_CIV_PLAYERS; iI++)
- {
- if (bCelebrity == true)
- {
+ for (int iI = 0; iI < GC.getNumTraitInfos(); iI++)
+ {
+ if (GET_PLAYER(getOwnerINLINE()).hasTrait((TraitTypes)iI) &&
GC.getTraitInfo((TraitTypes)iI).isCelebrity())
+ {
+ iModifier +=
GC.getDefineINT("CELEBRITY_SPY_INTERCEPTED_CHANCE_MODIFIER");
break;
}
- if (eTargetTeam != NO_TEAM &&
GET_PLAYER((PlayerTypes)iI).isAlive() &&
GET_PLAYER((PlayerTypes)iI).getTeam() == eTargetTeam)
- {
- for (int iJ = 0; iJ < GC.getNumTraitInfos(); iJ++)
- {
- if (GET_PLAYER((PlayerTypes)iI).hasTrait((TraitTypes)iJ)
&& GC.getTraitInfo((TraitTypes)iJ).isCelebrity())
- {
- iSuccess *= (100 +
GC.getDefineINT("CELEBRITY_SPY_INTERCEPTED_CHANCE_MODIFIER"));
- iSuccess /= 100;
- bCelebrity = true;
- break;
- }
- }
- }
- }
- // Sanguo Mod Civilization Trait, end
+ }
+ // Civilization Trait, end
+
+ iSuccess *= std::max(1, iModifier);
+ iSuccess /= 100;
+ // Sanguo Mod City Loyalty, end

return std::min(100, std::max(0, iSuccess));
}
=======================================
--- /trunk/The History of Three Kingdoms/CvGameCoreDLL/CyInfoInterface3.cpp
Fri Sep 11 07:14:16 2009
+++ /trunk/The History of Three Kingdoms/CvGameCoreDLL/CyInfoInterface3.cpp
Tue Oct 20 20:12:35 2009
@@ -498,7 +498,9 @@

python::class_<CvCultureLevelInfo, python::bases<CvInfoBase>
>("CvCultureLevelInfo")
.def("getCityDefenseModifier",
&CvCultureLevelInfo::getCityDefenseModifier, "int ()")
-
+ // Sanguo Mod City Loyalty, start, by poyuzhe 10.20.09
+ .def("getYieldModifier", &CvCultureLevelInfo::getYieldModifier, "int ()")
+ // Sanguo Mod City Loyalty, end
.def("getSpeedThreshold", &CvCultureLevelInfo::getSpeedThreshold, "int
()")
;

=======================================
--- /trunk/The History of Three Kingdoms/Documents/changelog.txt Tue Oct 20
02:50:19 2009
+++ /trunk/The History of Three Kingdoms/Documents/changelog.txt Tue Oct 20
20:12:35 2009
@@ -1107,3 +1107,5 @@
0.309: ½«ÎÄ»¯¸ÄΪÃñÖÒ
½«ÉÌÒµÊÕÈë¿Î˰£¬Ë°¶îÓ°Ïì³ÇÊÐÃñÖÒ
µØ¿é²ú³öÊÜÃñÖÒ¶ÈÓ°Ïì
+
+0.310: Ìí¼ÓÃñÖҶȶԳÇÊвú³ö¡¢»ØÑªËÙÂÊ¡¢¼äµýÀ¹½ØÂʵÄÓ°Ïì
=======================================
--- /trunk/The History of Three Kingdoms/Documents/changelog_en.txt Tue Oct
20 02:50:19 2009
+++ /trunk/The History of Three Kingdoms/Documents/changelog_en.txt Tue Oct
20 20:12:35 2009
@@ -1,3 +1,5 @@
+0.310: add effect of loyalty on city yield, heal rate and spy interception
+
0.309: change culture into city loyalty
a new slider: commerce slider
plot yield change according to plot loyalty
Reply all
Reply to author
Forward
0 new messages