Skip to content

Instantly share code, notes, and snippets.

@caogtaa
Created January 19, 2025 09:54
Show Gist options
  • Save caogtaa/d4cce2d913ac086ea306e31495b59003 to your computer and use it in GitHub Desktop.
Save caogtaa/d4cce2d913ac086ea306e31495b59003 to your computer and use it in GitHub Desktop.
Mind Force - v0.3 (PuzzleScript Script)
Play this game by pasting the script in http://www.puzzlescript.net/editor.html
title Mind Force - v0.3
author [email protected]
key_repeat_interval 0.4
again_interval 0.16
run_rules_on_level_start
verbose_logging
========
OBJECTS
========
Background
(#A3FFFF)
#dadad8
Wall
gray darkgray
00010
11111
01000
11111
00010
Human
black #FFD9BF white blue
.000.
.111.
22222
.333.
.3.3.
DeadHuman
black #FFD9BF red Blue
.020.
.222.
22222
.222.
.2.2.
Exit
#71451d black
.000.
01110
01110
01110
01110
Crate
orange
00000
0...0
0...0
0...0
00000
Crate_UL_C
orange
00000
0....
0....
0....
0...0
Crate_UR_C
orange
00000
....0
....0
....0
0...0
Crate_DL_C
orange
0...0
0....
0....
0....
00000
Crate_DR_C
orange
0...0
....0
....0
....0
00000
Crate_UL
orange
00000
0....
0....
0....
0....
Crate_UR
orange
00000
....0
....0
....0
....0
Crate_DL
orange
0....
0....
0....
0....
00000
Crate_DR
orange
....0
....0
....0
....0
00000
Crate_L
orange
00000
0....
0....
0....
00000
Crate_R
orange
00000
....0
....0
....0
00000
Crate_U
orange
00000
0...0
0...0
0...0
0...0
Crate_D
orange
0...0
0...0
0...0
0...0
00000
Spike
gray white
..0..
..0..
.010.
.001.
00001
Aim
#1dc116
..0..
..0..
00000
..0..
..0..
CMark (Control Mark,和被控制物体在相同图层,暂时样子和Aim一样)
#1dc116
..0..
..0..
00.00
..0..
..0..
CMark_Spread
transparent
HumanJumpRight
transparent
HumanJumpLeft
transparent
JumpableChecker
transparent
JumpDoneMarker
transparent
Flag_MoveStopped
transparent
RMark (Rotation Mark)
transparent
is_falling
transparent
Temp
transparent
Cwize (Clockwize)
transparent
Awize (Anticlocksize)
transparent
HumanMoveLeft
transparent
HumanMoveRight
transparent
is_moving
transparent
(CMark is center)
P_U1
transparent
P_D1
transparent
P_L1
transparent
P_R1
transparent
P_U1R1
transparent
P_U1L1
transparent
P_D1R1
transparent
P_D1L1
transparent
=======
LEGEND
=======
. = Background
# = Wall
P = Human
O = Crate
E = Exit
* = Spike
╔ = Crate_UL_C
╗ = Crate_UR_C
╚ = Crate_DL_C
╝ = Crate_DR_C
┏ = Crate_UL
┓ = Crate_UR
┗ = Crate_DL
┛ = Crate_DR
c = Crate_L
ↄ = Crate_R
n = Crate_U
u = Crate_D
Player = Human or Aim
HumanJump = HumanJumpLeft or HumanJumpRight
crate_corner = Crate_UL_C or Crate_UR_C or Crate_DL_C or Crate_DR_C
crate_part = Crate or Crate_UL or Crate_UR or Crate_DL or Crate_DR or Crate_L or Crate_R or Crate_U or Crate_D or crate_corner
Holdable = crate_part or Spike (holdable专指尚未被控制的物体)
is_rotating = Cwize or Awize
position = P_U1 or P_D1 or P_L1 or P_R1 or P_U1R1 or P_U1L1 or P_D1R1 or P_D1L1
(每个部位赋予连接属性)
Conn_U = Crate_DL or Crate_DR or Crate_D or Crate_DL_C or Crate_DR_C
Conn_D = Crate_UL or Crate_UR or Crate_U or Crate_UL_C or Crate_UR_C
Conn_L = Crate_UR or Crate_DR or Crate_R or Crate_UR_C or Crate_DR_C
Conn_R = Crate_UL or Crate_DL or Crate_L or Crate_UL_C or Crate_DL_C
object = Human or DeadHuman or wall or Holdable
stable = Wall or holdable or human (旋转时判定不能被侵占的格子,需要用no RMark过滤)
ObjectOrJump = Object or HumanJump
Massive = Human or DeadHuman or Holdable (受重力影响的)
=======
SOUNDS
=======
undo 21150709
endlevel 33645300
(human Move 12917107)
sfx0 16961500 (锁定holdable)
(sfx1 27137709 (取消选中))
sfx1 76110109 (取消选中)
sfx2 63043704 (死亡)
sfx3 25391905 (跳跃)
sfx4 55776908 (开始瞄准)
sfx5 88635503 (旋转)
================
COLLISIONLAYERS
================
Background
Wall ((0,0)位置用于temp变量,会存各种东西,所以Wall单独一个layer)
Exit
Human, DeadHuman, Holdable (object except wall)
CMark
CMark_Spread
RMark
position
Aim
HumanJump
JumpDoneMarker
JumpableChecker
Flag_MoveStopped
HumanMoveLeft, HumanMoveRight
is_moving
is_rotating
is_falling
Temp
======
RULES
======
(在跳高的中间步骤不要移动,最高优先级取消输入)
[ moving Human ] [ HumanJump ] -> [ Human ] [ HumanJump ]
(瞄准阶段不要移动, 此时只有光标移动)
[ moving Human ] [ Aim ] -> [ Human ] [ Aim ]
(控制阶段响应up/down进行旋转)
[ down Human ] [ CMark no CWize ] [ no Temp ] -> [ Human ] [ CMark CWize ] [ Temp ] again (顺时针旋转,取消human移动,旋转后跟一帧计算重力)
[ up Human ] [ CMark no AWize ] [ no Temp ] -> [ Human ] [ CMark AWize ] [ Temp ] again (逆时针旋转,取消human移动,旋转后跟一帧计算重力)
(正常模式下禁止上下移动,跳跃依靠右侧有物体)
[ vertical Human ] -> [ Human ]
(瞄准阶段、控制阶段的进入、退出)
[ action Human ] [ CMark ] -> [ Human ] [ ] sfx1 (退出控制)
[ action Human ] [ no Aim ] [ no CMark ] -> [ Human Aim ] [] [] sfx4 (进入瞄准模式)
[ action Aim holdable ] -> [ CMark holdable ] sfx0 (选中物体,加标记)
[ action Aim no holdable ] -> [ no holdable ] sfx1 (未选中,退出瞄准模式)
(暂存横向移动,因为算重力过程重随时会清理这个状态)
[ left Human ] -> [ Human HumanMoveLeft ]
[ right Human ] -> [ Human HumanMoveRight ]
late [ HumanMoveLeft ] -> []
late [ HumanMoveRight ] -> []
(======== 重力逻辑开始 ========)
(
整体思路: 先处理重力,然后处理玩家的主动移动 + H块带动。
这两个力在异形刚体存在的情况下,可能会同时出现,比如一个半边浮空的长条块,所以必须分开。优先处理重力。
1. 所有单点标记下落,包括human
2. 不断loop让所有相关都加上下落标记
3. 单点阻挡测试
4. 向上传递阻挡flag
5. 批量清理flag的方向a
6. 如果还有Massive,跳过human本身的移动操作
处理Human移动的逻辑和上述过程大致相同,区别在
1. 单点标记只从CMark开始
2. 传导只限于holdable,Human不参与。比如Human头顶着一个方块,水平移动时不会带动
)
[moving Human] -> [moving Human] again (这句有实际意义吗?)
(1. 所有单点标记下落,包括human)
(2. 不断loop让所有相关都加上下落标记)
down [ stationary massive | no object ] -> [ down massive | no object ] again (物体自由下落)
+ down [ stationary massive | down massive ] -> [ down massive | down massive ] (下方有可能镂空,那么自身也下落)
+ [ down Human ] [ holdable CMark ] -> [ down Human ] [ down holdable down CMark ] (H块控制)
(推模式,传递给自己的其他组件)
+ up [ moving conn_U | stationary conn_D ] -> [ moving conn_U | moving conn_D ]
+ down [ moving conn_D | stationary conn_U ] -> [ moving conn_D | moving conn_U ]
+ left [ moving conn_L | stationary conn_R ] -> [ moving conn_L | moving conn_R ]
+ right [ moving conn_R | stationary conn_L ] -> [ moving conn_R | moving conn_L ]
late down [ human | Spike ] -> [ DeadHuman | Spike ] sfx2 (被尖刺扎死,简单点先不主动end game)
(3. 单点阻挡测试)
(4. 向上传递阻挡flag)
(5. 批量清理flag的方向)
down [ down human | humanjump ] -> [ human | humanjump ] (如果在跳跃状态,human不主动下落。这一句是修正massive规则的overkill的)
down [ down massive | stationary object ] -> [ massive | stationary object ] (被固定的物体阻挡)
+ [ stationary Human ] [ holdable CMark ] -> [ stationary Human ] [ stationary holdable stationary CMark ] (主动停止H块)
(推模式,传递给自己的其他组件)
(第2步的传导是有下落尽下落,这一步的传导是有静止尽静止)
+ up [ stationary conn_U | moving conn_D ] -> [ stationary conn_U | stationary conn_D ]
+ down [ stationary conn_D | moving conn_U ] -> [ stationary conn_D | stationary conn_U ]
+ left [ stationary conn_L | moving conn_R ] -> [ stationary conn_L | stationary conn_R ]
+ right [ stationary conn_R | moving conn_L ] -> [ stationary conn_R | stationary conn_L ]
(6. 如果还有Massive,跳过human本身的移动操作。先赋值,再清除,因为语法上无法使用 no down massive)
[ HumanMoveLeft ] [ stationary Human ] -> [] [ left Human ]
[ HumanMoveRight ] [ stationary Human ] -> [] [ right Human ]
[ horizontal human ] [ down massive ] -> [ stationary human ] [ down massive ]
(============ 重力逻辑 end ===============)
(============ 主动移动逻辑 ===============)
(上一帧已经确定可以跳跃,此时执行跳跃)
(JumpDownMarker并没有什么实际作用)
[ human ] [ HumanJumpRight ] [ no JumpDoneMarker ] -> [ right human ] [] [ JumpDoneMarker ]
[ human ] [ HumanJumpLeft ] [ no JumpDoneMarker ] -> [ left human ] [] [ JumpDoneMarker ]
(需要判定是否跳跃,判定前需要先进行CMark_Spread,无法跳上被CMark影响的块)
[ holdable CMark ] -> [ holdable CMark CMark_Spread ]
up [ holdable CMark_Spread | holdable no CMark_Spread ] -> [ holdable CMark_Spread | holdable CMark_Spread ]
+ down [ conn_D CMark_Spread | conn_U no CMark_Spread ] -> [ conn_D CMark_Spread | conn_U CMark_Spread ]
+ left [ conn_L CMark_Spread | conn_R no CMark_Spread ] -> [ conn_L CMark_Spread | conn_R CMark_Spread ]
+ right [ conn_R CMark_Spread | conn_L no CMark_Spread ] -> [ conn_R CMark_Spread | conn_L CMark_Spread ]
(跳跃,两个方向分开处理。使用两帧处理上跳和水平移动,以便H块能跟随移动)
right [ > human | object no CMark_Spread ] -> [ ^ human HumanJumpRight | object no CMark_Spread ]
left [ > human | object no CMark_Spread ] -> [ v human HumanJumpLeft | object no CMark_Spread ]
up [ > human | ] -> [ > human | JumpableChecker ] (生成一个临时节点,用于检测斜角是否有可以移动的空间)
[ JumpableChecker object no CMark_Spread ] [ up human humanjump ] -> [ object no CMark_Spread ] [ human ] (如果有障碍,则消除临时节点,取消跳跃)
right [ stationary JumpableChecker | object no CMark_Spread ] [ HumanJumpRight ] -> [ | object no CMark_Spread ] [ ] (临时节点水平检测,检测失败就删除自己)
left [ stationary JumpableChecker | object no CMark_Spread ] [ HumanJumpLeft ] -> [ | object no CMark_Spread ] [ ]
up [ > human | no JumpableChecker ] -> [ human | no JumpableChecker ] (如果临时节点被删除,取消human上移)
[JumpableChecker] -> [JumpableChecker] sfx3
[JumpDoneMarker] -> []
[JumpableChecker] -> []
(至此human有可能出现left, right, up 3种情况,除了down之外的移动都标记为is_moving)
[ horizontal Human ] -> [ horizontal Human is_moving ]
[ up Human ] -> [ up Human is_moving ]
[ Human no is_moving ] [ CMark_Spread ] -> [ Human no is_moving ] [] (没有主动移动,清理所有CMark_Spread,后续的传递会失效)
(1. human的移动传递给CMark作为单点输入)
[ moving Human is_moving ] [ holdable CMark ] -> [ moving Human is_moving ] [ moving holdable moving CMark ]
(2. 不断loop让所有相关都加上移动标记)
+ down [ stationary holdable CMark_Spread | moving holdable CMark_Spread ] -> [ moving holdable CMark_Spread | moving holdable CMark_Spread ] (下方物体,那么自身也被带动)
+ up [ moving conn_U CMark_Spread | stationary conn_D ] -> [ moving conn_U CMark_Spread | moving conn_D ]
+ down [ moving conn_D CMark_Spread | stationary conn_U ] -> [ moving conn_D CMark_Spread | moving conn_U ]
+ left [ moving conn_L CMark_Spread | stationary conn_R ] -> [ moving conn_L CMark_Spread | moving conn_R ]
+ right [ moving conn_R CMark_Spread | stationary conn_L ] -> [ moving conn_R CMark_Spread | moving conn_L ]
(3. 单点阻挡测试)
(4. 向上传递阻挡flag)
(5. 批量清理flag的方向)
[ > holdable CMark_Spread | stationary object ] -> [ holdable CMark_Spread | stationary object ] (被固定的物体阻挡)
+ [ > Human | stationary object CMark_Spread ] -> [ stationary Human | stationary object CMark_Spread ] (human被固定的物体阻挡)
+ up [ stationary holdable CMark_Spread | moving holdable ] -> [ stationary holdable CMark_Spread | stationary holdable ] (向上传递,但是不要影响human)
+ [ stationary Human ] [ moving holdable moving CMark ] -> [ stationary Human ] [ stationary holdable stationary CMark ] (主动停止H块)
(推模式,传递给自己的其他组件)
(第2步的传导是有下落尽下落,这一步的传导是有静止尽静止)
+ up [ stationary conn_U CMark_Spread | moving conn_D ] -> [ stationary conn_U CMark_Spread | stationary conn_D ]
+ down [ stationary conn_D CMark_Spread | moving conn_U ] -> [ stationary conn_D CMark_Spread | stationary conn_U ]
+ left [ stationary conn_L CMark_Spread | moving conn_R ] -> [ stationary conn_L CMark_Spread | stationary conn_R ]
+ right [ stationary conn_R CMark_Spread | moving conn_L ] -> [ stationary conn_R CMark_Spread | stationary conn_L ]
[ moving CMark stationary holdable ] -> [ stationary CMark stationary holdable ]
up [ up Human | stationary object ] [ HumanJump ] -> [ stationary Human | stationary object ] [] (反向传递后,发现human被阻挡,取消跳跃)
[ stationary Human ] [ humanjump ] -> [ stationary Human ] [] (通过反向传递被阻挡的case)
[ Human is_moving ] -> [ Human is_moving ] again (跳跃后触发下一帧平行移动)
late [ CMark_Spread ] -> []
(============ 主动移动逻辑 end ===============)
(======== 旋转逻辑开始 ========)
(旋转豁免逻辑)
[ CMark is_rotating Spike ] -> [ CMark Spike ] (尖刺不旋转)
[ CMark is_rotating Crate ] -> [ CMark Crate ] (单个的箱子不旋转)
[ CMark is_rotating ] -> [ CMark is_rotating RMark ]
(刚体传染RMark)
up [ conn_u RMark | conn_d no RMark ] -> [ conn_u RMark | conn_d RMark ]
+down [ conn_d RMark | conn_u no RMark ] -> [ conn_d RMark | conn_u RMark ]
+left [ conn_l RMark | conn_r no RMark ] -> [ conn_l RMark | conn_r RMark ]
+right [ conn_r RMark | conn_l no RMark ] -> [ conn_r RMark | conn_l RMark ]
(L1 position)
up [ CMark is_rotating | ] -> [ CMark is_rotating | P_U1 ]
down [ CMark is_rotating | ] -> [ CMark is_rotating | P_D1 ]
left [ CMark is_rotating | ] -> [ CMark is_rotating | P_L1 ]
right [ CMark is_rotating | ] -> [ CMark is_rotating | P_R1 ]
(L2 position)
left [ P_U1 | ] -> [ P_U1 | P_U1L1 ]
right [ P_U1 | ] -> [ P_U1 | P_U1R1 ]
left [ P_D1 | ] -> [ P_D1 | P_D1L1 ]
right [ P_D1 | ] -> [ P_D1 | P_D1R1 ]
(==CWize部分==)
(旋转阻挡判定)
[ Cwize ] [ P_U1 crate_part RMark ] [ P_R1 stable no RMark ] -> [] [ crate_part ] [ stable no RMark ]
[ Cwize ] [ P_R1 crate_part RMark ] [ P_D1 stable no RMark ] -> [] [ crate_part ] [ stable no RMark ]
[ Cwize ] [ P_D1 crate_part RMark ] [ P_L1 stable no RMark ] -> [] [ crate_part ] [ stable no RMark ]
[ Cwize ] [ P_L1 crate_part RMark ] [ P_U1 stable no RMark ] -> [] [ crate_part ] [ stable no RMark ]
[ CWize ] [ P_U1R1 crate_part RMark ] [ P_D1R1 stable no RMark ] -> [] [ crate_part ] [ stable no RMark ]
[ CWize ] [ P_U1L1 crate_part RMark ] [ P_U1R1 stable no RMark ] -> [] [ crate_part ] [ stable no RMark ]
[ CWize ] [ P_D1L1 crate_part RMark ] [ P_U1L1 stable no RMark ] -> [] [ crate_part ] [ stable no RMark ]
[ CWize ] [ P_D1R1 crate_part RMark ] [ P_D1L1 stable no RMark ] -> [] [ crate_part ] [ stable no RMark ]
([ CWize ] -> message can rotate!)
(TODO: 旋转失败后设置rotate_stopped,播放音效)
(物体旋转,CWize)
(shift格子)
(RMark一起转移,后面自旋转时顺便清理掉避免重入)
[ Cwize ] [ P_U1 crate_part RMark ] [ temp ] -> [ CWize ] [ P_U1 ] [ temp crate_part RMark ]
[ Cwize ] [ P_L1 crate_part RMark ] [ P_U1 ] -> [ CWize ] [ P_L1 ] [ P_U1 crate_part RMark ]
[ Cwize ] [ P_D1 crate_part RMark ] [ P_L1 ] -> [ CWize ] [ P_D1 ] [ P_L1 crate_part RMark ]
[ Cwize ] [ P_R1 crate_part RMark ] [ P_D1 ] -> [ CWize ] [ P_R1 ] [ P_D1 crate_part RMark ]
[ Cwize ] [ temp crate_part RMark ] [ P_R1 ] -> [ CWize ] [ temp ] [ P_R1 crate_part RMark ]
[ Cwize ] [ P_U1R1 crate_part RMark ] [ temp ] -> [ CWize ] [ P_U1R1 ] [ temp crate_part RMark ]
[ Cwize ] [ P_U1L1 crate_part RMark ] [ P_U1R1 ] -> [ CWize ] [ P_U1L1 ] [ P_U1R1 crate_part RMark ]
[ Cwize ] [ P_D1L1 crate_part RMark ] [ P_U1L1 ] -> [ CWize ] [ P_D1L1 ] [ P_U1L1 crate_part RMark ]
[ Cwize ] [ P_D1R1 crate_part RMark ] [ P_D1L1 ] -> [ CWize ] [ P_D1R1 ] [ P_D1L1 crate_part RMark ]
[ Cwize ] [ temp crate_part RMark ] [ P_D1R1 ] -> [ CWize ] [ temp ] [ P_D1R1 crate_part RMark ]
(part自旋转,CWize,旋转时顺便清理CMark避免重入)
[ CWize ] [ Crate_U RMark ] -> [ CWize ] [ Crate_R ]
[ CWize ] [ Crate_R RMark ] -> [ CWize ] [ Crate_D ]
[ CWize ] [ Crate_D RMark ] -> [ CWize ] [ Crate_L ]
[ CWize ] [ Crate_L RMark ] -> [ CWize ] [ Crate_U ]
[ CWize ] [ Crate_UR RMark ] -> [ CWize ] [ Crate_DR ]
[ CWize ] [ Crate_DR RMark ] -> [ CWize ] [ Crate_DL ]
[ CWize ] [ Crate_DL RMark ] -> [ CWize ] [ Crate_UL ]
[ CWize ] [ Crate_UL RMark ] -> [ CWize ] [ Crate_UR ]
[ CWize ] [ Crate_UR_C RMark ] -> [ CWize ] [ Crate_DR_C ]
[ CWize ] [ Crate_DR_C RMark ] -> [ CWize ] [ Crate_DL_C ]
[ CWize ] [ Crate_DL_C RMark ] -> [ CWize ] [ Crate_UL_C ]
[ CWize ] [ Crate_UL_C RMark ] -> [ CWize ] [ Crate_UR_C ]
(==AWize部分==)
(旋转阻挡判定)
[ Awize ] [ P_U1 crate_part RMark ] [ P_L1 stable no RMark ] -> [] [ crate_part ] [ stable no RMark ]
[ Awize ] [ P_L1 crate_part RMark ] [ P_D1 stable no RMark ] -> [] [ crate_part ] [ stable no RMark ]
[ Awize ] [ P_D1 crate_part RMark ] [ P_R1 stable no RMark ] -> [] [ crate_part ] [ stable no RMark ]
[ Awize ] [ P_R1 crate_part RMark ] [ P_U1 stable no RMark ] -> [] [ crate_part ] [ stable no RMark ]
[ Awize ] [ P_U1R1 crate_part RMark ] [ P_U1L1 stable no RMark ] -> [] [ crate_part ] [ stable no RMark ]
[ Awize ] [ P_U1L1 crate_part RMark ] [ P_D1L1 stable no RMark ] -> [] [ crate_part ] [ stable no RMark ]
[ Awize ] [ P_D1L1 crate_part RMark ] [ P_D1R1 stable no RMark ] -> [] [ crate_part ] [ stable no RMark ]
[ Awize ] [ P_D1R1 crate_part RMark ] [ P_U1R1 stable no RMark ] -> [] [ crate_part ] [ stable no RMark ]
([ Awize ] -> message can rotate!)
(TODO: 旋转失败后设置rotate_stopped,播放音效)
(物体旋转,Awize)
(shift格子)
(RMark一起转移,后面自旋转时顺便清理掉避免重入)
[ Awize ] [ P_U1 crate_part RMark ] [ temp ] -> [ Awize ] [ P_U1 ] [ temp crate_part RMark ]
[ Awize ] [ P_R1 crate_part RMark ] [ P_U1 ] -> [ Awize ] [ P_R1 ] [ P_U1 crate_part RMark ]
[ Awize ] [ P_D1 crate_part RMark ] [ P_R1 ] -> [ Awize ] [ P_D1 ] [ P_R1 crate_part RMark ]
[ Awize ] [ P_L1 crate_part RMark ] [ P_D1 ] -> [ Awize ] [ P_L1 ] [ P_D1 crate_part RMark ]
[ Awize ] [ temp crate_part RMark ] [ P_L1 ] -> [ Awize ] [ temp ] [ P_L1 crate_part RMark ]
[ Awize ] [ P_U1R1 crate_part RMark ] [ temp ] -> [ Awize ] [ P_U1R1 ] [ temp crate_part RMark ]
[ Awize ] [ P_D1R1 crate_part RMark ] [ P_U1R1 ] -> [ Awize ] [ P_D1R1 ] [ P_U1R1 crate_part RMark ]
[ Awize ] [ P_D1L1 crate_part RMark ] [ P_D1R1 ] -> [ Awize ] [ P_D1L1 ] [ P_D1R1 crate_part RMark ]
[ Awize ] [ P_U1L1 crate_part RMark ] [ P_D1L1 ] -> [ Awize ] [ P_U1L1 ] [ P_D1L1 crate_part RMark ]
[ Awize ] [ temp crate_part RMark ] [ P_U1L1 ] -> [ Awize ] [ temp ] [ P_U1L1 crate_part RMark ]
(part自旋转,CWize,旋转时顺便清理CMark避免重入)
[ Awize ] [ Crate_U RMark ] -> [ Awize ] [ Crate_L ]
[ Awize ] [ Crate_L RMark ] -> [ Awize ] [ Crate_D ]
[ Awize ] [ Crate_D RMark ] -> [ Awize ] [ Crate_R ]
[ Awize ] [ Crate_R RMark ] -> [ Awize ] [ Crate_U ]
[ Awize ] [ Crate_UR RMark ] -> [ Awize ] [ Crate_UL ]
[ Awize ] [ Crate_UL RMark ] -> [ Awize ] [ Crate_DL ]
[ Awize ] [ Crate_DL RMark ] -> [ Awize ] [ Crate_DR ]
[ Awize ] [ Crate_DR RMark ] -> [ Awize ] [ Crate_UR ]
[ Awize ] [ Crate_UR_C RMark ] -> [ Awize ] [ Crate_UL_C ]
[ Awize ] [ Crate_UL_C RMark ] -> [ Awize ] [ Crate_DL_C ]
[ Awize ] [ Crate_DL_C RMark ] -> [ Awize ] [ Crate_DR_C ]
[ Awize ] [ Crate_DR_C RMark ] -> [ Awize ] [ Crate_UR_C ]
(清理临时标记)
[ is_rotating ] -> [] sfx5
[ RMark ] -> []
[ position ] -> []
(======== end ========)
[ Temp ] -> []
==============
WINCONDITIONS
==============
some Human on Exit
=======
LEVELS
=======
(
https://en.wikipedia.org/wiki/Box-drawing_characters
https://en.wikipedia.org/wiki/Geometric_Shapes_(Unicode_block)
╔╗
╚╝
┏┓
┗┛
n
u
cↄ
)
(for debug)
(
############
#........###
#........###
####.......#
####..p....#
####..o....#
####..o...e#
############
##########
#n......o#
#u...┏┓..#
#.n.p┗┛..#
#.uo.....#
#..cↄ.#..#
#........#
#........#
#...cↄ...#
#....#...#
#........#
##########
##########
#.......o#
#....╔╗..#
#...p╚╝..#
#..o.....#
#.....#..#
#........#
#.╔ↄ.....#
#.u.cↄ...#
#....#...#
#........#
##########
)
(
message test level 1
#########
#......e#
#......##
###....##
#..*.####
#.cↄp...#
#.o.oo.e#
#########
message test level 2
#########
#......e#
#......##
###....##
#...*####
#...cↄ..#
#.o.oope#
#########
message test level 3
#########
#......e#
#......##
###....##
#...*####
#.#cↄp..#
#.o.oo.e#
#########
message test level 4
#########
#......e#
#......##
###..p.##
#...o####
#...o...#
#...*..e#
#########
message test level 5
#########
#......e#
#......##
###*...##
#..p.####
#.cↄ....#
#.o.oo.e#
#########
)
message level 1-1 of 8
message GieGie use mind force to control crates.
message X to aim, choose a crate and press X to start controlling, X again to release.
##########
#........#
#.p..o...#
####.###.#
#...#....#
#e.......#
##.......#
##.......#
##*****###
##########
message level 1-2 of 8
##########
#........#
#.......e#
#.......##
#.......##
#op##.####
##########
message level 1-3 of 8
##########
#........#
#.p.o...e#
###.##..##
###.##..##
#####..###
####..####
##...#####
##o..#####
##########
message level 1-4 of 8
message GieGie cannot step up to a controlling crate.
##########
#........#
#........#
#p.o#...e#
######.###
######.###
##########
message level 1-5 of 8
message GieGie can control traps too.
##########
#........#
#........#
#........#
#p.#*.*.e#
##########
message level 1-6 of 8
##########
#.......e#
#......###
#........#
##p.o.*..#
##########
message level 1-7 of 8
#########
#......e#
#......##
###...*##
#....####
#...o...#
#p..o...#
#########
message level 1-8 of 8
#########
#####o###
#####*###
#####*###
#####*###
#####*###
###..*..#
##...*..#
##.p.*.e#
#########
message Congratulations! You compelete Chapter 1.
(
╔╗
╚╝
┏┓
┗┛
n
u
cↄ
)
message level 2-1 of 7
message When controlling a crate, use up/down to rotate it!
##########
#...n....#
#p..u..#.#
########.#
####..##.#
#e..cↄ...#
##########
message level 2-2 of 7
(everything about 1x2)
###########
#....#....#
#cↄ..#e...#
####.##...#
###.......#
###p...#..#
####.######
#.........#
###########
message level 2-3 of 7
###########
##........#
##.......e#
#........##
#.........#
##........#
##...cↄ...#
##.p.cↄ...#
###########
message level 2-4 of 7
##########
#.p.n....#
####╚ↄ##.#
#####.##.#
########.#
####n..#.#
#e.c╝....#
#####.####
##########
message level 2-5 of 7
###########
#.........#
#.........#
#.╔ↄ#.....#
#.u##.....#
#e#####...#
##........#
#.......###
#.........#
#.p.......#
###########
message level 2-6 of 7
###########
#.........#
#........e#
#........##
#.........#
#.........#
#....╔ↄn..#
#..p.uc╝..#
###########
(
message level 2-8
(
┏┓
┗┛
)
##########
###..#####
###...####
#p.┏┓...e#
###┗┛#####
##########
##########
)
(
message level 2-9
###########
#........e#
#........##
#.........#
#.........#
#.........#
#....┏┓┏┓.#
#.p.o┗┛┗┛.#
###########
)
message level 2-7 of 7
###########
#........e#
#........##
#.........#
#.........#
#.........#
#.........#
#..n..n.n.#
#p.╚ↄ.u.u.#
###########
message Thank you for playing! More levels will be made...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment