This is a tutorial that will help everyone willing to participate in creation of commodities for Discovery mod. Or, to be more precise, not commodities but trading routes for those. If you will do good, then your routes will be included into the final version of Discovery - after my checks and modifications, of course.
I.
Trading routes for new Discovery commodities (well, most of them) is located in a Goods.xml file that you will find in Discovery mod folder root. This file is processed by FLMM - information from it is extracted into market_commodities.ini file in Freelancer/DATA/EQUIPMENT folder. This file contains information about trading routes in Freelancer - what bases sell and buy certain things and what is their price on each base.
The structure of Goods.xml and market_commodities.ini is similar - each have separate sections with lists of commodities for bases. Difference is that xml file has xml syntax, and does not contain all Freelancer bases (only the most important ones, around 50% of bases total). If you need to add commodities to bases that were not yet listed in Goods.xml, you are free to do so.
Entry for each base/planet in Goods.xml looks like this:
indicates to what base will the main part be appended. Each base in Freelancer has a number like this. I will further provide full list of bases for reference.
This part:
MarketGood = commodity_marijuana, 0, -1, 0, 0, 1, 2.16000
MarketGood = commodity_passengers, 0, -1, 150, 500, 0, 1.20000
MarketGood = commodity_mlieutenant, 0, -1, 0, 0, 1, 0.80000
MarketGood = commodity_mcaptain, 0, -1, 0, 0, 1, 0.80000
MarketGood = commodity_mgeneral, 0, -1, 0, 0, 1, 0.80000
is the main one. It adds actual new commodities that the base Li01_01 will be buying and selling. This section will not replace any existing original commodities, but rather amend the original commodity list.
II.
Ok, let's go in for some more details. Look at this entry:
"MarketGood = " is the start of any commodity line.
"commodity_passengers" is the name of your commodity.
"0" - don't change.
"-1" - reputation needed to buy or sell. Do not change, it must be -1.
"150, 500, 0, " - This part indicates if the commodity is for sale or to buy.
150, 500, 0, means that commodity is sold on the base. 0, 0, 1, means that base buys the commodity.
If the commodity is sold, the base will buy it for the same price it sells it. If base only buys the commodity, you won't be able to buy the commodity from it - only sell.
"1.20000" - it's the last number. It indicates the price of commodity. If commodity is sold (150, 500, 0,), it will be buying and selling price. If the commodity is only bought (0, 0, 1,), it will be only buying price.
The number indicates the difference between base price for each commodity (which is fixed) and price on the particular base.
III.
So, you probably wonder where is the commodity itself? Well, the name, base price and icon for commodity are specified in two other ini files that Goods.xml does not modify. To keep it simplier for you, I'd better do those entries myself.
So, what should you do?
1) Make up a name for your commodity. For example, Armchairs.
1a) You may make some kind of description that will be displayed along with the commodity in-game, or leave this part to me. 2) Make up some a commodity id. For armchairs it should be "commodity_armchairs".
3) Specify the base price. Note that base price is the price for which all bases that you do not specify will buy your commodity, so do not make your base price high! For example, for cardamine it's 300.
You don't need to edit any files for the first three, just send me text.
Then open Goods.xml and start editing.
4) In Goods.xml, start creating trade routes by setting the commodity for sale and to buy on different bases for different prices.
For each base you are interested in, add commodity_armchairs entry to the list of new commodities, like this:
Then decide whether it will be bought or sold. There must be more places where you can sell the commodity than where you can buy it! Note that maximum prices should be only for selling - no player will buy commodity for the maximum price.
If you want armchairs to be sold on Li01_01 (which is Manhattan, by the way), add appropriate numbers to the armchairs entry:
If you want Manhattan only to buy armchairs, add other numbers:
MarketGood = commodity_armchairs, 0, -1, 0, 0, 1,
All bases where there's no entry for armchairs will buy them for the base price, and won't sell them. This is why it's very important to set base price with care.
If you want armchairs to be sold or bough by Manhattan, than you want price to be different from base price. So, you need to decide what this price will be exactly.
For example, base price on armchairs is 200. Then, if you set 0.9 as a price modifier:
DO NOT reduce sell price far below 1! It will cause players to buy the commodity and sell them at nearby bases, where price remains unmodified and much higher. For example, you add 0,1 price modifier to Manhattan and don't add entry for Trenton Outpost. This will cause players to buy armchairs for 20 on Manhattan and sell them for 200 on Trenton. To avoid this, you'll have to reduce prices on armchairs all around Liberty, which is hard to do.
It's a better idea to set low base price and add price modifiers ABOVE 1, thus multiplying buy and sell cost of any commodity.
For example, that's how you make a specific base buy armchairs for 300 credits:
If you want good trade routes (which you should want, otherwise your editing will never be used in the mod), you should think about the area or areas where the commodity will be produced, and where prices on it will be low, and areas of high demand where prices will be high. Areas of production are areas where players will buy your commodity. Areas of demand will be places where they sell them. It's better to make versatile prices to make trading more interesting, so that fewer bases have same price. The longer and more dangerous is the route, the more money difference you can make.
Avoid short and profitable routes. All routes with profit 1000 per unit and above must be long, 5-6 systems to pass or even more.
Prices within one system, especially for bases close together, must have minimum difference.
Li01_01_Base - Planet Manhattan
Li01_02_Base - Planet Pittsburgh
Li01_03_Base - Battleship Missouri
Li01_04_Base - Benford Station
Li01_05_Base - Ithaca Research Station
Li01_06_Base - Trenton Outpost
Li01_07_Base - Norfolk Shipyard
Li01_08_Base - Newark Station
Li01_09_Base - West Point Military Academy
Li01_10_Base - Detroit Munitions
Li01_11_Base - Fort Bush
Li01_12_Base - Buffalo Base
Li01_13_Base - Rochester Base
Li01_14_Base - Baltimore Shipyard
Li01_15_Base - Battleship Osiris SP ONLY
California
Li02_01_Base - Planet Los Angeles
Li02_02_Base - California Minor
Li02_03_Base - Battleship Yukon
Li02_04_Base - Willard Research Station
Li02_05_Base - San Diego Border Station
Li02_06_Base - Alcatraz Depot
Colorado
Li03_01_Base - Planet Denver
Li03_02_Base - Battleship Rio Grande
Li03_03_Base - Ouray Base
Li03_04_Base - Pueblo Station
Br01_01_Base - Planet New London
Br01_02_Base - Southampton Shipyard
Br01_03_Base - Battleship Suffolk
Br01_04_Base - Waterloo Station
Br01_05_Base - Canterbury Station
Br01_06_Base - Thames Outpost
Br01_07_Base - Kensington Ship Platform
Br01_08_Base - Trafalgar Base
Manchester
Br02_01_Base - BPA Newgate
Br02_02_Base - Birmingham Station
Br02_03_Base - Sheffield Station
Br02_04_Base - Liverpool Border Station
Br02_05_Base - Kingston Border Station
Cambridge
Br03_01_Base - Planet Cambridge
Br03_02_Base - Cambridge Research Station
Br03_03_Base - Battleship Norfolk
Br03_04_Base - Cardiff Mining Facility
Leeds
Br04_01_Base - Planet Leeds
Br04_02_Base - Stokes Mining Station
Br04_03_Base - Battleship York
Br04_04_Base - Glasgow Outpost
Br04_05_Base - LD-14
Br04_06_Base - Durham Border Station
Dublin
Br05_01_Base - Battleship Hood
Br05_02_Base - Mining Station Glorious
Br05_03_Base - Graves Station
Br05_04_Base - Battleship Essex
Br05_05_Base - Arranmore Base
Edinburgh
Br06_01_Base - Luxury Liner Shetland
Br06_02_Base - Aberdeen Border Station
Br06_03_Base - Islay Base
Br06_04_Base - Perth Station
KUSARI BASES
New Tokyo
Ku01_01_Base - Planet New Tokyo
Ku01_02_Base - Narita Outpost
Ku01_03_Base - Yokohama Shipyard
Ku01_04_Base - Roppongi Station
Ku01_05_Base - Shinagawa Station
Ku01_06_Base - Shinjuku Station
Ku01_07_Base - Kabukicho Depot
Ku02_01_Base - Fuchu Prison
Ku02_02_Base - Battleship Myoko
Ku02_03_Base - Deshima Station
Ku02_04_Base - Planet Junyo
Ku02_05_Base - Ohashi Border Station
Ku04_01_Base - Planet Honshu
Ku04_02_Base - Osaka Storage Facility
Ku04_03_Base - Yukawa Shipyard
Ku04_04_Base - Kansai Research Station
Ku04_05_Base - Aomori Station
Ku04_06_Base - Akita Border Station
Hokkaido
Ku05_01_Base - Battleship Matsumoto
Ku05_02_Base - Ainu Depot
Ku05_03_Base - Chugoku Gate Con Site
Ku05_04_Base - Sapporo Station
Chugoku
Ku06_01_Base - Kyoto Base
Tohoku
Ku07_01_Base - Ryuku Base
Ku07_02_Base - Tekagis Base
RHEINLAND BASES
New Berlin
Rh01_01_Base - Planet New Berlin
Rh01_02_Base - Oder Shipyard
Rh01_03_Base - The Ring
Rh01_04_Base - Bonn Station
Rh01_05_Base - Dortmund Station
Rh01_06_Base - Essen Station
Rh01_07_Base - Brandenburg Border Station
Rh01_08_Base - Kreuzberg Depot
Rh03_01_Base - Planet Stuttgart
Rh03_02_Base - Planet Baden Baden
Rh03_03_Base - Freiburg Station
Rh03_04_Base - Ulm Border Station
Rh03_05_Base - Konstanz Border Station
Rh03_06_Base - Darmstadt Depot
Frankfurt
Rh04_01_Base - Planet Holstein
Rh04_02_Base - Mainz Storage Facility
Rh04_03_Base - Mannheim Station
Rh04_04_Base - Fulda Border Station
Rh04_05_Base - Bruchsal Base
Dresden
Rh05_01_Base - Leipzig Station
Rh05_02_Base - Bautzen Station
Rh05_03_Base - Pirna Border Station
Rh05_04_Base - Vogtland Base
INDEPENDENT WORLDS BASES
Bering
Iw01_01_Base - Pacifica Base
Iw01_02_Base - Freeport 2
Hudson
Iw02_01_Base - Barrow Base
Iw02_02_Base - Dawson Base
Iw02_03_Base - Battleship Osiris SP ONLY
Magellan
Iw03_01_Base - Freeport 4
Iw03_02_Base - Mactan Base
Cortez
Iw04_01_Base - Planet Curacao
Iw04_02_Base - Montezuma Base
Kepler
Iw05_01_Base - Ames Research Station
Iw05_02_Base - Nome Base
Galileo
Iw06_01_Base - Leiden Base
Iw06_02_Base - Padua Base
BORDER WORLDS BASES
Omega-3
Bw01_01_Base - Planet Sprague
Bw01_02_Base - Freeport 1
Bw01_03_Base - Rugen Station
Bw01_04_Base - Douglas Station
Bw01_05_Base - Baxter Research Station
Omega-5
Bw02_01_Base - Cadiz Base
Bw02_02_Base - Ronneburg Base
I Have been looking through the commdities list and code trying to put together a comprehensive commodities list with buy & sell prices for all bases and systems (i'm about 60% complete) but there are a few entries that I cant match to a base, There are several I cant find in the codes the following are just 2 examples:
Li01_hgn01_base
Br01_hgn01_base
Any help would be appreciated
(This project is keeping me sane in the middle of the desert)
v/r
Nuclear Nightmare
AKA Dormat1
Nuke'em Till They Glow, Then Shoot'em in the Dark!!
What governs if the commodity is contraband? I know it must have some way to specify it on a faction basis... I thought it had to do with "commodities_per_faction", but it almost seems like that file is useless...
Nevermind on the contraband file, found it...still curious about commodities_per_faction though
Did you list the Discovery bases? I noticed in California that Riverside Station is not listed. Also did not see Freeport 11 in Delta. Have not checked for others.