update to version 1.16
This commit is contained in:
parent
fec1698236
commit
20493d93de
2
art.lua
2
art.lua
@ -4,7 +4,7 @@ base_text_color = 5
|
||||
blank_ingredient_outline_color = 6
|
||||
light_text_color = 7
|
||||
|
||||
phoebe_portrait = 72
|
||||
ph_p = 72
|
||||
lenore_portrait = 76
|
||||
seller_portrait = 136
|
||||
neighbor_portrait = 140
|
||||
|
235
ateli8.p8
235
ateli8.p8
@ -1,6 +1,9 @@
|
||||
pico-8 cartridge // http://www.pico-8.com
|
||||
version 41
|
||||
__lua__
|
||||
-- atelier phoebe
|
||||
-- by shoofle
|
||||
|
||||
#include utils.lua
|
||||
#include library.lua
|
||||
|
||||
@ -78,22 +81,22 @@ __gfx__
|
||||
0088888000ccccc000bbbbb000222220545555450944444499999999fff4ffccccccccccc8ffffff00000000111100000000000000000111b0b0b0b033663333
|
||||
0088888000ccccc000bbbbb0002222205455554594444444099999900fffcccccccccccccccffff00000000011100000000000000001111100b000b033333333
|
||||
0000000000000000000000000000000054555545999999990099990000fccccccccccccccccccf00000000003111000000000000000011130000000033333333
|
||||
00000000006666000000000000070000006666000555555000000000000000000000aaa0055555500000000000000000009999a000000b000000000000000000
|
||||
00000000000660000000000000007000066886605cccccc5670006c00009c000000aa0005555555500000000000000000999999a00000b000000000000000000
|
||||
00000000000660000003033000555500068668605555555566606670009cc8000078870088888844000000000000000099999999a00000000000000000000000
|
||||
00066000006cc6000303b0000555655006666860544444450667660009ccccc00088770088448888000000000000000099999999a22222220009900000000000
|
||||
00d6660006cc7760030b3300055555500068866005444450066670000cc9ccc000877800888888880008800000dddd0056666666222222220009900000000110
|
||||
7d66666706cccc6003b00000055555500066660005444450006600000099cb0000778800448dd888008888000dddddd0566dd6665555555500999a0000011110
|
||||
07766770006cc6000b333000005555000068600005444450006600000009900000788700888dd44808888880dddddddd566dd66666666665099999a001111111
|
||||
007770000006600000000000000000000066600000555500000000000000000000887700888dd88888888888dddddddd566dd666666666659999999a11111111
|
||||
00044800000448000444444004444440004444000044440000000000555555555555555554444445566444455446648500228800024244907777777750000006
|
||||
00448800004488000488ff400488ff400444444004444440000000005444444444444444544664455664444554466445022288802442449077b7766755066066
|
||||
00000000006666000000000000070000006666000555555000000000000000000000aaa0055555500000000000000000009999a000000b000000000005000060
|
||||
00000000000660000000000000007000066886605cccccc5670006c00009c000000aa0005555555500000000000000000999999a00000b000000000005500660
|
||||
00000000000660000003033000555500068668605555555566606670009cc8000078870088888844000000000000000099999999a00000000000000005556660
|
||||
00066000006cc6000303b0000555655006666860544444450667660009ccccc00088770088448888000000000000000099999999a22222220009900005566560
|
||||
00d6660006cc7760030b3300055555500068866005444450066670000cc9ccc000877800888888880008800000dddd0056666666222222220009900005556560
|
||||
7d66666706cccc6003b00000055555500066660005444450006600000099cb0000778800448dd888008888000dddddd0566dd6665555555500999a0005566660
|
||||
07766770006cc6000b333000005555000068600005444450006600000009900000788700888dd44808888880dddddddd566dd66666666665099999a005556660
|
||||
007770000006600000000000000000000066600000555500000000000000000000887700888dd88888888888dddddddd566dd666666666659999999a05566660
|
||||
00044800000448000444444004444440004444000044440000000000555555555555555554444445566444455446648500228800024244907777777755556566
|
||||
00448800004488000488ff400488ff400444444004444440000000005444444444444444544664455664444554466445022288802442449077b7766755566566
|
||||
044f7f00044f7f0004f7f74004f7f7400244a4400244a4400000000054c4c4c4c4c4c4c454466445544446655444444522200888555555557bbb766755556666
|
||||
04ffff0004ffff0000ffff0000ffff0000244400002444000000000054c4c4c4c4c4c4c4544444455484466558448445400000042424444977b7777755566666
|
||||
0082200000822000008228000082280000822800008228000000000054444444499999445444444558444445544444454dddddd4242444497777777755556666
|
||||
0802200008022000080220800802208008022080080220800000000054c4c4c4c9ddd9c45dd46465544dd44554866445dccc111d5555555576677dd7555dd666
|
||||
0002020000022000000202000002200000020200000220000000000054c4c4c4c9ddd9c45dd46465544dd44558466445dddddddd2442449076677dd7555dd666
|
||||
002002000002200000200200000220000020020000022000000000005444444449ddd9445dd44445544dd445544444455dddddd50242449077777dd7055dd660
|
||||
0082200000822000008228000082280000822800008228000000011054444444499999445444444558444445544444454dddddd4242444497777777755556656
|
||||
0802200008022000080220800802208008022080080220800001111054c4c4c4c9ddd9c45dd46465544dd44554866445dccc111d5555555576677dd7555dd656
|
||||
0002020000022000000202000002200000020200000220000111111154c4c4c4c9ddd9c45dd46465544dd44558466445dddddddd2442449076677dd7555dd666
|
||||
002002000002200000200200000220000020020000022000111111115444444449ddd9445dd44445544dd445544444455dddddd50242449077777dd7055dd660
|
||||
00000000000000000000000000000900000666000000000000000000000000006666666666666664444444666666666622222222222222222222222222222222
|
||||
00000000000000000000000000000009000666000000000000000000000000006666666666665444444555444466666622222222222211511551122222222222
|
||||
00000000000000000000000000000000000666600000000000000000000000006666666666544444445aaa544446666622222222225111111111111222222222
|
||||
@ -201,111 +204,111 @@ __label__
|
||||
44444499977777757777777799544499999999999999999944444444444444444999999999999999999444444444444444444999999999999999994444444444
|
||||
444449977775777577775777794449ffffffffffffffffff99999999999999999ffffffffffffffffff999999999999999999fffffffffffffffff9999999999
|
||||
444599777777577577757777799449ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
445997757777777777777777779949ff0f0f000f000f0fff000f00fff00ffffff00f000f000f000f0f0fffffffffffffffffffffffffffffffffffffffffffff
|
||||
444997775777777777777777577949ff0f0f0fff0f0f0ffff0ff0f0f0fffffff0fff0f0f0f0f0f0f0f0fffffffffffffffffffffffffffffffffffffffffffff
|
||||
449977777777777777777775777999ff000f00ff000f0ffff0ff0f0f0fffffff000f000f00ff000f000fffffffffffffffffffffffffffffffffffffffffffff
|
||||
459977777777777777777777777799ff0f0f0fff0f0f0ffff0ff0f0f0f0fffffff0f0fff0f0f0f0fff0fffffffffffffffffffffffffffffffffffffffffffff
|
||||
449977777777777777777777777799ff0f0f000f0f0f000f000f0f0f000fffff00ff0fff0f0f0f0f000fffffffffffffffffffffffffffffffffffffffffffff
|
||||
445997757777777777777777779949ff000ff00f000f000ff00f00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
444997775777777777777777577949ff0f0f0f0ff0fff0ff0f0f0f0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
449977777777777777777775777999ff000f0f0ff0fff0ff0f0f0f0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
459977777777777777777777777799ff0fff0f0ff0fff0ff0f0f0f0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
449977777777777777777777777799ff0fff00fff0ff000f00ff0f0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
459975555777777777777775555799ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
559977777777700057777777777799ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
459977777777077000777777777799ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
459977777777070707007777777799ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
459977757777007707770075777999ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
454977577770000077777777577949fff5ff5f5f555f5fff555f555f5f5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
454997777000077777777777779959ff5f5f5f5f5f5f5ffff5fff5ff5f5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
445499777700777577757777799459ff5f5f5f5f555f5ffff5fff5ff555fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
444549977050777577775777994449ff55ff5f5f5f5f5ffff5fff5ffff5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
444454990777777577777799945449fff55ff55f5f5f555f555ff5ff555fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
454977577770000077777777577949fff5ff5f5f555f5fff555f555f5f5fffffffffffffff555fffff5f5f555f555f5fff555f55fff55fffffffffffffffffff
|
||||
454997777000077777777777779959ff5f5f5f5f5f5f5ffff5fff5ff5f5fffffffffffffff5f5fffff5f5f5fff5f5f5ffff5ff5f5f5fffffffffffffffffffff
|
||||
445499777700777577757777799459ff5f5f5f5f555f5ffff5fff5ff555fffffffffffffff555fffff555f55ff555f5ffff5ff5f5f5fffffffffffffffffffff
|
||||
444549977050777577775777994449ff55ff5f5f5f5f5ffff5fff5ffff5fffffffffffffff5f5fffff5f5f5fff5f5f5ffff5ff5f5f5f5fffffffffffffffffff
|
||||
444454990777777577777799945449fff55ff55f5f5f555f555ff5ff555fffffffffffffff5f5fffff5f5f555f5f5f555f555f5f5f555fffffffffffffffffff
|
||||
444445499777777577777999454449ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
4444445449999777779999445444449ffffffffffffffffffffffffffff00ff000f000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
4444444554449999999444554444449fffffffffffffffffffffff5555ff0ff0fff0f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
4444444445554444444555444444449fffffffffffffffffffffff5ff5ff0ff000f000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
4444444555445555555444444444449fffffffffffffffffffffff5f55ff0ffff0f0f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
4444455444444444444444444444449fffffffffffffffffffffff5555f000f000f000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
4455544444444444444444444444449fffffffffffffffffffffffffff5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
4444445449999777779999445444449fffffffffffffffffffffffffffffffff000f00ffff555ff55f555f555ff55f55ffffffffffffffffffffffffffffffff
|
||||
4444444554449999999444554444449ffffffffffffffffffffffffffff5555f0ffff0ffff5f5f5f5ff5fff5ff5f5f5f5fffffffffffffffffffffffffffffff
|
||||
4444444445554444444555444444449ffffffffffffffffffffffffffff5ff5f000ff0ffff555f5f5ff5fff5ff5f5f5f5fffffffffffffffffffffffffffffff
|
||||
4444444555445555555444444444449ffffffffffffffffffffffffffff5f55fff0ff0ffff5fff5f5ff5fff5ff5f5f5f5fffffffffffffffffffffffffffffff
|
||||
4444455444444444444444444444449ffffffffffffffffffffffffffff5555f000f000fff5fff55fff5ff555f55ff5f5fffffffffffffffffffffffffffffff
|
||||
4455544444444444444444444444449ffffffffffffffffffffffffffffffff5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
5544444444444444444444444444449fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
4444444444444444444444444444449fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
44444444444444455555554555555595555555f5555555f5555555f5555555ffffffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaff
|
||||
44444444444444564646465646464656f6f6f656f6f6f656f6f6f656f6f6f65fffffffaffffffffffffffffffffffffffffffffffffffffffffffffffffffaff
|
||||
4444444444444454646464546464645f6f6f6f5f6f6f6f5f6f6f6f5f6f6f6f5fffffffaf6666666666666666666666666666666666666666666666666666faff
|
||||
44444444444444564646465646464656f6f6f656f6f6f656f6f6f656f6f6f65fffffffaf6ffffffffffffffffffffffffffffffffffffffffffffffffff6faff
|
||||
4444444444444454646464546465655f6f6f6f5f6f6f6f5f6f6f6f5f6f6f6f5fffffffaf6ffffffffffffffffffffffffffffffffffffffffffffffffff6faff
|
||||
44444444444444564646465656564656f6f6f656f6f6f656f6f6f656f6f6f65fffffffaf6ffffffffffffffffffffffffffffffffffffffffffffffffff6faff
|
||||
4444444444444454646465556464645f6f6f6f5f6f6f6f5f6f6f6f5f6f6f6f5fffffffaf6ffffffffffffffffffffffffffffffffffffffffffffffffff6faff
|
||||
44444444444444564646565646464656f6f6f656f6f6f656f6f6f656f6f6f65fffffffaf6ffffffffffffffffffffffffffffffffffffffffffffffffff6faff
|
||||
44444444444444455555554555555595555555f5555555f5555555f5555555ffffffffaf6ffffffffffffffffffffffffffffffffffffffffffffffffff6faff
|
||||
44444444444445564646465646464656f6f6f656f6f6f656f6f6f656f6f6f65fffffffaf6ffffffffffffffffffffffffffffffffffffffffffffffffff6faff
|
||||
4444444444555454646464546464695f6f6f6f5f6f6f6f5f6f6f6f5f6f6f6f5ffffff9af6ffffffffffffffffffffffffffffffffffffffffffffffffff6fa9f
|
||||
44444445554444564646465646464656f6f6f656f6f6f656f6f6f656f6f6f65fffff9aaf6ffffffffffffffffffffffffffffffffffffffffffffffffff6faa9
|
||||
4444455444444454646464546464695f6f6f6f5f6f6f6f5f6f6f6f5f6f6f6f5ffff9aaaf6ffffffffffffffffffffffffffffffffffffffffffffffffff6faaa
|
||||
44555444444444564646465646464656f6f6f656f6f6f656f6f6f656f6f6f65fff9aaaaf6ffffffffffffffffffffffffffffffffffffffffffffffffff6faaa
|
||||
5544444444444454646464546464695f6f6f6f5f6f6f6f5f6f6f6f5f6f6f6f5fff9aaaaf6ffffffffffffffffffffffffffffffffffffffffffffffffff6faaa
|
||||
44444444444444564646465646464656f6f6f656f6f6f656f6f6f656f6f6f65ffff9aaaf6ffffffffffffffffffffffffffffffffffffffffffffffffff6faaa
|
||||
444444444444444555555545555555f5555555f5555555f5555555f5555555ffffff9aaf6ffffffffffffffffffffffffffffffffffffffffffffffffff6faa9
|
||||
44444444444444564646465646464656f6f6f656f6f6f656f6f6f656f6f6f65ffffff9af6ffffffffffffffffffffffffffffffffffffffffffffffffff6fa9f
|
||||
4444444444444454646464546464695f6f6f6f5f6f6f6f5f6f6f6f5f6f6f6f5fffffffaf6ffffffffffffffffffffffffffffffffffffffffffffffffff6faff
|
||||
44444444444444564646465646464656f6f6f656f6f6f656f6f6f656f6f6f65fffffffaf6ffffffffffffffffffffffffffffffffffffffffffffffffff6faff
|
||||
4444444444444454646464546465695f6f6f6f5f6f6f6f5f6f6f6f5f6f6f6f5fffffffaf6ffffffffffffffffffffffffffffffffffffffffffffffffff6faff
|
||||
44444444444444564646465656564656f6f6f656f6f6f656f6f6f656f6f6f65fffffffaf6ffffffffffffffffffffffffffffffffffffffffffffffffff6faff
|
||||
4444444444444454646465556464695f6f6f6f5f6f6f6f5f6f6f6f5f6f6f6f5fffffffaf6ffffffffffffffffffffffffffffffffffffffffffffffffff6faff
|
||||
44444444444444564646565646464656f6f6f656f6f6f656f6f6f656f6f6f65fffffffaf6ffffffffffffffffffffffffffffffffffffffffffffffffff6faff
|
||||
444444444444444555555545555555f5555555f5555555f5555555f5555555ffffffffaf6666666666666666666666666666666666666666666666666666faff
|
||||
44444444444445564646465646464656f6f6f656f6f6f656f6f6f656f6f6f65fffffffaffffffffffffffffffffffffffffffffffffffffffffffffffffffaff
|
||||
4444444444555454646464546464695f6f6f6f5f6f6f6f5f6f6f6f5f6f6f6f5fffffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaff
|
||||
44444445554444564646465646464656f6f6f656f6f6f656f6f6f656f6f6f65fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
4444455444444454646464546464645f6f6f6f5f6f6f6f5f6f6f6f5f6f6f6f5fffffffff6666666666666666666666666666666666666666666666666666ffff
|
||||
44555444444444564646465646464656f6f6f656f6f6f656f6f6f656f6f6f65fffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
5544444444444454646464546464645f6f6f6f5f6f6f6f5f6f6f6f5f6f6f6f5fffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
44444444444444564646465646464656f6f6f656f6f6f656f6f6f656f6f6f65fffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
44444444444444455555554555555595555555f5555555f5555555f5555555ffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
44444444444444564646465646464656f6f6f656f6f6f656f6f6f656f6f6f65fffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
4444444444444454646464546464645f6f6f6f5f6f6f6f5f6f6f6f5f6f6f6f5fffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
44444444444444564646465646464656f6f6f656f6f6f656f6f6f656f6f6f65fffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
4444444444444454646464546465655f6f6f6f5f6f6f6f5f6f6f6f5f6f6f6f5fffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
44444444444444564646465656564656f6f6f656f6f6f656f6f6f656f6f6f65fffffffff6fff6f6f666f666f6fff666f66fff66ffffffffffffffffffff6ffff
|
||||
4444444444444454646465556464645f6f6f6f5f6f6f6f5f6f6f6f5f6f6f6f5fffffffff6fff6f6f6fff6f6f6ffff6ff6f6f6ffffffffffffffffffffff6ffff
|
||||
44444444444444564646565646464656f6f6f656f6f6f656f6f6f656f6f6f65fffffffff6fff666f66ff666f6ffff6ff6f6f6ffffffffffffffffffffff6ffff
|
||||
44444444444444455555554555555595555555f5555555f5555555f5555555ffffffffff6fff6f6f6fff6f6f6ffff6ff6f6f6f6ffffffffffffffffffff6ffff
|
||||
44444444444445564646465646464656f6f6f656f6f6f656f6f6f656f6f6f65fffffffff6fff6f6f666f6f6f666f666f6f6f666ffffffffffffffffffff6ffff
|
||||
4444444444555454646464546464645f6f6f6f5f6f6f6f5f6f6f6f5f6f6f6f5fffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
44444445554444564646465646464656f6f6f656f6f6f656f6f6f656f6f6f65fffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
4444455444444454646464546464645f6f6f6f5f6f6f6f5f6f6f6f5f6f6f6f5fffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
44555444449999564649999646499996f6f69999f6f6f69999999996f6f6f659999999996ffffffff99999999fffffffff99999999fffffffffffffffff6ffff
|
||||
5544444449666699999666699996666999996666999969666666666999999996666666669999999996666666699999999966666666999999999ffffffff6ffff
|
||||
44444444496666666666666666444444466666666669f9666666666666666666666666666666666666666666666666666666666666666666669ffffffff6ffff
|
||||
4444444449666666666666654444445554444666666959665556556656566666555655565556555655566556666666666666666666666666669ffffffff6ffff
|
||||
444444444966666666666544444445aaa54444666669f9665656565656566666656656565656656665665666666666666666666666666666669ffffffff6ffff
|
||||
444444444496666666665444444445a6a544456666669f965556565655566666656655665556656665665556666666666666666666666666666966666666ffff
|
||||
444444444496666666544444444445aaa544446666669f9656565656665666666566565656566566656666566666666666666666666666666669ffffffffffff
|
||||
44444444449666666644444444444455544455666666909656565656555666666566565656565556656655666666666666666666666666666669ffffffffffff
|
||||
44444444449666666544444a4444444444455a666666909666666666666666666666666666666666666666666666666666666666666666666669ffffffffffff
|
||||
44444444449666664444444a4444888888888a66666690966556555655565666566666665556556666665556565655566666655655565556556966666666ffff
|
||||
44444444496666654444454a44888888888886666669f9665666656665665666566666666566565666666566565656666666566656566566565ffffffff6ffff
|
||||
44444446696666644444544448888488f8884866666909665556656665665666566666666566565666666566555655666666566655666566565ffffffff6ffff
|
||||
4444444669666654444544448888488fff8884866669f9666656656665665666566666666566565666666566565656666666565656566566565ffffffff6ffff
|
||||
4444444669666644445444488899998ff99998466669f9665566656655565556555666665556565666666566565655566666555656565556555ffffffff6ffff
|
||||
444444466696665444544488898888fffffff98666669f9666666666666666666666666666666666666666666666666666666666666666666669fffffff6ffff
|
||||
444445556696644445444488888887ff9777ff6666669f9655565556666655565656555666665556556655666666655655565566666655565559fffffff6ffff
|
||||
445554446696654445444848848717ff9717ff6666669f9656566566666665665656566666665666565656566666566656565656666656565669fffffff6ffff
|
||||
55444444569664444544848848f717ff9717f66666669f9655566566666665665556556666665566565656566666566655565656666655665569fffffff6ffff
|
||||
44444444496665444a4488848ff777ff9777f6666669f9665656656666666566565656666666566656565656666656665656565666665656569ffffffff6ffff
|
||||
44444444496665544a448888fffffffff9fff6666669f9665656656666666566565655566666555656565556666665565656565666665556555ffffffff6ffff
|
||||
44444444496665555a5489f9fffff9fff9fff6666669f9666666666666666666666666666666666666666666666666666666666666666666669ffffffff6ffff
|
||||
444444444966666688559f9fffffff999ffff6666669f9665556556655665556556666665556655666665556565655566666666666666666669ffffffff6ffff
|
||||
44444444449666668282f9f9fffffffffffff66666669f9656565656565656665656666665665656666665665656566666666666666666666669fffffff6ffff
|
||||
444444444496666688288f9f9fffefffffef666666669f9655565656565655665656666665665656666665665556556666666666666666666669fffffff6ffff
|
||||
4444444444966666828266f9fffffeeeeeff666666669f9656565656565656665656666665665656666665665656566666666666666666666669fffffff6ffff
|
||||
44444444449666682828666f9ffffffffff6666666669f9656565556555655565556666665665566666665665656555666666666666666666669fffffff6ffff
|
||||
444444444496666882866669f9ffffffff66666666669f9666666666666666666666666666666666666666666666666666666666666666666669fffffff6ffff
|
||||
44444444496666882866666ff9999992866666666669f9665556555655665556566666665556555665565566565665565556656666666666669ffffffff6ffff
|
||||
4444444449666682826666fffffffff2866666666669f9665666656656565656566666665656565656565656565656666566656666666666669ffffffff6ffff
|
||||
4444444449666688286666fffffffff886dd26666669f9665566656656565556566666665556556656565656565656666566656666666666669ffffffff6ffff
|
||||
444444455962222222222ddddfffff9dd22222266669f9665666656656565656566666665666565656565656565656666566666666666666669ffffffff6ffff
|
||||
4444455444921122222222222dddddd22222221126669f965666555656565656555666665666565655665556655665566566656666666666666966666666ffff
|
||||
44555444449211222222222222ddddd22222221122269f9666666666666666666666666666666666666666666666666666666666666666666669ffffffffffff
|
||||
55444444449222222222211122ddddd22211222222269f9666666666666666666666666666666666666666666666666666666666666666666669ffffffffffff
|
||||
444444444499996666699996666999966666999966669f9999999996666666699999999966666666699999999666666666999999996666666669ffffffffffff
|
||||
444444444444449999911449999449f99999ffff9999fffffffffff99999999fffffffff999999999ffffffff999999999ffffffff999999999fffffffffffff
|
||||
44444444444444455555554555555595555555f5555555f5555555ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
44444444444444564646465646464656f6f6f656f6f6f656f6f6f65fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
4444444444444454646464546464645f6f6f6f5f6f6f6f5f6f6f6f5fffffffffffffffff6666666666666666666666666666666666666666666666666666ffff
|
||||
44444444444444564646465646464656f6f6f656f6f6f656f6f6f65fffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
4444444444444454646464546465655f6f6f6f5f6f6f6f5f6f6f6f5fffffffffffffffff6f000f0f0f000f000fffff0f0f000f000f000f000ffffffffff6ffff
|
||||
44444444444444564646465656564656f6f6f656f6f6f656f6f6f65fffffffffffffffff6f0f0f0f0f0f0f0fffffff0f0f0f0ff0ff0fff0f0ffffffffff6ffff
|
||||
4444444444444454646465556464645f6f6f6f5f6f6f6f5f6f6f6f5fffffffffffffffff6f000f0f0f00ff00ffffff0f0f000ff0ff00ff00fffffffffff6ffff
|
||||
44444444444444564646565646464656f6f6f656f6f6f656f6f6f65fffffffffffffffff6f0fff0f0f0f0f0fffffff000f0f0ff0ff0fff0f0ffffffffff6ffff
|
||||
44444444444444455555554555555595555555f5555555f5555555ffffffffffffffffff6f0ffff00f0f0f000fffff000f0f0ff0ff000f0f0ffffffffff6ffff
|
||||
44444444444445564646465646464656f6f6f656f6f6f656f6f6f65fffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
4444444444555454646464546464695f6f6f6f5fbbbbbf5f6f6f6f5fffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
44444445554444564646465646464656f6f6f656bbbbb656f6f6f65fffffffffffffffff6ffff55f5f5f555f55ff5f5ffffffffffffffffffffffffffff6ffff
|
||||
4444455444444454646464546464695f6f6f6f5fbbbbbf5f6f6f6f5fffffffffffffffff6fff5fff5f5ff5ff5f5f5f5ffffffffffffffffffffffffffff6ffff
|
||||
44555444444444564646465646464656f6f6f656bbbbb656f6f6f65fffffffffffffffff6fff555f555ff5ff5f5f555ffffffffffffffffffffffffffff6ffff
|
||||
5544444444444454646464546464695f6f6f6f5fbbbbbf5f6f6f6f5fffffffffffffffff6fffff5f5f5ff5ff5f5fff5fffffffffffffffffff000f000ff6ffff
|
||||
44444444444444564646465646464656f6f6f656f6f6f656f6f6f65fffffffffffffffff6fff55ff5f5f555f5f5f555ffffffffffffff5555f0fff0f0ff6ffff
|
||||
444444444444444555555545555555f5555555f5555555f5555555ffffffffffffffffff6ffffffffffffffffffffffffffffffffffff5ff5f000f0f0ff6ffff
|
||||
44444444444444564646465646464656f6f6f656f6f6f656f6f6f65fffffffffffffffff6ffffffffffffffffffffffffffffffffffff5f55fff0f0f0ff6ffff
|
||||
4444444444444454222224546464695fbbbbbf5fbbbbbf5fbbbbbf5fffffffffffffffff6ffffffffffffffffffffffffffffffffffff5555f000f000ff6ffff
|
||||
44444444444444562222265646464656bbbbb656bbbbb656bbbbb65fffffffffffffffff6ffffffffffffffffffffffffffffffffffffffff5fffffffff6ffff
|
||||
4444444444444454222224546465695fbbbbbf5fbbbbbf5fbbbbbf5fffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
44444444444444562222265656564656bbbbb656bbbbb656bbbbb65fffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
4444444444444454222225556464695fbbbbbf5fbbbbbf5fbbbbbf5fffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
44444444444444564646565646464656f6f6f656f6f6f656f6f6f65fffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
444444444444444555555545555555f5555555f5555555f5555555ffffffffffffffffff6666666666666666666666666666666666666666666666666666ffff
|
||||
44444444444445564646465646464656f6f6f656f6f6f656f6f6f65fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
4444444444555454222224542222295f22222f5f6f6f6f5f6f6f6f5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
4444444555444456222226562222265622222656f6f6f656f6f6f65fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
4444455444444454222224542222245f22222f5f6f6f6f5f6f6f6f5fffffffffffffffff6666666666666666666666666666666666666666666666666666ffff
|
||||
4455544444444456222226562222265622222656f6f6f656f6f6f65fffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
5544444444444454222224542222245f22222f5f6f6f6f5f6f6f6f5fffffffffffffffff6f0f0f000f000f000ffffffffffffffffffffffffffffffffff6ffff
|
||||
44444444444444564646465646464656f6f6f656f6f6f656f6f6f65fffffffffffffffff6f0f0f0fff0f0f0f0ffffffffffffffffffffffffffffffffff6ffff
|
||||
44444444444444455555554555555595555555f5555555f5555555ffffffffffffffffff6f000f00ff00ff00fffffffffffffffffffffffffffffffffff6ffff
|
||||
44444444444444564646465646464656f6f6f656f6f6f656f6f6f65fffffffffffffffff6f0f0f0fff0f0f0f0ffffffffffffffffffffffffffffffffff6ffff
|
||||
4444444444444454222224542222245f6f6f6f5f6f6f6f5f6f6f6f5fffffffffffffffff6f0f0f000f0f0f000ffffffffffffffffffffffffffffffffff6ffff
|
||||
44444444444444562222265622222656f6f6f656f6f6f656f6f6f65fffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
4444444444444454222224542222255f6f6f6f5f6f6f6f5f6f6f6f5fffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
44444444444444562222265622222656f6f6f656f6f6f656f6f6f65fffffffffffffffff6afff55f555f555f555f55fffffffffffffffffffffffffffff6ffff
|
||||
4444444444444454222225552222245f6f6f6f5f6f6f6f5f6f6f6f5fffffffffffffffffa9af5fff5f5f5fff5fff5f5ffffffffffffffffffffffffffff6ffff
|
||||
44444444444444564646565646464656f6f6f656f6f6f656f6f6f65fffffffffffffffffa9af5fff55ff55ff55ff5f5ffffffffffffffffffffffffffff6ffff
|
||||
44444444444444455555554555555595555555f5555555f5555555ffffffffffffffffff6aff5f5f5f5f5fff5fff5f5fffffffffffffffffff0f0f000ff6ffff
|
||||
4444444444444555444444444444449fffffffffffffffffffffffffffffffffffffffff6fff555f5f5f555f555f5f5ffffffffffffff5555f0f0fff0ff6ffff
|
||||
4444444444555444444444444444449fffffffffffffffffffffffffffffffffffffffff6ffffffffffffffffffffffffffffffffffff5ff5f000f000ff6ffff
|
||||
4444444555444444444444444444449fffffffffffffffffffffffffffffffffffffffff6ffffffffffffffffffffffffffffffffffff5f55fff0f0ffff6ffff
|
||||
4444455444444444444444444444449fffffffffffffffffffffffffffffffffffffffff6ffffffffffffffffffffffffffffffffffff5555fff0f000ff6ffff
|
||||
445554444444444444444444444449ffffffffffffffffffffffffffffffffffffffffff6ffffffffffffffffffffffffffffffffffffffff5fffffffff6ffff
|
||||
554444444444444444444444444449ffffffffffffffffffffffffffffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
444444444444444444444444444449ffffffffffffffffffffffffffffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
444444444444444444444444444449ffffffffffffffffffffffffffffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
444444444444444444444444444449ffffffffffffffffffffffffffffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
444444444444444444444444444449ffffffffffffffffffffffffffffffffffffffffff6666666666666666666666666666666666666666666666666666ffff
|
||||
444444444444444444444444444449ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
444444444444444444444444444559ff000f000f000f000f000ff00fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
444444444444444444444444555449fff0ff0f0f0f0ff0fff0ff0ffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
444444444444444444444555444449fff0ff00ff000ff0fff0ff000fffffffffffffffff6666666666666666666666666666666666666666666666666666ffff
|
||||
444444444444444444455444444449fff0ff0f0f0f0ff0fff0ffff0ff0ffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
444444466644444455544444444449fff0ff0f0f0f0f000ff0ff00ffffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
444444466644455544444444444449ffffffffffffffffffffffffffffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
444444466665544444444444444449ffffffffffffffffffffffffffffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
444444466674444444444444444449ffffffffffffffffffffffffffffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
444445556676444444444444444449ffffff55f5f5f555f55ff5f5ffffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
445554446667444444444444444449fffff5fff5f5ff5ff5f5f5f5ffffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
5544444456676444444444444444449ffff555f555ff5ff5f5f555ffffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
4444444446666444444444444444449ffffff5f5f5ff5ff5f5fff5ffffffffffffffffff6fff666f666f666ff66f666f66ff666ffffffffffffffffffff6ffff
|
||||
4444444445667644444444444444449ffff55ff5f5f555f5f5f555ffffffffffffffffff6fff6f6f6fff6f6f6fff6fff6f6ff6fffffffffffffffffffff6ffff
|
||||
4444444444667644444444444444449fffffffffffffffffffffffffffffffffffffffff6fff66ff66ff666f6fff66ff6f6ff6fffffffffffffffffffff6ffff
|
||||
4444444444566764444444444444449fffffffffffffffffffffffffffffffffffffffff6fff6f6f6fff6f6f6f6f6fff6f6ff6fffffffffffffffffffff6ffff
|
||||
4444444444466764444444444444449fffffffffffffffffffffffffffffffffffffffff6fff6f6f666f6f6f666f666f6f6ff6fffffffffffffffffffff6ffff
|
||||
4444444444456111444444444445559fffffffffffffffffffffffffffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
44444444444411c1444444445554449fffffffffffffffffffffffffffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
444444444444511c144445554444449fffffffffffffffffffffffffffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
444444444444511c144554444444449fffffffffffffffffffffffffffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
4444444444444511115444444444449fffffffffffffffffffffffffffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
4444444444444511c14444444444449fffffffffffffffffffffffffffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
44444444445554511c1444444444449fffffffffffffffffffffffffffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
44444445554444511c1444444444449fffffffffffffffffffffffffffffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffff6ffff
|
||||
444445544444444511c444444444449fffffffffffffffffffffffffffffffffffffffff6666666666666666666666666666666666666666666666666666ffff
|
||||
445554444444444511c144444444449fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
5544444444444444111144444444449fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
4444444444444444111c44444444449fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
444444444444444441111444444449ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
444444444444444441111444444449ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
44444444444444444411c144444449ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
444444444444444444111144444449ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
@ -321,7 +324,7 @@ __label__
|
||||
445554444444444444444444444449ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
|
||||
__gff__
|
||||
0000000000000000000080808080000000000000000000808080808000000080000000000000000000814040818040400000000000000080808080808181808000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000080808080000000000000000000808080808080800080000000000000000000814040818040400000000000004080808080808181808000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
__map__
|
||||
0202020202030011110010101000130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
@ -343,16 +346,16 @@ __map__
|
||||
1d0b0b0b0b1f1f0b0b0b0b0b0b0b0b1b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
0d0e3d2c2d0e0e0e0e00000e3c0e0f0c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
0d0f0f0e000e0e000000000e0e0e0e0c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
0d00002a2b2f2a0f00000000000e000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
0d00002a2b362a0f00000000000e000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
0d00003b3b3b3b00002e2b2a2b0e000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
0d00003a3a3a3900003e3a393b0e000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
0d000000000e2a0f00000e2f2b0e000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
0d00002b2f2a3b0000002b3a3900000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
0d000000000e2a0f00000e362b0e000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
0d00002b362a3b0000002b3a3900000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
0d0f003a393a3a0037383b00000e0e0c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
0d0f000000000f002a2b0f000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
0d0000290f002a003a393d000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
0d0f0000000f3b000000000000000e0c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
0d000000000f0000000f0f0f001e1e0c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
0d000000000f0000000f0f2f001e1e0c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
0d00000000000000000f003f1e1e1e0c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
0d0e0e0000000000000000001e1e1e0c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
1a0a0a17181818190a0a0a0a0a0a0a1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
|
@ -33,7 +33,7 @@ function conversation_draw(screen)
|
||||
--prev_screen.draw()
|
||||
message = messages[message_idx]
|
||||
|
||||
if message[1] == phoebe_portrait then
|
||||
if message[1] == ph_p then
|
||||
phoebe_say(unpack(message))
|
||||
else
|
||||
draw_chatbox(unpack(message))
|
||||
|
@ -1,6 +1,3 @@
|
||||
--tags represent what the object *is*
|
||||
--traitss represent *special qualities* *beyoond* the default for that object.
|
||||
testing = true
|
||||
story = {
|
||||
main=1,
|
||||
branch_lenore=1,
|
||||
@ -70,7 +67,7 @@ library.item_blueprints = {
|
||||
title="reagent",
|
||||
quality_base = 50, quality_range=10,
|
||||
trait_pool={"shiny"}, trait_chance=20,
|
||||
description="red reagent",
|
||||
description="alchemical \nreagent",
|
||||
sprite=33, sprite_recolor={[12]=8},
|
||||
},
|
||||
bomb = {
|
||||
|
20
notes.md
20
notes.md
@ -1,3 +1,16 @@
|
||||
# release notes
|
||||
hey everyone i made... a little tiny video game! please play it!
|
||||
|
||||
it's a bite-size fangame for the atelier franchise, about being a young alchemist in a town down on its luck. can you bring back the fireworks festival that used to light up the skies?
|
||||
|
||||
https://shoofle.net/static/atelier/ateli8.html it should be playable well on mobile, it takes about 15 minutes to play, and has no save or load. i am very proud of it and it's very short.
|
||||
|
||||
if you play it, please let me know! if you play it and it crashes, especially please let me know! i think i ironed out all the major crash spots but there might be one or two lurking somewhere.
|
||||
|
||||
i made a dialog-heavy crafting game in pico-8 because i do not fear god or reason!
|
||||
|
||||
one of my goals with #AtelierPhoebe was to make a game that had everything it needed to be a Real Game, even if it didn't actually have enough content/length to justify those things. obviously there's a lot more ui and interface stuff i could have added for that (like save/loads and more menus) but i had a good time making something weird. it's by far the most finished game i've ever made.
|
||||
|
||||
# story states:
|
||||
|
||||
story state: 1
|
||||
@ -214,4 +227,9 @@ done! 7. make it so you can unselect final traits.
|
||||
1. green T piece is bugged?
|
||||
2. when starting to finalize traits it sshould reset cursors
|
||||
|
||||
art for main screen, or "press z to start"
|
||||
# final touches 1/27
|
||||
|
||||
1. art for main screen, or "press z to start"
|
||||
2. witch tower two tiles tall maybe?
|
||||
3. anomalous green tiles bug? when you place a tile, ssometimes it removes non-overlapping traits
|
||||
4. draw upper half of map, then player ssprite, then lower half, to enssure better layering?
|
||||
|
@ -4,218 +4,294 @@ grid_height = 5
|
||||
grid_x = 14
|
||||
grid_y = 34
|
||||
|
||||
c = {
|
||||
ing_slot=1, -- the slot in the recipe currently being modified, whether sselecting trait or ingredient
|
||||
ing_idx=1, -- the index into filtered ingredients of the current ingredient selection
|
||||
trait_slot=0, -- the trait sslot of the recipe we're modifying.
|
||||
x=0, y=0 -- x y coordinates in the puzzle grid for the current trait
|
||||
center_glyph = 132
|
||||
|
||||
|
||||
cursor = {
|
||||
ing_slot=1,
|
||||
ing_idx=1,
|
||||
trait_slot=1,
|
||||
x=0, y=0,
|
||||
big_button=false,
|
||||
}
|
||||
partial_recipe = {
|
||||
ingredients = {},
|
||||
trait_listings = {},
|
||||
final_selected_traits = {}
|
||||
}
|
||||
|
||||
center_glyph = 132
|
||||
ingredients = {}
|
||||
-- traits which have been placed
|
||||
traits = {}
|
||||
state = {
|
||||
choosing_ingredient = true,
|
||||
placing_trait = false,
|
||||
finalizing = false,
|
||||
|
||||
choosing_ingredient = true
|
||||
placing_trait = false
|
||||
finalizing = false
|
||||
big_button = false
|
||||
final_trait_options = {}
|
||||
final_selected_traits = {}
|
||||
filtered_ingredients={},
|
||||
final_trait_options={},
|
||||
}
|
||||
|
||||
function crafting_before()
|
||||
center_glyph = rnd({132, 134, 164, 166})
|
||||
c.x = 0
|
||||
c.y = 0
|
||||
c.ing_slot = 1
|
||||
c.ing_idx = 1
|
||||
c.trait_slot = 0
|
||||
|
||||
ingredients = {}
|
||||
traits = {}
|
||||
final_trait_options = {}
|
||||
cursor = {
|
||||
ing_slot=1,
|
||||
ing_idx=1,
|
||||
trait_slot=1,
|
||||
x=0, y=0,
|
||||
big_button=false, -- are we selecting the big button?
|
||||
}
|
||||
|
||||
choosing_ingredient = true
|
||||
placing_trait = false
|
||||
finalizing = false
|
||||
big_button = false
|
||||
partial_recipe = {
|
||||
ingredients = {},
|
||||
trait_listings = {},
|
||||
final_selected_traits = {}
|
||||
}
|
||||
|
||||
state = {
|
||||
-- three state flags for which phase of synthesis we're in
|
||||
choosing_ingredient = true, -- choosing an ingredient for one of the slots of the recipe.
|
||||
placing_trait = false, -- placing a trait into the grid.
|
||||
finalizing = false, -- selecting the final traits and clicking the create glyph
|
||||
-- arrays in use
|
||||
filtered_ingredients={}, -- the filtered list of ingredients we could use for the currently selected slot
|
||||
final_trait_options={}, -- all the traits which were active at the end of the
|
||||
}
|
||||
update_filtered_ingredients()
|
||||
end
|
||||
|
||||
function crafting_update()
|
||||
if choosing_ingredient then
|
||||
if state.choosing_ingredient then
|
||||
crafting_choice_update()
|
||||
elseif placing_trait then
|
||||
elseif state.placing_trait then
|
||||
crafting_place_update()
|
||||
elseif finalizing then
|
||||
elseif state.finalizing then
|
||||
crafting_finalize_update()
|
||||
end
|
||||
end
|
||||
|
||||
function crafting_choice_update()
|
||||
requirement = current_recipe.ingredients[c.ing_slot]
|
||||
filtered_ingredients = filter_list(
|
||||
inventory,
|
||||
function(ing)
|
||||
if contains(ingredients, ing) then return false end
|
||||
return requirement == ing.title or contains(ing.tags, requirement)
|
||||
end)
|
||||
current_ingredient = filtered_ingredients[c.ing_idx]
|
||||
local current_slot_requirement = current_recipe.ingredients[cursor.ing_slot]
|
||||
|
||||
if btnp(0) and cursor.ing_idx>1 then
|
||||
sfx(3)
|
||||
cursor.ing_idx -= 1
|
||||
end
|
||||
if btnp(1) and cursor.ing_idx<#state.filtered_ingredients then
|
||||
sfx(3)
|
||||
cursor.ing_idx += 1
|
||||
end
|
||||
|
||||
if btnp(0) and c.ing_idx>1 then
|
||||
sfx(3)
|
||||
c.ing_idx -= 1
|
||||
end
|
||||
if btnp(1) and c.ing_idx<#filtered_ingredients then
|
||||
sfx(3)
|
||||
c.ing_idx += 1
|
||||
end
|
||||
local current_ingredient = state.filtered_ingredients[cursor.ing_idx]
|
||||
|
||||
if btnp(4) and current_ingredient ~= nil then
|
||||
-- lock in this ingredient and move on to moving traits arund
|
||||
add(ingredients, current_ingredient)
|
||||
if #current_ingredient.traits ~= 0 then
|
||||
-- if there are traits on tihs ingredient, move on to setting traits.
|
||||
choosing_ingredient = false
|
||||
placing_trait = true
|
||||
finalizing = false
|
||||
c.trait_slot = 1
|
||||
c.ing_idx = 1
|
||||
elseif #ingredients < #current_recipe.ingredients then
|
||||
-- if there are remaining ingredients to set, then we move to the next ingredient slot.
|
||||
choosing_ingredient = true
|
||||
placing_trait = false
|
||||
finalizing = false
|
||||
c.trait_slot = 0
|
||||
c.ing_idx = 1
|
||||
c.ing_slot += 1
|
||||
add(partial_recipe.ingredients, current_ingredient)
|
||||
|
||||
if #(current_ingredient.traits) ~= 0 then
|
||||
-- if there are traits on this ingredient, set them.
|
||||
state.choosing_ingredient = false
|
||||
state.placing_trait = true
|
||||
|
||||
cursor.trait_slot = 1
|
||||
elseif #partial_recipe.ingredients < #current_recipe.ingredients then
|
||||
-- if there are remaining ingredients to set, do that.
|
||||
cursor.ing_idx = 1
|
||||
cursor.ing_slot += 1
|
||||
update_filtered_ingredients()
|
||||
else
|
||||
-- if there are no more ingredients to set, then we finalize.
|
||||
sfx(2)
|
||||
c.x, c.y = 0, 0
|
||||
final_trait_options = filter_list(traits, function(x) return x.active end)
|
||||
choosing_ingredient = false
|
||||
placing_trait = false
|
||||
final_selected_traits = {}
|
||||
finalizing = true
|
||||
c.trait_slot = 0
|
||||
c.ing_idx = 1
|
||||
c.ing_slot = 1
|
||||
-- if there are no more ingredients to set, then move on to finalizing.
|
||||
begin_finalize()
|
||||
end
|
||||
end
|
||||
|
||||
if (btnp(5)) then
|
||||
-- delete the last ingredient from the ingredients list
|
||||
if #ingredients == 0 then
|
||||
if btnp(5) then
|
||||
local previous_index = cursor.ing_slot - 1
|
||||
if #(partial_recipe.ingredients) == 0 then
|
||||
-- if there's no ingredients set, we back out.
|
||||
change_screen(screen_recipe_list)
|
||||
else
|
||||
traits = filter_list(
|
||||
traits,
|
||||
function(set_trait) return set_trait.from_ingredient_slot ~= #ingredients end
|
||||
)
|
||||
|
||||
deli(ingredients)
|
||||
c.trait_slot = 0
|
||||
if choosing_ingredient and c.ing_slot > 1 then c.ing_slot -= 1 end
|
||||
choosing_ingredient = true
|
||||
placing_trait = false
|
||||
--otherwise, there are ingreddients set, and cursor.ing_slot is greater than one.
|
||||
elseif #(partial_recipe.ingredients[previous_index].traits) ~= 0 then
|
||||
-- we're setting an ingredient.
|
||||
-- the previous ingredient slot has an ingredient set with traits.
|
||||
-- delete the last set trait and pick it up as our cursor.
|
||||
local last_set_trait = deli(partial_recipe.trait_listings)
|
||||
|
||||
cursor.ing_slot -= 1
|
||||
cursor.ing_idx = 1
|
||||
cursor.trait_slot = last_set_trait.ingredient_trait_slot
|
||||
cursor.x = last_set_trait.x
|
||||
cursor.y = last_set_trait.y
|
||||
|
||||
state.choosing_ingredient = false
|
||||
state.placing_trait = true
|
||||
else
|
||||
--we're setting an ingredient, but the previouus ingredient didn't have any traits.
|
||||
deli(partial_recipe.ingredients)
|
||||
cursor.ing_slot = cursor.ing_slot - 1
|
||||
cursor.ing_idx = 1
|
||||
update_filtered_ingredients()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function update_filtered_ingredients()
|
||||
local current_slot_requirement = current_recipe.ingredients[cursor.ing_slot]
|
||||
state.filtered_ingredients = filter_list(
|
||||
inventory,
|
||||
function(ing)
|
||||
if contains(partial_recipe.ingredients, ing) then return false end
|
||||
if contains(ing.tags, current_recipe.ingredients[cursor.ing_slot]) then return true end
|
||||
return current_slot_requirement == ing.title
|
||||
end)
|
||||
end
|
||||
|
||||
function crafting_place_update()
|
||||
current_ingredient = ingredients[c.ing_slot]
|
||||
current_trait = library.traits[current_ingredient.traits[c.trait_slot]]
|
||||
local current_ingredient = partial_recipe.ingredients[cursor.ing_slot]
|
||||
local current_trait_name = current_ingredient.traits[cursor.trait_slot]
|
||||
local current_trait = library.traits[current_trait_name]
|
||||
|
||||
width = current_trait[4]
|
||||
height = current_trait[5]
|
||||
local width = current_trait[4]
|
||||
local height = current_trait[5]
|
||||
|
||||
if btnp(0) and c.x>0 then c.x -= 1 end
|
||||
if btnp(1) and c.x+width < grid_width then c.x += 1 end
|
||||
if btnp(2) and c.y>0 then c.y -= 1 end
|
||||
if btnp(3) and c.y+height < grid_height then c.y += 1 end
|
||||
if btnp(0) and cursor.x>0 then cursor.x -= 1 end
|
||||
if btnp(1) and cursor.x+width < grid_width then cursor.x += 1 end
|
||||
if btnp(2) and cursor.y>0 then cursor.y -= 1 end
|
||||
if btnp(3) and cursor.y+height < grid_height then cursor.y += 1 end
|
||||
|
||||
if btnp(4) then
|
||||
new_trait = {trait=current_trait, x=c.x, y=c.y, active=true, from_ingredient_slot=c.ing_slot}
|
||||
-- make a new trait listing
|
||||
local new_trait_listing = {
|
||||
ingredient_i_belong_to=cursor.ing_slot, -- index of the ingredient this strait belongs to
|
||||
ingredient_trait_slot=cursor.trait_slot, -- which trait slot we came from
|
||||
x=cursor.x, y=cursor.y, --offset of the piece in the grid
|
||||
trait = current_trait, -- the trait in question
|
||||
active = true, -- whether the trait is active
|
||||
}
|
||||
|
||||
for idx, trait in ipairs(traits) do
|
||||
if overlaps(trait, new_trait) then
|
||||
traits[idx].active = false
|
||||
-- turn off all overlapped traits
|
||||
for idx, trait_listing in ipairs(partial_recipe.trait_listings) do
|
||||
if overlaps(trait_listing, new_trait_listing) then
|
||||
trait_listing.active = false
|
||||
end
|
||||
end
|
||||
|
||||
add(traits, new_trait)
|
||||
-- add it to the record!~
|
||||
add(partial_recipe.trait_listings, new_trait_listing)
|
||||
|
||||
c.x, c.y = 0,0
|
||||
|
||||
if c.trait_slot < #current_ingredient.traits then
|
||||
-- if there's more traits to set, then we should keep setting traits.
|
||||
choosing_ingredient = false
|
||||
placing_trait = true
|
||||
finalizing = false
|
||||
c.trait_slot += 1
|
||||
elseif c.ing_slot < #current_recipe.ingredients then
|
||||
-- move on to the next step
|
||||
if cursor.trait_slot < #current_ingredient.traits then
|
||||
-- if there's more traits to set, then we should keep setting traits!
|
||||
cursor.trait_slot += 1
|
||||
elseif cursor.ing_slot < #current_recipe.ingredients then
|
||||
-- if there's more ingredients to set, then we move on to setting ingredients.
|
||||
choosing_ingredient = true
|
||||
placing_trait = false
|
||||
finalizing = false
|
||||
c.trait_slot = 0
|
||||
c.ing_slot += 1
|
||||
state.choosing_ingredient = true
|
||||
state.placing_trait = false
|
||||
|
||||
cursor.trait_slot = 1
|
||||
cursor.ing_slot += 1
|
||||
cursor.ing_idx = 1
|
||||
update_filtered_ingredients()
|
||||
else
|
||||
-- if there's no more ingredients to set, then we move on to finalizing.
|
||||
begin_finalize()
|
||||
end
|
||||
end
|
||||
|
||||
if btnp(5) then
|
||||
-- we are placing traits.
|
||||
-- that means that cursor.ing_slot refers to an ingredient which is set
|
||||
-- and cursor.trait_slot refers to 1 or 2, and one which isn't set.
|
||||
-- if curssor.trait_slot is 2, then we should delete the last set trait.
|
||||
if cursor.trait_slot == 1 then
|
||||
state.choosing_ingredient = true
|
||||
state.placing_trait = false
|
||||
|
||||
deli(partial_recipe.ingredients)
|
||||
update_filtered_ingredients()
|
||||
else
|
||||
-- if we were placing the second trait, then we should go to placing the first trait,
|
||||
-- which we also need to remoove from the trait listings.
|
||||
cursor.trait_slot -= 1
|
||||
local last = deli(partial_recipe.trait_listings)
|
||||
cursor.x = last.x
|
||||
cursor.y = last.y
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function begin_finalize()
|
||||
sfx(2)
|
||||
c.x, c.y = 0, 0
|
||||
final_trait_options = filter_list(traits, function(x) return x.active end)
|
||||
choosing_ingredient = false
|
||||
placing_trait = false
|
||||
finalizing = true
|
||||
final_selected_traits = {}
|
||||
c.trait_slot = 0
|
||||
c.ing_slot = 1
|
||||
end
|
||||
end
|
||||
if (btnp(5)) then
|
||||
undo_ingredient()
|
||||
end
|
||||
|
||||
state.final_trait_options = filter_list(partial_recipe.trait_listings, function(x) return x.active end)
|
||||
|
||||
state.choosing_ingredient = false
|
||||
state.placing_trait = false
|
||||
state.finalizing = true
|
||||
|
||||
cursor.x = 0
|
||||
cursor.y = 0
|
||||
end
|
||||
|
||||
function crafting_finalize_update()
|
||||
if #final_trait_options < 3 then big_button = true end
|
||||
if #state.final_trait_options < 3 then cursor.big_button = true end
|
||||
|
||||
if not big_button then
|
||||
newx, newy = c.x, c.y
|
||||
local newx = cursor.x
|
||||
local newy = cursor.y
|
||||
if btnp(0) then newx -= 1 end
|
||||
if btnp(1) then newx += 1 end
|
||||
if btnp(2) then newy -= 1 end
|
||||
if btnp(3) then newy += 1 end
|
||||
|
||||
if (final_trait_options[2*newy + newx + 1] ~= nil) and newx <= 1 and newx >= 0 then
|
||||
c.x, c.y = newx, newy
|
||||
if not cursor.big_button
|
||||
and (state.final_trait_options[2*newy + newx + 1] ~= nil)
|
||||
and newx <= 1
|
||||
and newx >= 0 then
|
||||
cursor.x, cursor.y = newx, newy
|
||||
elseif btnp(3) and not (btnp(0) or btnp(1) or btnp(2)) then
|
||||
big_button = true
|
||||
-- if the next selected thing was out of bounds but we pressed down, then we're highlighting the big button
|
||||
cursor.big_button = true
|
||||
end
|
||||
local i = 2*c.y + c.x + 1
|
||||
local i = 2*cursor.y + cursor.x + 1
|
||||
|
||||
if btnp(4) and not big_button then
|
||||
if contains(final_selected_traits, i) then
|
||||
del(final_selected_traits, i)
|
||||
elseif #final_selected_traits < 2 then
|
||||
add(final_selected_traits, i)
|
||||
if btnp(4) and not cursor.big_button then
|
||||
if contains(partial_recipe.final_selected_traits, i) then
|
||||
del(partial_recipe.final_selected_traits, i)
|
||||
elseif #partial_recipe.final_selected_traits < 2 then
|
||||
add(partial_recipe.final_selected_traits, i)
|
||||
end
|
||||
end
|
||||
--todo: go back (btnp5)
|
||||
else
|
||||
if btnp(2) and #final_trait_options > 2 then big_button = false end
|
||||
if btnp(4) then
|
||||
|
||||
if btnp(2) and cursor.big_button and #state.final_trait_options > 2 then
|
||||
-- if we're on the big button, and there's enough trait options, then if we press up,
|
||||
-- it should unsselect the big button.
|
||||
cursor.big_button = false
|
||||
end
|
||||
|
||||
if btnp(4) and cursor.big_button then
|
||||
-- if you pressed o and had the big button selected, then do the thing!
|
||||
make_the_product()
|
||||
big_button = false
|
||||
cursor.big_button = false
|
||||
end
|
||||
if btnp(5) and #final_trait_options < 3 then
|
||||
-- go back a step
|
||||
undo_ingredient()
|
||||
finalizing = false
|
||||
elseif btnp(5) then
|
||||
big_button = false
|
||||
|
||||
if btnp(5) then
|
||||
local last_ingredient = partial_recipe.ingredients[#partial_recipe.ingredients]
|
||||
|
||||
if #last_ingredient.traits == 0 then
|
||||
state.finalizing = false
|
||||
state.choosing_ingredient = true
|
||||
|
||||
cursor.ing_idx = 1
|
||||
|
||||
deli(partial_recipe.ingredients)
|
||||
else
|
||||
local trait_listing = deli(partial_recipe.trait_listings)
|
||||
|
||||
state.finalizing = false
|
||||
state.placing_trait = true
|
||||
|
||||
cursor.trait_slot = trait_listing.ingredient_trait_slot
|
||||
cursor.x = trait_listing.x
|
||||
cursor.y = trait_listing.y
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -223,41 +299,29 @@ end
|
||||
function make_the_product()
|
||||
local product = make_item(library.item_blueprints[current_recipe.result])
|
||||
product.quality = quality()
|
||||
add(inventory, product)
|
||||
for x in all(ingredients) do
|
||||
del(inventory, x)
|
||||
|
||||
for ingredient in all(partial_recipe.ingredients) do
|
||||
-- remove all the ingredientss that we used
|
||||
del(inventory, ingredient)
|
||||
end
|
||||
|
||||
product.traits = {}
|
||||
if #final_trait_options < 3 then
|
||||
for t in all(final_trait_options) do
|
||||
add(product.traits, t.trait[1])
|
||||
|
||||
if #state.final_trait_options < 3 then
|
||||
for trait_listing in all(state.final_trait_options) do
|
||||
add(product.traits, trait_listing.trait[1])
|
||||
end
|
||||
else
|
||||
for i in all(final_selected_traits) do
|
||||
add(product.traits, final_trait_options[i].trait[1])
|
||||
for idx in all(partial_recipe.final_selected_traits) do
|
||||
add(product.traits, state.final_trait_options[idx].trait[1])
|
||||
end
|
||||
end
|
||||
|
||||
add(inventory, product)
|
||||
sfx(5)
|
||||
change_screen(screen_recipe_list)
|
||||
end
|
||||
|
||||
function undo_ingredient()
|
||||
if #ingredients == 0 then
|
||||
change_screen(screen_recipe_list)
|
||||
else
|
||||
traits = filter_list(
|
||||
traits,
|
||||
function(set_trait) return set_trait.from_ingredient_slot ~= #ingredients end
|
||||
)
|
||||
|
||||
deli(ingredients)
|
||||
c.trait_slot = 0
|
||||
if choosing_ingredient and c.ing_slot > 1 then c.ing_slot -= 1 end
|
||||
choosing_ingredient = true
|
||||
placing_trait = false
|
||||
end
|
||||
end
|
||||
|
||||
function crafting_draw()
|
||||
cls()
|
||||
|
||||
@ -270,32 +334,109 @@ function crafting_draw()
|
||||
-- puzzle grid including pieces
|
||||
draw_grid()
|
||||
|
||||
if finalizing then
|
||||
if #final_trait_options > 2 then
|
||||
if state.finalizing then
|
||||
draw_finalizing_sheet()
|
||||
end
|
||||
end
|
||||
|
||||
function draw_grid()
|
||||
map(0,0, grid_x,grid_y, grid_width+1,grid_height+1)
|
||||
for t in all(partial_recipe.trait_listings) do
|
||||
if t.active then
|
||||
map(t.trait[2], t.trait[3],
|
||||
(t.x*grid_size)+grid_x, (t.y*grid_size)+grid_y,
|
||||
t.trait[4], t.trait[5])
|
||||
end
|
||||
end
|
||||
|
||||
if (state.placing_trait) then
|
||||
local current_ingredient = partial_recipe.ingredients[cursor.ing_slot]
|
||||
local current_trait_label = current_ingredient.traits[cursor.trait_slot]
|
||||
local trait = library.traits[current_trait_label]
|
||||
|
||||
-- draw the currently selected trait into the grid
|
||||
map(trait[2], trait[3],
|
||||
(cursor.x*grid_size)+grid_x, (cursor.y*grid_size)+grid_y,
|
||||
trait[4], trait[5])
|
||||
end
|
||||
end
|
||||
|
||||
function draw_recipe_in_progress_on_paper(x, y)
|
||||
-- selected ingredients
|
||||
for i, ing in ipairs(partial_recipe.ingredients) do
|
||||
draw_ingredient_listing(ing, x+40, y + 26*i)
|
||||
end
|
||||
color(blank_ingredient_outline_color)
|
||||
|
||||
for i=(cursor.ing_slot+1),#current_recipe.ingredients do
|
||||
print(current_recipe.ingredients[i], x+46, y+2+26*i+9)
|
||||
end
|
||||
|
||||
|
||||
-- quality listing
|
||||
color(base_text_color)
|
||||
print("quality", x+2, y+12)
|
||||
print_quality(quality(), x+44, y+18)
|
||||
|
||||
|
||||
if state.choosing_ingredient and cursor.ing_slot < #current_recipe.ingredients + 1 then
|
||||
-- draw a box around the ingredient we're choosing
|
||||
yc = y + 26*cursor.ing_slot
|
||||
xc = x+40
|
||||
rect(xc, yc, xc+55, yc+26,10)
|
||||
spr(6, xc-8, yc+10)
|
||||
spr(7, xc+56, yc+10)
|
||||
|
||||
|
||||
local current_ingredient = state.filtered_ingredients[cursor.ing_idx]
|
||||
|
||||
if current_ingredient == nil then
|
||||
color(blank_ingredient_outline_color)
|
||||
print(current_recipe.ingredients[cursor.ing_slot], x+46, y+2+26*cursor.ing_slot+9)
|
||||
else
|
||||
-- draw the ingredient listing for the selected ingredient
|
||||
draw_ingredient_listing(current_ingredient, xc, yc)
|
||||
end
|
||||
elseif state.placing_trait then
|
||||
-- draw a marker for the trait we're picking
|
||||
yc = y + 26*cursor.ing_slot
|
||||
yc = 3+yc+cursor.trait_slot*6
|
||||
xc = x+38
|
||||
spr(8, xc, yc)
|
||||
end
|
||||
|
||||
for i, t in ipairs(filter_list(partial_recipe.trait_listings, function(trait) return trait.active end)) do
|
||||
color(base_text_color)
|
||||
print(t.trait[1], x+5, y+78 + 8*i)
|
||||
end
|
||||
end
|
||||
|
||||
function draw_finalizing_sheet()
|
||||
if #state.final_trait_options > 2 then
|
||||
draw_paper(24, 10, 128-24-24, 128-10-10)
|
||||
color(highlight_text_color)
|
||||
print("pick two traits\nto keep!",32, 20)
|
||||
|
||||
for i, trait in ipairs(final_trait_options) do
|
||||
for i, trait_listing in ipairs(state.final_trait_options) do
|
||||
xi, yi = (i-1)%2, (i+i%2-2)/2
|
||||
x, y = 64-32+xi*32, 34+yi*8
|
||||
if contains(final_selected_traits, i) then
|
||||
rect(x-2, y-2, x+30, y+6, 10)
|
||||
if contains(partial_recipe.final_selected_traits, i) then
|
||||
rect(x-1, y-1, x+29, y+5, 10)
|
||||
end
|
||||
if not big_button and xi == c.x and yi == c.y then
|
||||
if not cursor.big_button and xi == cursor.x and yi == cursor.y then
|
||||
rect(x-2, y-2, x+30, y+6, 0)
|
||||
end
|
||||
if contains(final_selected_traits, i) then
|
||||
if contains(partial_recipe.final_selected_traits, i) then
|
||||
color(highlight_text_color)
|
||||
else
|
||||
color(base_text_color)
|
||||
end
|
||||
print(trait.trait[1], x, y )
|
||||
print(trait_listing.trait[1], x, y )
|
||||
end
|
||||
|
||||
--draw_paper(40, 76, 128-40-40, 12)
|
||||
color(highlight_text_color)
|
||||
if big_button then
|
||||
if cursor.big_button then
|
||||
pal(9,0)
|
||||
else
|
||||
palt(12, true)
|
||||
@ -304,7 +445,7 @@ function crafting_draw()
|
||||
spr(center_glyph, 64-8, 80, 2, 2)
|
||||
pal()
|
||||
palt()
|
||||
if big_button then
|
||||
if cursor.big_button then
|
||||
color(12)
|
||||
else
|
||||
color(highlight_text_color)
|
||||
@ -317,7 +458,7 @@ function crafting_draw()
|
||||
spr(center_glyph, 64-8, 60-8, 2, 2)
|
||||
pal()
|
||||
palt()
|
||||
if big_button then
|
||||
if cursor.big_button then
|
||||
color(12)
|
||||
else
|
||||
color(highlight_text_color)
|
||||
@ -325,89 +466,21 @@ function crafting_draw()
|
||||
print("create!", 64-12, 80)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function draw_grid()
|
||||
map(0,0, grid_x,grid_y, grid_width+1,grid_height+1)
|
||||
for trait in all(traits) do
|
||||
if trait.active then
|
||||
map(trait.trait[2], trait.trait[3],
|
||||
(trait.x*grid_size)+grid_x, (trait.y*grid_size)+grid_y,
|
||||
trait.trait[4], trait.trait[5])
|
||||
end
|
||||
end
|
||||
|
||||
if (placing_trait) then
|
||||
trait = library.traits[ingredients[c.ing_slot].traits[c.trait_slot]]
|
||||
|
||||
-- draw the currently selected trait into the grid
|
||||
map(trait[2], trait[3],
|
||||
(c.x*grid_size)+grid_x, (c.y*grid_size)+grid_y,
|
||||
trait[4], trait[5])
|
||||
end
|
||||
end
|
||||
|
||||
function draw_recipe_in_progress_on_paper(x, y)
|
||||
-- selected ingredients
|
||||
for i, ing in ipairs(ingredients) do
|
||||
draw_ingredient_listing(ing, x+40, y + 26*i)
|
||||
end
|
||||
color(blank_ingredient_outline_color)
|
||||
|
||||
for i=(c.ing_slot+1),#current_recipe.ingredients do
|
||||
print(current_recipe.ingredients[i], x+46, y+2+26*i+9)
|
||||
end
|
||||
|
||||
|
||||
-- quality listing
|
||||
color(base_text_color)
|
||||
print("quality", x+2, y+12)
|
||||
print_quality(quality(), x+44, y+18)
|
||||
|
||||
|
||||
if (choosing_ingredient and c.ing_slot < #current_recipe.ingredients + 1) then
|
||||
-- draw a box around the ingredient we're choosing
|
||||
yc = y + 26*c.ing_slot
|
||||
xc = x+40
|
||||
rect(xc, yc, xc+55, yc+26,10)
|
||||
spr(6, xc-8, yc+10)
|
||||
spr(7, xc+56, yc+10)
|
||||
|
||||
if current_ingredient == nil then
|
||||
color(blank_ingredient_outline_color)
|
||||
print(current_recipe.ingredients[c.ing_slot], x+46, y+2+26*c.ing_slot+9)
|
||||
else
|
||||
-- draw the ingredient listing for the selected ingredient
|
||||
draw_ingredient_listing(current_ingredient, xc, yc)
|
||||
end
|
||||
elseif (placing_trait) then
|
||||
-- draw a marker for the trait we're picking
|
||||
yc = y + 26*c.ing_slot
|
||||
yc = 3+yc+c.trait_slot*6
|
||||
xc = x+38
|
||||
spr(8, xc, yc)
|
||||
end
|
||||
|
||||
for i, t in ipairs(filter_list(traits, function(trait) return trait.active end)) do
|
||||
color(base_text_color)
|
||||
print(t.trait[1], x+5, y+78 + 8*i)
|
||||
end
|
||||
end
|
||||
|
||||
function quality()
|
||||
local quality_sum = 0
|
||||
|
||||
for ing in all(ingredients) do
|
||||
for ing in all(partial_recipe.ingredients) do
|
||||
quality_sum += ing.quality
|
||||
end
|
||||
|
||||
if #ingredients > 1 then
|
||||
quality_sum = flr(quality_sum/#ingredients)
|
||||
if #partial_recipe.ingredients > 1 then
|
||||
quality_sum = flr(quality_sum/#partial_recipe.ingredients)
|
||||
else
|
||||
quality_sum = flr(quality_sum)
|
||||
end
|
||||
|
||||
for trait in all(traits) do
|
||||
for trait in all(partial_recipe.traits) do
|
||||
if trait.active then quality_sum += 5 end
|
||||
end
|
||||
|
||||
@ -416,12 +489,14 @@ end
|
||||
|
||||
screen_crafting_raw = {before=crafting_before, draw=crafting_draw, update=crafting_update}
|
||||
screen_crafting = screen_conversation({
|
||||
{phoebe_portrait, [[when i craft, i pick ingredients one by one with left and right]]},
|
||||
{phoebe_portrait, [[and press 🅾️ to lock them in before picking what traits to use]]},
|
||||
{phoebe_portrait, [[trying to fit them into the grid, which increases the quality. ]]},
|
||||
{phoebe_portrait, [[two traits from those still in the grid at the end are added to the product!]]},
|
||||
{phoebe_portrait, [[but if you overlap a trait, it will be removed.]]},
|
||||
{phoebe_portrait, [[i've even heard of some traits that combine to form others!]]}
|
||||
{ph_p, [[when i craft, i pick which of each ingredient to use with left and right,]]},
|
||||
{ph_p, [[and press 🅾️ to lock them in.]]},
|
||||
{ph_p, [[some items have additional traits for their special properties.]]},
|
||||
{ph_p, [[i set a puzzle piece into the grid for each trait on the object.]]},
|
||||
{ph_p, [[every trait i put in the grid increases the overall quality.]]},
|
||||
{ph_p, [[but if you overlap other traits' tiles, it'll remove the old ones!]]},
|
||||
{ph_p, [[then at the end, you can pick two traits to transfer]]},
|
||||
{ph_p, [[onto the final product.]]},
|
||||
},
|
||||
function()
|
||||
screen_crafting = screen_crafting_raw
|
||||
|
@ -5,6 +5,11 @@ inventory_cursor = {
|
||||
x=0, y=0,
|
||||
}
|
||||
|
||||
function inventory_before()
|
||||
inventory_cursor.x = 0
|
||||
inventory_cursor.y = 0
|
||||
end
|
||||
|
||||
function inventory_slide(x1, x2)
|
||||
return {
|
||||
timer = 0,
|
||||
@ -28,25 +33,21 @@ function inventory_slide(x1, x2)
|
||||
}
|
||||
end
|
||||
|
||||
function inventory_before()
|
||||
end
|
||||
|
||||
function inventory_update()
|
||||
cx, cy = inventory_cursor.x, inventory_cursor.y
|
||||
if btnp(0) then cx -= 1 end
|
||||
if btnp(1) then cx += 1 end
|
||||
if btnp(2) then cy -= 1 end
|
||||
if btnp(3) then cy += 1 end
|
||||
if cy >= 0 and cy < flr(#inventory/5) then
|
||||
if cx >= 0 and cx < 5 then
|
||||
if cy >= 0 and cy < flr(#inventory/5) and cx >= 0 and cx < 5 then
|
||||
inventory_cursor.x = cx
|
||||
inventory_cursor.y = cy
|
||||
end
|
||||
elseif cy == flr(#inventory / 5) then
|
||||
if cx >= 0 and cx < #inventory % 5 then
|
||||
elseif cy == flr(#inventory / 5) and cx >= 0 and cx < #inventory % 5 then
|
||||
inventory_cursor.x = cx
|
||||
inventory_cursor.y = cy
|
||||
end
|
||||
elseif btnp(3) then
|
||||
animate(inventory_slide(inventory_drawer_height_max,0))
|
||||
change_screen(screen_workbench)
|
||||
end
|
||||
|
||||
if btnp(5) then
|
||||
@ -100,16 +101,17 @@ function draw_drawer_contents()
|
||||
end
|
||||
|
||||
function draw_item_sheet()
|
||||
if #inventory ~= 0 then
|
||||
local item = inventory[1 + 5*inventory_cursor.y + inventory_cursor.x]
|
||||
if item ~= nil then
|
||||
draw_paper(35,94, 128-2*35,28)
|
||||
draw_ingredient_listing(inventory[1 + 5*inventory_cursor.y + inventory_cursor.x], 35, 94)
|
||||
draw_ingredient_listing(item, 35, 94)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
screen_inventory_raw = {before=inventory_before, draw=inventory_draw, update=inventory_update}
|
||||
screen_inventory = screen_conversation({
|
||||
{phoebe_portrait, [[oh right, this is the drawer where i keep my stuff!]]},},
|
||||
{ph_p, [[oh right, this is the drawer where i keep my stuff!]]},},
|
||||
function()
|
||||
screen_inventory = screen_inventory_raw
|
||||
change_screen(screen_inventory)
|
||||
|
@ -102,6 +102,11 @@ function flip_in_letter(page, new_page)
|
||||
end
|
||||
|
||||
function letters_update()
|
||||
if (btnp(1) and letter_idx == #letters) or btnp(5) then
|
||||
animate(letters_move_out(-10, 8, -10-80, 8+8))
|
||||
change_screen(screen_workbench)
|
||||
end
|
||||
|
||||
if btnp(0) and letter_idx > 1 then
|
||||
animate(flip_away_letter(letter_idx))
|
||||
letter_idx -= 1
|
||||
@ -111,11 +116,6 @@ function letters_update()
|
||||
animate(flip_in_letter(letter_idx, letter_idx+1))
|
||||
letter_idx = letter_idx + 1
|
||||
end
|
||||
|
||||
if btnp(5) then
|
||||
animate(letters_move_out(-10, 8, -10-80, 8+8))
|
||||
change_screen(screen_workbench)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@ -133,7 +133,7 @@ function draw_letter_on_paper(letter, x, y)
|
||||
end
|
||||
|
||||
screen_letters = {draw=letters_draw, update=letters_update}
|
||||
screen_letters = screen_conversation({{phoebe_portrait, "ah. pile of letters i should be reading."}},
|
||||
screen_letters = screen_conversation({{ph_p, "ah. pile of letters i should be reading."}},
|
||||
function()
|
||||
screen_letters = {draw=letters_draw, update=letters_update}
|
||||
change_screen(screen_letters)
|
||||
|
@ -101,6 +101,11 @@ function flip_in(page, new_page)
|
||||
end
|
||||
|
||||
function pages_update()
|
||||
if (btnp(0) and page_idx == 1) or btnp(5) then
|
||||
animate(recipe_list_move_out(30, 8, 30+80, 8+8))
|
||||
change_screen(screen_workbench)
|
||||
end
|
||||
|
||||
if btnp(0) and page_idx ~= 1 then
|
||||
animate(flip_away(page_idx))
|
||||
page_idx = page_idx - 1
|
||||
@ -115,10 +120,6 @@ function pages_update()
|
||||
change_screen(screen_crafting)
|
||||
current_recipe = grimoire[page_idx]
|
||||
end
|
||||
if btnp(5) then
|
||||
animate(recipe_list_move_out(30, 8, 30+80, 8+8))
|
||||
change_screen(screen_workbench)
|
||||
end
|
||||
|
||||
current_recipe = grimoire[page_idx]
|
||||
end
|
||||
@ -135,9 +136,8 @@ end
|
||||
|
||||
screen_recipe_list = {draw=pages_draw, update=pages_update}
|
||||
screen_recipe_list = screen_conversation({
|
||||
{phoebe_portrait, [[this is all my recipes. they each list what they need for ingredients.]]},
|
||||
{phoebe_portrait, [[go through them with left and right, or]]},
|
||||
{phoebe_portrait, [[press ❎ to back out to the workbench. 🅾️ will start crafting!!]]},
|
||||
{ph_p, [[this is all my recipes. they each list what they need for ingredients.]]},
|
||||
{ph_p, [[go through them with left and right, or press 🅾️ to start crafting!!]]},
|
||||
},
|
||||
function()
|
||||
screen_recipe_list = {draw=pages_draw, update=pages_update}
|
||||
|
@ -1,13 +1,13 @@
|
||||
function title_update()
|
||||
if btnp(4) then
|
||||
if btnp(4) or btnp(5) then
|
||||
change_screen(screen_conversation({
|
||||
{phoebe_portrait, "hi! i'm phoebe! welcome to pilton!"},
|
||||
{phoebe_portrait, "this is a small town known for our fireworks festival."},
|
||||
{phoebe_portrait, "or we would be. my grandfather, the town's best alchemist, died suddenly and"},
|
||||
{phoebe_portrait, "hadn't taught me about fireworks. my mother took up adventuring"},
|
||||
{phoebe_portrait, "instead of alchemy, so now there's no one to carry on the tradition."},
|
||||
{phoebe_portrait, "the town's pretty broken up about it but i'm doing my best to carry on."},
|
||||
{phoebe_portrait, "but i only know the basics of picking herbs and purifying water."},
|
||||
{ph_p, "hi! i'm phoebe! welcome to pilton!"},
|
||||
{ph_p, "this is a small town known for our fireworks festival."},
|
||||
{ph_p, "or we would be. my grandfather, the town's best alchemist, died suddenly and"},
|
||||
{ph_p, "hadn't taught me about fireworks. my mother took up adventuring"},
|
||||
{ph_p, "instead of alchemy, so now there's no one to carry on the tradition."},
|
||||
{ph_p, "the town's pretty broken up about it but i'm doing my best to carry on."},
|
||||
{ph_p, "but i only know the basics of picking herbs and purifying water."},
|
||||
},
|
||||
function() change_screen(screen_workbench) end,
|
||||
{update=walkaround_update, draw=walkaround_draw}))
|
||||
@ -29,6 +29,10 @@ function title_draw()
|
||||
end
|
||||
x = print(big .. c, x, 30 + sin(x/128+time()/4)*2, col)
|
||||
end
|
||||
|
||||
print("VERSION 1.16", 64-(5*4), 80)
|
||||
|
||||
print("press 🅾️ or ❎ to start", 64-(11*4), 90)
|
||||
end
|
||||
|
||||
screen_title = {update=title_update, draw=title_draw}
|
@ -1,80 +1,80 @@
|
||||
player_sprite_number = 48
|
||||
player_x, player_y = 24,16
|
||||
p_x, p_y = 24,16
|
||||
step_timer = 0
|
||||
player_sprite_number = 50
|
||||
|
||||
locations = {}
|
||||
the_map = {}
|
||||
|
||||
function crystals(story_state)
|
||||
add(inventory, make_item(library.item_blueprints.crystal))
|
||||
change_screen(screen_conversation({{phoebe_portrait, "you can use these crystals for a lot."}}))
|
||||
change_screen(screen_conversation({{ph_p, "you can use these crystals for a lot."}}))
|
||||
sfx(9)
|
||||
toast("received crystal!")
|
||||
end
|
||||
locations["5,0"]=crystals
|
||||
locations["6,0"]=crystals
|
||||
the_map["5,0"]=crystals
|
||||
the_map["6,0"]=crystals
|
||||
|
||||
function barrel(story_state)
|
||||
sfx(1)
|
||||
change_screen(screen_conversation({{phoebe_portrait, "it's a barrel!"}}))
|
||||
change_screen(screen_conversation({{ph_p, "it's a barrel!"}}))
|
||||
end
|
||||
|
||||
locations["2,1"]=barrel
|
||||
locations["10,10"]=barrel
|
||||
the_map["2,1"]=barrel
|
||||
the_map["10,10"]=barrel
|
||||
|
||||
locations["3,1"]=function() -- the atelier!
|
||||
the_map["3,1"]=function() -- the atelier!
|
||||
sfx(4)
|
||||
change_screen(screen_workbench)
|
||||
end
|
||||
locations["12,1"]=function() --at the well. give us ssome water
|
||||
the_map["12,1"]=function() --at the well. give us ssome water
|
||||
add(inventory, make_item(library.item_blueprints.well_water))
|
||||
change_screen(screen_conversation({{phoebe_portrait, "slurp!"}}))
|
||||
change_screen(screen_conversation({{ph_p, "slurp!"}}))
|
||||
toast("received water!")
|
||||
sfx(0)
|
||||
end
|
||||
|
||||
locations["3,10"] = script_charcoal_seller
|
||||
locations["11,5"] = script_neighbor
|
||||
locations["9,5"] = script_lenore
|
||||
locations["9,8"] = script_library
|
||||
locations["11,13"] = script_witch
|
||||
the_map["3,10"] = script_charcoal_seller
|
||||
the_map["11,5"] = script_neighbor
|
||||
the_map["9,5"] = script_lenore
|
||||
the_map["9,8"] = script_library
|
||||
the_map["11,13"] = script_witch
|
||||
|
||||
function herbs(story_state)
|
||||
add(inventory, make_item(library.item_blueprints.herb))
|
||||
change_screen(screen_conversation({
|
||||
{phoebe_portrait, "ooh, healing herbs! i'll take some. not more than 1/3 the patch though!"}
|
||||
{ph_p, "ooh, healing herbs! i'll take some. not more than 1/3 the patch though!"}
|
||||
}))
|
||||
sfx(8)
|
||||
toast("received herbs!")
|
||||
end
|
||||
|
||||
locations["13,12"] = herbs
|
||||
locations["14,12"] = herbs
|
||||
the_map["13,12"] = herbs
|
||||
the_map["14,12"] = herbs
|
||||
|
||||
locations["12,13"] = herbs
|
||||
locations["13,13"] = herbs
|
||||
locations["14,13"] = herbs
|
||||
the_map["12,13"] = herbs
|
||||
the_map["13,13"] = herbs
|
||||
the_map["14,13"] = herbs
|
||||
|
||||
locations["12,14"] = herbs
|
||||
locations["13,14"] = herbs
|
||||
locations["14,14"] = herbs
|
||||
the_map["12,14"] = herbs
|
||||
the_map["13,14"] = herbs
|
||||
the_map["14,14"] = herbs
|
||||
|
||||
function beach(story_state)
|
||||
add(inventory, make_item(library.item_blueprints.sand))
|
||||
change_screen(screen_conversation({
|
||||
{phoebe_portrait, "how many grains of sand does it take before it becomes a pile?"}
|
||||
{ph_p, "how many grains of sand does it take before it becomes a pile?"}
|
||||
}))
|
||||
sfx(6)
|
||||
toast("received sand!")
|
||||
end
|
||||
|
||||
locations["3,15"] = beach
|
||||
locations["4,15"] = beach
|
||||
locations["5,15"] = beach
|
||||
locations["6,15"] = beach
|
||||
locations["7,15"] = beach
|
||||
the_map["3,15"] = beach
|
||||
the_map["4,15"] = beach
|
||||
the_map["5,15"] = beach
|
||||
the_map["6,15"] = beach
|
||||
the_map["7,15"] = beach
|
||||
|
||||
function interact(x, y)
|
||||
result = locations[flr(x) .. "," .. flr(y)]
|
||||
result = the_map[flr(x) .. "," .. flr(y)]
|
||||
if result ~= nil then result(story) end
|
||||
end
|
||||
|
||||
@ -98,21 +98,21 @@ function walkaround_update()
|
||||
if dy == 1 then up, down = false, true end
|
||||
if dx ~= 0 or dy ~= 0 then moved = true end
|
||||
|
||||
if flags_from_xy(player_x + dx, player_y + dy) & 0x80 == 0 then player_x, player_y = player_x + dx, player_y + dy end
|
||||
if flags_from_xy(p_x + dx, p_y + dy) & 0x80 == 0 then p_x, p_y = p_x + dx, p_y + dy end
|
||||
|
||||
if moved then
|
||||
test_x, test_y = player_x + 8*dx, player_y + 8*dy
|
||||
t_x, t_y = p_x + 8*dx, p_y + 8*dy
|
||||
elseif up then
|
||||
test_x, test_y = player_x, player_y - 8
|
||||
t_x, t_y = p_x, p_y - 8
|
||||
elseif down then
|
||||
test_x, test_y = player_x, player_y + 8
|
||||
t_x, t_y = p_x, p_y + 8
|
||||
elseif flip_x then
|
||||
test_x, test_y = player_x - 8, player_y
|
||||
t_x, t_y = p_x - 8, p_y
|
||||
else
|
||||
test_x, test_y = player_x + 8, player_y
|
||||
t_x, t_y = p_x + 8, p_y
|
||||
end
|
||||
|
||||
if btnp(4) then interact(test_x/8, test_y/8) end
|
||||
if btnp(4) then interact(t_x/8, t_y/8) end
|
||||
|
||||
end
|
||||
function walkaround_draw()
|
||||
@ -121,7 +121,7 @@ function walkaround_draw()
|
||||
map(0,16,0,0,16,16) -- draw the town map
|
||||
update_player_sprite()
|
||||
|
||||
spr(player_sprite_number, player_x-4, player_y-8, 1,1, flip_x)
|
||||
spr(player_sprite_number, p_x-4, p_y-8, 1,1, flip_x)
|
||||
map(0,16,0,0,16,16, 0x40) -- redraw the tiles which are supposed to appear over the player! (flag 6)
|
||||
end
|
||||
function update_player_sprite()
|
||||
@ -141,10 +141,10 @@ end
|
||||
|
||||
screen_walkaround = {update=walkaround_update, draw=walkaround_draw}
|
||||
screen_walkaround = screen_conversation({
|
||||
{phoebe_portrait, [[oh, and this is the town! all sorts of things to do here.]]},
|
||||
{phoebe_portrait, [[like i could go get water from the well to the east,]]},
|
||||
{phoebe_portrait, [[or pick up some charcoal from the red house to the southwest!]]},
|
||||
{phoebe_portrait, [[just face a building and press ❎!]]}
|
||||
{ph_p, [[oh, and this is the town! all sorts of things to do here.]]},
|
||||
{ph_p, [[like i could go get water from the well to the east,]]},
|
||||
{ph_p, [[or pick up some charcoal from the red house to the southwest!]]},
|
||||
{ph_p, [[just face a building and press 🅾️!]]}
|
||||
},
|
||||
function()
|
||||
screen_walkaround = {draw=walkaround_draw, update=walkaround_update}
|
||||
@ -157,7 +157,9 @@ stars = {}
|
||||
drag = 0.1
|
||||
fireworks_frequency = 8
|
||||
function work(f)
|
||||
if f == nil or f.vx == nil or f.vy == nil or f.x == nil or f.y == nil then return 0 end -- why is this necessary.
|
||||
local vel = sqrt(f.vx*f.vx + f.vy*f.vy)
|
||||
|
||||
f.x += f.vx
|
||||
f.y += f.vy
|
||||
f.vx = f.vx*(1-(drag*vel))
|
||||
@ -168,8 +170,8 @@ end
|
||||
function fireworks_update()
|
||||
walkaround_update()
|
||||
|
||||
new_fireworks = {}
|
||||
new_stars = {}
|
||||
local new_fireworks = {}
|
||||
local new_stars = {}
|
||||
|
||||
if rnd(100) < fireworks_frequency then add(new_fireworks, {
|
||||
x=rnd(128),
|
||||
@ -181,7 +183,7 @@ function fireworks_update()
|
||||
|
||||
for f in all(fireworks) do
|
||||
local v = work(f)
|
||||
if v < 0.2 or v > 100 then
|
||||
if (v < 0.2 or v > 100) and (f.x ~= nil and f.y ~= nil and f.c ~= nil) then
|
||||
for i=1,10 do
|
||||
local theta = rnd(2)
|
||||
add(new_stars,{
|
||||
|
@ -42,10 +42,10 @@ end
|
||||
|
||||
screen_workbench = {draw=bench_draw, update=bench_update}
|
||||
screen_workbench = screen_conversation({
|
||||
{phoebe_portrait, "this is my workbench."},
|
||||
{phoebe_portrait, "if you press left or right you can see my letters or recipes"},
|
||||
{phoebe_portrait, "and the drawer where i keep ingredients is up top."},
|
||||
{phoebe_portrait, "you can press ❎ to back out to the workbench."},
|
||||
{ph_p, "this is my workbench."},
|
||||
{ph_p, "if you press left or right you can see my letters or recipes"},
|
||||
{ph_p, "and the drawer where i keep ingredients is up top."},
|
||||
{ph_p, "you can press ❎ to back out to the workbench."},
|
||||
},
|
||||
function()
|
||||
screen_workbench = {draw=bench_draw, update=bench_update}
|
||||
|
@ -4,7 +4,7 @@ function script_charcoal_seller(s) -- the brick house!
|
||||
change_screen(screen_conversation({
|
||||
{seller_portrait, "hey phoebe. if your family's not doing the festival this year"},
|
||||
{seller_portrait, "you don't need the whole bulk order of charcoal, right?"},
|
||||
{phoebe_portrait, "yeah."},
|
||||
{ph_p, "yeah."},
|
||||
{seller_portrait, "well, you can take as much as you need.", function()
|
||||
add(inventory, make_item(library.item_blueprints.charcoal))
|
||||
sfx(7)
|
||||
@ -57,12 +57,15 @@ function script_charcoal_seller(s) -- the brick house!
|
||||
add(inventory, make_item(library.item_blueprints.charcoal))
|
||||
sfx(7)
|
||||
toast("received charcoal!")
|
||||
if story_state.branch_hans == 3 and story_state.branch_lenore == 3 and story_state.branch_brigitte == 2 then
|
||||
story_state.main = 8
|
||||
end
|
||||
end -- end hans branch
|
||||
elseif story_state.main == 8 then
|
||||
elseif s.main == 8 then
|
||||
change_screen(screen_conversation({
|
||||
{seller_portrait, "i'll meet you at the library for watching the fireworks!"},
|
||||
}))
|
||||
elseif story_state.main == 9 then
|
||||
elseif s.main == 9 then
|
||||
change_screen(screen_conversation({{door_portrait, "[no one is here.]"}}))
|
||||
sfx(7)
|
||||
add(inventory, make_item(library.item_blueprints.charcoal))
|
||||
|
@ -3,21 +3,21 @@ function script_lenore(story_state)
|
||||
water = player_has(library.recipes.distilled_water.title)
|
||||
if water == nil then
|
||||
change_screen(screen_conversation({
|
||||
{phoebe_portrait, [[hi lenore!]]},
|
||||
{ph_p, [[hi lenore!]]},
|
||||
{lenore_portrait, [[hey alchemist. did you get my letter?]]},
|
||||
{phoebe_portrait, [[ah! i haven't gotten around to it but i'll get right on it!]]},
|
||||
{ph_p, [[ah! i haven't gotten around to it but i'll get right on it!]]},
|
||||
{lenore_portrait, [[thanks, kid.]]}
|
||||
}))
|
||||
else
|
||||
change_screen(screen_conversation({
|
||||
{phoebe_portrait, [[hey lenore! here's the clean water you requested!]]},
|
||||
{ph_p, [[hey lenore! here's the clean water you requested!]]},
|
||||
{lenore_portrait, [[thanks, kid. there's one other thing.]]},
|
||||
{lenore_portrait, [[my usual pharmacist is on vacation.]]},
|
||||
{lenore_portrait, [[think you could take this recipe and make a potion for a patient?]]},
|
||||
{lenore_portrait, [[she lives in the house with a red roof just to the east of here.]]},
|
||||
{lenore_portrait, [[healing herbs grow southeast of here.]]},
|
||||
{lenore_portrait, [[and here's that reagent i promised you.]]},
|
||||
{phoebe_portrait, [[do you have a recipe for reagent? i'd love to learn to make it!]]},
|
||||
{ph_p, [[do you have a recipe for reagent? i'd love to learn to make it!]]},
|
||||
{lenore_portrait, [[yeah, sure. you start like this...]], function()
|
||||
del(inventory, water)
|
||||
add(inventory, make_item(library.item_blueprints.reagent))
|
||||
@ -37,15 +37,15 @@ function script_lenore(story_state)
|
||||
elseif story_state.main == 4 or story_state.main == 5 or story_state.main == 6 then
|
||||
change_screen(screen_conversation({
|
||||
{lenore_portrait, [[hey phoebe. any aches or pains?]]},
|
||||
{phoebe_portrait, [[i'm in tip-top shape!]]},
|
||||
{ph_p, [[i'm in tip-top shape!]]},
|
||||
}))
|
||||
elseif story_state.main == 7 then
|
||||
if story_state.branch_lenore == 1 then
|
||||
change_screen(screen_conversation({
|
||||
{lenore_portrait, [[whoa, you can't just set off fireworks willy-nilly.]]},
|
||||
{lenore_portrait, "get me 3 distilled water for cleaning bandages"},
|
||||
{lenore_portrait, "get me 3 purified water for cleaning bandages"},
|
||||
{lenore_portrait, "and 3 buckets of well water for fire."},
|
||||
{phoebe_portrait, [[you got it!!]]},
|
||||
{ph_p, [[you got it!!]]},
|
||||
}))
|
||||
story_state.branch_lenore = 2
|
||||
elseif story_state.branch_lenore == 2 then
|
||||
@ -69,6 +69,9 @@ function script_lenore(story_state)
|
||||
end
|
||||
elseif story_state.branch_lenore == 3 then
|
||||
change_screen(screen_conversation({{lenore_portrait, [[i'll meet you at the library for viewing when you're ready.]]}}))
|
||||
if story_state.branch_hans == 3 and story_state.branch_lenore == 3 and story_state.branch_brigitte == 2 then
|
||||
story_state.main = 8
|
||||
end
|
||||
end -- lenore branch finished
|
||||
elseif story_state.main == 8 then
|
||||
change_screen(screen_conversation({{lenore_portrait, [[i'll see you at the library for viewing the festival!]]}}))
|
||||
|
@ -2,15 +2,15 @@ function script_library(s)
|
||||
if s.main == 1 or s.main == 2 or s.main == 3 then
|
||||
change_screen(screen_conversation({
|
||||
{librarian_portrait, [[hey phoebe. looking for any book in particular today?]]},
|
||||
{phoebe_portrait, [[just browsing!]]}
|
||||
{ph_p, [[just browsing!]]}
|
||||
}))
|
||||
elseif s.main == 4 then
|
||||
if not s.got_gunpowder_book then
|
||||
change_screen(screen_conversation({
|
||||
{librarian_portrait, [[explosives, huh. well, this might help you out?]]},
|
||||
{phoebe_portrait, [[oh, a chemistry manual? hmm... black powder...]]},
|
||||
{phoebe_portrait, [[and i could... yes, i think i can use this to make gunpowder! maybe more!]]},
|
||||
{phoebe_portrait, [[thank you so much stef!!!]]}
|
||||
{ph_p, [[oh, a chemistry manual? hmm... black powder...]]},
|
||||
{ph_p, [[and i could... yes, i think i can use this to make gunpowder! maybe more!]]},
|
||||
{ph_p, [[thank you so much stef!!!]]}
|
||||
}))
|
||||
add(grimoire, library.recipes.gunpowder)
|
||||
add(grimoire, library.recipes.bomb)
|
||||
@ -19,35 +19,35 @@ function script_library(s)
|
||||
else
|
||||
change_screen(screen_conversation({
|
||||
{librarian_portrait, [[did that book help?]]},
|
||||
{phoebe_portrait, [[you betcha!]]}
|
||||
{ph_p, [[you betcha!]]}
|
||||
}))
|
||||
end
|
||||
elseif s.main == 5 then
|
||||
change_screen(screen_conversation({
|
||||
{librarian_portrait, [[hey phoebe. looking for any book in particular today?]]},
|
||||
{phoebe_portrait, [[just browsing!]]}
|
||||
{ph_p, [[just browsing!]]}
|
||||
}))
|
||||
elseif s.main == 6 then
|
||||
if not s.got_crystal_book then
|
||||
change_screen(screen_conversation({
|
||||
{phoebe_portrait, [[stef! i need books about gems! how to make them!]]},
|
||||
{ph_p, [[stef! i need books about gems! how to make them!]]},
|
||||
{librarian_portrait, [[gems, huh? let me check...]]},
|
||||
{librarian_portrait, [[here, does this help?]]},
|
||||
{phoebe_portrait, [[yes, this is perfect! let's see...]]},
|
||||
{phoebe_portrait, "hmm..."},
|
||||
{phoebe_portrait, "hmm... \nhmm..."},
|
||||
{phoebe_portrait, "hmm... \nhmm... \nhmm..."},
|
||||
{phoebe_portrait, [[okay so i need raw crystal, polishing powder, and reagent.]], function()
|
||||
{ph_p, [[yes, this is perfect! let's see...]]},
|
||||
{ph_p, "hmm..."},
|
||||
{ph_p, "hmm... \nhmm..."},
|
||||
{ph_p, "hmm... \nhmm... \nhmm..."},
|
||||
{ph_p, [[okay so i need raw crystal, polishing powder, and reagent.]], function()
|
||||
add(grimoire, library.recipes.polishing_powder)
|
||||
add(grimoire, library.recipes.starshine_gem)
|
||||
toast("received recipes!")
|
||||
end},
|
||||
{phoebe_portrait, "i can get crystal from the cliffs and sand from the beach!"},
|
||||
{ph_p, "i can get crystal from the cliffs and sand from the beach!"},
|
||||
}))
|
||||
s.got_crystal_book = true
|
||||
else
|
||||
change_screen(screen_conversation({
|
||||
{phoebe_portrait, "thanks for the book, stef!"},
|
||||
{ph_p, "thanks for the book, stef!"},
|
||||
{librarian_portrait, [[that's my job!]]},
|
||||
}))
|
||||
end
|
||||
@ -60,20 +60,21 @@ function script_library(s)
|
||||
{librarian_portrait, [[a fireworks festival after all, huh?]]},
|
||||
{neighbor_portrait, [[i thought it was done for after the alchemist passed away, rest his soul.]]},
|
||||
{seller_portrait, [[well it looks like phoebe took up the reins!]]},
|
||||
{phoebe_portrait, [[aw shucks!]]},
|
||||
{ph_p, [[aw shucks!]]},
|
||||
{lenore_portrait, [[thanks for making this happen, lil alchemist.]]},
|
||||
{neighbor_portrait, [[thanks, phoebe!]]},
|
||||
{seller_portrait, [[thanks, phoebe.]]},
|
||||
{phoebe_portrait, [[thank you all for helping so much. i couldn't have done it without you.]]},
|
||||
{ph_p, [[thank you all for helping so much. i couldn't have done it without you.]]},
|
||||
}, nil, {update=fireworks_update, draw=fireworks_draw}))
|
||||
s.main = 9
|
||||
screen_walkaround = {update=fireworks_update, draw=fireworks_draw}
|
||||
screen_workbench = screen_conversation({
|
||||
{phoebe_portrait, "thank you for completing atelier phoebe!"},
|
||||
{phoebe_portrait, "this was a labor of love and bafflement."},
|
||||
{phoebe_portrait, "why did i make an atelier fangame in pico-8? i dunno."},
|
||||
{phoebe_portrait, "but i hope you enjoyed it! you can find me online as shoofle."},
|
||||
{phoebe_portrait, "lately i spend my time @shoofle\n@beach.city."},
|
||||
{phoebe_portrait, "gimme a shout if you enjoyed atelier phoebe!"},
|
||||
{ph_p, "thank you for completing atelier phoebe!"},
|
||||
{ph_p, "this was a labor of love and bafflement."},
|
||||
{ph_p, "why did i make an atelier fangame in pico-8? i dunno."},
|
||||
{ph_p, "but i hope you enjoyed it! you can find me online as shoofle."},
|
||||
{ph_p, "lately i spend my time @shoofle\n@beach.city."},
|
||||
{ph_p, "gimme a shout if you enjoyed atelier phoebe!"},
|
||||
},
|
||||
function()
|
||||
screen_workbench = {update=bench_update, draw=bench_draw}
|
||||
|
@ -8,18 +8,18 @@ function script_neighbor(s)
|
||||
change_screen(screen_conversation({{door_portrait, "[you hear the sound of groaning from inside.]"}}))
|
||||
else
|
||||
change_screen(screen_conversation({
|
||||
{phoebe_portrait, [[hello! i was asked to bring you a potion!]]},
|
||||
{ph_p, [[hello! i was asked to bring you a potion!]]},
|
||||
{neighbor_portrait, [[that's so kind! i injured my back trying to get a rock out]]},
|
||||
{neighbor_portrait, [[of my field. this potion will fix me right up.]]},
|
||||
{neighbor_portrait, "i'm brigitte, by the way."},
|
||||
{neighbor_portrait, [[... hey, you're an alchemist, right?]]},
|
||||
{phoebe_portrait, [[of course!]]},
|
||||
{ph_p, [[of course!]]},
|
||||
{neighbor_portrait, [[i've heard that alchemists can make explosives. a bomb could get rid of]]},
|
||||
{neighbor_portrait, [[that boulder in my field. do you think you could bring me one?]]},
|
||||
{phoebe_portrait, [[my grandfather never taught me to make explosives,]]},
|
||||
{phoebe_portrait, "because they're dangerous."},
|
||||
{ph_p, [[my grandfather never taught me to make explosives,]]},
|
||||
{ph_p, "because they're dangerous."},
|
||||
{neighbor_portrait, [[damn. maybe the witch knows how to make them? she knows all sorts of things.]]},
|
||||
{phoebe_portrait, [[i'll have to ask!]]},
|
||||
{ph_p, [[i'll have to ask!]]},
|
||||
{neighbor_portrait, [[she lives in the tower southeast of town, i think!]]},
|
||||
}))
|
||||
del(inventory, potion)
|
||||
@ -28,23 +28,23 @@ function script_neighbor(s)
|
||||
elseif s.main == 3 then
|
||||
change_screen(screen_conversation({
|
||||
{neighbor_portrait, [[did the witch give you the recipe?]]},
|
||||
{phoebe_portrait, [[not yet!]]}
|
||||
{ph_p, [[not yet!]]}
|
||||
}))
|
||||
elseif s.main == 4 then
|
||||
local bomb = player_has("bomb")
|
||||
if bomb == nil then
|
||||
change_screen(screen_conversation({
|
||||
{neighbor_portrait, [[did the witch give you the recipe?]]},
|
||||
{phoebe_portrait, [[no and actually she was really rude about it!]]},
|
||||
{ph_p, [[no and actually she was really rude about it!]]},
|
||||
}))
|
||||
else
|
||||
change_screen(screen_conversation({
|
||||
{phoebe_portrait, [[this bomb should break up a rock! be very safe with it.]]},
|
||||
{ph_p, [[this bomb should break up a rock! be very safe with it.]]},
|
||||
{neighbor_portrait, [[oh wow, thank you so much! i will be far away when it goes off.]]},
|
||||
{neighbor_portrait, [[so how did you convince the witch to give you the recipe?]]},
|
||||
{phoebe_portrait, [[i didn't! she was incredibly rude and basically told me to fuck off!]]},
|
||||
{ph_p, [[i didn't! she was incredibly rude and basically told me to fuck off!]]},
|
||||
{neighbor_portrait, [[huh, i wonder what bee's in her bonnet.]]},
|
||||
{phoebe_portrait, [[she kept talking about how there's no great alchemy left in pilton.]]},
|
||||
{ph_p, [[she kept talking about how there's no great alchemy left in pilton.]]},
|
||||
{neighbor_portrait, [[maybe she needs someone to impress her.]]}
|
||||
}))
|
||||
del(inventory, bomb)
|
||||
@ -53,26 +53,29 @@ function script_neighbor(s)
|
||||
elseif s.main == 5 then
|
||||
change_screen(screen_conversation({
|
||||
{neighbor_portrait, [[that witch soften up yet?]]},
|
||||
{phoebe_portrait, [[grrrr!]]}
|
||||
{ph_p, [[grrrr!]]}
|
||||
}))
|
||||
elseif s.main == 6 then
|
||||
change_screen(screen_conversation({
|
||||
{neighbor_portrait, [[that bomb worked a treat on my boulder!]]},
|
||||
{phoebe_portrait, [[hooray!]]}
|
||||
{ph_p, [[hooray!]]}
|
||||
}))
|
||||
elseif s.main == 7 then
|
||||
if s.branch_brigitte == 1 then
|
||||
change_screen(screen_conversation({
|
||||
{neighbor_portrait, [[the fireworks festival? on my farm? you betcha!]]},
|
||||
{neighbor_portrait, [[since harvest is over it's totally free.]]},
|
||||
{phoebe_portrait, [[yippee!]]},
|
||||
{ph_p, [[yippee!]]},
|
||||
}))
|
||||
s.branch_brigitte = 2
|
||||
if s.branch_brigitte == 2 and s.branch_lenore == 3 and s.branch_hans == 3 then
|
||||
s.branch_main = 8
|
||||
s.main = 8
|
||||
end
|
||||
elseif s.branch_brigitte == 2 then
|
||||
change_screen(screen_conversation({{neighbor_portrait, [[meet up at the library for viewing, right?]]}}))
|
||||
if s.branch_brigitte == 2 and s.branch_lenore == 3 and s.branch_hans == 3 then
|
||||
s.main = 8
|
||||
end
|
||||
end
|
||||
elseif s.main == 8 then
|
||||
change_screen(screen_conversation({{neighbor_portrait, [[meetchya at the library for watching the fireworks!]]}}))
|
||||
|
@ -3,7 +3,7 @@ function script_witch(s)
|
||||
change_screen(screen_conversation({{door_portrait, "[there is no answer to your knocking.]"}}))
|
||||
elseif s.main == 3 then
|
||||
change_screen(screen_conversation({
|
||||
{phoebe_portrait, "excuse me! i would like to know how to make explosives!"},
|
||||
{ph_p, "excuse me! i would like to know how to make explosives!"},
|
||||
{witch_portrait, [[this town is dead. i can make no explosions. the alchemy of pilton has died.]]},
|
||||
{witch_portrait, [[try as you might, phoebe, you aren't your grandfather.]]},
|
||||
{witch_portrait, [[this town is a husk of what it once was. ]]},
|
||||
@ -13,23 +13,23 @@ function script_witch(s)
|
||||
sfx(4)
|
||||
end},
|
||||
{door_portrait, "i have no time for this."},
|
||||
{phoebe_portrait, "... huh!"},
|
||||
{ph_p, "... huh!"},
|
||||
}))
|
||||
s.main = 4
|
||||
elseif s.main == 4 then
|
||||
change_screen(screen_conversation({{door_portrait, "[there is no answer to your knocking.]"}}))
|
||||
elseif s.main == 5 then
|
||||
change_screen(screen_conversation({
|
||||
{phoebe_portrait, "hey! witch!"},
|
||||
{ph_p, "hey! witch!"},
|
||||
{door_portrait, "my name is agnes."},
|
||||
{phoebe_portrait, "i figured out how to make gunpowder. suck on that."},
|
||||
{ph_p, "i figured out how to make gunpowder. suck on that."},
|
||||
{witch_portrait, "big whoop. you still know nothing."},
|
||||
{witch_portrait, "no one in this town knows the art of alchemy."},
|
||||
{phoebe_portrait, "there's you! you know it!"},
|
||||
{ph_p, "there's you! you know it!"},
|
||||
{witch_portrait, "pah. no one of your generation knows the ways."},
|
||||
{phoebe_portrait, "well maybe if someone would teach us-"},
|
||||
{ph_p, "well maybe if someone would teach us-"},
|
||||
{witch_portrait, "maybe if you showed any promise i could teach you."},
|
||||
{phoebe_portrait, "grrrr, you old hag!"},
|
||||
{ph_p, "grrrr, you old hag!"},
|
||||
{witch_portrait, "hm."},
|
||||
{witch_portrait, "..."},
|
||||
{witch_portrait, "bring me a starshine gem. it must carry the red and shiny traits."},
|
||||
@ -57,10 +57,10 @@ time!
|
||||
}))
|
||||
else
|
||||
change_screen(screen_conversation({
|
||||
{witch_portrait, "hm. this is... passable. i will help you."},
|
||||
{witch_portrait, "hm. this is... passable. i will help you. keep the gem."},
|
||||
{witch_portrait, "my bones are too tired to keep up this fight."},
|
||||
{witch_portrait, "i can teach you to make fireworks."},
|
||||
{phoebe_portrait, "fireworks! the festival?!"},
|
||||
{witch_portrait, "i will teach you to make fireworks."},
|
||||
{ph_p, "fireworks! the festival?!"},
|
||||
{witch_portrait, "a festival is more than just a box of fireworks."},
|
||||
{witch_portrait, "hm. this is a bad idea.", function()
|
||||
sfx(4)
|
||||
@ -68,18 +68,18 @@ time!
|
||||
toast("received recipe!")
|
||||
end},
|
||||
{door_portrait, "hm. this is a bad idea."},
|
||||
{phoebe_portrait, "wow, she's so awful!"},
|
||||
{ph_p, "wow, she's so awful!"},
|
||||
{door_portrait, "i can hear you out there."},
|
||||
{phoebe_portrait, "keep it down, i'm thinking."},
|
||||
{phoebe_portrait, "a fireworks festival! that would be so incredible!"},
|
||||
{phoebe_portrait, "but she's right. i'll have to call in favors."},
|
||||
{phoebe_portrait, "hans the charcoal seller used to run the show itself."},
|
||||
{phoebe_portrait, "i have to talk to lenore about safety."},
|
||||
{phoebe_portrait, "and i should ask brigitte if we can use her farm!"},
|
||||
{ph_p, "keep it down, i'm thinking."},
|
||||
{ph_p, "a fireworks festival! that would be so incredible!"},
|
||||
{ph_p, "but she's right. i'll have to call in favors."},
|
||||
{ph_p, "hans the charcoal seller used to run the show itself."},
|
||||
{ph_p, "i have to talk to lenore about safety."},
|
||||
{ph_p, "and i should ask brigitte if we can use her farm!"},
|
||||
}))
|
||||
s.main = 7
|
||||
end
|
||||
elseif s.main == 8 or s.main == 9 then
|
||||
change_screen(screen_conversation({witch_portrait, "thank you."}))
|
||||
change_screen(screen_conversation({{witch_portrait, "thank you."}}))
|
||||
end
|
||||
end
|
||||
|
53
utils.lua
53
utils.lua
@ -58,32 +58,29 @@ function player_has(requirement, count, traits)
|
||||
return nil
|
||||
end
|
||||
|
||||
function make_item(blueprint)
|
||||
--if blueprint.description == nil then
|
||||
-- blueprint = library.item_blueprints[blueprint]
|
||||
function make_item(bp)
|
||||
--if bp.description == nil then
|
||||
-- bp = library.i_bps[bp]
|
||||
--end
|
||||
|
||||
item = deepcopy(blueprint)
|
||||
local i = deepcopy(bp)
|
||||
|
||||
item.quality = flr(blueprint.quality_base + rnd(blueprint.quality_range))
|
||||
if blueprint.tags then item.tags = deepcopy(blueprint.tags)
|
||||
else item.tags = {} end
|
||||
item.traits = {}
|
||||
if rnd(100) < blueprint.trait_chance then
|
||||
add(item.traits, rnd(blueprint.trait_pool))
|
||||
i.quality = flr(bp.quality_base + rnd(bp.quality_range))
|
||||
if bp.tags then i.tags = deepcopy(bp.tags)
|
||||
else i.tags = {} end
|
||||
i.traits = {}
|
||||
if rnd(100) < bp.trait_chance then
|
||||
add(i.traits, rnd(bp.trait_pool))
|
||||
end
|
||||
if rnd(100) < blueprint.trait_chance then
|
||||
local t = rnd(blueprint.trait_pool)
|
||||
if not contains(item.traits, t) then add(item.traits, t) end
|
||||
if rnd(100) < bp.trait_chance then
|
||||
local t = rnd(bp.trait_pool)
|
||||
if not contains(i.traits, t) then add(i.traits, t) end
|
||||
end
|
||||
return item
|
||||
return i
|
||||
end
|
||||
|
||||
function at(trait, x,y)
|
||||
if (x < 0) return false
|
||||
if (x > trait[4]) return false
|
||||
if (y < 0) return false
|
||||
if (y > trait[4]) return false
|
||||
if x < 0 or x >= trait[4] or y < 0 or y >= trait[5] then return false end
|
||||
return mget(trait[2]+x, trait[3]+y) ~= 0
|
||||
end
|
||||
|
||||
@ -108,34 +105,32 @@ end
|
||||
|
||||
function change_screen(new_screen)
|
||||
prev_screen = current_screen
|
||||
if new_screen.before ~= nil then
|
||||
new_screen.before()
|
||||
end
|
||||
if new_screen.before ~= nil then new_screen.before() end
|
||||
current_screen = new_screen
|
||||
end
|
||||
|
||||
-- add newlines to a string to fit it into lines.
|
||||
function wrap(str, line_length)
|
||||
-- thanks to https://stackoverflow.com/questions/17586/best-word-wrap-algorithm, i did not feel like thinking this out myself
|
||||
words = split(str, " ", false)
|
||||
output = ""
|
||||
local words = split(str, " ", false)
|
||||
local output = ""
|
||||
|
||||
local current_line_length = 0
|
||||
local c = 0
|
||||
for w in all(words) do
|
||||
while sub(w, 1, 1) == "\n" do
|
||||
output = output .. "\n"
|
||||
current_line_length = 0
|
||||
c = 0
|
||||
w = sub(w, 2)
|
||||
end
|
||||
if current_line_length + #w > line_length then
|
||||
if current_line_length > 0 then
|
||||
if c + #w > line_length then
|
||||
if c > 0 then
|
||||
output = output .. "\n"
|
||||
current_line_length = 0
|
||||
c = 0
|
||||
end
|
||||
end
|
||||
|
||||
output = output .. w .. " "
|
||||
current_line_length += #w + 1
|
||||
c += #w + 1
|
||||
end
|
||||
return output
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user