From 137e12d6b443d651e519a3ba9ef5b6779663872b Mon Sep 17 00:00:00 2001 From: Wanne Date: Wed, 27 Sep 2006 20:20:08 +0000 Subject: [PATCH] - added Captain J's coverage armor mod - updated some German strings git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@568 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- GameSettings.cpp | 2 ++ GameSettings.h | 2 ++ GameVersion.cpp | 2 +- JA2.suo | Bin 197632 -> 197632 bytes Tactical/Weapons.cpp | 5 +++++ Tactical/Weapons.h | 1 + Tactical/XML_Armour.cpp | 10 ++++++++++ Utils/_GermanText.cpp | 4 ++-- 8 files changed, 23 insertions(+), 3 deletions(-) diff --git a/GameSettings.cpp b/GameSettings.cpp index 6adeece98..8641188b7 100644 --- a/GameSettings.cpp +++ b/GameSettings.cpp @@ -535,6 +535,8 @@ void LoadGameExternalOptions() // Kaiden: Vehicle Inventory change - Added INI file Option VEHICLE_INVENTORY gGameExternalOptions.fVehicleInventory = iniReader.ReadBoolean("JA2 Gameplay Settings", "VEHICLE_INVENTORY", TRUE); + gGameExternalOptions.fEnableArmorCoverage = iniReader.ReadBoolean("JA2 Tactical Settings", "ENABLE_ARMOR_COVERAGE", FALSE); // ShadoWarrior for Captain J's armor coverage + // ShadoWarrior: Tooltip changes (start) gGameExternalOptions.ubSoldierTooltipDetailLevel = iniReader.ReadInteger("JA2 Tactical Settings", "SOLDIER_TOOLTIP_DETAIL_LEVEL", 1); diff --git a/GameSettings.h b/GameSettings.h index c5a615ebf..467535435 100644 --- a/GameSettings.h +++ b/GameSettings.h @@ -348,6 +348,8 @@ typedef struct BOOLEAN fEnableAllWeaponCaches; BOOLEAN fEnableAllTerrorists; + BOOLEAN fEnableArmorCoverage; // ShadoWarrior for Captain J's armor coverage + // ShadoWarrior: Tooltip changes (start) UINT8 ubSoldierTooltipDetailLevel; diff --git a/GameVersion.cpp b/GameVersion.cpp index a9a80df3a..9be15a91b 100644 --- a/GameVersion.cpp +++ b/GameVersion.cpp @@ -23,7 +23,7 @@ INT16 zVersionLabel[256] = { L"Beta v. 0.98" }; #else //RELEASE BUILD VERSION - INT16 zVersionLabel[256] = { L"Release v1.13.564" }; + INT16 zVersionLabel[256] = { L"Release v1.13.568" }; #endif diff --git a/JA2.suo b/JA2.suo index b7aab64ee521956c17ab139dafc4f2362a3d85b8..50a5ed8c8f004ab539167f78e950c80359a439cd 100644 GIT binary patch delta 4107 zcmcgvYiv|S6rOW;yW4H=ZeQEi_O*o;+S=A4v}pi&6$EO*MV1zMNLyaTmbSLVG%I!& zNu(-4!o`jWNmERW8Z<&zy^4vpMlhg+YLLVqVnd7}Y9fY)pb_dfw@cY}+fAX!Y`&d4 z=ggcl=ggUzGoE(Y(=H#c(_0)b9hlm5`84SmV+;0qUHVczg?mqhw&~2w0$MUKh@wP2 zo?#H3t{WAX>@vK9&nwm5e`E`p!ttF1FeSSzzfi%V?}&Eo=v?W6g>j zk>Z^l@iOG6fG&8q3=>;o9Li#Afs`yM*JD=7<^aC+yi(FNLurY1$of%C z??7yVv{jGUga8J>2!sMAAPfixWWWrFnMVMTKok%S!~j+x7Kj7lfdn8CumMTHEzI@S ziK^GA+tykjeHr3)l~z>g2p+g_EImvZf^Q}<M5_! zrYxnYuUKijX;J#^sopK8`*pGy8RfG`_+M!``-Eodz}Y@I0*pvMrgz{QdDchO)JfdF zj%>W~Bw6@P7ykY=&@?D9bV!szhm_3fG}B%TRDi>Lg+vw9t-Mv8mZ^f^1wI6XNw>=< zXnzWv1U^%HC5k6rX`nax6eFeb9zB(3w}Q2hHL;znf$c)Qp4r)QtoT+?#P@3EU`tpD zbE@-0h=?!BqkLX(q`8QwI_2lDmhx|Jkjy!X8e}3dbR~>TK%{VOrSwizF7;p2K0d%n&1=}bo1U$s!}UM>548?M7MB- zSOK*~rh_J~w^13bRae>Qg9v`XO26=;w<%H`h$C6YBezg7Pfnyr9@Ycm+8kP-GxHco zK@qiH-BUznQoHkMWv2UHtt^3!&%yF0cw#$hJIe+h0C~J(87JFW&fTciG`sI!^=Qk7Hf9kkWCi#QO=1UPXDi~P1?`6c;gd1_;vOqXHTT@> z!i*Ju<9kMjEyAC@CavN294S}zl+zpGra9t}Lz$zdSCcAnPZVWQ9VaU-*EWiI6}CYY z!djfEE`Dyklt}aVo>1EB9&-|>vA4@deCWHMGKKkx4FvpJ$+=A|)>W8nvNx6P3 z+Zp^T?l<=Y?%+u&A8kEjyEVl=y*0ruf1l!IxM<37`z)Ev&8{4^#+!yy4gQ6Z79Ps! z`8bI@67Mn60_FPoidvFn~y2#!=spCeLiMiF7KN{9ey$|`Z%KAH8jk1hCJqWF=rG} zulA##@XL#Q%7TJZpA^rvGM-&W+xXY}XeU2jOL7d}I6iL=4^q$9QZCu?N?;dtuTq#u98&|k z@!y}PU%4lb;)GMm`J*pTXqK;gT3~nosW?e#%qpYZyo#uh&#$9pyl*!0O~`TPkI-um zE~qq6P~R^^Ub+BCv#nZad^ZLPIqF&;`IEuI!!kYh}@S^55AvhqL9;0>d#=npj% zkv=`RsG>Xe#cpCt5#izt6s~LSGK`QZ!KBl0;5u5_Ti{}n)fG>J`LMLOACiy n1B)SK8`8si)Xg~CYIwh!Dx|_9{@pv2x3BUDsg*~huA2V<%Q%Po delta 2657 zcmds2ZA_F$5T1GOxI5(T_&7c-;(>_N2p)P;s#y6D8wtvx5wTUnmkkP{#iLR*dbCL) zf(dmkqtz(3KWt)Km9u@5{?Mvmni^ALOrwcX><>zf{Ya$!VN&eudncZrnDlS=&F0;m z-I-^0o|#=whuPC%KGUGLI!@F){PgY>)B(3PZ>zpok2>#wX^+l=Ru(<-H!8DWszL6m z2GMG6HFWXtW`*~m*@~fN9w%|n5Rq0}2oFFnEY>)YXB`yD;RzPGz6RW|85&@RH#>Yk z8=uB93wLQ>GcLxWT;?#p+giM~O2-z(jZ?{C$Qla3IM4e&ABxBIB6;9-(cd3S_uDa5 zjQ977rokMs=O3#WwkLUOuMF$Vde#XKbVsef*j2NW3XHf= z+#E>%Xc$u|?={T)Y894XkAkV8`*?RJ_k$v%dOE&OD->L-mkx=~suOYiY}F#95BFm{ zHGYE;v~Dk2MfZRKTcoEnd=67I8Qp6~GkvSa@|W4xMB5BoVKp>E6TAggPy?I54jXti zo_n*pBm}uNQ@#M@Tl9m7hs(uAWrlO&U!^O2^y z&Db4Eo+uoq?2{Owj-{bl*At5_ELF>5@pL#{x_}jG#ca&eSz2s9zvMqjZOcXrs(qQb zawfTqI0qZF6FoYJ<{l#!kg^YB(`P6kDU$6>{bJ?2hQ*4U8>JWArs6J`5Az`Zli5hu zGtr}Z%JEQGXrfFlZi#AgHL41&x`VZ9ZVetqZAd)qC)ZwlJER0kVKqgJ;+xcb2yOPX z7XvzJunTX6YFdy9bv>Q9CIcW2hIH3(ij2&x7aJ(h4AAXzCNyCbSJB)K455lnChz`X z3^P4GrMk0|Lt@Q_3@9ix04(LM$odLpI9R~lpv|UmCO+g!HOX20ZVt`|++UK1=XULs zGwP4?Ukr(h%VG%Q&_gM6n9j-2V;`eGiLnBSC_E2JXx+!Sk>+-x+nNCm$og+Sb+Ex* zK9?qZBFx6t}kDrdX*?GUs8O> znov&)R#z`~;Tt&BZ-4r8HW=?=7255=E7HTqwUwhG2NXzJ*1Y-71=%vH6Y$BwHi+Rz zEZbl^e+?X{9pKgoaXv>qC0ISsg_S6hZc9?`9*!Z8!AFXAHARQ-WCofTpq3f0@^fM1 z>*851sB;uY=+B?g9#C(izoOZe8oXKc9>6X5zs$l(BS}gKM#b4-xmHA*IH-*rP=2ZX z_uE>>Gn}Uf$1RXF*W{!{axSp_X03$eqqIrO41+H-=%;=7E~SLx7P?_YdnDH{lrYOx z%<*!quJIV!Z0W3B$HFGC!)%bRT@js_r7W893M}KBser#%Ss2It`4%vpj`!io@Td0| zsbxnoA8FXhkKb?{I_URses9lR$L=RG%W-*9Zu0*nwVBXHXZn5R&V<8km z5fso0ud;#i2C+vIhxx^inv[HELMETPOS]) ); iDivideValue = ( Armour[ Item[ SPECTRA_HELMET_18 ].ubClassIndex ].ubProtection * Armour[ Item[ SPECTRA_HELMET_18 ].ubClassIndex ].ubCoverage ); + // WANNE: Just to be on the save side if (iDivideValue > 0) { // convert to % of best; ignoring bug-treated stuff @@ -1010,6 +1012,7 @@ INT32 ArmourPercent( SOLDIERTYPE * pSoldier ) } else { + iHelmet = 15 * iHelmet / Armour[ Item[ SPECTRA_HELMET_18 ].ubClassIndex ].ubProtection; } } else @@ -1022,6 +1025,7 @@ INT32 ArmourPercent( SOLDIERTYPE * pSoldier ) iLeg = EffectiveArmour( &(pSoldier->inv[LEGPOS]) ); iDivideValue = ( Armour[ Item[ SPECTRA_LEGGINGS_18 ].ubClassIndex ].ubProtection * Armour[ Item[ SPECTRA_LEGGINGS_18 ].ubClassIndex ].ubCoverage ); + // WANNE: Just to be on the save side if (iDivideValue > 0) { // convert to % of best; ignoring bug-treated stuff @@ -1029,6 +1033,7 @@ INT32 ArmourPercent( SOLDIERTYPE * pSoldier ) } else { + iLeg = 25 * iLeg / Armour[ Item[ SPECTRA_LEGGINGS_18 ].ubClassIndex ].ubProtection; } } else diff --git a/Tactical/Weapons.h b/Tactical/Weapons.h index 8b9de72ff..13bd4d6e7 100644 --- a/Tactical/Weapons.h +++ b/Tactical/Weapons.h @@ -286,6 +286,7 @@ typedef struct { UINT8 ubArmourClass; UINT16 ubProtection; + UINT8 ubCoverage; // Captain J UINT8 ubDegradePercent; UINT32 uiIndex; } ARMOURTYPE; diff --git a/Tactical/XML_Armour.cpp b/Tactical/XML_Armour.cpp index f4c0fe586..5b95ee9e1 100644 --- a/Tactical/XML_Armour.cpp +++ b/Tactical/XML_Armour.cpp @@ -86,6 +86,7 @@ armourStartElementHandle(void *userData, const char *name, const char **atts) (strcmp(name, "uiIndex") == 0 || strcmp(name, "ubArmourClass") == 0 || strcmp(name, "ubProtection") == 0 || + strcmp(name, "ubCoverage") == 0 || strcmp(name, "ubDegradePercent") == 0 )) { pData->curElement = ELEMENT_PROPERTY; @@ -148,6 +149,14 @@ armourEndElementHandle(void *userData, const char *name) pData->curElement = ELEMENT; pData->curArmour.ubProtection = (UINT8) atol(pData->szCharData); } + else if(strcmp(name, "ubCoverage") == 0) + { + pData->curElement = ELEMENT; + if ( gGameExternalOptions.fEnableArmorCoverage ) + pData->curArmour.ubCoverage = (UINT8) atol(pData->szCharData); + else + pData->curArmour.ubCoverage = 100; + } else if(strcmp(name, "ubDegradePercent") == 0) { pData->curElement = ELEMENT; @@ -248,6 +257,7 @@ BOOLEAN WriteArmourStats() FilePrintf(hFile,"\t\t%d\r\n", cnt ); FilePrintf(hFile,"\t\t%d\r\n", Armour[cnt].ubArmourClass ); FilePrintf(hFile,"\t\t%d\r\n", Armour[cnt].ubProtection ); + FilePrintf(hFile,"\t\t%d\r\n", Armour[cnt].ubCoverage ); FilePrintf(hFile,"\t\t%d\r\n", Armour[cnt].ubDegradePercent ); FilePrintf(hFile,"\t\r\n"); diff --git a/Utils/_GermanText.cpp b/Utils/_GermanText.cpp index a228be8b0..0621f7043 100644 --- a/Utils/_GermanText.cpp +++ b/Utils/_GermanText.cpp @@ -288,8 +288,8 @@ UINT16 Message[][STRING_LENGTH] = L"Wenn Sie zu Skyriders Heli wollen, müssen Sie Söldner einem FAHRZEUG/HELIKOPTER ZUWEISEN.", L"%s hat nur Zeit, EINE Waffe zu laden", L"Spielzug Bloodcats", - L"automatisch", - L"nicht komplett automatisch", + L"Dauerfeuer", + L"kein Dauerfeuer", L"genau", L"ungenau", L"kein Einzelschuss",