Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions src/games/blockilization/client/concepts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ export const CONCEPTS: Article[] = [
sections: [
{ text: 'Every tile yields something by its [[cat:terrain|terrain]] and feature: grassland food, hills production, the coast food and gold. Rivers add gold and fresh water. [[cat:resource|Resources]] add more, once improved.' },
{ title: 'Workers', text: '[[unit:worker|Workers]] build [[cat:improvement|improvements]]: farms for food, mines for production, trading posts for gold, and the right improvement on each resource (pastures, camps, plantations, quarries, fishing boats from a Work Boat). They also build roads, which connect cities and speed units.' },
{ title: 'Resources', text: 'Bonus resources yield more food or production. Luxury resources make your empire [[concept:happiness|happy]], each kind once. Strategic resources (horses, iron, coal, oil, aluminum, uranium) are needed by the units and buildings that use them; each improved deposit supplies a few.' },
{ title: 'Resources', text: 'Bonus resources yield more food or production. Luxury resources make your empire [[concept:happiness|happy]], each kind once. They lie by region, as in Civ V: each civ’s land has plenty of one kind (one by its start), a second kind by its start, and the rest are found elsewhere, by the city-states or traded for. Strategic resources (horses, iron, coal, oil, aluminum, uranium) are needed by the units and buildings that use them; each improved deposit supplies its amount, a small one 2 or 3, a large one 4 to 8.' },
{ title: 'Fallout', text: 'A nuclear blast leaves [[terrain:fallout|fallout]] on much of the land it strikes. A tile under fallout yields next to nothing, hurts units that end their turn on it, and can’t be improved or repaired until a worker scrubs it away (Scrub Fallout).' },
],
},
Expand Down Expand Up @@ -136,8 +136,8 @@ export const CONCEPTS: Article[] = [
color: '#8a5a2a',
sub: 'Units of a kind, joined as one',
sections: [
{ text: `With [[tech:military_science|Military Science]], two units of the same kind side by side can join as a corps (a fleet, at sea): select one, and Form a corps takes the other into it. With [[tech:replaceable_parts|Replaceable Parts]], a corps and a third unit of its kind join as an army (an armada). A corps fights with ${CORPS_BONUS}% more strength and an army with ${ARMY_BONUS}% more, in attack and defence, as one unit on one tile; its flag is marked II or III.` },
{ title: 'What it costs', text: 'A formation still costs what its units did: their upkeep, their strategic resources, and an upgrade for each of them. Joining spends the unit’s turn. The joined unit has the hit points of both shared out, and the experience and promotions of the more experienced. A formation never splits again; one that can’t be paid for loses a unit at a time. Aircraft, missiles, carriers and civilians don’t form corps.' },
{ text: `With [[tech:military_science|Military Science]], two units of the same kind side by side can join as a corps (a fleet, at sea): select one, and Form a corps takes the other into it. With [[tech:replaceable_parts|Replaceable Parts]], a corps and a third unit of its kind join as an army (an armada). A corps fights with ${CORPS_BONUS}% more strength and an army with ${ARMY_BONUS}% more, in attack and defence, as one unit on one tile; its flag is marked II or III. The bonus multiplies everything else (hills, fortifying, promotions), so it counts in full wherever it fights.` },
{ title: 'What it costs', text: 'A corps’s gold upkeep is half again a unit’s, and an army’s twice a unit’s. It still holds every one of its units’ strategic resources, and its upgrade costs one for each of them. Joining spends the unit’s turn. The joined unit has the hit points of both shared out, and the experience and promotions of the more experienced. A formation never splits again; one that can’t be paid for loses a unit at a time. Aircraft, missiles, carriers and civilians don’t form corps.' },
],
},
{
Expand Down Expand Up @@ -332,8 +332,9 @@ export const ABILITY_TEXT: Record<string, string> = {
build_sea: 'Builds fishing boats and offshore platforms on sea resources.',
ignore_terrain: 'Every tile costs it a single move.',
no_terrain_defense: 'No defensive bonus from hills, forest or jungle (their penalties still count).',
bonus_vs_mounted: '+100% strength against mounted units.',
bonus_vs_cities: '+100% strength against cities.',
bonus_vs_mounted: '+50% strength against mounted units.',
bonus_vs_armor: '+100% strength against armour.',
bonus_vs_cities: '+200% strength against cities.',
penalty_vs_cities: '-33% strength against cities.',
must_setup: 'Must set up (a move) before it can fire.',
indirect_fire: 'Indirect Fire: fires over hills, forest, jungle and mountains in the way, at anything your units see.',
Expand All @@ -346,7 +347,7 @@ export const ABILITY_TEXT: Record<string, string> = {
heal_adjacent: 'Ships with it or next to it heal 15 more.',
repair_fleet: 'Repair Fleet: spent, every ship of yours on its tile or next to it is healed fully.',
concert_tour: 'Concert Tour: spent in another civ’s land, ten turns of your tourism toward them at once.',
paradrop: 'Can parachute from your land to land you know up to 6 tiles away, if it hasn’t moved.',
paradrop: 'Can parachute from your land to land you know up to 9 tiles away, if it hasn’t moved.',
nuke: 'A nuclear weapon: destroys what is round where it lands and leaves fallout on much of the land. Every civ that knows you will long remember it, those it falls on most, and city-states think less of you. An Atomic Bomb (not a missile) may be shot down by a fighter on patrol or an anti-aircraft gun near its target.',
spread_religion: 'Spreads its religion to a city.',
remove_heresy: 'Drives other religions out of a city.',
Expand Down
1 change: 1 addition & 0 deletions src/games/blockilization/client/icons.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ const G: Record<string, string> = {
cattle: '<path d="M5 6c0 2 1 3 3 3M19 6c0 2-1 3-3 3"/><path d="M8 9h8l1 6c0 3-2 5-5 5s-5-2-5-5z"/><path d="M10 15h.01M14 15h.01" stroke-width="2.4"/><path d="M10 18h4"/>',
sheep: '<circle cx="12" cy="12" r="6"/><circle cx="7" cy="9" r="2.5"/><circle cx="17" cy="9" r="2.5"/><circle cx="12" cy="7" r="2.5"/><path d="M9 18v3M15 18v3"/>',
deer: '<path d="M8 3v4l-3 1M8 7l3 2M16 3v4l3 1M16 7l-3 2"/><path d="M9 10h6l-1 8-2 3-2-3z"/>',
bison: '<path d="M5 12c0-4 3-7 7-7 3 0 4 2 6 3 2 1 3 3 3 5v3H6"/><path d="M5 12c-2 0-3 2-2 4l2 1h1"/><path d="M4 11l-1-2"/><path d="M8 16v4M11 16v4M16 16v4M19 16v4"/>',
bananas: '<path d="M5 9c1 7 6 11 13 10M7 7c2 6 6 9 12 9M9 5c2 5 5 7 10 7"/><path d="M4 9l2-3"/>',
fish: '<path d="M3 12c3-4 7-5 10-5s6 2 7 5c-1 3-4 5-7 5s-7-1-10-5z"/><path d="M20 12l2-3v6z"/><path d="M8 11h.01" stroke-width="2.4"/>',
stone: '<path d="M4 17l3-8 6-3 6 4 1 7-8 3z"/><path d="M7 9l5 3 8-2M12 12l-1 8"/>',
Expand Down
3 changes: 2 additions & 1 deletion src/games/blockilization/client/modelfiles.ts
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@ import r_sheep from '../models/r_sheep.glb?url';
import r_horses from '../models/r_horses.glb?url';
import r_horses2 from '../models/r_horses2.glb?url';
import r_deer from '../models/r_deer.glb?url';
import r_bison from '../models/r_bison.glb?url';
import r_ivory from '../models/r_ivory.glb?url';
import r_furs from '../models/r_furs.glb?url';
import r_truffles from '../models/r_truffles.glb?url';
Expand Down Expand Up @@ -167,4 +168,4 @@ import r_marble from '../models/r_marble.glb?url';
import r_copper from '../models/r_copper.glb?url';
import r_salt from '../models/r_salt.glb?url';

export const MODEL_FILES: Record<ModelId, string> = { u_warrior, u_spear, u_pike, u_sword, u_longsword, u_bow, u_crossbow, u_musket, u_rifle, u_infantry, u_mech, u_scout, u_worker, u_missionary, u_inquisitor, u_prophet, u_great, u_horse, u_knight, u_cavalry, u_elephant, u_camel, u_general, u_chariot, u_catapult, u_trebuchet, u_cannon, u_artillery, u_rocket, u_gatling, u_landship, u_tank, u_armor, u_robot, u_heli, u_triplane, u_oldbomber, u_fighter, u_bomber, u_stealth, u_missile, u_nuke, u_galley, u_turtle, u_sail, u_ironclad, u_warship, u_sub, u_carrier, u_cargo, u_boat, u_transport, u_settler, u_caravan, c_hut, c_house, c_stone, c_brick, c_block, c_tower, c_keep, c_palace, c_temple, c_wonder, c_factory, c_wall1, c_tower1, c_wall2, c_tower2, c_wall3, c_tower3, p_arrows, p_stone, p_shell, m_camp, m_ruin, m_bird, m_bird2, m_ship, w_pyramid, w_henge, w_colossus, w_liberty, w_cristo, w_zeus, w_lighthouse, w_gardens, w_temple, w_palace, w_wall, w_arena, w_dome, w_steps, w_cathedral, w_castle, w_pagoda, w_clock, w_spire, w_gate, w_theatre, w_opera, w_modern, w_dish, w_army, w_rocket, w_atom, w_mausoleum, w_oracle, w_parthenon, w_great_mosque, w_alhambra, w_taj_mahal, w_borobudur, w_angkor_wat, w_machu_picchu, w_great_library, w_forbidden_palace, w_uffizi, w_louvre, w_sistine_chapel, w_leaning_tower, w_himeji_castle, w_broadway, w_cn_tower, w_petra, w_united_nations, w_pentagon, w_great_firewall, w_kremlin, r_cattle, r_cattle2, r_sheep, r_horses, r_horses2, r_deer, r_ivory, r_furs, r_truffles, r_fish, r_whales, r_crab, r_sandbar, r_pearls, r_wheat, r_bananas, r_cotton, r_dyes, r_spices, r_silk, r_sugar, r_wine, r_incense, r_citrus, r_cocoa, r_stone, r_iron, r_coal, r_oil, r_aluminum, r_uranium, r_gold_ore, r_silver, r_gems, r_marble, r_copper, r_salt };
export const MODEL_FILES: Record<ModelId, string> = { u_warrior, u_spear, u_pike, u_sword, u_longsword, u_bow, u_crossbow, u_musket, u_rifle, u_infantry, u_mech, u_scout, u_worker, u_missionary, u_inquisitor, u_prophet, u_great, u_horse, u_knight, u_cavalry, u_elephant, u_camel, u_general, u_chariot, u_catapult, u_trebuchet, u_cannon, u_artillery, u_rocket, u_gatling, u_landship, u_tank, u_armor, u_robot, u_heli, u_triplane, u_oldbomber, u_fighter, u_bomber, u_stealth, u_missile, u_nuke, u_galley, u_turtle, u_sail, u_ironclad, u_warship, u_sub, u_carrier, u_cargo, u_boat, u_transport, u_settler, u_caravan, c_hut, c_house, c_stone, c_brick, c_block, c_tower, c_keep, c_palace, c_temple, c_wonder, c_factory, c_wall1, c_tower1, c_wall2, c_tower2, c_wall3, c_tower3, p_arrows, p_stone, p_shell, m_camp, m_ruin, m_bird, m_bird2, m_ship, w_pyramid, w_henge, w_colossus, w_liberty, w_cristo, w_zeus, w_lighthouse, w_gardens, w_temple, w_palace, w_wall, w_arena, w_dome, w_steps, w_cathedral, w_castle, w_pagoda, w_clock, w_spire, w_gate, w_theatre, w_opera, w_modern, w_dish, w_army, w_rocket, w_atom, w_mausoleum, w_oracle, w_parthenon, w_great_mosque, w_alhambra, w_taj_mahal, w_borobudur, w_angkor_wat, w_machu_picchu, w_great_library, w_forbidden_palace, w_uffizi, w_louvre, w_sistine_chapel, w_leaning_tower, w_himeji_castle, w_broadway, w_cn_tower, w_petra, w_united_nations, w_pentagon, w_great_firewall, w_kremlin, r_cattle, r_cattle2, r_sheep, r_horses, r_horses2, r_deer, r_bison, r_ivory, r_furs, r_truffles, r_fish, r_whales, r_crab, r_sandbar, r_pearls, r_wheat, r_bananas, r_cotton, r_dyes, r_spices, r_silk, r_sugar, r_wine, r_incense, r_citrus, r_cocoa, r_stone, r_iron, r_coal, r_oil, r_aluminum, r_uranium, r_gold_ore, r_silver, r_gems, r_marble, r_copper, r_salt };
6 changes: 3 additions & 3 deletions src/games/blockilization/client/pedia.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { BELIEF_LIST, BELIEFS } from '../rules/religion';
import { EUREKAS } from '../rules/eurekas';
import { SPEEDS } from '../rules/state';
import { baseTechCost, ERA_NAMES, ERAS, eraOfCol, TECH_LIST, TECHS, type Era, type Tech } from '../rules/techs';
import { FALLOUT, FEATURES, HILLS, IMPROVEMENTS, MOUNTAIN, RESOURCES, TERRAINS, YIELD_KEYS, type FeatureId, type ImprovementId, type TerrainId, type Yields } from '../rules/terrain';
import { addYields, FALLOUT, FEATURES, HILLS, IMPROVEMENTS, MOUNTAIN, RESOURCES, TERRAINS, YIELD_KEYS, type FeatureId, type ImprovementId, type TerrainId, type Yields } from '../rules/terrain';
import { UNIT_LIST, UNITS, type UnitType } from '../rules/units';
import { centre } from '../geometry';
import { lookAt } from './camera';
Expand Down Expand Up @@ -689,9 +689,9 @@ function resourcePage(id: string): Page {
const r = RESOURCES[id];
const facts: Fact[] = [
['food', YIELD_COLOR.food, 'Yields', yieldsEl(r.yields, true)],
['hammer', '#f0a24a', 'Improved', yieldsEl(r.improved, true)],
['hammer', '#f0a24a', 'Improved', yieldsEl(addYields(IMPROVEMENTS[r.improvement].yields, r.improved), true)],
];
if (r.amount) facts.push(['hexes', r.color, 'Each deposit', `${r.amount[0]}–${r.amount[1]}`]);
if (r.amount) facts.push(['hexes', r.color, 'Each deposit', `${r.amount[0]} small, ${r.amount[1]} large`]);
const owned = store.view?.self.strategic[id];
if (owned) facts.push(['check', '#6fd27a', 'You have', `${owned.have - owned.used} free of ${owned.have}`]);
const kindText: Record<string, string> = {
Expand Down
1 change: 1 addition & 0 deletions src/games/blockilization/client/spots.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ export const KINDS: Partial<Record<string, Kind>> = {
cattle: { models: ['r_cattle', 'r_cattle2', 'r_cattle'], count: 3, scale: 2.9, life: 'graze' },
sheep: { models: ['r_sheep'], count: 3, scale: 2.9, life: 'graze' },
deer: { models: ['r_deer'], count: 2, scale: 2.6, life: 'graze' },
bison: { models: ['r_bison'], count: 2, scale: 2.8, life: 'graze' },
bananas: { models: ['r_bananas'], count: 2, scale: 3.4, life: 'still' },
fish: { models: ['r_fish'], count: 2, scale: 2.4, life: 'swim', sea: true, lift: 0.1 },
stone: { models: ['r_stone'], count: 2, scale: 3.1, life: 'still' },
Expand Down
Loading
Loading