例として一番単純な区域(建造物がないもの)である近郊部の置き換えユニーク区域を作ります。
近郊部の効果を一部ンバンザに近いものにし、工業地帯に接すると生産力+2の能力を付与します。
(これもすでに公開しているMODで・・・)
ユニークユニットでやったように新しくxmlファイルを作ります。
ファイル名は「NewLeader_District.xml」としてください。作ったらPropertyへの登録をお忘れなく。
内容は近郊部の定義をコピーして書き換えます。近郊部の定義名は「DISTRICT_NEIGHBORHOOD」です。
また、わかりやすくアピールによる住宅の変動はなしで5固定(ンバンザと同じ)にしてみましょう。
隣接ボーナスは他の区域のものを参考に書いてみます。
で、実際には以下の内容となります。
<?xml version="1.0" encoding="utf-8"?> <GameInfo> <Types> <Row Type="DISTRICT_hogehoge" Kind="KIND_DISTRICT"/> </Types> <DistrictReplaces> <Row CivUniqueDistrictType="DISTRICT_hogehoge" ReplacesDistrictType="DISTRICT_NEIGHBORHOOD"/> </DistrictReplaces> <Districts> <Row DistrictType="DISTRICT_hogehoge" Name="LOC_DISTRICT_hogehoge_NAME" Description="LOC_DISTRICT_hogehoge_DESCRIPTION" PrereqCivic="CIVIC_URBANIZATION" PlunderType="PLUNDER_GOLD" PlunderAmount="50" AdvisorType="ADVISOR_GENERIC" Cost="54" CostProgressionModel="COST_PROGRESSION_GAME_PROGRESS" CostProgressionParam1="1000" RequiresPlacement="true" RequiresPopulation="false" OnePerCity="false" Aqueduct="false" NoAdjacentCity="false" InternalOnly="false" ZOC="true" CaptureRemovesBuildings="false" CaptureRemovesCityDefenses="false" MilitaryDomain="NO_DOMAIN" Housing="5" CityStrengthModifier="2" TraitType="TRAIT_CIVILIZATION_DISTRICT_hogehoge"/> </Districts> <District_Adjacencies> <Row DistrictType="DISTRICT_hogehoge" YieldChangeId="IndustrialZone_Production"/> </District_Adjacencies> <Adjacency_YieldChanges> <Row ID="IndustrialZone_Production" Description="LOC_DISTRICT_INDUSTRIAL_ZONE_PRODUCTION" YieldType="YIELD_PRODUCTION" YieldChange="2" TilesRequired="1" AdjacentDistrict="DISTRICT_INDUSTRIAL_ZONE"/> </Adjacency_YieldChanges> </GameInfo>
Types:区域の親定義
DistrictReplace:何の区域の置き換えにするか
Districts:区域の詳細設定
Name | 区域名。別ファイルに中身を書きます |
Description | 区域の説明。別ファイルに中身を書きます |
PrereqCivic | 解禁社会制度:CIVIC_URBANIZATION = 都市化 |
PlunderType | 略奪で得られるもの:PLUNDER_GOLD = ゴールド |
PlunderAmount | 略奪時のボーナス量 |
AdvisorType | 助言者設定 |
Cost | 区域の基礎建設コスト |
CostProgressionModel | コストの上昇モデル? |
CostProgressionParam1 | コストの上昇値? |
RequiresPlacement | 建設に領土が必要かどうか。通常はtrueです。(例外で都心だけはfalseになっています) |
RequiresPopulation | 建設に人口が必要かどうか。キャンパスなど一定の人口が必要なものはtrueになっています。 |
OnePerCity | 1都市に1つかどうか。近郊部など無制限に作れる区域はfalseです。 |
Aqueduct | trueにすると、都心区域と真水源の間にのみ建設可能になる(用水路の建設条件) |
NoAdjacentCity | 都心に隣接できるかどうか。falseだと隣接できます。兵営はここがtrueになっています。 |
InternalOnly | trueの場合は、文明に1つだけ建設可能になる制限を付けるはず… |
ZOC | ZOCの発生の有無。trueで発生。 |
CaptureRemovesBuildings | 占領時に区域内の建造物が略奪状態になるかの設定。兵営と都心がtrueになっています。 |
CaptureRemovesCityDefenses | 不明ですがおそらく都心専用。他はfalseになっています。 |
MilitaryDomain | 区域を設置したタイルでの戦闘時になんのドメインに所属することになるか??? |
Housing | 住宅への加算値 |
TraitType | 所属特性(ユニークにするなら必須) |
District_Adjacencies:区域の隣接ボーナスの親定義
Adjacency_YieldChanges:区域の隣接ボーナスの詳細設定
ID | District_Adjacenciesで作成したIDを指定 |
Description | 隣接ボーナスの説明 |
YieldType | 得られるボーナスの種類 |
YieldChange | 得られるボーナスの値 |
TilesRequired | ボーナスを得るために必要なタイルの数 |
AdjacentDistrict | ボーナスを得るための隣接区域 |
ユニークユニットと同様、ユニーク区域も指導者か文明に紐付ける必要があります。
今回は文明側に紐付けます。
<?xml version="1.0" encoding="utf-8"?> <GameData> <Types> <Row Type="CIVILIZATION_FELINE" Kind="KIND_CIVILIZATION" /> <Row Type="TRAIT_CIVILIZATION_BUILDING_LITTER_BOX" Kind="KIND_TRAIT" /> <Row Type="TRAIT_CIVILIZATION_FELINE" Kind="KIND_TRAIT" /> <Row Type="TRAIT_CIVILIZATION_DISTRICT_hogehoge" Kind="KIND_TRAIT" /> ★追加 </Types> <Civilizations> <Row> <CivilizationType>CIVILIZATION_FELINE</CivilizationType> <Name>LOC_CIVILIZATION_FELINE_NAME</Name> <Description>LOC_CIVILIZATION_FELINE_DESCRIPTION</Description> <Adjective>LOC_CIVILIZATION_FELINE_ADJECTIVE</Adjective> <StartingCivilizationLevelType>CIVILIZATION_LEVEL_FULL_CIV</StartingCivilizationLevelType> </Row> </Civilizations> <CivilizationLeaders> <Row CivilizationType="CIVILIZATION_FELINE" LeaderType="LEADER_JASPER_KITTY" CapitalName="LOC_CIVLIZATION_FELINE_CITY_1" /> </CivilizationLeaders> <CivilizationCitizenNames> <Row CivilizationType="CIVILIZATION_FELINE" CitizenName="LOC_CITIZEN_FELINE_MALE_1" Female="0"/> <Row CivilizationType="CIVILIZATION_FELINE" CitizenName="LOC_CITIZEN_FELINE_MALE_2" Female="0"/> <Row CivilizationType="CIVILIZATION_FELINE" CitizenName="LOC_CITIZEN_FELINE_MALE_3" Female="0"/> <Row CivilizationType="CIVILIZATION_FELINE" CitizenName="LOC_CITIZEN_FELINE_MALE_4" Female="0"/> <Row CivilizationType="CIVILIZATION_FELINE" CitizenName="LOC_CITIZEN_FELINE_FEMALE_1" Female="1"/> <Row CivilizationType="CIVILIZATION_FELINE" CitizenName="LOC_CITIZEN_FELINE_FEMALE_2" Female="1"/> <Row CivilizationType="CIVILIZATION_FELINE" CitizenName="LOC_CITIZEN_FELINE_FEMALE_3" Female="1"/> <Row CivilizationType="CIVILIZATION_FELINE" CitizenName="LOC_CITIZEN_FELINE_FEMALE_4" Female="1"/> <Row CivilizationType="CIVILIZATION_FELINE" CitizenName="LOC_CITIZEN_FELINE_FEMALE_5" Female="1"/> </CivilizationCitizenNames> <CivilizationInfo> <Row CivilizationType="CIVILIZATION_FELINE" Header="LOC_CIVINFO_BINOMIAL_NAME" Caption="LOC_CIVINFO_FELIS_CATUS" /> </CivilizationInfo> <CivilizationTraits> <Row CivilizationType="CIVILIZATION_FELINE" TraitType="TRAIT_CIVILIZATION_BUILDING_LITTER_BOX" /> <Row CivilizationType="CIVILIZATION_FELINE" TraitType="TRAIT_CIVILIZATION_FELINE"/> <Row CivilizationType="CIVILIZATION_FELINE" TraitType="TRAIT_CIVILIZATION_DISTRICT_hogehoge"/> ★追加 </CivilizationTraits> <Traits> <Row TraitType="TRAIT_CIVILIZATION_BUILDING_LITTER_BOX" Name="LOC_PLACEHOLDER" Description="LOC_PLACEHOLDER" /> <Row TraitType="TRAIT_CIVILIZATION_FELINE" Name="LOC_TRAIT_CIVILIZATION_FELINE_NAME" Description="LOC_TRAIT_CIVILIZATION_FELINE_DESCRIPTION"/> <Row TraitType="TRAIT_CIVILIZATION_DISTRICT_hogehoge" Name="LOC_TRAIT_CIVILIZATION_DISTRICT_hogehoge_NAME" /> ★追加 </Traits> ・ ・ ・
これで文明とユニーク区域がつながりました。
ユニークユニットと同様、ユニーク区域も文明選択時やLoading画面に表示がなされています。
</Row> <Row> ★追加 <Domain>StandardPlayers</Domain> ★追加 <CivilizationType>CIVILIZATION_FELINE</CivilizationType> ★追加 <LeaderType>LEADER_JASPER_KITTY</LeaderType> ★追加 <Type>DISTRICT_hogehoge</Type> ★追加 <Name>LOC_DISTRICT_hogehoge_NAME</Name> ★追加 <Description>LOC_DISTRICT_hogehoge_DESCRIPTION</Description> ★追加 <Icon>ICON_DISTRICT_hogehoge</Icon> ★追加 <SortIndex>30</SortIndex> ★追加 </Row> ★追加 </PlayerItems> </GameData>
ユニークユニットと同様、名称や説明などを書きます。
<Row Tag="LOC_DISTRICT_hogehoge_NAME" Language="en_US"> ★追加 <Text>Industrial Park</Text> ★追加 </Row> ★追加 <Row Tag="LOC_DISTRICT_hogehoge_DESCRIPTION" Language="en_US"> ★追加 <Text>A district unique to Majestic Felines. Replaces the Neighborhood district. Provides +5 [ICON_Housing] Housing, +2 [ICON_Production] Production for adjacent Industrial Zone District.</Text> ★追加 </Row> ★追加 <Row Tag="LOC_TRAIT_CIVILIZATION_DISTRICT_hogehoge_NAME" Language="en_US"> ★追加 <Text>Majestic Felines unique District: Industrial Park</Text> ★追加 </Row> ★追加 <Row Tag="LOC_PEDIA_BUILDINGS_PAGE_DISTRICT_hogehoge_CHAPTER_HISTORY_PARA_1" Language="en_US"> ★追加 <Text></Text> ★追加 </Row> ★追加 </LocalizedText> </GameData>
区域の見た目を設定します。
ユニークユニットと同様、既存の使いまわしでいきます。
まずは新規にartdefファイルを作成してください。ファイル名は「hogehoge_Districts.artdef」としてください。
バニラの区域のArtdefファイルは
Sid Meier's Civilization VI/Base/Artdefs/Districts.artdef
ですので、ここから「DISTRICT_NEIGHBORHOOD」のものを探し出し、最小限をコピーして書き換えます。
書き換えたものは以下になります。
<?xml version="1.0" encoding="UTF-8" ?> <AssetObjects:ArtDefSet> <m_Version> <major>3</major> <minor>0</minor> <build>202</build> <revision>872</revision> </m_Version> <m_TemplateName text="Districts"/> <m_RootCollections> <Element> <m_CollectionName text="District"/> <m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements> <Element> <m_Fields> <m_Values> <Element class="AssetObjects:BoolValue"> <m_bValue>false</m_bValue> <m_ParamName text="CanAffectBuildings"/> </Element> </m_Values> </m_Fields> <m_ChildCollections> <Element> <m_CollectionName text="Landmark"/> <m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements> <Element> <m_Fields> <m_Values> <Element class="AssetObjects:ArtDefReferenceValue"> <m_ElementName text="DISTRICT_NEIGHBORHOOD"/> <m_RootCollectionName text="Districts"/> <m_ArtDefPath text="Landmarks.artdef"/> <m_CollectionIsLocked>true</m_CollectionIsLocked> <m_TemplateName text="Landmarks"/> <m_ParamName text="Xref"/> </Element> </m_Values> </m_Fields> <m_ChildCollections/> <m_Name text="Landmark001"/> <m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections> </Element> </Element> <Element> <m_CollectionName text="StrategicView"/> <m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements> <Element> <m_Fields> <m_Values> <Element class="AssetObjects:ArtDefReferenceValue"> <m_ElementName text="Neighborhood"/> <m_RootCollectionName text="Districts"/> <m_ArtDefPath text="StrategicView.artdef"/> <m_CollectionIsLocked>false</m_CollectionIsLocked> <m_TemplateName text="StrategicView"/> <m_ParamName text="XrefName"/> </Element> <Element class="AssetObjects:ArtDefReferenceValue"> <m_ElementName text="Completed"/> <m_RootCollectionName text="BuildStates"/> <m_ArtDefPath text="Districts.artdef"/> <m_CollectionIsLocked>true</m_CollectionIsLocked> <m_TemplateName text="Districts"/> <m_ParamName text="State"/> </Element> </m_Values> </m_Fields> <m_ChildCollections/> <m_Name text="StrategicView001"/> <m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections> </Element> <Element> <m_Fields> <m_Values> <Element class="AssetObjects:ArtDefReferenceValue"> <m_ElementName text="Neighborhood_Pillaged"/> <m_RootCollectionName text="Districts"/> <m_ArtDefPath text="StrategicView.artdef"/> <m_CollectionIsLocked>true</m_CollectionIsLocked> <m_TemplateName text="StrategicView"/> <m_ParamName text="XrefName"/> </Element> <Element class="AssetObjects:ArtDefReferenceValue"> <m_ElementName text="Pillaged"/> <m_RootCollectionName text="BuildStates"/> <m_ArtDefPath text="Districts.artdef"/> <m_CollectionIsLocked>true</m_CollectionIsLocked> <m_TemplateName text="Districts"/> <m_ParamName text="State"/> </Element> </m_Values> </m_Fields> <m_ChildCollections/> <m_Name text="StrategicView002"/> <m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections> </Element> <Element> <m_Fields> <m_Values> <Element class="AssetObjects:ArtDefReferenceValue"> <m_ElementName text="Neighborhood_UnderConstruction"/> <m_RootCollectionName text="Districts"/> <m_ArtDefPath text="StrategicView.artdef"/> <m_CollectionIsLocked>true</m_CollectionIsLocked> <m_TemplateName text="StrategicView"/> <m_ParamName text="XrefName"/> </Element> <Element class="AssetObjects:ArtDefReferenceValue"> <m_ElementName text="UnderConstruction"/> <m_RootCollectionName text="BuildStates"/> <m_ArtDefPath text="Districts.artdef"/> <m_CollectionIsLocked>true</m_CollectionIsLocked> <m_TemplateName text="Districts"/> <m_ParamName text="State"/> </Element> </m_Values> </m_Fields> <m_ChildCollections/> <m_Name text="StrategicView003"/> <m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections> </Element> </Element> <Element> <m_CollectionName text="Audio"/> <m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements> <Element> <m_Fields> <m_Values> <Element class="AssetObjects:StringValue"> <m_Value text="Build_District_Neighborhood"/> <m_ParamName text="XrefName"/> </Element> </m_Values> </m_Fields> <m_ChildCollections/> <m_Name text="Build_District_Neighborhood"/> <m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections> </Element> </Element> <Element> <m_CollectionName text="AmbPlay"/> <m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements> <Element> <m_Fields> <m_Values> <Element class="AssetObjects:StringValue"> <m_Value text="PLAY_AMBIENCE_DISTRICT_NEIGHBORHOOD"/> <m_ParamName text="XrefName"/> </Element> </m_Values> </m_Fields> <m_ChildCollections/> <m_Name text="PLAY_AMBIENCE_DISTRICT_NEIGHBORHOOD"/> <m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections> </Element> </Element> <Element> <m_CollectionName text="AmbStop"/> <m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements> <Element> <m_Fields> <m_Values> <Element class="AssetObjects:StringValue"> <m_Value text="STOP_AMBIENCE_DISTRICT_NEIGHBORHOOD"/> <m_ParamName text="XrefName"/> </Element> </m_Values> </m_Fields> <m_ChildCollections/> <m_Name text="STOP_AMBIENCE_DISTRICT_NEIGHBORHOOD"/> <m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections> </Element> </Element> </m_ChildCollections> <m_Name text="DISTRICT_hogehoge"/> ★ここを「DISTRICT_NEIGHBORHOOD」から変更 <m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections> </Element> </Element> <Element> <m_CollectionName text="BuildStates"/> <m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements> <Element> <m_Fields> <m_Values/> </m_Fields> <m_ChildCollections/> <m_Name text="Completed"/> <m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections> </Element> <Element> <m_Fields> <m_Values/> </m_Fields> <m_ChildCollections/> <m_Name text="Pillaged"/> <m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections> </Element> <Element> <m_Fields> <m_Values/> </m_Fields> <m_ChildCollections/> <m_Name text="UnderConstruction"/> <m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections> </Element> </Element> </m_RootCollections> </AssetObjects:ArtDefSet>
記述したArtdefファイルをMod.Art.xmlへ登録します。hogehoge_Districts.artdefの追加箇所はLandmarks、WorldView_Translate、StrategicView_Translateの3か所です。
<Element> <consumerName text="Landmarks"/> <relativeArtDefPaths> <Element text="hogehoge_Districts.artdef"/> ★追加 </relativeArtDefPaths> <libraryDependencies> <Element text="CityBuildings"/> <Element text="TileBase"/> <Element text="RouteDecalMaterial"/> </libraryDependencies> <loadsLibraries>true</loadsLibraries> </Element> <Element> <consumerName text="WorldView_Translate"/> <relativeArtDefPaths> <Element text="hogehoge_Districts.artdef"/> ★追加 </relativeArtDefPaths> <libraryDependencies/> <loadsLibraries>false</loadsLibraries> </Element> <Element> <consumerName text="StrategicView_Translate"/> <relativeArtDefPaths> <Element text="hogehoge_Districts.artdef"/> ★追加 </relativeArtDefPaths> <libraryDependencies/> <loadsLibraries>false</loadsLibraries> </Element>
区域のアイコンに必要なのは256,128,80,50,38,32のサイズのものになります。
ですが・・・
今回は既存の近郊部のアイコンを使いまわす方法を記載します。
\Sid Meier's Civilization VI\Base\Assets\UI\Icons
以下の、Icons_Districts.xml内。IconDefinitionsから使いたいアイコンの記述をコピーしてきて、Nameを書き変えるだけです。
・ ・ ・ <Row Name="ICON_DISTRICT_hogehoge" Atlas="ICON_ATLAS_DISTRICTS" Index="10"/> ★追加 </IconDefinitions> </GameData>
これで完成です。ビルドして動作確認してみましょう。
文明選択画面
Loading画面
解禁の条件が都市化ですので、スタートを近代以降にして開始すると楽に確認ができます。
まず工業地帯を設置し、その隣に今回作った区域を設置してみてください。
隣接ボーナスで生産力+2が付いていれば成功です。
上記サンプルでは、工業地域で制作していますが、それ以外は
都心 | CITY_CENTER |
キャンパス | CAMPUS |
聖地 | HOLY_SITE |
兵営 | ENCAMPMENT |
商業ハブ | COMMERCIAL_HUB |
総合娯楽施設 | ENTERTAINMENT_COMPLEX |
劇場広場 | THEATER |
工業地帯 | INDUSTRIAL_ZONE |
こんな感じです。
より詳しくは、
\Sid Meier's Civilization VI\Base\Assets\Gameplay\Data
以下のDistricts.xmlに定義があります。
また、傑作枠のある建造物が立つ区域に関してはFontIconの定義も足す必要があります。
これを足し忘れると、敵文明で登場させた際、スパイの「傑作を盗む」選択で長ったらしい文字列が表示されてしまいます。
※他にもあるかもしれませんが、いまのところ筆者がわかっているのは上記のみ。
例えば劇場広場を置換する区域がそうです(劇場広場には美術館や博物館が建ちます)。
バニラだとアクロポリスが該当。
Iconの記述に以下のように書き加えてください。
<Row Name="DISTRICT_hogehoge" Atlas="ICON_ATLAS_FONT_ICON_BASELINE_4" Index="182"/>
これで劇場広場のアイコンが表示されるようになります。
Indexの番号を変えれば他のアイコンにもできますので、傑作枠を独自に追加したのであればその建造物が立つ区域に差し替えてください。
バニラのFontIconの定義はBase\Assets\UI\Icons\FontIcons.xmlに書かれています。
ここまで作業したものを以下に置いておきます。
https://www.axfc.net/u/3836466