The real, full repository for this game is at https://github.com/roryokane/pegs-in-puzzlescript.
This Gist is just used by http://www.puzzlescript.net/play.html?p=87985a8a36b10c3ec386 to load the game in your browser.
The real, full repository for this game is at https://github.com/roryokane/pegs-in-puzzlescript.
This Gist is just used by http://www.puzzlescript.net/play.html?p=87985a8a36b10c3ec386 to load the game in your browser.
(The game Pegs for the TI-83+ graphing calculator, ported to the PuzzleScript engine.) | |
(The original Pegs was part of PuzzPack by Detached Solutions, and its main developer was Fred Coughlin. This port is by Rory O’Kane.) | |
title Pegs | |
author Fred Coughlin / Rory O'Kane | |
homepage http://roryokane.com/ | |
(homepage of the original Pegs is http://www.detachedsolutions.com/puzzpack/pegs.php) | |
background_color LightGray | |
text_color Black | |
key_repeat_interval 0.25 (to prevent accidental falling down pits, etc.) | |
run_rules_on_level_start (to draw hole boundaries) | |
======== | |
OBJECTS | |
======== | |
(some colors chosen using HUSL: http://boronine.com/husl/) | |
(also mixed some colors using http://www.colorhexa.com/) | |
Background | |
White | |
NormalSolidBlock | |
#111 #222 #444 #555 #bbb | |
10001 | |
02420 | |
04340 | |
02420 | |
10001 | |
CreatedSolidBlock | |
(mixed with 25% triangle colors) | |
(first two colors mixed with triangle outline, the rest with fill) | |
#141d18 #202a25 #5d6b63 #6a7870 #b6c5bc | |
10001 | |
02420 | |
04340 | |
02420 | |
10001 | |
NormalPlayer | |
(Orange = #eb8931) | |
(HUSL Lightnesses 66, 63, 58, 54) | |
#eb8931 #db7f2d #cd762a #be6d26 | |
.010. | |
0.2.0 | |
12321 | |
0.2.0 | |
.010. | |
SelectingPlayer | |
(HUSL Lightnesses 88, 84, 80, 76) | |
#dddddd #d1d1d1 #c6c6c6 #bbbbbb | |
.010. | |
0.2.0 | |
12321 | |
0.2.0 | |
.010. | |
(peg colors are HUSL pastel Saturation 100%, Lightness 25% and 85%) | |
(insides of selected pegs are 50% Saturation) | |
Circle | |
#3b3d1c #d4d8a8 (hue 90, yellow) | |
.000. | |
01110 | |
01110 | |
01110 | |
.000. | |
SelectedCircle | |
#db7f2d #d4d6bf | |
.000. | |
01110 | |
01110 | |
01110 | |
.000. | |
Square | |
#1a404e #acdbf3 (hue 225, blue) | |
00000 | |
01110 | |
01110 | |
01110 | |
00000 | |
SelectedSquare | |
#db7f2d #c2d8e4 | |
00000 | |
01110 | |
01110 | |
01110 | |
00000 | |
Triangle | |
#1b432e #a8e1c0 (hue 145, green) | |
0.... | |
00... | |
010.. | |
0110. | |
00000 | |
SelectedTriangle | |
#db7f2d #bfdbca | |
0.... | |
00... | |
010.. | |
0110. | |
00000 | |
Cross | |
#543239 (hue 0, red) | |
..0.. | |
..0.. | |
00000 | |
..0.. | |
..0.. | |
SelectedCross | |
#db7f2d | |
..0.. | |
..0.. | |
00000 | |
..0.. | |
..0.. | |
EmptyHole | |
Black | |
(the colors of falling pegs have 50% of original Lightness) | |
HoleWithFallingCircle | |
Black #20220d #64664e | |
00000 | |
00100 | |
01210 | |
00100 | |
00000 | |
HoleWithFallingTriangle | |
Black #0c2518 #4e6b5a | |
00000 | |
01000 | |
01200 | |
01110 | |
00000 | |
HoleWithFallingCross | |
Black #301b1f | |
00000 | |
00100 | |
01110 | |
00100 | |
00000 | |
HoleWithFallingPlayer | |
(player colors are based on the second and fourth normal colors) | |
Black #6e3d11 #61350e | |
00000 | |
00100 | |
01210 | |
00100 | |
00000 | |
HoleWithSettlingSquare | |
#499cbb #d6ecf9 (lightened by 45%) | |
00000 | |
01110 | |
01110 | |
01110 | |
00000 | |
FilledHole | |
#ebf6fd #fbfdfe (lightened by 90%) | |
00000 | |
01110 | |
01110 | |
01110 | |
00000 | |
HoleBoundaryUp | |
#1a1a1a (halfway between #111 and #222) | |
00000 | |
..... | |
..... | |
..... | |
..... | |
HoleBoundaryRight | |
#1a1a1a | |
....0 | |
....0 | |
....0 | |
....0 | |
....0 | |
HoleBoundaryDown | |
#1a1a1a | |
..... | |
..... | |
..... | |
..... | |
00000 | |
HoleBoundaryLeft | |
#1a1a1a | |
0.... | |
0.... | |
0.... | |
0.... | |
0.... | |
InvisibleDeadPlayer | |
White | |
..... | |
..... | |
..... | |
..... | |
..... | |
======= | |
LEGEND | |
======= | |
Player = NormalPlayer or SelectingPlayer or InvisibleDeadPlayer | |
SelectedBlock = SelectedCircle or SelectedSquare or SelectedTriangle or SelectedCross | |
Block = Circle or Square or Triangle or Cross or SelectedBlock | |
SolidBlock = NormalSolidBlock or CreatedSolidBlock | |
Hole = EmptyHole or HoleWithFallingCircle or HoleWithFallingTriangle or HoleWithFallingCross or HoleWithFallingPlayer | |
HoleBoundary = HoleBoundaryUp or HoleBoundaryRight or HoleBoundaryDown or HoleBoundaryLeft | |
. = Background | |
· = Background | |
P = NormalPlayer | |
✠ = NormalPlayer | |
X = NormalSolidBlock | |
⛝ = NormalSolidBlock | |
# = EmptyHole | |
■ = EmptyHole | |
o = Circle | |
○ = Circle | |
s = Square | |
□ = Square | |
\ = Triangle | |
◺ = Triangle | |
+ = Cross | |
✚ = Cross | |
======= | |
SOUNDS | |
======= | |
(block interaction sounds) | |
Block move 16776907 | |
sfx0 57315905 (destroy by combining matching blocks) | |
sfx1 93422102 (combine triangles, forming a wall) | |
sfx2 29154902 (combine crosses, starting replacement selection) | |
sfx3 39221701 (push block down hole) | |
sfx4 9351102 (fill hole with square block) | |
sfx5 60846506 (cycle selected block) | |
sfx6 57903306 (confirm selection) | |
(failure sounds) | |
sfx9 36821508 (combined blocks don't match) | |
sfx10 3824708 (player falls in hole) | |
(game sounds) | |
undo 418707 | |
startlevel 27686900 | |
restart 73263508 | |
endlevel 2807108 | |
================ | |
COLLISIONLAYERS | |
================ | |
Background | |
FilledHole, HoleWithSettlingSquare | |
Player, SolidBlock, Hole, Block, SelectedBlock | |
HoleBoundaryUp | |
HoleBoundaryRight | |
HoleBoundaryLeft | |
HoleBoundaryDown | |
====== | |
RULES | |
====== | |
(you can't move when you're dead) | |
[ > InvisibleDeadPlayer ] -> [ InvisibleDeadPlayer ] | |
[ Action InvisibleDeadPlayer ] -> restart | |
(allow scrolling through selections without moving player) | |
DOWN [ > SelectingPlayer ] [ SelectedTriangle ] -> [ SelectingPlayer ] [ SelectedCross ] sfx5 | |
(simpler rules like this don't work for some reason: DOWN [ SelectedTriangle ] -> [ SelectedCross ]) | |
DOWN [ > SelectingPlayer ] [ SelectedCross ] -> [ SelectingPlayer ] [ SelectedSquare ] sfx5 | |
DOWN [ > SelectingPlayer ] [ SelectedSquare ] -> [ SelectingPlayer ] [ SelectedCircle ] sfx5 | |
DOWN [ > SelectingPlayer ] [ SelectedCircle ] -> [ SelectingPlayer ] [ SelectedTriangle ] sfx5 | |
UP [ > SelectingPlayer ] [ SelectedTriangle ] -> [ SelectingPlayer ] [ SelectedCircle ] sfx5 | |
UP [ > SelectingPlayer ] [ SelectedCircle ] -> [ SelectingPlayer ] [ SelectedSquare ] sfx5 | |
UP [ > SelectingPlayer ] [ SelectedSquare ] -> [ SelectingPlayer ] [ SelectedCross ] sfx5 | |
UP [ > SelectingPlayer ] [ SelectedCross ] -> [ SelectingPlayer ] [ SelectedTriangle ] sfx5 | |
[ > SelectingPlayer ] -> [ SelectingPlayer ] | |
(action confirms selection) | |
[ Action SelectingPlayer ] [ SelectedCircle ] -> [ NormalPlayer ] [ Circle ] sfx6 | |
[ Action SelectingPlayer ] [ SelectedSquare ] -> [ NormalPlayer ] [ Square ] sfx6 | |
[ Action SelectingPlayer ] [ SelectedTriangle ] -> [ NormalPlayer ] [ Triangle ] sfx6 | |
[ Action SelectingPlayer ] [ SelectedCross ] -> [ NormalPlayer ] [ Cross ] sfx6 | |
(player can push blocks) | |
[ > Player | Block ] -> [ > Player | > Block ] | |
(square pegs fill holes; other pegs fall in and disappear) | |
(when you fall down a hole, you must reset or undo) | |
(finish falling animations:) | |
[ HoleWithSettlingSquare ] -> [ FilledHole ] | |
[ HoleWithFallingCircle ] -> [ EmptyHole ] | |
[ HoleWithFallingTriangle ] -> [ EmptyHole ] | |
[ HoleWithFallingCross ] -> [ EmptyHole ] | |
[ HoleWithFallingPlayer ] -> [ EmptyHole ] message You fell and died. | |
(trigger falling animations:) | |
[ > Square | Hole ] -> [ | HoleWithSettlingSquare ] sfx4 again | |
[ > Circle | Hole ] -> [ | HoleWithFallingCircle ] sfx3 again | |
[ > Triangle | Hole ] -> [ | HoleWithFallingTriangle ] sfx3 again | |
[ > Cross | Hole ] -> [ | HoleWithFallingCross ] sfx3 again | |
[ > Player | Hole ] -> [ InvisibleDeadPlayer | HoleWithFallingPlayer ] sfx10 again | |
(draw hole boundaries) | |
UP [ Hole no HoleBoundaryUp | no Hole ] -> [ Hole HoleBoundaryUp | no Hole ] | |
RIGHT [ Hole no HoleBoundaryRight | no Hole ] -> [ Hole HoleBoundaryRight | no Hole ] | |
DOWN [ Hole no HoleBoundaryDown | no Hole ] -> [ Hole HoleBoundaryDown | no Hole ] | |
LEFT [ Hole no HoleBoundaryLeft | no Hole ] -> [ Hole HoleBoundaryLeft | no Hole ] | |
(remove hole boundaries when the hole disappears) | |
[ HoleBoundary no Hole ] -> [ ] | |
(some pegs disappear when combined) | |
[ > Circle | Circle ] -> [ | ] sfx0 | |
[ > Square | Square ] -> [ | ] sfx0 | |
(combined triangles turn into a solid block) | |
[ > Triangle | Triangle ] -> [ | CreatedSolidBlock ] sfx1 | |
(combined crosses let you freely select a replacement) | |
[ > Cross | Cross ] [ > Player ] -> [ | SelectedTriangle ] [ > SelectingPlayer ] sfx2 | |
(player gets scolded if non-matching pegs are combined) | |
[ > Circle | Block no Circle ] -> [ Circle | Block ] sfx9 message They don't match. | |
[ > Triangle | Block no Triangle ] -> [ Triangle | Block ] sfx9 message They don't match. | |
[ > Square | Block no Square ] -> [ Square | Block ] sfx9 message They don't match. | |
[ > Cross | Block no Cross ] -> [ Cross | Block ] sfx9 message They don't match. | |
============== | |
WINCONDITIONS | |
============== | |
No Block | |
======= | |
LEVELS | |
======= | |
(help) | |
message To beat each level you must destroy all of the pegs. If two like pegs are pushed into each other they disappear, except for triangles which form a solid block and plusses which allow you to choose a replacement block. | |
XXXXXXXXXXXX | |
X··········X | |
X···P··o···X | |
X····++\···X | |
X···□■·o···X | |
X··········X | |
X··········X | |
XXXXXXXXXXXX | |
message Nice Pegging!!! | |
XXXXXXXXXXXX | |
XXX···\\···X | |
XXX···X····X | |
XXX···XX···X | |
P···\\oo···X | |
XXX···XX···X | |
XXX···X····X | |
XXX···\\···X | |
message Nice Pegging!!! | |
XXXXXXXXXXXX | |
XXXXXXXXXXXX | |
X·····\·P··· | |
X·XX·XX·XX\X | |
X··\·······X | |
XXXXXXXXXX\X | |
XXXXXXXXXXXX | |
XXXXXXXXXXXX | |
message Nice Pegging!!! | |
XXXXXXXXXXXX | |
■·□·\·\····X | |
■·+·o·\····X | |
■·o·□P\····X | |
■·\·□·\·+··X | |
■·□·o·\····X | |
■·o·□·\····X | |
XXXXXXXXXXXX | |
message Nice Pegging!!! | |
·■■·□■··■··· | |
·■■·□□··■··\ | |
\■■·■■■·X\\\ | |
·■■·■□■·X\·\ | |
·■■·■P■o■··· | |
\■■·■■■·■··· | |
·■■·□···■··· | |
·■■··o··■oo· | |
message Nice Pegging!!! | |
P··········· | |
\·········+· | |
\··\···\\··· | |
·XX\XXXXXXX· | |
············ | |
·XXXX·XX·XXX | |
·+······o□■· | |
···XXXX··XXX | |
message Nice Pegging!!! | |
XXXX··XXXXXX | |
XXX■··□■·XXX | |
XXXX·XoX·XXX | |
XXX\++P□\■XX | |
XXXX·X\X···X | |
XXXX··o··X·X | |
XXXXXXX·XX·X | |
XXXXXXX····X | |
message Nice Pegging!!! | |
XXXXXXXXXXXX | |
··+++++□++·· | |
··+++\++o+·· | |
P·+++\++□+·· | |
··++□o++++·· | |
··++o\++++·· | |
··++\□++++·· | |
XXXXXXXXXXXX | |
message Nice Pegging!!! | |
····XX······ | |
·+··XX······ | |
····\□□+·XX· | |
·X··\X···XXX | |
···\\PX····\ | |
····\X··XXXX | |
·+X·\oo···+· | |
····□X······ | |
message Nice Pegging!!! | |
XXXX\XXX···· | |
XXXX·XXX···P | |
··□·■■■···+· | |
·++·■■■·□+□· | |
·++·■■■·□+□· | |
····■■■·+··· | |
XXXXX·XX···· | |
XXXXX\XX···· | |
message Nice Pegging!!! | |
XPX·XX■··XXX | |
X···o□■■·\\· | |
X\X\·X■··\\· | |
X··\·X···++· | |
X\X··X·X·++· | |
·····X·XX·X· | |
·+□+·X·X···· | |
····\\\XXXXX | |
message Nice Pegging!!! | |
P·····XXXXXX | |
X\X\X\XX···X | |
······X··X·X | |
X\X\X\X····X | |
······XXoo■X | |
X\X\X\XX·\\X | |
··········\X | |
X·XXXXXX··XX | |
message Nice Pegging!!! | |
XXXXXXXXXXXX | |
··□·\·o·□··■ | |
··\·o·\·□··■ | |
P·+·□·o·□··■ | |
··o·□·\·□··■ | |
··□·\·o·□··■ | |
··+·+·\·□··■ | |
XXXXXXXXXXXX | |
message Nice Pegging!!! | |
XXXXX··X··XX | |
XX·\··□··\·X | |
X■··oX·XX··X | |
XXX··+o+··XX | |
XX··XX·Xo··■ | |
XX·\··□···PX | |
XX··X··XXXXX | |
XXXXXXXXXXXX | |
message Nice Pegging!!! | |
···■·■·■·■·X | |
···■·■·■·■·X | |
·+□■·■·■·■·\ | |
·□·■·■□■·■·X | |
·+·■·■·■·■·X | |
P··■□■·■·■·X | |
··□■·■·■□■·X | |
··□■·■·■·■·X | |
message Congratulations! | |
message You finished Pegs! |