From 359f75e98bc83945d65b10727dcc93ca4e49ff28 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 11 Dec 2009 22:57:34 +0000 Subject: [PATCH] Update to ZDoom r2022: - fixed: Auto-COMPAT_SHORTTEX for IWADs must be set per IWAD, not in general for Doom. - added autodetection of Harmony's IWAD. - Added SnailMan's updated language.ita file. - Fixed: You should still be able to pick up ammo that has a max amount set at 0. - Added a few NULL screen checks. git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@655 b0f79afe-0144-0410-b225-9a4edf0717df --- docs/rh-log.txt | 51 ++++++++++++ src/c_console.cpp | 2 +- src/compatibility.cpp | 2 +- src/d_iwad.cpp | 25 ++++-- src/d_main.cpp | 2 +- src/d_main.h | 1 + src/g_shared/a_pickups.cpp | 2 +- src/gi.h | 1 + src/gl/models/gl_models.cpp | 33 ++++++++ wadsrc/static/language.ita | 151 ++++++++++++++++++++++++++++++++---- 10 files changed, 245 insertions(+), 25 deletions(-) diff --git a/docs/rh-log.txt b/docs/rh-log.txt index 64a48042..57df4f98 100644 --- a/docs/rh-log.txt +++ b/docs/rh-log.txt @@ -1,3 +1,54 @@ +December 11, 2009 (Changes by Graf Zahl) +- fixed: Auto-COMPAT_SHORTTEX for IWADs must be set per IWAD, not in general + for Doom. +- added autodetection of Harmony's IWAD. +- Added SnailMan's updated language.ita file. + +December 11, 2009 +- Fixed: You should still be able to pick up ammo that has a max amount set + at 0. +- Added a few NULL screen checks. + +December 6, 2009 (Changes by Graf Zahl) +- added some code that prevents overlapping monsters from getting stuck in + each other. PIT_CheckThing will return true under the following contitions + now: + * It was called from P_Move + * The actor that is blocking the move already overlaps with the monster + that is being moved. + * the move will take the 2 actors further apart. + +December 1, 2009 +- Added another surface to receive a copy of the top back buffer immediately + before it is presented. This effectively produces a copy of the front + buffer without the performance penalty of GetFrontBufferData, so fullscreen + wipe preparation and screenshots are faster now. At lower resolutions, + always copying the backbuffer does incur a slight FPS hit, but it's + practically free at higher resolutions. + +November 30, 2009 +- The initial wipe screen is now kept in video memory. I had previously + assumed that since the wipes only run at 35 FPS, the time spent DMA'ing + it from system to video memory would be acceptable. Apparently I was wrong. + In particular, updating the same surface several times probably has to + synchronize between each one, making melt particularly slower than it + needs to be. + +November 29, 2009 (Changes by Graf Zahl) +- fixed: Line_SetBlocking and Line_SetTextureScale were not in the list + of action specials used by DECORATE or MAPINFO. +- fixed: Teleport_NoStop was not in the line special function table. + +November 28, 2009 +- Fixed: The FPS meter cannot use I_MSTime(), because if the game is started + with +vid_fps 1, it can need the time before the timer is ready to start. +- Initialize TempRenderTexture and the back buffer to black upon creation. +- Fixed: Windowed mode always needs to draw to the temporary surface, even + when not gamma correcting, so that D3DFB::GetCurrentScreen() can read from + it. +- Use the spawned class's scale as default for ScriptedMarine instead of + DoomPlayer. + November 28, 2009 (Changes by Graf Zahl) - fixed: Morph weapons weren't destroyed because the code checked for them in the unmorphed player class. diff --git a/src/c_console.cpp b/src/c_console.cpp index ef06baa6..324fad66 100644 --- a/src/c_console.cpp +++ b/src/c_console.cpp @@ -1843,7 +1843,7 @@ static const char logbar[] = "\n<------------------------------->\n"; void C_MidPrint (FFont *font, const char *msg) { - if (StatusBar == NULL) + if (StatusBar == NULL || screen == NULL) return; if (msg != NULL) diff --git a/src/compatibility.cpp b/src/compatibility.cpp index a6bb4a38..059a8a4b 100644 --- a/src/compatibility.cpp +++ b/src/compatibility.cpp @@ -196,7 +196,7 @@ void CheckCompatibility(MapData *map) FCompatValues *flags; // When playing Doom IWAD levels force COMPAT_SHORTTEX. - if (Wads.GetLumpFile(map->lumpnum) == 1 && gameinfo.gametype == GAME_Doom && !(level.flags & LEVEL_HEXENFORMAT)) + if (Wads.GetLumpFile(map->lumpnum) == 1 && (gameinfo.flags & GI_COMPATSHORTTEX) && !(level.flags & LEVEL_HEXENFORMAT)) { ii_compatflags = COMPATF_SHORTTEX; ib_compatflags = 0; diff --git a/src/d_iwad.cpp b/src/d_iwad.cpp index 8a7b0dac..dae65379 100644 --- a/src/d_iwad.cpp +++ b/src/d_iwad.cpp @@ -58,18 +58,18 @@ EIWADType gameiwad; const IWADInfo IWADInfos[NUM_IWAD_TYPES] = { // banner text, autoname, fg color, bg color - { "Final Doom: TNT - Evilution", "TNT", MAKERGB(168,0,0), MAKERGB(168,168,168), GAME_Doom, "mapinfo/tnt.txt", GI_MAPxx }, - { "Final Doom: Plutonia Experiment", "Plutonia", MAKERGB(168,0,0), MAKERGB(168,168,168), GAME_Doom, "mapinfo/plutonia.txt", GI_MAPxx }, + { "Final Doom: TNT - Evilution", "TNT", MAKERGB(168,0,0), MAKERGB(168,168,168), GAME_Doom, "mapinfo/tnt.txt", GI_MAPxx | GI_COMPATSHORTTEX }, + { "Final Doom: Plutonia Experiment", "Plutonia", MAKERGB(168,0,0), MAKERGB(168,168,168), GAME_Doom, "mapinfo/plutonia.txt", GI_MAPxx | GI_COMPATSHORTTEX }, { "Hexen: Beyond Heretic", NULL, MAKERGB(240,240,240), MAKERGB(107,44,24), GAME_Hexen, "mapinfo/hexen.txt", GI_MAPxx }, { "Hexen: Deathkings of the Dark Citadel", "HexenDK", MAKERGB(240,240,240), MAKERGB(139,68,9), GAME_Hexen, "mapinfo/hexen.txt", GI_MAPxx }, { "Hexen: Demo Version", "HexenDemo",MAKERGB(240,240,240), MAKERGB(107,44,24), GAME_Hexen, "mapinfo/hexen.txt", GI_MAPxx | GI_SHAREWARE }, - { "DOOM 2: Hell on Earth", "Doom2", MAKERGB(168,0,0), MAKERGB(168,168,168), GAME_Doom, "mapinfo/doom2.txt", GI_MAPxx }, + { "DOOM 2: Hell on Earth", "Doom2", MAKERGB(168,0,0), MAKERGB(168,168,168), GAME_Doom, "mapinfo/doom2.txt", GI_MAPxx | GI_COMPATSHORTTEX }, { "Heretic Shareware", NULL, MAKERGB(252,252,0), MAKERGB(168,0,0), GAME_Heretic, "mapinfo/hereticsw.txt",GI_SHAREWARE }, { "Heretic: Shadow of the Serpent Riders", NULL, MAKERGB(252,252,0), MAKERGB(168,0,0), GAME_Heretic, "mapinfo/heretic.txt", GI_MENUHACK_EXTENDED }, { "Heretic", NULL, MAKERGB(252,252,0), MAKERGB(168,0,0), GAME_Heretic, "mapinfo/heretic.txt" }, - { "DOOM Shareware", NULL, MAKERGB(168,0,0), MAKERGB(168,168,168), GAME_Doom, "mapinfo/doom1.txt", GI_SHAREWARE }, - { "The Ultimate DOOM", "Doom1", MAKERGB(84,84,84), MAKERGB(168,168,168), GAME_Doom, "mapinfo/ultdoom.txt" }, - { "DOOM Registered", "Doom1", MAKERGB(84,84,84), MAKERGB(168,168,168), GAME_Doom, "mapinfo/doom1.txt" }, + { "DOOM Shareware", NULL, MAKERGB(168,0,0), MAKERGB(168,168,168), GAME_Doom, "mapinfo/doom1.txt", GI_SHAREWARE | GI_COMPATSHORTTEX }, + { "The Ultimate DOOM", "Doom1", MAKERGB(84,84,84), MAKERGB(168,168,168), GAME_Doom, "mapinfo/ultdoom.txt", GI_COMPATSHORTTEX }, + { "DOOM Registered", "Doom1", MAKERGB(84,84,84), MAKERGB(168,168,168), GAME_Doom, "mapinfo/doom1.txt", GI_COMPATSHORTTEX }, { "Strife: Quest for the Sigil", NULL, MAKERGB(224,173,153), MAKERGB(0,107,101), GAME_Strife, "mapinfo/strife.txt", GI_MAPxx }, { "Strife: Teaser (Old Version)", NULL, MAKERGB(224,173,153), MAKERGB(0,107,101), GAME_Strife, "mapinfo/strife.txt", GI_MAPxx | GI_SHAREWARE }, { "Strife: Teaser (New Version)", NULL, MAKERGB(224,173,153), MAKERGB(0,107,101), GAME_Strife, "mapinfo/strife.txt", GI_MAPxx | GI_SHAREWARE | GI_TEASER2 }, @@ -81,6 +81,7 @@ const IWADInfo IWADInfos[NUM_IWAD_TYPES] = { "Chex(R) Quest", "Chex1", MAKERGB(255,255,0), MAKERGB(0,192,0), GAME_Chex, "mapinfo/chex.txt" }, { "Chex(R) Quest 3", "Chex3", MAKERGB(255,255,0), MAKERGB(0,192,0), GAME_Chex, "mapinfo/chex3.txt" }, { "Action Doom 2: Urban Brawl", "UrbanBrawl",MAKERGB(168,168,0), MAKERGB(168,0,0), GAME_Doom, "mapinfo/doom2.txt" }, + { "Harmony", "Harmony", MAKERGB(110,180,230), MAKERGB(69,79,126), GAME_Doom, "mapinfo/doom2.txt" }, //{ "ZDoom Engine", NULL, MAKERGB(168,0,0), MAKERGB(168,168,168) }, }; @@ -111,6 +112,7 @@ static const char *IWADNames[] = "chex.wad", "chex3.wad", "action2.wad", + "harm1.wad", #ifdef unix "DOOM2.WAD", // Also look for all-uppercase names "PLUTONIA.WAD", @@ -134,6 +136,7 @@ static const char *IWADNames[] = "CHEX.WAD", "CHEX3.WAD", "ACTION2.WAD", + "HARM1.WAD", #endif NULL }; @@ -169,6 +172,9 @@ static EIWADType ScanIWAD (const char *iwad) "CYCLA1", "FLMBA1", "MAPINFO", + "0HAWK01", + "0CARA3", + "0NOSE1", { 'G','A','M','E','I','N','F','O' }, "E2M1","E2M2","E2M3","E2M4","E2M5","E2M6","E2M7","E2M8","E2M9", "E3M1","E3M2","E3M3","E3M4","E3M5","E3M6","E3M7","E3M8","E3M9", @@ -199,6 +205,9 @@ static EIWADType ScanIWAD (const char *iwad) Check_Cycla1, Check_Flmba1, Check_Mapinfo, + Check_Hawk, + Check_Car, + Check_Nose, Check_Gameinfo, Check_e2m1 }; @@ -287,6 +296,10 @@ static EIWADType ScanIWAD (const char *iwad) { return IWAD_ActionDoom2; } + else if (lumpsfound[Check_Hawk] && lumpsfound[Check_Car] && lumpsfound[Check_Nose]) + { + return IWAD_Harmony; + } else if (lumpsfound[Check_FreeDoom]) { // Is there a 100% reliable way to tell FreeDoom and FreeDM diff --git a/src/d_main.cpp b/src/d_main.cpp index 70db2f05..0aa0b1ba 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -560,7 +560,7 @@ void D_Display () bool wipe; bool hw2d; - if (nodrawers) + if (nodrawers || screen == NULL) return; // for comparative timing / profiling cycle_t cycles; diff --git a/src/d_main.h b/src/d_main.h index e9af860a..744e76bc 100644 --- a/src/d_main.h +++ b/src/d_main.h @@ -81,6 +81,7 @@ enum EIWADType IWAD_ChexQuest, IWAD_ChexQuest3, IWAD_ActionDoom2, + IWAD_Harmony, IWAD_Custom, NUM_IWAD_TYPES diff --git a/src/g_shared/a_pickups.cpp b/src/g_shared/a_pickups.cpp index eb003779..201d83e5 100644 --- a/src/g_shared/a_pickups.cpp +++ b/src/g_shared/a_pickups.cpp @@ -1190,7 +1190,7 @@ bool AInventory::TryPickup (AActor *&toucher) ItemFlags &= ~IF_PICKUPGOOD; GoAwayAndDie (); } - else if (MaxAmount == 0) + else if (MaxAmount == 0 && !IsKindOf(RUNTIME_CLASS(AAmmo))) { // Special case: If an item's MaxAmount is 0, you can still pick it // up if it is autoactivate-able. diff --git a/src/gi.h b/src/gi.h index b46be119..0ada094c 100644 --- a/src/gi.h +++ b/src/gi.h @@ -42,6 +42,7 @@ #define GI_SHAREWARE 0x00000002 #define GI_MENUHACK_EXTENDED 0x00000004 // (Heretic) #define GI_TEASER2 0x00000008 // Alternate version of the Strife Teaser +#define GI_COMPATSHORTTEX 0x00000010 // always force COMPAT_SHORTTEX for IWAD maps. #include "gametype.h" diff --git a/src/gl/models/gl_models.cpp b/src/gl/models/gl_models.cpp index 1e025255..d47b0eae 100644 --- a/src/gl/models/gl_models.cpp +++ b/src/gl/models/gl_models.cpp @@ -586,8 +586,41 @@ void gl_RenderModel(GLSprite * spr, int cm) } Matrix3x4 ModelToWorld; + Matrix3x4 LightTransform; Matrix3x4 *mat; + // The light transform matrix only contains the inverse rotations and scalings + /* + LightTransform.MakeIdentity(); + + gl.Scalef( + 1./FIXED2FLOAT(spr->actor->scaleX) * smf->xscale, + 1./FIXED2FLOAT(spr->actor->scaleY) * smf->zscale, // y scale for a sprite means height, i.e. z in the world! + 1./FIXED2FLOAT(spr->actor->scaleX) * smf->yscale); + + // [BB] Workaround for the missing pitch information. + if ( (smf->flags & MDL_PITCHFROMMOMENTUM) ) + { + const double x = static_cast(spr->actor->velx); + const double y = static_cast(spr->actor->vely); + const double z = static_cast(spr->actor->velz); + // [BB] Calculate the pitch using spherical coordinates. + const double pitch = atan( z/sqrt(x*x+y*y) ) / M_PI * 180; + + LightTransform.Rotate(0,0,1,-pitch); + } + if( smf->flags & MDL_ROTATING ) + { + float offsetAngle = 0.; + const float time = smf->rotationSpeed*GetTimeFloat()/200.; + offsetAngle = ( (time - static_cast(time)) *360. ); + + LightTransform.Rotate(smf->xrotate, smf->yrotate, smf->zrotate, -offsetAngle); + } + LightTransform.Rotate(0,1,0, ANGLE_TO_FLOAT(spr->actor->angle)); + */ + + if (gl_fogmode != 2) { // Model space => World space diff --git a/wadsrc/static/language.ita b/wadsrc/static/language.ita index b284a2e4..a4623799 100644 --- a/wadsrc/static/language.ita +++ b/wadsrc/static/language.ita @@ -31,6 +31,25 @@ QUITMSG12 = "senti amico, esci adesso\ne perdi il tuo body count!"; QUITMSG13 = "esci pure. quanto tornerai\nti aspettero' con un bastone."; QUITMSG14 = "sei fortunato che non ti picchi\nper aver pensato di andartene."; +// Quit Strife messages +QUITMSG15 = "dove stai andando?!\ne la ribellione?"; +QUITMSG16 = "macellus interruptus...\nche presa in giro!"; +QUITMSG17 = "ma tu sei la speranza\n-- la mia unica possibilita'!!"; +QUITMSG18 = "nessuno gira le spalle a Blackbird."; +QUITMSG19 = "pensavo tu fossi diverso..."; +QUITMSG20 = "ma bravo! uccidi e scappi!"; +QUITMSG21 = "puoi uscire...\nma non puoi nasconderti..."; +QUITMSG22 = "eehi, che problema c'e'?\nla mamma ha detto che e' ora di cena?"; + +// Quit Chex messages +QUITMSG23 = "Non uscire ora, ci sono ancora\nflemoidi a piede libero!"; +QUITMSG24 = "Non arrenderti -- i flemoidi\nci sopraffaranno!"; +QUITMSG25 = "Non andartene ora.\nCi serve il tuo aiuto!"; +QUITMSG26 = "Spero tu stia solo facendo un\nbreak per prendere un Chex(R) party mix."; +QUITMSG27 = "non uscire ora!\nCi serve il tuo aiuto!"; +QUITMSG28 = "Non abbandonare la\nFederazione Intergalattica dei Cereali!"; +QUITMSG29 = "Il vero guerriero Chex(R)\nnon si arrenderebbe cosi' in fretta!"; + LOADNET = "non puoi caricare una partita durante un netgame!\n\npremi un tasto."; QLOADNET = "non puoi fare un quickload durante un netgame!\n\npremi un tasto."; QSAVESPOT = "non hai ancora scelto uno slot per il quicksave!\n\npremi un tasto."; @@ -91,6 +110,7 @@ PD_REDK = "Ti serve una chiave rossa per aprire questa porta"; PD_YELLOWK = "Ti serve una chiave gialla per aprire questa porta"; GGSAVED = "gioco salvato"; HUSTR_MSGU = "[Messaggio non inviato]"; +PICKUP_PISTOL_DROPPED = "Raccolta una pistola."; // Level names HUSTR_E1M1 = "E1M1: Hangar"; @@ -254,6 +274,8 @@ STSTR_BEHOLD = "inVuln, BerSerk, Invisib, Tuta anti-Rad, MAppa, o Amplif-Luce"; STSTR_BEHOLDX = "Power-up concesso/tolto"; STSTR_CHOPPERS = "Ora vai e segali tutti!"; STSTR_CLEV = "Cambio di livello...\n"; +TXT_BUDDHAON = "Modalita' Buddha attivata"; +TXT_BUDDHAOFF = "Modalita' Buddha disattivata"; E1TEXT = "Una volta che hai eliminato i cattivi e\n" @@ -559,13 +581,15 @@ PD_BLUESO = "ti serve una chiave-teschio blu per attivare questo oggetto "; PD_REDSO = "ti serve una chiave-teschio rossa per attivare questo oggetto "; PD_YELLOWSO = "ti serve una chiave-teschio gialla per attivare questo oggetto "; +PD_ALLKEYS = "Ti servono tutte le chiavi"; + // Gameflow messages TXT_FRAGLIMIT = "Fraglimit raggiunto."; TXT_TIMELIMIT = "Timelimit raggiunto."; // Spree messages -SPREEKILLSELF = "%o stava bene finche' %g non si e' ucciso!"; +SPREEKILLSELF = "%o stava andando bene finche' non si e' ucciso da solo!"; SPREEOVER = "La sequela di frag di %o e' stata terminata da %k"; SPREE5 = "%k e' preda di un momento omicida!"; SPREE10 = "%k sta facendo un massacro!"; @@ -578,6 +602,10 @@ MULTI2 = "Frag doppio!"; MULTI3 = "Frag multiplo!"; MULTI4 = "Frag ultra!"; MULTI5 = "Frag DA PAURA!"; +//MULTI2 = "Double kill!"; +//MULTI3 = "Multi kill!"; +//MULTI4 = "Ultra kill!"; +//MULTI5 = "Monster kill!"; // Obituary strings // First the self-kills, then the other-kills @@ -588,24 +616,24 @@ OB_EXIT = "%o ha provato a uscire."; OB_WATER = "%o non sapeva nuotare."; OB_SLIME = "%o e' mutato."; OB_LAVA = "%o si e' sciolto."; -OB_BARREL = "%o e' esploso."; +OB_BARREL = "%o ha fatto bum."; OB_SPLASH = "%o si e' trovato nel posto sbagliato."; OB_R_SPLASH = "%o avrebbe dovuto allontanarsi."; OB_ROCKET = "%o avrebbe dovuto allontanarsi."; OB_KILLEDSELF = "%o ha ucciso se stesso."; -OB_STEALTHBABY = "%o pensava che %g avesse visto un arachnotron."; -OB_STEALTHVILE = "%o pensava che %g avesse visto un Arch-Vile."; -OB_STEALTHBARON = "%o pensava che %g avesse visto un Barone Infernale."; -OB_STEALTHCACO = "%o pensava che %g avesse visto un cacodemone."; -OB_STEALTHCHAINGUY = "%o pensava che %g avesse visto uno zombie commando."; -OB_STEALTHDEMON = "%o pensava che %g avesse visto un demone."; -OB_STEALTHKNIGHT = "%o pensava che %g avesse visto un Cavaliere Infernale."; -OB_STEALTHIMP = "%o pensava che %g avesse visto un imp."; -OB_STEALTHFATSO = "%o pensava che %g avesse visto un mancubo."; -OB_STEALTHUNDEAD = "%o pensava che %g avesse visto un revenant."; -OB_STEALTHSHOTGUY = "%o pensava che %g avesse visto un sergente."; -OB_STEALTHZOMBIE = "%o pensava che %g avesse visto uno zombie."; +OB_STEALTHBABY = "a %o sembrava di aver visto un arachnotron."; +OB_STEALTHVILE = "a %o sembrava di aver visto un Arch-Vile."; +OB_STEALTHBARON = "a %o sembrava di aver visto un Barone Infernale."; +OB_STEALTHCACO = "a %o sembrava di aver visto un cacodemone."; +OB_STEALTHCHAINGUY = "a %o sembrava di aver visto uno zombie commando."; +OB_STEALTHDEMON = "a %o sembrava di aver visto un demone."; +OB_STEALTHKNIGHT = "a %o sembrava di aver visto un Cavaliere Infernale."; +OB_STEALTHIMP = "a %o sembrava di aver visto un imp."; +OB_STEALTHFATSO = "a %o sembrava di aver visto un mancubo."; +OB_STEALTHUNDEAD = "a %o sembrava di aver visto un revenant."; +OB_STEALTHSHOTGUY = "a %o sembrava di aver visto un sergente."; +OB_STEALTHZOMBIE = "a %o sembrava di aver visto uno zombie."; OB_UNDEADHIT = "%o e' stato massacrato da un revenant."; OB_IMPHIT = "%o e' stato squarciato da un imp."; OB_CACOHIT = "%o si e' avvicinato troppo a un cacodemone."; @@ -629,6 +657,7 @@ OB_BABY = "%o ha permesso che un arachnotron l'uccidesse."; OB_CYBORG = "%o e' stato spiaccicato da un Cyberdemonio."; OB_WOLFSS = "%o ha incontrato un Nazista."; +OB_DOG = "%o e' stato sbranato da un cane."; OB_CHICKEN = "%o e' stato beccato a morte."; OB_BEAST = "%o e' stato carbonizzato da una bestia."; OB_CLINK = "%o e' stato squarciato da un lapillo."; @@ -667,7 +696,7 @@ OB_MONTELEFRAG = "%o si e' fatto telefraggare."; OB_DEFAULT = "%o e' morto."; OB_FRIENDLY1 = "%k falcia via un compagno."; -OB_FRIENDLY2 = "%k controlla gli occhiali di %p."; +OB_FRIENDLY2 = "%k si controlla gli occhiali."; OB_FRIENDLY3 = "%k regala un frag all'altro team."; OB_FRIENDLY4 = "%k perde un altro amico."; @@ -1016,3 +1045,95 @@ BBA_SCROTUM = "%o ha subito la separazione dello scroto"; BBA_POPULATION = "%o si e' offerto per il controllo della popolazione"; BBA_SUICIDE = "%o si e' suicidato"; BBA_DARWIN = "%o ha ricevuto il Darwin Award"; + +// Chex Quest Strings +CHUSTR_E1M1 = "E1M1: Zona di Atterraggio"; +CHUSTR_E1M2 = "E1M2: Struttura di Immagazzinamento"; +CHUSTR_E1M3 = "E1M3: Laboratorio Sperimentale"; +CHUSTR_E1M4 = "E1M4: Arboreto"; +CHUSTR_E1M5 = "E1M5: Caverne di Bazoik"; + +CE1TEXT = + "Missione compiuta.\n" + "\n" + "Sei preparato per la prossima missione?\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "Premi il tasto 'esc' per continuare..."; + +CE2TEXT = "Ce l'hai fatta!"; +CE3TEXT = "Meraviglioso!"; +CE4TEXT = "Fantastico"; + +CLOADNET = "non puoi caricare una quest durante una net quest!\n\npress a key."; +CQSPROMPT = "sovrascrivere il salvataggio\n\n'%s'?\n\npremi y oppure n."; +CQLOADNET = "non puoi fare un quickload durante una netquest!\n\npremi un tasto."; +CQLPROMPT = "vuoi fare un quickload della quest\n\n'%s'?\n\npremi y oppure n."; +CNEWGAME = "non puoi iniziare una nuova quest\ndurante una quest in rete.\n\npremi un tasto."; + +CNIGHTMARE = "Attento, sara' dura.\nVuoi continuare?\n\npremi y oppure n."; + +CSWSTRING = "questa e' Chex(R) Quest. cerca\n\nfuturi livelli su www.chexquest.com.\n\npremi un tasto."; + +CNETEND = "non puoi terminare una netquest!\n\npremi un tasto"; +CENDGAME = "sei sicuro di voler terminare la quest?\n\npremi y oppure n."; + +GOTCHEXARMOR = "Raccolta un'Armatura Chex(R)."; +GOTSUPERCHEXARMOR = "Raccolta la Super Armatura Chex(R)!"; +GOTWATER = "Raccolto un bicchiere d'acqua."; +GOTREPELLENT = "Raccolto del repellente allo slime."; +GOTBREAKFAST = "Colazione da supercarica!"; +GOTCBLUEKEY = "Raccolta una chiave blu."; +GOTCYELLOWKEY = "Raccolta una chiave gialla."; +GOTCREDKEY = "Raccolta una chiave rossa."; +GOTFRUIT = "Raccolto un vassoio di frutta."; +GOTVEGETABLESNEED = "La verdura ti fa DAVVERO bene!"; +GOTVEGETABLES = "Raccolto un vassoio di verdura."; +GOTSLIMESUIT = "Raccolto un vestito a prova di slime"; +GOTCHEXMAP = "Trovata una mappa computerizzata"; + +GOTZORCHRECHARGE = "Raccolta una ricarica di mini zorch."; +GOTMINIZORCHPACK = "Raccolta una scatola di mini zorch."; +GOTPROPULSORRECHARGE = "Raccolta una ricarica di zorch a propulsione."; +GOTPROPULSORPACK = "Raccolta una scatola di zorch a propulsione."; +GOTPHASINGZORCHERRECHARGE = "Raccolta una ricarica per zorcher a phasing"; +GOTPHASINGZORCHERPACK = "Raccolta una scatola per zorcher a phasing."; +GOTLARGEZORCHERRECHARGE = "Raccolta una ricarica per zorcher grande."; +GOTLARGEZORCHERPACK = "Raccolta una scatola per zorcher grande."; +GOTZORCHPACK = "Raccolto uno ZorchZaino!"; + +GOTLAZDEVICE = "Hai trovato il dispositivo LAZ! Cavolo!"; +GOTRAPIDZORCHER = "Hai trovato il zorcher rapido!"; +GOTSUPERBOOTSPORK = "Hai trovato il super bootspork!"; +GOTZORCHPROPULSOR = "Hai trovato il propulsore zorch!"; +GOTPHASINGZORCHER = "Hai trovato il zorcher a phasing!"; +GOTLARGEZORCHER = "Hai trovato il zorcher grande!"; +GOTSUPERLARGEZORCHER = "Hai trovato il mega zorcher!"; +GOTMINIZORCHER = "Raccolto un mini zorcher."; + +STSTR_CDQDON = "Modalita' invincibile attivata"; +STSTR_CDQDOFF = "Modalita' invincibile disattivata"; +STSTR_CFAADDED = "Zorch aggiunto"; +STSTR_CKFAADDED = "Super Zorch aggiunto"; +STSTR_CCHOPPERS = "... Mangia Chex(R)!"; + +OB_COMMONUS = "%o e' stato coperto di slime da un flemoid."; +OB_BIPEDICUS = "%o e' stato coperto di slime da un bipedicus."; +OB_BIPEDICUS2 = "%o e' stato coperto di slime da un bipedicus corazzato."; +OB_CYCLOPTIS = "%o e' stato coperto di slime da un cycloptis."; +OB_FLEMBRANE = "%o e' stato sconfitto dalla Flembrana."; + +OB_MPSPOON = "%o e' stato imboccato da %k."; +OB_MPBOOTSPORK = "%o e' stato mischiato ben bene dal bootspork di %k."; +OB_MPZORCH = "%o e' stato zorchato da %k."; +OB_MPMEGAZORCH = "%o e' stato colpito dal mega-zorcher di %k."; +OB_MPRAPIDZORCH = "%o e' stato rapid-zorchato da %k."; +OB_MPPROPULSOR = "%o e' stato zorchato dal propulsore di %k."; +OB_MPP_SPLASH = "%o e' stato colpito dal propulsore di %k."; +OB_MPPHASEZORCH = "%o e' stato phase-zorchato da %k."; +OB_MPLAZ_BOOM = "%o e' stato preda del dispositivo LAZ di %k."; +OB_MPLAZ_SPLASH = "%o e' stato lazzato da %k.";