v0.14 vol 8 on github with requirements added for all new WWs. Please verify them carefully. They were added in a rush.
Sorry not yet had time to do it but on the other hand, I find a bug for Krak des Chevaliers placement. If I'm not mistaken, there is a prohibited water condition and yet :v0.14 vol 8 on github with requirements added for all new WWs. Please verify them carefully. They were added in a rush.
New World Wonders:
- Ancient Era: Plain of Jars;
- Classical Era: Sigiriya;
- Atomic Era: Habitat-67; Vostok Station; Milestii Mici Winery; Thule Air Base; Kumsusan Palace of the Sun;
- Information Era: Curiosity Rover; Global Positioning System;
Rework:
- due to VP 1.2.1 changes to St. Basil's Cathedral and Motherland Calls:
- Karlstejn is now Rila Monastery with exactly the same abilities, but artwork, quote, civilopedia change (before VP update it was St. Basil's Cathedral); Karlstejn art is unused);
- Kremlin fixed and updated;
- Motherland Calls fixed and updated; moved from Electronics to Nuclear Fission;
Features:
- fresh updated AssignStartingPlots.lua files for standard and 43-civ versions;
Balance:
- changed production percentage cots modifiers for WW from 50/35/25 to 40/35/30;
- World Wonders:
- El Ghriba (nerf):
- reduced bonus from Faith purchase to 15% Gold (was 25%);
- Golden Pavilion (boost):
- local Forest and Jungles lost their Food bonus (was +1);
- local Rivers got new +1 Food bonus;
- flat yields increased to +3 Faith (was +2);
- Marae Arahurahu (huge nerf):
- reduced GMusP to +1 (was +2);
- reduced Arahurahu bonus to 120% (was 150%);
- reduced bonus from theming to +8 Food (was +10);
- Meenakshi Temple (huge nerf):
- reduced bonus from Faith purchase to 20% Food (was 33%);
- reduced base yield to +1 Food (was +4);
- Orszaghaz (rework):
- removed flat yields;
- increased global bonus to +15% Golden Age Points (was +10%);
- added new flat bonus +1 League Vote;
- Hollywood (rework):
- removed +5% to GArtP, GWriP and GMusP;
- reduced flat yields to +1 Tourism (was +5);
- added new bonus +2 Tourism to all Guilds;
- added new bonus 75 Tourism on Policy unlock;
- Concorde (rework):
- removed +10% global Tourism bonus;
- increased base yield to +3 Tourism (was +2);
- increased bonus from WLTKD to +25% Tourism (was +15%);
- increased bonus from Oil and Aluminum to +3 Tourism (was +2);
- Sputnik (nerf): now flat +1 Science (was +5);
- Anitkabir (nerf): now flat +2 Culture (was +5) and +3 Tourism (was +4);
- Arecibo (nerf): now flat +4 Science (was +6);
- Palm Jumeirah (boost/nerf):
- deleted flat yields;
- now +7 Tourism from Atolls (was +6)
- now +4 Gold from Oils (was +6);
- Taipei 101 (huge nerf): deleted bonus CS points on construction;
Fixes:
- Kuk renamed to Kuk Swamp;
- moved MW-HELP setting to MainRulesForWonders.sql file like any other option;
- many promotions (White Sands, Sanbo's, Hidden Artifacts, Damascus Steel) are now not lost on upgrade, which should be set since the beginning;
- fixed Marae Arahurahu base yields: now +1 GAdmP (was +2);
- fixed Hollywood yields from Guilds: now +2 Culture (was +3) and +2 Gold was (was +3);
- fixed Cristo Redentor (now does not require Flat);
- fixed Gate of the Sun (now correctly places dummy buildings);
- fixed Fasil Ghebbi and Versailles requirements (missing IsNoCoast);
- added light version of EE requirements (missing);
- fixed some EE building cost;
- added many missing ideology requirement info in World Wonder tooltips;
- minor but numerous text fixes;
Coast should be bloked by lua code because IsNoWater is in fact IsNoFreshWater in the base code. I can see it added in the proper table. Can you verify other wonders from IsNoCoast table?Sorry not yet had time to do it but on the other hand, I find a bug for Krak des Chevaliers placement. If I'm not mistaken, there is a prohibited water condition and yet :
Spoiler Coast Krak des Chevaliers :
I use Hard restrictions :
View attachment 616310
and IsNoWater = 1 in SQL database.
tValidIsNoCoast = {
[GameInfo.Buildings.BUILDING_GOEBEKLI_TEPE.ID] = true,
[GameInfo.Buildings.BUILDING_MOHENJO_DARO.ID] = true,
[GameInfo.Buildings.BUILDING_STONEHENGE.ID] = true,
[GameInfo.Buildings.BUILDING_NAZCA.ID] = true,
[GameInfo.Buildings.BUILDING_THONG_HAI_HIN.ID] = true,
[GameInfo.Buildings.BUILDING_HANGING_GARDEN.ID] = true,
[GameInfo.Buildings.BUILDING_SIGIRIYA.ID] = true,
[GameInfo.Buildings.BUILDING_TERRACOTTA_ARMY.ID] = true,
[GameInfo.Buildings.BUILDING_ETCHMIADZIN.ID] = true,
[GameInfo.Buildings.BUILDING_GREAT_ZIMBABWE.ID] = true,
[GameInfo.Buildings.BUILDING_CHEVALIERS.ID] = true,
[GameInfo.Buildings.BUILDING_TAJ_MAHAL.ID] = true,
[GameInfo.Buildings.BUILDING_RED_FORT.ID] = true,
[GameInfo.Buildings.BUILDING_SIBERIAN_RAILWAY.ID] = true,
[GameInfo.Buildings.BUILDING_ORSZAGHAZ.ID] = true,
[GameInfo.Buildings.BUILDING_MOTHERLAND_STATUE.ID] = true,
[GameInfo.Buildings.BUILDING_BLETCHLEY_PARK.ID] = true,
[GameInfo.Buildings.BUILDING_ANITKABIR.ID] = true,
[GameInfo.Buildings.BUILDING_KREMLIN.ID] = true,
[GameInfo.Buildings.BUILDING_MILESTII_MICI.ID] = true,
[GameInfo.Buildings.BUILDING_EE_VERSAILLES.ID] = true,
[GameInfo.Buildings.BUILDING_EE_FASIL_GHEBBI.ID] = true
}
-- checks if city is NOT near COAST
function IsNoCoast(ePlayer, eCity, eBuilding)
if not tValidIsNoCoast[eBuilding] then return true end
if bReachedMaxEra then return false end
local pPlayer = Players[ePlayer]
if not pPlayer:IsAlive() then return false end
local pCity = pPlayer:GetCityByID(eCity)
if pCity:IsCoastal(10) then
return false
end
return true
end
GameEvents.CityCanConstruct.Add(IsNoCoast)
OK, I will watch that.I will have no time in next few days as I will be on delegation, so if you have time you couldput some "print" statements into the lua and verify why it is not working.
Ahh, I should predict that... The same problem was before with other requirements. Download the file again v0.14.1 with correction.In fact, I think there is an error in the code of the Hard Requirement part.
Line 837 : attempt to index field 'BUILDING_EE_VERSAILLES' (a nil value)
and with the hard requirements are not loaded.
log file in copy
Hanging Gardens now possible to build on coast
View attachment 616771
Recent VP changes to this file could be the issue. I will try to update file and post new version, but no guarantee with communitas.When Override AssignStartingplot is on and im using communitas, no ruins will spawn in the game.
Uhh, bigger changes? I will need to be careful during copy/paste thing and change some code probably, right? I change total 4 parts of code each update:Just a heads up, naturalWondersData is now impactData[ImpactLayers.LAYER_NATURAL_WONDER].
local worldsizes = {
[GameInfo.Worlds.WORLDSIZE_DUEL.ID] = 3, -- adan_eslavo
[GameInfo.Worlds.WORLDSIZE_TINY.ID] = 6,
[GameInfo.Worlds.WORLDSIZE_SMALL.ID] = 9,
[GameInfo.Worlds.WORLDSIZE_STANDARD.ID] = 12,
[GameInfo.Worlds.WORLDSIZE_LARGE.ID] = 15,
[GameInfo.Worlds.WORLDSIZE_HUGE.ID] = 18
}
-- Now place this wonder and record the placement.
plot:SetFeatureType(feature_type_to_place)
table.insert(self.placed_natural_wonder, wonder_number);
self:PlaceResourceImpact(x, y, 6, math.floor(iH / 8)) -- Natural Wonders layer -- adan_eslavo (was 5)
self:PlaceResourceImpact(x, y, 1, 1) -- Strategic layer
self:PlaceResourceImpact(x, y, 2, 1) -- Luxury layer
self:PlaceResourceImpact(x, y, 3, 1) -- Bonus layer
self:PlaceResourceImpact(x, y, 5, 3) -- City State layer
self:PlaceResourceImpact(x, y, 7, 1) -- Marble layer
local plotIndex = y * iW + x + 1;
self.playerCollisionData[plotIndex] = true -- Record exact plot of wonder in the collision list.
-- MOD.Barathor: Fixed: Added a check for the Great Barrier Reef being placed. If so, it appropriately applies impact values to its second tile to avoid buggy collisions with water resources.
-- MOD.Barathor: Start
-- MOD.adan_eslavo: adaptation to 3-tile GBR (now tiles around center blocked);
if (self.wonder_list[wonder_number] == "FEATURE_REEF") then
--print("Great Barrier Reef placed... applying impact values to its southeast tile as well.")
for i = 0, DirectionTypes.NUM_DIRECTION_TYPES - 1 do
local pBarrierPlot = Map.PlotDirection(x, y, i)
if pBarrierPlot:GetFeatureType() == GameInfoTypes.FEATURE_REEF then
local iBarrierX = pBarrierPlot:GetX()
local iBarrierY = pBarrierPlot:GetY()
self:PlaceResourceImpact(iBarrierX, iBarrierY, 1, 1) -- Strategic layer
self:PlaceResourceImpact(iBarrierX, iBarrierY, 2, 1) -- Luxury layer
self:PlaceResourceImpact(iBarrierX, iBarrierY, 3, 1) -- Bonus layer
local iBarrierPlotIndex = iBarrierY * iW + iBarrierX + 1
self.playerCollisionData[iBarrierPlotIndex] = true -- Record exact plot of wonder in the collision list.
end
end
elseif (self.wonder_list[wonder_number] == "FEATURE_SALAR_A") then
for i = 0, DirectionTypes.NUM_DIRECTION_TYPES - 1 do
local pSalarPlot = Map.PlotDirection(x, y, i)
if pSalarPlot:GetFeatureType() == GameInfoTypes.FEATURE_SALAR_B then
local iSalarX = pSalarPlot:GetX()
local iSalarY = pSalarPlot:GetY()
self:PlaceResourceImpact(iSalarX, iSalarY, 1, 1) -- Strategic layer
self:PlaceResourceImpact(iSalarX, iSalarY, 2, 1) -- Luxury layer
self:PlaceResourceImpact(iSalarX, iSalarY, 3, 1) -- Bonus layer
local iSalarPlotIndex = iSalarY * iW + iSalarX + 1
self.playerCollisionData[iSalarPlotIndex] = true -- Record exact plot of wonder in the collision list.
break
end
end
elseif (self.wonder_list[wonder_number] == "FEATURE_BERMUDA_A") then
local pBermudaPlotSE = Map.PlotDirection(x, y, DirectionTypes.DIRECTION_SOUTHEAST)
local pBermudaPlotSW = Map.PlotDirection(x, y, DirectionTypes.DIRECTION_SOUTHWEST)
local iBermudaX = pBermudaPlotSE:GetX()
local iBermudaY = pBermudaPlotSE:GetY()
self:PlaceResourceImpact(iBermudaX, iBermudaY, 1, 1) -- Strategic layer
self:PlaceResourceImpact(iBermudaX, iBermudaY, 2, 1) -- Luxury layer
self:PlaceResourceImpact(iBermudaX, iBermudaY, 3, 1) -- Bonus layer
local iBermudaPlotIndex = iBermudaY * iW + iBermudaX + 1
self.playerCollisionData[iBermudaPlotIndex] = true -- Record exact plot of wonder in the collision list.
local iBermudaX = pBermudaPlotSW:GetX()
local iBermudaY = pBermudaPlotSW:GetY()
self:PlaceResourceImpact(iBermudaX, iBermudaY, 1, 1) -- Strategic layer
self:PlaceResourceImpact(iBermudaX, iBermudaY, 2, 1) -- Luxury layer
self:PlaceResourceImpact(iBermudaX, iBermudaY, 3, 1) -- Bonus layer
local iBermudaPlotIndex = iBermudaY * iW + iBermudaX + 1
self.playerCollisionData[iBermudaPlotIndex] = true -- Record exact plot of wonder in the collision list.
elseif (self.wonder_list[wonder_number] == "FEATURE_CAUSEWAY_A") then
for i = 0, DirectionTypes.NUM_DIRECTION_TYPES - 1 do
local pCausewayPlot = Map.PlotDirection(x, y, i)
if pCausewayPlot:GetFeatureType() == GameInfoTypes.FEATURE_CAUSEWAY_B then
local iCausewayX = pCausewayPlot:GetX()
local iCausewayY = pCausewayPlot:GetY()
self:PlaceResourceImpact(iCausewayX, iCausewayY, 1, 1) -- Strategic layer
self:PlaceResourceImpact(iCausewayX, iCausewayY, 2, 1) -- Luxury layer
self:PlaceResourceImpact(iCausewayX, iCausewayY, 3, 1) -- Bonus layer
local iCausewayPlotIndex = iCausewayY * iW + iCausewayX + 1
self.playerCollisionData[iCausewayPlotIndex] = true -- Record exact plot of wonder in the collision list.
break
end
end
end
-- MOD.Barathor: End
if self:Plot_GetFertilityInRange(plot, 3) < 15 then -- adan_eslavo (was 28)
return false
end
for row in GameInfo.Features() do
if (row.NaturalWonder == true or row.PseudoNaturalWonder == 1) then -- adan_eslavo
self.wonder_list[next_wonder_number] = row.Type;
next_wonder_number = next_wonder_number + 1;
end
end
-- Enum values for impact layers
ImpactLayers = {
LAYER_NONE = -1,
LAYER_IRON = 1,
LAYER_LUXURY = 2,
LAYER_BONUS = 3,
LAYER_FISH = 4,
LAYER_CITY_STATE = 5,
LAYER_NATURAL_WONDER = 6,
LAYER_MARBLE = 7,
LAYER_HORSE = 8,
LAYER_COAL = 9,
LAYER_OIL = 10,
LAYER_ALUMINUM = 11,
LAYER_URANIUM = 12,
};
I rechecked the code. It finds:Qalhat gives bonus only for TR originating from city where it's built. Is it possible to give bonus to TR in general?
for _, player in ipairs(Players) do
if player:IsAlive() then
for _, tradeRoute in ipairs(player:GetTradeRoutes()) do
if ((tradeRoute.FromID == ePlayer and not Players[tradeRoute.ToID]:IsMinorCiv())
or (tradeRoute.ToID == ePlayer and not Players[tradeRoute.FromID]:IsMinorCiv()))
and tradeRoute.FromID ~= tradeRoute.ToID
and tradeRoute.Domain == GameInfoTypes.DOMAIN_SEA then
iSeaTradeRoutesWithMajors = iSeaTradeRoutesWithMajors + 1
end
end
end
end
Krakatoa has code that changes sourrounding tiles to coastal tiles and modify its yields. It should be separated from land with at least 1 tile of water.Krakatoa always spawns in ocean (close to island) but Bermudas always spawns close (next) to continent even on next tile to land. It wood be nice for Bermudas to spawn in ocean, may be no closer to land than 5-7 tiles.