- 好友
- 5
- 在线时间
- 0 小时
- 最后登录
- 2025-9-2
见习骑士

- UID
- 3225805
- 第纳尔
- 1399
- 精华
- 0
- 互助
- 37
- 荣誉
- 0
- 贡献
- 0
- 魅力
- 259
- 注册时间
- 2021-3-14
 鲜花( 53)  鸡蛋( 0)
|
本帖最后由 快乐风猫 于 2025-6-20 00:44 编辑
加入水源和马匹饲料消耗,不再单调的只消耗食物,提升点游戏难度和乐趣,消耗速度因环境而异
一个新scripts脚本
- ("extra_consumption",
- [
- (party_get_current_terrain, ":current_terrain", "p_main_party"),
-
- (try_begin),
- (party_get_num_companion_stacks, ":num_stacks","p_main_party"),
- (assign, ":num_men", 0),
- (try_for_range, ":i_stack", 0, ":num_stacks"),
- (party_stack_get_size, ":stack_size","p_main_party",":i_stack"),
- (val_add, ":num_men", ":stack_size"),
- (try_end),
- (val_div, ":num_men", 2), #每2人消耗一单位
- (try_begin),
- (eq, ":num_men", 0),
- (val_add, ":num_men", 1), #玩家也需要消耗水源,防止为0
- (try_end),
-
- (try_begin),
- (gt, ":num_men", 0),
- (assign, ":consumption_amount", ":num_men"),
- (try_begin),
- (eq, ":current_terrain", 5), #队伍处于沙漠
- (val_mul, ":consumption_amount", 2), #双倍消耗
- (display_message, "@因 为 沙 漠 的 恶 劣 环 境 ,你 的 队 伍 会 消 耗 更 多 水 源 。", 0xFF0000), #测试输出
- (else_try),
- (eq, ":current_terrain", 4), #队伍处于雪地
- (val_div, ":consumption_amount", 2), #只消耗平常的一半
- (display_message, "@雪 地 行 军 减 少 水 源 消 耗 。", 0xFF0000), #测试输出
- (try_end),
- (val_max, ":consumption_amount", 1), #至少执行一次
- (assign, ":no_water_displayed", 0),
- (try_for_range, ":unused", 0, ":consumption_amount"), #执行次数
- (assign, ":available_water", 0),
- (try_for_range, ":cur_food", food_begin, food_end),
- (is_between, ":cur_food", water_begin, water_end), #水源范围 自定义
- (item_set_slot, ":cur_food", slot_item_is_checked, 0),
- (call_script, "script_cf_player_has_item_without_modifier", ":cur_food", imod_rotten),
- (val_add, ":available_water", 1),
- (try_end),
-
- (try_begin),
- (gt, ":available_water", 0),
- (store_random_in_range, ":selected_water", 0, ":available_water"),
- (call_script, "script_consume_food", ":selected_water"),
- (else_try),
- (eq, ":no_water_displayed", 0),
- (display_message, "@队 伍 缺 水 了 !", 0xFF0000),
- (call_script, "script_change_player_party_morale", -3),
- (assign, ":no_water_displayed", 1),
- (try_end),
- (try_end),
- (try_end),
-
- (party_get_num_companion_stacks, ":num_stacks", "p_main_party"),
- (assign, ":total_cavalry", 0),
- (try_for_range, ":i_stack", 0, ":num_stacks"),
- (party_stack_get_troop_id, ":stack_troop", "p_main_party", ":i_stack"),
- (troop_get_inventory_slot, ":cur_horse", ":stack_troop", 8),
- (gt, ":cur_horse", 0), #有马
- #(troop_is_mounted, ":stack_troop"), #是骑兵
- (party_stack_get_size, ":stack_size", "p_main_party", ":i_stack"),
- (val_add, ":total_cavalry", ":stack_size"),
- (try_end),
- (val_div, ":total_cavalry", 2), #每2匹马消耗一单位
- (try_begin),
- (troop_get_inventory_slot, ":cur_horse", "trp_player", 8),
- (gt, ":cur_horse", 0),
- (val_add, ":total_cavalry", 1), #如果玩家有马,也需要消耗饲料
- (try_end),
-
- (try_begin),
- (gt, ":total_cavalry", 0),
- (assign, ":consumption_amount", ":total_cavalry"),
- (try_begin),
- (eq, ":current_terrain", 2), #队伍处于草原
- (val_div, ":consumption_amount", 2), #只消耗平常的一半
- (display_message, "@你 的 队 伍 正 在 草 原 行 军 ,你 节 省 了 一 部 分 马 饲 料 。", 0xFF0000), #测试输出
- (else_try),
- (eq, ":current_terrain", 5), #队伍处于沙漠
- (val_mul, ":consumption_amount", 2), #只消耗平常的一半
- (display_message, "@因 为 沙 漠 的 恶 劣 环 境 ,马 匹 会 消 耗 更 多 饲 料 。", 0xFF0000), #测试输出
- (try_end),
- (val_max, ":consumption_amount", 1), #至少执行一次
- (assign, ":no_cavalry_displayed", 0),
- (try_for_range, ":unused", 0, ":consumption_amount"), #执行次数
- (assign, ":available_grain", 0),
- (try_for_range, ":cur_food", food_begin, food_end), #循环食物
- (eq, ":cur_food", "itm_grain"), #是小麦或者其他什么马饲料 自定义
- (item_set_slot, ":cur_food", slot_item_is_checked, 0),
- (call_script, "script_cf_player_has_item_without_modifier", ":cur_food", imod_rotten),
- (val_add, ":available_grain", 1),
- (try_end),
-
- (try_begin),
- (gt, ":available_grain", 0),
- (store_random_in_range, ":selected_grain", 0, ":available_grain"),
- (call_script, "script_consume_food", ":selected_grain"),
- (else_try),
- (eq, ":no_cavalry_displayed", 0),
- (display_message, "@队 伍 里 的 马 匹 没 有 饲 料 吃 了 !", 0xFF0000),
- (call_script, "script_change_player_party_morale", -3),
- (assign, ":no_cavalry_displayed", 1),
- (try_end),
- (try_end),
- (try_end),
-
- ]),
复制代码
module_simple_triggers里的原食物触发器,直接覆盖整个
- # Consuming food at every 14 hours
- (14,
- [
- (eq, "$g_player_is_captive", 0),
- (party_get_num_companion_stacks, ":num_stacks","p_main_party"),
- (assign, ":num_men", 0),
- (try_for_range, ":i_stack", 0, ":num_stacks"),
- (party_stack_get_size, ":stack_size","p_main_party",":i_stack"),
- (val_add, ":num_men", ":stack_size"),
- (try_end),
- (val_div, ":num_men", 3),
- (try_begin),
- (eq, ":num_men", 0),
- (val_add, ":num_men", 1),
- (try_end),
-
- (try_begin),
- (assign, ":number_of_foods_player_has", 0),
- (try_for_range, ":cur_edible", food_begin, food_end),
- (call_script, "script_cf_player_has_item_without_modifier", ":cur_edible", imod_rotten),
- (val_add, ":number_of_foods_player_has", 1),
- (try_end),
- (try_begin),
- (ge, ":number_of_foods_player_has", 6),
- (unlock_achievement, ACHIEVEMENT_ABUNDANT_FEAST),
- (try_end),
- (try_end),
-
- (party_get_current_terrain, ":current_terrain", "p_main_party"),
-
- (assign, ":consumption_amount", ":num_men"),
- (try_begin),
- (eq, ":current_terrain", 4), #队伍处于雪地
- (val_mul, ":consumption_amount", 2), #双倍消耗
- (display_message, "@雪 地 行 军 会 加 快 食 物 消 耗 。", 0xFF0000), #测试输出
- (try_end),
- (val_max, ":consumption_amount", 1), #至少执行一次
- (assign, ":no_food_displayed", 0),
- (try_for_range, ":unused", 0, ":consumption_amount"),
- (assign, ":available_food", 0),
- (try_for_range, ":cur_food", food_begin, food_end),
- (neg|is_between, ":cur_food", water_begin, water_end), #排除水源
- (item_set_slot, ":cur_food", slot_item_is_checked, 0),
- (call_script, "script_cf_player_has_item_without_modifier", ":cur_food", imod_rotten),
- (val_add, ":available_food", 1),
- (try_end),
- (try_begin),
- (gt, ":available_food", 0),
- (store_random_in_range, ":selected_food", 0, ":available_food"),
- (call_script, "script_consume_food", ":selected_food"),
- (else_try),
- (eq, ":no_food_displayed", 0),
- (display_message, "[url=home.php?mod=space&uid=1243464]@party[/url] has nothing to eat!", 0xFF0000),
- (call_script, "script_change_player_party_morale", -3),
- (assign, ":no_food_displayed", 1),
- #NPC companion changes begin
- (try_begin),
- (call_script, "script_party_count_fit_regulars", "p_main_party"),
- (gt, reg0, 0),
- (call_script, "script_objectionable_action", tmt_egalitarian, "str_men_hungry"),
- (try_end),
- #NPC companion changes end
- (try_end),
- (try_end),
-
- (call_script, "script_extra_consumption"), #水源和马匹饲料消耗
- ]),
复制代码
water_begin和water_end自己在module_constants里定义范围
然后修改一下food_begin的起始,原起始是itm_smoked_fish 熏鱼,改为葡萄酒
不局限于上述,任何范围和消耗需求都可以自定义
|
|