mirror of
https://github.com/1dot13/source.git
synced 2026-08-26 14:30:26 +02:00
************************************************************
* Merged Source Code from Development Trunk: Revision 4063 * ************************************************************ - Source Code is merged from: https://81.169.133.124/source/ja2/branches/Wanne/JA2%201.13%20MP - This will be the Source for the Beta 2011 Test git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@4064 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -0,0 +1,433 @@
|
||||
#include "Types.h"
|
||||
#include <stdio.h>
|
||||
#include <io.h>
|
||||
#include <string.h>
|
||||
#include <fcntl.h>
|
||||
#include <share.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <malloc.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "Debug.h"
|
||||
#include "FileMan.h"
|
||||
#include "smack.h"
|
||||
#include "DDraw.h"
|
||||
#include "mss.h"
|
||||
#include "DirectX Common.h"
|
||||
#include "DirectDraw Calls.h"
|
||||
#include "SoundMan.h"
|
||||
#include "Video.h"
|
||||
|
||||
#include "Cinematics Bink.h"
|
||||
|
||||
#include "vsurface_private.h"
|
||||
|
||||
//#include "Intro.h"
|
||||
#include <vfs/Core/vfs.h>
|
||||
#include <vfs/Core/vfs_file_raii.h>
|
||||
|
||||
|
||||
#include "radmalw.i"
|
||||
|
||||
|
||||
#include <crtdbg.h>
|
||||
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
//
|
||||
// Local Defines
|
||||
//
|
||||
//*******************************************************************
|
||||
|
||||
|
||||
#define BINK_NUM_FLICS 4 // Maximum number of flics open
|
||||
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
//
|
||||
// Global Variables
|
||||
//
|
||||
//*******************************************************************
|
||||
|
||||
BINKFLIC BinkList[BINK_NUM_FLICS];
|
||||
UINT32 guiBinkPixelFormat=0;
|
||||
|
||||
//LPDIRECTDRAWSURFACE lpBinkVideoPlayback=NULL;
|
||||
LPDIRECTDRAWSURFACE2 lpBinkVideoPlayback2=NULL;
|
||||
HWND hBinkDisplayWindow=0;
|
||||
UINT32 guiHeight;
|
||||
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
//
|
||||
// Function Prototypes
|
||||
//
|
||||
//*******************************************************************
|
||||
|
||||
void BinkInitialize(HWND hWindow, UINT32 uiWidth, UINT32 uiHeight);
|
||||
void BinkShutdown(void);
|
||||
BINKFLIC *BinkPlayFlic(CHAR8 *cFilename, UINT32 uiLeft, UINT32 uiTop, UINT32 uiFlags );
|
||||
BOOLEAN BinkPollFlics(void);
|
||||
BINKFLIC *BinkOpenFlic(const CHAR8 *cFilename);
|
||||
void BinkSetBlitPosition(BINKFLIC *pBink, UINT32 uiLeft, UINT32 uiTop);
|
||||
void BinkCloseFlic(BINKFLIC *pBink);
|
||||
BINKFLIC *BinkGetFreeFlic(void);
|
||||
void BinkSetupVideo(void);
|
||||
void BinkShutdownVideo(void);
|
||||
UINT16 GetNumberOfBits( UINT32 uiMask );
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
//
|
||||
// Functions
|
||||
//
|
||||
//*******************************************************************
|
||||
|
||||
|
||||
|
||||
void BinkInitialize(HWND hWindow, UINT32 uiWidth, UINT32 uiHeight)
|
||||
{
|
||||
//HDIGDRIVER pSoundDriver = NULL;
|
||||
void* pSoundDriver = NULL;
|
||||
|
||||
|
||||
//Get the sound Driver handle
|
||||
pSoundDriver = SoundGetDriverHandle();
|
||||
|
||||
//if we got the sound handle, use sound during the intro
|
||||
if( pSoundDriver )
|
||||
{
|
||||
BinkSoundUseDirectSound( pSoundDriver );
|
||||
}
|
||||
|
||||
guiHeight = uiHeight;
|
||||
}
|
||||
|
||||
|
||||
void BinkShutdown(void)
|
||||
{
|
||||
UINT32 uiCount;
|
||||
|
||||
// Close and deallocate any open flics
|
||||
for(uiCount=0; uiCount < BINK_NUM_FLICS; uiCount++)
|
||||
{
|
||||
//if the flic is currently open
|
||||
if(BinkList[uiCount].uiFlags & BINK_FLIC_OPEN )
|
||||
{
|
||||
//close it
|
||||
BinkCloseFlic( &BinkList[uiCount] );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
BINKFLIC *BinkPlayFlic(const CHAR8 *cFilename, UINT32 uiLeft, UINT32 uiTop, UINT32 uiFlags )
|
||||
{
|
||||
BINKFLIC *pBink;
|
||||
|
||||
// Open the flic
|
||||
if( ( pBink = BinkOpenFlic( cFilename ) ) == NULL )
|
||||
{
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
if( uiFlags & BINK_FLIC_CENTER_VERTICAL)
|
||||
{
|
||||
uiTop = ( guiHeight - pBink->BinkHandle->Height ) / 2;
|
||||
}
|
||||
|
||||
// Set the blitting position on the screen
|
||||
BinkSetBlitPosition( pBink, uiLeft, uiTop);
|
||||
|
||||
// We're now playing, flag the flic for the poller to update
|
||||
pBink->uiFlags |= BINK_FLIC_PLAYING;
|
||||
|
||||
if( uiFlags & BINK_FLIC_AUTOCLOSE )
|
||||
{
|
||||
pBink->uiFlags |= BINK_FLIC_AUTOCLOSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
pBink->uiFlags |= BINK_FLIC_LOOP;
|
||||
}
|
||||
|
||||
|
||||
return(pBink);
|
||||
}
|
||||
|
||||
BINKFLIC *BinkOpenFlic( const CHAR8 *cFilename )
|
||||
{
|
||||
BINKFLIC *pBink;
|
||||
|
||||
// Get an available flic slot from the list
|
||||
if( !( pBink = BinkGetFreeFlic() ) )
|
||||
{
|
||||
ErrorMsg("BINK ERROR: Out of flic slots, cannot open another");
|
||||
return(NULL);
|
||||
}
|
||||
#ifndef USE_VFS
|
||||
// Attempt opening the filename
|
||||
if(!(pBink->hFileHandle = FileOpen( const_cast<CHAR8*>(cFilename), FILE_OPEN_EXISTING | FILE_ACCESS_READ, FALSE ) ) )
|
||||
{
|
||||
ErrorMsg("BINK ERROR: Can't open the BINK file");
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
//Get the real file handle for the file man handle for the smacker file
|
||||
HANDLE hFile = GetRealFileHandleFromFileManFileHandle( pBink->hFileHandle );
|
||||
#else
|
||||
vfs::Path introname(cFilename);
|
||||
vfs::Path dir,filename;
|
||||
introname.splitLast(dir,filename);
|
||||
vfs::Path tempfile = vfs::Path(L"Temp") + filename;
|
||||
if(!getVFS()->fileExists(tempfile))
|
||||
{
|
||||
try
|
||||
{
|
||||
if(!getVFS()->fileExists(introname))
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
vfs::COpenReadFile rfile(introname);
|
||||
vfs::size_t size = rfile->getSize();
|
||||
std::vector<vfs::Byte> data(size);
|
||||
rfile->read(&data[0],size);
|
||||
|
||||
vfs::COpenWriteFile wfile(tempfile,true);
|
||||
wfile->write(&data[0],size);
|
||||
}
|
||||
catch(std::exception& ex)
|
||||
{
|
||||
SGP_RETHROW(_BS(L"Intro file \"") << filename << L"\" could not be extracted" << _BS::wget, ex);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef USE_VFS
|
||||
if( !( pBink->BinkHandle = BinkOpen((CHAR8 *)hFile, BINKFILEHANDLE ) ) ) //| SMACKTRACKS
|
||||
#else
|
||||
vfs::Path tempfilename;
|
||||
try
|
||||
{
|
||||
vfs::COpenWriteFile wfile(tempfile);
|
||||
if(!wfile->_getRealPath(tempfilename))
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
catch(std::exception& ex)
|
||||
{
|
||||
SGP_RETHROW(L"Temporary intro file could not be read", ex);
|
||||
}
|
||||
if( !( pBink->BinkHandle = BinkOpen(tempfilename.to_string().c_str(), BINKNOTHREADEDIO /*BINKFILEHANDLE*/ ) ) ) //| SMACKTRACKS
|
||||
#endif
|
||||
{
|
||||
ErrorMsg("BINK ERROR: Bink won't open the BINK file");
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
// Make sure we have a video surface
|
||||
BinkSetupVideo();
|
||||
|
||||
pBink->cFilename = cFilename;
|
||||
|
||||
pBink->lpDDS = lpBinkVideoPlayback2;
|
||||
|
||||
pBink->hWindow = hBinkDisplayWindow;
|
||||
|
||||
// Bink flic is now open and ready to go
|
||||
pBink->uiFlags |= BINK_FLIC_OPEN;
|
||||
|
||||
return( pBink );
|
||||
}
|
||||
|
||||
|
||||
|
||||
BINKFLIC *BinkGetFreeFlic()
|
||||
{
|
||||
UINT32 uiCount;
|
||||
|
||||
//loop through to get a free slot
|
||||
for( uiCount=0; uiCount < BINK_NUM_FLICS; uiCount++ )
|
||||
{
|
||||
//if this slot is currently not in use
|
||||
if( !( BinkList[uiCount].uiFlags & BINK_FLIC_OPEN ) )
|
||||
{
|
||||
return( &BinkList[ uiCount ] );
|
||||
}
|
||||
}
|
||||
|
||||
return( NULL );
|
||||
}
|
||||
|
||||
|
||||
void BinkSetBlitPosition( BINKFLIC *pBink, UINT32 uiLeft, UINT32 uiTop )
|
||||
{
|
||||
pBink->uiLeft = uiLeft;
|
||||
pBink->uiTop = uiTop;
|
||||
}
|
||||
|
||||
void BinkCloseFlic( BINKFLIC *pBink )
|
||||
{
|
||||
// Deallocate the smack buffers
|
||||
// SmackBufferClose(pSmack->SmackBuffer);
|
||||
|
||||
// Close the smack flic
|
||||
BinkClose(pBink->BinkHandle);
|
||||
|
||||
// Attempt opening the filename
|
||||
FileClose(pBink->hFileHandle);
|
||||
|
||||
// Zero the memory, flags, etc.
|
||||
memset( pBink, 0, sizeof(BINKFLIC) );
|
||||
}
|
||||
|
||||
|
||||
BOOLEAN BinkPollFlics(void)
|
||||
{
|
||||
UINT32 uiCount;
|
||||
BOOLEAN fFlicStatus=FALSE;
|
||||
DDSURFACEDESC SurfaceDescription;
|
||||
BINKFLIC *pBink=NULL;
|
||||
UINT32 uiCopyToBufferFlags = guiBinkPixelFormat;
|
||||
|
||||
//loop through all the open flics
|
||||
for(uiCount=0; uiCount < BINK_NUM_FLICS; uiCount++)
|
||||
{
|
||||
pBink = &BinkList[uiCount];
|
||||
|
||||
if( pBink->uiFlags & BINK_FLIC_PLAYING )
|
||||
{
|
||||
fFlicStatus = TRUE;
|
||||
|
||||
//do we still have to wait for the frame to be finished being displayed
|
||||
if( !( BinkWait( pBink->BinkHandle ) ) )
|
||||
{
|
||||
DDLockSurface( pBink->lpDDS, NULL, &SurfaceDescription, 0, NULL);
|
||||
|
||||
BinkDoFrame( pBink->BinkHandle );
|
||||
|
||||
BinkCopyToBuffer( pBink->BinkHandle,
|
||||
SurfaceDescription.lpSurface,
|
||||
SurfaceDescription.lPitch,
|
||||
pBink->BinkHandle->Height,
|
||||
pBink->uiLeft,
|
||||
pBink->uiTop,
|
||||
uiCopyToBufferFlags );
|
||||
|
||||
|
||||
DDUnlockSurface( pBink->lpDDS, SurfaceDescription.lpSurface);
|
||||
|
||||
// Check to see if the flic is done the last frame
|
||||
if( pBink->BinkHandle->FrameNum == ( pBink->BinkHandle->Frames-1 ) )
|
||||
{
|
||||
// If flic is looping, reset frame to 0
|
||||
if( pBink->uiFlags & BINK_FLIC_LOOP)
|
||||
{
|
||||
BinkGoto( pBink->BinkHandle, 0, 0 );
|
||||
}
|
||||
else if( pBink->uiFlags & BINK_FLIC_AUTOCLOSE)
|
||||
{
|
||||
BinkCloseFlic( pBink );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
BinkNextFrame( BinkList[uiCount].BinkHandle );
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return( fFlicStatus );
|
||||
}
|
||||
|
||||
|
||||
|
||||
void BinkSetupVideo(void)
|
||||
{
|
||||
DDSURFACEDESC SurfaceDescription;
|
||||
HRESULT ReturnCode;
|
||||
UINT16 usRed, usGreen, usBlue;
|
||||
HVSURFACE hVSurface;
|
||||
|
||||
GetVideoSurface( &hVSurface, FRAME_BUFFER );
|
||||
|
||||
lpBinkVideoPlayback2 = GetVideoSurfaceDDSurface( hVSurface );
|
||||
|
||||
ZEROMEM(SurfaceDescription);
|
||||
SurfaceDescription.dwSize = sizeof (DDSURFACEDESC);
|
||||
|
||||
ReturnCode = IDirectDrawSurface2_GetSurfaceDesc ( lpBinkVideoPlayback2, &SurfaceDescription );
|
||||
if (ReturnCode != DD_OK)
|
||||
{
|
||||
DirectXAttempt ( ReturnCode, __LINE__, __FILE__ );
|
||||
return;
|
||||
}
|
||||
/*
|
||||
usRed = (UINT16) SurfaceDescription.ddpfPixelFormat.dwRBitMask;
|
||||
usGreen = (UINT16) SurfaceDescription.ddpfPixelFormat.dwGBitMask;
|
||||
usBlue = (UINT16) SurfaceDescription.ddpfPixelFormat.dwBBitMask;
|
||||
|
||||
// SurfaceDescription.ddpfPixelFormat
|
||||
|
||||
if((usRed==0xf800) && (usGreen==0x07e0) && (usBlue==0x001f))
|
||||
guiBinkPixelFormat = BINKSURFACE565;
|
||||
else
|
||||
guiBinkPixelFormat = BINKSURFACE555;
|
||||
*/
|
||||
//
|
||||
// Get bit count for the RGB
|
||||
//
|
||||
usRed = GetNumberOfBits( SurfaceDescription.ddpfPixelFormat.dwRBitMask );
|
||||
usGreen = GetNumberOfBits( SurfaceDescription.ddpfPixelFormat.dwGBitMask );
|
||||
usBlue = GetNumberOfBits( SurfaceDescription.ddpfPixelFormat.dwBBitMask );
|
||||
|
||||
// 555
|
||||
if( usRed == 5 && usGreen == 5 && usBlue == 5 )
|
||||
{
|
||||
guiBinkPixelFormat = BINKSURFACE555;
|
||||
}
|
||||
//565
|
||||
else if( usRed == 5 && usGreen == 6 && usBlue == 5 )
|
||||
{
|
||||
guiBinkPixelFormat = BINKSURFACE565;
|
||||
}
|
||||
//655
|
||||
else if( usRed == 6 && usGreen == 5 && usBlue == 5 )
|
||||
{
|
||||
guiBinkPixelFormat = BINKSURFACE655;
|
||||
}
|
||||
|
||||
//dont know the format, wont get video
|
||||
else
|
||||
{
|
||||
guiBinkPixelFormat = 0;
|
||||
}
|
||||
}
|
||||
|
||||
UINT16 GetNumberOfBits( UINT32 uiMask )
|
||||
{
|
||||
UINT16 usBits = 0;
|
||||
|
||||
while( uiMask )
|
||||
{
|
||||
uiMask = uiMask & ( uiMask - 1 );
|
||||
usBits++;
|
||||
}
|
||||
return usBits;
|
||||
}
|
||||
|
||||
|
||||
void BinkShutdownVideo(void)
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
#ifndef _CINEMATICS_BINK__H_
|
||||
#define _CINEMATICS_BINK__H_
|
||||
|
||||
|
||||
#include "bink.h"
|
||||
|
||||
|
||||
|
||||
|
||||
// BINKFLIC uiFlags
|
||||
#define BINK_FLIC_OPEN 0x00000001 // Flic is open
|
||||
#define BINK_FLIC_PLAYING 0x00000002 // Flic is playing
|
||||
#define BINK_FLIC_LOOP 0x00000004 // Play flic in a loop
|
||||
#define BINK_FLIC_AUTOCLOSE 0x00000008 // Close when done
|
||||
#define BINK_FLIC_CENTER_VERTICAL 0x00000010 // Center the video on screen vertically
|
||||
|
||||
|
||||
|
||||
|
||||
// Paused???
|
||||
|
||||
struct BINKFLIC
|
||||
{
|
||||
const CHAR8 *cFilename;
|
||||
HWFILE hFileHandle;
|
||||
HBINK BinkHandle;
|
||||
/// SmackBuf *SmackBuffer;
|
||||
UINT32 uiFlags;
|
||||
LPDIRECTDRAWSURFACE2 lpDDS;
|
||||
HWND hWindow;
|
||||
UINT32 uiFrame;
|
||||
UINT32 uiLeft, uiTop;
|
||||
// LPDIRECTDRAW2 lpDD;
|
||||
// UINT32 uiNumFrames;
|
||||
// UINT8 *pAudioData;
|
||||
// UINT8 *pCueData;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
void BinkInitialize(HWND hWindow, UINT32 uiWidth, UINT32 uiHeight);
|
||||
BOOLEAN BinkPollFlics(void);
|
||||
void BinkCloseFlic(BINKFLIC *pBink);
|
||||
void BinkShutdownVideo(void);
|
||||
BINKFLIC *BinkPlayFlic(const CHAR8 *cFilename, UINT32 uiLeft, UINT32 uiTop, UINT32 uiFlags );
|
||||
|
||||
|
||||
#endif
|
||||
+46
-51
@@ -30,8 +30,8 @@
|
||||
#include "DirectDraw Calls.h"
|
||||
#include "Cinematics.h"
|
||||
#include "soundman.h"
|
||||
#include "VFS/vfs.h"
|
||||
#include "VFS/vfs_file_raii.h"
|
||||
#include <vfs/Core/vfs.h>
|
||||
#include <vfs/Core/vfs_file_raii.h>
|
||||
|
||||
#ifdef JA2
|
||||
#include "video.h"
|
||||
@@ -53,45 +53,45 @@
|
||||
|
||||
//-Flags-and-Symbols---------------------------------------------------------------
|
||||
|
||||
#define SMK_NUM_FLICS 4 // Maximum number of flics open
|
||||
#define SMK_NUM_FLICS 4 // Maximum number of flics open
|
||||
|
||||
// SMKFLIC uiFlags
|
||||
#define SMK_FLIC_OPEN 0x00000001 // Flic is open
|
||||
#define SMK_FLIC_PLAYING 0x00000002 // Flic is playing
|
||||
#define SMK_FLIC_PLAYING 0x00000002 // Flic is playing
|
||||
#define SMK_FLIC_LOOP 0x00000004 // Play flic in a loop
|
||||
#define SMK_FLIC_AUTOCLOSE 0x00000008 // Close when done
|
||||
#define SMK_FLIC_AUTOCLOSE 0x00000008 // Close when done
|
||||
|
||||
//-Globals-------------------------------------------------------------------------
|
||||
SMKFLIC SmkList[SMK_NUM_FLICS];
|
||||
|
||||
HWND hDisplayWindow=0;
|
||||
UINT32 uiDisplayHeight, uiDisplayWidth;
|
||||
BOOLEAN fSuspendFlics=FALSE;
|
||||
UINT32 uiFlicsPlaying=0;
|
||||
UINT32 guiSmackPixelFormat=SMACKBUFFER565;
|
||||
HWND hDisplayWindow = 0;
|
||||
UINT32 uiDisplayHeight, uiDisplayWidth;
|
||||
BOOLEAN fSuspendFlics = FALSE;
|
||||
UINT32 uiFlicsPlaying = 0;
|
||||
UINT32 guiSmackPixelFormat = SMACKBUFFER565;
|
||||
|
||||
LPDIRECTDRAWSURFACE lpVideoPlayback=NULL;
|
||||
LPDIRECTDRAWSURFACE2 lpVideoPlayback2=NULL;
|
||||
|
||||
|
||||
//-Function-Prototypes-------------------------------------------------------------
|
||||
void SmkInitialize(HWND hWindow, UINT32 uiWidth, UINT32 uiHeight);
|
||||
void SmkShutdown(void);
|
||||
void SmkInitialize(HWND hWindow, UINT32 uiWidth, UINT32 uiHeight);
|
||||
void SmkShutdown(void);
|
||||
SMKFLIC *SmkPlayFlic(CHAR8 *cFilename, UINT32 uiLeft, UINT32 uiTop, BOOLEAN fAutoClose);
|
||||
BOOLEAN SmkPollFlics(void);
|
||||
SMKFLIC *SmkOpenFlic(CHAR8 *cFilename);
|
||||
void SmkSetBlitPosition(SMKFLIC *pSmack, UINT32 uiLeft, UINT32 uiTop);
|
||||
void SmkCloseFlic(SMKFLIC *pSmack);
|
||||
void SmkSetBlitPosition(SMKFLIC *pSmack, UINT32 uiLeft, UINT32 uiTop);
|
||||
void SmkCloseFlic(SMKFLIC *pSmack);
|
||||
SMKFLIC *SmkGetFreeFlic(void);
|
||||
void SmkSetupVideo(void);
|
||||
void SmkShutdownVideo(void);
|
||||
void SmkSetupVideo(void);
|
||||
void SmkShutdownVideo(void);
|
||||
|
||||
|
||||
BOOLEAN SmkPollFlics(void)
|
||||
{
|
||||
UINT32 uiCount;
|
||||
BOOLEAN fFlicStatus=FALSE;
|
||||
DDSURFACEDESC SurfaceDescription;
|
||||
UINT32 uiCount;
|
||||
BOOLEAN fFlicStatus = FALSE;
|
||||
DDSURFACEDESC SurfaceDescription;
|
||||
|
||||
for(uiCount=0; uiCount < SMK_NUM_FLICS; uiCount++)
|
||||
{
|
||||
@@ -103,7 +103,7 @@ DDSURFACEDESC SurfaceDescription;
|
||||
if(!SmackWait(SmkList[uiCount].SmackHandle))
|
||||
{
|
||||
DDLockSurface(SmkList[uiCount].lpDDS, NULL, &SurfaceDescription, 0, NULL);
|
||||
SmackToBuffer(SmkList[uiCount].SmackHandle,SmkList[uiCount].uiLeft,
|
||||
SmackToBuffer(SmkList[uiCount].SmackHandle,SmkList[uiCount].uiLeft,
|
||||
SmkList[uiCount].uiTop,
|
||||
SurfaceDescription.lPitch,
|
||||
SmkList[uiCount].SmackHandle->Height,
|
||||
@@ -124,7 +124,9 @@ DDSURFACEDESC SurfaceDescription;
|
||||
SmkCloseFlic(&SmkList[uiCount]);
|
||||
}
|
||||
else
|
||||
{
|
||||
SmackNextFrame(SmkList[uiCount].SmackHandle);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -138,21 +140,19 @@ DDSURFACEDESC SurfaceDescription;
|
||||
// Lesh changed this function only -----------------------------
|
||||
void SmkInitialize(HWND hWindow, UINT32 uiWidth, UINT32 uiHeight)
|
||||
{
|
||||
void *pSoundDriver = NULL;
|
||||
|
||||
// Wipe the flic list clean
|
||||
memset(SmkList, 0, sizeof(SMKFLIC)*SMK_NUM_FLICS);
|
||||
|
||||
// Set playback window properties
|
||||
hDisplayWindow=hWindow;
|
||||
uiDisplayWidth=uiWidth;
|
||||
uiDisplayHeight=uiHeight;
|
||||
hDisplayWindow = hWindow;
|
||||
uiDisplayWidth = uiWidth;
|
||||
uiDisplayHeight= uiHeight;
|
||||
|
||||
// Use MMX acceleration, if available
|
||||
SmackUseMMX(1);
|
||||
|
||||
//Get the sound Driver handle
|
||||
pSoundDriver = SoundGetDriverHandle();
|
||||
void* pSoundDriver = SoundGetDriverHandle();
|
||||
|
||||
//if we got the sound handle, use sound during the intro
|
||||
if( pSoundDriver )
|
||||
@@ -161,7 +161,7 @@ void SmkInitialize(HWND hWindow, UINT32 uiWidth, UINT32 uiHeight)
|
||||
|
||||
void SmkShutdown(void)
|
||||
{
|
||||
UINT32 uiCount;
|
||||
UINT32 uiCount;
|
||||
|
||||
// Close and deallocate any open flics
|
||||
for(uiCount=0; uiCount < SMK_NUM_FLICS; uiCount++)
|
||||
@@ -171,9 +171,9 @@ UINT32 uiCount;
|
||||
}
|
||||
}
|
||||
|
||||
SMKFLIC *SmkPlayFlic(CHAR8 *cFilename, UINT32 uiLeft, UINT32 uiTop, BOOLEAN fClose)
|
||||
SMKFLIC *SmkPlayFlic(const CHAR8 *cFilename, UINT32 uiLeft, UINT32 uiTop, BOOLEAN fClose)
|
||||
{
|
||||
SMKFLIC *pSmack;
|
||||
SMKFLIC *pSmack;
|
||||
|
||||
// Open the flic
|
||||
if((pSmack=SmkOpenFlic(cFilename))==NULL)
|
||||
@@ -190,11 +190,10 @@ SMKFLIC *pSmack;
|
||||
return(pSmack);
|
||||
}
|
||||
|
||||
SMKFLIC *SmkOpenFlic(CHAR8 *cFilename)
|
||||
SMKFLIC *SmkOpenFlic(const CHAR8 *cFilename)
|
||||
{
|
||||
SMKFLIC *pSmack;
|
||||
|
||||
|
||||
// Get an available flic slot from the list
|
||||
if(!(pSmack=SmkGetFreeFlic()))
|
||||
{
|
||||
@@ -228,18 +227,16 @@ SMKFLIC *SmkOpenFlic(CHAR8 *cFilename)
|
||||
return NULL;
|
||||
}
|
||||
vfs::COpenReadFile rfile(introname);
|
||||
vfs::size_t size = rfile.file().getSize();
|
||||
vfs::size_t size = rfile->getSize();
|
||||
std::vector<vfs::Byte> data(size);
|
||||
rfile.file().read(&data[0],size);
|
||||
rfile->read(&data[0],size);
|
||||
|
||||
vfs::COpenWriteFile wfile(tempfile,true);
|
||||
wfile.file().write(&data[0],size);
|
||||
wfile->write(&data[0],size);
|
||||
}
|
||||
catch(CBasicException& ex)
|
||||
catch(std::exception& ex)
|
||||
{
|
||||
BuildString bs;
|
||||
bs.add(L"Intro file \"").add(filename()).add(L"\" could not be extracted");
|
||||
RETHROWEXCEPTION(bs.get(), &ex);
|
||||
SGP_RETHROW(_BS(L"Intro file \"") << filename << L"\" could not be extracted" << _BS::wget, ex);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -258,14 +255,14 @@ SMKFLIC *SmkOpenFlic(CHAR8 *cFilename)
|
||||
try
|
||||
{
|
||||
vfs::COpenWriteFile wfile(tempfile);
|
||||
if(!wfile.file()._getRealPath(tempfilename))
|
||||
if(!wfile->_getRealPath(tempfilename))
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
catch(CBasicException& ex)
|
||||
catch(std::exception& ex)
|
||||
{
|
||||
RETHROWEXCEPTION(L"Temporary intro file could not be read", &ex);
|
||||
SGP_RETHROW(L"Temporary intro file could not be read", ex);
|
||||
}
|
||||
if(!(pSmack->SmackHandle=SmackOpen(tempfilename.to_string().c_str(), SMACKTRACKS, SMACKAUTOEXTRA)))
|
||||
#endif
|
||||
@@ -310,7 +307,7 @@ void SmkCloseFlic(SMKFLIC *pSmack)
|
||||
|
||||
SMKFLIC *SmkGetFreeFlic(void)
|
||||
{
|
||||
UINT32 uiCount;
|
||||
UINT32 uiCount;
|
||||
|
||||
for(uiCount=0; uiCount < SMK_NUM_FLICS; uiCount++)
|
||||
if(!(SmkList[uiCount].uiFlags & SMK_FLIC_OPEN))
|
||||
@@ -321,26 +318,24 @@ UINT32 uiCount;
|
||||
|
||||
void SmkSetupVideo(void)
|
||||
{
|
||||
DDSURFACEDESC SurfaceDescription;
|
||||
HRESULT ReturnCode;
|
||||
UINT16 usRed, usGreen, usBlue;
|
||||
HVSURFACE hVSurface;
|
||||
|
||||
// DEF:
|
||||
// lpVideoPlayback2=CinematicModeOn();
|
||||
// lpVideoPlayback2 = CinematicModeOn();
|
||||
|
||||
HVSURFACE hVSurface;
|
||||
GetVideoSurface( &hVSurface, FRAME_BUFFER );
|
||||
lpVideoPlayback2 = GetVideoSurfaceDDSurface( hVSurface );
|
||||
|
||||
DDSURFACEDESC SurfaceDescription;
|
||||
ZEROMEM(SurfaceDescription);
|
||||
SurfaceDescription.dwSize = sizeof (DDSURFACEDESC);
|
||||
ReturnCode = IDirectDrawSurface2_GetSurfaceDesc ( lpVideoPlayback2, &SurfaceDescription );
|
||||
HRESULT ReturnCode = IDirectDrawSurface2_GetSurfaceDesc ( lpVideoPlayback2, &SurfaceDescription );
|
||||
if (ReturnCode != DD_OK)
|
||||
{
|
||||
DirectXAttempt ( ReturnCode, __LINE__, __FILE__ );
|
||||
return;
|
||||
DirectXAttempt ( ReturnCode, __LINE__, __FILE__ );
|
||||
return;
|
||||
}
|
||||
|
||||
UINT16 usRed, usGreen, usBlue;
|
||||
usRed = (UINT16) SurfaceDescription.ddpfPixelFormat.dwRBitMask;
|
||||
usGreen = (UINT16) SurfaceDescription.ddpfPixelFormat.dwGBitMask;
|
||||
usBlue = (UINT16) SurfaceDescription.ddpfPixelFormat.dwBBitMask;
|
||||
|
||||
+22
-22
@@ -3,31 +3,31 @@
|
||||
|
||||
#include "smack.h"
|
||||
|
||||
typedef struct {
|
||||
|
||||
CHAR8 *cFilename;
|
||||
// HFILE hFileHandle;
|
||||
HWFILE hFileHandle;
|
||||
Smack *SmackHandle;
|
||||
SmackBuf *SmackBuffer;
|
||||
UINT32 uiFlags;
|
||||
struct SMKFLIC
|
||||
{
|
||||
const CHAR8 *cFilename;
|
||||
// HFILE hFileHandle;
|
||||
HWFILE hFileHandle;
|
||||
Smack *SmackHandle;
|
||||
SmackBuf *SmackBuffer;
|
||||
UINT32 uiFlags;
|
||||
LPDIRECTDRAWSURFACE2 lpDDS;
|
||||
HWND hWindow;
|
||||
UINT32 uiFrame;
|
||||
UINT32 uiLeft, uiTop;
|
||||
// LPDIRECTDRAW2 lpDD;
|
||||
// UINT32 uiNumFrames;
|
||||
// UINT8 *pAudioData;
|
||||
// UINT8 *pCueData;
|
||||
} SMKFLIC;
|
||||
HWND hWindow;
|
||||
UINT32 uiFrame;
|
||||
UINT32 uiLeft, uiTop;
|
||||
// LPDIRECTDRAW2 lpDD;
|
||||
// UINT32 uiNumFrames;
|
||||
// UINT8 *pAudioData;
|
||||
// UINT8 *pCueData;
|
||||
};
|
||||
|
||||
void SmkInitialize(HWND hWindow, UINT32 uiWidth, UINT32 uiHeight);
|
||||
void SmkShutdown(void);
|
||||
SMKFLIC *SmkPlayFlic(CHAR8 *cFilename, UINT32 uiLeft, UINT32 uiTop, BOOLEAN fAutoClose);
|
||||
void SmkInitialize(HWND hWindow, UINT32 uiWidth, UINT32 uiHeight);
|
||||
void SmkShutdown(void);
|
||||
SMKFLIC *SmkPlayFlic(const CHAR8 *cFilename, UINT32 uiLeft, UINT32 uiTop, BOOLEAN fAutoClose);
|
||||
BOOLEAN SmkPollFlics(void);
|
||||
SMKFLIC *SmkOpenFlic(CHAR8 *cFilename);
|
||||
void SmkSetBlitPosition(SMKFLIC *pSmack, UINT32 uiLeft, UINT32 uiTop);
|
||||
void SmkCloseFlic(SMKFLIC *pSmack);
|
||||
SMKFLIC *SmkOpenFlic(const CHAR8 *cFilename);
|
||||
void SmkSetBlitPosition(SMKFLIC *pSmack, UINT32 uiLeft, UINT32 uiTop);
|
||||
void SmkCloseFlic(SMKFLIC *pSmack);
|
||||
SMKFLIC *SmkGetFreeFlic(void);
|
||||
|
||||
/*
|
||||
|
||||
+106
-2
@@ -1189,6 +1189,16 @@ CursorData CursorDatabase[] =
|
||||
|
||||
void InitCursors( )
|
||||
{
|
||||
//CHRISL: NCTH uses a completely different cursor so if we're in NCTH mode, we want to use different graphics
|
||||
if(UsingNewCTHSystem() == true){
|
||||
strncpy((char *)CursorFileDatabase[2].ubFilename,"CURSORS\\cur_tagr_ncth.sti",MAX_FILENAME_LEN);
|
||||
strncpy((char *)CursorFileDatabase[3].ubFilename,"CURSORS\\targblak_ncth.sti",MAX_FILENAME_LEN);
|
||||
strncpy((char *)CursorFileDatabase[5].ubFilename,"CURSORS\\cur_rbst_ncth.sti",MAX_FILENAME_LEN);
|
||||
strncpy((char *)CursorFileDatabase[6].ubFilename,"CURSORS\\burstblk_ncth.sti",MAX_FILENAME_LEN);
|
||||
strncpy((char *)CursorFileDatabase[7].ubFilename,"CURSORS\\cur_tr_ncth.sti",MAX_FILENAME_LEN);
|
||||
strncpy((char *)CursorFileDatabase[8].ubFilename,"CURSORS\\cur_trw_ncth.sti",MAX_FILENAME_LEN);
|
||||
strncpy((char *)CursorFileDatabase[35].ubFilename,"CURSORS\\cur_try_ncth.sti",MAX_FILENAME_LEN);
|
||||
}
|
||||
InitCursorDatabase( CursorFileDatabase, CursorDatabase, NUM_CURSOR_FILES );
|
||||
|
||||
SetMouseBltHook( (MOUSEBLT_HOOK)BltJA2CursorData );
|
||||
@@ -1244,8 +1254,99 @@ extern INT16 gsCurMouseOffsetY;
|
||||
extern UINT16 gsCurMouseHeight;
|
||||
extern UINT16 gsCurMouseWidth;*/
|
||||
|
||||
void DrawMouseGraphicsNCTH( )
|
||||
{
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
// HEADROCK HAM 4: This entire cursor drawing function is now OBSOLETE in NCTH.
|
||||
// Instead of drawing the targeting cursor on limited cursor space (in the MOUSEBUFFER),
|
||||
// I draw the new indicator directly on the FRAMEBUFFER through a function in
|
||||
// Tactical\Interface.CPP. It bypasses the cursor system entirely in order to create
|
||||
// a pseudo-cursor that can potentially be as large as the viewport (or larger). That
|
||||
// is unfortunately not doable with the cursor system, so this code is now commented out.
|
||||
|
||||
// HEADROCK (HAM): Made several changes here to allow multi-shot CtH display for bursts.
|
||||
UINT16 * ptrBuf;
|
||||
UINT32 uiPitch;
|
||||
UINT32 cnt, i;
|
||||
UINT32 actualPct = __min(gbCtH[0],99);
|
||||
UINT16 usCBorderTop = Get16BPPColor( FROMRGB( 155, 155, 155 ) );
|
||||
UINT16 usCBorderBottom = Get16BPPColor( FROMRGB( 120, 120, 120 ) );
|
||||
UINT16 usCBar = Get16BPPColor( FROMRGB( 255, 255-255*actualPct/99, 0 ) );
|
||||
UINT16 usCBack = Get16BPPColor( FROMRGB( 155, 155-155*actualPct/99, 0 ) );
|
||||
UINT16 usCBar2 = Get16BPPColor( FROMRGB( 180, 140-140*actualPct/99, 0 ) );
|
||||
UINT16 usCBack2 = Get16BPPColor( FROMRGB( 110, 100-100*actualPct/99, 0 ) );
|
||||
UINT32 barLength = __min(35,gsCurMouseWidth);
|
||||
//UINT32 barY = gsCurMouseOffsetY-__min(35,gsCurMouseHeight)/2;
|
||||
UINT32 barY;
|
||||
|
||||
if(gfUICtHBar)
|
||||
{
|
||||
// HEADROCK HAM B1/2/2.6:
|
||||
// This causes the function to display two CTH bars for autofire - the CTH of the first bullet,
|
||||
// and the CTH of the last bullet in the volley, stored in gbCtH[0] and [1] respectively.
|
||||
if ( gbCtHAutoFire && (gGameExternalOptions.ubNewCTHBars == 1 || gGameExternalOptions.ubNewCTHBars == 3) )
|
||||
gbCtHBurstCount = 2;
|
||||
else if ( gbCtHAutoFire )
|
||||
gbCtHBurstCount = 0;
|
||||
|
||||
|
||||
// Sets the initial offsets of the bars. Burst and Autofire will display them higher above the
|
||||
// cursor, to avoid obscuring the target or other data.
|
||||
if (gbCtHBurstCount > 1 && !gbCtHAutoFire && (gGameExternalOptions.ubNewCTHBars == 1 || gGameExternalOptions.ubNewCTHBars == 2) )
|
||||
barY = gsCurMouseOffsetY-__min(55,gsCurMouseHeight)/2;
|
||||
else if (gbCtHBurstCount && gbCtHAutoFire && (gGameExternalOptions.ubNewCTHBars == 1 || gGameExternalOptions.ubNewCTHBars == 3) )
|
||||
barY = gsCurMouseOffsetY-__min(55,gsCurMouseHeight)/2;
|
||||
else
|
||||
barY = gsCurMouseOffsetY-__min(35,gsCurMouseHeight)/2;
|
||||
|
||||
for (i=0; i<gbCtHBurstCount; i++)
|
||||
{
|
||||
actualPct = __min(gbCtH[ i ],99);
|
||||
|
||||
ptrBuf = (UINT16 *) LockMouseBuffer( &uiPitch );
|
||||
uiPitch >>= 1;
|
||||
|
||||
for(cnt = gsCurMouseOffsetX+barLength/2;cnt > gsCurMouseOffsetX-barLength/2+1;cnt--)
|
||||
{
|
||||
ptrBuf[cnt-1 + uiPitch*(3+barY)] = usCBorderBottom;
|
||||
ptrBuf[cnt-1 + uiPitch*barY] = usCBorderTop;
|
||||
}
|
||||
|
||||
ptrBuf[gsCurMouseOffsetX+barLength/2 + uiPitch*(1+barY)] = usCBorderBottom;
|
||||
ptrBuf[gsCurMouseOffsetX-barLength/2 + uiPitch*(1+barY)] = usCBorderTop;
|
||||
|
||||
ptrBuf[gsCurMouseOffsetX+barLength/2 + uiPitch*(2+barY)] = usCBorderBottom;
|
||||
ptrBuf[gsCurMouseOffsetX-barLength/2 + uiPitch*(2+barY)] = usCBorderTop;
|
||||
|
||||
|
||||
for(cnt = 0;cnt < (barLength-2)*actualPct/99;cnt++)
|
||||
{
|
||||
ptrBuf[cnt + gsCurMouseOffsetX-barLength/2+1 + uiPitch*(barY+2)] = usCBar2;
|
||||
ptrBuf[cnt + gsCurMouseOffsetX-barLength/2+1 + uiPitch*(barY+1)] = usCBar;
|
||||
}
|
||||
|
||||
for(cnt = (barLength-2)*actualPct/99;cnt < (barLength-2);cnt++)
|
||||
{
|
||||
ptrBuf[cnt + gsCurMouseOffsetX-barLength/2+1 + uiPitch*(barY+2)] = usCBack2;
|
||||
ptrBuf[cnt + gsCurMouseOffsetX-barLength/2+1 + uiPitch*(barY+1)] = usCBack;
|
||||
}
|
||||
|
||||
|
||||
UnlockMouseBuffer();
|
||||
if (gbCtHBurstCount>1)
|
||||
barY = barY+5;
|
||||
}
|
||||
barY = gsCurMouseOffsetY-__min(35,gsCurMouseHeight)/2;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void DrawMouseGraphics( )
|
||||
{
|
||||
if(UsingNewCTHSystem() == true){
|
||||
DrawMouseGraphicsNCTH();
|
||||
return;
|
||||
}
|
||||
// HEADROCK (HAM): Made several changes here to allow multi-shot CtH display for bursts.
|
||||
UINT16 * ptrBuf;
|
||||
UINT32 uiPitch;
|
||||
@@ -1359,7 +1460,7 @@ void DrawMouseText( )
|
||||
|
||||
}
|
||||
|
||||
if ( gfUIAutofireBulletCount )
|
||||
if ( UsingNewCTHSystem() == false && gfUIAutofireBulletCount )
|
||||
{
|
||||
// Set dest for gprintf to be different
|
||||
SetFontDestBuffer( MOUSE_BUFFER , 0, 0, 64, 64, FALSE );
|
||||
@@ -1436,7 +1537,10 @@ void DrawMouseText( )
|
||||
|
||||
//if ( ( ( gTacticalStatus.uiFlags & TURNBASED ) && ( gTacticalStatus.uiFlags & INCOMBAT ) ) )
|
||||
{
|
||||
if ( gfUIDisplayActionPoints )
|
||||
// HEADROCK HAM 4: Added condition - the AP cost will no longer be displayed in the center when
|
||||
// aiming a weapon. It will instead by displayed on the new NCTH Indicator.
|
||||
if ( (UsingNewCTHSystem() == false && gfUIDisplayActionPoints) ||
|
||||
(UsingNewCTHSystem() == true && gfUIDisplayActionPoints && !gfUICtHBar) )
|
||||
{
|
||||
if ( gfUIDisplayActionPointsInvalid )
|
||||
{
|
||||
|
||||
+11
-6
@@ -6,8 +6,7 @@
|
||||
#include "stdio.h"
|
||||
#endif
|
||||
|
||||
#include "VFS/vfs.h"
|
||||
#include "VFS/Tools/Log.h"
|
||||
#include "sgp_logger.h"
|
||||
|
||||
#ifdef _ANIMSUBSYSTEM_DEBUG
|
||||
|
||||
@@ -57,6 +56,13 @@ void AiDbgMessage( CHAR8 *strMessage)
|
||||
|
||||
#endif
|
||||
|
||||
static struct LiveLog {
|
||||
sgp::Logger_ID id;
|
||||
LiveLog() {
|
||||
id = sgp::Logger::instance().createLogger();
|
||||
sgp::Logger::instance().connectFile(id, L"LiveLog.txt", false, sgp::Logger::FLUSH_ON_ENDL);
|
||||
};
|
||||
} s_LiveLog;
|
||||
|
||||
void LiveMessage( CHAR8 *strMessage)
|
||||
{
|
||||
@@ -69,8 +75,7 @@ void LiveMessage( CHAR8 *strMessage)
|
||||
fclose(OutFile);
|
||||
}
|
||||
#else
|
||||
static CLog& liveMsg = *CLog::create(L"LiveLog.txt",true);
|
||||
liveMsg << strMessage << CLog::ENDL;
|
||||
SGP_LOG(s_LiveLog.id, strMessage);
|
||||
#endif
|
||||
}
|
||||
void MPDebugMsg( CHAR8 *strMessage)
|
||||
@@ -84,7 +89,7 @@ void MPDebugMsg( CHAR8 *strMessage)
|
||||
fclose(OutFile);
|
||||
}
|
||||
#else
|
||||
static CLog& mpMsg = *CLog::create(L"MPDebug.txt", true);
|
||||
mpMsg << strMessage << CLog::ENDL;
|
||||
static vfs::Log& mpMsg = *vfs::Log::create(L"MPDebug.txt", true);
|
||||
mpMsg << strMessage << vfs::Log::endl;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -0,0 +1,701 @@
|
||||
#include "ExportStrings.h"
|
||||
#include "LocalizedStrings.h"
|
||||
#include "Map Screen Interface.h"
|
||||
#include "personnel.h"
|
||||
#include "soldier profile type.h"
|
||||
#include "interface.h"
|
||||
#include "Keys.h"
|
||||
#include "Merc Contract.h"
|
||||
#include "Campaign Types.h"
|
||||
#include "Finances.h"
|
||||
#include "Laptop.h"
|
||||
|
||||
#include <vfs/Core/vfs_string.h>
|
||||
#include <vfs/Tools/vfs_tools.h>
|
||||
#include <vfs/Tools/vfs_parser_tools.h>
|
||||
#include <vfs/Tools/vfs_property_container.h>
|
||||
|
||||
namespace Loc
|
||||
{
|
||||
bool Translate(vfs::String::char_t* str, int len, Language lang);
|
||||
|
||||
void ExportMercBio();
|
||||
void ExportAIMHistory();
|
||||
void ExportAIMPolicy();
|
||||
void ExportAlumniName();
|
||||
void ExportDialogues();
|
||||
void ExportNPCDialogues();
|
||||
};
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
|
||||
//#define GERMAN
|
||||
#include "Text.h"
|
||||
namespace Loc
|
||||
{
|
||||
#ifdef CHINESE
|
||||
# include "_ChineseText.cpp"
|
||||
static Loc::Language gs_Lang = Loc::Chinese;
|
||||
#endif
|
||||
#ifdef DUTCH
|
||||
# include "_DutchText.cpp"
|
||||
static Loc::Language gs_Lang = Loc::Dutch;
|
||||
#endif
|
||||
#ifdef ENGLISH
|
||||
# include "_EnglishText.cpp"
|
||||
static Loc::Language gs_Lang = Loc::English;
|
||||
#endif
|
||||
#ifdef FRENCH
|
||||
# include "_FrenchText.cpp"
|
||||
static Loc::Language gs_Lang = Loc::French;
|
||||
#endif
|
||||
#ifdef GERMAN
|
||||
# include "_GermanText.cpp"
|
||||
static Loc::Language gs_Lang = Loc::German;
|
||||
#endif
|
||||
#ifdef ITALIAN
|
||||
# include "_ItalianText.cpp"
|
||||
static Loc::Language gs_Lang = Loc::Italian;
|
||||
#endif
|
||||
#ifdef POLISH
|
||||
# include "_PolishText.cpp"
|
||||
static Loc::Language gs_Lang = Loc::Polish;
|
||||
#endif
|
||||
#ifdef RUSSIAN
|
||||
# include "_RussianText.cpp"
|
||||
static Loc::Language gs_Lang = Loc::Russian;
|
||||
#endif
|
||||
#ifdef TAIWANESE
|
||||
# include "_TaiwaneseText.cpp"
|
||||
static Loc::Language gs_Lang = Loc::Taiwanese;
|
||||
#endif
|
||||
}
|
||||
|
||||
#include "Assignments.h"
|
||||
#include "History.h"
|
||||
|
||||
template<typename T>
|
||||
void ExportSection(vfs::PropertyContainer& props, const vfs::String::char_t* section_name, T* strings, int min, int max)
|
||||
{
|
||||
for(int i = min; i < max; ++i)
|
||||
{
|
||||
vfs::String str(strings[i]);
|
||||
//Loc::Translate(&str.r_wcs()[0],str.length(), gs_Lang);
|
||||
if(!str.empty())
|
||||
{
|
||||
props.setStringProperty(section_name, vfs::toString<wchar_t>(i), str);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
template<>
|
||||
void ExportSection<wchar_t>(vfs::PropertyContainer& props, const vfs::String::char_t* section_name, wchar_t* strings, int min, int max)
|
||||
{
|
||||
ExportSection(props,section_name, &strings, min, max);
|
||||
}
|
||||
|
||||
|
||||
bool Loc::ExportStrings()
|
||||
{
|
||||
vfs::PropertyContainer::TagMap tmap;
|
||||
//tmap.Container(L"LocalizedStrings");
|
||||
//tmap.Section(L"Topic");
|
||||
//tmap.SectionID(L"name");
|
||||
//tmap.Key(L"msg");
|
||||
//tmap.KeyID(L"index");
|
||||
|
||||
vfs::PropertyContainer props;
|
||||
|
||||
//not_required ExportSection(props, L"Ja2Credits", Loc::pCreditsJA2113, 0, 7);
|
||||
ExportSection(props, L"WeaponType", Loc::WeaponType, 0, MAXITEMS);
|
||||
ExportSection(props, L"TeamTurn", Loc::TeamTurnString, 0, 10);
|
||||
ExportSection(props, L"Message", Loc::Message, 0, TEXT_NUM_STR_MESSAGE);
|
||||
ExportSection(props, L"TownNames", Loc::pTownNames, 0, MAX_TOWNS);
|
||||
ExportSection(props, L"Time", Loc::sTimeStrings, 0, 6);
|
||||
ExportSection(props, L"Assignment", Loc::pAssignmentStrings, 0, NUM_ASSIGNMENTS);
|
||||
ExportSection(props, L"PersonnelAssignment", Loc::pPersonnelAssignmentStrings, 0, NUM_ASSIGNMENTS);
|
||||
ExportSection(props, L"LongAssignment", Loc::pLongAssignmentStrings, 0, NUM_ASSIGNMENTS);
|
||||
ExportSection(props, L"Militia", Loc::pMilitiaString, 0, 3);
|
||||
|
||||
ExportSection(props, L"MilitiaButton", Loc::pMilitiaButtonString, 0, 2);
|
||||
ExportSection(props, L"Condition", Loc::pConditionStrings, 0, 9);
|
||||
ExportSection(props, L"EpcMenu", Loc::pEpcMenuStrings, 0, MAX_EPC_MENU_STRING_COUNT);
|
||||
ExportSection(props, L"Contract", Loc::pContractStrings, 0, MAX_CONTRACT_MENU_STRING_COUNT);
|
||||
ExportSection(props, L"POW", Loc::pPOWStrings, 0, 2);
|
||||
ExportSection(props, L"InvPanelTitle", Loc::pInvPanelTitleStrings, 0, 5);
|
||||
ExportSection(props, L"LongAttribute", Loc::pLongAttributeStrings, 0, 10);
|
||||
ExportSection(props, L"ShortAttribute", Loc::pShortAttributeStrings, 0, 10);
|
||||
ExportSection(props, L"UpperLeftMapScreen", Loc::pUpperLeftMapScreenStrings, 0, 6);
|
||||
ExportSection(props, L"Training", Loc::pTrainingStrings, 0, 4);
|
||||
|
||||
ExportSection(props, L"GuardMenu", Loc::pGuardMenuStrings, 0, 10);
|
||||
ExportSection(props, L"OtherGuardMenu", Loc::pOtherGuardMenuStrings, 0, 10);
|
||||
ExportSection(props, L"AssignMenu", Loc::pAssignMenuStrings, 0, MAX_ASSIGN_STRING_COUNT);
|
||||
ExportSection(props, L"MilitiaControlMenu", Loc::pMilitiaControlMenuStrings, 0, MAX_MILCON_STRING_COUNT);
|
||||
ExportSection(props, L"RemoveMerc", Loc::pRemoveMercStrings, 0, MAX_REMOVE_MERC_COUNT);
|
||||
ExportSection(props, L"AttributeMenu", Loc::pAttributeMenuStrings, 0, MAX_ATTRIBUTE_STRING_COUNT);
|
||||
ExportSection(props, L"TrainingMenu", Loc::pTrainingMenuStrings, 0, MAX_TRAIN_STRING_COUNT);
|
||||
ExportSection(props, L"SquadMenu", Loc::pSquadMenuStrings, 0, MAX_SQUAD_MENU_STRING_COUNT);
|
||||
ExportSection(props, L"PersonnelTitle", Loc::pPersonnelTitle, 0, 1);
|
||||
ExportSection(props, L"PersonnelScreen", Loc::pPersonnelScreenStrings, 0, TEXT_NUM_PRSNL);
|
||||
|
||||
ExportSection(props, L"MercSkill", Loc::gzMercSkillText, 0, NUM_SKILLTRAITS_OT);
|
||||
ExportSection(props, L"TacticalPopupButton", Loc::pTacticalPopupButtonStrings, 0, NUM_ICONS);
|
||||
ExportSection(props, L"DoorTrap", Loc::pDoorTrapStrings, 0, NUM_DOOR_TRAPS);
|
||||
ExportSection(props, L"ContractExtend", Loc::pContractExtendStrings, 0, NUM_CONTRACT_EXTEND);
|
||||
ExportSection(props, L"MapScreenMouseRegionHelp", Loc::pMapScreenMouseRegionHelpText, 0, 6);
|
||||
ExportSection(props, L"NoiseVol", Loc::pNoiseVolStr, 0, 4);
|
||||
ExportSection(props, L"NoiseType", Loc::pNoiseTypeStr, 0, 12);
|
||||
ExportSection(props, L"Direction", Loc::pDirectionStr, 0, 8);
|
||||
ExportSection(props, L"LandType", Loc::pLandTypeStrings, 0, NUM_TRAVTERRAIN_TYPES);
|
||||
ExportSection(props, L"Strategic", Loc::gpStrategicString, 0, TEXT_NUM_STRATEGIC_TEXT);
|
||||
|
||||
ExportSection(props, L"GameClock", Loc::gpGameClockString, 0, TEXT_NUM_GAMECLOCK);
|
||||
ExportSection(props, L"KeyDescription", Loc::sKeyDescriptionStrings, 0, 2);
|
||||
ExportSection(props, L"WeaponStatsDesc", Loc::gWeaponStatsDesc, 0, 17);
|
||||
ExportSection(props, L"WeaponStatsFasthelp", Loc::gzWeaponStatsFasthelp, 0, 29);
|
||||
ExportSection(props, L"WeaponStatsFasthelpTactical",Loc::gzWeaponStatsFasthelpTactical, 0, 29);
|
||||
ExportSection(props, L"AmmoStatsFasthelp", Loc::gzAmmoStatsFasthelp, 0, 20);
|
||||
ExportSection(props, L"ArmorStatsFasthelp", Loc::gzArmorStatsFasthelp, 0, 20);
|
||||
ExportSection(props, L"ExplosiveStatsFasthelp", Loc::gzExplosiveStatsFasthelp, 0, 20);
|
||||
ExportSection(props, L"MiscItemStatsFasthelp", Loc::gzMiscItemStatsFasthelp, 0, 34);
|
||||
ExportSection(props, L"MoneyStatsDesc", Loc::gMoneyStatsDesc, 0, TEXT_NUM_MONEY_DESC);
|
||||
|
||||
ExportSection(props, L"Health", Loc::zHealthStr, 0, 7);
|
||||
ExportSection(props, L"MoneyAmounts", Loc::gzMoneyAmounts, 0, 6);
|
||||
ExportSection(props, L"ProsLabel", Loc::gzProsLabel, 0, 1);
|
||||
ExportSection(props, L"ConsLabel", Loc::gzConsLabel, 0, 1);
|
||||
ExportSection(props, L"TalkMenu", Loc::zTalkMenuStrings, 0, 6);
|
||||
ExportSection(props, L"Dealer", Loc::zDealerStrings, 0, 4);
|
||||
ExportSection(props, L"DialogActions", Loc::zDialogActions, 0, 1);
|
||||
ExportSection(props, L"Vehicle", Loc::pVehicleStrings, 0, 6);
|
||||
ExportSection(props, L"ShortVehicle", Loc::pShortVehicleStrings, 0, 6);
|
||||
ExportSection(props, L"VehicleName", Loc::zVehicleName, 0, 6);
|
||||
|
||||
ExportSection(props, L"Tactical", Loc::TacticalStr, 0, TEXT_NUM_TACTICAL_STR);
|
||||
ExportSection(props, L"ExitingSectorHelp", Loc::pExitingSectorHelpText, 0, TEXT_NUM_EXIT_GUI);
|
||||
ExportSection(props, L"Repair", Loc::pRepairStrings, 0, 4);
|
||||
ExportSection(props, L"PreStatBuild", Loc::sPreStatBuildString, 0, 6);
|
||||
ExportSection(props, L"StatGain", Loc::sStatGainStrings, 0, 11);
|
||||
ExportSection(props, L"HelicopterEta", Loc::pHelicopterEtaStrings, 0, 10);
|
||||
ExportSection(props, L"MapLevel", Loc::sMapLevelString, 0, 1);
|
||||
ExportSection(props, L"Loyal", Loc::gsLoyalString, 0, 1);
|
||||
ExportSection(props, L"Underground", Loc::gsUndergroundString, 0, 1);
|
||||
ExportSection(props, L"TimeStings", Loc::gsTimeStrings, 0, 1);
|
||||
|
||||
ExportSection(props, L"Facilities", Loc::sFacilitiesStrings, 0, 7);
|
||||
ExportSection(props, L"MapPopUpInventory", Loc::pMapPopUpInventoryText, 0, 2);
|
||||
ExportSection(props, L"TownInfo", Loc::pwTownInfoStrings, 0, 12);
|
||||
ExportSection(props, L"Mine", Loc::pwMineStrings, 0, 14);
|
||||
ExportSection(props, L"MiscSector", Loc::pwMiscSectorStrings, 0, 7);
|
||||
ExportSection(props, L"MapInventoryError", Loc::pMapInventoryErrorString, 0, 7);
|
||||
ExportSection(props, L"MapInventory", Loc::pMapInventoryStrings, 0, 2);
|
||||
ExportSection(props, L"MapScreenFastHelp", Loc::pMapScreenFastHelpTextList, 0, 10);
|
||||
ExportSection(props, L"MovementMenu", Loc::pMovementMenuStrings, 0, 4);
|
||||
ExportSection(props, L"UpdateMerc", Loc::pUpdateMercStrings, 0, 6);
|
||||
|
||||
ExportSection(props, L"MapScreenBorderButtonHelp", Loc::pMapScreenBorderButtonHelpText,0, 6);
|
||||
ExportSection(props, L"MapScreenBottomFastHelp", Loc::pMapScreenBottomFastHelp, 0, 8);
|
||||
ExportSection(props, L"MapScreenBottom", Loc::pMapScreenBottomText, 0, 1);
|
||||
ExportSection(props, L"MercDead", Loc::pMercDeadString, 0, 1);
|
||||
ExportSection(props, L"Day", Loc::pDayStrings, 0, 1);
|
||||
ExportSection(props, L"SenderName", Loc::pSenderNameList, 0, 51);
|
||||
ExportSection(props, L"Traverse", Loc::pTraverseStrings, 0, 2);
|
||||
ExportSection(props, L"NewMail", Loc::pNewMailStrings, 0, 1);
|
||||
ExportSection(props, L"DeleteMail", Loc::pDeleteMailStrings, 0, 2);
|
||||
ExportSection(props, L"EmailHeader", Loc::pEmailHeaders, 0, 3);
|
||||
|
||||
ExportSection(props, L"EmailTitle", Loc::pEmailTitleText, 0, 1);
|
||||
ExportSection(props, L"FinanceTitle", Loc::pFinanceTitle, 0, 1);
|
||||
ExportSection(props, L"FinanceSummary", Loc::pFinanceSummary, 0, 12);
|
||||
ExportSection(props, L"FinanceHeader", Loc::pFinanceHeaders, 0, 7);
|
||||
ExportSection(props, L"Transaction", Loc::pTransactionText, 0, TEXT_NUM_FINCANCES);
|
||||
ExportSection(props, L"TransactionAlternate", Loc::pTransactionAlternateText, 0, 4);
|
||||
ExportSection(props, L"Skyrider", Loc::pSkyriderText, 0, 7);
|
||||
ExportSection(props, L"Moral", Loc::pMoralStrings, 0, 6);
|
||||
ExportSection(props, L"LeftEquipment", Loc::pLeftEquipmentString, 0, 2);
|
||||
ExportSection(props, L"MapScreenStatus", Loc::pMapScreenStatusStrings, 0, 5);
|
||||
|
||||
ExportSection(props, L"MapScreenPrevNextCharButtonHelp", Loc::pMapScreenPrevNextCharButtonHelpText, 0, 2);
|
||||
ExportSection(props, L"Eta", Loc::pEtaString, 0, 1);
|
||||
ExportSection(props, L"TrashItem", Loc::pTrashItemText, 0, 2);
|
||||
ExportSection(props, L"MapError", Loc::pMapErrorString, 0, 50);
|
||||
ExportSection(props, L"MapPlot", Loc::pMapPlotStrings, 0, 5);
|
||||
ExportSection(props, L"Bullseye", Loc::pBullseyeStrings, 0, 5);
|
||||
ExportSection(props, L"MiscMapScreenMouseRegionHelp", Loc::pMiscMapScreenMouseRegionHelpText, 0, 3);
|
||||
ExportSection(props, L"MercHeLeave", Loc::pMercHeLeaveString, 0, 5);
|
||||
ExportSection(props, L"MercSheLeave", Loc::pMercSheLeaveString, 0, 5);
|
||||
ExportSection(props, L"MercContractOver", Loc::pMercContractOverStrings, 0, 5);
|
||||
|
||||
ExportSection(props, L"ImpPopUp", Loc::pImpPopUpStrings, 0, 12);
|
||||
ExportSection(props, L"ImpButton", Loc::pImpButtonText, 0, 26);
|
||||
ExportSection(props, L"ExtraIMP", Loc::pExtraIMPStrings, 0, 4);
|
||||
ExportSection(props, L"FilesTitle", Loc::pFilesTitle, 0, 1);
|
||||
ExportSection(props, L"FilesSender", Loc::pFilesSenderList, 0, 7);
|
||||
ExportSection(props, L"HistoryTitle", Loc::pHistoryTitle, 0, 1);
|
||||
ExportSection(props, L"HistoryHeader", Loc::pHistoryHeaders, 0, 5);
|
||||
ExportSection(props, L"History", Loc::pHistoryStrings, 0, TEXT_NUM_HISTORY);
|
||||
ExportSection(props, L"HistoryLocation", Loc::pHistoryLocations, 0, 1);
|
||||
ExportSection(props, L"LaptopIcon", Loc::pLaptopIcons, 0, 8);
|
||||
|
||||
ExportSection(props, L"BookMark", Loc::pBookMarkStrings, 0, TEXT_NUM_LAPTOP_BOOKMARKS);
|
||||
ExportSection(props, L"BookmarkTitle", Loc::pBookmarkTitle, 0, 2);
|
||||
ExportSection(props, L"Download", Loc::pDownloadString, 0, 2);
|
||||
ExportSection(props, L"AtmSideButton", Loc::gsAtmSideButtonText, 0, 5);
|
||||
ExportSection(props, L"AtmStartButton", Loc::gsAtmStartButtonText, 0, 4);
|
||||
ExportSection(props, L"ATM", Loc::sATMText, 0, 6);
|
||||
ExportSection(props, L"Error", Loc::pErrorStrings, 0, 5);
|
||||
ExportSection(props, L"Personnel", Loc::pPersonnelString, 0, 1);
|
||||
ExportSection(props, L"WebTitle", Loc::pWebTitle, 0, 1);
|
||||
ExportSection(props, L"WebPagesTitle", Loc::pWebPagesTitles, 0, 36);
|
||||
|
||||
ExportSection(props, L"ShowBookmark", Loc::pShowBookmarkString, 0, 2);
|
||||
ExportSection(props, L"LaptopTitle", Loc::pLaptopTitles, 0, 5);
|
||||
ExportSection(props, L"PersonnelDepartedState", Loc::pPersonnelDepartedStateStrings, 0, TEXT_NUM_DEPARTED);
|
||||
ExportSection(props, L"PersonelTeam", Loc::pPersonelTeamStrings, 0, 8);
|
||||
ExportSection(props, L"PersonnelCurrentTeamStats", Loc::pPersonnelCurrentTeamStatsStrings, 0, 3);
|
||||
ExportSection(props, L"PersonnelTeamStats", Loc::pPersonnelTeamStatsStrings, 0, 11);
|
||||
ExportSection(props, L"MapVertIndex", Loc::pMapVertIndex, 0, 17);
|
||||
ExportSection(props, L"MapHortIndex", Loc::pMapHortIndex, 0, 17);
|
||||
ExportSection(props, L"MapDepthIndex", Loc::pMapDepthIndex, 0, 4);
|
||||
ExportSection(props, L"ContractButton", Loc::pContractButtonString, 0, 1);
|
||||
|
||||
ExportSection(props, L"UpdatePanelButton", Loc::pUpdatePanelButtons, 0, 2);
|
||||
ExportSection(props, L"LargeTactical", Loc::LargeTacticalStr, 0, TEXT_NUM_LARGESTR);
|
||||
ExportSection(props, L"InsContract", Loc::InsContractText, 0, TEXT_NUM_INS_CONTRACT);
|
||||
ExportSection(props, L"InsInfo", Loc::InsInfoText, 0, TEXT_NUM_INS_INFO);
|
||||
ExportSection(props, L"MercAccount", Loc::MercAccountText, 0, TEXT_NUM_MERC_ACCOUNT);
|
||||
ExportSection(props, L"MercAccountPage", Loc::MercAccountPageText, 0, 2);
|
||||
ExportSection(props, L"MercInfo", Loc::MercInfo, 0, TEXT_NUM_MERC_FILES);
|
||||
ExportSection(props, L"MercNoAccount", Loc::MercNoAccountText, 0, TEXT_NUM_MERC_NO_ACC);
|
||||
ExportSection(props, L"MercHomePage", Loc::MercHomePageText, 0, TEXT_NUM_MERC);
|
||||
ExportSection(props, L"Funeral", Loc::sFuneralString, 0, TEXT_NUM_FUNERAL);
|
||||
|
||||
ExportSection(props, L"Florist", Loc::sFloristText, 0, TEXT_NUM_FLORIST);
|
||||
ExportSection(props, L"OrderForm", Loc::sOrderFormText, 0, TEXT_NUM_FLORIST_ORDER);
|
||||
ExportSection(props, L"FloristGallery", Loc::sFloristGalleryText, 0, TEXT_NUM_FLORIST_GALLERY);
|
||||
ExportSection(props, L"FloristCards", Loc::sFloristCards, 0, TEXT_NUM_FLORIST_CARDS);
|
||||
ExportSection(props, L"BobbyROrderForm", Loc::BobbyROrderFormText, 0, TEXT_NUM_BOBBYR_MAILORDER);
|
||||
ExportSection(props, L"BobbyRFilter", Loc::BobbyRFilter, 0, TEXT_NUM_BOBBYR_FILTER);
|
||||
ExportSection(props, L"BobbyR", Loc::BobbyRText, 0, TEXT_NUM_BOBBYR_GUNS);
|
||||
ExportSection(props, L"BobbyRaysFront", Loc::BobbyRaysFrontText, 0, TEXT_NUM_BOBBYR);
|
||||
ExportSection(props, L"AimSort", Loc::AimSortText, 0, TEXT_NUM_AIM_SORT);
|
||||
ExportSection(props, L"AimPolicy", Loc::AimPolicyText, 0, TEXT_NUM_AIM_POLICIES);
|
||||
|
||||
ExportSection(props, L"AimMember", Loc::AimMemberText, 0, 4);
|
||||
ExportSection(props, L"CharacterInfo", Loc::CharacterInfo, 0, TEXT_NUM_AIM_MEMBER_CHARINFO);
|
||||
ExportSection(props, L"VideoConfercing", Loc::VideoConfercingText, 0, TEXT_NUM_AIM_MEMBER_VCONF);
|
||||
ExportSection(props, L"AimPopUp", Loc::AimPopUpText, 0, TEXT_NUM_AIM_MEMBER_POPUP);
|
||||
ExportSection(props, L"AimLink", Loc::AimLinkText, 0, TEXM_NUM_AIM_LINK);
|
||||
ExportSection(props, L"AimHistory", Loc::AimHistoryText, 0, TEXT_NUM_AIM_HISTORY);
|
||||
ExportSection(props, L"AimFi", Loc::AimFiText, 0, TEXT_NUM_AIM_FI);
|
||||
ExportSection(props, L"AimAlumni", Loc::AimAlumniText, 0, TEXT_NUM_AIM_ALUMNI);
|
||||
ExportSection(props, L"AimScreen", Loc::AimScreenText, 0, TEXT_NUM_AIM_SCREEN);
|
||||
ExportSection(props, L"AimBottomMenu", Loc::AimBottomMenuText, 0, TEXT_NUM_AIM_MENU);
|
||||
|
||||
ExportSection(props, L"SKI", Loc::SKI_Text, 0, TEXT_NUM_SKI_TEXT);
|
||||
ExportSection(props, L"SkiAtm", Loc::SkiAtmText, 0, NUM_SKI_ATM_BUTTONS);
|
||||
ExportSection(props, L"SkiAtmText", Loc::gzSkiAtmText, 0, TEXT_NUM_SKI_ATM_MODE_TEXT);
|
||||
ExportSection(props, L"SkiMessageBox", Loc::SkiMessageBoxText, 0, TEXT_NUM_SKI_MBOX_TEXT);
|
||||
ExportSection(props, L"Options", Loc::zOptionsText, 0, TEXT_NUM_OPT_TEXT);
|
||||
ExportSection(props, L"SaveLoad", Loc::zSaveLoadText, 0, TEXT_NUM_SLG_TEXT);
|
||||
ExportSection(props, L"MarksMapScreen", Loc::zMarksMapScreenText, 0, 25);
|
||||
ExportSection(props, L"LandMarkInSector", Loc::pLandMarkInSectorString, 0, 1);
|
||||
ExportSection(props, L"MilitiaConfirm", Loc::pMilitiaConfirmStrings, 0, 11);
|
||||
ExportSection(props, L"MoneyWithdrawMessage", Loc::gzMoneyWithdrawMessageText, 0, TEXT_NUM_MONEY_WITHDRAW);
|
||||
|
||||
ExportSection(props, L"Copyright", Loc::gzCopyrightText, 0, 1);
|
||||
ExportSection(props, L"OptionsToggle", Loc::zOptionsToggleText, 0, 48);
|
||||
ExportSection(props, L"OptionsScreenHelp", Loc::zOptionsScreenHelpText, 0, 48);
|
||||
ExportSection(props, L"GIOScreen", Loc::gzGIOScreenText, 0, TEXT_NUM_GIO_TEXT);
|
||||
ExportSection(props, L"MPJScreen", Loc::gzMPJScreenText, 0, TEXT_NUM_MPJ_TEXT);
|
||||
ExportSection(props, L"MPJHelpText", Loc::gzMPJHelpText, 0, 10);
|
||||
ExportSection(props, L"MPHScreen", Loc::gzMPHScreenText, 0, TEXT_NUM_MPH_TEXT);
|
||||
ExportSection(props, L"DeliveryLocation", Loc::pDeliveryLocationStrings, 0, 17);
|
||||
ExportSection(props, L"SkillAtZeroWarning", Loc::pSkillAtZeroWarning, 0, 1);
|
||||
ExportSection(props, L"IMPBeginScreen", Loc::pIMPBeginScreenStrings, 0, 1);
|
||||
ExportSection(props, L"IMPFinishButton", Loc::pIMPFinishButtonText, 0, 1);
|
||||
|
||||
ExportSection(props, L"IMPFinish", Loc::pIMPFinishStrings, 0, 1);
|
||||
ExportSection(props, L"IMPVoices", Loc::pIMPVoicesStrings, 0, 1);
|
||||
ExportSection(props, L"DepartedMercPortrait", Loc::pDepartedMercPortraitStrings, 0, 3);
|
||||
ExportSection(props, L"PersTitle", Loc::pPersTitleText, 0, 1);
|
||||
ExportSection(props, L"PausedGame", Loc::pPausedGameText, 0, 3);
|
||||
ExportSection(props, L"MessageStrings", Loc::pMessageStrings, 0, TEXT_NUM_MSG);
|
||||
ExportSection(props, L"ItemPickupHelpPopup", Loc::ItemPickupHelpPopup, 0, 5);
|
||||
ExportSection(props, L"DoctorWarning", Loc::pDoctorWarningString, 0, 2);
|
||||
ExportSection(props, L"MilitiaButtonsHelp", Loc::pMilitiaButtonsHelpText, 0, 4);
|
||||
ExportSection(props, L"MapScreenJustStartedHelp", Loc::pMapScreenJustStartedHelpText, 0, 2);
|
||||
|
||||
ExportSection(props, L"AntiHacker", Loc::pAntiHackerString, 0, TEXT_NUM_ANTIHACKERSTR);
|
||||
ExportSection(props, L"LaptopHelp", Loc::gzLaptopHelpText, 0, TEXT_NUM_LAPTOP_BN_BOOKMARK_TEXT);
|
||||
ExportSection(props, L"HelpScreen", Loc::gzHelpScreenText, 0, TEXT_NUM_HLP);
|
||||
ExportSection(props, L"NonPersistantPBI", Loc::gzNonPersistantPBIText, 0, 10);
|
||||
ExportSection(props, L"MiscString", Loc::gzMiscString, 0, 5);
|
||||
ExportSection(props, L"IntroScreen", Loc::gzIntroScreen, 0, 1);
|
||||
ExportSection(props, L"NewNoise", Loc::pNewNoiseStr, 0, 11/*MAX_NOISES*/);
|
||||
ExportSection(props, L"MapScreenSortButtonHelp", Loc::wMapScreenSortButtonHelpText, 0, 6);
|
||||
ExportSection(props, L"BrokenLink", Loc::BrokenLinkText, 0, TEXT_NUM_BROKEN_LINK);
|
||||
ExportSection(props, L"BobbyRShipment", Loc::gzBobbyRShipmentText, 0, TEXT_NUM_BOBBYR_SHIPMENT);
|
||||
|
||||
ExportSection(props, L"CreditNames", Loc::gzCreditNames, 0, 15);
|
||||
ExportSection(props, L"CreditNameTitle", Loc::gzCreditNameTitle, 0, 15);
|
||||
ExportSection(props, L"CreditNameFunny", Loc::gzCreditNameFunny, 0, 15);
|
||||
ExportSection(props, L"RepairsDone", Loc::sRepairsDoneString, 0, 7);
|
||||
ExportSection(props, L"GioDifConfirm", Loc::zGioDifConfirmText, 0, TEXT_NUM_GIO_CFS);
|
||||
ExportSection(props, L"LateLocalized", Loc::gzLateLocalizedString, 0, 64);
|
||||
ExportSection(props, L"CWStrings", Loc::gzCWStrings, 0, 1);
|
||||
ExportSection(props, L"TooltipStrings", Loc::gzTooltipStrings, 0, TEXT_NUM_STR_TT);
|
||||
ExportSection(props, L"New113Message", Loc::New113Message, 0, TEXT_NUM_MSG113);
|
||||
|
||||
ExportSection(props, L"New113HAMMessage", Loc::New113HAMMessage, 0, 22);
|
||||
ExportSection(props, L"New113MERCMercMail", Loc::New113MERCMercMailTexts, 0, 4);
|
||||
ExportSection(props, L"New113AIMMercMail", Loc::New113AIMMercMailTexts, 0, 16);
|
||||
ExportSection(props, L"MissingIMPSkills", Loc::MissingIMPSkillsDescriptions, 0, 2);
|
||||
ExportSection(props, L"NewInvMessage", Loc::NewInvMessage, 0, TEXT_NUM_NIV);
|
||||
ExportSection(props, L"MPServerMessage", Loc::MPServerMessage, 0, 13);
|
||||
ExportSection(props, L"MPClientMessage", Loc::MPClientMessage, 0, 69);
|
||||
ExportSection(props, L"MPEdges", Loc::gszMPEdgesText, 0, 5);
|
||||
ExportSection(props, L"MPTeamName", Loc::gszMPTeamNames, 0, 5);
|
||||
ExportSection(props, L"MPMapscreen", Loc::gszMPMapscreenText, 0, 9);
|
||||
|
||||
ExportSection(props, L"MPSScreen", Loc::gzMPSScreenText, 0, TEXT_NUM_MPS_TEXT);
|
||||
ExportSection(props, L"MPCScreen", Loc::gzMPCScreenText, 0, TEXT_NUM_MPC_TEXT);
|
||||
ExportSection(props, L"MPChatToggle", Loc::gzMPChatToggleText, 0, 2);
|
||||
ExportSection(props, L"MPChatbox", Loc::gzMPChatboxText, 0, 2);
|
||||
|
||||
props.writeToXMLFile(L"Localization/GameStrings.xml",tmap);
|
||||
props.writeToIniFile(L"Localization/GameStrings.ini",true);
|
||||
|
||||
Loc::ExportMercBio();
|
||||
Loc::ExportAIMHistory();
|
||||
Loc::ExportAIMPolicy();
|
||||
Loc::ExportAlumniName();
|
||||
Loc::ExportDialogues();
|
||||
Loc::ExportNPCDialogues();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
#include <vfs/Core/vfs_file_raii.h>
|
||||
#include "Encrypted File.h"
|
||||
|
||||
namespace Loc
|
||||
{
|
||||
wchar_t ToPolish(wchar_t siChar)
|
||||
{
|
||||
switch( siChar )
|
||||
{
|
||||
case 165: siChar = 260; break;
|
||||
case 198: siChar = 262; break;
|
||||
case 202: siChar = 280; break;
|
||||
case 163: siChar = 321; break;
|
||||
case 209: siChar = 323; break;
|
||||
case 211: siChar = 211; break;
|
||||
|
||||
case 140: siChar = 346; break;
|
||||
case 175: siChar = 379; break;
|
||||
case 143: siChar = 377; break;
|
||||
case 185: siChar = 261; break;
|
||||
case 230: siChar = 263; break;
|
||||
case 234: siChar = 281; break;
|
||||
|
||||
case 179: siChar = 322; break;
|
||||
case 241: siChar = 324; break;
|
||||
case 243: siChar = 243; break;
|
||||
case 156: siChar = 347; break;
|
||||
case 191: siChar = 380; break;
|
||||
case 159: siChar = 378; break;
|
||||
}
|
||||
return siChar;
|
||||
}
|
||||
|
||||
wchar_t ToRussian(wchar_t siChar)
|
||||
{
|
||||
switch( siChar )
|
||||
{
|
||||
//capital letters
|
||||
case 168: siChar = 1025; break; //U+0401 d0 81 CYRILLIC CAPITAL LETTER IO
|
||||
case 192: siChar = 1040; break; //U+0410 A d0 90 CYRILLIC CAPITAL LETTER A
|
||||
case 193: siChar = 1041; break;
|
||||
case 194: siChar = 1042; break;
|
||||
case 195: siChar = 1043; break;
|
||||
case 196: siChar = 1044; break;
|
||||
case 197: siChar = 1045; break;
|
||||
case 198: siChar = 1046; break;
|
||||
case 199: siChar = 1047; break;
|
||||
case 200: siChar = 1048; break;
|
||||
case 201: siChar = 1049; break;
|
||||
case 202: siChar = 1050; break;
|
||||
case 203: siChar = 1051; break;
|
||||
case 204: siChar = 1052; break;
|
||||
case 205: siChar = 1053; break;
|
||||
case 206: siChar = 1054; break;
|
||||
case 207: siChar = 1055; break;
|
||||
case 208: siChar = 1056; break;
|
||||
case 209: siChar = 1057; break;
|
||||
case 210: siChar = 1058; break;
|
||||
case 211: siChar = 1059; break;
|
||||
case 212: siChar = 1060; break;
|
||||
case 213: siChar = 1061; break;
|
||||
case 214: siChar = 1062; break;
|
||||
case 215: siChar = 1063; break;
|
||||
case 216: siChar = 1064; break;
|
||||
case 217: siChar = 1065; break;
|
||||
case 218: siChar = 1066; break;
|
||||
case 219: siChar = 1067; break;
|
||||
case 220: siChar = 1068; break;
|
||||
case 221: siChar = 1069; break;
|
||||
case 222: siChar = 1070; break;
|
||||
case 223: siChar = 1071; break; //U+042F d0 af CYRILLIC CAPITAL LETTER YA
|
||||
|
||||
//small letters
|
||||
case 185: siChar = 8470; break; // ¹
|
||||
case 178: siChar = 1030; break; // ²
|
||||
case 161: siChar = 1038; break; // ¡
|
||||
case 179: siChar = 1110; break; // ³
|
||||
case 162: siChar = 1118; break; // ¢
|
||||
case 165: siChar = 1168; break; // ¥
|
||||
case 170: siChar = 1028; break; // ª
|
||||
case 175: siChar = 1031; break; // ¯
|
||||
case 180: siChar = 1169; break; // ´
|
||||
case 186: siChar = 1108; break; // º
|
||||
case 191: siChar = 1111; break; // ¿
|
||||
|
||||
case 184: siChar = 1105; break; //U+0451 d1 91 CYRILLIC SMALL LETTER IO
|
||||
case 224: siChar = 1072; break; //U+0430 a d0 b0 CYRILLIC SMALL LETTER A
|
||||
case 225: siChar = 1073; break;
|
||||
case 226: siChar = 1074; break;
|
||||
case 227: siChar = 1075; break;
|
||||
case 228: siChar = 1076; break;
|
||||
case 229: siChar = 1077; break;
|
||||
case 230: siChar = 1078; break;
|
||||
case 231: siChar = 1079; break;
|
||||
case 232: siChar = 1080; break;
|
||||
case 233: siChar = 1081; break;
|
||||
case 234: siChar = 1082; break;
|
||||
case 235: siChar = 1083; break;
|
||||
case 236: siChar = 1084; break;
|
||||
case 237: siChar = 1085; break;
|
||||
case 238: siChar = 1086; break;
|
||||
case 239: siChar = 1087; break; //U+043F d0 bf CYRILLIC SMALL LETTER PE
|
||||
case 240: siChar = 1088; break; //U+0440 p d1 80 CYRILLIC SMALL LETTER ER
|
||||
case 241: siChar = 1089; break;
|
||||
case 242: siChar = 1090; break;
|
||||
case 243: siChar = 1091; break;
|
||||
case 244: siChar = 1092; break;
|
||||
case 245: siChar = 1093; break;
|
||||
case 246: siChar = 1094; break;
|
||||
case 247: siChar = 1095; break;
|
||||
case 248: siChar = 1096; break;
|
||||
case 249: siChar = 1097; break;
|
||||
case 250: siChar = 1098; break;
|
||||
case 251: siChar = 1099; break;
|
||||
case 252: siChar = 1100; break;
|
||||
case 253: siChar = 1101; break;
|
||||
case 254: siChar = 1102; break;
|
||||
case 255: siChar = 1103; break; //U+044F d1 8f CYRILLIC SMALL LETTER YA
|
||||
}
|
||||
return siChar;
|
||||
}
|
||||
bool Translate(vfs::String::char_t* str, int len, Language lang)
|
||||
{
|
||||
if(lang == English || lang == German)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else if(lang == Russian)
|
||||
{
|
||||
for(int i=0; i<len; i++) str[i] = ToRussian(str[i]);
|
||||
return true;
|
||||
}
|
||||
else if(lang == Polish)
|
||||
{
|
||||
for(int i=0; i<len; i++) str[i] = ToPolish(str[i]);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}; // namespace Loc
|
||||
|
||||
void Loc::ExportMercBio()
|
||||
{
|
||||
Loc::Language lang = gs_Lang;
|
||||
#define SIZE_MERC_BIO_INFO 400 * 2
|
||||
#define SIZE_MERC_ADDITIONAL_INFO 160 * 2
|
||||
|
||||
vfs::String::char_t pInfoString[SIZE_MERC_BIO_INFO];
|
||||
vfs::String::char_t pAddInfo[SIZE_MERC_ADDITIONAL_INFO];
|
||||
vfs::COpenReadFile rfile("BINARYDATA\\aimbios.edt");
|
||||
vfs::tReadableFile& file = rfile.file();
|
||||
|
||||
vfs::PropertyContainer props;
|
||||
for(int i=0; i<40; ++i)
|
||||
{
|
||||
memset(pInfoString,0,SIZE_MERC_BIO_INFO*sizeof(wchar_t));
|
||||
memset(pAddInfo,0,SIZE_MERC_ADDITIONAL_INFO*sizeof(wchar_t));
|
||||
//
|
||||
file.read((vfs::Byte*)pInfoString, SIZE_MERC_BIO_INFO);
|
||||
DecodeString(pInfoString,SIZE_MERC_BIO_INFO);
|
||||
Loc::Translate(pInfoString, SIZE_MERC_BIO_INFO, lang);
|
||||
props.setStringProperty(L"Bio", vfs::toString<wchar_t>(i), pInfoString);
|
||||
|
||||
file.read((vfs::Byte*)pAddInfo, SIZE_MERC_ADDITIONAL_INFO);
|
||||
DecodeString(pAddInfo, SIZE_MERC_ADDITIONAL_INFO);
|
||||
Loc::Translate(pAddInfo, SIZE_MERC_ADDITIONAL_INFO, lang);
|
||||
props.setStringProperty(L"Add", vfs::toString<wchar_t>(i), pAddInfo);
|
||||
}
|
||||
props.writeToXMLFile(L"Localization/AimBiographies.xml", vfs::PropertyContainer::TagMap());
|
||||
}
|
||||
|
||||
void Loc::ExportAIMHistory()
|
||||
{
|
||||
Loc::Language lang = gs_Lang;
|
||||
#define AIM_HISTORY_LINE_SIZE 400 * 2
|
||||
vfs::String::char_t pHistLine[AIM_HISTORY_LINE_SIZE];
|
||||
vfs::COpenReadFile rfile("BINARYDATA\\AimHist.edt");
|
||||
vfs::tReadableFile& file = rfile.file();
|
||||
|
||||
vfs::PropertyContainer props;
|
||||
for(int i=0; i<23; ++i)
|
||||
{
|
||||
memset(pHistLine,0,AIM_HISTORY_LINE_SIZE*sizeof(wchar_t));
|
||||
//
|
||||
file.read((vfs::Byte*)pHistLine, AIM_HISTORY_LINE_SIZE);
|
||||
DecodeString(pHistLine,AIM_HISTORY_LINE_SIZE);
|
||||
Loc::Translate(pHistLine, AIM_HISTORY_LINE_SIZE, lang);
|
||||
props.setStringProperty(L"Line", vfs::toString<wchar_t>(i), pHistLine);
|
||||
}
|
||||
props.writeToXMLFile(L"Localization/AimHistory.xml", vfs::PropertyContainer::TagMap());
|
||||
}
|
||||
|
||||
|
||||
void Loc::ExportAIMPolicy()
|
||||
{
|
||||
Loc::Language lang = gs_Lang;
|
||||
#define AIM_HISTORY_LINE_SIZE 400 * 2
|
||||
vfs::String::char_t pPolLine[AIM_HISTORY_LINE_SIZE];
|
||||
vfs::COpenReadFile rfile("BINARYDATA\\AimPol.edt");
|
||||
vfs::tReadableFile& file = rfile.file();
|
||||
|
||||
vfs::PropertyContainer props;
|
||||
for(int i=0; i<46; ++i)
|
||||
{
|
||||
memset(pPolLine,0,400*sizeof(wchar_t));
|
||||
//
|
||||
file.read((vfs::Byte*)pPolLine, AIM_HISTORY_LINE_SIZE);
|
||||
DecodeString(pPolLine,AIM_HISTORY_LINE_SIZE);
|
||||
Loc::Translate(pPolLine, AIM_HISTORY_LINE_SIZE, lang);
|
||||
props.setStringProperty(L"Line", vfs::toString<wchar_t>(i), pPolLine);
|
||||
}
|
||||
props.writeToXMLFile(L"Localization/AimPolicy.xml", vfs::PropertyContainer::TagMap());
|
||||
}
|
||||
|
||||
void Loc::ExportAlumniName()
|
||||
{
|
||||
Loc::Language lang = gs_Lang;
|
||||
#define AIM_ALUMNI_NAME_SIZE 80 * 2
|
||||
vfs::String::char_t pAlumniName[AIM_ALUMNI_NAME_SIZE];
|
||||
vfs::COpenReadFile rfile("BINARYDATA\\AlumName.edt");
|
||||
vfs::tReadableFile& file = rfile.file();
|
||||
|
||||
vfs::PropertyContainer props;
|
||||
for(int i=0; i<51; ++i)
|
||||
{
|
||||
memset(pAlumniName,0,AIM_ALUMNI_NAME_SIZE*sizeof(wchar_t));
|
||||
//
|
||||
file.read((vfs::Byte*)pAlumniName, AIM_ALUMNI_NAME_SIZE);
|
||||
DecodeString(pAlumniName,AIM_ALUMNI_NAME_SIZE);
|
||||
Loc::Translate(pAlumniName, AIM_ALUMNI_NAME_SIZE, lang);
|
||||
props.setStringProperty(L"Line", vfs::toString<wchar_t>(i), pAlumniName);
|
||||
}
|
||||
props.writeToXMLFile(L"Localization/AlumniName.xml", vfs::PropertyContainer::TagMap());
|
||||
}
|
||||
|
||||
#include <vfs/Core/vfs.h>
|
||||
|
||||
void Loc::ExportDialogues()
|
||||
{
|
||||
Loc::Language lang = gs_Lang;
|
||||
#define DIALOGUESIZE 480
|
||||
vfs::String::char_t pDiagLine[DIALOGUESIZE];
|
||||
|
||||
vfs::CVirtualFileSystem::Iterator it = getVFS()->begin(L"MercEdt/*.edt");
|
||||
for(; !it.end(); it.next())
|
||||
{
|
||||
vfs::PropertyContainer props;
|
||||
vfs::COpenReadFile rfile(it.value());
|
||||
vfs::tReadableFile& file = rfile.file();
|
||||
|
||||
std::wstringstream wss;
|
||||
wss.str(file.getName().c_str());
|
||||
int id=0;
|
||||
wss >> id;
|
||||
|
||||
for(int i=0; i<200; ++i)
|
||||
{
|
||||
memset(pDiagLine,0,DIALOGUESIZE*sizeof(wchar_t));
|
||||
//
|
||||
if(file.read((vfs::Byte*)pDiagLine, DIALOGUESIZE) > 0)
|
||||
{
|
||||
DecodeString(pDiagLine,DIALOGUESIZE);
|
||||
Loc::Translate(pDiagLine, DIALOGUESIZE, lang);
|
||||
if(wcslen(pDiagLine))
|
||||
{
|
||||
props.setStringProperty(vfs::toString<wchar_t>(id),vfs::toString<wchar_t>(i), pDiagLine);
|
||||
}
|
||||
}
|
||||
}
|
||||
vfs::Path x(L"Localization/Dialogue");
|
||||
x += vfs::Path(file.getName().c_wcs() + L".xml");
|
||||
props.writeToXMLFile(x, vfs::PropertyContainer::TagMap());
|
||||
}
|
||||
}
|
||||
|
||||
void Loc::ExportNPCDialogues()
|
||||
{
|
||||
Loc::Language lang = gs_Lang;
|
||||
#define DIALOGUESIZE 480
|
||||
#define CIVQUOTESIZE 320
|
||||
vfs::String::char_t pDiagLine[DIALOGUESIZE];
|
||||
|
||||
vfs::CVirtualFileSystem::Iterator it = getVFS()->begin(L"npcdata/*.edt");
|
||||
for(; !it.end(); it.next())
|
||||
{
|
||||
vfs::PropertyContainer props;
|
||||
vfs::COpenReadFile rfile(it.value());
|
||||
vfs::tReadableFile& file = rfile.file();
|
||||
|
||||
vfs::String::str_t const& ws = file.getName().c_wcs();
|
||||
vfs::String::str_t::size_type pos = ws.find_first_of(L".");
|
||||
vfs::String id = ws.substr(0,pos);
|
||||
|
||||
int SIZE;
|
||||
if(vfs::matchPattern(L"civ*", id))
|
||||
{
|
||||
SIZE = CIVQUOTESIZE;
|
||||
}
|
||||
else
|
||||
{
|
||||
SIZE = DIALOGUESIZE;
|
||||
}
|
||||
|
||||
for(int i=0; i<200; ++i)
|
||||
{
|
||||
memset(pDiagLine,0,DIALOGUESIZE*sizeof(wchar_t));
|
||||
//
|
||||
if(file.read((vfs::Byte*)pDiagLine, SIZE) > 0)
|
||||
{
|
||||
DecodeString(pDiagLine,SIZE);
|
||||
Loc::Translate(pDiagLine, SIZE, lang);
|
||||
if(wcslen(pDiagLine))
|
||||
{
|
||||
props.setStringProperty(id,vfs::toString<wchar_t>(i), pDiagLine);
|
||||
}
|
||||
}
|
||||
}
|
||||
vfs::Path x(L"Localization/NpcDialogue");
|
||||
x += vfs::Path(file.getName().c_wcs() + L".xml");
|
||||
props.writeToXMLFile(x, vfs::PropertyContainer::TagMap());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
#ifndef _EXPORTSTRINGS_H_
|
||||
#define _EXPORTSTRINGS_H_
|
||||
|
||||
namespace Loc
|
||||
{
|
||||
bool ExportStrings();
|
||||
}
|
||||
|
||||
#endif // _EXPORTSTRINGS_H_
|
||||
+66
-14
@@ -10,8 +10,11 @@
|
||||
|
||||
// Kaiden: INI reading function definitions:
|
||||
|
||||
#include "VFS/vfs.h"
|
||||
#include <vfs/Core/vfs.h>
|
||||
|
||||
#ifdef USE_VFS
|
||||
std::set<vfs::Path,vfs::Path::Less> CIniReader::m_merge_files;
|
||||
#endif
|
||||
std::stack<std::string> iniErrorMessages;
|
||||
|
||||
template<typename ValueType>
|
||||
@@ -29,6 +32,13 @@ void PushErrorMessage(std::string const& filename,
|
||||
iniErrorMessages.push(errMessage.str());
|
||||
}
|
||||
|
||||
#ifdef USE_VFS
|
||||
void CIniReader::RegisterFileForMerging(vfs::Path const& filename)
|
||||
{
|
||||
m_merge_files.insert(filename);
|
||||
}
|
||||
#endif
|
||||
|
||||
CIniReader::CIniReader(const STR8 szFileName)
|
||||
{
|
||||
memset(m_szFileName,0,sizeof(m_szFileName));
|
||||
@@ -43,7 +53,26 @@ CIniReader::CIniReader(const STR8 szFileName)
|
||||
}
|
||||
#else
|
||||
strncpy(m_szFileName,szFileName, std::min<int>(strlen(szFileName), sizeof(m_szFileName)-1));
|
||||
m_oProps.initFromIniFile(vfs::Path(szFileName));
|
||||
if(m_merge_files.find(szFileName) == m_merge_files.end())
|
||||
{
|
||||
m_oProps.initFromIniFile(vfs::Path(szFileName));
|
||||
}
|
||||
else
|
||||
{
|
||||
vfs::CProfileStack* profs = getVFS()->getProfileStack();
|
||||
vfs::CProfileStack::Iterator it = profs->begin();
|
||||
std::stack<vfs::CVirtualProfile*> rev_order;
|
||||
for(; !it.end(); it.next()) { rev_order.push(it.value()); }
|
||||
while(!rev_order.empty())
|
||||
{
|
||||
vfs::IBaseFile* file = rev_order.top()->getFile(szFileName);
|
||||
if(file)
|
||||
{
|
||||
m_oProps.initFromIniFile(vfs::tReadableFile::cast(file));
|
||||
}
|
||||
rev_order.pop();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -79,7 +108,28 @@ CIniReader::CIniReader(const STR8 szFileName, BOOLEAN Force_Custom_Data_Path)
|
||||
}
|
||||
#else
|
||||
strncpy(m_szFileName,szFileName, std::min<int>(strlen(szFileName), sizeof(m_szFileName)-1));
|
||||
CIniReader_File_Found = m_oProps.initFromIniFile(vfs::Path(szFileName));
|
||||
if(m_merge_files.find(szFileName) == m_merge_files.end())
|
||||
{
|
||||
CIniReader_File_Found = m_oProps.initFromIniFile(vfs::Path(szFileName));
|
||||
}
|
||||
else
|
||||
{
|
||||
CIniReader_File_Found = TRUE;
|
||||
vfs::CProfileStack* profs = getVFS()->getProfileStack();
|
||||
vfs::CProfileStack::Iterator it = profs->begin();
|
||||
std::stack<vfs::CVirtualProfile*> rev_order;
|
||||
for(; !it.end(); it.next()) { rev_order.push(it.value()); }
|
||||
while(!rev_order.empty())
|
||||
{
|
||||
vfs::IBaseFile* file = rev_order.top()->getFile(szFileName);
|
||||
if(file)
|
||||
{
|
||||
CIniReader_File_Found = ((CIniReader_File_Found != FALSE) && m_oProps.initFromIniFile(vfs::tReadableFile::cast(file))) ? TRUE : FALSE;
|
||||
}
|
||||
rev_order.pop();
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -99,7 +149,7 @@ int CIniReader::ReadInteger(const STR8 szSection, const STR8 szKey, int iDefault
|
||||
#ifndef USE_VFS
|
||||
return GetPrivateProfileInt(szSection, szKey, iDefaultValue, m_szFileName);
|
||||
#else
|
||||
return m_oProps.getIntProperty(szSection, szKey, iDefaultValue);
|
||||
return (int)(m_oProps.getIntProperty(szSection, szKey, iDefaultValue));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -107,9 +157,9 @@ int CIniReader::ReadInteger(const STR8 szSection, const STR8 szKey, int iDefault
|
||||
int CIniReader::ReadInteger(const STR8 szSection, const STR8 szKey, int defaultValue, int minValue, int maxValue)
|
||||
{
|
||||
#ifndef USE_VFS
|
||||
int iniValueReadFromFile = GetPrivateProfileInt(szSection, szKey, defaultValue, m_szFileName);
|
||||
int iniValueReadFromFile = (int)(GetPrivateProfileInt(szSection, szKey, defaultValue, m_szFileName));
|
||||
#else
|
||||
int iniValueReadFromFile = m_oProps.getIntProperty(szSection, szKey, defaultValue);
|
||||
int iniValueReadFromFile = (int)(m_oProps.getIntProperty(szSection, szKey, defaultValue));
|
||||
#endif
|
||||
//AssertGE(iniValueReadFromFile, minValue);
|
||||
//AssertLE(iniValueReadFromFile, maxValue);
|
||||
@@ -195,7 +245,7 @@ FLOAT CIniReader::ReadFloat(const STR8 szSection, const STR8 szKey, FLOAT defaul
|
||||
return iniValueReadFromFile;
|
||||
}
|
||||
|
||||
BOOLEAN CIniReader::ReadBoolean(const STR8 szSection, const STR8 szKey, bool defaultValue)
|
||||
BOOLEAN CIniReader::ReadBoolean(const STR8 szSection, const STR8 szKey, bool defaultValue, bool bolDisplayError)
|
||||
{
|
||||
#ifndef USE_VFS
|
||||
char szResult[255];
|
||||
@@ -209,12 +259,12 @@ BOOLEAN CIniReader::ReadBoolean(const STR8 szSection, const STR8 szKey, bool def
|
||||
else if (strcmp(szResult, "FALSE") == 0)
|
||||
return FALSE;
|
||||
#else
|
||||
utf8string str = m_oProps.getStringProperty(szSection, szKey, L"");
|
||||
if( StrCmp::Equal(str, L"true") )
|
||||
vfs::String str = m_oProps.getStringProperty(szSection, szKey, L"");
|
||||
if( vfs::StrCmp::Equal(str, L"true") )
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
else if( StrCmp::Equal(str, L"false") )
|
||||
else if( vfs::StrCmp::Equal(str, L"false") )
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
@@ -222,10 +272,12 @@ BOOLEAN CIniReader::ReadBoolean(const STR8 szSection, const STR8 szKey, bool def
|
||||
char szDefault[255];
|
||||
sprintf(szDefault, "%s", defaultValue? "TRUE" : "FALSE");
|
||||
#endif
|
||||
std::stringstream errMessage;
|
||||
errMessage << "The value [" << szSection << "][" << szKey << "] = \"" << szResult << "\" "
|
||||
<< "in file [" << this->m_szFileName << "] is neither TRUE nor FALSE. The value " << szDefault << " will be used.";
|
||||
iniErrorMessages.push(errMessage.str());
|
||||
if(bolDisplayError){
|
||||
std::stringstream errMessage;
|
||||
errMessage << "The value [" << szSection << "][" << szKey << "] = \"" << szResult << "\" "
|
||||
<< "in file [" << this->m_szFileName << "] is neither TRUE nor FALSE. The value " << szDefault << " will be used.";
|
||||
iniErrorMessages.push(errMessage.str());
|
||||
}
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
|
||||
+10
-4
@@ -6,7 +6,7 @@
|
||||
#include <stack>
|
||||
#include <string>
|
||||
|
||||
#include "VFS/PropertyContainer.h"
|
||||
#include <vfs/Tools/vfs_property_container.h>
|
||||
|
||||
// Kaiden: This will read any value out of
|
||||
// an INI file as long as the correct type is specified.
|
||||
@@ -42,7 +42,7 @@ public:
|
||||
DOUBLE ReadDouble(const STR8 szSection, const STR8 szKey, DOUBLE defaultValue, DOUBLE minValue, DOUBLE maxValue);
|
||||
FLOAT ReadFloat (const STR8 szSection, const STR8 szKey, FLOAT defaultValue, FLOAT minValue, FLOAT maxValue);
|
||||
|
||||
BOOLEAN ReadBoolean(const STR8 szSection, const STR8 szKey, bool bolDefaultValue);
|
||||
BOOLEAN ReadBoolean(const STR8 szSection, const STR8 szKey, bool bolDefaultValue, bool bolDisplayError = true);
|
||||
|
||||
void ReadString(const STR8 szSection, const STR8 szKey, const STR8 szDefaultValue, STR8 input_buffer, size_t buffer_size);
|
||||
|
||||
@@ -51,13 +51,19 @@ public:
|
||||
|
||||
BOOLEAN Is_CIniReader_File_Found(void) {return (CIniReader_File_Found);}
|
||||
void Clear();
|
||||
|
||||
#ifdef USE_VFS
|
||||
static void RegisterFileForMerging(vfs::Path const& filename);
|
||||
#endif
|
||||
private:
|
||||
CPropertyContainer m_oProps;
|
||||
vfs::PropertyContainer m_oProps;
|
||||
char m_szFileName[MAX_PATH];
|
||||
BOOLEAN CIniReader_File_Found;
|
||||
|
||||
UINT32 ReadUINT(const STR8 szSection, const STR8 szKey, UINT32 defaultValue, UINT32 minValue, UINT32 maxValue);
|
||||
|
||||
#ifdef USE_VFS
|
||||
static std::set<vfs::Path, vfs::Path::Less> m_merge_files;
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif//INIREADER_H
|
||||
@@ -0,0 +1,38 @@
|
||||
#include "ImportStrings.h"
|
||||
#include "LocalizedStrings.h"
|
||||
#include "Language Defines.h"
|
||||
|
||||
#include <vfs/Tools/vfs_tools.h>
|
||||
#include <vfs/Core/vfs.h>
|
||||
|
||||
#include <cmath>
|
||||
|
||||
void Loc::ImportStrings()
|
||||
{
|
||||
Loc::AssociateWithFile(Loc::AIM_BIOGRAPHY, L"Localization/AimBiographies.xml");
|
||||
Loc::AssociateWithFile(Loc::AIM_HISTORY, L"Localization/AimHistory.xml");
|
||||
Loc::AssociateWithFile(Loc::AIM_POLICY, L"Localization/AimPolicy.xml");
|
||||
Loc::AssociateWithFile(Loc::GAME_STRINGS, L"Localization/GameStrings.xml");
|
||||
|
||||
vfs::String bio, add, bio2;
|
||||
Loc::GetString(Loc::AIM_BIOGRAPHY,L"Bio",L"0",add);
|
||||
Loc::GetString(Loc::AIM_BIOGRAPHY,L"Add",L"10",bio);
|
||||
Loc::GetString(Loc::AIM_BIOGRAPHY,L"Bio",23,bio2);
|
||||
|
||||
for(int i=0; i<200; ++i)
|
||||
{
|
||||
std::wstringstream wss;
|
||||
for(int exp=2; exp>=0; --exp)
|
||||
{
|
||||
int t = (int)std::pow((double)10,(double)exp);
|
||||
wss << (i % (t*10)) / t;
|
||||
}
|
||||
vfs::String s = wss.str() + L".EDT.xml";
|
||||
vfs::Path filename(L"Localization/Dialogue");
|
||||
filename += vfs::Path(s);
|
||||
if(getVFS()->fileExists(filename))
|
||||
{
|
||||
Loc::AssociateWithFile(Loc::DIALOGUE,filename,vfs::toString<wchar_t>(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
#ifndef _IMPORTSTRINGS_H_
|
||||
#define _IMPORTSTRINGS_H_
|
||||
|
||||
namespace Loc
|
||||
{
|
||||
void ImportStrings();
|
||||
}
|
||||
|
||||
#endif // _IMPORTSTRINGS_H_
|
||||
@@ -0,0 +1,127 @@
|
||||
#include "LocalizedStrings.h"
|
||||
|
||||
#include <vfs/Tools/vfs_tools.h>
|
||||
#include <vfs/Tools/vfs_property_container.h>
|
||||
|
||||
bool g_bUseXML_Strings = false;
|
||||
|
||||
namespace Loc
|
||||
{
|
||||
void Init(Topic t, vfs::String const& section);
|
||||
void Clear(Topic t);
|
||||
void ClearAll();
|
||||
|
||||
class _Strings
|
||||
{
|
||||
public:
|
||||
_Strings() : initialized(false) {};
|
||||
bool initialized;
|
||||
vfs::PropertyContainer stringMap;
|
||||
};
|
||||
class _PropState
|
||||
{
|
||||
public:
|
||||
_PropState() : loaded(false) {};
|
||||
bool loaded;
|
||||
vfs::Path filename;
|
||||
};
|
||||
|
||||
typedef std::map<vfs::String,_PropState,vfs::String::Less> tSectionState;
|
||||
|
||||
static std::map<Topic, vfs::PropertyContainer> _localizedStrings;
|
||||
static std::map<Topic, tSectionState> _topicFiles;
|
||||
};
|
||||
|
||||
|
||||
|
||||
bool Loc::AssociateWithFile(Loc::Topic t, vfs::Path const& sFilename)
|
||||
{
|
||||
_topicFiles[t][L"_ALL"].filename = sFilename;
|
||||
_topicFiles[t][L"_ALL"].loaded = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Loc::AssociateWithFile(Topic t, vfs::Path const& sFilename, vfs::String const& section)
|
||||
{
|
||||
_topicFiles[t][section].filename = sFilename;
|
||||
_topicFiles[t][section].loaded = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool Loc::GetString(Loc::Topic t, vfs::String const& section, vfs::String const& key, vfs::String& value)
|
||||
{
|
||||
Init(t,section);
|
||||
return _localizedStrings[t].getStringProperty(section, key, value);
|
||||
}
|
||||
bool Loc::GetString(Loc::Topic t, vfs::String const& section, int key, vfs::String& value)
|
||||
{
|
||||
return GetString(t, section, vfs::toString<wchar_t>(key), value);
|
||||
}
|
||||
|
||||
bool Loc::GetString(Topic t, vfs::String const& section, vfs::String const& key, vfs::String::char_t* value, vfs::UInt32 len)
|
||||
{
|
||||
Init(t,section);
|
||||
return _localizedStrings[t].getStringProperty(section, key, value, len);
|
||||
}
|
||||
bool Loc::GetString(Topic t, vfs::String const& section, int key, vfs::String::char_t* value, vfs::UInt32 len)
|
||||
{
|
||||
return GetString(t, section, vfs::toString<wchar_t>(key), value, len);
|
||||
}
|
||||
|
||||
vfs::String const& Loc::GetString(Topic t, vfs::String const& section, vfs::String const& key)
|
||||
{
|
||||
Init(t,section);
|
||||
return _localizedStrings[t].getStringProperty(section, key);
|
||||
}
|
||||
vfs::String const& Loc::GetString(Topic t, vfs::String const& section, int key)
|
||||
{
|
||||
return GetString(t,section,vfs::toString<wchar_t>(key));
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Loc::Init(Topic t, vfs::String const& section)
|
||||
{
|
||||
_PropState& state = _topicFiles[t][L"_ALL"];
|
||||
if(!state.filename.empty() && !state.loaded)
|
||||
{
|
||||
_localizedStrings[t].initFromXMLFile(state.filename, vfs::PropertyContainer::TagMap());
|
||||
state.loaded = true;
|
||||
}
|
||||
state = _topicFiles[t][section];
|
||||
if(!state.filename.empty() && !state.loaded)
|
||||
{
|
||||
_localizedStrings[t].initFromXMLFile(state.filename, vfs::PropertyContainer::TagMap());
|
||||
state.loaded = true;
|
||||
}
|
||||
}
|
||||
|
||||
void Loc::Clear(Topic t)
|
||||
{
|
||||
_localizedStrings[t].clearContainer();
|
||||
tSectionState::iterator it = _topicFiles[t].begin();
|
||||
for(; it != _topicFiles[t].end(); ++it)
|
||||
{
|
||||
it->second.loaded = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void Loc::ClearAll()
|
||||
{
|
||||
std::map<Topic, tSectionState>::iterator sit = _topicFiles.begin();
|
||||
for(; sit != _topicFiles.end(); ++sit)
|
||||
{
|
||||
tSectionState::iterator it = sit->second.begin();
|
||||
for(; it != sit->second.end(); ++it)
|
||||
{
|
||||
it->second.loaded = false;
|
||||
}
|
||||
}
|
||||
_localizedStrings.clear();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
#ifndef _LOCALIZEDSTRINGS_H_
|
||||
#define _LOCALIZEDSTRINGS_H_
|
||||
|
||||
#include <vfs/Core/vfs_path.h>
|
||||
|
||||
//#define USE_LOCALIZATION
|
||||
|
||||
namespace Loc
|
||||
{
|
||||
enum Language
|
||||
{
|
||||
Chinese,
|
||||
Dutch,
|
||||
English,
|
||||
French,
|
||||
German,
|
||||
Italian,
|
||||
Polish,
|
||||
Russian,
|
||||
Taiwanese,
|
||||
};
|
||||
|
||||
static const wchar_t* LangSuffix [] = {
|
||||
L"_cn",
|
||||
L"_nl",
|
||||
L"_en",
|
||||
L"_fr",
|
||||
L"_de",
|
||||
L"_it",
|
||||
L"_pl",
|
||||
L"_ru",
|
||||
L"_tw",
|
||||
};
|
||||
|
||||
enum Topic
|
||||
{
|
||||
AIM_BIOGRAPHY,
|
||||
AIM_HISTORY,
|
||||
AIM_POLICY,
|
||||
GAME_STRINGS,
|
||||
DIALOGUE,
|
||||
};
|
||||
|
||||
bool AssociateWithFile(Topic t, vfs::Path const& sFilename);
|
||||
bool AssociateWithFile(Topic t, vfs::Path const& sFilename, vfs::String const& section);
|
||||
|
||||
bool GetString(Topic t, vfs::String const& section, vfs::String const& key, vfs::String& value);
|
||||
bool GetString(Topic t, vfs::String const& section, int key, vfs::String& value);
|
||||
|
||||
bool GetString(Topic t, vfs::String const& section, vfs::String const& key, vfs::String::char_t* value, vfs::UInt32 len);
|
||||
bool GetString(Topic t, vfs::String const& section, int key, vfs::String::char_t* value, vfs::UInt32 len);
|
||||
|
||||
vfs::String const& GetString(Topic t, vfs::String const& section, vfs::String const& key);
|
||||
vfs::String const& GetString(Topic t, vfs::String const& section, int key);
|
||||
};
|
||||
|
||||
extern bool g_bUseXML_Strings;
|
||||
|
||||
#endif // _LOCALIZEDSTRINGS_H_
|
||||
@@ -20,6 +20,9 @@ BOOLEAN GetMLGFilename( SGPFILENAME filename, UINT16 usMLGGraphicID )
|
||||
case MLG_AIMSYMBOL:
|
||||
sprintf( filename, "LAPTOP\\AimSymbol.sti" );
|
||||
return TRUE;
|
||||
case MLG_AIMSYMBOL_SMALL:
|
||||
sprintf( filename, "LAPTOP\\AimSymbol_Small.sti" );
|
||||
return TRUE;
|
||||
case MLG_BOBBYNAME:
|
||||
sprintf( filename, "LAPTOP\\BobbyName.sti" );
|
||||
return TRUE;
|
||||
@@ -138,6 +141,10 @@ BOOLEAN GetMLGFilename( SGPFILENAME filename, UINT16 usMLGGraphicID )
|
||||
//Same graphic (no translation needed)
|
||||
sprintf( filename, "LAPTOP\\AimSymbol.sti" );
|
||||
return TRUE;
|
||||
case MLG_AIMSYMBOL_SMALL:
|
||||
//Same graphic (no translation needed)
|
||||
sprintf( filename, "LAPTOP\\AimSymbol_Small.sti" );
|
||||
return TRUE;
|
||||
case MLG_BOBBYNAME:
|
||||
//Same graphic (no translation needed)
|
||||
sprintf( filename, "LAPTOP\\BobbyName.sti" );
|
||||
@@ -298,6 +305,9 @@ BOOLEAN GetMLGFilename( SGPFILENAME filename, UINT16 usMLGGraphicID )
|
||||
case MLG_AIMSYMBOL:
|
||||
sprintf( filename, "%s\\AimSymbol_%s.sti", zLanguage, zLanguage );
|
||||
break;
|
||||
case MLG_AIMSYMBOL_SMALL:
|
||||
sprintf( filename, "%s\\AimSymbol_Small_%s.sti", zLanguage, zLanguage );
|
||||
break;
|
||||
case MLG_BOBBYNAME:
|
||||
sprintf( filename, "%s\\BobbyName_%s.sti", zLanguage, zLanguage );
|
||||
break;
|
||||
@@ -419,6 +429,9 @@ BOOLEAN GetMLGFilename( SGPFILENAME filename, UINT16 usMLGGraphicID )
|
||||
case MLG_AIMSYMBOL:
|
||||
sprintf( filename, "LAPTOP\\AimSymbol.sti" );
|
||||
return TRUE;
|
||||
case MLG_AIMSYMBOL_SMALL:
|
||||
sprintf( filename, "LAPTOP\\AimSymbol_Small.sti" );
|
||||
return TRUE;
|
||||
case MLG_BOBBYNAME:
|
||||
sprintf( filename, "LAPTOP\\BobbyName.sti" );
|
||||
return TRUE;
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
enum
|
||||
{
|
||||
MLG_AIMSYMBOL,
|
||||
MLG_AIMSYMBOL_SMALL,
|
||||
MLG_BOBBYNAME,
|
||||
MLG_BOBBYRAYAD21,
|
||||
MLG_BOBBYRAYLINK,
|
||||
|
||||
+212
-174
@@ -14,27 +14,36 @@
|
||||
#include "fade screen.h"
|
||||
#endif
|
||||
|
||||
extern int iScreenMode;
|
||||
//extern int iScreenMode;
|
||||
|
||||
UINT32 uiMusicHandle=NO_SAMPLE;
|
||||
UINT32 uiMusicVolume=50;
|
||||
BOOLEAN fMusicPlaying=FALSE;
|
||||
BOOLEAN fMusicFadingOut=FALSE;
|
||||
BOOLEAN fMusicFadingIn=FALSE;
|
||||
static UINT32 uiMusicHandle = NO_SAMPLE;
|
||||
static BOOLEAN fMusicPlaying = FALSE;
|
||||
|
||||
BOOLEAN gfMusicEnded = FALSE;
|
||||
static BOOLEAN fMusicFadingOut = FALSE;
|
||||
static BOOLEAN fMusicFadingIn = FALSE;
|
||||
static UINT32 uiMusicVolume = 50;
|
||||
|
||||
UINT8 gubMusicMode = 0;
|
||||
UINT8 gubOldMusicMode = 0;
|
||||
static BOOLEAN gfMusicEnded = FALSE;
|
||||
|
||||
INT8 gbVictorySongCount = 0;
|
||||
INT8 gbDeathSongCount = 0;
|
||||
static UINT8 gubMusicMode = 0;
|
||||
|
||||
INT8 bNothingModeSong;
|
||||
INT8 bEnemyModeSong;
|
||||
INT8 bBattleModeSong;
|
||||
static UINT8 gubOldMusicMode = 0;
|
||||
|
||||
static INT8 gbVictorySongCount = 0;
|
||||
static INT8 gbDeathSongCount = 0;
|
||||
|
||||
static INT8 bNothingModeSong;
|
||||
static INT8 bEnemyModeSong;
|
||||
static INT8 bBattleModeSong;
|
||||
|
||||
static BOOLEAN gfUseCreatureMusic = FALSE;
|
||||
|
||||
static INT8 gbFadeSpeed = 1;
|
||||
|
||||
static BOOLEAN gfDontRestartSong = FALSE;
|
||||
// unused
|
||||
//BOOLEAN gfForceMusicToTense = FALSE;
|
||||
|
||||
INT8 gbFadeSpeed = 1;
|
||||
|
||||
CHAR8 *szMusicList[NUM_MUSIC]=
|
||||
{
|
||||
@@ -55,39 +64,40 @@ CHAR8 *szMusicList[NUM_MUSIC]=
|
||||
"MUSIC\\creature battle.wav",
|
||||
};
|
||||
|
||||
BOOLEAN gfForceMusicToTense = FALSE;
|
||||
BOOLEAN gfDontRestartSong = FALSE;
|
||||
BOOLEAN StartMusicBasedOnMode(void);
|
||||
void DoneFadeOutDueToEndMusic(void);
|
||||
void MusicStopCallback(void *pData);
|
||||
BOOLEAN MusicStop(void);
|
||||
BOOLEAN MusicFadeOut(void);
|
||||
BOOLEAN MusicFadeIn(void);
|
||||
|
||||
BOOLEAN StartMusicBasedOnMode( );
|
||||
void DoneFadeOutDueToEndMusic( void );
|
||||
extern void HandleEndDemoInCreatureLevel( );
|
||||
//extern void HandleEndDemoInCreatureLevel( );
|
||||
|
||||
//BOOLEAN NoEnemiesInSight( )
|
||||
//{
|
||||
// SOLDIERTYPE *pSoldier;
|
||||
// INT32 cnt;
|
||||
//
|
||||
// // Loop through our guys
|
||||
// // End the turn of player charactors
|
||||
// cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||
//
|
||||
// // look for all mercs on the same team,
|
||||
// for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++, pSoldier++ )
|
||||
// {
|
||||
// if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE )
|
||||
// {
|
||||
// if ( pSoldier->aiData.bOppCnt != 0 )
|
||||
// {
|
||||
// return( FALSE );
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// return( TRUE );
|
||||
//}
|
||||
|
||||
|
||||
BOOLEAN NoEnemiesInSight( )
|
||||
{
|
||||
SOLDIERTYPE *pSoldier;
|
||||
INT32 cnt;
|
||||
|
||||
// Loop through our guys
|
||||
// End the turn of player charactors
|
||||
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||
|
||||
// look for all mercs on the same team,
|
||||
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++, pSoldier++ )
|
||||
{
|
||||
if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE )
|
||||
{
|
||||
if ( pSoldier->aiData.bOppCnt != 0 )
|
||||
{
|
||||
return( FALSE );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return( TRUE );
|
||||
}
|
||||
|
||||
void MusicStopCallback( void *pData );
|
||||
|
||||
//********************************************************************************
|
||||
// MusicPlay
|
||||
@@ -109,28 +119,28 @@ BOOLEAN MusicPlay(UINT32 uiNum)
|
||||
MusicStop();
|
||||
|
||||
memset(&spParms, 0xff, sizeof(SOUNDPARMS));
|
||||
spParms.uiPriority=PRIORITY_MAX;
|
||||
spParms.uiVolume=0;
|
||||
spParms.uiLoop=1; // Lesh: only 1 line added
|
||||
spParms.uiPriority = PRIORITY_MAX;
|
||||
spParms.uiVolume = 0;
|
||||
spParms.uiLoop = 1; // Lesh: only 1 line added
|
||||
|
||||
spParms.EOSCallback = MusicStopCallback;
|
||||
|
||||
//DebugMsg( TOPIC_JA2, DBG_LEVEL_3, "About to call SoundPlayStreamedFile" );
|
||||
|
||||
uiMusicHandle=SoundPlayStreamedFile(szMusicList[uiNum], &spParms);
|
||||
uiMusicHandle = SoundPlayStreamedFile(szMusicList[uiNum], &spParms);
|
||||
|
||||
if(uiMusicHandle!=SOUND_ERROR)
|
||||
if(uiMusicHandle != SOUND_ERROR)
|
||||
{
|
||||
//DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "Music PLay %d %d", uiMusicHandle, gubMusicMode ) );
|
||||
|
||||
gfMusicEnded = FALSE;
|
||||
fMusicPlaying=TRUE;
|
||||
gfMusicEnded = FALSE;
|
||||
fMusicPlaying = TRUE;
|
||||
MusicFadeIn();
|
||||
return(TRUE);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "Music PLay %d %d", uiMusicHandle, gubMusicMode ) );
|
||||
return(FALSE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
//********************************************************************************
|
||||
@@ -149,32 +159,31 @@ BOOLEAN MusicSetVolume(UINT32 uiVolume)
|
||||
//if( 1==iScreenMode ) /* on Windowed mode, skip the music? was coded for WINDOWED_MODE that way...*/
|
||||
//return FALSE;
|
||||
|
||||
uiMusicVolume = __min(uiVolume, 127);
|
||||
|
||||
uiMusicVolume=__min(uiVolume, 127);
|
||||
|
||||
if(uiMusicHandle!=NO_SAMPLE)
|
||||
if(uiMusicHandle != NO_SAMPLE)
|
||||
{
|
||||
// get volume and if 0 stop music!
|
||||
if ( uiMusicVolume == 0 )
|
||||
{
|
||||
gfDontRestartSong = TRUE;
|
||||
MusicStop( );
|
||||
return( TRUE );
|
||||
}
|
||||
// get volume and if 0 stop music!
|
||||
if (uiMusicVolume == 0)
|
||||
{
|
||||
gfDontRestartSong = TRUE;
|
||||
MusicStop();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
SoundSetVolume(uiMusicHandle, uiMusicVolume);
|
||||
|
||||
return(TRUE);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// If here, check if we need to re-start music
|
||||
// Have we re-started?
|
||||
if ( uiMusicVolume > 0 && uiOldMusicVolume == 0 )
|
||||
if (uiMusicVolume > 0 && uiOldMusicVolume == 0)
|
||||
{
|
||||
StartMusicBasedOnMode( );
|
||||
StartMusicBasedOnMode();
|
||||
}
|
||||
|
||||
return(FALSE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
//********************************************************************************
|
||||
@@ -187,7 +196,7 @@ BOOLEAN MusicSetVolume(UINT32 uiVolume)
|
||||
//********************************************************************************
|
||||
UINT32 MusicGetVolume(void)
|
||||
{
|
||||
return(uiMusicVolume);
|
||||
return uiMusicVolume;
|
||||
}
|
||||
|
||||
//********************************************************************************
|
||||
@@ -198,25 +207,24 @@ UINT32 MusicGetVolume(void)
|
||||
// Returns: TRUE if the music was stopped, FALSE if an error occurred
|
||||
//
|
||||
//********************************************************************************
|
||||
BOOLEAN MusicStop(void)
|
||||
static BOOLEAN MusicStop(void)
|
||||
{
|
||||
// WANNE: We want music in windowed mode
|
||||
//if( 1==iScreenMode ) /* on Windowed mode, skip the music? was coded for WINDOWED_MODE that way...*/
|
||||
// return(FALSE);
|
||||
|
||||
|
||||
if(uiMusicHandle!=NO_SAMPLE)
|
||||
if(uiMusicHandle != NO_SAMPLE)
|
||||
{
|
||||
//DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "Music Stop %d %d", uiMusicHandle, gubMusicMode ) );
|
||||
|
||||
SoundStop(uiMusicHandle);
|
||||
fMusicPlaying=FALSE;
|
||||
fMusicPlaying = FALSE;
|
||||
uiMusicHandle = NO_SAMPLE;
|
||||
return(TRUE);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "Music Stop %d %d", uiMusicHandle, gubMusicMode ) );
|
||||
return(FALSE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
//********************************************************************************
|
||||
@@ -227,14 +235,14 @@ BOOLEAN MusicStop(void)
|
||||
// Returns: TRUE if the music has begun fading, FALSE if an error occurred
|
||||
//
|
||||
//********************************************************************************
|
||||
BOOLEAN MusicFadeOut(void)
|
||||
static BOOLEAN MusicFadeOut(void)
|
||||
{
|
||||
if(uiMusicHandle!=NO_SAMPLE)
|
||||
if(uiMusicHandle != NO_SAMPLE)
|
||||
{
|
||||
fMusicFadingOut=TRUE;
|
||||
return(TRUE);
|
||||
fMusicFadingOut = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
return(FALSE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
//********************************************************************************
|
||||
@@ -245,14 +253,14 @@ BOOLEAN MusicFadeOut(void)
|
||||
// Returns: TRUE if the music has begun fading in, FALSE if an error occurred
|
||||
//
|
||||
//********************************************************************************
|
||||
BOOLEAN MusicFadeIn(void)
|
||||
static BOOLEAN MusicFadeIn(void)
|
||||
{
|
||||
if(uiMusicHandle!=NO_SAMPLE)
|
||||
if(uiMusicHandle != NO_SAMPLE)
|
||||
{
|
||||
fMusicFadingIn=TRUE;
|
||||
return(TRUE);
|
||||
fMusicFadingIn = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
return(FALSE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
//********************************************************************************
|
||||
@@ -264,7 +272,7 @@ BOOLEAN MusicFadeIn(void)
|
||||
// Returns: TRUE always
|
||||
//
|
||||
//********************************************************************************
|
||||
BOOLEAN MusicPoll( BOOLEAN fForce )
|
||||
BOOLEAN MusicPoll(BOOLEAN /*fForce*/)
|
||||
{
|
||||
//DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"MusicPoll");
|
||||
|
||||
@@ -281,99 +289,96 @@ BOOLEAN MusicPoll( BOOLEAN fForce )
|
||||
|
||||
//DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"MusicPoll: Handle Sound every sound overhead time");
|
||||
// Handle Sound every sound overhead time....
|
||||
if ( COUNTERDONE( MUSICOVERHEAD ) )
|
||||
if (COUNTERDONE(MUSICOVERHEAD))
|
||||
{
|
||||
//DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"MusicPoll: Reset counter");
|
||||
//DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"MusicPoll: Reset counter");
|
||||
// Reset counter
|
||||
RESETCOUNTER( MUSICOVERHEAD );
|
||||
RESETCOUNTER(MUSICOVERHEAD);
|
||||
|
||||
if(fMusicFadingIn)
|
||||
if (fMusicFadingIn)
|
||||
{
|
||||
//DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"MusicPoll: music fading in");
|
||||
if(uiMusicHandle!=NO_SAMPLE)
|
||||
if(uiMusicHandle != NO_SAMPLE)
|
||||
{
|
||||
iVol=SoundGetVolume(uiMusicHandle);
|
||||
iVol=__min( (INT32)uiMusicVolume, iVol+gbFadeSpeed );
|
||||
iVol = SoundGetVolume(uiMusicHandle);
|
||||
iVol = __min( (INT32)uiMusicVolume, iVol+gbFadeSpeed );
|
||||
SoundSetVolume(uiMusicHandle, iVol);
|
||||
if(iVol==(INT32)uiMusicVolume)
|
||||
if(iVol == (INT32)uiMusicVolume)
|
||||
{
|
||||
fMusicFadingIn=FALSE;
|
||||
fMusicFadingIn = FALSE;
|
||||
gbFadeSpeed = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(fMusicFadingOut)
|
||||
else if (fMusicFadingOut)
|
||||
{
|
||||
//DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"MusicPoll: music fading out");
|
||||
if(uiMusicHandle!=NO_SAMPLE)
|
||||
if(uiMusicHandle != NO_SAMPLE)
|
||||
{
|
||||
iVol=SoundGetVolume(uiMusicHandle);
|
||||
iVol=(iVol >=1)? iVol-gbFadeSpeed : 0;
|
||||
iVol = SoundGetVolume(uiMusicHandle);
|
||||
iVol = (iVol >=1)? iVol-gbFadeSpeed : 0;
|
||||
|
||||
iVol=__max( (INT32)iVol, 0 );
|
||||
iVol = __max( (INT32)iVol, 0 );
|
||||
|
||||
SoundSetVolume(uiMusicHandle, iVol);
|
||||
if(iVol==0)
|
||||
if(iVol == 0)
|
||||
{
|
||||
MusicStop();
|
||||
fMusicFadingOut=FALSE;
|
||||
fMusicFadingOut = FALSE;
|
||||
gbFadeSpeed = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//#endif
|
||||
|
||||
if ( gfMusicEnded )
|
||||
if (gfMusicEnded)
|
||||
{
|
||||
//DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"MusicPoll: music ended");
|
||||
// OK, based on our music mode, play another!
|
||||
//DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "Music End Loop %d %d", uiMusicHandle, gubMusicMode ) );
|
||||
|
||||
// If we were in victory mode, change!
|
||||
if ( gbVictorySongCount == 1 || gbDeathSongCount == 1 )
|
||||
if (gbVictorySongCount == 1 || gbDeathSongCount == 1)
|
||||
{
|
||||
if ( gbDeathSongCount == 1 && guiCurrentScreen == GAME_SCREEN )
|
||||
if (gbDeathSongCount == 1 && guiCurrentScreen == GAME_SCREEN)
|
||||
{
|
||||
CheckAndHandleUnloadingOfCurrentWorld();
|
||||
}
|
||||
|
||||
if ( gbVictorySongCount == 1 )
|
||||
if (gbVictorySongCount == 1)
|
||||
{
|
||||
SetMusicMode( MUSIC_TACTICAL_NOTHING );
|
||||
SetMusicMode(MUSIC_TACTICAL_NOTHING);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( !gfDontRestartSong )
|
||||
if (!gfDontRestartSong)
|
||||
{
|
||||
//DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"MusicPoll: don't restart song, StartMusicBasedOnMode");
|
||||
StartMusicBasedOnMode( );
|
||||
StartMusicBasedOnMode();
|
||||
}
|
||||
}
|
||||
|
||||
gfMusicEnded = FALSE;
|
||||
gfDontRestartSong = FALSE;
|
||||
gfDontRestartSong = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
//DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"MusicPoll done");
|
||||
return(TRUE);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
BOOLEAN SetMusicMode( UINT8 ubMusicMode )
|
||||
static BOOLEAN SetMusicMode(UINT8 ubMusicMode, BOOLEAN fForce)
|
||||
{
|
||||
static INT8 bPreviousMode = 0;
|
||||
|
||||
|
||||
// OK, check if we want to restore
|
||||
if ( ubMusicMode == MUSIC_RESTORE )
|
||||
if (ubMusicMode == MUSIC_RESTORE)
|
||||
{
|
||||
if ( bPreviousMode == MUSIC_TACTICAL_VICTORY || bPreviousMode == MUSIC_TACTICAL_DEATH )
|
||||
{
|
||||
bPreviousMode = MUSIC_TACTICAL_NOTHING;
|
||||
}
|
||||
if (bPreviousMode == MUSIC_TACTICAL_VICTORY || bPreviousMode == MUSIC_TACTICAL_DEATH)
|
||||
{
|
||||
bPreviousMode = MUSIC_TACTICAL_NOTHING;
|
||||
}
|
||||
|
||||
ubMusicMode = bPreviousMode;
|
||||
}
|
||||
@@ -384,7 +389,7 @@ BOOLEAN SetMusicMode( UINT8 ubMusicMode )
|
||||
}
|
||||
|
||||
// if different, start a new music song
|
||||
if ( gubOldMusicMode != ubMusicMode )
|
||||
if (fForce || gubOldMusicMode != ubMusicMode)
|
||||
{
|
||||
// Set mode....
|
||||
gubMusicMode = ubMusicMode;
|
||||
@@ -394,108 +399,106 @@ BOOLEAN SetMusicMode( UINT8 ubMusicMode )
|
||||
gbVictorySongCount = 0;
|
||||
gbDeathSongCount = 0;
|
||||
|
||||
if(uiMusicHandle!=NO_SAMPLE )
|
||||
if(uiMusicHandle != NO_SAMPLE)
|
||||
{
|
||||
// Fade out old music
|
||||
MusicFadeOut( );
|
||||
MusicFadeOut();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Change music!
|
||||
StartMusicBasedOnMode( );
|
||||
StartMusicBasedOnMode();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
gubOldMusicMode = gubMusicMode;
|
||||
|
||||
return( TRUE );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
BOOLEAN StartMusicBasedOnMode( )
|
||||
static BOOLEAN StartMusicBasedOnMode(void)
|
||||
{
|
||||
static BOOLEAN fFirstTime = TRUE;
|
||||
|
||||
if ( fFirstTime )
|
||||
if (fFirstTime)
|
||||
{
|
||||
fFirstTime = FALSE;
|
||||
|
||||
bNothingModeSong = (INT8) (NOTHING_A_MUSIC + Random( 4 ));
|
||||
|
||||
bEnemyModeSong = (INT8) (TENSOR_A_MUSIC + Random( 3 ));
|
||||
|
||||
bBattleModeSong = (INT8) (BATTLE_A_MUSIC + Random( 2 ));
|
||||
|
||||
bNothingModeSong = (INT8) (NOTHING_A_MUSIC + Random(4));
|
||||
bEnemyModeSong = (INT8) (TENSOR_A_MUSIC + Random(3));
|
||||
bBattleModeSong = (INT8) (BATTLE_A_MUSIC + Random(2));
|
||||
}
|
||||
|
||||
|
||||
//DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "StartMusicBasedOnMode() %d %d", uiMusicHandle, gubMusicMode ) );
|
||||
|
||||
// Setup a song based on mode we're in!
|
||||
switch( gubMusicMode )
|
||||
switch(gubMusicMode)
|
||||
{
|
||||
case MUSIC_MAIN_MENU:
|
||||
// ATE: Don't fade in
|
||||
gbFadeSpeed = (INT8)uiMusicVolume;
|
||||
MusicPlay( MENUMIX_MUSIC );
|
||||
MusicPlay(MENUMIX_MUSIC);
|
||||
break;
|
||||
|
||||
case MUSIC_LAPTOP:
|
||||
gbFadeSpeed = (INT8)uiMusicVolume;
|
||||
MusicPlay( MARIMBAD2_MUSIC );
|
||||
MusicPlay(MARIMBAD2_MUSIC);
|
||||
break;
|
||||
|
||||
case MUSIC_TACTICAL_NOTHING:
|
||||
// ATE: Don't fade in
|
||||
gbFadeSpeed = (INT8)uiMusicVolume;
|
||||
if( gfUseCreatureMusic )
|
||||
if(gfUseCreatureMusic)
|
||||
{
|
||||
MusicPlay( CREEPY_MUSIC );
|
||||
MusicPlay(CREEPY_MUSIC);
|
||||
}
|
||||
else
|
||||
{
|
||||
MusicPlay( bNothingModeSong );
|
||||
bNothingModeSong = (INT8) (NOTHING_A_MUSIC + Random( 4 ) );
|
||||
MusicPlay(bNothingModeSong);
|
||||
bNothingModeSong = (INT8) (NOTHING_A_MUSIC + Random(4));
|
||||
}
|
||||
break;
|
||||
|
||||
case MUSIC_TACTICAL_ENEMYPRESENT:
|
||||
// ATE: Don't fade in EnemyPresent...
|
||||
gbFadeSpeed = (INT8)uiMusicVolume;
|
||||
if( gfUseCreatureMusic )
|
||||
if(gfUseCreatureMusic)
|
||||
{
|
||||
MusicPlay( CREEPY_MUSIC );
|
||||
MusicPlay(CREEPY_MUSIC);
|
||||
}
|
||||
else
|
||||
{
|
||||
MusicPlay( bEnemyModeSong );
|
||||
bEnemyModeSong = (INT8) (TENSOR_A_MUSIC + Random( 3 ));
|
||||
MusicPlay(bEnemyModeSong);
|
||||
bEnemyModeSong = (INT8) (TENSOR_A_MUSIC + Random(3));
|
||||
}
|
||||
break;
|
||||
|
||||
case MUSIC_TACTICAL_BATTLE:
|
||||
// ATE: Don't fade in
|
||||
gbFadeSpeed = (INT8)uiMusicVolume;
|
||||
if( gfUseCreatureMusic )
|
||||
if(gfUseCreatureMusic)
|
||||
{
|
||||
MusicPlay( CREATURE_BATTLE_MUSIC );
|
||||
MusicPlay(CREATURE_BATTLE_MUSIC);
|
||||
}
|
||||
else
|
||||
{
|
||||
MusicPlay( bBattleModeSong );
|
||||
MusicPlay(bBattleModeSong);
|
||||
}
|
||||
bBattleModeSong = (INT8) (BATTLE_A_MUSIC + Random( 2 ));
|
||||
bBattleModeSong = (INT8) (BATTLE_A_MUSIC + Random(2));
|
||||
break;
|
||||
|
||||
case MUSIC_TACTICAL_VICTORY:
|
||||
|
||||
// ATE: Don't fade in EnemyPresent...
|
||||
gbFadeSpeed = (INT8)uiMusicVolume;
|
||||
MusicPlay( TRIUMPH_MUSIC );
|
||||
MusicPlay(TRIUMPH_MUSIC);
|
||||
gbVictorySongCount++;
|
||||
|
||||
if( gfUseCreatureMusic && !gbWorldSectorZ )
|
||||
{ //We just killed all the creatures that just attacked the town.
|
||||
if(gfUseCreatureMusic && !gbWorldSectorZ)
|
||||
{
|
||||
//We just killed all the creatures that just attacked the town.
|
||||
gfUseCreatureMusic = FALSE;
|
||||
}
|
||||
break;
|
||||
@@ -504,55 +507,90 @@ BOOLEAN StartMusicBasedOnMode( )
|
||||
|
||||
// ATE: Don't fade in EnemyPresent...
|
||||
gbFadeSpeed = (INT8)uiMusicVolume;
|
||||
MusicPlay( DEATH_MUSIC );
|
||||
MusicPlay(DEATH_MUSIC);
|
||||
gbDeathSongCount++;
|
||||
break;
|
||||
|
||||
default:
|
||||
MusicFadeOut( );
|
||||
MusicFadeOut();
|
||||
break;
|
||||
}
|
||||
|
||||
return( TRUE );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOLEAN SetMusicMode(UINT8 ubMusicMode)
|
||||
{
|
||||
return SetMusicMode(ubMusicMode, FALSE);
|
||||
}
|
||||
|
||||
void MusicStopCallback( void *pData )
|
||||
static void MusicStopCallback(void *pData)
|
||||
{
|
||||
//DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "Music EndCallback %d %d", uiMusicHandle, gubMusicMode ) );
|
||||
|
||||
gfMusicEnded = TRUE;
|
||||
gfMusicEnded = TRUE;
|
||||
uiMusicHandle = NO_SAMPLE;
|
||||
|
||||
//DebugMsg( TOPIC_JA2, DBG_LEVEL_3, "Music EndCallback completed" );
|
||||
}
|
||||
|
||||
|
||||
void SetMusicFadeSpeed( INT8 bFadeSpeed )
|
||||
void SetMusicFadeSpeed(INT8 bFadeSpeed)
|
||||
{
|
||||
gbFadeSpeed = bFadeSpeed;
|
||||
}
|
||||
|
||||
void FadeMusicForXSeconds( UINT32 uiDelay )
|
||||
UINT8 GetMusicMode(void)
|
||||
{
|
||||
INT16 sNumTimeSteps, sNumVolumeSteps;
|
||||
|
||||
// get # time steps in delay....
|
||||
sNumTimeSteps = (INT16)( uiDelay / 10 );
|
||||
|
||||
// Devide this by music volume...
|
||||
sNumVolumeSteps = (INT16)( uiMusicVolume / sNumTimeSteps );
|
||||
|
||||
// Set fade delay...
|
||||
SetMusicFadeSpeed( (INT8)sNumVolumeSteps );
|
||||
return gubMusicMode;
|
||||
}
|
||||
|
||||
|
||||
void DoneFadeOutDueToEndMusic( void )
|
||||
BOOLEAN UsingCreatureMusic(void)
|
||||
{
|
||||
// Quit game....
|
||||
InternalLeaveTacticalScreen( MAINMENU_SCREEN );
|
||||
//SetPendingNewScreen( MAINMENU_SCREEN );
|
||||
return gfUseCreatureMusic;
|
||||
}
|
||||
|
||||
void UseCreatureMusic(BOOLEAN fUseCreatureMusic)
|
||||
{
|
||||
if (gfUseCreatureMusic != fUseCreatureMusic)
|
||||
{
|
||||
// this means a change
|
||||
gfUseCreatureMusic = fUseCreatureMusic;
|
||||
SetMusicMode(gubMusicMode, TRUE); // same as before
|
||||
}
|
||||
}
|
||||
|
||||
BOOLEAN IsMusicPlaying(void)
|
||||
{
|
||||
return fMusicPlaying;
|
||||
}
|
||||
|
||||
UINT32 GetMusicHandle(void)
|
||||
{
|
||||
return uiMusicHandle;
|
||||
}
|
||||
|
||||
// unused
|
||||
//void FadeMusicForXSeconds( UINT32 uiDelay )
|
||||
//{
|
||||
// INT16 sNumTimeSteps, sNumVolumeSteps;
|
||||
//
|
||||
// // get # time steps in delay....
|
||||
// sNumTimeSteps = (INT16)( uiDelay / 10 );
|
||||
//
|
||||
// // Devide this by music volume...
|
||||
// sNumVolumeSteps = (INT16)( uiMusicVolume / sNumTimeSteps );
|
||||
//
|
||||
// // Set fade delay...
|
||||
// SetMusicFadeSpeed( (INT8)sNumVolumeSteps );
|
||||
//}
|
||||
|
||||
// unused
|
||||
//void DoneFadeOutDueToEndMusic( void )
|
||||
//{
|
||||
// // Quit game....
|
||||
// InternalLeaveTacticalScreen( MAINMENU_SCREEN );
|
||||
// //SetPendingNewScreen( MAINMENU_SCREEN );
|
||||
//}
|
||||
|
||||
|
||||
|
||||
+27
-15
@@ -1,7 +1,8 @@
|
||||
#ifndef _MUSIC_CONTROL_H_
|
||||
#define _MUSIC_CONTROL_H_
|
||||
|
||||
enum MusicList {
|
||||
enum MusicList
|
||||
{
|
||||
MARIMBAD2_MUSIC,
|
||||
MENUMIX_MUSIC,
|
||||
NOTHING_A_MUSIC,
|
||||
@@ -20,8 +21,8 @@ enum MusicList {
|
||||
NUM_MUSIC
|
||||
};
|
||||
|
||||
enum MusicMode {
|
||||
|
||||
enum MusicMode
|
||||
{
|
||||
MUSIC_NONE,
|
||||
MUSIC_RESTORE,
|
||||
MUSIC_MAIN_MENU,
|
||||
@@ -33,23 +34,34 @@ enum MusicMode {
|
||||
MUSIC_LAPTOP,
|
||||
};
|
||||
|
||||
extern UINT32 uiMusicHandle;
|
||||
extern BOOLEAN fMusicPlaying;
|
||||
extern UINT8 gubMusicMode;
|
||||
extern BOOLEAN gfForceMusicToTense;
|
||||
//extern UINT32 uiMusicHandle;
|
||||
//extern BOOLEAN fMusicPlaying;
|
||||
//extern UINT8 gubMusicMode;
|
||||
//extern BOOLEAN gfForceMusicToTense;
|
||||
|
||||
UINT8 GetMusicMode(void);
|
||||
BOOLEAN SetMusicMode(UINT8 ubMusicMode);
|
||||
|
||||
BOOLEAN SetMusicMode( UINT8 ubMusicMode );
|
||||
// only for editor (editscreen.cpp)
|
||||
BOOLEAN MusicPlay(UINT32 uiNum);
|
||||
BOOLEAN MusicSetVolume(UINT32 uiVolume);
|
||||
|
||||
UINT32 MusicGetVolume(void);
|
||||
BOOLEAN MusicStop(void);
|
||||
BOOLEAN MusicFadeOut(void);
|
||||
BOOLEAN MusicFadeIn(void);
|
||||
BOOLEAN MusicPoll( BOOLEAN fForce );
|
||||
BOOLEAN MusicSetVolume(UINT32 uiVolume);
|
||||
|
||||
void SetMusicFadeSpeed( INT8 bFadeSpeed );
|
||||
BOOLEAN MusicPoll(BOOLEAN fForce);
|
||||
|
||||
void FadeMusicForXSeconds( UINT32 uiDelay );
|
||||
void SetMusicFadeSpeed(INT8 bFadeSpeed);
|
||||
|
||||
BOOLEAN UsingCreatureMusic(void);
|
||||
void UseCreatureMusic(BOOLEAN fUseCreatureMusic);
|
||||
|
||||
// only for luaglobal.cpp
|
||||
BOOLEAN IsMusicPlaying(void);
|
||||
UINT32 GetMusicHandle(void);
|
||||
|
||||
//BOOLEAN MusicStop(void);
|
||||
//BOOLEAN MusicFadeOut(void);
|
||||
//BOOLEAN MusicFadeIn(void);
|
||||
//void FadeMusicForXSeconds( UINT32 uiDelay );
|
||||
|
||||
#endif
|
||||
|
||||
+2
-2
@@ -624,10 +624,10 @@ void CalculateNewSliderIncrement( UINT32 uiSliderID, UINT16 usPos )
|
||||
|
||||
if( pSlider->uiFlags & SLIDER_VERTICAL )
|
||||
{
|
||||
if( usPos >= (UINT16)(pSlider->usHeight * (FLOAT).99 ) )
|
||||
if( usPos >= (UINT16)(pSlider->usHeight * 0.99f ) )
|
||||
fLastSpot = TRUE;
|
||||
|
||||
if( usPos <= (UINT16)(pSlider->usHeight * (FLOAT).01 ) )
|
||||
if( usPos <= (UINT16)(pSlider->usHeight * 0.01f ) )
|
||||
fFirstSpot = TRUE;
|
||||
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
#include "Sound Control.h"
|
||||
#endif
|
||||
|
||||
#include "VFS/Tools/ParserTools.h"
|
||||
#include <vfs/Tools/vfs_parser_tools.h>
|
||||
|
||||
STR16 szClipboard;
|
||||
BOOLEAN gfNoScroll = FALSE;
|
||||
|
||||
+228
-22
@@ -7,6 +7,8 @@
|
||||
|
||||
#define STRING_LENGTH 255
|
||||
|
||||
extern CHAR16 gszAimPages[ 6 ][ 20 ];
|
||||
extern CHAR16 zGrod[][500];
|
||||
extern STR16 pCreditsJA2113[];
|
||||
extern CHAR16 ShortItemNames[MAXITEMS][80];
|
||||
extern CHAR16 ItemNames[MAXITEMS][80];
|
||||
@@ -30,6 +32,7 @@ extern STR16 pAssignmentStrings[];
|
||||
extern STR16 pConditionStrings[];
|
||||
extern CHAR16 pTownNames[MAX_TOWNS][MAX_TOWN_NAME_LENGHT]; // Lesh: look mapscreen.h for definitions
|
||||
extern STR16 pPersonnelScreenStrings[];
|
||||
extern STR16 pPersonnelRecordsHelpTexts[]; // added by SANDRO
|
||||
extern STR16 pPersonnelTitle[];
|
||||
extern STR16 pUpperLeftMapScreenStrings[];
|
||||
extern STR16 pTacticalPopupButtonStrings[];
|
||||
@@ -76,7 +79,7 @@ extern STR16 pMapScreenBorderButtonHelpText[];
|
||||
extern STR16 pMapScreenBottomFastHelp[];
|
||||
extern STR16 pMapScreenBottomText[];
|
||||
extern STR16 pMercDeadString[];
|
||||
extern STR16 pSenderNameList[];
|
||||
extern CHAR16 pSenderNameList[500][128];
|
||||
extern STR16 pTraverseStrings[];
|
||||
extern STR16 pNewMailStrings[];
|
||||
extern STR16 pDeleteMailStrings[];
|
||||
@@ -153,6 +156,7 @@ extern STR16 pMilitiaButtonsHelpText[];
|
||||
extern STR16 pMapScreenJustStartedHelpText[];
|
||||
extern STR16 pLandMarkInSectorString[];
|
||||
extern STR16 gzMercSkillText[];
|
||||
extern STR16 gzMercSkillTextNew[]; // added by SANDRO
|
||||
extern STR16 gzNonPersistantPBIText[];
|
||||
extern STR16 gzMiscString[];
|
||||
|
||||
@@ -172,6 +176,14 @@ extern STR16 gzIMPCharacterTraitText[];
|
||||
extern STR16 gzIMPColorChoosingText[];
|
||||
extern STR16 sColorChoiceExplanationTexts[];
|
||||
extern STR16 gzIMPDisabilityTraitText[];
|
||||
extern STR16 sEnemyTauntsFireGun[];
|
||||
extern STR16 sEnemyTauntsFireLauncher[];
|
||||
extern STR16 sEnemyTauntsThrow[];
|
||||
extern STR16 sEnemyTauntsChargeKnife[];
|
||||
extern STR16 sEnemyTauntsRunAway[];
|
||||
extern STR16 sEnemyTauntsSeekNoise[];
|
||||
extern STR16 sEnemyTauntsAlert[];
|
||||
extern STR16 sEnemyTauntsGotHit[];
|
||||
//****
|
||||
|
||||
// HEADROCK HAM 3.6: New arrays for facility operation messages
|
||||
@@ -179,9 +191,13 @@ extern STR16 gzFacilityErrorMessage[];
|
||||
extern STR16 gzFacilityAssignmentStrings[];
|
||||
extern STR16 gzFacilityRiskResultStrings[];
|
||||
|
||||
// HEADROCK HAM 4: Text for the new CTH indicator.
|
||||
extern STR16 gzNCTHlabels[];
|
||||
|
||||
enum
|
||||
{
|
||||
ANTIHACKERSTR_EXITGAME,
|
||||
TEXT_NUM_ANTIHACKERSTR,
|
||||
};
|
||||
extern STR16 pAntiHackerString[];
|
||||
|
||||
@@ -266,8 +282,8 @@ enum
|
||||
MSG_HISTORY_UPDATED,
|
||||
MSG_GL_BURST_CURSOR_ON,
|
||||
MSG_GL_BURST_CURSOR_OFF,
|
||||
MSG_DROP_ALL_ON,
|
||||
MSG_DROP_ALL_OFF,
|
||||
MSG_SOLDIER_TOOLTIPS_ON, // changed by SANDRO
|
||||
MSG_SOLDIER_TOOLTIPS_OFF, // changed by SANDRO
|
||||
MSG_GL_LOW_ANGLE,
|
||||
MSG_GL_HIGH_ANGLE,
|
||||
MSG_FORCED_TURN_MODE,
|
||||
@@ -278,8 +294,9 @@ enum
|
||||
MSG_END_TURN_AUTO_SAVE,
|
||||
#endif
|
||||
MSG_MPSAVEDIRECTORY,//84
|
||||
MSG_CLIENT
|
||||
|
||||
MSG_CLIENT,
|
||||
MSG_NAS_AND_OIV_INCOMPATIBLE,
|
||||
TEXT_NUM_MSG,
|
||||
};
|
||||
extern STR16 pMessageStrings[];
|
||||
|
||||
@@ -357,6 +374,23 @@ enum
|
||||
STR_NO_SEMI_AUTO,
|
||||
STR_NO_MORE_ITEMS_TO_STEAL,
|
||||
STR_NO_MORE_ITEM_IN_HAND,
|
||||
|
||||
//add new camo text
|
||||
STR_DESERT_WORN_OFF,
|
||||
STR_DESERT_WASHED_OFF,
|
||||
|
||||
STR_JUNGLE_WORN_OFF,
|
||||
STR_JUNGLE_WASHED_OFF,
|
||||
|
||||
STR_URBAN_WORN_OFF,
|
||||
STR_URBAN_WASHED_OFF,
|
||||
|
||||
STR_SNOW_WORN_OFF,
|
||||
STR_SNOW_WASHED_OFF,
|
||||
|
||||
STR_CANNOT_ATTACH_SLOT,
|
||||
|
||||
TEXT_NUM_STR_MESSAGE,
|
||||
};
|
||||
|
||||
// WANNE: Tooltips
|
||||
@@ -399,6 +433,12 @@ enum
|
||||
STR_TT_NO_VEST,
|
||||
STR_TT_NO_LEGGING,
|
||||
STR_TT_CAT_ARMOR_2,
|
||||
// Following added - SANDRO
|
||||
STR_TT_SKILL_TRAIT_1,
|
||||
STR_TT_SKILL_TRAIT_2,
|
||||
STR_TT_SKILL_TRAIT_3,
|
||||
|
||||
TEXT_NUM_STR_TT
|
||||
};
|
||||
|
||||
#define LARGE_STRING_LENGTH 200
|
||||
@@ -415,17 +455,44 @@ extern CHAR16 zTalkMenuStrings[][ SMALL_STRING_LENGTH ];
|
||||
extern STR16 gzMoneyAmounts[6];
|
||||
extern CHAR16 gzProsLabel[10];
|
||||
extern CHAR16 gzConsLabel[10];
|
||||
// HEADROCK HAM 4: Text for the UDB tabs
|
||||
extern STR16 gzItemDescTabButtonText[ 3 ];
|
||||
extern STR16 gzItemDescTabButtonShortText[ 3 ];
|
||||
extern STR16 gzItemDescGenHeaders[ 4 ];
|
||||
extern STR16 gzItemDescGenIndexes[ 4 ];
|
||||
// HEADROCK HAM 4: Added list of condition strings
|
||||
extern STR16 gConditionDesc[ 9 ];
|
||||
|
||||
extern CHAR16 gMoneyStatsDesc[][ 13 ];
|
||||
// HEADROCK: Altered value to 16
|
||||
extern CHAR16 gWeaponStatsDesc[][ 16 ];
|
||||
// HEADROCK: Altered value to 16 //WarmSteel - And I need 17.
|
||||
extern CHAR16 gWeaponStatsDesc[][ 17 ];
|
||||
// HEADROCK: Added externs for Item Description Box icon and stat tooltips
|
||||
// Note that I've inflated some of these to 20 to avoid issues.
|
||||
extern STR16 gzWeaponStatsFasthelp[ 29 ];
|
||||
extern STR16 gzWeaponStatsFasthelpTactical[ 29 ];
|
||||
extern STR16 gzWeaponStatsFasthelp[ 32 ];
|
||||
extern STR16 gzWeaponStatsFasthelpTactical[ 32 ];
|
||||
extern STR16 gzAmmoStatsFasthelp[ 20 ];
|
||||
extern STR16 gzArmorStatsFasthelp[ 20 ];
|
||||
extern STR16 gzExplosiveStatsFasthelp[ 20 ];
|
||||
extern STR16 gzMiscItemStatsFasthelp[ 34 ];
|
||||
// HEADROCK HAM 4: New tooltip texts
|
||||
extern STR16 gzUDBButtonTooltipText[ 3 ];
|
||||
extern STR16 gzUDBHeaderTooltipText[ 4 ];
|
||||
extern STR16 gzUDBGenIndexTooltipText[ 4 ];
|
||||
extern STR16 gzUDBAdvIndexTooltipText[ 5 ];
|
||||
extern STR16 szUDBGenWeaponsStatsTooltipText[ 22 ];
|
||||
extern STR16 szUDBGenWeaponsStatsExplanationsTooltipText[ 22 ];
|
||||
extern STR16 szUDBGenArmorStatsTooltipText[ 3 ];
|
||||
extern STR16 szUDBGenArmorStatsExplanationsTooltipText[ 3 ];
|
||||
extern STR16 szUDBGenAmmoStatsTooltipText[ 3 ];
|
||||
extern STR16 szUDBGenAmmoStatsExplanationsTooltipText[ 3 ];
|
||||
extern STR16 szUDBGenExplosiveStatsTooltipText[ 18 ];
|
||||
extern STR16 szUDBGenExplosiveStatsExplanationsTooltipText[ 18 ];
|
||||
extern STR16 szUDBGenSecondaryStatsTooltipText[ 26 ];
|
||||
extern STR16 szUDBGenSecondaryStatsExplanationsTooltipText[ 26 ];
|
||||
extern STR16 szUDBAdvStatsTooltipText[ 44 ];
|
||||
extern STR16 szUDBAdvStatsExplanationsTooltipText[ 44 ];
|
||||
extern STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[ 44 ];
|
||||
|
||||
// Headrock: End Externs
|
||||
extern STR16 sKeyDescriptionStrings[2];
|
||||
extern CHAR16 zHealthStr[][13];
|
||||
@@ -583,6 +650,7 @@ enum
|
||||
NO_LOS_TO_TALK_TARGET,
|
||||
ATTACHMENT_REMOVED,
|
||||
VEHICLE_CAN_NOT_BE_ADDED,
|
||||
TEXT_NUM_TACTICAL_STR
|
||||
};
|
||||
|
||||
enum{
|
||||
@@ -601,6 +669,7 @@ enum{
|
||||
EXIT_GUI_SINGLE_TRAVERSAL_WILL_SEPARATE_SQUADS_HELPTEXT,
|
||||
EXIT_GUI_ALL_TRAVERSAL_WILL_MOVE_CURRENT_SQUAD_HELPTEXT,
|
||||
EXIT_GUI_ESCORTED_CHARACTERS_CANT_LEAVE_SECTOR_ALONE_STR,
|
||||
TEXT_NUM_EXIT_GUI
|
||||
};
|
||||
extern STR16 pExitingSectorHelpText[];
|
||||
|
||||
@@ -610,6 +679,7 @@ enum
|
||||
LARGESTR_NOONE_LEFT_CAPABLE_OF_BATTLE_STR,
|
||||
LARGESTR_NOONE_LEFT_CAPABLE_OF_BATTLE_AGAINST_CREATURES_STR,
|
||||
LARGESTR_HAVE_BEEN_CAPTURED,
|
||||
TEXT_NUM_LARGESTR
|
||||
};
|
||||
|
||||
|
||||
@@ -620,6 +690,7 @@ enum
|
||||
INS_CONTRACT_NEXT,
|
||||
INS_CONTRACT_ACCEPT,
|
||||
INS_CONTRACT_CLEAR,
|
||||
TEXT_NUM_INS_CONTRACT
|
||||
};
|
||||
extern STR16 InsContractText[];
|
||||
|
||||
@@ -629,6 +700,7 @@ enum
|
||||
{
|
||||
INS_INFO_PREVIOUS,
|
||||
INS_INFO_NEXT,
|
||||
TEXT_NUM_INS_INFO,
|
||||
};
|
||||
extern STR16 InsInfoText[];
|
||||
|
||||
@@ -645,6 +717,7 @@ enum
|
||||
MERC_ACCOUNT_TOTAL,
|
||||
MERC_ACCOUNT_AUTHORIZE_CONFIRMATION,
|
||||
MERC_ACCOUNT_NOT_ENOUGH_MONEY,
|
||||
TEXT_NUM_MERC_ACCOUNT,
|
||||
};
|
||||
extern STR16 MercAccountText[];
|
||||
|
||||
@@ -680,6 +753,7 @@ enum
|
||||
MERC_FILES_HIRE_TO_MANY_PEOPLE_WARNING,
|
||||
|
||||
MERC_FILES_MERC_UNAVAILABLE,
|
||||
TEXT_NUM_MERC_FILES,
|
||||
};
|
||||
extern STR16 MercInfo[];
|
||||
|
||||
@@ -690,6 +764,7 @@ enum
|
||||
MERC_NO_ACC_OPEN_ACCOUNT,
|
||||
MERC_NO_ACC_CANCEL,
|
||||
MERC_NO_ACC_NO_ACCOUNT_OPEN_ONE,
|
||||
TEXT_NUM_MERC_NO_ACC,
|
||||
};
|
||||
extern STR16 MercNoAccountText[];
|
||||
|
||||
@@ -703,6 +778,7 @@ enum
|
||||
MERC_VIEW_ACCOUNT,
|
||||
MERC_VIEW_FILES,
|
||||
MERC_SPECK_COM,
|
||||
TEXT_NUM_MERC,
|
||||
};
|
||||
extern STR16 MercHomePageText[];
|
||||
|
||||
@@ -722,6 +798,7 @@ enum
|
||||
FUNERAL_FUNERAL_ETTIQUETTE,
|
||||
FUNERAL_OUR_CONDOLENCES, //10
|
||||
FUNERAL_OUR_SYMPATHIES,
|
||||
TEXT_NUM_FUNERAL,
|
||||
};
|
||||
extern STR16 sFuneralString[];
|
||||
|
||||
@@ -742,6 +819,8 @@ enum
|
||||
FLORIST_ADVERTISEMENT_6,
|
||||
FLORIST_ADVERTISEMENT_7,
|
||||
FLORIST_ADVERTISEMENT_8,
|
||||
FLORIST_ADVERTISEMENT_9,
|
||||
TEXT_NUM_FLORIST,
|
||||
};
|
||||
extern STR16 sFloristText[];
|
||||
|
||||
@@ -771,6 +850,7 @@ enum
|
||||
FLORIST_ORDER_STANDARDIZED_CARDS,
|
||||
FLORIST_ORDER_BILLING_INFO, //20
|
||||
FLORIST_ORDER_NAME,
|
||||
TEXT_NUM_FLORIST_ORDER,
|
||||
};
|
||||
extern STR16 sOrderFormText[];
|
||||
|
||||
@@ -784,6 +864,7 @@ enum
|
||||
FLORIST_GALLERY_CLICK_TO_ORDER,
|
||||
FLORIST_GALLERY_ADDIFTIONAL_FEE,
|
||||
FLORIST_GALLERY_HOME,
|
||||
TEXT_NUM_FLORIST_GALLERY,
|
||||
};
|
||||
extern STR16 sFloristGalleryText[];
|
||||
|
||||
@@ -793,6 +874,7 @@ enum
|
||||
{
|
||||
FLORIST_CARDS_CLICK_SELECTION,
|
||||
FLORIST_CARDS_BACK,
|
||||
TEXT_NUM_FLORIST_CARDS,
|
||||
};
|
||||
extern STR16 sFloristCards[];
|
||||
|
||||
@@ -825,6 +907,7 @@ enum
|
||||
BOBBYR_PACKAGE_WEIGHT,
|
||||
BOBBYR_MINIMUM_WEIGHT,
|
||||
BOBBYR_GOTOSHIPMENT_PAGE,
|
||||
TEXT_NUM_BOBBYR_MAILORDER,
|
||||
};
|
||||
extern STR16 BobbyROrderFormText[];
|
||||
|
||||
@@ -871,6 +954,7 @@ enum
|
||||
BOBBYR_FILTER_MISC_FACE,
|
||||
BOBBYR_FILTER_MISC_LBEGEAR,
|
||||
BOBBYR_FILTER_MISC_MISC,
|
||||
TEXT_NUM_BOBBYR_FILTER
|
||||
};
|
||||
|
||||
|
||||
@@ -908,7 +992,7 @@ enum
|
||||
BOBBYR_MORE_THEN_10_PURCHASES,
|
||||
BOBBYR_MORE_NO_MORE_IN_STOCK,
|
||||
BOBBYR_NO_MORE_STOCK,
|
||||
|
||||
TEXT_NUM_BOBBYR_GUNS,
|
||||
};
|
||||
|
||||
extern STR16 BobbyRText[];
|
||||
@@ -927,6 +1011,7 @@ enum
|
||||
BOBBYR_ARMOR,
|
||||
BOBBYR_ADVERTISMENT_3,
|
||||
BOBBYR_UNDER_CONSTRUCTION,
|
||||
TEXT_NUM_BOBBYR
|
||||
};
|
||||
extern STR16 BobbyRaysFrontText[];
|
||||
|
||||
@@ -945,7 +1030,8 @@ enum
|
||||
MERCENARY_FILES,
|
||||
ALUMNI_GALLERY,
|
||||
ASCENDING,
|
||||
DESCENDING
|
||||
DESCENDING,
|
||||
TEXT_NUM_AIM_SORT
|
||||
};
|
||||
extern STR16 AimSortText[];
|
||||
|
||||
@@ -958,6 +1044,7 @@ enum
|
||||
AIM_POLICIES_NEXT_PAGE,
|
||||
AIM_POLICIES_DISAGREE,
|
||||
AIM_POLICIES_AGREE,
|
||||
TEXT_NUM_AIM_POLICIES
|
||||
};
|
||||
extern STR16 AimPolicyText[];
|
||||
|
||||
@@ -968,6 +1055,7 @@ extern STR16 AimPolicyText[];
|
||||
enum
|
||||
{
|
||||
AIM_MEMBER_CLICK_INSTRUCTIONS,
|
||||
TEXT_NUM_AIM_MEMBER_TEXT
|
||||
};
|
||||
extern STR16 AimMemberText[];
|
||||
|
||||
@@ -998,7 +1086,14 @@ enum
|
||||
AIM_MEMBER_ADDTNL_INFO,
|
||||
AIM_MEMBER_ACTIVE_MEMBERS, //20
|
||||
AIM_MEMBER_OPTIONAL_GEAR,
|
||||
AIM_MEMBER_OPTIONAL_GEAR_NSGI,
|
||||
AIM_MEMBER_MEDICAL_DEPOSIT_REQ,
|
||||
AIM_MEMBER_GEAR_KIT_ONE,
|
||||
AIM_MEMBER_GEAR_KIT_TWO, //25
|
||||
AIM_MEMBER_GEAR_KIT_THREE,
|
||||
AIM_MEMBER_GEAR_KIT_FOUR,
|
||||
AIM_MEMBER_GEAR_KIT_FIVE,
|
||||
TEXT_NUM_AIM_MEMBER_CHARINFO,
|
||||
};
|
||||
extern STR16 CharacterInfo[];
|
||||
|
||||
@@ -1022,6 +1117,7 @@ enum
|
||||
AIM_MEMBER_VIDEO_CONF_WITH,
|
||||
AIM_MEMBER_CONNECTING,
|
||||
AIM_MEMBER_WITH_MEDICAL, //14
|
||||
TEXT_NUM_AIM_MEMBER_VCONF
|
||||
};
|
||||
extern STR16 VideoConfercingText[];
|
||||
|
||||
@@ -1040,7 +1136,7 @@ enum
|
||||
|
||||
AIM_MEMBER_PRERECORDED_MESSAGE,
|
||||
AIM_MEMBER_MESSAGE_RECORDED,
|
||||
|
||||
TEXT_NUM_AIM_MEMBER_POPUP
|
||||
};
|
||||
extern STR16 AimPopUpText[];
|
||||
|
||||
@@ -1048,6 +1144,7 @@ extern STR16 AimPopUpText[];
|
||||
enum
|
||||
{
|
||||
AIM_LINK_TITLE,
|
||||
TEXM_NUM_AIM_LINK,
|
||||
};
|
||||
extern STR16 AimLinkText[];
|
||||
|
||||
@@ -1060,6 +1157,7 @@ enum
|
||||
AIM_HISTORY_HOME,
|
||||
AIM_HISTORY_AIM_ALUMNI,
|
||||
AIM_HISTORY_NEXT,
|
||||
TEXT_NUM_AIM_HISTORY,
|
||||
};
|
||||
extern STR16 AimHistoryText[];
|
||||
|
||||
@@ -1081,7 +1179,9 @@ enum
|
||||
AIM_FI_RIGHT_CLICK,
|
||||
AIM_FI_TO_ENTER_SORT_PAGE,
|
||||
AIM_FI_AWAY,
|
||||
AIM_FI_DEAD,
|
||||
AIM_FI_DEAD,
|
||||
AIM_FI_ON_ASSIGN,
|
||||
TEXT_NUM_AIM_FI,
|
||||
};
|
||||
extern STR16 AimFiText[];
|
||||
|
||||
@@ -1094,6 +1194,7 @@ enum
|
||||
AIM_ALUMNI_PAGE_3,
|
||||
AIM_ALUMNI_ALUMNI,
|
||||
AIM_ALUMNI_DONE,
|
||||
TEXT_NUM_AIM_ALUMNI,
|
||||
};
|
||||
extern STR16 AimAlumniText[];
|
||||
|
||||
@@ -1115,7 +1216,7 @@ enum
|
||||
AIM_BOBBYR_ADD1,
|
||||
AIM_BOBBYR_ADD2,
|
||||
AIM_BOBBYR_ADD3,
|
||||
|
||||
TEXT_NUM_AIM_SCREEN
|
||||
};
|
||||
|
||||
extern STR16 AimScreenText[];
|
||||
@@ -1129,6 +1230,7 @@ enum
|
||||
AIM_POLICIES,
|
||||
AIM_HISTORY,
|
||||
AIM_LINKS,
|
||||
TEXT_NUM_AIM_MENU
|
||||
};
|
||||
|
||||
extern STR16 AimBottomMenuText[];
|
||||
@@ -1140,6 +1242,7 @@ enum
|
||||
{
|
||||
MAP_SCREEN_MAP_LEVEL,
|
||||
MAP_SCREEN_NO_MILITIA_TEXT,
|
||||
TEXT_NUM_MAP_SCREEN,
|
||||
};
|
||||
extern STR16 zMarksMapScreenText[];
|
||||
|
||||
@@ -1244,6 +1347,7 @@ enum
|
||||
STR_DIALOG_CREATURES_KILL_CIVILIANS,
|
||||
STR_DIALOG_ENEMIES_ATTACK_UNCONCIOUSMERCS,
|
||||
STR_DIALOG_CREATURES_ATTACK_UNCONCIOUSMERCS,
|
||||
TEXT_NUM_STRATEGIC_TEXT
|
||||
};
|
||||
|
||||
//Strings used in conjunction with above enumerations
|
||||
@@ -1252,6 +1356,7 @@ extern STR16 gpStrategicString[];
|
||||
enum
|
||||
{
|
||||
STR_GAMECLOCK_DAY_NAME,
|
||||
TEXT_NUM_GAMECLOCK,
|
||||
};
|
||||
extern STR16 gpGameClockString[];
|
||||
|
||||
@@ -1272,6 +1377,7 @@ enum
|
||||
SKI_TEXT_NO_MORE_ROOM_IN_PLAYER_OFFER_AREA,
|
||||
SKI_TEXT_MINUTES,
|
||||
SKI_TEXT_DROP_ITEM_TO_GROUND,
|
||||
TEXT_NUM_SKI_TEXT
|
||||
};
|
||||
extern STR16 SKI_Text[];
|
||||
|
||||
@@ -1307,6 +1413,7 @@ enum
|
||||
SKI_ATM_MODE_TEXT_SELECT_FROM_MERC,
|
||||
SKI_ATM_MODE_TEXT_SELECT_INUSUFFICIENT_FUNDS,
|
||||
SKI_ATM_MODE_TEXT_BALANCE,
|
||||
TEXT_NUM_SKI_ATM_MODE_TEXT,
|
||||
};
|
||||
extern STR16 gzSkiAtmText[];
|
||||
|
||||
@@ -1322,6 +1429,7 @@ enum
|
||||
SKI_DONE_BUTTON_HELP_TEXT,
|
||||
|
||||
SKI_PLAYERS_CURRENT_BALANCE,
|
||||
TEXT_NUM_SKI_MBOX_TEXT
|
||||
};
|
||||
|
||||
extern STR16 SkiMessageBoxText[];
|
||||
@@ -1362,7 +1470,9 @@ enum
|
||||
SLG_BR_AWESOME_TEXT,
|
||||
|
||||
SLG_INV_RES_ERROR,
|
||||
SLG_INV_CUSTUM_ERROR,
|
||||
SLG_INV_CUSTUM_ERROR,
|
||||
|
||||
TEXT_NUM_SLG_TEXT,
|
||||
};
|
||||
extern STR16 zSaveLoadText[];
|
||||
|
||||
@@ -1383,6 +1493,7 @@ enum
|
||||
OPT_MUSIC,
|
||||
OPT_RETURN_TO_MAIN,
|
||||
OPT_NEED_AT_LEAST_SPEECH_OR_SUBTITLE_OPTION_ON,
|
||||
TEXT_NUM_OPT_TEXT,
|
||||
};
|
||||
|
||||
extern STR16 zOptionsText[];
|
||||
@@ -1400,7 +1511,7 @@ enum
|
||||
MONEY_DESC_BALANCE,
|
||||
MONEY_DESC_AMOUNT_2_WITHDRAW,
|
||||
MONEY_DESC_TO_WITHDRAW,
|
||||
|
||||
TEXT_NUM_MONEY_DESC,
|
||||
};
|
||||
|
||||
|
||||
@@ -1409,6 +1520,7 @@ enum
|
||||
{
|
||||
MONEY_TEXT_WITHDRAW_MORE_THEN_MAXIMUM,
|
||||
CONFIRMATION_TO_DEPOSIT_MONEY_TO_ACCOUNT,
|
||||
TEXT_NUM_MONEY_WITHDRAW
|
||||
};
|
||||
|
||||
|
||||
@@ -1433,7 +1545,7 @@ enum
|
||||
GIO_HARD_TEXT,
|
||||
GIO_INSANE_TEXT,
|
||||
|
||||
GIO_OK_TEXT,
|
||||
GIO_START_TEXT,
|
||||
GIO_CANCEL_TEXT,
|
||||
|
||||
GIO_GAME_SAVE_STYLE_TEXT,
|
||||
@@ -1452,6 +1564,41 @@ enum
|
||||
GIO_INV_NEW_TEXT,
|
||||
GIO_LOAD_MP_GAME,
|
||||
GIO_INITIAL_GAME_SETTINGS_MP,
|
||||
////////////////////////////////////
|
||||
// SANDRO - added following
|
||||
GIO_TRAITS_TEXT,
|
||||
GIO_TRAITS_OLD_TEXT,
|
||||
GIO_TRAITS_NEW_TEXT,
|
||||
GIO_IMP_NUMBER_TITLE_TEXT,
|
||||
GIO_IMP_NUMBER_1,
|
||||
GIO_IMP_NUMBER_2,
|
||||
GIO_IMP_NUMBER_3,
|
||||
GIO_IMP_NUMBER_4,
|
||||
GIO_IMP_NUMBER_5,
|
||||
GIO_IMP_NUMBER_6,
|
||||
GIO_DROPALL_TITLE_TEXT,
|
||||
GIO_DROPALL_OFF_TEXT,
|
||||
GIO_DROPALL_ON_TEXT,
|
||||
GIO_TERRORISTS_TITLE_TEXT,
|
||||
GIO_TERRORISTS_RANDOM_TEXT,
|
||||
GIO_TERRORISTS_ALL_TEXT,
|
||||
GIO_CACHES_TITLE_TEXT,
|
||||
GIO_CACHES_RANDOM_TEXT,
|
||||
GIO_CACHES_ALL_TEXT,
|
||||
GIO_PROGRESS_TITLE_TEXT,
|
||||
GIO_PROGRESS_VERY_SLOW_TEXT,
|
||||
GIO_PROGRESS_SLOW_TEXT,
|
||||
GIO_PROGRESS_NORMAL_TEXT,
|
||||
GIO_PROGRESS_FAST_TEXT,
|
||||
GIO_PROGRESS_VERY_FAST_TEXT,
|
||||
|
||||
// WANNE: New strings for start new game screen (for NAS)
|
||||
GIO_INV_SETTING_OLD_TEXT,
|
||||
GIO_INV_SETTING_NEW_TEXT,
|
||||
GIO_INV_SETTING_NEW_NAS_TEXT,
|
||||
|
||||
////////////////////////////////////
|
||||
TEXT_NUM_GIO_TEXT
|
||||
};
|
||||
extern STR16 gzGIOScreenText[];
|
||||
|
||||
@@ -1474,9 +1621,12 @@ enum
|
||||
MPJ_PING_TEXT,
|
||||
MPJ_HANDLE_INVALID,
|
||||
MPJ_SERVERIP_INVALID,
|
||||
MPJ_SERVERPORT_INVALID
|
||||
MPJ_SERVERPORT_INVALID,
|
||||
TEXT_NUM_MPJ_TEXT
|
||||
};
|
||||
|
||||
extern STR16 gzMPJHelpText[];
|
||||
|
||||
extern STR16 gzMPJScreenText[];
|
||||
//Multiplayer Host Screen
|
||||
enum
|
||||
@@ -1512,11 +1662,40 @@ enum
|
||||
MPH_ENABLECIV_TEXT,
|
||||
MPH_USENIV_TEXT,
|
||||
MPH_OVERRIDEMAXAI_TEXT,
|
||||
MPH_SYNC_CLIENT_MP_DIR,
|
||||
MPH_SYNC_GAME_DIRECTORY,
|
||||
MPH_FILE_TRANSFER_DIR_TEXT,
|
||||
MPH_FILE_TRANSFER_DIR_INVALID,
|
||||
MPH_FILE_TRANSFER_DIR_TEXT_ADDITIONAL,
|
||||
MPH_FILE_TRANSFER_DIR_NOT_EXIST,
|
||||
MPH_1,
|
||||
MPH_2,
|
||||
MPH_3,
|
||||
MPH_4,
|
||||
MPH_5,
|
||||
MPH_6,
|
||||
MPH_YES,
|
||||
MPH_NO,
|
||||
MPH_MORNING,
|
||||
MPH_AFTERNOON,
|
||||
MPH_NIGHT,
|
||||
MPH_CASH_LOW,
|
||||
MPH_CASH_MEDIUM,
|
||||
MPH_CASH_HIGH,
|
||||
MPH_CASH_UNLIMITED,
|
||||
MPH_TIME_NEVER,
|
||||
MPH_TIME_SLOW,
|
||||
MPH_TIME_MEDIUM,
|
||||
MPH_TIME_FAST,
|
||||
MPH_DAMAGE_VERYLOW,
|
||||
MPH_DAMAGE_LOW,
|
||||
MPH_DAMAGE_NORMAL,
|
||||
MPH_HIRE_RANDOM,
|
||||
MPH_HIRE_NORMAL,
|
||||
MPH_EDGE_RANDOM,
|
||||
MPH_EDGE_SELECTABLE,
|
||||
MPH_DISABLE,
|
||||
MPH_ALLOW,
|
||||
TEXT_NUM_MPH_TEXT,
|
||||
};
|
||||
extern STR16 gzMPHScreenText[];
|
||||
enum
|
||||
@@ -1533,7 +1712,8 @@ enum
|
||||
MPS_ACCURACY_TEXT,
|
||||
MPS_DMGDONE_TEXT,
|
||||
MPS_DMGTAKEN_TEXT,
|
||||
MPS_WAITSERVER_TEXT
|
||||
MPS_WAITSERVER_TEXT,
|
||||
TEXT_NUM_MPS_TEXT,
|
||||
};
|
||||
extern STR16 gzMPSScreenText[];
|
||||
enum
|
||||
@@ -1545,6 +1725,7 @@ enum
|
||||
MPC_HELP1_TEXT,
|
||||
MPC_HELP2_TEXT,
|
||||
MPC_READY_TEXT,
|
||||
TEXT_NUM_MPC_TEXT,
|
||||
};
|
||||
extern STR16 gzMPCScreenText[];
|
||||
// Multiplayer Starting Edges
|
||||
@@ -1594,7 +1775,7 @@ enum
|
||||
BOOKMARK_TEXT_MCGILLICUTTY_MORTUARY,
|
||||
BOOKMARK_TEXT_UNITED_FLORAL_SERVICE,
|
||||
BOOKMARK_TEXT_INSURANCE_BROKERS_FOR_AIM_CONTRACTS,
|
||||
|
||||
TEXT_NUM_LAPTOP_BN_BOOKMARK_TEXT
|
||||
};
|
||||
|
||||
|
||||
@@ -1602,6 +1783,7 @@ enum
|
||||
enum
|
||||
{
|
||||
HLP_SCRN_TXT__EXIT_SCREEN,
|
||||
TEXT_NUM_HLP
|
||||
};
|
||||
extern STR16 gzHelpScreenText[];
|
||||
|
||||
@@ -1623,6 +1805,7 @@ enum
|
||||
MAPINV_CANT_PICKUP_IN_COMBAT,
|
||||
MAPINV_CANT_DROP_IN_COMBAT,
|
||||
MAPINV_NOT_IN_SECTOR_TO_DROP,
|
||||
TEXT_NUM_MAPINV
|
||||
};
|
||||
|
||||
|
||||
@@ -1631,6 +1814,7 @@ enum
|
||||
{
|
||||
BROKEN_LINK_TXT_ERROR_404,
|
||||
BROKEN_LINK_TXT_SITE_NOT_FOUND,
|
||||
TEXT_NUM_BROKEN_LINK,
|
||||
};
|
||||
extern STR16 BrokenLinkText[];
|
||||
|
||||
@@ -1641,6 +1825,7 @@ enum
|
||||
BOBBYR_SHIPMENT__ORDER_NUM,
|
||||
BOBBYR_SHIPMENT__NUM_ITEMS,
|
||||
BOBBYR_SHIPMENT__ORDERED_ON,
|
||||
TEXT_NUM_BOBBYR_SHIPMENT,
|
||||
};
|
||||
|
||||
extern STR16 gzBobbyRShipmentText[];
|
||||
@@ -1652,6 +1837,7 @@ enum
|
||||
GIO_CFS_EXPERIENCED,
|
||||
GIO_CFS_EXPERT,
|
||||
GIO_CFS_INSANE,
|
||||
TEXT_NUM_GIO_CFS,
|
||||
};
|
||||
extern STR16 zGioDifConfirmText[];
|
||||
|
||||
@@ -1691,6 +1877,8 @@ extern STR16 New113Message[];
|
||||
extern STR16 New113MERCMercMailTexts[];
|
||||
extern STR16 MissingIMPSkillsDescriptions[];
|
||||
|
||||
extern STR16 New113AIMMercMailTexts[]; // WANNE: new WF Merc text, that does not exist in Email.edt
|
||||
|
||||
// HEADROCK: HAM Messages
|
||||
extern STR16 New113HAMMessage[];
|
||||
enum
|
||||
@@ -1719,6 +1907,24 @@ enum
|
||||
MSG113_RTM_SNEAKING_OFF,
|
||||
MSG113_RTM_SNEAKING_ON,
|
||||
MSG113_RTM_ENEMIES_SPOOTED,
|
||||
// added by SANDRO
|
||||
MSG113_THIEF_SUCCESSFUL,
|
||||
MSG113_NOT_ENOUGH_APS_TO_STEAL_ALL,
|
||||
MSG113_DO_WE_WANT_SURGERY_FIRST,
|
||||
MSG113_DO_WE_WANT_SURGERY,
|
||||
MSG113_SURGERY_BEFORE_DOCTOR_ASSIGNMENT,
|
||||
MSG113_SURGERY_BEFORE_PATIENT_ASSIGNMENT,
|
||||
MSG113_SURGERY_ON_TACTICAL_AUTOBANDAGE,
|
||||
MSG113_SURGERY_FINISHED,
|
||||
MSG113_LOSES_ONE_POINT_MAX_HEALTH,
|
||||
MSG113_LOSES_X_POINTS_MAX_HEALTH,
|
||||
MSG113_REGAINED_ONE_POINTS_OF_STAT,
|
||||
MSG113_REGAINED_X_POINTS_OF_STATS,
|
||||
MSG113_ENEMY_AMBUSH_PREVENTED,
|
||||
MSG113_BLOODCATS_AMBUSH_PREVENTED,
|
||||
MSG113_SOLDIER_HIT_TO_GROIN,
|
||||
|
||||
TEXT_NUM_MSG113,
|
||||
};
|
||||
|
||||
//CHRISL: NewInv messages
|
||||
@@ -1727,7 +1933,6 @@ extern STR16 NewInvMessage[];
|
||||
// WANNE - MP: New multiplayer messages
|
||||
extern STR16 MPServerMessage[];
|
||||
extern STR16 MPClientMessage[];
|
||||
extern STR16 MPHelp[];
|
||||
|
||||
// WANNE: Some Chinese specific strings that needs to be in unicode!
|
||||
extern STR16 ChineseSpecString1;
|
||||
@@ -1748,6 +1953,7 @@ enum
|
||||
NIV_SELL_ALL,
|
||||
NIV_DELETE_ALL,
|
||||
NIV_NO_CLIMB,
|
||||
TEXT_NUM_NIV,
|
||||
};
|
||||
|
||||
// OJW - MP
|
||||
|
||||
@@ -0,0 +1,755 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8,00"
|
||||
Name="Utils"
|
||||
ProjectGUID="{262A5F80-0B99-4E8E-A6C7-74CB1FD0A67C}"
|
||||
RootNamespace="Utils"
|
||||
Keyword="Win32Proj"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="..\lib\VS2005\$(ConfigurationName)"
|
||||
IntermediateDirectory="..\build\VS2005\$(ProjectName)_$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="..\ja2.vsprops;..\ja2_Debug.vsprops"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalOptions="/D "_CRT_SECURE_NO_DEPRECATE""
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
RuntimeTypeInfo="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
DisableSpecificWarnings="4100"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="..\lib\VS2005\$(ConfigurationName)"
|
||||
IntermediateDirectory=".\build\VS2005\$(ProjectName)_$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="..\ja2.vsprops"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalOptions="/D "_CRT_SECURE_NO_DEPRECATE""
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
|
||||
RuntimeLibrary="0"
|
||||
RuntimeTypeInfo="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="MapEditor|Win32"
|
||||
OutputDirectory="..\lib\VS2005\$(ConfigurationName)"
|
||||
IntermediateDirectory="..\build\VS2005\$(ProjectName)_$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="..\ja2.vsprops;..\ja2_Editor.vsprops"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalOptions="/D "_CRT_SECURE_NO_DEPRECATE""
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
|
||||
RuntimeLibrary="0"
|
||||
RuntimeTypeInfo="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="MapEditorD|Win32"
|
||||
OutputDirectory="..\lib\VS2005\$(ConfigurationName)"
|
||||
IntermediateDirectory="..\build\VS2005\$(ProjectName)_$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="..\ja2.vsprops;..\ja2_Editor.vsprops"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalOptions="/D "_CRT_SECURE_NO_DEPRECATE""
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
RuntimeTypeInfo="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
DisableSpecificWarnings="4100"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release_WithDebugInfo|Win32"
|
||||
OutputDirectory="..\lib\VS2005\$(ConfigurationName)"
|
||||
IntermediateDirectory="..\build\VS2005\$(ProjectName)_$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="..\ja2.vsprops"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalOptions="/D "_CRT_SECURE_NO_DEPRECATE""
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
|
||||
RuntimeLibrary="0"
|
||||
RuntimeTypeInfo="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\_Ja25DutchText.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\_Ja25EnglishText.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\_Ja25FrenchText.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\_Ja25GermanText.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\_Ja25ItalianText.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\_Ja25PolishText.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\_Ja25RussianText.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\_Ja25TaiwaneseText.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Animated ProgressBar.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\bink.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Cinematics Bink.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Cinematics.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Cursors.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Debug Control.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\dsutil.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Encrypted File.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Event Manager.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Event Pump.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ExportStrings.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Font Control.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ImportStrings.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\INIReader.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\LocalizedStrings.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\maputility.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\MercTextBox.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\message.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Multi Language Graphic Utils.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Multilingual Text Code Generator.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Music Control.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\PopUpBox.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Quantize Wrap.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Quantize.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Slider.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Sound Control.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\STIConvert.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Text Input.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Text.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Timer Control.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Utilities.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Utils All.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Win Util.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\WordWrap.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\XML_auto_parse.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\XML_Parser.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\XML_SenderNameList.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\XMLWriter.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\_ChineseText.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\_DutchText.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\_EnglishText.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\_FrenchText.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\_GermanText.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\_ItalianText.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\_Ja25ChineseText.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\_Ja25DutchText.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\_Ja25EnglishText.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\_Ja25FrenchText.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\_Ja25GermanText.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\_Ja25ItalianText.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\_Ja25PolishText.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\_Ja25RussianText.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\_Ja25TaiwaneseText.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\_PolishText.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\_RussianText.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\_TaiwaneseText.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Animated ProgressBar.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Cinematics Bink.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Cinematics.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Cursors.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Debug Control.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\dsutil.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Encrypted File.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Event Manager.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Event Pump.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ExportStrings.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Font Control.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ImportStrings.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\INIReader.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\LocalizedStrings.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\MapUtility.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\MercTextBox.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\message.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Multi Language Graphic Utils.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Multilingual Text Code Generator.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Music Control.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\PopUpBox.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Quantize Wrap.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Quantize.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Slider.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Sound Control.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\STIConvert.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Text Input.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Text Utils.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Timer Control.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Utilities.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Win Util.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\WordWrap.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\XML_Items.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\XML_SenderNameList.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\XML_Strings.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\XMLProperties.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\XMLWriter.cpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
@@ -21,7 +21,7 @@
|
||||
OutputDirectory="..\lib\VS2008\$(ConfigurationName)"
|
||||
IntermediateDirectory="..\build\VS2008\$(ProjectName)_$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="..\ja2_VS2008.vsprops;..\ja2_VS2008Debug.vsprops"
|
||||
InheritedPropertySheets="..\ja2.vsprops;..\ja2_Debug.vsprops"
|
||||
CharacterSet="0"
|
||||
>
|
||||
<Tool
|
||||
@@ -83,7 +83,7 @@
|
||||
OutputDirectory="..\lib\VS2008\$(ConfigurationName)"
|
||||
IntermediateDirectory="..\build\VS2008\$(ProjectName)_$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="..\ja2_VS2008.vsprops"
|
||||
InheritedPropertySheets="..\ja2.vsprops"
|
||||
CharacterSet="0"
|
||||
WholeProgramOptimization="0"
|
||||
>
|
||||
@@ -148,7 +148,7 @@
|
||||
OutputDirectory="..\lib\VS2008\$(ConfigurationName)"
|
||||
IntermediateDirectory="..\build\VS2008\$(ProjectName)_$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="..\ja2_VS2008.vsprops;..\ja2_VS2008Editor.vsprops"
|
||||
InheritedPropertySheets="..\ja2.vsprops;..\ja2_Editor.vsprops"
|
||||
CharacterSet="0"
|
||||
WholeProgramOptimization="0"
|
||||
>
|
||||
@@ -213,7 +213,7 @@
|
||||
OutputDirectory="..\lib\VS2008\$(ConfigurationName)"
|
||||
IntermediateDirectory="..\build\VS2008\$(ProjectName)_$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="..\ja2_VS2008.vsprops;..\ja2_VS2008Editor.vsprops"
|
||||
InheritedPropertySheets="..\ja2.vsprops;..\ja2_Editor.vsprops"
|
||||
CharacterSet="0"
|
||||
>
|
||||
<Tool
|
||||
@@ -275,7 +275,7 @@
|
||||
OutputDirectory="..\lib\VS2008\$(ConfigurationName)"
|
||||
IntermediateDirectory="..\build\VS2008\$(ProjectName)_$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="..\ja2_VS2008.vsprops"
|
||||
InheritedPropertySheets="..\ja2.vsprops"
|
||||
CharacterSet="0"
|
||||
WholeProgramOptimization="0"
|
||||
>
|
||||
@@ -378,6 +378,14 @@
|
||||
RelativePath="Animated ProgressBar.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\bink.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Cinematics Bink.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="Cinematics.h"
|
||||
>
|
||||
@@ -406,14 +414,26 @@
|
||||
RelativePath="Event Pump.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ExportStrings.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="Font Control.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ImportStrings.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="INIReader.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\LocalizedStrings.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="maputility.h"
|
||||
>
|
||||
@@ -490,10 +510,18 @@
|
||||
RelativePath="WordWrap.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\XML_auto_parse.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\XML_Parser.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\XML_SenderNameList.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\XMLWriter.h"
|
||||
>
|
||||
@@ -578,6 +606,10 @@
|
||||
RelativePath="Animated ProgressBar.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Cinematics Bink.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="Cinematics.cpp"
|
||||
>
|
||||
@@ -606,14 +638,26 @@
|
||||
RelativePath="Event Pump.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ExportStrings.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="Font Control.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ImportStrings.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="INIReader.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\LocalizedStrings.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="MapUtility.cpp"
|
||||
>
|
||||
@@ -690,6 +734,10 @@
|
||||
RelativePath="XML_Items.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\XML_SenderNameList.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="XML_Strings.cpp"
|
||||
>
|
||||
|
||||
@@ -0,0 +1,315 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="MapEditorD|Win32">
|
||||
<Configuration>MapEditorD</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="MapEditor|Win32">
|
||||
<Configuration>MapEditor</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Relese_WithDebugInfo|Win32">
|
||||
<Configuration>Relese_WithDebugInfo</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="Animated ProgressBar.h" />
|
||||
<ClInclude Include="bink.h" />
|
||||
<ClInclude Include="Cinematics Bink.h" />
|
||||
<ClInclude Include="Cinematics.h" />
|
||||
<ClInclude Include="Cursors.h" />
|
||||
<ClInclude Include="Debug Control.h" />
|
||||
<ClInclude Include="dsutil.h" />
|
||||
<ClInclude Include="Encrypted File.h" />
|
||||
<ClInclude Include="Event Manager.h" />
|
||||
<ClInclude Include="Event Pump.h" />
|
||||
<ClInclude Include="ExportStrings.h" />
|
||||
<ClInclude Include="Font Control.h" />
|
||||
<ClInclude Include="ImportStrings.h" />
|
||||
<ClInclude Include="INIReader.h" />
|
||||
<ClInclude Include="LocalizedStrings.h" />
|
||||
<ClInclude Include="maputility.h" />
|
||||
<ClInclude Include="MercTextBox.h" />
|
||||
<ClInclude Include="message.h" />
|
||||
<ClInclude Include="Multi Language Graphic Utils.h" />
|
||||
<ClInclude Include="Multilingual Text Code Generator.h" />
|
||||
<ClInclude Include="Music Control.h" />
|
||||
<ClInclude Include="PopUpBox.h" />
|
||||
<ClInclude Include="Quantize Wrap.h" />
|
||||
<ClInclude Include="Quantize.h" />
|
||||
<ClInclude Include="Slider.h" />
|
||||
<ClInclude Include="Sound Control.h" />
|
||||
<ClInclude Include="STIConvert.h" />
|
||||
<ClInclude Include="Text Input.h" />
|
||||
<ClInclude Include="Text.h" />
|
||||
<ClInclude Include="Timer Control.h" />
|
||||
<ClInclude Include="Utilities.h" />
|
||||
<ClInclude Include="Utils All.h" />
|
||||
<ClInclude Include="Win Util.h" />
|
||||
<ClInclude Include="WordWrap.h" />
|
||||
<ClInclude Include="XMLWriter.h" />
|
||||
<ClInclude Include="XML_auto_parse.h" />
|
||||
<ClInclude Include="XML_Parser.h" />
|
||||
<ClInclude Include="XML_SenderNameList.h" />
|
||||
<ClInclude Include="_Ja25DutchText.h" />
|
||||
<ClInclude Include="_Ja25EnglishText.h" />
|
||||
<ClInclude Include="_Ja25FrenchText.h" />
|
||||
<ClInclude Include="_Ja25GermanText.h" />
|
||||
<ClInclude Include="_Ja25ItalianText.h" />
|
||||
<ClInclude Include="_Ja25PolishText.h" />
|
||||
<ClInclude Include="_Ja25RussianText.h" />
|
||||
<ClInclude Include="_Ja25TaiwaneseText.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Animated ProgressBar.cpp" />
|
||||
<ClCompile Include="Cinematics Bink.cpp" />
|
||||
<ClCompile Include="Cinematics.cpp" />
|
||||
<ClCompile Include="Cursors.cpp" />
|
||||
<ClCompile Include="Debug Control.cpp" />
|
||||
<ClCompile Include="dsutil.cpp" />
|
||||
<ClCompile Include="Encrypted File.cpp" />
|
||||
<ClCompile Include="Event Manager.cpp" />
|
||||
<ClCompile Include="Event Pump.cpp" />
|
||||
<ClCompile Include="ExportStrings.cpp" />
|
||||
<ClCompile Include="Font Control.cpp" />
|
||||
<ClCompile Include="ImportStrings.cpp" />
|
||||
<ClCompile Include="INIReader.cpp" />
|
||||
<ClCompile Include="LocalizedStrings.cpp" />
|
||||
<ClCompile Include="MapUtility.cpp" />
|
||||
<ClCompile Include="MercTextBox.cpp" />
|
||||
<ClCompile Include="message.cpp" />
|
||||
<ClCompile Include="Multi Language Graphic Utils.cpp" />
|
||||
<ClCompile Include="Multilingual Text Code Generator.cpp" />
|
||||
<ClCompile Include="Music Control.cpp" />
|
||||
<ClCompile Include="PopUpBox.cpp" />
|
||||
<ClCompile Include="Quantize Wrap.cpp" />
|
||||
<ClCompile Include="Quantize.cpp" />
|
||||
<ClCompile Include="Slider.cpp" />
|
||||
<ClCompile Include="Sound Control.cpp" />
|
||||
<ClCompile Include="STIConvert.cpp" />
|
||||
<ClCompile Include="Text Input.cpp" />
|
||||
<ClCompile Include="Text Utils.cpp" />
|
||||
<ClCompile Include="Timer Control.cpp" />
|
||||
<ClCompile Include="Utilities.cpp" />
|
||||
<ClCompile Include="Win Util.cpp" />
|
||||
<ClCompile Include="WordWrap.cpp" />
|
||||
<ClCompile Include="XMLProperties.cpp" />
|
||||
<ClCompile Include="XMLWriter.cpp" />
|
||||
<ClCompile Include="XML_Items.cpp" />
|
||||
<ClCompile Include="XML_SenderNameList.cpp" />
|
||||
<ClCompile Include="XML_Strings.cpp" />
|
||||
<ClCompile Include="XML_Strings2.cpp" />
|
||||
<ClCompile Include="_ChineseText.cpp" />
|
||||
<ClCompile Include="_DutchText.cpp" />
|
||||
<ClCompile Include="_EnglishText.cpp" />
|
||||
<ClCompile Include="_FrenchText.cpp" />
|
||||
<ClCompile Include="_GermanText.cpp" />
|
||||
<ClCompile Include="_ItalianText.cpp" />
|
||||
<ClCompile Include="_Ja25ChineseText.cpp" />
|
||||
<ClCompile Include="_Ja25DutchText.cpp" />
|
||||
<ClCompile Include="_Ja25EnglishText.cpp" />
|
||||
<ClCompile Include="_Ja25FrenchText.cpp" />
|
||||
<ClCompile Include="_Ja25GermanText.cpp" />
|
||||
<ClCompile Include="_Ja25ItalianText.cpp" />
|
||||
<ClCompile Include="_Ja25PolishText.cpp" />
|
||||
<ClCompile Include="_Ja25RussianText.cpp" />
|
||||
<ClCompile Include="_Ja25TaiwaneseText.cpp" />
|
||||
<ClCompile Include="_PolishText.cpp" />
|
||||
<ClCompile Include="_RussianText.cpp" />
|
||||
<ClCompile Include="_TaiwaneseText.cpp" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{082F6E91-D049-4314-BE9D-D9509E853B01}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>Utils</RootNamespace>
|
||||
<ProjectName>Utils</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MapEditorD|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MapEditor|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Relese_WithDebugInfo|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="..\ja2.props" />
|
||||
<Import Project="..\ja2_Debug.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='MapEditorD|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="..\ja2.props" />
|
||||
<Import Project="..\ja2_Debug.props" />
|
||||
<Import Project="..\ja2_Editor.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="..\ja2.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='MapEditor|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="..\ja2.props" />
|
||||
<Import Project="..\ja2_Editor.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Relese_WithDebugInfo|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="..\ja2.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<OutDir>..\lib\VS2010\$(Configuration)\</OutDir>
|
||||
<IntDir>..\build\VS2010\$(ProjectName)_$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MapEditorD|Win32'">
|
||||
<OutDir>..\lib\VS2010\$(Configuration)\</OutDir>
|
||||
<IntDir>..\build\VS2010\$(ProjectName)_$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<IntDir>..\build\VS2010\$(ProjectName)_$(Configuration)\</IntDir>
|
||||
<OutDir>..\lib\VS2010\$(Configuration)\</OutDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MapEditor|Win32'">
|
||||
<IntDir>..\build\VS2010\$(ProjectName)_$(Configuration)\</IntDir>
|
||||
<OutDir>..\lib\VS2010\$(Configuration)\</OutDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Relese_WithDebugInfo|Win32'">
|
||||
<IntDir>..\build\VS2010\$(ProjectName)_$(Configuration)\</IntDir>
|
||||
<OutDir>..\lib\VS2010\$(Configuration)\</OutDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeaderFile>
|
||||
</PrecompiledHeaderFile>
|
||||
<PrecompiledHeaderOutputFile>
|
||||
</PrecompiledHeaderOutputFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='MapEditorD|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeaderFile>
|
||||
</PrecompiledHeaderFile>
|
||||
<PrecompiledHeaderOutputFile>
|
||||
</PrecompiledHeaderOutputFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeaderFile>
|
||||
</PrecompiledHeaderFile>
|
||||
<PrecompiledHeaderOutputFile>
|
||||
</PrecompiledHeaderOutputFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='MapEditor|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeaderFile>
|
||||
</PrecompiledHeaderFile>
|
||||
<PrecompiledHeaderOutputFile>
|
||||
</PrecompiledHeaderOutputFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Relese_WithDebugInfo|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeaderFile>
|
||||
</PrecompiledHeaderFile>
|
||||
<PrecompiledHeaderOutputFile>
|
||||
</PrecompiledHeaderOutputFile>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,321 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{85134125-f317-490e-9a9d-d210267ff98b}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{2c5f371b-8372-46d7-8b88-8c1885ddf7ef}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="_Ja25DutchText.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="_Ja25EnglishText.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="_Ja25FrenchText.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="_Ja25GermanText.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="_Ja25ItalianText.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="_Ja25PolishText.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="_Ja25RussianText.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="_Ja25TaiwaneseText.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Animated ProgressBar.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Cinematics.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Cursors.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Debug Control.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="dsutil.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Encrypted File.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Event Manager.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Event Pump.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ExportStrings.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Font Control.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ImportStrings.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="INIReader.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="LocalizedStrings.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="maputility.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="MercTextBox.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="message.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Multi Language Graphic Utils.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Multilingual Text Code Generator.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Music Control.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="PopUpBox.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Quantize Wrap.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Quantize.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Slider.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Sound Control.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="STIConvert.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Text Input.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Text.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Timer Control.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Utilities.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Utils All.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Win Util.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="WordWrap.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="XML_auto_parse.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="XML_Parser.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="XML_SenderNameList.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="XMLWriter.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="bink.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Cinematics Bink.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="_ChineseText.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="_DutchText.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="_EnglishText.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="_FrenchText.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="_GermanText.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="_ItalianText.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="_Ja25ChineseText.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="_Ja25DutchText.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="_Ja25EnglishText.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="_Ja25FrenchText.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="_Ja25GermanText.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="_Ja25ItalianText.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="_Ja25PolishText.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="_Ja25RussianText.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="_Ja25TaiwaneseText.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="_PolishText.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="_RussianText.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="_TaiwaneseText.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Animated ProgressBar.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Cinematics.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Cursors.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Debug Control.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="dsutil.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Encrypted File.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Event Manager.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Event Pump.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ExportStrings.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Font Control.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ImportStrings.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="INIReader.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="LocalizedStrings.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="MapUtility.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="MercTextBox.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="message.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Multi Language Graphic Utils.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Multilingual Text Code Generator.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Music Control.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="PopUpBox.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Quantize Wrap.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Quantize.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Slider.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Sound Control.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="STIConvert.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Text Input.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Text Utils.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Timer Control.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Utilities.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Win Util.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="WordWrap.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="XML_Items.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="XML_SenderNameList.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="XML_Strings.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="XML_Strings2.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="XMLProperties.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="XMLWriter.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Cinematics Bink.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
+39
-37
@@ -1,12 +1,16 @@
|
||||
#include <vfs/Core/vfs_types.h>
|
||||
#include <vfs/Core/vfs.h>
|
||||
#include <vfs/Core/vfs_file_raii.h>
|
||||
#include <vfs/Core/File/vfs_file.h>
|
||||
|
||||
#include <vfs/Tools/vfs_tools.h>
|
||||
#include <vfs/Tools/vfs_property_container.h>
|
||||
|
||||
#include "XML_Parser.h"
|
||||
#include "vfs_types.h"
|
||||
#include "PropertyContainer.h"
|
||||
#include "XMLWriter.h"
|
||||
#include "Debug.h"
|
||||
|
||||
#include "VFS/vfs_file_raii.h"
|
||||
#include "VFS/File/vfs_file.h"
|
||||
|
||||
CPropertyContainer::TagMap::TagMap()
|
||||
vfs::PropertyContainer::TagMap::TagMap()
|
||||
{
|
||||
// setup default map
|
||||
_map[L"Container"] = L"Container";
|
||||
@@ -15,7 +19,7 @@ CPropertyContainer::TagMap::TagMap()
|
||||
_map[L"Key"] = L"Key";
|
||||
_map[L"KeyID"] = L"name";
|
||||
}
|
||||
utf8string const& CPropertyContainer::TagMap::container(utf8string::char_t* container)
|
||||
vfs::String const& vfs::PropertyContainer::TagMap::container(vfs::String::char_t* container)
|
||||
{
|
||||
if(container)
|
||||
{
|
||||
@@ -23,7 +27,7 @@ utf8string const& CPropertyContainer::TagMap::container(utf8string::char_t* cont
|
||||
}
|
||||
return _map[L"Container"];
|
||||
}
|
||||
utf8string const& CPropertyContainer::TagMap::section(utf8string::char_t* section)
|
||||
vfs::String const& vfs::PropertyContainer::TagMap::section(vfs::String::char_t* section)
|
||||
{
|
||||
if(section)
|
||||
{
|
||||
@@ -31,7 +35,7 @@ utf8string const& CPropertyContainer::TagMap::section(utf8string::char_t* sectio
|
||||
}
|
||||
return _map[L"Section"];
|
||||
}
|
||||
utf8string const& CPropertyContainer::TagMap::sectionID(utf8string::char_t* section_id)
|
||||
vfs::String const& vfs::PropertyContainer::TagMap::sectionID(vfs::String::char_t* section_id)
|
||||
{
|
||||
if(section_id)
|
||||
{
|
||||
@@ -39,7 +43,7 @@ utf8string const& CPropertyContainer::TagMap::sectionID(utf8string::char_t* sect
|
||||
}
|
||||
return _map[L"SectionID"];
|
||||
}
|
||||
utf8string const& CPropertyContainer::TagMap::key(utf8string::char_t* key)
|
||||
vfs::String const& vfs::PropertyContainer::TagMap::key(vfs::String::char_t* key)
|
||||
{
|
||||
if(key)
|
||||
{
|
||||
@@ -47,7 +51,7 @@ utf8string const& CPropertyContainer::TagMap::key(utf8string::char_t* key)
|
||||
}
|
||||
return _map[L"Key"];
|
||||
}
|
||||
utf8string const& CPropertyContainer::TagMap::keyID(utf8string::char_t* key_id)
|
||||
vfs::String const& vfs::PropertyContainer::TagMap::keyID(vfs::String::char_t* key_id)
|
||||
{
|
||||
if(key_id)
|
||||
{
|
||||
@@ -56,7 +60,7 @@ utf8string const& CPropertyContainer::TagMap::keyID(utf8string::char_t* key_id)
|
||||
return _map[L"KeyID"];
|
||||
}
|
||||
|
||||
bool CPropertyContainer::writeToXMLFile(vfs::Path const& sFileName, CPropertyContainer::TagMap& tagmap)
|
||||
bool vfs::PropertyContainer::writeToXMLFile(vfs::Path const& sFileName, vfs::PropertyContainer::TagMap& tagmap)
|
||||
{
|
||||
XMLWriter xmlw;
|
||||
|
||||
@@ -68,8 +72,8 @@ bool CPropertyContainer::writeToXMLFile(vfs::Path const& sFileName, CPropertyCon
|
||||
xmlw.addAttributeToNextValue(tagmap.sectionID(),sit->first.utf8());
|
||||
xmlw.openNode(tagmap.section());
|
||||
|
||||
CPropertyContainer::CSection& section = sit->second;
|
||||
CPropertyContainer::CSection::tProps::iterator kit = section.mapProps.begin();
|
||||
vfs::PropertyContainer::Section& section = sit->second;
|
||||
vfs::PropertyContainer::Section::tProps::iterator kit = section.mapProps.begin();
|
||||
for(; kit != section.mapProps.end(); ++kit)
|
||||
{
|
||||
xmlw.addAttributeToNextValue(tagmap.keyID(), kit->first.utf8());
|
||||
@@ -99,11 +103,11 @@ class CPropertyXMLParser : public IXMLParser
|
||||
};
|
||||
public:
|
||||
CPropertyXMLParser(
|
||||
CPropertyContainer& container,
|
||||
CPropertyContainer::TagMap& tagmap,
|
||||
vfs::PropertyContainer& container,
|
||||
vfs::PropertyContainer::TagMap& tagmap,
|
||||
XML_Parser &parser,
|
||||
IXMLParser* caller = NULL)
|
||||
: IXMLParser("",parser,caller),
|
||||
: IXMLParser("",&parser,caller),
|
||||
_container(container),
|
||||
_tagmap(tagmap),
|
||||
current_state(DO_ELEMENT_NONE) // doesn't matter where we come from, we start fresh
|
||||
@@ -112,27 +116,27 @@ public:
|
||||
virtual void onEndElement(const XML_Char* name);
|
||||
virtual void onTextElement(const XML_Char *str, int len);
|
||||
private:
|
||||
CPropertyContainer& _container;
|
||||
CPropertyContainer::TagMap& _tagmap;
|
||||
vfs::PropertyContainer& _container;
|
||||
vfs::PropertyContainer::TagMap& _tagmap;
|
||||
DOM_OBJECT current_state;
|
||||
utf8string current_section;
|
||||
utf8string current_key;
|
||||
vfs::String current_section;
|
||||
vfs::String current_key;
|
||||
};
|
||||
|
||||
|
||||
void CPropertyXMLParser::onStartElement(const XML_Char *name, const XML_Char **atts)
|
||||
{
|
||||
utf8string utf8_name(name);
|
||||
if(current_state == DO_ELEMENT_NONE && StrCmp::Equal(utf8_name,_tagmap.container()))
|
||||
vfs::String utf8_name(name);
|
||||
if(current_state == DO_ELEMENT_NONE && vfs::StrCmp::Equal(utf8_name,_tagmap.container()))
|
||||
{
|
||||
current_state = DO_ELEMENT_Container;
|
||||
}
|
||||
else if(current_state == DO_ELEMENT_Container && StrCmp::Equal(utf8_name, _tagmap.section()))
|
||||
else if(current_state == DO_ELEMENT_Container && vfs::StrCmp::Equal(utf8_name, _tagmap.section()))
|
||||
{
|
||||
current_state = DO_ELEMENT_Section;
|
||||
current_section = this->getAttribute(_tagmap.sectionID().utf8().c_str(),atts);
|
||||
}
|
||||
else if(current_state == DO_ELEMENT_Section && StrCmp::Equal(utf8_name, _tagmap.key()))
|
||||
else if(current_state == DO_ELEMENT_Section && vfs::StrCmp::Equal(utf8_name, _tagmap.key()))
|
||||
{
|
||||
current_state = DO_ELEMENT_Key;
|
||||
current_key = this->getAttribute(_tagmap.keyID().utf8().c_str(),atts);
|
||||
@@ -142,17 +146,17 @@ void CPropertyXMLParser::onStartElement(const XML_Char *name, const XML_Char **a
|
||||
|
||||
void CPropertyXMLParser::onEndElement(const XML_Char* name)
|
||||
{
|
||||
utf8string utf8_name(name);
|
||||
if(current_state == DO_ELEMENT_Key && StrCmp::Equal(utf8_name, _tagmap.key()))
|
||||
vfs::String utf8_name(name);
|
||||
if(current_state == DO_ELEMENT_Key && vfs::StrCmp::Equal(utf8_name, _tagmap.key()))
|
||||
{
|
||||
_container.setStringProperty(current_section, current_key, vfs::trimString(sCharData,0,sCharData.length()));
|
||||
current_state = DO_ELEMENT_Section;
|
||||
}
|
||||
else if(current_state == DO_ELEMENT_Section && StrCmp::Equal(utf8_name, _tagmap.section()))
|
||||
else if(current_state == DO_ELEMENT_Section && vfs::StrCmp::Equal(utf8_name, _tagmap.section()))
|
||||
{
|
||||
current_state = DO_ELEMENT_Container;
|
||||
}
|
||||
else if(current_state == DO_ELEMENT_Container && StrCmp::Equal(utf8_name, _tagmap.container()))
|
||||
else if(current_state == DO_ELEMENT_Container && vfs::StrCmp::Equal(utf8_name, _tagmap.container()))
|
||||
{
|
||||
current_state = DO_ELEMENT_NONE;
|
||||
}
|
||||
@@ -166,25 +170,23 @@ void CPropertyXMLParser::onTextElement(const XML_Char *str, int len)
|
||||
}
|
||||
}
|
||||
|
||||
bool CPropertyContainer::initFromXMLFile(vfs::Path const& sFileName, CPropertyContainer::TagMap& tagmap)
|
||||
bool vfs::PropertyContainer::initFromXMLFile(vfs::Path const& sFileName, vfs::PropertyContainer::TagMap& tagmap)
|
||||
{
|
||||
vfs::tReadableFile *file = NULL;
|
||||
bool delete_file = false;
|
||||
try
|
||||
if(getVFS()->fileExists(sFileName))
|
||||
{
|
||||
vfs::COpenReadFile rfile(sFileName);
|
||||
file = &rfile.file();
|
||||
rfile.release();
|
||||
}
|
||||
catch(CBasicException& ex)
|
||||
else
|
||||
{
|
||||
logException(ex);
|
||||
vfs::CFile* rfile = new vfs::CFile(sFileName);
|
||||
delete_file = true;
|
||||
file = vfs::tReadableFile::cast(rfile);
|
||||
if(!file->openRead())
|
||||
{
|
||||
file->close();
|
||||
delete file;
|
||||
return false;
|
||||
}
|
||||
@@ -198,7 +200,7 @@ bool CPropertyContainer::initFromXMLFile(vfs::Path const& sFileName, CPropertyCo
|
||||
|
||||
std::vector<vfs::Byte> buffer(size+1);
|
||||
|
||||
TRYCATCH_RETHROW( file->read(&buffer[0],size), L"" );
|
||||
SGP_TRYCATCH_RETHROW( file->read(&buffer[0],size), L"" );
|
||||
buffer[size] = 0;
|
||||
|
||||
file->close();
|
||||
@@ -213,10 +215,10 @@ bool CPropertyContainer::initFromXMLFile(vfs::Path const& sFileName, CPropertyCo
|
||||
{
|
||||
std::wstringstream wss;
|
||||
wss << L"XML Parser Error in Groups.xml: "
|
||||
<< utf8string::as_utf16(XML_ErrorString(XML_GetErrorCode(parser)))
|
||||
<< vfs::String::as_utf16(XML_ErrorString(XML_GetErrorCode(parser)))
|
||||
<< L" at line "
|
||||
<< XML_GetCurrentLineNumber(parser);
|
||||
THROWEXCEPTION(wss.str().c_str());
|
||||
SGP_THROW(wss.str().c_str());
|
||||
//return false;
|
||||
}
|
||||
|
||||
|
||||
+18
-9
@@ -1,21 +1,30 @@
|
||||
#include "XMLWriter.h"
|
||||
#include "sgp_logger.h"
|
||||
|
||||
#include "VFS/vfs_file_raii.h"
|
||||
#include "VFS/File/vfs_file.h"
|
||||
#include <vfs/Core/vfs_file_raii.h>
|
||||
#include <vfs/Core/File/vfs_file.h>
|
||||
|
||||
void XMLWriter::addValue(utf8string const& key)
|
||||
void XMLWriter::addValue(vfs::String const& key)
|
||||
{
|
||||
m_ssBuffer << indent() << "<" << key.utf8();
|
||||
insertAttributesIntoBuffer();
|
||||
m_ssBuffer << " />\n";
|
||||
}
|
||||
|
||||
void XMLWriter::addComment(utf8string const& comment)
|
||||
void XMLWriter::addComment(vfs::String const& comment)
|
||||
{
|
||||
m_ssBuffer << indent() << "<!-- " << comment.utf8() << " -->\n";
|
||||
}
|
||||
|
||||
void XMLWriter::openNode(utf8string const& key)
|
||||
void XMLWriter::addFlag(UINT32 const& flags, UINT32 const& flag, vfs::String strFlag)
|
||||
{
|
||||
if( ( flags & flag) == flag )
|
||||
{
|
||||
this->addValue(strFlag);
|
||||
}
|
||||
}
|
||||
|
||||
void XMLWriter::openNode(vfs::String const& key)
|
||||
{
|
||||
std::string utf8key = key.utf8();
|
||||
m_ssBuffer << indent() << "<" << utf8key;
|
||||
@@ -49,9 +58,9 @@ bool XMLWriter::writeToFile(vfs::Path const& sFileName)
|
||||
vfs::COpenWriteFile file(sFileName,true,true);
|
||||
return writeToFile( &file.file() );
|
||||
}
|
||||
catch(CBasicException& ex)
|
||||
catch(vfs::Exception& ex)
|
||||
{
|
||||
logException(ex);
|
||||
SGP_ERROR(ex.what());
|
||||
vfs::CFile file(sFileName);
|
||||
if(file.openWrite(true,true))
|
||||
{
|
||||
@@ -70,9 +79,9 @@ bool XMLWriter::writeToFile(vfs::tWritableFile* pFile)
|
||||
pFile->write(str.c_str(), str.length() * sizeof(std::string::value_type));
|
||||
return true;
|
||||
}
|
||||
catch(CBasicException& ex)
|
||||
catch(vfs::Exception& ex)
|
||||
{
|
||||
logException(ex);
|
||||
SGP_ERROR(ex.what());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
+11
-10
@@ -2,8 +2,8 @@
|
||||
#define _XMLWRITER_H_
|
||||
|
||||
#include "FileMan.h"
|
||||
#include "VFS/Interface/vfs_file_interface.h"
|
||||
#include "utf8string.h"
|
||||
#include <vfs/Core/Interface/vfs_file_interface.h>
|
||||
#include <vfs/Core/vfs_string.h>
|
||||
|
||||
#include <stack>
|
||||
#include <string>
|
||||
@@ -23,7 +23,7 @@ public:
|
||||
{};
|
||||
|
||||
template<typename ValueType>
|
||||
void addAttributeToNextValue(utf8string const& attribute, ValueType const& value)
|
||||
void addAttributeToNextValue(vfs::String const& attribute, ValueType const& value)
|
||||
{
|
||||
std::stringstream temp_buffer;
|
||||
temp_buffer << value;
|
||||
@@ -31,27 +31,28 @@ public:
|
||||
}
|
||||
|
||||
template<typename ValueType>
|
||||
void addValue(utf8string const& key, ValueType const& value)
|
||||
void addValue(vfs::String const& key, ValueType const& value)
|
||||
{
|
||||
std::string utf8key = key.utf8();
|
||||
m_ssBuffer << indent() << "<" << utf8key;
|
||||
insertAttributesIntoBuffer();
|
||||
m_ssBuffer << "> " << value << " </" << utf8key << ">\n";
|
||||
m_ssBuffer << ">" << value << "</" << utf8key << ">\n";
|
||||
}
|
||||
|
||||
template<>
|
||||
void addValue<std::string >(utf8string const& key, std::string const& value)
|
||||
void addValue<std::string>(vfs::String const& key, std::string const& value)
|
||||
{
|
||||
std::string utf8key = key.utf8();
|
||||
m_ssBuffer << indent() << "<" << utf8key;
|
||||
insertAttributesIntoBuffer();
|
||||
m_ssBuffer << "> " << handleSpecialCharacters(value) << " </" << utf8key << ">\n";
|
||||
m_ssBuffer << ">" << handleSpecialCharacters(value) << "</" << utf8key << ">\n";
|
||||
}
|
||||
|
||||
void addValue(utf8string const& key);
|
||||
void addComment(utf8string const& comment);
|
||||
void addValue(vfs::String const& key);
|
||||
void addComment(vfs::String const& comment);
|
||||
void addFlag(UINT32 const& flags, UINT32 const& flag, vfs::String strFlag);
|
||||
|
||||
void openNode(utf8string const& key);
|
||||
void openNode(vfs::String const& key);
|
||||
bool closeNode();
|
||||
|
||||
bool writeToFile(vfs::Path const& sFileName);
|
||||
|
||||
+348
-4
@@ -54,6 +54,7 @@ struct
|
||||
INVTYPE curItem;
|
||||
INVTYPE * curArray;
|
||||
UINT32 maxArraySize;
|
||||
INT8 curStance;
|
||||
|
||||
UINT32 currentDepth;
|
||||
UINT32 maxReadDepth;
|
||||
@@ -62,6 +63,9 @@ typedef itemParseData;
|
||||
|
||||
BOOLEAN localizedTextOnly;
|
||||
|
||||
// HEADROCK HAM 4: Inherits data between stance-based modifiers
|
||||
void InheritStanceModifiers( itemParseData *pData );
|
||||
|
||||
static void XMLCALL
|
||||
itemStartElementHandle(void *userData, const XML_Char *name, const XML_Char **atts)
|
||||
{
|
||||
@@ -86,6 +90,28 @@ itemStartElementHandle(void *userData, const XML_Char *name, const XML_Char **at
|
||||
if ( !localizedTextOnly )
|
||||
memset(&pData->curItem,0,sizeof(INVTYPE));
|
||||
|
||||
// HEADROCK HAM 4: With the new stance-based variables, it is necessary to set vars to have an impossible
|
||||
// value. That way when they are later recorded in the item structs, a parent->child inheritence can occur
|
||||
// for children that do not have data put into them from XML.
|
||||
// -10000 has been selected to pose as "no value". Modders should never even reduce the value of any of
|
||||
// these tags below -100 anyway, and although it's not the best solution that's the only one I came up with.
|
||||
|
||||
for (INT8 X = 0; X < 3; X++)
|
||||
{
|
||||
pData->curItem.flatbasemodifier[X] = -10000;
|
||||
pData->curItem.percentbasemodifier[X] = -10000;
|
||||
pData->curItem.flataimmodifier[X] = -10000;
|
||||
pData->curItem.percentaimmodifier[X] = -10000;
|
||||
pData->curItem.percentcapmodifier[X] = -10000;
|
||||
pData->curItem.percenthandlingmodifier[X] = -10000;
|
||||
pData->curItem.targettrackingmodifier[X] = -10000;
|
||||
pData->curItem.percentdropcompensationmodifier[X] = -10000;
|
||||
pData->curItem.maxcounterforcemodifier[X] = -10000;
|
||||
pData->curItem.counterforceaccuracymodifier[X] = -10000;
|
||||
pData->curItem.counterforcefrequencymodifier[X] = -10000;
|
||||
pData->curItem.aimlevelsmodifier[X] = -10000;
|
||||
}
|
||||
|
||||
pData->maxReadDepth++; //we are not skipping this element
|
||||
}
|
||||
else if(pData->curElement == ELEMENT &&
|
||||
@@ -96,6 +122,8 @@ itemStartElementHandle(void *userData, const XML_Char *name, const XML_Char **at
|
||||
strcmp(name, "szBRName") == 0 ||
|
||||
strcmp(name, "szBRDesc") == 0 ||
|
||||
strcmp(name, "usItemClass") == 0 ||
|
||||
strcmp(name, "nasAttachmentClass") == 0 ||
|
||||
strcmp(name, "nasLayoutClass") == 0 ||
|
||||
strcmp(name, "ubClassIndex") == 0 ||
|
||||
strcmp(name, "ubCursor") == 0 ||
|
||||
strcmp(name, "bSoundType") == 0 ||
|
||||
@@ -213,15 +241,68 @@ itemStartElementHandle(void *userData, const XML_Char *name, const XML_Char **at
|
||||
strcmp(name, "StealthBonus") == 0 ||
|
||||
strcmp(name, "SciFi") == 0 ||
|
||||
strcmp(name, "NewInv") == 0 ||
|
||||
strcmp(name, "AttachmentSystem") == 0 ||
|
||||
//zilpin: pellet spread patterns externalized in XML
|
||||
strcmp(name, "spreadPattern") == 0 ||
|
||||
strcmp(name, "fFlags") == 0 ))
|
||||
// HEADROCK HAM 4: new NCTH variables.
|
||||
strcmp(name, "ScopeMagFactor") == 0 ||
|
||||
strcmp(name, "ProjectionFactor") == 0 ||
|
||||
strcmp(name, "PercentAccuracyModifier") == 0 ||
|
||||
strcmp(name, "RecoilModifierX") == 0 ||
|
||||
strcmp(name, "RecoilModifierY") == 0 ||
|
||||
strcmp(name, "PercentRecoilModifier") == 0 ||
|
||||
|
||||
strcmp(name, "fFlags") == 0 ))
|
||||
{
|
||||
pData->curElement = ELEMENT_PROPERTY;
|
||||
//DebugMsg(TOPIC_JA2, DBG_LEVEL_3, String("itemStartElementHandle: going into element, name = %s",name) );
|
||||
|
||||
pData->maxReadDepth++; //we are not skipping this element
|
||||
}
|
||||
// HEADROCK HAM 4: New depth: Stance-based variables
|
||||
else if(pData->curElement == ELEMENT &&
|
||||
(strcmp(name, "STAND_MODIFIERS") == 0 ||
|
||||
strcmp(name, "CROUCH_MODIFIERS") == 0 ||
|
||||
strcmp(name, "PRONE_MODIFIERS") == 0))
|
||||
{
|
||||
pData->curElement = ELEMENT_SUBLIST;
|
||||
|
||||
// Set current stance.
|
||||
if (strcmp(name, "STAND_MODIFIERS") == 0)
|
||||
{
|
||||
pData->curStance = 0;
|
||||
}
|
||||
else if (strcmp(name, "CROUCH_MODIFIERS") == 0)
|
||||
{
|
||||
pData->curStance = 1;
|
||||
}
|
||||
else // prone
|
||||
{
|
||||
pData->curStance = 2;
|
||||
}
|
||||
|
||||
pData->maxReadDepth++;
|
||||
}
|
||||
|
||||
// HEADROCK HAM 4: Read stance-based variables
|
||||
else if(pData->curElement == ELEMENT_SUBLIST &&
|
||||
(strcmp(name, "FlatBase") == 0 ||
|
||||
strcmp(name, "PercentBase") == 0 ||
|
||||
strcmp(name, "FlatAim") == 0 ||
|
||||
strcmp(name, "PercentAim") == 0 ||
|
||||
strcmp(name, "PercentCap") == 0 ||
|
||||
strcmp(name, "PercentHandling") == 0 ||
|
||||
strcmp(name, "PercentTargetTrackingSpeed") == 0 ||
|
||||
strcmp(name, "PercentDropCompensation") == 0 ||
|
||||
strcmp(name, "PercentMaxCounterForce") == 0 ||
|
||||
strcmp(name, "PercentCounterForceAccuracy") == 0 ||
|
||||
strcmp(name, "PercentCounterForceFrequency") == 0 ||
|
||||
strcmp(name, "AimLevels") == 0))
|
||||
{
|
||||
pData->curElement = ELEMENT_SUBLIST_PROPERTY;
|
||||
|
||||
pData->maxReadDepth++; //we are not skipping this element
|
||||
}
|
||||
|
||||
pData->szCharData[0] = '\0';
|
||||
}
|
||||
@@ -264,7 +345,12 @@ itemEndElementHandle(void *userData, const XML_Char *name)
|
||||
if(pData->curItem.uiIndex < pData->maxArraySize)
|
||||
{
|
||||
if ( pData->curItem.usItemClass != 0 )
|
||||
{
|
||||
// HEADROCK HAM 4: Inherit stance-base modifiers upwards.
|
||||
InheritStanceModifiers( pData );
|
||||
|
||||
pData->curArray[pData->curItem.uiIndex] = pData->curItem; //write the item into the table
|
||||
}
|
||||
else if ( sizeof(pData->curItem.szItemName)>0 && localizedTextOnly )
|
||||
{
|
||||
wcscpy(pData->curArray[pData->curItem.uiIndex].szItemName,pData->curItem.szItemName);
|
||||
@@ -429,6 +515,16 @@ itemEndElementHandle(void *userData, const XML_Char *name)
|
||||
pData->curElement = ELEMENT;
|
||||
pData->curItem.usItemClass = (UINT32) atol(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "nasAttachmentClass") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
pData->curItem.nasAttachmentClass = (UINT32) atol(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "nasLayoutClass") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
pData->curItem.nasLayoutClass = (UINT32) atol(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "ubClassIndex") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
@@ -767,6 +863,11 @@ itemEndElementHandle(void *userData, const XML_Char *name)
|
||||
pData->curElement = ELEMENT;
|
||||
pData->curItem.newinv = (BOOLEAN) atol(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "AttachmentSystem") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
pData->curItem.ubAttachmentSystem = (UINT8) atol(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "HideMuzzleFlash") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
@@ -840,7 +941,12 @@ itemEndElementHandle(void *userData, const XML_Char *name)
|
||||
else if(strcmp(name, "DefaultAttachment") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
pData->curItem.defaultattachment = (UINT16) atol(pData->szCharData);
|
||||
for(UINT8 cnt = 0; cnt < MAX_DEFAULT_ATTACHMENTS; cnt++){
|
||||
if(pData->curItem.defaultattachments[cnt] == 0){
|
||||
pData->curItem.defaultattachments[cnt] = (UINT16) atol(pData->szCharData);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(strcmp(name, "BrassKnuckles") == 0)
|
||||
{
|
||||
@@ -1028,12 +1134,118 @@ itemEndElementHandle(void *userData, const XML_Char *name)
|
||||
pData->curItem.bestlaserrange = (INT16) atol(pData->szCharData);
|
||||
}
|
||||
//zilpin: pellet spread patterns externalized in XML
|
||||
else if(strcmp(name, "spreadPattern") == 0)
|
||||
if(strcmp(name, "spreadPattern") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
pData->curItem.spreadPattern = FindSpreadPatternIndex( pData->szCharData );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
// HEADROCK HAM 4: Read new variables from XML
|
||||
else if(strcmp(name, "ScopeMagFactor") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
pData->curItem.scopemagfactor = (FLOAT) atof(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "ProjectionFactor") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
pData->curItem.projectionfactor = (FLOAT) atof(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "PercentAccuracyModifier") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
pData->curItem.percentaccuracymodifier = (INT16) atol(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "RecoilModifierX") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
pData->curItem.RecoilModifierX = (INT16) atol(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "RecoilModifierY") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
pData->curItem.RecoilModifierY = (INT16) atol(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "PercentRecoilModifier") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
pData->curItem.PercentRecoilModifier = (INT16) atol(pData->szCharData);
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
// HEADROCK HAM 4: Read stance-based variables and put them into the right place.
|
||||
else if(strcmp(name, "FlatBase") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT_SUBLIST;
|
||||
pData->curItem.flatbasemodifier[pData->curStance] = (INT16) atol(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "PercentBase") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT_SUBLIST;
|
||||
pData->curItem.percentbasemodifier[pData->curStance] = (INT16) atol(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "FlatAim") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT_SUBLIST;
|
||||
pData->curItem.flataimmodifier[pData->curStance] = (INT16) atol(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "PercentAim") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT_SUBLIST;
|
||||
pData->curItem.percentaimmodifier[pData->curStance] = (INT16) atol(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "PercentCap") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT_SUBLIST;
|
||||
pData->curItem.percentcapmodifier[pData->curStance] = (INT16) atol(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "PercentHandling") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT_SUBLIST;
|
||||
pData->curItem.percenthandlingmodifier[pData->curStance] = (INT16) atol(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "PercentTargetTrackingSpeed") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT_SUBLIST;
|
||||
pData->curItem.targettrackingmodifier[pData->curStance] = (INT16) atol(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "PercentDropCompensation") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT_SUBLIST;
|
||||
pData->curItem.percentdropcompensationmodifier[pData->curStance] = (INT16) atol(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "PercentMaxCounterForce") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT_SUBLIST;
|
||||
pData->curItem.maxcounterforcemodifier[pData->curStance] = (INT16) atol(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "PercentCounterForceAccuracy") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT_SUBLIST;
|
||||
pData->curItem.counterforceaccuracymodifier[pData->curStance] = (INT16) atol(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "PercentCounterForceFrequency") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT_SUBLIST;
|
||||
pData->curItem.counterforcefrequencymodifier[pData->curStance] = (INT16) atol(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "AimLevels") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT_SUBLIST;
|
||||
pData->curItem.aimlevelsmodifier[pData->curStance] = (INT16) atol(pData->szCharData);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
// HEADROCK HAM 4: Close opened Stance Tags.
|
||||
else if(strcmp(name, "STAND_MODIFIERS") == 0 ||
|
||||
strcmp(name, "CROUCH_MODIFIERS") == 0 ||
|
||||
strcmp(name, "PRONE_MODIFIERS") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
}
|
||||
|
||||
pData->maxReadDepth--;
|
||||
}
|
||||
|
||||
@@ -1425,6 +1637,8 @@ BOOLEAN WriteItemStats()
|
||||
|
||||
|
||||
FilePrintf(hFile,"\t\t<usItemClass>%d</usItemClass>\r\n", Item[cnt].usItemClass);
|
||||
FilePrintf(hFile,"\t\t<nasAttachmentClass>%d</nasAttachmentClass>\r\n", Item[cnt].nasAttachmentClass);
|
||||
FilePrintf(hFile,"\t\t<nasLayoutClass>%d</nasLayoutClass>\r\n", Item[cnt].nasLayoutClass);
|
||||
FilePrintf(hFile,"\t\t<ubClassIndex>%d</ubClassIndex>\r\n", Item[cnt].ubClassIndex);
|
||||
FilePrintf(hFile,"\t\t<ubCursor>%d</ubCursor>\r\n", Item[cnt].ubCursor);
|
||||
FilePrintf(hFile,"\t\t<bSoundType>%d</bSoundType>\r\n", Item[cnt].bSoundType);
|
||||
@@ -1468,6 +1682,7 @@ BOOLEAN WriteItemStats()
|
||||
FilePrintf(hFile,"\t\t<BigGunList>%d</BigGunList>\r\n", Item[cnt].biggunlist );
|
||||
FilePrintf(hFile,"\t\t<SciFi>%d</SciFi>\r\n", Item[cnt].scifi );
|
||||
FilePrintf(hFile,"\t\t<NewInv>%d</NewInv>\r\n", Item[cnt].newinv );
|
||||
FilePrintf(hFile,"\t\t<AttachmentSystem>%d</AttachmentSystem>\r\n", Item[cnt].ubAttachmentSystem );
|
||||
FilePrintf(hFile,"\t\t<NotInEditor>%d</NotInEditor>\r\n", Item[cnt].notineditor );
|
||||
FilePrintf(hFile,"\t\t<DefaultUndroppable>%d</DefaultUndroppable>\r\n", Item[cnt].defaultundroppable );
|
||||
FilePrintf(hFile,"\t\t<Unaerodynamic>%d</Unaerodynamic>\r\n", Item[cnt].unaerodynamic );
|
||||
@@ -1514,7 +1729,12 @@ BOOLEAN WriteItemStats()
|
||||
FilePrintf(hFile,"\t\t<DiscardedLauncherItem>%d</DiscardedLauncherItem>\r\n", Item[cnt].discardedlauncheritem );
|
||||
FilePrintf(hFile,"\t\t<RocketRifle>%d</RocketRifle>\r\n", Item[cnt].rocketrifle);
|
||||
FilePrintf(hFile,"\t\t<Cannon>%d</Cannon>\r\n", Item[cnt].cannon);
|
||||
FilePrintf(hFile,"\t\t<DefaultAttachment>%d</DefaultAttachment>\r\n", Item[cnt].defaultattachment );
|
||||
|
||||
for(UINT8 cnt2 = 0; cnt2 < MAX_DEFAULT_ATTACHMENTS; cnt2++){
|
||||
if(Item[cnt].defaultattachments[cnt2] != 0){
|
||||
FilePrintf(hFile,"\t\t<DefaultAttachment>%d</DefaultAttachment>\r\n", Item[cnt].defaultattachments[cnt2] );
|
||||
}
|
||||
}
|
||||
|
||||
FilePrintf(hFile,"\t\t<BrassKnuckles>%d</BrassKnuckles>\r\n", Item[cnt].brassknuckles );
|
||||
FilePrintf(hFile,"\t\t<Crowbar>%d</Crowbar>\r\n", Item[cnt].crowbar );
|
||||
@@ -1572,6 +1792,57 @@ BOOLEAN WriteItemStats()
|
||||
FilePrintf(hFile,"\t\t<FingerPrintID>%d</FingerPrintID>\r\n", Item[cnt].fingerprintid );
|
||||
FilePrintf(hFile,"\t\t<AmmoCrate>%d</AmmoCrate>\r\n", Item[cnt].ammocrate );
|
||||
|
||||
// HEADROCK HAM 4: Print out new values
|
||||
FilePrintf(hFile,"\t\t<ScopeMagFactor>%d</ScopeMagFactor>\r\n", Item[cnt].scopemagfactor );
|
||||
FilePrintf(hFile,"\t\t<ProjectionFactor>%d</ProjectionFactor>\r\n", Item[cnt].projectionfactor );
|
||||
FilePrintf(hFile,"\t\t<PercentAccuracyModifier>%d</PercentAccuracyModifier>\r\n", Item[cnt].percentaccuracymodifier );
|
||||
FilePrintf(hFile,"\t\t<RecoilModifierX>%d</RecoilModifierX>\r\n", Item[cnt].RecoilModifierX );
|
||||
FilePrintf(hFile,"\t\t<RecoilModifierY>%d</RecoilModifierY>\r\n", Item[cnt].RecoilModifierY );
|
||||
FilePrintf(hFile,"\t\t<PercentRecoilModifier>%d</PercentRecoilModifier>\r\n", Item[cnt].PercentRecoilModifier );
|
||||
|
||||
// HEADROCK HAM 4: Print out stance-based values
|
||||
FilePrintf(hFile,"\t\t<STAND_MODIFIERS>\r\n");
|
||||
FilePrintf(hFile,"\t\t\t<FlatBase>%d</FlatBase>\r\n", Item[cnt].flatbasemodifier[0] );
|
||||
FilePrintf(hFile,"\t\t\t<PercentBase>%d</PercentBase>\r\n", Item[cnt].percentbasemodifier[0] );
|
||||
FilePrintf(hFile,"\t\t\t<FlatAim>%d</FlatAim>\r\n", Item[cnt].flataimmodifier[0] );
|
||||
FilePrintf(hFile,"\t\t\t<PercentCap>%d</PercentCap>\r\n", Item[cnt].percentcapmodifier[0] );
|
||||
FilePrintf(hFile,"\t\t\t<PercentHandling>%d</PercentHandling>\r\n", Item[cnt].percenthandlingmodifier[0] );
|
||||
FilePrintf(hFile,"\t\t\t<PercentTargetTrackingSpeed>%d</PercentTargetTrackingSpeed>\r\n", Item[cnt].targettrackingmodifier[0] );
|
||||
FilePrintf(hFile,"\t\t\t<PercentDropCompensation>%d</PercentDropCompensation>\r\n", Item[cnt].percentdropcompensationmodifier[0] );
|
||||
FilePrintf(hFile,"\t\t\t<PercentMaxCounterForce>%d</PercentMaxCounterForce>\r\n", Item[cnt].maxcounterforcemodifier[0] );
|
||||
FilePrintf(hFile,"\t\t\t<PercentCounterForceAccuracy>%d</PercentCounterForceAccuracy>\r\n", Item[cnt].counterforceaccuracymodifier[0] );
|
||||
FilePrintf(hFile,"\t\t\t<PercentCounterForceFrequency>%d</PercentCounterForceFrequency>\r\n", Item[cnt].counterforcefrequencymodifier[0] );
|
||||
FilePrintf(hFile,"\t\t\t<AimLevels>%d</AimLevels>\r\n", Item[cnt].aimlevelsmodifier[0] );
|
||||
FilePrintf(hFile,"\t\t</STAND_MODIFIERS>\r\n");
|
||||
|
||||
FilePrintf(hFile,"\t\t<CROUCH_MODIFIERS>\r\n");
|
||||
FilePrintf(hFile,"\t\t\t<FlatBase>%d</FlatBase>\r\n", Item[cnt].flatbasemodifier[1] );
|
||||
FilePrintf(hFile,"\t\t\t<PercentBase>%d</PercentBase>\r\n", Item[cnt].percentbasemodifier[1] );
|
||||
FilePrintf(hFile,"\t\t\t<FlatAim>%d</FlatAim>\r\n", Item[cnt].flataimmodifier[1] );
|
||||
FilePrintf(hFile,"\t\t\t<PercentCap>%d</PercentCap>\r\n", Item[cnt].percentcapmodifier[1] );
|
||||
FilePrintf(hFile,"\t\t\t<PercentHandling>%d</PercentHandling>\r\n", Item[cnt].percenthandlingmodifier[1] );
|
||||
FilePrintf(hFile,"\t\t\t<PercentTargetTrackingSpeed>%d</PercentTargetTrackingSpeed>\r\n", Item[cnt].targettrackingmodifier[1] );
|
||||
FilePrintf(hFile,"\t\t\t<PercentDropCompensation>%d</PercentDropCompensation>\r\n", Item[cnt].percentdropcompensationmodifier[1] );
|
||||
FilePrintf(hFile,"\t\t\t<PercentMaxCounterForce>%d</PercentMaxCounterForce>\r\n", Item[cnt].maxcounterforcemodifier[1] );
|
||||
FilePrintf(hFile,"\t\t\t<PercentCounterForceAccuracy>%d</PercentCounterForceAccuracy>\r\n", Item[cnt].counterforceaccuracymodifier[1] );
|
||||
FilePrintf(hFile,"\t\t\t<PercentCounterForceFrequency>%d</PercentCounterForceFrequency>\r\n", Item[cnt].counterforcefrequencymodifier[1] );
|
||||
FilePrintf(hFile,"\t\t\t<AimLevels>%d</AimLevels>\r\n", Item[cnt].aimlevelsmodifier[1] );
|
||||
FilePrintf(hFile,"\t\t</CROUCH_MODIFIERS>\r\n");
|
||||
|
||||
FilePrintf(hFile,"\t\t<PRONE_MODIFIERS>\r\n");
|
||||
FilePrintf(hFile,"\t\t\t<FlatBase>%d</FlatBase>\r\n", Item[cnt].flatbasemodifier[2] );
|
||||
FilePrintf(hFile,"\t\t\t<PercentBase>%d</PercentBase>\r\n", Item[cnt].percentbasemodifier[2] );
|
||||
FilePrintf(hFile,"\t\t\t<FlatAim>%d</FlatAim>\r\n", Item[cnt].flataimmodifier[2] );
|
||||
FilePrintf(hFile,"\t\t\t<PercentCap>%d</PercentCap>\r\n", Item[cnt].percentcapmodifier[2] );
|
||||
FilePrintf(hFile,"\t\t\t<PercentHandling>%d</PercentHandling>\r\n", Item[cnt].percenthandlingmodifier[2] );
|
||||
FilePrintf(hFile,"\t\t\t<PercentTargetTrackingSpeed>%d</PercentTargetTrackingSpeed>\r\n", Item[cnt].targettrackingmodifier[2] );
|
||||
FilePrintf(hFile,"\t\t\t<PercentDropCompensation>%d</PercentDropCompensation>\r\n", Item[cnt].percentdropcompensationmodifier[2] );
|
||||
FilePrintf(hFile,"\t\t\t<PercentMaxCounterForce>%d</PercentMaxCounterForce>\r\n", Item[cnt].maxcounterforcemodifier[2] );
|
||||
FilePrintf(hFile,"\t\t\t<PercentCounterForceAccuracy>%d</PercentCounterForceAccuracy>\r\n", Item[cnt].counterforceaccuracymodifier[2] );
|
||||
FilePrintf(hFile,"\t\t\t<PercentCounterForceFrequency>%d</PercentCounterForceFrequency>\r\n", Item[cnt].counterforcefrequencymodifier[2] );
|
||||
FilePrintf(hFile,"\t\t\t<AimLevels>%d</AimLevels>\r\n", Item[cnt].aimlevelsmodifier[2] );
|
||||
FilePrintf(hFile,"\t\t</PRONE_MODIFIERS>\r\n");
|
||||
|
||||
FilePrintf(hFile,"\t</ITEM>\r\n");
|
||||
}
|
||||
FilePrintf(hFile,"</ITEMLIST>\r\n");
|
||||
@@ -1580,3 +1851,76 @@ BOOLEAN WriteItemStats()
|
||||
|
||||
return( TRUE );
|
||||
}
|
||||
|
||||
// HEADROCK HAM 4: This function runs just before the items are written into the item array. It causes all stance bonuses
|
||||
// to inherit their properties from the bonus "above" them, as long as they don't already have their own value defined.
|
||||
void InheritStanceModifiers( itemParseData *pData )
|
||||
{
|
||||
|
||||
// Create a two-dimensional temp array to hold all the data about stance modifiers.
|
||||
INT16 TempArray[12][3];
|
||||
INT8 count = 0;
|
||||
INT8 arrcount = 0;
|
||||
|
||||
// Copy stance modifier data into this array
|
||||
for (count = 0; count < 3; count++)
|
||||
{
|
||||
TempArray[0][count] = pData->curItem.flatbasemodifier[count];
|
||||
TempArray[1][count] = pData->curItem.percentbasemodifier[count];
|
||||
TempArray[2][count] = pData->curItem.flataimmodifier[count];
|
||||
TempArray[3][count] = pData->curItem.percentaimmodifier[count];
|
||||
TempArray[4][count] = pData->curItem.percentcapmodifier[count];
|
||||
TempArray[5][count] = pData->curItem.percenthandlingmodifier[count];
|
||||
TempArray[6][count] = pData->curItem.targettrackingmodifier[count];
|
||||
TempArray[7][count] = pData->curItem.percentdropcompensationmodifier[count];
|
||||
TempArray[8][count] = pData->curItem.maxcounterforcemodifier[count];
|
||||
TempArray[9][count] = pData->curItem.counterforceaccuracymodifier[count];
|
||||
TempArray[10][count] = pData->curItem.counterforcefrequencymodifier[count];
|
||||
TempArray[11][count] = pData->curItem.aimlevelsmodifier[count];
|
||||
}
|
||||
|
||||
for (arrcount = 0; arrcount < 12; arrcount++)
|
||||
{
|
||||
if (TempArray[arrcount][2] == -10000)
|
||||
{
|
||||
if (TempArray[arrcount][1] == -10000)
|
||||
{
|
||||
TempArray[arrcount][1] = TempArray[arrcount][0];
|
||||
TempArray[arrcount][2] = TempArray[arrcount][0];
|
||||
}
|
||||
else
|
||||
{
|
||||
TempArray[arrcount][2] = TempArray[arrcount][1];
|
||||
}
|
||||
}
|
||||
else if (TempArray[arrcount][1] == -10000)
|
||||
{
|
||||
TempArray[arrcount][1] = TempArray[arrcount][0];
|
||||
}
|
||||
for (INT8 X = 0; X < 3; X++)
|
||||
{
|
||||
if (TempArray[arrcount][X] == -10000)
|
||||
{
|
||||
TempArray[arrcount][X] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Copy stance modifier data back out of the temp array
|
||||
for (count = 0; count < 3; count++)
|
||||
{
|
||||
pData->curItem.flatbasemodifier[count] = TempArray[0][count];
|
||||
pData->curItem.percentbasemodifier[count] = TempArray[1][count];
|
||||
pData->curItem.flataimmodifier[count] = TempArray[2][count];
|
||||
pData->curItem.percentaimmodifier[count] = TempArray[3][count];
|
||||
pData->curItem.percentcapmodifier[count] = TempArray[4][count];
|
||||
pData->curItem.percenthandlingmodifier[count] = TempArray[5][count];
|
||||
pData->curItem.targettrackingmodifier[count] = TempArray[6][count];
|
||||
pData->curItem.percentdropcompensationmodifier[count] = TempArray[7][count];
|
||||
pData->curItem.maxcounterforcemodifier[count] = TempArray[8][count];
|
||||
pData->curItem.counterforceaccuracymodifier[count] = TempArray[9][count];
|
||||
pData->curItem.counterforcefrequencymodifier[count] = TempArray[10][count];
|
||||
pData->curItem.aimlevelsmodifier[count] = TempArray[11][count];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+135
-9
@@ -2,15 +2,61 @@
|
||||
#define _XML_PARSER_H_
|
||||
|
||||
#include "expat.h"
|
||||
#include "XML.h"
|
||||
//#include "XML.h"
|
||||
#include <string>
|
||||
|
||||
template<typename OperandType>
|
||||
class LazyCondition
|
||||
{
|
||||
public:
|
||||
typedef bool (*cond_fct)(OperandType op1, OperandType op2);
|
||||
LazyCondition(OperandType op1, OperandType op2, cond_fct fct)
|
||||
: _op1(op1), _op2(op2), _fct(fct)
|
||||
{};
|
||||
bool check()
|
||||
{
|
||||
return _fct(_op1,_op2);
|
||||
}
|
||||
private:
|
||||
OperandType _op1;
|
||||
OperandType _op2;
|
||||
cond_fct _fct;
|
||||
};
|
||||
|
||||
inline bool lazyStrEqual(const char* str1, const char* str2)
|
||||
{
|
||||
return strcmp(str1,str2) == 0;
|
||||
}
|
||||
|
||||
class LazyStrEqual : public LazyCondition<const char*>
|
||||
{
|
||||
public:
|
||||
LazyStrEqual(const char* str1, const char* str2)
|
||||
: LazyCondition<const char*>(str1, str2, lazyStrEqual)
|
||||
{};
|
||||
};
|
||||
|
||||
class LazyTrue : public LazyCondition<bool>
|
||||
{
|
||||
static bool True(bool a, bool b){return true;};
|
||||
public:
|
||||
LazyTrue() : LazyCondition<bool>(true,true,LazyTrue::True) {};
|
||||
};
|
||||
|
||||
|
||||
class IXMLParser
|
||||
{
|
||||
public:
|
||||
const XML_Char* ElementName;
|
||||
public:
|
||||
IXMLParser(const XML_Char *element_name, XML_Parser &parser, IXMLParser* caller=NULL)
|
||||
: _parser(parser), _caller(caller), ElementName(element_name) {};
|
||||
IXMLParser(const XML_Char *element_name, XML_Parser* parser, IXMLParser* caller=NULL)
|
||||
: _caller(caller), ElementName(element_name)
|
||||
{
|
||||
if(parser)
|
||||
{
|
||||
this->setParser(parser);
|
||||
}
|
||||
};
|
||||
~IXMLParser() {};
|
||||
|
||||
/**
|
||||
@@ -35,9 +81,9 @@ public:
|
||||
}
|
||||
void grabParser()
|
||||
{
|
||||
XML_SetUserData(_parser,this);
|
||||
XML_SetElementHandler(_parser, IXMLParser::onStartCallback, IXMLParser::onEndCallback);
|
||||
XML_SetCharacterDataHandler(_parser, IXMLParser::onTextCallback);
|
||||
XML_SetUserData(*_parser,this);
|
||||
XML_SetElementHandler(*_parser, IXMLParser::onStartCallback, IXMLParser::onEndCallback);
|
||||
XML_SetCharacterDataHandler(*_parser, IXMLParser::onTextCallback);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -48,8 +94,88 @@ public:
|
||||
virtual void onEndElement(const XML_Char* name)
|
||||
{};
|
||||
virtual void onTextElement(const XML_Char *str, int len)
|
||||
{};
|
||||
{
|
||||
};
|
||||
|
||||
class Attributes
|
||||
{
|
||||
public:
|
||||
Attributes(const XML_Char** atts) : _atts(atts) {};
|
||||
XML_Char const* get(const XML_Char* attr_name) const
|
||||
{
|
||||
const XML_Char** atts = _atts;
|
||||
while(*atts)
|
||||
{
|
||||
if(strcmp(*atts++,attr_name) == 0)
|
||||
{
|
||||
return *atts;
|
||||
}
|
||||
atts++;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
bool getLong(const XML_Char* attr_name, long& attr) const
|
||||
{
|
||||
XML_Char const* result = this->get(attr_name);
|
||||
if( strcmp(result,"") != 0)
|
||||
{
|
||||
attr = (int)atol(result);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
bool getDouble(const XML_Char* attr_name, double &attr) const
|
||||
{
|
||||
XML_Char const* result = this->get(attr_name);
|
||||
if( strcmp(result,"") != 0)
|
||||
{
|
||||
attr = atof(result);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
private:
|
||||
const XML_Char** _atts;
|
||||
};
|
||||
|
||||
template<typename StateType>
|
||||
class ParserState
|
||||
{
|
||||
public:
|
||||
ParserState(const StateType start_state)
|
||||
: _my_state(start_state)
|
||||
{};
|
||||
|
||||
StateType const& state()
|
||||
{
|
||||
return _my_state;
|
||||
}
|
||||
|
||||
template<typename ConditionOperandType>
|
||||
bool stateTransition(const StateType current_state, LazyCondition<ConditionOperandType> condition, const StateType next_state)
|
||||
{
|
||||
if(_my_state == current_state && condition.check() )
|
||||
{
|
||||
_my_state = next_state;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
private:
|
||||
StateType _my_state;
|
||||
};
|
||||
|
||||
XML_Parser& getParser()
|
||||
{
|
||||
return *_parser;
|
||||
}
|
||||
protected:
|
||||
void setParser(XML_Parser* parser)
|
||||
{
|
||||
_parser = parser;
|
||||
// grabParser(); ???
|
||||
}
|
||||
|
||||
XML_Char const* getAttribute(const XML_Char* attr_name, const XML_Char** atts)
|
||||
{
|
||||
while(*atts)
|
||||
@@ -85,12 +211,12 @@ protected:
|
||||
|
||||
int getCurrentLineNumber()
|
||||
{
|
||||
return XML_GetCurrentLineNumber(this->_parser);
|
||||
return XML_GetCurrentLineNumber(*this->_parser);
|
||||
}
|
||||
protected:
|
||||
std::string sCharData;
|
||||
|
||||
XML_Parser& _parser;
|
||||
XML_Parser* _parser;
|
||||
IXMLParser* _caller;
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,174 @@
|
||||
#ifdef PRECOMPILEDHEADERS
|
||||
#include "Tactical All.h"
|
||||
#else
|
||||
#include "sgp.h"
|
||||
#include "Debug Control.h"
|
||||
#include "expat.h"
|
||||
#include "XML.h"
|
||||
#include "Interface.h"
|
||||
#include "Text.h"
|
||||
#endif
|
||||
|
||||
struct
|
||||
{
|
||||
PARSE_STAGE curElement;
|
||||
|
||||
CHAR8 szCharData[MAX_CHAR_DATA_LENGTH+1];
|
||||
SENDER_NAMES_VALUES curSenderNameList;
|
||||
SENDER_NAMES_VALUES * curArray;
|
||||
|
||||
UINT32 maxArraySize;
|
||||
UINT32 curIndex;
|
||||
UINT32 currentDepth;
|
||||
UINT32 maxReadDepth;
|
||||
}
|
||||
typedef senderNameListParseData;
|
||||
|
||||
BOOLEAN SenderNameList_TextOnly;
|
||||
|
||||
static void XMLCALL
|
||||
senderNameListStartElementHandle(void *userData, const XML_Char *name, const XML_Char **atts)
|
||||
{
|
||||
senderNameListParseData * pData = (senderNameListParseData *)userData;
|
||||
|
||||
if(pData->currentDepth <= pData->maxReadDepth) //are we reading this element?
|
||||
{
|
||||
if(strcmp(name, "SENDER_LIST") == 0 && pData->curElement == ELEMENT_NONE)
|
||||
{
|
||||
pData->curElement = ELEMENT_LIST;
|
||||
pData->maxReadDepth++; //we are not skipping this element
|
||||
}
|
||||
else if(strcmp(name, "NAME") == 0 && pData->curElement == ELEMENT_LIST)
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
pData->maxReadDepth++; //we are not skipping this element
|
||||
}
|
||||
else if(pData->curElement == ELEMENT &&
|
||||
(strcmp(name, "uiIndex") == 0 ||
|
||||
strcmp(name, "Name") == 0 ))
|
||||
{
|
||||
pData->curElement = ELEMENT_PROPERTY;
|
||||
|
||||
pData->maxReadDepth++; //we are not skipping this element
|
||||
}
|
||||
|
||||
pData->szCharData[0] = '\0';
|
||||
}
|
||||
|
||||
pData->currentDepth++;
|
||||
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
senderNameListCharacterDataHandle(void *userData, const XML_Char *str, int len)
|
||||
{
|
||||
senderNameListParseData * pData = (senderNameListParseData *)userData;
|
||||
|
||||
if( (pData->currentDepth <= pData->maxReadDepth) &&
|
||||
(strlen(pData->szCharData) < MAX_CHAR_DATA_LENGTH)
|
||||
){
|
||||
strncat(pData->szCharData,str,__min((unsigned int)len,MAX_CHAR_DATA_LENGTH-strlen(pData->szCharData)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void XMLCALL
|
||||
senderNameListEndElementHandle(void *userData, const XML_Char *name)
|
||||
{
|
||||
senderNameListParseData * pData = (senderNameListParseData *)userData;
|
||||
|
||||
if(pData->currentDepth <= pData->maxReadDepth) //we're at the end of an element that we've been reading
|
||||
{
|
||||
if(strcmp(name, "SENDER_LIST") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT_NONE;
|
||||
}
|
||||
else if(strcmp(name, "NAME") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT_LIST;
|
||||
|
||||
wcscpy(pSenderNameList[pData->curSenderNameList.uiIndex], pData->curSenderNameList.Name);
|
||||
|
||||
}
|
||||
else if(strcmp(name, "uiIndex") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
pData->curSenderNameList.uiIndex = (UINT16) atol(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "Name") == 0 )
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
|
||||
MultiByteToWideChar( CP_UTF8, 0, pData->szCharData, -1, pData->curSenderNameList.Name, sizeof(pData->curSenderNameList.Name)/sizeof(pData->curSenderNameList.Name[0]) );
|
||||
pData->curSenderNameList.Name[sizeof(pData->curSenderNameList.Name)/sizeof(pData->curSenderNameList.Name[0]) - 1] = '\0';
|
||||
}
|
||||
pData->maxReadDepth--;
|
||||
}
|
||||
|
||||
pData->currentDepth--;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
BOOLEAN ReadInSenderNameList(STR fileName, BOOLEAN localizedVersion)
|
||||
{
|
||||
HWFILE hFile;
|
||||
UINT32 uiBytesRead;
|
||||
UINT32 uiFSize;
|
||||
CHAR8 * lpcBuffer;
|
||||
XML_Parser parser = XML_ParserCreate(NULL);
|
||||
|
||||
senderNameListParseData pData;
|
||||
|
||||
DebugMsg(TOPIC_JA2, DBG_LEVEL_3, "Loading SenderNameList.xml" );
|
||||
|
||||
SenderNameList_TextOnly = localizedVersion;
|
||||
|
||||
// Open file
|
||||
hFile = FileOpen( fileName, FILE_ACCESS_READ, FALSE );
|
||||
if ( !hFile )
|
||||
return( localizedVersion );
|
||||
|
||||
uiFSize = FileGetSize(hFile);
|
||||
lpcBuffer = (CHAR8 *) MemAlloc(uiFSize+1);
|
||||
|
||||
//Read in block
|
||||
if ( !FileRead( hFile, lpcBuffer, uiFSize, &uiBytesRead ) )
|
||||
{
|
||||
MemFree(lpcBuffer);
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
lpcBuffer[uiFSize] = 0; //add a null terminator
|
||||
|
||||
FileClose( hFile );
|
||||
|
||||
|
||||
XML_SetElementHandler(parser, senderNameListStartElementHandle, senderNameListEndElementHandle);
|
||||
XML_SetCharacterDataHandler(parser, senderNameListCharacterDataHandle);
|
||||
|
||||
|
||||
memset(&pData,0,sizeof(pData));
|
||||
XML_SetUserData(parser, &pData);
|
||||
|
||||
|
||||
if(!XML_Parse(parser, lpcBuffer, uiFSize, TRUE))
|
||||
{
|
||||
CHAR8 errorBuf[511];
|
||||
|
||||
sprintf(errorBuf, "XML Parser Error in SenderNameList.xml: %s at line %d", XML_ErrorString(XML_GetErrorCode(parser)), XML_GetCurrentLineNumber(parser));
|
||||
LiveMessage(errorBuf);
|
||||
|
||||
MemFree(lpcBuffer);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
MemFree(lpcBuffer);
|
||||
|
||||
|
||||
XML_ParserFree(parser);
|
||||
|
||||
|
||||
return( TRUE );
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
#ifndef _XML_SENDERNAMELIST_H
|
||||
#define _XML_SENDERNAMELIST_H
|
||||
|
||||
#include "Types.h"
|
||||
|
||||
#define MAX_SENDER_NAMES_CHARS 128
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 uiIndex;
|
||||
CHAR16 Name[MAX_SENDER_NAMES_CHARS];
|
||||
|
||||
} SENDER_NAMES_VALUES;
|
||||
|
||||
extern SENDER_NAMES_VALUES zSenderNameList[500];
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,258 @@
|
||||
#ifndef XML_AUTO_PARSE_H
|
||||
#define XML_AUTO_PARSE_H
|
||||
|
||||
#include <vfs/Core/vfs_debug.h>
|
||||
#include <vfs/Core/Interface/vfs_file_interface.h>
|
||||
#include "XML_Parser.h"
|
||||
#include <stack>
|
||||
#include <algorithm>
|
||||
#include <map>
|
||||
|
||||
#if !defined(TRUE)
|
||||
# define TRUE 1
|
||||
#endif
|
||||
|
||||
namespace xml_auto
|
||||
{
|
||||
class ITransition
|
||||
{
|
||||
public:
|
||||
void Register() { _ref_count++; }
|
||||
void UnRegister() { if(_ref_count > 0) _ref_count--; }
|
||||
virtual void Delete()
|
||||
{
|
||||
UnRegister();
|
||||
if(_ref_count == 0) delete this;
|
||||
}
|
||||
virtual void enter(const char* tag_name, IXMLParser::Attributes const& atts) {};
|
||||
virtual void leave(const char* tag_name, std::string const& data) {};
|
||||
virtual bool handleText() {return false;};
|
||||
protected:
|
||||
ITransition() : _ref_count(0) {};
|
||||
~ITransition() {};
|
||||
private:
|
||||
int _ref_count;
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
class TTransition : public ITransition
|
||||
{
|
||||
public:
|
||||
typedef typename T::States state_t;
|
||||
const state_t StartPoint, EndPoint;
|
||||
T* P_DATA; // parser data
|
||||
protected:
|
||||
TTransition(const state_t start, const state_t end, T* p_data = NULL)
|
||||
: StartPoint(start), EndPoint(end), P_DATA(p_data)
|
||||
{
|
||||
Register();
|
||||
};
|
||||
virtual ~TTransition()
|
||||
{};
|
||||
};
|
||||
|
||||
template<typename T, typename States>
|
||||
class TBaseStructure
|
||||
{
|
||||
public:
|
||||
typedef TTransition<T> transition_t;
|
||||
typedef States state_t;
|
||||
private:
|
||||
// map : transition trigger (string) -> pointing at next state
|
||||
typedef std::map<std::string, transition_t*> tr_state_t;
|
||||
|
||||
// map : state -> outgoing transitions (of that state)
|
||||
typedef std::map<state_t,tr_state_t> tr_map_t;
|
||||
public:
|
||||
transition_t* getTransition(state_t current_state, std::string const& str)
|
||||
{
|
||||
typename tr_map_t::iterator it = _state_tr_map.find(current_state);
|
||||
if(it != _state_tr_map.end())
|
||||
{
|
||||
typename tr_state_t::iterator trit = it->second.find(str);
|
||||
if( trit != it->second.end() )
|
||||
{
|
||||
return trit->second;
|
||||
}
|
||||
else if( (trit=it->second.find("")) != it->second.end() )
|
||||
{
|
||||
return trit->second;
|
||||
}
|
||||
else
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
~TBaseStructure()
|
||||
{
|
||||
typename tr_map_t::iterator it = _state_tr_map.begin();
|
||||
for(; it != _state_tr_map.end(); ++it)
|
||||
{
|
||||
typename tr_state_t::iterator trit = it->second.begin();
|
||||
for(;trit != it->second.end(); trit++)
|
||||
{
|
||||
trit->second->Delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
protected:
|
||||
void newTransition(std::string const& tag, transition_t* tr)
|
||||
{
|
||||
_state_tr_map[tr->StartPoint][tag] = tr;
|
||||
_state_tr_map[tr->EndPoint][tag] = tr;
|
||||
// we use one transition twice -> increment ref counter
|
||||
tr->Register();
|
||||
}
|
||||
|
||||
tr_map_t _state_tr_map;
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
class TGenericXMLParser : public IXMLParser
|
||||
{
|
||||
public:
|
||||
typedef TBaseStructure<T, typename T::States> struct_t;
|
||||
TGenericXMLParser(struct_t* base, IXMLParser* caller = NULL)
|
||||
: IXMLParser("",NULL,caller), m_base(base), m_state(T::STATE_NONE)
|
||||
{
|
||||
parser = XML_ParserCreate(NULL);
|
||||
setParser(&parser);
|
||||
};
|
||||
~TGenericXMLParser()
|
||||
{
|
||||
if(parser)
|
||||
{
|
||||
XML_ParserFree(parser);
|
||||
}
|
||||
}
|
||||
virtual void onStartElement(const XML_Char* name, const XML_Char** atts)
|
||||
{
|
||||
typename struct_t::transition_t* tr = m_base->getTransition(m_state.state(), name);
|
||||
if(tr && m_state.stateTransition(tr->StartPoint, LazyTrue(), tr->EndPoint))
|
||||
{
|
||||
m_tr_stack.push(tr);
|
||||
tr->enter(name, IXMLParser::Attributes(atts));
|
||||
}
|
||||
sCharData = "";
|
||||
}
|
||||
virtual void onEndElement(const XML_Char* name)
|
||||
{
|
||||
typename struct_t::transition_t* tr = m_base->getTransition(m_state.state(), name);
|
||||
if(tr && m_state.stateTransition(tr->EndPoint, LazyTrue(), tr->StartPoint))
|
||||
{
|
||||
SGP_THROW_IFFALSE(tr == m_tr_stack.top(),
|
||||
_BS(L"Transition associated to tag [") << name << L"] doesn't correspond to saved transition" << _BS::wget);
|
||||
tr->leave(name, sCharData);
|
||||
m_tr_stack.pop();
|
||||
}
|
||||
};
|
||||
virtual void onTextElement(const XML_Char *str, int len)
|
||||
{
|
||||
if(!m_tr_stack.empty())
|
||||
{
|
||||
typename struct_t::transition_t* tr = m_tr_stack.top();
|
||||
if(tr && tr->handleText())
|
||||
{
|
||||
sCharData.append(str,len);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
void parseBuffer(vfs::Byte* buffer, vfs::size_t length)
|
||||
{
|
||||
this->grabParser();
|
||||
XML_Parser& _parser = this->getParser();
|
||||
if(!XML_Parse(_parser, buffer, length, TRUE))
|
||||
{
|
||||
std::wstringstream wss;
|
||||
wss << L"XML Parser Error : "
|
||||
<< vfs::String::as_utf16(XML_ErrorString(XML_GetErrorCode(_parser)))
|
||||
<< L" in line "
|
||||
<< XML_GetCurrentLineNumber(_parser);
|
||||
SGP_THROW(wss.str().c_str());
|
||||
}
|
||||
}
|
||||
|
||||
void parseFile(vfs::tReadableFile* pFile)
|
||||
{
|
||||
if(!pFile)
|
||||
{
|
||||
return;
|
||||
}
|
||||
vfs::COpenReadFile rfile(pFile);
|
||||
|
||||
vfs::size_t size = rfile->getSize();
|
||||
std::vector<vfs::Byte> buffer(size+1);
|
||||
|
||||
SGP_TRYCATCH_RETHROW( rfile->read(&buffer[0],size), L"" );
|
||||
buffer[size] = 0;
|
||||
|
||||
SGP_TRYCATCH_RETHROW( this->parseBuffer(&buffer[0], size),
|
||||
_BS(L"error in file : ") << pFile->getPath() << _BS::wget);
|
||||
}
|
||||
|
||||
void parseFile(vfs::Path const& sFile)
|
||||
{
|
||||
vfs::tReadableFile* file = getVFS()->getReadFile(sFile);
|
||||
SGP_THROW_IFFALSE(file, _BS(L"Could not find file : ") << sFile << _BS::wget);
|
||||
|
||||
SGP_TRYCATCH_RETHROW( this->parseFile(file),
|
||||
_BS(L"error in file : ") << sFile << _BS::wget);
|
||||
}
|
||||
|
||||
private:
|
||||
XML_Parser parser;
|
||||
|
||||
typedef IXMLParser::ParserState<typename T::States> ParserState_t;
|
||||
struct_t* m_base;
|
||||
|
||||
typedef std::stack<typename struct_t::transition_t*> tr_stack_t;
|
||||
tr_stack_t m_tr_stack;
|
||||
ParserState_t m_state;
|
||||
};
|
||||
}
|
||||
|
||||
#define PARSER_CLASS_MACRO(class_name, states) \
|
||||
class class_name : public states, public xml_auto::TBaseStructure<class_name, states::States>
|
||||
|
||||
#define PURE_TRANSITION(class_name, main_type) \
|
||||
class class_name : public xml_auto::TTransition<main_type>{ \
|
||||
public: \
|
||||
typedef main_type::States state_t; \
|
||||
typedef xml_auto::TTransition<main_type> super_t; \
|
||||
class_name(const state_t start, const state_t end) : super_t(start, end) \
|
||||
{} \
|
||||
virtual ~class_name() \
|
||||
{} \
|
||||
};
|
||||
|
||||
#define DEFINE_TRANSITION(class_name, base_type, handle_text) \
|
||||
class class_name : public xml_auto::TTransition<base_type>{ \
|
||||
public: \
|
||||
typedef xml_auto::TTransition<base_type> super_t; \
|
||||
typedef base_type::States state_t; \
|
||||
class_name(const state_t start, const state_t end, base_type* base_obj) : super_t(start,end,base_obj) {}; \
|
||||
virtual ~class_name() {}; \
|
||||
virtual bool handleText() {return handle_text;}; \
|
||||
|
||||
#define DEFINE_TRANSITION_WDATA(class_name, base_type, handle_text, tr_data_type) \
|
||||
class class_name : public xml_auto::TTransition<base_type>{ \
|
||||
tr_data_type T_DATA; \
|
||||
public: \
|
||||
typedef xml_auto::TTransition<base_type> super_t; \
|
||||
typedef base_type::States state_t; \
|
||||
class_name(const state_t start, const state_t end, base_type* base_obj) : super_t(start,end,base_obj) {}; \
|
||||
virtual ~class_name() {}; \
|
||||
virtual bool handleText() {return handle_text;}; \
|
||||
|
||||
#define FINISH_TRANSITION };
|
||||
|
||||
#define TRANSITION_ENTER virtual void enter(const char* tag_name, IXMLParser::Attributes const& atts)
|
||||
#define TRANSITION_LEAVE virtual void leave(const char* tag_name, std::string const& char_data)
|
||||
|
||||
#define TR_HANDLE(from_state, trigger, to_state, handler_class_type) newTransition((trigger), new handler_class_type((from_state),(to_state),this));
|
||||
#define TR_PASS(from_state, trigger, to_state) newTransition((trigger), new NOOP((from_state),(to_state)));
|
||||
|
||||
#endif // XML_AUTO_PARSE_H
|
||||
+986
-130
File diff suppressed because it is too large
Load Diff
+967
-105
File diff suppressed because it is too large
Load Diff
+968
-122
File diff suppressed because it is too large
Load Diff
+962
-107
File diff suppressed because it is too large
Load Diff
+1560
-606
File diff suppressed because it is too large
Load Diff
+972
-109
File diff suppressed because it is too large
Load Diff
+391
-1
@@ -1,4 +1,5 @@
|
||||
#ifdef PRECOMPILEDHEADERS
|
||||
//#pragma setlocale("CHINESE")
|
||||
#ifdef PRECOMPILEDHEADERS
|
||||
#include "Utils All.h"
|
||||
#include "_Ja25Englishtext.h"
|
||||
#else
|
||||
@@ -77,6 +78,8 @@ STR16 zNewTacticalMessages[]=
|
||||
L"如果你要使用编辑器的话,请选择一个战役,不要用默认战役。",
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// SANDRO - New STOMP laptop strings
|
||||
//these strings match up with the defines in IMP Skill trait.cpp
|
||||
STR16 gzIMPSkillTraitsText[]=
|
||||
{
|
||||
@@ -97,7 +100,394 @@ STR16 gzIMPSkillTraitsText[]=
|
||||
|
||||
L"无", //"None",
|
||||
L"I.M.P 专属技能", //"I.M.P. Specialties",
|
||||
L"(Expert)",
|
||||
};
|
||||
|
||||
//added another set of skill texts for new major traits
|
||||
STR16 gzIMPSkillTraitsTextNewMajor[]=
|
||||
{
|
||||
L"Auto Weapons",
|
||||
L"Heavy Weapons",
|
||||
L"Marksman",
|
||||
L"Hunter",
|
||||
L"Gunslinger",
|
||||
L"Hand to Hand",
|
||||
L"Deputy",
|
||||
L"Technician",
|
||||
L"Paramedic",
|
||||
|
||||
L"None",
|
||||
L"I.M.P. Major Traits",
|
||||
// second names
|
||||
L"Machinegunner",
|
||||
L"Bombardier",
|
||||
L"Sniper",
|
||||
L"Ranger",
|
||||
L"Gunfighter",
|
||||
L"Martial Arts",
|
||||
L"Squadleader",
|
||||
L"Engineer",
|
||||
L"Doctor",
|
||||
};
|
||||
|
||||
//added another set of skill texts for new minor traits
|
||||
STR16 gzIMPSkillTraitsTextNewMinor[]=
|
||||
{
|
||||
L"Ambidextrous",
|
||||
L"Melee",
|
||||
L"Throwing",
|
||||
L"Night Ops",
|
||||
L"Stealthy",
|
||||
L"Athletics",
|
||||
L"Bodybuilding",
|
||||
L"Demolitions",
|
||||
L"Teaching",
|
||||
L"Scouting",
|
||||
|
||||
L"None",
|
||||
L"I.M.P. Minor Traits",
|
||||
};
|
||||
|
||||
//these texts are for help popup windows, describing trait properties
|
||||
STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]=
|
||||
{
|
||||
L"+%d%s Chance to Hit with Assault Rifles\n",
|
||||
L"+%d%s Chance to Hit with SMGs\n",
|
||||
L"+%d%s Chance to Hit with LMGs\n",
|
||||
L"-%d%s APs needed to fire with LMGs\n",
|
||||
L"-%d%s APs needed to ready light machine guns\n",
|
||||
L"Auto fire/burst chance to hit penalty is reduced by %d%s\n",
|
||||
L"Reduced chance for shooting unwanted bullets on autofire\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]=
|
||||
{
|
||||
L"-%d%s APs needed to fire grenade launchers\n",
|
||||
L"-%d%s APs needed to fire rocket launchers\n",
|
||||
L"+%d%s chance to hit with grenade launchers\n",
|
||||
L"+%d%s chance to hit with rocket launchers\n",
|
||||
L"-%d%s APs needed to fire mortar\n",
|
||||
L"Reduce penalty for mortar CtH by %d%s\n",
|
||||
L"+%d%s damage to tanks with heavy weapons, grenades and explosives\n",
|
||||
L"+%d%s damage to other targets with heavy weapons\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsSniper[]=
|
||||
{
|
||||
L"+%d%s Chance to Hit with Rifles\n",
|
||||
L"+%d%s Chance to Hit with Sniper Rifles\n",
|
||||
L"-%d%s effective range to target with all weapons\n",
|
||||
L"+%d%s aiming bonus per aim click (except for handguns)\n",
|
||||
L"+%d%s damage on shot",
|
||||
L" plus",
|
||||
L" per every aim click",
|
||||
L" after first",
|
||||
L" after second",
|
||||
L" after third",
|
||||
L" after fourth",
|
||||
L" after fifth",
|
||||
L" after sixth",
|
||||
L" after seventh",
|
||||
L"-%d%s APs needed to chamber a round with bolt-action rifles \n",
|
||||
L"Adds one more aim click for rifle-type guns\n",
|
||||
L"Adds %d more aim clicks for rifle-type guns\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsRanger[]=
|
||||
{
|
||||
L"+%d%s Chance to Hit with Rifles\n",
|
||||
L"+%d%s Chance to Hit with Shotguns\n",
|
||||
L"-%d%s APs needed to pump Shotguns\n",
|
||||
L"+%d%s group travelling speed between sectors if traveling by foot\n",
|
||||
L"+%d%s group travelling speed between sectors if traveling in vehicle (except helicopter)\n",
|
||||
L"-%d%s less energy spent for travelling between sectors\n",
|
||||
L"-%d%s weather penalties\n",
|
||||
L"+%d%s camouflage effectiveness\n",
|
||||
L"-%d%s worn out speed of camouflage by water or time\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsGunslinger[]=
|
||||
{
|
||||
L"-%d%s APs needed to fire with pistols and revolvers\n",
|
||||
L"+%d%s effective range with pistols and revolvers\n",
|
||||
L"+%d%s chance to hit with pistols and revolvers\n",
|
||||
L"+%d%s chance to hit with machine pistols",
|
||||
L" (on single shots only)",
|
||||
L"+%d%s aiming bonus per click with pistols, machine pistols and revolvers\n",
|
||||
L"-%d%s APs needed to raise pistols and revolvers\n",
|
||||
L"-%d%s APs needed to reload pistols, machine pistols and revolvers\n",
|
||||
L"Adds %d more aim click for pistols, machine pistols and revolvers\n",
|
||||
L"Adds %d more aim clicks for pistols, machine pistols and revolvers\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsMartialArts[]=
|
||||
{
|
||||
L"-%d%s AP cost of hand to hand attacks(bare hands or with brass knuckles)\n",
|
||||
L"+%d%s chance to hit with hand to hand attacks with bare hands\n",
|
||||
L"+%d%s chance to hit with hand to hand attacks with brass knuckles\n",
|
||||
L"+%d%s damage of hand to hand attacks(bare hands or with brass knuckles)\n",
|
||||
L"+%d%s breath damage of hand to hand attacks(bare hands or with brass knuckles)\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes slightly longer to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes longer to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes much longer to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes very long to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes extremely long to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes long hours to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks probably never stand up\n",
|
||||
L"Focused (aimed) punch deals +%d%s more damage\n",
|
||||
L"Your special spinning kick deals +%d%s more damage\n",
|
||||
L"+%d%s change to dodge hand to hand attacks\n",
|
||||
L"+%d%s on top chance to dodge HtH attacks with bare hands",
|
||||
L" or brass knuckles",
|
||||
L" (+%d%s with brass knuckles)",
|
||||
L"+%d%s on top chance to dodge HtH attacks with brass knuckles\n",
|
||||
L"+%d%s chance to dodge attacks by any melee weapon\n",
|
||||
L"-%d%s APs needed to steal weapon from enemy hands\n",
|
||||
L"-%d%s APs needed to change state (stand, crouch, lie down), turn around, climb on/off roof and jump obstacles\n",
|
||||
L"-%d%s APs needed to change state (stand, crouch, lie down)\n",
|
||||
L"-%d%s APs needed to turn around\n",
|
||||
L"-%d%s APs needed to climb on/off roof and jump obstacles\n",
|
||||
L"+%d%s chance to kick doors\n",
|
||||
L"You gain special animations for hand to hand combat\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsSquadleader[]=
|
||||
{
|
||||
L"+%d%s APs per round of other mercs in vicinity\n",
|
||||
L"+%d effective exp level of other mercs in vicinity, which have lesser level than the %s\n",
|
||||
L"+%d effective exp level to count as a standby when counting friends' bonus for suppression\n",
|
||||
L"+%d%s total suppression tolerance of other mercs in vicinity and %s himself\n",
|
||||
L"+%d morale gain of other mercs in vicinity\n",
|
||||
L"-%d morale loss of other mercs in vicinity\n",
|
||||
L"The vicinity for bonuses is %d tiles",
|
||||
L" (%d tiles with extended ears)",
|
||||
L"(Max simultaneous bonuses for one soldier is %d)\n",
|
||||
L"+%d%s fear resistence of %s\n",
|
||||
L"Drawback: %dx morale loss for %s's death for all other mercs\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsTechnician[]=
|
||||
{
|
||||
L"+%d%s to repairing speed\n",
|
||||
L"+%d%s to lockpicking (normal/electronic locks)\n",
|
||||
L"+%d%s to disarming electronic traps\n",
|
||||
L"+%d%s to attaching special items and combining things\n",
|
||||
L"+%d%s to unjamming a gun in combat\n",
|
||||
L"Reduce penalty to repair electronic items by %d%s\n",
|
||||
L"Increased chance to detect traps and mines (+%d detect level)\n",
|
||||
L"+%d%s CtH of robot controlled by the %s\n",
|
||||
L"%s trait grants you the ability to repair the robot\n",
|
||||
L"Reduced penalty to repair speed of the robot by %d%s\n",
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsDoctor[]=
|
||||
{
|
||||
L"Has ability to make surgical intervention by using medical bag on wounded soldier\n",
|
||||
L"Surgery instantly returns %d%s of lost health back.",
|
||||
L" (This drains the medical bag a lot.)",
|
||||
L"Can heal lost stats (from critical hits) by the",
|
||||
L" surgery or",
|
||||
L" doctor assignment.\n",
|
||||
L"+%d%s effectiveness on doctor-patient assignment\n",
|
||||
L"+%d%s bandaging speed\n",
|
||||
L"+%d%s natural regeneration speed of all soldiers in the same sector",
|
||||
L" (max %d these bonuses per sector)",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"No bonuses",
|
||||
};
|
||||
|
||||
STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]=
|
||||
{
|
||||
L"Reduce penalty to shoot dual weapons by %d%s\n",
|
||||
L"+%d%s speed of reloading guns with magazines\n",
|
||||
L"+%d%s speed of reloading guns with loose rounds\n",
|
||||
L"-%d%s APs needed to pickup items\n",
|
||||
L"-%d%s APs needed to work backpack\n",
|
||||
L"-%d%s APs needed to handle doors\n",
|
||||
L"-%d%s APs needed to plant/remove bombs and mines\n",
|
||||
L"-%d%s APs needed to attach items\n",
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsMelee[]=
|
||||
{
|
||||
L"-%d%s APs needed to attack by blades\n",
|
||||
L"+%d%s chance to hit with blades\n",
|
||||
L"+%d%s chance to hit with blunt melee weapons\n",
|
||||
L"+%d%s damage of blades\n",
|
||||
L"+%d%s damage of blunt melee weapons\n",
|
||||
L"Aimed attack by any melee weapon deals +%d%s damage\n",
|
||||
L"+%d%s chance to dodge attack by melee blades\n",
|
||||
L"+%d%s on top chance to dodge melee blades if having a blade in hands\n",
|
||||
L"+%d%s chance to dodge attack by blunt melee weapons\n",
|
||||
L"+%d%s on top chance to dodge blunt melee weapons if having a blade in hands\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsThrowing[]=
|
||||
{
|
||||
L"-%d%s basic APs needed to throw blades\n",
|
||||
L"+%d%s max range when throwing blades\n",
|
||||
L"+%d%s chance to hit when throwing blades\n",
|
||||
L"+%d%s chance to hit when throwing blades per aim click\n",
|
||||
L"+%d%s damage of throwing blades\n",
|
||||
L"+%d%s damage of throwing blades per aim click\n",
|
||||
L"+%d%s chance to inflict critical hit by throwing blade if not seen or heard\n",
|
||||
L"+%d critical hit by throwing blade multiplier\n",
|
||||
L"Adds %d more aim click for throwing blades\n",
|
||||
L"Adds %d more aim clicks for throwing blades\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsNightOps[]=
|
||||
{
|
||||
L"+%d to effective sight range in dark\n",
|
||||
L"+%d to general effective hearing range\n",
|
||||
L"+%d to effective hearing range in dark on top\n",
|
||||
L"+%d to interrupts modifier in dark\n",
|
||||
L"-%d need to sleep\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsStealthy[]=
|
||||
{
|
||||
L"-%d%s APs needed to move quietly\n",
|
||||
L"+%d%s chance to move quietly\n",
|
||||
L"+%d%s stealth (being 'invisible' if unnoticed)\n",
|
||||
L"Reduced cover penalty for movement by %d%s\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsAthletics[]=
|
||||
{
|
||||
L"-%d%s APs needed for moving (running, walking, swatting, crawling, swimming, etc.)\n",
|
||||
L"-%d%s energy spent for movement, roof-climbing, obstacle-jumping, swimming, etc.\n",
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]=
|
||||
{
|
||||
L"Has %d%s damage resistance\n",
|
||||
L"+%d%s effective strength for carrying weight capacity \n",
|
||||
L"Reduced energy lost when hit by HtH attack by %d%s\n",
|
||||
L"Increased damage needed to fall down if hit to legs by %d%s\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsDemolitions[]=
|
||||
{
|
||||
L"-%d%s APs needed to throw grenades\n",
|
||||
L"+%d%s max range when throwing grenades\n",
|
||||
L"+%d%s chance to hit when throwing grenades\n",
|
||||
L"+%d%s damage of set bombs and mines\n",
|
||||
L"+%d%s to attaching detonators check\n",
|
||||
L"+%d%s to planting/removing bombs check\n",
|
||||
L"Decreases chance enemy will detect your bombs and mines (+%d bomb level)\n",
|
||||
L"Increased chance shaped charge will open the doors (damage multiplied by %d)\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsTeaching[]=
|
||||
{
|
||||
L"+%d%s bonus to train militia\n",
|
||||
L"+%d%s bonus to effective leadership for determining militia training\n",
|
||||
L"+%d%s bonus to teaching other mercs\n",
|
||||
L"Skill value counts to be +%d higher for being able to teach this skill to other mercs\n",
|
||||
L"+%d%s bonus to train stats through self-practising assignment\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsScouting[]=
|
||||
{
|
||||
L"+%d to effective sight range with scopes on weapons\n",
|
||||
L"+%d to effective sight range with binoculars (and scopes separated from weapons)\n",
|
||||
L"-%d tunnel vision with binoculars (and scopes separated from weapons)\n",
|
||||
L"If in sector, adjacent sectors will show exact number of enemies\n",
|
||||
L"If in sector, adjacent sectors will show presence of enemies if any\n",
|
||||
L"Prevents the enemy to ambush your squad\n",
|
||||
L"Prevents the bloodcats to ambush your squad\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"No bonuses",
|
||||
};
|
||||
|
||||
STR16 gzIMPOldSkillTraitsHelpTexts[]=
|
||||
{
|
||||
L"+%d%s bonus to lockpicking\n", // 0
|
||||
L"+%d%s hand to hand chance to hit\n",
|
||||
L"+%d%s hand to hand damage\n",
|
||||
L"+%d%s chance to dodge hand to hand attacks\n",
|
||||
L"Eliminates the penalty to repair and handle\nelectronic things (locks, traps, rem. detonators, robot, etc.)\n",
|
||||
L"+%d to effective sight range in dark\n",
|
||||
L"+%d to general effective hearing range\n",
|
||||
L"+%d to effective hearing range in dark on top\n",
|
||||
L"+%d to interrupts modifier in dark\n",
|
||||
L"-%d need to sleep\n",
|
||||
L"+%d%s max range when throwing anything\n", // 10
|
||||
L"+%d%s chance to hit when throwing anything\n",
|
||||
L"+%d%s chance to instantly kill by throwing knife if not seen or heard\n",
|
||||
L"+%d%s bonus to train militia and instruct other mercs\n",
|
||||
L"+%d%s effective leadership for militia training calculations\n",
|
||||
L"+%d%s chance to hit with rocket/greande launchers and mortar\n",
|
||||
L"Auto fire/burst chance to hit penalty is divided by %d\n",
|
||||
L"Reduced chance for shooting unwanted bullets on autofire\n",
|
||||
L"+%d%s chance to move quietly\n",
|
||||
L"+%d%s stealth (being 'invisible' if unnoticed)\n",
|
||||
L"Eliminates the CtH penalty for second hand when firing two weapons at once\n", // 20
|
||||
L"+%d%s chance to hit with melee blades\n",
|
||||
L"+%d%s chance to dodge attacks by melee blades if having blade in hands\n",
|
||||
L"+%d%s chance to dodge attacks by melee blades if having anything else in hands\n",
|
||||
L"+%d%s chance to dodge hand to hand attacks if having blade in hands\n",
|
||||
L"-%d%s effective range to target with all weapons\n",
|
||||
L"+%d%s aiming bonus per aim click\n",
|
||||
L"Provides permanent camouflage\n",
|
||||
L"+%d%s hand to hand chance to hit\n",
|
||||
L"+%d%s hand to hand damage\n",
|
||||
L"+%d%s chance to dodge hand to hand attacks if having empty hands\n", // 30
|
||||
L"+%d%s chance to dodge hand to hand attacks if not having empty hands\n",
|
||||
L"+%d%s chance to dodge attacks by melee blades\n",
|
||||
L"Can perform spinning kick attack on weakened enemies to deal double damage\n",
|
||||
L"You gain special animations for hand to hand combat\n",
|
||||
L"No bonuses",
|
||||
};
|
||||
|
||||
STR16 gzIMPNewCharacterTraitsHelpTexts[]=
|
||||
{
|
||||
L"A: No advantage.\nD: No disadvantage.",
|
||||
L"A: Has better performance when couple of mercs are nearby.\nD: Gains no morale when no other merc is nearby.",
|
||||
L"A: Has better performance when no other merc is nearby.\nD: Gains no morale when in a group.",
|
||||
L"A: His morale sinks a little slower and grows faster than normal.\nD: Has lesser chance to detect traps and mines.",
|
||||
L"A: Has bonus on training militia and is better at communication with people.\nD: Gains no morale for actions of other mercs.",
|
||||
L"A: Slightly faster learning when assigned on practicing or as a student.\nD: Has lesser suppression and fear resistance.",
|
||||
L"A: His energy goes down a bit slower except on assignments as doctor, repairman, militia trainer or if learning certain skills.\nD: His wisdom, leadership, explosives, mechanical and medical skills improve slightly slower.",
|
||||
L"A: Has slightly better chance to hit on burst/autofire and inflicts slightly bigger damage in close combat\n Gains a little more morale for killing.\nD: Has penalty for actions which needs patience like repairing items, picking locks, removing traps, doctoring, training militia.",
|
||||
L"A: Has bonus for actions which needs patience like repairing items, picking locks, removing traps, doctoring and training militia.\nD: His interrupts chance is slightly lowered.",
|
||||
L"A: Incresed resistance to suppression and fear.\n Morale loss for taking damage and companions deaths is lower for him.\nD: Can be hit easier and enemy penalty for moving target is lesser in his case.",
|
||||
L"A: He gains morale when on non-combat assignments (except training militia).\nD: Gains no morale for killing.",
|
||||
L"A: Has bigger chance for inflicting stat loss and can inflict special painful wounds when able to\n Gains bonus morale for inflicting stat loss.\nD: Has penalty for communication with people and his morale sinks faster if not fighting.",
|
||||
L"A: Has better performance when there are some mercs of opposite gender nearby.\nD: Morale of other mercs of the same gender grows slower if nearby.",
|
||||
|
||||
};
|
||||
|
||||
STR16 gzIMPDisabilitiesHelpTexts[]=
|
||||
{
|
||||
L"No effects.",
|
||||
L"Has problems with breathing and reduced overall performance if in tropical or desert sectors.",
|
||||
L"Can suffer panic attack if left alone in certain situations.",
|
||||
L"His overall performance is reduced if underground.",
|
||||
L"If trying to swim he can easily drown.",
|
||||
L"A look at large insects can make a big problems\nand being in tropical sectors also reduce his performance a bit.",
|
||||
L"Sometimes forgets what orders he got and therefore loses some APs if in combat.",
|
||||
L"He can go psycho and shoot like mad once per a while\nand can lose morale if unable to do that with given weapon.",
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
STR16 gzIMPProfileCostText[]=
|
||||
{
|
||||
L"The profile cost is %d$. Do you authorize the payment? ",
|
||||
};
|
||||
|
||||
STR16 zGioNewTraitsImpossibleText[]=
|
||||
{
|
||||
L"You cannot choose the New Trait System with PROFEX utility deactivated. Check your JA2_Options.ini for entry: READ_PROFILE_DATA_FROM_XML.",
|
||||
};
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//@@@: New string as of March 3, 2000.
|
||||
STR16 gzIronManModeWarningText[]=
|
||||
{
|
||||
|
||||
+396
-4
@@ -1,3 +1,4 @@
|
||||
//#pragma setlocale("DUTCH")
|
||||
#ifdef PRECOMPILEDHEADERS
|
||||
#include "Utils All.h"
|
||||
#include "_Ja25Dutchtext.h"
|
||||
@@ -43,13 +44,16 @@ STR16 zNewTacticalMessages[]=
|
||||
L"In order to use the editor, please select a campaign other than the default.", ///@@new
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// SANDRO - New STOMP laptop strings
|
||||
//these strings match up with the defines in IMP Skill trait.cpp
|
||||
STR16 gzIMPSkillTraitsText[]=
|
||||
{
|
||||
L"Lock picking",
|
||||
L"Hand to hand combat",
|
||||
// made this more elegant
|
||||
L"Lock Picking",
|
||||
L"Hand to Hand",
|
||||
L"Electronics",
|
||||
L"Night operations",
|
||||
L"Night Operations",
|
||||
L"Throwing",
|
||||
L"Teaching",
|
||||
L"Heavy Weapons",
|
||||
@@ -58,12 +62,400 @@ STR16 gzIMPSkillTraitsText[]=
|
||||
L"Ambidextrous",
|
||||
L"Knifing",
|
||||
L"Sniper",
|
||||
L"Camouflage",
|
||||
L"Camouflaged",
|
||||
L"Martial Arts",
|
||||
|
||||
L"None",
|
||||
L"I.M.P. Specialties",
|
||||
L"(Expert)",
|
||||
|
||||
};
|
||||
|
||||
//added another set of skill texts for new major traits
|
||||
STR16 gzIMPSkillTraitsTextNewMajor[]=
|
||||
{
|
||||
L"Auto Weapons",
|
||||
L"Heavy Weapons",
|
||||
L"Marksman",
|
||||
L"Hunter",
|
||||
L"Gunslinger",
|
||||
L"Hand to Hand",
|
||||
L"Deputy",
|
||||
L"Technician",
|
||||
L"Paramedic",
|
||||
|
||||
L"None",
|
||||
L"I.M.P. Major Traits",
|
||||
// second names
|
||||
L"Machinegunner",
|
||||
L"Bombardier",
|
||||
L"Sniper",
|
||||
L"Ranger",
|
||||
L"Gunfighter",
|
||||
L"Martial Arts",
|
||||
L"Squadleader",
|
||||
L"Engineer",
|
||||
L"Doctor",
|
||||
};
|
||||
|
||||
//added another set of skill texts for new minor traits
|
||||
STR16 gzIMPSkillTraitsTextNewMinor[]=
|
||||
{
|
||||
L"Ambidextrous",
|
||||
L"Melee",
|
||||
L"Throwing",
|
||||
L"Night Ops",
|
||||
L"Stealthy",
|
||||
L"Athletics",
|
||||
L"Bodybuilding",
|
||||
L"Demolitions",
|
||||
L"Teaching",
|
||||
L"Scouting",
|
||||
|
||||
L"None",
|
||||
L"I.M.P. Minor Traits",
|
||||
};
|
||||
|
||||
//these texts are for help popup windows, describing trait properties
|
||||
STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]=
|
||||
{
|
||||
L"+%d%s Chance to Hit with Assault Rifles\n",
|
||||
L"+%d%s Chance to Hit with SMGs\n",
|
||||
L"+%d%s Chance to Hit with LMGs\n",
|
||||
L"-%d%s APs needed to fire with LMGs\n",
|
||||
L"-%d%s APs needed to ready light machine guns\n",
|
||||
L"Auto fire/burst chance to hit penalty is reduced by %d%s\n",
|
||||
L"Reduced chance for shooting unwanted bullets on autofire\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]=
|
||||
{
|
||||
L"-%d%s APs needed to fire grenade launchers\n",
|
||||
L"-%d%s APs needed to fire rocket launchers\n",
|
||||
L"+%d%s chance to hit with grenade launchers\n",
|
||||
L"+%d%s chance to hit with rocket launchers\n",
|
||||
L"-%d%s APs needed to fire mortar\n",
|
||||
L"Reduce penalty for mortar CtH by %d%s\n",
|
||||
L"+%d%s damage to tanks with heavy weapons, grenades and explosives\n",
|
||||
L"+%d%s damage to other targets with heavy weapons\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsSniper[]=
|
||||
{
|
||||
L"+%d%s Chance to Hit with Rifles\n",
|
||||
L"+%d%s Chance to Hit with Sniper Rifles\n",
|
||||
L"-%d%s effective range to target with all weapons\n",
|
||||
L"+%d%s aiming bonus per aim click (except for handguns)\n",
|
||||
L"+%d%s damage on shot",
|
||||
L" plus",
|
||||
L" per every aim click",
|
||||
L" after first",
|
||||
L" after second",
|
||||
L" after third",
|
||||
L" after fourth",
|
||||
L" after fifth",
|
||||
L" after sixth",
|
||||
L" after seventh",
|
||||
L"-%d%s APs needed to chamber a round with bolt-action rifles \n",
|
||||
L"Adds one more aim click for rifle-type guns\n",
|
||||
L"Adds %d more aim clicks for rifle-type guns\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsRanger[]=
|
||||
{
|
||||
L"+%d%s Chance to Hit with Rifles\n",
|
||||
L"+%d%s Chance to Hit with Shotguns\n",
|
||||
L"-%d%s APs needed to pump Shotguns\n",
|
||||
L"+%d%s group travelling speed between sectors if traveling by foot\n",
|
||||
L"+%d%s group travelling speed between sectors if traveling in vehicle (except helicopter)\n",
|
||||
L"-%d%s less energy spent for travelling between sectors\n",
|
||||
L"-%d%s weather penalties\n",
|
||||
L"+%d%s camouflage effectiveness\n",
|
||||
L"-%d%s worn out speed of camouflage by water or time\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsGunslinger[]=
|
||||
{
|
||||
L"-%d%s APs needed to fire with pistols and revolvers\n",
|
||||
L"+%d%s effective range with pistols and revolvers\n",
|
||||
L"+%d%s chance to hit with pistols and revolvers\n",
|
||||
L"+%d%s chance to hit with machine pistols",
|
||||
L" (on single shots only)",
|
||||
L"+%d%s aiming bonus per click with pistols, machine pistols and revolvers\n",
|
||||
L"-%d%s APs needed to raise pistols and revolvers\n",
|
||||
L"-%d%s APs needed to reload pistols, machine pistols and revolvers\n",
|
||||
L"Adds %d more aim click for pistols, machine pistols and revolvers\n",
|
||||
L"Adds %d more aim clicks for pistols, machine pistols and revolvers\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsMartialArts[]=
|
||||
{
|
||||
L"-%d%s AP cost of hand to hand attacks(bare hands or with brass knuckles)\n",
|
||||
L"+%d%s chance to hit with hand to hand attacks with bare hands\n",
|
||||
L"+%d%s chance to hit with hand to hand attacks with brass knuckles\n",
|
||||
L"+%d%s damage of hand to hand attacks(bare hands or with brass knuckles)\n",
|
||||
L"+%d%s breath damage of hand to hand attacks(bare hands or with brass knuckles)\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes slightly longer to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes longer to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes much longer to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes very long to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes extremely long to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes long hours to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks probably never stand up\n",
|
||||
L"Focused (aimed) punch deals +%d%s more damage\n",
|
||||
L"Your special spinning kick deals +%d%s more damage\n",
|
||||
L"+%d%s change to dodge hand to hand attacks\n",
|
||||
L"+%d%s on top chance to dodge HtH attacks with bare hands",
|
||||
L" or brass knuckles",
|
||||
L" (+%d%s with brass knuckles)",
|
||||
L"+%d%s on top chance to dodge HtH attacks with brass knuckles\n",
|
||||
L"+%d%s chance to dodge attacks by any melee weapon\n",
|
||||
L"-%d%s APs needed to steal weapon from enemy hands\n",
|
||||
L"-%d%s APs needed to change state (stand, crouch, lie down), turn around, climb on/off roof and jump obstacles\n",
|
||||
L"-%d%s APs needed to change state (stand, crouch, lie down)\n",
|
||||
L"-%d%s APs needed to turn around\n",
|
||||
L"-%d%s APs needed to climb on/off roof and jump obstacles\n",
|
||||
L"+%d%s chance to kick doors\n",
|
||||
L"You gain special animations for hand to hand combat\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsSquadleader[]=
|
||||
{
|
||||
L"+%d%s APs per round of other mercs in vicinity\n",
|
||||
L"+%d effective exp level of other mercs in vicinity, which have lesser level than the %s\n",
|
||||
L"+%d effective exp level to count as a standby when counting friends' bonus for suppression\n",
|
||||
L"+%d%s total suppression tolerance of other mercs in vicinity and %s himself\n",
|
||||
L"+%d morale gain of other mercs in vicinity\n",
|
||||
L"-%d morale loss of other mercs in vicinity\n",
|
||||
L"The vicinity for bonuses is %d tiles",
|
||||
L" (%d tiles with extended ears)",
|
||||
L"(Max simultaneous bonuses for one soldier is %d)\n",
|
||||
L"+%d%s fear resistence of %s\n",
|
||||
L"Drawback: %dx morale loss for %s's death for all other mercs\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsTechnician[]=
|
||||
{
|
||||
L"+%d%s to repairing speed\n",
|
||||
L"+%d%s to lockpicking (normal/electronic locks)\n",
|
||||
L"+%d%s to disarming electronic traps\n",
|
||||
L"+%d%s to attaching special items and combining things\n",
|
||||
L"+%d%s to unjamming a gun in combat\n",
|
||||
L"Reduce penalty to repair electronic items by %d%s\n",
|
||||
L"Increased chance to detect traps and mines (+%d detect level)\n",
|
||||
L"+%d%s CtH of robot controlled by the %s\n",
|
||||
L"%s trait grants you the ability to repair the robot\n",
|
||||
L"Reduced penalty to repair speed of the robot by %d%s\n",
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsDoctor[]=
|
||||
{
|
||||
L"Has ability to make surgical intervention by using medical bag on wounded soldier\n",
|
||||
L"Surgery instantly returns %d%s of lost health back.",
|
||||
L" (This drains the medical bag a lot.)",
|
||||
L"Can heal lost stats (from critical hits) by the",
|
||||
L" surgery or",
|
||||
L" doctor assignment.\n",
|
||||
L"+%d%s effectiveness on doctor-patient assignment\n",
|
||||
L"+%d%s bandaging speed\n",
|
||||
L"+%d%s natural regeneration speed of all soldiers in the same sector",
|
||||
L" (max %d these bonuses per sector)",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"No bonuses",
|
||||
};
|
||||
|
||||
STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]=
|
||||
{
|
||||
L"Reduce penalty to shoot dual weapons by %d%s\n",
|
||||
L"+%d%s speed of reloading guns with magazines\n",
|
||||
L"+%d%s speed of reloading guns with loose rounds\n",
|
||||
L"-%d%s APs needed to pickup items\n",
|
||||
L"-%d%s APs needed to work backpack\n",
|
||||
L"-%d%s APs needed to handle doors\n",
|
||||
L"-%d%s APs needed to plant/remove bombs and mines\n",
|
||||
L"-%d%s APs needed to attach items\n",
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsMelee[]=
|
||||
{
|
||||
L"-%d%s APs needed to attack by blades\n",
|
||||
L"+%d%s chance to hit with blades\n",
|
||||
L"+%d%s chance to hit with blunt melee weapons\n",
|
||||
L"+%d%s damage of blades\n",
|
||||
L"+%d%s damage of blunt melee weapons\n",
|
||||
L"Aimed attack by any melee weapon deals +%d%s damage\n",
|
||||
L"+%d%s chance to dodge attack by melee blades\n",
|
||||
L"+%d%s on top chance to dodge melee blades if having a blade in hands\n",
|
||||
L"+%d%s chance to dodge attack by blunt melee weapons\n",
|
||||
L"+%d%s on top chance to dodge blunt melee weapons if having a blade in hands\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsThrowing[]=
|
||||
{
|
||||
L"-%d%s basic APs needed to throw blades\n",
|
||||
L"+%d%s max range when throwing blades\n",
|
||||
L"+%d%s chance to hit when throwing blades\n",
|
||||
L"+%d%s chance to hit when throwing blades per aim click\n",
|
||||
L"+%d%s damage of throwing blades\n",
|
||||
L"+%d%s damage of throwing blades per aim click\n",
|
||||
L"+%d%s chance to inflict critical hit by throwing blade if not seen or heard\n",
|
||||
L"+%d critical hit by throwing blade multiplier\n",
|
||||
L"Adds %d more aim click for throwing blades\n",
|
||||
L"Adds %d more aim clicks for throwing blades\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsNightOps[]=
|
||||
{
|
||||
L"+%d to effective sight range in dark\n",
|
||||
L"+%d to general effective hearing range\n",
|
||||
L"+%d to effective hearing range in dark on top\n",
|
||||
L"+%d to interrupts modifier in dark\n",
|
||||
L"-%d need to sleep\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsStealthy[]=
|
||||
{
|
||||
L"-%d%s APs needed to move quietly\n",
|
||||
L"+%d%s chance to move quietly\n",
|
||||
L"+%d%s stealth (being 'invisible' if unnoticed)\n",
|
||||
L"Reduced cover penalty for movement by %d%s\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsAthletics[]=
|
||||
{
|
||||
L"-%d%s APs needed for moving (running, walking, swatting, crawling, swimming, etc.)\n",
|
||||
L"-%d%s energy spent for movement, roof-climbing, obstacle-jumping, swimming, etc.\n",
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]=
|
||||
{
|
||||
L"Has %d%s damage resistance\n",
|
||||
L"+%d%s effective strength for carrying weight capacity \n",
|
||||
L"Reduced energy lost when hit by HtH attack by %d%s\n",
|
||||
L"Increased damage needed to fall down if hit to legs by %d%s\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsDemolitions[]=
|
||||
{
|
||||
L"-%d%s APs needed to throw grenades\n",
|
||||
L"+%d%s max range when throwing grenades\n",
|
||||
L"+%d%s chance to hit when throwing grenades\n",
|
||||
L"+%d%s damage of set bombs and mines\n",
|
||||
L"+%d%s to attaching detonators check\n",
|
||||
L"+%d%s to planting/removing bombs check\n",
|
||||
L"Decreases chance enemy will detect your bombs and mines (+%d bomb level)\n",
|
||||
L"Increased chance shaped charge will open the doors (damage multiplied by %d)\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsTeaching[]=
|
||||
{
|
||||
L"+%d%s bonus to train militia\n",
|
||||
L"+%d%s bonus to effective leadership for determining militia training\n",
|
||||
L"+%d%s bonus to teaching other mercs\n",
|
||||
L"Skill value counts to be +%d higher for being able to teach this skill to other mercs\n",
|
||||
L"+%d%s bonus to train stats through self-practising assignment\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsScouting[]=
|
||||
{
|
||||
L"+%d to effective sight range with scopes on weapons\n",
|
||||
L"+%d to effective sight range with binoculars (and scopes separated from weapons)\n",
|
||||
L"-%d tunnel vision with binoculars (and scopes separated from weapons)\n",
|
||||
L"If in sector, adjacent sectors will show exact number of enemies\n",
|
||||
L"If in sector, adjacent sectors will show presence of enemies if any\n",
|
||||
L"Prevents the enemy to ambush your squad\n",
|
||||
L"Prevents the bloodcats to ambush your squad\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"No bonuses",
|
||||
};
|
||||
|
||||
STR16 gzIMPOldSkillTraitsHelpTexts[]=
|
||||
{
|
||||
L"+%d%s bonus to lockpicking\n", // 0
|
||||
L"+%d%s hand to hand chance to hit\n",
|
||||
L"+%d%s hand to hand damage\n",
|
||||
L"+%d%s chance to dodge hand to hand attacks\n",
|
||||
L"Eliminates the penalty to repair and handle\nelectronic things (locks, traps, rem. detonators, robot, etc.)\n",
|
||||
L"+%d to effective sight range in dark\n",
|
||||
L"+%d to general effective hearing range\n",
|
||||
L"+%d to effective hearing range in dark on top\n",
|
||||
L"+%d to interrupts modifier in dark\n",
|
||||
L"-%d need to sleep\n",
|
||||
L"+%d%s max range when throwing anything\n", // 10
|
||||
L"+%d%s chance to hit when throwing anything\n",
|
||||
L"+%d%s chance to instantly kill by throwing knife if not seen or heard\n",
|
||||
L"+%d%s bonus to train militia and instruct other mercs\n",
|
||||
L"+%d%s effective leadership for militia training calculations\n",
|
||||
L"+%d%s chance to hit with rocket/greande launchers and mortar\n",
|
||||
L"Auto fire/burst chance to hit penalty is divided by %d\n",
|
||||
L"Reduced chance for shooting unwanted bullets on autofire\n",
|
||||
L"+%d%s chance to move quietly\n",
|
||||
L"+%d%s stealth (being 'invisible' if unnoticed)\n",
|
||||
L"Eliminates the CtH penalty for second hand when firing two weapons at once\n", // 20
|
||||
L"+%d%s chance to hit with melee blades\n",
|
||||
L"+%d%s chance to dodge attacks by melee blades if having blade in hands\n",
|
||||
L"+%d%s chance to dodge attacks by melee blades if having anything else in hands\n",
|
||||
L"+%d%s chance to dodge hand to hand attacks if having blade in hands\n",
|
||||
L"-%d%s effective range to target with all weapons\n",
|
||||
L"+%d%s aiming bonus per aim click\n",
|
||||
L"Provides permanent camouflage\n",
|
||||
L"+%d%s hand to hand chance to hit\n",
|
||||
L"+%d%s hand to hand damage\n",
|
||||
L"+%d%s chance to dodge hand to hand attacks if having empty hands\n", // 30
|
||||
L"+%d%s chance to dodge hand to hand attacks if not having empty hands\n",
|
||||
L"+%d%s chance to dodge attacks by melee blades\n",
|
||||
L"Can perform spinning kick attack on weakened enemies to deal double damage\n",
|
||||
L"You gain special animations for hand to hand combat\n",
|
||||
L"No bonuses",
|
||||
};
|
||||
|
||||
STR16 gzIMPNewCharacterTraitsHelpTexts[]=
|
||||
{
|
||||
L"A: No advantage.\nD: No disadvantage.",
|
||||
L"A: Has better performance when couple of mercs are nearby.\nD: Gains no morale when no other merc is nearby.",
|
||||
L"A: Has better performance when no other merc is nearby.\nD: Gains no morale when in a group.",
|
||||
L"A: His morale sinks a little slower and grows faster than normal.\nD: Has lesser chance to detect traps and mines.",
|
||||
L"A: Has bonus on training militia and is better at communication with people.\nD: Gains no morale for actions of other mercs.",
|
||||
L"A: Slightly faster learning when assigned on practicing or as a student.\nD: Has lesser suppression and fear resistance.",
|
||||
L"A: His energy goes down a bit slower except on assignments as doctor, repairman, militia trainer or if learning certain skills.\nD: His wisdom, leadership, explosives, mechanical and medical skills improve slightly slower.",
|
||||
L"A: Has slightly better chance to hit on burst/autofire and inflicts slightly bigger damage in close combat\n Gains a little more morale for killing.\nD: Has penalty for actions which needs patience like repairing items, picking locks, removing traps, doctoring, training militia.",
|
||||
L"A: Has bonus for actions which needs patience like repairing items, picking locks, removing traps, doctoring and training militia.\nD: His interrupts chance is slightly lowered.",
|
||||
L"A: Incresed resistance to suppression and fear.\n Morale loss for taking damage and companions deaths is lower for him.\nD: Can be hit easier and enemy penalty for moving target is lesser in his case.",
|
||||
L"A: He gains morale when on non-combat assignments (except training militia).\nD: Gains no morale for killing.",
|
||||
L"A: Has bigger chance for inflicting stat loss and can inflict special painful wounds when able to\n Gains bonus morale for inflicting stat loss.\nD: Has penalty for communication with people and his morale sinks faster if not fighting.",
|
||||
L"A: Has better performance when there are some mercs of opposite gender nearby.\nD: Morale of other mercs of the same gender grows slower if nearby.",
|
||||
|
||||
};
|
||||
|
||||
STR16 gzIMPDisabilitiesHelpTexts[]=
|
||||
{
|
||||
L"No effects.",
|
||||
L"Has problems with breathing and reduced overall performance if in tropical or desert sectors.",
|
||||
L"Can suffer panic attack if left alone in certain situations.",
|
||||
L"His overall performance is reduced if underground.",
|
||||
L"If trying to swim he can easily drown.",
|
||||
L"A look at large insects can make a big problems\nand being in tropical sectors also reduce his performance a bit.",
|
||||
L"Sometimes forgets what orders he got and therefore loses some APs if in combat.",
|
||||
L"He can go psycho and shoot like mad once per a while\nand can lose morale if unable to do that with given weapon.",
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
STR16 gzIMPProfileCostText[]=
|
||||
{
|
||||
L"The profile cost is %d$. Do you authorize the payment? ",
|
||||
};
|
||||
|
||||
STR16 zGioNewTraitsImpossibleText[]=
|
||||
{
|
||||
L"You cannot choose the New Trait System with PROFEX utility deactivated. Check your JA2_Options.ini for entry: READ_PROFILE_DATA_FROM_XML.",
|
||||
};
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//@@@: New string as of March 3, 2000.
|
||||
STR16 gzIronManModeWarningText[]=
|
||||
{
|
||||
|
||||
@@ -32,6 +32,45 @@ enum
|
||||
extern STR16 zNewTacticalMessages[];
|
||||
extern STR16 gzIMPSkillTraitsText[];
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
// added by SANDRO
|
||||
extern STR16 gzIMPSkillTraitsTextNewMajor[];
|
||||
extern STR16 gzIMPSkillTraitsTextNewMinor[];
|
||||
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsSniper[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsRanger[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsTechnician[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsDoctor[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsNone[];
|
||||
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsMelee[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsThrowing[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsStealthy[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsNightOps[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsAthletics[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsScouting[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsNone[];
|
||||
|
||||
extern STR16 gzIMPOldSkillTraitsHelpTexts[];
|
||||
|
||||
extern STR16 gzIMPNewCharacterTraitsHelpTexts[];
|
||||
|
||||
extern STR16 gzIMPDisabilitiesHelpTexts[];
|
||||
|
||||
extern STR16 gzIMPProfileCostText[];
|
||||
|
||||
extern STR16 zGioNewTraitsImpossibleText[];
|
||||
///////////////////////////////////////////////////////
|
||||
|
||||
enum
|
||||
{
|
||||
IMM__IRON_MAN_MODE_WARNING_TEXT,
|
||||
|
||||
+396
-4
@@ -1,3 +1,4 @@
|
||||
//#pragma setlocale("ENGLISH")
|
||||
#ifdef PRECOMPILEDHEADERS
|
||||
#include "Utils All.h"
|
||||
#include "_Ja25Englishtext.h"
|
||||
@@ -43,13 +44,16 @@ STR16 zNewTacticalMessages[]=
|
||||
L"In order to use the editor, please select a campaign other than the default.", ///@@new
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// SANDRO - New STOMP laptop strings
|
||||
//these strings match up with the defines in IMP Skill trait.cpp
|
||||
STR16 gzIMPSkillTraitsText[]=
|
||||
{
|
||||
L"Lock picking",
|
||||
L"Hand to hand combat",
|
||||
// made this more elegant
|
||||
L"Lock Picking",
|
||||
L"Hand to Hand",
|
||||
L"Electronics",
|
||||
L"Night operations",
|
||||
L"Night Operations",
|
||||
L"Throwing",
|
||||
L"Teaching",
|
||||
L"Heavy Weapons",
|
||||
@@ -58,12 +62,400 @@ STR16 gzIMPSkillTraitsText[]=
|
||||
L"Ambidextrous",
|
||||
L"Knifing",
|
||||
L"Sniper",
|
||||
L"Camouflage",
|
||||
L"Camouflaged",
|
||||
L"Martial Arts",
|
||||
|
||||
L"None",
|
||||
L"I.M.P. Specialties",
|
||||
L"(Expert)",
|
||||
|
||||
};
|
||||
|
||||
//added another set of skill texts for new major traits
|
||||
STR16 gzIMPSkillTraitsTextNewMajor[]=
|
||||
{
|
||||
L"Auto Weapons",
|
||||
L"Heavy Weapons",
|
||||
L"Marksman",
|
||||
L"Hunter",
|
||||
L"Gunslinger",
|
||||
L"Hand to Hand",
|
||||
L"Deputy",
|
||||
L"Technician",
|
||||
L"Paramedic",
|
||||
|
||||
L"None",
|
||||
L"I.M.P. Major Traits",
|
||||
// second names
|
||||
L"Machinegunner",
|
||||
L"Bombardier",
|
||||
L"Sniper",
|
||||
L"Ranger",
|
||||
L"Gunfighter",
|
||||
L"Martial Arts",
|
||||
L"Squadleader",
|
||||
L"Engineer",
|
||||
L"Doctor",
|
||||
};
|
||||
|
||||
//added another set of skill texts for new minor traits
|
||||
STR16 gzIMPSkillTraitsTextNewMinor[]=
|
||||
{
|
||||
L"Ambidextrous",
|
||||
L"Melee",
|
||||
L"Throwing",
|
||||
L"Night Ops",
|
||||
L"Stealthy",
|
||||
L"Athletics",
|
||||
L"Bodybuilding",
|
||||
L"Demolitions",
|
||||
L"Teaching",
|
||||
L"Scouting",
|
||||
|
||||
L"None",
|
||||
L"I.M.P. Minor Traits",
|
||||
};
|
||||
|
||||
//these texts are for help popup windows, describing trait properties
|
||||
STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]=
|
||||
{
|
||||
L"+%d%s Chance to Hit with Assault Rifles\n",
|
||||
L"+%d%s Chance to Hit with SMGs\n",
|
||||
L"+%d%s Chance to Hit with LMGs\n",
|
||||
L"-%d%s APs needed to fire with LMGs on autofire or burst mode\n",
|
||||
L"-%d%s APs needed to ready light machine guns\n",
|
||||
L"Auto fire/burst chance to hit penalty is reduced by %d%s\n",
|
||||
L"Reduced chance for shooting unwanted bullets on autofire\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]=
|
||||
{
|
||||
L"-%d%s APs needed to fire grenade launchers\n",
|
||||
L"-%d%s APs needed to fire rocket launchers\n",
|
||||
L"+%d%s chance to hit with grenade launchers\n",
|
||||
L"+%d%s chance to hit with rocket launchers\n",
|
||||
L"-%d%s APs needed to fire mortar\n",
|
||||
L"Reduce penalty for mortar CtH by %d%s\n",
|
||||
L"+%d%s damage to tanks with heavy weapons, grenades and explosives\n",
|
||||
L"+%d%s damage to other targets with heavy weapons\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsSniper[]=
|
||||
{
|
||||
L"+%d%s Chance to Hit with Rifles\n",
|
||||
L"+%d%s Chance to Hit with Sniper Rifles\n",
|
||||
L"-%d%s effective range to target with all weapons\n",
|
||||
L"+%d%s aiming bonus per aim click (except for handguns)\n",
|
||||
L"+%d%s damage on shot",
|
||||
L" plus",
|
||||
L" per every aim click",
|
||||
L" after first",
|
||||
L" after second",
|
||||
L" after third",
|
||||
L" after fourth",
|
||||
L" after fifth",
|
||||
L" after sixth",
|
||||
L" after seventh",
|
||||
L"-%d%s APs needed to chamber a round with bolt-action rifles \n",
|
||||
L"Adds one more aim click for rifle-type guns\n",
|
||||
L"Adds %d more aim clicks for rifle-type guns\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsRanger[]=
|
||||
{
|
||||
L"+%d%s Chance to Hit with Rifles\n",
|
||||
L"+%d%s Chance to Hit with Shotguns\n",
|
||||
L"-%d%s APs needed to pump Shotguns\n",
|
||||
L"+%d%s group travelling speed between sectors if traveling by foot\n",
|
||||
L"+%d%s group travelling speed between sectors if traveling in vehicle (except helicopter)\n",
|
||||
L"-%d%s less energy spent for travelling between sectors\n",
|
||||
L"-%d%s weather penalties\n",
|
||||
L"+%d%s camouflage effectiveness\n",
|
||||
L"-%d%s worn out speed of camouflage by water or time\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsGunslinger[]=
|
||||
{
|
||||
L"-%d%s APs needed to fire with pistols and revolvers\n",
|
||||
L"+%d%s effective range with pistols and revolvers\n",
|
||||
L"+%d%s chance to hit with pistols and revolvers\n",
|
||||
L"+%d%s chance to hit with machine pistols",
|
||||
L" (on single shots only)",
|
||||
L"+%d%s aiming bonus per click with pistols, machine pistols and revolvers\n",
|
||||
L"-%d%s APs needed to ready pistols and revolvers\n", // MINTY - "raise" changed to "ready"
|
||||
L"-%d%s APs needed to reload pistols, machine pistols and revolvers\n",
|
||||
L"Adds %d more aim click for pistols, machine pistols and revolvers\n",
|
||||
L"Adds %d more aim clicks for pistols, machine pistols and revolvers\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsMartialArts[]=
|
||||
{
|
||||
L"-%d%s AP cost of hand to hand attacks(bare hands or with brass knuckles)\n",
|
||||
L"+%d%s chance to hit with hand to hand attacks with bare hands\n",
|
||||
L"+%d%s chance to hit with hand to hand attacks with brass knuckles\n",
|
||||
L"+%d%s damage of hand to hand attacks(bare hands or with brass knuckles)\n",
|
||||
L"+%d%s breath damage of hand to hand attacks(bare hands or with brass knuckles)\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes slightly longer to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes longer to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes much longer to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes very long to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes extremely long to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes long hours to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks probably never stand up\n",
|
||||
L"Focused (aimed) punch deals +%d%s more damage\n",
|
||||
L"Your special spinning kick deals +%d%s more damage\n",
|
||||
L"+%d%s change to dodge hand to hand attacks\n",
|
||||
L"+%d%s on top chance to dodge HtH attacks with bare hands",
|
||||
L" or brass knuckles",
|
||||
L" (+%d%s with brass knuckles)",
|
||||
L"+%d%s on top chance to dodge HtH attacks with brass knuckles\n",
|
||||
L"+%d%s chance to dodge attacks by any melee weapon\n",
|
||||
L"-%d%s APs needed to steal weapon from enemy hands\n",
|
||||
L"-%d%s APs needed to change stance (stand, crouch, lie down), turn around, climb on/off roof and jump obstacles\n", // MINTY - "state" changed to "stance"
|
||||
L"-%d%s APs needed to change stance (stand, crouch, lie down)\n", // MINTY - "state" changed to "stance"
|
||||
L"-%d%s APs needed to turn around\n",
|
||||
L"-%d%s APs needed to climb on/off roof and jump obstacles\n",
|
||||
L"+%d%s chance to kick doors in\n", // MINTY - Changed to "kick doors in"
|
||||
L"You gain special animations for hand to hand combat\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsSquadleader[]=
|
||||
{
|
||||
L"+%d%s APs per round of other mercs in vicinity\n",
|
||||
L"+%d effective exp level of other mercs in vicinity, which have lesser level than the %s\n",
|
||||
L"+%d effective exp level to count as a standby when counting friends' bonus for suppression\n",
|
||||
L"+%d%s total suppression tolerance for other mercs in the vicinity and %s himself\n", // MINTY - Changed "of" to "for"
|
||||
L"+%d morale gain for other mercs in the vicinity\n", // MINTY - Changed "of" to "for"
|
||||
L"-%d morale loss for other mercs in the vicinity\n", // MINTY - Changed "of" to "for"
|
||||
L"The vicinity for bonuses is %d tiles",
|
||||
L" (%d tiles with extended ears)",
|
||||
L"(Max simultaneous bonuses for one soldier is %d)\n",
|
||||
L"+%d%s fear resistence of %s\n",
|
||||
L"Drawback: %dx morale loss for %s's death for all other mercs\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsTechnician[]=
|
||||
{
|
||||
L"+%d%s to repairing speed\n",
|
||||
L"+%d%s to lockpicking (normal/electronic locks)\n",
|
||||
L"+%d%s to disarming electronic traps\n",
|
||||
L"+%d%s to attaching special items and combining things\n",
|
||||
L"+%d%s to unjamming a gun in combat\n",
|
||||
L"Reduce penalty to repair electronic items by %d%s\n",
|
||||
L"Increased chance to detect traps and mines (+%d detect level)\n",
|
||||
L"+%d%s CtH of robot controlled by the %s\n",
|
||||
L"%s trait grants you the ability to repair the robot\n",
|
||||
L"Reduced penalty to repair speed of the robot by %d%s\n",
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsDoctor[]=
|
||||
{
|
||||
L"Has ability to perform surgical intervention by using medical bag on wounded soldier\n", // MINTY - "make" changed to "perform"
|
||||
L"Surgery instantly returns %d%s of lost health back.",
|
||||
L" (This drains the medical bag a lot.)",
|
||||
L"Can heal lost stats (from critical hits) by the",
|
||||
L" surgery or",
|
||||
L" doctor assignment.\n",
|
||||
L"+%d%s effectiveness on doctor-patient assignment\n",
|
||||
L"+%d%s bandaging speed\n",
|
||||
L"+%d%s natural regeneration speed for all soldiers in the same sector", // MINTY - Changed "of" to "for"
|
||||
L" (max %d of these bonuses per sector stack)",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"No bonuses",
|
||||
};
|
||||
|
||||
STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]=
|
||||
{
|
||||
L"Reduce penalty to shoot dual weapons by %d%s\n",
|
||||
L"+%d%s speed of reloading guns with magazines\n",
|
||||
L"+%d%s speed of reloading guns with loose rounds\n",
|
||||
L"-%d%s APs needed to pickup items\n",
|
||||
L"-%d%s APs needed to work backpack\n",
|
||||
L"-%d%s APs needed to handle doors\n",
|
||||
L"-%d%s APs needed to plant/remove bombs and mines\n",
|
||||
L"-%d%s APs needed to attach items\n",
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsMelee[]=
|
||||
{
|
||||
L"-%d%s APs needed to attack by blades\n",
|
||||
L"+%d%s chance to hit with blades\n",
|
||||
L"+%d%s chance to hit with blunt melee weapons\n",
|
||||
L"+%d%s damage with blades\n", // MINTY - Changed "of" to "with"
|
||||
L"+%d%s damage with blunt melee weapons\n", // MINTY - Changed "of" to "with"
|
||||
L"Aimed attack with any melee weapon deals +%d%s damage\n", // MINTY - Changed "by" to "with"
|
||||
L"+%d%s chance to dodge attack by melee blades\n",
|
||||
L"+%d%s on top chance to dodge melee blades if holding a blade\n", // MINTY - "having a blade in hands" changed to "holding a blade"
|
||||
L"+%d%s chance to dodge attack by blunt melee weapons\n",
|
||||
L"+%d%s on top chance to dodge blunt melee weapons if holding a blade\n", // MINTY - "having a blade in hands" changed to "holding a blade"
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsThrowing[]=
|
||||
{
|
||||
L"-%d%s basic APs needed to throw blades\n",
|
||||
L"+%d%s max range when throwing blades\n",
|
||||
L"+%d%s chance to hit when throwing blades\n",
|
||||
L"+%d%s chance to hit when throwing blades per aim click\n",
|
||||
L"+%d%s damage with throwing blades\n", // MINTY - Changed "of" to "with"
|
||||
L"+%d%s damage with throwing blades per aim click\n", // MINTY - Changed "of" to "with"
|
||||
L"+%d%s chance to inflict critical hit with throwing blade if not seen or heard\n", // MINTY - Changed "by" to "with"
|
||||
L"+%d critical hit with throwing blade multiplier\n", // MINTY - Changed "by" to "with"
|
||||
L"Adds %d more aim click for throwing blades\n",
|
||||
L"Adds %d more aim clicks for throwing blades\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsNightOps[]=
|
||||
{
|
||||
L"+%d to effective sight range in the dark\n",
|
||||
L"+%d to general effective hearing range\n",
|
||||
L"+%d additional hearing range in the dark\n", // MINTY - Changed "effective hearing range in dark on top" to "additional hearing range in the dark"
|
||||
L"+%d to interrupts modifier in the dark\n",
|
||||
L"-%d need to sleep\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsStealthy[]=
|
||||
{
|
||||
L"-%d%s APs needed to move quietly\n",
|
||||
L"+%d%s chance to move quietly\n",
|
||||
L"+%d%s stealth (being 'invisible' if unnoticed)\n",
|
||||
L"Reduced cover penalty for movement by %d%s\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsAthletics[]=
|
||||
{
|
||||
L"-%d%s APs needed for moving (running, walking, squatting, crawling, swimming, etc.)\n",
|
||||
L"-%d%s energy spent for movement, roof-climbing, obstacle-jumping, swimming, etc.\n",
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]=
|
||||
{
|
||||
L"Has %d%s damage resistance\n",
|
||||
L"+%d%s effective strength for carrying weight capacity \n",
|
||||
L"Reduced energy lost when hit by HtH attack by %d%s\n",
|
||||
L"Increased damage needed to fall down if hit to legs by %d%s\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsDemolitions[]=
|
||||
{
|
||||
L"-%d%s APs needed to throw grenades\n",
|
||||
L"+%d%s max range when throwing grenades\n",
|
||||
L"+%d%s chance to hit when throwing grenades\n",
|
||||
L"+%d%s damage of set bombs and mines\n",
|
||||
L"+%d%s to attaching detonators check\n",
|
||||
L"+%d%s to planting/removing bombs check\n",
|
||||
L"Decreases chance enemy will detect your bombs and mines (+%d bomb level)\n",
|
||||
L"Increased chance shaped charge will open the doors (damage multiplied by %d)\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsTeaching[]=
|
||||
{
|
||||
L"+%d%s bonus to militia training speed\n",
|
||||
L"+%d%s bonus to effective leadership for determining militia training\n",
|
||||
L"+%d%s bonus to teaching other mercs\n",
|
||||
L"Skill value counts to be +%d higher for being able to teach this skill to other mercs\n",
|
||||
L"+%d%s bonus to train stats through self-practising assignment\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsScouting[]=
|
||||
{
|
||||
L"+%d to effective sight range with scopes on weapons\n",
|
||||
L"+%d to effective sight range with binoculars (and scopes separated from weapons)\n",
|
||||
L"-%d tunnel vision with binoculars (and scopes separated from weapons)\n",
|
||||
L"If in sector, adjacent sectors will show exact number of enemies\n",
|
||||
L"If in sector, adjacent sectors will show presence of enemies, if any\n",
|
||||
L"Prevents enemy ambushes on your squad\n",
|
||||
L"Prevents bloodcat ambushes on your squad\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"No bonuses",
|
||||
};
|
||||
|
||||
STR16 gzIMPOldSkillTraitsHelpTexts[]=
|
||||
{
|
||||
L"+%d%s bonus to lockpicking\n", // 0
|
||||
L"+%d%s hand to hand chance to hit\n",
|
||||
L"+%d%s hand to hand damage\n",
|
||||
L"+%d%s chance to dodge hand to hand attacks\n",
|
||||
L"Eliminates the penalty to repair and handle\nelectronic things (locks, traps, rem. detonators, robot, etc.)\n",
|
||||
L"+%d to effective sight range in the dark\n",
|
||||
L"+%d to general effective hearing range\n",
|
||||
L"+%d extra hearing range in the dark\n",
|
||||
L"+%d to interrupts modifier in the dark\n",
|
||||
L"-%d need to sleep\n",
|
||||
L"+%d%s max range when throwing anything\n", // 10
|
||||
L"+%d%s chance to hit when throwing anything\n",
|
||||
L"+%d%s chance to instantly kill by throwing knife if not seen or heard\n",
|
||||
L"+%d%s bonus to militia training and other mercs instructing speed\n",
|
||||
L"+%d%s effective leadership for militia training calculations\n",
|
||||
L"+%d%s chance to hit with rocket/greande launchers and mortar\n",
|
||||
L"Auto fire/burst chance to hit penalty is divided by %d\n",
|
||||
L"Reduced chance for shooting unwanted bullets on autofire\n",
|
||||
L"+%d%s chance to move quietly\n",
|
||||
L"+%d%s stealth (being 'invisible' if unnoticed)\n",
|
||||
L"Eliminates the CtH penalty when firing two weapons at once\n", // 20
|
||||
L"+%d%s chance to hit with melee blades\n",
|
||||
L"+%d%s chance to dodge attacks by melee blades if having blade in hands\n",
|
||||
L"+%d%s chance to dodge attacks by melee blades if having anything else in hands\n",
|
||||
L"+%d%s chance to dodge hand to hand attacks if having blade in hands\n",
|
||||
L"-%d%s effective range to target with all weapons\n",
|
||||
L"+%d%s aiming bonus per aim click\n",
|
||||
L"Provides permanent camouflage\n",
|
||||
L"+%d%s hand to hand chance to hit\n",
|
||||
L"+%d%s hand to hand damage\n",
|
||||
L"+%d%s chance to dodge hand to hand attacks if having empty hands\n", // 30
|
||||
L"+%d%s chance to dodge hand to hand attacks if not having empty hands\n",
|
||||
L"+%d%s chance to dodge attacks by melee blades\n",
|
||||
L"Can perform spinning kick attack on weakened enemies to deal double damage\n",
|
||||
L"You gain special animations for hand to hand combat\n",
|
||||
L"No bonuses",
|
||||
};
|
||||
|
||||
STR16 gzIMPNewCharacterTraitsHelpTexts[]=
|
||||
{
|
||||
L"A: No advantage.\nD: No disadvantage.",
|
||||
L"A: Has better performance when couple of mercs are nearby.\nD: Gains no morale when no other merc is nearby.",
|
||||
L"A: Has better performance when no other merc is nearby.\nD: Gains no morale when in a group.",
|
||||
L"A: His morale sinks a little slower and grows faster than normal.\nD: Has lesser chance to detect traps and mines.",
|
||||
L"A: Has bonus on training militia and is better at communication with people.\nD: Gains no morale for actions of other mercs.",
|
||||
L"A: Slightly faster learning when assigned on practicing or as a student.\nD: Has lesser suppression and fear resistance.",
|
||||
L"A: His energy goes down a bit slower except on assignments as doctor, repairman, militia trainer or if learning certain skills.\nD: His wisdom, leadership, explosives, mechanical and medical skills improve slightly slower.",
|
||||
L"A: Has slightly better chance to hit on burst/autofire and inflicts slightly bigger damage in close combat\n Gains a little more morale for killing.\nD: Has penalty for actions which needs patience like repairing items, picking locks, removing traps, doctoring, training militia.",
|
||||
L"A: Has bonus for actions which needs patience like repairing items, picking locks, removing traps, doctoring and training militia.\nD: His interrupts chance is slightly lowered.",
|
||||
L"A: Incresed resistance to suppression and fear.\n Morale loss for taking damage and companions deaths is lower for him.\nD: Can be hit easier and enemy penalty for moving target is lesser in his case.",
|
||||
L"A: He gains morale when on non-combat assignments (except training militia).\nD: Gains no morale for killing.",
|
||||
L"A: Has bigger chance for inflicting stat loss and can inflict special painful wounds when able to\n Gains bonus morale for inflicting stat loss.\nD: Has penalty for communication with people and his morale sinks faster if not fighting.",
|
||||
L"A: Has better performance when there are some mercs of opposite gender nearby.\nD: Morale of other mercs of the same gender grows slower if nearby.",
|
||||
|
||||
};
|
||||
|
||||
STR16 gzIMPDisabilitiesHelpTexts[]=
|
||||
{
|
||||
L"No effects.",
|
||||
L"Has problems with breathing and reduced overall performance if in tropical or desert sectors.",
|
||||
L"Can suffer panic attack if left alone in certain situations.",
|
||||
L"His overall performance is reduced if underground.",
|
||||
L"If trying to swim he can easily drown.",
|
||||
L"A look at large insects can make a big problems\nand being in tropical sectors also reduce his performance a bit.",
|
||||
L"Sometimes forgets what orders he got and therefore loses some APs if in combat.",
|
||||
L"He can go psycho and shoot like mad once per a while\nand can lose morale if unable to do that with given weapon.",
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
STR16 gzIMPProfileCostText[]=
|
||||
{
|
||||
L"The profile cost is %d$. Do you authorize the payment? ",
|
||||
};
|
||||
|
||||
STR16 zGioNewTraitsImpossibleText[]=
|
||||
{
|
||||
L"You cannot choose the New Trait System with PROFEX utility deactivated. Check your JA2_Options.ini for entry: READ_PROFILE_DATA_FROM_XML.",
|
||||
};
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//@@@: New string as of March 3, 2000.
|
||||
STR16 gzIronManModeWarningText[]=
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#ifndef _JA25ENGLISHTEXT__H_
|
||||
#ifndef _JA25ENGLISHTEXT__H_
|
||||
#define _JA25ENGLISHTEXT__H_
|
||||
|
||||
|
||||
@@ -33,6 +33,45 @@ enum
|
||||
extern STR16 zNewTacticalMessages[];
|
||||
extern STR16 gzIMPSkillTraitsText[];
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
// added by SANDRO
|
||||
extern STR16 gzIMPSkillTraitsTextNewMajor[];
|
||||
extern STR16 gzIMPSkillTraitsTextNewMinor[];
|
||||
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsSniper[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsRanger[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsTechnician[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsDoctor[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsNone[];
|
||||
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsMelee[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsThrowing[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsStealthy[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsNightOps[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsAthletics[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsScouting[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsNone[];
|
||||
|
||||
extern STR16 gzIMPOldSkillTraitsHelpTexts[];
|
||||
|
||||
extern STR16 gzIMPNewCharacterTraitsHelpTexts[];
|
||||
|
||||
extern STR16 gzIMPDisabilitiesHelpTexts[];
|
||||
|
||||
extern STR16 gzIMPProfileCostText[];
|
||||
|
||||
extern STR16 zGioNewTraitsImpossibleText[];
|
||||
///////////////////////////////////////////////////////
|
||||
|
||||
enum
|
||||
{
|
||||
IMM__IRON_MAN_MODE_WARNING_TEXT,
|
||||
|
||||
+391
-1
@@ -1,4 +1,4 @@
|
||||
#pragma setlocale("FRENCH")
|
||||
//#pragma setlocale("FRENCH")
|
||||
#ifdef PRECOMPILEDHEADERS
|
||||
#include "Utils All.h"
|
||||
#include "_Ja25Frenchtext.h"
|
||||
@@ -44,6 +44,8 @@ STR16 zNewTacticalMessages[]=
|
||||
L"Pour pouvoir utiliser l'éditeur, veuillez choisir une autre campagne que celle par defaut.", ///@@new
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// SANDRO - New STOMP laptop strings
|
||||
//these strings match up with the defines in IMP Skill trait.cpp
|
||||
STR16 gzIMPSkillTraitsText[]=
|
||||
{
|
||||
@@ -64,7 +66,395 @@ STR16 gzIMPSkillTraitsText[]=
|
||||
|
||||
L"aucune",
|
||||
L"Spécialtés I.M.P.",
|
||||
L"(Expert)",
|
||||
|
||||
};
|
||||
|
||||
//added another set of skill texts for new major traits
|
||||
STR16 gzIMPSkillTraitsTextNewMajor[]=
|
||||
{
|
||||
L"Auto Weapons",
|
||||
L"Heavy Weapons",
|
||||
L"Marksman",
|
||||
L"Hunter",
|
||||
L"Gunslinger",
|
||||
L"Hand to Hand",
|
||||
L"Deputy",
|
||||
L"Technician",
|
||||
L"Paramedic",
|
||||
|
||||
L"None",
|
||||
L"I.M.P. Major Traits",
|
||||
// second names
|
||||
L"Machinegunner",
|
||||
L"Bombardier",
|
||||
L"Sniper",
|
||||
L"Ranger",
|
||||
L"Gunfighter",
|
||||
L"Martial Arts",
|
||||
L"Squadleader",
|
||||
L"Engineer",
|
||||
L"Doctor",
|
||||
};
|
||||
|
||||
//added another set of skill texts for new minor traits
|
||||
STR16 gzIMPSkillTraitsTextNewMinor[]=
|
||||
{
|
||||
L"Ambidextrous",
|
||||
L"Melee",
|
||||
L"Throwing",
|
||||
L"Night Ops",
|
||||
L"Stealthy",
|
||||
L"Athletics",
|
||||
L"Bodybuilding",
|
||||
L"Demolitions",
|
||||
L"Teaching",
|
||||
L"Scouting",
|
||||
|
||||
L"None",
|
||||
L"I.M.P. Minor Traits",
|
||||
};
|
||||
|
||||
//these texts are for help popup windows, describing trait properties
|
||||
STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]=
|
||||
{
|
||||
L"+%d%s Chance to Hit with Assault Rifles\n",
|
||||
L"+%d%s Chance to Hit with SMGs\n",
|
||||
L"+%d%s Chance to Hit with LMGs\n",
|
||||
L"-%d%s APs needed to fire with LMGs\n",
|
||||
L"-%d%s APs needed to ready light machine guns\n",
|
||||
L"Auto fire/burst chance to hit penalty is reduced by %d%s\n",
|
||||
L"Reduced chance for shooting unwanted bullets on autofire\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]=
|
||||
{
|
||||
L"-%d%s APs needed to fire grenade launchers\n",
|
||||
L"-%d%s APs needed to fire rocket launchers\n",
|
||||
L"+%d%s chance to hit with grenade launchers\n",
|
||||
L"+%d%s chance to hit with rocket launchers\n",
|
||||
L"-%d%s APs needed to fire mortar\n",
|
||||
L"Reduce penalty for mortar CtH by %d%s\n",
|
||||
L"+%d%s damage to tanks with heavy weapons, grenades and explosives\n",
|
||||
L"+%d%s damage to other targets with heavy weapons\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsSniper[]=
|
||||
{
|
||||
L"+%d%s Chance to Hit with Rifles\n",
|
||||
L"+%d%s Chance to Hit with Sniper Rifles\n",
|
||||
L"-%d%s effective range to target with all weapons\n",
|
||||
L"+%d%s aiming bonus per aim click (except for handguns)\n",
|
||||
L"+%d%s damage on shot",
|
||||
L" plus",
|
||||
L" per every aim click",
|
||||
L" after first",
|
||||
L" after second",
|
||||
L" after third",
|
||||
L" after fourth",
|
||||
L" after fifth",
|
||||
L" after sixth",
|
||||
L" after seventh",
|
||||
L"-%d%s APs needed to chamber a round with bolt-action rifles \n",
|
||||
L"Adds one more aim click for rifle-type guns\n",
|
||||
L"Adds %d more aim clicks for rifle-type guns\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsRanger[]=
|
||||
{
|
||||
L"+%d%s Chance to Hit with Rifles\n",
|
||||
L"+%d%s Chance to Hit with Shotguns\n",
|
||||
L"-%d%s APs needed to pump Shotguns\n",
|
||||
L"+%d%s group travelling speed between sectors if traveling by foot\n",
|
||||
L"+%d%s group travelling speed between sectors if traveling in vehicle (except helicopter)\n",
|
||||
L"-%d%s less energy spent for travelling between sectors\n",
|
||||
L"-%d%s weather penalties\n",
|
||||
L"+%d%s camouflage effectiveness\n",
|
||||
L"-%d%s worn out speed of camouflage by water or time\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsGunslinger[]=
|
||||
{
|
||||
L"-%d%s APs needed to fire with pistols and revolvers\n",
|
||||
L"+%d%s effective range with pistols and revolvers\n",
|
||||
L"+%d%s chance to hit with pistols and revolvers\n",
|
||||
L"+%d%s chance to hit with machine pistols",
|
||||
L" (on single shots only)",
|
||||
L"+%d%s aiming bonus per click with pistols, machine pistols and revolvers\n",
|
||||
L"-%d%s APs needed to raise pistols and revolvers\n",
|
||||
L"-%d%s APs needed to reload pistols, machine pistols and revolvers\n",
|
||||
L"Adds %d more aim click for pistols, machine pistols and revolvers\n",
|
||||
L"Adds %d more aim clicks for pistols, machine pistols and revolvers\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsMartialArts[]=
|
||||
{
|
||||
L"-%d%s AP cost of hand to hand attacks(bare hands or with brass knuckles)\n",
|
||||
L"+%d%s chance to hit with hand to hand attacks with bare hands\n",
|
||||
L"+%d%s chance to hit with hand to hand attacks with brass knuckles\n",
|
||||
L"+%d%s damage of hand to hand attacks(bare hands or with brass knuckles)\n",
|
||||
L"+%d%s breath damage of hand to hand attacks(bare hands or with brass knuckles)\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes slightly longer to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes longer to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes much longer to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes very long to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes extremely long to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes long hours to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks probably never stand up\n",
|
||||
L"Focused (aimed) punch deals +%d%s more damage\n",
|
||||
L"Your special spinning kick deals +%d%s more damage\n",
|
||||
L"+%d%s change to dodge hand to hand attacks\n",
|
||||
L"+%d%s on top chance to dodge HtH attacks with bare hands",
|
||||
L" or brass knuckles",
|
||||
L" (+%d%s with brass knuckles)",
|
||||
L"+%d%s on top chance to dodge HtH attacks with brass knuckles\n",
|
||||
L"+%d%s chance to dodge attacks by any melee weapon\n",
|
||||
L"-%d%s APs needed to steal weapon from enemy hands\n",
|
||||
L"-%d%s APs needed to change state (stand, crouch, lie down), turn around, climb on/off roof and jump obstacles\n",
|
||||
L"-%d%s APs needed to change state (stand, crouch, lie down)\n",
|
||||
L"-%d%s APs needed to turn around\n",
|
||||
L"-%d%s APs needed to climb on/off roof and jump obstacles\n",
|
||||
L"+%d%s chance to kick doors\n",
|
||||
L"You gain special animations for hand to hand combat\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsSquadleader[]=
|
||||
{
|
||||
L"+%d%s APs per round of other mercs in vicinity\n",
|
||||
L"+%d effective exp level of other mercs in vicinity, which have lesser level than the %s\n",
|
||||
L"+%d effective exp level to count as a standby when counting friends' bonus for suppression\n",
|
||||
L"+%d%s total suppression tolerance of other mercs in vicinity and %s himself\n",
|
||||
L"+%d morale gain of other mercs in vicinity\n",
|
||||
L"-%d morale loss of other mercs in vicinity\n",
|
||||
L"The vicinity for bonuses is %d tiles",
|
||||
L" (%d tiles with extended ears)",
|
||||
L"(Max simultaneous bonuses for one soldier is %d)\n",
|
||||
L"+%d%s fear resistence of %s\n",
|
||||
L"Drawback: %dx morale loss for %s's death for all other mercs\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsTechnician[]=
|
||||
{
|
||||
L"+%d%s to repairing speed\n",
|
||||
L"+%d%s to lockpicking (normal/electronic locks)\n",
|
||||
L"+%d%s to disarming electronic traps\n",
|
||||
L"+%d%s to attaching special items and combining things\n",
|
||||
L"+%d%s to unjamming a gun in combat\n",
|
||||
L"Reduce penalty to repair electronic items by %d%s\n",
|
||||
L"Increased chance to detect traps and mines (+%d detect level)\n",
|
||||
L"+%d%s CtH of robot controlled by the %s\n",
|
||||
L"%s trait grants you the ability to repair the robot\n",
|
||||
L"Reduced penalty to repair speed of the robot by %d%s\n",
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsDoctor[]=
|
||||
{
|
||||
L"Has ability to make surgical intervention by using medical bag on wounded soldier\n",
|
||||
L"Surgery instantly returns %d%s of lost health back.",
|
||||
L" (This drains the medical bag a lot.)",
|
||||
L"Can heal lost stats (from critical hits) by the",
|
||||
L" surgery or",
|
||||
L" doctor assignment.\n",
|
||||
L"+%d%s effectiveness on doctor-patient assignment\n",
|
||||
L"+%d%s bandaging speed\n",
|
||||
L"+%d%s natural regeneration speed of all soldiers in the same sector",
|
||||
L" (max %d these bonuses per sector)",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"No bonuses",
|
||||
};
|
||||
|
||||
STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]=
|
||||
{
|
||||
L"Reduce penalty to shoot dual weapons by %d%s\n",
|
||||
L"+%d%s speed of reloading guns with magazines\n",
|
||||
L"+%d%s speed of reloading guns with loose rounds\n",
|
||||
L"-%d%s APs needed to pickup items\n",
|
||||
L"-%d%s APs needed to work backpack\n",
|
||||
L"-%d%s APs needed to handle doors\n",
|
||||
L"-%d%s APs needed to plant/remove bombs and mines\n",
|
||||
L"-%d%s APs needed to attach items\n",
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsMelee[]=
|
||||
{
|
||||
L"-%d%s APs needed to attack by blades\n",
|
||||
L"+%d%s chance to hit with blades\n",
|
||||
L"+%d%s chance to hit with blunt melee weapons\n",
|
||||
L"+%d%s damage of blades\n",
|
||||
L"+%d%s damage of blunt melee weapons\n",
|
||||
L"Aimed attack by any melee weapon deals +%d%s damage\n",
|
||||
L"+%d%s chance to dodge attack by melee blades\n",
|
||||
L"+%d%s on top chance to dodge melee blades if having a blade in hands\n",
|
||||
L"+%d%s chance to dodge attack by blunt melee weapons\n",
|
||||
L"+%d%s on top chance to dodge blunt melee weapons if having a blade in hands\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsThrowing[]=
|
||||
{
|
||||
L"-%d%s basic APs needed to throw blades\n",
|
||||
L"+%d%s max range when throwing blades\n",
|
||||
L"+%d%s chance to hit when throwing blades\n",
|
||||
L"+%d%s chance to hit when throwing blades per aim click\n",
|
||||
L"+%d%s damage of throwing blades\n",
|
||||
L"+%d%s damage of throwing blades per aim click\n",
|
||||
L"+%d%s chance to inflict critical hit by throwing blade if not seen or heard\n",
|
||||
L"+%d critical hit by throwing blade multiplier\n",
|
||||
L"Adds %d more aim click for throwing blades\n",
|
||||
L"Adds %d more aim clicks for throwing blades\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsNightOps[]=
|
||||
{
|
||||
L"+%d to effective sight range in dark\n",
|
||||
L"+%d to general effective hearing range\n",
|
||||
L"+%d to effective hearing range in dark on top\n",
|
||||
L"+%d to interrupts modifier in dark\n",
|
||||
L"-%d need to sleep\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsStealthy[]=
|
||||
{
|
||||
L"-%d%s APs needed to move quietly\n",
|
||||
L"+%d%s chance to move quietly\n",
|
||||
L"+%d%s stealth (being 'invisible' if unnoticed)\n",
|
||||
L"Reduced cover penalty for movement by %d%s\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsAthletics[]=
|
||||
{
|
||||
L"-%d%s APs needed for moving (running, walking, swatting, crawling, swimming, etc.)\n",
|
||||
L"-%d%s energy spent for movement, roof-climbing, obstacle-jumping, swimming, etc.\n",
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]=
|
||||
{
|
||||
L"Has %d%s damage resistance\n",
|
||||
L"+%d%s effective strength for carrying weight capacity \n",
|
||||
L"Reduced energy lost when hit by HtH attack by %d%s\n",
|
||||
L"Increased damage needed to fall down if hit to legs by %d%s\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsDemolitions[]=
|
||||
{
|
||||
L"-%d%s APs needed to throw grenades\n",
|
||||
L"+%d%s max range when throwing grenades\n",
|
||||
L"+%d%s chance to hit when throwing grenades\n",
|
||||
L"+%d%s damage of set bombs and mines\n",
|
||||
L"+%d%s to attaching detonators check\n",
|
||||
L"+%d%s to planting/removing bombs check\n",
|
||||
L"Decreases chance enemy will detect your bombs and mines (+%d bomb level)\n",
|
||||
L"Increased chance shaped charge will open the doors (damage multiplied by %d)\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsTeaching[]=
|
||||
{
|
||||
L"+%d%s bonus to train militia\n",
|
||||
L"+%d%s bonus to effective leadership for determining militia training\n",
|
||||
L"+%d%s bonus to teaching other mercs\n",
|
||||
L"Skill value counts to be +%d higher for being able to teach this skill to other mercs\n",
|
||||
L"+%d%s bonus to train stats through self-practising assignment\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsScouting[]=
|
||||
{
|
||||
L"+%d to effective sight range with scopes on weapons\n",
|
||||
L"+%d to effective sight range with binoculars (and scopes separated from weapons)\n",
|
||||
L"-%d tunnel vision with binoculars (and scopes separated from weapons)\n",
|
||||
L"If in sector, adjacent sectors will show exact number of enemies\n",
|
||||
L"If in sector, adjacent sectors will show presence of enemies if any\n",
|
||||
L"Prevents the enemy to ambush your squad\n",
|
||||
L"Prevents the bloodcats to ambush your squad\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"No bonuses",
|
||||
};
|
||||
|
||||
STR16 gzIMPOldSkillTraitsHelpTexts[]=
|
||||
{
|
||||
L"+%d%s bonus to lockpicking\n", // 0
|
||||
L"+%d%s hand to hand chance to hit\n",
|
||||
L"+%d%s hand to hand damage\n",
|
||||
L"+%d%s chance to dodge hand to hand attacks\n",
|
||||
L"Eliminates the penalty to repair and handle\nelectronic things (locks, traps, rem. detonators, robot, etc.)\n",
|
||||
L"+%d to effective sight range in dark\n",
|
||||
L"+%d to general effective hearing range\n",
|
||||
L"+%d to effective hearing range in dark on top\n",
|
||||
L"+%d to interrupts modifier in dark\n",
|
||||
L"-%d need to sleep\n",
|
||||
L"+%d%s max range when throwing anything\n", // 10
|
||||
L"+%d%s chance to hit when throwing anything\n",
|
||||
L"+%d%s chance to instantly kill by throwing knife if not seen or heard\n",
|
||||
L"+%d%s bonus to train militia and instruct other mercs\n",
|
||||
L"+%d%s effective leadership for militia training calculations\n",
|
||||
L"+%d%s chance to hit with rocket/greande launchers and mortar\n",
|
||||
L"Auto fire/burst chance to hit penalty is divided by %d\n",
|
||||
L"Reduced chance for shooting unwanted bullets on autofire\n",
|
||||
L"+%d%s chance to move quietly\n",
|
||||
L"+%d%s stealth (being 'invisible' if unnoticed)\n",
|
||||
L"Eliminates the CtH penalty for second hand when firing two weapons at once\n", // 20
|
||||
L"+%d%s chance to hit with melee blades\n",
|
||||
L"+%d%s chance to dodge attacks by melee blades if having blade in hands\n",
|
||||
L"+%d%s chance to dodge attacks by melee blades if having anything else in hands\n",
|
||||
L"+%d%s chance to dodge hand to hand attacks if having blade in hands\n",
|
||||
L"-%d%s effective range to target with all weapons\n",
|
||||
L"+%d%s aiming bonus per aim click\n",
|
||||
L"Provides permanent camouflage\n",
|
||||
L"+%d%s hand to hand chance to hit\n",
|
||||
L"+%d%s hand to hand damage\n",
|
||||
L"+%d%s chance to dodge hand to hand attacks if having empty hands\n", // 30
|
||||
L"+%d%s chance to dodge hand to hand attacks if not having empty hands\n",
|
||||
L"+%d%s chance to dodge attacks by melee blades\n",
|
||||
L"Can perform spinning kick attack on weakened enemies to deal double damage\n",
|
||||
L"You gain special animations for hand to hand combat\n",
|
||||
L"No bonuses",
|
||||
};
|
||||
|
||||
STR16 gzIMPNewCharacterTraitsHelpTexts[]=
|
||||
{
|
||||
L"A: No advantage.\nD: No disadvantage.",
|
||||
L"A: Has better performance when couple of mercs are nearby.\nD: Gains no morale when no other merc is nearby.",
|
||||
L"A: Has better performance when no other merc is nearby.\nD: Gains no morale when in a group.",
|
||||
L"A: His morale sinks a little slower and grows faster than normal.\nD: Has lesser chance to detect traps and mines.",
|
||||
L"A: Has bonus on training militia and is better at communication with people.\nD: Gains no morale for actions of other mercs.",
|
||||
L"A: Slightly faster learning when assigned on practicing or as a student.\nD: Has lesser suppression and fear resistance.",
|
||||
L"A: His energy goes down a bit slower except on assignments as doctor, repairman, militia trainer or if learning certain skills.\nD: His wisdom, leadership, explosives, mechanical and medical skills improve slightly slower.",
|
||||
L"A: Has slightly better chance to hit on burst/autofire and inflicts slightly bigger damage in close combat\n Gains a little more morale for killing.\nD: Has penalty for actions which needs patience like repairing items, picking locks, removing traps, doctoring, training militia.",
|
||||
L"A: Has bonus for actions which needs patience like repairing items, picking locks, removing traps, doctoring and training militia.\nD: His interrupts chance is slightly lowered.",
|
||||
L"A: Incresed resistance to suppression and fear.\n Morale loss for taking damage and companions deaths is lower for him.\nD: Can be hit easier and enemy penalty for moving target is lesser in his case.",
|
||||
L"A: He gains morale when on non-combat assignments (except training militia).\nD: Gains no morale for killing.",
|
||||
L"A: Has bigger chance for inflicting stat loss and can inflict special painful wounds when able to\n Gains bonus morale for inflicting stat loss.\nD: Has penalty for communication with people and his morale sinks faster if not fighting.",
|
||||
L"A: Has better performance when there are some mercs of opposite gender nearby.\nD: Morale of other mercs of the same gender grows slower if nearby.",
|
||||
|
||||
};
|
||||
|
||||
STR16 gzIMPDisabilitiesHelpTexts[]=
|
||||
{
|
||||
L"No effects.",
|
||||
L"Has problems with breathing and reduced overall performance if in tropical or desert sectors.",
|
||||
L"Can suffer panic attack if left alone in certain situations.",
|
||||
L"His overall performance is reduced if underground.",
|
||||
L"If trying to swim he can easily drown.",
|
||||
L"A look at large insects can make a big problems\nand being in tropical sectors also reduce his performance a bit.",
|
||||
L"Sometimes forgets what orders he got and therefore loses some APs if in combat.",
|
||||
L"He can go psycho and shoot like mad once per a while\nand can lose morale if unable to do that with given weapon.",
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
STR16 gzIMPProfileCostText[]=
|
||||
{
|
||||
L"The profile cost is %d$. Do you authorize the payment? ",
|
||||
};
|
||||
|
||||
STR16 zGioNewTraitsImpossibleText[]=
|
||||
{
|
||||
L"You cannot choose the New Trait System with PROFEX utility deactivated. Check your JA2_Options.ini for entry: READ_PROFILE_DATA_FROM_XML.",
|
||||
};
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//@@@: New string as of March 3, 2000.
|
||||
STR16 gzIronManModeWarningText[]=
|
||||
{
|
||||
|
||||
@@ -32,6 +32,45 @@ enum
|
||||
extern STR16 zNewTacticalMessages[];
|
||||
extern STR16 gzIMPSkillTraitsText[];
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
// added by SANDRO
|
||||
extern STR16 gzIMPSkillTraitsTextNewMajor[];
|
||||
extern STR16 gzIMPSkillTraitsTextNewMinor[];
|
||||
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsSniper[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsRanger[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsTechnician[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsDoctor[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsNone[];
|
||||
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsMelee[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsThrowing[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsStealthy[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsNightOps[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsAthletics[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsScouting[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsNone[];
|
||||
|
||||
extern STR16 gzIMPOldSkillTraitsHelpTexts[];
|
||||
|
||||
extern STR16 gzIMPNewCharacterTraitsHelpTexts[];
|
||||
|
||||
extern STR16 gzIMPDisabilitiesHelpTexts[];
|
||||
|
||||
extern STR16 gzIMPProfileCostText[];
|
||||
|
||||
extern STR16 zGioNewTraitsImpossibleText[];
|
||||
///////////////////////////////////////////////////////
|
||||
|
||||
enum
|
||||
{
|
||||
IMM__IRON_MAN_MODE_WARNING_TEXT,
|
||||
|
||||
+399
-6
@@ -1,11 +1,13 @@
|
||||
#pragma setlocale("GERMAN")
|
||||
//#pragma setlocale("GERMAN")
|
||||
#ifdef PRECOMPILEDHEADERS
|
||||
#include "Utils All.h"
|
||||
#include "_Ja25GermanText.h"
|
||||
#else
|
||||
#include "Language Defines.h"
|
||||
#include "text.h"
|
||||
#include "Fileman.h"
|
||||
#ifdef GERMAN
|
||||
#include "text.h"
|
||||
#include "Fileman.h"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible
|
||||
@@ -42,6 +44,8 @@ STR16 zNewTacticalMessages[]=
|
||||
L"Um den Editor zu benutzen, müssen Sie eine andere als die Standardkampgane auswählen.",
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// SANDRO - New STOMP laptop strings
|
||||
//these strings match up with the defines in IMP Skill trait.cpp
|
||||
STR16 gzIMPSkillTraitsText[]=
|
||||
{
|
||||
@@ -52,7 +56,7 @@ STR16 gzIMPSkillTraitsText[]=
|
||||
L"Werfen",
|
||||
L"Lehren",
|
||||
L"Schwere Waffen",
|
||||
L"Automatische Waffen",
|
||||
L"Autom. Waffen",
|
||||
L"Schleichen",
|
||||
L"Beidhändig geschickt",
|
||||
L"Messer",
|
||||
@@ -61,13 +65,402 @@ STR16 gzIMPSkillTraitsText[]=
|
||||
L"Kampfsport",
|
||||
|
||||
L"Keine",
|
||||
L"B.S.E. Persönlichkeiten",
|
||||
L"B.S.E. - Spezialisierungen",
|
||||
L"(Experte)",
|
||||
};
|
||||
|
||||
//added another set of skill texts for new major traits
|
||||
STR16 gzIMPSkillTraitsTextNewMajor[]=
|
||||
{
|
||||
L"MG-Schütze", //LOOTF - Alle Namen sehr gewagt, aber wenigstens volldeutsch.
|
||||
L"Grenadier" ,
|
||||
L"Präzisionsschütze",
|
||||
L"Pfadfinder",
|
||||
L"Pistolenschütze", //Option: Pistolenschütze
|
||||
L"Faustkämpfer",
|
||||
L"Gruppenführer", //GrpFhr und ZgFhr sind scheiße, aber mir fällt ohne Dienstgrade nüscht ein
|
||||
L"Mechaniker", //Option: Techniker
|
||||
L"Sanitäter", //Option: Rettungsassistent
|
||||
|
||||
L"Nichts",
|
||||
L"B.S.E. Hauptfertigkeiten",
|
||||
|
||||
// second names
|
||||
L"MG-Veteran", //Option "MG-Veteran"?
|
||||
L"Artillerist",
|
||||
L"Scharfschütze",
|
||||
L"Jäger", //"Ranger" ist toll, aber nicht wirklich deutsch
|
||||
L"Revolverheld",
|
||||
L"Kampfsportler", //Kung-Fu-Typ ohne Nennung von Kung-Fu oder Wu-Shu oder derart Zeug, PS: KampfSPORTLER ist kacke
|
||||
L"Zugführer",
|
||||
L"Ingenieur",
|
||||
L"Arzt",
|
||||
};
|
||||
|
||||
//added another set of skill texts for new minor traits
|
||||
STR16 gzIMPSkillTraitsTextNewMinor[]=
|
||||
{
|
||||
L"Beidhänder", // alt. "Beidhändig geschickt"
|
||||
L"Messerkämpfer", // alt. "Hieb- und Stichwaffen" //gesucht: Begriff für Nahkampfwaffenkämpfer
|
||||
L"Messerwerfer", // alt. "Wurfwaffen"
|
||||
L"Nachtmensch", // alt. "Nachteinsatz"
|
||||
L"Schleicher", // alt. "Schleichen"
|
||||
L"Läufer", // alt. "Athletisch"
|
||||
L"Kraftsportler", // alt. "Bodybuilding"
|
||||
L"Sprengmeister", // alt. "Kampfmittel"
|
||||
L"Ausbilder", // alt. "Lehren"
|
||||
L"Aufklärer", // alt. "Spähen"
|
||||
|
||||
L"Keine",
|
||||
L"B.S.E. Nebenfertigkeiten",
|
||||
};
|
||||
|
||||
//these texts are for help popup windows, describing trait properties
|
||||
STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]=
|
||||
{
|
||||
L"+%d%s Trefferchance mit Sturmgewehren\n",
|
||||
L"+%d%s Trefferchance mit Maschinenpistolen\n",
|
||||
L"+%d%s Trefferchance mit Maschinengewehren\n",
|
||||
L"-%d%s APs benötigt für MG-Feuerstöße (Burst/Auto) abzugeben\n",
|
||||
L"-%d%s APs benötigt um Maschinengewehre auszurichten\n",
|
||||
L"Trefferratenabzug bei Feuerstößen reduziert um %d%s\n",
|
||||
L"Reduzierte Chance bei Feuerstößen ungewollt mehr Schüsse abzugeben\n",
|
||||
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]=
|
||||
{
|
||||
L"-%d%s APs benötigt um Granatwerfer abzufeuern\n",
|
||||
L"-%d%s APs benötigt um Raketenwerfer abzufeuern\n",
|
||||
L"+%d%s Trefferchance mit Granatwerfern\n",
|
||||
L"+%d%s Trefferchance mit Raketenwerfern\n",
|
||||
L"-%d%s APs benötigt für den Abschuss von Mörsergranaten\n",
|
||||
L"Trefferchancenreduktion für Mörser gesenkt um %d%s\n",
|
||||
L"+%d%s Schaden an Panzern mit schweren Waffen, Granaten und Bomben\n",
|
||||
L"+%d%s schaden an allen anderen Zielen mit schweren Waffen\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsSniper[]=
|
||||
{
|
||||
L"+%d%s Trefferchance mit Gewehren\n",
|
||||
L"+%d%s Trefferchance mit Scharfschützengewehren\n",
|
||||
L"-%d%s effektive Reichweite zum Ziel mit allen Waffen\n",
|
||||
L"+%d%s Zielbonus pro Zielerfassungs-Klick (außer für Faustfeuerwaffen)\n",
|
||||
L"+%d%s Schaden pro Schuss",
|
||||
L" plus",
|
||||
L" für jeden Zielerfassungs-Klick",
|
||||
L" nach dem ersten",
|
||||
L" nach dem zweiten",
|
||||
L" nach dem dritten",
|
||||
L" nach dem vierten",
|
||||
L" nach dem fünften",
|
||||
L" nach dem sechsten",
|
||||
L" nach dem siebenten",
|
||||
L"-%d%s APs benötigt um ein Repetiergewehr erneut fertigzuladen.\n",
|
||||
L"Gibt einen weiteren Ziel-Klick für gewehrartige Waffen\n",
|
||||
L"Gibt weitere %d Ziel-Klicks für gewehrartige Waffen\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsRanger[]=
|
||||
{
|
||||
L"+%d%s Trefferchance mit Gewehren\n",
|
||||
L"+%d%s Trefferchance mit Schrotflinten\n",
|
||||
L"-%d%s APs gebraucht um Schrotflinten zu repetieren\n",
|
||||
L"+%d%s Marschgeschwindigkeit der Gruppe zwischen Sektoren zu Fuß\n",
|
||||
L"+%d%s Marschgeschwindigkeit der Gruppe zwischen Sektoren bei Benutzung von Fahrzeugen (außer dem Helikopter)\n",
|
||||
L"-%d%s weniger Energieverlust beim Reisen zwischen Sektoren\n",
|
||||
L"-%d%s Einfluss durch schlechtes Wetter\n",
|
||||
L"+%d%s Tarnungs-Effektivität\n",
|
||||
L"-%d%s Abnutzung von Gesichtstarnung durch Wasser oder Zeit\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsGunslinger[]=
|
||||
{
|
||||
L"-%d%s APs benötigt um mit Pistolen oder Revolvern zu schießen\n",
|
||||
L"+%d%s effektive Reichweite mit Pistolen und Revolvern\n",
|
||||
L"+%d%s Trefferchance mit mit Pistolen und Revolvern\n",
|
||||
L"+%d%s Trefferchance mit vollautomatischen Pistolen",
|
||||
L" (nur bei Einzelfeuer)",
|
||||
L"+%d%s Zielbonus pro Klick mit Pistolen, vollautomatischen Pistolen und Revolvern\n",
|
||||
L"-%d%s APs benötigt um Pistolen und Revolver in Vorhalte zu bringe\n",
|
||||
L"-%d%s APs benötigt um Pistolen, vollautomatische Pistolen und Revolver nachzuladen\n",
|
||||
L"Gibt für Pistolen, vollautomatische Pistolen und Revolver einen weiteren Zielklick\n",
|
||||
L"%d weiteren Zielklick für Pistolen, vollautomatische Pistolen und Revolver\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsMartialArts[]=
|
||||
{
|
||||
L"-%d%s AP-Kosten für den Faustkampf (bloße Hände oder mit Schlagring)\n",
|
||||
L"+%d%s Trefferchance bei Nahkampfangriffen mit bloßen Händen\n",
|
||||
L"+%d%s Trefferchance bei Nahkampfangriffen mit dem Schlagring\n",
|
||||
L"+%d%s Schaden im Faustkampf (bloße Hände oder mit Schlagring)\n",
|
||||
L"+%d%s Ausdauerschaden im Faustkampf (bloße Hände oder mit Schlagring)\n",
|
||||
L"Ein im Nahkampf niedergestreckter Gegner braucht etwas länger um sich zu erholen\n",
|
||||
L"Ein im Nahkampf niedergestreckter Gegner braucht länger um sich zu erholen\n",
|
||||
L"Ein im Nahkampf niedergestreckter Gegner braucht deutlich länger um sich zu erholen\n",
|
||||
L"Ein im Nahkampf niedergestreckter Gegner braucht viel länger um sich zu erholen\n",
|
||||
L"Ein im Nahkampf niedergestreckter Gegner braucht sehr viel länger um sich zu erholen\n",
|
||||
L"Ein im Nahkampf niedergestreckter Gegner schläft wie ein Baby bevor er sich erholt\n",
|
||||
L"Ein im Nahkampf niedergestreckter Gegner steht vermutlich erstmal gar nicht mehr auf\n",
|
||||
L"Ein gezielter Schlag richtet +%d%s mehr Schaden an\n",
|
||||
L"Ein gezielter Tornadotritt richtet +%d%s mehr Schaden an\n",
|
||||
L"+%d%s Chance, Schlägen und Tritten auszuweichen\n",
|
||||
L"Dazu +%d%s Chance mit freien Händen",
|
||||
L" oder nur mit Schlagring",
|
||||
L" (+%d%s mit Schlagring)",
|
||||
L"+Dazu %d%s Chance, Schlägen und Tritten mit ausgerüstetem Schlagring auszuweichen\n",
|
||||
L"+%d%s Chance einem Angriff mit einer beliebigen Nahkampfwaffe auszuweichen\n",
|
||||
L"-%d%s APs benötigt um einen Gegner zu entwaffnen\n",
|
||||
L"-%d%s APs benötigt um die Körperhaltung zu ändern, sich umzudrehen, auf oder von Dächern zu klettern und Hindernisse zu überspringen\n",
|
||||
L"-%d%s APs benötigt um die Körperhaltung zu ändern (stehen, ducken, liegen)\n",
|
||||
L"-%d%s APs benötigt um sich umzudrehen\n",
|
||||
L"-%d%s APs benötigt um auf oder von Dächern zu klettern und Hindernisse zu überspringen\n",
|
||||
L"+%d%s Chance eine Tür erfolgreich einzutreten\n",
|
||||
L"Sie erhalten besondere Kung-Fu-Animationen für den Nahkampf\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsSquadleader[]=
|
||||
{
|
||||
L"+%d%s APs pro Runde für die umgebenden Söldner innerhalb des Einflussbereichs\n",
|
||||
L"+%d effektiven Erfahrungslevel für umgebende Söldner im Einflussbereich mit weniger Erfahrungsgrad als der %s\n",
|
||||
L"+%d auf den Erfahrungslevel beim Berechnen des Gruppeneffekts auf Unterdrückungsfeuer\n",
|
||||
L"+%d%s Resistenz gegen Unterdrückungsfeuer für jeden Söldner im Einflussbereich, auch den %s\n",
|
||||
L"+%d Moralgewinn für umgebende Söldner innerhalb des Einflussbereichs\n",
|
||||
L"-%d Moralverlust für umgebende Söldner innerhalb des Einflussbereichs\n",
|
||||
L"Der Einflussbereich hat einen Radius von %d Feldern",
|
||||
L" (%d Felder mit Kopfhörer-Funkgerät)",
|
||||
L"(Maximal auf einen Söldner wirkende Boni: %d )\n",
|
||||
L"+%d%s Resistenz gegen Angst für %s\n",
|
||||
L"Nachteil: %dx Moralverlust bei Tod des %ss für alle anderen Söldner\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsTechnician[]=
|
||||
{
|
||||
L"+%d%s schnellere Reparaturen\n",
|
||||
L"+%d%s mehr Erfolg beim Knacken normaler und elektronischer Schlösser\n",
|
||||
L"+%d%s mehr Erfolg beim Entschärfen elektronischer Fallen\n",
|
||||
L"+%d%s mehr Erfolg beim Anbringen besonderer Gegenstände und Verbinden von Gerätschaften\n",
|
||||
L"+%d%s mehr Erfolg beim Beheben von Waffenstörungen im Gefecht\n",
|
||||
L"Der Malus beim Reparieren elektronischer Gegenstände wird um %d%s gesenkt\n",
|
||||
L"Erhöhte Chance, Fallen und Minen zu entdecken (+%d zum Erkennungslevel)\n",
|
||||
L"+%d%s Trefferchance des Roboters, wenn vom %s gesteuert\n",
|
||||
L"Der %s kann den Roboter reparieren\n",
|
||||
L"%d%s Reduzierung des Geschwindigkeitsabzugs beim Reparieren des Roboters\n",
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsDoctor[]=
|
||||
{
|
||||
L"Kann chirurgisch operieren (Benutzung eines Arztkoffers auf einen verletzten Söldner)\n",
|
||||
L"Die Operation stellt sofort %d%s der verlorenen Lebenspunkte wieder her.",
|
||||
L" (Dieser Vorgang verbraucht einen Großteil des Arztkoffers.)",
|
||||
L"Kann verlorene Attributpunkte (von kritischen Treffern) durch",
|
||||
L" eine Operation oder",
|
||||
L" den Auftrag 'Doktor' wiederherstellen.\n",
|
||||
L"+%d%s bessere Heilungsrate beim Einsatz am Patienten\n",
|
||||
L"+%d%s schnelleres Anlegen von Wundverbänden\n",
|
||||
L"+%d%s natürliche Regenerationsrate aller Söldner im selben Sektor",
|
||||
L" (maximal %d Instanzen dieses Bonus pro Sektor)",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"Keine Boni",
|
||||
};
|
||||
|
||||
STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]=
|
||||
{
|
||||
L"Die Ungenauigkeit beim Schießen mit zwei Waffen wird um %d%s reduziert\n",
|
||||
L"+%d%s schnelleres Nachladen mit Magazinen\n",
|
||||
L"+%d%s schnelleres Nachladen mit einzelnen Patronen\n",
|
||||
L"-%d%s APs benötigt um Gegenstände aufzuheben\n",
|
||||
L"-%d%s APs benötigt für die Handhabe des Rucksacks\n",
|
||||
L"-%d%s APs benötigt um mit Türen zu interagieren\n",
|
||||
L"-%d%s APs benötigt um Bomben und Minen zu legen oder zu entschärfen\n",
|
||||
L"-%d%s APs needed to attach items\n",
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsMelee[]=
|
||||
{
|
||||
L"-%d%s APs benötigt für den Angriff mit Klingenwaffen\n",
|
||||
L"+%d%s Trefferchance mit Klingenwaffen\n",
|
||||
L"+%d%s Trefferchance mit Schlagwaffen\n",
|
||||
L"+%d%s Schaden mit Klingenwaffen\n",
|
||||
L"+%d%s Schaden mit Schlagwaffen\n",
|
||||
L"Ein gezielter Hieb mit einer Nahkampfwaffe richtet %d%s mehr Schaden an\n",
|
||||
L"+%d%s Chance Angriffen durch Klingenwaffen auszuweichen\n",
|
||||
L"Dazu +%d%s Chance Klingenwaffen auszuweichen wenn man selber eine in der Hand hat\n",
|
||||
L"+%d%s Chance Angriffen durch Schlagwaffen auszuweichen\n",
|
||||
L"Dazu +%d%s Chance Schlagwaffen auszuweichen wenn man eine Klingenwaffe führt\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsThrowing[]=
|
||||
{
|
||||
L"-%d%s Basis-APs benötigt für den Angriff mit Wurfwaffen\n",
|
||||
L"+%d%s maximale Reichweite beim Einsatz von Wurfwaffen\n",
|
||||
L"+%d%s Trefferchance mit Wurfwaffen\n",
|
||||
L"+%d%s Trefferchance mit Wurfwaffen für jeden Ziel-Klick\n",
|
||||
L"+%d%s Schaden geworfener Klingen\n",
|
||||
L"+%d%s Schaden geworfener Klingen für jeden Ziel-Klick\n",
|
||||
L"+%d%s Chance auf kritischen Treffer beim Angriff mit Wurfwaffen, falls das Ziel den Werfer nicht bemerkt hat\n",
|
||||
L"+%d Multiplikator für kritische Treffer durch Wurfwaffen\n",
|
||||
L"Gibt einen weiteren Zielklick beim Einsatz von Wurfwaffen\n",
|
||||
L"Gibt %d weitere Zielklicks beim Einsatz von Wurfwaffen\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsNightOps[]=
|
||||
{
|
||||
L"+%d zur effektiven Sichtweite im Dunkeln\n",
|
||||
L"+%d zum allgemeinen effektiven Hörweite\n",
|
||||
L"Dazu +%d zum effektive Hörweite in der Dunkelheit\n",
|
||||
L"+%d zum Unterbrechungs-Modifikator in der Dunkelheit\n",
|
||||
L"-%d weniger Schlafbedarf\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsStealthy[]=
|
||||
{
|
||||
L"-%d%s APs zum Schleichen nötig\n",
|
||||
L"+%d%s Chance beim Schleichen kein Geräusch zu erzeugen zu sein\n",
|
||||
L"+%d%s Chance, 'unsichtbar' zu sein wenn man sich nicht verrät (schleichen)\n",
|
||||
L"Der Abzug der berechneten Sichtdeckung beim Bewegen ist %d%s geringer\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsAthletics[]=
|
||||
{
|
||||
L"-%d%s APs benötigt für Bewegung (rennen, aufrecht oder geduckt gehen, gleiten, schwimmen, usw.)\n",
|
||||
L"-%d%s weniger Ausdauerverbrauch für für Bewegung, Dachklettern, Hindernisse Überwinden, usw.\n",
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]=
|
||||
{
|
||||
L"Hat eine Schadensresistenz von %d%s\n",
|
||||
L"+%d%s effektive Stärke für das Berechnen der maximalen Traglast\n",
|
||||
L"%d%s weniger Energieverlust beim Erleiden von Schlägen und Tritten\n",
|
||||
L"Fällt bei Beintreffern weniger leicht um durch um %d%s erhöhte Schadenstoleranz\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsDemolitions[]=
|
||||
{
|
||||
L"-%d%s APs benötigt um Handgranaten und Ähnliches zu werfen\n",
|
||||
L"+%d%s mehr Reichweite beim Werfen von Handgranaten und Ähnlichem\n",
|
||||
L"+%d%s mehr Wurfgenauigkeit beim Einsatz von Handgranaten und Ähnlichem\n",
|
||||
L"Gelegte Bomben und Minen sind +%d%s effizienter\n",
|
||||
L"+%d%s mehr Erfolg beim Anbringen von Zündern an Sprengstoff\n",
|
||||
L"+%d%s mehr Erfolg beim Schärfen und Entschärfen von Bomben\n",
|
||||
L"Verringerte Chance, dass der Gegner eigene Bomben und Minen entdeckt (%d zum Bombenlevel)\n",
|
||||
L"Erhöhter Erfolg beim Aufbrechen einer Tür mit einer Durchbruchladung (Schaden multipliziert mit %d)\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsTeaching[]=
|
||||
{
|
||||
L"Bei der Ausbildung von Milizen +%d%s schneller\n",
|
||||
L"Bei der Ausbildung von Milizen +%d%s Bonus zur effektiven Führungsfähigkeit\n",
|
||||
L"Beim Ausbilden von Söldnern +%d%s schneller\n",
|
||||
L"Beim Ausbilden von Söldnern +d% zum effektiven Fähigkeitslevel des Ausbilders\n",
|
||||
L"Beim eigenständigen Lernen +%d%s schneller\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsScouting[]=
|
||||
{
|
||||
L"+%d zur effektiven Sichtweite mit Zielfernrohren an Waffen\n",
|
||||
L"+%d zur effektiven Sichtweite mit Doppelfernrohren und losen Zielfernrohren\n",
|
||||
L"-%d Tunnelblick mit Doppelfernrohren und losen Zielfernrohren\n",
|
||||
L"Auf der Weltkarte wird in angrenzenden Sektoren die genaue Feindstärke (Anzahl) bestimmt\n",
|
||||
L"Auf der Weltkarte wird in angrenzenden Sektoren die Präsenz von vorhandenem Feind enthüllt\n",
|
||||
L"Verhindert, dass der Feind die Gruppe in den Hinterhalt lockt\n",
|
||||
L"Verhindert, das Umzingeln der Gruppe durch Bloodcats\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"Keine Boni",
|
||||
};
|
||||
|
||||
STR16 gzIMPOldSkillTraitsHelpTexts[]=
|
||||
{
|
||||
L"+%d%s Bonus zum Schlösser Knacken\n", // 0
|
||||
L"+%d%s Trefferchance im Faustkampf\n",
|
||||
L"+%d%s Schaden im Faustkampf\n",
|
||||
L"+%d%s Chance Schlägen auszuweichen\n",
|
||||
L"Bei der Reparatur und Bedienung von Elektrotechnik\n(Schlösser, Fallen, Fernzünder, Roboter...) kein Abzug\n",
|
||||
L"+%d zur effektiven Sichtweite im Dunkeln\n",
|
||||
L"+%d zur allgemeinen effektiven Hörweite\n",
|
||||
L"Dazu +%d zur effektiven Hörweite in der Dunkelheit\n",
|
||||
L"+%d zum Unterbrechungsmodifikator in der Dunkelheit\n",
|
||||
L"-%d weniger Schlafbedarf\n",
|
||||
L"+%d%s maximale Reichweite beim Werfen\n", // 10
|
||||
L"+%d%s Trefferchance beim Werfen\n",
|
||||
L"+%d%s Chance auf sofortige Tötung mit Wurfmesser wenn unbemerkt\n",
|
||||
L"+%d%s Bonus zum Trainieren von Milizen und anderen Söldnern\n",
|
||||
L"+%d%s effektive Führungsfertigkeit beim Ausbilden von Milizen\n",
|
||||
L"+%d%s Trefferchance mit Raketen-/Granatwerfern und Mörsern\n",
|
||||
L"Trefferchancenabzug bei Dauerfeuer und Feuerstoß wird durch %d geteilt\n",
|
||||
L"Das Verschießen von zu viel Munition bei Dauerfeuer wird unwahrscheinlicher\n",
|
||||
L"+%d%s Chance sich leise zu bewegen\n",
|
||||
L"+%d%s stealth (unsichtbar sein, wenn man sich nicht verrät)\n",
|
||||
L"Beim Schießen mit zwei Waffen mit jeder so präzise wie mit nur einer\n", // 20
|
||||
L"+%d%s Trefferchance mit Stichwaffen\n",
|
||||
L"+%d%s Chance, Stichwaffen auszuweichen, wenn man selber eine führt\n",
|
||||
L"+%d%s Chance, Stichwaffen auszuweichen, wenn man etwas anderes in der Hand hat\n",
|
||||
L"+%d%s Chance Schlägen auszuweichen, wenn man eine Stichwaffe hält\n",
|
||||
L"-%d%s effektive Reichweite zum Ziel mit allen Waffen\n",
|
||||
L"+%d%s Bonus zum Zielen pro Mausklick\n",
|
||||
L"Immer vollständig getarnt sein\n",
|
||||
L"+%d%s Trefferchance im Faustkampf\n",
|
||||
L"+%d%s Schaden im Faustkampf\n",
|
||||
L"+%d%s Chance, Schläge mit leeren Händen zu blocken\n", // 30
|
||||
L"+%d%s Chance, Schläge mit etwas in der Hand zu blocken\n",
|
||||
L"+%d%s Chance, Stichwaffenangriffen auszuweichen\n",
|
||||
L"Kann angeschlagenen Gegnern einen Tornadotritt verpassen, der doppelten Schaden anrichtet\n",
|
||||
L"Sie erhalten besondere Animationen für den Faustkampf (etwas fernöstlicher)\n",
|
||||
L"Keine Boni",
|
||||
};
|
||||
|
||||
STR16 gzIMPNewCharacterTraitsHelpTexts[]=
|
||||
{
|
||||
L"V: Keine Vorteile.\nN: Keine Nachteile.",
|
||||
L"V: Hat eine erhöhte Leistung im Verbund mit anderen Söldnern.\nN: Erhält keinen Moralzuwachs, wenn niemand in der Nähe ist.",
|
||||
L"V: Hat eine erhöhte Leistung, wenn niemand in der Nähe ist.\nN: Erhält keinen Moralzuwachs im Verbund mit anderen Söldnern.",
|
||||
L"V: Seine Moral sinkt etwas langsamer und steigt schneller.\nN: Hat weniger Chance, Fallen und Minen zu entdecken.",
|
||||
L"V: Erhält Boni beim Ausbilden von Miliz und kann besser mit Menschen reden.\nN: Erhält keinen Moralzuwachs für Aktionen anderer Söldner.",
|
||||
L"V: Lernt etwas schneller in Schulung durch sich selbst oder andere.\nN: Hat weniger Unterdrückungs- und Angstresistenz.",
|
||||
L"V: Verbraucht etwas weniger Energie, außer bei Aufgaben in Medizin, Technik oder anspruchsvollen Ausbildung.\nN: Weisheit, Führungskraft, Sprengstoff-, Mechanik- und Medizinkenntnisse entwickeln sich bei ihm langsamer.",
|
||||
L"V: Hat eine leicht erhöhte Trefferchance bei Feuerstößen und richtet etwas mehr Schaden im Nahkampf an.\n Erhält ein wenig mehr Moralzuwachs beim Töten.\nN: Ist schlechter bei Aufgaben, die Geduld erfordern, wie Reparatur, Schlossknacken, Fallen Entschärfen, Patientenbetreuung und Ausbildung von Miliz.",
|
||||
L"V: Erhält Boni für Aufgaben mit Geduldsanspruch wie Reparatur, Schlossknacken, Fallen Entschärfen, Patientenbetreuung und Ausbildung von Miliz.\nN: Erhält weniger oft Unterbrechungen im Kampf.",
|
||||
L"V: Erhöhte Resistenz gegenüber Unterdrückungsfeuer und Angst.\n Verliert weniger Moral beim Erleiden von Schaden oder dem Tod von Kameraden.\nN: Wird leichter getroffen, und kann seltener Feindfeuer durch schnelle Bewegung ausweichen.",
|
||||
L"V: Erhält Moralzuwachs für Tätigkeiten außerhalb des Kämpfens (außer der Ausbildung von Milizkräften).\nN: Erhält keinerlei Moral beim Töten.",
|
||||
L"V: Hat eine höhere Chance, Statusschäden anzurichten und kann besonders fiese Wunden austeilen.\n Erhält mehr Moral für erfolgreiche Statusschäden.\nN: Kann schlechter mit Leuten reden und seine Moral sinkt schneller, wenn er nicht kämpft.",
|
||||
L"V: Hat eine erhöhte Leistung wenn Söldner des anderen Geschlechts in der Nähe sind.\nN: Die Moral anderer naher Söldner des gleichen Geschlechts steigt langsamer.",
|
||||
|
||||
};
|
||||
|
||||
STR16 gzIMPDisabilitiesHelpTexts[]=
|
||||
{
|
||||
L"Keine Auswirkungen.",
|
||||
L"Hat Atemnot und allgemein schlechtere Leistung in tropischen und Wüstensektoren.",
|
||||
L"Kann Panikattacken erleiden, wenn in gewissen Situationen auf sich gestellt.",
|
||||
L"Zeigt geringere Leistung unter Tage (in Höhlen und Kellern).",
|
||||
L"Kann beim Versuch zu schwimmen leicht ertrinken.",
|
||||
L"Erträgt den Anblick großer Insekten nicht und\nzeigt verringerte Leistung in tropischen Sektoren.",
|
||||
L"Vergisst manchmal seine Befehle und verliert dadurch im Kampf einen Teil seiner APs.",
|
||||
L"Dreht im Umgang mit Waffen manchmal durch und gibt Dauerfeuer.\nIst ihm das mit seiner Waffe nicht möglich, kann das zu Moralabzügen führen.",
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
STR16 gzIMPProfileCostText[]=
|
||||
{
|
||||
L"Ein Profil kostet %d$. Genehmigen Sie die Zahlung? ",
|
||||
};
|
||||
|
||||
STR16 zGioNewTraitsImpossibleText[]=
|
||||
{
|
||||
L"Sie können das neue Fertigkeitensystem nicht ohne aktivierte PROFEX-Utility benutzen. Suchen Sie in Ihrer JA2_Options.ini den Eintrag: READ_PROFILE_DATA_FROM_XML.",
|
||||
};
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
//@@@: New string as of March 3, 2000.
|
||||
STR16 gzIronManModeWarningText[]=
|
||||
{
|
||||
L"Sie haben sich für den Ironman- Modus entschieden. Mit dieser Einstellung können Sie das Spiel nicht speichern, wenn Feinde im Sektor sind. Sind Sie sicher, dass Sie im Ironman- Modus spielen wollen?",
|
||||
L"Sie haben sich für den Ironman-Modus entschieden. Mit dieser Einstellung können Sie das Spiel nicht speichern, wenn Feinde im Sektor sind. Sind Sie sicher, dass Sie im Ironman-Modus spielen wollen?",
|
||||
};
|
||||
|
||||
STR16 gzDisplayCoverText[]=
|
||||
|
||||
@@ -33,6 +33,45 @@ enum
|
||||
extern STR16 zNewTacticalMessages[];
|
||||
extern STR16 gzIMPSkillTraitsText[];
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
// added by SANDRO
|
||||
extern STR16 gzIMPSkillTraitsTextNewMajor[];
|
||||
extern STR16 gzIMPSkillTraitsTextNewMinor[];
|
||||
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsSniper[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsRanger[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsTechnician[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsDoctor[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsNone[];
|
||||
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsMelee[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsThrowing[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsStealthy[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsNightOps[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsAthletics[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsScouting[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsNone[];
|
||||
|
||||
extern STR16 gzIMPOldSkillTraitsHelpTexts[];
|
||||
|
||||
extern STR16 gzIMPNewCharacterTraitsHelpTexts[];
|
||||
|
||||
extern STR16 gzIMPDisabilitiesHelpTexts[];
|
||||
|
||||
extern STR16 gzIMPProfileCostText[];
|
||||
|
||||
extern STR16 zGioNewTraitsImpossibleText[];
|
||||
///////////////////////////////////////////////////////
|
||||
|
||||
enum
|
||||
{
|
||||
IMM__IRON_MAN_MODE_WARNING_TEXT,
|
||||
|
||||
+390
-1
@@ -1,4 +1,4 @@
|
||||
#pragma setlocale("ITALIAN")
|
||||
//#pragma setlocale("ITALIAN")
|
||||
#ifdef PRECOMPILEDHEADERS
|
||||
#include "Utils All.h"
|
||||
#include "_Ja25Italiantext.h"
|
||||
@@ -44,6 +44,8 @@ STR16 zNewTacticalMessages[]=
|
||||
L"Per usare l'editor, selezionare una campagna diversa da quella di default.",
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// SANDRO - New STOMP laptop strings
|
||||
//these strings match up with the defines in IMP Skill trait.cpp
|
||||
STR16 gzIMPSkillTraitsText[]=
|
||||
{
|
||||
@@ -64,7 +66,394 @@ STR16 gzIMPSkillTraitsText[]=
|
||||
|
||||
L"Nessuna",
|
||||
L"Specialità I.M.P.",
|
||||
L"(Expert)",
|
||||
};
|
||||
|
||||
//added another set of skill texts for new major traits
|
||||
STR16 gzIMPSkillTraitsTextNewMajor[]=
|
||||
{
|
||||
L"Auto Weapons",
|
||||
L"Heavy Weapons",
|
||||
L"Marksman",
|
||||
L"Hunter",
|
||||
L"Gunslinger",
|
||||
L"Hand to Hand",
|
||||
L"Deputy",
|
||||
L"Technician",
|
||||
L"Paramedic",
|
||||
|
||||
L"None",
|
||||
L"I.M.P. Major Traits",
|
||||
// second names
|
||||
L"Machinegunner",
|
||||
L"Bombardier",
|
||||
L"Sniper",
|
||||
L"Ranger",
|
||||
L"Gunfighter",
|
||||
L"Martial Arts",
|
||||
L"Squadleader",
|
||||
L"Engineer",
|
||||
L"Doctor",
|
||||
};
|
||||
|
||||
//added another set of skill texts for new minor traits
|
||||
STR16 gzIMPSkillTraitsTextNewMinor[]=
|
||||
{
|
||||
L"Ambidextrous",
|
||||
L"Melee",
|
||||
L"Throwing",
|
||||
L"Night Ops",
|
||||
L"Stealthy",
|
||||
L"Athletics",
|
||||
L"Bodybuilding",
|
||||
L"Demolitions",
|
||||
L"Teaching",
|
||||
L"Scouting",
|
||||
|
||||
L"None",
|
||||
L"I.M.P. Minor Traits",
|
||||
};
|
||||
|
||||
//these texts are for help popup windows, describing trait properties
|
||||
STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]=
|
||||
{
|
||||
L"+%d%s Chance to Hit with Assault Rifles\n",
|
||||
L"+%d%s Chance to Hit with SMGs\n",
|
||||
L"+%d%s Chance to Hit with LMGs\n",
|
||||
L"-%d%s APs needed to fire with LMGs\n",
|
||||
L"-%d%s APs needed to ready light machine guns\n",
|
||||
L"Auto fire/burst chance to hit penalty is reduced by %d%s\n",
|
||||
L"Reduced chance for shooting unwanted bullets on autofire\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]=
|
||||
{
|
||||
L"-%d%s APs needed to fire grenade launchers\n",
|
||||
L"-%d%s APs needed to fire rocket launchers\n",
|
||||
L"+%d%s chance to hit with grenade launchers\n",
|
||||
L"+%d%s chance to hit with rocket launchers\n",
|
||||
L"-%d%s APs needed to fire mortar\n",
|
||||
L"Reduce penalty for mortar CtH by %d%s\n",
|
||||
L"+%d%s damage to tanks with heavy weapons, grenades and explosives\n",
|
||||
L"+%d%s damage to other targets with heavy weapons\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsSniper[]=
|
||||
{
|
||||
L"+%d%s Chance to Hit with Rifles\n",
|
||||
L"+%d%s Chance to Hit with Sniper Rifles\n",
|
||||
L"-%d%s effective range to target with all weapons\n",
|
||||
L"+%d%s aiming bonus per aim click (except for handguns)\n",
|
||||
L"+%d%s damage on shot",
|
||||
L" plus",
|
||||
L" per every aim click",
|
||||
L" after first",
|
||||
L" after second",
|
||||
L" after third",
|
||||
L" after fourth",
|
||||
L" after fifth",
|
||||
L" after sixth",
|
||||
L" after seventh",
|
||||
L"-%d%s APs needed to chamber a round with bolt-action rifles \n",
|
||||
L"Adds one more aim click for rifle-type guns\n",
|
||||
L"Adds %d more aim clicks for rifle-type guns\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsRanger[]=
|
||||
{
|
||||
L"+%d%s Chance to Hit with Rifles\n",
|
||||
L"+%d%s Chance to Hit with Shotguns\n",
|
||||
L"-%d%s APs needed to pump Shotguns\n",
|
||||
L"+%d%s group travelling speed between sectors if traveling by foot\n",
|
||||
L"+%d%s group travelling speed between sectors if traveling in vehicle (except helicopter)\n",
|
||||
L"-%d%s less energy spent for travelling between sectors\n",
|
||||
L"-%d%s weather penalties\n",
|
||||
L"+%d%s camouflage effectiveness\n",
|
||||
L"-%d%s worn out speed of camouflage by water or time\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsGunslinger[]=
|
||||
{
|
||||
L"-%d%s APs needed to fire with pistols and revolvers\n",
|
||||
L"+%d%s effective range with pistols and revolvers\n",
|
||||
L"+%d%s chance to hit with pistols and revolvers\n",
|
||||
L"+%d%s chance to hit with machine pistols",
|
||||
L" (on single shots only)",
|
||||
L"+%d%s aiming bonus per click with pistols, machine pistols and revolvers\n",
|
||||
L"-%d%s APs needed to raise pistols and revolvers\n",
|
||||
L"-%d%s APs needed to reload pistols, machine pistols and revolvers\n",
|
||||
L"Adds %d more aim click for pistols, machine pistols and revolvers\n",
|
||||
L"Adds %d more aim clicks for pistols, machine pistols and revolvers\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsMartialArts[]=
|
||||
{
|
||||
L"-%d%s AP cost of hand to hand attacks(bare hands or with brass knuckles)\n",
|
||||
L"+%d%s chance to hit with hand to hand attacks with bare hands\n",
|
||||
L"+%d%s chance to hit with hand to hand attacks with brass knuckles\n",
|
||||
L"+%d%s damage of hand to hand attacks(bare hands or with brass knuckles)\n",
|
||||
L"+%d%s breath damage of hand to hand attacks(bare hands or with brass knuckles)\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes slightly longer to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes longer to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes much longer to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes very long to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes extremely long to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes long hours to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks probably never stand up\n",
|
||||
L"Focused (aimed) punch deals +%d%s more damage\n",
|
||||
L"Your special spinning kick deals +%d%s more damage\n",
|
||||
L"+%d%s change to dodge hand to hand attacks\n",
|
||||
L"+%d%s on top chance to dodge HtH attacks with bare hands",
|
||||
L" or brass knuckles",
|
||||
L" (+%d%s with brass knuckles)",
|
||||
L"+%d%s on top chance to dodge HtH attacks with brass knuckles\n",
|
||||
L"+%d%s chance to dodge attacks by any melee weapon\n",
|
||||
L"-%d%s APs needed to steal weapon from enemy hands\n",
|
||||
L"-%d%s APs needed to change state (stand, crouch, lie down), turn around, climb on/off roof and jump obstacles\n",
|
||||
L"-%d%s APs needed to change state (stand, crouch, lie down)\n",
|
||||
L"-%d%s APs needed to turn around\n",
|
||||
L"-%d%s APs needed to climb on/off roof and jump obstacles\n",
|
||||
L"+%d%s chance to kick doors\n",
|
||||
L"You gain special animations for hand to hand combat\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsSquadleader[]=
|
||||
{
|
||||
L"+%d%s APs per round of other mercs in vicinity\n",
|
||||
L"+%d effective exp level of other mercs in vicinity, which have lesser level than the %s\n",
|
||||
L"+%d effective exp level to count as a standby when counting friends' bonus for suppression\n",
|
||||
L"+%d%s total suppression tolerance of other mercs in vicinity and %s himself\n",
|
||||
L"+%d morale gain of other mercs in vicinity\n",
|
||||
L"-%d morale loss of other mercs in vicinity\n",
|
||||
L"The vicinity for bonuses is %d tiles",
|
||||
L" (%d tiles with extended ears)",
|
||||
L"(Max simultaneous bonuses for one soldier is %d)\n",
|
||||
L"+%d%s fear resistence of %s\n",
|
||||
L"Drawback: %dx morale loss for %s's death for all other mercs\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsTechnician[]=
|
||||
{
|
||||
L"+%d%s to repairing speed\n",
|
||||
L"+%d%s to lockpicking (normal/electronic locks)\n",
|
||||
L"+%d%s to disarming electronic traps\n",
|
||||
L"+%d%s to attaching special items and combining things\n",
|
||||
L"+%d%s to unjamming a gun in combat\n",
|
||||
L"Reduce penalty to repair electronic items by %d%s\n",
|
||||
L"Increased chance to detect traps and mines (+%d detect level)\n",
|
||||
L"+%d%s CtH of robot controlled by the %s\n",
|
||||
L"%s trait grants you the ability to repair the robot\n",
|
||||
L"Reduced penalty to repair speed of the robot by %d%s\n",
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsDoctor[]=
|
||||
{
|
||||
L"Has ability to make surgical intervention by using medical bag on wounded soldier\n",
|
||||
L"Surgery instantly returns %d%s of lost health back.",
|
||||
L" (This drains the medical bag a lot.)",
|
||||
L"Can heal lost stats (from critical hits) by the",
|
||||
L" surgery or",
|
||||
L" doctor assignment.\n",
|
||||
L"+%d%s effectiveness on doctor-patient assignment\n",
|
||||
L"+%d%s bandaging speed\n",
|
||||
L"+%d%s natural regeneration speed of all soldiers in the same sector",
|
||||
L" (max %d these bonuses per sector)",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"No bonuses",
|
||||
};
|
||||
|
||||
STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]=
|
||||
{
|
||||
L"Reduce penalty to shoot dual weapons by %d%s\n",
|
||||
L"+%d%s speed of reloading guns with magazines\n",
|
||||
L"+%d%s speed of reloading guns with loose rounds\n",
|
||||
L"-%d%s APs needed to pickup items\n",
|
||||
L"-%d%s APs needed to work backpack\n",
|
||||
L"-%d%s APs needed to handle doors\n",
|
||||
L"-%d%s APs needed to plant/remove bombs and mines\n",
|
||||
L"-%d%s APs needed to attach items\n",
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsMelee[]=
|
||||
{
|
||||
L"-%d%s APs needed to attack by blades\n",
|
||||
L"+%d%s chance to hit with blades\n",
|
||||
L"+%d%s chance to hit with blunt melee weapons\n",
|
||||
L"+%d%s damage of blades\n",
|
||||
L"+%d%s damage of blunt melee weapons\n",
|
||||
L"Aimed attack by any melee weapon deals +%d%s damage\n",
|
||||
L"+%d%s chance to dodge attack by melee blades\n",
|
||||
L"+%d%s on top chance to dodge melee blades if having a blade in hands\n",
|
||||
L"+%d%s chance to dodge attack by blunt melee weapons\n",
|
||||
L"+%d%s on top chance to dodge blunt melee weapons if having a blade in hands\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsThrowing[]=
|
||||
{
|
||||
L"-%d%s basic APs needed to throw blades\n",
|
||||
L"+%d%s max range when throwing blades\n",
|
||||
L"+%d%s chance to hit when throwing blades\n",
|
||||
L"+%d%s chance to hit when throwing blades per aim click\n",
|
||||
L"+%d%s damage of throwing blades\n",
|
||||
L"+%d%s damage of throwing blades per aim click\n",
|
||||
L"+%d%s chance to inflict critical hit by throwing blade if not seen or heard\n",
|
||||
L"+%d critical hit by throwing blade multiplier\n",
|
||||
L"Adds %d more aim click for throwing blades\n",
|
||||
L"Adds %d more aim clicks for throwing blades\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsNightOps[]=
|
||||
{
|
||||
L"+%d to effective sight range in dark\n",
|
||||
L"+%d to general effective hearing range\n",
|
||||
L"+%d to effective hearing range in dark on top\n",
|
||||
L"+%d to interrupts modifier in dark\n",
|
||||
L"-%d need to sleep\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsStealthy[]=
|
||||
{
|
||||
L"-%d%s APs needed to move quietly\n",
|
||||
L"+%d%s chance to move quietly\n",
|
||||
L"+%d%s stealth (being 'invisible' if unnoticed)\n",
|
||||
L"Reduced cover penalty for movement by %d%s\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsAthletics[]=
|
||||
{
|
||||
L"-%d%s APs needed for moving (running, walking, swatting, crawling, swimming, etc.)\n",
|
||||
L"-%d%s energy spent for movement, roof-climbing, obstacle-jumping, swimming, etc.\n",
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]=
|
||||
{
|
||||
L"Has %d%s damage resistance\n",
|
||||
L"+%d%s effective strength for carrying weight capacity \n",
|
||||
L"Reduced energy lost when hit by HtH attack by %d%s\n",
|
||||
L"Increased damage needed to fall down if hit to legs by %d%s\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsDemolitions[]=
|
||||
{
|
||||
L"-%d%s APs needed to throw grenades\n",
|
||||
L"+%d%s max range when throwing grenades\n",
|
||||
L"+%d%s chance to hit when throwing grenades\n",
|
||||
L"+%d%s damage of set bombs and mines\n",
|
||||
L"+%d%s to attaching detonators check\n",
|
||||
L"+%d%s to planting/removing bombs check\n",
|
||||
L"Decreases chance enemy will detect your bombs and mines (+%d bomb level)\n",
|
||||
L"Increased chance shaped charge will open the doors (damage multiplied by %d)\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsTeaching[]=
|
||||
{
|
||||
L"+%d%s bonus to train militia\n",
|
||||
L"+%d%s bonus to effective leadership for determining militia training\n",
|
||||
L"+%d%s bonus to teaching other mercs\n",
|
||||
L"Skill value counts to be +%d higher for being able to teach this skill to other mercs\n",
|
||||
L"+%d%s bonus to train stats through self-practising assignment\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsScouting[]=
|
||||
{
|
||||
L"+%d to effective sight range with scopes on weapons\n",
|
||||
L"+%d to effective sight range with binoculars (and scopes separated from weapons)\n",
|
||||
L"-%d tunnel vision with binoculars (and scopes separated from weapons)\n",
|
||||
L"If in sector, adjacent sectors will show exact number of enemies\n",
|
||||
L"If in sector, adjacent sectors will show presence of enemies if any\n",
|
||||
L"Prevents the enemy to ambush your squad\n",
|
||||
L"Prevents the bloodcats to ambush your squad\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"No bonuses",
|
||||
};
|
||||
|
||||
STR16 gzIMPOldSkillTraitsHelpTexts[]=
|
||||
{
|
||||
L"+%d%s bonus to lockpicking\n", // 0
|
||||
L"+%d%s hand to hand chance to hit\n",
|
||||
L"+%d%s hand to hand damage\n",
|
||||
L"+%d%s chance to dodge hand to hand attacks\n",
|
||||
L"Eliminates the penalty to repair and handle\nelectronic things (locks, traps, rem. detonators, robot, etc.)\n",
|
||||
L"+%d to effective sight range in dark\n",
|
||||
L"+%d to general effective hearing range\n",
|
||||
L"+%d to effective hearing range in dark on top\n",
|
||||
L"+%d to interrupts modifier in dark\n",
|
||||
L"-%d need to sleep\n",
|
||||
L"+%d%s max range when throwing anything\n", // 10
|
||||
L"+%d%s chance to hit when throwing anything\n",
|
||||
L"+%d%s chance to instantly kill by throwing knife if not seen or heard\n",
|
||||
L"+%d%s bonus to train militia and instruct other mercs\n",
|
||||
L"+%d%s effective leadership for militia training calculations\n",
|
||||
L"+%d%s chance to hit with rocket/greande launchers and mortar\n",
|
||||
L"Auto fire/burst chance to hit penalty is divided by %d\n",
|
||||
L"Reduced chance for shooting unwanted bullets on autofire\n",
|
||||
L"+%d%s chance to move quietly\n",
|
||||
L"+%d%s stealth (being 'invisible' if unnoticed)\n",
|
||||
L"Eliminates the CtH penalty for second hand when firing two weapons at once\n", // 20
|
||||
L"+%d%s chance to hit with melee blades\n",
|
||||
L"+%d%s chance to dodge attacks by melee blades if having blade in hands\n",
|
||||
L"+%d%s chance to dodge attacks by melee blades if having anything else in hands\n",
|
||||
L"+%d%s chance to dodge hand to hand attacks if having blade in hands\n",
|
||||
L"-%d%s effective range to target with all weapons\n",
|
||||
L"+%d%s aiming bonus per aim click\n",
|
||||
L"Provides permanent camouflage\n",
|
||||
L"+%d%s hand to hand chance to hit\n",
|
||||
L"+%d%s hand to hand damage\n",
|
||||
L"+%d%s chance to dodge hand to hand attacks if having empty hands\n", // 30
|
||||
L"+%d%s chance to dodge hand to hand attacks if not having empty hands\n",
|
||||
L"+%d%s chance to dodge attacks by melee blades\n",
|
||||
L"Can perform spinning kick attack on weakened enemies to deal double damage\n",
|
||||
L"You gain special animations for hand to hand combat\n",
|
||||
L"No bonuses",
|
||||
};
|
||||
|
||||
STR16 gzIMPNewCharacterTraitsHelpTexts[]=
|
||||
{
|
||||
L"A: No advantage.\nD: No disadvantage.",
|
||||
L"A: Has better performance when couple of mercs are nearby.\nD: Gains no morale when no other merc is nearby.",
|
||||
L"A: Has better performance when no other merc is nearby.\nD: Gains no morale when in a group.",
|
||||
L"A: His morale sinks a little slower and grows faster than normal.\nD: Has lesser chance to detect traps and mines.",
|
||||
L"A: Has bonus on training militia and is better at communication with people.\nD: Gains no morale for actions of other mercs.",
|
||||
L"A: Slightly faster learning when assigned on practicing or as a student.\nD: Has lesser suppression and fear resistance.",
|
||||
L"A: His energy goes down a bit slower except on assignments as doctor, repairman, militia trainer or if learning certain skills.\nD: His wisdom, leadership, explosives, mechanical and medical skills improve slightly slower.",
|
||||
L"A: Has slightly better chance to hit on burst/autofire and inflicts slightly bigger damage in close combat\n Gains a little more morale for killing.\nD: Has penalty for actions which needs patience like repairing items, picking locks, removing traps, doctoring, training militia.",
|
||||
L"A: Has bonus for actions which needs patience like repairing items, picking locks, removing traps, doctoring and training militia.\nD: His interrupts chance is slightly lowered.",
|
||||
L"A: Incresed resistance to suppression and fear.\n Morale loss for taking damage and companions deaths is lower for him.\nD: Can be hit easier and enemy penalty for moving target is lesser in his case.",
|
||||
L"A: He gains morale when on non-combat assignments (except training militia).\nD: Gains no morale for killing.",
|
||||
L"A: Has bigger chance for inflicting stat loss and can inflict special painful wounds when able to\n Gains bonus morale for inflicting stat loss.\nD: Has penalty for communication with people and his morale sinks faster if not fighting.",
|
||||
L"A: Has better performance when there are some mercs of opposite gender nearby.\nD: Morale of other mercs of the same gender grows slower if nearby.",
|
||||
|
||||
};
|
||||
|
||||
STR16 gzIMPDisabilitiesHelpTexts[]=
|
||||
{
|
||||
L"No effects.",
|
||||
L"Has problems with breathing and reduced overall performance if in tropical or desert sectors.",
|
||||
L"Can suffer panic attack if left alone in certain situations.",
|
||||
L"His overall performance is reduced if underground.",
|
||||
L"If trying to swim he can easily drown.",
|
||||
L"A look at large insects can make a big problems\nand being in tropical sectors also reduce his performance a bit.",
|
||||
L"Sometimes forgets what orders he got and therefore loses some APs if in combat.",
|
||||
L"He can go psycho and shoot like mad once per a while\nand can lose morale if unable to do that with given weapon.",
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
STR16 gzIMPProfileCostText[]=
|
||||
{
|
||||
L"The profile cost is %d$. Do you authorize the payment? ",
|
||||
};
|
||||
|
||||
STR16 zGioNewTraitsImpossibleText[]=
|
||||
{
|
||||
L"You cannot choose the New Trait System with PROFEX utility deactivated. Check your JA2_Options.ini for entry: READ_PROFILE_DATA_FROM_XML.",
|
||||
};
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//New string as of March 3, 2000.
|
||||
STR16 gzIronManModeWarningText[]=
|
||||
{
|
||||
|
||||
@@ -32,6 +32,45 @@ enum
|
||||
extern STR16 zNewTacticalMessages[];
|
||||
extern STR16 gzIMPSkillTraitsText[];
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
// added by SANDRO
|
||||
extern STR16 gzIMPSkillTraitsTextNewMajor[];
|
||||
extern STR16 gzIMPSkillTraitsTextNewMinor[];
|
||||
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsSniper[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsRanger[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsTechnician[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsDoctor[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsNone[];
|
||||
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsMelee[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsThrowing[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsStealthy[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsNightOps[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsAthletics[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsScouting[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsNone[];
|
||||
|
||||
extern STR16 gzIMPOldSkillTraitsHelpTexts[];
|
||||
|
||||
extern STR16 gzIMPNewCharacterTraitsHelpTexts[];
|
||||
|
||||
extern STR16 gzIMPDisabilitiesHelpTexts[];
|
||||
|
||||
extern STR16 gzIMPProfileCostText[];
|
||||
|
||||
extern STR16 zGioNewTraitsImpossibleText[];
|
||||
///////////////////////////////////////////////////////
|
||||
|
||||
enum
|
||||
{
|
||||
IMM__IRON_MAN_MODE_WARNING_TEXT,
|
||||
|
||||
+393
-3
@@ -1,4 +1,4 @@
|
||||
#pragma setlocale("POLISH")
|
||||
//#pragma setlocale("POLISH")
|
||||
#ifdef PRECOMPILEDHEADERS
|
||||
#include "Utils All.h"
|
||||
#include "_Ja25Polishtext.h"
|
||||
@@ -32,8 +32,8 @@ STR16 zNewTacticalMessages[]=
|
||||
L"Nowi rekruci nie mogą tam przybyć.",
|
||||
L"Dopóki twój laprop będzie bez nadajnika, nie będziesz mógł zatrudniać nowych członków zespołu. Możliwe, że to odpowiedni moment żeby odczytać zapisany stan gry lub zacząć grać od nowa!",
|
||||
L"%s słyszy dźwięk zgniatanego metalu dochodzący spod ciała Jerrego. To niestety zabrzmiało jak dźwięk zgniatanej anteny od twojego laptopa.", //the %s is the name of a merc. @@@ Modified
|
||||
L"After scanning the note left behind by Deputy Commander Morris, %s senses an oppurtinity. The note contains the coordinates for launching missiles against different towns in Arulco. It also gives the coodinates of the origin - the missile facility.",
|
||||
L"Noticing the control panel, %s figures the numbers can be reveresed, so that the missile might destroy this very facility. %s needs to find an escape route. The elevator appears to offer the fastest solution...",
|
||||
L"Po przej¿eniu notatki zostawionej przez zastêpce dowódcy Morris'a, %s zauwa¿a pewn¹ mo¿liwoœæ. Notatka zawiera koordynaty do wystrzelenia pocisków w dwa miasteczka w Arulco. S¹ na niej równie¿ koordynaty z których te pociski zostan¹ wystrzelone - wojskowej placówki.",
|
||||
L"Przygl¹daj¹c siê panelowi kontrolnemu, %s zauwa¿a, ¿e cyfry mo¿na odwróciæ, tak, ¿e pociski mog¹ zniszczyæ t¹ placówkê. %s musi znaleŸæ drogê ucieczki. Wydaje siê, ¿e winda jest najszybszym rozwi¹zaniem...",
|
||||
L"To jest tryb CZŁOWIEK ZE STALI i nie możesz zapisywać gry gdy wróg jest w sektorze.", // @@@ new text
|
||||
L"(Nie można zapisywać gry podczas walki)", //@@@@ new text
|
||||
L"Kampania ma więcej niż 30 postaci.", // @@@ new text
|
||||
@@ -44,6 +44,8 @@ STR16 zNewTacticalMessages[]=
|
||||
L"Żeby użyć edytora powinieneś wcześniej wybrać kampanię inną niż standardowa.", ///@@new
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// SANDRO - New STOMP laptop strings
|
||||
//these strings match up with the defines in IMP Skill trait.cpp
|
||||
STR16 gzIMPSkillTraitsText[]=
|
||||
{
|
||||
@@ -64,7 +66,395 @@ STR16 gzIMPSkillTraitsText[]=
|
||||
|
||||
L"Brak",
|
||||
L"Umiejętności",
|
||||
L"(Ekspert)",
|
||||
|
||||
};
|
||||
|
||||
//added another set of skill texts for new major traits
|
||||
STR16 gzIMPSkillTraitsTextNewMajor[]=
|
||||
{
|
||||
L"Broñ automatyczna",
|
||||
L"Broñ ciê¿ka",
|
||||
L"Strzelec wyborowy",
|
||||
L"£owca",
|
||||
L"Rewolwerowiec",
|
||||
L"Walka wrêcz",
|
||||
L"Zastêpca szeryfa",
|
||||
L"Technik",
|
||||
L"Paramedyk",
|
||||
|
||||
L"None",
|
||||
L"G³ówne cechy I.M.P",
|
||||
// second names
|
||||
L"Strzelec CKM",
|
||||
L"Bombardier",
|
||||
L"Snajper",
|
||||
L"Leœniczy",
|
||||
L"Rewolwerowiec",
|
||||
L"Walka wrêcz",
|
||||
L"Dowódca dru¿yny",
|
||||
L"In¿ynier",
|
||||
L"Doktor",
|
||||
};
|
||||
|
||||
//added another set of skill texts for new minor traits
|
||||
STR16 gzIMPSkillTraitsTextNewMinor[]=
|
||||
{
|
||||
L"Oburêcznoœæ",
|
||||
L"Walka wrêcz",
|
||||
L"Rzucanie",
|
||||
L"Operacje nocne",
|
||||
L"Cichy",
|
||||
L"Atletyka",
|
||||
L"Bodybuilding",
|
||||
L"£adunki wybuchowe",
|
||||
L"Nauczanie",
|
||||
L"Zwiad",
|
||||
|
||||
L"Brak",
|
||||
L"Pomniejsze cechy I.M.P",
|
||||
};
|
||||
|
||||
//these texts are for help popup windows, describing trait properties
|
||||
STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]=
|
||||
{
|
||||
L"+%d%s do szansy trafienia karabinem szturmowym\n",
|
||||
L"+%d%s do szansy trafienia pistoletem maszynowym\n",
|
||||
L"+%d%s do szansy trafienia erkaemem\n",
|
||||
L"-%d%s do liczby PA potrzebnych do strza³u erkaemem w trybie automatycznym lub seri¹\n",
|
||||
L"-%d%s do liczby PA potrzebnych do przygotowania erkaemu\n",
|
||||
L"Kara do szansy trafienia ogniem automatycznym/seri¹ jest zmniejszona o %d%s\n",
|
||||
L"Zmniejszona szansa na wystrzelenie przez przypadek wiêkszej liczby pocisków w ogniu automatycznym o -%d%s\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]=
|
||||
{
|
||||
L"-%d%s do liczby PA potrzebnych do strza³u z granatnika\n",
|
||||
L"-%d%s do liczby PA potrzebnych do strza³u z wyrzutni rakiet\n",
|
||||
L"+%d%s do szansy trafienia grantnikiem\n",
|
||||
L"+%d%s do szansy trafienia wyrzutni¹ rakiet\n",
|
||||
L"-%d%s do liczby PA potrzebnych do strza³u z moŸdzierza\n",
|
||||
L"Reduce penalty for mortar CtH by %d%s\n",
|
||||
L"+%d%s damage to tanks with heavy weapons, grenades and explosives\n",
|
||||
L"+%d%s damage to other targets with heavy weapons\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsSniper[]=
|
||||
{
|
||||
L"+%d%s Chance to Hit with Rifles\n",
|
||||
L"+%d%s Chance to Hit with Sniper Rifles\n",
|
||||
L"-%d%s effective range to target with all weapons\n",
|
||||
L"+%d%s aiming bonus per aim click (except for handguns)\n",
|
||||
L"+%d%s damage on shot",
|
||||
L" plus",
|
||||
L" per every aim click",
|
||||
L" after first",
|
||||
L" after second",
|
||||
L" after third",
|
||||
L" after fourth",
|
||||
L" after fifth",
|
||||
L" after sixth",
|
||||
L" after seventh",
|
||||
L"-%d%s APs needed to chamber a round with bolt-action rifles \n",
|
||||
L"Adds one more aim click for rifle-type guns\n",
|
||||
L"Adds %d more aim clicks for rifle-type guns\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsRanger[]=
|
||||
{
|
||||
L"+%d%s Chance to Hit with Rifles\n",
|
||||
L"+%d%s Chance to Hit with Shotguns\n",
|
||||
L"-%d%s APs needed to pump Shotguns\n",
|
||||
L"+%d%s group travelling speed between sectors if traveling by foot\n",
|
||||
L"+%d%s group travelling speed between sectors if traveling in vehicle (except helicopter)\n",
|
||||
L"-%d%s less energy spent for travelling between sectors\n",
|
||||
L"-%d%s weather penalties\n",
|
||||
L"+%d%s camouflage effectiveness\n",
|
||||
L"-%d%s worn out speed of camouflage by water or time\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsGunslinger[]=
|
||||
{
|
||||
L"-%d%s APs needed to fire with pistols and revolvers\n",
|
||||
L"+%d%s effective range with pistols and revolvers\n",
|
||||
L"+%d%s chance to hit with pistols and revolvers\n",
|
||||
L"+%d%s chance to hit with machine pistols",
|
||||
L" (on single shots only)",
|
||||
L"+%d%s aiming bonus per click with pistols, machine pistols and revolvers\n",
|
||||
L"-%d%s APs needed to ready pistols and revolvers\n", // MINTY - "raise" changed to "ready"
|
||||
L"-%d%s APs needed to reload pistols, machine pistols and revolvers\n",
|
||||
L"Adds %d more aim click for pistols, machine pistols and revolvers\n",
|
||||
L"Adds %d more aim clicks for pistols, machine pistols and revolvers\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsMartialArts[]=
|
||||
{
|
||||
L"-%d%s AP cost of hand to hand attacks(bare hands or with brass knuckles)\n",
|
||||
L"+%d%s chance to hit with hand to hand attacks with bare hands\n",
|
||||
L"+%d%s chance to hit with hand to hand attacks with brass knuckles\n",
|
||||
L"+%d%s damage of hand to hand attacks(bare hands or with brass knuckles)\n",
|
||||
L"+%d%s breath damage of hand to hand attacks(bare hands or with brass knuckles)\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes slightly longer to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes longer to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes much longer to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes very long to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes extremely long to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes long hours to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks probably never stand up\n",
|
||||
L"Focused (aimed) punch deals +%d%s more damage\n",
|
||||
L"Your special spinning kick deals +%d%s more damage\n",
|
||||
L"+%d%s change to dodge hand to hand attacks\n",
|
||||
L"+%d%s on top chance to dodge HtH attacks with bare hands",
|
||||
L" or brass knuckles",
|
||||
L" (+%d%s with brass knuckles)",
|
||||
L"+%d%s on top chance to dodge HtH attacks with brass knuckles\n",
|
||||
L"+%d%s chance to dodge attacks by any melee weapon\n",
|
||||
L"-%d%s APs needed to steal weapon from enemy hands\n",
|
||||
L"-%d%s APs needed to change stance (stand, crouch, lie down), turn around, climb on/off roof and jump obstacles\n", // MINTY - "state" changed to "stance"
|
||||
L"-%d%s APs needed to change stance (stand, crouch, lie down)\n", // MINTY - "state" changed to "stance"
|
||||
L"-%d%s APs needed to turn around\n",
|
||||
L"-%d%s APs needed to climb on/off roof and jump obstacles\n",
|
||||
L"+%d%s chance to kick doors in\n", // MINTY - Changed to "kick doors in"
|
||||
L"You gain special animations for hand to hand combat\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsSquadleader[]=
|
||||
{
|
||||
L"+%d%s APs per round of other mercs in vicinity\n",
|
||||
L"+%d effective exp level of other mercs in vicinity, which have lesser level than the %s\n",
|
||||
L"+%d effective exp level to count as a standby when counting friends' bonus for suppression\n",
|
||||
L"+%d%s total suppression tolerance for other mercs in the vicinity and %s himself\n", // MINTY - Changed "of" to "for"
|
||||
L"+%d morale gain for other mercs in the vicinity\n", // MINTY - Changed "of" to "for"
|
||||
L"-%d morale loss for other mercs in the vicinity\n", // MINTY - Changed "of" to "for"
|
||||
L"The vicinity for bonuses is %d tiles",
|
||||
L" (%d tiles with extended ears)",
|
||||
L"(Max simultaneous bonuses for one soldier is %d)\n",
|
||||
L"+%d%s fear resistence of %s\n",
|
||||
L"Drawback: %dx morale loss for %s's death for all other mercs\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsTechnician[]=
|
||||
{
|
||||
L"+%d%s to repairing speed\n",
|
||||
L"+%d%s to lockpicking (normal/electronic locks)\n",
|
||||
L"+%d%s to disarming electronic traps\n",
|
||||
L"+%d%s to attaching special items and combining things\n",
|
||||
L"+%d%s to unjamming a gun in combat\n",
|
||||
L"Reduce penalty to repair electronic items by %d%s\n",
|
||||
L"Increased chance to detect traps and mines (+%d detect level)\n",
|
||||
L"+%d%s CtH of robot controlled by the %s\n",
|
||||
L"%s trait grants you the ability to repair the robot\n",
|
||||
L"Reduced penalty to repair speed of the robot by %d%s\n",
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsDoctor[]=
|
||||
{
|
||||
L"Has ability to perform surgical intervention by using medical bag on wounded soldier\n", // MINTY - "make" changed to "perform"
|
||||
L"Surgery instantly returns %d%s of lost health back.",
|
||||
L" (This drains the medical bag a lot.)",
|
||||
L"Can heal lost stats (from critical hits) by the",
|
||||
L" surgery or",
|
||||
L" doctor assignment.\n",
|
||||
L"+%d%s effectiveness on doctor-patient assignment\n",
|
||||
L"+%d%s bandaging speed\n",
|
||||
L"+%d%s natural regeneration speed for all soldiers in the same sector", // MINTY - Changed "of" to "for"
|
||||
L" (max %d of these bonuses per sector stack)",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"No bonuses",
|
||||
};
|
||||
|
||||
STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]=
|
||||
{
|
||||
L"Reduce penalty to shoot dual weapons by %d%s\n",
|
||||
L"+%d%s speed of reloading guns with magazines\n",
|
||||
L"+%d%s speed of reloading guns with loose rounds\n",
|
||||
L"-%d%s APs needed to pickup items\n",
|
||||
L"-%d%s APs needed to work backpack\n",
|
||||
L"-%d%s APs needed to handle doors\n",
|
||||
L"-%d%s APs needed to plant/remove bombs and mines\n",
|
||||
L"-%d%s APs needed to attach items\n",
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsMelee[]=
|
||||
{
|
||||
L"-%d%s APs needed to attack by blades\n",
|
||||
L"+%d%s chance to hit with blades\n",
|
||||
L"+%d%s chance to hit with blunt melee weapons\n",
|
||||
L"+%d%s damage with blades\n", // MINTY - Changed "of" to "with"
|
||||
L"+%d%s damage with blunt melee weapons\n", // MINTY - Changed "of" to "with"
|
||||
L"Aimed attack with any melee weapon deals +%d%s damage\n", // MINTY - Changed "by" to "with"
|
||||
L"+%d%s chance to dodge attack by melee blades\n",
|
||||
L"+%d%s on top chance to dodge melee blades if holding a blade\n", // MINTY - "having a blade in hands" changed to "holding a blade"
|
||||
L"+%d%s chance to dodge attack by blunt melee weapons\n",
|
||||
L"+%d%s on top chance to dodge blunt melee weapons if holding a blade\n", // MINTY - "having a blade in hands" changed to "holding a blade"
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsThrowing[]=
|
||||
{
|
||||
L"-%d%s basic APs needed to throw blades\n",
|
||||
L"+%d%s max range when throwing blades\n",
|
||||
L"+%d%s chance to hit when throwing blades\n",
|
||||
L"+%d%s chance to hit when throwing blades per aim click\n",
|
||||
L"+%d%s damage with throwing blades\n", // MINTY - Changed "of" to "with"
|
||||
L"+%d%s damage with throwing blades per aim click\n", // MINTY - Changed "of" to "with"
|
||||
L"+%d%s chance to inflict critical hit with throwing blade if not seen or heard\n", // MINTY - Changed "by" to "with"
|
||||
L"+%d critical hit with throwing blade multiplier\n", // MINTY - Changed "by" to "with"
|
||||
L"Adds %d more aim click for throwing blades\n",
|
||||
L"Adds %d more aim clicks for throwing blades\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsNightOps[]=
|
||||
{
|
||||
L"+%d to effective sight range in the dark\n",
|
||||
L"+%d to general effective hearing range\n",
|
||||
L"+%d additional hearing range in the dark\n", // MINTY - Changed "effective hearing range in dark on top" to "additional hearing range in the dark"
|
||||
L"+%d to interrupts modifier in the dark\n",
|
||||
L"-%d need to sleep\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsStealthy[]=
|
||||
{
|
||||
L"-%d%s APs needed to move quietly\n",
|
||||
L"+%d%s chance to move quietly\n",
|
||||
L"+%d%s stealth (being 'invisible' if unnoticed)\n",
|
||||
L"Reduced cover penalty for movement by %d%s\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsAthletics[]=
|
||||
{
|
||||
L"-%d%s APs needed for moving (running, walking, squatting, crawling, swimming, etc.)\n",
|
||||
L"-%d%s energy spent for movement, roof-climbing, obstacle-jumping, swimming, etc.\n",
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]=
|
||||
{
|
||||
L"Has %d%s damage resistance\n",
|
||||
L"+%d%s effective strength for carrying weight capacity \n",
|
||||
L"Reduced energy lost when hit by HtH attack by %d%s\n",
|
||||
L"Increased damage needed to fall down if hit to legs by %d%s\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsDemolitions[]=
|
||||
{
|
||||
L"-%d%s APs needed to throw grenades\n",
|
||||
L"+%d%s max range when throwing grenades\n",
|
||||
L"+%d%s chance to hit when throwing grenades\n",
|
||||
L"+%d%s damage of set bombs and mines\n",
|
||||
L"+%d%s to attaching detonators check\n",
|
||||
L"+%d%s to planting/removing bombs check\n",
|
||||
L"Decreases chance enemy will detect your bombs and mines (+%d bomb level)\n",
|
||||
L"Increased chance shaped charge will open the doors (damage multiplied by %d)\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsTeaching[]=
|
||||
{
|
||||
L"+%d%s bonus to militia training speed\n",
|
||||
L"+%d%s bonus to effective leadership for determining militia training\n",
|
||||
L"+%d%s bonus to teaching other mercs\n",
|
||||
L"Skill value counts to be +%d higher for being able to teach this skill to other mercs\n",
|
||||
L"+%d%s bonus to train stats through self-practising assignment\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsScouting[]=
|
||||
{
|
||||
L"+%d to effective sight range with scopes on weapons\n",
|
||||
L"+%d to effective sight range with binoculars (and scopes separated from weapons)\n",
|
||||
L"-%d tunnel vision with binoculars (and scopes separated from weapons)\n",
|
||||
L"If in sector, adjacent sectors will show exact number of enemies\n",
|
||||
L"If in sector, adjacent sectors will show presence of enemies, if any\n",
|
||||
L"Prevents enemy ambushes on your squad\n",
|
||||
L"Prevents bloodcat ambushes on your squad\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"No bonuses",
|
||||
};
|
||||
|
||||
STR16 gzIMPOldSkillTraitsHelpTexts[]=
|
||||
{
|
||||
L"+%d%s bonus to lockpicking\n", // 0
|
||||
L"+%d%s hand to hand chance to hit\n",
|
||||
L"+%d%s hand to hand damage\n",
|
||||
L"+%d%s chance to dodge hand to hand attacks\n",
|
||||
L"Eliminates the penalty to repair and handle\nelectronic things (locks, traps, rem. detonators, robot, etc.)\n",
|
||||
L"+%d to effective sight range in the dark\n",
|
||||
L"+%d to general effective hearing range\n",
|
||||
L"+%d extra hearing range in the dark\n",
|
||||
L"+%d to interrupts modifier in the dark\n",
|
||||
L"-%d need to sleep\n",
|
||||
L"+%d%s max range when throwing anything\n", // 10
|
||||
L"+%d%s chance to hit when throwing anything\n",
|
||||
L"+%d%s chance to instantly kill by throwing knife if not seen or heard\n",
|
||||
L"+%d%s bonus to militia training and other mercs instructing speed\n",
|
||||
L"+%d%s effective leadership for militia training calculations\n",
|
||||
L"+%d%s chance to hit with rocket/greande launchers and mortar\n",
|
||||
L"Auto fire/burst chance to hit penalty is divided by %d\n",
|
||||
L"Reduced chance for shooting unwanted bullets on autofire\n",
|
||||
L"+%d%s chance to move quietly\n",
|
||||
L"+%d%s stealth (being 'invisible' if unnoticed)\n",
|
||||
L"Eliminates the CtH penalty when firing two weapons at once\n", // 20
|
||||
L"+%d%s chance to hit with melee blades\n",
|
||||
L"+%d%s chance to dodge attacks by melee blades if having blade in hands\n",
|
||||
L"+%d%s chance to dodge attacks by melee blades if having anything else in hands\n",
|
||||
L"+%d%s chance to dodge hand to hand attacks if having blade in hands\n",
|
||||
L"-%d%s effective range to target with all weapons\n",
|
||||
L"+%d%s aiming bonus per aim click\n",
|
||||
L"Provides permanent camouflage\n",
|
||||
L"+%d%s hand to hand chance to hit\n",
|
||||
L"+%d%s hand to hand damage\n",
|
||||
L"+%d%s chance to dodge hand to hand attacks if having empty hands\n", // 30
|
||||
L"+%d%s chance to dodge hand to hand attacks if not having empty hands\n",
|
||||
L"+%d%s chance to dodge attacks by melee blades\n",
|
||||
L"Can perform spinning kick attack on weakened enemies to deal double damage\n",
|
||||
L"You gain special animations for hand to hand combat\n",
|
||||
L"No bonuses",
|
||||
};
|
||||
|
||||
STR16 gzIMPNewCharacterTraitsHelpTexts[]=
|
||||
{
|
||||
L"A: No advantage.\nD: No disadvantage.",
|
||||
L"A: Has better performance when couple of mercs are nearby.\nD: Gains no morale when no other merc is nearby.",
|
||||
L"A: Has better performance when no other merc is nearby.\nD: Gains no morale when in a group.",
|
||||
L"A: His morale sinks a little slower and grows faster than normal.\nD: Has lesser chance to detect traps and mines.",
|
||||
L"A: Has bonus on training militia and is better at communication with people.\nD: Gains no morale for actions of other mercs.",
|
||||
L"A: Slightly faster learning when assigned on practicing or as a student.\nD: Has lesser suppression and fear resistance.",
|
||||
L"A: His energy goes down a bit slower except on assignments as doctor, repairman, militia trainer or if learning certain skills.\nD: His wisdom, leadership, explosives, mechanical and medical skills improve slightly slower.",
|
||||
L"A: Has slightly better chance to hit on burst/autofire and inflicts slightly bigger damage in close combat\n Gains a little more morale for killing.\nD: Has penalty for actions which needs patience like repairing items, picking locks, removing traps, doctoring, training militia.",
|
||||
L"A: Has bonus for actions which needs patience like repairing items, picking locks, removing traps, doctoring and training militia.\nD: His interrupts chance is slightly lowered.",
|
||||
L"A: Incresed resistance to suppression and fear.\n Morale loss for taking damage and companions deaths is lower for him.\nD: Can be hit easier and enemy penalty for moving target is lesser in his case.",
|
||||
L"A: He gains morale when on non-combat assignments (except training militia).\nD: Gains no morale for killing.",
|
||||
L"A: Has bigger chance for inflicting stat loss and can inflict special painful wounds when able to\n Gains bonus morale for inflicting stat loss.\nD: Has penalty for communication with people and his morale sinks faster if not fighting.",
|
||||
L"A: Has better performance when there are some mercs of opposite gender nearby.\nD: Morale of other mercs of the same gender grows slower if nearby.",
|
||||
|
||||
};
|
||||
|
||||
STR16 gzIMPDisabilitiesHelpTexts[]=
|
||||
{
|
||||
L"No effects.",
|
||||
L"Has problems with breathing and reduced overall performance if in tropical or desert sectors.",
|
||||
L"Can suffer panic attack if left alone in certain situations.",
|
||||
L"His overall performance is reduced if underground.",
|
||||
L"If trying to swim he can easily drown.",
|
||||
L"A look at large insects can make a big problems\nand being in tropical sectors also reduce his performance a bit.",
|
||||
L"Sometimes forgets what orders he got and therefore loses some APs if in combat.",
|
||||
L"He can go psycho and shoot like mad once per a while\nand can lose morale if unable to do that with given weapon.",
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
STR16 gzIMPProfileCostText[]=
|
||||
{
|
||||
L"The profile cost is %d$. Do you authorize the payment? ",
|
||||
};
|
||||
|
||||
STR16 zGioNewTraitsImpossibleText[]=
|
||||
{
|
||||
L"You cannot choose the New Trait System with PROFEX utility deactivated. Check your JA2_Options.ini for entry: READ_PROFILE_DATA_FROM_XML.",
|
||||
};
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//@@@: New string as of March 3, 2000.
|
||||
STR16 gzIronManModeWarningText[]=
|
||||
{
|
||||
|
||||
@@ -32,6 +32,45 @@ enum
|
||||
extern STR16 zNewTacticalMessages[];
|
||||
extern STR16 gzIMPSkillTraitsText[];
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
// added by SANDRO
|
||||
extern STR16 gzIMPSkillTraitsTextNewMajor[];
|
||||
extern STR16 gzIMPSkillTraitsTextNewMinor[];
|
||||
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsSniper[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsRanger[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsTechnician[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsDoctor[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsNone[];
|
||||
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsMelee[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsThrowing[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsStealthy[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsNightOps[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsAthletics[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsScouting[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsNone[];
|
||||
|
||||
extern STR16 gzIMPOldSkillTraitsHelpTexts[];
|
||||
|
||||
extern STR16 gzIMPNewCharacterTraitsHelpTexts[];
|
||||
|
||||
extern STR16 gzIMPDisabilitiesHelpTexts[];
|
||||
|
||||
extern STR16 gzIMPProfileCostText[];
|
||||
|
||||
extern STR16 zGioNewTraitsImpossibleText[];
|
||||
///////////////////////////////////////////////////////
|
||||
|
||||
enum
|
||||
{
|
||||
IMM__IRON_MAN_MODE_WARNING_TEXT,
|
||||
|
||||
+425
-24
@@ -1,11 +1,13 @@
|
||||
#pragma setlocale("RUSSIAN")
|
||||
//#pragma setlocale("RUSSIAN")
|
||||
#ifdef PRECOMPILEDHEADERS
|
||||
#include "Utils All.h"
|
||||
#include "_Ja25RussianText.h"
|
||||
#else
|
||||
#include "Language Defines.h"
|
||||
#include "text.h"
|
||||
#include "Fileman.h"
|
||||
#ifdef RUSSIAN
|
||||
#include "text.h"
|
||||
#include "Fileman.h"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible
|
||||
@@ -29,23 +31,25 @@ STR16 zNewTacticalMessages[]=
|
||||
L"Линия прицела",
|
||||
L"Новые наемники не могут высадиться здесь.",
|
||||
L"Так как ваш ноутбук лишился антенны, то вы не сможете нанять новых наемников. Возможно, сейчас вам стоит загрузить одну из сохраненных игр, или начать игру заново!",
|
||||
L"%s слышит металлический хруст под телом Джерри. Кажется, это чмо сломало антенну вашего ноутбука.", //the %s is the name of a merc. @@@ Modified
|
||||
L"%s ñëûøèò ìåòàëëè÷åñêèé õðóñò ïîä òåëîì Äæåððè. Êàæåòñÿ, ýòî ÷ìî ñëîìàëî àíòåííó âàøåãî íîóòáóêà.", //the %s is the name of a merc.
|
||||
L"После прочтения записей, оставленных помощником командира Морриса, %s видит, что не все еще потеряно. В записке содержатся координаты городов Арулько для запуска по ним ракет. Кроме того, там также указаны координаты самой ракетной базы.",
|
||||
L"Изучив панель управления, %s понимает, что координаты цели можно изменить, и тогда ракета уничтожит эту базу. %s не собирается умирать, а значит нужно быстрее отсюда выбираться. Похоже, что самый быстрый способ это лифт...",
|
||||
L"В начале игры вы выбрали режим \"Стальная воля\" и теперь не можете записываться во время боя.", // @@@ new text
|
||||
L"(Нельзя сохраняться во время боя)", //@@@@ new text
|
||||
L"Текущая кампания длиннее 30 символов.", // @@@ new text
|
||||
L"Текущая кампания не найдена.", // @@@ new text
|
||||
L"Кампания: По умолчанию ( %S )", // @@@ new text
|
||||
L"Кампания: %S", // @@@ new text
|
||||
L"Вы выбрали кампанию %S. Эта кампания является модификацией оригинальной кампании Unfinished Business. Вы уверены, что хотите играть кампанию %S?", // @@@ new text
|
||||
L"Чтобы воспользоваться редактором, смените кампанию по умолчанию на другую.", ///@@new
|
||||
L" íà÷àëå èãðû âû âûáðàëè ñîõðàíåíèå ëèøü â \"ìèðíîå âðåìÿ\" è òåïåðü íå ìîæåòå çàïèñûâàòüñÿ âî âðåìÿ áîÿ.",
|
||||
L"(Íåëüçÿ ñîõðàíÿòüñÿ âî âðåìÿ áîÿ)",
|
||||
L"Òåêóùàÿ êàìïàíèÿ äëèííåå 30 ñèìâîëîâ.",
|
||||
L"Òåêóùàÿ êàìïàíèÿ íå íàéäåíà.",
|
||||
L"Êàìïàíèÿ: Ïî óìîë÷àíèþ ( %S )",
|
||||
L"Êàìïàíèÿ: %S",
|
||||
L"Âû âûáðàëè êàìïàíèþ %S. Ýòà êàìïàíèÿ ÿâëÿåòñÿ ìîäèôèêàöèåé îðèãèíàëüíîé êàìïàíèè Unfinished Business. Âû óâåðåíû, ÷òî õîòèòå èãðàòü êàìïàíèþ %S?",
|
||||
L"×òîáû âîñïîëüçîâàòüñÿ ðåäàêòîðîì, ñìåíèòå êàìïàíèþ ïî óìîë÷àíèþ íà äðóãóþ.",
|
||||
};
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// SANDRO - New STOMP laptop strings
|
||||
//these strings match up with the defines in IMP Skill trait.cpp
|
||||
STR16 gzIMPSkillTraitsText[]=
|
||||
{
|
||||
// made this more elegant
|
||||
L"Взлом замков",
|
||||
L"Рукопашный бой",
|
||||
L"Электроника",
|
||||
@@ -55,7 +59,7 @@ STR16 gzIMPSkillTraitsText[]=
|
||||
L"Тяжелое оружие",
|
||||
L"Автоматическое оружие",
|
||||
L"Скрытность",
|
||||
L"Стрельба с двух рук",
|
||||
L"Ëîâêà÷",
|
||||
L"Холодное оружие",
|
||||
L"Снайпер",
|
||||
L"Камуфляж",
|
||||
@@ -63,25 +67,422 @@ STR16 gzIMPSkillTraitsText[]=
|
||||
|
||||
L"Нет",
|
||||
L"I.M.P.: Специализация",
|
||||
L"(ýêñïåðò)",
|
||||
};
|
||||
|
||||
//added another set of skill texts for new major traits
|
||||
STR16 gzIMPSkillTraitsTextNewMajor[]=
|
||||
{
|
||||
L"Àâòîìàò÷èê", //Auto Weapons
|
||||
L"Ãðåíàä¸ð", //Heavy Weapons
|
||||
L"Ñòðåëîê", //Marksman
|
||||
L"Îõîòíèê", //Hunter
|
||||
L"Êîâáîé", //Gunslinger
|
||||
L"Áîêñ¸ð", //Hand to Hand
|
||||
L"Ñòàðøèíà", //Deputy
|
||||
L"Ìåõàíèê-ýëåêòðîíùèê", //Technician
|
||||
L"Ñàíèòàð", //Paramedic
|
||||
|
||||
L"Íåò",
|
||||
L"I.M.P.: Îñíîâíûå íàâûêè", //I.M.P. Major Traits
|
||||
// second names
|
||||
L"Ïóëåì¸ò÷èê", //Machinegunner
|
||||
L"Àðòèëëåðèñò", //Bombardier
|
||||
L"Ñíàéïåð", //Sniper
|
||||
L"Ëåñíè÷èé", //Ranger
|
||||
L"Ïèñòîëåò÷èê", //Gunfighter
|
||||
L"Áîåâûå èñêóññòâà", //Martial Arts
|
||||
L"Êîìàíäèð", //Squadleader
|
||||
L"Èíæåíåð", //Engineer
|
||||
L"Äîêòîð", //Doctor
|
||||
};
|
||||
|
||||
//added another set of skill texts for new minor traits
|
||||
STR16 gzIMPSkillTraitsTextNewMinor[]=
|
||||
{
|
||||
L"Ëîâêà÷", //Ambidextrous
|
||||
L"Ìàñòåð êëèíêà", //Melee
|
||||
L"Ìàñòåð ïî ìåòàíèþ", //Throwing
|
||||
L"×åëîâåê íî÷è", //Night Ops
|
||||
L"Áåñøóìíûé óáèéöà", //Stealthy
|
||||
L"Ñïîðòñìåí", //Athletics
|
||||
L"Êóëüòóðèñò", //Bodybuilding
|
||||
L"Ïîäðûâíèê", //Demolitions
|
||||
L"Èíñòðóêòîð", //Teaching
|
||||
L"Ðàçâåä÷èê", //Scouting
|
||||
|
||||
L"Íåò",
|
||||
L"I.M.P.: Äîïîëíèòåëüíûå íàâûêè", //I.M.P. Minor Traits
|
||||
};
|
||||
|
||||
//these texts are for help popup windows, describing trait properties
|
||||
STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]=
|
||||
{
|
||||
L"+%d%s ê øàíñó ïîðàçèòü èç àâòîìàòà\n",
|
||||
L"+%d%s ê øàíñó ïîðàçèòü èç ïèñòîëåò-ïóëåì¸òà\n",
|
||||
L"+%d%s ê øàíñó ïîðàçèòü èç ðó÷íîãî ïóëåì¸òà\n",
|
||||
L"-%d%s ÎÄ íà ñòðåëüáó èç ðó÷íîãî ïóëåì¸òà â ðåæèìå î÷åðåäè èëè î÷åðåäè ñ îòñå÷êîé\n",
|
||||
L"-%d%s ÎÄ íà âñêèäêó ðó÷íîãî ïóëåì¸òà\n",
|
||||
L"Øòðàô íà øàíñ ïîïàäàíèÿ â àâòîìàòè÷åñêîì ðåæèìå îãíÿ è â ðåæèìå î÷åðåäè ïîíèæåí íà %d%s\n",
|
||||
L"Ïîíèæåí øàíñ ëèøíèõ âûñòðåëîâ ïðè àâòîìàòè÷åñêîé ñòðåëüáå\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]=
|
||||
{
|
||||
L"-%d%s ÎÄ íà ñòðåëüáó èç ãðàíàòîì¸òà\n",
|
||||
L"-%d%s ÎÄ íà ñòðåëüáó èç ðåàêòèâíîãî ãðàíàòîì¸òà\n",
|
||||
L"+%d%s ê øàíñó ïîðàçèòü èç ãðàíàòîì¸òà\n",
|
||||
L"+%d%s ê øàíñó ïîðàçèòü èç ðåàêòèâíîãî ãðàíàòîì¸òà\n",
|
||||
L"-%d%s ÎÄ íà çàëï èç ìèíîì¸òà\n",
|
||||
L"Ïîíèæåí øòðàô íà øàíñ ïîïàäàíèÿ ïðè ñòðåëüáå ñ ìèíîì¸òà íà %d%s\n",
|
||||
L"+%d%s ê óðîíó òàíêàì îò ïîðàæåíèÿ èç òÿæ¸ëîãî îðóæèÿ, ãðàíàò è âçðûâ÷àòêè\n",
|
||||
L"+%d%s ê óðîíó èíûì öåëÿì èç òÿæ¸ëîãî îðóæèÿ\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsSniper[]=
|
||||
{
|
||||
L"+%d%s ê øàíñó ïîðàçèòü èç âèíòîâêè\n",
|
||||
L"+%d%s ê øàíñó ïîïàñòü èç ñíàéïåðñêîé âèíòîâêè\n",
|
||||
L"-%d%s ýôôåêòèâíîé äàëüíîñòè äî öåëè äëÿ âñåãî âèäà îðóæèÿ\n", //-%d%s effective range to target with all weapons
|
||||
L"+%d%s ê áîíóñó ïðèöåëèâàíèÿ íà êàäæûé ùåë÷îê ìûøè (îñîáåííî ê ïèñòîëåòàì)\n",
|
||||
L"+%d%s ê ïîâðåæäåíèþ îò âûñòðåëà", //+%d%s damage on shot
|
||||
L" ïëþñ",
|
||||
L" ñ êàæäûì êëèêîì",
|
||||
L" ïîñëå ïåðâîãî",
|
||||
L" ïîñëå âòîðîãî",
|
||||
L" ïîñëå òðåòüåãî",
|
||||
L" ïîñëå ÷åòâ¸ðòîãî",
|
||||
L" ïîñëå ïÿòîãî",
|
||||
L" ïîñëå øåñòîãî",
|
||||
L" ïîñëå ñåäüìîãî",
|
||||
L"-%d%s ÎÄ íà ïåðåä¸ðãèâàíèå çàòâîðà ó ïîëóàâòîìàòè÷åñêèõ âèíòîâîê\n",
|
||||
L"Ïëþñ 1 êëèê-ïðèöåëèâàíèÿ ê îðóæèþ òèïà âèíòîâêè\n",
|
||||
L"Ïëþñ %d êëèê-ïðèöåëèâàíèÿ ê îðóæèþ òèïà âèíòîâêè\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsRanger[]=
|
||||
{
|
||||
L"+%d%s ê øàíñó ïîðàçèòü èç âèíòîâêè\n",
|
||||
L"+%d%s ê øàíñó ïîðàçèòü èç ðóæüÿ\n",
|
||||
L"-%d%s ÎÄ íà ïåðåçàðÿäêó ðóæüÿ\n",
|
||||
L"+%d%s ê ñêîðîñòè ïåðåäâèæåíèÿ ãðóïïû ìåæäó ñåêòîðàìè, åñëè èäòè ïåøêîì\n",
|
||||
L"+%d%s ê ñêîðîñòè ïåðåäâèæåíèÿ ãðóïïû ìåæäó ñåêòîðàìè, \nåñëè ïåðåäâèãàòüñÿ íà òðàíñïîðòå (â îñîáåííîñòè íà âåðòîë¸òå)\n",
|
||||
L"-%d%s ê çàòðàòå ýíåðãèè ïðè ïåðåõîäå ìåæäó ñåêòîðàìè\n", //ìåíüøå òðàòèò ñèë
|
||||
L"-%d%s íà øòðàô ïîãîäíûõ óñëîâèé\n",
|
||||
L"+%d%s ê ýôôåêòèâíîñòè êàìóôëÿæà\n",
|
||||
L"-%d%s íà ñêîðîñòü óõóäøåíèÿ êàìóôëÿæà îò âîäû è âðåìåíè\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsGunslinger[]=
|
||||
{
|
||||
L"-%d%s ÎÄ íåîáõîäèìûå äëÿ âûñòðåëà èç ïèñòîëåòîâ è ðåâîëüâåðîâ\n",
|
||||
L"+%d%s ê ýôôåêòèâíîé äàëüíîáîéíîñòè ïèñòîëåòîâ è ðåâîëüâåðîâ\n",
|
||||
L"+%d%s ê øàíñó ïîïàäàíèÿ èç ïèñòîëåòîâ è ðåâîëüâåðîâ\n",
|
||||
L"+%d%s ê øàíñó ïîïàäàíèÿ èç ïèñòîëåò-ïóëåì¸òîâ",
|
||||
L" (ëèøü äëÿ îäèíî÷íîãî âûñòðåëà)",
|
||||
L"+%d%s áîíóñà íà îäèí ùåë÷îê ìûøè ïðè ïðèöåëèâàíèå íà ïèñòîëåòû, ïèñòîëåò-ïóëåì¸òû è ðåâîëüâåðû\n",
|
||||
L"-%d%s ÎÄ íåîáõîäèìûõ íà âñêèäêó ïèñòîëåòà è ðåâîëüâåðà\n",
|
||||
L"-%d%s ÎÄ íåîáõîäèìûõ íà ïåðåçàðÿäêó ïèñòîëåòà, ïèñòîëåò-ïóëåì¸òà è ðåâîëüâåðà\n",
|
||||
L"Äà¸ò %d äîïîëíèòåëüíûé ùåë÷îê ìûøè íà ïðèöåëèâàíèå ïèñòîëåòàì, ïèñòîëåò-ïóëåì¸òàì è ðåâîëüâåðàì",
|
||||
L"Äà¸ò %d äîïîëíèòåëüíûõ ùåë÷êîâ ìûøè íà ïðèöåëèâàíèå ïèñòîëåòàì, ïèñòîëåò-ïóëåì¸òàì è ðåâîëüâåðàì\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsMartialArts[]=
|
||||
{
|
||||
L"-%d%s AP cost of hand to hand attacks(bare hands or with brass knuckles)\n",
|
||||
L"+%d%s chance to hit with hand to hand attacks with bare hands\n",
|
||||
L"+%d%s chance to hit with hand to hand attacks with brass knuckles\n",
|
||||
L"+%d%s damage of hand to hand attacks(bare hands or with brass knuckles)\n",
|
||||
L"+%d%s breath damage of hand to hand attacks(bare hands or with brass knuckles)\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes slightly longer to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes longer to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes much longer to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes very long to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes extremely long to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes long hours to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks probably never stand up\n",
|
||||
L"Focused (aimed) punch deals +%d%s more damage\n",
|
||||
L"Your special spinning kick deals +%d%s more damage\n",
|
||||
L"+%d%s change to dodge hand to hand attacks\n",
|
||||
L"+%d%s on top chance to dodge HtH attacks with bare hands",
|
||||
L" or brass knuckles",
|
||||
L" (+%d%s with brass knuckles)",
|
||||
L"+%d%s on top chance to dodge HtH attacks with brass knuckles\n",
|
||||
L"+%d%s chance to dodge attacks by any melee weapon\n",
|
||||
L"-%d%s APs needed to steal weapon from enemy hands\n",
|
||||
L"-%d%s APs needed to change stance (stand, crouch, lie down), turn around, climb on/off roof and jump obstacles\n",
|
||||
L"-%d%s APs needed to change stance (stand, crouch, lie down)\n",
|
||||
L"-%d%s APs needed to turn around\n",
|
||||
L"-%d%s APs needed to climb on/off roof and jump obstacles\n",
|
||||
L"+%d%s chance to kick doors in\n",
|
||||
L"You gain special animations for hand to hand combat\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsSquadleader[]=
|
||||
{
|
||||
L"+%d%s APs per round of other mercs in vicinity\n",
|
||||
L"+%d effective exp level of other mercs in vicinity, which have lesser level than the %s\n",
|
||||
L"+%d effective exp level to count as a standby when counting friends' bonus for suppression\n",
|
||||
L"+%d%s total suppression tolerance for other mercs in the vicinity and %s himself\n",
|
||||
L"+%d morale gain for other mercs in the vicinity\n",
|
||||
L"-%d morale loss for other mercs in the vicinity\n",
|
||||
L"The vicinity for bonuses is %d tiles",
|
||||
L" (%d tiles with extended ears)",
|
||||
L"(Max simultaneous bonuses for one soldier is %d)\n",
|
||||
L"+%d%s fear resistence of %s\n",
|
||||
L"Drawback: %dx morale loss for %s's death for all other mercs\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsTechnician[]=
|
||||
{
|
||||
L"+%d%s to repairing speed\n",
|
||||
L"+%d%s to lockpicking (normal/electronic locks)\n",
|
||||
L"+%d%s to disarming electronic traps\n",
|
||||
L"+%d%s to attaching special items and combining things\n",
|
||||
L"+%d%s to unjamming a gun in combat\n",
|
||||
L"Reduce penalty to repair electronic items by %d%s\n",
|
||||
L"Increased chance to detect traps and mines (+%d detect level)\n",
|
||||
L"+%d%s CtH of robot controlled by the %s\n",
|
||||
L"%s trait grants you the ability to repair the robot\n",
|
||||
L"Reduced penalty to repair speed of the robot by %d%s\n",
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsDoctor[]=
|
||||
{
|
||||
L"Has ability to perform surgical intervention by using medical bag on wounded soldier\n",
|
||||
L"Surgery instantly returns %d%s of lost health back.",
|
||||
L" (This drains the medical bag a lot.)",
|
||||
L"Can heal lost stats (from critical hits) by the",
|
||||
L" surgery or",
|
||||
L" doctor assignment.\n",
|
||||
L"+%d%s effectiveness on doctor-patient assignment\n",
|
||||
L"+%d%s bandaging speed\n",
|
||||
L"+%d%s natural regeneration speed for all soldiers in the same sector",
|
||||
L" (max %d of these bonuses per sector stack)",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"Íåò ïðåèìóùåñòâ", //No bonuses
|
||||
};
|
||||
|
||||
STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]=
|
||||
{
|
||||
L"Ïîíèæåí øòðàô íà ñòðåëüáó ñ äâóõ ðóê íà %d%s\n",
|
||||
L"+%d%s ê ñêîðîñòè íà ïåðåçàðÿäêó îðóæèÿ ìàãàçèíîì\n",
|
||||
L"+%d%s ê ñêîðîñòè íà äîçàðÿäêó ìàãàçèíà îðóæèÿ\n",
|
||||
L"-%d%s ÎÄ ÷òîáû ïîäíÿòü ïðåäìåò\n",
|
||||
L"-%d%s ÎÄ íà ìàíèïóëÿöèè ñ ðþêçàêîì\n",
|
||||
L"-%d%s ÎÄ íà äåéñòâèÿ ñ äâåðüþ\n",
|
||||
L"-%d%s ÎÄ, íåîáõîäèìûõ äëÿ óñòàíîâêè/îáåçâðåæèâàíèÿ áîìá è ìèí\n",
|
||||
L"-%d%s ÎÄ, íåîáõîäèìûõ íà ïðèñîåäèíåíèå íàâåñêè\n",
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsMelee[]=
|
||||
{
|
||||
L"-%d%s APs needed to attack by blades\n",
|
||||
L"+%d%s chance to hit with blades\n",
|
||||
L"+%d%s chance to hit with blunt melee weapons\n",
|
||||
L"+%d%s damage with blades\n",
|
||||
L"+%d%s damage with blunt melee weapons\n",
|
||||
L"Aimed attack with any melee weapon deals +%d%s damage\n",
|
||||
L"+%d%s chance to dodge attack by melee blades\n",
|
||||
L"+%d%s on top chance to dodge melee blades if holding a blade\n",
|
||||
L"+%d%s chance to dodge attack by blunt melee weapons\n",
|
||||
L"+%d%s on top chance to dodge blunt melee weapons if holding a blade\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsThrowing[]=
|
||||
{
|
||||
L"-%d%s basic APs needed to throw blades\n",
|
||||
L"+%d%s max range when throwing blades\n",
|
||||
L"+%d%s chance to hit when throwing blades\n",
|
||||
L"+%d%s chance to hit when throwing blades per aim click\n",
|
||||
L"+%d%s damage with throwing blades\n",
|
||||
L"+%d%s damage with throwing blades per aim click\n",
|
||||
L"+%d%s chance to inflict critical hit with throwing blade if not seen or heard\n",
|
||||
L"+%d critical hit with throwing blade multiplier\n",
|
||||
L"Adds %d more aim click for throwing blades\n",
|
||||
L"Adds %d more aim clicks for throwing blades\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsNightOps[]=
|
||||
{
|
||||
L"+%d ê çðåíèþ â òåìíîòå\n",
|
||||
L"+%d ê äàëüíîñòè ñëóõà\n",
|
||||
L"+%d äîïîëíèòåëüíî ê ñëóõó â òåìíîòå\n",
|
||||
L"+%d ê âåðîÿòíîñòè ïåðåõâàòà õîäà â íî÷è\n",
|
||||
L"-%d ê íóæäå â ñíå\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsStealthy[]=
|
||||
{
|
||||
L"-%d%s ê ÎÄ, íåîáõîäèìûõ äëÿ òèõîãî ïåðåäèâæåíèÿ\n",
|
||||
L"+%d%s äâèãàòüñÿ òèõî\n",
|
||||
L"+%d%s ê ñêðûòíîñòè (áûòü 'íåâèäèìûì' åñëè âàñ íå îáíàðóæèëè)\n",
|
||||
L"Óìåíüøåíèå øòðàôà íà âèäèìîñòü â óêðûòèè íà %d%s\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsAthletics[]=
|
||||
{
|
||||
L"-%d%s ÎÄ íà äâèæåíèÿ (áåã, øàã, øàã âïðèñÿäêó, ïåðåïîëçàíèå, ïëàâàíèå è ò.ä.)\n",
|
||||
L"-%d%s íà çàòðàòû ýíåðãèè ïðè äâèæåíèè, âñêàðàáêèâàíèå íà êðûøó, ïðûæêè ÷åðåç ïðåïÿäñòâèÿ, ïëàâàíèå è ò.ä.\n",
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]=
|
||||
{
|
||||
L"Èìååò %d%s óñòîé÷èâîñòè ê ïîâðåæäåíèÿì\n",
|
||||
L"+%d%s ê ñèëå íà ïåðåíîñêó ñíàðÿæåíèÿ\n",
|
||||
L"Óìåíüøåíà ïîòåðÿ ñèë ïðè ïðîïóùåííûõ óäàðàõ â áëèæíåì áîþ íà %d%s\n",
|
||||
L"Ïîâûøåí óðîí, íåîáõîäèìûé ÷òîáû ñâàëèòü ñ íîã ïðè ðàíåíèè â íîãó íà %d%s\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsDemolitions[]=
|
||||
{
|
||||
L"-%d%s APs needed to throw grenades\n",
|
||||
L"+%d%s max range when throwing grenades\n",
|
||||
L"+%d%s chance to hit when throwing grenades\n",
|
||||
L"+%d%s damage of set bombs and mines\n",
|
||||
L"+%d%s to attaching detonators check\n",
|
||||
L"+%d%s to planting/removing bombs check\n",
|
||||
L"Decreases chance enemy will detect your bombs and mines (+%d bomb level)\n",
|
||||
L"Increased chance shaped charge will open the doors (damage multiplied by %d)\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsTeaching[]=
|
||||
{
|
||||
L"+%d%s bonus to militia training speed\n",
|
||||
L"+%d%s bonus to effective leadership for determining militia training\n",
|
||||
L"+%d%s bonus to teaching other mercs\n",
|
||||
L"Skill value counts to be +%d higher for being able to teach this skill to other mercs\n",
|
||||
L"+%d%s bonus to train stats through self-practising assignment\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsScouting[]=
|
||||
{
|
||||
L"+%d to effective sight range with scopes on weapons\n",
|
||||
L"+%d to effective sight range with binoculars (and scopes separated from weapons)\n",
|
||||
L"-%d tunnel vision with binoculars (and scopes separated from weapons)\n",
|
||||
L"If in sector, adjacent sectors will show exact number of enemies\n",
|
||||
L"If in sector, adjacent sectors will show presence of enemies, if any\n",
|
||||
L"Prevents enemy ambushes on your squad\n",
|
||||
L"Prevents bloodcat ambushes on your squad\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"Íåò ïðåèìóùåñòâ", //No bonuses
|
||||
};
|
||||
|
||||
STR16 gzIMPOldSkillTraitsHelpTexts[]=
|
||||
{
|
||||
L"+%d%s bonus to lockpicking\n",
|
||||
L"+%d%s hand to hand chance to hit\n",
|
||||
L"+%d%s hand to hand damage\n",
|
||||
L"+%d%s chance to dodge hand to hand attacks\n",
|
||||
L"Eliminates the penalty to repair and handle\nelectronic things (locks, traps, rem. detonators, robot, etc.)\n",
|
||||
L"+%d to effective sight range in the dark\n",
|
||||
L"+%d to general effective hearing range\n",
|
||||
L"+%d extra hearing range in the dark\n",
|
||||
L"+%d to interrupts modifier in the dark\n",
|
||||
L"-%d need to sleep\n",
|
||||
L"+%d%s max range when throwing anything\n",
|
||||
L"+%d%s chance to hit when throwing anything\n",
|
||||
L"+%d%s chance to instantly kill by throwing knife if not seen or heard\n",
|
||||
L"+%d%s bonus to militia training and other mercs instructing speed\n",
|
||||
L"+%d%s effective leadership for militia training calculations\n",
|
||||
L"+%d%s chance to hit with rocket/greande launchers and mortar\n",
|
||||
L"Auto fire/burst chance to hit penalty is divided by %d\n",
|
||||
L"Reduced chance for shooting unwanted bullets on autofire\n",
|
||||
L"+%d%s chance to move quietly\n",
|
||||
L"+%d%s stealth (being 'invisible' if unnoticed)\n",
|
||||
L"Eliminates the CtH penalty when firing two weapons at once\n",
|
||||
L"+%d%s chance to hit with melee blades\n",
|
||||
L"+%d%s chance to dodge attacks by melee blades if having blade in hands\n",
|
||||
L"+%d%s chance to dodge attacks by melee blades if having anything else in hands\n",
|
||||
L"+%d%s chance to dodge hand to hand attacks if having blade in hands\n",
|
||||
L"-%d%s effective range to target with all weapons\n",
|
||||
L"+%d%s aiming bonus per aim click\n",
|
||||
L"Provides permanent camouflage\n",
|
||||
L"+%d%s hand to hand chance to hit\n",
|
||||
L"+%d%s hand to hand damage\n",
|
||||
L"+%d%s chance to dodge hand to hand attacks if having empty hands\n",
|
||||
L"+%d%s chance to dodge hand to hand attacks if not having empty hands\n",
|
||||
L"+%d%s chance to dodge attacks by melee blades\n",
|
||||
L"Can perform spinning kick attack on weakened enemies to deal double damage\n",
|
||||
L"You gain special animations for hand to hand combat\n",
|
||||
L"Íåò ïðåèìóùåñòâ", //No bonuses
|
||||
};
|
||||
|
||||
STR16 gzIMPNewCharacterTraitsHelpTexts[]=
|
||||
{
|
||||
//I.M.P. Character Traits help text
|
||||
//Neutral
|
||||
L"ïëþñû: Íåò ïðåèìóùåñòâ.\n \nìèíóñû: Áåç èçúÿí.",
|
||||
//Sociable
|
||||
L"ïëþñû: Ëó÷øå ðàáîòàåò â êîìàíäå.\n \nìèíóñû: Áîåâîé äóõ íå ðàñò¸ò, êîãäà íà¸ìíèê ðàáîòàåò îäèí.",
|
||||
//Loner
|
||||
L"ïëþñû: Ëó÷øå ðàáîòàåò â îäèíî÷åñòâå.\n \nìèíóñû: Áîåâîé äóõ íå ðàñò¸ò â ïðèñóòñòâèè äðóãèõ áîéöîâ.",
|
||||
//Optimist
|
||||
L"ïëþñû: Áîåâîé äóõ ðàñòåò áûñòðåå, à ñíèæàåòñÿ ìåäëåííåå îáû÷íîãî.\n \nìèíóñû: Øàíñ îáíàðóæèòü ìèíû è ëîâóøêè íèæå ñðåäíåãî.",
|
||||
//Assertive
|
||||
L"ïëþñû: Ëó÷øå ëàäèò ñ ëþäüìè è òðåíèðóåò îïîë÷åíèå.\n \nìèíóñû: Äåéñòâèÿ äðóãèõ áîéöîâ íå âëèÿþò íà åãî áîåâîé äóõ.",
|
||||
//Intellectual
|
||||
L"ïëþñû: Íåìíîãî áûñòðåå îáó÷àåòñÿ.\n \nìèíóñû: Îáëàäàåò ìåíüøèì ñîïðîòèâëåíèåì ñòðàõó è ïîäàâëåíèþ.",
|
||||
//Primitive
|
||||
L"ïëþñû: Óñòà¸ò ìåäëåííåå äðóãèõ, åñëè íå ðàáîòàåò êàê âðà÷, ðåìîíòíèê, òðåíåð èëè ó÷åíèê.\n \nìèíóñû: Åãî ìóäðîñòü, ëèäåðñòâî, âçðûâíîå äåëî, ìåõàíèêà è ìåäèöèíà ðàñòóò ìåäëåííåå îáû÷íîãî.",
|
||||
//Aggressive
|
||||
L"ïëþñû: Èìååò áîíóñ ê ñòðåëüáå î÷åðåäÿìè è óðîíó â ðóêîïàøíîé. \nÏðè óáèéñòâå âðàãà áîåâîé äóõ ðàñò¸ò áîëüøå, ÷åì ó äðóãèõ.\n \nìèíóñû: Õóæå èñïîëíÿåò îáÿçàííîñòè, äëÿ êîòîðûõ òðåáóåòñÿ òåðïåíèå: \nðåìîíò, âñêðûòèå çàìêîâ, ñíÿòèå ëîâóøåê, ëå÷åíèå, òðåíèðîâêà îïîë÷åíèÿ.",
|
||||
//Phlegmatic
|
||||
L"ïëþñû: Ëó÷øå èñïîëíÿåò îáÿçàííîñòè, òðåáóþùèå òåðïåíèÿ: \nðåìîíò, âñêðûòèå çàìêîâ, ñíÿòèå ëîâóøåê, ëå÷åíèå, òðåíèðîâêà îïîë÷åíèÿ.\n \nìèíóñû: Èìååò ìåíüøèé øàíñ ïåðåõâàòèòü õîä âðàãà.",
|
||||
//Dauntless
|
||||
L"ïëþñû: Èìååò ïîâûøåííîå ñîïðîòèâëåíèå ïîäàâëåíèþ è ñòðàõó. \nÁîåâîé äóõ ïðè ðàíåíèÿõ è ãèáåëè òîâàðèùåé ïîíèæàåòñÿ ìåäëåííåå, ÷åì ó äðóãèõ.\n \nìèíóñû: Ìîæåò áûòü ñ áîëüøåé âåðîÿòíîñòüþ ïîðàæåí âî âðåìÿ äâèæåíèÿ.",
|
||||
//Pacifist
|
||||
L"ïëþñû: Áîåâîé äóõ ïîâûøàåòñÿ ïðè âûïîëíåíèè íåáîåâûõ çàäàíèé (êðîìå òðåíèðîâêè îïîë÷åíèÿ).\n \nìèíóñû: Óáèéñòâî âðàãîâ íå ïîâûøàåò áîåâîé äóõ.",
|
||||
//Malicious
|
||||
L"ïëþñû: Èìååò áîëüøèé øàíñ íàíåñòè áîëåçíåííûå ðàíû è òðàâìû, ïðèâîäÿùèå ê óõóäøåíèþ ïàðàìåòðîâ.\n \nìèíóñû: Èìååò ïðîáëåìû â îáùåíèè è áûñòðî òåðÿåò áîåâîé äóõ, åñëè íå ñðàæàåòñÿ.",
|
||||
//Show-off
|
||||
L"ïëþñû: Ëó÷øå ðàáîòàåò â êîìïàíèè ïðåäñòàâèòåëåé ïðîòèâîïîëîæíîãî ïîëà.\n \nìèíóñû: Áîåâîé äóõ áîéöîâ òîãî æå ïîëà â åãî ïðèñóòñòâèè ðàñò¸ò ìåäëåííåå.",
|
||||
};
|
||||
|
||||
STR16 gzIMPDisabilitiesHelpTexts[]=
|
||||
{
|
||||
L"Íèêàêîãî âëèÿíèÿ.",
|
||||
L"Óìåíüøàåòñÿ ðàáîòîñïîñîáíîñòü è âîçíèêàþò ïðîáëåìû ñ äûõàíèåì \nåñëè íàõîäèòñÿ â ïóñòûííîé èëè òðîïè÷åñêîé ìåñòíîñòè.",
|
||||
L"Ìîæåò âïàñòü â ïàíèêó åñëè îñòàâèòü îäíîãî â îïðåäåë¸ííûõ ñèòóàöèÿõ.",
|
||||
L"Ïîíèæàåòñÿ ðàáîòîñïîñîáíîòü â çàìêíóòûõ ïîìåùåíèÿõ, ïîäçåìåëüÿõ.",
|
||||
L"Ïðè ïîïûòêå ïëûòü ìîæåò ñ ë¸ãêîñòüþ óòîíóòü.",
|
||||
L"Ïðè âèäå áîëüøèõ íàñåêîìûõ ìîæåò âïàñòü â êðàéíîñòè è íàâîðîòèòü äåë... \nÍàõîæäåíèå â òðîïè÷åñêèõ ëåñàõ òàê æå ïîíèæàåò åãî ðàáîòîñïîñîáíîñòü.",
|
||||
L"Èíîãäà çàáûâàåò ïðèêàçû, èç-çà ÷åãî òåðÿåò \níåêîòîðîå êîëè÷åñòâî Î÷êîâ Äåéñòâèÿ âî âðåìÿ áîÿ.",
|
||||
L"Èíîãäà áûâàþò ïðèñòóïû ïîìóòíåíèÿ ðàññóäêà. \n òàêèå ìîìåíòû îí ðàññòðåëèâàåò âåñü ìàãàçèí äî ïîñëåäíåé ïóëè. \nÏàäàåò äóõîì, åñëè åãî îðóæèå ýòîãî íå ïîçâîëÿåò.",
|
||||
};
|
||||
|
||||
|
||||
STR16 gzIMPProfileCostText[]=
|
||||
{
|
||||
L"Ñîñòàâëåíèå âàøåé õàððàêòåðèñòèêè ñòîèò %d$. Ïîäòâåðäèòü îïëàòó? ",
|
||||
};
|
||||
|
||||
STR16 zGioNewTraitsImpossibleText[]=
|
||||
{
|
||||
L"Íåëüçÿ âûáðàòü íîâûå óìåíèÿ IMP ïåðñîíàæà ñ îòêëþ÷åííûì PROFEX. Ïðîâåðüòå çíà÷åíèå ôàéëà íàñòðîåê JA2_Options.ini, êëþ÷: READ_PROFILE_DATA_FROM_XML.", //You cannot choose the New Trait System with PROFEX utility deactivated. Check your JA2_Options.ini for entry: READ_PROFILE_DATA_FROM_XML.
|
||||
};
|
||||
|
||||
//@@@: New string as of March 3, 2000.
|
||||
STR16 gzIronManModeWarningText[]=
|
||||
{
|
||||
L"Вы выбрали режим \"Стальная воля\". Проходить игру станет гораздо сложнее, так как вы не сможете сохранять игру, когда ваши наемники будут находиться в одном секторе с противником. Во время игры этот режим нельзя будет отключить. Вы уверены, что желаете играть в режиме \"Стальная воля\"?",
|
||||
L"Âàø âûáîð ïîçâîëèò ñîõðàíÿòüñÿ ëèøü â \"ìèðíîå âðåìÿ\". Ïðîõîäèòü èãðó ñòàíåò ãîðàçäî ñëîæíåå, òàê êàê ñîõðàíÿòüñÿ âû ñìîæåòå òîëüêî ìåæäó áîÿìè. Ïîñëå ñòàðòà èãðû èçìåíèòü ýòó íàñòðîéêó íåëüçÿ. Âû óâåðåíû, ÷òî ãîòîâû ðàññòàòüñÿ ñ âîçìîæíîñòüþ ñîõðàíÿòüñÿ â áîþ?",
|
||||
};
|
||||
|
||||
STR16 gzDisplayCoverText[]=
|
||||
{
|
||||
L"Местность: %d/100 %s, Освещённость: %d/100", //Cover: %d/100 %s, Brightness: %d/100
|
||||
L"Дальнобойность оружия: %d/%d ед., шанс попасть: %d/100", //Gun Range: %d/%d tiles, Chance to hit: %d/100
|
||||
L"Отключено выделение видимых зон наёмника и врага", //Disabling cover display
|
||||
L"Видимые зоны наёмнка", //Showing mercenary view
|
||||
L"Опасные зоны для наёмника", //Showing danger zones for mercenary
|
||||
L"Ìåñòíîñòü: %d/100 %s, Îñâåù¸ííîñòü: %d/100",
|
||||
L"Äàëüíîáîéíîñòü îðóæèÿ: %d/%d åä., øàíñ ïîïàñòü: %d/100",
|
||||
L"Îòêëþ÷åíî âûäåëåíèå âèäèìûõ çîí íà¸ìíèêà è âðàãà",
|
||||
L"Âèäèìûå çîíû íà¸ìíêà",
|
||||
L"Îïàñíûå çîíû äëÿ íà¸ìíèêà",
|
||||
L"Джунгли", //Wood //wanted to use jungle , but wood is shorter in german too (dschungel vs wald)
|
||||
L"Город", //Urban
|
||||
L"Пустыня", //Desert
|
||||
L"Снег", //Snow //NOT USED!!!
|
||||
L"Лес и пустыня", //Wood and Desert
|
||||
L"Ãîðîä",
|
||||
L"Ïóñòûíÿ",
|
||||
L"Ñíåã", //NOT USED!!!
|
||||
L"Ëåñ è ïóñòûíÿ",
|
||||
L"" // yes empty for now
|
||||
};
|
||||
|
||||
|
||||
@@ -32,6 +32,45 @@ enum
|
||||
extern STR16 zNewTacticalMessages[];
|
||||
extern STR16 gzIMPSkillTraitsText[];
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
// added by SANDRO
|
||||
extern STR16 gzIMPSkillTraitsTextNewMajor[];
|
||||
extern STR16 gzIMPSkillTraitsTextNewMinor[];
|
||||
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsSniper[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsRanger[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsTechnician[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsDoctor[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsNone[];
|
||||
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsMelee[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsThrowing[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsStealthy[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsNightOps[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsAthletics[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsScouting[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsNone[];
|
||||
|
||||
extern STR16 gzIMPOldSkillTraitsHelpTexts[];
|
||||
|
||||
extern STR16 gzIMPNewCharacterTraitsHelpTexts[];
|
||||
|
||||
extern STR16 gzIMPDisabilitiesHelpTexts[];
|
||||
|
||||
extern STR16 gzIMPProfileCostText[];
|
||||
|
||||
extern STR16 zGioNewTraitsImpossibleText[];
|
||||
///////////////////////////////////////////////////////
|
||||
|
||||
enum
|
||||
{
|
||||
IMM__IRON_MAN_MODE_WARNING_TEXT,
|
||||
|
||||
@@ -43,13 +43,16 @@ STR16 zNewTacticalMessages[]=
|
||||
L"In order to use the editor, please select a campaign other than the default.", ///@@new
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// SANDRO - New STOMP laptop strings
|
||||
//these strings match up with the defines in IMP Skill trait.cpp
|
||||
STR16 gzIMPSkillTraitsText[]=
|
||||
{
|
||||
L"Lock picking",
|
||||
L"Hand to hand combat",
|
||||
// made this more elegant
|
||||
L"Lock Picking",
|
||||
L"Hand to Hand",
|
||||
L"Electronics",
|
||||
L"Night operations",
|
||||
L"Night Operations",
|
||||
L"Throwing",
|
||||
L"Teaching",
|
||||
L"Heavy Weapons",
|
||||
@@ -58,12 +61,400 @@ STR16 gzIMPSkillTraitsText[]=
|
||||
L"Ambidextrous",
|
||||
L"Knifing",
|
||||
L"Sniper",
|
||||
L"Camouflage",
|
||||
L"Camouflaged",
|
||||
L"Martial Arts",
|
||||
|
||||
L"None",
|
||||
L"I.M.P. Specialties",
|
||||
L"(Expert)",
|
||||
|
||||
};
|
||||
|
||||
//added another set of skill texts for new major traits
|
||||
STR16 gzIMPSkillTraitsTextNewMajor[]=
|
||||
{
|
||||
L"Auto Weapons",
|
||||
L"Heavy Weapons",
|
||||
L"Marksman",
|
||||
L"Hunter",
|
||||
L"Gunslinger",
|
||||
L"Hand to Hand",
|
||||
L"Deputy",
|
||||
L"Technician",
|
||||
L"Paramedic",
|
||||
|
||||
L"None",
|
||||
L"I.M.P. Major Traits",
|
||||
// second names
|
||||
L"Machinegunner",
|
||||
L"Bombardier",
|
||||
L"Sniper",
|
||||
L"Ranger",
|
||||
L"Gunfighter",
|
||||
L"Martial Arts",
|
||||
L"Squadleader",
|
||||
L"Engineer",
|
||||
L"Doctor",
|
||||
};
|
||||
|
||||
//added another set of skill texts for new minor traits
|
||||
STR16 gzIMPSkillTraitsTextNewMinor[]=
|
||||
{
|
||||
L"Ambidextrous",
|
||||
L"Melee",
|
||||
L"Throwing",
|
||||
L"Night Ops",
|
||||
L"Stealthy",
|
||||
L"Athletics",
|
||||
L"Bodybuilding",
|
||||
L"Demolitions",
|
||||
L"Teaching",
|
||||
L"Scouting",
|
||||
|
||||
L"None",
|
||||
L"I.M.P. Minor Traits",
|
||||
};
|
||||
|
||||
//these texts are for help popup windows, describing trait properties
|
||||
STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]=
|
||||
{
|
||||
L"+%d%s Chance to Hit with Assault Rifles\n",
|
||||
L"+%d%s Chance to Hit with SMGs\n",
|
||||
L"+%d%s Chance to Hit with LMGs\n",
|
||||
L"-%d%s APs needed to fire with LMGs\n",
|
||||
L"-%d%s APs needed to ready light machine guns\n",
|
||||
L"Auto fire/burst chance to hit penalty is reduced by %d%s\n",
|
||||
L"Reduced chance for shooting unwanted bullets on autofire\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]=
|
||||
{
|
||||
L"-%d%s APs needed to fire grenade launchers\n",
|
||||
L"-%d%s APs needed to fire rocket launchers\n",
|
||||
L"+%d%s chance to hit with grenade launchers\n",
|
||||
L"+%d%s chance to hit with rocket launchers\n",
|
||||
L"-%d%s APs needed to fire mortar\n",
|
||||
L"Reduce penalty for mortar CtH by %d%s\n",
|
||||
L"+%d%s damage to tanks with heavy weapons, grenades and explosives\n",
|
||||
L"+%d%s damage to other targets with heavy weapons\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsSniper[]=
|
||||
{
|
||||
L"+%d%s Chance to Hit with Rifles\n",
|
||||
L"+%d%s Chance to Hit with Sniper Rifles\n",
|
||||
L"-%d%s effective range to target with all weapons\n",
|
||||
L"+%d%s aiming bonus per aim click (except for handguns)\n",
|
||||
L"+%d%s damage on shot",
|
||||
L" plus",
|
||||
L" per every aim click",
|
||||
L" after first",
|
||||
L" after second",
|
||||
L" after third",
|
||||
L" after fourth",
|
||||
L" after fifth",
|
||||
L" after sixth",
|
||||
L" after seventh",
|
||||
L"-%d%s APs needed to chamber a round with bolt-action rifles \n",
|
||||
L"Adds one more aim click for rifle-type guns\n",
|
||||
L"Adds %d more aim clicks for rifle-type guns\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsRanger[]=
|
||||
{
|
||||
L"+%d%s Chance to Hit with Rifles\n",
|
||||
L"+%d%s Chance to Hit with Shotguns\n",
|
||||
L"-%d%s APs needed to pump Shotguns\n",
|
||||
L"+%d%s group travelling speed between sectors if traveling by foot\n",
|
||||
L"+%d%s group travelling speed between sectors if traveling in vehicle (except helicopter)\n",
|
||||
L"-%d%s less energy spent for travelling between sectors\n",
|
||||
L"-%d%s weather penalties\n",
|
||||
L"+%d%s camouflage effectiveness\n",
|
||||
L"-%d%s worn out speed of camouflage by water or time\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsGunslinger[]=
|
||||
{
|
||||
L"-%d%s APs needed to fire with pistols and revolvers\n",
|
||||
L"+%d%s effective range with pistols and revolvers\n",
|
||||
L"+%d%s chance to hit with pistols and revolvers\n",
|
||||
L"+%d%s chance to hit with machine pistols",
|
||||
L" (on single shots only)",
|
||||
L"+%d%s aiming bonus per click with pistols, machine pistols and revolvers\n",
|
||||
L"-%d%s APs needed to raise pistols and revolvers\n",
|
||||
L"-%d%s APs needed to reload pistols, machine pistols and revolvers\n",
|
||||
L"Adds %d more aim click for pistols, machine pistols and revolvers\n",
|
||||
L"Adds %d more aim clicks for pistols, machine pistols and revolvers\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsMartialArts[]=
|
||||
{
|
||||
L"-%d%s AP cost of hand to hand attacks(bare hands or with brass knuckles)\n",
|
||||
L"+%d%s chance to hit with hand to hand attacks with bare hands\n",
|
||||
L"+%d%s chance to hit with hand to hand attacks with brass knuckles\n",
|
||||
L"+%d%s damage of hand to hand attacks(bare hands or with brass knuckles)\n",
|
||||
L"+%d%s breath damage of hand to hand attacks(bare hands or with brass knuckles)\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes slightly longer to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes longer to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes much longer to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes very long to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes extremely long to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks takes long hours to recuperate\n",
|
||||
L"Enemy knocked out due to your HtH attacks probably never stand up\n",
|
||||
L"Focused (aimed) punch deals +%d%s more damage\n",
|
||||
L"Your special spinning kick deals +%d%s more damage\n",
|
||||
L"+%d%s change to dodge hand to hand attacks\n",
|
||||
L"+%d%s on top chance to dodge HtH attacks with bare hands",
|
||||
L" or brass knuckles",
|
||||
L" (+%d%s with brass knuckles)",
|
||||
L"+%d%s on top chance to dodge HtH attacks with brass knuckles\n",
|
||||
L"+%d%s chance to dodge attacks by any melee weapon\n",
|
||||
L"-%d%s APs needed to steal weapon from enemy hands\n",
|
||||
L"-%d%s APs needed to change state (stand, crouch, lie down), turn around, climb on/off roof and jump obstacles\n",
|
||||
L"-%d%s APs needed to change state (stand, crouch, lie down)\n",
|
||||
L"-%d%s APs needed to turn around\n",
|
||||
L"-%d%s APs needed to climb on/off roof and jump obstacles\n",
|
||||
L"+%d%s chance to kick doors\n",
|
||||
L"You gain special animations for hand to hand combat\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsSquadleader[]=
|
||||
{
|
||||
L"+%d%s APs per round of other mercs in vicinity\n",
|
||||
L"+%d effective exp level of other mercs in vicinity, which have lesser level than the %s\n",
|
||||
L"+%d effective exp level to count as a standby when counting friends' bonus for suppression\n",
|
||||
L"+%d%s total suppression tolerance of other mercs in vicinity and %s himself\n",
|
||||
L"+%d morale gain of other mercs in vicinity\n",
|
||||
L"-%d morale loss of other mercs in vicinity\n",
|
||||
L"The vicinity for bonuses is %d tiles",
|
||||
L" (%d tiles with extended ears)",
|
||||
L"(Max simultaneous bonuses for one soldier is %d)\n",
|
||||
L"+%d%s fear resistence of %s\n",
|
||||
L"Drawback: %dx morale loss for %s's death for all other mercs\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsTechnician[]=
|
||||
{
|
||||
L"+%d%s to repairing speed\n",
|
||||
L"+%d%s to lockpicking (normal/electronic locks)\n",
|
||||
L"+%d%s to disarming electronic traps\n",
|
||||
L"+%d%s to attaching special items and combining things\n",
|
||||
L"+%d%s to unjamming a gun in combat\n",
|
||||
L"Reduce penalty to repair electronic items by %d%s\n",
|
||||
L"Increased chance to detect traps and mines (+%d detect level)\n",
|
||||
L"+%d%s CtH of robot controlled by the %s\n",
|
||||
L"%s trait grants you the ability to repair the robot\n",
|
||||
L"Reduced penalty to repair speed of the robot by %d%s\n",
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsDoctor[]=
|
||||
{
|
||||
L"Has ability to make surgical intervention by using medical bag on wounded soldier\n",
|
||||
L"Surgery instantly returns %d%s of lost health back.",
|
||||
L" (This drains the medical bag a lot.)",
|
||||
L"Can heal lost stats (from critical hits) by the",
|
||||
L" surgery or",
|
||||
L" doctor assignment.\n",
|
||||
L"+%d%s effectiveness on doctor-patient assignment\n",
|
||||
L"+%d%s bandaging speed\n",
|
||||
L"+%d%s natural regeneration speed of all soldiers in the same sector",
|
||||
L" (max %d these bonuses per sector)",
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"No bonuses",
|
||||
};
|
||||
|
||||
STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]=
|
||||
{
|
||||
L"Reduce penalty to shoot dual weapons by %d%s\n",
|
||||
L"+%d%s speed of reloading guns with magazines\n",
|
||||
L"+%d%s speed of reloading guns with loose rounds\n",
|
||||
L"-%d%s APs needed to pickup items\n",
|
||||
L"-%d%s APs needed to work backpack\n",
|
||||
L"-%d%s APs needed to handle doors\n",
|
||||
L"-%d%s APs needed to plant/remove bombs and mines\n",
|
||||
L"-%d%s APs needed to attach items\n",
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsMelee[]=
|
||||
{
|
||||
L"-%d%s APs needed to attack by blades\n",
|
||||
L"+%d%s chance to hit with blades\n",
|
||||
L"+%d%s chance to hit with blunt melee weapons\n",
|
||||
L"+%d%s damage of blades\n",
|
||||
L"+%d%s damage of blunt melee weapons\n",
|
||||
L"Aimed attack by any melee weapon deals +%d%s damage\n",
|
||||
L"+%d%s chance to dodge attack by melee blades\n",
|
||||
L"+%d%s on top chance to dodge melee blades if having a blade in hands\n",
|
||||
L"+%d%s chance to dodge attack by blunt melee weapons\n",
|
||||
L"+%d%s on top chance to dodge blunt melee weapons if having a blade in hands\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsThrowing[]=
|
||||
{
|
||||
L"-%d%s basic APs needed to throw blades\n",
|
||||
L"+%d%s max range when throwing blades\n",
|
||||
L"+%d%s chance to hit when throwing blades\n",
|
||||
L"+%d%s chance to hit when throwing blades per aim click\n",
|
||||
L"+%d%s damage of throwing blades\n",
|
||||
L"+%d%s damage of throwing blades per aim click\n",
|
||||
L"+%d%s chance to inflict critical hit by throwing blade if not seen or heard\n",
|
||||
L"+%d critical hit by throwing blade multiplier\n",
|
||||
L"Adds %d more aim click for throwing blades\n",
|
||||
L"Adds %d more aim clicks for throwing blades\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsNightOps[]=
|
||||
{
|
||||
L"+%d to effective sight range in dark\n",
|
||||
L"+%d to general effective hearing range\n",
|
||||
L"+%d to effective hearing range in dark on top\n",
|
||||
L"+%d to interrupts modifier in dark\n",
|
||||
L"-%d need to sleep\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsStealthy[]=
|
||||
{
|
||||
L"-%d%s APs needed to move quietly\n",
|
||||
L"+%d%s chance to move quietly\n",
|
||||
L"+%d%s stealth (being 'invisible' if unnoticed)\n",
|
||||
L"Reduced cover penalty for movement by %d%s\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsAthletics[]=
|
||||
{
|
||||
L"-%d%s APs needed for moving (running, walking, swatting, crawling, swimming, etc.)\n",
|
||||
L"-%d%s energy spent for movement, roof-climbing, obstacle-jumping, swimming, etc.\n",
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]=
|
||||
{
|
||||
L"Has %d%s damage resistance\n",
|
||||
L"+%d%s effective strength for carrying weight capacity \n",
|
||||
L"Reduced energy lost when hit by HtH attack by %d%s\n",
|
||||
L"Increased damage needed to fall down if hit to legs by %d%s\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsDemolitions[]=
|
||||
{
|
||||
L"-%d%s APs needed to throw grenades\n",
|
||||
L"+%d%s max range when throwing grenades\n",
|
||||
L"+%d%s chance to hit when throwing grenades\n",
|
||||
L"+%d%s damage of set bombs and mines\n",
|
||||
L"+%d%s to attaching detonators check\n",
|
||||
L"+%d%s to planting/removing bombs check\n",
|
||||
L"Decreases chance enemy will detect your bombs and mines (+%d bomb level)\n",
|
||||
L"Increased chance shaped charge will open the doors (damage multiplied by %d)\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsTeaching[]=
|
||||
{
|
||||
L"+%d%s bonus to train militia\n",
|
||||
L"+%d%s bonus to effective leadership for determining militia training\n",
|
||||
L"+%d%s bonus to teaching other mercs\n",
|
||||
L"Skill value counts to be +%d higher for being able to teach this skill to other mercs\n",
|
||||
L"+%d%s bonus to train stats through self-practising assignment\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsScouting[]=
|
||||
{
|
||||
L"+%d to effective sight range with scopes on weapons\n",
|
||||
L"+%d to effective sight range with binoculars (and scopes separated from weapons)\n",
|
||||
L"-%d tunnel vision with binoculars (and scopes separated from weapons)\n",
|
||||
L"If in sector, adjacent sectors will show exact number of enemies\n",
|
||||
L"If in sector, adjacent sectors will show presence of enemies if any\n",
|
||||
L"Prevents the enemy to ambush your squad\n",
|
||||
L"Prevents the bloodcats to ambush your squad\n",
|
||||
|
||||
};
|
||||
STR16 gzIMPMinorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"No bonuses",
|
||||
};
|
||||
|
||||
STR16 gzIMPOldSkillTraitsHelpTexts[]=
|
||||
{
|
||||
L"+%d%s bonus to lockpicking\n", // 0
|
||||
L"+%d%s hand to hand chance to hit\n",
|
||||
L"+%d%s hand to hand damage\n",
|
||||
L"+%d%s chance to dodge hand to hand attacks\n",
|
||||
L"Eliminates the penalty to repair and handle\nelectronic things (locks, traps, rem. detonators, robot, etc.)\n",
|
||||
L"+%d to effective sight range in dark\n",
|
||||
L"+%d to general effective hearing range\n",
|
||||
L"+%d to effective hearing range in dark on top\n",
|
||||
L"+%d to interrupts modifier in dark\n",
|
||||
L"-%d need to sleep\n",
|
||||
L"+%d%s max range when throwing anything\n", // 10
|
||||
L"+%d%s chance to hit when throwing anything\n",
|
||||
L"+%d%s chance to instantly kill by throwing knife if not seen or heard\n",
|
||||
L"+%d%s bonus to train militia and instruct other mercs\n",
|
||||
L"+%d%s effective leadership for militia training calculations\n",
|
||||
L"+%d%s chance to hit with rocket/greande launchers and mortar\n",
|
||||
L"Auto fire/burst chance to hit penalty is divided by %d\n",
|
||||
L"Reduced chance for shooting unwanted bullets on autofire\n",
|
||||
L"+%d%s chance to move quietly\n",
|
||||
L"+%d%s stealth (being 'invisible' if unnoticed)\n",
|
||||
L"Eliminates the CtH penalty for second hand when firing two weapons at once\n", // 20
|
||||
L"+%d%s chance to hit with melee blades\n",
|
||||
L"+%d%s chance to dodge attacks by melee blades if having blade in hands\n",
|
||||
L"+%d%s chance to dodge attacks by melee blades if having anything else in hands\n",
|
||||
L"+%d%s chance to dodge hand to hand attacks if having blade in hands\n",
|
||||
L"-%d%s effective range to target with all weapons\n",
|
||||
L"+%d%s aiming bonus per aim click\n",
|
||||
L"Provides permanent camouflage\n",
|
||||
L"+%d%s hand to hand chance to hit\n",
|
||||
L"+%d%s hand to hand damage\n",
|
||||
L"+%d%s chance to dodge hand to hand attacks if having empty hands\n", // 30
|
||||
L"+%d%s chance to dodge hand to hand attacks if not having empty hands\n",
|
||||
L"+%d%s chance to dodge attacks by melee blades\n",
|
||||
L"Can perform spinning kick attack on weakened enemies to deal double damage\n",
|
||||
L"You gain special animations for hand to hand combat\n",
|
||||
L"No bonuses",
|
||||
};
|
||||
|
||||
STR16 gzIMPNewCharacterTraitsHelpTexts[]=
|
||||
{
|
||||
L"A: No advantage.\nD: No disadvantage.",
|
||||
L"A: Has better performance when couple of mercs are nearby.\nD: Gains no morale when no other merc is nearby.",
|
||||
L"A: Has better performance when no other merc is nearby.\nD: Gains no morale when in a group.",
|
||||
L"A: His morale sinks a little slower and grows faster than normal.\nD: Has lesser chance to detect traps and mines.",
|
||||
L"A: Has bonus on training militia and is better at communication with people.\nD: Gains no morale for actions of other mercs.",
|
||||
L"A: Slightly faster learning when assigned on practicing or as a student.\nD: Has lesser suppression and fear resistance.",
|
||||
L"A: His energy goes down a bit slower except on assignments as doctor, repairman, militia trainer or if learning certain skills.\nD: His wisdom, leadership, explosives, mechanical and medical skills improve slightly slower.",
|
||||
L"A: Has slightly better chance to hit on burst/autofire and inflicts slightly bigger damage in close combat\n Gains a little more morale for killing.\nD: Has penalty for actions which needs patience like repairing items, picking locks, removing traps, doctoring, training militia.",
|
||||
L"A: Has bonus for actions which needs patience like repairing items, picking locks, removing traps, doctoring and training militia.\nD: His interrupts chance is slightly lowered.",
|
||||
L"A: Incresed resistance to suppression and fear.\n Morale loss for taking damage and companions deaths is lower for him.\nD: Can be hit easier and enemy penalty for moving target is lesser in his case.",
|
||||
L"A: He gains morale when on non-combat assignments (except training militia).\nD: Gains no morale for killing.",
|
||||
L"A: Has bigger chance for inflicting stat loss and can inflict special painful wounds when able to\n Gains bonus morale for inflicting stat loss.\nD: Has penalty for communication with people and his morale sinks faster if not fighting.",
|
||||
L"A: Has better performance when there are some mercs of opposite gender nearby.\nD: Morale of other mercs of the same gender grows slower if nearby.",
|
||||
|
||||
};
|
||||
|
||||
STR16 gzIMPDisabilitiesHelpTexts[]=
|
||||
{
|
||||
L"No effects.",
|
||||
L"Has problems with breathing and reduced overall performance if in tropical or desert sectors.",
|
||||
L"Can suffer panic attack if left alone in certain situations.",
|
||||
L"His overall performance is reduced if underground.",
|
||||
L"If trying to swim he can easily drown.",
|
||||
L"A look at large insects can make a big problems\nand being in tropical sectors also reduce his performance a bit.",
|
||||
L"Sometimes forgets what orders he got and therefore loses some APs if in combat.",
|
||||
L"He can go psycho and shoot like mad once per a while\nand can lose morale if unable to do that with given weapon.",
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
STR16 gzIMPProfileCostText[]=
|
||||
{
|
||||
L"The profile cost is %d$. Do you authorize the payment? ",
|
||||
};
|
||||
|
||||
STR16 zGioNewTraitsImpossibleText[]=
|
||||
{
|
||||
L"You cannot choose the New Trait System with PROFEX utility deactivated. Check your JA2_Options.ini for entry: READ_PROFILE_DATA_FROM_XML.",
|
||||
};
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//@@@: New string as of March 3, 2000.
|
||||
STR16 gzIronManModeWarningText[]=
|
||||
{
|
||||
|
||||
@@ -32,6 +32,45 @@ enum
|
||||
extern STR16 zNewTacticalMessages[];
|
||||
extern STR16 gzIMPSkillTraitsText[];
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
// added by SANDRO
|
||||
extern STR16 gzIMPSkillTraitsTextNewMajor[];
|
||||
extern STR16 gzIMPSkillTraitsTextNewMinor[];
|
||||
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsSniper[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsRanger[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsTechnician[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsDoctor[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsNone[];
|
||||
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsMelee[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsThrowing[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsStealthy[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsNightOps[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsAthletics[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsScouting[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsNone[];
|
||||
|
||||
extern STR16 gzIMPOldSkillTraitsHelpTexts[];
|
||||
|
||||
extern STR16 gzIMPNewCharacterTraitsHelpTexts[];
|
||||
|
||||
extern STR16 gzIMPDisabilitiesHelpTexts[];
|
||||
|
||||
extern STR16 gzIMPProfileCostText[];
|
||||
|
||||
extern STR16 zGioNewTraitsImpossibleText[];
|
||||
///////////////////////////////////////////////////////
|
||||
|
||||
enum
|
||||
{
|
||||
IMM__IRON_MAN_MODE_WARNING_TEXT,
|
||||
|
||||
+1215
-353
File diff suppressed because it is too large
Load Diff
+1194
-358
File diff suppressed because it is too large
Load Diff
+964
-107
File diff suppressed because it is too large
Load Diff
+694
@@ -0,0 +1,694 @@
|
||||
#ifndef __BINKH__
|
||||
#define __BINKH__
|
||||
|
||||
#define BINKMAJORVERSION 1
|
||||
#define BINKMINORVERSION 5
|
||||
#define BINKSUBVERSION 10
|
||||
#define BINKVERSION "1.5J"
|
||||
#define BINKDATE "2002-06-24"
|
||||
|
||||
#ifndef __RADRES__
|
||||
|
||||
#ifndef __RADBASEH__
|
||||
#include "radbase.h"
|
||||
#endif
|
||||
|
||||
RADDEFSTART
|
||||
|
||||
typedef struct BINK PTR4* HBINK;
|
||||
|
||||
struct BINKIO;
|
||||
typedef S32 (RADLINK PTR4* BINKIOOPEN) (struct BINKIO PTR4* Bnkio, const char PTR4 *name, U32 flags);
|
||||
typedef U32 (RADLINK PTR4* BINKIOREADHEADER) (struct BINKIO PTR4* Bnkio, S32 Offset, void PTR4* Dest,U32 Size);
|
||||
typedef U32 (RADLINK PTR4* BINKIOREADFRAME) (struct BINKIO PTR4* Bnkio, U32 Framenum,S32 origofs,void PTR4* dest,U32 size);
|
||||
typedef U32 (RADLINK PTR4* BINKIOGETBUFFERSIZE)(struct BINKIO PTR4* Bnkio, U32 Size);
|
||||
typedef void (RADLINK PTR4* BINKIOSETINFO) (struct BINKIO PTR4* Bnkio, void PTR4* Buf,U32 Size,U32 FileSize,U32 simulate);
|
||||
typedef U32 (RADLINK PTR4* BINKIOIDLE) (struct BINKIO PTR4* Bnkio);
|
||||
typedef void (RADLINK PTR4* BINKIOCLOSE) (struct BINKIO PTR4* Bnkio);
|
||||
|
||||
typedef void (RADLINK PTR4* BINKCBSUSPEND) (struct BINKIO PTR4* Bnkio);
|
||||
typedef S32 (RADLINK PTR4* BINKCBTRYSUSPEND) (struct BINKIO PTR4* Bnkio);
|
||||
typedef void (RADLINK PTR4* BINKCBRESUME) (struct BINKIO PTR4* Bnkio);
|
||||
typedef void (RADLINK PTR4* BINKCBIDLE) (struct BINKIO PTR4* Bnkio);
|
||||
|
||||
struct BINKIO
|
||||
{
|
||||
BINKIOREADHEADER ReadHeader;
|
||||
BINKIOREADFRAME ReadFrame;
|
||||
BINKIOGETBUFFERSIZE GetBufferSize;
|
||||
BINKIOSETINFO SetInfo;
|
||||
BINKIOIDLE Idle;
|
||||
BINKIOCLOSE Close;
|
||||
HBINK bink;
|
||||
volatile U32 ReadError;
|
||||
volatile U32 DoingARead;
|
||||
volatile U32 BytesRead;
|
||||
volatile U32 Working;
|
||||
volatile U32 TotalTime;
|
||||
volatile U32 ForegroundTime;
|
||||
volatile U32 IdleTime;
|
||||
volatile U32 ThreadTime;
|
||||
volatile U32 BufSize;
|
||||
volatile U32 BufHighUsed;
|
||||
volatile U32 CurBufSize;
|
||||
volatile U32 CurBufUsed;
|
||||
volatile U8 iodata[128+32];
|
||||
|
||||
// filled in by the caller
|
||||
BINKCBSUSPEND suspend_callback;
|
||||
BINKCBTRYSUSPEND try_suspend_callback;
|
||||
BINKCBRESUME resume_callback;
|
||||
BINKCBIDLE idle_on_callback;
|
||||
volatile U32 callback_control[16]; // buffer for background IO callback
|
||||
};
|
||||
|
||||
struct BINKSND;
|
||||
typedef S32 (RADLINK PTR4* BINKSNDOPEN) (struct BINKSND PTR4* BnkSnd, U32 freq, S32 bits, S32 chans, U32 flags, HBINK bink);
|
||||
typedef S32 (RADLINK PTR4* BINKSNDREADY) (struct BINKSND PTR4* BnkSnd);
|
||||
typedef S32 (RADLINK PTR4* BINKSNDLOCK) (struct BINKSND PTR4* BnkSnd, U8 PTR4* PTR4* addr, U32 PTR4* len);
|
||||
typedef S32 (RADLINK PTR4* BINKSNDUNLOCK) (struct BINKSND PTR4* BnkSnd, U32 filled);
|
||||
typedef void (RADLINK PTR4* BINKSNDVOLUME) (struct BINKSND PTR4* BnkSnd, S32 volume);
|
||||
typedef void (RADLINK PTR4* BINKSNDPAN) (struct BINKSND PTR4* BnkSnd, S32 pan);
|
||||
typedef void (RADLINK PTR4* BINKSNDMIXBINS) (struct BINKSND PTR4* BnkSnd, U32 PTR4* mix_bins, U32 total);
|
||||
typedef void (RADLINK PTR4* BINKSNDMIXBINVOLS) (struct BINKSND PTR4* BnkSnd, U32 PTR4* vol_mix_bins, S32 PTR4* volumes, U32 total );
|
||||
typedef S32 (RADLINK PTR4* BINKSNDONOFF) (struct BINKSND PTR4* BnkSnd, S32 status);
|
||||
typedef S32 (RADLINK PTR4* BINKSNDPAUSE) (struct BINKSND PTR4* BnkSnd, S32 status);
|
||||
typedef void (RADLINK PTR4* BINKSNDCLOSE) (struct BINKSND PTR4* BnkSnd);
|
||||
|
||||
typedef BINKSNDOPEN (RADLINK PTR4* BINKSNDSYSOPEN) (U32 param);
|
||||
|
||||
struct BINKSND
|
||||
{
|
||||
BINKSNDREADY Ready;
|
||||
BINKSNDLOCK Lock;
|
||||
BINKSNDUNLOCK Unlock;
|
||||
BINKSNDVOLUME Volume;
|
||||
BINKSNDPAN Pan;
|
||||
BINKSNDPAUSE Pause;
|
||||
BINKSNDONOFF SetOnOff;
|
||||
BINKSNDCLOSE Close;
|
||||
BINKSNDMIXBINS MixBins;
|
||||
BINKSNDMIXBINVOLS MixBinVols;
|
||||
|
||||
U32 sndbufsize; // sound buffer size
|
||||
U8 PTR4* sndbuf; // sound buffer
|
||||
U8 PTR4* sndend; // end of the sound buffer
|
||||
U8 PTR4* sndwritepos; // current write position
|
||||
U8 PTR4* sndreadpos; // current read position
|
||||
U32 sndcomp; // sound compression handle
|
||||
U32 sndamt; // amount of sound currently in the buffer
|
||||
U32 sndconvert8; // convert back to 8-bit sound at runtime
|
||||
U32 sndendframe; // frame number that the sound ends on
|
||||
U32 sndprime; // amount of data to prime the playahead
|
||||
U32 sndpad; // padded this much audio
|
||||
|
||||
U32 BestSizeIn16;
|
||||
U32 BestSizeMask;
|
||||
U32 SoundDroppedOut;
|
||||
S32 OnOff;
|
||||
U32 Latency;
|
||||
U32 VideoScale;
|
||||
U32 freq;
|
||||
S32 bits,chans;
|
||||
U8 snddata[256];
|
||||
};
|
||||
|
||||
struct BINKRECT
|
||||
{
|
||||
S32 Left,Top,Width,Height;
|
||||
};
|
||||
|
||||
#define BINKMAXDIRTYRECTS 8
|
||||
|
||||
struct BUNDLEPOINTERS
|
||||
{
|
||||
void* typeptr;
|
||||
void* type16ptr;
|
||||
void* colorptr;
|
||||
void* bits2ptr;
|
||||
void* motionXptr;
|
||||
void* motionYptr;
|
||||
void* dctptr;
|
||||
void* mdctptr;
|
||||
void* patptr;
|
||||
};
|
||||
|
||||
|
||||
struct BINK
|
||||
{
|
||||
U32 Width; // Width (1 based, 640 for example)
|
||||
U32 Height; // Height (1 based, 480 for example)
|
||||
U32 Frames; // Number of frames (1 based, 100 = 100 frames)
|
||||
U32 FrameNum; // Frame to *be* displayed (1 based)
|
||||
U32 LastFrameNum; // Last frame decompressed or skipped (1 based)
|
||||
|
||||
U32 FrameRate; // Frame Rate Numerator
|
||||
U32 FrameRateDiv; // Frame Rate Divisor (frame rate=numerator/divisor)
|
||||
|
||||
U32 ReadError; // Non-zero if a read error has ocurred
|
||||
U32 OpenFlags; // flags used on open
|
||||
U32 BinkType; // Bink flags
|
||||
|
||||
U32 Size; // size of file
|
||||
U32 FrameSize; // The current frame's size in bytes
|
||||
U32 SndSize; // The current frame sound tracks' size in bytes
|
||||
|
||||
BINKRECT FrameRects[BINKMAXDIRTYRECTS];// Dirty rects from BinkGetRects
|
||||
S32 NumRects;
|
||||
|
||||
U32 PlaneNum; // which set of planes is current
|
||||
void PTR4* YPlane[2]; // pointer to the uncompressed Y (Cr and Cr follow)
|
||||
void PTR4* APlane[2]; // decompressed alpha plane (if present)
|
||||
U32 YWidth; // widths and heights of the video planes
|
||||
U32 YHeight;
|
||||
U32 UVWidth;
|
||||
U32 UVHeight;
|
||||
|
||||
void PTR4* MaskPlane; // pointer to the mask plane (Ywidth/16*Yheight/16)
|
||||
U32 MaskPitch; // Mask Pitch
|
||||
U32 MaskLength; // total length of the mask plane
|
||||
|
||||
U32 LargestFrameSize; // Largest frame size
|
||||
U32 InternalFrames; // how many frames were potentially compressed
|
||||
|
||||
S32 NumTracks; // how many tracks
|
||||
|
||||
U32 Highest1SecRate; // Highest 1 sec data rate
|
||||
U32 Highest1SecFrame; // Highest 1 sec data rate starting frame
|
||||
|
||||
S32 Paused; // is the bink movie paused?
|
||||
|
||||
U32 BackgroundThread; // handle to background thread
|
||||
|
||||
// everything below is for internal Bink use
|
||||
|
||||
void PTR4* compframe; // compressed frame data
|
||||
void PTR4* preloadptr; // preloaded compressed frame data
|
||||
U32* frameoffsets; // offsets of each of the frames
|
||||
|
||||
BINKIO bio; // IO structure
|
||||
U8 PTR4* ioptr; // io buffer ptr
|
||||
U32 iosize; // io buffer size
|
||||
U32 decompwidth; // width not include scaling
|
||||
U32 decompheight; // height not include scaling
|
||||
|
||||
S32 PTR4* trackindexes; // track indexes
|
||||
U32 PTR4* tracksizes; // largest single frame of track
|
||||
U32 PTR4* tracktypes; // type of each sound track
|
||||
S32 PTR4* trackIDs; // external track numbers
|
||||
|
||||
U32 numrects; // number of rects from BinkGetRects
|
||||
|
||||
U32 playedframes; // how many frames have we played
|
||||
U32 firstframetime; // very first frame start
|
||||
U32 startframetime; // start frame start
|
||||
U32 startblittime; // start of blit period
|
||||
U32 startsynctime; // start of synched time
|
||||
U32 startsyncframe; // frame of startsynctime
|
||||
U32 twoframestime; // two frames worth of time
|
||||
U32 entireframetime; // entire frame time
|
||||
|
||||
U32 slowestframetime; // slowest frame in ms
|
||||
U32 slowestframe; // slowest frame number
|
||||
U32 slowest2frametime; // second slowest frame in ms
|
||||
U32 slowest2frame; // second slowest frame
|
||||
|
||||
U32 soundon; // sound turned on?
|
||||
U32 videoon; // video turned on?
|
||||
|
||||
U32 totalmem; // total memory used
|
||||
U32 timevdecomp; // total time decompressing video
|
||||
U32 timeadecomp; // total time decompressing audio
|
||||
U32 timeblit; // total time blitting
|
||||
U32 timeopen; // total open time
|
||||
|
||||
U32 fileframerate; // frame rate originally in the file
|
||||
U32 fileframeratediv;
|
||||
|
||||
U32 runtimeframes; // max frames for runtime analysis
|
||||
U32 runtimemoveamt; // bytes to move each frame
|
||||
U32 PTR4* rtframetimes; // start times for runtime frames
|
||||
U32 PTR4* rtadecomptimes; // decompress times for runtime frames
|
||||
U32 PTR4* rtvdecomptimes; // decompress times for runtime frames
|
||||
U32 PTR4* rtblittimes; // blit times for runtime frames
|
||||
U32 PTR4* rtreadtimes; // read times for runtime frames
|
||||
U32 PTR4* rtidlereadtimes; // idle read times for runtime frames
|
||||
U32 PTR4* rtthreadreadtimes; // thread read times for runtime frames
|
||||
|
||||
U32 lastblitflags; // flags used on last blit
|
||||
U32 lastdecompframe; // last frame number decompressed
|
||||
|
||||
U32 playingtracks; // how many tracks are playing
|
||||
U32 soundskips; // number of sound stops
|
||||
BINKSND PTR4* bsnd; // SND structures
|
||||
U32 skippedlastblit; // skipped last frame?
|
||||
U32 skipped_this_frame; // skipped the current frame?
|
||||
U32 skippedblits; // how many blits were skipped
|
||||
|
||||
BUNDLEPOINTERS bunp; // pointers to internal temporary memory
|
||||
U32 skipped_in_a_row; // how many frames have we skipped in a row
|
||||
U32 big_sound_skip_adj; // adjustment for large skips
|
||||
U32 big_sound_skip_reduce; // amount to reduce large skips by each frame
|
||||
U32 last_time_almost_empty; // time of last almost empty IO buffer
|
||||
U32 last_read_count; // counter to keep track of the last bink IO
|
||||
U32 last_sound_count; // counter to keep track of the last bink sound
|
||||
U32 snd_callback_buffer[16];// buffer for background sound callback
|
||||
};
|
||||
|
||||
|
||||
struct BINKSUMMARY
|
||||
{
|
||||
U32 Width; // Width of frames
|
||||
U32 Height; // Height of frames
|
||||
U32 TotalTime; // total time (ms)
|
||||
U32 FileFrameRate; // frame rate
|
||||
U32 FileFrameRateDiv; // frame rate divisor
|
||||
U32 FrameRate; // frame rate
|
||||
U32 FrameRateDiv; // frame rate divisor
|
||||
U32 TotalOpenTime; // Time to open and prepare for decompression
|
||||
U32 TotalFrames; // Total Frames
|
||||
U32 TotalPlayedFrames; // Total Frames played
|
||||
U32 SkippedFrames; // Total number of skipped frames
|
||||
U32 SkippedBlits; // Total number of skipped blits
|
||||
U32 SoundSkips; // Total number of sound skips
|
||||
U32 TotalBlitTime; // Total time spent blitting
|
||||
U32 TotalReadTime; // Total time spent reading
|
||||
U32 TotalVideoDecompTime; // Total time spent decompressing video
|
||||
U32 TotalAudioDecompTime; // Total time spent decompressing audio
|
||||
U32 TotalIdleReadTime; // Total time spent reading while idle
|
||||
U32 TotalBackReadTime; // Total time spent reading in background
|
||||
U32 TotalReadSpeed; // Total io speed (bytes/second)
|
||||
U32 SlowestFrameTime; // Slowest single frame time (ms)
|
||||
U32 Slowest2FrameTime; // Second slowest single frame time (ms)
|
||||
U32 SlowestFrameNum; // Slowest single frame number
|
||||
U32 Slowest2FrameNum; // Second slowest single frame number
|
||||
U32 AverageDataRate; // Average data rate of the movie
|
||||
U32 AverageFrameSize; // Average size of the frame
|
||||
U32 HighestMemAmount; // Highest amount of memory allocated
|
||||
U32 TotalIOMemory; // Total extra memory allocated
|
||||
U32 HighestIOUsed; // Highest extra memory actually used
|
||||
U32 Highest1SecRate; // Highest 1 second rate
|
||||
U32 Highest1SecFrame; // Highest 1 second start frame
|
||||
};
|
||||
|
||||
|
||||
struct BINKREALTIME
|
||||
{
|
||||
U32 FrameNum; // Current frame number
|
||||
U32 FrameRate; // frame rate
|
||||
U32 FrameRateDiv; // frame rate divisor
|
||||
U32 Frames; // frames in this sample period
|
||||
U32 FramesTime; // time is ms for these frames
|
||||
U32 FramesVideoDecompTime; // time decompressing these frames
|
||||
U32 FramesAudioDecompTime; // time decompressing these frames
|
||||
U32 FramesReadTime; // time reading these frames
|
||||
U32 FramesIdleReadTime; // time reading these frames at idle
|
||||
U32 FramesThreadReadTime; // time reading these frames in background
|
||||
U32 FramesBlitTime; // time blitting these frames
|
||||
U32 ReadBufferSize; // size of read buffer
|
||||
U32 ReadBufferUsed; // amount of read buffer currently used
|
||||
U32 FramesDataRate; // data rate for these frames
|
||||
};
|
||||
|
||||
#define BINKMARKER1 'fKIB'
|
||||
#define BINKMARKER2 'gKIB' // new Bink files use this tag
|
||||
#define BINKMARKER3 'hKIB' // newer Bink files use this tag
|
||||
#define BINKMARKER4 'iKIB' // even newer Bink files use this tag
|
||||
|
||||
struct BINKHDR
|
||||
{
|
||||
U32 Marker; // Bink marker
|
||||
U32 Size; // size of the file-8
|
||||
U32 Frames; // Number of frames (1 based, 100 = 100 frames)
|
||||
U32 LargestFrameSize; // Size in bytes of largest frame
|
||||
U32 InternalFrames; // Number of internal frames
|
||||
|
||||
U32 Width; // Width (1 based, 640 for example)
|
||||
U32 Height; // Height (1 based, 480 for example)
|
||||
U32 FrameRate; // frame rate
|
||||
U32 FrameRateDiv; // frame rate divisor (framerate/frameratediv=fps)
|
||||
|
||||
U32 Flags; // height compression options
|
||||
U32 NumTracks; // number of tracks
|
||||
};
|
||||
|
||||
|
||||
//=======================================================================
|
||||
#define BINKFRAMERATE 0x00001000L // Override fr (call BinkFrameRate first)
|
||||
#define BINKPRELOADALL 0x00002000L // Preload the entire animation
|
||||
#define BINKSNDTRACK 0x00004000L // Set the track number to play
|
||||
#define BINKOLDFRAMEFORMAT 0x00008000L // using the old Bink frame format (internal use only)
|
||||
#define BINKRBINVERT 0x00010000L // use reversed R and B planes (internal use only)
|
||||
#define BINKGRAYSCALE 0x00020000L // Force Bink to use grayscale
|
||||
#define BINKNOMMX 0x00040000L // Don't use MMX
|
||||
#define BINKNOSKIP 0x00080000L // Don't skip frames if falling behind
|
||||
#define BINKALPHA 0x00100000L // Decompress alpha plane (if present)
|
||||
#define BINKNOFILLIOBUF 0x00200000L // Fill the IO buffer in SmackOpen
|
||||
#define BINKSIMULATE 0x00400000L // Simulate the speed (call BinkSim first)
|
||||
#define BINKFILEHANDLE 0x00800000L // Use when passing in a file handle
|
||||
#define BINKIOSIZE 0x01000000L // Set an io size (call BinkIOSize first)
|
||||
#define BINKIOPROCESSOR 0x02000000L // Set an io processor (call BinkIO first)
|
||||
#define BINKFROMMEMORY 0x04000000L // Use when passing in a pointer to the file
|
||||
#define BINKNOTHREADEDIO 0x08000000L // Don't use a background thread for IO
|
||||
|
||||
#define BINKSURFACEFAST 0x00000000L
|
||||
#define BINKSURFACESLOW 0x08000000L
|
||||
#define BINKSURFACEDIRECT 0x04000000L
|
||||
|
||||
#define BINKCOPYALL 0x80000000L // copy all pixels (not just changed)
|
||||
#define BINKCOPY2XH 0x10000000L // Force doubling height scaling
|
||||
#define BINKCOPY2XHI 0x20000000L // Force interleaving height scaling
|
||||
#define BINKCOPY2XW 0x30000000L // copy the width zoomed by two
|
||||
#define BINKCOPY2XWH 0x40000000L // copy the width and height zoomed by two
|
||||
#define BINKCOPY2XWHI 0x50000000L // copy the width and height zoomed by two
|
||||
#define BINKCOPY1XI 0x60000000L // copy the width and height zoomed by two
|
||||
#define BINKCOPYNOSCALING 0x70000000L // Force scaling off
|
||||
|
||||
//#define BINKALPHA 0x00100000L // Decompress alpha plane (if present)
|
||||
//#define BINKNOSKIP 0x00080000L // don't skip the blit if behind in sound
|
||||
//#define BINKNOMMX 0x00040000L // Don't skip frames if falling behind
|
||||
//#define BINKGRAYSCALE 0x00020000L // force Bink to use grayscale
|
||||
//#define BINKRBINVERT 0x00010000L // use reversed R and B planes
|
||||
|
||||
#define BINKSURFACE8P 0
|
||||
#define BINKSURFACE24 1
|
||||
#define BINKSURFACE24R 2
|
||||
#define BINKSURFACE32 3
|
||||
#define BINKSURFACE32R 4
|
||||
#define BINKSURFACE32A 5
|
||||
#define BINKSURFACE32RA 6
|
||||
#define BINKSURFACE4444 7
|
||||
#define BINKSURFACE5551 8
|
||||
#define BINKSURFACE555 9
|
||||
#define BINKSURFACE565 10
|
||||
#define BINKSURFACE655 11
|
||||
#define BINKSURFACE664 12
|
||||
#define BINKSURFACEYUY2 13
|
||||
#define BINKSURFACEUYVY 14
|
||||
#define BINKSURFACEYV12 15
|
||||
#define BINKSURFACEMASK 15
|
||||
|
||||
#ifdef __RADXBOX__
|
||||
|
||||
#define BINKSURFACESALL 32
|
||||
#define BINKCONVERTERSMONO 64
|
||||
#define BINKCONVERTERS2X 256
|
||||
|
||||
#define BINKCONVERTERSALL (BINKSURFACESALL|BINKCONVERTERSMONO|BINKCONVERTERS2X)
|
||||
|
||||
#define BinkLoad() BinkLoadUnload(1)
|
||||
#define BinkUnload() BinkLoadUnload(0)
|
||||
|
||||
#define BinkLoadConverter(val) BinkLoadUnloadConverter(val,1)
|
||||
#define BinkUnloadConverter(val) BinkLoadUnloadConverter(val,0)
|
||||
|
||||
RADEXPFUNC void RADEXPLINK BinkLoadUnload( S32 inout );
|
||||
RADEXPFUNC void RADEXPLINK BinkLoadUnloadConverter( U32 surfaces, S32 inout );
|
||||
|
||||
#endif
|
||||
|
||||
#define BINKGOTOQUICK 1
|
||||
#define BINKGOTOQUICKSOUND 2
|
||||
|
||||
#define BINKGETKEYPREVIOUS 0
|
||||
#define BINKGETKEYNEXT 1
|
||||
#define BINKGETKEYCLOSEST 2
|
||||
#define BINKGETKEYNOTEQUAL 128
|
||||
|
||||
//=======================================================================
|
||||
|
||||
#ifdef __RADMAC__
|
||||
#include <files.h>
|
||||
|
||||
#pragma export on
|
||||
|
||||
RADEXPFUNC HBINK RADEXPLINK BinkMacOpen(FSSpec* fsp,U32 flags);
|
||||
#endif
|
||||
|
||||
RADEXPFUNC void PTR4* RADEXPLINK BinkLogoAddress(void);
|
||||
|
||||
RADEXPFUNC void RADEXPLINK BinkSetError(const char PTR4* err);
|
||||
RADEXPFUNC char PTR4* RADEXPLINK BinkGetError(void);
|
||||
|
||||
RADEXPFUNC HBINK RADEXPLINK BinkOpen(const char PTR4* name,U32 flags);
|
||||
|
||||
RADEXPFUNC S32 RADEXPLINK BinkDoFrame(HBINK bnk);
|
||||
RADEXPFUNC void RADEXPLINK BinkNextFrame(HBINK bnk);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkWait(HBINK bnk);
|
||||
RADEXPFUNC void RADEXPLINK BinkClose(HBINK bnk);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkPause(HBINK bnk,S32 pause);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkCopyToBuffer(HBINK bnk,void* dest,S32 destpitch,U32 destheight,U32 destx,U32 desty,U32 flags);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkCopyToBufferRect(HBINK bnk,void* dest,S32 destpitch,U32 destheight,U32 destx,U32 desty,U32 srcx, U32 srcy, U32 srcw, U32 srch, U32 flags);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkGetRects(HBINK bnk,U32 flags);
|
||||
RADEXPFUNC void RADEXPLINK BinkGoto(HBINK bnk,U32 frame,S32 flags); // use 1 for the first frame
|
||||
RADEXPFUNC U32 RADEXPLINK BinkGetKeyFrame(HBINK bnk,U32 frame,S32 flags);
|
||||
|
||||
RADEXPFUNC S32 RADEXPLINK BinkSetVideoOnOff(HBINK bnk,S32 onoff);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkSetSoundOnOff(HBINK bnk,S32 onoff);
|
||||
RADEXPFUNC void RADEXPLINK BinkSetVolume(HBINK bnk, U32 trackid, S32 volume);
|
||||
RADEXPFUNC void RADEXPLINK BinkSetPan(HBINK bnk,U32 trackid, S32 pan);
|
||||
RADEXPFUNC void RADEXPLINK BinkSetMixBins(HBINK bnk,U32 trackid, U32 PTR4* mix_bins, U32 total);
|
||||
RADEXPFUNC void RADEXPLINK BinkSetMixBinVolumes(HBINK bnk,U32 trackid, U32 PTR4* vol_mix_bins, S32 PTR4* volumes, U32 total);
|
||||
RADEXPFUNC void RADEXPLINK BinkService(HBINK bink);
|
||||
|
||||
typedef struct BINKTRACK PTR4* HBINKTRACK;
|
||||
|
||||
typedef struct BINKTRACK
|
||||
{
|
||||
U32 Frequency;
|
||||
U32 Bits;
|
||||
U32 Channels;
|
||||
U32 MaxSize;
|
||||
|
||||
HBINK bink;
|
||||
U32 sndcomp;
|
||||
S32 trackindex;
|
||||
} BINKTRACK;
|
||||
|
||||
|
||||
RADEXPFUNC HBINKTRACK RADEXPLINK BinkOpenTrack(HBINK bnk,U32 trackindex);
|
||||
RADEXPFUNC void RADEXPLINK BinkCloseTrack(HBINKTRACK bnkt);
|
||||
RADEXPFUNC U32 RADEXPLINK BinkGetTrackData(HBINKTRACK bnkt,void PTR4* dest);
|
||||
|
||||
RADEXPFUNC U32 RADEXPLINK BinkGetTrackType(HBINK bnk,U32 trackindex);
|
||||
RADEXPFUNC U32 RADEXPLINK BinkGetTrackMaxSize(HBINK bnk,U32 trackindex);
|
||||
RADEXPFUNC U32 RADEXPLINK BinkGetTrackID(HBINK bnk,U32 trackindex);
|
||||
|
||||
RADEXPFUNC void RADEXPLINK BinkGetSummary(HBINK bnk,BINKSUMMARY PTR4* sum);
|
||||
RADEXPFUNC void RADEXPLINK BinkGetRealtime(HBINK bink,BINKREALTIME PTR4* run,U32 frames);
|
||||
|
||||
RADEXPFUNC void RADEXPLINK BinkSetSoundTrack(U32 total_tracks, U32 PTR4* tracks);
|
||||
RADEXPFUNC void RADEXPLINK BinkSetIO(BINKIOOPEN io);
|
||||
RADEXPFUNC void RADEXPLINK BinkSetFrameRate(U32 forcerate,U32 forceratediv);
|
||||
RADEXPFUNC void RADEXPLINK BinkSetSimulate(U32 sim);
|
||||
RADEXPFUNC void RADEXPLINK BinkSetIOSize(U32 iosize);
|
||||
|
||||
RADEXPFUNC S32 RADEXPLINK BinkSetSoundSystem(BINKSNDSYSOPEN open, U32 param);
|
||||
|
||||
#ifdef __RADWIN__
|
||||
|
||||
RADEXPFUNC BINKSNDOPEN RADEXPLINK BinkOpenDirectSound(U32 param); // don't call directly
|
||||
#define BinkSoundUseDirectSound(lpDS) BinkSetSoundSystem(BinkOpenDirectSound,(U32)lpDS)
|
||||
|
||||
RADEXPFUNC BINKSNDOPEN RADEXPLINK BinkOpenWaveOut(U32 param); // don't call directly
|
||||
#define BinkSoundUseWaveOut() BinkSetSoundSystem(BinkOpenWaveOut,0)
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef __RADMAC__
|
||||
|
||||
RADEXPFUNC BINKSNDOPEN RADEXPLINK BinkOpenMiles(U32 param); // don't call directly
|
||||
#define BinkSoundUseMiles(hdigdriver) BinkSetSoundSystem(BinkOpenMiles,(U32)hdigdriver)
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __RADMAC__
|
||||
|
||||
RADEXPFUNC BINKSNDOPEN RADEXPLINK BinkOpenSoundManager(U32 param); // don't call directly
|
||||
#define BinkSoundUseSoundManager() BinkSetSoundSystem(BinkOpenSoundManager,0)
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __RADNGC__
|
||||
|
||||
#ifdef __RADNGC__
|
||||
RADEXPFUNC void RADEXPLINK RADSetAudioMemory(RADMEMALLOC a,RADMEMFREE f);
|
||||
RADEXPFUNC void PTR4* RADEXPLINK radaudiomalloc(U32 numbytes);
|
||||
RADEXPFUNC void RADEXPLINK radaudiofree(void PTR4* ptr);
|
||||
#endif
|
||||
|
||||
RADEXPFUNC BINKSNDOPEN RADEXPLINK BinkOpenNGCSound(U32 param); // don't call directly
|
||||
#define BinkSoundUseNGCSound() BinkSetSoundSystem(BinkOpenNGCSound,0)
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(__RADXBOX__) || defined(__RADWIN__)
|
||||
|
||||
RADEXPFUNC S32 RADEXPLINK BinkDX8SurfaceType(void* lpD3Ds);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
// The BinkBuffer API isn't implemented on DOS, Xbox or GameCube
|
||||
#if !defined(__RADDOS__) && !defined(__RADXBOX__) && !defined(__RADNGC__)
|
||||
|
||||
//=========================================================================
|
||||
typedef struct BINKBUFFER * HBINKBUFFER;
|
||||
|
||||
#define BINKBUFFERSTRETCHXINT 0x80000000
|
||||
#define BINKBUFFERSTRETCHX 0x40000000
|
||||
#define BINKBUFFERSHRINKXINT 0x20000000
|
||||
#define BINKBUFFERSHRINKX 0x10000000
|
||||
#define BINKBUFFERSTRETCHYINT 0x08000000
|
||||
#define BINKBUFFERSTRETCHY 0x04000000
|
||||
#define BINKBUFFERSHRINKYINT 0x02000000
|
||||
#define BINKBUFFERSHRINKY 0x01000000
|
||||
#define BINKBUFFERSCALES 0xff000000
|
||||
#define BINKBUFFERRESOLUTION 0x00800000
|
||||
|
||||
#ifdef __RADMAC__
|
||||
|
||||
#include <windows.h>
|
||||
#include <palettes.h>
|
||||
#include <qdoffscreen.h>
|
||||
|
||||
struct BINKBUFFER
|
||||
{
|
||||
U32 Width;
|
||||
U32 Height;
|
||||
U32 WindowWidth;
|
||||
U32 WindowHeight;
|
||||
U32 SurfaceType;
|
||||
void* Buffer;
|
||||
S32 BufferPitch;
|
||||
U32 ScreenWidth;
|
||||
U32 ScreenHeight;
|
||||
U32 ScreenDepth;
|
||||
U32 ScaleFlags;
|
||||
|
||||
S32 destx,desty;
|
||||
S32 wndx,wndy;
|
||||
U32 wnd;
|
||||
|
||||
S32 noclipping;
|
||||
U32 type;
|
||||
S32 issoftcur;
|
||||
U32 cursorcount;
|
||||
};
|
||||
|
||||
|
||||
#define BINKBUFFERAUTO 0
|
||||
#define BINKBUFFERDIRECT 1
|
||||
#define BINKBUFFERGWORLD 2
|
||||
#define BINKBUFFERTYPEMASK 31
|
||||
|
||||
RADEXPFUNC HBINKBUFFER RADEXPLINK BinkBufferOpen( WindowPtr wnd, U32 width, U32 height, U32 bufferflags);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkGDSurfaceType( GDHandle gd );
|
||||
RADEXPFUNC S32 RADEXPLINK BinkIsSoftwareCursor(GDHandle gd);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkCheckCursor(WindowPtr wp,S32 x,S32 y,S32 w,S32 h);
|
||||
|
||||
#else
|
||||
|
||||
struct BINKBUFFER
|
||||
{
|
||||
U32 Width;
|
||||
U32 Height;
|
||||
U32 WindowWidth;
|
||||
U32 WindowHeight;
|
||||
U32 SurfaceType;
|
||||
void* Buffer;
|
||||
S32 BufferPitch;
|
||||
S32 ClientOffsetX;
|
||||
S32 ClientOffsetY;
|
||||
U32 ScreenWidth;
|
||||
U32 ScreenHeight;
|
||||
U32 ScreenDepth;
|
||||
U32 ExtraWindowWidth;
|
||||
U32 ExtraWindowHeight;
|
||||
U32 ScaleFlags;
|
||||
U32 StretchWidth;
|
||||
U32 StretchHeight;
|
||||
|
||||
S32 surface;
|
||||
void* ddsurface;
|
||||
void* ddclipper;
|
||||
S32 destx,desty;
|
||||
S32 wndx,wndy;
|
||||
U32 wnd;
|
||||
S32 ddoverlay;
|
||||
S32 ddoffscreen;
|
||||
S32 lastovershow;
|
||||
|
||||
S32 issoftcur;
|
||||
U32 cursorcount;
|
||||
void* buffertop;
|
||||
U32 type;
|
||||
S32 noclipping;
|
||||
|
||||
S32 loadeddd;
|
||||
S32 loadedwin;
|
||||
|
||||
void* dibh;
|
||||
void* dibbuffer;
|
||||
S32 dibpitch;
|
||||
void* dibinfo;
|
||||
U32 dibdc;
|
||||
U32 diboldbitmap;
|
||||
};
|
||||
|
||||
|
||||
#define BINKBUFFERAUTO 0
|
||||
#define BINKBUFFERPRIMARY 1
|
||||
#define BINKBUFFERDIBSECTION 2
|
||||
#define BINKBUFFERYV12OVERLAY 3
|
||||
#define BINKBUFFERYUY2OVERLAY 4
|
||||
#define BINKBUFFERUYVYOVERLAY 5
|
||||
#define BINKBUFFERYV12OFFSCREEN 6
|
||||
#define BINKBUFFERYUY2OFFSCREEN 7
|
||||
#define BINKBUFFERUYVYOFFSCREEN 8
|
||||
#define BINKBUFFERRGBOFFSCREENVIDEO 9
|
||||
#define BINKBUFFERRGBOFFSCREENSYSTEM 10
|
||||
#define BINKBUFFERLAST 10
|
||||
#define BINKBUFFERTYPEMASK 31
|
||||
|
||||
RADEXPFUNC HBINKBUFFER RADEXPLINK BinkBufferOpen( void* /*HWND*/ wnd, U32 width, U32 height, U32 bufferflags);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkBufferSetHWND( HBINKBUFFER buf, void* /*HWND*/ newwnd);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkDDSurfaceType(void PTR4* lpDDS);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkIsSoftwareCursor(void PTR4* lpDDSP, void* /*HCURSOR*/ cur);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkCheckCursor(void* /*HWND*/ wnd,S32 x,S32 y,S32 w,S32 h);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkBufferSetDirectDraw(void PTR4* lpDirectDraw, void PTR4* lpPrimary);
|
||||
|
||||
#endif
|
||||
|
||||
RADEXPFUNC void RADEXPLINK BinkBufferClose( HBINKBUFFER buf);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkBufferLock( HBINKBUFFER buf);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkBufferUnlock( HBINKBUFFER buf);
|
||||
RADEXPFUNC void RADEXPLINK BinkBufferSetResolution( S32 w, S32 h, S32 bits);
|
||||
RADEXPFUNC void RADEXPLINK BinkBufferCheckWinPos( HBINKBUFFER buf, S32 PTR4* NewWindowX, S32 PTR4* NewWindowY);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkBufferSetOffset( HBINKBUFFER buf, S32 destx, S32 desty);
|
||||
RADEXPFUNC void RADEXPLINK BinkBufferBlit( HBINKBUFFER buf, BINKRECT PTR4* rects, U32 numrects );
|
||||
RADEXPFUNC S32 RADEXPLINK BinkBufferSetScale( HBINKBUFFER buf, U32 w, U32 h);
|
||||
RADEXPFUNC char PTR4* RADEXPLINK BinkBufferGetDescription( HBINKBUFFER buf);
|
||||
RADEXPFUNC char PTR4* RADEXPLINK BinkBufferGetError();
|
||||
RADEXPFUNC S32 RADEXPLINK BinkBufferClear(HBINKBUFFER buf, U32 RGB);
|
||||
|
||||
RADEXPFUNC void RADEXPLINK BinkRestoreCursor(S32 checkcount);
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __RADMAC__
|
||||
|
||||
#pragma export off
|
||||
|
||||
#endif
|
||||
|
||||
RADDEFEND
|
||||
|
||||
#endif
|
||||
|
||||
// @cdep pre $set(INCs,$INCs -I$clipfilename($file)) $ignore(TakeCPP)
|
||||
|
||||
#endif
|
||||
|
||||
+9
-5
@@ -24,11 +24,9 @@
|
||||
#include <stdio.h>
|
||||
#include "Game Clock.h"
|
||||
#include "GameSettings.h"
|
||||
#include "sgp_logger.h"
|
||||
#endif
|
||||
|
||||
#include "VFS/vfs.h"
|
||||
#include "VFS/Tools/Log.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 uiFont;
|
||||
@@ -1515,6 +1513,13 @@ void ClearTacticalMessageQueue( void )
|
||||
return;
|
||||
}
|
||||
|
||||
static struct DebugMessageLog {
|
||||
sgp::Logger_ID id;
|
||||
DebugMessageLog() {
|
||||
id = sgp::Logger::instance().createLogger();
|
||||
sgp::Logger::instance().connectFile(id, L"DebugMessage.txt", true, sgp::Logger::FLUSH_ON_ENDL);
|
||||
}
|
||||
} s_DebugMessageLog;
|
||||
void WriteMessageToFile( const STR16 pString )
|
||||
{
|
||||
#ifdef JA2BETAVERSION
|
||||
@@ -1531,8 +1536,7 @@ void WriteMessageToFile( const STR16 pString )
|
||||
fprintf( fp, "%S\n", pString );
|
||||
fclose( fp );
|
||||
#else
|
||||
static CLog& debugMessage = *CLog::create(L"DebugMessage.txt", true, CLog::FLUSH_IMMEDIATELY);
|
||||
debugMessage << pString << CLog::ENDL;
|
||||
SGP_LOG(s_DebugMessageLog.id, pString);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user