diff --git a/Strategic/LuaInitNPCs.cpp b/Strategic/LuaInitNPCs.cpp index be83d757..519dc005 100644 --- a/Strategic/LuaInitNPCs.cpp +++ b/Strategic/LuaInitNPCs.cpp @@ -13603,58 +13603,43 @@ static int l_GetNumHostilesInSector( lua_State *L ) void LuaGetIntelAndQuestMapData( INT32 aLevel ) { - static LuaScopeState _LS(true); - static bool isInitialized = false; + const char* filename = "scripts\\strategicmap.lua"; - // Initialize only once during lifetime of program - if (!isInitialized) - { - isInitialized = true; - IniFunction(_LS.L(), TRUE); - IniGlobalGameSetting(_LS.L()); - const char* filename = "scripts\\strategicmap.lua"; - SGP_THROW_IFFALSE(_LS.L.EvalFile(filename), _BS("Cannot open file: ") << filename << _BS::cget); - } + LuaScopeState _LS( true ); + + IniFunction( _LS.L(), TRUE ); + IniGlobalGameSetting( _LS.L() ); + + SGP_THROW_IFFALSE( _LS.L.EvalFile( filename ), _BS( "Cannot open file: " ) << filename << _BS::cget ); - IniGlobalGameSetting(_LS.L()); LuaFunction( _LS.L, "GetIntelAndQuestMapData" ).Param( aLevel ).Call( 1 ); } void SetFactoryLeftoverProgress( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ, UINT16 usFacilityType, UINT16 usProductionNumber, INT32 sProgressLeft ) { - static LuaScopeState _LS(true); - static bool isInitialized = false; + const char* filename = "scripts\\strategicmap.lua"; - // Initialize only once during lifetime of program - if (!isInitialized) - { - isInitialized = true; - IniFunction(_LS.L(), TRUE); - IniGlobalGameSetting(_LS.L()); - const char* filename = "scripts\\strategicmap.lua"; - SGP_THROW_IFFALSE(_LS.L.EvalFile(filename), _BS("Cannot open file: ") << filename << _BS::cget); - } + LuaScopeState _LS( true ); + + IniFunction( _LS.L(), TRUE ); + IniGlobalGameSetting( _LS.L() ); + + SGP_THROW_IFFALSE( _LS.L.EvalFile( filename ), _BS( "Cannot open file: " ) << filename << _BS::cget ); - IniGlobalGameSetting(_LS.L()); LuaFunction( _LS.L, "SetFactoryLeftoverProgress" ).Param( sSectorX ).Param( sSectorY ).Param( bSectorZ ).Param( usFacilityType ).Param( usProductionNumber ).Param( sProgressLeft ).Call( 6 ); } INT32 GetFactoryLeftoverProgress( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ, UINT16 usFacilityType, UINT16 usProductionNumber ) { - static LuaScopeState _LS( true ); - static bool isInitialized = false; + const char* filename = "scripts\\strategicmap.lua"; - // Initialize only once during lifetime of program - if (!isInitialized) - { - isInitialized = true; - IniFunction( _LS.L(), TRUE ); - IniGlobalGameSetting(_LS.L()); - const char* filename = "scripts\\strategicmap.lua"; - SGP_THROW_IFFALSE( _LS.L.EvalFile( filename ), _BS( "Cannot open file: " ) << filename << _BS::cget ); - } + LuaScopeState _LS( true ); + + IniFunction( _LS.L(), TRUE ); + IniGlobalGameSetting( _LS.L() ); + + SGP_THROW_IFFALSE( _LS.L.EvalFile( filename ), _BS( "Cannot open file: " ) << filename << _BS::cget ); - IniGlobalGameSetting(_LS.L()); LuaFunction( _LS.L, "GetFactoryLeftoverProgress" ).Param( sSectorX ).Param( sSectorY ).Param( bSectorZ ).Param( usFacilityType ).Param( usProductionNumber ).Call( 5 ); if ( lua_gettop( _LS.L() ) >= 0 ) diff --git a/Tactical/Weapons.cpp b/Tactical/Weapons.cpp index cdc60e02..4aea8f81 100644 --- a/Tactical/Weapons.cpp +++ b/Tactical/Weapons.cpp @@ -5692,7 +5692,7 @@ void StructureHit( INT32 iBullet, UINT16 usWeaponIndex, INT16 bWeaponStatus, UIN if ( pBullet->fFragment == false) { INT16 sX, sY; - ConvertGridNoToCenterCellXY(pSoldier->sGridNo, &sX, &sY); + ConvertGridNoToCenterCellXY(sGridNo, &sX, &sY); if ( Item[usWeaponIndex].singleshotrocketlauncher ) { diff --git a/Tactical/XML_Background.cpp b/Tactical/XML_Background.cpp index 5caac1cd..26fa67b8 100644 --- a/Tactical/XML_Background.cpp +++ b/Tactical/XML_Background.cpp @@ -168,7 +168,7 @@ backgroundStartElementHandle(void *userData, const XML_Char *name, const XML_Cha else if (strcmp(name, "drugitems") == 0 && pData->curElement == ELEMENT) { pData->curElement = ELEMENT_VECTOR_OF_NUMBERS; - pData->curBackground.valueVectors[BackgroundVectorTypes::BG_DRUGUSE_TYPES].clear(); + pData->curBackground.valueVectors[BackgroundVectorTypes::BG_DRUGUSE_ITEMS].clear(); pData->maxReadDepth++; //we are not skipping this element } @@ -693,6 +693,14 @@ backgroundEndElementHandle(void *userData, const XML_Char *name) pData->curElement = ELEMENT; pData->curBackground.uiFlags |= (UINT16)atol(pData->szCharData) ? BACKGROUND_CIVGROUPLOYAL : 0; } + else if (strcmp(name, "drugtypes") == 0) + { + pData->curElement = ELEMENT; + } + else if (strcmp(name, "drugitems") == 0) + { + pData->curElement = ELEMENT; + } else if (strcmp(name, "drugtype") == 0) { pData->curElement = ELEMENT_VECTOR_OF_NUMBERS;