summaryrefslogtreecommitdiff
path: root/src/economy.cpp
AgeCommit message (Collapse)Author
2021-08-02Fix #9440: negative cargo payments not being handled rightRubidium
Cargo payments were stored as unsigned integer, but cast to int64 during application of inflation. However, then being multiplied with a uint64 making the result uint64. So in the end the payment that should have been negative becomes hugely positive.
2021-07-09Codechange: Remove FOR_EACH_SET_CARGO_IDglx22
2021-07-01Codechange: use the constructor for CompanyNewsItem to fill the data instead ↵rubidium42
of a separate function
2021-07-01Codechange: create a type for the "free_data" of NewsItems and (de)allocate ↵rubidium42
it with new and delete
2021-06-11Fix #9348, 4d74e51: don't try to sell shares of spectators (#9349)Patric Stout
"new_owner" can be INVALID_OWNER, and as INVALID_OWNER == COMPANY_SPECTATORS, we could end up trying to sell shares of nobody.
2021-05-29Codechange: Rename window related DeleteXXX to match new behaviourglx22
2021-05-29Codechange: move from C-string to std::string for DoCommandrubidium42
2021-05-29Fix #9281: acquire a company uses special bookkeeping to make you rich (#9300)Patric Stout
When you buy-out a company, you got your shares back. This is based on company-value, which includes values for the vehicles etc. In other words, you not only got the vehicles, but you also got paid to get them back. Additionally, you also got the loan of the company, but not the money for the loan (as that is subtracted from the company-value). Solve this by changing the rules of a buy-out: don't sell your shares, get the loan AND the balance and get the infrastructure.
2021-05-15Change: Use gender-neutral pronounsrubidium42
2021-05-08Change: Use gender-neutral pronouns in console command messages (and ↵William Davis
comments) (#9203)
2021-04-29Codechange: Replace FOR_ALL_CARGOSPECS with range-based for loopsglx22
2021-01-22Change: Apply some consistency to singleplayer related commentsglx22
2021-01-08Codechange: Remove min/max functions in favour of STL variants (#8502)Charles Pigott
2020-12-27Codechange: Replace assert_compile macro with static_assertCharles Pigott
2020-12-25Change: Always apply inflation from 1920 to 2090, no matter the game start ↵Michael Lutz
year. (#7589)
2020-12-22Feature: Set exclusive access to industry from GS (#8115)Pavel Stupnikov
2020-12-16Change: extend the allowed range for max loan setting (#8386)Pavel Stupnikov
2020-01-28Change: Algorithm for transfer feeder paymentsJonathan G Rennison
The original algorithm pays intermediate legs in feeder systems based on the start and end stations of that particular leg. This tends to result in large negative payments on the final leg for journeys with many feeder legs, as the overall feeder payment increases with the number of legs, and the final leg is penalised for discrepancies between the previous leg payments and the actual payment for delivery from the source to the destination. The feeder share setting is a partial mitigation, however it is difficult to tune as a suitable value depends on the number of legs and the network topology, which are often not the same for all vehicles. The new incremental algorithm pays the cargo payment from the source station to the end station of the current leg, minus any previous transfer feeder payments for each leg. This prevents unbounded increase of feeder payments and therefore avoids the issue of excessive negative payments on the final leg. Feeder payments may be negative, e.g. in the case of poorly performing or highly indirect legs. This is better than penalising the final leg. This mode reduces the need to tune the feeder shares setting to the current network. The feeder share setting applies in the existing way.
2019-12-23Fix #7430: when train visits station, only reset time_since_pickup if has ↵Mingwei Samuel
room to load
2019-12-21Codechange: Replace FOR_ALL_TOWNS with range-based for loopsglx
2019-12-21Codechange: Replace FOR_ALL_SUBSIDIES with range-based for loopsglx
2019-12-21Codechange: Replace story related FOR_ALL with range-based for loopsglx
2019-12-21Codechange: Replace FOR_ALL_SIGNS with range-based for loopsglx
2019-12-21Codechange: Replace vehicle related FOR_ALL with range-based for loopsglx
2019-12-21Codechange: Replace FOR_ALL_GROUPS with range-based for loopsglx
2019-12-21Codechange: Replace FOR_ALL_GOALS with range-based for loopsglx
2019-12-21Codechange: Replace station related FOR_ALL with range-based for loopsglx
2019-12-21Codechange: Replace FOR_ALL_COMPANIES with range-based for loopsglx
2019-11-10Cleanup: Removed SVN headersS. D. Cloudt
2019-10-19Feature: Configure minimum share trading yearsJack Baron
2019-09-29Fix: Some typos found using codespellJMcKiern
2019-05-01Feature: Add NotRoadTypes (NRT)peter1138
2019-04-29Codechange: Remove Company/OwnerByte typesCharles Pigott
2019-04-11Fix #7491: Send company update admin message when bankruptcy counter changes.peter1138
2019-04-10Codechange: Use null pointer literal instead of the NULL macroHenry Wilson
2019-04-05Fix #7439: don't overwrite CompanyRemoveReason with ClientID (#7465)glx22
2019-03-26Codechange: Removed SmallVector completelyHenry Wilson
2019-03-26Codechange: Replaced SmallVector::[Begin|End]() with std alternativesHenry Wilson
2019-03-26Codechange: Replaced SmallVector::Include() with include()Henry Wilson
2019-03-26Codechange: Replace SmallVector::Clear() with std::vector::clear()Henry Wilson
2019-03-20Remove: ENABLE_NETWORK switchPatric Stout
This switch has been a pain for years. Often disabling broke compilation, as no developer compiles OpenTTD without, neither do any of our official binaries. Additionaly, it has grown so hugely in our codebase, that it clearly shows that the current solution was a poor one. 350+ instances of "#ifdef ENABLE_NETWORK" were in the code, of which only ~30 in the networking code itself. The rest were all around the code to do the right thing, from GUI to NewGRF. A more proper solution would be to stub all the functions, and make sure the rest of the code can simply assume network is available. This was also partially done, and most variables were correct if networking was disabled. Despite that, often the #ifdefs were still used. With the recent removal of DOS, there is also no platform anymore which we support where networking isn't working out-of-the-box. All in all, it is time to remove the ENABLE_NETWORK switch. No replacement is planned, but if you feel we really need this option, we welcome any Pull Request which implements this in a way that doesn't crawl through the code like this diff shows we used to.
2019-03-17Fix f58fa80e: Wrong company performance rating when money exceeds INT_MAX. ↵stormcone
(#7382) Company performance rating calculation does not take into account the companies' money when those exceeds INT_MAX.
2019-03-09Feature: Non-rectangular sparse station catchment area.Peter Nelson
2019-03-09Codechange: Convert IndustryVector to a std::set.peter1138
2019-03-08Feature: Industries with neutral stations (e.g. Oil Rig) only supply/accept ↵PeterN
cargo to/from their neutral station. (#7234) This change is a controlled by a game setting, located under Environment -> Industries which allows toggling the behaviour. It defaults to enabled. "Company stations can serve industries with attached neutral stations" When enabled, industries with attached neutral station (such as Oil Rigs) may also be served by company-owned stations built nearby. This is the traditional behaviour. When disabled, these industries may only be served by their neutral station. Any nearby company-owned stations won't be able to serve them, nor will the neutral station serve anything else other than the industry.
2019-03-02Fix #6633: Cargo monitor industry delivery now accounts for which IndustryID ↵Samu
the cargo was delivered to
2019-02-21Change: Owner of vehicle with exclusive transport rights may now load cargo ↵SamuXarick
from neutral stations (#7256)
2019-02-04Add: CompanyCtrlAction enum for CMD_COMPANY_CTRL actionsglx
2019-01-29Fix 11ab3c4ea2f: Vehicles could not be refitted to cargo IDs higher than 32.Peter Nelson
2018-11-25Fix #6498: Use int64 for all company rating calculationsNiels Martin Hansen