Skip to content

Commit

Permalink
feat(pkuxkx): 全生命周期的宝石袋(锦囊)管理
Browse files Browse the repository at this point in the history
  • Loading branch information
dzpao committed Jul 2, 2024
1 parent 8df5613 commit a2a3646
Show file tree
Hide file tree
Showing 3 changed files with 220 additions and 15 deletions.
220 changes: 209 additions & 11 deletions mud/pkuxkx/plugins/basic/char/sachet.tin
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,82 @@ PaoTin++ © 2020~2024 的所有版权均由担子炮(dzp <danzipao@gmail.com>)
===========
*/

#var basic_char_sachet[META] {
{NAME} {锦囊管理}
{DESC} {全生命周期维护锦囊数据,让你随时随地通过变量 char[锦囊] 掌握锦囊情况}
{AUTHOR} {担子炮}
{NOTE} {本文件属于 PaoTin++ 的一部分}
};

event.Define {char/sachet/sync} {无参} {$MODULE} {已经获取到 jiancha 命令输出结果,并更新 char[锦囊]。};
event.Define {char/sachet/add} {无参} {$MODULE} {宝石已放入宝石袋,char[锦囊] 已同步更新。};
event.Define {char/sachet/remove} {无参} {$MODULE} {从宝石袋中取出了宝石,char[锦囊] 已同步更新。};

#var gem.name2code {
{天} {8}
{泽} {7}
{火} {6}
{雷} {5}
{风} {4}
{水} {3}
{山} {2}
{地} {1}
{☆} {a}
{★} {b}
{◎} {c}
{精金} {J}
{木灵} {M}
{玄冰} {B}
{炎晶} {Y}
{玉髓} {S}
{月魄} {P}
{日魂} {R}
{神龙骨} {G}
{凤凰羽} {F}
{麒麟角} {Q}
{玄武甲} {X}
};

#var gem.name2id {
{天} {tian}
{泽} {ze}
{火} {huo}
{雷} {lei}
{风} {feng}
{水} {shui}
{山} {shan}
{地} {di}
{精金} {jin}
{木灵} {mu}
{玄冰} {bing}
{炎晶} {yan}
{玉髓} {sui}
{月魄} {yue}
{日魂} {ri}
{神龙骨} {gu}
{凤凰羽} {yu}
{麒麟角} {jiao}
{玄武甲} {jia}
};

#var gem.code2name {};

#func {basic_char_sachet.Init} {
#local name {};
#var gem.code2name {};
#foreach {*gem.name2code[]} {name} {
#local code {$gem.name2code[$name]};
#var gem.code2name[$code] {$name};
};
};

#var char[锦囊] {};

VAR {锦囊最多可以存储的宝石数量} {char.sachet.Max} {10};
VAR {锦囊当前已经存储的宝石数量} {char.sachet.Amount} {0};

#list char[锦囊] create {};

/*
宝石囊的名字现在有好几种版本:钵盂(僧侣)、布袋(丐帮)、人偶(五毒教)、锦囊(其他门派)
以上功能都一样,区别在于名字和 ID 不同。
Expand Down Expand Up @@ -39,10 +115,7 @@ PaoTin++ © 2020~2024 的所有版权均由担子炮(dzp <danzipao@gmail.com>)
对玩家来说,jiancha 后面带不同 ID 颇有不便,所以现在改成统一 jiancha gem 表示查看详情。
*/

#list char[锦囊] create {};

#alias {jiancha} {char.sachet.jiancha};

#alias {char.sachet.jiancha} {
#local id {%0};

Expand All @@ -63,6 +136,8 @@ PaoTin++ © 2020~2024 的所有版权均由担子炮(dzp <danzipao@gmail.com>)
#list char[锦囊] create {};

#line oneshot #action {^{人偶|布袋|钵盂|锦囊}(%*) [%*/%*]{|ID=char.sachet}$} {
#var char.sachet.Amount {%%3};
#var char.sachet.Max {%%4};
char.sachet.parse.output;
};

Expand All @@ -72,13 +147,6 @@ PaoTin++ © 2020~2024 的所有版权均由担子炮(dzp <danzipao@gmail.com>)
#alias {char.sachet.parse.output} {
#class char-parse-sachet open;

#local level {地|山|水|风|雷|火|泽|天};
#local type {☆|★|◎};
#local wuxing {精金|木灵|玄冰|炎晶|玉髓};
#local beast {玄武甲|神龙骨|凤凰羽|麒麟角};
#local special {日魂|月魄};
#local pattern {\(\s*(\d+)\)($level)($type)($wuxing|$beast|$special)\*(\d+)\s+};

#action {^├───%*宝石───────┴─────────┴──────────┤$} {
#nop;
};
Expand All @@ -104,6 +172,7 @@ PaoTin++ © 2020~2024 的所有版权均由担子炮(dzp <danzipao@gmail.com>)
event.HandleOnce GA {char.sachet} {char} {
#class char-parse-sachet kill;
okLog 锦囊数据已更新。;
event.Emit char/sachet/sync;
#nop 吞参数专用,不要删除本行,也不要在末尾加分号或是别的语句
};

Expand All @@ -113,7 +182,8 @@ PaoTin++ © 2020~2024 的所有版权均由担子炮(dzp <danzipao@gmail.com>)
#func {__char_sachet_parse__} {
#local item {%1};

#replace {item} {[%S]%*{☆|★|◎}%**%d} {
#nop 通过触发捕获到的星号可能是带斜杠的,所以这里要去掉。;
#replace {item} {[%S]$GEMLVL$GEMGEN$GEMKIND{?:\\|}*%d} {
{序号}{&1}
{等级}{&2}
{阴阳}{&3}
Expand All @@ -123,3 +193,131 @@ PaoTin++ © 2020~2024 的所有版权均由担子炮(dzp <danzipao@gmail.com>)

#return {$item};
};

///=== {
// #@ gem.NameToCode <宝石中文名>
// 将宝石的中文名转换成锦囊中的英文序号。
// };
#func {gem.NameToCode} {
#local gem {%1};

#replace gem {$GEMLVL$GEMGEN{?: |}$GEMKIND} {
{等级}{&1}
{阴阳}{&2}
{种类}{&3}
};

#local gem {$gem};

#if { &gem[] == 0 } {
#return;
};

#return {$gem.name2code[$gem[种类]]$gem.name2code[$gem[等级]]@str.ToUpper{$gem.name2code[$gem[阴阳]]}};
};

///=== {
// #@ gem.NameToID <宝石中文名>
// 将宝石的中文名转换成背包中的英文 ID。
// };
#func {gem.NameToID} {
#local gem {%1};

#replace gem {$GEMLVL$GEMGEN{?: |}$GEMKIND} {
{等级}{&1}
{阴阳}{&2}
{种类}{&3}
};

#local gem {$gem};

#if { &gem[] == 0 } {
#return;
};

#return {$gem.name2id[$gem[等级]] $gem.name2id[$gem[种类]]};
};

///=== {
// #@ gem.CodeToName <宝石序号>
// 将锦囊中的宝石序号转换成中文名。
// };
#func {gem.CodeToName} {
#local gem {%1};

#replace gem {%.%.%.} {
{种类}{&1}
{等级}{&2}
{阴阳}{&3}
};

#local gem {$gem};

#if { &gem[] == 0 } {
#return;
};

#return {$gem.code2name[$gem[等级]]$gem.code2name[@str.ToLower{$gem[阴阳]}]$gem.code2name[$gem[种类]]};
};

///=== {
// #@ gem.CodeToNameB <宝石序号>
// 将锦囊中的宝石序号转换成漂亮的中文名。
// };
#func {gem.CodeToNameB} {
#local gem {@gem.CodeToName{%1}};
#return {@Beautify{$gem}};
};

VAR {锦囊最近一次操作的宝石名称} {char.sachet.Gem} {};

#action {^你从{锦囊|钵盂|布袋|人偶}里面取出一颗$GEM。$E} {
#local gem {%2};
#var char.sachet.Gem {$gem};

#local code {@gem.NameToCode{$gem}};

math.Inc char[锦囊][$code][数量] -1;
#if { $char[锦囊][$code][数量] <= 0 } {
#unvar char[锦囊][$code];
};

event.Emit char/sachet/remove;
};

#action {^你将手中$GEM放进了{锦囊|钵盂|布袋|人偶}。$E} {
#local gem {%1};
#var char.sachet.Gem {$gem};

#local code {@gem.NameToCode{$gem}};

#replace gem {$GEMLVL$GEMGEN{?: |}$GEMKIND} {
{等级}{&1}
{阴阳}{&2}
{种类}{&3}
};

#local gem {$gem};

#if { "$char[锦囊][$code]" == "" } {
#var char[锦囊][$code] {
{序号} {$code}
{数量} {0}
{种类} {$gem[种类]}
{等级} {$gem[等级]}
{阴阳} {$gem[阴阳]}
};
};

math.Inc char[锦囊][$code][数量];

event.Emit char/sachet/add;
};

#action {^$PLAYER给你一{颗|枚}$GEM。$E} {
pack @gem.NameToID{%3};
};

#action {^从$NPC身上掉了出来一颗$GEM$E} {
pack @gem.NameToID{%2};
};
4 changes: 0 additions & 4 deletions mud/pkuxkx/plugins/shortcut.tin
Original file line number Diff line number Diff line change
Expand Up @@ -155,10 +155,6 @@ load-lib sync;
#action {^>%s$} {#line gag};
#gag {^├{(─|┼)+}┤$};

#action {^$PLAYER给你一{颗|枚}{地|山|水|风|雷|火|泽|天}{☆|★|◎}%+2..3u。$E} {
pack gem;
} {9.999};

#alias kk {look %0; lookin %0; follow %0; killall %0};
#action {^你瞬间感到了危险临近,奸细就在附近!$E} {killall} {9.500};

Expand Down
11 changes: 11 additions & 0 deletions plugins/lib/constant.tin
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,14 @@ PaoTin++ © 2020~2024 的所有版权均由担子炮(dzp <danzipao@gmail.com>)

VAR {玩家正则表达式} PLAYER {%+1..10u};
VAR {NPC正则表达式} NPC {%+1..6u};

#var gem-lvl {地|山|水|风|雷|火|泽|天};
#var gem-kind {精金|木灵|玄冰|炎晶|玉髓|玄武甲|神龙骨|凤凰羽|麒麟角|日魂|月魄};
#var gem-gender {☆|★|◎};

VAR {宝石等级} GEMLVL {{$gem-lvl}{?:}};
VAR {宝石性别} GEMGEN {{$gem-gender}{?:}};
VAR {宝石种类} GEMKIND {{$gem-kind}{?:}};
VAR {宝石正则表达式} GEM {{(?:$gem-lvl)(?:$gem-gender)(?:$gem-kind)}{?:}};

#unvar gem-%*;

0 comments on commit a2a3646

Please sign in to comment.