终于!
你可以做游戏的功能了,这里我们先只讲领袖的功能是怎么做出来的,我们会用频繁大佬工具,来实现一些效果。
设计你的效果
契合原版特性
首先,你要知道,有些特性是无法在游戏中实现的,比如英雄特性,因为游戏的Dll并不支持这个特性,除非像文明5一样,有Dll扩展出现,我们才能够完成这一部分。
那么,还有一部分特性是需要通过Lua脚本语言实现的,比如政哥哥每次触发尤里卡或者鼓舞时所有城市的建造进度推进20%。
而剩下的,只需要通过游戏中的Modifier组合就可以实现,或者可以直接套用原版游戏中存在的特性。
这里我们为了简单,我们先来给卫宫设计几个比较容易的特性:
领土扩张速度+100%。
单位射程+4,战斗力-8,拥有工业化科技后抵消该效果。
拥有粮仓的城市人口成长速度+50%。
这三个特性还是比较好做的,我们先开始做:
认识大佬工具
先选择列表:意思是这个Modifier绑定给谁,比如图中的Belief,是信仰,如果我们给领袖绑定,则是选择Trait
所有者:这个意思是指属于谁,比如哪个建筑?哪个单位?哪个信仰?等等,我们根据第四章写的信息填写。
ModifierId:你做的每个Modifier都是有ID的,你必须给每个Modifier起个ID,并且保证与其他不重复。
ModifierType:这是指主要的效果类型,比如修改XXX城市的增长度啊等等。
EffectType:这是特效类型,目前我们不需要使用他,这个特效类型影响ModifierType,属于<DynamicModifiers>部分。
CollectionType:所属集合类型,这是指被赋予者相关的信息,也是<DynamicModifiers>,当前不需要使用。
OwnerRequirementSet:这是指所有者的条件集合,其中添加的Requirement会被当做条件进行判断,比如,这个特性所有者是不是拥有某个建筑或者某个区域。
SubjectRequirementSet:目标对象的条件集合,比如修改城市中区域的建造速度,那么城市就是OwnerRequirementSet,区域就是SubjectRequirementSet?
ModifierArguments:Modifier是需要值的,比如建造速度加快多少,单位射程加多少,都是在这里填写。
总而言之,我们首先需要找到ModifierType,然后为其加上条件(RequirementSet),最终我们就做成了。
领土扩张速度
MODIFIER_ALL_CITIES_CULTURE_BORDER_EXPANSION,字面意思非常完美,修改所有城市文化边境成长速度,但你需要注意的是,这个ALL_CITIES是指所有城市,没错,就是包括那些都不属于我们这位领袖的城市,这时候该怎么办呢?
(高级)手动创建DynamicModifiers
我们需要手动创建<DynamicModifiers>,现在,我们在ModBuddy中单独建立一个Xml:
然后我们来到游戏目录中:
我们用Notepad打开,这里我用Notepad++打开的,我们搜索MODIFIER_ALL_CITIES_CULTURE_BORDER_EXPANSION
我们把这两个条目连同结构复制下来,粘贴到我们的XML中。
<GameData>
<Types>
<Row Type="MODIFIER_ALL_CITIES_CULTURE_BORDER_EXPANSION" Kind="KIND_MODIFIER"/>
</Types>
<DynamicModifiers>
<Row>
<ModifierType>MODIFIER_ALL_CITIES_CULTURE_BORDER_EXPANSION</ModifierType>
<CollectionType>COLLECTION_ALL_CITIES</CollectionType>
<EffectType>EFFECT_ADJUST_CITY_CULTURE_BORDER_EXPANSION</EffectType>
</Row>
</DynamicModifiers>
</GameData>
我们分析一下代码:
<Types>在第四章已经讲过了,如果你想要添加新的东西,大部分都需要通过<Types>来注册声明,这里声明MODIFIER_ALL_CITIES_CULTURE_BORDER_EXPANSION,为一个Modifier。
<DynamicModifiers>,很多人可能不理解,为什么是动态(Dynamic)的?事实上这是说在游戏进行时,根据游戏变动和其中的参数而产生不同的效果(类似这种行为),所以称之为动态,而不是写死的(Static)。
<ModifierType>就是我们所声明的Type。
<CollectionType>是指所有者,比如这里的所有者就是所有城市。
<EffectType>是实际上的效果,大家可以看到这个效果是修改城市边境增长。
那么我们该怎么修改?当然是把所有城市改成玩家城市了,如下:
<GameData>
<Types>
<Row Type="MODIFIER_FATE_EMIYA_PLAYER_CITIES_CULTURE_BORDER_EXPANSION" Kind="KIND_MODIFIER"/>
</Types>
<DynamicModifiers>
<Row>
<ModifierType>MODIFIER_FATE_EMIYA_PLAYER_CITIES_CULTURE_BORDER_EXPANSION</ModifierType>
<CollectionType>COLLECTION_PLAYER_CITIES</CollectionType>
<EffectType>EFFECT_ADJUST_CITY_CULTURE_BORDER_EXPANSION</EffectType>
</Row>
</DynamicModifiers>
</GameData>
我们看这个代码,我们起了个新的Id,并加上了唯一的一段特殊标记FATE_EMIYA(因为其他Mod也可能会复写这个效果,为了防止冲突,我们自己加一段自己的‘识别码’)
然后,我们把CollectionType改成了COLLECTION_PLAYER_CITIES。
这样所有城市就会变成所属玩家城市了。
你可能会说,我把CollectionType改成COLLECTION_PLAYER_UNITS,会不会所属单位存在的城市就有这个效果了?
并不,因为你需要保证EffectType中的对象和CollectionType中的是同一类,比如目前的这两者,它们都是城市,所以可以这么修改。
(简单)大佬工具一键式生成
现在,我们回到大佬工具1.5,把ModifierId修改成我们自己的Id,把CollectionType选择为我们刚刚改过的样子(不选择也可以):
在所有者写上我们的<LeaderTraits>中的特性Id:TRAIT_LEADER_FSN_ARCHER_EMIYA_UBW,并为这个效果起了个新Id:MODIFIER_FATE_EMIYA_CITIES_CULTURE_BORDER_EXPANSION。
在ModifierArguments的值中填写100,即为该效果会增长100。
现在,我们点击生成。
就像这样,一个Modifiers被添加进去了!
Modifiers解释
实际上我在大佬工具1.5(上面)我已经讲解过了,这一部分和Xml没有多大区别。
我们在<TraitModifiers>中绑定TraitType(天赋类型)和ModifierId。
然后在<Modifiers>中协商ModiferId和和ModifierType。
在<ModifierArguments>中写上ModifierId和对应的键值(Name:Value)
这就是Xml的实现步骤,我贴一段查理曼的实现代码:
<TraitModifiers>
<Row TraitType="TRAIT_CHARLEMAGNE_SABER_JOYEUSE_ORDRE" ModifierId="TRAIT_CHARLEMAGNE_SABER_JOYEUSE_ORDRE_GREAT"/>
</TraitModifiers>
<Modifiers>
<!-- GREAT PEOPLE -->
<Row>
<ModifierId>TRAIT_CHARLEMAGNE_SABER_JOYEUSE_ORDRE_GREAT</ModifierId>
<ModifierType>MODIFIER_PLAYER_GOVERNMENT_FLAT_BONUS</ModifierType>
</Row>
</Modifiers>
<ModifierArguments>
<!-- Great People -->
<Row>
<ModifierId>TRAIT_CHARLEMAGNE_SABER_JOYEUSE_ORDRE_GREAT</ModifierId>
<Name>BonusType</Name>
<Value>GOVERNMENTBONUS_GREAT_PEOPLE</Value>
</Row>
<Row>
<ModifierId>TRAIT_CHARLEMAGNE_SABER_JOYEUSE_ORDRE_GREAT</ModifierId>
<Name>Amount</Name>
<Value>100</Value>
</Row>
</ModifierArguments>
<!-- 该效果为伟人点数增长+100% -->
就是这样,如果你喜欢大佬工具1.5,你可以使用大佬工具1.5来做,如果你喜欢Xml,你就可以写Xml。
粮仓城市加人口成长速度
字面意思,修改玩家城市增长率,但是,我们需要的是有粮仓的城市,那么粮仓该怎么实现呢?
这时候,我们就需要使用RequirementSet,我们需要判断的是需要增长人口的城市有没有建筑,而不是玩家的城市们有没有建筑,所以们选择SubjectRequirementSet。
Requirement和Modifier一样,一个Id一个Type,但没有Collection和Effect,所以相对来说会简单一些。
大佬工具1.5中,提示R&F的是迭起兴衰的特性,带叹号的特性可能没有效果。
字面意思分别是:相似性、影响、颠倒、逆向、持续、进度、触发。
总而言之,你可以查查官方代码和论坛,因为我用的也很少……而且我也没有找到一些比较相似的说明。
所以我们把这几个勾都去掉。
BuildingType中的BUILDING_GRANARY是指粮仓这个建筑,你可以查阅官方wiki或者论坛来获取,或者查游戏文件,或者查游戏生成的数据库。
我们给ID附上一个比较易读的ID,然后点击OK。
在外层,我们给RequirementSet赋予一个ID:REQUIREMENT_SET_EMIYA_CITY_HAS_GRANARY,你可能会问,这不是多此一举吗?里一层外一层的。
实际上,被称之为Set,即为一个集合,一个集合中可以有多条条件,这些条件,你可以选择满足其1即可生效,也可以选择满足所有才能生效,而Set中的功能就是这个意思。
比如我想要粮仓和军营同时存在的城市有这个效果,我就可以选择All,如果是其中一个存在,我就可以选择Any。
这里我们选择All和Any都一样,因为我们只有一条特性。
我也给想用Xml的大佬们一段例子,这是村正的:
<GameData>
<RequirementSets>
<Row>
<RequirementSetId>SENJI_MURAMASA_REQUIRES_UNIT_IS_MELEE</RequirementSetId>
<RequirementSetType>REQUIREMENTSET_TEST_ALL</RequirementSetType>
</Row>
</RequirementSets>
<RequirementSetRequirements>
<Row>
<RequirementSetId>SENJI_MURAMASA_REQUIRES_UNIT_IS_MELEE</RequirementSetId>
<RequirementId>SENJI_MURAMASA_REQUIRES_UNIT_IS_MELEE</RequirementId>
</Row>
</RequirementSetRequirements>
<Requirements>
<Row>
<RequirementId>SENJI_MURAMASA_REQUIRES_UNIT_IS_MELEE</RequirementId>
<RequirementType>REQUIREMENT_UNIT_TAG_MATCHES</RequirementType>
</Row>
</Requirements>
<RequirementArguments>
<Row>
<RequirementId>SENJI_MURAMASA_REQUIRES_UNIT_IS_MELEE</RequirementId>
<Name>Tag</Name>
<Value>CLASS_MELEE</Value>
</Row>
</RequirementArguments>
</GameData>
<!-- 判断单位是不是近战 -->
远程单位射程+,战斗力-
这个需要两个Modifier来组合成一个效果,因为同一个Modifier不可能实现+射程和-战斗力。
我们先做加射程,因为ModifierType已经很明确的描述是远程单位了,所以我们不需要加一个Requirement,直接修改:
而战斗力-8,拥有工业化后抵消该效果,就需要我们使用:MODIFIER_PLAYER_UNITS_ATTACH_MODIFIER,为玩家的单位赋予特性。
现在我们来做单位-攻击力的效果
你可能会想,我们要修改的是玩家的所有单位,而不是单独的单位,为什么要这么做?
结合MODIFIER_FATE_EMIYA_UNITS_ATTACH_MODIFIER,我们可以为玩家的每个单位附上这个效果,这样,我们可以即判断玩家是否拥有科技,又可以给每个单位添加效果。
因为我们绑定给Modifier,就不需要把这个特性的TraitModifiers部分复制下来。
然而,攻击力部分我们还需要一个文本专门在战斗力缩略图那个地方显示:
<ModifierStrings>
<Row ModifierId="MODIFIER_FATE_EMIYA_UNIT_COMBAT_STRENGTH" Context="Preview" Text="LOC_ABILITY_EMIYA_COMBAT_STRENGTH"/>
</ModifierStrings>
把这一部分复制到Leader_Data中,而相同的,我还需要添加ingame的文本:
<Row Tag="LOC_ABILITY_EMIYA_COMBAT_STRENGTH" Language="zh_Hans_CN">
<Text>-8 赝品</Text>
</Row>
<Row Tag="LOC_ABILITY_EMIYA_COMBAT_STRENGTH" Language="zh_Hant_HK">
<Text>-8 贋品</Text>
</Row>
<Row Tag="LOC_ABILITY_EMIYA_COMBAT_STRENGTH" Language="en_US">
<Text>-8 Fake</Text>
</Row>
最终数据
-- FSN_Emiya_Arhcer_Leader_Modifiers
-- Author: HaoJun0823
-- DateCreated: 8/30/2019 12:29:54 PM
--------------------------------------------------------------
-- 领土扩张速度+100%
INSERT INTO TraitModifiers (TraitType, ModifierId) VALUES
("TRAIT_LEADER_FSN_ARCHER_EMIYA_UBW", "MODIFIER_FATE_EMIYA_CITIES_CULTURE_BORDER_EXPANSION");
INSERT INTO Modifiers (ModifierId, ModifierType, RunOnce, Permanent, NewOnly, OwnerRequirementSetId, SubjectRequirementSetId) VALUES
("MODIFIER_FATE_EMIYA_CITIES_CULTURE_BORDER_EXPANSION", "MODIFIER_FATE_EMIYA_PLAYER_CITIES_CULTURE_BORDER_EXPANSION", 0, 0, 0, NULL, NULL);
INSERT INTO ModifierArguments (ModifierId, Name, Value) VALUES
("MODIFIER_FATE_EMIYA_CITIES_CULTURE_BORDER_EXPANSION", "Amount", 100);
-- Custom ModifierType
INSERT INTO Types (Type, Kind) VALUES
("MODIFIER_FATE_EMIYA_PLAYER_CITIES_CULTURE_BORDER_EXPANSION", "KIND_MODIFIER");
INSERT INTO DynamicModifiers (ModifierType, CollectionType, EffectType) VALUES
("MODIFIER_FATE_EMIYA_PLAYER_CITIES_CULTURE_BORDER_EXPANSION", "COLLECTION_PLAYER_CITIES", "EFFECT_ADJUST_CITY_CULTURE_BORDER_EXPANSION");
-- 拥有粮仓的城市人口增长+50%
INSERT INTO TraitModifiers (TraitType, ModifierId) VALUES
("TRAIT_LEADER_FSN_ARCHER_EMIYA_UBW", "MODIFIER_FATE_EMIYA_CITIES_GROWTH_REQUIREMENT_GRANARY");
INSERT INTO Modifiers (ModifierId, ModifierType, RunOnce, Permanent, NewOnly, OwnerRequirementSetId, SubjectRequirementSetId) VALUES
("MODIFIER_FATE_EMIYA_CITIES_GROWTH_REQUIREMENT_GRANARY", "MODIFIER_PLAYER_CITIES_ADJUST_CITY_GROWTH", 0, 0, 0, NULL, "REQUIREMENT_SET_EMIYA_CITY_HAS_GRANARY");
INSERT INTO ModifierArguments (ModifierId, Name, Value) VALUES
("MODIFIER_FATE_EMIYA_CITIES_GROWTH_REQUIREMENT_GRANARY", "Amount", 50);
-- Single Conditions
INSERT INTO Requirements (RequirementId, RequirementType, ProgressWeight) VALUES
("REQUIREMENT_EMIYA_CITY_HAS_GRANARY", "REQUIREMENT_CITY_HAS_BUILDING", 0);
INSERT INTO RequirementArguments (RequirementId, Name, Value) VALUES
("REQUIREMENT_EMIYA_CITY_HAS_GRANARY", "BuildingType", "BUILDING_GRANARY");
-- Conditions Group
INSERT INTO RequirementSets (RequirementSetId, RequirementSetType) VALUES
("REQUIREMENT_SET_EMIYA_CITY_HAS_GRANARY", "REQUIREMENTSET_TEST_ALL");
INSERT INTO RequirementSetRequirements (RequirementSetId, RequirementId) VALUES
("REQUIREMENT_SET_EMIYA_CITY_HAS_GRANARY", "REQUIREMENT_EMIYA_CITY_HAS_GRANARY");
-- 单位射程+4
INSERT INTO TraitModifiers (TraitType, ModifierId) VALUES
("TRAIT_LEADER_FSN_ARCHER_EMIYA_UBW", "MODIFIER_FATE_EMIYA_UNITS_ATTACK_RANGE");
INSERT INTO Modifiers (ModifierId, ModifierType, RunOnce, Permanent, NewOnly, OwnerRequirementSetId, SubjectRequirementSetId) VALUES
("MODIFIER_FATE_EMIYA_UNITS_ATTACK_RANGE", "MODIFIER_PLAYER_UNITS_ADJUST_ATTACK_RANGE", 0, 0, 0, NULL, NULL);
INSERT INTO ModifierArguments (ModifierId, Name, Value) VALUES
("MODIFIER_FATE_EMIYA_UNITS_ATTACK_RANGE", "Amount", 4);
-- 未拥有工业化单位攻击力-8
INSERT INTO TraitModifiers (TraitType, ModifierId) VALUES
("TRAIT_LEADER_FSN_ARCHER_EMIYA_UBW", "MODIFIER_FATE_EMIYA_UNITS_ATTACH_MODIFIER");
INSERT INTO Modifiers (ModifierId, ModifierType, RunOnce, Permanent, NewOnly, OwnerRequirementSetId, SubjectRequirementSetId) VALUES
("MODIFIER_FATE_EMIYA_UNITS_ATTACH_MODIFIER", "MODIFIER_PLAYER_UNITS_ATTACH_MODIFIER", 0, 0, 0, "REQUIREMENT_SET_EMIYA_NOT_HAVE_INDUSTRIALIZATION", NULL);
INSERT INTO ModifierArguments (ModifierId, Name, Value) VALUES
("MODIFIER_FATE_EMIYA_UNITS_ATTACH_MODIFIER", "ModifierId", "MODIFIER_FATE_EMIYA_UNIT_COMBAT_STRENGTH");
-- Single Conditions
INSERT INTO Requirements (RequirementId, RequirementType, Inverse) VALUES
("REQUIREMENT_EMIYA_NOT_HAVE_INDUSTRIALIZATION", "REQUIREMENT_PLAYER_HAS_TECHNOLOGY", 1);
INSERT INTO RequirementArguments (RequirementId, Name, Value) VALUES
("REQUIREMENT_EMIYA_NOT_HAVE_INDUSTRIALIZATION", "TechnologyType", "TECH_INDUSTRIALIZATION");
-- Conditions Group
INSERT INTO RequirementSets (RequirementSetId, RequirementSetType) VALUES
("REQUIREMENT_SET_EMIYA_NOT_HAVE_INDUSTRIALIZATION", "REQUIREMENTSET_TEST_ALL");
INSERT INTO RequirementSetRequirements (RequirementSetId, RequirementId) VALUES
("REQUIREMENT_SET_EMIYA_NOT_HAVE_INDUSTRIALIZATION", "REQUIREMENT_EMIYA_NOT_HAVE_INDUSTRIALIZATION");
-- 未拥有工业化单位攻击力-8 特性
INSERT INTO Modifiers (ModifierId, ModifierType, RunOnce, Permanent, NewOnly, OwnerRequirementSetId, SubjectRequirementSetId) VALUES
("MODIFIER_FATE_EMIYA_UNIT_COMBAT_STRENGTH", "MODIFIER_UNIT_ADJUST_COMBAT_STRENGTH", 0, 0, 0, NULL, NULL);
INSERT INTO ModifierArguments (ModifierId, Name, Value) VALUES
("MODIFIER_FATE_EMIYA_UNIT_COMBAT_STRENGTH", "Amount", -8);
这是全部代码,你可以参考,并且从中获取灵感,这些差不多大概也许是所有比较有特性的组合了,当然,还有更多,我们将在文明章节讲解。
议程<Agenda>
议程也是用TraitModifier实现的,然而里面包括了几个参数:
首先我们找到第四章中<AgendaTraits>写下的Id:TRAIT_AGENDA_FSN_ARCHER_EMIYA
然后我们手动创建两个TraitModifiers:
然后创建Modifiers
接下来创建是什么?没错,就是ModifierArguments
然后还需要两个玄学ModifierStrings
终于,添加完了!我会讲一讲比较特殊的地方:
<Modifiers>
<Row>
<ModifierId>AGENDA_CHARLEMAGNE_SABER_HOLY_KNIGHT_EMPEROR_EX_FRIEND</ModifierId>
<ModifierType>MODIFIER_PLAYER_DIPLOMACY_SIMPLE_MODIFIER</ModifierType>
<SubjectRequirementSetId>PLAYER_DECLARED_FRIEND</SubjectRequirementSetId>
</Row>
<Row>
<ModifierId>AGENDA_CHARLEMAGNE_SABER_HOLY_KNIGHT_EMPEROR_EX_DENOUNCED_FRIEND</ModifierId>
<ModifierType>MODIFIER_PLAYER_DIPLOMACY_SIMPLE_MODIFIER</ModifierType>
<SubjectRequirementSetId>PLAYER_FRIEND_DENOUNCED</SubjectRequirementSetId>
</Row>
</Modifiers>
这里的ModifierType是固定的,只能使用这个,意思是修改外交。
而SubjectRequirement指的是目标领袖的行为,现在是只目标领袖谴责/宣布友好时触发这两个Modifier,当然,你可以添加更多的Modifier。
<ModifierArguments>
<Row>
<ModifierId>AGENDA_CHARLEMAGNE_SABER_HOLY_KNIGHT_EMPEROR_EX_FRIEND</ModifierId>
<Name>InitialValue</Name>
<Value>18</Value>
</Row>
<Row>
<ModifierId>AGENDA_CHARLEMAGNE_SABER_HOLY_KNIGHT_EMPEROR_EX_FRIEND</ModifierId>
<Name>ReductionTurns</Name>
<Value>10</Value>
</Row>
<Row>
<ModifierId>AGENDA_CHARLEMAGNE_SABER_HOLY_KNIGHT_EMPEROR_EX_FRIEND</ModifierId>
<Name>ReductionValue</Name>
<Value>1</Value>
</Row>
<Row>
<ModifierId>AGENDA_CHARLEMAGNE_SABER_HOLY_KNIGHT_EMPEROR_EX_FRIEND</ModifierId>
<Name>MessageThrottle</Name>
<Value>20</Value>
</Row>
<Row>
<ModifierId>AGENDA_CHARLEMAGNE_SABER_HOLY_KNIGHT_EMPEROR_EX_FRIEND</ModifierId>
<Name>StatementKey</Name>
<Value>LOC_DIPLO_KUDO_LEADER_CHARLEMAGNE_SABER_REASON_ANY</Value>
</Row>
<Row>
<ModifierId>AGENDA_CHARLEMAGNE_SABER_HOLY_KNIGHT_EMPEROR_EX_FRIEND</ModifierId>
<Name>SimpleModifierDescription</Name>
<Value>LOC_DIPLO_MODIFIER_CHARLEMAGNE_SABER_HOLY_KNIGHT_EMPEROR_EX_DECLARED_FRIEND</Value>
</Row>
<Row>
<ModifierId>AGENDA_CHARLEMAGNE_SABER_HOLY_KNIGHT_EMPEROR_EX_DENOUNCED_FRIEND</ModifierId>
<Name>InitialValue</Name>
<Value>-18</Value>
</Row>
<Row>
<ModifierId>AGENDA_CHARLEMAGNE_SABER_HOLY_KNIGHT_EMPEROR_EX_DENOUNCED_FRIEND</ModifierId>
<Name>ReductionTurns</Name>
<Value>10</Value>
</Row>
<Row>
<ModifierId>AGENDA_CHARLEMAGNE_SABER_HOLY_KNIGHT_EMPEROR_EX_DENOUNCED_FRIEND</ModifierId>
<Name>ReductionValue</Name>
<Value>-1</Value>
</Row>
<Row>
<ModifierId>AGENDA_CHARLEMAGNE_SABER_HOLY_KNIGHT_EMPEROR_EX_DENOUNCED_FRIEND</ModifierId>
<Name>MessageThrottle</Name>
<Value>20</Value>
</Row>
<Row>
<ModifierId>AGENDA_CHARLEMAGNE_SABER_HOLY_KNIGHT_EMPEROR_EX_DENOUNCED_FRIEND</ModifierId>
<Name>StatementKey</Name>
<Value>LOC_DIPLO_WARNING_LEADER_CHARLEMAGNE_SABER_REASON_ANY</Value>
</Row>
<Row>
<ModifierId>AGENDA_CHARLEMAGNE_SABER_HOLY_KNIGHT_EMPEROR_EX_DENOUNCED_FRIEND</ModifierId>
<Name>SimpleModifierDescription</Name>
<Value>LOC_DIPLO_MODIFIER_CHARLEMAGNE_SABER_HOLY_KNIGHT_EMPEROR_EX_DENOUNCED_FRIEND</Value>
</Row>
</ModifierArguments>
这一部分是MODIFIER_PLAYER_DIPLOMACY_SIMPLE_MODIFIER的参数。
我太难了,这一部分,我也没找到什么比较好的解释,先听我胡说吧。
InitialValue:初始值,意思应该是最初的预设值,友好是正数,不友好是负数。(也许是指第一次触发时直接减少/增加的数据)
ReductionTurns:大概是判断回合,每10回合检查一次条件?
ReductionValue:检查后条件满足时的变化?
SimpleModifierDescription:当你查看对方领袖的外交界面时,下面有一行小字会写着这句话,是因为什么和你变化了好感。
保证能使用,但是上面这几个除了文本之外我是真的迷,有知道的请告诉我,感激不尽。
<ModifierStrings>
<Row ModifierId="AGENDA_FSN_ARCHER_EMIYA_FRIEND" Context="Sample" Text="LOC_TOOLTIP_SAMPLE_DIPLOMACY_ALL"/>
<Row ModifierId="AGENDA_FSN_ARCHER_EMIYA_DENOUNCED_FRIEND" Context="Sample" Text="LOC_TOOLTIP_SAMPLE_DIPLOMACY_ALL"/>
</ModifierStrings>
这两个不解释,必须要添加,你的每一个MODIFIER_PLAYER_DIPLOMACY_SIMPLE_MODIFIER都需要一条ModifierStrings来显示消息,并且你需要注意Context的类型。
全部代码如下:
<TraitModifiers>
<Row TraitType="TRAIT_AGENDA_FSN_ARCHER_EMIYA" ModifierId="AGENDA_FSN_ARCHER_EMIYA_FRIEND"/>
<Row TraitType="TRAIT_AGENDA_FSN_ARCHER_EMIYA" ModifierId="AGENDA_FSN_ARCHER_EMIYA_DENOUNCED_FRIEND"/>
</TraitModifiers>
<Modifiers>
<Row>
<ModifierId>AGENDA_FSN_ARCHER_EMIYA_FRIEND</ModifierId>
<ModifierType>MODIFIER_PLAYER_DIPLOMACY_SIMPLE_MODIFIER</ModifierType>
<SubjectRequirementSetId>PLAYER_DECLARED_FRIEND</SubjectRequirementSetId>
</Row>
<Row>
<ModifierId>AGENDA_FSN_ARCHER_EMIYA_DENOUNCED_FRIEND</ModifierId>
<ModifierType>MODIFIER_PLAYER_DIPLOMACY_SIMPLE_MODIFIER</ModifierType>
<SubjectRequirementSetId>PLAYER_FRIEND_DENOUNCED</SubjectRequirementSetId>
</Row>
</Modifiers>
<ModifierArguments>
<Row>
<ModifierId>AGENDA_FSN_ARCHER_EMIYA_FRIEND</ModifierId>
<Name>InitialValue</Name>
<Value>10</Value>
</Row>
<Row>
<ModifierId>AGENDA_FSN_ARCHER_EMIYA_FRIEND</ModifierId>
<Name>ReductionTurns</Name>
<Value>10</Value>
</Row>
<Row>
<ModifierId>AGENDA_FSN_ARCHER_EMIYA_FRIEND</ModifierId>
<Name>ReductionValue</Name>
<Value>1</Value>
</Row>
<Row>
<ModifierId>AGENDA_FSN_ARCHER_EMIYA_FRIEND</ModifierId>
<Name>MessageThrottle</Name>
<Value>20</Value>
</Row>
<Row>
<ModifierId>AGENDA_FSN_ARCHER_EMIYA_FRIEND</ModifierId>
<Name>StatementKey</Name>
<Value>LOC_DIPLO_KUDO_LEADER_FSN_ARCHER_EMIYA_REASON_ANY</Value>
</Row>
<Row>
<ModifierId>AGENDA_FSN_ARCHER_EMIYA_FRIEND</ModifierId>
<Name>SimpleModifierDescription</Name>
<Value>LOC_DIPLO_KUDO_EXIT_LEADER_FSN_ARCHER_EMIYA_ANY</Value>
</Row>
<Row>
<ModifierId>AGENDA_FSN_ARCHER_EMIYA_DENOUNCED_FRIEND</ModifierId>
<Name>InitialValue</Name>
<Value>-10</Value>
</Row>
<Row>
<ModifierId>AGENDA_FSN_ARCHER_EMIYA_DENOUNCED_FRIEND</ModifierId>
<Name>ReductionTurns</Name>
<Value>10</Value>
</Row>
<Row>
<ModifierId>AGENDA_FSN_ARCHER_EMIYA_DENOUNCED_FRIEND</ModifierId>
<Name>ReductionValue</Name>
<Value>-1</Value>
</Row>
<Row>
<ModifierId>AGENDA_FSN_ARCHER_EMIYA_DENOUNCED_FRIEND</ModifierId>
<Name>MessageThrottle</Name>
<Value>20</Value>
</Row>
<Row>
<ModifierId>AGENDA_FSN_ARCHER_EMIYA_DENOUNCED_FRIEND</ModifierId>
<Name>StatementKey</Name>
<Value>LOC_DIPLO_WARNING_LEADER_FSN_ARCHER_EMIYA_REASON_ANY</Value>
</Row>
<Row>
<ModifierId>AGENDA_FSN_ARCHER_EMIYA_DENOUNCED_FRIEND</ModifierId>
<Name>SimpleModifierDescription</Name>
<Value>LOC_DIPLO_WARNING_EXIT_LEADER_FSN_ARCHER_EMIYA_ANY</Value>
</Row>
</ModifierArguments>
<ModifierStrings>
<Row ModifierId="AGENDA_FSN_ARCHER_EMIYA_FRIEND" Context="Sample" Text="LOC_TOOLTIP_SAMPLE_DIPLOMACY_ALL"/>
<Row ModifierId="AGENDA_FSN_ARCHER_EMIYA_DENOUNCED_FRIEND" Context="Sample" Text="LOC_TOOLTIP_SAMPLE_DIPLOMACY_ALL"/>
</ModifierStrings>
慢慢看吧,重点在于<SubjectRequirementSetId>和ReductionValue和InitialValue和ReductionTurns,还有两个文本。
举个例子:判断同性?REQUIREMENT_PLAYER_IS_SAME_SEX。
就是这样,这个功能如此实现的。
扫尾
我们刚刚做了新的特性,现在来给刚才没有添加的领袖特性说明添加新的说明。
现在!运行游戏!
完成!接下来我们来讲如何上传!