From 02b955a543b98447b477d5caee27c7b7885dff38 Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Sat, 15 Aug 2015 23:28:46 -0700 Subject: [PATCH] ladder now breaks. --- desktop/ready-for-cat.edn | 1 + desktop/resources/cat-tree/destroy-ladder.png | Bin 0 -> 4348 bytes .../resources/cat-tree/ladderbreak.pxa/0.pxi | Bin 0 -> 264179 bytes .../resources/cat-tree/ladderbreak.pxa/1.pxi | Bin 0 -> 264179 bytes .../resources/cat-tree/ladderbreak.pxa/10.pxi | Bin 0 -> 264179 bytes .../resources/cat-tree/ladderbreak.pxa/11.pxi | Bin 0 -> 526583 bytes .../resources/cat-tree/ladderbreak.pxa/12.pxi | Bin 0 -> 526583 bytes .../resources/cat-tree/ladderbreak.pxa/13.pxi | Bin 0 -> 526583 bytes .../resources/cat-tree/ladderbreak.pxa/14.pxi | Bin 0 -> 526583 bytes .../resources/cat-tree/ladderbreak.pxa/15.pxi | Bin 0 -> 526583 bytes .../resources/cat-tree/ladderbreak.pxa/16.pxi | Bin 0 -> 526583 bytes .../resources/cat-tree/ladderbreak.pxa/17.pxi | Bin 0 -> 526583 bytes .../resources/cat-tree/ladderbreak.pxa/2.pxi | Bin 0 -> 264179 bytes .../resources/cat-tree/ladderbreak.pxa/3.pxi | Bin 0 -> 264179 bytes .../resources/cat-tree/ladderbreak.pxa/4.pxi | Bin 0 -> 264179 bytes .../resources/cat-tree/ladderbreak.pxa/5.pxi | Bin 0 -> 264179 bytes .../resources/cat-tree/ladderbreak.pxa/6.pxi | Bin 0 -> 264179 bytes .../resources/cat-tree/ladderbreak.pxa/7.pxi | Bin 0 -> 264179 bytes .../resources/cat-tree/ladderbreak.pxa/8.pxi | Bin 0 -> 264179 bytes .../resources/cat-tree/ladderbreak.pxa/9.pxi | Bin 0 -> 264179 bytes .../cat-tree/ladderbreak.pxa/CelData.plist | 78 ++ .../advent/screens/rooms/#outside_house.clj# | 752 ++++++++++++++++++ 22 files changed, 831 insertions(+) create mode 100644 desktop/ready-for-cat.edn create mode 100644 desktop/resources/cat-tree/destroy-ladder.png create mode 100644 desktop/resources/cat-tree/ladderbreak.pxa/0.pxi create mode 100644 desktop/resources/cat-tree/ladderbreak.pxa/1.pxi create mode 100644 desktop/resources/cat-tree/ladderbreak.pxa/10.pxi create mode 100644 desktop/resources/cat-tree/ladderbreak.pxa/11.pxi create mode 100644 desktop/resources/cat-tree/ladderbreak.pxa/12.pxi create mode 100644 desktop/resources/cat-tree/ladderbreak.pxa/13.pxi create mode 100644 desktop/resources/cat-tree/ladderbreak.pxa/14.pxi create mode 100644 desktop/resources/cat-tree/ladderbreak.pxa/15.pxi create mode 100644 desktop/resources/cat-tree/ladderbreak.pxa/16.pxi create mode 100644 desktop/resources/cat-tree/ladderbreak.pxa/17.pxi create mode 100644 desktop/resources/cat-tree/ladderbreak.pxa/2.pxi create mode 100644 desktop/resources/cat-tree/ladderbreak.pxa/3.pxi create mode 100644 desktop/resources/cat-tree/ladderbreak.pxa/4.pxi create mode 100644 desktop/resources/cat-tree/ladderbreak.pxa/5.pxi create mode 100644 desktop/resources/cat-tree/ladderbreak.pxa/6.pxi create mode 100644 desktop/resources/cat-tree/ladderbreak.pxa/7.pxi create mode 100644 desktop/resources/cat-tree/ladderbreak.pxa/8.pxi create mode 100644 desktop/resources/cat-tree/ladderbreak.pxa/9.pxi create mode 100644 desktop/resources/cat-tree/ladderbreak.pxa/CelData.plist create mode 100644 desktop/src-common/advent/screens/rooms/#outside_house.clj# diff --git a/desktop/ready-for-cat.edn b/desktop/ready-for-cat.edn new file mode 100644 index 00000000..2d40c208 --- /dev/null +++ b/desktop/ready-for-cat.edn @@ -0,0 +1 @@ +{:active? true, :coaxed-sheep? true, :convinced-wizard? true, :time :day, :inventory (:stick :ladder :flask-1-strength :wool :recipe :teddy :frog-legs), :has-met-gandarf? true, :seen-intro? true, :wizard-left? false, :clues #{:name}, :hud-active? false, :allowed-to-keep-teddy? true, :current-riddle :frog-legs, :last-room :cat-tree, :wants-toy true, :mints-eaten 0, :object nil, :obtained-items #{:flask-1-with-cream-of-mushroom :teddy :recipe :mushrooms :flask-1-with-milk :wool :portrait :slobber :flask-1 :flask-1-strength :mandrake :grass :stick :ladder :carrot :flask-1-slobber}} \ No newline at end of file diff --git a/desktop/resources/cat-tree/destroy-ladder.png b/desktop/resources/cat-tree/destroy-ladder.png new file mode 100644 index 0000000000000000000000000000000000000000..ab8e5ca464dcb2712882928791b4136963f25c33 GIT binary patch literal 4348 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
    xfAWH3{VAUxO+=CsJx(up-;mAIUfyj+R!it@5 zIoQU#N~|qr1Ge6KtSG)R6cg)LtJ~FYf5M9CQ?)&>vP$sRI0*Vw zrN~}JDMSSj%}mpt>_aCb`Ftv6Yh;$kAV5DT%C=LR8a+|Js&-dc`A%D7Ah2y`GN}bF zost$`4j|M*?H)ufO?B_)X;drC4&9SImsm4>u9x>3H2gwhO=MUukp~Dew7M%R_$l;A z6!`h8?-z^eOdly5K{4F6S~qn#2p{)qw!2s+Yq7uMm_6hoG`}4~j6(;J$9^0?_?j2k z_C9d{^V{phakx1l)o{&lo~=m;KKSxMOa6WzawuWnuKAx7+er(QVDaPV&9{w0ANhNa zYfOJJ%rn?yI}hCS4m--G%bZd@L=`-dt6+7Mk^{Skow67yg6l$W{`9>r>PkfwX*xkA zPr#ZRhU}6B87AfA?}T6^>guqRVRoNl`kyBqu3271z{9w9i+JisbYvkxRFZ!1Os;V@ z{{c4ZdQb35ffUp^qrB_)lqV^TlX{AD(#y`SbuCuS1Dp2~C zvB^u;-wvjRov1G(($T*>qf-<9Yn5#Oxa*>;Q(Y$0JFKkWmp1EWhSAc$I+V&6bfrLqup$WFS6hFeh&lrPLjcYXvxaAG zdeGZqN-a7Ib31r~1bKT!oTuD!A<2gQ6Ddg2qYdZ+HO%uJYC~X0CEfdWrq5;kj&T%A ziUhvhl51CJVqulx-558*O#X>6_HRjyD8MGKJVU&$lj{(;dc>O5a9Oi%Ega185H#Rh zJ*3v1A(BEE#t*)9TiGGxvPtyuUolYFn}DxQqgmWzb&pLscNll{aQFZCMp*9`1fK0B zYL;p;C<0eiz3XQ5Fpmo-280?m6ic5%g0U*Jg0%9B1@+5H>8>5F+ulgh0}OGtcdaxb lYkVOf`)?2K@S?h)wtZ5iw92@wbNQ=526|wqU9RaE`G4gak0}5E literal 0 HcmV?d00001 diff --git a/desktop/resources/cat-tree/ladderbreak.pxa/0.pxi b/desktop/resources/cat-tree/ladderbreak.pxa/0.pxi new file mode 100644 index 0000000000000000000000000000000000000000..0821728251dc6907c35f3a4c11cef2ab1abc892d GIT binary patch literal 264179 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 z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXFyd!}>y!zs6@90K15g_w=z4JE7vv7SbFJ#SLV!U9e82zn%W&7*tzpV$%nhsW3z=yu3XGka?7$k zS8XbnwibK4)05u3+E&hO%jdQq8r-lYn=c-E+npXieBr-tORC~$R&sK3%Ja3?PQC7< z*WYmCnvL;<<)uQY+}<<%n$#zC$&6(B{*T{Od-E;3I$JWGefdgmeM{!RO_}~|Pi|Rb zReD4+ZC}$xpZH|laA08QQ_XLj4uAABx9nQgFmKTt$5~a$wC?nnOd&ham+P%Nw9=U4 zbGOGxTi1cH!9yeWe*O!0-1)`3nh!e|L~UJ7TT7Kv@hwE-+PYSiif_BTzOC!fwB6}+ zOQs|6mY0f^a;Z?rmDjaouE-7amx{f)^8V|l*6tqKlgvy`O-|c?&rP*ozIRu9j9Ch%)Z&&6w4Lx`e@9o#0f9N|8*M9er zN58jWQ#s$8=__q5^fr~V+t&=gJ@93&A3kd@<|~=}HMx<=>|{T;=6Nvh)?bYygVG%1=9&5hFS=dLG)DgO!TYh*=S$%+vxYv%h4aBzeoR! zUXA`;RW-b%>UgP+bycUManXcmViaqvo*LCf)1&%mW;7>?HCHc*&X1Nx%c7>}vZy6$ zi>`>;qt0kev@Yt6@=bH+n33JbE&EI(jC0E_x|?Ir>}l zT2<rf5af9Ic94qsyaAv^IKQ z)E#A`-ssAxFWMYkT{ZHE?a{T-&CzYq-stJ*H_@M>KSzI!UWxt@{i|x^h*UHx8W&B7 zCPtH@$AZm(MMy*k2v>_@)#VDRX;>PIC=$`1&=-KF{=r2_xQ%6N( zqj*Lto{^dw)kUX9bEA%^D_R@HoT=DXD&|Y=iekRh1JM&v>?`%V=*1}ZQxkvHHKU^w zqnT06S2HV$_1DC_H4CDPqf4T;s6ARAbw^i5TcUEbBl=);Lv(v|N3^@@z>ymMLmfVT NdGOckuOn;r{09?SYA^r* literal 0 HcmV?d00001 diff --git a/desktop/resources/cat-tree/ladderbreak.pxa/12.pxi b/desktop/resources/cat-tree/ladderbreak.pxa/12.pxi new file mode 100644 index 0000000000000000000000000000000000000000..e6ec6a380989972e01b8d8b89bf301406870ee5e GIT binary patch literal 526583 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 M^Y;4d@Vf2)0YJ!^t^fc4 literal 0 HcmV?d00001 diff --git a/desktop/resources/cat-tree/ladderbreak.pxa/13.pxi b/desktop/resources/cat-tree/ladderbreak.pxa/13.pxi new file mode 100644 index 0000000000000000000000000000000000000000..2f00127ebc6b1a32514c6b6a7c8d563187ffc1de GIT binary patch literal 526583 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 literal 0 HcmV?d00001 diff --git a/desktop/resources/cat-tree/ladderbreak.pxa/15.pxi b/desktop/resources/cat-tree/ladderbreak.pxa/15.pxi new file mode 100644 index 0000000000000000000000000000000000000000..7db292a0134cd2a67c4e46f3f4d8908c64b174d2 GIT binary patch literal 526583 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 Y_f{P^QiDIJgU8Pg{&(ngSk0dQ08Q?5Pyhe` literal 0 HcmV?d00001 diff --git a/desktop/resources/cat-tree/ladderbreak.pxa/16.pxi b/desktop/resources/cat-tree/ladderbreak.pxa/16.pxi new file mode 100644 index 0000000000000000000000000000000000000000..f8daca9e98124ad6d31ee5b80ca14014b5b445b2 GIT binary patch literal 526583 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 literal 0 HcmV?d00001 diff --git a/desktop/resources/cat-tree/ladderbreak.pxa/2.pxi b/desktop/resources/cat-tree/ladderbreak.pxa/2.pxi new file mode 100644 index 0000000000000000000000000000000000000000..b3de49f3fb32c31943d465f9a1eedfdb3eba3f80 GIT binary patch literal 264179 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 zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0_RZRzHJ-6^MB1b+@7Tg5IBbdsrJwI7HMAIp6y)M6CkiW1X3NJ z?QU+n@!I+C8}jyS=enK%fu$EnwO?#ocU2rq$9c`G|5hpI1m0Kzsg8?ns_})|bZr_> z=Wnbhw_5@PQtfV7d--=#QeSFQf8M6Pb}dZ;1m0Kzc^#+vPCHNMsZIT@Z5q$pe4W;D z=L85WZ-L_H`0Lqe{xd*Y$%ut;OaWCqQ871&Vc_j*GS2`d*N($=lZJ^7Ayl^iO671PCl9km_}zHr05(PO;|G zaj`9~vDkf$6Ckkk0(s4*U8LXP73(s%UmzX>Q&Y`-{g*|AclxfWSfm#TtGs$9Zk1>xy-r`dZtC z?yH{wfu$G7>ox77^>=@%Kees3-Fn_SzqocP-%U2+; z-{SZ13+*(&rrlVo|Kb|?aq7?8cJuTRAh7fTt@WSkxLCibo{PIp*QK_2eOfd173Vo7 zKw$X@q#8|as`XUY={z4V?mAunTHE4W#{>v04}sTO*J-z}<$WRj|GzY+^&Y8TOMt-A z3bfYdV!!_@e%`m+dAs?o_h>gy9{~dASD;;8wyWRbuGD`~!!dz3u0Zj7`PSohPt|%& zyYu}0phw%~#n1lM>xyIT-UF8IDczX>fp!9|HN4Pys_iq4w~nPb zscmgX@_e-yf|+L^ za3Ki1u;bpH?|86xyjGr>nJyo$jGj8I%p4dTzPCEwtk$Q?joG=K1EYh(yT=}>j5lM( zefJ+69Nu-bSstrZ?rt>7vnTI+=fJ+f;rZj9bv-x7HM@rn^<44lRi~FaxqIipgS*Pr z>GcnkXDf}3ckMsL7*qD_-8VEk-#a%lkPcrS-QWG-LkA8VJoMwSV7b<;G^WeV%01=r zM<*Ngqtg?Idair5cc@W0R;?UAJ$UeN-0Ae`p`NSqj{kL8))9X;WY=WtUg{oOH$G8$ zcyj+(++jz(R&VSb&;QPD$ga(<&#rs1`bhVqwZrkW`=+YRN-)h|G<>8yUb&~gqo*rd z8;?>y5*N%5%)L98nLo^@&eRU?>f5v}z3%A9)*k9vGaUR=m5KGIcN%LP|A`nG8l4}T zJw5X5>|-b1^Y~8=v>gnhq0xJf)|>U|?;^T#XmnS7x~2QT(CF!95B2m64vz%hj{0=7 zQLoi1jfVz@-&L78QlFlvG+rEE*PXrhr?aq%k=!ZXY zsHg1)pZU3;|7iZ8Z3h?IeF*--6Z1%?A2Ocp;p*hvFP_3{?SJVLzx2uOUw-mapFTL* zs7?$|)sNOD?roHh@6S)?zk&zyqrKDB=5Y0~%BpN*)|=gwe^ozIJG{H6r*G5dzEiK; zp!DqfWIyAbYJbkP@GxzMk ztH*&gIQ-7aY-Qr^#`skASf%mjzxMo|M!nw5I-_V-MJ|tA7uguOEwVXsM`SEA6*(Gt zPvirUCn8TqJ{x%^@@(X}$n%jeMZO&QO60d9Uyb~J%kxL?%Mpj3zh+Gx9CbBkiePl!AmdK{a?UAjK*n8*p$X$^g zk)4r&$o-KAB7>2kNW5uu9*k5vN}Z2JjzmsG-XD1)@`=c2BXg0jM1C{!yOH0Ed^Pe% zk-v(3GxGP5e~tV{M`=Z8q!j6nTobu1a(`rhJy6$d@8tkNjoi8)RcrQmj|HEE4OLHb-_w;<-wP zB4d$wo>CV1SmaZYFGga$(sPm6e<{{2{YK<#kw1?7S>)wN7?%Df@^_JMMgBSRpOOFW gD6PCGvNm!>RA=WC6*iGjxC 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 JSz5XAe*t>6bKC#` literal 0 HcmV?d00001 diff --git a/desktop/resources/cat-tree/ladderbreak.pxa/5.pxi b/desktop/resources/cat-tree/ladderbreak.pxa/5.pxi new file mode 100644 index 0000000000000000000000000000000000000000..58dc4cf55fe1b1588350bcbd5b5fb79ab6017748 GIT binary patch literal 264179 zcmeI$eQcdqeFtzmzM&~~o7?m?Z39W;wlLaYr%Bqdx3+2US{ld0iQ}|U!nJ*C-}c5g zT;C*fL$_zV?H$&^SYg0gXQh;a5YjdwO%p=E&?F?FFKj{x_=o+ov5CPZP1DAHPtwyo z++8P)Hfk^WxccUt=RD_}=R6hFK9ds$Cu`71vD)L7qKJ9 zj6YDFXwB~Jt28I3Ycag5uhlrTs;m3mkA1rQn)6m%c2(c&`v*2|`GsG+?e;r<>7E@! zzx?KrJ(cO1=HVm1_Kx5Dt@pm~k3ae+$NzM9-^}59{Tt`M@`BzAFIri?c-1ABj@B!4 z@sP3cscns!`)gD89cosO)T&2EY7bRM`zGp@+1XuF&D!Li7mkuG%P!BZ&u+-BE%!Wg zdG8gg?;RT1@WSaHzcTB|Rz81q?=@>)_3E|ju3f*Uai}s;Yt8Mh9jr`Mcg<7|R`(pK z&DO^2)$G#jvaFO{a{jZ|UEX{B&urKe+dNpEn>~KRYhIfz&t8$8cl>oX-juD#%Gt%) zs@<(xy*j)5Xl=4JJvv>jO-;Ar;Ww{-d{cIQwld%1mN)$T{Htl2a5Q=O;wbo0~xS^@-?u0X2c{Dj5d_oeaF<~5)CsV%-$ zTATJM-qR;QU}*}ZS}wNjCoSG9_KWk{(TWD?jT-O8$EFFQo zZqsRszrRak#kRf1)8~8|Z(m>BySR@&0Rl@ypje~r^}EmsQ@yvh?dywsFSM6&0t6OE zAg|B#8Q$sN^=EUc;y%Tn3um*3xdaHjd;;zDpK3VO??NYOpO;^!HEGXuz0e-U2@qIZ zfmEZZO?8~=JDo1SPW`+s&QEL7Sf{qQR-XWYr6G{lYVjnUYB$w)ab6lL&d=}X*ZJ=N zigVkaQM{*5fWYDjwAW_)@9&Cro}V(mPGkA?nbvojlaKi#KwxnN+G{sIO?&<4bBgoY zuiM|CeSLnvxW0Y9YXSroM<9KccWOJGD1Gj?*K=`wey@0)`knSOMu5QL38dP5scrh~ zPi;DRzCMkmwtdeuS4)7v(hz8`(S@!Ts_8U8zn}W4O>0uSG~U=L2oOjDd2ObCYCHY^ zd#dS$+O#%rJFU;hJ3T8O_eFrf%P(-cddzG1OeZS-EGW)Z|3wXb0!vfiboKw!IPuH< zyr0H9*ptAyB9PZ(F~!gG|LcBw&beaeJqVl&0;w)vuJ&9o^9}^g1%YR_-MRgZ_x4TH zE3>mRm4nr>lilj8QKRTGY&yVfxz4yL-`}QArOKe!Fx2nyVN~?NDW#Yl9X5;Y84FOCj3 zt4C_pqo;1}KNwFsb$OtCSw8STre$66-@5FIY|V4M<7*}+tM^as9gin$Yt$Rf-4pqr z*)`df+11%q&(`RVJ!;40M%yveoe_jYBcv#Etp4<}xR` z`O?|?!5#e@wxq9Hy0X;=%Bx0#f4Vxk_S8vZkE6d5cZSDK+?zXf=gGN;j=k;SUmfgt zGl+)A?mXORHD-Q-=+fb_9gUf`;eEqnr?x#%E)R{22Hv*DOsmhK>Cvziy5f-yGlC(PINQt{r$d zj`G;!qr+o^v3h=f@P*#!vHly^_UAXB_}JL+*tW{dk;?4+lY=kz18ZpHP1U*TDrNM^Xs2@dRMd2Xl30|G%F$(N3M#jkK7d57`Y`f9+{3Dj=U}MuE-;iMJyM$fqKoj(jHa7m?3Lz7Y9ROr!w?=M@Y>RA<3`Xvb+!Gm!3`gRJ zM)&?mwX4+qVB}EbSmd3NM^4-WkM1B4@*9!&MdBGf@r<62 zMjnei8TnM?8&Ir2A=uSK4ZgkkABk-v|8Kk_e;|A_ooS84fqk=2oFBJsV>ze@Sv Q+x+X3Cz}`kEG=LE-^RulTL1t6 literal 0 HcmV?d00001 diff --git a/desktop/resources/cat-tree/ladderbreak.pxa/6.pxi b/desktop/resources/cat-tree/ladderbreak.pxa/6.pxi new file mode 100644 index 0000000000000000000000000000000000000000..3b7ef5c489648f7dcefdc7562c180c88d7c361e3 GIT binary patch literal 264179 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

    -SV@m7&)Voz~v7 zu`+bj?rrToM^3vVpKt5v3cPidp<1<4E*Gm;w{=`q92u?*^%tv$`sOtzAO1*kc5+TK z|Im#)8*jRKcW2DEuHBSh)V#E1#f2@)TGp&-ZkgY_bj6BQYc5=~V%f@-@up?f%4Mrs zmakq@m#E z&mG1)djB(beE!bHFWhzaJ=+JWrT&h=%ARun`f6d{mh|oTZ*W_>)j3qEb(F3vPDvIf zP04xbZ}r~t?oIi8^U`I_hhNL%!B@twwrhXO;`uE%#H~E=U{`xjYkYcato4P-4@*y-4{I+9gH4{9*rK09*>@gz8O6keJ}b!^i=e8 z^nCO}^qc6#=#SA$(VwHgMt_U`Syxv-Ihq=s9GwzPi)Kc%qS?`$=*(zAbbhonS{|*8 z;@<1mL>EWvq76}Nba`}T)E2cz@ug9}Ju24a>UTxM(f;Vh=(gyN=)PzydLsHp^quIt z(UZ{+qhCfZM8Avv68*g{H>p0#MUBzyXi0Q=v?aPW8j1Eq`=Ze(t~n{LIq8-tt~u$> z=&tCV=-%i+^l0?0=-W};!=$)}N#Bot9Q`EvdGxF3_t78fat#g9lxSXbUUX5^9t}jb z=ws3CQCy=TuF-IR^gwhldMtV_`bG476z6PssV>nswlTy=zdY0Y zdd|G(%z4jwrth?GIG-CSH#a|5TUVc&cG6cK>uK7XEsf-gg`TEj->z(bd1PBtrqn-_ zi{Y(J<>K({n%Y|*dNO^{$)ZO-FZTs8AZ+`=O71 z{1dm|`Napnbl}UKO@+~X{)HK*oZ4{O=`+)_X3sgJE1wyQNqYJQHxvuk7-++7^b^ykWBow+@k!R*#TW>2? zylDQc*RA8q??Gj}TJ;Vp<5T@sOm&UwXKV=&IPn6 z$8W%i|Bl@Of#V5O*Y4zPb*)#n)pb63zdBagRzFuAtISgwt8S~uk2k+@0tDWCf$AEq z%v{~CY%A-0^83nuwd%Rm_m%DBbwBy{pmJ>Twch+EG$R25#}k;mh9|G%$@|r{{l9Mg z4jk`WFizma3LN`8FxC6Y9Zoeqd2Fh4Ca?R-xhM8X%}#(oRp8kT8#i6Py{SK+85t>L z_GEhw?`B7Kv~_IE^_O$SLZ&n}zNxjRtz%2yu55ofK5@mBJKH)okCroi`Rrw-QfBPH z6<4)(w{=YHrx&J|#5r5qd((4XJ?rSD4s6-fx_xsdS7^LCGnOqazI5B+TZxZs?d)#v znHU}KYOU@*-?Ob@`?WiE?CgDiTriU_XG?`lIlDg7zk9G$94!p=rWd?A+Fr`;&1Lr; zJ-BmE%yjf^Z+dQJ;B}`ZHSuRrGA~*9TtnZ&{(o1B+49=dr~!!5V&>5Sv8>$jwrG%s&ib#cpzmUZizTN;~}uUfTc-NoxxtysM} z-n6V)y<$zv%C+li(zTUmoq2gaQ-1A(e)3bj=_zmUkxzf-w#tJ}dGNp8eF%Q`jtQir z4;jyPU2bsvbBFPc9e?hw&)?nfg?sM3Z|7hsH_$Ou9L*1GEM@j>tGu1~26t5UIt#gS zNA8B~^ki|;lw45xR`1X6*^*8-FJIAo__Z<~e06-aUHe;>Hn!XpxAM@#UF|)s@#*pL z)+2je`-&!gb z%Sml4n(5K3XhF0%S{AK{)<%8NP&69d7~K-x5#19#5Iqtdj2?>~kDiF0jGl_V89g0+ zFZx0BO!RE@V)Rn}XMR zVYED28Lf`u-fP!Imqr_+O;KxfWps7a7PUw5qfxsv%GRW6cSpm~{^;iDj_9uFfoME> zD*8tBo#?yK)6oy3Uq&xQzl;77{ktfEj z+oG7W?(XQG=)UOw=s@&%^sVUIQQSja+(X^>qaQ~ES`lrE;<-}2 zQC}3#lS-o7qkE%Aqqtt`u_*3871vFDJ$fekQS{U3`6vuizm9$zy&U~1`bYGyn$)zD cqxsP}QGC~xSE};ww(|Pg;mwi1Q_~jz2VF?vNB{r; literal 0 HcmV?d00001 diff --git a/desktop/resources/cat-tree/ladderbreak.pxa/CelData.plist b/desktop/resources/cat-tree/ladderbreak.pxa/CelData.plist new file mode 100644 index 00000000..8bb0d6e2 --- /dev/null +++ b/desktop/resources/cat-tree/ladderbreak.pxa/CelData.plist @@ -0,0 +1,78 @@ + + + + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + diff --git a/desktop/src-common/advent/screens/rooms/#outside_house.clj# b/desktop/src-common/advent/screens/rooms/#outside_house.clj# new file mode 100644 index 00000000..8c84ddf7 --- /dev/null +++ b/desktop/src-common/advent/screens/rooms/#outside_house.clj# @@ -0,0 +1,752 @@ +(ns advent.screens.rooms.outside-house + (:require [advent.screens.items :as items] + [advent.screens.rooms :as rooms] + [advent.screens.rooms.common :as common] + [advent.screens.rooms.outside-castle :as outside-castle] + [advent.screens.rooms.inside-castle :as inside-castle] + [advent.actions :as actions] + [advent.tween :as tween] + [advent.utils :as utils] + [clojure.zip :as zip] + [play-clj.core :refer :all] + [play-clj.ui :refer :all] + [play-clj.math :refer :all] + [play-clj.utils :refer :all] + [play-clj.g2d :refer :all])) + + + +(defn dawn-fade [entities] + (actions/run-action entities + (begin [this screen entities] + (-> entities + (assoc-in [:tweens :dawn-r] (tween/tween :dawn-r screen [:time-profiles :default :r] :current 0.63 50.0 :entities entities)) + (assoc-in [:tweens :dawn-g] (tween/tween :dawn-g screen [:time-profiles :default :g] :current 0.36 50.0 :entities entities)) + (assoc-in [:tweens :dawn-b] (tween/tween :dawn-b screen [:time-profiles :default :b] :current 0.23 50.0 :entities entities)) + (assoc-in [:tweens :hue-amount-v] (tween/tween :hue-amount-v screen [:time-profiles :default :hue-amount] :current 0.0 50.0 :entities entities)) + (assoc-in [:tweens :multiply-amount-v] (tween/tween :multiply-amount-v screen [:time-profiles :default :multiply-amount] :current 0.0 50.0 :entities entities)) + + (assoc-in [:tweens :dawn-r-s] (tween/tween :dawn-r-s screen [:time-profiles :sprite :r] :current 0.63 50.0 :entities entities)) + (assoc-in [:tweens :dawn-g-s] (tween/tween :dawn-g-s screen [:time-profiles :sprite :g] :current 0.36 50.0 :entities entities)) + (assoc-in [:tweens :dawn-b-s] (tween/tween :dawn-b-s screen [:time-profiles :sprite :b] :current 0.23 50.0 :entities entities)) + (assoc-in [:tweens :hue-amount-v-s] (tween/tween :hue-amount-v-s screen [:time-profiles :sprite :hue-amount] :current 0.0 50.0 :entities entities)) + (assoc-in [:tweens :multiply-amount-v-s] (tween/tween :multiply-amount-v-s screen [:time-profiles :sprite :multiply-amount] :current 0.0 50.0 :entities entities))) + ) + (continue [this screen entities] + entities) + (done? [this screen entities] + true) + (terminate [this screen entities] + entities) + (skip-type [this screen entities] + :none))) + + + + +(defn walk-to-castle [entities & {:keys [skip-type stop?] :or {skip-type :end stop? true}}] + (actions/walk-to entities :ego [0 80] :skip-type skip-type) + (actions/walk-straight-to entities :ego [-20 80]) + (actions/transition-background entities :outside-castle [330 80]) + (actions/walk-straight-to entities :ego [319 80] :stop? false) + (actions/walk-to entities :ego [273 81] :skip-type skip-type :stop? stop?)) + +(def ego-sheep-loc + [132 140]) + +(defn dist-to-sheep [entities] + (apply utils/dist (get-in entities [:room :entities :sheep :x]) (get-in entities [:room :entities :sheep :y]) + ego-sheep-loc)) + +(defn is-sheep-close? [entities] + (< (dist-to-sheep entities) 45)) + +(defn is-ready-for-slingshot [entities] + (and (actions/has-obtained? entities :broken-clock) + (not (actions/has-item? entities :broken-clock)) + (actions/has-obtained? entities :money) + (not (actions/has-item? entities :money)))) + +(defn walk-to-sheep [entities] + (actions/walk-to entities :ego [154 133] :skip-type :end) + (actions/walk-straight-to entities :ego [119 134] :update-baseline? false)) + +(defn leave-sheep [entities] + (actions/walk-straight-to entities :ego [154 133] :update-baseline? false)) + +(defn magic [entities] + (actions/run-action entities + (begin [this screen entities] + (doto (get-in entities [:room :entities :magic]) + (particle-effect! :reset) + (particle-effect! :start)) + entities) + (continue [this screen entities] + entities) + (done? [this screen entities] + (particle-effect! (get-in entities [:room :entities :magic]) :is-complete)) + (terminate [this screen entities] + entities) + (skip-type [this screen entities] + :none))) + +(defn put-something-in-cauldron [item] + (condp = item + :money (actions/get-script entities + (if (actions/has-item? entities :note-2) + (do + (actions/walk-to entities :ego [141 90] :face :right) + (actions/play-animation entities :ego :reach) + (actions/remove-item entities :money) + (actions/talk entities :ego "I guess that's what you could call 'money in the pot'.")) + (actions/talk entities :ego "I don't want to put something in there unless I'm sure I need to."))) + :slingshot (actions/get-script entities + (if (is-ready-for-slingshot entities) + (do + (actions/walk-to entities :ego [141 90] :face :right) + (dawn-fade entities) + (actions/talk entities :ego "Here goes!") + (actions/play-animation entities :ego :reach-start :stop? false) + (magic entities) + (actions/play-animation entities :ego :reach-stop :stop? true) + + (actions/remove-item entities :slingshot) + (actions/give entities :magic-slingshot) + + (actions/do-dialogue entities :ego "It worked!") + + (actions/glad entities) + (actions/do-dialogue entities + :ego "I now have The Slinger's Shot." + :ego "And just in time, too. It's getting light.") + + (actions/update-state entities #(assoc % :next-time :sunrise :seen-bloodclot? false)) + (walk-to-castle entities :skip-type :none :stop? false) + (outside-castle/go-through-gate entities :skip-type :none :stop? false) + (actions/update-state entities #(assoc % :next-time :day)) + (inside-castle/walk-to-blergh entities) + (actions/do-dialogue entities + :ego "Bloodclot!" + :bloodclot-head "Oh, hello again." + :bloodclot-head "I thought I had taken care of you the last time I saw you." + :bloodclot-head "Any final words before I destroy you again?") + (actions/play-animation entities :ego :scared :continue? true) + (Thread/sleep 500) + (actions/walk-straight-to entities :ego [35 45] :override-dir :right :speed 3.0)))) + :broken-clock (actions/get-script entities + (if (actions/has-item? entities :note-2) + (do + (actions/walk-to entities :ego [141 90] :face :right) + (actions/play-animation entities :ego :reach) + (actions/remove-item entities :broken-clock) + (actions/talk entities :ego "Just in the nick of time.")) + (actions/talk entities :ego "I don't want to put something in there unless I'm sure I need to."))) + :recipe (actions/get-script entities + (actions/walk-to entities :ego [151 90] :face :right) + (actions/play-animation entities :ego :squat) + (actions/remove-item entities :recipe) + (actions/give entities :ash) + (actions/talk entities :ego "It burned up into ash.")) + :spell-component (actions/get-script entities + (actions/walk-to entities :ego [141 90] :face :right) + (actions/play-animation entities :ego :reach) + (actions/remove-item entities :spell-component) + (actions/talk entities :ego "I poured it in. Now what?")) + (actions/get-script entities + (actions/talk entities :ego "I don't want to put something in there unless I'm sure I need to.")))) + + +(defn do-frog [entities] + (actions/talk entities :wizard "Grenouille CHALA!!!" :anim :talk-angry :stop? false) + (particle-effect! (get-in @entities [:room :entities :magic-frog-particle]) :reset) + (particle-effect! (get-in @entities [:room :entities :magic-frog-particle]) :start) + (actions/begin-animation entities :ego :frog) + (Thread/sleep 2000) + (actions/begin-animation entities :wizard :stand) + (Thread/sleep 1000) + (actions/do-dialogue entities + :wizard "I warned you, Tick." + :wizard "Now, I will return you to your true state if you leave me in peace." + :wizard "Do you promise?") + (actions/play-animation entities :ego :frog-nod :stop? false) + (actions/talk entities :wizard "Frustatium DISPOSIUM!!!" :anim :talk-angry :stop? false) + (particle-effect! (get-in @entities [:room :entities :magic-frog-particle]) :reset) + (particle-effect! (get-in @entities [:room :entities :magic-frog-particle]) :start) + (Thread/sleep 1500) + (actions/transition-background entities :outside-house [257 90] :face :left)) + +(defn do-prophecy [entities] + {:run #(do (actions/respond entities % + :wizard "Well let me remind you." + :wizard "'On the day when it shall be pulled,\nWith much strength a knight will take hold.'")) + :choices + ["Is this almost over?" + {:run #(do (actions/update-state entities (fn [state] (assoc state :convinced-wizard? true))) + (actions/respond entities % + :wizard "Patience, boy." + :wizard "'Courage will he need,\nWisdom he shall heed.'" + :wizard "'A final test remains, behold!'" + :wizard "If this is truely your quest, then I will help you. " + :ego "So you're my friend now, Gandarf?" + :wizard "No."))} + "*cough* *cough* *ahem*" + {:run #(do (actions/update-state entities (fn [state] (assoc state :convinced-wizard? true))) + (actions/respond entities % + :wizard "Excuse you. Moving on..." + :wizard "'Courage will he need,\nWisdom he shall heed.'" + :wizard "'A final test remains, behold!'" + :wizard "If this is truely your quest, then I will help you. " + :ego "So you're my friend now, Gandarf?" + :wizard "No.") + (utils/save @entities))}]}) + +(defn wizard-dialogue [entities] + (if (get-in @entities [:state :has-met-gandarf?]) + (do (actions/do-dialogue entities :ego "Hello again Gandarf!" + :wizard "Not you again!") + (actions/talk entities :wizard "I command you, leave at once!" :anim :talk-angry :stop? false) + (actions/talk entities :wizard "Don't make me use my powers against you!" :anim :talk-angry :stop? false) + (actions/talk entities :wizard "Leave now, or else!" :anim :talk-angry :stop? false) + (actions/begin-animation entities :wizard :magic-hands)) + (do (actions/do-dialogue entities :ego "Hello there Gandarf!" + :wizard "Oh no, not you!" + :ego "What do you mean, 'not you!'?" + :wizard "I mean, you've wrecked my life!" + :wizard "I never want to see the likes of you again!" + :wizard "Leave!" + :ego "But...") + (actions/talk entities :wizard "I command you, by all the power I can muster..." :anim :talk-angry :stop? false) + (actions/talk entities :wizard "Leave now, or else!" :anim :talk-angry :stop? false) + (actions/begin-animation entities :wizard :magic-hands))) + (actions/update-state entities (fn [s] (assoc s :has-met-gandarf? true))) + (actions/present-choices entities + {:choices ["Surely you can't still be angry with me!" + {:run #(actions/respond entities % :wizard "I can't?" + :wizard "Do you even remember what you did?") + :choices ["You mean the time I set your house on fire with a fire mint?" + {:run #(do + (actions/respond entities % + :wizard "No, of course n...") + (Thread/sleep 500) + (actions/do-dialogue entities :wizard "Wait... that was you!?" :wizard "My house was completely destroyed!") + (Thread/sleep 500) + (actions/talk entities :wizard "I had to move out of town into this shack!" :anim :talk-angry :stop? false) + (actions/talk entities :wizard "Leave, now, or I'll turn you into a ..." :anim :talk-angry :stop? false) + (actions/talk entities :wizard "... a ..." :anim :talk-angry :stop? false) + (actions/talk entities :wizard "... a pack of matches!" :anim :talk-angry) + (actions/begin-animation entities :wizard :magic-hands) + (actions/talk entities :ego "Okay, okay, I'm leaving!") + (actions/transition-background entities :outside-house [257 90] :face :left) + (actions/play-animation entities :ego :sigh) + (actions/do-dialogue entities :ego "It seems like his temper is on fire." + :ego "Sort of like his house was."))} + "You're still cross about my stealing your magic cowboy hat?" + {:run #(do (actions/respond entities % + :wizard "Of course I'm cross! It's irreplaceable!" + :wizard "That cowboy hat accented my facial physique." + :wizard "And complemented my skin color." + :wizard "And you little pipsqueak stole it from me!" + :wizard "That's why I bought my Magi-Safe 5000, to keep out intruders like you." + ) + (actions/talk entities :wizard "Now leave, before I force you out!" :anim :talk-angry :stop? false) + (actions/begin-animation entities :wizard :magic-hands) + (actions/transition-background entities :outside-house [257 90] :face :left) + (actions/do-dialogue entities :ego "I guess he's really upset about that cowboy hat!"))} + "Maybe the time I freed your pet dragon?" + {:run #(do (actions/respond entities % + :wizard "Of course I mean that!" + :wizard "I've raised Snaggletooth from the day he was born." + :wizard "Raised him as my own, I did." + :wizard "47 long years." + :wizard "All for nothing!") + (actions/talk entities :wizard "Give me one reason I shouldn't turn you into a replacement dragon right now!" + :anim :talk-angry :stop? false) + (actions/begin-animation entities :wizard :magic-hands)) + :choices ["Frankie Rockfist and his gang made me do it!" + {:run #(do (actions/respond entities % + :wizard "Frankie Rockfist, eh?" + :wizard "What kind of dumb name is Frankie Rockfist?!" + ) + (Thread/sleep 1000) + (actions/talk entities :wizard "You think I'm stupid enough to fall for that?!" :anim :talk-angry :stop? false) + (actions/talk entities :wizard "It's time to teach you a lesson." :anim :talk-angry :stop? false) + (do-frog entities) + (actions/do-dialogue entities :ego "Phew!" + :ego "I thought I had nearly croaked!"))} + + "I'm on an important quest!" + {:run #(actions/respond entities % :wizard "Eh?" + :wizard "Pray tell, what kind of quest?") + :choices ["To leave this house with some of your belongings." + {:run #(do (actions/respond entities % + :wizard "My belongings!?") + (actions/talk entities :wizard "Why you little!" :anim :talk-angry :stop? false) + (actions/begin-animation entities :wizard :magic-hands) + (do-frog entities) + (actions/talk entities :ego "Gandarf is such a stingy old toad."))} + "To find you a brand new dragon." + {:run #(do (actions/respond entities % + :wizard "Great idea Tick!" + :wizard "You'd make the perfect base for a dragon-bait stew!" + :wizard "Let me just summon my boy-sized cooking pot.") + (actions/talk entities :wizard "Boildrum Ka...." :anim :talk-angry :stop? false) + (actions/begin-animation entities :wizard :magic-hands) + (actions/do-dialogue entities :ego "On second thought..." + :ego "I realized I have a busy schedule this morning." + :ego "Ciao!") + (actions/transition-background entities :outside-house [257 90] :face :left) + (actions/talk entities :ego "That Gandarf can be a real fire under my bum."))} + "To become a knight of the town of Remington." + {:run #(do (actions/respond entities % + :wizard "You are, are you?" + :wizard "And how do you, a mere reckless youth, plan on becoming a knight?")) + :choices ["Well I had this dream..." + {:run #(do (actions/respond entities % + :wizard "I had a dream last night too, Tick." + :ego "You did?" + :wizard "Yes." + :wizard "I dreamed I was an earthworm." + :wizard "And you'd never guess what happened when I woke up." + :ego "What?" + :wizard "I had indigestion." + :wizard "Dreams aren't all they're chocked up to be." + :wizard "Face it boy, it was just a dream. " + :wizard "You'll never be a knight." + :wizard "Now go.") + (actions/transition-background entities :outside-house [257 90] :face :left) + (actions/play-animation entities :ego :sigh))} + "By pulling the Sword of Blergh from its stone!" + {:run #(actions/respond entities % + :wizard "You mean to fulfill the ancient prophecy?" + :wizard "Only one worthy in courage, wisdom, and might can pull it." + :wizard "You'd never measure up!" + :ego "Well maybe you could help me?" + :wizard "I appreciate your spirit, Tick, but why is it so important for you to become a knight?") + :choices ["I want to impress Georgia McGorgeous." + {:run #(do (actions/respond entities % + :ego "You know, win her heart and everything." + :wizard "Well, no man can argue with true love." + :wizard "Me least of all." + :wizard "I'm still a bachelor myself.") + (Thread/sleep 1000) + (actions/do-dialogue entities + :wizard "I have decided." + :wizard "I will help you." + :wizard "Your cause is noble, and your heart is just." + :wizard "Just don't let me catch you stealing my belongings.") + (Thread/sleep 1000) + (actions/do-dialogue entities :wizard "Now Tick, do you know the prophecy of the Sword of Blergh?")) + :choices ["Yes." + (do-prophecy entities) + "No." + (do-prophecy entities)]} + "I want to have the name 'Sir Tick.'" + {:run #(actions/respond entities % + :wizard "'Sir Tick.'" + :ego "It does have a nice ring to it." + :ego "Wouldn't you say?" + :wizard "It does indeed!" + :wizard "But the title comes after the deed, boy." + :wizard "You must have a more noble reason to become a knight." + ) + :choices actions/previous-choices} + "I want to be famous." + {:run #(do (actions/respond entities % + :wizard "Did you ever hear the story of Young Sir Gypsum?" + :ego "I don't think so." + :wizard "Well he went off on many quests, seeking fame and fortune.") + (Thread/sleep 3000) + (actions/do-dialogue entities + :ego "... and?" + :wizard "And what?" + :ego "And what happened to Young Sir Gypsum?" + :wizard "Nobody remembers!" + :wizard "Fame is a fickle friend.")) + :choices actions/previous-choices} + "I wanteth to speaketh like the other knights." + {:run #(actions/respond entities % + :wizard "Oh, dost thou?" + :wizard "Surely thou doth know that thou can speaketh in this manner." + :wizard "Thy tongue requireth neither sword nor title.") + :choices actions/previous-choices}]} + "By besting trap, beast, and long, boring, conversation with old gheezers." + {:run #(do (actions/respond entities % + :wizard "Quite right, quite right.") + (Thread/sleep 1000) + (actions/do-dialogue entities + :wizard "Wait." + :wizard "What 'old gheezer' are you referring to?" + :ego "Umm...") + (actions/talk entities :wizard "You don't happen to be referring to me, do you?" :anim :talk-angry :stop? false) + (actions/begin-animation entities :wizard :magic-hands) + (actions/do-dialogue entities :ego "Well, I..." + :ego "That is to say, I..." + :ego "... Oh boy.") + (do-frog entities) + (actions/play-animation entities :ego :sigh))}]} + "To improve my standing in the community." + {:run #(do (actions/respond entities % + :wizard "Ha! Good standing?" + :wizard "You're the neighborhood cheat and everyone knows it." + :wizard "I'm afraid your standing is irreparable." + :wizard "Now leave me to mourn ol' Snaggletooh.") + (actions/transition-background entities :outside-house [257 90] :face :left) + (actions/play-animation entities :ego :sigh))} + ]} + "Snaggletooth deserved a free life, you old gheezer!" + {:run #(do (actions/respond entities % :wizard "Why, you..." + :wizard "Snaggletooth was my friend!") + (Thread/sleep 1000) + (do-frog entities) + (actions/talk entities :ego "Phew!") + (actions/talk entities :ego "I thought I had ribbit the dust!"))} + + ]} + + ]} + "But I'm your friend, Gandarf!" + {:run #(do (actions/respond entities % :wizard "Friend? " + :wizard "What kind of friend would do what you did to me?") + (Thread/sleep 500) + (actions/talk entities :wizard "You don't even remember what you did, do you?") + ) + :choices #(-> % zip/left)} + "Or else what?" + {:run #(do (actions/talk entities :ego %) + (actions/talk entities :wizard "Or else I'll turn you into a frog!" :anim :talk-angry :stop? false) + (actions/begin-animation entities :wizard :magic-hands)) + :choices ["You don't scare me." + {:run + #(do + (actions/talk entities :ego %) + (actions/talk entities :wizard "You asked for it, boy." :anim :talk-angry :stop? false) + (do-frog entities)) + } + "On second thought..." + {:run #(actions/do-dialogue entities :ego %) + :choices actions/something-else} + "Okay, okay, I'm leaving." + {:run + #(do + (actions/talk entities :ego %) + (actions/transition-background entities :outside-house [257 90] :face :left))}]} + "Okay, okay, I'm leaving." + {:run #(do + (actions/talk entities :ego %) + (actions/talk entities :wizard "Good riddance!" :anim :talk-angry) + (actions/transition-background entities :outside-house [257 90] :face :left))}]})) + + +(defn talk-to-gandarf-outside [entities] + (actions/walk-to entities :ego [120 80] :face :right) + (if (actions/has-item? entities :flask-2) + (actions/do-dialogue entities :wizard "Have you gotten me water from the fountain yet?" + :ego "No, not yet." + :wizard "Hurry, boy! Time's-a-wastin'!") + (do + (actions/do-dialogue entities :ego "Gandarf! Boy am I glad to see you." + :wizard "I'm busy. What is it Tick?") + (actions/present-choices entities + {:choices ["I got put in jail!" + {:run #(actions/respond entities % + :wizard "What for, boy?" + :ego "For borrowing the Duke's ladder." + :wizard "Hoooo boy, you don't 'borrow' from the Duke!" + :wizard "Everyone knows that!" + :wizard "You're lucky he didn't have your head!") + :choices actions/previous-choices} + "I pulled the sword!" + {:run #(actions/respond entities % + :wizard "You did?" + :wizard "Congratulations, Tick!" + :wizard "Meanwhile, my life hasn't been going so great." + :wizard "Someone broken into my MagiSafe 5000 and stole some things from my hut." + :ego "Oh." + :ego "How awful!") + :choices actions/previous-choices} + "Bloodclot is on the loose!" + {:run #(do (actions/respond entities % + :wizard "Bloodclot?" + :wizard "You can't mean the goblin, Bloodclot?" + :wizard "If you did, you'd be burned to a crisp from his lightning gem!" + :ego "Yes, that Bloodclot!" + :wizard "I knew that there would be a 'final test' for the hero who pulled the blade..." + :wizard "But I never imagined this." + :wizard "There's only one way to neutralize his lighting magic:" + :wizard "The Slinger's Shot." + :wizard "It's a magical slingshot that has long lost its power." + :wizard "Here, take it.") + (actions/give entities :slingshot) + (actions/do-dialogue entities + :wizard "Whatever happens, do not lose that slingshot!" + :wizard "You and me, boy, we're going to return it to its powerful state." + :wizard "Then you can beat Bloodclot, come sunrise." + :wizard "Now, time is of the essence." + :wizard "Take this flask. Fill it with water from the fountain." + :wizard "And remember. Don't lose the slingshot.") + (actions/give entities :flask-2))} + "See ya." + {:run #(actions/respond entities % :wizard "See you around.")}]})))) + +(defn add-wizard-if-necessary [entities] + (if (get-in entities [:state :seen-frankie?]) + entities + (update-in entities [:room :entities] #(assoc % :wizard (get-in entities [:room :wizard]))))) + +(defn add-note-if-necessary [entities] + (if (and (get-in entities [:state :seen-frankie?]) + (not (actions/has-obtained? entities :note-1))) + (update-in entities [:room :entities] #(assoc % :note (get-in entities [:room :note]))) + entities)) + +(defn make-night [entities] + (-> entities + (update-in [:room :entities] #(dissoc % :butterfly)) + (update-in [:room :entities] #(assoc % :cauldron (get-in entities [:room :cauldron]))) + add-wizard-if-necessary + add-note-if-necessary)) + +(defn move-toward [screen entities {:keys [x y] :as e} target-x] + (let [delta-x (- target-x x) + speed (* 1.0 + (/ (:delta-time screen) + (/ 1.0 60.0))) + speed (if (< delta-x 0) (- speed) speed) + moved-x (if (< (Math/abs delta-x) speed) + target-x + (* speed (/ delta-x delta-x) ))] + (if (< (Math/abs delta-x) speed) + (actions/start-animation screen + (dissoc e :target-x) + :stand) + + (actions/start-animation screen + (assoc (actions/jump-to screen entities e [(+ moved-x x) y] false) + :facing (cond (< delta-x 0) :left + (> delta-x 0) :right + :else (:facing e))) + :walk)))) + +(defn jump-around [screen entities] + (if-let [target-x (get-in entities [:room :entities :lamb :target-x])] + (update-in entities [:room :entities :lamb] + #(move-toward screen entities % target-x)) + (if (= 1 (rand-int 50)) + (assoc-in entities [:room :entities :lamb :target-x] (rand-nth [30 10 60 70])) + entities))) + + +(defnn) + + + +(defn make [screen] + (let [sheep-stand-sheet (texture! (texture "outsidehouse/sheep-anim.png") :split 33 21) + sheep-walk-sheet (texture! (texture "outsidehouse/sheep-walk.png") :split 33 21) + lamb-walk-sheet (texture! (texture "outsidehouse/lamb-walk.png") :split 27 28) + sheep-stand (animation 0.15 (for [i (flatten [(repeat 10 0) 1 2 3 4 5 6 7 4 5 6 7 8 9 10 (repeat 25 11) (repeat 15 12)])] + (aget sheep-stand-sheet 0 i))) + door (utils/make-anim "outsidehouse/door.png" [22 58] 0.15 (flatten [(range 4) 3 3 3 3 3 3 3])) + sheep-walk (animation 0.05 (for [i (range 6)] + (aget sheep-walk-sheet 0 i))) + butterfly-stand (utils/make-anim "butterfly.png" [7 7] 0.1 [0 1]) + cauldron (utils/make-anim "outsidehouse/cauldron.png" [50 38] 0.15 (range 4)) + scaler (utils/scaler-fn-with-baseline 110 0.10 1.00) + lamb-stand (aget lamb-walk-sheet 0 0) + lamb-walk (animation 0.075 (for [i (range 4)] + (aget lamb-walk-sheet 0 i)))] + (rooms/make :music {:day :town-2 :night :night} + :update-fn jump-around + :interactions + {:door {:box [250 100 281 160] + :script + (actions/get-script + entities + (actions/walk-to entities :ego [257 90] :face :right :skip-type :end) + (actions/talk entities :ego (str "Anyone home?")) + (actions/play-animation entities :ego :reach) + (if (= :night (get-in @entities [:state :time])) + (actions/talk entities :ego "It's locked.") + (do (actions/play-animation entities :door :open) + (actions/transition-background entities :inside-house [237 0] :between (fn [s e] + (if (= 1 (rand-int 4)) + (assoc-in e [:room :entities :experiment] (get-in e [:room :experiment])) + e))) + (when (get-in @entities [:room :entities :experiment]) + (actions/play-animation entities :experiment :experiment) + (actions/remove-entity entities :experiment)) + + (if (get-in @entities [:state :convinced-wizard?]) + (do (actions/talk entities :wizard (str "Oh, hello there boy.")) + (utils/save @entities)) + (wizard-dialogue entities))))) + :cursor :right} + + :right-dir {:box [220 141 320 204] + :script (actions/get-script + entities + (actions/walk-to entities :ego [244 150] :skip-type :end) + (actions/transition-background entities :behind-house [122 140]) + (actions/walk-to entities :ego [172 122])) + :cursor :right} + :up-dir {:box [105 180 203 240] + :script (actions/get-script + entities + (actions/walk-to entities :ego [137 204] :skip-type :end) + (actions/transition-background entities :cat-tree [223 -51]) + (actions/walk-straight-to entities :ego [200 10])) + :cursor :up} + :left-dir {:box [0 40 40 140] + :script (actions/get-script + entities + (walk-to-castle entities)) + :cursor :left}} + :layers {:day [(assoc (texture "outsidehouse/background.png") :x 0 :y 0 :baseline 0) + (assoc (texture "outsidehouse/house.png") :x 0 :y 0 :baseline 122) + (assoc (texture "outsidehouse/fence.png") :x 0 :y 0 :baseline 93) + + (assoc (texture "outsidehouse/background-trees.png") :x 0 :y 0 :baseline 44) + (assoc (texture "outsidehouse/fg1.png") :x 0 :y 0 :baseline 1000 :parallax 1.5) + (assoc (texture "outsidehouse/fg2.png") :x (- 320 55) :y 0 :baseline 1000 :parallax 1.5)] + :night [(assoc (texture "outsidehouse/background.png") :x 0 :y 0 :baseline 0) + (assoc (texture "outsidehouse/house.png") :x 0 :y 0 :baseline 122) + (assoc (texture "outsidehouse/fence.png") :x 0 :y 0 :baseline 93) + + (assoc (texture "outsidehouse/background-trees.png") :x 0 :y 0 :baseline 44) + (assoc (texture "outsidehouse/fg1.png") :x 0 :y 0 :baseline 1000 :parallax 1.5) + (assoc (texture "outsidehouse/fg2.png") :x (- 320 55) :y 0 :baseline 1000 :parallax 1.5)]} + :entities {:sheep (actions/start-animation screen + (assoc (animation->texture screen sheep-stand) :x 38 :y 160 :baseline 80 + :scale-x (scaler [38 160]) + :scale-y (scaler [38 160]) + :box [38 160 71 181] + :script (actions/get-script + entities + + (if (actions/has-item? entities :wool) + (actions/talk entities :ego "The sheep has given me enough wool.") + (if (is-sheep-close? @entities) + (do (walk-to-sheep entities) + (actions/play-animation entities :ego :reach) + (actions/give entities :wool) + (actions/talk entities :ego "I guess her wool is shedding.") + (leave-sheep entities)) + (do + (walk-to-sheep entities) + (actions/talk entities :ego "Come here mama sheep!") + (actions/play-animation entities :ego :sigh) + (actions/talk entities :ego "She's too far away for me to pet her.") + (leave-sheep entities))))) + :scripts #(condp = % + :wool (actions/get-script entities + (actions/talk entities :ego "She doesn't need it back.")) + :grass (actions/get-script entities + (walk-to-sheep entities) + (actions/talk entities :ego "Come on girl, get the grass!") + (actions/play-animation entities :ego :reach) + (actions/talk entities :ego "I think she's not interested.") + (leave-sheep entities)) + :carrot (actions/get-script entities + (walk-to-sheep entities) + (actions/talk entities :ego "Come on girl, get the carrot!") + (actions/walk-straight-to entities :sheep [90 138] :update-baseline? false) + (actions/play-animation entities :ego :reach) + (actions/remove-item entities :carrot) + (actions/update-state entities (fn [s] (assoc s :coaxed-sheep? true))) + (leave-sheep entities)) + :flask-1 (actions/get-script entities + (if (is-sheep-close? @entities) + (do (walk-to-sheep entities) + (actions/play-animation entities :ego :milk) + (actions/remove-item entities :flask-1) + (actions/give entities :flask-1-with-milk) + (actions/talk entities :ego "Sheeps milk.") + (leave-sheep entities)) + (actions/talk entities :ego "She's too far away."))) + :flask-1-with-mushrooms + (actions/get-script entities + (if (is-sheep-close? @entities) + (do (walk-to-sheep entities) + (actions/play-animation entities :ego :milk) + (items/make-cream-of-mushroom entities) + (leave-sheep entities)) + (actions/talk entities :ego "She's too far away."))) + nil) + :left {:walk (utils/flip sheep-walk) + :stand (utils/flip sheep-stand)} + :right {:walk sheep-walk + :stand sheep-stand} + :scaled true) + sheep-stand) + + :outside-particles (common/make-outside-particles) + :magic (assoc (doto (particle-effect "outsidehouse/magic") ) + :x 153 + :y 105 + :baseline 238) + :door (assoc (animation->texture screen door) + :x 253 :y 88 :baseline 122 + :open door + :door-sound (sound "door.ogg") + :anim-sound-frames {door {1 [:door-sound 1.0]}} + ) + :lamb (assoc (texture "outsidehouse/lamb.png") + :x 10 :y 163 :baseline 77 + :right {:stand (animation 0.1 [lamb-stand]) + :walk lamb-walk} + + :left {:stand (utils/flip (animation 0.1 [lamb-stand])) + :walk (utils/flip lamb-walk)} + :scale-x (scaler [10 163]) + :scale-y (scaler [10 163]) + :script (actions/get-script entities + (actions/talk entities :ego "Aww, it's a newborn lamb!") + ) + :scripts {:carrot (actions/get-script entities (actions/talk entities :ego "I think it's still nursing.")) + :grass (actions/get-script entities (actions/talk entities :ego "I think it's still nursing."))} + ) + :butterfly (assoc (animation->texture screen butterfly-stand) + :x 161 + :y 218 + :baseline 240 + :anim butterfly-stand + :anim-start 0 + :path (catmull-rom-spline (map #(apply vector-2* %) (take 10 (repeatedly #(vector (rand-int 320) (rand-int 180))))) true) + :update-fn (fn [screen entities entity] + (let [speed 0.009 + pos-f (- (* (:total-time screen) speed) (int (* (:total-time screen) speed))) + v (vector-2 0 0) + a (catmull-rom-spline! (:path entity) :value-at v pos-f)] + (assoc entity :x (vector-2! v :x) :y (vector-2! v :y)))))} + :cauldron (rooms/make-entity :cauldron (assoc (animation->texture screen cauldron) + :x 139 :y 73 :baseline 167 + :anim cauldron + :anim-start 0 + :night-profile :none + :script (actions/get-script entities (examine-cauldron entities)) + :scripts put-something-in-cauldron)) + :wizard (rooms/make-entity :wizard (common/make-wizard screen {:x 190 :y 78 :baseline 162 :scale-x 1.2 :scale-y 1.2 + :script (actions/get-script entities (talk-to-gandarf-outside entities)) + :scripts {:default (actions/get-script entities (actions/talk entities :wizard "No time for that!"))}})) + :note (rooms/make-entity :note (assoc (texture "outsidehouse/note.png") + :x 277 :y 74 :baseline 160 + :night-profile :none + :script (actions/get-script entities + (actions/walk-to entities :ego [280 80] :face :right) + (actions/play-animation entities :ego :squat) + (actions/remove-entity entities :note) + (actions/give entities :note-1) + (common/read-note-1 entities)))) + :collision "outsidehouse/collision.png" + :scale-fn scaler + :apply-state (fn [_ entities] + (utils/fast-forward-particle (get-in entities [:room :entities :outside-particles])) + (as-> entities entities + (if (get-in entities [:state :coaxed-sheep?]) + (let [scale ((get-in entities [:room :scale-fn]) [90 138])] + (update-in entities [:room :entities :sheep] #(assoc % :x 90 :y 138 :baseline 40 :scale-x scale :scale-y scale))) + entities) + (if (= :night (get-in entities [:state :time])) + (make-night entities) + entities))) + :start-pos [30 80])))