- 好友
- 0
- 在线时间
- 0 小时
- 最后登录
- 2022-5-30
平民
- UID
- 3260086
- 第纳尔
- 94
- 精华
- 0
- 互助
- 1
- 荣誉
- 0
- 贡献
- 0
- 魅力
- 0
- 注册时间
- 2021-8-8
鲜花( 1) 鸡蛋( 0)
|
本帖最后由 haixing 于 2021-8-8 20:02 编辑
Age of Sword & SorceryBeta 2.0: Guilds & Magic 法师流小bug修改
这几天刚刚入手这个国外的mod,体验了一把术士流,遇到了两个bug然后修改了,下面展示修改历程,末尾附上自己修改好的文件,可以直接拿去覆盖
无法增加magic_power的问题
问题描述
在玩法师流的时候,发现开始只有950的magic power, 可以在战场上使用,学技能,但是没有任何可以增加的途径。
猜想应该是在扎营的时候可以用次元石来增加magic power, 次元石可以在术士工会花450买,但是点击充能后只消耗次元石但是没有增加magic power。
问题发现
利用MBCodeEditor反汇编后得到module_game_menus.py,查找magic_charge,逻辑如下:
```python
[
("magic_charge", [],
"Charge magic power [1 Erenite stone]",
[
(try_begin),
(player_has_item, "itm_erenite_stone"),
(troop_remove_item, "trp_player", "itm_erenite_stone", 1),
(store_proficiency_level, "$magic_skill", "trp_player", wpt_crossbow),
(assign, "$magic_power_multiplier", 0),
(val_mul, "$magic_power_multiplier", "$magic_skill"),
(assign, "$magic_power_add", 50),
(val_mul, "$magic_power_add", "$magic_power_multiplier"),
(troop_add_gold, "trp_magic_power", "$magic_power_add"),
(else_try),
(display_log_message, "@you do not have an Erenite Stone in which to charge your powers with.", 0xFF0000),
(try_end),
]
```
显然,作者的意图最终增加的magic power为(弩熟练度*magic_power_multiplier*magic_power_add),但是可能是疏忽把magic_power_multiplier设置成了0.
可以更改逻辑如下:
```python
[
("magic_charge", [],
"Charge magic power [1 Erenite stone]",
[
(try_begin),
(player_has_item, "itm_erenite_stone"),
(troop_remove_item, "trp_player", "itm_erenite_stone", 1),
(store_proficiency_level, "$magic_skill", "trp_player", wpt_crossbow),
(assign, "$magic_power_multiplier", 1),
(val_mul, "$magic_power_multiplier", "$magic_skill"),
(assign, "$magic_power_add", 2),
(val_mul, "$magic_power_add", "$magic_power_multiplier"),
(troop_add_gold, "trp_magic_power", "$magic_power_add"),
(else_try),
(display_log_message, "@You do not have an Erenite Stone in which to charge your powers with.", 0xFF0000),
(try_end),
]
```
这样,每一次充能就是两倍的弩熟练度,不改变游戏的平衡性
解决方案
在menus.txt,查找"1_Erenite_stone"(原始文件708行),原始代码替换成下面代码(建议提前备份):
```txt
mno_magic_charge 0 Charge_magic_power_[1_Erenite_stone] 12 4 0 150 1 288230376151711878 1531 3 360287970189639680 288230376151711878 1 2176 3 144115188075857175 360287970189639680 4 2133 2 144115188075857321 1 2107 2 144115188075857321 144115188075857175 2133 2 144115188075857322 2 2107 2 144115188075857322 144115188075857321 1528 2 360287970189641696 144115188075857322 5 0 1105 2 1585267068834415666 16711680 3 0 . mno_necrom 0 Necromancy 1 2060 1 864691128455135585 . mno_planar 0 Planarmancy 1 1105 2 1585267068834415667 16711680 . mno_thauma 0 Thaumaturgy 1 2060 1 864691128455135586 . mno_arcmet 0 Arcanemetallurgy 1 1105 2 1585267068834415667 16711680 . mno_enchan 0 Enchanting 1 1105 2 1585267068834415667 16711680 . mno_druidy 0 Druidry 1 1105 2 1585267068834415667 16711680 . mno_back 0 Return. 1 2060 1 864691128455135257 .
```
其中,"[1_Erenite_stone] 12 4 0"中的"4 0"代表逻辑里面的(try_begin), 后面有一个"5 0 1105 2","5 0"代表(else_try),
修改的是两个"assign"位置,其格为" * 2107 2",其中"*"代表你要赋的值,这里我设置成1,2,意味着你能加入工会以后,每一次充能能获得至少500的magic power
以上,成果解决无法增加magic_power的问题
法师入会无限缴费问题
在弩的熟练度达到250后,可以交3250入会,但是目前可以无限交钱但是效果不变(当前只能购买更高级的法杖和消耗品)
还是反汇编,加上"判断是否入会"的逻辑后,成功修复bug
在conversation.txt中,搜索"Yes,_I_wish_to_join_the_Society",改成下面的:
```txt
dlga_society_lodge_master_talk:society_lodge_master_join 69631 180 1 31 2 144115188075857176 0 Yes,_I_wish_to_join_the_Society. 181 0 NO_VOICEOVER
```
也就是添加了"31 2 144115188075857176 0",并把前面的"180 0"的"0"改成"1", 添加的语句翻译为:
```python
(eq, "$var_1304", 0),
```
即如果没有加入工会(判断寄存器var_1304中的值是否等于0,该寄存器的值代表是否入会,如果是则后续有代码置为1),显示"Yes,_I_wish_to_join_the_Society"
我把我修改好的conversation.txt和menus.txt提供给大家
|
鲜花鸡蛋256659573 在2021-8-8 21:01 送朵鲜花 并说:我非常同意你的观点,送朵鲜花鼓励一下
|