Jump to content

How to modify 0 A.D.?


Nescio
 Share

Recommended Posts

13 hours ago, Nescio said:

16. Is there a quick and easy way to give the Celts a 20% discount on all armoury technologies costs and time (without creating separate files for each technology, as is done with the Athenian ages)?

The TechCostMultiplier is the value to use.

https://trac.wildfiregames.com/wiki/TechModifications

ProductionQueue/TechCostMultiplier/(food/wood/stone/metal/time)

The tech would be autoreseached or not https://trac.wildfiregames.com/wiki/Technology_Templates

{
"genericName": "Celt stuff",
"specificName": { "celt": "Good celt name" },
"cost": { "food": 0, "wood": 0, "stone": 0, "metal": 0 },
"requirements": { { "civ": "celt" } },
"requirementsTooltip": "Be celt", "icon": "celt_supertech.png",
"researchTime": 0,
"autoResearch": true,
"tooltip": "Advance to Town Phase",
"modifications": [
	{ "value": "ProductionQueue/TechCostMultiplier/food", "multiply": 0.8 },
	{ "value": "ResourceGatherer/Rates/wood", "multiply": 0.8 },
	{ "value": "ProductionQueue/TechCostMultiplier/stone", "multiply": 0.8 },
	{ "value": "ProductionQueue/TechCostMultipler/metal", "multiply": 0.8 },
	{ "value": "ProductionQueue/TechCostMultiplier/time", "multiply": 0.8 }
],
"affects": ["Structure"]
}

something like that ^ should work.

Link to comment
Share on other sites

16. Thanks; the “TechCostMultiplier” was what I was looking for.
There is one unexpected side effect though: I've changed the blacksmith from phase_town to phase_village, which works fine for all factions. But after creating a file:

simulation/data/technologies/celts/civbonus_celts_armoury.json

{
  "genericName": "Celtic Blacksmiths",
  "autoResearch": true,
  "description": "The Celts were exceptionally skilled blacksmiths. They also invented the chain mail.",
  "requirements": {"any": [{"civ": "brit"},{"civ": "gaul"}]},
  "icon": "metalworker.png",
  "tooltip": "Celtic Armoury technologies cost -20% resources and time.",
  "modifications": [
    { "value": "ProductionQueue/TechCostMultiplier/food", "multiply": 0.8 },
    { "value": "ProductionQueue/TechCostMultiplier/wood", "multiply": 0.8 },
    { "value": "ProductionQueue/TechCostMultiplier/stone", "multiply": 0.8 },
    { "value": "ProductionQueue/TechCostMultiplier/metal", "multiply": 0.8 },
    { "value": "ProductionQueue/TechCostMultiplier/time", "multiply": 0.8 }
  ],
  "affects": ["Blacksmith"]
}

Suddenly the Britons and Gauls can no longer construct the blacksmith in the village phase, but only in the town phase (screenshots attached below), which puzzles me, because I believe it ought not make a difference. What did I do wrong?

athen.png

 

brit.png

EDIT: problem solved by re-creating new *_blacksmith.xml templates; maybe it had to do something in which order mods were loaded; still odd, but at least it seems to work now.

Edited by Nescio
Link to comment
Share on other sites

Further questions:

17. By the way, how do operators combine?
For instance, I've changed “Glorious Expansion” to increase maximum population by +10% (instead of flat +40); wonders still give flat +10 each; mauryans also have +10% maximum population; assume default maximum population of 100; how would this work out?

a. Addition takes precedence: (100+10)*1.1*1.1=133
b. Order matters: (((100*1.1)+10)*1.1)=132
c. Multiplication takes precedence: 100*1.1*1.1+10=131
d. Multipliers add up, but do not stack: 100*1.2+10=130
e. Something else

I'm assuming (b), but I'd appreciate a confirmation.

 

 

18. A feature I really like is the different selection markers for heroes (star), champions (arrow), and other units (circle). Now I also want to distinguish mercenaries from citizens, so I created four rhombus (diamond, lozenge) files (attached):

/art/textures/selection/rhombus/128x128.png
/art/textures/selection/rhombus/128x128_mask.png
/art/textures/selection/rhombus/256x256.png
/art/textures/selection/rhombus/256x256_mask.png
128x128.png

128x128_mask.png

256x256.png

256x256_mask.png

And I added a few lines (e.g. for a mercenary infantry spearman):
  <Selectable>
    <Overlay>
      <Texture>
        <MainTexture>rhombus/128x128.png</MainTexture>
        <MainTextureMask>rhombus/128x128_mask.png</MainTextureMask>
      </Texture>
    </Overlay>
  </Selectable>

Now, what else do I have to do to make it work?

 

 

19. Something else I'd like to do is replacing the basic/advanced/elite ranks with a smoother promotion system: all soldiers start at rank 0, and can promote up to twelve times to rank 12; each rank grants +5% health, attack damage, and capture strength, but also -10% resource gather rate. Therefore I have to create new files for each rank (e.g. gaul_infantry_swordsman_7) and replace <Rank>Basic</Rank> with <Rank>0</Rank> under <Identity> in the general template file.

Now I also want technologies which increase the base rank of units; is the following piece of code allowed?
  <Identity>
    <Rank op="add">1</Rank>
  <Identity>

Then I need unit bonus technologies files for each rank (similar to /simulation/data/technologies/advanced_unit_bonus.json ); however, instead of:
  "affects": ["Advanced Unit", "Elite Unit"]
I'd prefer rank is greater than or equal to 1 or something similar. How to achieve this?

Edited by Nescio
Link to comment
Share on other sites

20 minutes ago, Nescio said:

Further questions:

17. By the way, how do operators combine?
For instance, I've changed “Glorious Expansion” to increase maximum population by +10% (instead of flat +40); wonders still give flat +10 each; mauryans also have +10% maximum population; assume default maximum population of 100; how would this work out?

a. Addition takes precedence: (100+10)*1.1*1.1=133
b. Order matters: (((100*1.1)+10)*1.1)=132
c. Multiplication takes precedence: 100*1.1*1.1+10=131
d. Multipliers add up, but do not stack: 100*1.2+10=130
e. Something else

I'm assuming (b), but I'd appreciate a confirmation.

Currently, it's tech then auras. And for each one, it's (all) multiplication(s) then (all) addition(s).

(b) would be really confusing.

 

20 minutes ago, Nescio said:

 

18. A feature I really like is the different selection markers for heroes (star), champions (arrow), and other units (circle). Now I also want to distinguish mercenaries from citizens, so I created four rhombus (diamond, lozenge) files (attached):

/art/textures/selection/rhombus/128x128.png
/art/textures/selection/rhombus/128x128_mask.png
/art/textures/selection/rhombus/256x256.png
/art/textures/selection/rhombus/256x256_mask.png
128x128.png

128x128_mask.png

256x256.png

256x256_mask.png

And I added a few lines (e.g. for a mercenary infantry spearman):
  <Selectable>
    <Overlay>
      <Texture>
        <MainTexture>rhombus/128x128.png</MainTexture>
        <MainTextureMask>rhombus/128x128_mask.png</MainTextureMask>
      </Texture>
    </Overlay>
  </Selectable>

Now, what else do I have to do to make it work?

It should be enough (depends also of inheritence).

20 minutes ago, Nescio said:

 

19. Something else I'd like to do is replacing the basic/advanced/elite ranks with a smoother promotion system: all soldiers start at rank 0, and can promote up to twelve times to rank 12; each rank grants +5% health, attack damage, and capture strength, but also -10% resource gather rate. Therefore I have to create new files for each rank (e.g. gaul_infantry_swordsman_7) and replace <Rank>Basic</Rank> with <Rank>0</Rank> under <Identity> in the general template file.

Now I also want technologies which increase the base rank of units; is the following piece of code allowed?
  <Identity>
    <Rank op="add">1</Rank>
  <Identity>

That's perhaps doable but you had to add some code and take care of many things. You can also use a xp replacement (see macedonians) but that leads to weird construction. We can also add a tech requirement to promotion (see ticket #4126).

20 minutes ago, Nescio said:

Then I need unit bonus technologies files for each rank (similar to /simulation/data/technologies/advanced_unit_bonus.json ); however, instead of:
  "affects": ["Advanced Unit", "Elite Unit"]
I'd prefer rank is greater than or equal to 1 or something similar. How to achieve this?

If you look at GetIdentityClasses function of Template.js, you'll see that it should work but you'll have to enter all the numbers ["1",  "2",  "3", ...] or hack something else somewhere else.

Link to comment
Share on other sites

Thanks again for your quick and helpful replies!

17. So (given that “Glorious Expansion” is an aura enabled by a technology) in my example it would be (100*1.1)*1.1+10=121; and if there was also a +10 technology involved, it would be (100*1.1+10)*1.1+10=142, right?

Now if there were two wonders involved, would their aura multipliers compound (100*1.1*1.1+10+10) or just add up (100*1.2+20)?

 

 

18. That was easier than expected, and it does work indeed. (Interestingly, it didn't work earlier when I tested it out with a mercenary camel archer, so now I have to figure out what's wrong with the camel :) ) I've also added a cross-shaped selection marker for the healers:

/art/textures/selection/plus/128x128.png
/art/textures/selection/plus/128x128_mask.png
/art/textures/selection/plus/256x256.png
/art/textures/selection/plus/256x256_mask.png

128x128.png

128x128_mask.png

256x256.png

256x256_mask.png

 

 

19. In other words, “rank” is a character string and can not be a number, correct?

14 hours ago, fatherbushido said:

That's perhaps doable but you had to add some code and take care of many things. You can also use a xp replacement (see macedonians) but that leads to weird construction. We can also add a tech requirement to promotion (see ticket #4126).

So <Rank op="add">1</Rank> is not straightforward to implement. Personally I don't like the Macedonian work-around, nor a tech-requirement for promotion. I guess I'll leave it for now and try to think of an easier and cleaner solution later.

 

 

And a new question:

20. Do multiple identical auras combine? E.g. would a citizen within range of five females receive a worker bonus only once (I assume so) or five times (which would be weird)? I'm asking because I would like to give healers a 15m aura which improves melee infantry attack by 5%.

Edited by Nescio
Link to comment
Share on other sites

9 minutes ago, Nescio said:

Thanks again for your quick and helpful replies!

17. So (given that “Glorious Expansion” is an aura enabled by a technology) in my example it would be (100*1.1)*1.1+10=121; and if there was also a +10 technology involved, it would be (100*1.1+10)*1.1+10=142, right?

Right ;-) (if I am not wrong. Note for myself: write tests).

9 minutes ago, Nescio said:

Now if there were two wonders involved, would their aura multipliers compound (100*1.1*1.1+10+10) or just add up (100*1.2+20)?

Let's assume you'll use stackable auras and that you don't use the mauryan tech. 100 * 1.1 * 1.1 + 10 + 10

(Here the affected entity is the Player itself. We compute all multiplications of all auras which affect it then additions.)

 

9 minutes ago, Nescio said:

18. That was easier than expected, and it does work indeed. (Interestingly, it didn't work earlier when I tested it out with a mercenary camel archer, so now I have to figure out what's wrong with the camel :) ) I've now also added a cross-shaped selection marker for the healers:

;-)

9 minutes ago, Nescio said:

 

19. In other words, “rank” is a character string and can not be a number, correct?

So <Rank op="add">1</Rank> is not straightforward to implement. Personally I don't like the Macedonian work-around, nor a tech-requirement for promotion. I guess I'll leave it for now and try to think of an easier and cleaner solution.

Oh that (I thought you wanted auras and tech to modify rank). You can do it but you need to change the schema in Identity component to use numbers, but there will be many things to change. (I don't recommend to do it in an hacky way, but that's an idea to explore).

9 minutes ago, Nescio said:

And a new question:

20. Do multiple identical auras combine? E.g. would a citizen within range of five females receive a worker bonus only once (I assume so) or five times (which would be weird)? I'm asking because I would like to give healers a 15m aura which improves melee infantry attack by 5%.

 

By default, auras are not stackable. You can do it by adding

stackable: "true"

in the aura template.

(Take care of potential perfomance issue perhaps)

Link to comment
Share on other sites

19. Are ranks hard coded somewhere? Whenever I attempt to replace <Rank>Basic</Rank> with <Rank>0</Rank> I do get error messages, so I stopped trying that.

On 20/08/2017 at 1:19 PM, fatherbushido said:

Oh that (I thought you wanted auras and tech to modify rank). You can do it but you need to change the schema in Identity component to use numbers, but there will be many things to change. (I don't recommend to do it in an hacky way, but that's an idea to explore).

Yes, I do. However, I do have difficulty implementing it. So I have a file simulation/data/technologies/rank_1.json:

{
  "autoResearch": true,
  "icon": "upgrade_advanced.png",
  "tooltip": "Units promoted to the first rank gain 5% health, 5% attack damage, and 5% capture attack, but also -10% resource gather speed; melee units also have +1% movement walk speed and ranged units -1% spread. Healers heal +1 HP and have +1 m range.",
  "modifications": [
    {"value": "ResourceGatherer/BaseSpeed", "multiply": 0.9                        },
    {"value": "Health/Max",                 "multiply": 1.05                       },
    {"value": "Attack/Capture/Value",       "multiply": 1.05                       },
    {"value": "Attack/Melee/Crush",         "multiply": 1.05, "affects": "Melee"   },
    {"value": "Attack/Melee/Hack",          "multiply": 1.05, "affects": "Melee"   },
    {"value": "Attack/Melee/Pierce",        "multiply": 1.05, "affects": "Melee"   },
    {"value": "UnitMotion/WalkSpeed",       "multiply": 1.01, "affects": "Melee"   },
    {"value": "Attack/Ranged/Crush",        "multiply": 1.05, "affects": "Ranged"  },
    {"value": "Attack/Ranged/Hack",         "multiply": 1.05, "affects": "Ranged"  },
    {"value": "Attack/Ranged/Pierce",       "multiply": 1.05, "affects": "Ranged"  },
    {"value": "Attack/Ranged/Spread",       "multiply": 0.99, "affects": "Ranged"  },
    {"value": "Heal/HP",                    "add":      1,    "affects": "Healer"  },
    {"value": "Heal/Range",                 "add":      1,    "affects": "Healer"  }
  ],
  "affects": ["1", "2", "3", "4", "5", "6","7", "8", "9","10", "11", "12"]
}

And similar files for subsequent ranks (up to 12). Then I also have several promotion technologies, e.g. simulation/data/technologies/drill_cavalry_1.json:

{
    "genericName": "Basic Cavalry Training",
    "description": "Give a basic training to all new cavalry soldiers.",
    "cost": {"food": 400, "wood": 0, "stone": 0, "metal": 200},
    "requirements": {"tech": "phase_village"},
    "requirementsTooltip": "Unlocked in Village Phase.",
    "icon": "nisean_war_horses.png",
    "researchTime": 30,
    "tooltip": "New cavalry starts at rank 1/12: additional -10% resource gather rate, +5% health, capture attack, and attack damage; melee also +1% walk speed and ranged -1% spread.",
    "modifications": [{"value": "Promotion/RequiredXp", "replace": 0}],
    "affects": ["Cavalry Basic"],
    "soundComplete": "interface/alarm/alarm_upgradearmory.xml"
}

Furthermore, I've edited all unit templates, e.g. simulation/templates/units/athen_cavalry_javelinist_b.xml:

  <Promotion>
    <Entity>units/athen/citizen_javelin_cavalry_1</Entity>
  </Promotion>

And created new files for the higher ranks, e.g. simulation/templates/units/athen/citizen_javelin_cavalry_1.xml:

<?xml version="1.0" encoding="utf-8"?>
<Entity parent="units/athen_cavalry_javelinist_b">
  <Identity>
    <Rank>1</Rank>
  </Identity>
  <Promotion>
    <Entity>units/athen/citizen_javelin_cavalry_2</Entity>
  </Promotion>
</Entity>

Unfortunately, it doesn't seem to work. Have I overlooked something? What else do I have to do?

 

21. How is the long distance trade gain calculated and which files do I need to edit to lower it?

 

22. Suppose I would want to add a new resource, favour, which starts at 0 and has a maximum of 100. (It could be acquired by killing enemies or praying at a temple, and used for speeding up construction or acquiring special units and technologies.) Where to start to implement it?

 

23. How does “circular splash” work exactly? Is it divided amongst all units in a certain area, or does each unit receive the full splash damage? And linear splash? By the way, higher “spread” values mean a lower accuracy, right? But how does it work exactly?

Link to comment
Share on other sites

19 minutes ago, Nescio said:

22. Suppose I would want to add a new resource, favour, which starts at 0 and has a maximum of 100. (It could be acquired by killing enemies or praying at a temple, and used for speeding up construction or acquiring special units and technologies.) Where to start to implement it?

I don't know for sure, but I think Glory that's used in Delenda Est works something like that. Maybe take a look at it and see if you can do something similar?

Link to comment
Share on other sites

25 minutes ago, Nescio said:

22. Suppose I would want to add a new resource, favour, which starts at 0 and has a maximum of 100. (It could be acquired by killing enemies or praying at a temple, and used for speeding up construction or acquiring special units and technologies.) Where to start to implement it?

 

Everything except the bolded part is currently implemented in DE. The "maximum of 100" part like in AoM would need some code.

Link to comment
Share on other sites

@Nescio:

 

15 hours ago, Nescio said:

21. How is the long distance trade gain calculated and which files do I need to edit to lower it?

If you just want to modify the gain multiplier of a trader, you just have to modify Trader/TraderMultiplier

see:

Trader.prototype.Schema =
    "<a:help>Lets the unit generate resouces while moving between markets (or docks in case of water trading).</a:help>" +
    "<a:example>" +
        "<GainMultiplier>0.75</GainMultiplier>" +
    "</a:example>" +
    "<element name='GainMultiplier' a:help='Trader gain for a 100m distance'>" +
        "<ref name='positiveDecimal'/>" +
    "</element>";

Currently the trader gain is basically gainMultiplier * (distanceBetweenMarkets)^2.

If you want to modify that, you just have to modify L43 of simulation/helpers/TraderGain.js

(or more if you want a more complex system).

15 hours ago, Nescio said:

 

23. How does “circular splash” work exactly? Is it divided amongst all units in a certain area, or does each unit receive the full splash damage? And linear splash? By the way, higher “spread” values mean a lower accuracy, right? But how does it work exactly?

For circular splash damage, the damage is dealt to all units in the radius with a quadratic fall off with the distance. For linear splash damage, it's the same but the shape is a rectangle 'starting' at the impact of length radius and of width 2 * radius / 5. (With also a quadratic falloff).

When the target location is predicted an error is added. That is a 2d gaussian error and the spread is the standard deviation of that gaussian (if the target is at 100 m). To be more explicit, as explained in the schema doc: "a disk at 100 meters from the attacker with this radius (2x this radius, 3x this radius) is expected to include the landing points of 39.3% (86.5%, 98.9%) of the rounds."

Link to comment
Share on other sites

@Nescio

About 19.

Rank are not hardcoded anywhere execpting in the xml schema (I checked the AI too). Just some random trigger maps perhaps use explicitly elite templates.

Quote

<Rank>Basic</Rank> with <Rank>0</Rank>

That won't work.

You need to change the following schema in Identity.js (here only three choice are allowed).

Quote

    "<optional>" +
        "<element name='Rank'>" +
            "<choice>" +
                "<value>Basic</value>" +
                "<value>Advanced</value>" +
                "<value>Elite</value>" +
            "</choice>" +
        "</element>" +
    "</optional>" +

(If you do such a thing, I would recommend you to not use the _b convention for naming the initial rank.)

Link to comment
Share on other sites

19. Once again, many thanks, I greatly appreciate your help! I didn't know of the existence of Identity.js, but I believe that is the file which can solve my problems.

1 hour ago, fatherbushido said:

(If you do such a thing, I would recommend you to not use the _b convention for naming the initial rank.)

Actually I intend to completely side step the standard naming scheme, so instead of:

athen_cavalry_javelinist_a.xml
athen_cavalry_javelinist_b.xml
athen_cavalry_javelinist_e.xml

I intend to use:

athen_citizen_javelin_cavalry.xml
athen/citizen_javelin_cavalry_1.xml
athen/citizen_javelin_cavalry_2.xml

etc.

 

 

21. TraderGain.js was what I was looking for, thanks for pointing it out. And no, I didn't simply want to multiply the gain multiplier. Trade works fine for medium distances, but is too low for short distances and too high for long distances. The problem is the distance squared; powers are simply too steep. So I've replaced lines 40 and 43:

  // Calculate ordinary Euclidean distance between markets, normalized to 100 m.
  // We don't use pathfinder, because ordinary distance looks more fair.
  let Ndistance = firstMarketPosition.distanceTo(secondMarketPosition)/100;
  // Also calculate the square root of its cube
  let NdistanceP = math.pow(Ndistance, 3/2);
  // We calculate trade gain factor as a sum of these two values;
  // this will encourage long distance trade with remote markets
  // and simultaneously keep short distance trade a reliable form of income
  gain.traderGain = gainMultiplier * (Ndistance + NdistanceP);
  // Comparison of the above vs previous (distanceSquare/10000):
  // distance :  trade gain factor  |  trade income factor (i.e. gain/distance)
  //     10 m :    0.13 vs     0.01 | 0.013 vs 0.001
  //     30 m :    0.46 vs     0.09 | 0.015 vs 0.003
  //    100 m :    2.0  vs     1    | 0.020 vs 0.01
  //    300 m :    8.2  vs     9    | 0.027 vs 0.03
  //   1000 m :   42    vs   100    | 0.042 vs 0.1
  //   3000 m :  194    vs   900    | 0.065 vs 0.3
  //  10000 m : 1100    vs 10000    | 0.11  vs 1

 

21 hours ago, wowgetoffyourcellphone said:

Everything except the bolded part is currently implemented in DE. The "maximum of 100" part like in AoM would need some code.

22. DE is frequently mentioned on the forums. Do you have a full changelog or complete overview which lists everything DE does? (A pdf would be nice.) I'm not really interested in downloading a 600 MB zip when I just want a few kB of text :) By the way, how does the default AI perform in DE?

 

23. So if a hundred opponents would fit in a splash area, each of them would receive the full damage/x^2 (with x the distance from the centre)? And is the distance factor continuous or discrete (e.g. would a unit at 2.5m receive 1/2.5^2 damage or do all units between 2m and 3m receive 1/3^2)?
The more explicit explanation is actually less helpful than the confirmation that “spread is the standard deviation”. However, is spread simply a probability (chance to inflict 0 damage) or a displacement (it could hit foes other than the target if they happen to be at the inaccurate landing point)?

 

24. According to simulation/data/settings/map_sizes.json the tiny map is 128 tiles, medium is 256 tiles, and giant 512 tiles. However, how large is a “tile”?

 

25. Is it possible to have different flavours of one and the same technology? E.g. in order to advance to the next phase, you have to choose between mutually exlusive technologies 2A, 2B, and 2C; each of them grants the (otherwise unavailable) phase 2, but each one would also give a unique benefit.

Edited by Nescio
ce
Link to comment
Share on other sites

23. It's the full damage * (1 - x^2 / r^2) where r is the splash radius and x the distance. The distance factor is 'continuous' (((quotes for representation of numbers))).

23 bis.

Quote

However, is spread simply a probability (chance to inflict 0 damage) or a displacement (it could hit foes other than the target if they happen to be at the inaccurate landing point)?

I would say it's both. Let's imagine the point we aim. Landing point will be randomly distributed around that point following a bivariate gaussian law (something like the picture above).

image.png

The bigger the spread is, the less concentrated it is :)

(39.3%  of the hits are in disk of the spread radius, 86.5% of the hits are in a disk of 2 * spread radius, 98.9% of the hits are in a disk of 3 * spread radius).

For convenience, think that this circle is placed at 100m (and then use proportionality).

(Thanks to @quantumstate for having done all those things).

Link to comment
Share on other sites

Regarding 25. just let both techs provide the same thing, then require that thing for some auto-researched tech that does the actual phasing. (You might want to look at tech files in both the public mod and a few other mods (or old versions of the public mod that did use that.)

Link to comment
Share on other sites

  • 2 weeks later...

24. How large are the map size tiles?

 

26. Is it possible to have more than one technology requirement to enable an unit?

 

27. Personally I appreciate the support and advice I've received here on the forums, and I'd like to do something back. Is it possible to make some minor contributions to the official game? If I were given permission to edit the files, something I could and would like to do is applying a more systematic approach to the naming scheme of shared researches, special technologies, and civilization bonuses, because currently it seems rather haphazard and could be improved, similar to how it's done with team bonuses and auras. I do have some experience with programming (e.g. C++, python, R), mark-up (LaTeX, XML), and version control (git) languages, but not with trac; however, I believe I could learn how to use it, with a proper introduction.

  • Like 1
Link to comment
Share on other sites

27. For programmers you don't have to formulate an official application thread in the correct subforum but you can if you want. 

Here is it how it goes. You start making diffs for tickets you can find on trac (trac.wildifiregames.com) or create your own for instance here it could be Cleanup of the Aura Files Names (we avoid big cleanups because it's a pain to review so split it by thematic)

And then you upload that diff to Phabricator (code.wildfiregames.com) and wait for review. Once it's accepted it will be added to the game. Once you have made enough contributions you might be offered a position.

  • Like 1
Link to comment
Share on other sites

27. So I've opened and read all those links (which result in more links, not all of them useful), registered at Trac and Phabricator, and installed the dependencies listed under https://trac.wildfiregames.com/wiki/BuildInstructions

Now I want to start with something small and easy: remove lines 9 and 10 from the brit and gaul blacksmiths:

    <RequiredTechnology>phase_town</RequiredTechnology>
    <VisibleClasses datatype="tokens">Town</VisibleClasses>

These lines are both unnecessary (they are present in the general blacksmith template; all other civ blacksmiths do not have these lines) and potentially problematic (if the phase requirement is changed for the general blacksmith template, these two will still remain town phase).

Now, the file is located at at least three different locations:

https://trac.wildfiregames.com/browser/ps/trunk/binaries/data/mods/public/simulation/templates/structures/brit_blacksmith.xml
https://code.wildfiregames.com/source/0ad/browse/ps/trunk/binaries/data/mods/public/simulation/templates/structures/brit_blacksmith.xml
https://github.com/0ad/0ad/blob/master/binaries/data/mods/public/simulation/templates/structures/brit_blacksmith.xml

Which of these identical files should I take as a starting point? And how to proceed from there?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...