1
0
mirror of https://github.com/blupi-games/planetblupi synced 2024-12-30 10:15:36 +01:00
2017-08-10 22:29:48 +02:00

634 lines
24 KiB
C

/*
* This file is part of the planetblupi source code
* Copyright (C) 1997, Daniel Roux & EPSITEC SA
* Copyright (C) 2017, Mathieu Schroeter
* http://epsitec.ch; http://www.blupi.org; http://github.com/blupi-games
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://gnu.org/licenses
*/
#pragma once
#include <SDL2/SDL_stdinc.h>
// clang-format off
#define _INTRO true // true si images d'introduction
#define LXIMAGE 640 // dimensions de la fenêtre de jeu
#define LYIMAGE 480
#define POSDRAWX 144 // surface de dessin
#define POSDRAWY 15
#define DIMDRAWX 480
#define DIMDRAWY 450
#define POSMAPX 8 // surface pour la carte
#define POSMAPY 15
#define DIMMAPX 128
#define DIMMAPY 128
#define MAXCELX 200 // nb max de cellules d'un monde
#define MAXCELY 200
#define DIMCELX 60 // dimensions d'une cellule (décor)
#define DIMCELY 30
#define DIMOBJX 120 // dimensions d'un objet
#define DIMOBJY 120
#define DIMBLUPIX 60 // dimensions de blupi
#define DIMBLUPIY 60
#define SHIFTBLUPIY 5 // petit décalage vers le haut
#define DIMBUTTONX 40 // dimensions d'un button
#define DIMBUTTONY 40
#define DIMJAUGEX 124 // dimensions de la jauge
#define DIMJAUGEY 22
#define POSSTATX 12 // statistiques
#define POSSTATY 220
#define DIMSTATX 60
#define DIMSTATY 30
#define DIMTEXTX 16 // dimensions max d'un caractère
#define DIMTEXTY 16
#define DIMLITTLEX 16 // dimensions max d'un petit caractère
#define DIMLITTLEY 12
#define CHBACK 0
#define CHFLOOR 1
#define CHOBJECT 2
#define CHOBJECTo 3
#define CHBLUPI 4
#define CHHILI 5
#define CHFOG 6
#define CHMASK1 7
#define CHLITTLE 8
#define CHMAP 9
#define CHBUTTON 10
#define CHGROUND 11
#define CHJAUGE 12
#define CHTEXT 13
#define CHBIGNUM 14
#define CHMASK2 15
#define FOGHIDE 4
// Directions :
#define DIRECT_E (0*16) // est
#define DIRECT_SE (1*16) // sud-est
#define DIRECT_S (2*16) // sud
#define DIRECT_SO (3*16) // sud-ouest
#define DIRECT_O (4*16) // ouest
#define DIRECT_NO (5*16) // nord-ouest
#define DIRECT_N (6*16) // nord
#define DIRECT_NE (7*16) // nord-est
/* NO
* O | N
* \ | /
* \ | /
* \|/
* SO -------o------- NE
* /|\
* / | \
* / | \
* S | E
* (y) SE (x)
*/
// Actions :
#define ACTION_STOP 0 // stop
#define ACTION_STOPTIRED 1 // stop tiredness
#define ACTION_WALK 2 // walk
#define ACTION_WALKTIRED 3 // walk tiredness
#define ACTION_BUILD 4 // build
#define ACTION_PICKAXE 5 // pickaxe
#define ACTION_ENERGY 6 // prend de l'énergie
#define ACTION_CARRY 8 // take with a jump the object on the head (est)
#define ACTION_DROP 9 // drop the object which is on the head (est)
#define ACTION_SAW 10 // saw wood
#define ACTION_BURN 11 // blupi is burning !
#define ACTION_TCHAO 12 // blupi disappeard !
#define ACTION_EAT 13 // blupi eats
#define ACTION_BORN 14 // born
#define ACTION_JUMP2 15 // jump over an obstacle
#define ACTION_JUMP3 16 // jump over an obstacle
#define ACTION_JUMP4 17 // jump over an obstacle
#define ACTION_JUMP5 18 // jump over an obstacle
#define ACTION_BRIDGE 19 // push a bridge
#define ACTION_MISC1 20 // divers 1 (hausse les épaules)
#define ACTION_MISC2 21 // divers 2 (grat-grat)
#define ACTION_MISC3 22 // divers 3 (yoyo)
#define ACTION_MISC1f 23 // divers 1 fatigué (bof-bof)
#define ACTION_SLIDE 24 // slide when walking
#define ACTION_DRINK 25 // blupi is drinking
#define ACTION_LABO 26 // blupi travaille dans son laboratoire
#define ACTION_DYNAMITE 27 // blupi fait péter la dynamite
#define ACTION_DELAY 28 // blupi attend un frame
#define ACTION_CUEILLE1 29 // blupi cueille des fleurs
#define ACTION_CUEILLE2 30 // blupi cueille des fleurs
#define ACTION_MECHE 31 // blupi se bouche les oreilles
#define ACTION_STOPb 32 // arrêt en bateau
#define ACTION_MARCHEb 33 // avance en bateau
#define ACTION_STOPJEEP 34 // stop when using a jeep
#define ACTION_WALKJEEP 35 // going in jeep
#define ACTION_ELECTRO 36 // blupi électrocuté
#define ACTION_GRILL1 37 // blupi grills (phase 1)
#define ACTION_GRILL2 38 // blupi grills (phase 2)
#define ACTION_GRILL3 39 // blupi grills (phase 3)
#define ACTION_MISC4 40 // divers 4 (ferme les yeux)
#define ACTION_HAPPY 41 // blupi is happy
#define ACTION_ARROSE 42 // blupi arrose
#define ACTION_BECHE 43 // blupi bèche
#define ACTION_CUEILLE3 44 // blupi cueille des fleurs
#define ACTION_BUILDBREF 45 // construit
#define ACTION_BUILDSEC 46 // construit
#define ACTION_BUILDSOURD 47 // construit
#define ACTION_BUILDPIERRE 48 // construit
#define ACTION_PIOCHEPIERRE 49 // pioche
#define ACTION_PIOCHESOURD 50 // pioche
#define ACTION_MISC5 51 // divers 5 (ohé)
#define ACTION_TELEPORTE1 52 // téléporte
#define ACTION_TELEPORTE2 53 // téléporte
#define ACTION_TELEPORTE3 54 // téléporte
#define ACTION_STOPARMOR 55 // stop armor
#define ACTION_WALKARMOR 56 // walk armor
#define ACTION_ARMOROPEN 57 // open armor
#define ACTION_ARMORCLOSE 58 // close armor
#define ACTION_JUMPJEEP 59 // jump in the jeep
#define ACTION_MISC6 60 // divers 6 (diabolo)
#define ACTION_S_STOP 100 // spider: stop
#define ACTION_S_WALK 101 // spider: walk
#define ACTION_S_JUMP 102 // spider: jump
#define ACTION_S_GRILL 103 // spider: grill in rays
#define ACTION_S_POISON 105 // spider: poisoned
#define ACTION_S_DEAD1 106 // spider: dead
#define ACTION_S_DEAD2 107 // spider: dead
#define ACTION_S_DEAD3 108 // spider: dead
#define ACTION_V_STOP 200 // virus: stop
#define ACTION_V_WALK 201 // virus: walk
#define ACTION_V_GRILL 202 // virus: grill in rays
#define ACTION_T_STOP 300 // tracks: stop
#define ACTION_T_WALK 301 // tracks: walk
#define ACTION_T_CRUSHED 302 // tracks: crushed an object
#define ACTION_R_STOP 400 // robot: stop
#define ACTION_R_WALK 401 // robot: walk
#define ACTION_R_APLAT 402 // robot: applatit
#define ACTION_R_BUILD 403 // robot: construit
#define ACTION_R_DELAY 404 // robot: construit
#define ACTION_R_LOAD 405 // robot: reload
#define ACTION_R_CRUSHED 406 // robot: crushed an object
#define ACTION_B_STOP 500 // bomb: stop
#define ACTION_B_WALK 501 // bomb: walk
#define ACTION_D_DELAY 600 // detonator: wait
#define ACTION_E_STOP 700 // electro: stop
#define ACTION_E_WALK 701 // electro: walk
#define ACTION_E_BEGIN 702 // electro: begin
#define ACTION_E_RAYON 703 // electro: rayon
#define ACTION_D_STOP 800 // disciple: stop
#define ACTION_D_WALK 801 // disciple: walk
#define ACTION_D_BUILD 802 // disciple: build
#define ACTION_D_PICKAXE 803 // disciple: pickaxe
#define ACTION_D_SAW 804 // disciple: saw wood
#define ACTION_D_TCHAO 805 // disciple: disappeard !
#define ACTION_D_CUEILLE1 806 // disciple: cueille des fleurs
#define ACTION_D_CUEILLE2 807 // disciple: cueille des fleurs
#define ACTION_D_MECHE 808 // disciple: se bouche les oreilles
#define ACTION_D_ARROSE 809 // disciple: arrose
#define ACTION_D_BECHE 810 // disciple: bèche
// Sons :
#define SOUND_CLICK 0
#define SOUND_BOING 1
#define SOUND_OK1 2
#define SOUND_OK2 3
#define SOUND_OK3 4
#define SOUND_GO1 5
#define SOUND_GO2 6
#define SOUND_GO3 7
#define SOUND_TERM1 8
#define SOUND_TERM2 9
#define SOUND_TERM3 10
#define SOUND_COUPTERRE 11
#define SOUND_COUPTOC 12
#define SOUND_JUMP 13
#define SOUND_HOP 14
#define SOUND_SAW 15
#define SOUND_FIRE 16
#define SOUND_BURN 17
#define SOUND_TCHAO 18
#define SOUND_EAT 19
#define SOUND_BORN 20
#define SOUND_S_JUMP 21
#define SOUND_S_HIHI 22
#define SOUND_PLOUF 23
#define SOUND_GOAL 24
#define SOUND_RAYON1 25
#define SOUND_RAYON2 26
#define SOUND_VIRUS 27
#define SOUND_SLIDE 28
#define SOUND_DRINK 29
#define SOUND_LABO 30
#define SOUND_DYNAMITE 31
#define SOUND_DOOR 32
#define SOUND_FLOWER 33
#define SOUND_T_ENGINE 34
#define SOUND_T_ECRASE 35
#define SOUND_TRAP 36
#define SOUND_AIE 37
#define SOUND_A_POISON 38
#define SOUND_R_ENGINE 39
#define SOUND_R_APLAT 40
#define SOUND_R_ROTATE 41
#define SOUND_R_LOAD 42
#define SOUND_B_JUMP 43
#define SOUND_BOAT 44
#define SOUND_JEEP 45
#define SOUND_MINE 46
#define SOUND_USINE 47
#define SOUND_E_RAYON 48
#define SOUND_E_TOURNE 49
#define SOUND_ARROSE 50
#define SOUND_BECHE 51
#define SOUND_D_BOING 52
#define SOUND_D_OK 53
#define SOUND_D_GO 54
#define SOUND_D_TERM 55
#define SOUND_BOING1 56
#define SOUND_BOING2 57
#define SOUND_BOING3 58
#define SOUND_OK4 59
#define SOUND_OK5 60
#define SOUND_OK6 61
#define SOUND_OK1f 62
#define SOUND_OK2f 63
#define SOUND_OK3f 64
#define SOUND_OK1e 65
#define SOUND_OK2e 66
#define SOUND_OK3e 67
#define SOUND_GO4 68
#define SOUND_GO5 69
#define SOUND_GO6 70
#define SOUND_TERM4 71
#define SOUND_TERM5 72
#define SOUND_TERM6 73
#define SOUND_COUPSEC 74
#define SOUND_COUPPIERRE 75
#define SOUND_COUPSOURD 76
#define SOUND_COUPBREF 77
#define SOUND_OPEN 78
#define SOUND_CLOSE 79
#define SOUND_TELEPORTE 80
#define SOUND_ARMUREOPEN 81
#define SOUND_ARMURECLOSE 82
#define SOUND_WIN 83
#define SOUND_LOST 84
// Boutons (play) :
#define MAXBUTTON 40
#define BUTTON_GO 0
#define BUTTON_STOP 1
#define BUTTON_EAT 2
#define BUTTON_CARRY 3
#define BUTTON_DEPOSE 4
#define BUTTON_ABAT 5
#define BUTTON_ROC 6
#define BUTTON_CULTIVE 7
#define BUTTON_BUILD1 8
#define BUTTON_BUILD2 9
#define BUTTON_BUILD3 10
#define BUTTON_BUILD4 11
#define BUTTON_BUILD5 12
#define BUTTON_BUILD6 13
#define BUTTON_WALL 14
#define BUTTON_PALIS 15
#define BUTTON_ABATn 16
#define BUTTON_ROCn 17
#define BUTTON_BRIDGE 18
#define BUTTON_TOWER 19
#define BUTTON_BOIT 20
#define BUTTON_LABO 21
#define BUTTON_FLOWER 22
#define BUTTON_FLOWERn 23
#define BUTTON_DYNAMITE 24
#define BUTTON_BOAT 25
#define BUTTON_DJEEP 26
#define BUTTON_FLAG 27
#define BUTTON_EXTRAIT 28
#define BUTTON_FABJEEP 29
#define BUTTON_FABMINE 30
#define BUTTON_FABDISC 31
#define BUTTON_REPEAT 32
#define BUTTON_DARMOR 33
#define BUTTON_MAKEARMOR 34
// clang-format on
// Erreurs :
enum Errors {
NONE = 0,
MISC = 1,
GROUND = 2,
FREE = 3,
PONTOP = 4,
PONTTERM = 5,
TOURISOL = 6,
TOUREAU = 7,
TELE2 = 8,
ENERGY = 9,
REPEAT = 500,
};
// Lutins pour la souris
enum MouseSprites {
SPRITE_BEGIN = 1,
SPRITE_ARROW = 1,
SPRITE_POINTER = 2,
SPRITE_MAP = 3,
SPRITE_ARROWU = 4,
SPRITE_ARROWD = 5,
SPRITE_ARROWL = 6,
SPRITE_ARROWR = 7,
SPRITE_ARROWUL = 8,
SPRITE_ARROWUR = 9,
SPRITE_ARROWDL = 10,
SPRITE_ARROWDR = 11,
SPRITE_WAIT = 12,
SPRITE_EMPTY = 13,
SPRITE_FILL = 14,
SPRITE_END = 14,
};
// clang-format off
#define EV_OFFSET 0x0400
#define EV_UPDATE (EV_OFFSET+1)
#define EV_WARPMOUSE (EV_OFFSET+2)
#define EV_DECOR1 (EV_OFFSET+20)
#define EV_DECOR2 (EV_OFFSET+21)
#define EV_DECOR3 (EV_OFFSET+22)
#define EV_DECOR4 (EV_OFFSET+23)
#define EV_DECOR5 (EV_OFFSET+24)
#define EV_ACTION_GO (EV_OFFSET+30)
#define EV_ACTION_ABAT1 (EV_OFFSET+31)
#define EV_ACTION_ABAT2 (EV_OFFSET+32)
#define EV_ACTION_ABAT3 (EV_OFFSET+33)
#define EV_ACTION_ABAT4 (EV_OFFSET+34)
#define EV_ACTION_ABAT5 (EV_OFFSET+35)
#define EV_ACTION_ABAT6 (EV_OFFSET+36)
#define EV_ACTION_BUILD1 (EV_OFFSET+37)
#define EV_ACTION_BUILD2 (EV_OFFSET+38)
#define EV_ACTION_BUILD3 (EV_OFFSET+39)
#define EV_ACTION_BUILD4 (EV_OFFSET+40)
#define EV_ACTION_BUILD5 (EV_OFFSET+41)
#define EV_ACTION_BUILD6 (EV_OFFSET+42)
#define EV_ACTION_STOP (EV_OFFSET+43)
#define EV_ACTION_CARRY (EV_OFFSET+44)
#define EV_ACTION_DROP (EV_OFFSET+45)
#define EV_ACTION_ROC1 (EV_OFFSET+46)
#define EV_ACTION_ROC2 (EV_OFFSET+47)
#define EV_ACTION_ROC3 (EV_OFFSET+48)
#define EV_ACTION_ROC4 (EV_OFFSET+49)
#define EV_ACTION_ROC5 (EV_OFFSET+50)
#define EV_ACTION_ROC6 (EV_OFFSET+51)
#define EV_ACTION_ROC7 (EV_OFFSET+52)
#define EV_ACTION_WALL (EV_OFFSET+53)
#define EV_ACTION_CULTIVE (EV_OFFSET+54)
#define EV_ACTION_CULTIVE2 (EV_OFFSET+55)
#define EV_ACTION_EAT (EV_OFFSET+56)
#define EV_ACTION_MAKE (EV_OFFSET+57)
#define EV_ACTION_BUILD (EV_OFFSET+58)
#define EV_ACTION_PALIS (EV_OFFSET+59)
#define EV_ACTION_NEWBLUPI (EV_OFFSET+60)
#define EV_ACTION_BRIDGEE (EV_OFFSET+61)
#define EV_ACTION_BRIDGES (EV_OFFSET+62)
#define EV_ACTION_BRIDGEO (EV_OFFSET+63)
#define EV_ACTION_BRIDGEN (EV_OFFSET+64)
#define EV_ACTION_BRIDGEEL (EV_OFFSET+65)
#define EV_ACTION_BRIDGESL (EV_OFFSET+66)
#define EV_ACTION_BRIDGEOL (EV_OFFSET+67)
#define EV_ACTION_BRIDGENL (EV_OFFSET+68)
#define EV_ACTION_TOWER (EV_OFFSET+69)
#define EV_ACTION_CARRY2 (EV_OFFSET+70)
#define EV_ACTION_DROP2 (EV_OFFSET+71)
#define EV_ACTION_EAT2 (EV_OFFSET+72)
#define EV_ACTION_DRINK (EV_OFFSET+73)
#define EV_ACTION_DRINK2 (EV_OFFSET+74)
#define EV_ACTION_LABO (EV_OFFSET+75)
#define EV_ACTION_FLOWER1 (EV_OFFSET+76)
#define EV_ACTION_FLOWER2 (EV_OFFSET+77)
#define EV_ACTION_DYNAMITE (EV_OFFSET+78)
#define EV_ACTION_DYNAMITE2 (EV_OFFSET+79)
#define EV_ACTION_T_DYNAMITE (EV_OFFSET+80)
#define EV_ACTION_FLOWER3 (EV_OFFSET+81)
#define EV_ACTION_R_BUILD1 (EV_OFFSET+82)
#define EV_ACTION_R_BUILD2 (EV_OFFSET+83)
#define EV_ACTION_R_BUILD3 (EV_OFFSET+84)
#define EV_ACTION_R_BUILD4 (EV_OFFSET+85)
#define EV_ACTION_R_MAKE1 (EV_OFFSET+86)
#define EV_ACTION_R_MAKE2 (EV_OFFSET+87)
#define EV_ACTION_R_MAKE3 (EV_OFFSET+88)
#define EV_ACTION_R_MAKE4 (EV_OFFSET+89)
#define EV_ACTION_R_BUILD5 (EV_OFFSET+90)
#define EV_ACTION_R_MAKE5 (EV_OFFSET+91)
#define EV_ACTION_BOATE (EV_OFFSET+92)
#define EV_ACTION_BOATS (EV_OFFSET+93)
#define EV_ACTION_BOATO (EV_OFFSET+94)
#define EV_ACTION_BOATN (EV_OFFSET+95)
#define EV_ACTION_BOATDE (EV_OFFSET+96)
#define EV_ACTION_BOATDS (EV_OFFSET+97)
#define EV_ACTION_BOATDO (EV_OFFSET+98)
#define EV_ACTION_BOATDN (EV_OFFSET+99)
#define EV_ACTION_BOATAE (EV_OFFSET+100)
#define EV_ACTION_BOATAS (EV_OFFSET+101)
#define EV_ACTION_BOATAO (EV_OFFSET+102)
#define EV_ACTION_BOATAN (EV_OFFSET+103)
#define EV_ACTION_MJEEP (EV_OFFSET+104)
#define EV_ACTION_DJEEP (EV_OFFSET+105)
#define EV_ACTION_FLAG (EV_OFFSET+106)
#define EV_ACTION_FLAG2 (EV_OFFSET+107)
#define EV_ACTION_FLAG3 (EV_OFFSET+108)
#define EV_ACTION_EXTRAIT (EV_OFFSET+109)
#define EV_ACTION_FABJEEP (EV_OFFSET+110)
#define EV_ACTION_FABMINE (EV_OFFSET+111)
#define EV_ACTION_MINE (EV_OFFSET+112)
#define EV_ACTION_MINE2 (EV_OFFSET+113)
#define EV_ACTION_R_BUILD6 (EV_OFFSET+114)
#define EV_ACTION_R_MAKE6 (EV_OFFSET+115)
#define EV_ACTION_E_RAYON (EV_OFFSET+116)
#define EV_ACTION_ELECTRO (EV_OFFSET+117)
#define EV_ACTION_ELECTROm (EV_OFFSET+118)
#define EV_ACTION_GRILLE (EV_OFFSET+119)
#define EV_ACTION_HOUSE (EV_OFFSET+120)
#define EV_ACTION_FABDISC (EV_OFFSET+121)
#define EV_ACTION_A_MORT (EV_OFFSET+122)
#define EV_ACTION_REPEAT (EV_OFFSET+123)
#define EV_ACTION_TELEPORTE00 (EV_OFFSET+124)
#define EV_ACTION_TELEPORTE10 (EV_OFFSET+125)
#define EV_ACTION_TELEPORTE01 (EV_OFFSET+126)
#define EV_ACTION_TELEPORTE11 (EV_OFFSET+127)
#define EV_ACTION_FABARMURE (EV_OFFSET+128)
#define EV_ACTION_MARMURE (EV_OFFSET+129)
#define EV_ACTION_DARMURE (EV_OFFSET+130)
#define EV_BUTTON0 (EV_OFFSET+200)
#define EV_BUTTON1 (EV_OFFSET+201)
#define EV_BUTTON2 (EV_OFFSET+202)
#define EV_BUTTON3 (EV_OFFSET+203)
#define EV_BUTTON4 (EV_OFFSET+204)
#define EV_BUTTON5 (EV_OFFSET+205)
#define EV_BUTTON6 (EV_OFFSET+206)
#define EV_BUTTON7 (EV_OFFSET+207)
#define EV_BUTTON8 (EV_OFFSET+208)
#define EV_BUTTON9 (EV_OFFSET+209)
#define EV_BUTTON10 (EV_OFFSET+210)
#define EV_BUTTON11 (EV_OFFSET+211)
#define EV_BUTTON12 (EV_OFFSET+212)
#define EV_BUTTON13 (EV_OFFSET+213)
#define EV_BUTTON14 (EV_OFFSET+214)
#define EV_BUTTON15 (EV_OFFSET+215)
#define EV_BUTTON16 (EV_OFFSET+216)
#define EV_BUTTON17 (EV_OFFSET+217)
#define EV_BUTTON18 (EV_OFFSET+218)
#define EV_BUTTON19 (EV_OFFSET+219)
#define EV_BUTTON20 (EV_OFFSET+220)
#define EV_BUTTON21 (EV_OFFSET+221)
#define EV_BUTTON22 (EV_OFFSET+222)
#define EV_BUTTON23 (EV_OFFSET+223)
#define EV_BUTTON24 (EV_OFFSET+224)
#define EV_BUTTON25 (EV_OFFSET+225)
#define EV_BUTTON26 (EV_OFFSET+226)
#define EV_BUTTON27 (EV_OFFSET+227)
#define EV_BUTTON28 (EV_OFFSET+228)
#define EV_BUTTON29 (EV_OFFSET+229)
#define EV_BUTTON30 (EV_OFFSET+230)
#define EV_BUTTON31 (EV_OFFSET+231)
#define EV_BUTTON32 (EV_OFFSET+232)
#define EV_BUTTON33 (EV_OFFSET+233)
#define EV_BUTTON34 (EV_OFFSET+234)
#define EV_BUTTON35 (EV_OFFSET+235)
#define EV_BUTTON36 (EV_OFFSET+236)
#define EV_BUTTON37 (EV_OFFSET+237)
#define EV_BUTTON38 (EV_OFFSET+238)
#define EV_BUTTON39 (EV_OFFSET+239)
#define EV_READ0 (EV_OFFSET+300)
#define EV_READ1 (EV_OFFSET+301)
#define EV_READ2 (EV_OFFSET+302)
#define EV_READ3 (EV_OFFSET+303)
#define EV_READ4 (EV_OFFSET+304)
#define EV_READ5 (EV_OFFSET+305)
#define EV_READ6 (EV_OFFSET+306)
#define EV_READ7 (EV_OFFSET+307)
#define EV_READ8 (EV_OFFSET+308)
#define EV_READ9 (EV_OFFSET+309)
#define EV_WRITE0 (EV_OFFSET+310)
#define EV_WRITE1 (EV_OFFSET+311)
#define EV_WRITE2 (EV_OFFSET+312)
#define EV_WRITE3 (EV_OFFSET+313)
#define EV_WRITE4 (EV_OFFSET+314)
#define EV_WRITE5 (EV_OFFSET+315)
#define EV_WRITE6 (EV_OFFSET+316)
#define EV_WRITE7 (EV_OFFSET+317)
#define EV_WRITE8 (EV_OFFSET+318)
#define EV_WRITE9 (EV_OFFSET+319)
#define EV_PHASE_INIT (EV_OFFSET+500)
#define EV_PHASE_PLAY (EV_OFFSET+501)
#define EV_PHASE_BUILD (EV_OFFSET+502)
#define EV_PHASE_READ (EV_OFFSET+503)
#define EV_PHASE_WRITE (EV_OFFSET+504)
#define EV_PHASE_INFO (EV_OFFSET+505)
#define EV_PHASE_BUTTON (EV_OFFSET+506)
#define EV_PHASE_TERM (EV_OFFSET+507)
#define EV_PHASE_WIN (EV_OFFSET+508)
#define EV_PHASE_LOST (EV_OFFSET+509)
#define EV_PHASE_STOP (EV_OFFSET+510)
#define EV_PHASE_SETUP (EV_OFFSET+511)
#define EV_PHASE_MUSIC (EV_OFFSET+512)
#define EV_PHASE_PLAYMOVIE (EV_OFFSET+513)
#define EV_PHASE_WINMOVIE (EV_OFFSET+514)
#define EV_PHASE_SCHOOL (EV_OFFSET+515)
#define EV_PHASE_MISSION (EV_OFFSET+516)
#define EV_PHASE_LASTWIN (EV_OFFSET+517)
#define EV_PHASE_WRITEp (EV_OFFSET+518)
#define EV_PHASE_SETUPp (EV_OFFSET+519)
#define EV_PHASE_REGION (EV_OFFSET+520)
#define EV_PHASE_INSERT (EV_OFFSET+521)
#define EV_PHASE_HISTORY0 (EV_OFFSET+522)
#define EV_PHASE_HISTORY1 (EV_OFFSET+523)
#define EV_PHASE_HELP (EV_OFFSET+524)
#define EV_PHASE_H0MOVIE (EV_OFFSET+525)
#define EV_PHASE_H1MOVIE (EV_OFFSET+526)
#define EV_PHASE_H2MOVIE (EV_OFFSET+527)
#define EV_PHASE_TESTCD (EV_OFFSET+528)
#define EV_PHASE_MANUEL (EV_OFFSET+529)
#define EV_PHASE_PRIVATE (EV_OFFSET+530)
#define EV_PHASE_UNDO (EV_OFFSET+531)
#define EV_PHASE_BYE (EV_OFFSET+532)
#define EV_PHASE_SKILL1 (EV_OFFSET+533)
#define EV_PHASE_SKILL2 (EV_OFFSET+534)
#define EV_PHASE_DEMO (EV_OFFSET+535)
#define EV_PHASE_INTRO1 (EV_OFFSET+536)
#define EV_PHASE_SETTINGS (EV_OFFSET+537)
#define EV_MUSIC_STOP (EV_OFFSET+550)
#define EV_PREV (EV_OFFSET+600)
#define EV_NEXT (EV_OFFSET+601)
#define EV_MOVIE (EV_OFFSET+602)
#define EV_MOVIE_PLAY (EV_OFFSET+603)
// clang-format on
// Conditions pour gagner.
typedef struct {
Sint16 bHachBlupi; // blupi sur dalle hachurée
Sint16 bHachPlanche; // planches sur dalle hachurée
Sint16 bStopFire; // feu éteint
Sint16 nbMinBlupi; // nb de blupi nécessaires
Sint16 nbMaxBlupi; // nb de blupi nécessaires
Sint16 bHomeBlupi; // blupi à la maison
Sint16 bKillRobots; // plus d'ennemis
Sint16 bHachTomate; // tomates sur dalle hachurée
Sint16 bHachMetal; // métal sur dalle hachurée
Sint16 bHachRobot; // robot sur dalle hachurée
Sint16 reserve[14];
} Term;