new feature: fixed bayonets (still in need of animation)

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6065 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2013-05-05 20:56:00 +00:00
parent 9d2da7e440
commit 1c74ca4bf1
18 changed files with 122 additions and 50 deletions
+44 -16
View File
@@ -3740,24 +3740,47 @@ void INVRenderItem( UINT32 uiBuffer, SOLDIERTYPE * pSoldier, OBJECTTYPE *pObjec
// Flugente: check for underbarrel weapons and use that object if necessary
OBJECTTYPE* pObjShown = pObject;
INVTYPE *pItemShown = pItem;
if ( pItem->usItemClass == IC_GUN && pSoldier && ( pSoldier->bWeaponMode == WM_ATTACHED_UB || pSoldier->bWeaponMode == WM_ATTACHED_UB_BURST || pSoldier->bWeaponMode == WM_ATTACHED_UB_AUTO ) )
if ( pItem->usItemClass == IC_GUN && pSoldier )
{
OBJECTTYPE *pObjectUnderBarrel = FindAttachment_UnderBarrel( pObject );
if ( pObjectUnderBarrel )
if ( pSoldier->bWeaponMode == WM_ATTACHED_UB || pSoldier->bWeaponMode == WM_ATTACHED_UB_BURST || pSoldier->bWeaponMode == WM_ATTACHED_UB_AUTO )
{
INVTYPE *pItemUnderBarrel;
if ( ubStatusIndex < RENDER_ITEM_ATTACHMENT1 )
{
pItemUnderBarrel = &Item[ pObjectUnderBarrel->usItem ];
}
else
{
pItemUnderBarrel = &Item[ (*pObjectUnderBarrel)[iter]->GetAttachmentAtIndex( ubStatusIndex - RENDER_ITEM_ATTACHMENT1 )->usItem ];
}
OBJECTTYPE *pObjectUnderBarrel = FindAttachedWeapon( pObject, IC_GUN );
pObjShown = pObjectUnderBarrel;
pItemShown = pItemUnderBarrel;
if ( pObjectUnderBarrel )
{
INVTYPE *pItemUnderBarrel;
if ( ubStatusIndex < RENDER_ITEM_ATTACHMENT1 )
{
pItemUnderBarrel = &Item[ pObjectUnderBarrel->usItem ];
}
else
{
pItemUnderBarrel = &Item[ (*pObjectUnderBarrel)[iter]->GetAttachmentAtIndex( ubStatusIndex - RENDER_ITEM_ATTACHMENT1 )->usItem ];
}
pObjShown = pObjectUnderBarrel;
pItemShown = pItemUnderBarrel;
}
}
else if ( pSoldier->bWeaponMode == WM_ATTACHED_BAYONET )
{
OBJECTTYPE *pObjectUnderBarrel = FindAttachedWeapon( pObject, IC_BLADE );
if ( pObjectUnderBarrel )
{
INVTYPE *pItemUnderBarrel;
if ( ubStatusIndex < RENDER_ITEM_ATTACHMENT1 )
{
pItemUnderBarrel = &Item[ pObjectUnderBarrel->usItem ];
}
else
{
pItemUnderBarrel = &Item[ (*pObjectUnderBarrel)[iter]->GetAttachmentAtIndex( ubStatusIndex - RENDER_ITEM_ATTACHMENT1 )->usItem ];
}
pObjShown = pObjectUnderBarrel;
pItemShown = pItemUnderBarrel;
}
}
}
@@ -4083,7 +4106,12 @@ void INVRenderItem( UINT32 uiBuffer, SOLDIERTYPE * pSoldier, OBJECTTYPE *pObjec
swprintf( pStr, New113Message[MSG113_UB_AUTO] );
SetFontForeground( FONT_ORANGE );
}
else if(pSoldier->bWeaponMode == WM_ATTACHED_BAYONET)
{
swprintf( pStr, New113Message[MSG113_BAYONET] );
SetFontForeground( FONT_ORANGE );
}
// Get length of string
uiStringLength=StringPixLength(pStr, ITEM_FONT );
+3 -2
View File
@@ -1099,7 +1099,7 @@ void UpdateSMPanel( )
// Enable some buttons!
// Changed by ADB, rev 1513
//if ( ((IsGunAutofireCapable( gpSMCurrentMerc, HANDPOS ) || IsGunBurstCapable( gpSMCurrentMerc, HANDPOS , FALSE )) && !Weapon[gpSMCurrentMerc->inv[HANDPOS].usItem].NoSemiAuto ) || IsGrenadeLauncherAttached ( &(gpSMCurrentMerc->inv[HANDPOS]) ) )
if ( ((IsGunAutofireCapable( &gpSMCurrentMerc->inv[HANDPOS] ) || IsGunBurstCapable( &gpSMCurrentMerc->inv[HANDPOS], FALSE, gpSMCurrentMerc )) && !Weapon[gpSMCurrentMerc->inv[HANDPOS].usItem].NoSemiAuto ) || IsGrenadeLauncherAttached ( &(gpSMCurrentMerc->inv[HANDPOS]) ) || IsUnderBarrelAttached( &(gpSMCurrentMerc->inv[HANDPOS]) ) )
if ( ((IsGunAutofireCapable( &gpSMCurrentMerc->inv[HANDPOS] ) || IsGunBurstCapable( &gpSMCurrentMerc->inv[HANDPOS], FALSE, gpSMCurrentMerc )) && !Weapon[gpSMCurrentMerc->inv[HANDPOS].usItem].NoSemiAuto ) || IsGrenadeLauncherAttached ( &(gpSMCurrentMerc->inv[HANDPOS]) ) || IsWeaponAttached( &(gpSMCurrentMerc->inv[HANDPOS]), IC_GUN ) )
{
EnableButton( iSMPanelButtons[ BURSTMODE_BUTTON ] );
}
@@ -2189,6 +2189,7 @@ BOOLEAN CreateSMPanelButtons( )
iBurstButtonImages[ WM_ATTACHED_UB ] = UseLoadedButtonImage( iSMPanelImages[ STANCEUP_IMAGES ], -1, 7, -1, -1, -1 );
iBurstButtonImages[ WM_ATTACHED_UB_BURST ] = UseLoadedButtonImage( iSMPanelImages[ STANCEUP_IMAGES ], -1, 17, -1, -1, -1 );
iBurstButtonImages[ WM_ATTACHED_UB_AUTO ] = UseLoadedButtonImage( iSMPanelImages[ STANCEUP_IMAGES ], -1, 17, -1, -1, -1 );
iBurstButtonImages[ WM_ATTACHED_BAYONET ] = UseLoadedButtonImage( iSMPanelImages[ STANCEUP_IMAGES ], -1, 17, -1, -1, -1 );
FilenameForBPP("INTERFACE\\invadd-ons.sti", ubString);
// Load button Graphics
@@ -2415,7 +2416,7 @@ void RemoveSMPanelButtons( )
UnloadButtonImage( iBurstButtonImages[ WM_ATTACHED_UB ] );
UnloadButtonImage( iBurstButtonImages[ WM_ATTACHED_UB_BURST ] );
UnloadButtonImage( iBurstButtonImages[ WM_ATTACHED_UB_AUTO ] );
UnloadButtonImage( iBurstButtonImages[ WM_ATTACHED_BAYONET ] );
}
+16 -14
View File
@@ -8035,8 +8035,9 @@ BOOLEAN OBJECTTYPE::RemoveAttachment( OBJECTTYPE* pAttachment, OBJECTTYPE * pNew
if (pSoldier != NULL)
{
// if in attached weapon mode and don't have weapon with GL attached in hand, reset weapon mode
if ( ( (pSoldier->bWeaponMode == WM_ATTACHED_GL || pSoldier->bWeaponMode == WM_ATTACHED_GL_BURST || pSoldier->bWeaponMode == WM_ATTACHED_GL_AUTO )&& !IsGrenadeLauncherAttached( &(pSoldier->inv[ HANDPOS ]) ) ) ||
( (pSoldier->bWeaponMode == WM_ATTACHED_UB || pSoldier->bWeaponMode == WM_ATTACHED_UB_BURST || pSoldier->bWeaponMode == WM_ATTACHED_UB_AUTO )&& !IsUnderBarrelAttached( &(pSoldier->inv[ HANDPOS ] ) ) ) )
if ( ( (pSoldier->bWeaponMode == WM_ATTACHED_GL || pSoldier->bWeaponMode == WM_ATTACHED_GL_BURST || pSoldier->bWeaponMode == WM_ATTACHED_GL_AUTO ) && !IsGrenadeLauncherAttached( &(pSoldier->inv[ HANDPOS ] ) ) ) ||
( (pSoldier->bWeaponMode == WM_ATTACHED_UB || pSoldier->bWeaponMode == WM_ATTACHED_UB_BURST || pSoldier->bWeaponMode == WM_ATTACHED_UB_AUTO ) && !IsWeaponAttached( &(pSoldier->inv[ HANDPOS ]), IC_GUN ) ) ||
( (pSoldier->bWeaponMode == WM_ATTACHED_BAYONET ) && !IsWeaponAttached( &(pSoldier->inv[ HANDPOS ]), IC_BLADE ) ) )
{
if ( !Weapon[pSoldier->inv[ HANDPOS ].usItem].NoSemiAuto )
{
@@ -11740,27 +11741,28 @@ UINT16 GetAttachedGrenadeLauncher( OBJECTTYPE * pObj )
return( NONE );
}
UINT16 GetAttachedUnderBarrel( OBJECTTYPE * pObj )
INT16 GetUnderBarrelStatus( OBJECTTYPE * pObj, UINT32 usFlag )
{
if (pObj->exists() == true) {
for (attachmentList::iterator iter = (*pObj)[0]->attachments.begin(); iter != (*pObj)[0]->attachments.end(); ++iter)
{
if (iter->exists() && (Item[iter->usItem].usItemClass & (IC_GUN | IC_BLADE) ))
if (iter->exists() && Item[iter->usItem].usItemClass & usFlag )
{
return( (UINT16) Item[iter->usItem].uiIndex );
return( (*iter)[0]->data.objectStatus );
}
}
}
return( NONE );
return( ITEM_NOT_FOUND );
}
BOOLEAN IsUnderBarrelAttached( OBJECTTYPE * pObj, UINT8 subObject )
BOOLEAN IsWeaponAttached( OBJECTTYPE * pObj, UINT32 usFlag, UINT8 subObject )
{
if (pObj->exists() == true) {
for (attachmentList::iterator iter = (*pObj)[subObject]->attachments.begin(); iter != (*pObj)[subObject]->attachments.end(); ++iter)
{
if (iter->exists() && Item[iter->usItem].usItemClass & (IC_GUN | IC_BLADE) )
if (iter->exists() && Item[iter->usItem].usItemClass & usFlag )
{
return TRUE;
}
@@ -11769,13 +11771,13 @@ BOOLEAN IsUnderBarrelAttached( OBJECTTYPE * pObj, UINT8 subObject )
return FALSE;
}
OBJECTTYPE* FindAttachment_UnderBarrel( OBJECTTYPE * pObj )
OBJECTTYPE* FindAttachedWeapon( OBJECTTYPE * pObj, UINT32 usFlag )
{
if (pObj->exists() == true) {
for (attachmentList::iterator iter = (*pObj)[0]->attachments.begin(); iter != (*pObj)[0]->attachments.end(); ++iter)
{
if (iter->exists() && Item[iter->usItem].usItemClass & (IC_GUN | IC_BLADE) )
if (iter->exists() && Item[iter->usItem].usItemClass & usFlag )
{
return( &(*iter) );
}
@@ -11784,19 +11786,19 @@ OBJECTTYPE* FindAttachment_UnderBarrel( OBJECTTYPE * pObj )
return( NULL );
}
INT16 GetUnderBarrelStatus( OBJECTTYPE * pObj )
UINT16 GetAttachedWeapon( OBJECTTYPE * pObj, UINT32 usFlag )
{
if (pObj->exists() == true) {
for (attachmentList::iterator iter = (*pObj)[0]->attachments.begin(); iter != (*pObj)[0]->attachments.end(); ++iter)
{
if (iter->exists() && Item[iter->usItem].usItemClass & (IC_GUN | IC_BLADE) )
if (iter->exists() && (Item[iter->usItem].usItemClass & usFlag ) )
{
return( (*iter)[0]->data.objectStatus );
return( (UINT16) Item[iter->usItem].uiIndex );
}
}
}
return( ITEM_NOT_FOUND );
return( NONE );
}
INT16 GetAttachedArmourBonus( OBJECTTYPE * pObj )
+6 -6
View File
@@ -346,12 +346,12 @@ BOOLEAN IsGrenadeLauncherAttached( OBJECTTYPE * pObj, UINT8 subObject = 0 );
OBJECTTYPE* FindAttachment_GrenadeLauncher( OBJECTTYPE * pObj );
UINT16 GetAttachedGrenadeLauncher( OBJECTTYPE * pObj );
// JMich & Flugente: functions for underbarrel weapons
INT16 GetUnderBarrelStatus( OBJECTTYPE * pObj );
BOOLEAN IsUnderBarrelAttached( OBJECTTYPE * pObj, UINT8 subObject = 0 );
OBJECTTYPE* FindAttachment_UnderBarrel( OBJECTTYPE * pObj );
UINT16 GetAttachedUnderBarrel( OBJECTTYPE * pObj );
OBJECTTYPE* GetUsedWeapon( OBJECTTYPE * pObj );
// JMich & Flugente: functions for underbarrel weapons and bayonets
// As we can have both underbarrel gun and a bayonet, use usFlag to specify (IC_GUN or IC_BLADE are used here, or both)
INT16 GetUnderBarrelStatus( OBJECTTYPE * pObj, UINT32 usFlag );
BOOLEAN IsWeaponAttached( OBJECTTYPE * pObj, UINT32 usFlag, UINT8 subObject = 0 );
OBJECTTYPE* FindAttachedWeapon( OBJECTTYPE * pObj, UINT32 usFlag );
UINT16 GetAttachedWeapon( OBJECTTYPE * pObj, UINT32 usFlag );
INT8 FindRocketLauncher( SOLDIERTYPE * pSoldier );
INT8 FindRocketLauncherOrCannon( SOLDIERTYPE * pSoldier );
+23 -3
View File
@@ -11682,8 +11682,14 @@ void SOLDIERTYPE::EVENT_SoldierBeginBladeAttack( INT32 sGridNo, UINT8 ubDirectio
{
GetSoldier( &pTSoldier, usSoldierIndex );
// Flugente: if we attack with a bayonet, we don't need to change stance if even if we are stadning and the target is prone...
// so we simulate here that the target is still standing
UINT8 targetheight = gAnimControl[ pTSoldier->usAnimState ].ubEndHeight;
if ( this->bWeaponMode == WM_ATTACHED_BAYONET )
targetheight = ANIM_STAND;
// Look at stance of target
switch( gAnimControl[ pTSoldier->usAnimState ].ubEndHeight )
switch( targetheight )
{
case ANIM_STAND:
case ANIM_CROUCH:
@@ -13945,7 +13951,14 @@ OBJECTTYPE* SOLDIERTYPE::GetUsedWeapon( OBJECTTYPE * pObj )
{
if ( bWeaponMode == WM_ATTACHED_UB || bWeaponMode == WM_ATTACHED_UB_BURST || bWeaponMode == WM_ATTACHED_UB_AUTO )
{
OBJECTTYPE* pObjUnderBarrel = FindAttachment_UnderBarrel(pObj);
OBJECTTYPE* pObjUnderBarrel = FindAttachedWeapon(pObj, IC_GUN);
if ( pObjUnderBarrel )
return( pObjUnderBarrel );
}
else if ( bWeaponMode == WM_ATTACHED_BAYONET )
{
OBJECTTYPE* pObjUnderBarrel = FindAttachedWeapon(pObj, IC_BLADE);
if ( pObjUnderBarrel )
return( pObjUnderBarrel );
@@ -13958,7 +13971,14 @@ UINT16 SOLDIERTYPE::GetUsedWeaponNumber( OBJECTTYPE * pObj )
{
if ( bWeaponMode == WM_ATTACHED_UB || bWeaponMode == WM_ATTACHED_UB_BURST || bWeaponMode == WM_ATTACHED_UB_AUTO )
{
UINT16 weaponnr = GetAttachedUnderBarrel(pObj);
UINT16 weaponnr = GetAttachedWeapon(pObj, IC_GUN);
if ( weaponnr != NONE )
return( weaponnr );
}
else if ( bWeaponMode == WM_ATTACHED_BAYONET )
{
UINT16 weaponnr = GetAttachedWeapon(pObj, IC_BLADE);
if ( weaponnr != NONE )
return( weaponnr );
+2 -2
View File
@@ -4025,9 +4025,9 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
}
}
}
if (IsUnderBarrelAttached(pGun))
if (IsWeaponAttached(pGun, IC_GUN))
{
OBJECTTYPE *pGun2 = FindAttachment_UnderBarrel(pGun);
OBJECTTYPE *pGun2 = FindAttachedWeapon(pGun, IC_GUN);
if ( (*pGun2)[0]->data.gun.ubGunShotsLeft < GetMagSize( pGun2 ) )
{
+17 -7
View File
@@ -1388,6 +1388,8 @@ BOOLEAN FireWeapon( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo )
UINT32 usItemClass = Item[ pSoldier->usAttackingWeapon ].usItemClass;
if ( pSoldier->bWeaponMode == WM_ATTACHED_GL || pSoldier->bWeaponMode == WM_ATTACHED_GL_BURST || pSoldier->bWeaponMode == WM_ATTACHED_GL_AUTO )
usItemClass = IC_LAUNCHER;
if ( pSoldier->bWeaponMode == WM_ATTACHED_BAYONET )
usItemClass = IC_BLADE;
switch( usItemClass )
{
@@ -9556,6 +9558,10 @@ UINT32 CalcChanceHTH( SOLDIERTYPE * pAttacker,SOLDIERTYPE *pDefender, INT16 ubAi
usInHand = pAttacker->usAttackingWeapon;
// Flugente: we might be using a bayonet, we should check that
if ( pAttacker->bWeaponMode == WM_ATTACHED_BAYONET )
usInHand = pAttacker->GetUsedWeaponNumber( &(pAttacker->inv[HANDPOS]) );
if ( (usInHand != CREATURE_QUEEN_TENTACLES ) && (pDefender->stats.bLife < OKLIFE || pDefender->bBreath < OKBREATH) )
{
// there is NO way to miss
@@ -10167,9 +10173,9 @@ void ReloadWeapon( SOLDIERTYPE *pSoldier, UINT8 ubHandPos )
{
pSoldier->inv[ ubHandPos ][0]->data.gun.ubGunShotsLeft = GetMagSize(&pSoldier->inv[ ubHandPos ]);
// Dirty Bars
if ( IsUnderBarrelAttached(&pSoldier->inv[ ubHandPos ]))
if ( IsWeaponAttached(&pSoldier->inv[ ubHandPos ], IC_GUN) )
{
(*FindAttachment_UnderBarrel(&pSoldier->inv[ ubHandPos ]))[0]->data.gun.ubGunShotsLeft = GetMagSize(FindAttachment_UnderBarrel(&pSoldier->inv[ ubHandPos ]));
(*FindAttachedWeapon(&pSoldier->inv[ ubHandPos ], IC_GUN))[0]->data.gun.ubGunShotsLeft = GetMagSize(FindAttachedWeapon(&pSoldier->inv[ ubHandPos ], IC_GUN));
}
DirtyMercPanelInterface( pSoldier, DIRTYLEVEL1 );
}
@@ -10226,13 +10232,16 @@ BOOLEAN IsGunWeaponModeCapable( OBJECTTYPE* pObject, WeaponMode bWpnMode, SOLDIE
// return (!Item[pSoldier->inv[ubHandPos].usItem].grenadelauncher && Weapon[GetAttachedGrenadeLauncher(&pSoldier->inv[ubHandPos])].bAutofireShotsPerFiveAP > 0 && FindLaunchableAttachment( &(pSoldier->inv[ubHandPos]), GetAttachedGrenadeLauncher( &(pSoldier->inv[ubHandPos]) ) != ITEM_NOT_FOUND );
case WM_ATTACHED_UB:
return (IsUnderBarrelAttached( pObject ) && !Weapon[FindAttachment_UnderBarrel(pObject)->usItem].NoSemiAuto );
return (IsWeaponAttached( pObject, IC_GUN ) && !Weapon[FindAttachedWeapon(pObject, IC_GUN)->usItem].NoSemiAuto );
case WM_ATTACHED_UB_BURST:
return (IsUnderBarrelAttached( pObject ) && IsGunBurstCapable(FindAttachment_UnderBarrel(pObject), FALSE, pSoldier));
return (IsWeaponAttached( pObject, IC_GUN ) && IsGunBurstCapable(FindAttachedWeapon(pObject, IC_GUN), FALSE, pSoldier));
case WM_ATTACHED_UB_AUTO:
return (IsUnderBarrelAttached( pObject ) && (IsGunAutofireCapable(FindAttachment_UnderBarrel(pObject)) || Weapon[FindAttachment_UnderBarrel(pObject)->usItem].NoSemiAuto));
return (IsWeaponAttached( pObject, IC_GUN ) && (IsGunAutofireCapable(FindAttachedWeapon(pObject, IC_GUN)) || Weapon[FindAttachedWeapon(pObject, IC_GUN)->usItem].NoSemiAuto));
case WM_ATTACHED_BAYONET:
return IsWeaponAttached( pObject, IC_BLADE );
default:
return FALSE;
@@ -10300,8 +10309,9 @@ void HandleTacticalEffectsOfEquipmentChange( SOLDIERTYPE *pSoldier, UINT32 uiInv
SetBurstAndAutoFireMode(pSoldier, GetWeaponMode(&pSoldier->inv[uiInvPos]));
#endif
// if in attached weapon mode and don't have weapon with GL attached in hand, reset weapon mode
if ( ( (pSoldier->bWeaponMode == WM_ATTACHED_GL || pSoldier->bWeaponMode == WM_ATTACHED_GL_BURST || pSoldier->bWeaponMode == WM_ATTACHED_GL_AUTO )&& !IsGrenadeLauncherAttached( &(pSoldier->inv[ HANDPOS ]) ) ) ||
( (pSoldier->bWeaponMode == WM_ATTACHED_UB || pSoldier->bWeaponMode == WM_ATTACHED_UB_BURST || pSoldier->bWeaponMode == WM_ATTACHED_UB_AUTO )&& !IsUnderBarrelAttached( &(pSoldier->inv[ HANDPOS ] ) ) ) )
if ( ( (pSoldier->bWeaponMode == WM_ATTACHED_GL || pSoldier->bWeaponMode == WM_ATTACHED_GL_BURST || pSoldier->bWeaponMode == WM_ATTACHED_GL_AUTO ) && !IsGrenadeLauncherAttached( &(pSoldier->inv[ HANDPOS ] ) ) ) ||
( (pSoldier->bWeaponMode == WM_ATTACHED_UB || pSoldier->bWeaponMode == WM_ATTACHED_UB_BURST || pSoldier->bWeaponMode == WM_ATTACHED_UB_AUTO ) && !IsWeaponAttached( &(pSoldier->inv[ HANDPOS ]), IC_GUN ) ) ||
( (pSoldier->bWeaponMode == WM_ATTACHED_BAYONET ) && !IsWeaponAttached( &(pSoldier->inv[ HANDPOS ]), IC_BLADE ) ) )
{
if ( !Weapon[pSoldier->inv[ HANDPOS ].usItem].NoSemiAuto )
{
+1
View File
@@ -15,6 +15,7 @@ enum WeaponMode
WM_ATTACHED_UB,
WM_ATTACHED_UB_BURST,
WM_ATTACHED_UB_AUTO,
WM_ATTACHED_BAYONET,
NUM_WEAPON_MODES
} ;
+1
View File
@@ -2271,6 +2271,7 @@ enum
MSG113_UB,
MSG113_UB_BRST,
MSG113_UB_AUTO,
MSG113_BAYONET,
MSG113_SNIPER,
MSG113_UNABLETOSPLITMONEY,
MSG113_ARRIVINGREROUTED,
+1
View File
@@ -6169,6 +6169,7 @@ STR16 New113Message[] =
L"UB", // INFO: UB = Under Barrel
L"UBRST",
L"UAUTO",
L"BAYONET",
L"狙击手!",
L"已经点选物品,此时无法分钱。",
L"新兵的会合地被挪至 %s, 因降落地点 %s 目前由敌人占据。",
+1
View File
@@ -6174,6 +6174,7 @@ STR16 New113Message[] =
L"UB",
L"UBRST",
L"UAUTO",
L"BAYONET",
L"Sniper!",
L"Unable to split money due to having an item on your cursor.",
L"Arrival of new recruits is being rerouted to sector %s, as scheduled drop-off point of sector %s is enemy occupied.",
+1
View File
@@ -6169,6 +6169,7 @@ STR16 New113Message[] =
L"UB",
L"UBRST",
L"UAUTO",
L"BAYONET",
L"Sniper!",
L"Unable to split money due to having an item on your cursor.",
L"Arrival of new recruits is being rerouted to sector %s, as scheduled drop-off point of sector %s is enemy occupied.",
+1
View File
@@ -6165,6 +6165,7 @@ STR16 New113Message[] =
L"UB", // TODO.Translate
L"UBRST",
L"UAUTO",
L"BAYONET",
L"Tireur embusqué !",
L"Unable to split money due to having an item on your cursor.",
L"Arrivée de nouvelles recrues est déroutée au secteur %s, car le point d'arrivée prévu %s est sous contrôle ennemi.",
+1
View File
@@ -5996,6 +5996,7 @@ STR16 New113Message[] =
L"UB",
L"UBRST",
L"UAUTO",
L"BAYONET",
L"Scharfschütze!",
L"Geld kann nicht aufgeteilt werden, weil ein Gegenstand am Cursor ist.",
L"Ankunft der neuen Söldner wurde in den Sektor %s verlegt, weil der geplante Sektor %s von Feinden belagert ist.",
+1
View File
@@ -6160,6 +6160,7 @@ STR16 New113Message[] =
L"UB",
L"UBRST",
L"UAUTO",
L"BAYONET",
L"Sniper!",
L"Unable to split money due to having an item on your cursor.",
L"Arrival of new recruits is being rerouted to sector %s, as scheduled drop-off point of sector %s is enemy occupied.",
+1
View File
@@ -6175,6 +6175,7 @@ STR16 New113Message[] =
L"UB", // TODO.Translate
L"UBRST",
L"UAUTO",
L"BAYONET",
L"Snajper!",
L"Nie można podzielić pieniędzy z powodu przedmiotu na kursorze.",
L"Przybycie nowych rekrutów zostało przekierowane do sektora %s , z uwagi na to, że poprzedni punkt zrzutu w sektorze %s jest zajęty przez wroga.",
+1
View File
@@ -6167,6 +6167,7 @@ STR16 New113Message[] =
L"UB", // TODO.Translate
L"UBRST",
L"UAUTO",
L"BAYONET",
L"Снайпер!",
L"Невозможно разделить деньги из-за предмета на курсоре.",
L"Точка высадки прибывающих наёмников перенесена в %s, так как запланированное место высадки %s захвачено противником.",
+1
View File
@@ -6177,6 +6177,7 @@ STR16 New113Message[] =
L"UB",
L"UBRST",
L"UAUTO",
L"BAYONET",
L"Sniper!",
L"Unable to split money due to having an item on your cursor.",
L"Arrival of new recruits is being rerouted to sector %s, as scheduled drop-off point of sector %s is enemy occupied.",