Bläddra i källkod

feat(pkuxkx/map/helper): 大众版

dzp 1 år sedan
förälder
incheckning
21005737a2
1 ändrade filer med 161 tillägg och 41 borttagningar
  1. 161 41
      mud/pkuxkx/plugins/basic/map/helper.tin

+ 161 - 41
mud/pkuxkx/plugins/basic/map/helper.tin

@@ -40,14 +40,15 @@ VAR {地图脚本同步信息} map.sync.room-id {};
     } {$message};
 };
 
-#alias {map.GuoJiang}   {map.shaogong 过江};
-#alias {map.GuoHe}      {map.shaogong 过河};
-#alias {map.YellBoat}   {map.shaogong 自助};
+#alias {map.GuoJiang}   {map.shaogong 过江 map.GuoJiang};
+#alias {map.GuoHe}      {map.shaogong 过河 map.GuoHe};
+#alias {map.YellBoat}   {map.shaogong 自助 map.YellBoat};
 
 #alias {map.shaogong} {
     #local words {%1};
+    #local name  {%2};
 
-    #class map.shaogong open;
+    #class $name open;
 
     #alias {map.waitBoat} { #var map-Boat-state {waitBoat} };
 
@@ -55,20 +56,12 @@ VAR {地图脚本同步信息} map.sync.room-id {};
         #nop 不依赖触发了,用定时器靠谱一些;
     };
     #action {^岸边一只渡船上的艄公说道:正等着你呢,上来吧。$} {
-        #if { "${map-Boat-state}" == "waitBoat" } {
-            #var map-Boat-state {enterBoat};
-            #untick map.yellboat;
-            enter;
-            event.Emit map/walk/boat/in;
-        };
+        #tick map.boat.yell {map.boat.yell} 3;
+        map.boat.try-enter;
     };
     #action {^一叶扁舟缓缓地驶了过来,艄公将一块踏脚板搭上堤岸,以便乘客{上下。|}$} {
-        #if { "${map-Boat-state}" == "waitBoat" } {
-            #var map-Boat-state {enterBoat};
-            #untick map.yellboat;
-            enter;
-            event.Emit map/walk/boat/in;
-        };
+        #tick map.boat.yell {map.boat.yell} 3;
+        map.boat.try-enter;
     };
 
     #nop 没有一卡通时,需要通过 ask 来手动给钱。;
@@ -77,65 +70,66 @@ VAR {地图脚本同步信息} map.sync.room-id {};
             #delay 0 {ask shao gong about 过%%%3};
         };
 
-        #line oneshot #action {^%sLV%s%d%s$} {#line gag};
-
-        #delay 0 {
+        #line oneshot #action {^%sLV%s%d%s$} {
             #gag {^%*{|ID=map.shaogong}$};
-            look shao gong;
-            sync.Wait {#ungag {^%*{|ID=map.shaogong}$}};
+            event.HandleOnce {GA} {map.boat.look} {map} {
+                #ungag {^%*{|ID=map.shaogong}$}; #nop
+            };
         };
+
+        #delay 0 {look shao gong};
     };
 
-    #action {^%*接过你递给的船资%S。$}                                  {map.waitBoat};
+    #action {^$NPC接过你递给的船资%S。$}                                {map.waitBoat};
     #action {^你的车船通账上还剩%S,这一趟的船资是%S。$}                {map.waitBoat};
-    #action {^%S道:原来是%S的人,快请上船。$}                          {map.waitBoat};
+    #action {^这一趟的船资是%*,将从你的行旅通上走账。$}                {map.waitBoat};
+    #action {^$NPC道:原来是%S的人,快请上船。$}                        {map.waitBoat};
+    #action {^$NPC唱道:“撑船的,有生意上门啦~~~”,%*传出很远。$}  {map.waitBoat};
     #action {^你吸了口气,一声“船家”,声音中正平和地远远传了出去。$}  {map.waitBoat};
     #action {^你鼓足中气,长啸一声:“船家!”$}                        {map.waitBoat};
     #action {^你使出吃奶的力气喊了一声:“船家”$}                      {map.waitBoat};
 
     #action {^艄公把踏脚板收起来,说了一声“坐稳喽”,竹篙一点,扁舟向{|江心驶去。}$} {
-        #if { "${map-Boat-state}" == "enterBoat" } {
-            #var map-Boat-state {inBoat};
-            #untick map.yellboat;
-        };
+        #nop;
     };
 
-    #action {^艄公说{ |}“到啦,上岸吧”{ |},随即把一块踏脚板搭上堤岸。$} {
-        #if { "${map-Boat-state}" == "inBoat" } {
-            #nop 北侠 BUG 导致这条信息和下面赶下船的信息同时出现,这样会导致 out 失效。;
+    #action {^艄公说“到啦,上岸吧”,随即把一块踏脚板搭上堤岸。$} {
+        #if { "$map-Boat-state" == "inBoat" } {
+            #nop 有时候这条信息和下面赶下船的信息同时出现,这样会导致 out 失效。;
             #nop 所以做一些防御处理;
             #delay map-Boat-out {
-                #var map.stepaccu 1;
                 #unvar map-Boat-state;
-                #undelay map-Boat-out;
                 event.Emit map/walk/boat/out;
-                busy.Halt {out; map.BotReturn map.shaogong};
+                busy.Halt {out; map.boat.done};
             } {0.05};
         };
     };
 
     #action {^艄公要继续做生意了,所有人被赶下了渡船。$} {
-        #if { "${map-Boat-state}" == "inBoat" } {
+        #if { "$map-Boat-state" == "inBoat" } {
             #delay map-Boat-out {
-                #var map.stepaccu 1;
                 #unvar map-Boat-state;
-                #undelay map-Boat-out;
                 event.Emit map/walk/boat/out;
-                busy.Halt {map.BotReturn map.shaogong};
+                busy.Halt map.boat.done;
             } {0};
         };
     };
 
-    #tick map.yellboat {yell boat} 1;
-
-    #class map.shaogong close;
+    #line sub var #alias {map.boat.done} {map.BotReturn $name};
+    #alias {map.boat.yell} {
+        yell boat;
+        #tick map.boat.yell {map.boat.yell} 1;
+    };
 
     #if { "$words" == "自助" } {
-        yell boat;
+        map.boat.yell;
     };
     #else {
         ask shao gong about $words;
+        #tick map.boat.yell {map.boat.yell} 1;
     };
+
+    #class $name close;
 };
 
 #alias {map.SpecialBoat} {
@@ -160,8 +154,134 @@ VAR {地图脚本同步信息} map.sync.room-id {};
     ride $target;
 };
 
+#alias {map.Shalou} {
+    #class map.Shalou open;
+
+    #var map-Boat-state {waitBoat};
+
+    #action {^根据沙漏的速度,渡船应该在%*秒后靠岸。$} {
+        #local seconds {@time.ParseDoC{%%1}};
+        map.waitBoat;
+    };
+
+    #action {^沙漏里的沙子已经漏到底了。$} {
+        #delay map.boat.try-enter {map.boat.try-enter} 1;
+    };
+
+    #action {^渡船缓缓靠岸,船上的船工摆出跳板,方便客人上下船。$} {
+        #delay map.boat.try-enter {map.boat.try-enter} 0;
+    };
+
+    #action {^船工收回跳板,开船驶向%*的%*了。$} {
+        #var map-Boat-state {inBoat};
+    };
+
+    #action {^船工放下跳板,招呼大家下船了。$} {
+        #if { "$map-Boat-state" == "inBoat" } {
+            #unvar map-Boat-state;
+            event.Emit map/walk/boat/out;
+            busy.Halt {out; map.BotReturn map.Shalou};
+        };
+    };
+
+    #action {^在船离岸之际,你赶紧跳了下去。$} {
+        #if { "$map-Boat-state" == "inBoat" } {
+            #unvar map-Boat-state;
+            event.Emit map/walk/boat/out;
+            busy.Halt {map.BotReturn map.Shalou};
+        };
+    };
+
+    #alias {map.waitBoat} { #var map-Boat-state {waitBoat}};
+
+    #class map.Shalou close;
+};
+
+#alias {map.boat.try-enter} {
+    #if { "$map-Boat-state" == "waitBoat" } {
+        go enter;
+        event.HandleOnce {GMCP.Move} {map.boat} {map} {map.boat.check};
+    };
+};
+
+#alias {map.boat.check} {
+    #local boat {%1};
+    #if { @isFalse{$gGMCP[Move][成功]} } {
+        errLog 登船失败。;
+        #return;
+    };
+
+    #if { &gGMCP[Move][出口信息] > 1 } {
+        errLog 登船失败,这是哪里?;
+        #return;
+    };
+
+    #if { "$gGMCP[Move][出口信息][1]" != "{|out}" } {
+        errLog 登船失败,好像不对劲。;
+        #return;
+    };
+
+    #untick map.boat.yell;
+    #var map-Boat-state {inBoat};
+    event.Emit map/walk/boat/in;
+};
+
 #alias {map.BotReturn} {
     #local bot {%1};
     #class $bot kill;
     event.DelayEmit {map/walk/continue} {$bot};
 };
+
+#func {map.GetPassport} {
+    #local room {%1};
+    #local exit {%2};
+
+    #local room {@map.GetRoomByID{$room}};
+    #if { "$room" == "" } {
+        #return {};
+    };
+
+    #local entry {};
+    #loop {1} {&map.passport[]} {entry} {
+        #local entry {$map.passport[$entry]};
+        #if { "$room[cid]" != "$entry[room]" } {
+            #continue;
+        };
+
+        #if { "$entry[item]" != "" && @sset.Contains{{$room[item]};$entry[item]} } {
+            #return {$entry};
+        };
+    };
+};
+
+#nop 各种爬山;
+#alias {map.Climb} {
+    #class map.Climb open;
+
+    #nop 无量山崖洞。;
+    #action {^你终于爬到崖洞中$} {map.Climb.return};
+    #nop 武当升真岩到五老峰。;
+    #action {^你爬的精疲力竭,忽然发现已经到山顶,你提起纵身,一个鹞子翻身跃上山顶。$}  {map.Climb.return};
+    #nop 武当天柱峰下到二天门。;
+    #action {^你爬的精疲力竭,忽然发现已经到二天门。$}                                  {map.Climb.return};
+    #nop 武当二天门到三天门。;
+    #action {^你抬头仰望,突然发现峰顶就在眼前,顿时气力倍增,双脚一蹬跳了上去。$}      {map.Climb.return};
+    #nop 武当下山都是一样的。;
+    #action {^你低头一看,离地面只有丈余高,你转身一跳,稳稳的落在地上。$}              {map.Climb.return};
+
+    #nop 黑苗寨爬树。;
+    #action {^你费力地向上爬去。$}                                                      {#0};
+    #action {^你吃力地向下爬去。$}                                                      {#0};
+    #action {^你爬到了{大树下|树干上|树顶}。$}                                          {map.Climb.return};
+
+    #nop 无量山爬 cliff;
+    #action {^你身在半空,双手乱挥,只盼能抓到什么东西,这么乱挥一阵,又下堕下百馀丈。} {map.Climb.return};
+    #nop 无量山爬 yafeng;
+    #action {^山崖似乎无穷无尽,爬到后来,衣衫早给荆刺扯得东破一块,西烂一条,$}        {map.Climb.return};
+
+    #alias {map.Climb.return}                                                    {map.BotReturn map.Climb};
+
+    #class map.Climb close;
+
+    #if { "%0" == "" } {climb} {climb %0};
+};