53 Commits

Author SHA1 Message Date
6ec8c2a7d7 - [FIX] Warning en jail_audio.cpp
- [FIX] Warning en jdraw.cpp
- [FIX] correccions en els scripts
- [NEW] Afegides DLLs
2026-03-25 09:53:08 +01:00
6656f74659 - [NEW] Modificada linea de compilació per a compilar estàticament les llibreries (excepte SDL3.dll i libwinpthread-1.dll) 2026-03-25 09:29:18 +01:00
3c942f6391 - [NEW] Scripts de publicació en gitea 2026-03-25 09:21:51 +01:00
2d563a7907 - [FIX] Arreglats els modes fullscreen de consola y kiosk
- [NEW] En kiosk mode se fica en pantalla completa i no deixa canviar-ho
- [FIX] Quan està en pantalla completa, F1 i F2 no cambien el zoom (quan isques estarà com estava abans d'entrar a fullscreen)
2026-03-08 20:06:48 +01:00
942ce2a6ff VERSIÓ 1.7
- [FIX] Si estem en consola de text, ignora zoom i fullscreen i dimensiona tot correcta en base a la resolució nativa del monitor.
2026-03-08 14:08:54 +01:00
e92498fd16 VERSIÓ 1.6
- [FIX] La música ja torna a sonar
2026-03-04 09:25:52 +01:00
6d09afdf09 Merge branch 'master' of https://gitea.sustancia.synology.me/JailDoctor/thepool 2026-03-04 08:13:40 +01:00
00c4a08915 -[NEW] Precàrrega de la música 2026-03-04 08:13:37 +01:00
5529777ccb - [FIX] No es mostrava res en pantalla perque faltava el 0xff000000 al ficar pixels en la textura
- [FIX] No s'escoltava so, no estic segur de perqué. He agafat el JailAudio de mini i ja va tot.
- [NEW] Afegida opció "SET INFINITELIVES" desde la consola
- [NEW] Afegida opció "SET KIOSK" desde la consola
- [FIX] Les SDL_texture es veien borroses
- [FIX] En windows no es carregaven be els GIFs del txt per culpa del salt de linea doble que té.
2026-03-03 12:56:11 +01:00
d8a9847f48 Merge pull request 'sdl3 a main branch' (#11) from sdl3 into master
Reviewed-on: #11
2026-02-06 12:12:05 +01:00
186775d585 No se, alguns canvis 2026-02-06 12:10:28 +01:00
7feabb30f7 - [FIX] Retocada paleta grayscale 2025-04-25 11:46:51 +02:00
ad4fa14ab1 - [NEW] Afegida paleta monocroma (no accesible encara) 2025-04-21 10:17:12 +02:00
53784e6fb0 Pas a SDL3 complet 2024-11-06 21:35:30 +01:00
22619cf207 Treballant en la conversió a SDL3 2024-11-06 13:49:44 +01:00
b31a578731 - [FIX] El missatge al pillar un skill era sempre el de les botes 2024-10-31 16:43:41 +01:00
6c30e6aeec - [NEW] Numero de versió en la pantalla inicial 2024-10-31 13:48:44 +01:00
dbac3eb3ee [FIX] [#7] Es pot botar damunt de les peces a arreplegar 2024-10-31 13:18:03 +01:00
3946ea749b - [FIX] [#6] En l'habitacio de baix la piscina, botant per damunt les bambolles es pot passar per damunt d'una porta
- [FIX] [#10] Avistat problema de enganzar-se en la porta YP de l'habitacio 58
2024-10-31 12:26:46 +01:00
0ab4ca06e3 - [FIX] [#2] Quan et donen una cat's life, ja no torna la música del joc
- [FIX] [#3] Quan entres a la habitació de la depuradora ...
- [FIX] [#4] ficar anbernics recopilades en el game over i altres pantalles de resum
- [FIX] [#5] que al acabar el joc la seuquencia acabe amb els stats, com el game over
2024-10-31 12:08:10 +01:00
a8892f4f8c - [FIX] Els enemics podien ser botats per damunt sense morir
- [FIX] Els precipicis podien ser evitats mantenint el bot pulsat.
2024-10-11 19:22:48 +02:00
4d1739d8e1 - [FIX] Quan te tocava una cat's life, petava el mame 2024-10-11 19:06:50 +02:00
59ec0542a1 - [NEW] Afegit icono al executable de Windows 2024-10-11 12:46:04 +02:00
2634cc1b2c - Neteja d'arxius inutils
- Afegits iconos
2024-10-11 12:23:08 +02:00
3132dc0157 - [CHG] Augmentada la duració del boost de invulnerabilitat
- [CHG] Afegits uns quants cafés estratègicament, i canviats alguns
2024-10-11 11:50:16 +02:00
9c10b6a372 Merge branch 'master' of https://gitea.sustancia.synology.me/JailDoctor/thepool 2024-10-11 09:20:28 +02:00
31f63516ca - [CHG] Ara en Linux la configuració se guarda en " ~/.config/thepool/config.txt"
- [FIX] Solventada explosió en pantalla de gameover per un dangling pointer. Aplicades medides similars en catslife i ingame.
2024-10-11 09:20:24 +02:00
b5f4425672 - [FIX] Ja no es mostra el cursor mai (excepte si estas editant) 2024-10-10 20:38:12 +02:00
51eb933383 - [FIX] Arreglats els errors de la paleta de fósforo
- [CHG] Augmentades les probabilitats de una Cat's Life
- [NEW] Informació dels renderers al arrancar
- [FIX] Quan apareix un dialeg ja no es queda el só de caminar sonant de fondo
- [NEW] Quan apareix un dialeg i sona una fanfarria, la música se pausa
2024-10-10 20:14:18 +02:00
3f127b5444 - [FIX] En pantalla completa se veïa el cursor, ara ja no 2024-10-10 17:28:46 +02:00
2055ac523d - [FIX] El mode a pantalla completa ja manté proporcions senceres, amb barres negres pels costat quan fa falta
- [NEW] Amb F4 se fa toggle entre mode NORMAL, SCANLINES, FOSFORO i SCANLINES+FOSFORO
2024-10-10 16:10:09 +02:00
0a5a79dc60 - [FIX] Guarda per a quan falla un arxiu en JFile 2024-10-10 13:48:24 +02:00
baae73a38d - [FIX] Un café feia impossible passar per una habitació
- [FIX] No s'activaba el prólogo quan toca
- [FIX] El gràfic de les portes de vegades era transparent
- [FIX] Separades unes caixes que feien molt frustrant agafar una cosa
- [FIX] Quan tenia el café de doble velocitat no podia creuar portes
- [FIX] Algunes vegades el objecte dropejat encara feia clipping amb altres
- [NEW] Missatges en els moments importants
- [NEW] Quan te pases el joc també te dona els 'stats' de temps, vides i habitacions visitades.
2024-10-10 12:58:22 +02:00
ec7ac7114e - [FIX] No es podia entrar al editor de bitmap_pos des de l'editor
- [FIX] Recreativa afegida
- [NEW] Prologo acabat
- [FIX] Quan s'acava el boost de invulnerabilitat se moria
2024-10-10 09:33:56 +02:00
cabbb52cbb - [FIX] Solventats els problemes de memòria al eliminar un actor 2024-10-09 12:03:16 +02:00
ac4e1f3298 Merge branch 'master' of https://gitea.sustancia.synology.me/JailDoctor/thepool 2024-10-09 10:10:23 +02:00
b292ae710a - [FIX] La porta de l'habitacio de les sabates, que vaig pujar en la party pero se m'havia oblidat fer-ho en el repo
- [FIX] Solució a un dangling pointer que me va trobar valgrind
- [COMMIT ABANS DEL MEGACANVI]
2024-10-09 10:10:21 +02:00
9827865e9c - Prologo quasi acabat 2024-10-08 13:59:04 +02:00
119136332b - [FIX] Si està escribint un text, que no pille la D o la M com a "duplicar" o "moure" el actor seleccionat 2024-10-08 08:08:17 +02:00
77cdf90c99 - Treballant en el prólogo 2024-10-07 20:07:03 +02:00
304f636a95 - [CHG] Pujat el maxim d'habitacions per al prologo 2024-10-07 13:56:09 +02:00
fa97ea79e8 - [NEW] Anbernics en el lloc i ja se poden recollir
- [CHG] Canviats uns pixels en les portes
- [NEW] Sequencia de final de joc acabada
- [NEW] Al pillar un booster fa sorollet
- Treballant en el prólogo
2024-10-07 13:35:01 +02:00
f38d50e7f9 - [FIX] Llevat el SDL2_mixer del Makefile 2024-10-06 19:27:46 +02:00
0ccd8a570a - [NEW] Sempre es pot navegar pels menus amb cursors, RETURN i ESCAPE
- [NEW] El gamepad es configura amb la info del gamescontrollerdb.txt per defecte
- [NEW] El botó de START en el gamepad funciona com el ESCAPE del teclat
- [FIX] La música ingame continuava estant mal
- [FIX] Si la música està desactivada que no sone la del logo
2024-10-06 19:23:06 +02:00
52d3916f8c - [FIX] La pilota de l'habitació 02 ja no te una ralla de pixels
- [FIX] Al pegar botonà en el logo el fondo se quedava de algún color durant la intro.
- [FIX] Al morir el malo que t'ha matat ja no es queda tot loco
- [FIX] Retocades un poc algunes portes on s'ha pogut
2024-10-06 17:36:51 +02:00
394773003a - [FIX] La música ja sona be en un auricularet
- [CHG] El joc ja no usa SDL_Mixer, sinó JailAudio
- [FIX] La música de game over ja no fa bucle
- [FIX] Tanquem les coses abans d'eixir pa que Valgrind no s'enfade
2024-10-06 15:03:46 +02:00
da3cb5ff8e - [FIX] Els actors que canvien de direcció aleatòriament no han de fer roido de tropeçar si han canviat de direcció perque sí i no han tropeçat 2024-10-04 20:46:20 +02:00
d17ac3a2ed - [NEW] Intro acabada 2024-10-04 17:53:27 +02:00
f84eb3e238 - [NEW] Afegit xicotet detall al logo
- [NEW] Sequencia de introducció (ongoing)
2024-10-04 14:00:27 +02:00
c3d1b672c2 - [NEW] Músiques definitives
- [FIX] Si ja està sonant el só de push, que no sonen més. Sinó s'acumulen i atronen
2024-10-04 08:10:58 +02:00
3919281080 - [NEW] Só del logo
- [NEW] Só de quan mor
- [NEW] Só de quan agafa trastos
- [NEW] Só de quan desapareix un bloc
- [FIX] Ruido en una habitació
2024-10-03 17:40:14 +02:00
1251ef5110 - [NEW] Nova debug info: flags
- [NEW] Só de caminar i botar funcionant
- [NEW] Só de enemics rebotant
- [NEW] Menus amb só (MOC MOC!)
- [FIX] El so de caminar ja no continua durant el menu ingame
2024-10-03 16:27:43 +02:00
9ca1e59f44 - Arreglats un milló de warnings tontos (i alguno serio) 2024-10-03 13:40:54 +02:00
144 changed files with 14450 additions and 1516 deletions

8
.gitignore vendored
View File

@@ -1,7 +1,11 @@
*.exe *.exe
*.dll *.zip
*.tar.gz
.vscode/* .vscode/*
*.dSYM/* *.dSYM/*
build/* build/*
thepool thepool
thepool_debug thepool_debug
valgrind*
release/*
data.jf2

View File

@@ -3,25 +3,25 @@ source = source/*.cpp
windows: windows:
@echo off @echo off
g++ $(source) icon.res -lmingw32 -lSDL2main -lSDL2 -lSDL2_mixer -mwindows -o "$(executable).exe" g++ $(source) bin/icon.res -lmingw32 -lSDL3 -mwindows -ffunction-sections -fdata-sections -static-libstdc++ -static-libgcc -lpthread -o "$(executable).exe"
strip -s -R .comment -R .gnu.version --strip-unneeded "$(executable).exe" strip -s -R .comment -R .gnu.version --strip-unneeded "$(executable).exe"
windows_debug: windows_debug:
@echo off @echo off
g++ $(source) -D DEBUG -g -Wall -fvar-tracking -lmingw32 -lSDL2main -lSDL2 -lSDL2_mixer -o "$(executable)_debug.exe" g++ $(source) -D DEBUG -g -Wall -fvar-tracking -lmingw32 -lSDL3 -o "$(executable)_debug.exe"
macos: macos:
clang++ $(source) -Wall -Os -std=c++11 -ffunction-sections -fdata-sections -lSDL2 -lSDL2_mixer -o "$(executable)" clang++ $(source) -Wall -Os -std=c++11 -ffunction-sections -fdata-sections -lSDL3 -o "$(executable)"
macos_debug: macos_debug:
clang++ $(source) -D DEBUG -g -Wall -std=c++11 -lSDL2 -lSDL2_mixer -o "$(executable)_debug" clang++ $(source) -D DEBUG -g -Wall -std=c++11 -lSDL3 -o "$(executable)_debug"
macos_bundle: macos_bundle:
clang++ $(source) -D MACOS_BUNDLE -Wall -Os -std=c++11 -framework SDL2 -framework SDL2_mixer -F /Library/Frameworks -ffunction-sections -fdata-sections -o mini_bundle -rpath @executable_path/../Frameworks/ -target x86_64-apple-macos10.12 clang++ $(source) -D MACOS_BUNDLE -Wall -Os -std=c++11 -framework SDL3 -F /Library/Frameworks -ffunction-sections -fdata-sections -o mini_bundle -rpath @executable_path/../Frameworks/ -target x86_64-apple-macos10.12
linux: linux:
g++ $(source) -Wall -Os -ffunction-sections -fdata-sections -Wl,--gc-sections -lSDL2 -lSDL2_mixer -o "$(executable)" g++ $(source) -Wall -Os -ffunction-sections -fdata-sections -Wl,--gc-sections -lSDL3 -o "$(executable)"
strip -s -R .comment -R .gnu.version --strip-unneeded "$(executable)" strip -s -R .comment -R .gnu.version --strip-unneeded "$(executable)"
linux_debug: linux_debug:
g++ $(source) -D DEBUG -g -lSDL2 -lSDL2_mixer -o "$(executable)_debug" g++ $(source) -D DEBUG -g -lSDL3 -o "$(executable)_debug"

BIN
bin/SDL3.dll Normal file

Binary file not shown.

BIN
bin/icon.icns Normal file

Binary file not shown.

BIN
bin/icon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
bin/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

1
bin/icon.rc Normal file
View File

@@ -0,0 +1 @@
id ICON "icon.ico"

BIN
bin/icon.res Normal file

Binary file not shown.

BIN
bin/libwinpthread-1.dll Normal file

Binary file not shown.

BIN
data/25anys.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
data/end1.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
data/end2.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
data/fosforo.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 B

2078
data/gamecontrollerdb.txt Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,19 +1,32 @@
25anys.gif
abad.gif abad.gif
altres.gif altres.gif
batman.gif batman.gif
caixes.gif caixes.gif
doors.gif doors.gif
end1.gif
end2.gif
floor.gif floor.gif
font.gif font.gif
font2.gif font2.gif
fosforo.gif
gat.gif gat.gif
gat2.gif gat2.gif
intro1.gif
intro2.gif
intro3.gif
intro4.gif
intro5.gif
jailgames.gif jailgames.gif
lordabad.gif lordabad.gif
mapa.gif mapa.gif
objectes.gif objectes.gif
obrer.gif obrer.gif
piscina.gif piscina.gif
prologo1.gif
prologo2.gif
prologo3.gif
prologo4.gif
roomaux.gif roomaux.gif
sam.gif sam.gif
test.gif test.gif

View File

@@ -9,4 +9,5 @@ objectes.gif
obrer.gif obrer.gif
piscina.gif piscina.gif
sam.gif sam.gif
test.gif
doors.gif doors.gif

BIN
data/grayscale.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 B

BIN
data/intro1.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
data/intro2.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
data/intro3.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
data/intro4.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
data/intro5.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

BIN
data/mus_ingame.ogg Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -1,57 +0,0 @@
width: 2
height: 1
door-height-xp: 1
door-height-xn: 1
color: CYAN
floor-texture: 0
wall-texture: 2
door-texture: 0
under-door-texture: 0
exit-xp: 5
exit-xn: 1
exit-zn: 2
actor{
name: PLATFORM02
bmp: test.gif
bmp-rect: 64 0 32 24
bmp-offset: 0 24
pos: 16 20 0
size: 8 8 4
}
actor{
name: PLATFORM00
bmp: test.gif
bmp-rect: 64 0 32 24
bmp-offset: 0 24
pos: 8 28 0
size: 8 8 4
}
actor{
name: PLATFORM01
bmp: test.gif
bmp-rect: 64 0 32 24
bmp-offset: 0 24
pos: 16 28 0
size: 8 8 4
}
actor{
name: PLATFORM04
bmp: test.gif
bmp-rect: 64 0 32 24
bmp-offset: 0 24
pos: 40 28 0
size: 8 8 4
}
actor{
name: PLATFORM03
bmp: test.gif
bmp-rect: 64 0 32 24
bmp-offset: 0 24
pos: 48 28 0
size: 8 8 4
}

View File

@@ -1,112 +0,0 @@
width: 2
height: 2
door-height-xp: 0
door-height-yp: 0
color: CYAN
floor-texture: 9
wall-texture: 3
door-texture: 1
under-door-texture: 0
exit-xp: 0
exit-yp: 3
actor{
name: ARMARI01
bmp: caixes.gif
bmp-rect: 64 32 24 32
bmp-offset: -8 36
pos: 8 8 0
size: 8 4 5
movement: CW
}
actor{
name: TAULETA
bmp: caixes.gif
bmp-rect: 0 64 32 32
bmp-offset: 0 32
pos: 24 8 0
size: 8 8 5
movement: CW
}
actor{
name: S-SHOES
bmp: objectes.gif
bmp-rect: 162 0 28 22
bmp-offset: -3 24
pos: 48 8 0
size: 4 4 4
anim-cycle: SEQ
anim-wait: 2
flags: SPECIAL
movement: CW
}
actor{
name: TAULA01
bmp: caixes.gif
bmp-rect: 128 32 32 32
bmp-offset: 0 32
pos: 8 24 0
size: 8 8 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: TAULA02
bmp: caixes.gif
bmp-rect: 160 32 32 32
bmp-offset: 0 32
pos: 8 32 0
size: 8 8 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: ARMARI02
bmp: caixes.gif
bmp-rect: 96 32 24 32
bmp-offset: -8 36
pos: 8 8 8
size: 8 4 8
movement: CW
}
actor{
name: TV
bmp: caixes.gif
bmp-rect: 32 64 32 32
bmp-offset: 0 32
pos: 24 7 5
size: 8 5 8
orient: XP
movement: CW
}
actor{
name: NES
bmp: caixes.gif
bmp-rect: 96 0 32 32
bmp-offset: 0 32
pos: 24 16 0
size: 8 8 6
flags: PICKABLE PUSHABLE GRAVITY
movement: CW
}
actor{
name: ROOMBA
bmp: caixes.gif
bmp-rect: 160 0 32 32
bmp-offset: 0 34
pos: 40 32 0
size: 8 8 4
orient: YP
flags: MOVING DEADLY
movement: Y
}

View File

@@ -1,24 +0,0 @@
width: 2
height: 1
door-height-xn: 4
door-height-yp: 0
color: PURPLE
floor-texture: 1
wall-texture: 2
door-texture: 0
under-door-texture: 2
exit-xn: 3
exit-yp: 4
exit-zp: 0
actor{
name: G-FILTER
bmp: objectes.gif
bmp-rect: 0 0 24 32
bmp-offset: 0 32
pos: 8 16 0
size: 8 8 8
anim-wait: 4
flags: PUSHABLE ANIMATED GRAVITY SPECIAL
movement: CW
}

View File

@@ -1,67 +0,0 @@
width: 1
height: 2
door-height-xp: 0
door-height-yn: 4
color: PURPLE
floor-texture: 0
wall-texture: 0
door-texture: 0
under-door-texture: 0
exit-xp: 2
exit-yn: 1
actor{
name: CONVEYOR
bmp: caixes.gif
bmp-rect: 0 144 32 32
bmp-offset: 0 32
pos: 16 48 0
size: 8 8 4
anim-cycle: MIN
flags: REACTIVE ANIMATED
react-mask: ZN
react-push: XP
movement: CW
}
actor{
name: FINESTRA
bmp: altres.gif
bmp-rect: 0 75 20 33
bmp-offset: 0 39
pos: 15 23 4
size: 1 1 9
movement: CW
}
actor{
name: FINESTRA01
bmp: altres.gif
bmp-rect: 0 75 20 33
bmp-offset: 0 39
pos: 15 31 4
size: 1 1 9
movement: CW
}
actor{
name: BOX
bmp: test.gif
bmp-rect: 32 0 32 32
bmp-offset: 0 32
pos: 27 31 0
size: 8 8 8
flags: PUSHABLE GRAVITY
movement: CW
}
actor{
name: BOX01
bmp: test.gif
bmp-rect: 32 0 32 32
bmp-offset: 0 32
pos: 27 29 8
size: 8 8 8
flags: PICKABLE PUSHABLE GRAVITY
movement: CW
}

View File

@@ -1,250 +0,0 @@
width: 2
height: 3
door-height-yp: 2
door-height-yn: 2
color: GREEN
floor-texture: 1
wall-texture: 5
door-texture: 4
under-door-texture: 0
exit-yn: 2
actor{
name: BOX
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32
pos: 8 0 0
size: 8 8 8
movement: CW
}
actor{
name: BOX02
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32
pos: 16 0 0
size: 8 8 8
movement: CW
}
actor{
name: BOX03
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32
pos: 24 0 0
size: 8 8 8
movement: CW
}
actor{
name: BOX20
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32
pos: 8 8 0
size: 8 8 8
movement: CW
}
actor{
name: BOX01
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32
pos: 8 16 0
size: 8 8 8
movement: CW
}
actor{
name: BOX11
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32
pos: 8 24 0
size: 8 8 8
movement: CW
}
actor{
name: BOX12
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32
pos: 8 32 0
size: 8 8 8
movement: CW
}
actor{
name: BOX13
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32
pos: 8 40 0
size: 8 8 8
movement: CW
}
actor{
name: BOX14
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32
pos: 8 48 0
size: 8 8 8
movement: CW
}
actor{
name: BOX21
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32
pos: 8 56 0
size: 8 8 8
movement: CW
}
actor{
name: BOX15
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32
pos: 16 56 0
size: 8 8 8
movement: CW
}
actor{
name: BOX16
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32
pos: 24 56 0
size: 8 8 8
movement: CW
}
actor{
name: BOX04
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32
pos: 32 0 0
size: 8 8 8
movement: CW
}
actor{
name: BOX17
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32
pos: 32 56 0
size: 8 8 8
movement: CW
}
actor{
name: BOX05
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32
pos: 40 0 0
size: 8 8 8
movement: CW
}
actor{
name: BOX22
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32
pos: 48 0 0
size: 8 8 8
movement: CW
}
actor{
name: BOX06
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32
pos: 48 8 0
size: 8 8 8
movement: CW
}
actor{
name: BOX07
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32
pos: 48 16 0
size: 8 8 8
movement: CW
}
actor{
name: BOX08
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32
pos: 48 24 0
size: 8 8 8
movement: CW
}
actor{
name: BOX09
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32
pos: 48 32 0
size: 8 8 8
movement: CW
}
actor{
name: BOX10
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32
pos: 48 40 0
size: 8 8 8
movement: CW
}
actor{
name: BOX19
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32
pos: 48 48 0
size: 8 8 8
movement: CW
}
actor{
name: BOX18
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32
pos: 40 56 0
size: 8 8 8
movement: CW
}
actor{
name: BOX23
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32
pos: 48 56 0
size: 8 8 8
movement: CW
}

View File

@@ -1,11 +0,0 @@
width: 2
height: 2
door-height-xp: 0
door-height-xn: 0
color: YELLOW
floor-texture: 8
wall-texture: 8
door-texture: 5
under-door-texture: 0
exit-xp: 6
exit-xn: 0

View File

@@ -1,114 +0,0 @@
width: 3
height: 3
door-height-xn: 0
color: CYAN
floor-texture: 0
wall-texture: 0
door-texture: 0
under-door-texture: 0
exit-xn: 5
exit-zp: 7
actor{
name: SOFA
bmp: altres.gif
bmp-rect: 0 0 48 40
bmp-offset: 0 32
pos: 0 0 0
size: 16 8 6
movement: CW
}
actor{
name: LLIT
bmp: altres.gif
bmp-rect: 48 0 57 47
bmp-offset: 12 33
pos: 16 0 0
size: 16 16 6
movement: CW
}
actor{
name: LIFT
bmp: caixes.gif
bmp-rect: 32 32 32 24
bmp-offset: 0 24
pos: 56 0 0
size: 8 8 4
orient: ZP
flags: MOVING
movement: Z
}
actor{
name: B4-02
bmp: objectes.gif
bmp-rect: 114 78 15 18
bmp-offset: -8 22
pos: 0 40 0
size: 4 4 4
anim-cycle: SEQ
anim-wait: 2
flags: ANIMATED SPECIAL
movement: CW
}
actor{
name: B8-00
bmp: objectes.gif
bmp-rect: 114 78 15 18
bmp-offset: -8 22
pos: 0 48 0
size: 4 4 4
anim-cycle: SEQ
anim-wait: 2
flags: ANIMATED SPECIAL
movement: CW
}
actor{
name: YONKI
bmp: caixes.gif
bmp-rect: 168 64 19 32
bmp-offset: -7 37
pos: 18 56 0
size: 6 6 12
anim-cycle: SEQ
anim-wait: 1
flags: PUSHABLE GRAVITY
movement: CW
}
actor{
name: BARREL
bmp: caixes.gif
bmp-rect: 96 64 18 32
bmp-offset: -7 37
pos: 25 57 0
size: 6 6 12
anim-cycle: SEQ
anim-wait: 1
flags: PUSHABLE ANIMATED GRAVITY
movement: CW
}
actor{
name: NEVERA1
bmp: caixes.gif
bmp-rect: 0 96 32 32
bmp-offset: 0 32
pos: 32 32 0
size: 8 8 8
movement: CW
}
actor{
name: NEVERA2
bmp: caixes.gif
bmp-rect: 32 96 32 32
bmp-offset: 0 32
pos: 32 32 8
size: 8 8 8
movement: CW
}

View File

@@ -1,33 +0,0 @@
width: 3
height: 3
door-height-xp: 0
door-height-xn: 0
color: PURPLE
floor-texture: 0
wall-texture: 14
door-texture: 2
under-door-texture: 0
exit-xn: 8
exit-zn: 6
actor{
name: LIFT
bmp: caixes.gif
bmp-rect: 32 32 32 24
bmp-offset: 0 24
pos: 56 0 0
size: 8 8 4
orient: ZP
flags: MOVING
movement: Z
}
actor{
name: FINESTRA
bmp: altres.gif
bmp-rect: 48 76 18 32
bmp-offset: 0 39
pos: 0 9 6
size: 1 1 9
movement: CW
}

View File

@@ -1,105 +0,0 @@
width: 2
height: 2
door-height-xp: 0
color: CYAN
floor-texture: 0
wall-texture: 11
door-texture: 0
under-door-texture: 0
exit-xp: 7
actor{
name: P-ELBOW
bmp: objectes.gif
bmp-rect: 0 32 22 32
bmp-offset: -2 35
pos: 8 16 0
size: 4 4 4
anim-wait: 6
flags: ANIMATED SPECIAL
movement: CW
}
actor{
name: P-PIPE
bmp: objectes.gif
bmp-rect: 0 64 16 32
bmp-offset: -8 36
pos: 8 24 0
size: 4 4 4
anim-wait: 6
flags: ANIMATED SPECIAL
movement: CW
}
actor{
name: P-SALT
bmp: objectes.gif
bmp-rect: 66 32 20 32
bmp-offset: -7 35
pos: 8 32 0
size: 4 4 4
anim-wait: 6
flags: ANIMATED SPECIAL
movement: CW
}
actor{
name: EXPLOSION
bmp: caixes.gif
bmp-rect: 0 160 18 22
bmp-offset: -7 38
pos: 32 32 0
size: 8 8 4
anim-cycle: SEQ
flags: ANIMATED
movement: CW
}
actor{
name: P-FILTER
bmp: objectes.gif
bmp-rect: 0 0 24 32
bmp-offset: -4 34
pos: 8 24 8
size: 4 4 4
anim-wait: 6
flags: ANIMATED SPECIAL
movement: CW
}
actor{
name: P-PUMP
bmp: objectes.gif
bmp-rect: 48 64 22 32
bmp-offset: -5 35
pos: 8 32 11
size: 4 4 4
anim-wait: 6
flags: ANIMATED SPECIAL
movement: CW
}
actor{
name: BOX01
bmp: caixes.gif
bmp-rect: 0 160 18 22
bmp-offset: -7 38
pos: 32 32 5
size: 8 8 4
anim-cycle: SEQ
flags: ANIMATED
movement: CW
}
actor{
name: P-TIMER
bmp: objectes.gif
bmp-rect: 72 0 24 32
bmp-offset: -4 34
pos: 8 40 8
size: 4 4 4
anim-wait: 6
flags: ANIMATED SPECIAL
movement: CW
}

BIN
data/prologo1.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
data/prologo2.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
data/prologo3.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
data/prologo4.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -52,7 +52,7 @@ actor{
} }
actor{ actor{
name: B-00-LIVE name: B-00-JUMP
bmp: objectes.gif bmp: objectes.gif
bmp-rect: 114 78 15 18 bmp-rect: 114 78 15 18
bmp-offset: -8 22 bmp-offset: -8 22
@@ -129,7 +129,7 @@ actor{
actor{ actor{
name: PILOTA name: PILOTA
bmp: altres.gif bmp: altres.gif
bmp-rect: 0 108 22 22 bmp-rect: 0 108 21 21
bmp-offset: -5 24 bmp-offset: -5 24
pos: 28 32 0 pos: 28 32 0
size: 8 8 2 size: 8 8 2

View File

@@ -28,13 +28,13 @@ actor{
} }
actor{ actor{
name: ANBERNIC name: ANBERNIC0
bmp: altres.gif bmp: altres.gif
bmp-rect: 157 80 24 14 bmp-rect: 157 80 24 14
bmp-offset: -4 16 bmp-offset: -4 16
pos: 56 16 0 pos: 56 16 0
size: 6 4 2 size: 6 4 2
flags: PUSHABLE GRAVITY flags: SPECIAL
movement: CW movement: CW
} }

View File

@@ -1,7 +1,7 @@
width: 2 width: 2
height: 3 height: 3
door-height-xn: 3 door-height-xn: 3
door-height-yp: 2 door-height-yp: 3
color: WHITE color: WHITE
floor-texture: 11 floor-texture: 11
wall-texture: 2 wall-texture: 2
@@ -19,7 +19,6 @@ actor{
pos: 8 0 0 pos: 8 0 0
size: 8 8 4 size: 8 8 4
orient: ZP orient: ZP
flags: MOVING
movement: Z movement: Z
} }
@@ -31,7 +30,6 @@ actor{
pos: 8 56 0 pos: 8 56 0
size: 8 8 4 size: 8 8 4
orient: ZP orient: ZP
flags: MOVING
movement: Z movement: Z
} }
@@ -43,7 +41,6 @@ actor{
pos: 40 56 0 pos: 40 56 0
size: 8 8 4 size: 8 8 4
orient: ZP orient: ZP
flags: MOVING
movement: Z movement: Z
} }
@@ -55,7 +52,6 @@ actor{
pos: 24 0 0 pos: 24 0 0
size: 8 8 4 size: 8 8 4
orient: ZP orient: ZP
flags: MOVING
movement: Z movement: Z
} }

View File

@@ -9,6 +9,19 @@ under-door-texture: 0
exit-yp: 15 exit-yp: 15
editor-done: 1 editor-done: 1
actor{
name: B-05-GOD
bmp: objectes.gif
bmp-rect: 114 78 15 18
bmp-offset: -8 22
pos: 40 40 0
size: 4 4 4
anim-cycle: SEQ
anim-wait: 2
flags: ANIMATED SPECIAL
movement: CW
}
actor{ actor{
name: BOX-A-01 name: BOX-A-01
bmp: caixes.gif bmp: caixes.gif

View File

@@ -24,7 +24,7 @@ actor{
} }
actor{ actor{
name: B-01-JUMP name: B-01-RUN
bmp: objectes.gif bmp: objectes.gif
bmp-rect: 114 78 15 18 bmp-rect: 114 78 15 18
bmp-offset: -8 22 bmp-offset: -8 22

View File

@@ -11,13 +11,13 @@ exit-zp: 21
editor-done: 1 editor-done: 1
actor{ actor{
name: ANBERNIC name: ANBERNIC1
bmp: altres.gif bmp: altres.gif
bmp-rect: 157 80 24 14 bmp-rect: 157 80 24 14
bmp-offset: -4 16 bmp-offset: -4 16
pos: 24 40 8 pos: 24 40 8
size: 6 4 2 size: 6 4 2
flags: PUSHABLE GRAVITY flags: SPECIAL
movement: CW movement: CW
} }

View File

@@ -7,6 +7,7 @@ floor-texture: 10
wall-texture: 1 wall-texture: 1
door-texture: 0 door-texture: 0
under-door-texture: 0 under-door-texture: 0
exit-xp: 86
exit-yp: 50 exit-yp: 50
exit-yn: 24 exit-yn: 24
editor-done: 1 editor-done: 1
@@ -26,13 +27,24 @@ actor{
} }
actor{ actor{
name: ANBERNIC name: ANBERNIC2
bmp: altres.gif bmp: altres.gif
bmp-rect: 157 80 24 14 bmp-rect: 157 80 24 14
bmp-offset: -6 10 bmp-offset: -6 10
pos: 40 8 6 pos: 40 8 6
size: 6 4 2 size: 6 4 2
flags: PUSHABLE GRAVITY flags: SPECIAL
movement: CW
}
actor{
name: ARCADE
bmp: altres.gif
bmp-rect: 160 0 30 48
bmp-offset: 0 49
pos: 56 8 0
size: 8 8 16
orient: YP
movement: CW movement: CW
} }
@@ -66,7 +78,7 @@ actor{
bmp: altres.gif bmp: altres.gif
bmp-rect: 128 0 20 41 bmp-rect: 128 0 20 41
bmp-offset: -6 45 bmp-offset: -6 45
pos: 56 8 0 pos: 16 8 0
size: 6 6 16 size: 6 6 16
movement: CW movement: CW
} }

View File

@@ -12,18 +12,20 @@ exit-xn: 28
editor-done: 1 editor-done: 1
actor{ actor{
name: BOX-B name: B-03-LIVE
bmp: caixes.gif bmp: objectes.gif
bmp-rect: 32 0 32 32 bmp-rect: 114 78 15 18
bmp-offset: 0 32 bmp-offset: -8 24
pos: 48 8 0 pos: 48 56 16
size: 8 8 8 size: 4 4 4
flags: PUSHABLE anim-cycle: SEQ
anim-wait: 2
flags: ANIMATED SPECIAL
movement: CW movement: CW
} }
actor{ actor{
name: CADIRA name: CADIRA-00
bmp: caixes.gif bmp: caixes.gif
bmp-rect: 64 96 20 32 bmp-rect: 64 96 20 32
bmp-offset: -7 38 bmp-offset: -7 38
@@ -34,12 +36,24 @@ actor{
movement: CW movement: CW
} }
actor{
name: CADIRA-01
bmp: caixes.gif
bmp-rect: 64 96 20 32
bmp-offset: -7 38
pos: 8 7 0
size: 6 5 8
orient: YP
flags: PUSHABLE
movement: CW
}
actor{ actor{
name: CUADRO-00 name: CUADRO-00
bmp: altres.gif bmp: altres.gif
bmp-rect: 66 75 18 32 bmp-rect: 66 75 18 32
bmp-offset: 0 39 bmp-offset: 0 39
pos: 7 8 6 pos: 7 13 6
size: 1 1 9 size: 1 1 9
orient: YP orient: YP
movement: CW movement: CW
@@ -50,7 +64,7 @@ actor{
bmp: altres.gif bmp: altres.gif
bmp-rect: 102 75 18 32 bmp-rect: 102 75 18 32
bmp-offset: 0 39 bmp-offset: 0 39
pos: 7 48 6 pos: 7 43 6
size: 1 1 9 size: 1 1 9
orient: YP orient: YP
movement: CW movement: CW
@@ -152,6 +166,26 @@ actor{
movement: CW movement: CW
} }
actor{
name: LAMPARA-00
bmp: altres.gif
bmp-rect: 128 0 20 41
bmp-offset: -6 45
pos: 48 56 0
size: 6 6 16
movement: CW
}
actor{
name: LAMPARA-01
bmp: altres.gif
bmp-rect: 128 0 20 41
bmp-offset: -6 45
pos: 8 56 0
size: 6 6 16
movement: CW
}
actor{ actor{
name: MESITA name: MESITA
bmp: caixes.gif bmp: caixes.gif
@@ -169,7 +203,7 @@ actor{
bmp-offset: -2 33 bmp-offset: -2 33
pos: 32 0 0 pos: 32 0 0
size: 8 7 6 size: 8 7 6
flags: PUSHABLE flags: PICKABLE PUSHABLE GRAVITY
movement: CW movement: CW
} }
@@ -178,7 +212,7 @@ actor{
bmp: caixes.gif bmp: caixes.gif
bmp-rect: 160 0 32 32 bmp-rect: 160 0 32 32
bmp-offset: 0 34 bmp-offset: 0 34
pos: 8 56 0 pos: 16 56 0
size: 8 8 2 size: 8 8 2
orient: XN orient: XN
flags: REACTIVE MOVING DEADLY flags: REACTIVE MOVING DEADLY
@@ -217,6 +251,6 @@ actor{
bmp-offset: -4 34 bmp-offset: -4 34
pos: 24 0 4 pos: 24 0 4
size: 8 6 8 size: 8 6 8
flags: PUSHABLE flags: PUSHABLE GRAVITY
movement: CW movement: CW
} }

View File

@@ -13,6 +13,17 @@ exit-yp: 35
exit-yn: 29 exit-yn: 29
editor-done: 1 editor-done: 1
actor{
name: ANBERNIC3
bmp: altres.gif
bmp-rect: 157 80 24 14
bmp-offset: -4 16
pos: 0 8 0
size: 6 4 2
flags: SPECIAL
movement: CW
}
actor{ actor{
name: BLOCMATA-00 name: BLOCMATA-00
bmp: altres.gif bmp: altres.gif

View File

@@ -14,13 +14,13 @@ exit-yn: 32
editor-done: 1 editor-done: 1
actor{ actor{
name: ANBERNIC name: ANBERNIC4
bmp: altres.gif bmp: altres.gif
bmp-rect: 157 80 24 14 bmp-rect: 157 80 24 14
bmp-offset: -4 16 bmp-offset: -4 16
pos: 24 32 0 pos: 24 32 0
size: 6 4 2 size: 6 4 2
flags: PUSHABLE GRAVITY flags: SPECIAL
movement: CW movement: CW
} }

View File

@@ -12,13 +12,13 @@ exit-yn: 33
editor-done: 1 editor-done: 1
actor{ actor{
name: ANBERNIC name: ANBERNIC5
bmp: altres.gif bmp: altres.gif
bmp-rect: 157 80 24 14 bmp-rect: 157 80 24 14
bmp-offset: -4 16 bmp-offset: -4 16
pos: 40 16 0 pos: 40 16 0
size: 6 4 2 size: 6 4 2
flags: PUSHABLE GRAVITY flags: SPECIAL
movement: CW movement: CW
} }

View File

@@ -11,6 +11,19 @@ exit-xn: 33
exit-yn: 28 exit-yn: 28
editor-done: 1 editor-done: 1
actor{
name: B-06-LIVE
bmp: objectes.gif
bmp-rect: 114 78 15 18
bmp-offset: -8 22
pos: 24 32 12
size: 4 4 4
anim-cycle: SEQ
anim-wait: 2
flags: ANIMATED SPECIAL
movement: CW
}
actor{ actor{
name: PLATH-00 name: PLATH-00
bmp: caixes.gif bmp: caixes.gif
@@ -227,3 +240,15 @@ actor{
orient: ZP orient: ZP
movement: Z movement: Z
} }
actor{
name: PLATH-18
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 24 32 8
size: 8 8 4
orient: ZP
flags: DISAPPEAR
movement: Z
}

View File

@@ -12,13 +12,13 @@ exit-yp: 37
editor-done: 1 editor-done: 1
actor{ actor{
name: ANBERNIC name: ANBERNIC6
bmp: altres.gif bmp: altres.gif
bmp-rect: 157 80 24 14 bmp-rect: 157 80 24 14
bmp-offset: -4 16 bmp-offset: -4 16
pos: 0 8 0 pos: 0 8 0
size: 6 4 2 size: 6 4 2
flags: PUSHABLE GRAVITY flags: SPECIAL
movement: CW movement: CW
} }
@@ -47,7 +47,7 @@ actor{
bmp: doors.gif bmp: doors.gif
bmp-rect: 160 7 16 40 bmp-rect: 160 7 16 40
bmp-offset: -8 47 bmp-offset: -8 47
pos: 8 16 0 pos: 10 18 0
size: 6 6 14 size: 6 6 14
movement: CW movement: CW
} }

View File

@@ -10,21 +10,6 @@ exit-yn: 42
exit-zn: 47 exit-zn: 47
editor-done: 1 editor-done: 1
actor{
name: ABAD
bmp: lordabad.gif
bmp-rect: 0 0 20 33
bmp-offset: -6 38
pos: 2 28 20
size: 8 8 8
orient: XP
anim-cycle: MIN
anim-wait: 1
flags: ANIMATED ORIENTABLE
react-mask: XP XN YP YN ZP ZN
movement: CCW
}
actor{ actor{
name: LIFT-00 name: LIFT-00
bmp: caixes.gif bmp: caixes.gif
@@ -47,6 +32,21 @@ actor{
movement: Z movement: Z
} }
actor{
name: LORD-ABAD
bmp: lordabad.gif
bmp-rect: 0 0 20 33
bmp-offset: -6 38
pos: 2 28 20
size: 8 8 8
orient: XP
anim-cycle: MIN
anim-wait: 1
flags: ANIMATED ORIENTABLE
react-mask: XP XN YP YN ZP ZN
movement: CCW
}
actor{ actor{
name: PLATH-00 name: PLATH-00
bmp: caixes.gif bmp: caixes.gif

View File

@@ -14,7 +14,7 @@ actor{
name: BOX-A name: BOX-A
bmp: sam.gif bmp: sam.gif
bmp-rect: 0 0 19 33 bmp-rect: 0 0 19 33
bmp-offset: -7 37 bmp-offset: -10 38
pos: 27 0 19 pos: 27 0 19
size: 8 8 8 size: 8 8 8
anim-cycle: DUO anim-cycle: DUO
@@ -37,8 +37,8 @@ actor{
actor{ actor{
name: PLATH-00 name: PLATH-00
bmp: caixes.gif bmp: caixes.gif
bmp-rect: 128 128 32 32 bmp-rect: 32 32 32 32
bmp-offset: 0 32 bmp-offset: 0 24
pos: 24 0 15 pos: 24 0 15
size: 8 8 4 size: 8 8 4
orient: ZP orient: ZP
@@ -59,8 +59,8 @@ actor{
actor{ actor{
name: PLATH-01 name: PLATH-01
bmp: caixes.gif bmp: caixes.gif
bmp-rect: 128 128 32 32 bmp-rect: 32 32 32 32
bmp-offset: 0 32 bmp-offset: 0 24
pos: 32 0 15 pos: 32 0 15
size: 8 8 4 size: 8 8 4
orient: ZP orient: ZP

View File

@@ -10,6 +10,29 @@ exit-yp: 52
exit-zp: 47 exit-zp: 47
editor-done: 1 editor-done: 1
actor{
name: ANBERNIC7
bmp: altres.gif
bmp-rect: 157 80 24 14
bmp-offset: -4 16
pos: 8 40 0
size: 6 4 2
flags: SPECIAL
movement: CW
}
actor{
name: ARCADE
bmp: altres.gif
bmp-rect: 160 0 30 48
bmp-offset: 0 49
pos: 8 24 0
size: 8 8 16
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{ actor{
name: CADIRA name: CADIRA
bmp: caixes.gif bmp: caixes.gif

View File

@@ -256,9 +256,9 @@ actor{
bmp: gat.gif bmp: gat.gif
bmp-rect: 0 0 24 28 bmp-rect: 0 0 24 28
bmp-offset: -4 32 bmp-offset: -4 32
pos: 16 16 0 pos: 16 24 0
size: 8 8 8 size: 8 8 8
orient: XP orient: YN
anim-wait: 1 anim-wait: 1
flags: REACTIVE MOVING ANIMATED ORIENTABLE DEADLY flags: REACTIVE MOVING ANIMATED ORIENTABLE DEADLY
react-mask: XP XN YP YN ZP ZN react-mask: XP XN YP YN ZP ZN
@@ -270,9 +270,9 @@ actor{
bmp: gat2.gif bmp: gat2.gif
bmp-rect: 0 0 24 28 bmp-rect: 0 0 24 28
bmp-offset: -4 32 bmp-offset: -4 32
pos: 40 40 0 pos: 40 32 0
size: 8 8 8 size: 8 8 8
orient: XN orient: YP
anim-wait: 1 anim-wait: 1
flags: REACTIVE MOVING ANIMATED ORIENTABLE DEADLY flags: REACTIVE MOVING ANIMATED ORIENTABLE DEADLY
react-mask: XP XN YP YN ZP ZN react-mask: XP XN YP YN ZP ZN

View File

@@ -10,13 +10,13 @@ exit-yn: 59
editor-done: 1 editor-done: 1
actor{ actor{
name: ANBERNIC name: ANBERNIC8
bmp: altres.gif bmp: altres.gif
bmp-rect: 157 80 24 14 bmp-rect: 157 80 24 14
bmp-offset: -4 16 bmp-offset: -4 16
pos: 48 40 0 pos: 48 40 0
size: 6 4 2 size: 6 4 2
flags: PUSHABLE GRAVITY flags: SPECIAL
movement: CW movement: CW
} }
@@ -183,9 +183,9 @@ actor{
bmp: obrer.gif bmp: obrer.gif
bmp-rect: 0 0 24 32 bmp-rect: 0 0 24 32
bmp-offset: -4 37 bmp-offset: -4 37
pos: 8 24 0 pos: 24 24 0
size: 8 8 8 size: 8 8 8
orient: XN orient: XP
anim-wait: 1 anim-wait: 1
flags: REACTIVE MOVING ANIMATED ORIENTABLE DEADLY flags: REACTIVE MOVING ANIMATED ORIENTABLE DEADLY
react-mask: XP XN YP YN ZP ZN react-mask: XP XN YP YN ZP ZN
@@ -197,9 +197,9 @@ actor{
bmp: obrer.gif bmp: obrer.gif
bmp-rect: 0 0 24 32 bmp-rect: 0 0 24 32
bmp-offset: -4 37 bmp-offset: -4 37
pos: 48 48 0 pos: 40 48 0
size: 8 8 8 size: 8 8 8
orient: XN orient: XP
anim-wait: 1 anim-wait: 1
flags: REACTIVE MOVING ANIMATED ORIENTABLE DEADLY flags: REACTIVE MOVING ANIMATED ORIENTABLE DEADLY
react-mask: XP XN YP YN ZP ZN react-mask: XP XN YP YN ZP ZN

View File

@@ -10,13 +10,26 @@ exit-xp: 59
editor-done: 1 editor-done: 1
actor{ actor{
name: ANBERNIC name: ANBERNIC9
bmp: altres.gif bmp: altres.gif
bmp-rect: 157 80 24 14 bmp-rect: 157 80 24 14
bmp-offset: -4 16 bmp-offset: -4 16
pos: 0 40 0 pos: 0 40 0
size: 6 4 2 size: 6 4 2
flags: PUSHABLE GRAVITY flags: SPECIAL
movement: CW
}
actor{
name: B-04-LIVE
bmp: objectes.gif
bmp-rect: 114 78 15 18
bmp-offset: -8 22
pos: 48 0 0
size: 4 4 4
anim-cycle: SEQ
anim-wait: 2
flags: ANIMATED SPECIAL
movement: CW movement: CW
} }
@@ -25,7 +38,7 @@ actor{
bmp: altres.gif bmp: altres.gif
bmp-rect: 0 133 32 27 bmp-rect: 0 133 32 27
bmp-offset: 0 27 bmp-offset: 0 27
pos: 0 48 0 pos: 0 51 0
size: 8 8 6 size: 8 8 6
flags: REACTIVE DEADLY flags: REACTIVE DEADLY
react-mask: XP XN YP YN ZP ZN react-mask: XP XN YP YN ZP ZN
@@ -61,6 +74,7 @@ actor{
bmp-offset: 0 32 bmp-offset: 0 32
pos: 0 49 6 pos: 0 49 6
size: 8 8 8 size: 8 8 8
flags: PUSHABLE GRAVITY
movement: CW movement: CW
} }
@@ -72,7 +86,7 @@ actor{
pos: 8 40 0 pos: 8 40 0
size: 8 8 8 size: 8 8 8
orient: YP orient: YP
flags: ORIENTABLE flags: PUSHABLE ORIENTABLE GRAVITY
movement: CW movement: CW
} }
@@ -83,6 +97,7 @@ actor{
bmp-offset: 0 32 bmp-offset: 0 32
pos: 8 32 8 pos: 8 32 8
size: 8 8 8 size: 8 8 8
flags: PUSHABLE GRAVITY
movement: CW movement: CW
} }
@@ -117,6 +132,7 @@ actor{
bmp-offset: 0 32 bmp-offset: 0 32
pos: 31 2 0 pos: 31 2 0
size: 8 8 8 size: 8 8 8
flags: PUSHABLE GRAVITY
movement: CW movement: CW
} }
@@ -128,7 +144,7 @@ actor{
pos: 54 0 8 pos: 54 0 8
size: 8 8 8 size: 8 8 8
orient: YP orient: YP
flags: ORIENTABLE flags: PUSHABLE ORIENTABLE GRAVITY
movement: CW movement: CW
} }
@@ -149,6 +165,7 @@ actor{
bmp-offset: 0 32 bmp-offset: 0 32
pos: 10 32 0 pos: 10 32 0
size: 8 8 8 size: 8 8 8
flags: PUSHABLE GRAVITY
movement: CW movement: CW
} }
@@ -167,8 +184,9 @@ actor{
bmp: caixes.gif bmp: caixes.gif
bmp-rect: 32 0 32 32 bmp-rect: 32 0 32 32
bmp-offset: 0 32 bmp-offset: 0 32
pos: 40 0 0 pos: 40 1 0
size: 8 8 8 size: 8 8 8
flags: PUSHABLE GRAVITY
movement: CW movement: CW
} }
@@ -180,7 +198,7 @@ actor{
pos: 46 3 10 pos: 46 3 10
size: 8 8 8 size: 8 8 8
orient: YP orient: YP
flags: ORIENTABLE flags: PUSHABLE ORIENTABLE GRAVITY
movement: CW movement: CW
} }
@@ -256,3 +274,42 @@ actor{
flags: MOVING ANIMATED flags: MOVING ANIMATED
movement: RANDV movement: RANDV
} }
actor{
name: EXPLOSION-03
bmp: caixes.gif
bmp-rect: 0 160 18 22
bmp-offset: -7 24
pos: 48 48 0
size: 8 8 4
orient: YN
anim-cycle: SEQ
flags: MOVING ANIMATED
movement: RANDV
}
actor{
name: EXPLOSION-04
bmp: caixes.gif
bmp-rect: 0 160 18 22
bmp-offset: -7 24
pos: 0 0 0
size: 8 8 4
orient: XP
anim-cycle: SEQ
flags: MOVING ANIMATED
movement: RANDV
}
actor{
name: EXPLOSION-05
bmp: caixes.gif
bmp-rect: 0 160 18 22
bmp-offset: -7 24
pos: 16 24 0
size: 8 8 4
orient: XN
anim-cycle: SEQ
flags: MOVING ANIMATED
movement: RANDV
}

View File

@@ -9,6 +9,19 @@ under-door-texture: 2
exit-xp: 62 exit-xp: 62
editor-done: 1 editor-done: 1
actor{
name: B-02-GOD
bmp: objectes.gif
bmp-rect: 114 78 15 18
bmp-offset: -8 22
pos: 56 16 20
size: 4 4 4
anim-cycle: SEQ
anim-wait: 2
flags: ANIMATED SPECIAL
movement: CW
}
actor{ actor{
name: P-ELBOW name: P-ELBOW
bmp: objectes.gif bmp: objectes.gif
@@ -45,6 +58,29 @@ actor{
movement: Y movement: Y
} }
actor{
name: PLATH-02
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 56 16 16
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: PLATH-04
bmp: altres.gif
bmp-rect: 160 48 32 32
bmp-offset: 0 32
pos: 32 8 16
size: 8 8 4
orient: XN
flags: MOVING
movement: X
}
actor{ actor{
name: TRANSPA-00 name: TRANSPA-00
bmp: altres.gif bmp: altres.gif

228
data/rooms/64.txt Normal file
View File

@@ -0,0 +1,228 @@
width: 3
height: 1
door-height-xp: 0
color: CYAN
floor-texture: 0
wall-texture: 2
door-texture: 0
under-door-texture: 0
exit-xp: 65
editor-done: 1
actor{
name: BOX-01
bmp: caixes.gif
bmp-rect: 32 0 32 32
bmp-offset: 0 32
pos: 46 40 0
size: 8 8 8
flags: PUSHABLE
movement: CW
}
actor{
name: BOX-02
bmp: caixes.gif
bmp-rect: 0 0 32 32
bmp-offset: 0 32
pos: 56 40 0
size: 8 8 8
flags: PUSHABLE
movement: CW
}
actor{
name: BOX-03
bmp: caixes.gif
bmp-rect: 0 0 32 32
bmp-offset: 0 32
pos: 52 40 8
size: 8 8 8
orient: YP
flags: PUSHABLE ORIENTABLE
movement: CW
}
actor{
name: FINESTRA-01
bmp: altres.gif
bmp-rect: 0 75 20 33
bmp-offset: 0 39
pos: -1 30 6
size: 1 1 9
movement: CW
}
actor{
name: FINESTRA-02
bmp: altres.gif
bmp-rect: 0 75 20 33
bmp-offset: 0 39
pos: -1 23 6
size: 1 1 9
movement: CW
}
actor{
name: JAILDES
bmp: test.gif
bmp-rect: 0 32 20 32
bmp-offset: -6 38
pos: 0 32 0
size: 8 8 8
orient: XN
anim-wait: 1
flags: REACTIVE ORIENTABLE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: CCW
}
actor{
name: KALLAX-01
bmp: altres.gif
bmp-rect: 0 48 24 27
bmp-offset: -8 31
pos: 32 16 0
size: 8 4 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: KALLAX-02
bmp: altres.gif
bmp-rect: 24 48 24 27
bmp-offset: -8 31
pos: 32 16 8
size: 8 4 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: KALLAX-03
bmp: altres.gif
bmp-rect: 48 48 24 27
bmp-offset: -8 31
pos: 40 16 8
size: 8 4 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: KALLAX-04
bmp: altres.gif
bmp-rect: 72 48 24 27
bmp-offset: -8 31
pos: 40 16 0
size: 8 4 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: LAMPARA
bmp: altres.gif
bmp-rect: 128 0 20 41
bmp-offset: -6 45
pos: 1 41 0
size: 6 6 16
movement: CW
}
actor{
name: LLIT
bmp: altres.gif
bmp-rect: 48 0 57 47
bmp-offset: 11 32
pos: 8 16 0
size: 16 16 4
movement: CW
}
actor{
name: MANCUERNA
bmp: altres.gif
bmp-rect: 106 33 17 14
bmp-offset: -6 20
pos: 24 25 0
size: 6 4 2
movement: CW
}
actor{
name: MESITA-01
bmp: caixes.gif
bmp-rect: 0 64 32 32
bmp-offset: 0 32
pos: 0 16 0
size: 8 8 4
movement: CW
}
actor{
name: MESITA-02
bmp: caixes.gif
bmp-rect: 0 64 32 32
bmp-offset: 0 32
pos: 24 16 0
size: 8 8 4
movement: CW
}
actor{
name: X-0
bmp: objectes.gif
bmp-rect: 162 0 28 22
bmp-offset: -3 24
pos: 8 32 0
size: 4 4 4
anim-cycle: SEQ
anim-wait: 2
flags: SPECIAL
movement: CW
}
actor{
name: X-1
bmp: objectes.gif
bmp-rect: 167 22 18 23
bmp-offset: -7 27
pos: 16 24 4
size: 4 4 6
anim-cycle: SEQ
anim-wait: 2
flags: SPECIAL
movement: CW
}
actor{
name: X-2
bmp: objectes.gif
bmp-rect: 165 45 21 22
bmp-offset: -2 26
pos: 24 14 4
size: 4 4 5
anim-cycle: SEQ
anim-wait: 2
flags: SPECIAL
movement: CW
}
actor{
name: X-3
bmp: objectes.gif
bmp-rect: 145 41 20 25
bmp-offset: -5 27
pos: 34 13 16
size: 6 4 6
anim-cycle: SEQ
anim-wait: 2
flags: SPECIAL
movement: CW
}

38
data/rooms/65.txt Normal file
View File

@@ -0,0 +1,38 @@
width: 3
height: 0
door-height-xp: 0
door-height-xn: 0
door-height-yp: 0
color: WHITE
floor-texture: 0
wall-texture: 2
door-texture: 0
under-door-texture: 0
exit-xp: 66
exit-xn: 64
exit-yp: 70
editor-done: 1
actor{
name: CUADRO-01
bmp: altres.gif
bmp-rect: 102 75 18 32
bmp-offset: 0 39
pos: 18 23 6
size: 1 1 9
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: CUADRO-02
bmp: altres.gif
bmp-rect: 66 75 18 32
bmp-offset: 0 39
pos: 42 23 6
size: 1 1 9
orient: YP
flags: ORIENTABLE
movement: CW
}

152
data/rooms/66.txt Normal file
View File

@@ -0,0 +1,152 @@
width: 3
height: 2
door-height-xn: 0
door-height-yn: 0
color: GREEN
floor-texture: 0
wall-texture: 2
door-texture: 0
under-door-texture: 0
exit-xn: 65
exit-yn: 67
editor-done: 1
actor{
name: ARMARI-A1
bmp: caixes.gif
bmp-rect: 64 32 24 32
bmp-offset: -8 36
pos: 16 8 0
size: 8 4 8
movement: CW
}
actor{
name: ARMARI-A2
bmp: caixes.gif
bmp-rect: 96 32 24 32
bmp-offset: -8 36
pos: 16 8 8
size: 8 4 8
movement: CW
}
actor{
name: ARMARI-B1
bmp: caixes.gif
bmp-rect: 64 32 24 32
bmp-offset: -8 36
pos: 4 8 0
size: 8 4 8
movement: CW
}
actor{
name: ARMARI-B2
bmp: caixes.gif
bmp-rect: 96 32 24 32
bmp-offset: -8 36
pos: 4 8 8
size: 8 4 8
movement: CW
}
actor{
name: BOX-01
bmp: caixes.gif
bmp-rect: 32 0 32 32
bmp-offset: 0 32
pos: 14 24 0
size: 8 8 8
flags: PICKABLE PUSHABLE GRAVITY
movement: CW
}
actor{
name: BOX-02
bmp: caixes.gif
bmp-rect: 0 0 32 32
bmp-offset: 0 32
pos: 13 16 0
size: 8 8 8
flags: PICKABLE PUSHABLE GRAVITY
movement: CW
}
actor{
name: KALLAX-01
bmp: altres.gif
bmp-rect: 48 48 24 27
bmp-offset: 0 31
pos: 0 12 0
size: 4 8 8
movement: CW
}
actor{
name: KALLAX-02
bmp: altres.gif
bmp-rect: 72 48 24 27
bmp-offset: 0 31
pos: 0 12 8
size: 4 12 8
movement: CW
}
actor{
name: LLIT
bmp: altres.gif
bmp-rect: 48 0 57 47
bmp-offset: 11 32
pos: 40 8 0
size: 16 16 8
movement: CW
}
actor{
name: MESITA
bmp: caixes.gif
bmp-rect: 0 64 32 32
bmp-offset: 0 32
pos: 56 8 0
size: 8 8 4
movement: CW
}
actor{
name: PILOTA
bmp: altres.gif
bmp-rect: 0 108 21 21
bmp-offset: -5 24
pos: 28 32 0
size: 8 8 2
orient: XN
flags: PUSHABLE INERTIA
movement: CCW
}
actor{
name: ROOMBA-01
bmp: caixes.gif
bmp-rect: 160 0 32 32
bmp-offset: 0 34
pos: 8 32 0
size: 8 8 2
orient: YP
flags: REACTIVE MOVING DEADLY
react-mask: XP XN YP YN ZP ZN
movement: CW
}
actor{
name: ROOMBA-02
bmp: caixes.gif
bmp-rect: 160 0 32 32
bmp-offset: 0 34
pos: 56 24 0
size: 8 8 2
orient: YP
flags: REACTIVE MOVING DEADLY
react-mask: XP XN YP YN ZP ZN
movement: CCW
}

144
data/rooms/67.txt Normal file
View File

@@ -0,0 +1,144 @@
width: 2
height: 2
door-height-xn: 0
door-height-yp: 0
color: CYAN
floor-texture: 4
wall-texture: 0
door-texture: 0
under-door-texture: 0
exit-xn: 68
exit-yp: 66
editor-done: 1
actor{
name: ABAD
bmp: abad.gif
bmp-rect: 0 0 20 33
bmp-offset: -6 38
pos: 40 48 0
size: 8 8 8
orient: XP
anim-wait: 1
flags: REACTIVE MOVING ANIMATED ORIENTABLE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: X
}
actor{
name: ARMARI-01
bmp: caixes.gif
bmp-rect: 64 32 32 32
bmp-offset: 8 36
pos: 8 40 0
size: 8 4 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: ARMARI-02
bmp: caixes.gif
bmp-rect: 96 32 32 32
bmp-offset: 8 36
pos: 8 40 8
size: 8 4 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: BATMAN
bmp: batman.gif
bmp-rect: 0 0 21 32
bmp-offset: -5 35
pos: 8 8 0
size: 8 8 8
orient: YP
anim-wait: 1
flags: REACTIVE MOVING ANIMATED ORIENTABLE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: Y
}
actor{
name: BOX-01
bmp: test.gif
bmp-rect: 32 0 32 32
bmp-offset: 0 32
pos: 24 32 0
size: 8 8 8
flags: PICKABLE PUSHABLE GRAVITY
movement: CW
}
actor{
name: BOX-02
bmp: test.gif
bmp-rect: 32 0 32 32
bmp-offset: 0 32
pos: 19 40 0
size: 8 8 8
flags: PICKABLE PUSHABLE GRAVITY
movement: CW
}
actor{
name: ESPILL
bmp: altres.gif
bmp-rect: 0 75 20 33
bmp-offset: -10 38
pos: 24 7 8
size: 1 1 9
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: KALLAX-01
bmp: altres.gif
bmp-rect: 0 48 24 27
bmp-offset: -8 31
pos: 13 8 8
size: 8 4 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: KALLAX-02
bmp: altres.gif
bmp-rect: 0 48 24 27
bmp-offset: -8 31
pos: 48 8 8
size: 8 4 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: PILA
bmp: caixes.gif
bmp-rect: 160 96 32 32
bmp-offset: 0 32
pos: 24 8 0
size: 8 8 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: WC
bmp: altres.gif
bmp-rect: 105 0 21 33
bmp-offset: -4 36
pos: 40 8 0
size: 8 8 6
movement: CW
}

109
data/rooms/68.txt Normal file
View File

@@ -0,0 +1,109 @@
width: 3
height: 1
door-height-xp: 0
door-height-xn: 0
color: WHITE
floor-texture: 1
wall-texture: 6
door-texture: 6
under-door-texture: 6
exit-xp: 67
exit-xn: 69
editor-done: 1
actor{
name: BOX-00
bmp: caixes.gif
bmp-rect: 32 0 32 32
bmp-offset: 0 32
pos: 56 16 0
size: 8 8 8
flags: PICKABLE PUSHABLE GRAVITY
movement: CW
}
actor{
name: BOX-01
bmp: caixes.gif
bmp-rect: 32 0 32 32
bmp-offset: 0 32
pos: 0 16 0
size: 8 8 8
flags: PICKABLE PUSHABLE GRAVITY
movement: CW
}
actor{
name: KALLAX-01
bmp: altres.gif
bmp-rect: 0 48 24 27
bmp-offset: -8 31
pos: 8 16 8
size: 8 4 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: KALLAX-02
bmp: altres.gif
bmp-rect: 0 48 24 27
bmp-offset: -8 31
pos: 24 16 8
size: 8 4 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: KALLAX-03
bmp: altres.gif
bmp-rect: 0 48 24 27
bmp-offset: -8 31
pos: 40 16 8
size: 8 4 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: ROOMBA-01
bmp: caixes.gif
bmp-rect: 160 0 32 32
bmp-offset: 0 34
pos: 8 16 0
size: 8 8 2
orient: YP
flags: REACTIVE MOVING DEADLY
react-mask: XP XN YP YN ZP ZN
movement: Y
}
actor{
name: ROOMBA-02
bmp: caixes.gif
bmp-rect: 160 0 32 32
bmp-offset: 0 34
pos: 24 24 0
size: 8 8 2
orient: YP
flags: REACTIVE MOVING DEADLY
react-mask: XP XN YP YN ZP ZN
movement: Y
}
actor{
name: ROOMBA-03
bmp: caixes.gif
bmp-rect: 160 0 32 32
bmp-offset: 0 34
pos: 40 32 0
size: 8 8 2
orient: YP
flags: REACTIVE MOVING DEADLY
react-mask: XP XN YP YN ZP ZN
movement: Y
}

236
data/rooms/69.txt Normal file
View File

@@ -0,0 +1,236 @@
width: 2
height: 2
door-height-xp: 0
color: YELLOW
floor-texture: 4
wall-texture: 0
door-texture: 0
under-door-texture: 0
exit-xp: 68
editor-done: 1
actor{
name: ABAD
bmp: abad.gif
bmp-rect: 0 0 20 33
bmp-offset: -6 38
pos: 32 48 2
size: 8 8 8
orient: YP
anim-wait: 1
flags: PUSHABLE REACTIVE ORIENTABLE DEADLY GRAVITY
react-mask: XP XN YP YN ZP ZN
movement: CCW
}
actor{
name: BATMAN
bmp: batman.gif
bmp-rect: 0 0 21 32
bmp-offset: -5 38
pos: 16 48 2
size: 8 8 8
orient: XP
anim-wait: 1
flags: PUSHABLE REACTIVE ORIENTABLE DEADLY GRAVITY
react-mask: XP XN YP YN ZP ZN
movement: CCW
}
actor{
name: FINESTRA-01
bmp: altres.gif
bmp-rect: 0 75 20 33
bmp-offset: 0 39
pos: 7 19 6
size: 1 1 9
movement: CW
}
actor{
name: FINESTRA-02
bmp: altres.gif
bmp-rect: 0 75 20 33
bmp-offset: 0 39
pos: 7 26 6
size: 1 1 9
movement: CW
}
actor{
name: KALLAX-01
bmp: altres.gif
bmp-rect: 0 48 24 27
bmp-offset: 0 31
pos: 8 8 0
size: 4 8 8
movement: CW
}
actor{
name: KALLAX-02
bmp: altres.gif
bmp-rect: 0 48 24 27
bmp-offset: 0 31
pos: 8 8 8
size: 4 8 8
movement: CW
}
actor{
name: KALLAX-03
bmp: altres.gif
bmp-rect: 0 48 24 27
bmp-offset: 0 31
pos: 8 36 0
size: 4 8 8
movement: CW
}
actor{
name: KALLAX-04
bmp: altres.gif
bmp-rect: 0 48 24 27
bmp-offset: 0 31
pos: 8 36 8
size: 4 8 8
movement: CW
}
actor{
name: PILA-01
bmp: caixes.gif
bmp-rect: 160 96 32 32
bmp-offset: 0 32
pos: 24 16 0
size: 8 8 8
orient: YP
movement: CW
}
actor{
name: PILA-02
bmp: caixes.gif
bmp-rect: 160 96 32 32
bmp-offset: 0 32
pos: 24 24 0
size: 8 8 8
orient: YP
movement: CW
}
actor{
name: PILA-03
bmp: caixes.gif
bmp-rect: 160 96 32 32
bmp-offset: 0 32
pos: 24 32 0
size: 8 8 8
orient: YP
movement: CW
}
actor{
name: PILA-04
bmp: caixes.gif
bmp-rect: 160 96 32 32
bmp-offset: 0 32
pos: 24 40 0
size: 8 8 8
orient: YP
movement: CW
}
actor{
name: PILA-11
bmp: caixes.gif
bmp-rect: 160 96 32 32
bmp-offset: 0 32
pos: 40 16 0
size: 8 8 8
orient: YP
movement: CW
}
actor{
name: PILA-12
bmp: caixes.gif
bmp-rect: 160 96 32 32
bmp-offset: 0 32
pos: 40 24 0
size: 8 8 8
movement: CW
}
actor{
name: PILA-13
bmp: caixes.gif
bmp-rect: 160 96 32 32
bmp-offset: 0 32
pos: 40 32 0
size: 8 8 8
orient: YP
movement: CW
}
actor{
name: PILA-14
bmp: caixes.gif
bmp-rect: 160 96 32 32
bmp-offset: 0 32
pos: 40 40 0
size: 8 8 8
orient: YP
movement: CW
}
actor{
name: ROOMBA-01
bmp: caixes.gif
bmp-rect: 160 0 32 32
bmp-offset: 0 34
pos: 16 48 0
size: 8 8 2
orient: XP
flags: REACTIVE MOVING DEADLY
react-mask: XP XN YP YN ZP ZN
movement: CCW
}
actor{
name: ROOMBA-02
bmp: caixes.gif
bmp-rect: 160 0 32 32
bmp-offset: 0 34
pos: 32 48 0
size: 8 8 2
orient: YN
flags: REACTIVE MOVING DEADLY
react-mask: XP XN YP YN ZP ZN
movement: Y
}
actor{
name: WC
bmp: altres.gif
bmp-rect: 105 0 21 33
bmp-offset: -4 36
pos: 8 48 0
size: 8 8 8
orient: YP
flags: ORIENTABLE
movement: CCW
}
actor{
name: Y-2
bmp: objectes.gif
bmp-rect: 165 45 21 22
bmp-offset: -2 26
pos: 8 22 0
size: 4 4 5
anim-cycle: SEQ
anim-wait: 2
flags: SPECIAL
movement: CW
}

143
data/rooms/70.txt Normal file
View File

@@ -0,0 +1,143 @@
width: 2
height: 2
door-height-xp: 0
door-height-yn: 0
color: PURPLE
floor-texture: 3
wall-texture: 2
door-texture: 0
under-door-texture: 2
exit-xp: 71
exit-yn: 65
editor-done: 1
actor{
name: BOX-01
bmp: caixes.gif
bmp-rect: 32 0 32 32
bmp-offset: 0 32
pos: 16 16 0
size: 8 8 8
flags: PICKABLE PUSHABLE GRAVITY
movement: CW
}
actor{
name: BOX-02
bmp: caixes.gif
bmp-rect: 64 0 32 32
bmp-offset: 0 32
pos: 28 16 0
size: 8 8 8
flags: PICKABLE PUSHABLE GRAVITY
movement: CW
}
actor{
name: BOX-03
bmp: caixes.gif
bmp-rect: 0 0 32 32
bmp-offset: 0 32
pos: 40 16 0
size: 8 8 8
flags: PICKABLE PUSHABLE GRAVITY
movement: CW
}
actor{
name: BOX-04
bmp: caixes.gif
bmp-rect: 0 0 32 32
bmp-offset: 0 32
pos: 16 24 0
size: 8 8 8
orient: YP
flags: PICKABLE PUSHABLE ORIENTABLE GRAVITY
movement: CCW
}
actor{
name: BOX-05
bmp: caixes.gif
bmp-rect: 0 0 32 32
bmp-offset: 0 32
pos: 16 32 0
size: 8 8 8
flags: PICKABLE PUSHABLE GRAVITY
movement: CW
}
actor{
name: BOX-06
bmp: caixes.gif
bmp-rect: 32 0 32 32
bmp-offset: 0 32
pos: 16 40 0
size: 8 8 8
flags: PICKABLE PUSHABLE GRAVITY
movement: CW
}
actor{
name: BOX-07
bmp: caixes.gif
bmp-rect: 32 0 32 32
bmp-offset: 0 32
pos: 40 40 0
size: 8 8 8
orient: YP
flags: PICKABLE PUSHABLE GRAVITY
movement: CW
}
actor{
name: ROOMBA-01
bmp: caixes.gif
bmp-rect: 160 0 32 32
bmp-offset: 0 34
pos: 40 48 0
size: 8 8 2
orient: XP
flags: REACTIVE MOVING DEADLY
react-mask: XP XN YP YN ZP ZN
movement: CW
}
actor{
name: ROOMBA-02
bmp: caixes.gif
bmp-rect: 160 0 32 32
bmp-offset: 0 34
pos: 48 16 0
size: 8 8 2
orient: YN
flags: REACTIVE MOVING DEADLY
react-mask: XP XN YP YN ZP ZN
movement: CW
}
actor{
name: ROOMBA-03
bmp: caixes.gif
bmp-rect: 160 0 32 32
bmp-offset: 0 34
pos: 16 8 0
size: 8 8 2
orient: XN
flags: REACTIVE MOVING DEADLY
react-mask: XP XN YP YN ZP ZN
movement: CW
}
actor{
name: ROOMBA-04
bmp: caixes.gif
bmp-rect: 160 0 32 32
bmp-offset: 0 34
pos: 8 40 0
size: 8 8 2
orient: YP
flags: REACTIVE MOVING DEADLY
react-mask: XP XN YP YN ZP ZN
movement: CW
}

147
data/rooms/71.txt Normal file
View File

@@ -0,0 +1,147 @@
width: 2
height: 2
door-height-xn: 0
door-height-yp: 0
color: YELLOW
floor-texture: 3
wall-texture: 0
door-texture: 0
under-door-texture: 2
exit-xn: 70
exit-yp: 72
editor-done: 1
actor{
name: GAT-BATMAN
bmp: test.gif
bmp-rect: 0 32 20 32
bmp-offset: -4 32
pos: 40 16 0
size: 8 8 8
orient: XP
anim-wait: 1
flags: REACTIVE MOVING ANIMATED ORIENTABLE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: HUNT
}
actor{
name: MESITA
bmp: caixes.gif
bmp-rect: 0 64 32 32
bmp-offset: 0 32
pos: 28 28 0
size: 8 8 4
flags: PUSHABLE
movement: CW
}
actor{
name: PILAR-01
bmp: caixes.gif
bmp-rect: 96 160 32 32
bmp-offset: 0 32
pos: 8 8 0
size: 8 8 8
movement: CW
}
actor{
name: PILAR-02
bmp: caixes.gif
bmp-rect: 96 160 32 32
bmp-offset: 0 32
pos: 8 8 8
size: 8 8 8
movement: CW
}
actor{
name: PILAR-03
bmp: caixes.gif
bmp-rect: 96 128 32 32
bmp-offset: 0 32
pos: 8 8 16
size: 8 8 4
movement: CW
}
actor{
name: PILAR-11
bmp: caixes.gif
bmp-rect: 96 160 32 32
bmp-offset: 0 32
pos: 48 8 0
size: 8 8 8
movement: CW
}
actor{
name: PILAR-12
bmp: caixes.gif
bmp-rect: 96 160 32 32
bmp-offset: 0 32
pos: 48 8 8
size: 8 8 8
movement: CW
}
actor{
name: PILAR-13
bmp: caixes.gif
bmp-rect: 96 128 32 32
bmp-offset: 0 32
pos: 48 8 16
size: 8 8 4
movement: CW
}
actor{
name: PILAR-21
bmp: caixes.gif
bmp-rect: 96 160 32 32
bmp-offset: 0 32
pos: 48 48 0
size: 8 8 8
movement: CW
}
actor{
name: PILAR-22
bmp: caixes.gif
bmp-rect: 96 160 32 32
bmp-offset: 0 32
pos: 48 48 8
size: 8 8 8
movement: CW
}
actor{
name: PILAR-31
bmp: caixes.gif
bmp-rect: 96 160 32 32
bmp-offset: 0 32
pos: 8 48 0
size: 8 8 8
movement: CW
}
actor{
name: PILAR-32
bmp: caixes.gif
bmp-rect: 96 160 32 32
bmp-offset: 0 32
pos: 8 48 8
size: 8 8 8
movement: CW
}
actor{
name: PILAR-33
bmp: caixes.gif
bmp-rect: 96 128 32 32
bmp-offset: 0 32
pos: 8 48 16
size: 8 8 4
movement: CW
}

View File

@@ -2,109 +2,111 @@ width: 0
height: 3 height: 3
door-height-yp: 0 door-height-yp: 0
door-height-yn: 5 door-height-yn: 5
color: WHITE color: CYAN
floor-texture: 6 floor-texture: 0
wall-texture: 0 wall-texture: 0
door-texture: 0 door-texture: 0
under-door-texture: 0 under-door-texture: 0
exit-yn: 9 exit-yp: 73
exit-yn: 71
editor-done: 1
actor{ actor{
name: BOX01 name: ESCALO-001
bmp: caixes.gif bmp: caixes.gif
bmp-rect: 64 64 32 32 bmp-rect: 96 160 32 32
bmp-offset: 0 32 bmp-offset: 0 32
pos: 24 0 12 pos: 24 0 8
size: 8 8 8 size: 8 8 8
movement: CW movement: CW
} }
actor{ actor{
name: BOX name: ESCALO-011
bmp: caixes.gif bmp: caixes.gif
bmp-rect: 64 64 32 32 bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 32 0 12
size: 8 8 8
movement: CW
}
actor{
name: BOX08
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32 bmp-offset: 0 32
pos: 24 8 8 pos: 24 8 8
size: 8 8 8 size: 8 8 4
movement: CW movement: CW
} }
actor{ actor{
name: BOX01 name: ESCALO-020
bmp: caixes.gif bmp: caixes.gif
bmp-rect: 64 64 32 32 bmp-rect: 96 160 32 32
bmp-offset: 0 32 bmp-offset: 0 32
pos: 32 8 8 pos: 24 16 0
size: 8 8 8 size: 8 8 8
movement: CW movement: CW
} }
actor{ actor{
name: BOX07 name: ESCALO-030
bmp: caixes.gif bmp: caixes.gif
bmp-rect: 64 64 32 32 bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 24 16 4
size: 8 8 8
movement: CW
}
actor{
name: BOX02
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32
pos: 32 16 4
size: 8 8 8
movement: CW
}
actor{
name: BOX06
bmp: caixes.gif
bmp-rect: 64 64 32 32
bmp-offset: 0 32 bmp-offset: 0 32
pos: 24 24 0 pos: 24 24 0
size: 8 8 4
movement: CW
}
actor{
name: ESCALO-100
bmp: caixes.gif
bmp-rect: 96 160 32 32
bmp-offset: 0 32
pos: 32 0 0
size: 8 8 8 size: 8 8 8
movement: CW movement: CW
} }
actor{ actor{
name: BOX03 name: ESCALO-101
bmp: caixes.gif bmp: caixes.gif
bmp-rect: 64 64 32 32 bmp-rect: 96 160 32 32
bmp-offset: 0 32
pos: 32 0 8
size: 8 8 8
movement: CW
}
actor{
name: ESCALO-110
bmp: caixes.gif
bmp-rect: 96 160 32 32
bmp-offset: 0 32
pos: 32 8 0
size: 8 8 8
movement: CW
}
actor{
name: ESCALO-111
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 32 8 8
size: 8 8 4
movement: CW
}
actor{
name: ESCALO-120
bmp: caixes.gif
bmp-rect: 96 160 32 32
bmp-offset: 0 32
pos: 32 16 0
size: 8 8 8
movement: CW
}
actor{
name: ESCALO-130
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32 bmp-offset: 0 32
pos: 32 24 0 pos: 32 24 0
size: 8 8 8 size: 8 8 4
movement: CW
}
actor{
name: BOX05
bmp: caixes.gif
bmp-rect: 32 32 32 24
bmp-offset: 0 24
pos: 24 32 0
size: 8 10 4
movement: CW
}
actor{
name: BOX04
bmp: caixes.gif
bmp-rect: 32 32 32 24
bmp-offset: 0 24
pos: 32 32 0
size: 8 10 4
movement: CW movement: CW
} }

187
data/rooms/73.txt Normal file
View File

@@ -0,0 +1,187 @@
width: 2
height: 2
door-height-xp: 0
door-height-xn: 0
door-height-yp: 0
door-height-yn: 0
color: PURPLE
floor-texture: 3
wall-texture: 9
door-texture: 3
under-door-texture: 9
exit-xp: 76
exit-xn: 74
exit-yp: 80
exit-yn: 72
editor-done: 1
actor{
name: BUBBLE-00
bmp: altres.gif
bmp-rect: 20 75 28 26
bmp-offset: -2 28
pos: 32 24 28
size: 8 8 8
orient: ZP
flags: PUSHABLE REACTIVE MOVING DEADLY INERTIA
react-mask: XP XN YP YN ZP ZN
movement: Z
}
actor{
name: BUBBLE-01
bmp: altres.gif
bmp-rect: 20 75 28 26
bmp-offset: -2 28
pos: 24 32 9
size: 8 8 8
orient: ZN
flags: PUSHABLE REACTIVE MOVING DEADLY INERTIA
react-mask: XP XN YP YN ZP ZN
movement: Z
}
actor{
name: BUBBLE-02
bmp: altres.gif
bmp-rect: 20 75 28 26
bmp-offset: -2 28
pos: 32 32 21
size: 8 8 8
orient: ZN
flags: PUSHABLE REACTIVE MOVING DEADLY INERTIA
react-mask: XP XN YP YN ZP ZN
movement: Z
}
actor{
name: BUBBLE-03
bmp: altres.gif
bmp-rect: 20 75 28 26
bmp-offset: -2 28
pos: 24 24 15
size: 8 8 8
orient: ZP
flags: PUSHABLE REACTIVE MOVING DEADLY INERTIA
react-mask: XP XN YP YN ZP ZN
movement: Z
}
actor{
name: CADIRA-00
bmp: caixes.gif
bmp-rect: 64 96 20 32
bmp-offset: -7 38
pos: 18 8 0
size: 6 5 4
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: CADIRA-01
bmp: caixes.gif
bmp-rect: 64 96 20 32
bmp-offset: -7 38
pos: 8 19 0
size: 6 5 4
orient: YP
movement: CW
}
actor{
name: CADIRA-02
bmp: caixes.gif
bmp-rect: 64 96 20 32
bmp-offset: -7 38
pos: 8 41 0
size: 6 5 4
orient: YP
movement: CW
}
actor{
name: CADIRA-03
bmp: caixes.gif
bmp-rect: 64 96 20 32
bmp-offset: -7 38
pos: 8 49 0
size: 6 5 4
orient: YP
movement: CW
}
actor{
name: CADIRA-04
bmp: caixes.gif
bmp-rect: 64 96 20 32
bmp-offset: -7 38
pos: 49 8 0
size: 6 5 4
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: CADIRA-05
bmp: caixes.gif
bmp-rect: 64 96 20 32
bmp-offset: -7 38
pos: 41 8 0
size: 6 5 4
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: MESITA
bmp: caixes.gif
bmp-rect: 0 64 32 32
bmp-offset: 0 32
pos: 8 8 0
size: 8 8 4
movement: CW
}
actor{
name: TRANSPA-00
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 24 24 0
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-01
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 32 24 0
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-02
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 32 32 0
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-03
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 24 32 0
size: 8 8 6
movement: CW
}

190
data/rooms/74.txt Normal file
View File

@@ -0,0 +1,190 @@
width: 2
height: 3
door-height-xp: 0
door-height-yn: 0
color: WHITE
floor-texture: 4
wall-texture: 7
door-texture: 2
under-door-texture: 0
exit-xp: 73
exit-yn: 75
editor-done: 1
actor{
name: BANCADA-01
bmp: caixes.gif
bmp-rect: 96 96 32 32
bmp-offset: 0 32
pos: 8 0 0
size: 8 8 8
movement: CW
}
actor{
name: BANCADA-02
bmp: caixes.gif
bmp-rect: 96 96 32 32
bmp-offset: 0 32
pos: 8 16 0
size: 8 8 8
movement: CW
}
actor{
name: BANCADA-03
bmp: caixes.gif
bmp-rect: 96 96 32 32
bmp-offset: 0 32
pos: 8 32 0
size: 8 8 8
movement: CW
}
actor{
name: CADIRA-01
bmp: caixes.gif
bmp-rect: 64 96 20 32
bmp-offset: -8 40
pos: 8 51 0
size: 5 4 4
orient: YP
movement: CW
}
actor{
name: CADIRA-02
bmp: caixes.gif
bmp-rect: 64 96 20 32
bmp-offset: -8 40
pos: 8 59 0
size: 5 4 4
orient: YP
movement: CW
}
actor{
name: CADIRA-03
bmp: caixes.gif
bmp-rect: 64 96 20 32
bmp-offset: -8 40
pos: 31 44 0
size: 5 4 4
orient: YP
flags: PUSHABLE ORIENTABLE
movement: CW
}
actor{
name: FINESTRA-01
bmp: altres.gif
bmp-rect: 0 75 20 33
bmp-offset: 0 39
pos: 8 33 9
size: 1 1 9
movement: CW
}
actor{
name: FINESTRA-02
bmp: altres.gif
bmp-rect: 0 75 20 33
bmp-offset: 0 39
pos: 8 41 9
size: 1 1 9
movement: CW
}
actor{
name: FORN
bmp: caixes.gif
bmp-rect: 128 96 32 32
bmp-offset: 0 32
pos: 8 24 0
size: 8 8 8
movement: CW
}
actor{
name: NEVERA-01
bmp: caixes.gif
bmp-rect: 0 96 32 32
bmp-offset: 2 33
pos: 8 8 0
size: 8 8 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: NEVERA-02
bmp: caixes.gif
bmp-rect: 32 96 32 32
bmp-offset: 2 33
pos: 8 8 8
size: 8 8 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: PILA
bmp: caixes.gif
bmp-rect: 160 96 32 32
bmp-offset: 0 32
pos: 8 40 0
size: 8 8 8
movement: CW
}
actor{
name: ROOMBA-00
bmp: caixes.gif
bmp-rect: 160 0 32 32
bmp-offset: 0 34
pos: 48 0 0
size: 8 8 2
orient: XN
flags: REACTIVE MOVING DEADLY
react-mask: XP XN YP YN ZP ZN
movement: RAND
}
actor{
name: ROOMBA-01
bmp: caixes.gif
bmp-rect: 160 0 32 32
bmp-offset: 0 34
pos: 24 48 0
size: 8 8 2
orient: YP
flags: REACTIVE MOVING DEADLY
react-mask: XP XN YP YN ZP ZN
movement: RAND
}
actor{
name: TAULA-01
bmp: caixes.gif
bmp-rect: 160 32 32 32
bmp-offset: 0 32
pos: 28 32 0
size: 8 8 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: TAULA-02
bmp: caixes.gif
bmp-rect: 128 32 32 32
bmp-offset: 0 32
pos: 28 24 0
size: 8 8 8
orient: YP
flags: ORIENTABLE
movement: CW
}

318
data/rooms/75.txt Normal file
View File

@@ -0,0 +1,318 @@
width: 3
height: 2
door-height-yp: 0
color: YELLOW
floor-texture: 4
wall-texture: 3
door-texture: 1
under-door-texture: 0
exit-yp: 74
editor-done: 1
actor{
name: ABAD
bmp: abad.gif
bmp-rect: 0 0 20 33
bmp-offset: -6 38
pos: 40 32 0
size: 8 8 8
orient: XN
anim-wait: 1
flags: REACTIVE MOVING ANIMATED ORIENTABLE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: X
}
actor{
name: BATMAN
bmp: batman.gif
bmp-rect: 0 0 21 32
bmp-offset: -5 35
pos: 8 16 0
size: 8 8 8
orient: XP
anim-wait: 1
flags: REACTIVE MOVING ANIMATED ORIENTABLE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: X
}
actor{
name: FINESTRA-00
bmp: altres.gif
bmp-rect: 0 75 20 33
bmp-offset: 0 39
pos: -1 36 4
size: 1 1 9
movement: CW
}
actor{
name: FINESTRA-01
bmp: altres.gif
bmp-rect: 0 75 20 33
bmp-offset: 0 39
pos: -1 44 4
size: 1 1 9
movement: CW
}
actor{
name: FINESTRA-02
bmp: altres.gif
bmp-rect: 0 75 20 33
bmp-offset: 0 39
pos: 48 2 5
size: 1 1 9
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: FINESTRA-03
bmp: altres.gif
bmp-rect: 0 75 20 33
bmp-offset: 0 39
pos: 40 2 5
size: 1 1 9
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: ROOMBA
bmp: caixes.gif
bmp-rect: 160 0 32 32
bmp-offset: 0 34
pos: 56 24 0
size: 8 8 2
orient: YN
flags: REACTIVE MOVING DEADLY
react-mask: XP XN YP YN ZP ZN
movement: Y
}
actor{
name: TRANSPA-00
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 0 8 0
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-01
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 16 8 0
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-02
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 24 8 0
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-03
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 40 8 0
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-04
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 48 8 0
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-05
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 48 24 0
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-06
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 40 24 0
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-07
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 32 24 0
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-08
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 24 24 0
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-09
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 16 24 0
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-10
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 0 24 0
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-11
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 8 24 0
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-12
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 0 8 6
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-13
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 8 40 0
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-14
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 16 40 0
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-15
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 0 8 12
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-16
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 32 40 0
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-17
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 40 40 0
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-18
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 40 48 0
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-19
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 0 24 6
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-20
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 0 24 12
size: 8 8 6
movement: CW
}
actor{
name: Y-1
bmp: objectes.gif
bmp-rect: 167 22 18 23
bmp-offset: -7 27
pos: 0 16 0
size: 4 4 6
anim-cycle: SEQ
anim-wait: 2
flags: SPECIAL
movement: CW
}

159
data/rooms/76.txt Normal file
View File

@@ -0,0 +1,159 @@
width: 3
height: 1
door-height-xp: 5
door-height-xn: 5
door-height-yn: 0
color: GREEN
floor-texture: 0
wall-texture: 3
door-texture: 1
under-door-texture: 3
exit-xp: 77
exit-xn: 73
exit-yn: 79
editor-done: 1
actor{
name: ABAD
bmp: abad.gif
bmp-rect: 0 0 20 33
bmp-offset: -6 38
pos: 0 40 0
size: 8 8 8
orient: XP
anim-wait: 1
flags: REACTIVE MOVING ANIMATED ORIENTABLE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: X
}
actor{
name: BATMAN
bmp: batman.gif
bmp-rect: 0 0 21 32
bmp-offset: -5 35
pos: 56 40 0
size: 8 8 8
orient: XN
anim-wait: 1
flags: REACTIVE MOVING ANIMATED ORIENTABLE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: X
}
actor{
name: BOX-A-00
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 0 24 16
size: 8 8 4
movement: CW
}
actor{
name: BOX-A-01
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 8 28 16
size: 8 8 4
flags: PUSHABLE
movement: CW
}
actor{
name: BOX-A-02
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 16 28 16
size: 8 8 4
flags: PUSHABLE
movement: CW
}
actor{
name: BOX-A-03
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 24 28 16
size: 8 8 4
flags: PUSHABLE
movement: CW
}
actor{
name: BOX-A-04
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 32 28 16
size: 8 8 4
flags: DISAPPEAR
movement: CW
}
actor{
name: BOX-A-05
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 40 28 16
size: 8 8 4
flags: PUSHABLE
movement: CW
}
actor{
name: BOX-A-06
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 48 28 16
size: 8 8 4
flags: PUSHABLE
movement: CW
}
actor{
name: BOX-A-07
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 56 24 16
size: 8 8 4
movement: CW
}
actor{
name: BOX-A-08
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 0 32 16
size: 8 8 4
movement: CW
}
actor{
name: BOX-A-09
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 56 32 16
size: 8 8 4
movement: CW
}
actor{
name: PILOTA
bmp: altres.gif
bmp-rect: 0 108 21 21
bmp-offset: -6 26
pos: 40 40 0
size: 8 8 8
flags: PUSHABLE INERTIA
movement: CW
}

244
data/rooms/77.txt Normal file
View File

@@ -0,0 +1,244 @@
width: 2
height: 2
door-height-xn: 1
door-height-yn: 1
color: CYAN
floor-texture: 0
wall-texture: 2
door-texture: 0
under-door-texture: 0
exit-xn: 76
exit-yn: 78
exit-zn: 81
editor-done: 1
actor{
name: LIFT
bmp: altres.gif
bmp-rect: 160 56 32 24
bmp-offset: 0 24
pos: 24 48 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: LIFT13
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 8 32 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: LIFT14
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 8 40 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: LIFT16
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 8 24 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: LIFT17
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 8 16 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: LIFT18
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 8 8 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: LIFT19
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 16 8 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: LIFT20
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 24 8 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: LIFT21
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 32 8 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: LIFT22
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 40 8 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: LIFT23
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 48 8 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: LIFT28
bmp: caixes.gif
bmp-rect: 96 160 32 32
bmp-offset: 0 32
pos: 16 40 0
size: 8 8 8
orient: ZP
movement: Z
}
actor{
name: LIFT29
bmp: caixes.gif
bmp-rect: 96 160 32 32
bmp-offset: 0 32
pos: 16 32 0
size: 8 8 8
orient: ZP
movement: Z
}
actor{
name: LIFT30
bmp: caixes.gif
bmp-rect: 96 160 32 32
bmp-offset: 0 32
pos: 16 24 0
size: 8 8 8
orient: ZP
movement: Z
}
actor{
name: LIFT31
bmp: caixes.gif
bmp-rect: 96 160 32 32
bmp-offset: 0 32
pos: 16 16 0
size: 8 8 8
orient: ZP
movement: Z
}
actor{
name: LIFT32
bmp: caixes.gif
bmp-rect: 96 160 32 32
bmp-offset: 0 32
pos: 24 16 0
size: 8 8 8
orient: ZP
movement: Z
}
actor{
name: LIFT33
bmp: caixes.gif
bmp-rect: 96 160 32 32
bmp-offset: 0 32
pos: 32 16 0
size: 8 8 8
orient: ZP
movement: Z
}
actor{
name: LIFT34
bmp: caixes.gif
bmp-rect: 96 160 32 32
bmp-offset: 0 32
pos: 40 16 0
size: 8 8 8
orient: ZP
movement: Z
}
actor{
name: LIFT35
bmp: caixes.gif
bmp-rect: 96 160 32 32
bmp-offset: 0 32
pos: 48 16 0
size: 8 8 8
orient: ZP
movement: Z
}
actor{
name: PLATF
bmp: caixes.gif
bmp-rect: 96 160 32 32
bmp-offset: 0 32
pos: 16 48 0
size: 8 8 8
orient: ZP
movement: Z
}
actor{
name: PLATH
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 8 48 0
size: 8 8 4
orient: ZP
movement: Z
}

415
data/rooms/78.txt Normal file
View File

@@ -0,0 +1,415 @@
width: 2
height: 3
door-height-xn: 3
door-height-yp: 3
color: WHITE
floor-texture: 11
wall-texture: 2
door-texture: 0
under-door-texture: 0
exit-xn: 79
exit-yp: 77
editor-done: 1
actor{
name: BLOCK-00
bmp: caixes.gif
bmp-rect: 0 40 32 24
bmp-offset: 0 24
pos: 8 0 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: BLOCK-01
bmp: caixes.gif
bmp-rect: 0 40 32 24
bmp-offset: 0 24
pos: 8 56 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: BLOCK-02
bmp: caixes.gif
bmp-rect: 0 40 32 24
bmp-offset: 0 24
pos: 40 56 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: BLOCK-03
bmp: caixes.gif
bmp-rect: 0 40 32 24
bmp-offset: 0 24
pos: 24 0 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: CONV-XP-00
bmp: caixes.gif
bmp-rect: 0 128 32 32
bmp-offset: 0 32
pos: 8 56 4
size: 8 8 4
orient: XP
anim-cycle: MIN
flags: REACTIVE ANIMATED ORIENTABLE
react-mask: ZN
react-push: XP
}
actor{
name: CONV-XP-01
bmp: caixes.gif
bmp-rect: 0 128 32 32
bmp-offset: 0 32
pos: 16 56 4
size: 8 8 4
orient: XP
anim-cycle: MIN
flags: REACTIVE ANIMATED ORIENTABLE
react-mask: ZN
react-push: XP
}
actor{
name: CONV-XP-02
bmp: caixes.gif
bmp-rect: 0 128 32 32
bmp-offset: 0 32
pos: 24 56 4
size: 8 8 4
orient: XP
anim-cycle: MIN
flags: REACTIVE ANIMATED ORIENTABLE
react-mask: ZN
react-push: XP
}
actor{
name: CONV-XP-03
bmp: caixes.gif
bmp-rect: 0 128 32 32
bmp-offset: 0 32
pos: 32 56 4
size: 8 8 4
orient: XP
anim-cycle: MIN
flags: REACTIVE ANIMATED ORIENTABLE
react-mask: ZN
react-push: XP
}
actor{
name: CONV-XP-04
bmp: caixes.gif
bmp-rect: 0 128 32 32
bmp-offset: 0 32
pos: 40 56 4
size: 8 8 4
orient: XP
anim-cycle: MIN
flags: REACTIVE ANIMATED ORIENTABLE
react-mask: ZN
react-push: XP
}
actor{
name: CONV-XP-05
bmp: caixes.gif
bmp-rect: 0 128 32 32
bmp-offset: 0 32
pos: 16 0 4
size: 8 8 4
orient: XP
anim-cycle: MIN
flags: REACTIVE ANIMATED ORIENTABLE
react-mask: ZN
react-push: XP
}
actor{
name: CONV-XP-06
bmp: caixes.gif
bmp-rect: 0 128 32 32
bmp-offset: 0 32
pos: 24 0 4
size: 8 8 4
orient: XP
anim-cycle: MIN
flags: REACTIVE ANIMATED ORIENTABLE
react-mask: ZN
react-push: XP
}
actor{
name: CONV-YP-00
bmp: caixes.gif
bmp-rect: 0 128 32 32
bmp-offset: 0 32
pos: 8 0 4
size: 8 8 4
orient: YP
anim-cycle: MIN
flags: REACTIVE ANIMATED ORIENTABLE
react-mask: ZN
react-push: YP
}
actor{
name: CONV-YP-01
bmp: caixes.gif
bmp-rect: 0 128 32 32
bmp-offset: 0 32
pos: 8 8 4
size: 8 8 4
orient: YP
anim-cycle: MIN
flags: REACTIVE ANIMATED ORIENTABLE
react-mask: ZN
react-push: YP
}
actor{
name: CONV-YP-02
bmp: caixes.gif
bmp-rect: 0 128 32 32
bmp-offset: 0 32
pos: 8 16 4
size: 8 8 4
orient: YP
anim-cycle: MIN
flags: REACTIVE ANIMATED ORIENTABLE
react-mask: ZN
react-push: YP
}
actor{
name: CONV-YP-03
bmp: caixes.gif
bmp-rect: 0 128 32 32
bmp-offset: 0 32
pos: 8 24 4
size: 8 8 4
orient: YP
anim-cycle: MIN
flags: REACTIVE ANIMATED ORIENTABLE
react-mask: ZN
react-push: YP
}
actor{
name: CONV-YP-04
bmp: caixes.gif
bmp-rect: 0 128 32 32
bmp-offset: 0 32
pos: 8 32 4
size: 8 8 4
orient: YP
anim-cycle: MIN
flags: REACTIVE ANIMATED ORIENTABLE
react-mask: ZN
react-push: YP
}
actor{
name: CONV-YP-05
bmp: caixes.gif
bmp-rect: 0 128 32 32
bmp-offset: 0 32
pos: 8 40 4
size: 8 8 4
orient: YP
anim-cycle: MIN
flags: REACTIVE ANIMATED ORIENTABLE
react-mask: ZN
react-push: YP
}
actor{
name: CONV-YP-06
bmp: caixes.gif
bmp-rect: 0 128 32 32
bmp-offset: 0 32
pos: 8 48 4
size: 8 8 4
orient: YP
anim-cycle: MIN
flags: REACTIVE ANIMATED ORIENTABLE
react-mask: ZN
react-push: YP
}
actor{
name: OBRER
bmp: obrer.gif
bmp-rect: 0 0 24 32
bmp-offset: -4 37
pos: 48 0 4
size: 8 8 8
orient: YP
anim-wait: 1
flags: REACTIVE MOVING ANIMATED ORIENTABLE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: Y
}
actor{
name: PLAT-00
bmp: caixes.gif
bmp-rect: 160 136 32 24
bmp-offset: 0 24
pos: 48 56 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: PLAT-01
bmp: caixes.gif
bmp-rect: 160 136 32 24
bmp-offset: 0 24
pos: 48 48 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: PLAT-02
bmp: caixes.gif
bmp-rect: 160 136 32 24
bmp-offset: 0 24
pos: 40 48 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: PLAT-03
bmp: caixes.gif
bmp-rect: 160 136 32 24
bmp-offset: 0 24
pos: 48 40 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: PLAT-04
bmp: caixes.gif
bmp-rect: 160 136 32 24
bmp-offset: 0 24
pos: 48 32 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: PLAT-05
bmp: caixes.gif
bmp-rect: 160 136 32 24
bmp-offset: 0 24
pos: 40 32 0
size: 8 8 4
orient: ZP
flags: DISAPPEAR
movement: Z
}
actor{
name: PLAT-06
bmp: caixes.gif
bmp-rect: 160 136 32 24
bmp-offset: 0 24
pos: 48 24 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: PLAT-07
bmp: caixes.gif
bmp-rect: 160 136 32 24
bmp-offset: 0 24
pos: 48 16 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: PLAT-08
bmp: caixes.gif
bmp-rect: 160 136 32 24
bmp-offset: 0 24
pos: 40 16 0
size: 8 8 4
orient: ZP
flags: REACTIVE
react-mask: ZN
react-push: XP
movement: Z
}
actor{
name: PLAT-09
bmp: caixes.gif
bmp-rect: 160 136 32 24
bmp-offset: 0 24
pos: 48 8 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: PLAT-10
bmp: caixes.gif
bmp-rect: 160 136 32 24
bmp-offset: 0 24
pos: 48 0 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: PLAT-11
bmp: caixes.gif
bmp-rect: 160 136 32 24
bmp-offset: 0 24
pos: 40 0 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: Y-0
bmp: objectes.gif
bmp-rect: 162 0 28 22
bmp-offset: -3 24
pos: 40 0 4
size: 6 6 4
anim-cycle: SEQ
anim-wait: 2
flags: SPECIAL
movement: CW
}

13
data/rooms/79.txt Normal file
View File

@@ -0,0 +1,13 @@
width: 1
height: 3
door-height-xp: 0
door-height-yp: 0
door-height-yn: 3
color: YELLOW
floor-texture: 6
wall-texture: 3
door-texture: 1
under-door-texture: 3
exit-xp: 78
exit-yp: 76
editor-done: 1

32
data/rooms/80.txt Normal file
View File

@@ -0,0 +1,32 @@
width: 0
height: 3
door-height-xn: 1
door-height-yn: 0
color: CYAN
floor-texture: 0
wall-texture: 0
door-texture: 0
under-door-texture: 0
exit-xn: 82
exit-yn: 73
editor-done: 1
actor{
name: FINESTRA-00
bmp: altres.gif
bmp-rect: 48 76 18 32
bmp-offset: 0 39
pos: 23 8 4
size: 1 1 9
movement: CW
}
actor{
name: FINESTRA-01
bmp: altres.gif
bmp-rect: 84 76 18 32
bmp-offset: 0 39
pos: 23 48 4
size: 1 1 9
movement: CW
}

114
data/rooms/81.txt Normal file
View File

@@ -0,0 +1,114 @@
width: 2
height: 2
door-height-xn: 0
door-height-yn: 0
color: PURPLE
floor-texture: 1
wall-texture: 13
door-texture: 7
under-door-texture: 0
exit-zp: 77
editor-done: 1
actor{
name: BOX-A
bmp: caixes.gif
bmp-rect: 0 0 32 32
bmp-offset: 0 32
pos: 40 48 0
size: 8 8 8
orient: YP
flags: PUSHABLE ORIENTABLE
movement: CW
}
actor{
name: BOX-A-00
bmp: caixes.gif
bmp-rect: 0 0 32 32
bmp-offset: 0 32
pos: 8 20 0
size: 8 8 8
flags: PUSHABLE
movement: CW
}
actor{
name: BOX-A-01
bmp: caixes.gif
bmp-rect: 0 0 32 32
bmp-offset: 0 32
pos: 48 8 0
size: 8 8 8
movement: CW
}
actor{
name: BOX-A-02
bmp: caixes.gif
bmp-rect: 0 0 32 32
bmp-offset: 0 32
pos: 10 8 0
size: 8 8 8
orient: YP
flags: PUSHABLE ORIENTABLE
movement: CW
}
actor{
name: BOX-B-00
bmp: caixes.gif
bmp-rect: 32 0 32 32
bmp-offset: 0 32
pos: 40 10 0
size: 8 8 8
flags: PUSHABLE
movement: CW
}
actor{
name: BOX-B-01
bmp: caixes.gif
bmp-rect: 32 0 32 32
bmp-offset: 0 32
pos: 42 48 8
size: 8 8 8
orient: YP
flags: PUSHABLE ORIENTABLE
movement: CW
}
actor{
name: BOX-C-00
bmp: caixes.gif
bmp-rect: 64 0 32 32
bmp-offset: 0 32
pos: 13 32 0
size: 8 8 8
flags: PUSHABLE
movement: CW
}
actor{
name: BOX-C-01
bmp: caixes.gif
bmp-rect: 64 0 32 32
bmp-offset: 0 32
pos: 26 8 0
size: 8 8 8
orient: YP
flags: PUSHABLE ORIENTABLE
movement: CW
}
actor{
name: LIFT
bmp: altres.gif
bmp-rect: 160 56 32 24
bmp-offset: 0 24
pos: 24 48 0
size: 8 8 4
orient: ZP
flags: MOVING
movement: Z
}

View File

@@ -1,57 +1,89 @@
width: 3 width: 2
height: 3 height: 3
door-height-yp: 0 door-height-xp: 0
color: CYAN door-height-xn: 0
floor-texture: 0 color: YELLOW
wall-texture: 0 floor-texture: 10
door-texture: 0 wall-texture: 9
under-door-texture: 0 door-texture: 3
exit-yp: 10 under-door-texture: 9
exit-xp: 80
exit-xn: 83
editor-done: 1
actor{ actor{
name: KALLAX-A03 name: BOX-B
bmp: altres.gif bmp: caixes.gif
bmp-rect: 72 48 24 27 bmp-rect: 32 0 32 32
bmp-offset: 0 31 bmp-offset: 0 32
pos: 0 16 0 pos: 48 8 0
size: 4 8 8 size: 8 8 8
flags: PUSHABLE
movement: CW movement: CW
} }
actor{ actor{
name: KALLAX-A name: CADIRA
bmp: caixes.gif
bmp-rect: 64 96 20 32
bmp-offset: -7 38
pos: 16 32 0
size: 6 5 8
orient: YP
flags: PUSHABLE
movement: CW
}
actor{
name: CUADRO-00
bmp: altres.gif
bmp-rect: 66 75 18 32
bmp-offset: 0 39
pos: 7 8 6
size: 1 1 9
orient: YP
movement: CW
}
actor{
name: CUADRO-01
bmp: altres.gif
bmp-rect: 102 75 18 32
bmp-offset: 0 39
pos: 7 48 6
size: 1 1 9
orient: YP
movement: CW
}
actor{
name: KALLAX-00
bmp: altres.gif bmp: altres.gif
bmp-rect: 0 48 24 27 bmp-rect: 0 48 24 27
bmp-offset: 0 31 bmp-offset: -8 31
pos: 0 32 0 pos: 16 0 0
size: 4 8 8 size: 8 4 8
orient: YP
flags: ORIENTABLE
movement: CW movement: CW
} }
actor{ actor{
name: KALLAX-A02 name: KALLAX-01
bmp: altres.gif bmp: altres.gif
bmp-rect: 48 48 24 27 bmp-rect: 48 48 24 27
bmp-offset: 0 31 bmp-offset: -8 31
pos: 0 16 8 pos: 16 0 8
size: 4 8 8 size: 8 4 8
orient: YP
flags: ORIENTABLE
movement: CW movement: CW
} }
actor{ actor{
name: KALLAX-A01 name: KALLAX-02
bmp: altres.gif bmp: altres.gif
bmp-rect: 24 48 24 27 bmp-rect: 24 48 24 27
bmp-offset: 0 31
pos: 0 32 8
size: 4 8 8
movement: CW
}
actor{
name: KALLAX-A04
bmp: altres.gif
bmp-rect: 72 48 24 27
bmp-offset: -8 31 bmp-offset: -8 31
pos: 8 0 0 pos: 8 0 0
size: 8 4 8 size: 8 4 8
@@ -61,7 +93,55 @@ actor{
} }
actor{ actor{
name: KALLAX-A05 name: KALLAX-02
bmp: altres.gif
bmp-rect: 48 48 24 27
bmp-offset: -8 31
pos: 40 0 0
size: 8 4 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: KALLAX-03
bmp: altres.gif
bmp-rect: 24 48 24 27
bmp-offset: -8 31
pos: 48 0 0
size: 8 4 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: KALLAX-04
bmp: altres.gif
bmp-rect: 96 48 24 27
bmp-offset: -8 31
pos: 40 0 8
size: 8 4 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: KALLAX-05
bmp: altres.gif
bmp-rect: 72 48 24 27
bmp-offset: -8 31
pos: 48 0 8
size: 8 4 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: KALLAX-06
bmp: altres.gif bmp: altres.gif
bmp-rect: 96 48 24 27 bmp-rect: 96 48 24 27
bmp-offset: -8 31 bmp-offset: -8 31
@@ -73,138 +153,70 @@ actor{
} }
actor{ actor{
name: ARCADE name: MESITA
bmp: altres.gif
bmp-rect: 160 0 30 48
bmp-offset: 0 48
pos: 16 0 0
size: 8 8 16
movement: CW
}
actor{
name: KALLAX-A07
bmp: altres.gif
bmp-rect: 96 48 24 27
bmp-offset: -8 31
pos: 24 0 0
size: 8 4 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: KALLAX-A08
bmp: altres.gif
bmp-rect: 24 48 24 27
bmp-offset: -8 31
pos: 32 0 0
size: 8 4 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: KALLAX-A06
bmp: altres.gif
bmp-rect: 72 48 24 27
bmp-offset: -8 31
pos: 24 0 8
size: 8 4 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: KALLAX-A09
bmp: altres.gif
bmp-rect: 0 48 24 27
bmp-offset: -8 31
pos: 32 0 8
size: 8 4 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: TAULETA
bmp: caixes.gif bmp: caixes.gif
bmp-rect: 0 64 32 32 bmp-rect: 0 64 32 32
bmp-offset: 0 32 bmp-offset: 0 32
pos: 40 0 0 pos: 24 0 0
size: 8 8 4 size: 8 8 4
movement: CW movement: CW
} }
actor{ actor{
name: BOX05 name: NES
bmp: altres.gif bmp: caixes.gif
bmp-rect: 128 0 20 42 bmp-rect: 96 0 32 32
bmp-offset: -5 46 bmp-offset: -2 33
pos: 40 0 4 pos: 32 0 0
size: 8 8 8 size: 8 7 6
flags: PUSHABLE
movement: CW movement: CW
} }
actor{ actor{
name: BOX01 name: ROOMBA
bmp: caixes.gif
bmp-rect: 160 0 32 32
bmp-offset: 0 34
pos: 8 56 0
size: 8 8 2
orient: XN
flags: REACTIVE MOVING DEADLY
react-mask: XP XN YP YN ZP ZN
movement: CW
}
actor{
name: TAULA-A
bmp: caixes.gif bmp: caixes.gif
bmp-rect: 128 32 32 32 bmp-rect: 128 32 32 32
bmp-offset: 0 32 bmp-offset: 0 32
pos: 16 24 0
size: 8 8 8
movement: CW
}
actor{
name: BOX02
bmp: caixes.gif
bmp-rect: 160 32 32 32
bmp-offset: 0 32
pos: 24 24 0 pos: 24 24 0
size: 8 8 8 size: 8 8 8
react-push: XP
movement: CW
}
actor{
name: GAT
bmp: gat2.gif
bmp-rect: 0 0 24 28
bmp-offset: -5 30
pos: 40 32 0
size: 8 8 8
orient: XP
anim-wait: 1
flags: PUSHABLE MOVING ANIMATED ORIENTABLE INERTIA
movement: X
}
actor{
name: BOX03
bmp: caixes.gif
bmp-rect: 128 0 32 32
bmp-offset: 0 32
pos: 16 24 8
size: 8 8 2
flags: PUSHABLE
react-push: XP
movement: CW
}
actor{
name: BOX04
bmp: caixes.gif
bmp-rect: 32 64 32 32
bmp-offset: 0 32
pos: 24 24 8
size: 8 8 8
orient: YP orient: YP
flags: ORIENTABLE flags: ORIENTABLE
react-push: XP movement: CW
}
actor{
name: TAULA-B
bmp: caixes.gif
bmp-rect: 160 32 32 32
bmp-offset: 0 32
pos: 24 32 0
size: 8 8 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: TV
bmp: caixes.gif
bmp-rect: 32 64 32 32
bmp-offset: -4 34
pos: 24 0 4
size: 8 6 8
flags: PUSHABLE
movement: CW movement: CW
} }

280
data/rooms/83.txt Normal file
View File

@@ -0,0 +1,280 @@
width: 3
height: 3
door-height-xp: 0
door-height-yn: 0
color: GREEN
floor-texture: 10
wall-texture: 3
door-texture: 1
under-door-texture: 3
exit-xp: 82
exit-yn: 84
editor-done: 1
actor{
name: ABAD
bmp: abad.gif
bmp-rect: 0 0 20 33
bmp-offset: -6 38
pos: 32 16 0
size: 8 8 8
orient: XP
anim-wait: 1
flags: REACTIVE MOVING ANIMATED ORIENTABLE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: RAND
}
actor{
name: BATMAN
bmp: batman.gif
bmp-rect: 0 0 21 32
bmp-offset: -5 35
pos: 0 24 0
size: 8 8 8
orient: YP
anim-wait: 1
flags: REACTIVE MOVING ANIMATED ORIENTABLE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: RAND
}
actor{
name: BLOCMATA-00
bmp: altres.gif
bmp-rect: 0 133 32 27
bmp-offset: 0 27
pos: 48 48 0
size: 8 8 6
flags: REACTIVE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: CW
}
actor{
name: BLOCMATA-01
bmp: altres.gif
bmp-rect: 0 133 32 27
bmp-offset: 0 27
pos: 48 40 0
size: 8 8 6
flags: REACTIVE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: CW
}
actor{
name: BLOCMATA-02
bmp: altres.gif
bmp-rect: 0 133 32 27
bmp-offset: 0 27
pos: 40 48 0
size: 8 8 6
flags: REACTIVE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: CW
}
actor{
name: BLOCMATA-03
bmp: altres.gif
bmp-rect: 0 133 32 27
bmp-offset: 0 27
pos: 48 16 0
size: 8 8 6
flags: REACTIVE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: CW
}
actor{
name: BLOCMATA-04
bmp: altres.gif
bmp-rect: 0 133 32 27
bmp-offset: 0 27
pos: 48 8 0
size: 8 8 6
flags: REACTIVE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: CW
}
actor{
name: BLOCMATA-05
bmp: altres.gif
bmp-rect: 0 133 32 27
bmp-offset: 0 27
pos: 40 8 0
size: 8 8 6
flags: REACTIVE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: CW
}
actor{
name: BLOCMATA-06
bmp: altres.gif
bmp-rect: 0 133 32 27
bmp-offset: 0 27
pos: 16 8 0
size: 8 8 6
flags: REACTIVE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: CW
}
actor{
name: BLOCMATA-07
bmp: altres.gif
bmp-rect: 0 133 32 27
bmp-offset: 0 27
pos: 8 8 0
size: 8 8 6
flags: REACTIVE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: CW
}
actor{
name: BLOCMATA-08
bmp: altres.gif
bmp-rect: 0 133 32 27
bmp-offset: 0 27
pos: 8 16 0
size: 8 8 6
flags: REACTIVE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: CW
}
actor{
name: BLOCMATA-09
bmp: altres.gif
bmp-rect: 0 133 32 27
bmp-offset: 0 27
pos: 8 40 0
size: 8 8 6
flags: REACTIVE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: CW
}
actor{
name: BLOCMATA-10
bmp: altres.gif
bmp-rect: 0 133 32 27
bmp-offset: 0 27
pos: 8 48 0
size: 8 8 6
flags: REACTIVE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: CW
}
actor{
name: BLOCMATA-11
bmp: altres.gif
bmp-rect: 0 133 32 27
bmp-offset: 0 27
pos: 16 48 0
size: 8 8 6
flags: REACTIVE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: CW
}
actor{
name: BLOCMATA-12
bmp: altres.gif
bmp-rect: 0 133 32 27
bmp-offset: 0 27
pos: 24 24 0
size: 8 8 6
flags: REACTIVE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: CW
}
actor{
name: BLOCMATA-13
bmp: altres.gif
bmp-rect: 0 133 32 27
bmp-offset: 0 27
pos: 32 24 0
size: 8 8 6
flags: REACTIVE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: CW
}
actor{
name: BLOCMATA-14
bmp: altres.gif
bmp-rect: 0 133 32 27
bmp-offset: 0 27
pos: 32 32 0
size: 8 8 6
flags: REACTIVE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: CW
}
actor{
name: BLOCMATA-15
bmp: altres.gif
bmp-rect: 0 133 32 27
bmp-offset: 0 27
pos: 24 32 0
size: 8 8 6
flags: REACTIVE DEADLY
react-mask: XP XN YP YN ZP ZN
movement: CW
}
actor{
name: BUBBLE-00
bmp: altres.gif
bmp-rect: 20 75 28 26
bmp-offset: -2 28
pos: 8 8 6
size: 8 8 8
orient: ZP
flags: PUSHABLE MOVING INERTIA
movement: Z
}
actor{
name: BUBBLE-01
bmp: altres.gif
bmp-rect: 20 75 28 26
bmp-offset: -2 28
pos: 8 48 31
size: 8 8 8
orient: ZP
flags: PUSHABLE MOVING INERTIA
movement: Z
}
actor{
name: BUBBLE-02
bmp: altres.gif
bmp-rect: 20 75 28 26
bmp-offset: -2 28
pos: 48 48 23
size: 8 8 8
orient: ZP
flags: PUSHABLE MOVING INERTIA
movement: Z
}
actor{
name: BUBBLE-03
bmp: altres.gif
bmp-rect: 20 75 28 26
bmp-offset: -2 28
pos: 48 8 15
size: 8 8 8
orient: ZP
flags: PUSHABLE MOVING INERTIA
movement: Z
}

36
data/rooms/84.txt Normal file
View File

@@ -0,0 +1,36 @@
width: 0
height: 3
door-height-xn: 0
door-height-yp: 0
door-height-yn: 0
color: WHITE
floor-texture: 4
wall-texture: 2
door-texture: 0
under-door-texture: 0
exit-xn: 86
exit-yp: 83
exit-yn: 85
editor-done: 1
actor{
name: CUADRO-00
bmp: altres.gif
bmp-rect: 66 75 18 32
bmp-offset: 0 39
pos: 23 8 6
size: 1 1 9
orient: YP
movement: CW
}
actor{
name: CUADRO-01
bmp: altres.gif
bmp-rect: 102 75 18 32
bmp-offset: 0 39
pos: 23 48 6
size: 1 1 9
orient: YP
movement: CW
}

270
data/rooms/85.txt Normal file
View File

@@ -0,0 +1,270 @@
width: 3
height: 3
door-height-yp: 1
color: CYAN
floor-texture: 11
wall-texture: 0
door-texture: 0
under-door-texture: 0
exit-yp: 84
editor-done: 1
actor{
name: PLATF-02
bmp: caixes.gif
bmp-rect: 96 160 32 32
bmp-offset: 0 32
pos: 0 8 16
size: 8 8 8
orient: ZP
movement: Z
}
actor{
name: PLATF-04
bmp: caixes.gif
bmp-rect: 96 160 32 32
bmp-offset: 0 32
pos: 0 8 0
size: 8 8 8
orient: ZP
movement: Z
}
actor{
name: PLATH-00
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 0 16 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: PLATH-00
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 0 56 16
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: PLATH-00
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 32 56 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: PLATH-01
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 24 56 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: PLATH-02
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 0 24 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: PLATH-03
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 0 32 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: PLATH-04
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 0 40 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: PLATH-05
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 0 48 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: PLATH-06
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 0 56 0
size: 8 8 4
orient: ZP
movement: Z
}
actor{
name: PLATH-07
bmp: caixes.gif
bmp-rect: 160 128 32 32
bmp-offset: 0 32
pos: 0 32 16
size: 8 8 4
orient: ZP
flags: DISAPPEAR
movement: Z
}
actor{
name: ROOMBA
bmp: caixes.gif
bmp-rect: 160 0 32 32
bmp-offset: 0 34
pos: 0 56 4
size: 8 8 2
orient: YN
flags: REACTIVE MOVING DEADLY
react-mask: XP XN YP YN ZP ZN
movement: Y
}
actor{
name: TRANSPA-00
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 48 48 0
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-01
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 48 26 6
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-02
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 48 26 0
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-03
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 48 4 0
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-04
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 48 4 6
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-05
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 48 4 12
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-06
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 24 4 0
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-06
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 24 4 16
size: 8 8 6
movement: CW
}
actor{
name: TRANSPA-07
bmp: altres.gif
bmp-rect: 0 160 32 32
bmp-offset: 0 32
pos: 24 4 8
size: 8 8 6
movement: CW
}
actor{
name: TV
bmp: caixes.gif
bmp-rect: 32 64 32 32
bmp-offset: -4 34
pos: 0 13 24
size: 8 6 8
flags: PUSHABLE GRAVITY
movement: CW
}
actor{
name: Y-3
bmp: objectes.gif
bmp-rect: 145 41 20 25
bmp-offset: -5 27
pos: 0 56 20
size: 6 4 6
anim-cycle: SEQ
anim-wait: 2
flags: SPECIAL
movement: CW
}

117
data/rooms/86.txt Normal file
View File

@@ -0,0 +1,117 @@
width: 2
height: 2
door-height-xp: 0
door-height-yp: 5
color: PURPLE
floor-texture: 1
wall-texture: 2
door-texture: 3
under-door-texture: 2
exit-xp: 84
editor-done: 1
actor{
name: BOX-A
bmp: caixes.gif
bmp-rect: 0 0 32 32
bmp-offset: 0 32
pos: 26 29 0
size: 8 8 8
flags: PICKABLE PUSHABLE GRAVITY
movement: CW
}
actor{
name: BOX-B
bmp: caixes.gif
bmp-rect: 32 0 32 32
bmp-offset: 0 32
pos: 8 8 8
size: 8 8 8
flags: PICKABLE PUSHABLE GRAVITY
movement: CW
}
actor{
name: ESTANT-00
bmp: altres.gif
bmp-rect: 21 101 26 24
bmp-offset: -6 27
pos: 48 8 0
size: 8 5 6
movement: CW
}
actor{
name: ESTANT-01
bmp: altres.gif
bmp-rect: 21 101 26 24
bmp-offset: -6 27
pos: 40 8 0
size: 8 5 6
movement: CW
}
actor{
name: ESTANT-02
bmp: altres.gif
bmp-rect: 21 101 26 24
bmp-offset: -6 27
pos: 40 8 6
size: 8 5 6
movement: CW
}
actor{
name: ESTANT-03
bmp: altres.gif
bmp-rect: 21 101 26 24
bmp-offset: -6 27
pos: 48 8 6
size: 8 5 6
movement: CW
}
actor{
name: ESTANT-04
bmp: altres.gif
bmp-rect: 21 101 26 24
bmp-offset: -6 27
pos: 48 8 12
size: 8 5 6
movement: CW
}
actor{
name: ESTANT-05
bmp: altres.gif
bmp-rect: 21 101 26 24
bmp-offset: -6 27
pos: 40 8 12
size: 8 5 6
movement: CW
}
actor{
name: TAULA-A
bmp: caixes.gif
bmp-rect: 128 32 32 32
bmp-offset: 0 32
pos: 8 8 0
size: 8 8 8
orient: YP
flags: ORIENTABLE
movement: CW
}
actor{
name: TAULA-B
bmp: caixes.gif
bmp-rect: 160 32 32 32
bmp-offset: 0 32
pos: 8 16 0
size: 8 8 8
orient: YP
flags: ORIENTABLE
movement: CW
}

BIN
data/snd_boost.wav Normal file

Binary file not shown.

BIN
data/snd_dead.wav Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
data/snd_logo.wav Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -47,19 +47,6 @@ category{
movement: CW movement: CW
} }
actor{
name: S-SHOES
bmp: objectes.gif
bmp-rect: 162 0 28 22
bmp-offset: -3 24
pos: 48 8 0
size: 4 4 4
anim-cycle: SEQ
anim-wait: 2
flags: SPECIAL
movement: CW
}
actor{ actor{
name: FINESTRA name: FINESTRA
bmp: altres.gif bmp: altres.gif
@@ -217,6 +204,87 @@ category{
movement: CW movement: CW
} }
actor{
name: SAM
bmp: sam.gif
bmp-rect: 0 0 19 33
bmp-offset: -8 38
pos: 24 40 0
size: 8 8 8
orient: XP
anim-cycle: DUO
anim-wait: 20
flags: ANIMATED
react-mask: XP XN YP YN ZP ZN
movement: CCW
}
actor{
name: YONKI
bmp: caixes.gif
bmp-rect: 168 65 19 31
bmp-offset: -6 36
pos: 24 40 0
size: 8 8 8
orient: XP
anim-wait: 20
react-mask: XP XN YP YN ZP ZN
movement: CCW
}
actor{
name: LORD-ABAD
bmp: lordabad.gif
bmp-rect: 0 0 20 33
bmp-offset: -6 38
pos: 56 48 0
size: 8 8 8
orient: XP
anim-cycle: MIN
anim-wait: 1
flags: ANIMATED ORIENTABLE
react-mask: XP XN YP YN ZP ZN
movement: CCW
}
actor{
name: JAILDES
bmp: test.gif
bmp-rect: 0 32 20 32
bmp-offset: -6 38
pos: 48 40 0
size: 8 8 8
orient: XP
anim-wait: 1
flags: ANIMATED
react-mask: XP XN YP YN ZP ZN
movement: CCW
}
actor{
name: ROOMBA2
bmp: caixes.gif
bmp-rect: 164 0 24 32
bmp-offset: 0 34
pos: 24 40 0
size: 8 8 2
orient: XN
react-mask: XP XN YP YN ZP ZN
movement: CCW
}
actor{
name: ARCADE
bmp: altres.gif
bmp-rect: 160 0 30 48
bmp-offset: 0 49
pos: 0 16 0
size: 8 8 16
orient: YP
flags: ORIENTABLE
movement: CW
}
} }
category{ category{
@@ -400,11 +468,11 @@ category{
bmp: objectes.gif bmp: objectes.gif
bmp-rect: 96 0 24 32 bmp-rect: 96 0 24 32
bmp-offset: -4 34 bmp-offset: -4 34
pos: 8 40 8 pos: 16 0 8
size: 4 4 4 size: 4 4 4
anim-cycle: SEQ anim-cycle: SEQ
anim-wait: 2 anim-wait: 2
flags: SPECIAL flags: PUSHABLE GRAVITY SPECIAL
movement: CW movement: CW
} }
@@ -657,3 +725,60 @@ category{
} }
} }
category{
name: SKILLS
actor{
name: S-SHOES
bmp: objectes.gif
bmp-rect: 162 0 28 22
bmp-offset: -3 24
pos: 40 0 4
size: 4 4 4
anim-cycle: SEQ
anim-wait: 2
flags: SPECIAL
movement: CW
}
actor{
name: S-BAG
bmp: objectes.gif
bmp-rect: 145 41 20 25
bmp-offset: -5 27
pos: 0 56 20
size: 4 4 4
anim-cycle: SEQ
anim-wait: 2
flags: SPECIAL
movement: CW
}
actor{
name: S-PANTS
bmp: objectes.gif
bmp-rect: 167 22 18 23
bmp-offset: -7 27
pos: 0 16 0
size: 4 4 4
anim-cycle: SEQ
anim-wait: 2
flags: SPECIAL
movement: CW
}
actor{
name: S-GLOVES
bmp: objectes.gif
bmp-rect: 165 45 21 22
bmp-offset: -2 26
pos: 8 22 0
size: 4 4 4
anim-cycle: SEQ
anim-wait: 2
flags: SPECIAL
movement: CW
}
}

Binary file not shown.

23
do_release.bat Normal file
View File

@@ -0,0 +1,23 @@
@echo off
REM Comprobar parámetro
IF "%1"=="" (
echo Uso: build_windows.bat ^<PARAMETRO^>
exit /b 1
)
set PARAM=%1
echo Compilando windows...
make windows || exit /b 1
echo Creando data.jf2...
respak2 -p || exit /b 1
echo Creando paquetes...
REM Crear ZIP release con exe + data.jf2
tar -a -c -f thepool_%PARAM%_win32-x64.zip thepool.exe data.jf2 bin\*.dll || exit /b 1
echo Paquetes generados:
echo thepool_%PARAM%_win32-x64.zip

39
do_release.sh Executable file
View File

@@ -0,0 +1,39 @@
#!/bin/bash
set -e
#if [ -z "$1" ]; then
# echo "Uso: $0 <PARAMETRO>"
# exit 1
#fi
# Leer versión desde version.h
VERSION=$(grep '#define VERSIO' source/versio.h | sed 's/.*"\(.*\)".*/\1/')
echo "Versión detectada: $VERSION"
#PARAM=$1
# Datos Windows
WIN_USER="raimon"
WIN_HOST="tonlab19"
WIN_PATH_SSH="C:\Users\raimon\dev\thepool"
WIN_PATH_SCP="C:/Users/Raimon/dev/thepool"
echo "=== Compilando Linux ==="
make linux
echo "=== Empaquetando data.jf2 Linux ==="
respak2 -p
echo "=== Empaquetando ZIP Linux ==="
tar -czf thepool_${VERSION}_linux.tar.gz thepool data.jf2
echo "=== Ejecutando build remoto Windows ==="
ssh ${WIN_USER}@${WIN_HOST} "cd ${WIN_PATH_SSH} && do_release.bat ${VERSION}"
echo "=== Copiando ZIPs desde Windows ==="
scp ${WIN_USER}@${WIN_HOST}:"${WIN_PATH_SCP}/thepool_${VERSION}_win32-x64.zip" .
echo "=== Build completado correctamente ==="
echo "Generados:"
echo " thepool_${VERSION}_linux.tar.gz"
echo " thepool_${VERSION}_win32-x64.zip"

View File

@@ -1,4 +1,4 @@
libs = -lSDL2 -lSDL2_mixer libs = -lSDL3
cppflags = -D DEBUG -g cppflags = -D DEBUG -g
executable = thepool_debug executable = thepool_debug
sourcepath = source sourcepath = source

55
publish_gitea.sh Executable file
View File

@@ -0,0 +1,55 @@
#!/bin/bash
set -e
#if [ -z "$1" ]; then
# echo "Uso: $0 <PARAMETRO>"
# exit 1
#fi
GITEA_TOKEN="eb44d9c0142f5038c61c5afd17f5a41177bfaedc"
if [ -z "$GITEA_TOKEN" ]; then
echo "ERROR: Debes exportar GITEA_TOKEN"
exit 1
fi
# Leer versión desde version.h
VERSION=$(grep '#define VERSIO' versio.h | sed 's/.*"\(.*\)".*/\1/')
echo "Versión detectada: $VERSION"
#PARAM=$1
API="https://gitea.sustancia.synology.me/api/v1"
REPO="JailDoctor/thepool"
echo "=== Creando release ${VERSION} en Gitea ==="
RELEASE_ID=$(curl -s -X POST "${API}/repos/${REPO}/releases" \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
-d "{
\"tag_name\": \"${VERSION}\",
\"name\": \"Release ${VERSION}\",
\"draft\": false,
\"prerelease\": false
}" | jq -r '.id')
if [ "$RELEASE_ID" = "null" ]; then
echo "ERROR: No se pudo crear el release"
exit 1
fi
echo "Release creado con ID: $RELEASE_ID"
echo "=== Subiendo artefactos ==="
for f in thepool_${VERSION}_linux.tar.gz \
thepool_${VERSION}_win32-x64.zip
do
echo "Subiendo $f..."
curl -s -X POST \
-H "Authorization: token ${GITEA_TOKEN}" \
-F "attachment=@${f}" \
"${API}/repos/${REPO}/releases/${RELEASE_ID}/assets" > /dev/null
done
echo "=== Publicación completada ==="

View File

@@ -32,7 +32,8 @@ namespace actor
bool floating_editing = false; bool floating_editing = false;
int walk_channel = -1; int walk_channel = -1;
int falling_sound = -1; bool push_sound_already_playing = false;
std::vector<actor_t*> purgatory;
void resetTag() void resetTag()
{ {
@@ -69,6 +70,7 @@ namespace actor
act->surface = draw::getSurface(bmp.c_str()); act->surface = draw::getSurface(bmp.c_str());
act->bmp_rect = r; act->bmp_rect = r;
act->bmp_offset = o; act->bmp_offset = o;
act->alive = true;
return act; return act;
} }
@@ -89,6 +91,8 @@ namespace actor
act->react_mask = act->react_push = 0; act->react_mask = act->react_push = 0;
act->flags = FLAG_NONE; act->flags = FLAG_NONE;
act->template_category = 0; act->template_category = 0;
act->alive = true;
return act; return act;
} }
@@ -233,7 +237,7 @@ namespace actor
newactor->prev = act->prev; newactor->prev = act->prev;
newactor->next = act->next; newactor->next = act->next;
act->prev = act->next = nullptr; act->prev = act->next = nullptr;
remove(act); sendToPurgatory(act);
return newactor; return newactor;
} }
@@ -457,13 +461,33 @@ namespace actor
actor_t *hero = find("HERO"); actor_t *hero = find("HERO");
while (obj2) while (obj2)
{ {
if (obj2 != hero && obj1 != obj2 && check_2d_collision(obj1, obj2)) if (obj2 != hero && obj1 != obj2 && (obj1->pos.z<obj2->pos.z+obj2->size.z) && check_2d_collision(obj1, obj2))
return true; return true;
obj2 = obj2->next; obj2 = obj2->next;
} }
return false; return false;
} }
void find_non_colliding_position(actor_t *obj)
{
int dist = 1;
while (does_collide(obj))
{
obj->pos.x += dist;
if (!does_collide(obj)) return;
obj->pos.x -= dist*2;
if (!does_collide(obj)) return;
obj->pos.x += dist;
obj->pos.y += dist;
if (!does_collide(obj)) return;
obj->pos.y -= dist*2;
if (!does_collide(obj)) return;
obj->pos.y += dist;
dist++;
}
}
const bool is_above(actor_t *obj1, actor_t *obj2) const bool is_above(actor_t *obj1, actor_t *obj2)
{ {
return check_2d_collision(obj1, obj2) && (obj1->pos.z == obj2->pos.z + obj2->size.z); return check_2d_collision(obj1, obj2) && (obj1->pos.z == obj2->pos.z + obj2->size.z);
@@ -619,6 +643,76 @@ namespace actor
} }
} }
uint8_t PickSpecial(actor_t *act, uint8_t result = 0)
{
if (act->name[0] == 'B')
{ // Es un booster
hero::collectBooster(&act->name[5], (act->name[2] - 48) * 10 + (act->name[3] - 48));
audio::playSound("snd_boost.wav", SOUND_BASIC);
}
else if (act->name[0] == 'S')
{ // Es un skill
hero::giveSkill(&act->name[2]);
audio::playSound("snd_boost.wav", SOUND_BASIC);
}
else if (act->name[0] == 'P')
{
if (hero::getSkills() & SKILL_BAG)
{ // Es una part
hero::pickPart(&act->name[2]);
audio::playSound("snd_pick.wav", SOUND_BASIC);
}
else
{
audio::playSound("snd_push.wav", SOUND_BASIC);
return result;
}
}
else if (act->name[0] == 'A')
{
hero::pickAnbernic(act->name);
audio::playSound("snd_pick.wav", SOUND_BASIC);
}
else if (act->name[0] == 'X')
{
if (hero::isCarryingPrologoObject()) {
audio::playSound("snd_push.wav", SOUND_BASIC);
return result;
} else {
hero::pickPrologoObject(act->name[2]-48);
audio::playSound("snd_pick.wav", SOUND_BASIC);
}
}
else if (act->name[0] == 'Y')
{
const int which = act->name[2]-48;
if (hero::getPrologoObjectState(which)==PROLOGO_OBJECT_PICKED)
{
hero::leavePrologoObject(which);
audio::playSound("snd_pick.wav", SOUND_BASIC);
act->name[0] = 'Z';
room::cycleColor(1);
return result;
} else {
audio::playSound("snd_push.wav", SOUND_BASIC);
return result;
}
}
else if (act->name[0] == 'Z')
{
audio::playSound("snd_push.wav", SOUND_BASIC);
return result;
}
else
{
SDL_assert(false);
}
act = actor::replaceWithTemplate(act, "EXPLOSION");
act->name[0] = '_';
room::cycleColor(1);
return PUSH_NONE;
}
uint8_t push(actor_t *source, actor_t *act, uint8_t push) uint8_t push(actor_t *source, actor_t *act, uint8_t push)
{ {
uint8_t result = 0; uint8_t result = 0;
@@ -633,8 +727,10 @@ namespace actor
} }
if ((source->flags & FLAG_HERO) && (act->flags & FLAG_DISAPPEAR)) if ((source->flags & FLAG_HERO) && (act->flags & FLAG_DISAPPEAR))
{ {
audio::playSound("snd_disappear.wav", SOUND_BASIC);
act = actor::replaceWithTemplate(act, "EXPLOSION"); act = actor::replaceWithTemplate(act, "EXPLOSION");
act->name[0] = '_'; act->name[0] = '_';
return PUSH_NONE;
} }
if (source->flags & FLAG_DEADLY) if (source->flags & FLAG_DEADLY)
@@ -646,32 +742,7 @@ namespace actor
{ {
if (act->flags & FLAG_SPECIAL) if (act->flags & FLAG_SPECIAL)
{ {
if (act->name[0] == 'B') return PickSpecial(act, result);
{ // Es un booster
hero::collectBooster(&act->name[5], (act->name[2] - 48) * 10 + (act->name[3] - 48));
}
else if (act->name[0] == 'S')
{ // Es un skill
hero::giveSkill(&act->name[2]);
}
else if (act->name[0] == 'P')
{
if (hero::getSkills() & SKILL_BAG)
{ // Es una part
hero::pickPart(&act->name[2]);
}
else
{
return result;
}
}
else
{
SDL_assert(false);
}
act = actor::replaceWithTemplate(act, "EXPLOSION");
act->name[0] = '_';
room::cycleColor(1);
} }
} }
return result; return result;
@@ -690,6 +761,7 @@ namespace actor
if ((act->pos.x > min.x && act->pos.y >= min.y && (act->pos.y + act->size.y) <= max.y) || ((room::getDoors() & DOOR_XN) && (act->pos.y >= 24) && (act->pos.y <= 32))) if ((act->pos.x > min.x && act->pos.y >= min.y && (act->pos.y + act->size.y) <= max.y) || ((room::getDoors() & DOOR_XN) && (act->pos.y >= 24) && (act->pos.y <= 32)))
{ {
moving = true; moving = true;
// Si està en les vores d'una porta, espenta cap a centrar-lo
if ((act->pos.x <= min.x) && (act->pos.z == room::getDoor(XN) * 4) && (room::getDoors() & DOOR_XN)) if ((act->pos.x <= min.x) && (act->pos.z == room::getDoor(XN) * 4) && (room::getDoors() & DOOR_XN))
{ {
if (act->pos.y < 28) if (act->pos.y < 28)
@@ -697,19 +769,30 @@ namespace actor
else if (act->pos.y > 28) else if (act->pos.y > 28)
act->push |= PUSH_YN; act->push |= PUSH_YN;
else else
{
act->push |= PUSH_XN; act->push |= PUSH_XN;
if (hero::getBoostRun() > 0) act->push |= PUSH_DOUBLE;
}
} }
else else
{
act->push |= PUSH_XN; act->push |= PUSH_XN;
if (hero::getBoostRun() > 0) act->push |= PUSH_DOUBLE;
}
} }
} }
else if (controller::down(KEY_RIGHT)) //(input::keyDown(SDL_SCANCODE_RIGHT) || input::keyDown(config::getKey(KEY_RIGHT))) else if (controller::down(KEY_RIGHT)) //(input::keyDown(SDL_SCANCODE_RIGHT) || input::keyDown(config::getKey(KEY_RIGHT)))
{ {
hero::useBoostRun(); hero::useBoostRun();
act->orient = PUSH_XP; act->orient = PUSH_XP;
if (((act->pos.x + act->size.x) < max.x && act->pos.y >= min.y && (act->pos.y + act->size.y) <= max.y) || ((room::getDoors() & DOOR_XP) && (act->pos.y >= 24) && (act->pos.y <= 32))) if (
( ((act->pos.x + act->size.x) < max.x) && (act->pos.y >= min.y) && ((act->pos.y + act->size.y) <= max.y) )
||
( (room::getDoors() & DOOR_XP) && (act->pos.y >= 24) && (act->pos.y <= 32) )
)
{ {
moving = true; moving = true;
// Si està en les vores d'una porta, espenta cap a centrar-lo
if (((act->pos.x + act->size.x) >= max.x) && (act->pos.z == room::getDoor(XP) * 4) && (room::getDoors() & DOOR_XP)) if (((act->pos.x + act->size.x) >= max.x) && (act->pos.z == room::getDoor(XP) * 4) && (room::getDoors() & DOOR_XP))
{ {
if (act->pos.y < 28) if (act->pos.y < 28)
@@ -717,19 +800,26 @@ namespace actor
else if (act->pos.y > 28) else if (act->pos.y > 28)
act->push |= PUSH_YN; act->push |= PUSH_YN;
else else
{
act->push |= PUSH_XP; act->push |= PUSH_XP;
if (hero::getBoostRun() > 0) act->push |= PUSH_DOUBLE;
}
} }
else else
{
act->push |= PUSH_XP; act->push |= PUSH_XP;
if (hero::getBoostRun() > 0) act->push |= PUSH_DOUBLE;
}
} }
} }
else if (controller::down(KEY_UP)) //input::keyDown(SDL_SCANCODE_UP) || input::keyDown(config::getKey(KEY_UP))) else if (controller::down(KEY_UP)) // input::keyDown(SDL_SCANCODE_UP) || input::keyDown(config::getKey(KEY_UP)))
{ {
hero::useBoostRun(); hero::useBoostRun();
act->orient = PUSH_YN; act->orient = PUSH_YN;
if ((act->pos.y > min.y && act->pos.x >= min.x && (act->pos.x + act->size.x) <= max.x) || ((room::getDoors() & DOOR_YN) && (act->pos.x >= 24) && (act->pos.x <= 32))) if ((act->pos.y > min.y && act->pos.x >= min.x && (act->pos.x + act->size.x) <= max.x) || ((room::getDoors() & DOOR_YN) && (act->pos.x >= 24) && (act->pos.x <= 32)))
{ {
moving = true; moving = true;
// Si està en les vores d'una porta, espenta cap a centrar-lo
if ((act->pos.y <= min.y) && (act->pos.z == room::getDoor(YN) * 4) && (room::getDoors() & DOOR_YN)) if ((act->pos.y <= min.y) && (act->pos.z == room::getDoor(YN) * 4) && (room::getDoors() & DOOR_YN))
{ {
if (act->pos.x < 28) if (act->pos.x < 28)
@@ -737,19 +827,26 @@ namespace actor
else if (act->pos.x > 28) else if (act->pos.x > 28)
act->push |= PUSH_XN; act->push |= PUSH_XN;
else else
{
act->push |= PUSH_YN; act->push |= PUSH_YN;
if (hero::getBoostRun() > 0) act->push |= PUSH_DOUBLE;
}
} }
else else
{
act->push |= PUSH_YN; act->push |= PUSH_YN;
if (hero::getBoostRun() > 0) act->push |= PUSH_DOUBLE;
}
} }
} }
else if (controller::down(KEY_DOWN)) //input::keyDown(SDL_SCANCODE_DOWN) || input::keyDown(config::getKey(KEY_DOWN))) else if (controller::down(KEY_DOWN)) // input::keyDown(SDL_SCANCODE_DOWN) || input::keyDown(config::getKey(KEY_DOWN)))
{ {
hero::useBoostRun(); hero::useBoostRun();
act->orient = PUSH_YP; act->orient = PUSH_YP;
if (((act->pos.y + act->size.y) < max.y && act->pos.x >= min.x && (act->pos.x + act->size.x) <= max.x) || ((room::getDoors() & DOOR_YP) && (act->pos.x >= 24) && (act->pos.x <= 32))) if (((act->pos.y + act->size.y) < max.y && act->pos.x >= min.x && (act->pos.x + act->size.x) <= max.x) || ((room::getDoors() & DOOR_YP) && (act->pos.x >= 24) && (act->pos.x <= 32)))
{ {
moving = true; moving = true;
// Si està en les vores d'una porta, espenta cap a centrar-lo
if (((act->pos.y + act->size.y) >= max.y) && (act->pos.z == room::getDoor(YP) * 4) && (room::getDoors() & DOOR_YP)) if (((act->pos.y + act->size.y) >= max.y) && (act->pos.z == room::getDoor(YP) * 4) && (room::getDoors() & DOOR_YP))
{ {
if (act->pos.x < 28) if (act->pos.x < 28)
@@ -757,13 +854,19 @@ namespace actor
else if (act->pos.x > 28) else if (act->pos.x > 28)
act->push |= PUSH_XN; act->push |= PUSH_XN;
else else
{
act->push |= PUSH_YP; act->push |= PUSH_YP;
if (hero::getBoostRun() > 0) act->push |= PUSH_DOUBLE;
}
} }
else else
{
act->push |= PUSH_YP; act->push |= PUSH_YP;
if (hero::getBoostRun() > 0) act->push |= PUSH_DOUBLE;
}
} }
} }
//if ((input::keyPressed(SDL_SCANCODE_RETURN) || input::keyPressed(config::getKey(KEY_PICK))) && (hero::getSkills() & SKILL_PANTS)) // if ((input::keyPressed(SDL_SCANCODE_RETURN) || input::keyPressed(config::getKey(KEY_PICK))) && (hero::getSkills() & SKILL_PANTS))
if ((controller::pressed(KEY_PICK)) && (hero::getSkills() & SKILL_PANTS)) if ((controller::pressed(KEY_PICK)) && (hero::getSkills() & SKILL_PANTS))
{ {
if (picked) if (picked)
@@ -775,7 +878,8 @@ namespace actor
if (picked->pos.y + picked->size.y > room::getMax().y) if (picked->pos.y + picked->size.y > room::getMax().y)
picked->pos.y = room::getMax().y - picked->size.y; picked->pos.y = room::getMax().y - picked->size.y;
picked->pos.z = act->pos.z; picked->pos.z = act->pos.z;
if (does_collide(picked)) find_non_colliding_position(picked);
/*if (does_collide(picked))
{ {
picked->pos.x -= 2; picked->pos.x -= 2;
if (does_collide(picked)) if (does_collide(picked))
@@ -783,7 +887,7 @@ namespace actor
picked->pos.x += 2; picked->pos.x += 2;
picked->pos.y -= 2; picked->pos.y -= 2;
} }
} }*/
act->pos.z += picked->size.z; act->pos.z += picked->size.z;
actor::actor_t *above = act->above; actor::actor_t *above = act->above;
while (above) while (above)
@@ -810,13 +914,29 @@ namespace actor
// act->pos.z -= height; // act->pos.z -= height;
} }
} }
actor::actor_t *future_below = any_below_me(act); actor::actor_t *future_below = any_below_me(act);
//if ((input::keyDown(SDL_SCANCODE_SPACE) || input::keyDown(config::getKey(KEY_JUMP))) && // if ((input::keyDown(SDL_SCANCODE_SPACE) || input::keyDown(config::getKey(KEY_JUMP))) &&
if ((controller::down(KEY_JUMP)) && if ((controller::down(KEY_JUMP)) && ((hero::getSkills() & SKILL_SHOES) || actor::hero::isPrologo())
(hero::getSkills() & SKILL_SHOES) && (act->pos.y + act->size.y) <= max.y && act->pos.y >= min.y && (act->pos.x + act->size.x) <= max.x && act->pos.x >= min.x && act->react_mask == 0 && ((act->pos.z == 0 && room::getFloor() != 11) || (act->below || future_below))) && (act->pos.y + act->size.y) <= max.y && act->pos.y >= min.y &&
(act->pos.x + act->size.x) <= max.x && act->pos.x >= min.x &&
act->react_mask == 0 &&
( (act->pos.z == 0 && room::getFloor() != 11 && room::getExit(ZN)==-1) || (act->below || future_below) )
)
{ {
audio::pauseChannel(walk_channel); audio::pauseChannel(walk_channel);
audio::playSound("snd_jump.wav", SOUND_ALL); audio::playSound("snd_jump.wav", SOUND_BASIC);
// [RZC 31/10/2024] Hack per a que al aterrar sobre els especials els pille
if (!act->below && future_below && future_below->flags & FLAG_SPECIAL)
{
act->push |= PickSpecial(future_below);
}
// [RZC 11/10/2024] Hack per a que al aterrar sobre els que maten, te maten
if (!act->below && future_below && future_below->flags & FLAG_DEADLY)
act->push |= PUSH_KILL;
// [RZC 01/10/2024] Hack per a que al aterrar sobre els que desapareixen puga botar sobre ells, i a més ells desapareguen // [RZC 01/10/2024] Hack per a que al aterrar sobre els que desapareixen puga botar sobre ells, i a més ells desapareguen
if (!act->below && future_below && future_below->flags & FLAG_DISAPPEAR) if (!act->below && future_below && future_below->flags & FLAG_DISAPPEAR)
actor::push(act, future_below, PUSH_ZN); actor::push(act, future_below, PUSH_ZN);
@@ -858,9 +978,6 @@ namespace actor
{ {
act->react_mask = 0; // desactivem la guarda (react_mask=0) act->react_mask = 0; // desactivem la guarda (react_mask=0)
act->flags |= FLAG_GRAVITY; // i reactivem el flag de gravetat act->flags |= FLAG_GRAVITY; // i reactivem el flag de gravetat
if (falling_sound!=-1) { audio::stopChannel(falling_sound); falling_sound = -1; }
falling_sound = audio::playSound("snd_fall.wav", SOUND_ALL, -1);
} }
} }
@@ -868,7 +985,8 @@ namespace actor
if (moving) if (moving)
{ {
act->flags |= FLAG_ANIMATED; act->flags |= FLAG_ANIMATED;
if (act->react_mask==0 && !(act->flags&FLAG_GRAVITY)) audio::resumeChannel(walk_channel); if ((config::getSoundMode() == SOUND_ALL) && act->react_mask == 0 && ((act->below) || (act->pos.z == 0)))
audio::resumeChannel(walk_channel);
} }
else else
{ {
@@ -884,8 +1002,13 @@ namespace actor
act->push |= act->mov_push; act->push |= act->mov_push;
} }
void changeMoving(actor_t *act) void changeMoving(actor_t *act, const bool silent = false)
{ {
if (!silent && !push_sound_already_playing)
{
audio::playSound("snd_push.wav", SOUND_BASIC);
push_sound_already_playing = true;
}
switch (act->movement) switch (act->movement)
{ {
case MOV_X: case MOV_X:
@@ -1010,7 +1133,7 @@ namespace actor
vec3_t min = room::getMin(); vec3_t min = room::getMin();
vec3_t max = room::getMax(); vec3_t max = room::getMax();
if ((act->push & PUSH_KILL) && (act->flags & FLAG_HERO)) if ((act->push & PUSH_KILL) && (act->flags & FLAG_HERO) && (!hero::hasBoostGod()))
{ {
if (!editor::isDevMode()) if (!editor::isDevMode())
{ {
@@ -1019,6 +1142,8 @@ namespace actor
stats::loseLive(); stats::loseLive();
} }
// [TODO] If lives == 0 anar a la pantalla de game-over o cat's life // [TODO] If lives == 0 anar a la pantalla de game-over o cat's life
audio::pauseChannel(walk_channel);
audio::playSound("snd_dead.wav", SOUND_BASIC);
actor_t *act = actor::find("HERO"); actor_t *act = actor::find("HERO");
act = actor::replaceWithTemplate(act, "EXPLOSION"); act = actor::replaceWithTemplate(act, "EXPLOSION");
actor_t *act2 = actor::createFromTemplate("EXPLOSION"); actor_t *act2 = actor::createFromTemplate("EXPLOSION");
@@ -1026,17 +1151,25 @@ namespace actor
act2->pos.z += 8; act2->pos.z += 8;
act2->anim_frame = 2; act2->anim_frame = 2;
act->anim_wait = act2->anim_wait = 1; act->anim_wait = act2->anim_wait = 1;
actor_t *other = first;
while (other)
{
other->flags &= ~FLAG_MOVING;
other = other->next;
}
actor::setDirty(act2); actor::setDirty(act2);
room::cycleColor(4); room::cycleColor(4);
return; return;
} }
if ((act->flags & FLAG_HERO) && (hero::hasBoostGod())) act->push &= ~PUSH_KILL;
// [RZC 26/09/2024] Hack usant react_push en el moviment RAND per a contar la distancia abans de canviar de direcció // [RZC 26/09/2024] Hack usant react_push en el moviment RAND per a contar la distancia abans de canviar de direcció
if (act->movement == MOV_RAND) if (act->movement == MOV_RAND)
{ {
act->react_push--; act->react_push--;
if (act->react_push == 0) if (act->react_push == 0)
changeMoving(act); changeMoving(act, true);
} }
// [RZC 26/09/2024] Hack usant react_push en les bambolles de café per al dz del moviment de anar pegant botets // [RZC 26/09/2024] Hack usant react_push en les bambolles de café per al dz del moviment de anar pegant botets
@@ -1049,7 +1182,9 @@ namespace actor
act->pos.z += act->react_push; act->pos.z += act->react_push;
} }
int vel = (act->flags & FLAG_HERO) && (hero::getBoostRun() > 0) ? 2 : 1; //int vel = (act->flags & FLAG_HERO) && (hero::getBoostRun() > 0) ? 2 : 1;
int vel = (act->flags & FLAG_HERO) && (act->push & PUSH_DOUBLE) ? 2 : 1;
act->push &= ~ PUSH_DOUBLE;
if (act->push & PUSH_ZP) if (act->push & PUSH_ZP)
{ {
@@ -1110,8 +1245,10 @@ namespace actor
actor::actor_t *other = actor::get_collision(act); actor::actor_t *other = actor::get_collision(act);
if (other || (act->pos.x < min.x && (!(room::getDoors() & DOOR_XN) || (act->pos.y != 28) || (act->pos.z != room::getDoor(XN) * 4) || !(act->flags & FLAG_HERO)))) if (other || (act->pos.x < min.x && (!(room::getDoors() & DOOR_XN) || (act->pos.y != 28) || (act->pos.z != room::getDoor(XN) * 4) || !(act->flags & FLAG_HERO))))
{ {
if (other) if (other) {
other->push |= push(act, other, PUSH_XN); uint8_t push_value = push(act, other, PUSH_XN);
if (push_value) other->push |= push_value;
}
act->pos.x += vel; act->pos.x += vel;
if (act->flags & FLAG_MOVING) if (act->flags & FLAG_MOVING)
changeMoving(act); changeMoving(act);
@@ -1146,10 +1283,12 @@ namespace actor
{ {
act->pos.x += vel; act->pos.x += vel;
actor::actor_t *other = actor::get_collision(act); actor::actor_t *other = actor::get_collision(act);
if (other || ((act->pos.x + act->size.x) > max.x && (!(room::getDoors() & DOOR_XP) || (act->pos.y != 28) || !(act->flags & FLAG_HERO)))) if (other || ((act->pos.x + act->size.x) > max.x && (!(room::getDoors() & DOOR_XP) || (act->pos.y != 28) || (act->pos.z != room::getDoor(XP) * 4) || !(act->flags & FLAG_HERO))))
{ {
if (other) if (other) {
other->push |= push(act, other, PUSH_XP); uint8_t push_value = push(act, other, PUSH_XP);
if (push_value) other->push |= push_value;
}
act->pos.x -= vel; act->pos.x -= vel;
if (act->flags & FLAG_MOVING) if (act->flags & FLAG_MOVING)
changeMoving(act); changeMoving(act);
@@ -1169,7 +1308,7 @@ namespace actor
room::load(room::getExit(XP)); room::load(room::getExit(XP));
if (llevar_abad) if (llevar_abad)
{ {
actor::remove(actor::find("ABAD")); actor::sendToPurgatory(actor::find("ABAD"));
} }
act->pos.x = room::getMin().x - 3; act->pos.x = room::getMin().x - 3;
act->pos.z = room::getDoor(XN) * 4; act->pos.z = room::getDoor(XN) * 4;
@@ -1189,8 +1328,10 @@ namespace actor
actor::actor_t *other = actor::get_collision(act); actor::actor_t *other = actor::get_collision(act);
if (other || (act->pos.y < min.y && (!(room::getDoors() & DOOR_YN) || (act->pos.x != 28) || (act->pos.z != room::getDoor(YN) * 4) || !(act->flags & FLAG_HERO)))) if (other || (act->pos.y < min.y && (!(room::getDoors() & DOOR_YN) || (act->pos.x != 28) || (act->pos.z != room::getDoor(YN) * 4) || !(act->flags & FLAG_HERO))))
{ {
if (other) if (other) {
other->push |= push(act, other, PUSH_YN); uint8_t push_value = push(act, other, PUSH_YN);
if (push_value) other->push |= push_value;
}
act->pos.y += vel; act->pos.y += vel;
if (act->flags & FLAG_MOVING) if (act->flags & FLAG_MOVING)
changeMoving(act); changeMoving(act);
@@ -1223,10 +1364,12 @@ namespace actor
{ {
act->pos.y += vel; act->pos.y += vel;
actor::actor_t *other = actor::get_collision(act); actor::actor_t *other = actor::get_collision(act);
if (other || ((act->pos.y + act->size.y) > max.y && (!(room::getDoors() & DOOR_YP) || (act->pos.x != 28) || !(act->flags & FLAG_HERO)))) if (other || ((act->pos.y + act->size.y) > max.y && (!(room::getDoors() & DOOR_YP) || (act->pos.x != 28) || (act->pos.z != room::getDoor(YP) * 4) || !(act->flags & FLAG_HERO))))
{ {
if (other) if (other) {
other->push |= push(act, other, PUSH_YP); uint8_t push_value = push(act, other, PUSH_YP);
if (push_value) other->push |= push_value;
}
act->pos.y -= vel; act->pos.y -= vel;
if (act->flags & FLAG_MOVING) if (act->flags & FLAG_MOVING)
changeMoving(act); changeMoving(act);
@@ -1260,8 +1403,6 @@ namespace actor
// Si estic sobre el piso, no faig res // Si estic sobre el piso, no faig res
if (act->pos.z == 0) if (act->pos.z == 0)
{ {
if (act->flags&FLAG_HERO && falling_sound!=-1) { audio::stopChannel(falling_sound); falling_sound = -1; }
if ((act->flags & FLAG_MOVING) && (act->movement == MOV_Z)) if ((act->flags & FLAG_MOVING) && (act->movement == MOV_Z))
changeMoving(act); changeMoving(act);
act->push &= ~PUSH_ZN; act->push &= ~PUSH_ZN;
@@ -1285,7 +1426,8 @@ namespace actor
if (is_above(act, act->below)) if (is_above(act, act->below))
{ {
// ...li pase a ell el push, neteje el meu flag, canvie direcció si pertoca i me ane // ...li pase a ell el push, neteje el meu flag, canvie direcció si pertoca i me ane
act->push |= push(act, act->below, PUSH_ZN); // [RZC 20/09/2024] Canvie "act->below->push" per "act->push". Se li deu passar la reacció al que la inicia uint8_t push_value = push(act, act->below, PUSH_ZN); // [RZC 20/09/2024] Canvie "act->below->push" per "act->push". Se li deu passar la reacció al que la inicia
if (push_value) act->push |= push_value;
act->push &= ~PUSH_ZN; act->push &= ~PUSH_ZN;
if ((act->flags & FLAG_MOVING) && (act->movement == MOV_Z)) if ((act->flags & FLAG_MOVING) && (act->movement == MOV_Z))
changeMoving(act); changeMoving(act);
@@ -1302,12 +1444,13 @@ namespace actor
// Si sí que hi ha... // Si sí que hi ha...
if (below) if (below)
{ {
if (act->flags&FLAG_HERO && falling_sound!=-1) { audio::stopChannel(falling_sound); falling_sound = -1; }
// ...el asociem... // ...el asociem...
act->below = below; act->below = below;
below->above = act; below->above = act;
// ... i li passem el push, netejem el meu flag i gonnem // ... i li passem el push, netejem el meu flag i gonnem
act->push |= push(act, act->below, PUSH_ZN); // [RZC 20/09/2024] Canvie "act->below->push" per "act->push". Se li deu passar la reacció al que la inicia uint8_t push_value = push(act, act->below, PUSH_ZN); // [RZC 20/09/2024] Canvie "act->below->push" per "act->push". Se li deu passar la reacció al que la inicia
if (push_value) act->push |= push_value;
act->push &= ~PUSH_ZN; act->push &= ~PUSH_ZN;
if ((act->flags & FLAG_MOVING) && (act->movement == MOV_Z)) if ((act->flags & FLAG_MOVING) && (act->movement == MOV_Z))
changeMoving(act); changeMoving(act);
@@ -1349,6 +1492,7 @@ namespace actor
if (act == first) if (act == first)
{ {
push_sound_already_playing = false;
brilli_brilli = (brilli_brilli + 1) & 0x7; brilli_brilli = (brilli_brilli + 1) & 0x7;
} }
@@ -1362,7 +1506,7 @@ namespace actor
{ {
if (act->name[0] == '_') if (act->name[0] == '_')
{ {
actor::remove(act); actor::sendToPurgatory(act);
return; return;
} }
else else
@@ -1379,23 +1523,16 @@ namespace actor
act->anim_wait_count++; act->anim_wait_count++;
} }
if (act->flags & FLAG_HERO) if (act->flags & FLAG_HERO) updateUserInput(act);
updateUserInput(act);
if (act->flags & FLAG_MOVING) if (act->flags & FLAG_MOVING)
{ {
if (act->movement == MOV_HUNT && ((act->pos.x & 7) == 0 || (act->pos.y & 7) == 0)) if (act->movement == MOV_HUNT && ((act->pos.x & 7) == 0 || (act->pos.y & 7) == 0))
changeMoving(act); changeMoving(act);
updateMoving(act); updateMoving(act);
} }
if (act->flags & FLAG_GRAVITY) if (act->flags & FLAG_GRAVITY) act->push |= PUSH_ZN;
act->push |= PUSH_ZN;
// if (act->flags & FLAG_PUSHABLE)
updatePush(act); updatePush(act);
// if (act->flags & FLAG_GRAVITY) updateGravity(act);
// if (act->flags & FLAG_REACTIVE) updateReactive(act);
// act->push = PUSH_NONE;
if (!room_changed && update_all && next) if (!room_changed && update_all && next)
update(next); update(next);
@@ -1478,9 +1615,10 @@ namespace actor
if (editor::isEditing() && (act == selected) && modules::game::getSection() == modules::game::SECTION_ACTOR) if (editor::isEditing() && (act == selected) && modules::game::getSection() == modules::game::SECTION_ACTOR)
draw::swapcol(1, room::getColor(1)); // Si està seleccionat, que canvie de color draw::swapcol(1, room::getColor(1)); // Si està seleccionat, que canvie de color
draw::stencil::set(act->tag); draw::stencil::set(act->tag);
draw::draw(x, y, act->bmp_rect.w, act->bmp_rect.h, act->bmp_rect.x + ao, act->bmp_rect.y + oo, flip); if (!(act->flags & FLAG_SPECIAL) || !(act->name[0] == 'Y') || (brilli_brilli<4) )
draw::draw(x, y, act->bmp_rect.w, act->bmp_rect.h, act->bmp_rect.x + ao, act->bmp_rect.y + oo, flip);
draw::swapcol(1, room::getColor(0)); // Tornem al color per defecte draw::swapcol(1, room::getColor(0)); // Tornem al color per defecte
if (act->flags & FLAG_SPECIAL) if ((act->flags & FLAG_SPECIAL) && (act->name[0] != 'A') && (act->name[0] != 'Z'))
{ {
draw::setSource(brilli); draw::setSource(brilli);
const int dx = (act->bmp_rect.w - 22) >> 1; const int dx = (act->bmp_rect.w - 22) >> 1;
@@ -1496,6 +1634,13 @@ namespace actor
draw::swapcol(1, room::getColor(0)); // Tornem al color per defecte draw::swapcol(1, room::getColor(0)); // Tornem al color per defecte
} }
} }
if ((act->flags & FLAG_HERO) && debug::isEnabled(DEBUG_ACTOR_FLAGS))
{
char tmp[100];
draw::print(SDL_itoa(act->flags, tmp, 2), 1, 1, LIGHT + WHITE, BLACK);
draw::swapcol(1, room::getColor(0)); // Tornem al color per defecte
}
if (draw_all && act->next) if (draw_all && act->next)
draw(act->next); draw(act->next);
} }
@@ -1606,6 +1751,26 @@ namespace actor
free(act); free(act);
} }
void sendToPurgatory(actor_t *act)
{
if (!act) return;
if (act->prev) act->prev->next = act->next;
if (act == first) first = act->next;
if (act == dirty) dirty = act->next;
if (act->next) act->next->prev = act->prev;
if (act == selected) selected = nullptr;
if (act->below) act->below->above = nullptr;
if (act->above) act->above->below = nullptr;
act->alive = false;
purgatory.push_back(act);
}
void cleanPurgatory()
{
for (auto act : purgatory) remove(act);
purgatory.clear();
}
void pick(actor_t *act) void pick(actor_t *act)
{ {
if (!act) if (!act)
@@ -1671,6 +1836,11 @@ namespace actor
{ {
return floating_editing; return floating_editing;
} }
void pauseWalkSound()
{
audio::pauseChannel(walk_channel);
}
namespace templates namespace templates
{ {
std::vector<actor_t> templates; std::vector<actor_t> templates;
@@ -1757,7 +1927,7 @@ namespace actor
std::vector<actor_t> actors; std::vector<actor_t> actors;
for (auto act : templates) for (auto act : templates)
{ {
if (act.template_category >= categories.size()) if (act.template_category >= (int)categories.size())
act.template_category = 0; act.template_category = 0;
if (categories[act.template_category] == catname) if (categories[act.template_category] == catname)
actors.push_back(act); actors.push_back(act);
@@ -1783,7 +1953,7 @@ namespace actor
actor_t *getByName(const char *name) actor_t *getByName(const char *name)
{ {
for (int i = 0; i < templates.size(); ++i) for (int i = 0; i < (int)templates.size(); ++i)
if (util::strcomp(name, templates[i].name)) if (util::strcomp(name, templates[i].name))
return &templates[i]; return &templates[i];
// for (auto t : templates) if (util::strcomp(name, t.name)) return &t; // for (auto t : templates) if (util::strcomp(name, t.name)) return &t;
@@ -1837,9 +2007,9 @@ namespace actor
void swapCategories(const int a, const int b) void swapCategories(const int a, const int b)
{ {
if (a >= categories.size() || a < 0) if (a >= (int)categories.size() || a < 0)
return; return;
if (b >= categories.size() || b < 0) if (b >= (int)categories.size() || b < 0)
return; return;
auto str = categories[a]; auto str = categories[a];
categories[a] = categories[b]; categories[a] = categories[b];
@@ -1878,13 +2048,35 @@ namespace actor
int skills = SKILL_NONE; int skills = SKILL_NONE;
int parts = PART_NONE; int parts = PART_NONE;
bool boosters_collected[100]; bool boosters_collected[100];
bool anbernics[10] = {false, false, false, false, false, false, false, false, false, false};
vec3_t first_pos = {0, 0, 0}; vec3_t first_pos = {0, 0, 0};
int first_orient = 0; int first_orient = 0;
bool dead = false; bool dead = false;
bool prologo = false;
int prologo_objects[4] = {PROLOGO_OBJECT_INITIAL, PROLOGO_OBJECT_INITIAL, PROLOGO_OBJECT_INITIAL, PROLOGO_OBJECT_INITIAL};
int num_prologo_objects=0;
void setPrologo(const bool value)
{
prologo = value;
}
const bool isPrologo()
{
return prologo;
}
void init(const bool complete) void init(const bool complete)
{ {
actor::actor_t *hero = actor::create("HERO", {16, 32, 0}, {6, 6, 12}, "test.gif", {0, 32, 20, 32}, {-6, 38}); actor::actor_t *hero = nullptr;
if (prologo)
{
hero = actor::create("HERO", {16, 32, 0}, {6, 6, 8}, "gat.gif", {0, 0, 24, 28}, {-4, 32});
}
else
{
hero = actor::create("HERO", {16, 32, 0}, {6, 6, 12}, "test.gif", {0, 32, 20, 32}, {-6, 38});
}
hero->flags = FLAG_HERO | FLAG_PUSHABLE | FLAG_GRAVITY | FLAG_ORIENTABLE | FLAG_ANIMATED; hero->flags = FLAG_HERO | FLAG_PUSHABLE | FLAG_GRAVITY | FLAG_ORIENTABLE | FLAG_ANIMATED;
actor::setDirty(hero, true); actor::setDirty(hero, true);
@@ -1896,11 +2088,18 @@ namespace actor
stats::reset(); stats::reset();
lives = 8; lives = 8;
skills = SKILL_NONE; skills = SKILL_NONE;
if (prologo) skills &= SKILL_SHOES;
for (int i=0;i<4;++i) prologo_objects[i] = PROLOGO_OBJECT_INITIAL;
num_prologo_objects=0;
parts = PART_NONE; parts = PART_NONE;
for (int i = 0; i < 10; ++i)
anbernics[i] = false;
for (int i = 0; i < 100; ++i) for (int i = 0; i < 100; ++i)
boosters_collected[i] = false; boosters_collected[i] = false;
brilli = draw::getSurface("objectes.gif"); brilli = draw::getSurface("objectes.gif");
if ( (config::getSoundMode()==SOUND_ALL) ) { if ((config::getSoundMode() == SOUND_ALL))
{
if (walk_channel != -1) audio::stopChannel(walk_channel);
walk_channel = audio::playSound("snd_walk.wav", SOUND_ALL, -1); walk_channel = audio::playSound("snd_walk.wav", SOUND_ALL, -1);
audio::pauseChannel(walk_channel); audio::pauseChannel(walk_channel);
} }
@@ -1919,7 +2118,7 @@ namespace actor
void setLives(int value) void setLives(int value)
{ {
lives = value; lives = config::getInfiniteLives() ? 8 : value;
} }
void die() void die()
@@ -1931,8 +2130,8 @@ namespace actor
{ {
return dead; return dead;
} }
const int getBoosterFromString(const char *booster) const int getBoosterFromString(const char *booster)
{ {
static const char *boostset_name[4] = {"RUN", "GOD", "JUMP", "LIVE"}; static const char *boostset_name[4] = {"RUN", "GOD", "JUMP", "LIVE"};
for (int i = 0; i < 4; ++i) for (int i = 0; i < 4; ++i)
@@ -1988,7 +2187,7 @@ namespace actor
switch (getBoosterFromString(booster)) switch (getBoosterFromString(booster))
{ {
case BOOST_GOD: case BOOST_GOD:
boost_god = 99 * 2; boost_god = 99 * 4;
break; break;
case BOOST_RUN: case BOOST_RUN:
boost_steps = 99 * 2; boost_steps = 99 * 2;
@@ -2039,8 +2238,15 @@ namespace actor
boost_jumps--; boost_jumps--;
} }
const bool hasBoostGod()
{
return boost_god > 0;
}
const int getSkillFromString(char *skill) const int getSkillFromString(char *skill)
{ {
if ( (strcmp(skill, "ALL")==0) || (strcmp(skill, "SKILLS")==0) ) return SKILL_SHOES | SKILL_GLOVES | SKILL_PANTS | SKILL_BAG;
static const char *skillset_name[4] = {"SHOES", "GLOVES", "PANTS", "BAG"}; static const char *skillset_name[4] = {"SHOES", "GLOVES", "PANTS", "BAG"};
for (int i = 0; i < 4; ++i) for (int i = 0; i < 4; ++i)
{ {
@@ -2077,7 +2283,12 @@ namespace actor
bool giveSkill(char *skill) bool giveSkill(char *skill)
{ {
return giveSkill(getSkillFromString(skill)); const int skill_number = getSkillFromString(skill);
if (skill_number & SKILL_SHOES) modules::game::setMissatge(" JA TENS LES SABATES!- ARA JA POTS BOTAR!");
else if (skill_number & SKILL_GLOVES) modules::game::setMissatge(" JA TENS ELS GUANTS!- ARA JA POTS ESPENTAR!");
else if (skill_number & SKILL_PANTS) modules::game::setMissatge(" JA TENS ELS PANTALONS!- JA POTS AGAFAR COSES!");
else if (skill_number & SKILL_BAG) modules::game::setMissatge(" JA TENS LA MOTXILLA!- A ARREPLEGAR PECES!");
return giveSkill(skill_number);
} }
bool dropSkill(int skill) bool dropSkill(int skill)
@@ -2103,6 +2314,8 @@ namespace actor
const int getPartFromString(char *part) const int getPartFromString(char *part)
{ {
if ( (strcmp(part, "ALL")==0) || (strcmp(part, "PARTS")==0) ) return 0x3f;
static const char *partset_name[6] = {"FILTER", "PUMP", "TIMER", "SALT", "PIPE", "ELBOW"}; static const char *partset_name[6] = {"FILTER", "PUMP", "TIMER", "SALT", "PIPE", "ELBOW"};
for (int i = 0; i < 6; ++i) for (int i = 0; i < 6; ++i)
{ {
@@ -2139,8 +2352,13 @@ namespace actor
{ {
const int value = getPartFromString(part); const int value = getPartFromString(part);
parts |= value; parts |= value;
if (value != 0) if (value != 0) stats::collectPart();
stats::collectPart();
int num_parts = stats::getNumPartsCollected();
char text[] = " PECES ARREPLEGADES:- 0/6";
text[34] = num_parts + 48;
modules::game::setMissatge(text);
return value != 0; return value != 0;
} }
@@ -2161,6 +2379,64 @@ namespace actor
return parts; return parts;
} }
void pickAnbernic(char *name)
{
anbernics[name[8] - 48] = true;
int num_anbernics = getNumAmbernicsCollected();
if (num_anbernics==10)
{
modules::game::setMissatge(" HAS DESBLOQUEJAT- EL PROLOGO!");
config::setProgoloDesbloquejat();
}
else
{
char text[] = " ANBERNICS ARREPLEGADES:- 0/10";
text[36] = num_anbernics+48;
modules::game::setMissatge(text);
}
}
bool wasAnbernicCollected(char *name)
{
return anbernics[name[8] - 48];
}
int getNumAmbernicsCollected()
{
int count = 0;
for (auto anbernic : anbernics)
if (anbernic)
count++;
return count;
}
void pickPrologoObject(int which)
{
prologo_objects[which] = PROLOGO_OBJECT_PICKED;
}
void leavePrologoObject(int which)
{
prologo_objects[which] = PROLOGO_OBJECT_LEFT;
num_prologo_objects++;
}
const bool isCarryingPrologoObject()
{
for (auto object : prologo_objects) if (object==PROLOGO_OBJECT_PICKED) return true;
return false;
}
const int getPrologoObjectState(int which)
{
return prologo_objects[which];
}
const int getNumPrologoObjectsDone()
{
return num_prologo_objects;
}
void move(int *x, int *y, int *z) void move(int *x, int *y, int *z)
{ {
actor_t *hero = actor::find("HERO"); actor_t *hero = actor::find("HERO");
@@ -2186,13 +2462,13 @@ namespace actor
int partsCollected = 0; int partsCollected = 0;
bool roomVisited[MAX_ROOMS]; bool roomVisited[MAX_ROOMS];
int livesLost = 0; int livesLost = 0;
int catsLifeOdds = 5; int catsLifeOdds = 2;
uint32_t start_time = 0; uint32_t start_time = 0;
void reset() void reset()
{ {
partsCollected = livesLost = 0; partsCollected = livesLost = 0;
catsLifeOdds = 5; catsLifeOdds = 2;
for (int i = 0; i < MAX_ROOMS; ++i) for (int i = 0; i < MAX_ROOMS; ++i)
roomVisited[i] = false; roomVisited[i] = false;
start_time = SDL_GetTicks(); start_time = SDL_GetTicks();

View File

@@ -1,5 +1,5 @@
#pragma once #pragma once
#include <SDL2/SDL.h> #include <SDL3/SDL.h>
#include "misc.h" #include "misc.h"
#include "jdraw.h" #include "jdraw.h"
#include <vector> #include <vector>
@@ -33,6 +33,7 @@
#define PUSH_ZP 16 #define PUSH_ZP 16
#define PUSH_ZN 32 #define PUSH_ZN 32
#define PUSH_KILL 64 #define PUSH_KILL 64
#define PUSH_DOUBLE 128
// Tipus de moviment de l'actor // Tipus de moviment de l'actor
#define MOV_NONE 0 // Ningun #define MOV_NONE 0 // Ningun
@@ -109,6 +110,7 @@ namespace actor
int tag; int tag;
int template_category; int template_category;
bool alive;
}; };
void resetTag(); void resetTag();
@@ -169,6 +171,10 @@ namespace actor
void remove(actor_t *act); void remove(actor_t *act);
void sendToPurgatory(actor_t *act);
void cleanPurgatory();
void pick(actor_t *act); void pick(actor_t *act);
actor_t *getPicked(); actor_t *getPicked();
@@ -179,6 +185,8 @@ namespace actor
const bool getFloatingEditing(); const bool getFloatingEditing();
void pauseWalkSound();
namespace templates namespace templates
{ {
void load(); void load();
@@ -196,6 +204,17 @@ namespace actor
namespace hero namespace hero
{ {
#define PROLOGO_OBJECT_INITIAL 0
#define PROLOGO_OBJECT_PICKED 1
#define PROLOGO_OBJECT_LEFT 2
#define PROLOGO_SHOES 0
#define PROLOGO_PANTS 1
#define PROLOGO_GLOVES 2
#define PROLOGO_BAG 3
void setPrologo(const bool value);
const bool isPrologo();
void init(const bool complete = true); void init(const bool complete = true);
int getLives(); int getLives();
void setLives(int value); void setLives(int value);
@@ -214,6 +233,7 @@ namespace actor
void useBoostGod(); void useBoostGod();
void useBoostRun(); void useBoostRun();
void useBoostJump(); void useBoostJump();
const bool hasBoostGod();
const int getSkillFromString(char *skill); const int getSkillFromString(char *skill);
const char *getSkillName(int skill); const char *getSkillName(int skill);
@@ -231,6 +251,16 @@ namespace actor
bool wasPartCollected(char *part); bool wasPartCollected(char *part);
int getParts(); int getParts();
void pickAnbernic(char *name);
bool wasAnbernicCollected(char *name);
int getNumAmbernicsCollected();
void pickPrologoObject(int which);
void leavePrologoObject(int which);
const bool isCarryingPrologoObject();
const int getPrologoObjectState(int which);
const int getNumPrologoObjectsDone();
void move(int *x, int *y, int *z); void move(int *x, int *y, int *z);
void setFirstPos(); void setFirstPos();
} }

View File

@@ -1,13 +1,17 @@
#include "config.h" #include "config.h"
#include "jfile.h" #include "jfile.h"
#include <SDL2/SDL.h> #include <SDL3/SDL.h>
#include "jdraw.h"
namespace config namespace config
{ {
bool musicEnabled = true; bool musicEnabled = true;
int soundMode = SOUND_ALL; int soundMode = SOUND_ALL;
uint8_t keys[6] = {SDL_SCANCODE_UP, SDL_SCANCODE_DOWN, SDL_SCANCODE_LEFT, SDL_SCANCODE_RIGHT, SDL_SCANCODE_SPACE, SDL_SCANCODE_RETURN}; uint8_t keys[7] = {SDL_SCANCODE_UP, SDL_SCANCODE_DOWN, SDL_SCANCODE_LEFT, SDL_SCANCODE_RIGHT, SDL_SCANCODE_SPACE, SDL_SCANCODE_RETURN, SDL_SCANCODE_ESCAPE};
int8_t pad_btns[6] = {0, 1, 2, 3, 4, 5}; int8_t pad_btns[7] = {SDL_GAMEPAD_BUTTON_DPAD_UP, SDL_GAMEPAD_BUTTON_DPAD_DOWN, SDL_GAMEPAD_BUTTON_DPAD_LEFT, SDL_GAMEPAD_BUTTON_DPAD_RIGHT, SDL_GAMEPAD_BUTTON_SOUTH, SDL_GAMEPAD_BUTTON_EAST, SDL_GAMEPAD_BUTTON_START};
bool prologo_desbloquejat = false;
bool kiosk_mode = false;
bool infinite_lives = false;
void setMusic(const bool value) void setMusic(const bool value)
{ {
@@ -46,7 +50,7 @@ namespace config
void defineKey(const int which, const int key) void defineKey(const int which, const int key)
{ {
static const char* nomtecles[6] = {"keyup", "keydown", "keyleft", "keyright", "keyjump", "keypick"}; static const char* nomtecles[7] = {"keyup", "keydown", "keyleft", "keyright", "keyjump", "keypick", "keymenu"};
keys[which] = key; keys[which] = key;
char tmp[5]; char tmp[5];
file::setConfigValue(nomtecles[which], SDL_itoa(key, tmp, 10)); file::setConfigValue(nomtecles[which], SDL_itoa(key, tmp, 10));
@@ -59,7 +63,7 @@ namespace config
void definePadBtn(const int which, const int btn) void definePadBtn(const int which, const int btn)
{ {
static const char* nombotons[6] = {"btnup", "btndown", "btnleft", "btnright", "btnjump", "btnpick"}; static const char* nombotons[7] = {"btnup", "btndown", "btnleft", "btnright", "btnjump", "btnpick", "btnmenu"};
pad_btns[which] = btn; pad_btns[which] = btn;
char tmp[5]; char tmp[5];
file::setConfigValue(nombotons[which], SDL_itoa(btn, tmp, 10)); file::setConfigValue(nombotons[which], SDL_itoa(btn, tmp, 10));
@@ -69,4 +73,40 @@ namespace config
{ {
return pad_btns[which]; return pad_btns[which];
} }
void setProgoloDesbloquejat()
{
prologo_desbloquejat = true;
file::setConfigValue("prologo", "unlocked");
}
const bool isProgoloDesbloquejat()
{
return prologo_desbloquejat;
}
void setKioskMode(const bool value)
{
kiosk_mode = value;
file::setConfigValue("kiosk", kiosk_mode ? "yes" : "no");
draw::reinit();
}
const bool getKioskMode()
{
return kiosk_mode;
}
void setInifiniteLives(const bool value)
{
infinite_lives= value;
file::setConfigValue("infinitelives", infinite_lives? "yes" : "no");
}
const bool getInfiniteLives()
{
return infinite_lives;
}
} }

View File

@@ -5,7 +5,6 @@ namespace config
#define SOUND_ALL 0 #define SOUND_ALL 0
#define SOUND_BASIC 1 #define SOUND_BASIC 1
#define SOUND_NONE 2 #define SOUND_NONE 2
#define SOUND_MUSIC 2
#define KEY_UP 0 #define KEY_UP 0
#define KEY_DOWN 1 #define KEY_DOWN 1
@@ -13,6 +12,7 @@ namespace config
#define KEY_RIGHT 3 #define KEY_RIGHT 3
#define KEY_JUMP 4 #define KEY_JUMP 4
#define KEY_PICK 5 #define KEY_PICK 5
#define KEY_MENU 6
void setMusic(const bool value); void setMusic(const bool value);
void toggleMusic(); void toggleMusic();
@@ -28,4 +28,12 @@ namespace config
void definePadBtn(const int which, const int btn); void definePadBtn(const int which, const int btn);
const int getPadBtn(const int which); const int getPadBtn(const int which);
void setProgoloDesbloquejat();
const bool isProgoloDesbloquejat();
void setKioskMode(const bool value);
const bool getKioskMode();
void setInifiniteLives(const bool value);
const bool getInfiniteLives();
} }

View File

@@ -1,11 +1,12 @@
#include "console.h" #include "console.h"
#include <SDL2/SDL.h> #include <SDL3/SDL.h>
#include "jdraw.h" #include "jdraw.h"
#include "jinput.h" #include "jinput.h"
#include "room.h" #include "room.h"
#include "actor.h" #include "actor.h"
#include "jgame.h" #include "jgame.h"
#include "debug.h" #include "debug.h"
#include "config.h"
namespace console namespace console
{ {
@@ -134,10 +135,11 @@ namespace console
#define CMD_EXIT 4 #define CMD_EXIT 4
#define CMD_SHOW 5 #define CMD_SHOW 5
#define CMD_HIDE 6 #define CMD_HIDE 6
#define CMD_HELP 7 #define CMD_SET 7
#define NUM_CMDS 8 #define CMD_HELP 8
#define NUM_CMDS 9
const char *command_text[NUM_CMDS] = { "GIVE", "DROP", "GOTO", "MOVE", "EXIT", "SHOW", "HIDE", "HELP" }; const char *command_text[NUM_CMDS] = { "GIVE", "DROP", "GOTO", "MOVE", "EXIT", "SHOW", "HIDE", "SET", "HELP" };
#define PARAM_UNKNOWN -1 #define PARAM_UNKNOWN -1
#define PARAM_RUN 0 #define PARAM_RUN 0
@@ -173,7 +175,7 @@ namespace console
const int getIndexFromString(char *str, std::vector<const char*> list) const int getIndexFromString(char *str, std::vector<const char*> list)
{ {
//static const char *skillset_name[4] = {"SHOES", "GLOVES", "PANTS", "BAG"}; //static const char *skillset_name[4] = {"SHOES", "GLOVES", "PANTS", "BAG"};
for (int i=0;i<list.size();++i) for (int i=0; i<(int)list.size(); ++i)
{ {
if (strcmp(str, list[i])==0) if (strcmp(str, list[i])==0)
{ {
@@ -264,7 +266,7 @@ namespace console
strcpy(msg, "ERROR: Nothing to show."); strcpy(msg, "ERROR: Nothing to show.");
} else { } else {
strcpy(msg, "Ok."); strcpy(msg, "Ok.");
const int value = getIndexFromString(tokens[1], {"NOTHING", "ACTOR-POS"}); const int value = getIndexFromString(tokens[1], {"NOTHING", "POS", "FLAGS"});
if (value==-1) if (value==-1)
strcpy(msg, "ERROR: Cannot show that."); strcpy(msg, "ERROR: Cannot show that.");
else else
@@ -276,16 +278,35 @@ namespace console
strcpy(msg, "ERROR: Nothing to hide."); strcpy(msg, "ERROR: Nothing to hide.");
} else { } else {
strcpy(msg, "Ok."); strcpy(msg, "Ok.");
const int value = getIndexFromString(tokens[1], {"NOTHING", "ACTOR-POS"}); const int value = getIndexFromString(tokens[1], {"NOTHING", "POS", "FLAGS"});
if (value==-1) if (value==-1)
strcpy(msg, "ERROR: Cannot hide that."); strcpy(msg, "ERROR: Cannot hide that.");
else else
debug::disable(value); debug::disable(value);
} }
break; break;
case CMD_SET:
if (!tokens[1]) {
strcpy(msg, "ERROR: Nothing to set.");
} else {
strcpy(msg, "Ok.");
const int value = getIndexFromString(tokens[1], {"KIOSK", "INFINITELIVES"});
if (value==-1)
strcpy(msg, "ERROR: Cannot set that.");
else
switch (value) {
case 0:
config::setKioskMode(!config::getKioskMode());
break;
case 1:
config::setInifiniteLives(!config::getInfiniteLives());
break;
}
}
case CMD_HELP: case CMD_HELP:
if (!tokens[1]) { if (!tokens[1]) {
strcpy(msg, "GIVE DROP GOTO MOVE EXIT SHOW HIDE HELP"); strcpy(msg, "GIVE DROP GOTO MOVE EXIT SHOW HIDE SET HELP");
} else { } else {
int command = getCommand(); int command = getCommand();
switch (command) switch (command)
@@ -309,10 +330,10 @@ namespace console
strcpy(msg, "Exits the game."); strcpy(msg, "Exits the game.");
break; break;
case CMD_SHOW: case CMD_SHOW:
strcpy(msg, "NOTHING ACTOR-POS"); strcpy(msg, "NOTHING POS FLAGS");
break; break;
case CMD_HIDE: case CMD_HIDE:
strcpy(msg, "NOTHING ACTOR-POS"); strcpy(msg, "NOTHING POS FLAGS");
break; break;
} }

View File

@@ -2,7 +2,7 @@
namespace debug namespace debug
{ {
bool debug_info[2] {false, false}; bool debug_info[3] {false, false, false};
void enable(int info_type) void enable(int info_type)
{ {

Some files were not shown because too many files have changed in this diff Show More