diff --git a/res/e3a/ships.xml b/res/e3a/ships.xml index 0c8c184e0..393479234 100644 --- a/res/e3a/ships.xml +++ b/res/e3a/ships.xml @@ -22,6 +22,8 @@ + + @@ -83,6 +85,8 @@ + + @@ -93,6 +97,8 @@ + + @@ -101,6 +107,8 @@ + + @@ -111,6 +119,8 @@ + + @@ -121,6 +131,8 @@ + + @@ -133,6 +145,8 @@ + + @@ -144,6 +158,8 @@ + + diff --git a/scripts/e3a/frost.lua b/scripts/e3a/frost.lua new file mode 100644 index 000000000..7cd788de9 --- /dev/null +++ b/scripts/e3a/frost.lua @@ -0,0 +1,36 @@ +module('frost', package.seeall) + +local function is_winter(turn) + local season = get_season(turn) + return season == "calendar::winter" +end + +local function freeze(r) + for i, rn in ipairs(r.adj) do + -- each region has a chance to freeze + if rn.terrain=="ocean" and math.mod(rng_int(), 100)<20 then + rn.terrain = "iceberg_sleep" + end + end +end + +local function thaw(r) + r.terrain = "ocean" +end + +function update() + local turn = get_turn() + if is_winter(turn) then + for r in regions() do + if r.terrain=="glacier" then + freeze(r) + end + end + else if is_winter(turn-1) then + for r in regions() do + if r.terrain=="iceberg_sleep" then + thaw(r) + end + end + end +end \ No newline at end of file diff --git a/scripts/eressea/main.lua b/scripts/eressea/main.lua index 060fdbf8c..4eed4d057 100644 --- a/scripts/eressea/main.lua +++ b/scripts/eressea/main.lua @@ -1,4 +1,5 @@ require "multis" +require "e3a.frost" function apply_fixes() local turn = get_turn() @@ -48,6 +49,7 @@ function process(orders) update_embassies() update_guards() update_scores() + frost.update() local localechange = { de = { "ii" } } change_locales(localechange)