0x00 前言
继上篇《添加自定义宠物》添加了「皮卡丘」之后,现在模拟口袋妖怪的设定、为其配置进化路线。
先来看一下最终效果:
0x10 服务端设定
首先需要参考《添加自定义魔物》的做法,自行添加两只进化前后的魔物「皮丘」和「雷丘」。
然后参考《添加自定义宠物》再添加进化前后对应的宠物、及相关宠物道具:
PICHU |
PICHU_BALL |
---|---|
RAICHU |
RAICHU_BALL |
---|---|
0x11 添加进化道具
在道具库 item_db.yml
添加两个进化时需要用到的道具:
- Id: 1550000
AegisName: POKEMON_LIGHT_BALL
Name: 电气珠
Type: Etc
Buy: 100
Weight: 10
Flags:
BuyingStore: true
- Id: 1550001
AegisName: POKEMON_THUNDER_STONE
Name: 雷之石
Type: Etc
Buy: 100
Weight: 10
Flags:
BuyingStore: true
0x12 设定进化路线
现在为它们设定一个进化路线:
进化前 | 进化道具 | 进化后 |
---|---|---|
皮丘 | 电气珠 x1 | 皮卡丘 |
皮卡丘 | 电气珠 x1 雷之石 x1 |
雷丘 |
对应这个进化路线,修改宠物库 pet_db.yml
:
###########################################################################
# 皮丘
###########################################################################
- Mob: PICHU
TameItem: POKEMON_BALL
EggItem: PICHU_BALL
FoodItem: POKEMON_FOOD
... ...
Evolution:
- Target: PIKACHU
ItemRequirements:
- Item: POKEMON_LIGHT_BALL
Amount: 1
###########################################################################
# 皮卡丘
###########################################################################
- Mob: PIKACHU
TameItem: POKEMON_BALL
EggItem: PIKACHU_BALL
EquipItem: PIKACHU_EQUIP
FoodItem: POKEMON_FOOD
... ...
Evolution:
- Target: RAICHU
ItemRequirements:
- Item: POKEMON_LIGHT_BALL
Amount: 1
- Item: POKEMON_THUNDER_STONE
Amount: 1
###########################################################################
# 雷丘
###########################################################################
- Mob: RAICHU
TameItem: POKEMON_BALL
EggItem: RAICHU_BALL
FoodItem: POKEMON_FOOD
... ...
关键在于添加了 Evolution
属性:
Target
: 进化目标ItemRequirements
: 进化要求的道具,可以有多项Item
: 道具的AegisName
Amount
: 要求的数量
0x13 启动宠物进化开关
在 conf/battle/feature.conf
中启动宠物进化: feature.petautofeed: on
至此服务端部分全部配置完成。
0x20 客户端设定
一样也是需要参考《添加自定义魔物》和《添加自定义宠物》的做法,先自行添加「皮丘」和「雷丘」。
0x21 添加进化道具
对应服务端,在客户端道具池 itemInfo.lub
添加两个进化道具:
[1550000] = {
unidentifiedDisplayName = "电气珠",
unidentifiedResourceName = "POKEMON_LIGHT_BALL",
unidentifiedDescriptionName = {
"让 [皮丘] 携带后可以进化的神奇之球。",
"种类: ^777777口袋妖怪进化道具^000000",
"重量: ^7777771^000000"
},
identifiedDisplayName = "电气珠",
identifiedResourceName = "POKEMON_LIGHT_BALL",
identifiedDescriptionName = {
"让 [皮丘] 携带后可以进化的神奇之球。",
"种类: ^777777口袋妖怪进化道具^000000",
"重量: ^7777771^000000"
},
slotCount = 0,
ClassNum = 0
},
[1550001] = {
unidentifiedDisplayName = "雷之石",
unidentifiedResourceName = "POKEMON_THUNDER_STONE",
unidentifiedDescriptionName = {
"能让某些特定口袋妖怪进化的神奇石头。有着闪电般的花纹。",
"种类: ^777777口袋妖怪进化道具^000000",
"重量: ^7777771^000000"
},
identifiedDisplayName = "雷之石",
identifiedResourceName = "POKEMON_THUNDER_STONE",
identifiedDescriptionName = {
"能让某些特定口袋妖怪进化的神奇石头。有着闪电般的花纹。",
"种类: ^777777口袋妖怪进化道具^000000",
"重量: ^7777771^000000"
},
slotCount = 0,
ClassNum = 0
}
电气珠 | 雷之石 |
---|---|
0x22 设定进化路线
在此之前,需要通过 Nemo 确定当前的客户端正在使用哪个文件配置宠物进化。
找到 Change PetEvolutionCln*.lub path
选项:
我这里使用的是 System/PetEvolutionCln.lub
。
反编译后,在其中添加:
-- 皮丘 进化 皮卡丘
InsertEvolutionRecipeLGU(9171, 9172, 1550000, 1)
-- 皮卡丘 进化 雷丘
InsertEvolutionRecipeLGU(9172, 9173, 1550000, 1)
InsertEvolutionRecipeLGU(9172, 9173, 1550001, 1)
-- 自动喂食
InsertPetAutoFeeding(9171)
InsertPetAutoFeeding(9172)
InsertPetAutoFeeding(9173)
其中 InsertEvolutionRecipeLGU
的格式为:
InsertEvolutionRecipeLGU({进化前宠物ID}, {进化后宠物ID}, {进化需要的道具ID}, {道具数量})
如果进化需要多种道具,则每种道具配置一行即可,这里的配置需要与服务端的 pet_db.yml
配置一致。
只有当这里配置正确时,宠物面板才会出现「进化」选项:
InsertPetAutoFeeding
是自动喂食的配置,服务端需要对应打开feature.petautofeed
开关,但都与进化无关,看个人需求配置即可。
0x30 测试
至此客户端和服务端都配置完成了,进入游戏测试进化即可:
备用视频源:youtube
需要注意的是,宠物进化需要两个条件:
- 亲密度为「非常亲密」: 测试时可使用 GM 命令
@petfriendly 1000
- 进化道具在背包中: 测试时可使用 GM 命令
@item {进化道具ID}