Jump to content

"All Countries Contribute" modlet


Amineri

Recommended Posts

This modlet adjusts how XCOM receives its funding.

 

By default, XCOM receives the sum of:

1) BASE_FUNDING

2) FundingAmounts[##] for each country with a satellite

These amounts are defined in the DGC.ini

 

This mod changes this, by:

1) Removing the constant BASE_FUNDING amount

2) Adding BASE_FUNDING/100.0 * FundingAmounts[##] for each country WITHOUT a satellite

 

An example:

Set BASE_FUNDING to 10

Canada has the default FundingAmount = 100 (in the vanilla game)

The player will receive 100 cash per month if Canada has a satellite

The player will receive 10% of 100 = 10 cash per month if Canada does not have a satellite.

 

What effect does this have?

It means that ANY country that leaves the XCOM Funding Council, whether it has a satellite or not, will reduce the monthly income. Every piece of monthly income the player gets is tied to some country. There is probably not a huge game effect, but the psychological impact may be greater.

 

--------------------------------------

 

Bugs:

There is one small UI issue with the change. Apparently the ActionScript that draws the Country boxes in the situation room is coded to always display the satellite icon if there is any funding text to be displayed. I have been unable to get the satellite icon to not display while still having the funding text display.

 

This does not affect the ability to launch a satellite, panic, or anything else. The center map display in the Situation Room shows the correct number of satellites. The pop-up HUD (with Continent info) also displays the correct info. It is only a display issue relating to that icon.

 

If anyone were inclined to dig into the AS script and make a toggle to enable the satellite icon to be turned on/off independently of the funding text string being present/not-present, that would be excellent!

 

----------------------------------------------------------------------

 

Here are some (small) screenshots of what it looks like.

 

Trying to launch a satellite in a country that already has one:

http://wiki.tesnexus.com/images/2/23/Sit_Room_Launch_Sat1_Mod.png

 

 

Trying to launch a satellite in a country without a current satellite:

http://wiki.tesnexus.com/images/a/af/Sit_Room_Launch_Sat2_Mod.png

 

 

And here is the XCOM Finances screen. The total amount is correctly shown:

http://wiki.tesnexus.com/images/f/ff/Sit_Room_Finances_Mod.png

 

------------------------------------------------------------------------------------------------

 

Hex Changes:

The total amount of hex code changed is small -- however, the changes are sprinkled about a bit. All changes are in XcomStrategyGame.upk.

 

 

In XGWorld.InitFunding, change:
if(kCountry.GetCurrentFunding() > 0)
to:
if(kCountry.GetCurrentFunding() >= 0)
original hex:
07 6F 01 97 19 00 F8 46 00 00 0A 00 54 24 00 00 00 1B E0 0E 00 00 00 00 00 00 16 25 16
new hex:
07 6F 01 99 19 00 F8 46 00 00 0A 00 54 24 00 00 00 1B E0 0E 00 00 00 00 00 00 16 25 16

 

In XGWorld.UpdateFunding, change:
if(kCountry.IsCouncilMember() && (!kCountry.LeftXCom()) && (kCountry.GetCurrentFunding() > 0))
{
kCountry.BeginPaying();
}
to:
if(kCountry.IsCouncilMember() && (!kCountry.LeftXCom()) && (kCountry.GetCurrentFunding() >= 0))
{
kCountry.BeginPaying();
}
original hex:
97 19 00 FF 46 00 00 0A 00 54 24 00 00 00 1B E0 0E 00 00 00 00 00 00 16 25 16
new hex:
99 19 00 FF 46 00 00 0A 00 54 24 00 00 00 1B E0 0E 00 00 00 00 00 00 16 25 16

 

In XGWorld.GetIncome, disable call to:
iFunding = class'XGTacticalGameCore'.default.BASE_FUNDING[Game().GetDifficulty()];
original hex:
0F 00 8A 47 00 00 10 19 1B 4C 0E 00 00 00 00 00 00 16
new hex:
0B 00 8A 47 00 00 10 19 1B 4C 0E 00 00 00 00 00 00 16

 

 

In XGCountry.SetSatelliteCoverage, change:
StopPaying()
to:
BeginPaying()
original hex:
16 06 F5 00 1B 20 27 00 00
new hex:
16 06 F5 00 1B 64 03 00 00
Finally, the big change (reworking CalcFunding):
original hex:
50 24 00 00 AB 1F 00 00 00 00 00 00 4A 24 00 00 00 00 00 00 00 00 00 00 50 24 00 00 00 00 00 00 BE 00 00 00 EE 14 00 00 E2 01 00 00 5A 01 00 00 0B 07 10 00 1B B6 16 00 00 00 00 00 00 16 04 25 0F 00 4E 24 00 00 35 5C 1E 00 00 64 1E 00 00 00 00 01 34 24 00 00 0F 00 4D 24 00 00 00 4E 24 00 00 0F 00 4C 24 00 00 FB 92 01 2E 24 00 00 00 50 24 00 00 16 25 2C 04 16 07 0F 01 1B A7 14 00 00 00 00 00 00 24 0C 16 0F 00 4B 24 00 00 AB 38 3F 19 1B E1 00 00 00 00 00 00 00 16 0A 00 4B 43 00 00 00 1B 9D 0F 00 00 00 00 00 00 16 1E CD CC CC 3D 16 0F 00 4B 24 00 00 F6 00 4B 24 00 00 1E 00 00 00 00 1E 66 66 66 3F 16 0F 00 4E 24 00 00 38 44 AF 38 3F 00 4E 24 00 00 AB 38 3F 00 4E 24 00 00 00 4B 24 00 00 16 16 0F 00 4D 24 00 00 00 4E 24 00 00 07 CD 01 1B A7 14 00 00 00 00 00 00 24 08 16 07 4E 01 9A 00 4C 24 00 00 25 16 0F 00 4D 24 00 00 38 44 AB 38 3F 00 4E 24 00 00 1E 00 00 A0 3F 16 06 CD 01 07 73 01 9A 00 4C 24 00 00 26 16 0F 00 4D 24 00 00 00 4E 24 00 00 06 CD 01 0F 00 4B 24 00 00 AB 38 3F 93 00 4C 24 00 00 26 16 1E 00 00 80 3E 16 0F 00 4D 24 00 00 FB 00 4D 24 00 00 25 38 44 AF 38 3F 00 4E 24 00 00 AB 38 3F 00 4E 24 00 00 00 4B 24 00 00 16 16 16 04 00 4D 24 00 00 04 3A 4F 24 00 00 53
new hex:
50 24 00 00 AB 1F 00 00 00 00 00 00 4A 24 00 00 00 00 00 00 00 00 00 00 50 24 00 00 00 00 00 00 BE 00 00 00 EE 14 00 00 D6 01 00 00 5A 01 00 00 0B 07 10 00 1B B6 16 00 00 00 00 00 00 16 04 25 0F 00 4E 24 00 00 35 5C 1E 00 00 64 1E 00 00 00 00 01 34 24 00 00 0F 00 4D 24 00 00 00 4E 24 00 00 0F 00 4C 24 00 00 FB 92 01 2E 24 00 00 00 50 24 00 00 16 25 2C 04 16 07 0F 01 1B A7 14 00 00 00 00 00 00 24 0C 16 0F 00 4B 24 00 00 AB 38 3F 19 1B E1 00 00 00 00 00 00 00 16 0A 00 4B 43 00 00 00 1B 9D 0F 00 00 00 00 00 00 16 1E CD CC CC 3D 16 0F 00 4B 24 00 00 F6 00 4B 24 00 00 1E 00 00 00 00 1E 66 66 66 3F 16 0F 00 4E 24 00 00 38 44 AF 38 3F 00 4E 24 00 00 AB 38 3F 00 4E 24 00 00 00 4B 24 00 00 16 16 0F 00 4D 24 00 00 00 4E 24 00 00 07 4D 01 1B A7 14 00 00 00 00 00 00 24 08 16 0F 00 4D 24 00 00 38 44 AB AB 1E 00 00 80 3E 38 3F 93 2C 05 00 4C 24 00 00 16 16 38 3F 00 4E 24 00 00 16 07 BC 01 81 2D 01 32 24 00 00 16 0F 00 4D 24 00 00 38 44 AB 38 3F 00 4D 24 00 00 AC 38 3F 10 19 1B 4C 0E 00 00 00 00 00 00 16 0A 00 43 41 00 00 00 1B F6 0E 00 00 00 00 00 00 16 12 20 6D FE FF FF 09 00 DF FF FF FF 00 02 DF FF FF FF 38 3F 2C 64 16 16 04 00 4D 24 00 00 0B 0B 0B 0B 0B 04 3A 4F 24 00 00 53
The new decompiled code is:
function int CalcFunding(optional int iAdditionalPanic)
{
local int iMax, iFunding, iPanic;
local float fPenaltyPct;
// End:0x10
if(LeftXCom())
{
return 0;
}
iMax = m_kTCountry.iFunding;
iFunding = iMax;
iPanic = Clamp(m_iPanic + iAdditionalPanic, 0, 4);
// End:0x10F
if(IsOptionEnabled(12))
{
fPenaltyPct = float(AI().GetMonth()) * 0.10;
fPenaltyPct = FClamp(fPenaltyPct, 0.0, 0.90);
iMax = int(float(iMax) - (float(iMax) * fPenaltyPct));
iFunding = iMax;
}
// End:0x14D
if(IsOptionEnabled(8))
{
iFunding = int((0.250 * float(5 - iPanic)) * float(iMax));
}
// End:0x1BC
if(!m_bSatellite)
{
iFunding = int(float(iFunding) * (float(class'XGTacticalGameCore'.default.BASE_FUNDING[Game().GetDifficulty()]) / float(100)));
}
return iFunding;
//return ReturnValue;
}

 

Enjoy!

Link to comment
Share on other sites

I figured out a way around the display glitch. Thank you very much to johnnylump for the extracted SWF file and sage advice.

 

Here is a screenshot of the revised Situation Room Satellite Launch UI:

http://wiki.tesnexus.com/images/d/dc/Sit_Room_Launch_Sat_Mod.png

 

 

Since the icon display conditional was being made solely using the string info in the actionscript, I modified it so that a leading "+" will cause the satellite icon to not display. Omitting the "+" (meaning a numeral is the leading character) will cause the satellite icon to display. Passing an empty string will also cause the icon to not display.

 

This required two additional changes:

 

1) Change to XcomStrategyGame.upk >> XGSituationRoomUI.BuildSitCountry

 

 

 

original hex:
07 68 02 84 97 19 00 7E 09 00 00 0A 00 54 24 00 00 00 1B E0 0E 00 00 00 00 00 00 16 25 16 18 20 00 19 00 7E 09 00 00 0A 00 76 24 00 00 00 1B 24 11 00 00 00 00 00 00 16 16 0F 35 D8 F9 FF FF 66 FA FF FF 00 00 35 AD 09 00 00 B2 09 00 00 00 01 00 7C 09 00 00 70 1F 2B 00 1B 34 06 00 00 00 00 00 00 19 00 7E 09 00 00 0A 00 54 24 00 00 00 1B E0 0E 00 00 00 00 00 00 16 16 16 0F 35 54 FB FF FF 66 FA FF FF 00 00 35 AD 09 00 00 B2 09 00 00 00 01 00 7C 09 00 00 2C 06
new hex :
07 E6 01 81 19 00 7E 09 00 00 0A 00 76 24 00 00 00 1B 24 11 00 00 00 00 00 00 16 16 0F 35 D8 F9 FF FF 66 FA FF FF 00 00 35 AD 09 00 00 B2 09 00 00 00 01 00 7C 09 00 00 1F 2B 00 61 42 35 D8 F9 FF FF 66 FA FF FF 00 00 35 AD 09 00 00 B2 09 00 00 00 01 00 7C 09 00 00 1B 34 06 00 00 00 00 00 00 19 00 7E 09 00 00 0A 00 54 24 00 00 00 1B E0 0E 00 00 00 00 00 00 16 16 16 00 7E 09 00 00 00 7E 09 00 00 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B

decompiled code is:

if(!kCountry.HasSatelliteCoverage())
{
kUI.txtFunding.StrValue = "+";
}
kUI.txtFunding.StrValue $= ConvertCashToString(kCountry.GetCurrentFunding());

2) The second change is to Command1.upk -- yes, a brand new upk file! This houses the ActionScript being modified.

before:
96 04 00 04 03 08 29 49 12 4C 12 9D 02 00 0A 00 17 96 04 00 04 03 08 67 49 12 12 9D 02 00 25 00
after:
96 04 00 04 03 08 29 49 12 4C 12 9D 02 00 0A 00 17 96 04 00 04 03 08 67 48 12 12 9D 02 00 25 00

 

For those interested, it changes a conditional line,

from:

if(!(money=="")&&!(money=="0"))

to:

if(!(money=="")&&!(money<"0"))

 

A simple one-byte change, but it was enough ^_^

 

Link to comment
Share on other sites

I've been pondering ways in which one could use the modlet (yes, I sometimes create these modlets just to see if I can, without thinking about the possible consequences ^_^)

 

These are just kind of "brainstorm-y" ideas. I really have no idea how fun each would turn out to be when playing.

 

1) "Standard":

This is what I kind of envisioned when I made the modlet. BASE_FUNDING in the 10 to 15% range. (It is an array, so adjusts based on difficulty). Funding levels are balanced so that at end-game, with 16 satellites up (and africa bonus), the player is not completely inundated with cash. Every country matters -- losing ANY country costs some XCOM funding. Gaining/Losing a satellite is still a significant jump in monthly finances.

 

2) Harder start:

At the beginning of the game the player has no satellites and no satellite uplink facilities built (could also start with no intereceptors, to boot). All funding is based on the default BASE_FUNDING% amounts from the FC countries. Shooting down UFOs isn't even possible until a satellite uplink is built and satellites put into the air.

 

3) Satellites are less of a money game:

Lower the overall funding of the nations. Set BASE_FUNDING% to 50%, 60%, maybe even 80%. Make satellites much cheaper, on par with interceptors. Make aliens much more likely to send Satellite-hunting missions and more likely to shoot down satellites. This makes satellites less about the money (since the financial change from gaining/losing a satellite is much less). Instead it expands the overall "interception game" to be more about interceptors + satellites. FC nation money is only completely lost if the nation withdraws -- losing a satellite is not nearly as bad as the country withdrawing, from a financial perspective. Monthly maintanance costs have to be adjusted, since the possible range of monthly income is drastically reduced.

4) Non-covered nations demand assistance: (this would require me to make a small change to make the "+" a "-" if funding is negative)

Set BASE_FUNDING to a negative number, say -5%, but increase the funding per country. Non-satellite nations then require XCOM payments, draining money away from the budget. XCOM budgets can get HUGE once a fair number of satellites are up, but XCOM could easily go broke if all satellites get shot down. This is a high-stakes "all or nothing" style of play (from a cash perspective)

Link to comment
Share on other sites

  • 4 weeks later...

Very interesting modlet.

 

Have you thought about combining it with an extension of the "results driven" option of 2nd wave by making cash

reduction kick in earlier at say panic lvl 2 and ending at 5 with a higher value then now? (default is -20% at panic lvl 4 and -40% at panic lvl 5 iirc)

 

e.g.

panic lvl 1: no reduction

panic lvl 2: -10%

panic lvl 3: -30%

panic lvl 4: -55%

panic lvl 5: -80%

 

 

would give panic management another meaning then just "keep it under 5 so they dont defect" as every extra point of panic lowers the income

Link to comment
Share on other sites

Actually, sometimes SW options are pretty beneficial. In order to fit this mod in I actually re-wrote the code that implements eGO_PanicAffectsFunding (displays as "Results Driven").

 

The current rule for "Results Driven" is:

 

funding = (1.25 - panic*0.25) * base_country_funding = 0.25 * (5 - panic) * base_country funding.

 

panic here is a number between 0 and 4.

 

This should make the funding linearly scale based on the number of panic blocks from 125% to 25% of the country's base funding.

 

--------------------------------------

 

However, both the second wave options "Results Driven" and "War Weariness" (reduces countries' max funding by 10% per month) aren't compatible with this mod, nor are they compatible with each other.

 

If both "Results Driven" and "War Weariness" options are selected only the "Results Driven" will be applied -- the "War Weariness" effect will be overwritten.

 

It would be pretty straightforward to change the:

 

 

if(!m_bSatellite)
{
iFunding = int(float(iFunding)*float(class'XGTacticalGameCore'.default.BASE_FUNDING[Game().GetDifficulty()])/100.0);
}
section that implements "All Countries Contribute" to:
if(!m_bSatellite)
{
iFunding *= float(class'XGTacticalGameCore'.default.BASE_FUNDING[Game().GetDifficulty()])/100.0);
}
which would make it stack with either the "Results Driven" or "War Weariness" options. While I'm in there I could make it so that those two second wave options would stack with each other, if people want some serious funding crunches.

 

Would be as simple as changing:

 

if(IsOptionEnabled(8 ))
{
iFunding = int(0.25*float(iFunding*(5 - panic)))*float(iMax));
}
to:
if(IsOptionEnabled(8 ))
{
iFunding *= 0.25*float(5 - panic))*float(iMax);
}

Sound good?

 

------------

 

P.S. The 10% / month funding reduction in War Weariness is hard-coded in. It is adjusted for Marathon, but changing the value (to say 5% or 7%) takes a hex edit to XGCountry.CalcFunding.

Link to comment
Share on other sites

Turns out I was mistaken ... Results Driven and War Weariness did stack with each other. War Weariness was altering the iMax variable, which the Results Driven was based on. Really weird coding.

----------------------------------

Anyhow, here is a revised CalcFunding function that will allow the "all countries" contribute to stack with both War Weariness and Results Driven Second Wave options.

original hex:
50 24 00 00 AB 1F 00 00 00 00 00 00 4A 24 00 00 00 00 00 00 00 00 00 00 50 24 00 00 00 00 00 00 BE 00 00 00 EE 14 00 00 E2 01 00 00 5A 01 00 00 0B 07 10 00 1B B6 16 00 00 00 00 00 00 16 04 25 0F 00 4E 24 00 00 35 5C 1E 00 00 64 1E 00 00 00 00 01 34 24 00 00 0F 00 4D 24 00 00 00 4E 24 00 00 0F 00 4C 24 00 00 FB 92 01 2E 24 00 00 00 50 24 00 00 16 25 2C 04 16 07 0F 01 1B A7 14 00 00 00 00 00 00 24 0C 16 0F 00 4B 24 00 00 AB 38 3F 19 1B E1 00 00 00 00 00 00 00 16 0A 00 4B 43 00 00 00 1B 9D 0F 00 00 00 00 00 00 16 1E CD CC CC 3D 16 0F 00 4B 24 00 00 F6 00 4B 24 00 00 1E 00 00 00 00 1E 66 66 66 3F 16 0F 00 4E 24 00 00 38 44 AF 38 3F 00 4E 24 00 00 AB 38 3F 00 4E 24 00 00 00 4B 24 00 00 16 16 0F 00 4D 24 00 00 00 4E 24 00 00 07 CD 01 1B A7 14 00 00 00 00 00 00 24 08 16 07 4E 01 9A 00 4C 24 00 00 25 16 0F 00 4D 24 00 00 38 44 AB 38 3F 00 4E 24 00 00 1E 00 00 A0 3F 16 06 CD 01 07 73 01 9A 00 4C 24 00 00 26 16 0F 00 4D 24 00 00 00 4E 24 00 00 06 CD 01 0F 00 4B 24 00 00 AB 38 3F 93 00 4C 24 00 00 26 16 1E 00 00 80 3E 16 0F 00 4D 24 00 00 FB 00 4D 24 00 00 25 38 44 AF 38 3F 00 4E 24 00 00 AB 38 3F 00 4E 24 00 00 00 4B 24 00 00 16 16 16 04 00 4D 24 00 00 04 3A 4F 24 00 00 53

new hex: (virtual (0x1BE)
50 24 00 00 AB 1F 00 00 00 00 00 00 4A 24 00 00 00 00 00 00 00 00 00 00 50 24 00 00 00 00 00 00 BE 00 00 00 EE 14 00 00 BE 01 00 00 5A 01 00 00 0B 07 10 00 1B B6 16 00 00 00 00 00 00 16 04 25 0F 00 4E 24 00 00 35 5C 1E 00 00 64 1E 00 00 00 00 01 34 24 00 00 0F 00 4D 24 00 00 00 4E 24 00 00 0F 00 4C 24 00 00 FB 92 01 2E 24 00 00 00 50 24 00 00 16 25 2C 04 16 07 E8 00 1B A7 14 00 00 00 00 00 00 24 0C 16 0F 00 4B 24 00 00 AB 38 3F 19 1B E1 00 00 00 00 00 00 00 16 0A 00 4B 43 00 00 00 1B 9D 0F 00 00 00 00 00 00 16 1E CD CC CC 3D 16 0F 00 4B 24 00 00 F6 00 4B 24 00 00 1E 00 00 00 00 1E 66 66 66 3F 16 9F 00 4D 24 00 00 AF 1E 00 00 80 3F 00 4B 24 00 00 16 16 07 18 01 1B A7 14 00 00 00 00 00 00 24 08 16 9F 00 4D 24 00 00 AB 1E 00 00 80 3E 38 3F 93 2C 05 00 4C 24 00 00 16 16 16 07 79 01 81 2D 01 32 24 00 00 16 9F 00 4D 24 00 00 AC 38 3F 10 19 1B 4C 0E 00 00 00 00 00 00 16 0A 00 43 41 00 00 00 1B F6 0E 00 00 00 00 00 00 16 12 20 6D FE FF FF 09 00 DF FF FF FF 00 02 DF FF FF FF 38 3F 2C 64 16 16 04 00 4D 24 00 00 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 04 3A 4F 24 00 00 53




Here is the new decompiled code:

function int CalcFunding(optional int iAdditionalPanic)
{
local int iMax, iFunding, iPanic;
local float fPenaltyPct;

// End:0x10
if(LeftXCom())
{
return 0;
}
iMax = m_kTCountry.iFunding;
iFunding = iMax;
iPanic = Clamp(m_iPanic + iAdditionalPanic, 0, 4);
// End:0xE8
if(IsOptionEnabled(12))
{
fPenaltyPct = float(AI().GetMonth()) * 0.10;
fPenaltyPct = FClamp(fPenaltyPct, 0.0, 0.90);
iFunding *= (1.0 - fPenaltyPct);
}
// End:0x118
if(IsOptionEnabled(8 )
{
iFunding *= (0.250 * float(5 - iPanic));
}
// End:0x179
if(!m_bSatellite)
{
iFunding *= (float(class'XGTacticalGameCore'.default.BASE_FUNDING[Game().GetDifficulty()]) / float(100));
}
return iFunding;
//return ReturnValue;
}



This can lead to really, REALLY low values. If in month 9 and a country has panic 4 and no satellite, the result is:

(0.10 * 0.25 * 0.50) = 0.00125, or 1.25% of the countries max amount.

I even took the Merciless BASE_FUNDING value of 50. With a BASE_FUNDING value of 10 the result would be 0.25% ... would be rounded to zero for any country with less than 400 funding.

This is about as close as you could get to a country leaving without actually leaving :smile:

------------------------

I'll put up a wiki page for this soon-ish, and add a Custom Mod file so that the constants for War Weariness and Results Driven can be easily modded.

The GetMonth function called for War Weariness has built-in adjustments for Marathon mode, so that should work properly.

-----------------------

On a complete side note, regarding Second Wave options ... it would be nice if I could add in more Second Wave options. Then some of these could be selected on a per-game basis by the player.

Things that pop to mind for this are:
All Countries Contribute (maybe call it Diversified Funding or some such)
Explosive Damage Randomization
Requiring Mind Controlling an Ethereal to activate the Gollop Chamber Edited by Amineri
Link to comment
Share on other sites

I played around with the version that allows "results driven" aka option 8 and had that enabled. The calculation itself works like a charm just as it is supposed to.

 

However I noticed a problem (that has nothing to do with this modlet as it appears also in the vanilla game) with "results driven" enabled:

 

It seems a country's funding value is only updated a) when the satellite status changes (launch or shot down) and b) at the beginning of a new month after the monthly budget is paid out so the amount

paid out is the one displayed at month end.

 

But there is no change to the funding value when the panic level changes which would make sense in this case and I was wondering if there was an easy way to implement an additional call to update the funding value

after a panic level change.

 

(I looked through the funding related functions in the strategy upk but i cant figure it out yet. There is a call to CalcFunding in the AddPanic function (both in /XGCountry), so in theory the value should be updated every time the panic level changes, or am I missing something?)

Edited by kara42
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...