insteadose-3/endtitles.lua

661 lines
21 KiB
Lua
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

require "sprites"
require "timer"
require "xact"
require "lib"
function cleanlines()
if game.cachefontbox == nil then
game.cachefontbox = sprite.box(465, 260, "black");
end
sprite.copy(game.cachefontbox, sprite.screen(), 45, 300);
end
function drawline(txt,y)
if game.cachefont == nil then
game.cachefont = sprite.font("theme/pf7.ttf", 22);
end
local w, h = sprite.text_size(game.cachefont, txt);
local tz = sprite.text(game.cachefont, txt, "gray");
sprite.draw(tz, sprite.screen(), (465-w)/2+30, y);
sprite.free(tz);
sprite.free(bx);
end
function titleroom(r)
local timer = r.timer;
r.timer = function(s)
if game.codec == nil then
game.codec = 0;
end
local spr = loadsprite("code");
sprite.copy(spr, 0, game.codec, 180, 483, sprite.screen(), 578, 35);
game.codec = game.codec + 2;
if timer ~= nil then
return timer(s);
end
end
return room(r);
end
function drawbg(s)
if not main.bgdrawn then
local px = sprite.load("theme/back.png");
sprite.copy(px, sprite.screen(), 0, 0);
sprite.free(px);
main.bgdrawn = true;
end
if not s.bgdrawn then
local px = sprite.box(500, 200, "black");
sprite.copy(px, sprite.screen(), 30, 30);
sprite.free(px);
cleanlines();
s.bgdrawn = true;
end
end
main = room {
nam = ""
,enter = function(s)
mute_(0,0)();
music_("datagroove")();
timer:set(600);
end
,timer = function(s)
timer:stop();
walk(title1);
end
}
title1 = titleroom {
nam = ""
,enter = function(s)
timer:set(200);
end
,prepare = function(s)
drawbg(s);
if not s.directdrawn then
local tab = sprite.load("gfx/table5.png");
sprite.copy(tab, sprite.screen(), 130, 110);
sprite.free(tab);
local door = sprite.load("gfx/door4.png");
sprite.copy(door, 0, 0, 70, 140, sprite.screen(), 460, 90);
sprite.free(door);
s.directdrawn = true;
end
end
,timer = function(s)
s:prepare();
if s._frame == nil then
s._frame = 0;
end
local spr1 = loadsprite("ratsmall");
local spr2 = loadsprite("rat");
if s._frame == 1 then
play_sound("cork");
sprite.copy(spr1, sprite.screen(), 40, 195);
elseif s._frame == 2 then
sprite.copy(spr2, sprite.screen(), 40, 165);
elseif s._frame == 4 then
play_sound("cork");
sprite.copy(spr1, sprite.screen(), 120, 135);
elseif s._frame == 5 then
sprite.copy(spr2, sprite.screen(), 120, 105);
elseif s._frame == 7 then
play_sound("cork");
sprite.copy(spr1, sprite.screen(), 270, 135);
elseif s._frame == 8 then
sprite.copy(spr2, sprite.screen(), 270, 105);
elseif s._frame == 10 then
play_sound("cork");
sprite.copy(spr1, sprite.screen(), 340, 195);
elseif s._frame == 11 then
sprite.copy(spr2, sprite.screen(), 340, 165);
elseif s._frame == 13 then
play_sound("cork");
sprite.copy(spr1, sprite.screen(), 405, 195);
elseif s._frame == 14 then
sprite.copy(spr2, sprite.screen(), 405, 165);
elseif s._frame == 16 then
drawline("платформа instead", 400);
drawline("ПЁТР КОСЫХ", 430);
elseif s._frame == 26 then
cleanlines();
drawline("составление сборника", 400);
drawline("ВАСИЛИЙ ВОРОНКОВ", 430);
elseif s._frame == 36 then
cleanlines();
drawline("графика и оформление", 400);
drawline("ВАСИЛИЙ ВОРОНКОВ", 430);
elseif s._frame == 46 then
return walk(title2);
end
s._frame = s._frame + 1;
end
,exit = function(s)
timer:stop();
s._frame = nil;
end
}
title2 = titleroom {
nam = ""
,enter = function(s)
timer:set(200);
end
,prepare = function(s)
drawbg(s);
end
,timer = function(s)
s:prepare();
if s._frame == nil then
s._frame = 0;
end
if s.bx == nil then
s.bx = sprite.box(300, 172, "black");
end
local spr4 = loadsprite("crio_blood");
local spr1 = loadsprite("mutant2");
local spr2 = loadsprite("mutant3");
local spr3 = loadsprite("mutant4");
if s._frame == 1 then
sprite.copy(spr4, sprite.screen(), 230, 75);
sprite.draw(spr3, sprite.screen(), 150, 58);
elseif s._frame == 2 then
sprite.copy(s.bx, sprite.screen(), 150, 58);
sprite.copy(spr4, sprite.screen(), 230, 75);
sprite.draw(spr2, sprite.screen(), 155, 58);
elseif s._frame == 3 then
sprite.copy(s.bx, sprite.screen(), 150, 58);
sprite.copy(spr4, sprite.screen(), 230, 75);
sprite.draw(spr1, sprite.screen(), 160, 58);
elseif s._frame == 4 then
sprite.copy(s.bx, sprite.screen(), 150, 58);
sprite.copy(spr4, sprite.screen(), 230, 75);
sprite.draw(spr2, sprite.screen(), 155, 58);
elseif s._frame == 5 then
sprite.copy(s.bx, sprite.screen(), 150, 58);
sprite.copy(spr4, sprite.screen(), 230, 75);
sprite.draw(spr3, sprite.screen(), 150, 58);
elseif s._frame == 6 then
sprite.copy(s.bx, sprite.screen(), 150, 58);
sprite.copy(spr4, sprite.screen(), 230, 75);
sprite.draw(spr2, sprite.screen(), 155, 58);
elseif s._frame == 7 then
sprite.copy(s.bx, sprite.screen(), 150, 58);
sprite.copy(spr4, sprite.screen(), 230, 75);
sprite.draw(spr1, sprite.screen(), 160, 58);
elseif s._frame == 8 then
sprite.copy(s.bx, sprite.screen(), 150, 58);
sprite.copy(spr4, sprite.screen(), 230, 75);
sprite.draw(spr2, sprite.screen(), 155, 58);
elseif s._frame == 9 then
sprite.copy(s.bx, sprite.screen(), 150, 58);
sprite.copy(spr4, sprite.screen(), 230, 75);
sprite.draw(spr3, sprite.screen(), 150, 58);
elseif s._frame == 10 then
sprite.copy(s.bx, sprite.screen(), 150, 58);
sprite.copy(spr4, sprite.screen(), 230, 75);
sprite.draw(spr2, sprite.screen(), 155, 58);
elseif s._frame == 11 then
sprite.copy(s.bx, sprite.screen(), 150, 58);
sprite.copy(spr4, sprite.screen(), 230, 75);
sprite.draw(spr1, sprite.screen(), 160, 58);
elseif s._frame == 12 then
sprite.copy(s.bx, sprite.screen(), 150, 58);
sprite.copy(spr4, sprite.screen(), 230, 75);
sprite.draw(spr2, sprite.screen(), 155, 58);
elseif s._frame == 13 then
sprite.copy(s.bx, sprite.screen(), 150, 58);
sprite.copy(spr4, sprite.screen(), 230, 75);
sprite.draw(spr3, sprite.screen(), 150, 58);
elseif s._frame == 15 then
cleanlines();
drawline("авторы игр", 400);
drawline("АНДРЕЙ ЛОБАНОВ", 430);
elseif s._frame == 25 then
cleanlines();
drawline("авторы игр", 400);
drawline("АНТОН И ОЛЬГА КОЛОСОВЫ", 430);
elseif s._frame == 35 then
cleanlines();
drawline("авторы игр", 400);
drawline("ВАСИЛИЙ ВОРОНКОВ", 430);
elseif s._frame == 45 then
cleanlines();
drawline("авторы игр", 400);
drawline("ДМИТРИЙ ДУДАРЬ", 430);
elseif s._frame == 55 then
return walk(title3);
end
s._frame = s._frame + 1;
end
,exit = function(s)
timer:stop();
s._frame = nil;
if s.bx ~= nil then
sprite.free(s.bx);
s.bx = nil;
end
end
}
title3 = titleroom {
nam = ""
,enter = function(s)
timer:set(200);
end
,prepare = function(s)
drawbg(s);
end
,timer = function(s)
s:prepare();
if s._frame == nil then
s._frame = 0;
end
if s.bx == nil then
s.bx = sprite.box(60, 65, "black");
end
if s.bx2 == nil then
s.bx2 = sprite.box(40, 45, "black");
end
local spr1 = loadsprite("rat");
local spr2 = loadsprite("rat_dead");
if s._frame == 1 then
sprite.copy(spr1, sprite.screen(), 400, 165);
elseif s._frame == 2 then
sprite.copy(s.bx, sprite.screen(), 400, 165);
sprite.copy(spr1, sprite.screen(), 390, 160);
elseif s._frame == 3 then
sprite.copy(s.bx, sprite.screen(), 390, 160);
sprite.copy(spr1, sprite.screen(), 380, 155);
elseif s._frame == 4 then
sprite.copy(s.bx, sprite.screen(), 380, 155);
sprite.copy(spr1, sprite.screen(), 370, 150);
elseif s._frame == 5 then
sprite.copy(s.bx, sprite.screen(), 370, 150);
sprite.copy(spr1, sprite.screen(), 360, 155);
elseif s._frame == 6 then
sprite.copy(s.bx, sprite.screen(), 360, 155);
sprite.copy(spr1, sprite.screen(), 350, 160);
elseif s._frame == 7 then
sprite.copy(s.bx, sprite.screen(), 350, 160);
sprite.copy(spr1, sprite.screen(), 340, 165);
elseif s._frame == 8 then
sprite.copy(s.bx, sprite.screen(), 340, 165);
sprite.copy(spr1, sprite.screen(), 330, 160);
elseif s._frame == 9 then
sprite.copy(s.bx, sprite.screen(), 330, 160);
sprite.copy(spr1, sprite.screen(), 320, 155);
elseif s._frame == 10 then
sprite.copy(s.bx, sprite.screen(), 320, 155);
sprite.copy(spr1, sprite.screen(), 310, 150);
elseif s._frame == 11 then
sprite.copy(s.bx, sprite.screen(), 310, 150);
sprite.copy(spr1, sprite.screen(), 300, 155);
elseif s._frame == 12 then
sprite.copy(s.bx, sprite.screen(), 300, 155);
sprite.copy(spr1, sprite.screen(), 290, 160);
elseif s._frame == 13 then
sprite.copy(s.bx, sprite.screen(), 290, 160);
sprite.copy(spr1, sprite.screen(), 280, 165);
elseif s._frame == 14 then
sprite.copy(s.bx, sprite.screen(), 280, 165);
sprite.copy(spr1, sprite.screen(), 270, 160);
elseif s._frame == 15 then
sprite.copy(s.bx, sprite.screen(), 270, 160);
sprite.copy(spr1, sprite.screen(), 260, 155);
elseif s._frame == 16 then
sprite.copy(s.bx, sprite.screen(), 260, 155);
sprite.copy(spr1, sprite.screen(), 250, 150);
elseif s._frame == 17 then
sprite.copy(s.bx, sprite.screen(), 250, 150);
sprite.copy(spr1, sprite.screen(), 240, 155);
elseif s._frame == 18 then
sprite.copy(s.bx, sprite.screen(), 240, 155);
sprite.copy(spr1, sprite.screen(), 230, 160);
elseif s._frame == 19 then
sprite.copy(s.bx, sprite.screen(), 230, 160);
sprite.copy(spr1, sprite.screen(), 220, 165);
elseif s._frame == 20 then
sprite.draw(loadsprite("shoot"), sprite.screen(), 30, 180);
elseif s._frame == 21 then
sprite.copy(s.bx2, sprite.screen(), 30, 180);
sprite.draw(loadsprite("shoot"), sprite.screen(), 70, 180);
elseif s._frame == 22 then
sprite.copy(s.bx2, sprite.screen(), 70, 180);
sprite.draw(loadsprite("shoot"), sprite.screen(), 110, 180);
elseif s._frame == 23 then
sprite.copy(s.bx2, sprite.screen(), 110, 180);
sprite.draw(loadsprite("shoot"), sprite.screen(), 150, 180);
elseif s._frame == 24 then
sprite.copy(s.bx2, sprite.screen(), 150, 180);
sprite.draw(loadsprite("shoot"), sprite.screen(), 190, 180);
elseif s._frame == 25 then
sprite.copy(s.bx2, sprite.screen(), 190, 180);
sprite.copy(spr2, sprite.screen(), 220, 130);
elseif s._frame == 27 then
cleanlines();
drawline("авторы игр", 400);
drawline("ДМИТРИЙ КОЛЕСНИКОВ", 430);
elseif s._frame == 37 then
cleanlines();
drawline("авторы игр", 400);
drawline("ЕГОР ХАРВАТ", 430);
elseif s._frame == 47 then
cleanlines();
drawline("авторы игр", 400);
drawline("МАКСИМ КЛИШ", 430);
elseif s._frame == 57 then
cleanlines();
drawline("авторы игр", 400);
drawline("МАКСИМ J-MAKS", 430);
elseif s._frame == 67 then
return walk(title4);
end
s._frame = s._frame + 1;
end
,exit = function(s)
timer:stop();
s._frame = nil;
if s.bx ~= nil then
sprite.free(s.bx);
s.bx =nil;
end
if s.bx2 ~= nil then
sprite.free(s.bx2);
s.bx2=nil;
end
end
}
title4 = titleroom {
nam = ""
,enter = function(s)
timer:set(200);
end
,prepare = function(s)
drawbg(s);
end
,timer = function(s)
s:prepare();
if s._frame == nil then
s._frame = 0;
end
if s.bx == nil then
s.bx = sprite.box(200, 125, "black");
end
local spr1 = loadsprite("robodance1");
local spr2 = loadsprite("robodance2");
local spr3 = loadsprite("robodance3");
local spr4 = loadsprite("robodance4");
local spr5 = loadsprite("robodance5");
local spr6 = loadsprite("robodance6");
if s._frame == 1 then
sprite.copy(spr2, sprite.screen(), 180, 105);
elseif s._frame == 2 then
sprite.copy(s.bx, sprite.screen(), 180, 105);
sprite.copy(spr2, sprite.screen(), 170, 105);
elseif s._frame == 3 then
sprite.copy(s.bx, sprite.screen(), 170, 105);
sprite.copy(spr2, sprite.screen(), 160, 105);
elseif s._frame == 4 then
sprite.copy(s.bx, sprite.screen(), 160, 105);
sprite.copy(spr2, sprite.screen(), 150, 105);
elseif s._frame == 5 then
sprite.copy(s.bx, sprite.screen(), 150, 105);
sprite.copy(spr3, sprite.screen(), 160, 105);
elseif s._frame == 6 then
sprite.copy(s.bx, sprite.screen(), 160, 105);
sprite.copy(spr3, sprite.screen(), 170, 105);
elseif s._frame == 7 then
sprite.copy(s.bx, sprite.screen(), 170, 105);
sprite.copy(spr3, sprite.screen(), 180, 105);
elseif s._frame == 8 then
sprite.copy(s.bx, sprite.screen(), 180, 105);
sprite.copy(spr3, sprite.screen(), 190, 105);
elseif s._frame == 9 then
sprite.copy(s.bx, sprite.screen(), 190, 105);
sprite.copy(spr3, sprite.screen(), 200, 105);
elseif s._frame == 10 then
sprite.copy(s.bx, sprite.screen(), 200, 105);
sprite.copy(spr2, sprite.screen(), 190, 105);
elseif s._frame == 11 then
sprite.copy(s.bx, sprite.screen(), 190, 105);
sprite.copy(spr2, sprite.screen(), 180, 105);
elseif s._frame == 11 then
sprite.copy(spr4, sprite.screen(), 180, 105);
elseif s._frame == 12 then
sprite.copy(spr5, sprite.screen(), 180, 105);
elseif s._frame == 13 then
sprite.copy(spr6, sprite.screen(), 180, 105);
elseif s._frame == 15 then
cleanlines();
drawline("авторы игр", 400);
drawline("ПЁТР КОСЫХ", 430);
elseif s._frame == 25 then
cleanlines();
drawline("авторы игр", 400);
drawline("РОМАН IRREMAN", 430);
elseif s._frame == 35 then
cleanlines();
drawline("авторы игр", 400);
drawline("ZERG.PRO", 430);
elseif s._frame == 45 then
return walk(title5);
end
s._frame = s._frame + 1;
end
,exit = function(s)
timer:stop();
s._frame = nil;
if s.bx ~= nil then
sprite.free(s.bx);
s.bx = nil;
end
end
}
title5 = titleroom {
nam = ""
,enter = function(s)
timer:set(200);
end
,prepare = function(s)
drawbg(s);
if not s.directdrawn then
local spr = loadsprite("hatch2");
sprite.copy(spr, sprite.screen(), 330, 30);
s.directdrawn = true;
end
end
,timer = function(s)
s:prepare();
if s._frame == nil then
s._frame = 0;
end
if s.bx == nil then
s.bx = sprite.box(55, 124, "black");
end
if s.bx2 == nil then
s.bx2 = sprite.box(240, 80, "black");
end
local spr1 = loadsprite("zombi");
local spr2 = loadsprite("zombi_short");
if s._frame == 1 then
sprite.copy(spr1, sprite.screen(), 400, 105);
elseif s._frame == 2 then
sprite.copy(s.bx, sprite.screen(), 400, 105);
sprite.copy(spr2, sprite.screen(), 395, 105);
elseif s._frame == 3 then
sprite.copy(s.bx, sprite.screen(), 395, 105);
sprite.copy(spr1, sprite.screen(), 390, 105);
elseif s._frame == 4 then
sprite.copy(s.bx, sprite.screen(), 390, 105);
sprite.copy(spr2, sprite.screen(), 385, 105);
elseif s._frame == 5 then
sprite.copy(s.bx, sprite.screen(), 385, 105);
sprite.copy(spr1, sprite.screen(), 380, 105);
elseif s._frame == 6 then
sprite.copy(s.bx, sprite.screen(), 380, 105);
sprite.copy(spr2, sprite.screen(), 375, 105);
elseif s._frame == 7 then
sprite.copy(s.bx, sprite.screen(), 375, 105);
sprite.copy(spr1, sprite.screen(), 370, 105);
elseif s._frame == 8 then
sprite.copy(s.bx, sprite.screen(), 370, 105);
sprite.copy(spr2, sprite.screen(), 365, 105);
elseif s._frame == 9 then
sprite.copy(s.bx, sprite.screen(), 365, 105);
sprite.copy(spr1, sprite.screen(), 360, 105);
elseif s._frame == 10 then
sprite.copy(s.bx, sprite.screen(), 360, 105);
sprite.copy(spr2, sprite.screen(), 355, 105);
elseif s._frame == 11 then
sprite.copy(s.bx, sprite.screen(), 355, 105);
sprite.copy(spr1, sprite.screen(), 350, 105);
elseif s._frame == 12 then
sprite.copy(s.bx, sprite.screen(), 350, 105);
sprite.copy(spr2, sprite.screen(), 345, 105);
elseif s._frame == 13 then
sprite.copy(s.bx, sprite.screen(), 345, 105);
sprite.copy(spr1, sprite.screen(), 340, 105);
elseif s._frame == 14 then
sprite.copy(s.bx, sprite.screen(), 340, 105);
sprite.copy(spr2, sprite.screen(), 335, 105);
elseif s._frame == 15 then
sprite.copy(s.bx, sprite.screen(), 335, 105);
sprite.copy(spr1, sprite.screen(), 330, 105);
elseif s._frame == 16 then
sprite.copy(s.bx, sprite.screen(), 330, 105);
sprite.copy(spr2, sprite.screen(), 325, 105);
elseif s._frame == 17 then
sprite.copy(s.bx, sprite.screen(), 325, 105);
sprite.copy(spr1, sprite.screen(), 320, 105);
elseif s._frame == 18 then
sprite.copy(s.bx, sprite.screen(), 320, 105);
sprite.copy(spr2, sprite.screen(), 315, 105);
elseif s._frame == 19 then
sprite.copy(s.bx, sprite.screen(), 315, 105);
sprite.copy(spr1, sprite.screen(), 310, 105);
elseif s._frame == 20 then
sprite.copy(loadsprite("doorclose"), sprite.screen(), 40, 120);
elseif s._frame == 23 then
sprite.copy(s.bx2, sprite.screen(), 40, 120);
sprite.copy(s.bx, sprite.screen(), 310, 105);
sprite.draw(loadsprite("zombi_dead"), sprite.screen(), 260, 175);
sprite.copy(loadsprite("hatch"), sprite.screen(), 330, 30);
elseif s._frame == 25 then
cleanlines();
drawline("музыка", 400);
drawline("8BIT BETTY", 430);
elseif s._frame == 35 then
cleanlines();
drawline("музыка", 400);
drawline("J. ARTHUR KEENES", 430);
elseif s._frame == 45 then
cleanlines();
drawline("музыка", 400);
drawline("ROLEMUSIC", 430);
elseif s._frame == 55 then
cleanlines();
drawline("музыка", 400);
drawline("GOTO80", 430);
elseif s._frame == 65 then
cleanlines();
drawline("музыка", 400);
drawline("EDWARD SHALLOW", 430);
elseif s._frame == 75 then
mute_()();
theme.gfx.reset();
main.bgdrawn = nil;
title1.directdrawn=nil;
title2.directdrawn=nil;
title3.directdrawn=nil;
title4.directdrawn=nil;
title5.directdrawn=nil;
title1.bgdrawn=nil;
title2.bgdrawn=nil;
title3.bgdrawn=nil;
title4.bgdrawn=nil;
title5.bgdrawn=nil;
game.codec=nil;
if game.cachefont ~= nil then
sprite.free_font(cachefont);
game.cachefont = nil;
end
if game.cachefontbox ~= nil then
sprite.free(game.cachefontbox);
game.cachefontbox = nil;
end
return walk(hend1);
end
s._frame = s._frame + 1;
end
,exit = function(s)
timer:stop();
s._frame = nil;
if s.bx ~= nil then
sprite.free(s.bx);
s.bx = nil;
end
if s.bx2 ~= nil then
sprite.free(s.bx2);
s.bx2 = nil;
end
end
}
hend1 = room {
nam = "Конец"
,pxa = {
{ "planet", 172, 22 }
}
,dsc = "{xwalk(hend2)|-- Адмирал, есть ещё кое-что...}"
}
hend2 = room {
nam = 'Конец';
enter = music_("poppies",0);
pxa = {
{ "planet", 172, 22 }
};
act = function()
complete_("insteadose")();
gamefile_("main.lua")();
end;
dsc = [[
-- Я думаю вы должны знать.^
-- Да?^
-- Мы выяснили, куда делись жители планеты...^
-- И?^
-- Похоже, они отправились к Земле...
]];
obj = { vobj("next", txtc("{КОНЕЦ}")) }
}