Merge branch 'back_to_basics2' into InputStuffs

This commit is contained in:
Mitchell Richters 2020-09-08 06:26:32 +10:00
commit 92443806af
20 changed files with 156 additions and 59 deletions

View file

@ -319,7 +319,7 @@ bool S_ChangeMusic(const char* musicname, int order, bool looping, bool force)
if (!force && PlayList.GetNumSongs())
{ // Don't change if a playlist is active
return false;
return true; // do not report an error here.
}
// Do game specific lookup.
FString musicname_;

View file

@ -105,9 +105,8 @@ CCMD(togglefollow)
CCMD(togglerotate)
{
am_rotate = !am_rotate;
auto msg = am_followplayer ? GStrings("TXT_ROTATE_ON") : GStrings("TXT_ROTATE_OFF");
auto msg = am_rotate ? GStrings("TXT_ROTATE_ON") : GStrings("TXT_ROTATE_OFF");
Printf(PRINT_NOTIFY, "%s\n", msg);
if (am_followplayer) follow_x = INT_MAX;
}
@ -213,7 +212,7 @@ void AutomapControl()
}
am_zoomdir = 0;
double j = interval * (120. / 1000);
double j = interval * 35. / gZoom;
if (buttonMap.ButtonDown(gamefunc_Enlarge_Screen))
gZoom += (int)fmulscale6(j, max(gZoom, 256));
@ -242,8 +241,8 @@ void AutomapControl()
momx += mulscale9(panhorz, sintable[(follow_a) & 2047]);
momy += mulscale9(panhorz, sintable[(follow_a + 1536) & 2047]);
follow_x += int((momx * j) / (gZoom * 4000.));
follow_y += int((momy * j) / (gZoom * 4000.));
follow_x += int(momx * j);
follow_y += int(momy * j);
if (x_min_bound == INT_MAX) CalcMapBounds();
follow_x = clamp(follow_x, x_min_bound, x_max_bound);

View file

@ -197,7 +197,7 @@ int Mus_Play(const char *mapname, const char *fn, bool loop)
if (!MusicEnabled())
{
return 0;
return 1;
}
// Allow per level music substitution.

View file

@ -676,7 +676,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#define kTile654 654
#define kTile655 655
#define kTile656 656
#define kTile657 657
#define kTileStatusBar 657
#define kTile658 658
#define kTile659 659
#define kTile660 660

View file

@ -545,8 +545,13 @@ private:
int flags = DI_ITEM_RELCENTER;
int x = ChunkXpos[nFrameBase];
int y = ChunkYpos[nFrameBase] + ebx;
double x = ChunkXpos[nFrameBase];
double y = ChunkYpos[nFrameBase] + ebx;
if (x > 0)
{
if (xoffset == 0) { x += 0.5; y += 0.5; }
}
if (hud_size <= Hud_StbarOverlay)
{
@ -710,7 +715,7 @@ private:
{
// draw the main bar itself
BeginStatusBar(320, 200, 40);
DrawStatusSequence(nStatusSeqOffset, 0, 0);
DrawGraphic(tileGetTexture(kTileStatusBar), 160, 200, DI_ITEM_CENTER_BOTTOM, 1, -1, -1, 1, 1);
}
else if (hud_size == Hud_Mini)
{

View file

@ -767,6 +767,7 @@ class DDukeLevelSummaryScreen : public DScreenJob
const char* lastmapname;
int gfx_offset;
int bonuscnt = 0;
int speech = -1;
void SetTotalClock(int tc)
{
@ -911,7 +912,8 @@ public:
bonuscnt++;
S_PlaySound(SHOTGUN_COCK, CHAN_AUTO, CHANF_UI);
static const uint16_t speeches[] = { BONUS_SPEECH1, BONUS_SPEECH2, BONUS_SPEECH3, BONUS_SPEECH4};
S_PlaySound(speeches[(rand() & 3)], CHAN_AUTO, CHANF_UI, 1);
speech = speeches[(rand() & 3)];
S_PlaySound(speech, CHAN_AUTO, CHANF_UI, 1);
}
case 1:
case 4:
@ -926,7 +928,7 @@ public:
}
else if (currentclock > (10240 + 120L))
{
if (!skiprequest && soundEngine->GetSoundPlayingInfo(SOURCE_None, nullptr, -1)) return 1;
if (speech > 0 && !skiprequest && soundEngine->GetSoundPlayingInfo(SOURCE_None, nullptr, speech)) return 1;
return 0;
}
else

View file

@ -358,6 +358,7 @@ class DRRLevelSummaryScreen : public DScreenJob
const char* lastmapname;
int gfx_offset;
int bonuscnt = 0;
int speech = -1;
void SetTotalClock(int tc)
{
@ -502,13 +503,14 @@ public:
{
bonuscnt++;
S_PlaySound(425, CHAN_AUTO, CHANF_UI);
S_PlaySound(BONUS_SPEECH1 + (rand() & 3), CHAN_AUTO, CHANF_UI);
speech = BONUS_SPEECH1 + (rand() & 3);
S_PlaySound(speech, CHAN_AUTO, CHANF_UI);
}
}
}
else if (currentclock > (10240 + 120L))
{
if (!skiprequest && soundEngine->GetSoundPlayingInfo(SOURCE_None, nullptr, -1)) return 1;
if (speech > 0 && !skiprequest && soundEngine->GetSoundPlayingInfo(SOURCE_None, nullptr, speech)) return 1;
return 0;
}

View file

@ -473,7 +473,7 @@ SKIPWALLCHECK:
hittype[j].picnum = FLAMETHROWERFLAME;
}
if (s->picnum != SHRINKSPARK && (!isWorldTour() && s->picnum != LAVAPOOL))
if (s->picnum != SHRINKSPARK && (!isWorldTour() || s->picnum != LAVAPOOL))
{
if (d < r / 3)
{
@ -491,7 +491,7 @@ SKIPWALLCHECK:
hittype[j].extra = hp1 + (krand() % (hp2 - hp1));
}
if (sprite[j].picnum != TANK && sprite[j].picnum != ROTATEGUN && sprite[j].picnum != RECON && sprite[j].picnum != BOSS1 && sprite[j].picnum != BOSS2 && sprite[j].picnum != BOSS3 && sprite[j].picnum != BOSS4)
if (sprite[j].picnum != TANK && sprite[j].picnum != ROTATEGUN && sprite[j].picnum != RECON && !bossguy(&sprite[j]))
{
if (sj->xvel < 0) sj->xvel = 0;
sj->xvel += (s->extra << 2);
@ -2807,6 +2807,8 @@ static void flamethrowerflame(int i)
int dax = s->x;
int day = s->y;
int daz = s->z;
int xvel = s->xvel;
int zvel = s->zvel;
getglobalz(i);
@ -2823,8 +2825,8 @@ static void flamethrowerflame(int i)
return;
}
j = fi.movesprite(i, (s->xvel * (sintable[(s->ang + 512) & 2047])) >> 14,
(s->xvel * (sintable[s->ang & 2047])) >> 14, s->zvel, CLIPMASK1);
j = fi.movesprite(i, (xvel * (sintable[(s->ang + 512) & 2047])) >> 14,
(xvel * (sintable[s->ang & 2047])) >> 14, s->zvel, CLIPMASK1);
if (s->sectnum < 0)
{
@ -2849,7 +2851,7 @@ static void flamethrowerflame(int i)
}
if (j != 0) {
s->xvel = s->yvel = 0;
s->xvel = s->yvel = s->zvel = 0;
if ((j & kHitTypeMask) == kHitSprite)
{
j &= (MAXSPRITES - 1);

View file

@ -301,6 +301,7 @@ enum sflags_t
SFLAG_BADGUY = 0x00000020,
SFLAG_NOPAL = 0x00000040,
SFLAG_FORCEAUTOAIM = 0x00000080,
SFLAG_BOSS = 0x00000100,
SFLAG_USEACTIVATOR = 0x00000200,
SFLAG_NOFLOORSHADOW = 0x00001000, // for temp. internal use, per-tile flag not checked
SFLAG_BADGUYSTAYPUT = 0x00008000,

View file

@ -81,13 +81,14 @@ void initactorflags_d()
// Some flags taken from RedNukem's init code. This is a good start as any to reduce the insane dependency on tile numbers for making decisions in the play code. A lot more will be added here later.
setflag(SFLAG_NODAMAGEPUSH, { TANK, BOSS1, BOSS2, BOSS3, BOSS4, RECON, ROTATEGUN });
setflag(SFLAG_BOSS, { BOSS1, BOSS2, BOSS3, BOSS4 });
setflag(SFLAG_NOWATERDIP, { OCTABRAIN, COMMANDER, DRONE });
setflag(SFLAG_GREENSLIMEFOOD, { LIZTROOP, LIZMAN, PIGCOP, NEWBEAST });
if (isWorldTour())
{
setflag(SFLAG_INTERNAL_BADGUY, { FIREFLY });
setflag(SFLAG_INTERNAL_BADGUY|SFLAG_NODAMAGEPUSH, { BOSS5, BOSS5STAYPUT, BOSS2STAYPUT, BOSS3STAYPUT });
setflag(SFLAG_INTERNAL_BADGUY|SFLAG_NODAMAGEPUSH|SFLAG_BOSS, { BOSS5 });
}
settileflag(TFLAG_WALLSWITCH, {

View file

@ -1799,7 +1799,7 @@ int ConCompiler::parsecommand()
max_ammo_amount[8] = parseone();
max_ammo_amount[9] = parseone();
if (isPlutoPak() || isRR()) max_ammo_amount[11] = parseone();
if (isRR() || isWorldTour()) max_ammo_amount[12] = parseone();
if (isRR()) max_ammo_amount[12] = parseone();
camerashitable = parseone();
numfreezebounces = parseone();
freezerhurtowner = parseone();
@ -1808,6 +1808,7 @@ int ConCompiler::parsecommand()
spriteqamount = clamp(parseone(), 0, 1024);
lasermode = parseone();
}
if (isWorldTour()) max_ammo_amount[12] = parseone();
if (isRRRA())
{
max_ammo_amount[13] = parseone();

View file

@ -175,8 +175,7 @@ int animateknuckles(int gs, int snum, double hard_landing, double look_anghalf,
else
pal = sector[ps[snum].cursectnum].floorpal;
auto pic = isWorldTour() ? CRACKKNUCKLESWIDE : CRACKKNUCKLES;
hud_drawpal(160 + (getavel(snum) / 16.) - look_anghalf, looking_arc + 180 - horiz16th, pic + knuckle_frames[ps[snum].knuckle_incs >> 1], gs, 4, pal);
hud_drawpal(160 + (getavel(snum) / 16.) - look_anghalf, looking_arc + 180 - horiz16th, CRACKKNUCKLES + knuckle_frames[ps[snum].knuckle_incs >> 1], gs, 4, pal);
return 1;
}
@ -477,7 +476,7 @@ void displayweapon_d(int snum, double smoothratio)
if (*kb < (isWW2GI() ? aplWeaponTotalTime[RPG_WEAPON][snum] : 8))
{
hud_drawpal(weapon_xoffset + 164, (looking_arc * 2.) + 176 - gun_pos,
rpgpic + (*kb >> 1), gs, o | pin, pal);
RPGGUN + (*kb >> 1), gs, o | pin, pal);
}
else if (isWW2GI())
{
@ -852,46 +851,46 @@ void displayweapon_d(int snum, double smoothratio)
else
{
pin = (isWW2GI() || isWorldTour() || (duke3d_globalflags & DUKE3D_NO_WIDESCREEN_PINNING)) ? 0 : RS_ALIGN_R;
auto pic = isWorldTour() ? FIRSTGUNRELOAD - 4 : FIRSTGUN; // I do not want to edit all code below
auto pic_5 = isWorldTour() ? FIRSTGUNRELOADWIDE : FIRSTGUN+5;
const int WEAPON2_RELOAD_TIME = 50;
auto reload_time = isWW2GI() ? aplWeaponReload[PISTOL_WEAPON][snum] : WEAPON2_RELOAD_TIME;
if (*kb < 10)
hud_drawpal(194 - look_anghalf, looking_arc + 230 - gun_pos, pic + 4, gs, o|pin, pal);
hud_drawpal(194 - look_anghalf, looking_arc + 230 - gun_pos, FIRSTGUN + 4, gs, o|pin, pal);
else if (*kb < 15)
{
hud_drawpal(244 - (kickback_pic * 8.) - look_anghalf, looking_arc + 130 - gun_pos + (kickback_pic * 16.), pic + 6, gs, o | pin, pal);
hud_drawpal(224 - look_anghalf, looking_arc + 220 - gun_pos, pic + 5, gs, o | pin, pal);
hud_drawpal(244 - (kickback_pic * 8.) - look_anghalf, looking_arc + 130 - gun_pos + (kickback_pic * 16.), FIRSTGUN + 6, gs, o | pin, pal);
hud_drawpal(224 - look_anghalf, looking_arc + 220 - gun_pos, pic_5, gs, o | pin, pal);
}
else if (*kb < 20)
{
hud_drawpal(124 + (kickback_pic * 2.) - look_anghalf, looking_arc + 430 - gun_pos - (kickback_pic * 8.), pic + 6, gs, o | pin, pal);
hud_drawpal(224 - look_anghalf, looking_arc + 220 - gun_pos, pic + 5, gs, o | pin, pal);
hud_drawpal(124 + (kickback_pic * 2.) - look_anghalf, looking_arc + 430 - gun_pos - (kickback_pic * 8.), FIRSTGUN + 6, gs, o | pin, pal);
hud_drawpal(224 - look_anghalf, looking_arc + 220 - gun_pos, pic_5, gs, o | pin, pal);
}
else if (*kb < (reload_time - 12))
{
hud_drawpal(184 - look_anghalf, looking_arc + 235 - gun_pos, pic + 8, gs, o | pin, pal);
hud_drawpal(224 - look_anghalf, looking_arc + 210 - gun_pos, pic + 5, gs, o | pin, pal);
hud_drawpal(184 - look_anghalf, looking_arc + 235 - gun_pos, FIRSTGUN + 8, gs, o | pin, pal);
hud_drawpal(224 - look_anghalf, looking_arc + 210 - gun_pos, pic_5, gs, o | pin, pal);
}
else if (*kb < (reload_time - 6))
{
hud_drawpal(164 - look_anghalf, looking_arc + 245 - gun_pos, pic + 8, gs, o | pin, pal);
hud_drawpal(224 - look_anghalf, looking_arc + 220 - gun_pos, pic + 5, gs, o | pin, pal);
hud_drawpal(164 - look_anghalf, looking_arc + 245 - gun_pos, FIRSTGUN + 8, gs, o | pin, pal);
hud_drawpal(224 - look_anghalf, looking_arc + 220 - gun_pos, pic_5, gs, o | pin, pal);
}
else if (*kb < (reload_time))
hud_drawpal(194 - look_anghalf, looking_arc + 235 - gun_pos, pic + 5, gs, o, pal);
hud_drawpal(194 - look_anghalf, looking_arc + 235 - gun_pos, pic_5, gs, o, pal);
else if (*kb < 23)
{
hud_drawpal(184 - look_anghalf, looking_arc + 235 - gun_pos, pic + 8, gs, o | pin, pal);
hud_drawpal(224 - look_anghalf, looking_arc + 210 - gun_pos, pic + 5, gs, o | pin, pal);
hud_drawpal(184 - look_anghalf, looking_arc + 235 - gun_pos, FIRSTGUN + 8, gs, o | pin, pal);
hud_drawpal(224 - look_anghalf, looking_arc + 210 - gun_pos, pic_5, gs, o | pin, pal);
}
else if (*kb < 25)
{
hud_drawpal(164 - look_anghalf, looking_arc + 245 - gun_pos, pic + 8, gs, o | pin, pal);
hud_drawpal(224 - look_anghalf, looking_arc + 220 - gun_pos, pic + 5, gs, o | pin, pal);
hud_drawpal(164 - look_anghalf, looking_arc + 245 - gun_pos, FIRSTGUN + 8, gs, o | pin, pal);
hud_drawpal(224 - look_anghalf, looking_arc + 220 - gun_pos, pic_5, gs, o | pin, pal);
}
else if (*kb < 27)
hud_drawpal(194 - look_anghalf, looking_arc + 235 - gun_pos, pic + 5, gs, o | pin, pal);
hud_drawpal(194 - look_anghalf, looking_arc + 235 - gun_pos, pic_5, gs, o | pin, pal);
}
};
@ -1100,10 +1099,10 @@ void displayweapon_d(int snum, double smoothratio)
looking_arc += rand() & 3;
}
gun_pos -= 16;
hud_drawpal(weapon_xoffset + 210 - look_anghalf, looking_arc + 261 - gun_pos, pic + 2, -32, o|pin, pal);
hud_drawpal(weapon_xoffset + 210 - look_anghalf, looking_arc + 235 - gun_pos, pic + 3 + cat_frames[*kb % 6], -32, o | pin, pal);
hud_drawpal(weapon_xoffset + 210 - look_anghalf, looking_arc + 261 - gun_pos, isWorldTour() ? FREEZEFIREWIDE : FREEZE + 2, -32, o|pin, pal);
hud_drawpal(weapon_xoffset + 210 - look_anghalf, looking_arc + 235 - gun_pos, FREEZE + 3 + cat_frames[*kb % 6], -32, o | pin, pal);
}
else hud_drawpal(weapon_xoffset + 210 - look_anghalf, looking_arc + 261 - gun_pos, pic, gs, o | pin, pal);
else hud_drawpal(weapon_xoffset + 210 - look_anghalf, looking_arc + 261 - gun_pos, isWorldTour() ? FREEZEWIDE : FREEZE, gs, o | pin, pal);
};
//---------------------------------------------------------------------------

View file

@ -27,6 +27,16 @@ inline int badguy(void const * const pSprite)
return badguypic(((uspritetype const *) pSprite)->picnum);
}
inline int bossguypic(int const tileNum)
{
return ((actorinfo[tileNum].flags & (SFLAG_BOSS)) != 0);
}
inline int bossguy(void const* const pSprite)
{
return badguypic(((uspritetype const*)pSprite)->picnum);
}
inline int actorflag(int spritenum, int mask)
{
return (((actorinfo[sprite[spritenum].picnum].flags/* ^ hittype[spritenum].flags*/) & mask) != 0);

View file

@ -158,7 +158,7 @@ void shoot_d(int i, int atwith)
}
else
{
zvel = 98 * (100 + ps[p].gethorizsum());
zvel = 98 * (100 - ps[p].gethorizsum());
sx += sintable[(sa + 860) & 0x7FF] / 448;
sy += sintable[(sa + 348) & 0x7FF] / 448;
sz += (3 << 8);
@ -849,11 +849,28 @@ void shoot_d(int i, int atwith)
}
else if (s->picnum == BOSS2)
{
int xoffs = sintable[sa & 2047] / 56;
int yoffs = sintable[(sa + 1024 + 512) & 2047] / 56;
int aoffs = 8 + (krand() & 255) - 128;
if (isWorldTour()) { // Twentieth Anniversary World Tour
int siz = sprite[i].yrepeat;
xoffs = Scale(xoffs, siz, 80);
yoffs = Scale(yoffs, siz, 80);
aoffs = Scale(aoffs, siz, 80);
}
sprite[j].x -= xoffs;
sprite[j].y -= yoffs;
sprite[j].ang -= aoffs;
sprite[j].x -= sintable[sa & 2047] / 56;
sprite[j].y -= sintable[(sa + 1024 + 512) & 2047] / 56;
sprite[j].ang -= 8 + (krand() & 255) - 128;
sprite[j].xrepeat = 24;
sprite[j].yrepeat = 24;
}
else if (atwith != FREEZEBLAST)
{

View file

@ -380,12 +380,14 @@ public:
void Statusbar(int snum)
{
int tile = hud_size < Hud_StbarOverlay ? TILE_BOTTOMSTATUSBAR : BOTTOMSTATUSBAR; // always use the narrow version for the overlay.
auto p = &ps[snum];
int h = tilesiz[TILE_BOTTOMSTATUSBAR].y;
int h = tilesiz[tile].y;
int top = 200 - h;
int left = (320 - tilesiz[tile].x) / 2;
BeginStatusBar(320, 200, h);
DrawInventory(p, 160, 154, 0);
DrawGraphic(tileGetTexture(TILE_BOTTOMSTATUSBAR), 0, top, DI_ITEM_LEFT_TOP, 1, -1, -1, 1, 1);
DrawGraphic(tileGetTexture(tile), left, top, DI_ITEM_LEFT_TOP, 1, -1, -1, 1, 1);
FString format;

View file

@ -1381,6 +1381,9 @@ void checkhitsprite_d(int i, int sn)
{
if (badguy(&sprite[i]) == 1)
{
if (isWorldTour() && sprite[i].picnum == FIREFLY && sprite[i].xrepeat < 48)
break;
if (sprite[sn].picnum == RPG) sprite[sn].extra <<= 1;
if ((sprite[i].picnum != DRONE) && (sprite[i].picnum != ROTATEGUN) && (sprite[i].picnum != COMMANDER) && (sprite[i].picnum < GREENSLIME || sprite[i].picnum > GREENSLIME + 7))
@ -1407,7 +1410,7 @@ void checkhitsprite_d(int i, int sn)
fi.shoot(i, BLOODSPLAT4);
}
if (sprite[i].picnum != TANK && sprite[i].picnum != BOSS1 && sprite[i].picnum != BOSS4 && sprite[i].picnum != BOSS2 && sprite[i].picnum != BOSS3 && sprite[i].picnum != RECON && sprite[i].picnum != ROTATEGUN)
if (sprite[i].picnum != TANK && !bossguy(&sprite[i]) && sprite[i].picnum != RECON && sprite[i].picnum != ROTATEGUN)
{
if ((sprite[i].cstat & 48) == 0)
sprite[i].ang = (sprite[sn].ang + 1024) & 2047;
@ -1431,6 +1434,17 @@ void checkhitsprite_d(int i, int sn)
if (sprite[sn].picnum == FREEZEBLAST && ((sprite[i].picnum == APLAYER && sprite[i].pal == 1) || (freezerhurtowner == 0 && sprite[sn].owner == i)))
return;
int hitpic = sprite[sn].picnum;
if (sprite[sprite[sn].owner].picnum == APLAYER)
{
if (sprite[i].picnum == APLAYER && ud.coop != 0 && ud.ffire == 0)
return;
if (isWorldTour() && hitpic == FIREBALL && sprite[sprite[i].owner].picnum != FIREBALL)
hitpic = FLAMETHROWERFLAME;
}
hittype[i].picnum = sprite[sn].picnum;
hittype[i].extra += sprite[sn].extra;
hittype[i].ang = sprite[sn].ang;

View file

@ -587,12 +587,44 @@ void S_MenuSound(void)
//
//==========================================================================
CVAR(Bool, wt_forcemidi, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG) // quick hack to disable the oggs, which are of lower quality than playing the MIDIs with a good synth and sound font.
static bool cd_disabled = false; // This is in case mus_redbook is enabled but no tracks found so that the regular music system can be switched on.
static void MusPlay(const char* label, const char* music, bool loop)
{
if (isWorldTour())
{
if (wt_forcemidi)
{
FString alternative = music;
alternative.Substitute(".ogg", ".mid");
int num = fileSystem.FindFile(alternative);
if (num >= 0)
{
int file = fileSystem.GetFileContainer(num);
if (file == 1)
{
Mus_Play(label, alternative, loop);
return;
}
}
}
}
int result = Mus_Play(label, music, loop);
// do not remain silent if playing World Tour when the user has deleted the music.
if (!result && isWorldTour())
{
FString alternative = music;
alternative.Substitute(".ogg", ".mid");
Mus_Play(label, alternative, loop);
}
}
void S_PlayLevelMusic(MapRecord *mi)
{
if (isRR() && mi->music.IsEmpty() && mus_redbook && !cd_disabled) return;
Mus_Play(mi->labelName, mi->music, true);
MusPlay(mi->labelName, mi->music, true);
}
void S_PlaySpecialMusic(unsigned int m)
@ -601,7 +633,7 @@ void S_PlaySpecialMusic(unsigned int m)
auto& musicfn = specialmusic[m];
if (musicfn.IsNotEmpty())
{
Mus_Play(nullptr, musicfn, true);
MusPlay(nullptr, musicfn, true);
}
}

View file

@ -624,6 +624,14 @@ int spawn_d(int j, int pn)
sp->z = x-(12<<8);
}
if (sp->picnum == ONFIRE)
{
sp->x += krand() % 256 - 128;
sp->y += krand() % 256 - 128;
sp->z -= krand() % 10240;
sp->cstat |= 0x80;
}
changespritestat(i,5);
break;

View file

@ -1009,7 +1009,7 @@ OptionMenu "AutomapOptions"
Submenu "$MAPCNTRLMNU_CONTROLS" , "MapControlsMenu"
StaticText ""
Option "$AUTOMAPMNU_ROTATE", "am_rotate", "OnOff"
Option "$AUTOMAPMNU_FOLLOW", "am_follow", "OnOff"
Option "$AUTOMAPMNU_FOLLOW", "am_followplayer", "OnOff"
// move map controls here.
// todo:

View file

@ -201,6 +201,8 @@ Apasă Y sau N.","Загрузить быстрое сохранение
Yes,TXT_YES,,,,Ano,Ja,Ναι,Jes,Sí,,Kyllä,Oui,Igen,Si,はい,네,Ja,Tak,Sim,,Da,Да,Да
No,TXT_NO,,,,Ne,Nein,Όχι,Ne,No,,Ei,Non,Nem,No,いいえ,아니요,Nee,Nie,Não,,Nu,Нет,Не
%s cheats,TXT_X_CHEATS,This is a gender sensitive message where %s represents the player,,,%s cheatuje,%s schummelt,@[art_gr] %s απατάει,%s trompas,%s hace trampa,,%s huijaa,%s triche.,,%s imbroglia,%s はチート使用,%s 이(가) 치트를 사용 함,%s bedriegt,%s oszukuje,%s está trapaceando,%s está a fazer batota,%s trișează,%s использует чит-коды,%s вара
Rotate mode on,TXT_ROTATE_ON,,,,,Rotiermodus an,,,,,,,,,,,,,,,,,
Rotate mode off,TXT_ROTATE_OFF,,,,,Rotiermodus aus,,,,,,,,,,,,,,,,,
,,Savegame,,,,,,,,,,,,,,,,,,,,,
Empty slot,EMPTYSTRING,,,,Prázdný slot,nicht belegt,,Malplena Ingo,Ranura Vacía,,Tyhjä lokero,Emplacement Vide,Üres,Slot libero,空きスロット,빈 슬롯,Lege sleuf,Puste miejsce,Vazio,,Loc disponibil,Пустой слот,Празни слот
<New Save Game>,NEWSAVE,,,,<Nová uložená hra>,<Neuer Spielstand>,,<Novan Konservita Ludo>,<Nueva Partida Guardada>,,<Uusi tallennettu peli>,<Nouveau Fichier de Sauvegarde>,<Új mentés>,<Nuovo Salvataggio>,<新規セーブ>,<새로운 게임 저장>,<Nieuw sparen spel>,<Nowy zapis gry>,<Novo jogo salvo>,<Novo jogo gravado>,<Salvare Nouă>,<Новое сохранение>,<Нова сачувана игра>
@ -2218,7 +2220,7 @@ into the heart of karnak...
Home to the celebrated
burial crypt of the great
King Ramses.
",TXT_EX_CINEMA1,,,,,,,,,,,,,,,,,,,,,,
",TXT_EX_CINEMA1,Intro movie subtitles,,,,,,,,,,,,,,,,,,,,,
"An evil force known as the
Kilmaat has besieged the
sanctity of my palace and
@ -2235,7 +2237,7 @@ chaos will prevail. I am
being torn between worlds
and this insidious
experiment must be stopped.
",TXT_EX_CINEMA1,,,,,,,,,,,,,,,,,,,,,,
",TXT_EX_CINEMA1,Level 1,,,,,,,,,,,,,,,,,,,,,
"I have hidden a mystical
gauntlet at el kab that will
channel my energy through
@ -2251,13 +2253,13 @@ restless with your progress.
Seek out a temple in this
citadel where I will provide
more information.
",TXT_EX_CINEMA3,,,,,,,,,,,,,,,,,,,,,,
",TXT_EX_CINEMA3,After Level 10,,,,,,,,,,,,,,,,,,,,,
"Set was a formidable foe.
No mortal has even conquered
their own fear, much less
entered mortal battle and
taken his life.
",TXT_EX_CINEMA4,,,,,,,,,,,,,,,,,,,,,,
",TXT_EX_CINEMA4,Before Level 11,,,,,,,,,,,,,,,,,,,,,
"the Kilmaat race has
continued their monsterous
animal-human experiments in
@ -2274,7 +2276,7 @@ and insect intent on slaying
you. Prepare yourself for
battle as she will be waiting
for you at the Luxor temple.
",TXT_EX_CINEMA5,,,,,,,,,,,,,,,,,,,,,,
",TXT_EX_CINEMA5,In Level 11,,,,,,,,,,,,,,,,,,,,,
"You've done well to defeat
Selkis. You have distracted
the Kilmaat with your
@ -2287,7 +2289,7 @@ against you. Arrogance is
her weakness, and if you can
defeat Kilmaatikhan, the
battle will be won.
",TXT_EX_CINEMA6,,,,,,,,,,,,,,,,,,,,,,
",TXT_EX_CINEMA6,After Level 15,,,,,,,,,,,,,,,,,,,,,
"The Kilmaat have been
destroyed. Unfortunately,
your recklessness has
@ -2295,7 +2297,7 @@ destroyed the Earth and all
of its inhabitants. All that
remains is a smoldering hunk
of rock.
",TXT_EX_CINEMA7,,,,,,,,,,,,,,,,,,,,,,
",TXT_EX_CINEMA7,Bad ending,,,,,,,,,,,,,,,,,,,,,
"The Kilmaat have been
defeated and you single
handedly saved the Earth
@ -2305,7 +2307,7 @@ from destruction.
Your bravery and heroism
are legendary.
",TXT_EX_CINEMA8,,,,,,,,,,,,,,,,,,,,,,
",TXT_EX_CINEMA8,After Level 20,,,,,,,,,,,,,,,,,,,,,
"LOBOTOMY SOFTWARE, INC.,",TXT_EX_COPYRIGHT1,,,,,,,,,,,,,,,,,,,,,,
"3D ENGINE BY 3D REALMS,",TXT_EX_COPYRIGHT2,,,,,,,,,,,,,,,,,,,,,,
Life Blood,TXT_EX_PICKUP1,,,,,,,,,,,,,,,,,,,,,,

1 default Identifier Remarks Filter eng enc ena enz eni ens enj enb enl ent enw cs de el eo es esm esn esg esc esa esd esv eso esr ess esf esl esy esz esb ese esh esi esu fi fr hu it jp ko nl pl pt ptg ro ru sr
201 Strafing speed Mouselook speed MOUSEMNU_STRAFESPEED MOUSEMNU_MOUSELOOKSPEED Rychlost pohybu do stran Rychlost pohledu nahoru/dolů Seitwärtsgeschwindigkeit Mausblick-Geschwindigkeit Flankmova rapido Musrigarda rapido. Veloc. de mov. lateral Veloc. de vista con ratón Sivuttaisastunnan nopeus Katselunopeus Vitesse Gauche/Droite Vitesse Vue Souris Egérrel való nézés sebessége Velocità movimento laterale Velocità di rotazione della vista 横移動速度 上下視点速度 좌진/우진 속도 마우스룩 속도 Zijdelings snelheid Mouselook snelheid Szybkość uników Szybkość rozglądania się myszką Velocidade de deslocamento lateral Velocidade de vista com mouse Velocidade de vista com rato Viteză deplasare în diagonală Viteză privire în jur cu mouse Скорость движения боком Скорость обзора Брзина стрејфа Брзина гледања мишем
202 Always Mouselook Forward/Backward speed MOUSEMNU_ALWAYSMOUSELOOK MOUSEMNU_FORWBACKSPEED Vždy se rozhlížet myší Rychlost pohybu vpřed/vzad Mausblick immer an Vor/Rückwärtsgeschwindigkeit Ĉiam Musrigardo Antaŭa/Malantaŭa rapido Siempre mirar con ratón Veloc. de avance/retroceso Jatkuva hiirikatselu Eteen-/taaksepäin liikkeen nopeus Toujours vue Souris Vitesse Avancer/reculer Mindig nézelődés az egérrel Előre/Hátra sebesség Vista col mouse Velocità avanti/indietro 常に上下視点をオン 前進/後退速度 마우스룩 사용 전진/후진 속도 Altijd Mouselook Voorwaartse/achterwaartse snelheid Zawsze zezwalaj na rozglądanie się myszką Szybkość chodzenia do przodu/do tyłu Vista com mouse sempre ligado Velocidade de deslocamento para frente/trás Vista com rato sempre ligada Privire în jur cu mouse permanentă Viteză deplasare față/spate Обзор мышью Скорость передвижения Гледање мишем Брзина окрета напред/уназад
203 Invert Mouse Strafing speed MOUSEMNU_INVERTMOUSE MOUSEMNU_STRAFESPEED Inverzní myš Rychlost pohybu do stran Maus invertieren Seitwärtsgeschwindigkeit Inversa Muso Flankmova rapido Invertir ratón Veloc. de mov. lateral Käännä hiiri Sivuttaisastunnan nopeus Inverser Souris Vitesse Gauche/Droite Egérirányok megfordítása Mouse invertito Velocità movimento laterale 視点操作反転 横移動速度 마우스 방향 전환 좌진/우진 속도 Muis omkeren Zijdelings snelheid Odwróć Myszkę Szybkość uników Inverter mouse Velocidade de deslocamento lateral Inverter rato Inversare axă mouse Viteză deplasare în diagonală Инвертирование мыши Скорость движения боком Инвертуј миш Брзина стрејфа
204 Always Mouselook MOUSEMNU_ALWAYSMOUSELOOK Vždy se rozhlížet myší Mausblick immer an Ĉiam Musrigardo Siempre mirar con ratón Jatkuva hiirikatselu Toujours vue Souris Mindig nézelődés az egérrel Vista col mouse 常に上下視点をオン 마우스룩 사용 Altijd Mouselook Zawsze zezwalaj na rozglądanie się myszką Vista com mouse sempre ligado Vista com rato sempre ligada Privire în jur cu mouse permanentă Обзор мышью Гледање мишем
205 Invert Mouse MOUSEMNU_INVERTMOUSE Inverzní myš Maus invertieren Inversa Muso Invertir ratón Käännä hiiri Inverser Souris Egérirányok megfordítása Mouse invertito 視点操作反転 마우스 방향 전환 Muis omkeren Odwróć Myszkę Inverter mouse Inverter rato Inversare axă mouse Инвертирование мыши Инвертуј миш
206 Mouselook Toggle MOUSEMNU_LOOKSPRING Automatické vystředění pohledu Automatisch zentrieren Rigardsalto Mirar con ratón Katseenpalautin Recentrer après Vue Souris 視点水平化 마우스룩 시점 초기화 Lente Automatyczne Wyśrodkowanie Centralizar automáticamente Centrar automáticamente Comutator privire în jur cu mouse Передвижение мышью Покрет мишем
207 Mouse Strafe MOUSEMNU_LOOKSTRAFE Použít myš k pohybu do stran Seitwärts bewegen mit der Maus Rigardturnmovo Mirar con movimiento Sivuttaisastuntapalautin Mouvement Latéral par Souris 視点横移動化 마우스룩 좌우 이동 Lookstrafe Unikanie przy użyciu myszki Deslocamento lateral com o mouse Deslocamento lateral com o rato Deplasare în diagonală cu mouse Движение боком мышью Стрејф мишем
208 Upper left OPTVAL_UPPERLEFT Vlevo nahoře Oben links Supra maldekstre Sup. izquierda Ylävasemmalla Supérieur gauche Superiore sinistro 左上 왼쪽 위 Linksboven Lewy górny róg Esquerda superior Stânga sus Вверху слева Горње лево
2220
2221
2222
2223
2224
2225
2226
2237
2238
2239
2240
2241
2242
2243
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2276
2277
2278
2279
2280
2281
2282
2289
2290
2291
2292
2293
2294
2295
2297
2298
2299
2300
2301
2302
2303
2307
2308
2309
2310
2311
2312
2313