|
|
@@ -32,11 +32,13 @@ event.Define {char/hpneili} {无参} {$MODULE} {已经获取到 hp -neili 命
|
|
|
#var char[HP][上次内力] {0};
|
|
|
#var char[HP][当前内力] {0};
|
|
|
#var char[HP][最大内力] {1};
|
|
|
+ #var char[HP][内力上限] {1};
|
|
|
#var char[HP][加力] {0};
|
|
|
#var char[HP][内力百分比] {0};
|
|
|
#var char[HP][上次精力] {0};
|
|
|
#var char[HP][当前精力] {0};
|
|
|
#var char[HP][最大精力] {1};
|
|
|
+ #var char[HP][精力上限] {1};
|
|
|
#var char[HP][精力百分比] {0};
|
|
|
#var char[HP][上次气血] {0};
|
|
|
#var char[HP][当前气血] {0};
|
|
|
@@ -55,11 +57,11 @@ event.Define {char/hpneili} {无参} {$MODULE} {已经获取到 hp -neili 命
|
|
|
#var char[HP][最大真气] {1};
|
|
|
#var char[HP][真气减伤] {0};
|
|
|
#var char[HP][真元] {0};
|
|
|
- #var char[HP][食物] {0};
|
|
|
- #var char[HP][最大食物] {1};
|
|
|
+ #var char[HP][当前食物] {0};
|
|
|
+ #var char[HP][最大食物] {200};
|
|
|
#var char[HP][饥饿] {};
|
|
|
- #var char[HP][饮水] {0};
|
|
|
- #var char[HP][最大饮水] {1};
|
|
|
+ #var char[HP][当前饮水] {0};
|
|
|
+ #var char[HP][最大饮水] {200};
|
|
|
#var char[HP][口渴] {};
|
|
|
#var char[HP][气势] {0};
|
|
|
#var char[HP][状态] {};
|
|
|
@@ -111,18 +113,18 @@ hp 有两种格式,非战斗状态:
|
|
|
speedo.Set {当前真气} {$char[HP][当前真气]} {true} {10};
|
|
|
};
|
|
|
#action {^│【食物】%s%d%s/%s%d%s[%S]%!s│【潜能】%s%S%!s│$} {
|
|
|
- #var char[HP][食物] {%%2};
|
|
|
+ #var char[HP][当前食物] {%%2};
|
|
|
#var char[HP][最大食物] {%%5};
|
|
|
#var char[HP][饥饿] {%%7};
|
|
|
#var char[HP][潜能显示] {%%9};
|
|
|
- speedo.Set {食物} {$char[HP][食物]} {true} {10};
|
|
|
+ speedo.Set {当前食物} {$char[HP][当前食物]} {true} {10};
|
|
|
};
|
|
|
#action {^│【饮水】%s%d%s/%s%d%s[%S]%!s│【经验】%s%S%!s│$} {
|
|
|
- #var char[HP][饮水] {%%2};
|
|
|
+ #var char[HP][当前饮水] {%%2};
|
|
|
#var char[HP][最大饮水] {%%5};
|
|
|
#var char[HP][口渴] {%%7};
|
|
|
#var char[HP][经验显示] {%%9};
|
|
|
- speedo.Set {饮水} {$char[HP][饮水]} {true} {10};
|
|
|
+ speedo.Set {当前饮水} {$char[HP][当前饮水]} {true} {10};
|
|
|
};
|
|
|
#action {^│【气势】%s%d%s\%%s 【平衡】%s%d%s\%%!s│$} {
|
|
|
#var char[HP][气势] {%%2};
|
|
|
@@ -154,6 +156,9 @@ hp 有两种格式,非战斗状态:
|
|
|
#math char[HP][精力百分比] { $char[HP][当前精力] * 50 / $char[HP][最大精力] };
|
|
|
#math char[HP][气血健康度] { $char[HP][有效气血] * 100 / $char[HP][最大气血] };
|
|
|
#math char[HP][精神健康度] { $char[HP][有效精神] * 100 / $char[HP][最大精神] };
|
|
|
+ #math char[HP][真气百分比] { $char[HP][当前真气] * 100 / $char[HP][最大真气] };
|
|
|
+ #math char[HP][食物百分比] { $char[HP][当前食物] * 100 / $char[HP][最大食物] };
|
|
|
+ #math char[HP][饮水百分比] { $char[HP][当前饮水] * 100 / $char[HP][最大饮水] };
|
|
|
event.Emit char/hp;
|
|
|
char.hp.parse.done;
|
|
|
};
|
|
|
@@ -203,8 +208,6 @@ hp -neili 格式:
|
|
|
#alias {char.hp.parse.hp-neili} {
|
|
|
#class char-hp-parse-hp-neili open;
|
|
|
|
|
|
- #var char[HP][内力上限] {1};
|
|
|
-
|
|
|
#action {^│%S(%S) %s %S %s - %s %d/%s%d(%d{|\)}%s│{|ID=char/hp-neili}$} {
|
|
|
#local name {@str.Trim{%%1}};
|
|
|
#local id {@str.Trim{%%2}};
|
|
|
@@ -317,12 +320,14 @@ hp -neili 格式:
|
|
|
#action {^#%1,%2,%3,%4,{0|1},{0|1}$} {
|
|
|
#var char[HP][当前真气] {@char.hp.expandBigNumber{%1}};
|
|
|
#var char[HP][当前真元] {@char.hp.expandBigNumber{%2}};
|
|
|
- #var char[HP][食物] {@char.hp.expandBigNumber{%3}};
|
|
|
- #var char[HP][饮水] {@char.hp.expandBigNumber{%4}};
|
|
|
+ #var char[HP][当前食物] {@char.hp.expandBigNumber{%3}};
|
|
|
+ #var char[HP][当前饮水] {@char.hp.expandBigNumber{%4}};
|
|
|
|
|
|
speedo.Set {当前真气} {$char[HP][当前真气]} {true} {10};
|
|
|
- speedo.Set {食物} {$char[HP][食物]} {true} {10};
|
|
|
- speedo.Set {饮水} {$char[HP][饮水]} {true} {10};
|
|
|
+ speedo.Set {当前食物} {$char[HP][当前食物]} {true} {10};
|
|
|
+ speedo.Set {当前饮水} {$char[HP][当前饮水]} {true} {10};
|
|
|
+
|
|
|
+ #math char[HP][真气百分比] { $char[HP][当前真气] * 100 / $char[HP][最大真气] };
|
|
|
|
|
|
#if { "%5" == "1" } {
|
|
|
char.set-flag 战斗中 true false;
|
|
|
@@ -437,6 +442,9 @@ hp -neili 格式:
|
|
|
#if { $char[HP][气血百分比] < 30 || $char[HP][精神百分比] < 70 } {
|
|
|
#local safety {危险};
|
|
|
};
|
|
|
+ #elseif { $char[HP][气血百分比] > 95 && $char[HP][精神百分比] > 98 } {
|
|
|
+ #local safety {康泰};
|
|
|
+ };
|
|
|
#elseif { $char[HP][气血百分比] > 80 && $char[HP][精神百分比] > 95 } {
|
|
|
#local safety {安全};
|
|
|
};
|
|
|
@@ -450,6 +458,11 @@ hp -neili 格式:
|
|
|
{背景} { {平常}{<099>} {战斗}{<B00A>} {战安}{<B040>} {战危}{<B600>} {战忙}{<B808>} {危急}{<BA00>} {正忙}{<B330>} }
|
|
|
}}};
|
|
|
|
|
|
+ #local char.hp.fight.target {};
|
|
|
+ #if { @existsFunction{fight.target.Brief} } {
|
|
|
+ #local char.hp.fight.target {@fight.target.Brief{}};
|
|
|
+ };
|
|
|
+
|
|
|
#switch {"$char[HP][战斗中]/$char[HP][忙]/$safety"} {
|
|
|
#case {"false/false/%*"} {
|
|
|
#local head {$theme[背景][平常]$theme[前景][平常]};
|
|
|
@@ -461,27 +474,35 @@ hp -neili 格式:
|
|
|
};
|
|
|
#case {"true/false/"} {
|
|
|
#local head {$theme[背景][战斗]$theme[前景][战斗]};
|
|
|
- #local tail { $theme[前景][战斗]战($char[HP][气势])};
|
|
|
+ #local tail { $theme[前景][战斗]战($char[HP][气势]) $char.hp.fight.target};
|
|
|
};
|
|
|
#case {"true/true/"} {
|
|
|
#local head {$theme[背景][战忙]$theme[前景][战忙]};
|
|
|
- #local tail { $theme[前景][战斗]战($char[HP][气势]) $theme[前景][战忙]忙<298>};
|
|
|
+ #local tail { $theme[前景][战斗]战($char[HP][气势]) $theme[前景][战忙]忙 $char.hp.fight.target<298>};
|
|
|
+ };
|
|
|
+ #case {"true/false/康泰"} {
|
|
|
+ #local head {$theme[背景][战安]$theme[前景][战安]};
|
|
|
+ #local tail { $theme[前景][战安]战($char[HP][气势]) $theme[前景][战安]泰 $char.hp.fight.target<298>};
|
|
|
+ };
|
|
|
+ #case {"true/true/康泰"} {
|
|
|
+ #local head {$theme[背景][战忙]$theme[前景][战忙]};
|
|
|
+ #local tail { $theme[前景][战安]战($char[HP][气势]) $theme[前景][战安]泰 $theme[前景][战忙]忙 $char.hp.fight.target<298>};
|
|
|
};
|
|
|
#case {"true/false/安全"} {
|
|
|
#local head {$theme[背景][战安]$theme[前景][战安]};
|
|
|
- #local tail { $theme[前景][战斗]战($char[HP][气势]) $theme[前景][战安]安<298>};
|
|
|
+ #local tail { $theme[前景][战斗]战($char[HP][气势]) $theme[前景][战安]安 $char.hp.fight.target<298>};
|
|
|
};
|
|
|
#case {"true/true/安全"} {
|
|
|
#local head {$theme[背景][战忙]$theme[前景][战忙]};
|
|
|
- #local tail { $theme[前景][战斗]战($char[HP][气势]) $theme[前景][战安]安 $theme[前景][战忙]忙<298>};
|
|
|
+ #local tail { $theme[前景][战斗]战($char[HP][气势]) $theme[前景][战安]安 $theme[前景][战忙]忙 $char.hp.fight.target<298>};
|
|
|
};
|
|
|
#case {"true/false/危险"} {
|
|
|
#local head {$theme[背景][战危]$theme[前景][战危]};
|
|
|
- #local tail { $theme[前景][战斗]战($char[HP][气势]) $theme[前景][战危]危<298>};
|
|
|
+ #local tail { $theme[前景][战斗]战($char[HP][气势]) $theme[前景][战危]危 $char.hp.fight.target<298>};
|
|
|
};
|
|
|
#case {"true/true/危险"} {
|
|
|
#local head {$theme[背景][危急]$theme[前景][危急]};
|
|
|
- #local tail { $theme[前景][战斗]战($char[HP][气势]) $theme[前景][战危]危 $theme[前景][战忙]忙<298>};
|
|
|
+ #local tail { $theme[前景][战斗]战($char[HP][气势]) $theme[前景][战危]危 $theme[前景][战忙]忙 $char.hp.fight.target<298>};
|
|
|
};
|
|
|
};
|
|
|
|
|
|
@@ -497,7 +518,7 @@ hp -neili 格式:
|
|
|
};
|
|
|
|
|
|
#local label {气血};
|
|
|
- #if { $char[HP][食物] <= 0 || $char[HP][饮水] <= 0 } {
|
|
|
+ #if { @char.MustEat{} || @char.MustDrink{} } {
|
|
|
#local label {<118>气血};
|
|
|
};
|
|
|
|
|
|
@@ -536,7 +557,7 @@ hp -neili 格式:
|
|
|
#local 每秒精神变化 {};
|
|
|
};
|
|
|
#local label {精神};
|
|
|
- #if { $char[HP][食物] <= 0 || $char[HP][饮水] <= 0 } {
|
|
|
+ #if { @char.MustEat{} || @char.MustDrink{} } {
|
|
|
#local label {<118>精神};
|
|
|
};
|
|
|
#format 精神 { $labelColor$label<298>: %s%s/%s}
|
|
|
@@ -551,7 +572,7 @@ hp -neili 格式:
|
|
|
#nop 气血治疗的数值展示为每分钟可以治疗的最大血量的倍数(以百分比形式);
|
|
|
#local {气血治疗} {@math.Int{@math.Eval{$char[STATUS][气血治疗] * 100 * 60 / $char[HP][最大气血]}}};
|
|
|
#local label {回气};
|
|
|
- #if { !@char.IsBusy{} && $char[HP][食物] > 0 && $char[HP][饮水] > 0 && ($char[HP][气血百分比] < 100 || $char[HP][气血健康度] < 100) } {
|
|
|
+ #if { !@char.IsBusy{} && !@char.MustEat{} && !@char.MustDrink{} && ($char[HP][气血百分比] < 100 || $char[HP][气血健康度] < 100) } {
|
|
|
#local label {<128><588>回气\e[25m};
|
|
|
};
|
|
|
#format {回气} { $labelColor$label: %s/%s} {@char.hp.colorit{${气血恢复}}} {@char.hp.colorit{${气血治疗}}};
|
|
|
@@ -564,7 +585,7 @@ hp -neili 格式:
|
|
|
#nop 精神治疗的数值展示为每分钟可以治疗的最大精神的倍数(以百分比形式);
|
|
|
#local {精神治疗} {@math.Int{@math.Eval{$char[STATUS][精神治疗] * 100 * 60 / $char[HP][最大精神]}}};
|
|
|
#local label {回精};
|
|
|
- #if { !@char.IsBusy{} && $char[HP][食物] > 0 && $char[HP][饮水] > 0 && ($char[HP][精神百分比] < 100 || $char[HP][精神健康度] < 100) } {
|
|
|
+ #if { !@char.IsBusy{} && !@char.MustEat{} && !@char.MustDrink{} && ($char[HP][精神百分比] < 100 || $char[HP][精神健康度] < 100) } {
|
|
|
#local label {<128><588>回精\e[25m};
|
|
|
};
|
|
|
#format {回精} { $labelColor$label: %s/%s} {@char.hp.colorit{${精神恢复}}} {@char.hp.colorit{${精神治疗}}};
|
|
|
@@ -588,16 +609,16 @@ hp -neili 格式:
|
|
|
#local 食水 {};
|
|
|
#if { $width >= 110 } {
|
|
|
#local label {食水};
|
|
|
- #if { $char[HP][食物] <= 0 || $char[HP][饮水] <= 0 } {
|
|
|
+ #if { @char.MustEat{} || @char.MustDrink{} } {
|
|
|
#local label {<118><588>食水\e[25m<288>};
|
|
|
};
|
|
|
#if { @char.InCombat{} } {
|
|
|
- #format {食水} { $label: %s/%s} {$char[HP][食物]} {$char[HP][饮水]};
|
|
|
+ #format {食水} { $label: %s/%s} {$char[HP][当前食物]} {$char[HP][当前饮水]};
|
|
|
};
|
|
|
#else {
|
|
|
#format {食水} { $label: %s/%s(%s/%s)}
|
|
|
- {$char[HP][食物]} {$char[HP][饮水]}
|
|
|
- {@speedo.GetSpeed{食物;60}} {@speedo.GetSpeed{饮水;60}};
|
|
|
+ {$char[HP][当前食物]} {$char[HP][当前饮水]}
|
|
|
+ {@speedo.GetSpeed{当前食物;60}} {@speedo.GetSpeed{当前饮水;60}};
|
|
|
};
|
|
|
};
|
|
|
|
|
|
@@ -763,6 +784,114 @@ event.Handle {option/changed} {opt/HPSummarize.Pause/pkuxkx} {$MODULE} {char.HPS
|
|
|
};
|
|
|
};
|
|
|
|
|
|
+///=== {
|
|
|
+// #@ char.hp.GetPercent <属性名称>
|
|
|
+// 返回指定属性的当前百分比。
|
|
|
+// 参数说明:
|
|
|
+// - 属性名称: 支持 食物、饮水、气血、精神、内力、精力、真气。
|
|
|
+// 百分比由 PaoTin++ 根据 GMCP.Status 推送的当前值与最大值计算,是 PaoTin++ 的便利层。
|
|
|
+// 参数非法或数据未就绪时返回 -1。
|
|
|
+// };
|
|
|
+#func {char.hp.GetPercent} {
|
|
|
+ #local name {%1};
|
|
|
+
|
|
|
+ #if { "$name" != "{食物|饮水|气血|精神|内力|精力|真气}" } {
|
|
|
+ xtt.Usage char.hp.GetPercent;
|
|
|
+ #return -1;
|
|
|
+ };
|
|
|
+
|
|
|
+ #local percent {$char[HP][$name百分比]};
|
|
|
+ #if { "$percent" == "" } {
|
|
|
+ #return -1;
|
|
|
+ };
|
|
|
+
|
|
|
+ #return $percent;
|
|
|
+};
|
|
|
+
|
|
|
+///=== {
|
|
|
+// #@ char.MustEat
|
|
|
+// 如果角色已经饿到极点(食物百分比 ≤ 0),则返回真,否则返回假。
|
|
|
+// 百分比数据未就绪时,按当前食物值保守估计。
|
|
|
+// };
|
|
|
+#func {char.MustEat} {
|
|
|
+ #if { @char.hp.GetPercent{食物} <= 0 } {
|
|
|
+ #return 1;
|
|
|
+ };
|
|
|
+ #else {
|
|
|
+ #return 0;
|
|
|
+ };
|
|
|
+};
|
|
|
+
|
|
|
+///=== {
|
|
|
+// #@ char.MustDrink
|
|
|
+// 如果角色已经渴到极点(饮水百分比 ≤ 0),则返回真,否则返回假。
|
|
|
+// 百分比数据未就绪时,按当前饮水值保守估计。
|
|
|
+// };
|
|
|
+#func {char.MustDrink} {
|
|
|
+ #if { @char.hp.GetPercent{饮水} <= 0 } {
|
|
|
+ #return 1;
|
|
|
+ };
|
|
|
+ #else {
|
|
|
+ #return 0;
|
|
|
+ };
|
|
|
+};
|
|
|
+
|
|
|
+///=== {
|
|
|
+// #@ char.NeedEat
|
|
|
+// 如果角色饿了(食物百分比 ≤ 50),则返回真,否则返回假。
|
|
|
+// 百分比数据未就绪时,按当前食物值保守估计。
|
|
|
+// };
|
|
|
+#func {char.NeedEat} {
|
|
|
+ #if { @char.hp.GetPercent{食物} <= 50 } {
|
|
|
+ #return 1;
|
|
|
+ };
|
|
|
+ #else {
|
|
|
+ #return 0;
|
|
|
+ };
|
|
|
+};
|
|
|
+
|
|
|
+///=== {
|
|
|
+// #@ char.NeedDrink
|
|
|
+// 如果角色渴了(饮水百分比 ≤ 50),则返回真,否则返回假。
|
|
|
+// 百分比数据未就绪时,按当前饮水值保守估计。
|
|
|
+// };
|
|
|
+#func {char.NeedDrink} {
|
|
|
+ #if { @char.hp.GetPercent{饮水} <= 50 } {
|
|
|
+ #return 1;
|
|
|
+ };
|
|
|
+ #else {
|
|
|
+ #return 0;
|
|
|
+ };
|
|
|
+};
|
|
|
+
|
|
|
+///=== {
|
|
|
+// #@ char.CanEatMore
|
|
|
+// 如果角色还能继续进食(食物百分比 ≤ 95),则返回真,否则返回假。
|
|
|
+// 百分比数据未就绪时,按当前食物值保守估计。
|
|
|
+// };
|
|
|
+#func {char.CanEatMore} {
|
|
|
+ #if { @char.hp.GetPercent{食物} <= 95 } {
|
|
|
+ #return 1;
|
|
|
+ };
|
|
|
+ #else {
|
|
|
+ #return 0;
|
|
|
+ };
|
|
|
+};
|
|
|
+
|
|
|
+///=== {
|
|
|
+// #@ char.CanDrinkMore
|
|
|
+// 如果角色还能继续饮水(饮水百分比 ≤ 95),则返回真,否则返回假。
|
|
|
+// 百分比数据未就绪时,按当前饮水值保守估计。
|
|
|
+// };
|
|
|
+#func {char.CanDrinkMore} {
|
|
|
+ #if { @char.hp.GetPercent{饮水} <= 95 } {
|
|
|
+ #return 1;
|
|
|
+ };
|
|
|
+ #else {
|
|
|
+ #return 0;
|
|
|
+ };
|
|
|
+};
|
|
|
+
|
|
|
///=== {
|
|
|
// #@ char.InDazuo
|
|
|
// 如果角色正在打坐,则返回真,否则返回假。无参数。
|
|
|
@@ -802,6 +931,80 @@ event.Handle {option/changed} {opt/HPSummarize.Pause/pkuxkx} {$MODULE} {char.HPS
|
|
|
};
|
|
|
};
|
|
|
|
|
|
+///=== {
|
|
|
+// #@ char.CanDazuo
|
|
|
+// 如果角色最大内力点数没有达到最大上限,则返回真,否则返回假。无参数。
|
|
|
+// };
|
|
|
+#func {char.CanDazuo} {
|
|
|
+ #local limit {$char[HP][内力上限]};
|
|
|
+
|
|
|
+ #if { $limit == 1 } {
|
|
|
+ warnLog 无法获得角色内力上限,疑似数据未更新。;
|
|
|
+ #return 0;
|
|
|
+ };
|
|
|
+
|
|
|
+ #if { $char[HP][最大内力] < $limit } {
|
|
|
+ #return 1;
|
|
|
+ };
|
|
|
+
|
|
|
+ #return 0;
|
|
|
+};
|
|
|
+
|
|
|
+///=== {
|
|
|
+// #@ char.CanTuna
|
|
|
+// 如果角色最大精力点数没有达到最大上限,则返回真,否则返回假。无参数。
|
|
|
+// };
|
|
|
+#func {char.CanTuna} {
|
|
|
+ #local limit {$char[HP][精力上限]};
|
|
|
+
|
|
|
+ #if { $limit == 1 } {
|
|
|
+ warnLog 无法获得角色精力上限,疑似数据未更新。;
|
|
|
+ #return 0;
|
|
|
+ };
|
|
|
+
|
|
|
+ #if { $char[HP][最大精力] < $limit } {
|
|
|
+ #return 1;
|
|
|
+ };
|
|
|
+
|
|
|
+ #return 0;
|
|
|
+};
|
|
|
+
|
|
|
+///=== {
|
|
|
+// #@ char.CanTichun
|
|
|
+// 如果角色拥有真气,并且真气不满,则返回真,否则返回假。无参数。
|
|
|
+// };
|
|
|
+#func {char.CanTichun} {
|
|
|
+ #if { $char[HP][最大真气] > 1 && $char[HP][真气百分比] < 100 } {
|
|
|
+ #return 1;
|
|
|
+ };
|
|
|
+
|
|
|
+ #return 0;
|
|
|
+};
|
|
|
+
|
|
|
+///=== {
|
|
|
+// #@ char.IsPoisoned
|
|
|
+// 如果角色中毒了,则返回真,否则返回假。无参数。
|
|
|
+// };
|
|
|
+#func {char.IsPoisoned} {
|
|
|
+ #if { "$char[HP][状态]" == "{.*毒.*|.*火焰刀.*}" || "$char[HP][毒]" !== "" } {
|
|
|
+ #return 1;
|
|
|
+ };
|
|
|
+
|
|
|
+ #return 0;
|
|
|
+};
|
|
|
+
|
|
|
+///=== {
|
|
|
+// #@ char.IsPoisonActive
|
|
|
+// 如果角色中毒了,且没有被压制,则返回真,否则返回假。无参数。
|
|
|
+// };
|
|
|
+#func {char.IsPoisonActive} {
|
|
|
+ #if { @char.IsPoisoned{} && ! @sset.Contains{{$char[HP][状态]};毒性压制} } {
|
|
|
+ #return 1;
|
|
|
+ };
|
|
|
+
|
|
|
+ #return 0;
|
|
|
+};
|
|
|
+
|
|
|
#action {^虽然藏而不发,你仍在不断积蓄攻势。(气势:%d%)$E} {char.hp.set-qishi %1};
|
|
|
#action {^你在攻击中不断积蓄攻势。(气势:%d%)$E} {char.hp.set-qishi %1};
|
|
|
#action {^你蓄足攻势,在战斗中发出绝招「%*」。(气势:%d%)$E} {char.hp.set-qishi %2};
|