|
由于单数体质升级无法增加生命值,所以我今天写了一个脚本...
=====
procedure start;
#include "F:\fallout\xiugai\modderspack_4.1.8\ScriptEditor\scripts_src\HEADERS\define.h"
variable get_level_hp;
variable get_en;
procedure start begin
if (game_loaded) then begin
set_global_script_repeat(60);
end else begin
get_level_hp := (get_pc_stat(PCSTAT_level) - 1) * 1;
get_en := get_pc_base_stat(STAT_en);
if has_trait(TRAIT_PERK, dude_obj, TRAIT_gifted) then begin
if ((get_en == 1) or (get_en == 3) or (get_en == 5) or (get_en == 7) or (get_en == 9)) then begin
set_pc_extra_stat(STAT_max_hp, get_pc_extra_stat(STAT_max_hp) + get_level_hp);
end
end
if not(has_trait(TRAIT_PERK, dude_obj, TRAIT_gifted)) then begin
if ((get_en == 1) or (get_en == 3) or (get_en == 5) or (get_en == 7) or (get_en == 9)) then begin
set_pc_extra_stat(STAT_max_hp, get_pc_extra_stat(STAT_max_hp) + get_level_hp);
end
end
end
end
=====
由于我很早就注意到有天赋异禀的人物,在f2se中其基础体质值比游戏中显示的少1,而且奖励体质值为0,所以就觉得恐怕会有问题,于是将两种情况分开写,然而结果比我想的还诡异...
这个脚本对没有天赋异禀的人物是有效的(虽然hp不停疯涨)——单数体质长生命值,双数体质不长,得到体质perk也没问题,然而对于有天赋异禀的人物效果却非常诡异,我为了找到问题所在重建了两个体质分别为6和7的11级人物,又把条件分别换成了 if get_en == 5 then begin/ if get_en == 6 then begin/ if get_en == 7 then begin/ if get_en == 8 then begin 分别测试,结果竟然发现体质6的人物无论5678生命都会长,而体质7的人物无论5678都不长!
难道说有天赋异禀的人物,双数体质=任何值,而单数体质任何值都不等于???
再者为了应对疯长的hp,我把“set_pc_extra_stat(STAT_max_hp, get_pc_extra_stat(STAT_max_hp) + get_level_hp)”换成了“set_pc_extra_stat(STAT_max_hp, get_level_hp)”,结果11级人物的初始hp没问题了,但是在升级的时候居然只长了1点hp...游戏升级+hp的机制到底是啥样的呀?
最后,常规的gl脚本里面不能有小数是吗?我试了每级长0.5hp结果无效,有啥办法吗?
|
|