Over the Reich - Creation Thread

I don't have the events at the moment, just in case you thought I did. I expect to be able to do a good deal of work on this over the weekend. (Yes, I know I said something similar about last week, but I got hired at the last minute to work four days of advance polls for the Canadian Election, and that had some unexpected work to be done in the days before also.)

OK great, I will take the events in the meanwhile and make the minor changes I discussed above. I'm going to add in the other Experten and make them all unique units. There should be five in total. I don't envision us needing the unit space for other things and there are other places I could find a spare slot if absolutely necessary. The way I see it, the Germans need something "fun." The Allies get all the historic missions and have a use for most of the aircraft, and also get to go out and conquer. We're really expecting the German player to just sit there, watch their empire crumble, and take it. Giving them a few hero units to mess around with should make the game more interesting and help balance the considerable help that the Allies are now getting.

Just so you know, I'm traveling the early part of next week and won't be able to make any changes.
 
I think I pretty much took care of what I need for the events but please post if you take them in case I second guess myself and wish to make other changes later.

-I corrected the two minor issues above (deleted out the reference to USAAF airbase and fixed the Tours bug).
-I added the Experten as unique units:

*Egon Mayer: Germans get this unit after killing a number of enemy bombers beyond escort range;
*Heinz-Wolfgang Schnaufer - given on night map after Germans score 100 points (also, he is a radar user)
*Hermann Graf - given if Germans successfully defend Schweinfurt
*Josef Priller - given if Germans score 300 points
*Adolf Galland - given if Germans score 500 points and have jet aircraft

These units cannot be intercepted by anything that can't intercept jets and have other benefits.

I also added a -100 fuel cost if the Allies kill a German refinery. I'm going to have to test this out and see how it works in practice and if it is more trouble than it is worth given the random nature of improvements being sold, but I'm trying to curtail German operations if the Allies do a good job of targeting the fuel supply.
 

Attachments

Here is a list of all the polygons. I'm not totally certain if you need me to define a tile or not to use as a landmark for the sea but I'd probably just grab any one in the middle of these and call it a day for that. At any rate, it will be good to test just how precise one needs to be to make this viable and if I need more precision I'll simply have to go back and do this more carefully.

I do think if we were able to use cities as landmarks that would be good. So for example, "P-47s shot down Me109 in [Northern Germany] near [Hamburg]."

I'm not sure if that is possible.

Edit - just so you know, this error did pop up:

ERROR: failed to find valid map tile when populating "tileLookup" for 165,122,1 - this tile does not exist, 122 should be an odd number.


polygon = {{0,0},{98,0},{98,14},{76,20},{61,31},{36,48},{0,48},} --North Atlantic Approach
polygon = {{0,50},{46,50},{46,94},{0,94},} -- Mid Atlantic Approach
polygon = {{0,96},{46,96},{46,144},{0,144},} -- South Atlantic Approach
polygon = {{47,95},{47,145},{113,145},{123,135},{126,126},{123,109},{108,106},{97,101},{82,96},} --Bay of Biscay
polygon = {{47,91},{83,91},{83,47},{47,49},} --Celtic Sea
polygon = {{84,72},{84,90},{118,92},{121,95},{131,93},{137,93},{138,82},{147,83},{147,89},{162,90},{165,85},{193,81},{192,74},{186,76},{166,76},{157,75},{142,74},{118,74},} -- English Channel
polygon = {{84,68},{88,70},{94,70},{102,66},{110,66},{117,65},{127,65},{122,64},{117,63},{111,59},{103,57},{93,59},} --Bristol Channel
polygon = {{93,55},{103,55},{103,53},{105,51},{113,51},{123,47},{123,41},{126,40},{139,41},{145,35},{144,26},{129,23},{116,18},{116,26},{107,29},{102,36},{93,47},} --Irish Sea
polygon = {{194,70},{201,75},{211,69},{210,50},{204,30},{192,12},{172,22},{181,35},{186,44},{190,46},{191,51},{192,54},{195,55},{198,56},{202,58},{202,64},{198,66},} -- Dogger Bank
polygon = {{173,19},{170,16},{166,12},{168,6},{174,0},{185,1},{191,1},{192,14},{185,19},} -- Coast of Scotland
polygon = {{193,1},{196,14},{201,31},{211,39},{227,43},{243,23},{259,19},{263,1},{222,0},} -- North Sea
polygon = {{218,76},{218,58},{236,40},{253,29},{269,39},{272,56},{253,59},{241,59},{231,69},} -- Coast of Holland
polygon = {{274,56},{271,37},{269,19},{281,3},{298,26},{301,39},{301,53},{288,54},} -- Heligoland Bight
polygon = {{300,24},{299,7},{316,2},{332,0},{347,5},{350,16},{337,17},{333,11},{327,11},{322,14},{315,15},{308,16},} -- Skagerrak
polygon = {{332,20},{350,16},{362,28},{359,33},{360,50},{336,52},} -- Kattegat
polygon = {{362,42},{372,40},{376,40},{379,41},{382,40},{385,37},{390,34},{405,35},{406,52},{384,56},{368,54},{360,52},} -- Baltic Sea
polygon = {{43,39},{46,48},{66,48},{89,47},{103,33},{115,25},{113,17},{104,14},{98,12},{84,12},{74,20},{65,17},{56,16},{51,23},{48,34},} --Ireland
polygon = {{123,1},{125,23},{137,25},{150,26},{161,23},{171,19},{166,14},{169,7},{177,3},{175,1},{158,0},{135,1},{128,6},} --Scotland
polygon = {{143,27},{154,28},{168,22},{171,23},{179,35},{182,44},{169,47},{161,51},{151,51},{141,49},{138,44},{141,41},{144,38},} --Northern England
polygon = {{137,51},{138,62},{134,66},{125,67},{112,66},{105,67},{96,70},{90,72},{96,74},{107,73},{116,74},{122,72},{135,73},{147,73},{153,75},{158,74},{167,75},{176,76},{190,74},{201,63},{199,57},{191,55},{187,49},{179,47},{172,46},{168,52},{158,54},{147,53},} -- Southern England
polygon = {{136,44},{136,62},{132,64},{123,63},{116,60},{109,57},{104,54},{110,52},{116,52},{118,44},{122,40},} --Wales
polygon = {{0,134},{12,136},{24,138},{33,139},{38,140},{44,144},{49,145},{33,145},{11,145},{0,144},} -- Spain
polygon = {{86,92},{94,90},{103,91},{119,93},{131,95},{136,96},{137,109},{124,106},{115,107},{105,105},{95,101},{86,98},} -- Brittany
polygon = {{120,112},{130,110},{139,111},{147,113},{154,116},{155,145},{139,145},{114,144},{117,117},} --Western France
polygon = {{138,84},{140,108},{152,112},{169,111},{185,109},{184,88},{164,88},{145,85},} -- Normandy
polygon = {{160,116},{163,145},{225,145},{223,107},{197,109},{177,113},} -- Southern France

polygon = {{185,87},{191,89},{196,90},{201,97},{202,108},{194,110},{186,102},} -- Paris
polygon = {{191,87},{198,90},{202,96},{212,92},{215,81},{211,77},{198,76},{193,77},} -- Pas de Calais
polygon = {{217,77},{228,76},{240,74},{240,74},{259,85},{265,101},{257,119},{241,119},{229,123},{229,101},} --Belgium
polygon = {{230,72},{242,60},{254,56},{265,55},{261,71},{247,73},{237,73},} -- Holland
polygon = {{262,72},{274,66},{285,71},{286,92},{276,94},} -- The Ruhr
polygon = {{276,96},{269,117},{268,124},{280,124},{295,123},{310,118},{309,99},{296,90},} --Southwest Germany
polygon = {{311,97},{311,145},{339,145},{341,127},{350,118},{346,104},{328,104},} -- Bavaria
polygon = {{352,116},{370,118},{392,120},{407,117},{407,145},{373,145},{353,145},} -- Austria
polygon = {{369,95},{369,117},{388,118},{399,115},{406,108},{391,101},{377,97},} -- Czechoslovakia
polygon = {{377,61},{379,97},{396,102},{407,101},{406,78},{407,55},} -- Poland
polygon = {{375,57},{365,49},{356,52},{354,72},{365,83},{375,77},} -- Berlin
polygon = {{371,85},{371,91},{366,94},{352,96},{337,97},{338,84},{353,81},} -- Saxony
polygon = {{269,59},{270,68},{278,68},{289,73},{298,82},{305,85},{318,78},{335,79},{346,74},{348,56},{332,52},{318,50},{299,55},{281,57},} -- Northern Germany
polygon = {{304,48},{298,42},{301,23},{320,16},{332,12},{339,27},{335,41},{323,47},} -- Denmark
 
Last edited:
I gave them 0 movement points upon the activation of certain other units, in order to prevent an exploit. Without it, you could activate it via the city menu, use goto to a land tile, and unload a ground unit, avoiding landing restrictions and enemy fire, or something of that nature. I don't remember exactly. I'll revisit it, to make sure it is still necessary.

I'm noticing that I'm forgetting to manually activate them at the end of the turn a lot and suspect others will as well. This will have the effect of showing enemy forces to the other player if the mistake is made as even the control N doesn't seem to bypass this for some reason.

There is no more manual unload by ramming a shore with a boat so perhaps it isn't necessary? The shore batteries need to fire when the Task force presses k to call up ammo, or when the enemy forces on the task group themselves activate to storm the beaches. I may be missing something but I think we would be OK with removing the 0MP?

The issue is that the game just forgets that they exist so they never activate unless you click on them, or you reload the game (as the next player in our circumstances).
 
I'm going to attempt to increase the Allied score by 2.5 for attacks against Railyards and Military Ports at lunch today - I have the events but will get them to you before the evening.
 
I made the change and it works, but I only changed this section here. Is there any chance I have broken the ports elsewhere? I don't think I did - but I wanted to check with you and show you were I put this in case we later encounter a bug. The events are available.

Code:
if loser.owner == tribeAliases.Germans then
        if loser.type.domain == 1 and not (loser.type.flags & 2^12 == 2^12) then
        incrementCounter("AlliedScore", specialNumbers.alliedScoreIncrementDestroyPlane)
        --incrementCounter("GermanScore", -specialNumbers.alliedScoreIncrementDestroyPlane)
        elseif loser.type == unitAliases.Industry1 or loser.type == unitAliases.Industry2 or loser.type == unitAliases.Industry3 then
        incrementCounter("AlliedScore",specialNumbers.alliedScoreIncrementKillIndustry)
        --incrementCounter("GermanScore",-specialNumbers.alliedScoreIncrementKillIndustry)
        elseif loser.type == unitAliases.Railyard then
        incrementCounter("AlliedScore",specialNumbers.alliedScoreIncrementKillRailyard)
        elseif loser.type == unitAliases.MilitaryPort then
        incrementCounter("AlliedScore",specialNumbers.alliedScoreIncrementKillGermanPort)
        elseif loser.type == unitAliases.Refinery1 or loser.type == unitAliases.Refinery2 or loser.type == unitAliases.Refinery3 then
                incrementCounter("AlliedScore",specialNumbers.alliedScoreIncrementKillRefinery)
                tribeAliases.Germans.money = tribeAliases.Germans.money+specialNumbers.refineryKilledMoney
        --incrementCounter("GermanScore",-specialNumbers.alliedScoreIncrementKillRefinery)
        elseif loser.type == unitAliases.ACFactory1 or loser.type == unitAliases.ACFactory2 or loser.type == unitAliases.ACFactory3 then       
        incrementCounter("AlliedScore",specialNumbers.alliedScoreIncrementKillFactory)
        --incrementCounter("GermanScore",-specialNumbers.alliedScoreIncrementKillFactory)
        elseif loser.type == unitAliases.Urban1 or loser.type == unitAliases.Urban2 or loser.type == unitAliases.Urban3 then
            if isGermanCity(loser.homeCity) then
                incrementCounter("AlliedScore",specialNumbers.alliedScoreIncrementKillGermanUrban)
                --incrementCounter("GermanScore",-specialNumbers.alliedScoreIncrementKillGermanUrban)
            else
                incrementCounter("AlliedScore",specialNumbers.alliedScoreIncrementKillOccupiedUrban)
                --incrementCounter("GermanScore",-specialNumbers.alliedScoreIncrementKillOccupiedUrban)
            end
        end
    end
 

Attachments

I have absolutely no idea why the first of these works fine and the second doesn't. I am scratching my head here and could use a second set of eyes in the events file above.

Code:
if tribe == tribeAliases.Allies and counterValue("AlliedScore") >= specialNumbers.bomberReinforcement1Threshold then
        justOnce(tribeAliases.Allies.name..tostring(specialNumbers.bomberReinforcement1Threshold).."ThresholdJO",function()
        civlua.createUnit(unitAliases.Stirling, tribeAliases.Allies, {{154,48,2}}, {count=2, randomize=false, veteran=false})
        civlua.createUnit(unitAliases.Stirling, tribeAliases.Allies, {{175,55,2}}, {count=2, randomize=false, veteran=false})
        civlua.createUnit(unitAliases.Stirling, tribeAliases.Allies, {{148,72,2}}, {count=2, randomize=false, veteran=false})
        civlua.createUnit(unitAliases.Stirling, tribeAliases.Allies, {{117,71,2}}, {count=2, randomize=false, veteran=false})
        civlua.createUnit(unitAliases.Stirling, tribeAliases.Allies, {{179,53,2}}, {count=2, randomize=false, veteran=false})
        civlua.createUnit(unitAliases.Stirling, tribeAliases.Allies, {{176,60,2}}, {count=2, randomize=false, veteran=false})
        civlua.createUnit(unitAliases.Stirling, tribeAliases.Allies, {{181,57,2}}, {count=2, randomize=false, veteran=false})
        civ.ui.text(func.splitlines(textAliases.BomberCommandReinforcements))
        end)
    end

The one below does not work. It does not throw up an error, but does not work, create the units, or the text.

Code:
if tribe == tribeAliases.Allies and counterValue("AlliedScore") >= specialNumbers.USAAFReinforcement1Threshold then
        justOnce(tribeAliases.Allies.name..tostring(specialNumbers.USAAFReinforcement1Threshold).."ThresholdJO",function()
        civlua.createUnit(unitAliases.B17F, tribeAliases.Allies, {{175,55,0}}, {count=3, randomize=false, veteran=false})
        civlua.createUnit(unitAliases.B17F, tribeAliases.Allies, {{179,53,0}}, {count=3, randomize=false, veteran=false})
        civlua.createUnit(unitAliases.B17F, tribeAliases.Allies, {{176,60,0}}, {count=3, randomize=false, veteran=false})
        civlua.createUnit(unitAliases.B17F, tribeAliases.Allies, {{181,57,0}}, {count=3, randomize=false, veteran=false})
        civ.ui.text(func.splitlines(textAliases.B17Reinforcements))
        end)
    end

What am I missing here? None of the USAAF reinforcement ones are working, but the Bomber Command ones seem to be.
 
What am I missing here? None of the USAAF reinforcement ones are working, but the Bomber Command ones seem to be.

If you "translate" the key for the second justOnce function, you get

"Allies75ThresholdJO"

If you translate the Stalingrad message justOnce key, you get the same thing. This means that only one of these events will happen, that being the one that the program tries first.

Try changing the key for one or both. Maybe add some random characters to the end of the key name.

I'll look into the various issues you have raised when I start work on the events tomorrow.
 
Ah - that makes sense. Yes, it works when I make sure I don't have duplicative special number integers. Thanks!
 
I changed around the integers to get everything to work going forward. I'm going to make a few more changes since you won't need the events until tomorrow.
 
Last edited:
I made a few changes based on a playtest I've been conducting:

-Removed prototypes completely from scenario as they were allowing 1 tech per turn conversions once Engines II researched
-Significantly increased the cost of tier II - III factories and aircraft factories
-Increased cost of airfield from 3 to 5 fuel
-Decreased # of times Experten can fire from 6 (which was rediculous) to 4 (which is one better than interceptors)
-Made heavy flak either fire at night or high-alt, not low. 88s will now be for high targets only (no tanks so no need for them low).
-Task Force wasn't losing MP when it fired
-Changed Graf Zeppelin to being built in Kiel rather than Hamburg

FYI: Another weird thing going on is that the Task Groups aren't losing any MP when they fire. They should lose 6. If this is unavoidable I'll simply make them direct attack units. They should really only be targeting something in the coastal tile anyway. Let me know if this is what we need to do.
 

Attachments

I'm not showing any views on the last file I uploaded so I hope you grabbed that one.
 
Events are available. I think I've checked the "outstanding" issues with the Events.lua file, but let me know if I've missed something. I know I still have to replace the 'newspaper' with the new text version, but remind me if there is anything else I have to do other than link the combat report once I've completed it. That'll be my next task.

changelog

Ships aren't set to 0 movement when certain units are activated anymore.

Task forces no longer 'detect' raids, since they no longer have anti-aircraft capability anyway.

The Operation Hydra Failure text now tells the Germans where their new V2 launcher is.

V1 and V2 added to units that can only damage urban targets and special targets on the night map. Note that regular bombs also damage flak (which was probably deliberate).
 

Attachments

I think that is pretty much it. One suggestion for the newspaper: can we save the text that pops for radar for that turn that discusses what was found and where? Of all the messages, that's probably the one people are going to want to refer back to most.

I'm going to keep playtesting. I've played the first 20 to 25 turns 4 times this week before making changes that prompt a restart. I guess it is good in respect to how short the turns become, but these MP scenarios are a real bear to balance. I do think I'm pretty close to where I want it, and the scenario looks and feels like I envisioned it, so thank you for that.

Hopefully we can start a game next weekend if you're around.
 
It's been awhile since I've uploaded most of the files. Here is the scenario less sounds and improvements, which haven't changed since earlier releases. Anyone who is following along can feel free to take a look. There will be a few more tweaks over the next week or so, at which point I'll "officially" upload the files to SLeague and Civfanatics. The attaches is to an extent unpolished and is missing some updates, but I'm hoping to have something truly playtestable in a week and further hoping that two people who have never played before will give it a shot!!! So please, take a look, play a few turns vs. yourself to figure out the mechanics, and find someone to shoot down!

I will be out for the next few days and won't be able to playtest further. My latest is once again at turn 24. A few observations:

1. The addition of early reinforcements turns the first 5th of the game from pure build up to build up plus action, which is good.
2. The Germans seem to get 2x Experten pretty early, but they aren't very imbalancing as they only attack 4x per turn. It does give them something fun to do early.
3. Even with pretty heavy convoy losses, it's still possible for the Allies to have a majority of their cities completely developed between turns 18 - 24, so from that point on, they start building up units rapidly.
4. I'm pretty happy with most of the balance but think I will rework the Task Force munition a bit.
5. Veteran units are vital. Early US bombing raids are fairly ineffective but if they can get those damaged bombers home, they can start building a powerful strike force that is deadly.
6. The payload plus veteran unit mechanisms make this a much more fun campaign.
 

Attachments

I'm making progress, but the combat reporting is rather complicated code. I'm still not using the events yet, however.

As a reminder to myself, I'll have to track down the task force movement when firing bug.

You said something somewhere about heavy flak not targeting low altitude. Was that just reactions, or can the 'k' attack now only hit high altitude? If so, I'll have to change some code so that flak doesn't warn about low altitude raids.

Do you want a kill counter for the "Experten"? Might be fun for the German player.
 
Your other changes to the Task Force have fixed the movement bug so it looks to be all set.

What I think I meant for flak was to simply make it so k fires on altMap 1. I have it on a list to do and can make the change when I get back if you dont (it's actually changed in the events on the main game download I just posted but as it's so small I just intended to do it twice in case you had the events). We had k shoot low alt at first because the 88s were also used as AT guns, but theres little reason for that now that we've changed the ground game, and it's annoying to have to constantly press n to raise the ammo up to where you usually want it.

After reflection, I'm probably going to allow flak bursts to keep their native transport between maps 0 and 1 because the flak train needs to fire them low, so I dont think you need to make any changes to the warning. Also, I wouldn't want enemy bombers to just dive after releasing their payload to get away from the flak. I just think that 95% of the time a player will use it, they'll want to hit a higher target so as a quality of life mechanism, that's probably where it should start.

I'm not sure what you mean by the kill counter? If you're tracking how many kills they have, it would be pretty cool, but what would be most useful is a second increment function built that only takes into account aircraft shot down by aircraft munitions (no flak and should have flexibility for how many points awarded for different aircraft, as the Germans used an actual point scale in the West that we could mirror).

Right now, the Germans get Schnaufer at 100 or so "Points," but in the current version that means mostly U-Boat kills, which is odd. If I could have them show up only after aircraft kills, that would be better.
 
Last edited:
Back
Top Bottom