#author("2019-12-26T11:01:03+09:00","","")
#author("2022-12-30T15:54:28+09:00","","")
[[MOD/作成方法]]

* ユニーク地形改善 [#o1a91266]

何にしようか迷いましたが、比較的単純なやつで。
海と沿岸に設置できる「家船」を作ってみることにします。
外洋と沿岸に建設できる「家船」を作ってみることにします。
(これも公開済みMODに(ry

** xmlの記述 [#q8505e17]

*** NewLeader_Improvement.xml [#x28afc2f]
基本的にユニーク系のものは流れが同じです。種類が違うだけ。
まずは性能を決めてしまいましょう。

新規にxmlを追加してください。ファイル名はNewLeader_Improvement.xmlとしましょう。作ったらPropertyへの登録をお忘れなく。
海の地形改善ですので、ベースは漁船を使います。定義名は「IMPROVEMENT_FISHING_BOATS」。
コピペしてきて改変したものがこちら。

 <?xml version="1.0" encoding="utf-8"?>
 <GameInfo>
 	<Types>
 		<Row Type="IMPROVEMENT_hogehoge" Kind="KIND_IMPROVEMENT"/>
 	</Types>
 	<Improvements>
 		<Row ImprovementType="IMPROVEMENT_hogehoge" Name="LOC_IMPROVEMENT_hogehoge_NAME" Description="LOC_IMPROVEMENT_hogehoge_DESCRIPTION" Icon="ICON_IMPROVEMENT_hogehoge" PlunderType="PLUNDER_HEAL" PlunderAmount="100" Buildable="true" PrereqTech="TECH_SHIPBUILDING" TraitType="TRAIT_CIVILIZATION_IMPROVEMENT_hogehoge" Housing="1" TilesRequired="1" Domain="DOMAIN_SEA"/>
 	</Improvements>
 	<Improvement_ValidTerrains>
 		<Row ImprovementType="IMPROVEMENT_hogehoge" TerrainType="TERRAIN_COAST"/>
 		<Row ImprovementType="IMPROVEMENT_hogehoge" TerrainType="TERRAIN_OCEAN"/>
 	</Improvement_ValidTerrains>
 	<Improvement_ValidBuildUnits>
 		<Row ImprovementType="IMPROVEMENT_hogehoge" UnitType="UNIT_BUILDER"/>
 	</Improvement_ValidBuildUnits>
 	<Improvement_YieldChanges>
 		<Row ImprovementType="IMPROVEMENT_hogehoge" YieldType="YIELD_GOLD"       YieldChange="1"/>
 		<Row ImprovementType="IMPROVEMENT_hogehoge" YieldType="YIELD_PRODUCTION" YieldChange="1"/>
 	</Improvement_YieldChanges>
 	<Improvement_BonusYieldChanges>
 		<Row Id="51" ImprovementType="IMPROVEMENT_hogehoge" YieldType="YIELD_PRODUCTION" BonusYieldChange="1" PrereqTech="TECH_MASS_PRODUCTION"/>
 	</Improvement_BonusYieldChanges>
 </GameInfo>

Types:親定義
Improvements:地形改善の性能詳細
|ImprovementType|親定義の指定|
|Name|名称|
|Description|説明|
|Icon|改善アクションのアイコン|
|PlunderType|略奪で得られるボーナスの種類|
|PlunderAmount|略奪で得られるボーナスの値|
|Buildable|建造可能か。通常はtrue(国立公園の監視塔などはfalseになっています)|
|PrereqTech|解禁に必要なテクノロジー|
|PrereqTech|解禁に必要な技術|
|TraitType|紐付くTrait ユニークにするならば必須。|
|Housing|住宅|
|TilesRequired|+1されるのに必要なタイル数|
|Domain|所属ドメイン DOMAIN_SEA = 沿岸や海|
|TilesRequired|住宅が+1されるのに必要なタイル数|
|Domain|所属ドメイン DOMAIN_SEA = 沿岸や外洋|
Improvement_ValidTerrains:改善できるタイルの種類
- TERRAIN_COAST = 浅瀬
- TERRAIN_OCEAN = 海
- TERRAIN_COAST = 沿岸
- TERRAIN_OCEAN = 外洋

Improvement_ValidBuildUnits:改善を行えるユニット
- UNIT_BUILDER = 労働者

Improvement_YieldChanges:改善されるボーナス
- 本例ではゴールド+1、生産力+1となっています

Improvement_BonusYieldChanges:テクノロジーや社会制度の獲得による追加ボーナス
- 本例ではTECH_MASS_PRODUCTION(大量生産)で生産力+1となっています
- 改善されるボーナスに設定されていないものに追加ボーナスを与えることはできません。
例えばベースが生産力+3の改善に追加ボーナスで科学力+1とかやりたい場合は、改善されるボーナスに「科学力+0」を設定しておいてください。
*** NewLeader_Felines.xml [#e9faf8c4]

他と同じように、ユニークにするならば文明か指導者どちらかに紐付ける必要があります。
今回は文明に紐付けます。

 <?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" />
 		<Row Type="TRAIT_CIVILIZATION_IMPROVEMENT_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"/>
 		<Row CivilizationType="CIVILIZATION_FELINE" TraitType="TRAIT_CIVILIZATION_IMPROVEMENT_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" />
 		<Row TraitType="TRAIT_CIVILIZATION_IMPROVEMENT_hogehoge" Name="LOC_TRAIT_CIVILIZATION_IMPROVEMENT_hogehoge_NAME" /> ★追加
 	</Traits>
*** NewLeader_Config.xml [#p1116028]

他のユニークと同様、文明選択画面への表示部分を追加します。

 			<SortIndex>30</SortIndex>
 		</Row>
 		<Row> ★追加
 			<Domain>StandardPlayers</Domain> ★追加
 			<CivilizationType>CIVILIZATION_FELINE</CivilizationType> ★追加
 			<LeaderType>LEADER_JASPER_KITTY</LeaderType> ★追加
 			<Type>IMPROVEMENT_hogehoge</Type> ★追加
 			<Name>LOC_IMPROVEMENT_hogehoge_NAME</Name> ★追加
 			<Description>LOC_IMPROVEMENT_hogehoge_DESCRIPTION</Description> ★追加
 			<Icon>ICON_IMPROVEMENT_hogehoge</Icon> ★追加
 			<SortIndex>40</SortIndex> ★追加
 		</Row> ★追加
 	</PlayerItems>
 </GameData>
*** NewLeader_ConfigText.xml [#t6e1bbab]

他のユニークと同様、名称や説明などを書きます。

 		<Row Tag="LOC_IMPROVEMENT_hogehoge_NAME" Language="en_US"> ★追加
 			<Text>House Boat</Text> ★追加
 		</Row> ★追加
 		<Row Tag="LOC_IMPROVEMENT_hogehoge_DESCRIPTION" Language="en_US"> ★追加
 			<Text>Unlocks the Builder ability to construct a House Boat, unique to Majestic Felines.[NEWLINE][NEWLINE]+1 [ICON_Gold] Gold, [ICON_Production] Production and +1 [ICON_Housing] Housing. Can be built on Coasts and Oceans.</Text> ★追加
 		</Row> ★追加
 		<Row Tag="LOC_TRAIT_CIVILIZATION_IMPROVEMENT_hogehoge_NAME" Language="en_US"> ★追加
 			<Text>Majestic Felines unique Improvement: House Boat</Text> ★追加
 		</Row> ★追加
 		<Row Tag="LOC_PEDIA_BUILDINGS_PAGE_IMPROVEMENT_hogehoge_CHAPTER_HISTORY_PARA_1" Language="en_US"> ★追加
 			<Text></Text> ★追加
 		</Row> ★追加
 	</LocalizedText>
 </GameData>
** Artdefの記述 [#a6d75af5]

地形改善の見た目を表示するためのArtdefを記述します。
ファイル名は「hogehoge_Improvement.artdef」とします。

内容はバニラのArtdefから漁船のものをコピーしてきましょう。
ファイルは
 Sid Meier's Civilization VI/Base/Artdefs/Improvements.artdef
です。また、漁船の定義名は「IMPROVEMENT_FISHING_BOATS」です。

必要最小限をコピーして改変したものが以下となります。

 <?xml version="1.0" encoding="utf-8" ?>
 <AssetObjects:ArtDefSet>
 	<m_Version>
 		<major>4</major>
 		<minor>0</minor>
 		<build>250</build>
 		<revision>203</revision>
 	</m_Version>
 	<m_TemplateName text="Improvements"/>
 	<m_RootCollections>
 		<Element>
 			<m_CollectionName text="Improvement"/>
 			<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
 			<Element>
 				<m_Fields>
 					<m_Values/>
 				</m_Fields>
 				<m_ChildCollections>
 					<Element>
 						<m_CollectionName text="Audio"/>
 						<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
 						<Element>
 							<m_Fields>
 								<m_Values>
 									<Element class="AssetObjects:StringValue">
 										<m_Value text="FishingBoat"/>
 										<m_ParamName text="XrefName"/>
 									</Element>
 								</m_Values>
 							</m_Fields>
 							<m_ChildCollections/>
 							<m_Name text="XrefName"/>
 							<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="FishingBoats_Pillaged"/>
 										<m_RootCollectionName text="Improvements"/>
 										<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="Pillaged"/>
 										<m_RootCollectionName text="BuildStates"/>
 										<m_ArtDefPath text="Improvements.artdef"/>
 										<m_CollectionIsLocked>true</m_CollectionIsLocked>
 										<m_TemplateName text="Improvements"/>
 										<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="FishingBoats"/>
 										<m_RootCollectionName text="Improvements"/>
 										<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="Improvements.artdef"/>
 										<m_CollectionIsLocked>true</m_CollectionIsLocked>
 										<m_TemplateName text="Improvements"/>
 										<m_ParamName text="State"/>
 									</Element>
 								</m_Values>
 							</m_Fields>
 							<m_ChildCollections/>
 							<m_Name text="StrategicView001"/>
 							<m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections>
 						</Element>
 					</Element>
 					<Element>
 						<m_CollectionName text="Landmark"/>
 						<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
 						<Element>
 							<m_Fields>
 								<m_Values>
 									<Element class="AssetObjects:ArtDefReferenceValue">
 										<m_ElementName text="LM_FISHING_BOATS"/>
 										<m_RootCollectionName text="Landmarks"/>
 										<m_ArtDefPath text="Landmarks.artdef"/>
 										<m_CollectionIsLocked>true</m_CollectionIsLocked>
 										<m_TemplateName text="Landmarks"/>
 										<m_ParamName text="Xref"/>
 									</Element>
 									<Element class="AssetObjects:BoolValue">
 										<m_bValue>true</m_bValue>
 										<m_ParamName text="SuppressResource"/>
 									</Element>
 									<Element class="AssetObjects:ArtDefReferenceValue">
 										<m_ElementName text="ANYTHING"/>
 										<m_RootCollectionName text=""/>
 										<m_ArtDefPath text=""/>
 										<m_CollectionIsLocked>true</m_CollectionIsLocked>
 										<m_TemplateName text=""/>
 										<m_ParamName text="WhenAdjacentTo"/>
 									</Element>
 									<Element class="AssetObjects:ArtDefReferenceValue">
 										<m_ElementName text="NONE"/>
 										<m_RootCollectionName text=""/>
 										<m_ArtDefPath text=""/>
 										<m_CollectionIsLocked>true</m_CollectionIsLocked>
 										<m_TemplateName text=""/>
 										<m_ParamName text="Fence"/>
 									</Element>
 									<Element class="AssetObjects:IntValue">
 										<m_nValue>0</m_nValue>
 										<m_ParamName text="Priority"/>
 									</Element>
 								</m_Values>
 							</m_Fields>
 							<m_ChildCollections>
 								<Element>
 									<m_CollectionName text="WhenAffectedBy"/>
 									<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
 								</Element>
 							</m_ChildCollections>
 							<m_Name text="Landmark1"/>
 							<m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections>
 						</Element>
 					</Element>
 					<Element>
 						<m_CollectionName text="Clutter"/>
 						<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
 					</Element>
 					<Element>
 						<m_CollectionName text="Lighting"/>
 						<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
 					</Element>
 					<Element>
 						<m_CollectionName text="Activity"/>
 						<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
 					</Element>
 					<Element>
 						<m_CollectionName text="GreatWall"/>
 						<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
 					</Element>
 				</m_ChildCollections>
 				<m_Name text="IMPROVEMENT_hogehoge"/> ★ここを「IMPROVEMENT_FISHING_BOATS」から変更
 				<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_RootCollections>
 </AssetObjects:ArtDefSet>
** Mod.Art.xmlへの登録 [#c911a046]

以下3か所に作ったArtdefを登録するとちゃんと見えるようになります。

 		<Element>
 			<consumerName text="Improvements"/>
 			<relativeArtDefPaths>
 				<Element text="hogehoge_Improvement.artdef"/> ★追加
 			</relativeArtDefPaths>
 			<libraryDependencies/>
 			<loadsLibraries>false</loadsLibraries>
 		</Element>
 		<Element>
 			<consumerName text="WorldView_Translate"/>
 			<relativeArtDefPaths>
 				<Element text="hogehoge_Districts.artdef"/>
 				<Element text="hogehoge_Improvement.artdef"/> ★追加
 			</relativeArtDefPaths>
 			<libraryDependencies/>
 			<loadsLibraries>false</loadsLibraries>
 		</Element>
 		<Element>
 			<consumerName text="StrategicView_Translate"/>
 			<relativeArtDefPaths>
 				<Element text="hogehoge_Districts.artdef"/>
 				<Element text="hogehoge_Improvement.artdef"/> ★追加
 			</relativeArtDefPaths>
 			<libraryDependencies/>
 			<loadsLibraries>false</loadsLibraries>
 		</Element>
** アイコンの作成 [#ad803a41]

地形改善のアクションアイコンは256,80,50,38のサイズが必要になります。
が、今回も使いまわしましょう。とりあえず漁船ので。

 \Sid Meier's Civilization VI\Base\Assets\UI\Icons

以下の、Icons_UnitActions.xml内。IconDefinitionsから使いたいアイコンの記述をコピーしてきて、Nameを書き変えるだけです。
NewLeader_Icons.xmlへ追加します。

 		<Row Name="ICON_IMPROVEMENT_hogehoge" Atlas="ICON_ATLAS_UNIT_ACTIONS" Index="4"/> ★追加
 	</IconDefinitions>
 </GameData>
** ビルド・動作確認 [#v8a73f05]

これで完成です。
ビルドして確認しましょう。

&ref(SelectUI.jpg);

&ref(LoadingUI.jpg);

&ref(UI.jpg);

** 備考 [#m7278f8c]
ここまで作業したものを以下に上げておきます。
https://www.axfc.net/u/3837980



このエントリーをはてなブックマークに追加