art-lost-in-time/art.lua

415 lines
11 KiB
Lua

title = "Art lost in time"
cont=verb{
n="click to continue",
act = function()
walk(here().cont)
end
}
intro = room{
d = [[
ART LOST IN TIME
a short game about challenges of digital art preservation
Written and drawn over weekend by Severák for Paint Jam 2021.
I used my own game engine (from other project) and actual digital art from Andy Warhol.
]],
cont = 'intro2'
}
intro2 = room{
d = [[
In 1985 Andy Warhol created a portrait of singer Debbie Harry using brand new Amiga 1000 computer. This was just a publicity stunt organized by people from Commodore.
But Warhol kept the computer he was given by Commodore and actually used it to make some art.
Now after 30 years is up to you to use all your retrocomputing skills to retrieve ART LOST IN TIME.
But be aware - these old disks are fragile!
]],
img = "painting.png",
cont = 'museum'
}
museum = room{
n = 'in Andy Warhol Museum',
d = [[
You brough all your retrocomputing stuff to the museum to hack into these ages old disks.
]],
img = "museum.png"
}
examine = verb{
n = "examine",
params = {"desc"},
act = function(what)
local description = game[what].desc
p("You look closely at " .. game[what].n .. ":")
if type(description)=='string' then
p(description)
elseif type(description)=='function' then
description()
end
end
}
put = verb{
n = "put",
params = {"floppylike", "_into", "computerlike"},
act = function(what, _into, where)
if where == 'amiga' and amiga.dead then
p "I will not put floppy into Amiga as it seems to be dead."
return
end
if where == 'amiga' and (floppy_workbench.w == 'amiga' or floppy_graphics.w == 'amiga') then
p "(You first ejected floppy which was in Amiga's drive.)"
if floppy_graphics.w=='amiga' then move("floppy_graphics", "museum") end
if floppy_workbench.w=='amiga' then move("floppy_workbench", "museum") end
end
if what == 'floppy_workbench' and where == 'notebook' then
p "You don't need this. As an Amiga enthusiast you have already installed official WORKBENCH copy on your computer."
elseif what == 'floppy_workbench' and where == 'amiga' then
p "You put WORKBENCH floppy into Amiga."
move("floppy_workbench", "amiga")
elseif what == 'floppy_graphics' and where == 'amiga' then
p "You put GRAPHICSART floppy into Amiga."
move("floppy_graphics", "amiga")
elseif what == 'floppy_graphics' and where == 'notebook' then
p "You put GRAPHICSART floppy into your computer and created bit copy of it."
notebook.bitcopy = true
end
end
}
use = verb{
n = "use",
params = {"use"},
act = function(what)
local fun = game[what].use
if type(fun)=='string' then
p(fun)
elseif type(fun)=='function' then
fun()
end
end
}
into = item{
n = "into",
_into = true,
w = "museum"
}
amiga = item{
n = "Warhol's Amiga",
d = 'There is original Amiga 1000 which was used by Andy Warhol himself.',
w = 'museum',
desc = [[Amiga 1000 - the first multimedia computer ever. It has stunning 256KB of RAM, CPU clocked at 7.09MHz. Such a great machine!
Also this one was used by Andy Warhol.]],
computerlike = true,
use = function()
if amiga.dead then
p "You pressed the power button hard but Amiga seems to be dead forever."
p "Good job - you bricked museum piece!"
return
end
if floppy_workbench.w == 'amiga' then
p "You tried to power up Warhol's Amiga."
p "It actually started and Workbench interface appeared on the screen."
p "But when you clicked on PROGRAMS icons whole thing freezed and screen went black."
p "You should better try other floppies in more recent machine."
p "(also you smell some smoke)"
img "museum-smoke.png"
amiga.dead = true
elseif floppy_graphics.w == 'amiga' then
p "You tried to power up Warhol's Amiga."
p "It actually started and but then it made horrible floppy noise."
p "(Image Floppotron going really wild.)"
p "Ouch! It sounds like it eaten the floppy."
img "museum-smoke.png"
if notebook.bitcopy then
p "Luckily you have created bitcopy of this floppy in your notebook. Maybe you should try find something in that copy."
else
p "Which means you are now unable to found Andy's art."
walk("game_over", true)
end
else
p "It will not start without floppy in it."
end
end
}
floppies = item{
n = "floppies",
d = "There is a stack of floppies in front of you.",
w = "museum",
desc = function()
img "floppies.png"
if floppies.searched == 0 then
p "You found floppy labeled WORKBENCH."
p "(WORKBENCH was operating system for Amiga.)"
move('floppy_workbench', 'museum')
elseif floppies.searched == 1 then
p "You found floppy labeled WORMS."
p "Wow! I did not expect to find out that Andy Warhol played Worms."
elseif floppies.searched == 2 then
p "You found floppy labeled DELUXE PAINT."
elseif floppies.searched == 3 then
p 'You found yellow floppy with label "GRAPHICSART".'
move("floppy_graphics", "museum")
elseif floppies.searched == 4 then
p 'You found floppy labeled "tax reports".'
p "Nothing interesting here."
-- elseif floppies.searched == 4 then
-- p 'You found floppy labeled "PORN".'
-- p "Seriously?"
else
p "There is nothing interesting anymore."
p "It's just a stack of floppies."
end
floppies.searched = floppies.searched + 1
end,
searched = 0
}
notebook = item{
n = "your notebook",
d = "You have your own notebook.",
desc = "Your trusty Toshiba notebook running modern Windows XP. It's equipped with external floppy drive.",
w = "museum",
computerlike = true,
use = function()
if not notebook.bitcopy then
p "I have no idea what to do with my computer now."
return
end
walk "hackerman"
end
}
floppy_workbench = item{
n = 'WORKBENCH floppy',
desc = "There is a printed label: Amiga Workbench 1.3",
floppylike = true
}
floppy_graphics = item{
n = 'floppy "GRAPHICSART"',
desc = "It's yellow floppy with handwritten letters GRAPHICSART. I wonder what's on it.",
floppylike = true
}
hackerman = room{
n = "Full hacker mode activated...",
d = [[
You started your notebook.
It's time to do some serious digital preservation work. Let's show others who is real HACKERMAN!
]],
cont = "windows",
img = "hackerman.png"
}
windows = room{
n = "in Windows XP desktop",
d = [[
A view familiar to many of us - an Windows XP desktop with it's iconic default background.
]],
img = "winxp.png"
}
start = verb{
n = "Start",
params = {"program"},
act = function(name)
game[name].program()
end
}
ie = item{
n = "Internet Exploder",
program = function()
p "It's not time to browse web."
end,
w = "windows"
}
diskextractor = item{
n = "DiskExtractor",
program = function()
p "DiskExtractor found that (expect from binary GRAPHICSART) these files are in an unknown format."
winuae.willuse = true
end,
w = "windows"
}
winuae = item{
n = "WinUAE",
program = function()
if not winuae.willuse then
p "There is no need to run Amiga emulator."
p "I should first find out in which format files were."
return
end
walk "graphicsart"
end,
willuse = false,
w = "windows"
}
shutdown = item{
n = "Shut down",
program = function()
walk "museum"
end,
w = "windows"
}
graphicsart = room{
n = "GRAPHICSART",
d = [[
Now I understand - it seems that GRAPHICSART was one of those early graphics programs. That's why files seemed to be in unknown format.
As Amiga 1000 had only one drive it looks like the actual art was saved to the same floppy as program itself.
]],
img = "graphicsart.png",
new_file = true,
save_as = true,
back = true
}
new_file = verb{
n = "New file...",
act = function()
local pix = {"cat", "globe", "meme", "ship", "train"}
local rnd = math.random(1, #pix)
img(pix[rnd]..'.png')
p("You draw a " .. pix[rnd] .. ".")
new_file.used = true
new_file.drawn = pix[rnd]
end,
used = false,
drawn = false,
}
open_file = verb{
n = "Open file...",
params = {"file"},
act = function(what)
img(game[what].file)
p(game[what].comment)
new_file.draw = false
game[what].seen = true
if andy1.seen and banana.seen and campbells.seen and marylin.seen and venus.seen then
p "You have seen all digital artwork by Andy Warhol hidden in this game."
p "YOU WON!"
walk("game_over", true)
end
end
}
save_as = verb{
n = "Save as...",
act = function()
if new_file.used then
p "Maybe I can falsify lost art of Andy Warhol?"
p "Hm?"
if new_file.drawn == 'meme' then
walk("false_art1", true)
else
p "No. I will not do this. I am honest computer enthusiast not an art forger."
end
else
p "You need to draw something first."
end
end
}
back = verb{
n = "(back to Windows desktop)",
act = function()
walk "windows"
end
}
andy1 = item{
n = "andy1.pic",
file = "andy1.png",
comment = "WOW! Andy Warhol himself.",
w = "graphicsart",
seen = false
}
banana = item{
n = "banana.pic",
file = "banana.png",
comment = "Nice! Famous banana picture from Velvet Underground album.",
w = "graphicsart",
seen = false
}
campbells = item{
n = "campbells.pic",
file = "campbells.png",
comment = "Everybody loves nice can of Campbell's Soup.",
w = "graphicsart",
seen = false
}
marylin = item{
n = "marylin.pic",
file = "marylin.png",
comment = "Sweet Marylin. She is so cute.",
w = "graphicsart",
seen = false
}
venus = item{
n = "venus.pic",
file = "venus.png",
comment = "I know this! This is just clipart from Deluxe Paint, but Warhol copied third eye to her. LOL.",
w = "graphicsart",
seen = false
}
false_art1 = room{
n = "I can definitely do that!",
desc = [[So I took all of my skills to make false Warhol's art...]],
cont = "false_art2"
}
false_art2 = room{
n = "New Warhol discovered!",
d = [[
It seems that famous artist was ahead of his time and invented internet memes before they took of...
says Phil Computerphile - a man who discovered a new painting of Andy Warhol in computer used by famous artist....
]],
img = "false_art.png",
cont = "false_art3"
}
false_art3 = room{
n = "New Warhol discovered!",
d = [[
However my plan was busted by some art historians and I was put in the jail for fraud.
GAME OVER!
]],
img = "false_art.png"
}
game_over = room{
n = "GAME OVER!"
}