From f8b6ee16725dc27d6c3b9dcf3524b04a6a33c81e Mon Sep 17 00:00:00 2001 From: Asdow <20314541+Asdow@users.noreply.github.com> Date: Fri, 2 Jan 2026 22:08:42 +0200 Subject: [PATCH] Use externalized emails --- Ja2/SaveLoadGame.cpp | 6 +- Laptop/PostalService.cpp | 32 +- Laptop/XML_Email.cpp | 2 +- Laptop/email.cpp | 461 ++++++++++++++------------ Laptop/email.h | 95 +++++- Laptop/insurance Contract.cpp | 65 ++-- Laptop/laptop.cpp | 2 +- Laptop/mercs.cpp | 11 +- Strategic/Game Event Hook.cpp | 21 +- Strategic/LuaInitNPCs.cpp | 47 +-- Strategic/Map Screen Interface.cpp | 2 +- Strategic/Merc Contract.cpp | 19 +- Strategic/Player Command.cpp | 2 +- Strategic/Strategic Event Handler.cpp | 4 +- Strategic/Strategic Status.cpp | 18 +- Tactical/Campaign.cpp | 4 +- Tactical/End Game.cpp | 12 +- Tactical/Merc Hiring.cpp | 13 +- 18 files changed, 476 insertions(+), 340 deletions(-) diff --git a/Ja2/SaveLoadGame.cpp b/Ja2/SaveLoadGame.cpp index b486e84e..9546b02e 100644 --- a/Ja2/SaveLoadGame.cpp +++ b/Ja2/SaveLoadGame.cpp @@ -6296,8 +6296,10 @@ BOOLEAN LoadSavedGame( int ubSavedGameID ) #ifdef JA2UB #else - if(!fBookMark && !fEmail) - AddEmail(MERC_INTRO, MERC_INTRO_LENGTH, SPECK_FROM_MERC, GetWorldTotalMin( ), -1, -1 , TYPE_EMAIL_EMAIL_EDT); + if ( !fBookMark && !fEmail ) + { + AddEmail(MERC_INTRO, MERC_INTRO_LENGTH, SPECK_FROM_MERC, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_SPECK_INTRO); + } #endif } diff --git a/Laptop/PostalService.cpp b/Laptop/PostalService.cpp index 5081540f..ff2bdfeb 100644 --- a/Laptop/PostalService.cpp +++ b/Laptop/PostalService.cpp @@ -565,25 +565,35 @@ BOOLEAN CPostalService::DeliverShipment(UINT16 usShipmentID) StopTimeCompression(); #ifdef JA2UB - -//no UB if ( gGameUBOptions.fBobbyRSite == TRUE ) { // Shipment from Bobby Ray - if (shs.sSenderID == BOBBYR_SENDER_ID) - AddBobbyREmailJA2( 198, 4, BOBBY_R, GetWorldTotalMin(), -1, gusCurShipmentDestinationID, TYPE_EMAIL_BOBBY_R_EMAIL_JA2_EDT); + if ( shs.sSenderID == BOBBYR_SENDER_ID ) + { + if ( gEmails.size() > 0 ) + { + AddEmailFromXML(XML_BR_SHIPMENTARRIVAL, GetWorldTotalMin(), -1, gusCurShipmentDestinationID, false, -1, -1, 198, -1, -1, -1); + } + else + { + AddBobbyREmailJA2(198, 4, BOBBY_R, GetWorldTotalMin(), -1, gusCurShipmentDestinationID, TYPE_EMAIL_BOBBY_R_EMAIL_JA2_EDT); // Shipment from John Kulba //else // AddEmail( JOHN_KULBA_GIFT_IN_DRASSEN, JOHN_KULBA_GIFT_IN_DRASSEN_LENGTH, JOHN_KULBA, GetWorldTotalMin(), -1, gusCurShipmentDestinationID, TYPE_EMAIL_EMAIL_EDT); + } + } } #else - - // Shipment from Bobby Ray - if (shs.sSenderID == BOBBYR_SENDER_ID) - AddEmail( BOBBYR_SHIPMENT_ARRIVED, BOBBYR_SHIPMENT_ARRIVED_LENGTH, BOBBY_R, GetWorldTotalMin(), -1, gusCurShipmentDestinationID, TYPE_EMAIL_EMAIL_EDT); - // Shipment from John Kulba - else - AddEmail( JOHN_KULBA_GIFT_IN_DRASSEN, JOHN_KULBA_GIFT_IN_DRASSEN_LENGTH, JOHN_KULBA, GetWorldTotalMin(), -1, gusCurShipmentDestinationID, TYPE_EMAIL_EMAIL_EDT); + // Shipment from Bobby Ray + if ( shs.sSenderID == BOBBYR_SENDER_ID ) + { + AddEmail(BOBBYR_SHIPMENT_ARRIVED, BOBBYR_SHIPMENT_ARRIVED_LENGTH, BOBBY_R, GetWorldTotalMin(), -1, gusCurShipmentDestinationID, TYPE_EMAIL_EMAIL_EDT, XML_BR_SHIPMENTARRIVAL); + } + // Shipment from John Kulba + else + { + AddEmail(JOHN_KULBA_GIFT_IN_DRASSEN, JOHN_KULBA_GIFT_IN_DRASSEN_LENGTH, JOHN_KULBA, GetWorldTotalMin(), -1, gusCurShipmentDestinationID, TYPE_EMAIL_EMAIL_EDT, XML_JOHNKULBA_SENTGUNS); + } #endif } diff --git a/Laptop/XML_Email.cpp b/Laptop/XML_Email.cpp index 76a4cf8f..8947fa29 100644 --- a/Laptop/XML_Email.cpp +++ b/Laptop/XML_Email.cpp @@ -182,7 +182,7 @@ BOOLEAN ReadInExternalizedEmails(STR fileName, BOOLEAN localizedVersion) memset(&pData, 0, sizeof(pData)); XML_SetUserData(parser, &pData); - gEmails.reserve(50); + gEmails.reserve(XML_JA2UB_SPECK_DISMISSALREFUND); if (!XML_Parse(parser, lpcBuffer, uiFSize, TRUE)) { CHAR8 errorBuf[511]; diff --git a/Laptop/email.cpp b/Laptop/email.cpp index 727c8e19..8cb24da5 100644 --- a/Laptop/email.cpp +++ b/Laptop/email.cpp @@ -349,7 +349,7 @@ void OpenMostRecentUnreadEmail( void ); BOOLEAN DisplayNumberOfPagesToThisEmail( INT32 iViewerY ); INT32 GetNumberOfPagesToEmail( ); void PreProcessEmail( EmailPtr pMail ); -void ModifyInsuranceEmails( UINT16 usMessageId, INT32 *iResults, EmailPtr pMail, UINT8 ubNumberOfRecords ); +void ModifyInsuranceEmails( UINT16 usMessageId, INT32 *iResults, EmailPtr pMail ); BOOLEAN ReplaceMercNameAndAmountWithProperData( CHAR16 *pFinishedString, EmailPtr pMail ); BOOLEAN ReplaceBiffNameWithProperMercName( CHAR16 *pFinishedString, EmailPtr pMail, CHAR16 *pMercName ); extern INT16 gusCurShipmentDestinationID; @@ -670,7 +670,7 @@ void AddCustomEmail(INT32 iMessageOffset, INT32 iMessageLength, UINT8 ubSender, LoadEncryptedDataFromFile(EMAIL_EDT_CUSTOM_FILE, pSubject, 640*(iMessageOffset), 640); // add message to list - AddEmailMessage(iMessageOffset,iMessageLength, pSubject, iDate, ubSender, FALSE, 0, 0, iCurrentIMPPosition, iCurrentShipmentDestinationID, EmailType, TYPE_E_NONE ); + AddEmailMessage(iMessageOffset,iMessageLength, pSubject, iDate, ubSender, FALSE, 0, 0, 0, 0, 0, 0, iCurrentIMPPosition, iCurrentShipmentDestinationID, EmailType, TYPE_E_NONE ); // if we are in fact int he laptop, redraw icons, might be change in mail status @@ -683,92 +683,88 @@ void AddCustomEmail(INT32 iMessageOffset, INT32 iMessageLength, UINT8 ubSender, //-- -void AddEmailWithSpecialData(INT32 iMessageOffset, INT32 iMessageLength, UINT8 ubSender, INT32 iDate, INT32 iFirstData, UINT32 uiSecondData, UINT8 EmailType, UINT32 EmailAIM ) +void AddEmailWithSpecialData(INT32 iMessageOffset, INT32 iMessageLength, UINT8 ubSender, INT32 iDate, INT32 iFirstData, UINT32 uiSecondData, UINT8 EmailType, UINT32 EmailAIM, UINT16 EnumEmailXML) { - CHAR16 pSubject[320]; - //MessagePtr pMessageList; - //MessagePtr pMessage; - //CHAR16 pMessageString[320]; - Email FakeEmail; - - - // starts at iSubjectOffset amd goes iSubjectLength, reading in string + if ( EnumEmailXML != XML_NOEMAIL && gEmails.size() > 0 ) + { + AddEmailWithSpecialDataXML(EnumEmailXML, iDate, -1, -1, false, iFirstData, uiSecondData, iMessageOffset, -1, -1, -1); + } + else + { + CHAR16 pSubject[320]; + Email FakeEmail; + // starts at iSubjectOffset amd goes iSubjectLength, reading in string #ifdef JA2UB - if ( EmailType == TYPE_EMAIL_EMAIL_EDT ) - { - if (FileExists(EMAIL_EDT_FILE_JA25)) + if ( EmailType == TYPE_EMAIL_EMAIL_EDT ) { - LoadEncryptedDataFromFile(EMAIL_EDT_FILE_JA25, pSubject, 640*(iMessageOffset), 640); + if ( FileExists(EMAIL_EDT_FILE_JA25) ) + { + LoadEncryptedDataFromFile(EMAIL_EDT_FILE_JA25, pSubject, 640 * (iMessageOffset), 640); + } + else + { + LoadEncryptedDataFromFile(EMAIL_EDT_FILE_JA2, pSubject, 640 * (iMessageOffset), 640); + } } - else + else if ( EmailType == TYPE_EMAIL_INSURANCE_COMPANY_EMAIL_JA2_EDT || EmailType == TYPE_EMAIL_DEAD_MERC_AIM_SITE_EMAIL_JA2_EDT ) { - LoadEncryptedDataFromFile(EMAIL_EDT_FILE_JA2, pSubject, 640*(iMessageOffset), 640); + LoadEncryptedDataFromFile(EMAIL_EDT_FILE_JA2, pSubject, 640 * (iMessageOffset), 640); } - } - else if ( EmailType == TYPE_EMAIL_INSURANCE_COMPANY_EMAIL_JA2_EDT || EmailType == TYPE_EMAIL_DEAD_MERC_AIM_SITE_EMAIL_JA2_EDT ) - { - LoadEncryptedDataFromFile(EMAIL_EDT_FILE_JA2, pSubject, 640*(iMessageOffset), 640); - } #else - LoadEncryptedDataFromFile("BINARYDATA\\Email.edt", pSubject, 640*(iMessageOffset), 640); + LoadEncryptedDataFromFile("BINARYDATA\\Email.edt", pSubject, 640 * (iMessageOffset), 640); #endif - //Make a fake email that will contain the codes ( ie the merc ID ) - FakeEmail.iFirstData = iFirstData; - FakeEmail.uiSecondData = uiSecondData; + //Make a fake email that will contain the codes ( ie the merc ID ) + FakeEmail.iFirstData = iFirstData; + FakeEmail.uiSecondData = uiSecondData; - //Replace the $mercname$ with the actual mercname - ReplaceMercNameAndAmountWithProperData( pSubject, &FakeEmail ); + //Replace the $mercname$ with the actual mercname + ReplaceMercNameAndAmountWithProperData(pSubject, &FakeEmail); - // add message to list - AddEmailMessage(iMessageOffset,iMessageLength, pSubject, iDate, ubSender, FALSE, iFirstData, uiSecondData, -1 , -1, EmailType, EmailAIM ); + // add message to list + AddEmailMessage(iMessageOffset, iMessageLength, pSubject, iDate, ubSender, FALSE, iFirstData, uiSecondData, 0, 0, 0, 0, -1, -1, EmailType, EmailAIM); - // if we are in fact int he laptop, redraw icons, might be change in mail status - - if( fCurrentlyInLaptop == TRUE ) - { - // redraw icons, might be new mail - DrawLapTopIcons(); + // if we are in fact in the laptop, redraw icons, might be change in mail status + if ( fCurrentlyInLaptop == TRUE ) + { + // redraw icons, might be new mail + DrawLapTopIcons(); + } } - return; } //--- XML Read Mail --- - -void AddEmailWithSpecialDataXML(INT32 iMessageOffset, INT32 iMessageLength, UINT8 ubSender, INT32 iDate, INT32 iFirstData, UINT32 uiSecondData, UINT8 EmailType, UINT32 EmailAIM ) +void AddEmailWithSpecialDataXML(INT32 iMessageOffset, INT32 iDate, INT32 iCurrentIMPPosition, INT16 iCurrentShipmentDestinationID, BOOLEAN alreadyRead, INT32 iFirstData, UINT32 uiSecondData, INT32 iThirdData, INT32 iFourthData, UINT32 uiFifthData, UINT32 uiSixData) { - CHAR16 pSubject[320]; - //MessagePtr pMessageList; - //MessagePtr pMessage; - //CHAR16 pMessageString[320]; - Email FakeEmail; - UINT8 subjectLine = 0; + CHAR16 pSubject[640]; + Email FakeEmail; - if ( EmailType == TYPE_EMAIL_INSURANCE_COMPANY ) + if ( iMessageOffset < gEmails.size() ) { - wcscpy( pSubject, EmailInsuranceText[iMessageLength].szSubject ); + auto& email = gEmails[iMessageOffset]; + wcscpy( pSubject, email.Subject); + + //Make a fake email that will contain the codes ( ie the merc ID ) + FakeEmail.iFirstData = iFirstData; + FakeEmail.uiSecondData = uiSecondData; + + //Replace the $mercname$ with the actual mercname + ReplaceMercNameAndAmountWithProperData( pSubject, &FakeEmail ); + + // add message to list + AddEmailMessage(iMessageOffset, email.Messages.size(), pSubject, iDate, email.Sender, false, iFirstData, uiSecondData, iThirdData, iFourthData, uiFifthData, uiSixData, iCurrentIMPPosition, iCurrentShipmentDestinationID, TYPE_EMAIL_XML, TYPE_E_NONE); + + // if we are in fact in the laptop, redraw icons, might be change in mail status + if( fCurrentlyInLaptop == TRUE ) + { + // redraw icons, might be new mail + DrawLapTopIcons(); + } } - - // starts at iSubjectOffset amd goes iSubjectLength, reading in string - //LoadEncryptedDataFromFile("BINARYDATA\\Email.edt", pSubject, 640*(iMessageOffset), 640); - - //Make a fake email that will contain the codes ( ie the merc ID ) - FakeEmail.iFirstData = iFirstData; - FakeEmail.uiSecondData = uiSecondData; - - //Replace the $mercname$ with the actual mercname - ReplaceMercNameAndAmountWithProperData( pSubject, &FakeEmail ); - - // add message to list - AddEmailMessage(iMessageOffset,iMessageLength, pSubject, iDate, ubSender, FALSE, iFirstData, uiSecondData, -1 , -1, EmailType, EmailAIM); - - // if we are in fact int he laptop, redraw icons, might be change in mail status - - if( fCurrentlyInLaptop == TRUE ) + else { - // redraw icons, might be new mail - DrawLapTopIcons(); + ScreenMsg(FONT_LTRED, MSG_INTERFACE, L"%s%d %s", L"Tried to add email #", iMessageOffset, L"but could not find it in Emails.xml! If playing unmodded 1.13, please report this at https://github.com/1dot13/source/issues"); } return; @@ -792,7 +788,7 @@ void AddPreReadEmailTypeXML( INT32 iMessageOffset, INT32 iMessageLength, UINT8 u } // add message to list - AddEmailMessage( iMessageOffset,iMessageLength, pSubject, iDate, ubSender, TRUE, 0, 0, -1, -1 , EmailType, TYPE_E_NONE ); + AddEmailMessage( iMessageOffset,iMessageLength, pSubject, iDate, ubSender, TRUE, 0, 0, 0, 0, 0, 0, -1, -1 , EmailType, TYPE_E_NONE ); // if we are in fact int he laptop, redraw icons, might be change in mail status @@ -831,7 +827,7 @@ void AddEmailTypeXML( INT32 iMessageOffset, INT32 iMessageLength, UINT8 ubSender wcscpy( pSubject, EmailOtherText[ubSender].szSubject ); } - AddEmailMessage(iMessageOffset,iMessageLength, pSubject, iDate, ubSender, FALSE, 0, 0, iCurrentIMPPosition, -1, EmailType, TYPE_E_NONE); + AddEmailMessage(iMessageOffset,iMessageLength, pSubject, iDate, ubSender, FALSE, 0, 0, 0, 0, 0, 0, iCurrentIMPPosition, -1, EmailType, TYPE_E_NONE); // if we are in fact in the laptop, redraw icons, might be change in mail status if( fCurrentlyInLaptop ) @@ -841,12 +837,19 @@ void AddEmailTypeXML( INT32 iMessageOffset, INT32 iMessageLength, UINT8 ubSender } } -static void AddEmailFromXML(INT32 iMessageOffset, INT32 iDate, INT32 iCurrentIMPPosition, INT16 iCurrentShipmentDestinationID, BOOLEAN alreadyRead) +void AddEmailFromXML(INT32 iMessageOffset, INT32 iDate, INT32 iCurrentIMPPosition, INT16 iCurrentShipmentDestinationID, BOOLEAN alreadyRead, INT32 iFirstData, UINT32 uiSecondData, INT32 iThirdData, INT32 iFourthData, UINT32 uiFifthData, UINT32 uiSixData) { if ( iMessageOffset < gEmails.size() ) { auto& email = gEmails[iMessageOffset]; - AddEmailMessage(iMessageOffset, email.Messages.size(), email.Subject, iDate, email.Sender, alreadyRead, 0, 0, iCurrentIMPPosition, iCurrentShipmentDestinationID, TYPE_EMAIL_XML, TYPE_E_NONE); + AddEmailMessage(iMessageOffset, email.Messages.size(), email.Subject, iDate, email.Sender, alreadyRead, iFirstData, uiSecondData, iThirdData, iFourthData, uiFifthData, uiSixData, iCurrentIMPPosition, iCurrentShipmentDestinationID, TYPE_EMAIL_XML, TYPE_E_NONE); + + // if we are in fact in the laptop, redraw icons, might be change in mail status + if ( fCurrentlyInLaptop == TRUE ) + { + // redraw icons, might be new mail + DrawLapTopIcons(); + } } else { @@ -858,7 +861,7 @@ static void AddEmailFromXML(INT32 iMessageOffset, INT32 iDate, INT32 iCurrentIMP #ifdef JA2UB void AddBobbyREmailJA2(INT32 iMessageOffset, INT32 iMessageLength, UINT8 ubSender, INT32 iDate, INT32 iCurrentIMPPosition, INT16 iCurrentShipmentDestinationID, UINT8 EmailType ) { - CHAR16 pSubject[320]; + CHAR16 pSubject[640]; UINT8 subjectLine = 0; //MessagePtr pMessageList; //MessagePtr pMessage; @@ -867,7 +870,7 @@ void AddBobbyREmailJA2(INT32 iMessageOffset, INT32 iMessageLength, UINT8 ubSende LoadEncryptedDataFromFile(EMAIL_EDT_FILE_JA2, pSubject, 640*(iMessageOffset), 640); // add message to list - AddEmailMessage(iMessageOffset,iMessageLength, pSubject, iDate, ubSender, FALSE, 0, 0, iCurrentIMPPosition, iCurrentShipmentDestinationID, EmailType, TYPE_EMAIL_BOBBY_R_L1); + AddEmailMessage(iMessageOffset, iMessageLength, pSubject, iDate, ubSender, FALSE, 0, 0, -1, -1, -1, -1, iCurrentIMPPosition, iCurrentShipmentDestinationID, EmailType, TYPE_EMAIL_BOBBY_R_L1); // if we are in fact int he laptop, redraw icons, might be change in mail status @@ -898,7 +901,7 @@ void AddEmailWFMercAvailable(INT32 iMessageOffset, INT32 iMessageLength, UINT8 u wcscpy( pSubject, New113AIMMercMailTexts[subjectLine] ); - AddEmailMessage(iMessageOffset,iMessageLength, pSubject, iDate, ubSender, FALSE, 0, 0, iCurrentIMPPosition, -1 , EmailType, TYPE_E_NONE); + AddEmailMessage(iMessageOffset,iMessageLength, pSubject, iDate, ubSender, FALSE, 0, 0, 0, 0, 0, 0, iCurrentIMPPosition, -1 , EmailType, TYPE_E_NONE); // if we are in fact int he laptop, redraw icons, might be change in mail status @@ -911,21 +914,18 @@ void AddEmailWFMercAvailable(INT32 iMessageOffset, INT32 iMessageLength, UINT8 u return; } -void AddEmail(INT32 iMessageOffset, INT32 iMessageLength, UINT8 ubSender, INT32 iDate, INT32 iCurrentIMPPosition, INT16 iCurrentShipmentDestinationID, UINT8 EmailType) +void AddEmail(INT32 iMessageOffset, INT32 iMessageLength, UINT8 ubSender, INT32 iDate, INT32 iCurrentIMPPosition, INT16 iCurrentShipmentDestinationID, UINT8 EmailType, UINT16 EnumEmailXML) { - CHAR16 pSubject[640]; - UINT8 subjectLine = 0; - //MessagePtr pMessageList; - //MessagePtr pMessage; - //CHAR16 pMessageString[320]; + CHAR16 pSubject[640]; + UINT8 subjectLine = 0; -#ifdef JA2UB - if ( EmailType == TYPE_EMAIL_XML ) + if ( EnumEmailXML != XML_NOEMAIL && gEmails.size() > 0 ) { - AddEmailFromXML(iMessageOffset, iDate, iCurrentIMPPosition, iCurrentShipmentDestinationID, false); + AddEmailFromXML(EnumEmailXML, iDate, iCurrentIMPPosition, iCurrentShipmentDestinationID, false, -1, -1, iMessageOffset, -1, -1, -1); } else { +#ifdef JA2UB if ( EmailType == TYPE_EMAIL_EMAIL_EDT ) { if ( FileExists(EMAIL_EDT_FILE_JA25) ) @@ -946,90 +946,65 @@ void AddEmail(INT32 iMessageOffset, INT32 iMessageLength, UINT8 ubSender, INT32 */ } // add message to list - AddEmailMessage(iMessageOffset, iMessageLength, pSubject, iDate, ubSender, FALSE, 0, 0, iCurrentIMPPosition, iCurrentShipmentDestinationID, EmailType, TYPE_E_NONE); - } + AddEmailMessage(iMessageOffset, iMessageLength, pSubject, iDate, ubSender, FALSE, 0, 0, 0, 0, 0, 0, iCurrentIMPPosition, iCurrentShipmentDestinationID, EmailType, TYPE_E_NONE); #else - if ( EmailType == TYPE_EMAIL_XML ) - { - AddEmailFromXML(iMessageOffset, iDate, iCurrentIMPPosition, iCurrentShipmentDestinationID, false); - } - else - { - // WANNE: Short work in both ways - LoadEncryptedDataFromFile("BINARYDATA\\Email.edt", pSubject, 640 * (iMessageOffset), 640); - // add message to list - AddEmailMessage(iMessageOffset, iMessageLength, pSubject, iDate, ubSender, FALSE, 0, 0, iCurrentIMPPosition, iCurrentShipmentDestinationID, EmailType, TYPE_E_NONE); - } + // WANNE: Short work in both ways + LoadEncryptedDataFromFile("BINARYDATA\\Email.edt", pSubject, 640 * (iMessageOffset), 640); + // add message to list + AddEmailMessage(iMessageOffset, iMessageLength, pSubject, iDate, ubSender, FALSE, 0, 0, 0, 0, 0, 0, iCurrentIMPPosition, iCurrentShipmentDestinationID, EmailType, TYPE_E_NONE); #endif - // if we are in fact in the laptop, redraw icons, might be change in mail status - if( fCurrentlyInLaptop == TRUE ) - { - // redraw icons, might be new mail - DrawLapTopIcons(); - } - - return; + // if we are in fact in the laptop, redraw icons, might be change in mail status + if ( fCurrentlyInLaptop == TRUE ) + { + // redraw icons, might be new mail + DrawLapTopIcons(); + } + } + return; } -void AddPreReadEmail(INT32 iMessageOffset, INT32 iMessageLength, UINT8 ubSender, INT32 iDate , UINT8 EmailType ) +void AddPreReadEmail(INT32 iMessageOffset, INT32 iMessageLength, UINT8 ubSender, INT32 iDate, UINT8 EmailType) { - CHAR16 pSubject[640]; - //MessagePtr pMessageList; - //MessagePtr pMessage; - //CHAR16 pMessageString[320]; + CHAR16 pSubject[640]; #ifdef JA2UB - if ( EmailType == TYPE_EMAIL_XML ) - { - AddEmailFromXML(iMessageOffset, iDate, -1, -1, true); - } - else - { - if ( EmailType == TYPE_EMAIL_EMAIL_EDT ) - { - if ( FileExists(EMAIL_EDT_FILE_JA25) ) - LoadEncryptedDataFromFile(EMAIL_EDT_FILE_JA25, pSubject, 640 * (iMessageOffset), 640); - else - LoadEncryptedDataFromFile(EMAIL_EDT_FILE_JA2, pSubject, 640 * (iMessageOffset), 640); - } - else if ( EmailType == TYPE_EMAIL_BOBBY_R_EMAIL_JA2_EDT || EmailType == TYPE_EMAIL_INSURANCE_COMPANY_EMAIL_JA2_EDT || EmailType == TYPE_EMAIL_DEAD_MERC_AIM_SITE_EMAIL_JA2_EDT ) - { - LoadEncryptedDataFromFile(EMAIL_EDT_FILE_JA2, pSubject, 640 * (iMessageOffset), 640); - } + if ( EmailType == TYPE_EMAIL_EMAIL_EDT ) + { + if ( FileExists(EMAIL_EDT_FILE_JA25) ) + LoadEncryptedDataFromFile(EMAIL_EDT_FILE_JA25, pSubject, 640 * (iMessageOffset), 640); + else + LoadEncryptedDataFromFile(EMAIL_EDT_FILE_JA2, pSubject, 640 * (iMessageOffset), 640); + } + else if ( EmailType == TYPE_EMAIL_BOBBY_R_EMAIL_JA2_EDT || EmailType == TYPE_EMAIL_INSURANCE_COMPANY_EMAIL_JA2_EDT || EmailType == TYPE_EMAIL_DEAD_MERC_AIM_SITE_EMAIL_JA2_EDT ) + { + LoadEncryptedDataFromFile(EMAIL_EDT_FILE_JA2, pSubject, 640 * (iMessageOffset), 640); + } - // add message to list - AddEmailMessage(iMessageOffset, iMessageLength, pSubject, iDate, ubSender, TRUE, 0, 0, -1, -1, EmailType, TYPE_E_NONE); - } + // add message to list + AddEmailMessage(iMessageOffset, iMessageLength, pSubject, iDate, ubSender, TRUE, 0, 0, 0, 0, 0, 0, -1, -1, EmailType, TYPE_E_NONE); #else - if ( EmailType == TYPE_EMAIL_XML ) - { - AddEmailFromXML(iMessageOffset, iDate, -1, -1, true); - } - else - { - // starts at iSubjectOffset amd goes iSubjectLength, reading in string - LoadEncryptedDataFromFile("BINARYDATA\\Email.edt", pSubject, 640 * (iMessageOffset), 640); - // add message to list - AddEmailMessage( iMessageOffset,iMessageLength, pSubject, iDate, ubSender, TRUE, 0, 0, -1, -1 , EmailType, TYPE_E_NONE ); - } + // starts at iSubjectOffset amd goes iSubjectLength, reading in string + LoadEncryptedDataFromFile("BINARYDATA\\Email.edt", pSubject, 640 * (iMessageOffset), 640); + // add message to list + AddEmailMessage(iMessageOffset, iMessageLength, pSubject, iDate, ubSender, TRUE, 0, 0, 0, 0, 0, 0, -1, -1, EmailType, TYPE_E_NONE); #endif - // if we are in fact in the laptop, redraw icons, might be change in mail status + // if we are in fact in the laptop, redraw icons, might be change in mail status if ( fCurrentlyInLaptop == TRUE ) { // redraw icons, might be new mail DrawLapTopIcons(); } - return; + return; } -void AddEmailMessage(INT32 iMessageOffset, INT32 iMessageLength,STR16 pSubject, INT32 iDate, UINT8 ubSender, BOOLEAN fAlreadyRead, INT32 iFirstData, UINT32 uiSecondData, INT32 iCurrentIMPPosition, INT16 iCurrentShipmentDestinationID, UINT8 EmailType, UINT32 EmailAIM ) +void AddEmailMessage(INT32 iMessageOffset, INT32 iMessageLength,STR16 pSubject, INT32 iDate, UINT8 ubSender, BOOLEAN fAlreadyRead, INT32 iFirstData, UINT32 uiSecondData, INT32 iThirdData, INT32 iFourthData, UINT32 uiFifthData, UINT32 uiSixData, INT32 iCurrentIMPPosition, INT16 iCurrentShipmentDestinationID, UINT8 EmailType, UINT32 EmailAIM ) { // will add a message to the list of messages EmailPtr pEmail=pEmailList; @@ -1119,6 +1094,10 @@ void AddEmailMessage(INT32 iMessageOffset, INT32 iMessageLength,STR16 pSubject, // the special data pTempEmail->iFirstData = iFirstData; pTempEmail->uiSecondData = uiSecondData; + pTempEmail->iThirdData = iThirdData; + pTempEmail->iFourthData = iFourthData; + pTempEmail->uiFifthData = uiFifthData; + pTempEmail->uiSixData = uiSixData; // place into list if(pEmail) @@ -2066,13 +2045,17 @@ INT32 DisplayEmailMessage(EmailPtr pMail) // is there any special event meant for this mail?..if so, handle it if ( pMail->EmailVersion == TYPE_EMAIL_EMAIL_EDT ) - HandleAnySpecialEmailMessageEvents( iOffSet ); + HandleAnySpecialEmailMessageEvents( iOffSet ); + else if ( pMail->EmailVersion == TYPE_EMAIL_XML ) + HandleAnySpecialEmailMessageEvents(pMail->iThirdData); if ( pMail->EmailVersion == TYPE_EMAIL_EMAIL_EDT ) //|| pMail->EmailVersion == TYPE_EMAIL_BOBBY_R_EMAIL_JA2_EDT || pMail->EmailVersion == TYPE_EMAIL_INSURANCE_COMPANY_EMAIL_JA2_EDT ) - HandleMailSpecialMessages( ( UINT16 ) ( iOffSet ), &iViewerPositionY, pMail); - + HandleMailSpecialMessages( ( UINT16 ) ( iOffSet ), &iViewerPositionY, pMail); + else if ( pMail->EmailVersion == TYPE_EMAIL_XML ) + HandleMailSpecialMessages(pMail->iThirdData, &iViewerPositionY, pMail); + #ifdef JA2UB - if ( pMail->EmailType != TYPE_E_NONE ) + if ( pMail->EmailType != TYPE_E_NONE || pMail->EmailVersion == TYPE_EMAIL_XML ) { HandleNewUBMailSpecialMessages( 198, &iViewerPositionY, pMail ); HandleNewUBMailSpecialMessages( 170, &iViewerPositionY, pMail ); @@ -3465,28 +3448,28 @@ BOOLEAN HandleNewUBMailSpecialMessages( UINT16 usMessageId, INT32 *iResults, Ema wstring::size_type index; CHAR16 szMail[MAIL_STRING_SIZE]; - if ( pMail->EmailType == TYPE_E_INSURANCE_L3 && pMail->EmailVersion == TYPE_EMAIL_INSURANCE_COMPANY_EMAIL_JA2_EDT && usMessageId == 170 ) + if ( (pMail->EmailType == TYPE_E_INSURANCE_L3 && pMail->EmailVersion == TYPE_EMAIL_INSURANCE_COMPANY_EMAIL_JA2_EDT && usMessageId == 170) || (pMail->EmailVersion == TYPE_EMAIL_XML && pMail->iThirdData == 170) ) { if ( gGameUBOptions.LaptopLinkInsurance == TRUE ) - ModifyInsuranceEmails( usMessageId, iResults, pMail, INSUR_PAYMENT_LENGTH ); + ModifyInsuranceEmails( usMessageId, iResults, pMail ); } - else if ( pMail->EmailType == TYPE_E_INSURANCE_L2 && pMail->EmailVersion == TYPE_EMAIL_INSURANCE_COMPANY_EMAIL_JA2_EDT && usMessageId == INSUR_1HOUR_FRAUD ) + else if ( (pMail->EmailType == TYPE_E_INSURANCE_L2 && pMail->EmailVersion == TYPE_EMAIL_INSURANCE_COMPANY_EMAIL_JA2_EDT && usMessageId == INSUR_1HOUR_FRAUD) || (pMail->EmailVersion == TYPE_EMAIL_XML && pMail->iThirdData == INSUR_1HOUR_FRAUD) ) { if ( gGameUBOptions.LaptopLinkInsurance == TRUE ) - ModifyInsuranceEmails( usMessageId, iResults, pMail, INSUR_1HOUR_FRAUD_LENGTH ); + ModifyInsuranceEmails( usMessageId, iResults, pMail ); } - else if ( pMail->EmailType == TYPE_E_AIM_L1 && pMail->EmailVersion == TYPE_EMAIL_DEAD_MERC_AIM_SITE_EMAIL_JA2_EDT && usMessageId == 206 ) + else if ( (pMail->EmailType == TYPE_E_AIM_L1 && pMail->EmailVersion == TYPE_EMAIL_DEAD_MERC_AIM_SITE_EMAIL_JA2_EDT && usMessageId == 206) || (pMail->EmailVersion == TYPE_EMAIL_XML && pMail->iThirdData == 206) ) { if ( gGameUBOptions.fDeadMerc == TRUE ) - ModifyInsuranceEmails( usMessageId, iResults, pMail, MERC_DIED_ON_OTHER_ASSIGNMENT_LENGTH ); + ModifyInsuranceEmails( usMessageId, iResults, pMail ); } - else if ( pMail->EmailType == TYPE_E_AIM_L3 && pMail->EmailVersion == TYPE_EMAIL_DEAD_MERC_AIM_SITE_EMAIL_JA2_EDT && usMessageId == 217 ) + else if ( (pMail->EmailType == TYPE_E_AIM_L3 && pMail->EmailVersion == TYPE_EMAIL_DEAD_MERC_AIM_SITE_EMAIL_JA2_EDT && usMessageId == 217) || (pMail->EmailVersion == TYPE_EMAIL_XML && pMail->iThirdData == 217) ) { if ( gGameUBOptions.fDeadMerc == TRUE ) - ModifyInsuranceEmails( usMessageId, iResults, pMail, AIM_MEDICAL_DEPOSIT_REFUND_LENGTH ); + ModifyInsuranceEmails( usMessageId, iResults, pMail ); } //Dealtar's Airport Externalization - else if ( pMail->EmailType == TYPE_EMAIL_BOBBY_R_L1 && gGameUBOptions.fBobbyRSite == TRUE && pMail->EmailVersion == TYPE_EMAIL_BOBBY_R_EMAIL_JA2_EDT ) + else if ( (pMail->EmailType == TYPE_EMAIL_BOBBY_R_L1 && gGameUBOptions.fBobbyRSite == TRUE && pMail->EmailVersion == TYPE_EMAIL_BOBBY_R_EMAIL_JA2_EDT) || (pMail->EmailVersion == TYPE_EMAIL_XML && pMail->iThirdData == 198) ) { if (!pMessageRecordList) { @@ -3499,7 +3482,14 @@ BOOLEAN HandleNewUBMailSpecialMessages( UINT16 usMessageId, INT32 *iResults, Ema { wstrMail.clear(); - LoadEncryptedDataFromFile("BINARYDATA\\Email.edt", szMail, MAIL_STRING_SIZE *usMessageId, MAIL_STRING_SIZE); + if ( pMail->EmailVersion == TYPE_EMAIL_XML && pMail->usOffset < gEmails.size() ) + { + wstrMail = gEmails[pMail->usOffset].Messages[i]; + } + else + { + LoadEncryptedDataFromFile("BINARYDATA\\Email.edt", szMail, MAIL_STRING_SIZE *usMessageId, MAIL_STRING_SIZE); + } wstrMail = szMail; @@ -3554,11 +3544,12 @@ BOOLEAN HandleMailSpecialMessages( UINT16 usMessageId, INT32 *iResults, EmailPtr case INSUR_SUSPIC_2: case INSUR_INVEST_OVER: case INSUR_CHEAT_FRAUD: - ModifyInsuranceEmails( usMessageId, iResults, pMail, INSUR_PAYMENT_LENGTH ); - break; - case INSUR_1HOUR_FRAUD: - ModifyInsuranceEmails( usMessageId, iResults, pMail, INSUR_1HOUR_FRAUD_LENGTH ); + case MERC_DIED_ON_OTHER_ASSIGNMENT: + case AIM_MEDICAL_DEPOSIT_REFUND: + case AIM_MEDICAL_DEPOSIT_NO_REFUND: + case AIM_MEDICAL_DEPOSIT_PARTIAL_REFUND: + ModifyInsuranceEmails(usMessageId, iResults, pMail); break; case MERC_NEW_SITE_ADDRESS: @@ -3566,15 +3557,6 @@ BOOLEAN HandleMailSpecialMessages( UINT16 usMessageId, INT32 *iResults, EmailPtr SetBookMark( MERC_BOOKMARK ); break; - case MERC_DIED_ON_OTHER_ASSIGNMENT: - ModifyInsuranceEmails( usMessageId, iResults, pMail, MERC_DIED_ON_OTHER_ASSIGNMENT_LENGTH ); - break; - - case AIM_MEDICAL_DEPOSIT_REFUND: - case AIM_MEDICAL_DEPOSIT_NO_REFUND: - case AIM_MEDICAL_DEPOSIT_PARTIAL_REFUND: - ModifyInsuranceEmails( usMessageId, iResults, pMail, AIM_MEDICAL_DEPOSIT_REFUND_LENGTH ); - break; //Dealtar's Airport Externalization case BOBBYR_SHIPMENT_ARRIVED: if (!pMessageRecordList) @@ -3588,10 +3570,18 @@ BOOLEAN HandleMailSpecialMessages( UINT16 usMessageId, INT32 *iResults, EmailPtr gusCurShipmentDestinationID = pMail->iCurrentShipmentDestinationID; // Loop through each line of the shipment EDT-file - for (int i = 0; i < BOBBYR_SHIPMENT_ARRIVED_LENGTH; ++i) + for (int i = 0; i < pMail->usLength; ++i) { wstrMail.clear(); - LoadEncryptedDataFromFile("BINARYDATA\\Email.edt", szMail, MAIL_STRING_SIZE *usMessageId, MAIL_STRING_SIZE); + if ( pMail->EmailVersion == TYPE_EMAIL_XML && pMail->usOffset < gEmails.size()) + { + wstrMail = gEmails[pMail->usOffset].Messages[i]; + } + else + { + LoadEncryptedDataFromFile("BINARYDATA\\Email.edt", szMail, MAIL_STRING_SIZE *usMessageId, MAIL_STRING_SIZE); + wstrMail = szMail; + } /* if (FileExists(EMAIL_EDT_FILE_JA25)) { @@ -3602,8 +3592,6 @@ BOOLEAN HandleMailSpecialMessages( UINT16 usMessageId, INT32 *iResults, EmailPtr LoadEncryptedDataFromFile(EMAIL_EDT_FILE_JA2, szMail, MAIL_STRING_SIZE *usMessageId, MAIL_STRING_SIZE); } */ - wstrMail = szMail; - index = wstrMail.find(L"$DESTINATIONNAME$"); // WANNE.MAIL: Fix @@ -6011,7 +5999,7 @@ void PreProcessEmail( EmailPtr pMail ) } -void ModifyInsuranceEmails( UINT16 usMessageId, INT32 *iResults, EmailPtr pMail, UINT8 ubNumberOfRecords ) +void ModifyInsuranceEmails( UINT16 usMessageId, INT32 *iResults, EmailPtr pMail ) { INT32 iHeight=0; RecordPtr pTempRecord; @@ -6031,7 +6019,7 @@ void ModifyInsuranceEmails( UINT16 usMessageId, INT32 *iResults, EmailPtr pMail, // list doesn't exist, reload if( !pTempRecord ) { - for( ubCnt=0; ubCntusLength; ubCnt++ ) { // read one record from email file #ifdef JA2UB @@ -6053,7 +6041,14 @@ void ModifyInsuranceEmails( UINT16 usMessageId, INT32 *iResults, EmailPtr pMail, LoadEncryptedDataFromFile( EMAIL_EDT_FILE_JA2, pString, MAIL_STRING_SIZE * usMessageId, MAIL_STRING_SIZE ); } #else - LoadEncryptedDataFromFile( "BINARYDATA\\Email.edt", pString, MAIL_STRING_SIZE * usMessageId, MAIL_STRING_SIZE ); + if ( pMail->EmailVersion == TYPE_EMAIL_XML && pMail->usOffset < gEmails.size() ) + { + wcscpy(pString, gEmails[pMail->usOffset].Messages[ubCnt].c_str()); + } + else + { + LoadEncryptedDataFromFile( "BINARYDATA\\Email.edt", pString, MAIL_STRING_SIZE * usMessageId, MAIL_STRING_SIZE ); + } #endif //Replace the $MERCNAME$ and $AMOUNT$ with the mercs name and the amountm if the string contains the keywords. ReplaceMercNameAndAmountWithProperData( pString, pMail ); @@ -6218,7 +6213,10 @@ BOOLEAN ReplaceMercNameAndAmountWithProperData( CHAR16 *pFinishedString, EmailPt if( fReplacingMercName ) { //add the mercs name to the string - wcscat( pFinishedString, gMercProfiles[ pMail->uiSecondData ].zName ); + if ( pMail->uiSecondData < NUM_PROFILES ) + { + wcscat( pFinishedString, gMercProfiles[ pMail->uiSecondData ].zName ); + } } else { @@ -6244,73 +6242,104 @@ void AddAllEmails() #ifdef JA2UB //no UB #else + const auto date = GetWorldTotalMin(); + const auto money = 1000000; // 1 MILLION DOLLARS! + const auto mercID = 0; + for ( size_t i = 0; i < gEmails.size(); i++ ) + { + // Insurance emails + if ( i >= XML_INSURANCE_APPROVED && i <= XML_INSURANCE_POLICYVIOLATION ) + { + AddEmailWithSpecialDataXML(i, date, -1, -1, false, money, mercID, INSUR_PAYMENT, -1, -1, -1); + } + // BR Shipment arrival + else if ( i == XML_BR_SHIPMENTARRIVAL ) + { + AddEmailFromXML(i, date, -1, 1, false, -1, -1, BOBBYR_SHIPMENT_ARRIVED, -1, -1, -1); + } + // AIM Notification of death + // Medical deposit refunds + else if ( i >= XML_AIM_NOTICE_OF_DEATH && i <= XML_AIM_NOREFUND ) + { + const auto money = 1000000; // 1 MILLION DOLLARS! + const auto mercID = 0; + AddEmailWithSpecialDataXML(i, date, -1, -1, false, money, mercID, MERC_DIED_ON_OTHER_ASSIGNMENT, -1, -1, -1); + } + else + { + AddEmailFromXML(i, date, -1, -1, false, 0, 0, 0, 0, 0, 0); + } + } + +#if 0 // EDIT email data UINT32 uiCnt; UINT32 uiOffset; - AddEmail(IMP_EMAIL_INTRO,IMP_EMAIL_INTRO_LENGTH,CHAR_PROFILE_SITE, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT ); - AddEmail(ENRICO_CONGRATS,ENRICO_CONGRATS_LENGTH,MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT ); - AddEmail(IMP_EMAIL_AGAIN,IMP_EMAIL_AGAIN_LENGTH,1, GetWorldTotalMin( ), -1, -1, TYPE_EMAIL_EMAIL_EDT ); - AddEmail(MERC_INTRO, MERC_INTRO_LENGTH, SPECK_FROM_MERC, GetWorldTotalMin( ), -1, -1, TYPE_EMAIL_EMAIL_EDT ); - AddEmail( MERC_NEW_SITE_ADDRESS, MERC_NEW_SITE_ADDRESS_LENGTH, SPECK_FROM_MERC, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT ); + AddEmail(IMP_EMAIL_INTRO,IMP_EMAIL_INTRO_LENGTH,CHAR_PROFILE_SITE, date, -1, -1, TYPE_EMAIL_EMAIL_EDT ); + AddEmail(ENRICO_CONGRATS,ENRICO_CONGRATS_LENGTH,MAIL_ENRICO, date, -1, -1, TYPE_EMAIL_EMAIL_EDT ); + AddEmail(IMP_EMAIL_AGAIN,IMP_EMAIL_AGAIN_LENGTH,1, date, -1, -1, TYPE_EMAIL_EMAIL_EDT ); + AddEmail(MERC_INTRO, MERC_INTRO_LENGTH, SPECK_FROM_MERC, date, -1, -1, TYPE_EMAIL_EMAIL_EDT ); + AddEmail( MERC_NEW_SITE_ADDRESS, MERC_NEW_SITE_ADDRESS_LENGTH, SPECK_FROM_MERC, date, -1, -1, TYPE_EMAIL_EMAIL_EDT ); - AddEmail(IMP_EMAIL_PROFILE_RESULTS, IMP_EMAIL_PROFILE_RESULTS_LENGTH, IMP_PROFILE_RESULTS, GetWorldTotalMin( ), -1, -1, TYPE_EMAIL_EMAIL_EDT ); + AddEmail(IMP_EMAIL_PROFILE_RESULTS, IMP_EMAIL_PROFILE_RESULTS_LENGTH, IMP_PROFILE_RESULTS, date, -1, -1, TYPE_EMAIL_EMAIL_EDT ); - AddEmail( MERC_WARNING, MERC_WARNING_LENGTH, SPECK_FROM_MERC, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); - AddEmail( MERC_INVALID, MERC_INVALID_LENGTH, SPECK_FROM_MERC, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); - AddEmail( NEW_MERCS_AT_MERC, NEW_MERCS_AT_MERC_LENGTH, SPECK_FROM_MERC, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); - AddEmail( MERC_FIRST_WARNING, MERC_FIRST_WARNING_LENGTH, SPECK_FROM_MERC, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail( MERC_WARNING, MERC_WARNING_LENGTH, SPECK_FROM_MERC, date, -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail( MERC_INVALID, MERC_INVALID_LENGTH, SPECK_FROM_MERC, date, -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail( NEW_MERCS_AT_MERC, NEW_MERCS_AT_MERC_LENGTH, SPECK_FROM_MERC, date, -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail( MERC_FIRST_WARNING, MERC_FIRST_WARNING_LENGTH, SPECK_FROM_MERC, date, -1, -1, TYPE_EMAIL_EMAIL_EDT); uiOffset = MERC_UP_LEVEL_BIFF; for( uiCnt=0; uiCnt<10; ++uiCnt) { - AddEmail( uiOffset, MERC_UP_LEVEL_LENGTH_BIFF, SPECK_FROM_MERC, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT_NAME_MERC ); + AddEmail( uiOffset, MERC_UP_LEVEL_LENGTH_BIFF, SPECK_FROM_MERC, date, -1, -1, TYPE_EMAIL_EMAIL_EDT_NAME_MERC ); uiOffset += MERC_UP_LEVEL_LENGTH_BIFF; } -// AddEmail( ( UINT8 )( AIM_REPLY_BARRY + ( AIM_REPLY_LENGTH_BARRY ) ), AIM_REPLY_LENGTH_BARRY, AIM_REPLY_BARRY, GetWorldTotalMin(), -1, -1 ); +// AddEmail( ( UINT8 )( AIM_REPLY_BARRY + ( AIM_REPLY_LENGTH_BARRY ) ), AIM_REPLY_LENGTH_BARRY, AIM_REPLY_BARRY, date, -1, -1 ); uiOffset = AIM_REPLY_BARRY; for( uiCnt=0; uiCnt<40; ++uiCnt ) { - AddEmail( ( UINT8 )( uiOffset + ( uiCnt * AIM_REPLY_LENGTH_BARRY ) ), AIM_REPLY_LENGTH_BARRY, ( UINT8 )( 6 + uiCnt ), GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT_NAME_MERC ); + AddEmail( ( UINT8 )( uiOffset + ( uiCnt * AIM_REPLY_LENGTH_BARRY ) ), AIM_REPLY_LENGTH_BARRY, ( UINT8 )( 6 + uiCnt ), date, -1, -1, TYPE_EMAIL_EMAIL_EDT_NAME_MERC ); } - AddEmail(OLD_ENRICO_1,OLD_ENRICO_1_LENGTH,MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT ); - AddEmail(OLD_ENRICO_2,OLD_ENRICO_2_LENGTH,MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT ); - AddEmail(OLD_ENRICO_3,OLD_ENRICO_3_LENGTH,MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT ); - AddEmail(RIS_REPORT,RIS_REPORT_LENGTH,RIS_EMAIL, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT ); + AddEmail(OLD_ENRICO_1,OLD_ENRICO_1_LENGTH,MAIL_ENRICO, date, -1, -1, TYPE_EMAIL_EMAIL_EDT ); + AddEmail(OLD_ENRICO_2,OLD_ENRICO_2_LENGTH,MAIL_ENRICO, date, -1, -1, TYPE_EMAIL_EMAIL_EDT ); + AddEmail(OLD_ENRICO_3,OLD_ENRICO_3_LENGTH,MAIL_ENRICO, date, -1, -1, TYPE_EMAIL_EMAIL_EDT ); + AddEmail(RIS_REPORT,RIS_REPORT_LENGTH,RIS_EMAIL, date, -1, -1, TYPE_EMAIL_EMAIL_EDT ); - AddEmail( ENRICO_MIGUEL, ENRICO_MIGUEL_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT ); - AddEmail(ENRICO_PROG_20, ENRICO_PROG_20_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); - AddEmail(ENRICO_PROG_55, ENRICO_PROG_55_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); - AddEmail(ENRICO_PROG_80, ENRICO_PROG_80_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); - AddEmail(ENRICO_SETBACK, ENRICO_SETBACK_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); - AddEmail(ENRICO_SETBACK_2, ENRICO_SETBACK_2_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); - AddEmail(LACK_PLAYER_PROGRESS_1, LACK_PLAYER_PROGRESS_1_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); - AddEmail(LACK_PLAYER_PROGRESS_2, LACK_PLAYER_PROGRESS_2_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); - AddEmail(LACK_PLAYER_PROGRESS_3, LACK_PLAYER_PROGRESS_3_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); - AddEmail(ENRICO_CREATURES, ENRICO_CREATURES_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail( ENRICO_MIGUEL, ENRICO_MIGUEL_LENGTH, MAIL_ENRICO, date, -1, -1, TYPE_EMAIL_EMAIL_EDT ); + AddEmail(ENRICO_PROG_20, ENRICO_PROG_20_LENGTH, MAIL_ENRICO, date, -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(ENRICO_PROG_55, ENRICO_PROG_55_LENGTH, MAIL_ENRICO, date, -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(ENRICO_PROG_80, ENRICO_PROG_80_LENGTH, MAIL_ENRICO, date, -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(ENRICO_SETBACK, ENRICO_SETBACK_LENGTH, MAIL_ENRICO, date, -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(ENRICO_SETBACK_2, ENRICO_SETBACK_2_LENGTH, MAIL_ENRICO, date, -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(LACK_PLAYER_PROGRESS_1, LACK_PLAYER_PROGRESS_1_LENGTH, MAIL_ENRICO, date, -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(LACK_PLAYER_PROGRESS_2, LACK_PLAYER_PROGRESS_2_LENGTH, MAIL_ENRICO, date, -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(LACK_PLAYER_PROGRESS_3, LACK_PLAYER_PROGRESS_3_LENGTH, MAIL_ENRICO, date, -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(ENRICO_CREATURES, ENRICO_CREATURES_LENGTH, MAIL_ENRICO, date, -1, -1, TYPE_EMAIL_EMAIL_EDT); //Add an email telling the user that he received an insurance payment - AddEmailWithSpecialData( INSUR_PAYMENT, INSUR_PAYMENT_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), 20, 0, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); - AddEmailWithSpecialData( INSUR_SUSPIC, INSUR_SUSPIC_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), 20, 0, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); - AddEmailWithSpecialData( INSUR_SUSPIC_2, INSUR_SUSPIC_2_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), 20, 0, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); - AddEmail( BOBBYR_NOW_OPEN, BOBBYR_NOW_OPEN_LENGTH, BOBBY_R, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); - AddEmail( KING_PIN_LETTER, KING_PIN_LETTER_LENGTH, KING_PIN, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT ); - AddEmail( BOBBYR_SHIPMENT_ARRIVED, BOBBYR_SHIPMENT_ARRIVED_LENGTH, BOBBY_R, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT ); + AddEmailWithSpecialData( INSUR_PAYMENT, INSUR_PAYMENT_LENGTH, INSURANCE_COMPANY, date, 20, 0, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); + AddEmailWithSpecialData( INSUR_SUSPIC, INSUR_SUSPIC_LENGTH, INSURANCE_COMPANY, date, 20, 0, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); + AddEmailWithSpecialData( INSUR_SUSPIC_2, INSUR_SUSPIC_2_LENGTH, INSURANCE_COMPANY, date, 20, 0, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); + AddEmail( BOBBYR_NOW_OPEN, BOBBYR_NOW_OPEN_LENGTH, BOBBY_R, date, -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail( KING_PIN_LETTER, KING_PIN_LETTER_LENGTH, KING_PIN, date, -1, -1, TYPE_EMAIL_EMAIL_EDT ); + AddEmail( BOBBYR_SHIPMENT_ARRIVED, BOBBYR_SHIPMENT_ARRIVED_LENGTH, BOBBY_R, date, -1, -1, TYPE_EMAIL_EMAIL_EDT ); - AddEmail( JOHN_KULBA_GIFT_IN_DRASSEN, JOHN_KULBA_GIFT_IN_DRASSEN_LENGTH, JOHN_KULBA, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT ); + AddEmail( JOHN_KULBA_GIFT_IN_DRASSEN, JOHN_KULBA_GIFT_IN_DRASSEN_LENGTH, JOHN_KULBA, date, -1, -1, TYPE_EMAIL_EMAIL_EDT ); - AddEmailWithSpecialData(MERC_DIED_ON_OTHER_ASSIGNMENT, MERC_DIED_ON_OTHER_ASSIGNMENT_LENGTH, AIM_SITE, GetWorldTotalMin(), 0, 0, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); + AddEmailWithSpecialData(MERC_DIED_ON_OTHER_ASSIGNMENT, MERC_DIED_ON_OTHER_ASSIGNMENT_LENGTH, AIM_SITE, date, 0, 0, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); - AddEmailWithSpecialData( INSUR_1HOUR_FRAUD, INSUR_1HOUR_FRAUD_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), 20, 0, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); + AddEmailWithSpecialData( INSUR_1HOUR_FRAUD, INSUR_1HOUR_FRAUD_LENGTH, INSURANCE_COMPANY, date, 20, 0, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); //add an email - AddEmailWithSpecialData( AIM_MEDICAL_DEPOSIT_REFUND, AIM_MEDICAL_DEPOSIT_REFUND_LENGTH, AIM_SITE, GetWorldTotalMin(), 20, 0, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); + AddEmailWithSpecialData( AIM_MEDICAL_DEPOSIT_REFUND, AIM_MEDICAL_DEPOSIT_REFUND_LENGTH, AIM_SITE, date, 20, 0, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); - AddEmailWithSpecialData( AIM_MEDICAL_DEPOSIT_PARTIAL_REFUND, AIM_MEDICAL_DEPOSIT_PARTIAL_REFUND_LENGTH, AIM_SITE, GetWorldTotalMin(), 20, 0, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); + AddEmailWithSpecialData( AIM_MEDICAL_DEPOSIT_PARTIAL_REFUND, AIM_MEDICAL_DEPOSIT_PARTIAL_REFUND_LENGTH, AIM_SITE, date, 20, 0, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); - AddEmailWithSpecialData( AIM_MEDICAL_DEPOSIT_NO_REFUND, AIM_MEDICAL_DEPOSIT_NO_REFUND_LENGTH, AIM_SITE, GetWorldTotalMin(), 20, 0, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); + AddEmailWithSpecialData( AIM_MEDICAL_DEPOSIT_NO_REFUND, AIM_MEDICAL_DEPOSIT_NO_REFUND_LENGTH, AIM_SITE, date, 20, 0, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); +#endif #endif } #endif diff --git a/Laptop/email.h b/Laptop/email.h index 1821c26e..a2233db0 100644 --- a/Laptop/email.h +++ b/Laptop/email.h @@ -567,11 +567,10 @@ void RenderEmail(); // message manipulation -void AddEmailMessage(INT32 iMessageOffset, INT32 iMessageLength,STR16 pSubject, INT32 iDate, UINT8 ubSender, BOOLEAN fAlreadyRead, INT32 uiFirstData, UINT32 uiSecondData, INT32 iCurrentIMPPosition, INT16 iCurrentShipmentDestinationID, UINT8 EmailType, UINT32 EmailAIM ); +void AddEmailMessage(INT32 iMessageOffset, INT32 iMessageLength,STR16 pSubject, INT32 iDate, UINT8 ubSender, BOOLEAN fAlreadyRead, INT32 iFirstData, UINT32 uiSecondData, INT32 iThirdData, INT32 iFourthData, UINT32 uiFifthData, UINT32 uiSixData, INT32 iCurrentIMPPosition, INT16 iCurrentShipmentDestinationID, UINT8 EmailType, UINT32 EmailAIM ); void RemoveEmailMessage(INT32 iId); EmailPtr GetEmailMessage(INT32 iId); void LookForUnread(); -void AddEmail(INT32 iMessageOffset, INT32 iMessageLength, UINT8 ubSender, INT32 iDate, INT32 iCurrentIMPPosition, INT16 iCurrentShipmentDestinationID, UINT8 EmailType); // WANNE: For the new WF merc, when they available again void AddEmailWFMercAvailable(INT32 iMessageOffset, INT32 iMessageLength, UINT8 ubSender, INT32 iDate, INT32 iCurrentIMPPosition, UINT8 EmailType); @@ -586,7 +585,6 @@ void ReDrawNewMailBox( void ); void ReDisplayBoxes( void ); void ShutDownEmailList(); void AddMessageToPages(INT32 iMessageId); -void AddEmailWithSpecialData(INT32 iMessageOffset, INT32 iMessageLength, UINT8 ubSender, INT32 iDate, INT32 iFirstData, UINT32 uiSecondData, UINT8 EmailType, UINT32 EmailAIM ); void AddCustomEmail(INT32 iMessageOffset, INT32 iMessageLength, UINT8 ubSender, INT32 iDate, INT32 iCurrentIMPPosition, INT16 iCurrentShipmentDestinationID, UINT8 EmailType); @@ -706,6 +704,88 @@ enum { TYPE_EMAIL_BOBBY_R_L1 = 11, }; +enum { + XML_NOEMAIL = -1, + XML_ENRICO_INQUIRY = 0, + XML_ENRICO_FOLLOWUP, + XML_ENRICO_CONFIRMED, + XML_ENRICO_GOODLUCK, + XML_ENRICO_GREATNEWS, + XML_ENRICO_PROGRESS, + XML_ENRICO_GOODWORK, + XML_ENRICO_FINALPUSH, + XML_ENRICO_SETBACK, + XML_ENRICO_BADNEWS, + XML_ENRICO_CREPITUS, + XML_ENRICO_CONCERNED, + XML_ENRICO_WORRIED, + XML_ENRICO_DISAPPOINTED, + XML_ENRICO_MILITIA_WEBSITE, + XML_ENRICO_INTEL, + XML_IMP_INTRO, + XML_IMP_INTROAGAIN, + XML_SPECK_INTRO, + XML_SPECK_NEWSITE, + XML_SPECK_NOTICE, + XML_SPECK_NEWPERSONNEL, + XML_SPECK_PLEASEPAY, + XML_SPECK_DELINQUENT, + XML_RISREPORT, + XML_INSURANCE_APPROVED, + XML_INSURANCE_SUSPICIOUS, + XML_INSURANCE_COMPLETED, + XML_INSURANCE_INVESTIGATION, + XML_INSURANCE_REFUSED, + XML_INSURANCE_POLICYVIOLATION, + XML_BR_VISITEDSITE, + XML_BR_SHIPMENTARRIVAL, + XML_BR_MEDUNA, + XML_KINGPIN_STOLEMONEY, + XML_KINGPIN_JOBOPPORTUNITY, + XML_KINGPIN_WELLDONE, + XML_KINGPIN_FAILURE, + XML_KINGPIN_FAILUREOBSTACLES, + XML_JOHNKULBA_SENTGUNS, + XML_JOHNKULBA_MISSEDTRANSFERFLIGHT, + XML_JOHNKULBA_CRASHLANDEDHELI, + XML_JOHNKULBA_AMBUSHEDBYCATS, + XML_AIM_NOTICE_OF_DEATH, + XML_AIM_REFUND, + XML_AIM_PARTIALREFUND, + XML_AIM_NOREFUND, + XML_KERBERUS_OFFER, + XML_DASILVA_THANKYOU, + XML_JA2UB_ENRICO_HELP, + XML_JA2UB_ENRICO_INQUIRY, + XML_JA2UB_ENRICO_STILLNOWORD, + XML_JA2UB_ENRICO_GOODNEWS, + XML_JA2UB_ENRICO_CONCERNED, + XML_JA2UB_ENRICO_URGENT, + XML_JA2UB_ENRICO_PILOTTROUBLE, + XML_JA2UB_ENRICO_PILOTFOUND, + XML_JA2UB_ENRICO_CONGRATS, + XML_JA2UB_ENRICO_CONGRATS_MIGUELSICK, + XML_JA2UB_ENRICO_CONGRATS_MIGUELSICK_MANUELDEAD, + XML_JA2UB_ENRICO_CONGRATS_MIGUELSICK_MANUELALIVE, + XML_JA2UB_ENRICO_CONGRATS_MANUELDEAD, + XML_JA2UB_ENRICO_CONGRATS_MANUELALIVE, + XML_JA2UB_IMP_INTRO, + XML_JA2UB_IMP_INTROAGAIN, + XML_JA2UB_MIGUEL_HELLO, + XML_JA2UB_MIGUEL_SORRY, + XML_JA2UB_MIGUEL_SORRY_HIREDMANUEL, + XML_JA2UB_MIGUEL_SICK, + XML_JA2UB_MIGUEL_CIGARETTES, + XML_JA2UB_AIM_SPECIALOFFER, + XML_JA2UB_AIM_BONUSOFFER, + XML_JA2UB_AIM_SPECIALBONUSOFFER, + XML_JA2UB_AIM_DISMISSALREFUND, + XML_JA2UB_SPECK_EVENBETTEROFFER, + XML_JA2UB_SPECK_DISMISSALREFUND +}; +void AddEmail(INT32 iMessageOffset, INT32 iMessageLength, UINT8 ubSender, INT32 iDate, INT32 iCurrentIMPPosition, INT16 iCurrentShipmentDestinationID, UINT8 EmailType, UINT16 EnumEmailXML = XML_NOEMAIL); +void AddEmailWithSpecialData(INT32 iMessageOffset, INT32 iMessageLength, UINT8 ubSender, INT32 iDate, INT32 iFirstData, UINT32 uiSecondData, UINT8 EmailType, UINT32 EmailAIM, UINT16 EnumEmailXML = XML_NOEMAIL); + extern EMAIL_MERC_AVAILABLE_VALUES EmailMercAvailableText[NUM_PROFILES]; extern EMAIL_MERC_LEVEL_UP_VALUES EmailMercLevelUpText[NUM_PROFILES]; extern EMAIL_MERC_INSURANCE_VALUES EmailInsuranceText[NUM_PROFILES]; @@ -714,7 +794,8 @@ extern EMAIL_OTHER_VALUES EmailOtherText[EMAIL_INDEX]; extern BOOLEAN ReadXMLEmail; extern void AddEmailTypeXML( INT32 iMessageOffset, INT32 iMessageLength, UINT8 ubSender, INT32 iDate, INT32 iCurrentIMPPosition, UINT8 EmailType ); extern void AddPreReadEmailTypeXML( INT32 iMessageOffset, INT32 iMessageLength, UINT8 ubSender, INT32 iDate, UINT8 EmailType ); -extern void AddEmailWithSpecialDataXML(INT32 iMessageOffset, INT32 iMessageLength, UINT8 ubSender, INT32 iDate, INT32 iFirstData, UINT32 uiSecondData, UINT8 EmailTyp, UINT32 EmailAIMe ); +extern void AddEmailFromXML(INT32 iMessageOffset, INT32 iDate, INT32 iCurrentIMPPosition, INT16 iCurrentShipmentDestinationID, BOOLEAN alreadyRead, INT32 iFirstData, UINT32 uiSecondData, INT32 iThirdData, INT32 iFourthData, UINT32 uiFifthData, UINT32 uiSixData); +extern void AddEmailWithSpecialDataXML(INT32 iMessageOffset, INT32 iDate, INT32 iCurrentIMPPosition, INT16 iCurrentShipmentDestinationID, BOOLEAN alreadyRead, INT32 iFirstData, UINT32 uiSecondData, INT32 iThirdData, INT32 iFourthData, UINT32 uiFifthData, UINT32 uiSixData); extern BOOLEAN SaveNewEmailDataToSaveGameFile( HWFILE hFile ); extern BOOLEAN LoadNewEmailDataFromLoadGameFile( HWFILE hFile ); @@ -723,9 +804,3 @@ extern void AddBobbyREmailJA2(INT32 iMessageOffset, INT32 iMessageLength, UINT8 #endif #endif - - - - - - diff --git a/Laptop/insurance Contract.cpp b/Laptop/insurance Contract.cpp index 413493ea..a61e9f8d 100644 --- a/Laptop/insurance Contract.cpp +++ b/Laptop/insurance Contract.cpp @@ -1350,7 +1350,8 @@ BOOLEAN AddLifeInsurancePayout( SOLDIERTYPE *pSoldier ) void StartInsuranceInvestigation( UINT16 ubPayoutID ) { - UINT8 ubDays; + const auto mercID = LaptopSaveInfo.pLifeInsurancePayouts[ubPayoutID].ubMercID; + const auto payoutPrice = LaptopSaveInfo.pLifeInsurancePayouts[ubPayoutID].iPayOutPrice; // send an email telling player an investigation is taking place if (gStrategicStatus.ubInsuranceInvestigationsCnt == 0) @@ -1361,10 +1362,12 @@ void StartInsuranceInvestigation( UINT16 ubPayoutID ) if( gubQuest[ QUEST_FIX_LAPTOP ] == QUESTDONE || gGameUBOptions.LaptopQuestEnabled == FALSE ) { if ( gGameUBOptions.LaptopLinkInsurance == TRUE ) - AddEmailWithSpecialData( 173, INSUR_SUSPIC_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].iPayOutPrice, LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubMercID, TYPE_EMAIL_INSURANCE_COMPANY_EMAIL_JA2_EDT, TYPE_E_INSURANCE_L4 ); + { + AddEmailWithSpecialData(173, INSUR_SUSPIC_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), payoutPrice, mercID, TYPE_EMAIL_INSURANCE_COMPANY_EMAIL_JA2_EDT, TYPE_E_INSURANCE_L4, XML_INSURANCE_SUSPICIOUS); + } } #else - AddEmailWithSpecialData( INSUR_SUSPIC, INSUR_SUSPIC_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].iPayOutPrice, LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubMercID, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); + AddEmailWithSpecialData(INSUR_SUSPIC, INSUR_SUSPIC_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), payoutPrice, mercID, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE, XML_INSURANCE_SUSPICIOUS); #endif } else @@ -1375,14 +1378,17 @@ void StartInsuranceInvestigation( UINT16 ubPayoutID ) if( gubQuest[ QUEST_FIX_LAPTOP ] == QUESTDONE || gGameUBOptions.LaptopQuestEnabled == FALSE ) { if ( gGameUBOptions.LaptopLinkInsurance == TRUE ) - AddEmailWithSpecialData( 179, INSUR_SUSPIC_2_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].iPayOutPrice, LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubMercID, TYPE_EMAIL_INSURANCE_COMPANY_EMAIL_JA2_EDT, TYPE_E_INSURANCE_L5 ); + { + AddEmailWithSpecialData(179, INSUR_SUSPIC_2_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), payoutPrice, mercID, TYPE_EMAIL_INSURANCE_COMPANY_EMAIL_JA2_EDT, TYPE_E_INSURANCE_L5, XML_INSURANCE_INVESTIGATION); + } } #else - AddEmailWithSpecialData( INSUR_SUSPIC_2, INSUR_SUSPIC_2_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].iPayOutPrice, LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubMercID, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); + AddEmailWithSpecialData(INSUR_SUSPIC_2, INSUR_SUSPIC_2_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), payoutPrice, mercID, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE, XML_INSURANCE_INVESTIGATION); #endif } - if ( gMercProfiles[ LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubMercID ].ubSuspiciousDeath == VERY_SUSPICIOUS_DEATH ) + UINT8 ubDays; + if ( gMercProfiles[ mercID ].ubSuspiciousDeath == VERY_SUSPICIOUS_DEATH ) { // the fact that you tried to cheat them gets realized very quickly. :-) ubDays = 1; @@ -1403,42 +1409,47 @@ void StartInsuranceInvestigation( UINT16 ubPayoutID ) void EndInsuranceInvestigation( UINT16 ubPayoutID ) { + const auto mercID = LaptopSaveInfo.pLifeInsurancePayouts[ubPayoutID].ubMercID; + const auto payoutPrice = LaptopSaveInfo.pLifeInsurancePayouts[ubPayoutID].iPayOutPrice; + // send an email telling player the investigation is over - if ( gMercProfiles[ LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubMercID ].ubSuspiciousDeath == VERY_SUSPICIOUS_DEATH ) + if ( gMercProfiles[ mercID ].ubSuspiciousDeath == VERY_SUSPICIOUS_DEATH ) { // fraud, no payout! #ifdef JA2UB -// no UB - if( gubQuest[ QUEST_FIX_LAPTOP ] == QUESTDONE || gGameUBOptions.LaptopQuestEnabled == FALSE ) - { - if ( gGameUBOptions.LaptopLinkInsurance == TRUE ) - AddEmailWithSpecialData( INSUR_1HOUR_FRAUD, INSUR_1HOUR_FRAUD_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].iPayOutPrice, LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubMercID, TYPE_EMAIL_INSURANCE_COMPANY_EMAIL_JA2_EDT, TYPE_E_INSURANCE_L2 ); - } + if ( gubQuest[QUEST_FIX_LAPTOP] == QUESTDONE || gGameUBOptions.LaptopQuestEnabled == FALSE ) + { + if ( gGameUBOptions.LaptopLinkInsurance == TRUE ) + { + AddEmailWithSpecialData(INSUR_1HOUR_FRAUD, INSUR_1HOUR_FRAUD_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), payoutPrice, mercID, TYPE_EMAIL_INSURANCE_COMPANY_EMAIL_JA2_EDT, TYPE_E_INSURANCE_L2, XML_INSURANCE_REFUSED); + } + } #else - AddEmailWithSpecialData( INSUR_1HOUR_FRAUD, INSUR_1HOUR_FRAUD_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].iPayOutPrice, LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubMercID, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); + AddEmailWithSpecialData(INSUR_1HOUR_FRAUD, INSUR_1HOUR_FRAUD_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), payoutPrice, mercID, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE, XML_INSURANCE_REFUSED); #endif } // Flugente: also don't pay out if the death was suspicious. I mean, we get this if there were no enemies of the player straight up shot the guy... - else if ( gMercProfiles[LaptopSaveInfo.pLifeInsurancePayouts[ubPayoutID].ubMercID].ubSuspiciousDeath == SUSPICIOUS_DEATH ) + else if ( gMercProfiles[mercID].ubSuspiciousDeath == SUSPICIOUS_DEATH ) { #ifdef JA2UB // WANNE: I really don't know if we should call something here. At least it fixed the compilation error when compiling UB version. #else // fraud, no payout! - AddEmailWithSpecialData( INSUR_CHEAT_FRAUD, INSUR_CHEAT_FRAUD_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), LaptopSaveInfo.pLifeInsurancePayouts[ubPayoutID].iPayOutPrice, LaptopSaveInfo.pLifeInsurancePayouts[ubPayoutID].ubMercID, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); + AddEmailWithSpecialData(INSUR_CHEAT_FRAUD, INSUR_CHEAT_FRAUD_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), payoutPrice, mercID, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE, XML_INSURANCE_POLICYVIOLATION); #endif } else { #ifdef JA2UB -// No UB if( gubQuest[ QUEST_FIX_LAPTOP ] == QUESTDONE || gGameUBOptions.LaptopQuestEnabled == FALSE ) { if ( gGameUBOptions.LaptopLinkInsurance == TRUE ) - AddEmailWithSpecialData( 176, INSUR_INVEST_OVER_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].iPayOutPrice, LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubMercID, TYPE_EMAIL_INSURANCE_COMPANY_EMAIL_JA2_EDT, TYPE_E_INSURANCE_L6 ); + { + AddEmailWithSpecialData(176, INSUR_INVEST_OVER_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), payoutPrice, mercID, TYPE_EMAIL_INSURANCE_COMPANY_EMAIL_JA2_EDT, TYPE_E_INSURANCE_L6, XML_INSURANCE_COMPLETED); + } } #else - AddEmailWithSpecialData( INSUR_INVEST_OVER, INSUR_INVEST_OVER_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].iPayOutPrice, LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubMercID, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); + AddEmailWithSpecialData(INSUR_INVEST_OVER, INSUR_INVEST_OVER_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), payoutPrice, mercID, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE, XML_INSURANCE_COMPLETED); #endif // only now make a payment (immediately) @@ -1450,6 +1461,9 @@ void EndInsuranceInvestigation( UINT16 ubPayoutID ) //void InsuranceContractPayLifeInsuranceForDeadMerc( LIFE_INSURANCE_PAYOUT *pPayoutStruct ) void InsuranceContractPayLifeInsuranceForDeadMerc( UINT16 ubPayoutID ) { + const auto mercID = LaptopSaveInfo.pLifeInsurancePayouts[ubPayoutID].ubMercID; + const auto payoutPrice = LaptopSaveInfo.pLifeInsurancePayouts[ubPayoutID].iPayOutPrice; + //if the mercs id number is the same what is in the soldier array if( LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubSoldierID == LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubSoldierID->ubID ) { @@ -1459,24 +1473,25 @@ void InsuranceContractPayLifeInsuranceForDeadMerc( UINT16 ubPayoutID ) } //add transaction to players account - AddTransactionToPlayersBook( INSURANCE_PAYOUT, LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubMercID, GetWorldTotalMin(), LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].iPayOutPrice ); + AddTransactionToPlayersBook( INSURANCE_PAYOUT, mercID, GetWorldTotalMin(), payoutPrice ); //add to the history log the fact that the we paid the insurance claim - AddHistoryToPlayersLog( HISTORY_INSURANCE_CLAIM_PAYOUT, LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubMercID, GetWorldTotalMin(), -1, -1 ); + AddHistoryToPlayersLog( HISTORY_INSURANCE_CLAIM_PAYOUT, mercID, GetWorldTotalMin(), -1, -1 ); //if there WASNT an investigation - if( gMercProfiles[ LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubMercID ].ubSuspiciousDeath == 0 ) + if( gMercProfiles[ mercID ].ubSuspiciousDeath == 0 ) { //Add an email telling the user that he received an insurance payment #ifdef JA2UB -// no UB if( gubQuest[ QUEST_FIX_LAPTOP ] == QUESTDONE || gGameUBOptions.LaptopQuestEnabled == FALSE ) { if ( gGameUBOptions.LaptopLinkInsurance == TRUE ) - AddEmailWithSpecialData( 170, INSUR_PAYMENT_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].iPayOutPrice, LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubMercID, TYPE_EMAIL_INSURANCE_COMPANY_EMAIL_JA2_EDT, TYPE_E_INSURANCE_L3 ); + { + AddEmailWithSpecialData(170, INSUR_PAYMENT_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), payoutPrice, mercID, TYPE_EMAIL_INSURANCE_COMPANY_EMAIL_JA2_EDT, TYPE_E_INSURANCE_L3, XML_INSURANCE_APPROVED); + } } #else - AddEmailWithSpecialData( INSUR_PAYMENT, INSUR_PAYMENT_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].iPayOutPrice, LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubMercID, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); + AddEmailWithSpecialData(INSUR_PAYMENT, INSUR_PAYMENT_LENGTH, INSURANCE_COMPANY, GetWorldTotalMin(), payoutPrice, mercID, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE, XML_INSURANCE_APPROVED); #endif } diff --git a/Laptop/laptop.cpp b/Laptop/laptop.cpp index b6f556cf..3a83198b 100644 --- a/Laptop/laptop.cpp +++ b/Laptop/laptop.cpp @@ -3294,7 +3294,7 @@ void HaventMadeImpMercEmailCallBack() if( ( LaptopSaveInfo.fIMPCompletedFlag == FALSE ) && ( LaptopSaveInfo.fSentImpWarningAlready == FALSE ) ) { LaptopSaveInfo.fSentImpWarningAlready = TRUE; - AddEmail(IMP_EMAIL_AGAIN,IMP_EMAIL_AGAIN_LENGTH,1, GetWorldTotalMin( ), -1, -1, TYPE_EMAIL_EMAIL_EDT ); + AddEmail(IMP_EMAIL_AGAIN,IMP_EMAIL_AGAIN_LENGTH,1, GetWorldTotalMin( ), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_IMP_INTROAGAIN); } #endif } diff --git a/Laptop/mercs.cpp b/Laptop/mercs.cpp index e46370d7..be64cee5 100644 --- a/Laptop/mercs.cpp +++ b/Laptop/mercs.cpp @@ -1039,7 +1039,7 @@ void DailyUpdateOfMercSite( UINT16 usDate) LaptopSaveInfo.gubPlayersMercAccountStatus = MERC_ACCOUNT_INVALID; if( IsSpeckComAvailable() ) { - AddEmail( MERC_INVALID, MERC_INVALID_LENGTH, SPECK_FROM_MERC, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(MERC_INVALID, MERC_INVALID_LENGTH, SPECK_FROM_MERC, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_SPECK_NOTICE); } else { @@ -1055,7 +1055,7 @@ void DailyUpdateOfMercSite( UINT16 usDate) LaptopSaveInfo.gubPlayersMercAccountStatus = MERC_ACCOUNT_SUSPENDED; if( IsSpeckComAvailable() ) { - AddEmail( MERC_WARNING, MERC_WARNING_LENGTH, SPECK_FROM_MERC, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(MERC_WARNING, MERC_WARNING_LENGTH, SPECK_FROM_MERC, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_SPECK_DELINQUENT); // Have speck complain next time player come to site LaptopSaveInfo.uiSpeckQuoteFlags |= SPECK_QUOTE__SENT_EMAIL_ABOUT_LACK_OF_PAYMENT; @@ -1074,7 +1074,7 @@ void DailyUpdateOfMercSite( UINT16 usDate) LaptopSaveInfo.gubPlayersMercAccountStatus = MERC_ACCOUNT_VALID_FIRST_WARNING; if( IsSpeckComAvailable() ) { - AddEmail( MERC_FIRST_WARNING, MERC_FIRST_WARNING_LENGTH, SPECK_FROM_MERC, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(MERC_FIRST_WARNING, MERC_FIRST_WARNING_LENGTH, SPECK_FROM_MERC, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_SPECK_PLEASEPAY); // Have speck complain next time player come to site LaptopSaveInfo.uiSpeckQuoteFlags |= SPECK_QUOTE__SENT_EMAIL_ABOUT_LACK_OF_PAYMENT; @@ -2899,8 +2899,7 @@ void GetMercSiteBackOnline() if( IsSpeckComAvailable() ) { //Add an email telling the user the site is back up - AddEmail( MERC_NEW_SITE_ADDRESS, MERC_NEW_SITE_ADDRESS_LENGTH, SPECK_FROM_MERC, GetWorldTotalMin(), -1, -1 , TYPE_EMAIL_EMAIL_EDT); - + AddEmail(MERC_NEW_SITE_ADDRESS, MERC_NEW_SITE_ADDRESS_LENGTH, SPECK_FROM_MERC, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_SPECK_NEWSITE); //Set a flag indicating that the server just went up ( so speck can make a comment when the player next visits the site ) LaptopSaveInfo.fFirstVisitSinceServerWentDown = TRUE; } @@ -3213,7 +3212,7 @@ void NewMercsAvailableAtMercSiteCallBack() if (!sentNewMercsEmail) { sentNewMercsEmail = true; - AddEmail(NEW_MERCS_AT_MERC, NEW_MERCS_AT_MERC_LENGTH, SPECK_FROM_MERC, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(NEW_MERCS_AT_MERC, NEW_MERCS_AT_MERC_LENGTH, SPECK_FROM_MERC, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_SPECK_NEWPERSONNEL); } //new mercs are available diff --git a/Strategic/Game Event Hook.cpp b/Strategic/Game Event Hook.cpp index 2e7e3801..91a0eb62 100644 --- a/Strategic/Game Event Hook.cpp +++ b/Strategic/Game Event Hook.cpp @@ -210,7 +210,7 @@ BOOLEAN ExecuteStrategicEvent( STRATEGICEVENT *pEvent ) #ifdef JA2UB //No JA25 UB #else - AddEmail(MERC_INTRO, MERC_INTRO_LENGTH, SPECK_FROM_MERC, GetWorldTotalMin( ), -1, -1 ,TYPE_EMAIL_EMAIL_EDT ); + AddEmail(MERC_INTRO, MERC_INTRO_LENGTH, SPECK_FROM_MERC, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_SPECK_INTRO); #endif } break; @@ -487,7 +487,7 @@ BOOLEAN ExecuteStrategicEvent( STRATEGICEVENT *pEvent ) // No PCM in UB #else case EVENT_PMC_EMAIL: - AddEmail( PMC_INTRO, PMC_INTRO_LENGTH, PMC, GetWorldTotalMin( ), -1, -1, TYPE_EMAIL_EMAIL_EDT ); + AddEmail(PMC_INTRO, PMC_INTRO_LENGTH, PMC, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_KERBERUS_OFFER); break; #endif @@ -503,16 +503,14 @@ BOOLEAN ExecuteStrategicEvent( STRATEGICEVENT *pEvent ) gMercProfiles[MARIA].bMercStatus != MERC_IS_DEAD && gMercProfiles[ANGEL].bMercStatus != MERC_IS_DEAD ) { StartQuest( QUEST_KINGPIN_ANGEL_MARIA, gWorldSectorX, gWorldSectorY ); - - AddEmail( KINGPIN_BOUNTY_INITIAL, KINGPIN_BOUNTY_INITIAL_LENGTH, KING_PIN, GetWorldTotalMin( ), -1, -1, TYPE_EMAIL_EMAIL_EDT ); + AddEmail(KINGPIN_BOUNTY_INITIAL, KINGPIN_BOUNTY_INITIAL_LENGTH, KING_PIN, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_KINGPIN_JOBOPPORTUNITY); } break; case EVENT_KINGPIN_BOUNTY_END_KILLEDTHEM: if ( gMercProfiles[KINGPIN].bMercStatus != MERC_IS_DEAD && !CheckFact( FACT_KINGPIN_DEAD, NO_PROFILE ) && !CheckFact( FACT_KINGPIN_IS_ENEMY, NO_PROFILE ) ) { - AddEmail( KINGPIN_BOUNTY_KINGPIN_REWARD, KINGPIN_BOUNTY_KINGPIN_REWARD_LENGTH, KING_PIN, GetWorldTotalMin( ), -1, -1, TYPE_EMAIL_EMAIL_EDT ); - + AddEmail(KINGPIN_BOUNTY_KINGPIN_REWARD, KINGPIN_BOUNTY_KINGPIN_REWARD_LENGTH, KING_PIN, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_KINGPIN_WELLDONE); // also authorise payment from kingpin to the player AddTransactionToPlayersBook( ANONYMOUS_DEPOSIT, 0, GetWorldTotalMin( ), 10000 ); } @@ -528,14 +526,13 @@ BOOLEAN ExecuteStrategicEvent( STRATEGICEVENT *pEvent ) if ( gMercProfiles[MARIA].bMercStatus != MERC_IS_DEAD && gMercProfiles[ANGEL].bMercStatus != MERC_IS_DEAD && CheckFact( FACT_BOUNTYHUNTER_KILLED_1, NO_PROFILE ) && CheckFact( FACT_BOUNTYHUNTER_KILLED_2, NO_PROFILE ) ) { - AddEmail( KINGPIN_BOUNTY_ANGEL_THANKS, KINGPIN_BOUNTY_ANGEL_THANKS_LENGTH, ANGEL_DASILVA, GetWorldTotalMin( ), -1, -1, TYPE_EMAIL_EMAIL_EDT ); - - AddEmail( KINGPIN_BOUNTY_TARGET_GOTAWAY, KINGPIN_BOUNTY_TARGET_GOTAWAY_LENGTH, KING_PIN, GetWorldTotalMin( ), -1, -1, TYPE_EMAIL_EMAIL_EDT ); + AddEmail(KINGPIN_BOUNTY_ANGEL_THANKS, KINGPIN_BOUNTY_ANGEL_THANKS_LENGTH, ANGEL_DASILVA, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_DASILVA_THANKYOU); + AddEmail(KINGPIN_BOUNTY_TARGET_GOTAWAY, KINGPIN_BOUNTY_TARGET_GOTAWAY_LENGTH, KING_PIN, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_KINGPIN_FAILUREOBSTACLES); } // we can assume that the bounty hunters for to them first - Kingpin sends an email and states that someone else finished the job else if ( gMercProfiles[KINGPIN].bMercStatus != MERC_IS_DEAD && !CheckFact( FACT_KINGPIN_DEAD, NO_PROFILE ) && !CheckFact( FACT_KINGPIN_IS_ENEMY, NO_PROFILE ) ) { - AddEmail( KINGPIN_BOUNTY_BH_GOTTARGET, KINGPIN_BOUNTY_BH_GOTTARGET_LENGTH, KING_PIN, GetWorldTotalMin( ), -1, -1, TYPE_EMAIL_EMAIL_EDT ); + AddEmail(KINGPIN_BOUNTY_BH_GOTTARGET, KINGPIN_BOUNTY_BH_GOTTARGET_LENGTH, KING_PIN, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_KINGPIN_FAILURE); } // in any case, this quest is now over @@ -601,7 +598,7 @@ BOOLEAN ExecuteStrategicEvent( STRATEGICEVENT *pEvent ) #ifndef JA2UB case EVENT_MILITIAROSTER_EMAIL: - AddEmail( MILITIAROSTER_INTRO, MILITIAROSTER_INTRO_LENGTH, MAIL_ENRICO, GetWorldTotalMin( ), -1, -1, TYPE_EMAIL_EMAIL_EDT ); + AddEmail(MILITIAROSTER_INTRO, MILITIAROSTER_INTRO_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_ENRICO_MILITIA_WEBSITE); break; #endif @@ -628,7 +625,7 @@ BOOLEAN ExecuteStrategicEvent( STRATEGICEVENT *pEvent ) #ifndef JA2UB case EVENT_INTEL_ENRICO_EMAIL: - AddEmail( INTEL_ENRICO_INTRO, INTEL_ENRICO_INTRO_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT ); + AddEmail(INTEL_ENRICO_INTRO, INTEL_ENRICO_INTRO_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_ENRICO_INTEL); break; #endif diff --git a/Strategic/LuaInitNPCs.cpp b/Strategic/LuaInitNPCs.cpp index 62ea521f..1e99451e 100644 --- a/Strategic/LuaInitNPCs.cpp +++ b/Strategic/LuaInitNPCs.cpp @@ -409,7 +409,6 @@ static int l_AddEmailXML(lua_State* L); static int l_AddEmailXML2(lua_State* L); static int l_AddEmailLevelUpXML(lua_State* L); static int l_AddEmailFromXML(lua_State* L); -static int l_AddPreReadEmailFromXML(lua_State* L); static int l_EVENT_SoldierGotHit(lua_State* L); static int l_EVENT_InitNewSoldierAnim(lua_State* L); @@ -1032,7 +1031,6 @@ static void IniFunction(lua_State* L, BOOLEAN bQuests) lua_register(L, "AddEmailMercAvailableXML", l_AddEmailXML); lua_register(L, "AddEmailMercLevelUpXML", l_AddEmailLevelUpXML); lua_register(L, "AddEmailXML", l_AddEmailXML2); - lua_register(L, "AddPreReadEmailFromXML", l_AddPreReadEmailFromXML); lua_register(L, "AddEmailFromXML", l_AddEmailFromXML); //------Time------ @@ -7542,31 +7540,38 @@ static int l_AddEmailFromXML(lua_State* L) if (lua_gettop(L)) { UINT8 index = lua_tointeger(L, 1); + bool preReadMail = false; INT32 iCurrentIMPPosition = -1; INT16 iCurrentShipmentDestinationID = -1; - INT32 unused = 0; + INT32 specialData1 = -1; + UINT32 specialData2 = -1; + INT32 specialData3 = -1; + INT32 specialData4 = -1; + UINT32 specialData5 = -1; + UINT32 specialData6 = -1; - if ( lua_gettop(L) >= 3 ) + if ( lua_gettop(L) >= 2 ) { - iCurrentIMPPosition = lua_tointeger(L, 2); - iCurrentShipmentDestinationID = lua_tointeger(L, 3); + preReadMail = lua_toboolean(L, 2); + } + if ( lua_gettop(L) >= 7 ) + { + iCurrentIMPPosition = lua_tointeger(L, 3); + iCurrentShipmentDestinationID = lua_tointeger(L, 4); + specialData1 = lua_tointeger(L, 5); + specialData2 = lua_tointeger(L, 6); + specialData3 = lua_tointeger(L, 7); + } + + if ( specialData1 != -1 || specialData2 != -1 ) + { + AddEmailWithSpecialDataXML(index, GetWorldTotalMin(), iCurrentIMPPosition, iCurrentShipmentDestinationID, preReadMail, specialData1, specialData2, specialData3, specialData4, specialData5, specialData6); + } + else + { + AddEmailFromXML(index, GetWorldTotalMin(), iCurrentIMPPosition, iCurrentShipmentDestinationID, preReadMail, specialData1, specialData2, specialData3, specialData4, specialData5, specialData6); } - AddEmail(index, unused, unused, GetWorldTotalMin(), iCurrentIMPPosition, iCurrentShipmentDestinationID, TYPE_EMAIL_XML); } - - return 0; -} - -//AddPreReadEmail -static int l_AddPreReadEmailFromXML(lua_State* L) -{ - if (lua_gettop(L)) - { - UINT8 index = lua_tointeger(L, 1); - INT32 unused = 0; - AddPreReadEmail(index, unused, unused, GetWorldTotalMin(), TYPE_EMAIL_XML); - } - return 0; } diff --git a/Strategic/Map Screen Interface.cpp b/Strategic/Map Screen Interface.cpp index b7ef4678..4905ae11 100644 --- a/Strategic/Map Screen Interface.cpp +++ b/Strategic/Map Screen Interface.cpp @@ -6162,7 +6162,7 @@ BOOLEAN HandleTimeCompressWithTeamJackedInAndGearedToGo( void ) //no ja25 UB #else // Add e-mail message - AddEmail(ENRICO_CONGRATS,ENRICO_CONGRATS_LENGTH,MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(ENRICO_CONGRATS, ENRICO_CONGRATS_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_ENRICO_GOODLUCK); #endif return( TRUE ); diff --git a/Strategic/Merc Contract.cpp b/Strategic/Merc Contract.cpp index 3f0ac34b..e215205e 100644 --- a/Strategic/Merc Contract.cpp +++ b/Strategic/Merc Contract.cpp @@ -1102,10 +1102,12 @@ void CalculateMedicalDepositRefund( SOLDIERTYPE *pSoldier ) if( gubQuest[ QUEST_FIX_LAPTOP ] == QUESTDONE || gGameUBOptions.LaptopQuestEnabled == FALSE ) { if ( gGameUBOptions.fDeadMerc == TRUE ) - AddEmailWithSpecialData( 27, AIM_MEDICAL_DEPOSIT_REFUND_LENGTH, AIM_SITE, GetWorldTotalMin(), pSoldier->usMedicalDeposit, pSoldier->ubProfile, TYPE_EMAIL_DEAD_MERC_AIM_SITE_EMAIL_JA2_EDT, TYPE_E_AIM_L2 ); + { + AddEmailWithSpecialData(27, AIM_MEDICAL_DEPOSIT_REFUND_LENGTH, AIM_SITE, GetWorldTotalMin(), pSoldier->usMedicalDeposit, pSoldier->ubProfile, TYPE_EMAIL_DEAD_MERC_AIM_SITE_EMAIL_JA2_EDT, TYPE_E_AIM_L2, XML_AIM_REFUND); + } } #else - AddEmailWithSpecialData( AIM_MEDICAL_DEPOSIT_REFUND, AIM_MEDICAL_DEPOSIT_REFUND_LENGTH, AIM_SITE, GetWorldTotalMin(), pSoldier->usMedicalDeposit, pSoldier->ubProfile, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); + AddEmailWithSpecialData(AIM_MEDICAL_DEPOSIT_REFUND, AIM_MEDICAL_DEPOSIT_REFUND_LENGTH, AIM_SITE, GetWorldTotalMin(), pSoldier->usMedicalDeposit, pSoldier->ubProfile, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE, XML_AIM_REFUND); #endif } //else if the merc is a dead, refund NOTHING!! @@ -1116,14 +1118,15 @@ void CalculateMedicalDepositRefund( SOLDIERTYPE *pSoldier ) //add an email #ifdef JA2UB -//no UB if( gubQuest[ QUEST_FIX_LAPTOP ] == QUESTDONE || gGameUBOptions.LaptopQuestEnabled == FALSE ) { if ( gGameUBOptions.fDeadMerc == TRUE ) - AddEmailWithSpecialData( 217, AIM_MEDICAL_DEPOSIT_NO_REFUND_LENGTH, AIM_SITE, GetWorldTotalMin(), pSoldier->usMedicalDeposit, pSoldier->ubProfile, TYPE_EMAIL_DEAD_MERC_AIM_SITE_EMAIL_JA2_EDT, TYPE_E_AIM_L3 ); + { + AddEmailWithSpecialData(217, AIM_MEDICAL_DEPOSIT_NO_REFUND_LENGTH, AIM_SITE, GetWorldTotalMin(), pSoldier->usMedicalDeposit, pSoldier->ubProfile, TYPE_EMAIL_DEAD_MERC_AIM_SITE_EMAIL_JA2_EDT, TYPE_E_AIM_L3, XML_AIM_NOREFUND); + } } #else - AddEmailWithSpecialData( AIM_MEDICAL_DEPOSIT_NO_REFUND, AIM_MEDICAL_DEPOSIT_NO_REFUND_LENGTH, AIM_SITE, GetWorldTotalMin(), pSoldier->usMedicalDeposit, pSoldier->ubProfile, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); + AddEmailWithSpecialData(AIM_MEDICAL_DEPOSIT_NO_REFUND, AIM_MEDICAL_DEPOSIT_NO_REFUND_LENGTH, AIM_SITE, GetWorldTotalMin(), pSoldier->usMedicalDeposit, pSoldier->ubProfile, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE, XML_AIM_NOREFUND); #endif } //else the player is injured, refund a partial amount @@ -1141,10 +1144,12 @@ void CalculateMedicalDepositRefund( SOLDIERTYPE *pSoldier ) if( gubQuest[ QUEST_FIX_LAPTOP ] == QUESTDONE || gGameUBOptions.LaptopQuestEnabled == FALSE ) { if ( gGameUBOptions.fDeadMerc == TRUE ) - AddEmailWithSpecialData( 214, AIM_MEDICAL_DEPOSIT_PARTIAL_REFUND_LENGTH, AIM_SITE, GetWorldTotalMin(), iRefundAmount, pSoldier->ubProfile, TYPE_EMAIL_DEAD_MERC_AIM_SITE_EMAIL_JA2_EDT, TYPE_E_AIM_L4 ); + { + AddEmailWithSpecialData(214, AIM_MEDICAL_DEPOSIT_PARTIAL_REFUND_LENGTH, AIM_SITE, GetWorldTotalMin(), iRefundAmount, pSoldier->ubProfile, TYPE_EMAIL_DEAD_MERC_AIM_SITE_EMAIL_JA2_EDT, TYPE_E_AIM_L4, XML_AIM_PARTIALREFUND); + } } #else - AddEmailWithSpecialData( AIM_MEDICAL_DEPOSIT_PARTIAL_REFUND, AIM_MEDICAL_DEPOSIT_PARTIAL_REFUND_LENGTH, AIM_SITE, GetWorldTotalMin(), iRefundAmount, pSoldier->ubProfile, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); + AddEmailWithSpecialData(AIM_MEDICAL_DEPOSIT_PARTIAL_REFUND, AIM_MEDICAL_DEPOSIT_PARTIAL_REFUND_LENGTH, AIM_SITE, GetWorldTotalMin(), iRefundAmount, pSoldier->ubProfile, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE, XML_AIM_PARTIALREFUND); #endif } } diff --git a/Strategic/Player Command.cpp b/Strategic/Player Command.cpp index 009f766b..85d472de 100644 --- a/Strategic/Player Command.cpp +++ b/Strategic/Player Command.cpp @@ -249,7 +249,7 @@ BOOLEAN SetThisSectorAsPlayerControlled( INT16 sMapX, INT16 sMapY, INT8 bMapZ, B #ifdef JA2UB // no UB #else - AddEmail( BOBBYR_NOW_OPEN, BOBBYR_NOW_OPEN_LENGTH, BOBBY_R, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(BOBBYR_NOW_OPEN, BOBBYR_NOW_OPEN_LENGTH, BOBBY_R, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_BR_VISITEDSITE); #endif LaptopSaveInfo.ubHaveBeenToBobbyRaysAtLeastOnceWhileUnderConstruction = BOBBYR_ALREADY_SENT_EMAIL; } diff --git a/Strategic/Strategic Event Handler.cpp b/Strategic/Strategic Event Handler.cpp index 1e57e316..ae772e6b 100644 --- a/Strategic/Strategic Event Handler.cpp +++ b/Strategic/Strategic Event Handler.cpp @@ -689,7 +689,7 @@ void HandleNPCSystemEvent( UINT32 uiEvent ) #ifdef JA2UB // no UB #else - AddEmail( KING_PIN_LETTER, KING_PIN_LETTER_LENGTH, KING_PIN, GetWorldTotalMin(), -1, -1 , TYPE_EMAIL_EMAIL_EDT ); + AddEmail(KING_PIN_LETTER, KING_PIN_LETTER_LENGTH, KING_PIN, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_KINGPIN_STOLEMONEY); #endif StartQuest( QUEST_KINGPIN_MONEY, gMercProfiles[ KINGPIN ].sSectorX, gMercProfiles[ KINGPIN ].sSectorY ); // add event to send terrorists two days from now @@ -795,7 +795,7 @@ void HandleNPCSystemEvent( UINT32 uiEvent ) #ifdef JA2UB // no UB #else - AddEmail( ENRICO_MIGUEL, ENRICO_MIGUEL_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1 , TYPE_EMAIL_EMAIL_EDT); + AddEmail(ENRICO_MIGUEL, ENRICO_MIGUEL_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_ENRICO_GREATNEWS); #endif break; diff --git a/Strategic/Strategic Status.cpp b/Strategic/Strategic Status.cpp index b1c30b39..9ea6ff2a 100644 --- a/Strategic/Strategic Status.cpp +++ b/Strategic/Strategic Status.cpp @@ -253,7 +253,7 @@ void HandleEnricoEmail(void) // if creatures have attacked a mine (doesn't care if they're still there or not at the moment) if (HasAnyMineBeenAttackedByMonsters() && !(gStrategicStatus.usEnricoEmailFlags & ENRICO_EMAIL_SENT_CREATURES)) { - AddEmail(ENRICO_CREATURES, ENRICO_CREATURES_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(ENRICO_CREATURES, ENRICO_CREATURES_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_ENRICO_CREPITUS); gStrategicStatus.usEnricoEmailFlags |= ENRICO_EMAIL_SENT_CREATURES; return; // avoid any other E-mail at the same time } @@ -261,21 +261,21 @@ void HandleEnricoEmail(void) if ((ubCurrentProgress >= SOME_PROGRESS_THRESHOLD) && !(gStrategicStatus.usEnricoEmailFlags & ENRICO_EMAIL_SENT_SOME_PROGRESS)) { - AddEmail(ENRICO_PROG_20, ENRICO_PROG_20_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(ENRICO_PROG_20, ENRICO_PROG_20_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_ENRICO_PROGRESS); gStrategicStatus.usEnricoEmailFlags |= ENRICO_EMAIL_SENT_SOME_PROGRESS; return; // avoid any setback E-mail at the same time } if ((ubCurrentProgress >= ABOUT_HALFWAY_THRESHOLD) && !(gStrategicStatus.usEnricoEmailFlags & ENRICO_EMAIL_SENT_ABOUT_HALFWAY)) { - AddEmail(ENRICO_PROG_55, ENRICO_PROG_55_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(ENRICO_PROG_55, ENRICO_PROG_55_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_ENRICO_GOODWORK); gStrategicStatus.usEnricoEmailFlags |= ENRICO_EMAIL_SENT_ABOUT_HALFWAY; return; // avoid any setback E-mail at the same time } if ((ubCurrentProgress >= NEARLY_DONE_THRESHOLD) && !(gStrategicStatus.usEnricoEmailFlags & ENRICO_EMAIL_SENT_NEARLY_DONE)) { - AddEmail(ENRICO_PROG_80, ENRICO_PROG_80_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(ENRICO_PROG_80, ENRICO_PROG_80_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_ENRICO_FINALPUSH); gStrategicStatus.usEnricoEmailFlags |= ENRICO_EMAIL_SENT_NEARLY_DONE; return; // avoid any setback E-mail at the same time } @@ -285,7 +285,7 @@ void HandleEnricoEmail(void) (((ubHighestProgress - ubCurrentProgress) >= MINOR_SETBACK_THRESHOLD) && (gStrategicStatus.usEnricoEmailFlags & ENRICO_EMAIL_FLAG_SETBACK_OVER))) && !(gStrategicStatus.usEnricoEmailFlags & ENRICO_EMAIL_SENT_MAJOR_SETBACK)) { - AddEmail(ENRICO_SETBACK, ENRICO_SETBACK_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(ENRICO_SETBACK, ENRICO_SETBACK_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_ENRICO_BADNEWS); gStrategicStatus.usEnricoEmailFlags |= ENRICO_EMAIL_SENT_MAJOR_SETBACK; } else @@ -293,7 +293,7 @@ void HandleEnricoEmail(void) if (((ubHighestProgress - ubCurrentProgress) >= MINOR_SETBACK_THRESHOLD) && !(gStrategicStatus.usEnricoEmailFlags & (ENRICO_EMAIL_SENT_MINOR_SETBACK | ENRICO_EMAIL_SENT_MAJOR_SETBACK))) { - AddEmail(ENRICO_SETBACK_2, ENRICO_SETBACK_2_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(ENRICO_SETBACK_2, ENRICO_SETBACK_2_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_ENRICO_SETBACK); gStrategicStatus.usEnricoEmailFlags |= ENRICO_EMAIL_SENT_MINOR_SETBACK; } else @@ -356,15 +356,15 @@ void HandleEnricoEmail(void) switch( bComplaint ) { case 3: - AddEmail(LACK_PLAYER_PROGRESS_3, LACK_PLAYER_PROGRESS_3_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(LACK_PLAYER_PROGRESS_3, LACK_PLAYER_PROGRESS_3_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_ENRICO_DISAPPOINTED); gStrategicStatus.usEnricoEmailFlags |= ENRICO_EMAIL_SENT_LACK_PROGRESS3; break; case 2: - AddEmail(LACK_PLAYER_PROGRESS_2, LACK_PLAYER_PROGRESS_2_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(LACK_PLAYER_PROGRESS_2, LACK_PLAYER_PROGRESS_2_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_ENRICO_WORRIED); gStrategicStatus.usEnricoEmailFlags |= ENRICO_EMAIL_SENT_LACK_PROGRESS2; break; default: - AddEmail(LACK_PLAYER_PROGRESS_1, LACK_PLAYER_PROGRESS_1_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(LACK_PLAYER_PROGRESS_1, LACK_PLAYER_PROGRESS_1_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_ENRICO_CONCERNED); gStrategicStatus.usEnricoEmailFlags |= ENRICO_EMAIL_SENT_LACK_PROGRESS1; break; diff --git a/Tactical/Campaign.cpp b/Tactical/Campaign.cpp index 4c71810f..41922cbc 100644 --- a/Tactical/Campaign.cpp +++ b/Tactical/Campaign.cpp @@ -1352,13 +1352,13 @@ void HandleUnhiredMercDeaths( INT32 iProfileID ) { if ( gMercProfiles[iProfileID].Type == PROFILETYPE_AIM && gGameUBOptions.fDeadMerc == TRUE ) //new profiles by Jazz //send an email to the player telling the player that a merc died - AddEmailWithSpecialData(206, MERC_DIED_ON_OTHER_ASSIGNMENT_LENGTH, AIM_SITE, GetWorldTotalMin(), 0, iProfileID, TYPE_EMAIL_DEAD_MERC_AIM_SITE_EMAIL_JA2_EDT, TYPE_E_AIM_L1 ); + AddEmailWithSpecialData(206, MERC_DIED_ON_OTHER_ASSIGNMENT_LENGTH, AIM_SITE, GetWorldTotalMin(), 0, iProfileID, TYPE_EMAIL_DEAD_MERC_AIM_SITE_EMAIL_JA2_EDT, TYPE_E_AIM_L1, XML_AIM_NOTICE_OF_DEATH); } #else if ( gMercProfiles[iProfileID].Type == PROFILETYPE_AIM ) { //send an email to the player telling the player that a merc died - AddEmailWithSpecialData(MERC_DIED_ON_OTHER_ASSIGNMENT, MERC_DIED_ON_OTHER_ASSIGNMENT_LENGTH, AIM_SITE, GetWorldTotalMin(), 0, iProfileID, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE ); + AddEmailWithSpecialData(MERC_DIED_ON_OTHER_ASSIGNMENT, MERC_DIED_ON_OTHER_ASSIGNMENT_LENGTH, AIM_SITE, GetWorldTotalMin(), 0, iProfileID, TYPE_EMAIL_EMAIL_EDT, TYPE_E_NONE, XML_AIM_NOTICE_OF_DEATH); } #endif } diff --git a/Tactical/End Game.cpp b/Tactical/End Game.cpp index ad509af7..af6af61f 100644 --- a/Tactical/End Game.cpp +++ b/Tactical/End Game.cpp @@ -507,37 +507,37 @@ void HandleAddingTheEndGameEmails() // email # 12a - Miguel dead, Manuel never recruited if( !fMiguelAlive && !fManuelHired ) { - AddEmail( EMAIL_CONGRATS, EMAIL_CONGRATS_LENGTH, MAIL_ENRICO, GetWorldTotalMin(),-1 ,-1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(EMAIL_CONGRATS, EMAIL_CONGRATS_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_JA2UB_ENRICO_CONGRATS); } // email # 12b - Miguel alive, Manuel never recruited else if( fMiguelAlive && !fManuelHired ) { - AddEmail( EMAIL_CONGRATSICK, EMAIL_CONGRATSICK_LENGTH, MAIL_ENRICO, GetWorldTotalMin(),-1 ,-1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(EMAIL_CONGRATSICK, EMAIL_CONGRATSICK_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_JA2UB_ENRICO_CONGRATS_MIGUELSICK); } // email # 12c - Miguel alive, Manuel dead else if( fMiguelAlive && !fManuelAlive ) { - AddEmail( EMAIL_CONGRATMIGMANUELDEAD, EMAIL_CONGRATMIGMANUELDEAD_LENGTH, MAIL_ENRICO, GetWorldTotalMin() , -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(EMAIL_CONGRATMIGMANUELDEAD, EMAIL_CONGRATMIGMANUELDEAD_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_JA2UB_ENRICO_CONGRATS_MIGUELSICK_MANUELDEAD); } // email # 12d - Miguel alive, Manuel recruited and alive else if( fMiguelAlive && fManuelAlive && fManuelHired ) { - AddEmail( EMAIL_CONGRATMIGMANUELALIVE, EMAIL_CONGRATMIGMANUELALIVE_LENGTH, MAIL_ENRICO, GetWorldTotalMin() , -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(EMAIL_CONGRATMIGMANUELALIVE, EMAIL_CONGRATMIGMANUELALIVE_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_JA2UB_ENRICO_CONGRATS_MIGUELSICK_MANUELALIVE); } // email # 12e - Miguel dead, Manuel dead else if( !fMiguelAlive && !fManuelAlive ) { - AddEmail( EMAIL_CONGRATMANUELDEAD, EMAIL_CONGRATMANUELDEAD_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1 , -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(EMAIL_CONGRATMANUELDEAD, EMAIL_CONGRATMANUELDEAD_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_JA2UB_ENRICO_CONGRATS_MANUELDEAD); } // email # 12f - Miguel dead, Manuel recruited and alive else if( !fMiguelAlive && fManuelAlive && fManuelHired ) { - AddEmail( EMAIL_CONGRATMANUELALIVE, EMAIL_CONGRATMANUELALIVE_LENGTH, MAIL_ENRICO, GetWorldTotalMin() , -1, -1, TYPE_EMAIL_EMAIL_EDT); + AddEmail(EMAIL_CONGRATMANUELALIVE, EMAIL_CONGRATMANUELALIVE_LENGTH, MAIL_ENRICO, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_JA2UB_ENRICO_CONGRATS_MANUELALIVE); } else diff --git a/Tactical/Merc Hiring.cpp b/Tactical/Merc Hiring.cpp index e185bc8b..40b91bf2 100644 --- a/Tactical/Merc Hiring.cpp +++ b/Tactical/Merc Hiring.cpp @@ -458,13 +458,12 @@ void MercArrivesCallback( SoldierID ubSoldierID ) { pSoldier->uiTimeSoldierWillArrive = pSoldier->uiTimeSoldierWillArrive + 720 + Random ( 720 ); AddStrategicEvent( EVENT_DELAYED_HIRING_OF_MERC, pSoldier->uiTimeSoldierWillArrive, pSoldier->ubID ); - if(LaptopSaveInfo.ubJohnPossibleMissedFlights == 3 ) - AddEmail( JOHN_KULBA_MISSED_FLIGHT_1, JOHN_KULBA_MISSED_FLIGHT_1_LENGTH, JOHN_KULBA, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT ); - else if(LaptopSaveInfo.ubJohnPossibleMissedFlights == 2 ) - AddEmail( JOHN_KULBA_MISSED_FLIGHT_2, JOHN_KULBA_MISSED_FLIGHT_2_LENGTH, JOHN_KULBA, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT ); - else if(LaptopSaveInfo.ubJohnPossibleMissedFlights == 1 ) - AddEmail( JOHN_KULBA_MISSED_FLIGHT_3, JOHN_KULBA_MISSED_FLIGHT_3_LENGTH, JOHN_KULBA, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT ); - + if ( LaptopSaveInfo.ubJohnPossibleMissedFlights == 3 ) + AddEmail(JOHN_KULBA_MISSED_FLIGHT_1, JOHN_KULBA_MISSED_FLIGHT_1_LENGTH, JOHN_KULBA, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_JOHNKULBA_MISSEDTRANSFERFLIGHT); + else if ( LaptopSaveInfo.ubJohnPossibleMissedFlights == 2 ) + AddEmail(JOHN_KULBA_MISSED_FLIGHT_2, JOHN_KULBA_MISSED_FLIGHT_2_LENGTH, JOHN_KULBA, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_JOHNKULBA_CRASHLANDEDHELI); + else if ( LaptopSaveInfo.ubJohnPossibleMissedFlights == 1 ) + AddEmail(JOHN_KULBA_MISSED_FLIGHT_3, JOHN_KULBA_MISSED_FLIGHT_3_LENGTH, JOHN_KULBA, GetWorldTotalMin(), -1, -1, TYPE_EMAIL_EMAIL_EDT, XML_JOHNKULBA_AMBUSHEDBYCATS); LaptopSaveInfo.ubJohnPossibleMissedFlights--; return; }