Skip to content

Commit

Permalink
Make clear that tactics bonus is first round only
Browse files Browse the repository at this point in the history
  • Loading branch information
jt-traub committed Oct 17, 2024
1 parent 5c6ceb2 commit 14524fe
Show file tree
Hide file tree
Showing 38 changed files with 90 additions and 90 deletions.
60 changes: 30 additions & 30 deletions genrules.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -461,7 +461,7 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr

f << enclose("ul", true);
f << enclose("li", true) << url("#intro", "Introduction") << '\n' << enclose("li", false);

f << enclose("li", true);
f << url("#playing", "Playing Atlantis") << '\n';
f << enclose("ul", true);
Expand Down Expand Up @@ -1251,7 +1251,7 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
<< "as the magical entry into Atlantis.";

} else {
f << "inside of the normal world of Atlantis, but "
f << "inside of the normal world of Atlantis, but "
<< (Globals->MULTI_HEX_NEXUS ? "each contains " : "contains ")
<< "a starting city with all its benefits"
<< (Globals->GATES_EXIST ? ", including a gate" : "") << ". "
Expand Down Expand Up @@ -1285,7 +1285,7 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
if (Globals->START_CITIES_START_UNLIMITED) {
f << (!Globals->SAFE_START_CITIES && Globals->CITY_MONSTERS_EXIST
? "until someone conquers the guardsmen, "
: "")
: "")
<< "there are unlimited amounts of many materials and men (though the prices are often quite high).";
} else {
f << "there are materials as well as a very large supply of men (though the prices are often quite high).";
Expand Down Expand Up @@ -1591,7 +1591,7 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
f << enclose("td align=\"center\"", true) << ItemDefs[i].weight/50 << '\n' << enclose("td", false);
f << enclose("td align=\"center\"", true) << slevel << '\n' << enclose("td", false);
f << enclose("tr", false);
}
}
for (int i = 0; i < NOBJECTS; i++) {
if (ObjectDefs[i].flags & ObjectType::DISABLED) continue;
if (!ObjectIsShip(i)) continue;
Expand Down Expand Up @@ -1835,8 +1835,8 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
rate = study_rate(days, 0);
days += rate;
months5++;
}
mlevel = GetLevelByDays(days);
}
mlevel = GetLevelByDays(days);

f << enclose("p", true);
f << "To illustrate this, a unit would have to spend " << num_to_word(months2)
Expand All @@ -1849,7 +1849,7 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
<< "skill level 3 by studying without experience. ";
}
f << "The maximum skill level that is possible through continuous study only (i.e. no experience "
<< "involved) is " << num_to_word(mlevel) + ", "
<< "involved) is " << num_to_word(mlevel) + ", "
<< (months5 > 36 ? "although it is hardly feasible without any experience at all, " : "")
<< "taking " << num_to_word(months5) << " months of studying to achieve. "
<< "Note that this assumes that the unit type is allowed to achieve this level at all "
Expand Down Expand Up @@ -1906,7 +1906,7 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
int level = 0;
int plevel = 0;
int next = study_rate(days, 0);
f << enclose("td", true) << "&nbsp;" << level << "&nbsp;<font size='-1'>(" << days << "+" << next
f << enclose("td", true) << "&nbsp;" << level << "&nbsp;<font size='-1'>(" << days << "+" << next
<< ")</font>\n" << enclose("td", false);
for (int m = 0; m < 9; m++) {
days += study_rate(days, 0);
Expand All @@ -1928,7 +1928,7 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
level = 0;
plevel = 0;
next = study_rate(days, 30);
f << enclose("td", true) << "&nbsp;" << level << "&nbsp;<font size='-1'>(" << days << "+" << next
f << enclose("td", true) << "&nbsp;" << level << "&nbsp;<font size='-1'>(" << days << "+" << next
<< ")</font>\n" << enclose("td", false);
for (int m = 0; m < 9; m++) {
days += study_rate(days, 30);
Expand Down Expand Up @@ -1984,7 +1984,7 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
// a table of all skills/costs.
f << enclose("p", true) << "Most skills cost $" << SkillDefs[S_COMBAT].cost
<< " per person per month to study (in addition to normal maintenance costs). The exceptions are ";
if (has_stea || has_obse) {
if (has_stea || has_obse) {
f << (has_stea ? "Stealth" : "") << (has_stea && has_obse ? " and " : "") << (has_obse ? "Observation" : "")
<< " (" << (has_stea && has_obse ? "both of which cost $" : "which costs $") << SkillDefs[S_STEALTH].cost
<< "), ";
Expand Down Expand Up @@ -2127,7 +2127,7 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
if (!evenly_divisible) {
f << "Food value for a fractional maintenance cost still consumes the entire unit of food. ";
}

if (Globals->UPKEEP_MINIMUM_FOOD > 0) {
f << "A unit must be given at least " << Globals->UPKEEP_MINIMUM_FOOD
<< " maintenance per man in the form of food. ";
Expand Down Expand Up @@ -2180,7 +2180,7 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
<< "were given above in the section on Movement, but many things were left out. Here is a table "
<< "giving some information about common items in Atlantis:\n"
<< enclose("p", false);

f << anchor("tableiteminfo") << '\n';
f << enclose("center", true);
f << enclose("table border=\"1\"", true);
Expand Down Expand Up @@ -2252,7 +2252,7 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
(wp->flags & WeaponType::RANGED) ||
(wp->flags & WeaponType::NEEDSKILL)) {
if (wp->flags & WeaponType::RANGED)
f << "Ranged weapon";
f << "Ranged weapon";
else
f << "Weapon";
f << " which gives " << (wp->attackBonus > -1 ? "+" : "")
Expand Down Expand Up @@ -2340,7 +2340,7 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
<< " factions can issue " << url("#produce", "PRODUCE") << " orders however, regardless of skill levels.\n"
<< enclose("p", false);
}

f << enclose("p", true) << "Items which increase production may increase production of advanced items in "
<< "addition to the basic items listed. Some of them also increase production of other tools. Read the skill "
<< "descriptions for details on which tools aid which production when not noted above.\n"
Expand Down Expand Up @@ -2431,7 +2431,7 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
}
f << enclose("table", false);
f << enclose("center", false);

f << enclose("p", true) << "Size is the number of people that the building can shelter. Cost is both "
<< "the number of man-months of labor and the number of units of material required to complete the building. ";
if (Globals->LIMITED_MAGES_PER_BUILDING) {
Expand Down Expand Up @@ -2648,7 +2648,7 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
f << enclose("td align=\"center\"", true) << ItemDefs[i].weight/50 << '\n' << enclose("td", false);
f << enclose("td align=\"center\"", true) << slevel << '\n' << enclose("td", false);
f << enclose("tr", false);
}
}
for (int i = 0; i < NOBJECTS; i++) {
if (ObjectDefs[i].flags & ObjectType::DISABLED) continue;
if (!ObjectIsShip(i)) continue;
Expand All @@ -2674,7 +2674,7 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
<< "to complete the ship. The sailors are the number of skill levels of the Sailing skill that must be "
<< "aboard the ship (and issuing the " << url("#sail", "SAIL") << " order) in order for the ship to sail.\n"
<< enclose("p", false);

f << enclose("p", true) << "When a ship is built, if its builder is already the owner of a fleet, then "
<< "the ship will be added to that fleet; otherwise a new fleet will be created to hold the ship. A fleet "
<< "has the combined capacity and sailor requirement of its constituent vessels, and moves at the speed of "
Expand Down Expand Up @@ -2759,7 +2759,7 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
<< "the faction in question Friendly. Units on guard will also block " << url("#pillage", "PILLAGE")
<< " orders issued by other factions in the same region, regardless of your attitude towards the faction "
<< "in question, and they will attempt to prevent Unfriendly units from entering the region. Only units "
<< "which are able to tax may be on guard. Units on guard "
<< "which are able to tax may be on guard. Units on guard "
<< (has_stea ? " are always visible regardless of Stealth skill, and " : "")
<< "will be marked as being \"on guard\" in the region description.\n"
<< enclose("p", false);
Expand Down Expand Up @@ -2936,7 +2936,7 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
? "these restrictions do "
: "this restriction does ")
<< "not apply for sea combat, as "
<< (has_stea ? "units within a fleet are always visible" : "");
<< (has_stea ? "units within a fleet are always visible" : "");
if (!(SkillDefs[S_RIDING].flags & SkillType::DISABLED)) {
f << (has_stea ? ", and" : "") << " Riding does not play a part in combat on board fleets";
}
Expand Down Expand Up @@ -3009,10 +3009,10 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
f << " The computer selects the best tactician from each side; that unit is regarded as the leader of "
<< "its side. If two or more units on one side have the same Tactics skill, then the one with the lower "
<< "unit number is regarded as the leader of that side. If one side's leader has a better Tactics skill "
<< "than the other side's,"
<< "than the other side's, then that side gets a "
<< (Globals->ADVANCED_TACTICS
? "then that side gets a tactics difference bonus to their attack and defense."
: "then that side gets a free round of attacks.");
? "tactics difference bonus to their attack and defense for the first round of combat."
: "free round of attacks.");
}
f << '\n' << enclose("p", false);
f << enclose("p", true) << "In each combat round, the combatants each get to attack once, in "
Expand Down Expand Up @@ -3112,7 +3112,7 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
<< "the battle is over, by any living healers on the winning side.\n"
<< enclose("p", false);
}

f << enclose("p", true) << "Any items owned by dead combatants on the losing side have a 50% chance of being "
<< "found and collected by the winning side. Each item which is recovered is picked up by one of the "
<< "survivors able to carry it (see the " << url("#spoils", "SPOILS") << " command) at random, so the "
Expand Down Expand Up @@ -3705,7 +3705,7 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
f << example_start("Change your faction's email address to [email protected].")
<< "ADDRESS [email protected]\n"
<< example_end();

f << enclose(class_tag("div", "rule"), true) << '\n' << enclose("div", false);
f << anchor("advance") << '\n';
f << enclose("h4", true) << "ADVANCE [dir] ...\n" << enclose("h4", false);
Expand Down Expand Up @@ -3845,7 +3845,7 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
f << example_start("To help unit 5789 build a structure.")
<< "BUILD HELP 5789\n"
<< example_end();

f << enclose(class_tag("div", "rule"), true) << '\n' << enclose("div", false);
f << anchor("buy") << '\n';
f << enclose("h4", true) << "BUY [quantity] [item]\n" << enclose("h4", false);
Expand Down Expand Up @@ -3875,7 +3875,7 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
<< "BUY 5 barbarians\n"
<< example_end();
}

f << enclose(class_tag("div", "rule"), true) << '\n' << enclose("div", false);
f << anchor("cast") << '\n';
f << enclose("h4", true) << "CAST [skill] [arguments]\n" << enclose("h4", false);
Expand Down Expand Up @@ -4127,7 +4127,7 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
f << enclose("p", true) << "Form a new unit. The newly created unit will be in your faction, in the same "
<< "region as the unit which formed it, and in the same structure if any. It will start off, however, with "
<< "no people or items; you should, in the same month, issue orders to transfer people into the new unit, or "
<< "have it recruit members. The new unit will inherit its flags from the unit that forms it, such as "
<< "have it recruit members. The new unit will inherit its flags from the unit that forms it, such as "
<< "avoiding, behind, revealing and sharing, with the exception of the guard and autotax flags. If the new "
<< "unit wants to guard or automatically tax then those flags will have to be explicitly set in its orders.\n"
<< enclose("p", false);
Expand Down Expand Up @@ -4394,7 +4394,7 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
f << enclose("p", true) << "If multiple units are on one side in a battle, they must all have the NOAID flag on, "
<< "or they will receive aid from other hexes.\n"
<< enclose("p", false);
f << enclose("p", true) << "Example:\n" << enclose("p", false);
f << enclose("p", true) << "Example:\n" << enclose("p", false);
f << example_start("Set a unit to receive no aid in battle.")
<< "NOAID 1\n"
<< example_end();
Expand Down Expand Up @@ -4588,7 +4588,7 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
f << enclose("p", true) << "Note that although this order affects the faction as a whole, it nevertheless needs "
<< "to be issued by an individual unit, and so the email containing the command to quit needs to include both "
<< "#atlantis and unit lines.\n"
<< enclose("p", false);
<< enclose("p", false);
f << enclose("p", true) << "Example:\n" << enclose("p", false);
f << example_start("Quit the game for faction 27 if your password is foobar.")
<< "#atlantis 27 \"foobar\"\n"
Expand Down Expand Up @@ -4622,7 +4622,7 @@ int Game::GenRules(const AString &rules, const AString &css, const AString &intr
<< "affiliation (REVEAL FACTION), in the turn report, to all other factions in the region. "
<< (has_stea ? "Used to reveal high stealth scouts, should there be some reason to. " : "")
<< "REVEAL is used to cancel this.\n"
<< enclose("p", false);
<< enclose("p", false);
f << enclose("p", true) << "Examples:\n" << enclose("p", false);
f << example_start("Show the unit to all factions.")
<< "REVEAL UNIT\n"
Expand Down
16 changes: 8 additions & 8 deletions skillshows.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ AString *ShowSkill::Report(Faction *f) const
"bonus to their attack and defense during first battle "
"round. Bonus equals to the difference in skills but can be "
"+3 at most. The army with the highest level tactician "
"in a battle will receive this bonus round; if the highest "
"in a battle will receive this bonus; if the highest "
"levels are equal, no bonus is awarded.";
} else {
*str += "Tactics allows the unit, and all allies, to gain a "
Expand Down Expand Up @@ -462,7 +462,7 @@ AString *ShowSkill::Report(Faction *f) const
if (Globals->APPRENTICES_EXIST) {
*str += " or ";
*str += Globals->APPRENTICE_NAME;
}
}
*str += ", make a temporary Gate between two regions, and "
"send units from one region to another. In order to do this, "
"both mages (the caster, and the target mage) must have "
Expand Down Expand Up @@ -708,12 +708,12 @@ AString *ShowSkill::Report(Faction *f) const
"12 sailing skill points per skill level "
"of Summon Wind. ";
}

/*
*str += " If the mage is flying, he will receive 2 extra "
"movement points.";
*/
*str += "The effects of all such mages in a fleet are cumulative. ";
*str += "The effects of all such mages in a fleet are cumulative. ";
}
break;
case S_SUMMON_STORM:
Expand Down Expand Up @@ -1584,15 +1584,15 @@ AString *ShowSkill::Report(Faction *f) const
temp2 += "] via magic";
count = 0;
for (c = 0; c < sizeof(ItemDefs[i].mInput)/sizeof(ItemDefs[i].mInput[0]); c++) {
if (ItemDefs[i].mInput[c].item == -1) continue;
if (ItemDefs[i].mInput[c].item == -1) continue;
count++;
}
if (count > 0) {
temp2 += " at a cost of ";
temp4 = "";
count = 0;
for (c = 0; c < sizeof(ItemDefs[i].mInput)/sizeof(ItemDefs[i].mInput[0]); c++) {
if (ItemDefs[i].mInput[c].item == -1) continue;
if (ItemDefs[i].mInput[c].item == -1) continue;
if (!(temp4 == "")) {
if (count > 0)
temp2 += ", ";
Expand Down Expand Up @@ -1659,7 +1659,7 @@ AString *ShowSkill::Report(Faction *f) const
temp4 = "";
count = 0;
for (c = 0; c < sizeof(ItemDefs[i].pInput)/sizeof(ItemDefs[i].pInput[0]); c++) {
if (ItemDefs[i].pInput[c].item == -1) continue;
if (ItemDefs[i].pInput[c].item == -1) continue;
if (!(temp4 == "")) {
if (count > 0)
temp1 += ", ";
Expand Down Expand Up @@ -1875,7 +1875,7 @@ AString *ShowSkill::Report(Faction *f) const
if (!(*str == "")) *str += " ";
*str += "This skill cannot be taught to other units.";
}
if ((Globals->SKILL_PRACTICE_AMOUNT > 0) &&
if ((Globals->SKILL_PRACTICE_AMOUNT > 0) &&
(SkillDefs[skill].flags & SkillType::NOEXP)) {
if (!(*str == "")) *str += " ";
*str += "This skill cannot be increased through experience.";
Expand Down
4 changes: 2 additions & 2 deletions snapshot-tests/neworigins_turns/turn_0/report.1
Original file line number Diff line number Diff line change
Expand Up @@ -256,8 +256,8 @@ entertainment [ENTE] 5: No skill report.
tactics [TACT] 1: Tactics allows the unit, and all allies, to gain a
bonus to their attack and defense during first battle round. Bonus
equals to the difference in skills but can be +3 at most. The army
with the highest level tactician in a battle will receive this bonus
round; if the highest levels are equal, no bonus is awarded. This
with the highest level tactician in a battle will receive this
bonus; if the highest levels are equal, no bonus is awarded. This
skill costs 200 silver per month of study.

tactics [TACT] 2: No skill report.
Expand Down
2 changes: 1 addition & 1 deletion snapshot-tests/neworigins_turns/turn_0/report.1.json
Original file line number Diff line number Diff line change
Expand Up @@ -23414,7 +23414,7 @@
"tag": "ENTE"
},
{
"description": "Tactics allows the unit, and all allies, to gain a bonus to their attack and defense during first battle round. Bonus equals to the difference in skills but can be +3 at most. The army with the highest level tactician in a battle will receive this bonus round; if the highest levels are equal, no bonus is awarded. This skill costs 200 silver per month of study.",
"description": "Tactics allows the unit, and all allies, to gain a bonus to their attack and defense during first battle round. Bonus equals to the difference in skills but can be +3 at most. The army with the highest level tactician in a battle will receive this bonus; if the highest levels are equal, no bonus is awarded. This skill costs 200 silver per month of study.",
"level": 1,
"name": "tactics",
"tag": "TACT"
Expand Down
4 changes: 2 additions & 2 deletions snapshot-tests/neworigins_turns/turn_1/report.1
Original file line number Diff line number Diff line change
Expand Up @@ -256,8 +256,8 @@ entertainment [ENTE] 5: No skill report.
tactics [TACT] 1: Tactics allows the unit, and all allies, to gain a
bonus to their attack and defense during first battle round. Bonus
equals to the difference in skills but can be +3 at most. The army
with the highest level tactician in a battle will receive this bonus
round; if the highest levels are equal, no bonus is awarded. This
with the highest level tactician in a battle will receive this
bonus; if the highest levels are equal, no bonus is awarded. This
skill costs 200 silver per month of study.

tactics [TACT] 2: No skill report.
Expand Down
2 changes: 1 addition & 1 deletion snapshot-tests/neworigins_turns/turn_1/report.1.json
Original file line number Diff line number Diff line change
Expand Up @@ -23457,7 +23457,7 @@
"tag": "ENTE"
},
{
"description": "Tactics allows the unit, and all allies, to gain a bonus to their attack and defense during first battle round. Bonus equals to the difference in skills but can be +3 at most. The army with the highest level tactician in a battle will receive this bonus round; if the highest levels are equal, no bonus is awarded. This skill costs 200 silver per month of study.",
"description": "Tactics allows the unit, and all allies, to gain a bonus to their attack and defense during first battle round. Bonus equals to the difference in skills but can be +3 at most. The army with the highest level tactician in a battle will receive this bonus; if the highest levels are equal, no bonus is awarded. This skill costs 200 silver per month of study.",
"level": 1,
"name": "tactics",
"tag": "TACT"
Expand Down
Loading

0 comments on commit 14524fe

Please sign in to comment.