Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Chris Nasser 2019-12-21 23:08:57 -04:00
commit ef7d696935
32 changed files with 1041 additions and 1157 deletions

View file

@ -36,7 +36,9 @@
* Prevent hero death from triggering new corpse recruitable dialog (issue #4503)
* Fix last breath dialog for bats firing multiple times in the campaign
* Fix bug of regular WC appearing in recruit list in S05 Blackwater
* Fix special plauge attack making rats when spiders are called for
* Fix special plague attack making rats when spiders are called for
* Tutorial:
* Redraw S2 and reduce difficulty
### Editor
### Language and i18n
* Updated translations: Ancient Greek, Chinese (Traditional), Dutch, French,

View file

@ -1260,19 +1260,36 @@ function ai_helper.get_closest_enemy(loc, side, cfg)
return closest_enemy, closest_distance
end
function ai_helper.has_ability(unit, ability)
function ai_helper.has_ability(unit, ability, exact_match)
-- Returns true/false depending on whether unit has the given ability
local has_ability = false
local abilities = wml.get_child(unit.__cfg, "abilities")
if abilities then
if wml.get_child(abilities, ability) then has_ability = true end
-- OPTIONAL INPUT:
-- - exact_match=true: (boolean) If set to true (the default), the ability id
-- has to match @ability exactly, otherwise it is sufficient if @ability appears
-- in the id. This is done so that, for example, regeneration abilities with
-- ids 'regenerates' and 'regenerates_4' can be matched simultaneously.
if (exact_match == nil) then exact_match = true end
for _,ability_id in ipairs(unit.abilities) do
if exact_match then
if (ability == ability_id) then
return true
end
else
if string.find(ability_id, ability) then
return true
end
end
end
return has_ability
return false
end
function ai_helper.has_weapon_special(unit, special)
-- Returns true/false depending on whether @unit has a weapon with special @special
-- Also returns the number of the first weapon with this special
wesnoth.deprecated_message('ai_helper.has_weapon_special', 3, '1.17.0', "Use unit:find_attack() instead, noting that the argument needs to be a filter, such as { special_id = 'poison' }.")
for weapon_number,att in ipairs(unit.attacks) do
for _,sp in ipairs(att.specials) do
if (sp[1] == special) then
@ -1501,12 +1518,12 @@ function ai_helper.next_hop(unit, x, y, cfg)
unit_in_way:to_map()
local terrain = wesnoth.get_terrain(next_hop_ideal[1], next_hop_ideal[2])
local move_cost_endpoint = wesnoth.units.movement_on(unit, terrain)
local move_cost_endpoint = unit:movement_on(terrain)
local inverse_reach_map = LS.create()
for _,r in pairs(inverse_reach) do
-- We want the moves left for moving into the opposite direction in which the reach map was calculated
local terrain = wesnoth.get_terrain(r[1], r[2])
local move_cost = wesnoth.units.movement_on(unit, terrain)
local move_cost = unit:movement_on(terrain)
local inverse_cost = r[3] + move_cost - move_cost_endpoint
inverse_reach_map:insert(r[1], r[2], inverse_cost)
end
@ -1709,7 +1726,7 @@ function ai_helper.custom_cost_with_avoid(x, y, prev_cost, unit, avoid_map, ally
local max_moves = unit.max_moves
local terrain = wesnoth.get_terrain(x, y)
local move_cost = wesnoth.units.movement_on(unit, terrain)
local move_cost = unit:movement_on(terrain)
if (move_cost > max_moves) then
return ai_helper.no_path
@ -1795,7 +1812,7 @@ function ai_helper.custom_cost_with_avoid(x, y, prev_cost, unit, avoid_map, ally
defense = H.round(defense / 10) * 10
if (defense > 90) then defense = 90 end
if (defense < 10) then defense = 10 end
move_cost_int = move_cost_int + defense
move_cost_int = move_cost_int + (100 - defense)
-- And finally we add a (very small) penalty for this hex if it is to be avoided
-- This is used for the next hex to determine whether the previous hex was to be
-- avoided via avoid_penalty above.

View file

@ -14,10 +14,10 @@ local battle_calcs = {}
function battle_calcs.unit_attack_info(unit, cache)
-- Return a table containing information about attack-related properties of @unit
-- The result can be cached if variable @cache is given
-- This is done in order to avoid duplication of slow processes, such as access to unit.__cfg
-- This is done in order to avoid duplication of slow processes
-- Return table has fields:
-- - attacks: the attack tables from unit.__cfg
-- - attacks: the attack tables
-- - resist_mod: resistance modifiers (multiplicative factors) index by attack type
-- - alignment: just that
@ -32,11 +32,10 @@ function battle_calcs.unit_attack_info(unit, cache)
end
-- Otherwise collect the information
local unit_cfg = unit.__cfg
local unit_info = {
attacks = {},
resist_mod = {},
alignment = unit_cfg.alignment
alignment = unit.alignment
}
local attacks = unit.attacks
for i_a = 1,#attacks do
@ -73,7 +72,7 @@ function battle_calcs.unit_attack_info(unit, cache)
local attack_types = { "arcane", "blade", "cold", "fire", "impact", "pierce" }
for _,attack_type in ipairs(attack_types) do
unit_info.resist_mod[attack_type] = unit:resistance_against(attack_type) / 100.
unit_info.resist_mod[attack_type] = 1 - unit:resistance_against(attack_type) / 100.
end
if cache then cache[cind] = unit_info end
@ -118,6 +117,7 @@ function battle_calcs.strike_damage(attacker, defender, att_weapon, def_weapon,
-- Opponent resistance modifier
local att_multiplier = defender_info.resist_mod[attacker_info.attacks[att_weapon].type] or 1
-- TOD modifier
att_multiplier = att_multiplier * AH.get_unit_time_of_day_bonus(attacker_info.alignment, att_lawful_bonus)
@ -677,8 +677,8 @@ function battle_calcs.battle_outcome(attacker, defender, cfg, cache)
if (def_max_hits > att_strikes) then def_max_hits = att_strikes end
-- Probability of landing a hit
local att_hit_prob = defender:defense_on(wesnoth.get_terrain(defender.x, defender.y)) / 100.
local def_hit_prob = attacker:defense_on(wesnoth.get_terrain(dst[1], dst[2])) / 100.
local att_hit_prob = 1 - defender:defense_on(wesnoth.get_terrain(defender.x, defender.y)) / 100.
local def_hit_prob = 1 - attacker:defense_on(wesnoth.get_terrain(dst[1], dst[2])) / 100.
-- Magical: attack and defense, and under all circumstances
if att_attack.magical then att_hit_prob = 0.7 end
@ -924,7 +924,7 @@ function battle_calcs.attack_rating(attacker, defender, dst, cfg, cache)
-- We don't need a bonus for good terrain for the attacker, as that is covered in the damage calculation
-- However, we add a small bonus for good terrain defense of the _defender_ on the _attack_ hex
-- This is in order to take good terrain away from defender on next move, all else being equal
local defender_defense = - defender:defense_on(wesnoth.get_terrain(dst[1], dst[2])) / 100.
local defender_defense = - (100 - defender:defense_on(wesnoth.get_terrain(dst[1], dst[2]))) / 100.
defender_value = defender_value + defender_defense * defense_weight
-- Get a very small bonus for hexes in between defender and AI leader
@ -1019,7 +1019,7 @@ function battle_calcs.attack_combo_stats(tmp_attackers, tmp_dsts, defender, cach
-- If attacker has attack with 'slow' special, it should always go first
-- Almost, bonus should not be quite as high as a really high CTK
-- This isn't quite true in reality, but can be refined later
if AH.has_weapon_special(attacker, "slow") then
if attacker:find_attack { special_id = "slow" } then
rating = rating + defender.cost / 2.
end
@ -1316,7 +1316,7 @@ function battle_calcs.best_defense_map(units, cfg)
if max_moves then unit.moves = old_moves end
for _,loc in ipairs(reach) do
local defense = 100 - unit:defense_on(wesnoth.get_terrain(loc[1], loc[2]))
local defense = unit:defense_on(wesnoth.get_terrain(loc[1], loc[2]))
if (defense > (defense_map:get(loc[1], loc[2]) or - math.huge)) then
defense_map:insert(loc[1], loc[2], defense)
@ -1524,7 +1524,7 @@ function battle_calcs.get_attack_combos_subset(units, enemy, cfg)
-- Store information about it in 'loc' and add this to 'locs'
-- Want coordinates (dst) and terrain defense (for sorting)
loc.dst = xa * 1000 + ya
loc.hit_prob = unit:defense_on(wesnoth.get_terrain(xa, ya))
loc.hit_prob = 100 - unit:defense_on(wesnoth.get_terrain(xa, ya))
table.insert(locs, loc)
-- Also mark this hex as usable

View file

@ -16,7 +16,7 @@ function ca_spread_poison:evaluation(cfg, data, filter_own)
local poisoners = {}
for _,unit in ipairs(attacks_aspect.own) do
if (unit.attacks_left > 0) and (#unit.attacks > 0) and AH.has_weapon_special(unit, "poison")
if (unit.attacks_left > 0) and (#unit.attacks > 0) and unit:find_attack { special_id = "poison" }
and (not unit.canrecruit) and unit:matches(filter_own)
then
table.insert(poisoners, unit)
@ -61,7 +61,7 @@ function ca_spread_poison:evaluation(cfg, data, filter_own)
local about_to_level = defender.max_experience - defender.experience <= (attacker.level * 2 * wesnoth.game_config.combat_experience)
if (not cant_poison) and (healing == 0) and (not about_to_level) then
local _, poison_weapon = AH.has_weapon_special(attacker, "poison")
local _, poison_weapon = attacker:find_attack { special_id = "poison" }
local dst = { a.dst.x, a.dst.y }
local att_stats, def_stats = BC.simulate_combat_loc(attacker, dst, defender, poison_weapon)
local _, defender_rating, attacker_rating = BC.attack_rating(attacker, defender, dst, { att_stats = att_stats, def_stats = def_stats })
@ -75,7 +75,7 @@ function ca_spread_poison:evaluation(cfg, data, filter_own)
end
-- More priority to enemies on strong terrain
local defense_rating = (100 - defender:defense_on(defender_terrain)) / 100
local defense_rating = defender:defense_on(defender_terrain) / 100
attacker_rating = attacker_rating * (1 - aggression)
local combat_rating = attacker_rating + defender_rating + additional_poison_rating
@ -102,7 +102,7 @@ end
function ca_spread_poison:execution(cfg, data)
local attacker = wesnoth.units.get(SP_attack.src.x, SP_attack.src.y)
-- If several attacks have poison, this will always find the last one
local is_poisoner, poison_weapon = AH.has_weapon_special(attacker, "poison")
local is_poisoner, poison_weapon = attacker:find_attack { special_id = "poison" }
if AH.print_exec() then AH.print_ts(' Executing spread_poison CA') end
if AH.show_messages() then wesnoth.wml_actions.message { speaker = attacker.id, message = 'Poison attack' } end

View file

@ -85,7 +85,7 @@ return {
local best_defense = 100
for i, terrain in ipairs(terrain_archetypes) do
local defense = unit:defense_on(terrain)
local defense = 100 - unit:defense_on(terrain)
if defense < best_defense then
best_defense = defense
end
@ -196,7 +196,7 @@ return {
-- TODO: calculate chance to hit
-- currently assumes 50% chance to hit using supplied constant
local attacker_resistance = attacker:resistance_against(defender_attack.type)
drain_recovery = (defender_attack.damage*defender_attack.number*attacker_resistance*attacker_defense/2)/10000
drain_recovery = (defender_attack.damage*defender_attack.number*(100-attacker_resistance)*attacker_defense/2)/10000
end
end
end
@ -204,14 +204,14 @@ return {
defense = defense/100.0
local resistance = defender:resistance_against(attack.type)
if steadfast and (resistance < 100) then
resistance = 100 - ((100 - resistance) * 2)
if (resistance < 50) then
if steadfast and (resistance > 0) then
resistance = resistance * 2
if (resistance > 50) then
resistance = 50
end
end
local base_damage = (weapon_damage+damage_bonus)*resistance*damage_multiplier
if (resistance > 100) then
local base_damage = (weapon_damage+damage_bonus)*(100-resistance)*damage_multiplier
if (resistance < 0) then
base_damage = base_damage-1
end
base_damage = math.floor(base_damage/100 + 0.5)
@ -257,7 +257,7 @@ return {
random_gender = false
}
local can_poison = poisonable(unit) and (not unit:ability('regenerate'))
local flat_defense = unit:defense_on("Gt")
local flat_defense = 100 - unit:defense_on("Gt")
local best_defense = get_best_defense(unit)
local recruit = wesnoth.units.create {
@ -266,7 +266,7 @@ return {
name = "X",
random_gender = false
}
local recruit_flat_defense = recruit:defense_on("Gt")
local recruit_flat_defense = 100 - recruit:defense_on("Gt")
local recruit_best_defense = get_best_defense(recruit)
local can_poison_retaliation = poisonable(recruit) and (not recruit:ability('regenerate'))
@ -758,7 +758,7 @@ return {
if eta_turn <= wesnoth.game_config.last_turn then
lawful_bonus = wesnoth.get_time_of_day(wesnoth.current.turn + eta).lawful_bonus / eta^2
end
local damage_bonus = AH.get_unit_time_of_day_bonus(recruit_unit.__cfg.alignment, lawful_bonus)
local damage_bonus = AH.get_unit_time_of_day_bonus(recruit_unit.alignment, lawful_bonus)
-- Estimate effectiveness on offense and defense
local offense_score =
(recruit_effectiveness[recruit_id].damage*damage_bonus+recruit_effectiveness[recruit_id].poison_damage)
@ -847,7 +847,7 @@ return {
for attack_range, count in pairs(unit_attack_range_count[recruit_id]) do
bonus = bonus + 0.02 * most_common_range_count / (attack_range_count[attack_range]+1)
end
local race = wesnoth.races[wesnoth.unit_types[recruit_id].__cfg.race]
local race = wesnoth.races[wesnoth.unit_types[recruit_id].race]
local num_traits = race and race.num_traits or 0
bonus = bonus + 0.03 * num_traits^2
if target_hex[1] then

View file

@ -21,7 +21,7 @@ function retreat_functions.min_hp(unit)
if (caution_factor < 0) then caution_factor = 0 end
caution_factor = math.sqrt(caution_factor) * 2
local hp_per_level = unit:defense_on(wesnoth.get_terrain(unit.x, unit.y))/15 * caution_factor
local hp_per_level = (100 - unit:defense_on(wesnoth.get_terrain(unit.x, unit.y)))/15 * caution_factor
local level = unit.level
-- Leaders are considered to be higher level because of their value
@ -212,7 +212,7 @@ function retreat_functions.get_retreat_injured_units(healees, regen_amounts, avo
rating = rating - enemy_count * 100000
-- Penalty based on terrain defense for unit
rating = rating - u:defense_on(wesnoth.get_terrain(loc[1], loc[2]))/10
rating = rating - (100 - u:defense_on(wesnoth.get_terrain(loc[1], loc[2])))/10
if (loc[1] == u.x) and (loc[2] == u.y) and (not u.status.poisoned) then
if is_healthy or enemy_count == 0 then

View file

@ -95,7 +95,7 @@ function ca_assassin_move:execution(cfg)
-- Penalties for damage by enemies
local enemy_rating_map = LS.create()
enemy_damage_map:iter(function(x, y, enemy_damage)
local hit_chance = (unit:defense_on(wesnoth.get_terrain(x, y))) / 100.
local hit_chance = (100 - unit:defense_on(wesnoth.get_terrain(x, y))) / 100.
local rating = hit_chance * enemy_damage
rating = rating / unit.max_hitpoints

View file

@ -7,6 +7,7 @@ local ca_bottleneck_attack = {}
function ca_bottleneck_attack:evaluation(cfg, data)
local attackers = AH.get_units_with_attacks {
side = wesnoth.current.side,
{ "and", wml.get_child(cfg, "filter") },
{ "filter_adjacent", {
{ "filter_side", { { "enemy_of", {side = wesnoth.current.side} } } }
} }
@ -63,7 +64,7 @@ end
function ca_bottleneck_attack:execution(cfg, data)
if BD_bottleneck_attacks_done then
local units = AH.get_units_with_attacks { side = wesnoth.current.side }
local units = AH.get_units_with_attacks { side = wesnoth.current.side, { "and", wml.get_child(cfg, "filter") } }
for _,unit in ipairs(units) do
AH.checked_stopunit_attacks(ai, unit)
end

View file

@ -141,7 +141,7 @@ local function bottleneck_get_rating(unit, x, y, has_leadership, is_healer, on_m
if (unit.hitpoints < unit.max_hitpoints) then
for xa,ya in H.adjacent_tiles(x, y) do
local adjacent_unit = wesnoth.units.get(xa, ya)
if adjacent_unit and (adjacent_unit.__cfg.usage == "healer") then
if adjacent_unit and (adjacent_unit.usage == "healer") then
leadership_rating = leadership_rating + 100
break
end
@ -230,9 +230,9 @@ function ca_bottleneck_move:evaluation(cfg, data)
local units = {}
if MAISD.get_mai_self_data(data, cfg.ai_id, "side_leader_activated") then
units = AH.get_units_with_moves { side = wesnoth.current.side }
units = AH.get_units_with_moves { side = wesnoth.current.side, { "and", wml.get_child(cfg, "filter") } }
else
units = AH.get_units_with_moves { side = wesnoth.current.side, canrecruit = 'no' }
units = AH.get_units_with_moves { side = wesnoth.current.side, canrecruit = 'no', { "and", wml.get_child(cfg, "filter") } }
end
if (not units[1]) then return 0 end
@ -306,7 +306,7 @@ function ca_bottleneck_move:evaluation(cfg, data)
for _,unit in ipairs(all_units) do
-- Is this a healer or leadership unit?
local is_healer = (unit.__cfg.usage == "healer")
local is_healer = (unit.usage == "healer")
local has_leadership = AH.has_ability(unit, "leadership")
local on_my_territory = BD_is_my_territory:get(unit.x, unit.y)
@ -355,7 +355,7 @@ function ca_bottleneck_move:evaluation(cfg, data)
local max_rating, best_unit, best_hex = 0
for _,unit in ipairs(units) do
local is_healer = (unit.__cfg.usage == "healer")
local is_healer = (unit.usage == "healer")
local has_leadership = AH.has_ability(unit, "leadership")
local on_my_territory = BD_is_my_territory:get(unit.x, unit.y)
@ -469,9 +469,9 @@ function ca_bottleneck_move:execution(cfg, data)
if BD_bottleneck_moves_done then
local units = {}
if MAISD.get_mai_self_data(data, cfg.ai_id, "side_leader_activated") then
units = AH.get_units_with_moves { side = wesnoth.current.side }
units = AH.get_units_with_moves { side = wesnoth.current.side, { "and", wml.get_child(cfg, "filter") } }
else
units = AH.get_units_with_moves { side = wesnoth.current.side, canrecruit = 'no' }
units = AH.get_units_with_moves { side = wesnoth.current.side, canrecruit = 'no', { "and", wml.get_child(cfg, "filter") } }
end
for _,unit in ipairs(units) do

View file

@ -157,7 +157,7 @@ function ca_fast_attack_utils.get_unit_defense(unit_copy, x, y, defense_maps)
if (not defense_maps[unit_copy.id][x]) then defense_maps[unit_copy.id][x] = {} end
if (not defense_maps[unit_copy.id][x][y]) then
local defense = (100. - unit_copy:defense_on(wesnoth.get_terrain(x, y))) / 100.
local defense = unit_copy:defense_on(wesnoth.get_terrain(x, y)) / 100.
defense_maps[unit_copy.id][x][y] = { defense = defense }
end

View file

@ -104,7 +104,7 @@ function ca_healer_move:evaluation(cfg, data)
local is_village = wesnoth.get_terrain_info(terrain).village
if is_village then rating = rating + 2 end
local defense = 100 - healer:defense_on(terrain)
local defense = healer:defense_on(terrain)
rating = rating + defense / 10.
end

View file

@ -47,7 +47,7 @@ function ca_protect_unit_move:execution(cfg, data)
local terrain_defense_map = LS.create()
reach_map:iter(function(x, y, data)
terrain_defense_map:insert(x, y, 100 - unit:defense_on(wesnoth.get_terrain(x, y)))
terrain_defense_map:insert(x, y, unit:defense_on(wesnoth.get_terrain(x, y)))
end)
local goal_distance_map = LS.create()

View file

@ -61,7 +61,7 @@ function ca_stationed_guardian:execution(cfg)
if (not AH.is_visible_unit(wesnoth.current.side, unit_in_way))
or (unit_in_way == guardian)
then
local defense = 100 - guardian:defense_on(wesnoth.get_terrain(xa, ya))
local defense = guardian:defense_on(wesnoth.get_terrain(xa, ya))
local nh = AH.next_hop(guardian, xa, ya)
if nh then
if (nh[1] == xa) and (nh[2] == ya) and (defense > best_defense) then

View file

@ -46,7 +46,7 @@ function ca_zone_guardian:execution(cfg)
if (not AH.is_visible_unit(wesnoth.current.side, unit_in_way))
or (unit_in_way == guardian)
then
local defense = 100 - guardian:defense_on(wesnoth.get_terrain(xa, ya))
local defense = guardian:defense_on(wesnoth.get_terrain(xa, ya))
local nh = AH.next_hop(guardian, xa, ya)
if nh then
if (nh[1] == xa) and (nh[2] == ya) and (defense > best_defense) then

View file

@ -7,7 +7,7 @@ function wesnoth.micro_ais.bottleneck_defense(cfg)
end
local required_keys = {}
local optional_keys = { "location_id", "x", "y", "enemy_loc", "enemy_x", "enemy_y",
local optional_keys = { "location_id", "x", "y", "enemy_loc", "enemy_x", "enemy_y", "[filter]",
"healer_loc", "healer_x", "healer_y", "leadership_loc","leadership_x", "leadership_y", "active_side_leader"
}
local score = cfg.ca_score or 300000

View file

@ -20,9 +20,9 @@
" + _"(Novice level, 23 scenarios.)"
{CAMPAIGN_DIFFICULTY EASY "units/elves-wood/fighter.png~RC(magenta>red)" ( _ "Fighter") ( _ "Beginner")}
{CAMPAIGN_DIFFICULTY NORMAL "units/elves-wood/hero.png~RC(magenta>red)" ( _ "Hero") ( _ "Normal")} {DEFAULT_DIFFICULTY}
{CAMPAIGN_DIFFICULTY HARD "units/elves-wood/champion.png~RC(magenta>red)" ( _ "Champion") ( _ "Challenging")}
{CAMPAIGN_DIFFICULTY EASY "data/campaigns/Heir_To_The_Throne/images/units/konrad-fighter.png~RC(magenta>red)" ( _ "Fighter") ( _ "Beginner")}
{CAMPAIGN_DIFFICULTY NORMAL "data/campaigns/Heir_To_The_Throne/images/units/konrad-commander.png~RC(magenta>red)" ( _ "Commander") ( _ "Normal")} {DEFAULT_DIFFICULTY}
{CAMPAIGN_DIFFICULTY HARD "data/campaigns/Heir_To_The_Throne/images/units/konrad-lord.png~RC(magenta>red)" ( _ "Lord") ( _ "Challenging")}
[about]
images = story/httt_story1.jpg,story/httt_story2.jpg,story/httt_story3.jpg,story/httt_story4.jpg,story/httt_story5.jpg,story/httt_story6.jpg,story/httt_story7.jpg,story/httt_story8.jpg

View file

@ -25,7 +25,7 @@
# wmllint: local spelling marchlanders
description= _ "As the shadow of civil war lengthens across Wesnoth, a band of hardy marchlanders revolts against the tyranny of Queen Asheviere. To win their way to freedom, they must defeat not just the trained blades of Wesnothian troops but darker foes including orcs and undead.
" + _"(Novice level, 8 scenarios.)"
" + _"(Novice level, 7 scenarios.)"
[about]
title = _ "Campaign Design"

View file

@ -1,42 +0,0 @@
Re, Re, Rr, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Ww, Gg, Gg, Gs, Gd^Fp, Gd^Fp, Gd^Fp, Gd^Fp, Gd^Fp, Gd^Fp, Gs^Fp, Hh, Mm, Mm, Hh, Mm, Hh, Mm, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp
Re, Re, 1 Rr, Gs^Fds, Rr, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fp, Gs^Fmw, Gs^Fms, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fms, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Ww, Gg, Gs, Gd, Gd^Fp, Gd^Fp, Gd^Fmw, Gs^Fds, Gd^Fp, Gs^Fp, Gs^Fp, Hh, Mm, Mm, Hh, Mm, Hh, Mm, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp
Gs^Fds, Gs^Fds, Gs^Fms, Rr, Gs^Fms, Rr, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fp, Gs^Fms, Gs^Fp, Gs^Vh, Gs^Fp, Ww, Ww, Gs^Fp, Gs, Gd^Fp, Gd^Fp, Gs^Fp, Gs^Fp, Mm, Mm, Hh, Gs^Fp, Gs^Fp, Mm, Hh, Qxe, Qxe, Mm, Mm, Mm, Hh, Gs^Fds, Gs^Fp, Gs^Fp
Gs^Fms, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fms, Rr, Rr, Gs^Fds, Ce, Ce, Gs, Gs^Vh, Gs, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Wo, Ww, Gs^Fp, Gs^Fp, Gs^Fp, Mm, Gs^Fp, Mm, Hh, Mm, Mm, Mm, Mm, Mm, Gs^Fp, Mm^Xm, Mm, Gs^Fp, Mm, Qxe, Mm, Hh, Gs^Fp, Gs^Fp, Gs^Fp
Gg, Gg, Gs^Fms, Gs^Fmw, Gs^Fds, Gs^Fms, Ce, Ke, Rr, Gs, Gs^Vl, Gs, Gs, Gs, Gs^Fp, Gs^Fds, Gs^Fp, Wo, Ww, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Mm, Qxe, Mm, Qxe, Mm, Mm^Xm, Mm^Xm, Mm^Xm, Mm^Xm, Xu, Mm^Xm, Mm^Xm, Mm, Qxe, Mm, Hh, Gs^Fp, Gs^Fp, Gs^Fp
Gg, Gg, Gs^Fms, Gs^Fp, Gs^Fds, Ce, Gs^Vh, Gs, Gs, Rr, Rr, Gs, Gs^Fp, Gs^Vh, Ce, Gs^Fp, Gs^Fp, Ww, Gs^Fp, Gs^Fms, Gs^Fms, Gs^Fp, Gs^Fmw, Hh, Mm, Qxe, Qxe, Qxe, Xu, Xu, Xu, Xu, Ql, Xu, Xu, Mm^Xm, Mm, Hhd, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp
Gg, Gg, Gs^Fms, Gs^Fp, Gs^Fp, Gs^Fms, Gs, Gs, Gs, Gs, Gs^Fp, Rr, 2 Ke, Ce, Gs^Fp, Gs^Fp, Ww, Ww, Gs^Vh, Gg, Gg, Gs^Fp, Gg, Gs^Fp, Hh, Hh, Qxe, Xu, Uu^Uf, Uu^Vu, Uu, Uu, Uu, Uu, Mm, Mm^Xm, Qxe, Mm, Hh, Gs^Fp, Gs^Fds, Gs^Fp
Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Vh, Gs^Fp, Gs, Gs^Fp, Ce, Ce, Rr, Rr, Ww^Bw\, Ww, Ww, Gs^Fp, Gs^Fp, Gg, Gg, Gs^Fp, Gs^Fp, Gs^Fp, Hh, Mm, Mm^Xm, Xu, Uu, Uu, Ce, Ce, 3 Kud, Ce, Xu, Mm, Gs^Fp, Qxe, Hh, Gs^Fp, Gs^Fp, Gs^Fp
Gs^Fms, Gs^Fms, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Vh, Gs^Fp, Gs^Fds, Ww, Ww, Ww^Bw|, Ww, Gs^Fp, Re, Re, Ww, Ww, Gs^Fp, Ds, Ds, Ds, Hh, Mm, Mm, Hhd, Uu, Xu, Uu, Uh, Cud, Uu, Cud, Xu, Mm^Xm, Hh, Hh, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp
Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fms, Gs^Fp, Gs^Fp, Ww, Gs^Fp, Ww, Ww, Gs^Fms, Ww, Re, Gs^Fp, Gs^Fp, Gg, Gg^Vh, Re, Re, Ww, Ww, Ds, Ds, Re^Fp, Re^Fp, Hhd, Hhd, Qxe, Mm^Xm, Xu, Xu, Uu, Uu, Xu, Mm^Xm, Mm^Xm, Gd^Fp, Mm, Gs^Fp, Gs^Fp, Re, Re
Gs^Fp, Gs^Fp, Gs^Fms, Gs^Fp, Ww, Ww, Gs^Fds, Ww, Gs^Fds, Gs^Fms, Re, Re, Gg, Gg, Gg, Gg, Gs^Fp, Gs^Fp, Re, Gs^Fp, Gs^Fp, Ww, Ds, Re^Fp, Re^Fp, Re, Qxe, Qxe, Mm, Mm^Xm, Hhd, Re, Re^Fp, Mm^Xm, Re^Fmw, Mm, Mm, Gs^Fp, Re, Gs^Fp, Re, Re
Gs^Fp, Gs^Fp, Ww, Ww, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Re, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fp, Hh, Gs^Fp, Gs^Fp, Re, Gs^Fp, Gs^Fp, Gs^Fp, Ww, Ww, Ds, Re^Fp, Qxe, Qxe, Gll^Fp, Gll^Fp, Mm, Mm, Re^Fmw, Re, Re^Fp, Mm, Mm, Re, Re, Gll^Fp, Re, Gll^Fp, Gll^Fp
Ww, Ww, Ww, Gs^Fds, Gg, Gs^Vl, Gs^Fds, Gs^Fds, Re, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fp, Gg^Vh, Hh, Hh, Hh, Re, Hh, Hh, Hh, Ds, Ds, Ww, Re^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Re^Fp, Gll^Fp, Re, Re, Re, Hh, Hh, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp
Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gs^Fds, Gs^Fds, Re, Gs^Fms, Gs^Fms, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Hh, Hh, Re, Re, Hh, Gs^Fp, Gs^Fp, Ww, Ww, Re^Fp, Re^Fp, Re, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Re, Re, Gll^Fp, Hh, Gll^Fmw, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp
Gs^Fds, Gs^Fmw, Re, Gs^Fds, Gs^Fds, Gs^Fms, Gg, Gs^Fmw, Re, Re, Re, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Hh, Re, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Ss, Re, Re, Gll^Fp, Re, Gll^Fp, Re, Gll^Fp, Re, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp
Re, Re, Gs^Fds, Re, Re, Gg, Re, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Re, Re, Gs^Fp, Gs^Fms, Gs^Fp, Gs^Fp, Gs^Fp, Re, Gs^Fms, Gs^Fp, Gs^Fmw, Re, Ww^Bw/, Ss, Gll^Fp, Hh, Gll^Fp, Gll^Fp, Re, Re, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gg, Gs, Gs, Gs^Vl, Gll^Fp, Gll^Fp
Gs^Fds, Gs^Fds, Gs^Vh, Gs^Fds, Gs^Fds, Re, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fp, Gs^Fp, Gs^Fp, Re, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Re, Re, Re, Gs^Fp, Ss, Ss, Hh, Hh, Gll^Fp, Gs^Vl, Gll^Fp, Gll^Fp, Re, Re, Gll^Fmw, Gll^Fp, Gll^Fp, Gg, Gg, Gg, Gs, Gll^Fp, Gll^Fp
Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Rd, Re, Re, Gs^Fms, Gs^Fp, Re, Gs^Fp, Gs^Fms, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fms, Gs^Fp, Gs^Fp, Gs^Fp, Re, Gs^Fp, Gs^Fp, Gs^Fp, Ww, Gll^Fp, Gs, Gll^Fp, Gll^Fp, Re, Re, Gg, Gll^Fp, Re, Gll^Fp, Gg, Gg, Gll^Fmw, Gll^Fp, Gll^Fp, Gll^Fp
Gs^Fds, Gs^Fmw, Rd, Rd, Rd^Fds, Rd, Rd^Fp, Rd^Fp, Gll^Fds, Re, Re, Re, Gs^Fp, Gs^Fp, Gs^Fms, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Hh, Hh, Gs^Fp, Hh, Hh, Gs^Fp, Ww, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Re, Gg, Gg, Gll^Fp, Gll^Fp, Re, Re, Gll^Fp, Gll^Fp, Gll^Fp, Re, Re
Gs^Fds, Gs^Fds, Rd, Gs^Fms, Gs^Fms, Rd, Rd, Rd^Fdw, Gll, Gll^Fp, Gll^Fms, Re, Re, Gs^Fms, Gs^Fp, Gs^Fp, Re, Gs^Fp, Gs^Fp, Gs^Vh, Gs^Vh, Hh, Hh, Gs^Fp, Gs^Fp, Ww, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gs^Fmw, Re, Gg, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Re, Re, Re, Gll^Fp, Gll^Fp
Rd, Rd, Gs^Fms, Gs^Fdw, Mm, Hhd, Rd, Rd^Fp, Hhd, Hhd, Ss, Re^Fdw, Gll^Fp, Re, Re, Re, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fms, Gs^Fp, Gs^Fp, Gs^Fp, Ww, Ww, Gll^Fp, Gll^Fp, Hh, Gll^Fp, Gll^Fp, Re, Gg, Gll^Fp, Gll^Fmw, Hh, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp
Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Mm, Mm, Rd^Fp, Hhd, Rd, Mm, Ss, Ss, Re^Fdw, Gll^Fp, Re, Gs^Fmw, Gs^Fms, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Ww, Ww, Gg, Gs^Fp, Gll^Fp, Gll^Fp, Gs^Vl, Hh, Gll^Fp, Re, Re, Gg, Gg, Gll^Fp, Gll^Fms, Gll^Fmw, Hh, Hh, Gll^Fmw, Gll^Fp
Gs^Fp, Gs^Fdw, Hhd, Mm, Hhd, Rd, Ds, Rd, Ce, Ss, Re, Hhd, Mm, Re^Fp, Gs^Fp, Re, Re^Fp, Gs^Fp, Gs^Fdw, Gs^Fp, Gs^Fp, Gs^Fms, Ww, Gs^Fp, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Re, Re, Re, Gg, Gll^Fp, Gll^Fp, Gll^Fp, Hh, Gll^Fp, Gll^Fp
Gs^Fms, Gs^Fms, Mm, Gs, Ss, Ss, Ds, Ce, 4 Ke, Ce, Re^Uf, Mm, Mm, Gs^Fms, Hh, Hh, Re, Gs^Fp, Gs^Fp, Wo, Gs^Fp, Gs^Fp, Ww, Gs^Fp, Gs^Vh, Gg, Gg, Gg, Hh, Gll^Fp, Re, Re, Gll^Fp, Gll^Fp, Gll^Fp, Re, Re^Fp, Re^Fmw, Gll^Fmw, Gll^Fp, Gll^Fds, Gll^Fp
Gs^Fms, Gs^Fms, Mm, Gs, Ss, Re^Uf, Re^Uf, Ce, Ce, Ce, Re^Uf, Hhd, Mm, Gs^Fms, Gs^Fms, Hh, Re, Gs^Fms, Gs^Fmw, Gs^Fms, Gs^Fms, Gs^Fms, Ww, Gs^Fp, Gs^Fp, Gs^Fp, Gll^Fmw, Hh, Gll^Fmw, Gll^Fp, Re^Fp, Gll^Fp, Gll^Fdw, Gll^Fmw, Gs^Fmw, Gll^Fdw, Gll^Fmw, Re, Re, Gll^Fp, Gll^Fmw, Gll^Fp
Gs^Fms, Gs^Fdw, Gs^Fds, Mm, Mm, Mm, Gll^Fp, Re, Ds, Ss, Ss, Ss, Mm, Mm, Gs^Fms, Gs^Fdw, Re, Gs^Fms, Gs^Fms, Gs^Fmw, Gs^Fms, Gs^Fms, Gs^Fms, Ww, Ww, Ds, Ds, Gll^Fp, Gll^Fmw, Re, Gll^Fmw, Gll^Fms, Gs, Gll^Fp, Gll^Fmw, Gll^Fp, Gll^Fp, Gll^Fp, Re, Gll^Fp, Gll^Fdw, Gll^Fp
Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Hh, Mm, Mm, Gll^Fdw, Mm, Ds, Mm, Mm, Mm, Gs^Fms, Re, Re^Fds, Gs^Fds, Re, Re, Re, Re, Gs^Fmw, Gs^Fms, Ds, Ds, Ww, Ds, Gll^Fp, Re^Fp, Re, Gs, Gs, Gs, Gs, Gll^Fp, Gll^Fp, Mm, Gs^Fmw, Gs^Fp, Re, Re, Re
Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fdw, Gs^Fds, Hh, Gs, Hh, Gs, Ds, Mm, Mm, Gs^Fds, Gs^Fdw, Re, Gs^Fms, Gs^Fmw, Gs^Fds, Gs^Fds, Gs^Fmw, Gs^Fds, Re^Fds, Re, Gs^Fmw, Gs^Fms, Ww, Ds, Gll^Fmw, Re, Gd, Gs, Gs, Gd^Fp, Gd^Fdw, Mm, Mm, Gs, Gs^Fdw, Gs, Gd^Fp, Gd^Fp, Gd^Fp
Gs^Fms, Gs^Fms, Gg, Gs^Fds, Gg, Gg, Gs, Hh, Hh, Hh, Gs^Fms, Gs^Fms, Gs^Fms, Re, Gs^Fms, Gs^Fds, Gs^Fds, Hh, Mm, Hh, Mm, Gs^Fds, Gs^Fds, Re, Re^Fds, Ww, Ds, Gll^Fp, Re, Gs, Gll^Fmw, Gll^Fp, Mm, Mm, Gs, Mm, Gs, Gd, Gd, Mm, Gd^Fmw, Gd^Fp
Gg, Gg, Gg, Gs^Fds, Gg, Gg, Gg, Gs, Gs^Fms, Gs^Fp, Gs^Fms, Gs^Fms, Re, Re, Gs^Fds, Hh, Mm, Mm, Mm, Mm, Mm, Mm, Hh, Gs^Fds, Gs^Fds, Ww, Ww, Gs^Fp, Gll^Fp, Gll^Fp, Gs^Fmw, Mm, Mm, Gs, Gd, Gd, Gd, Gd^Fdw, Mm, Mm, Gd^Fmw, Gd^Fp
Gs^Fms, Gs^Fms, Gs^Fms, Gg, Gs^Fms, Gg, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fds, Re, Gs^Fds, Gs^Fms, Gs^Fds, Mm, Mm, Mm, Mm^Xm, Mm^Xm, Mm^Xm, Mm^Xm, Mm, Mm, Hh, Gs^Fds, Ds, Ww, Gs^Fp, Ss^Vhs, Gs^Fmw, Gs^Fdw, Hh, Mm, Mm, Mm, Gd^Fmw, Re^Fdw, Re, Rb^Uf, Mm, Mm, Mm
Gs^Fp, Gs^Fms, Gs^Fp, Gs^Fms, Gg, Gg, Gs^Fp, Gs^Fms, Re, Re, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Hh, Mm, Mm, Mm, Mm^Xm, Mm, Mm, Mm, Mm, Gs^Fds, Ds, Ww, Ss, Ss, Ss, Ss, Gs^Fdw, Mm, Gs^Fdw, Mm, Re, Mm, Rb, Rb^Uf, Mm, Mm, Mm
Gs^Fp, Gs^Fp, Gs^Fp, Gg, Gs^Fp, Gg, Gs^Fp, Re, Gs^Fms, Re, Gs^Fms, Gs^Fds, Gs^Fmw, Gs^Fds, Gs^Fds, Mm, Hh, Mm, Mm, Mm, Mm, Hh, Hh, Hh, Gs^Fds, Gs^Fms, Ww, Gs^Fdw, Ss, Mm, Hh, Hh, Mm, Mm^Xm, Mm, Mm, Hhd, Hhd, Hhd, Mm, Hh, Hh
Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Re, Re, Gs^Fds, Re, Re, Gs^Fds, Gs^Vl, Gs^Fds, Gs^Fms, Gg, Gg, Gg, Mm, Mm, Mm, Mm, Gs^Fds, Gs^Fdw, Gs^Fds, Gs^Fmw, Ww, Gs^Fdw, Hh^Fdw, Mm, Mm, Hhd^Fdw, Mm, Mm^Xm, Hhd, Mm, Mm^Xm, Mm, Mm, Hhd, Hhd, Hhd
Re, Re, Re, Gs^Fp, Re, Gs^Fp, Gs^Fms, Gs^Fms, Gs^Fp, Gs^Fms, Re, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gs^Fms, Gs^Fdw, Gs^Fds, Mm, Gs^Fds, Gs^Fdw, Ww, Gs^Fms, Ww, Ww, Ss, Gs^Fdw, Gs^Fdw, Hh^Fdw, Mm, Gd^Fdw, Hhd^Fdw, Hhd, Qxe, Mm, Cud, Uu^Vu, Rb^Uf, Mm, Mm^Xm, Mm^Xm
Gs^Fp, Gs^Fp, Hh, Re, Gs^Fp, Gs^Fp, Mm, Gs^Fms, Gs^Fp, Gs^Fms, Gs^Fds, Re, Re, Gs^Fms, Gs^Fds, Gs^Fms, Gs^Vh, Gs^Fds, Ss, Gs^Fds, Ww, Ww, Ss, Ww, Gs^Fdw, Gs^Fp, Ss, Ss, Ss^Vhs, Gs^Fdw, Gd^Fdw, Hhd^Fdw, Qxe, Rb^Uf, Qxe, Cud, 5 Kud, Cud, Mm^Xm, Mm^Xm, Mm^Xm, Mm^Xm
Gs^Fp, Gs^Fp, Gs^Vh, Re, Hh, Hh, Hh, Mm, Mm, Gs^Fp, Gs^Fp, Gs^Fdw, Gs^Fms, Re, Re, Gs^Fds, Gs^Fds, Gs^Fds, Ww, Ww, Ss, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Ss^Vhs, Gs^Fmw, Gs^Fdw, Gg, Gg, Gd^Fdw, Hhd^Fdw, Mm, Qxe, Rb^Uf, Cud, Cud, Cud, Mm, Mm^Xm, Mm^Xm, Mm^Xm
Gs^Fp, Gs^Fp, Re, Re, Re, Gs^Fp, Gs^Vh, Hh, Hh, Mm, Mm, Gs^Fms, Gs^Fms, Gs^Fds, Re, Gs^Fms, Gs^Fds, Ww, Gs^Fp, Ss, Ss^Vhs, Gs^Fp, Gs^Fp, Gs^Fmw, Gg, Gs^Fmw, Gg, Gd^Fdw, Gd^Fdw, Gg, Gd^Fdw, Mm, Hhd, Qxe, Hhd, Hhd, Mm, Mm, Mm, Mm, Rb^Uf, Rb^Uf
Gs^Fp, Gs^Fp, Gs^Fp, Gg, Re, Re, Re, Gs^Fp, Hh, Mm, Mm, Mm, Gs^Fms, Gs^Fms, Gs^Fms, Re, Ww^Bw\, Ww, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gg, Hh, Gg, Gg, Gs^Fmw, Gd^Fdw, Mm, Hhd^Fdw, Rb, Rb, Mm, Mm, Mm^Xm, Rb^Uf, Qxe, Qxe, Qxe, Rb^Uf, Rb^Uf
Gs^Fp, Gs^Fp, Gs^Fp, Gs^Vl, Gs^Fp, Gg, Gg, Re, Re, Mm, Mm, Gs^Fp, Ww, Ww, Ww, Ww, Gs^Fp, Re, Re, Gs^Fp, Gs^Fp, Gs^Fp, Gg, Gg, Gg, Hh, Gg, Gg, Gd^Fmw, Rb^Uf, Rb^Uf, Hhd, Mm, Hhd, Mm, Hhd, Rb^Uf, Rb^Uf, Mm, Mm, Mm, Mm
Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gg, Gs^Fp, Gg, Re, Gs^Vh, Hh, Gs^Fp, Ww, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Vh, Gs^Fp, Re, Gs^Fp, Gg, Gs^Fp, Gs^Fp, Gs^Fmw, Gg, Gs^Fp, Gs^Fdw, Gs^Fp, Gd^Fmw, Gd^Fdw, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm
Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gg, Gs^Fp, Gg, Re, Gg, Hh, Gs^Fp, Ww, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs, Gs^Fp, Re, Gs^Fp, Gg, Gs^Fp, Gs^Fp, Gs^Fp, Gg, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Gd^Fp, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm

View file

@ -0,0 +1,29 @@
Gg, Gg, Gs, Gg, Gg^Es, Re, Re, Re, Gg^Efm, Gg, Gg, Gg, Gs, Hh, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fms, Gs^Fds, Gs^Fms, Gs^Fms, Gll^Fp, Gll^Fmw, Gs^Fds, Hhd, Hhd, Rb^Fdw, Rb, Hhd^Fmw, Hhd, Hhd^Fp, Gll^Fp, Gll^Fdw, Wwg, Wwg, Gll^Fdw, Gll^Fdw, Sm, Sm, Gll^Fp, Gll^Fp
Gg^Efm, Gs, Re^Gvs, Gs, Gs, Hh, Hh^Es, Rr, Hh, Gg, Gg^Efm, Gs^Es, Gs, Gs, Gg, Gg^Em, Gs^Fp, Gs^Fms, Gs^Vc, Gs^Fms, Gll^Fmw, Gll^Fp, Gll^Fmw, Md, Ss^Emf, Hhd^Fmw, Sm, Sm^Edb, Ss^Edb, Hhd^Emf, Gll^Fmw, Gll^Fdw, Ss^Em, Wwg, Rb^Fdw, Gll^Fmw, Gll^Fmw, Sm, Gll^Fdw, Gll^Fmf, Gll^Fmw
Gs, Re^Gvs, Re^Gvs, Re^Gvs, Hh^Fms, Rr, Gs^Fms, Ce, Gs^Fms, Rr, Hh, Gg, Hh, Gs^Fms, Re, Gg, Re, Re, Gs^Fms, Gs^Fms, Gs^Fp, Gll^Fmw, Hhd^Em, Rb^Fdw, Ss^Em, Ss^Em, Sm, Sm^Edb, Rb, Ss^Em, Rb^Fdw, Gll^Fmw, Ss^Tf, Ss^Emf, Ss^Em, Rb^Fdw, Gll^Fp, Rb^Fdw, Rb^Fdw, Ss, Ss
Gg, Gs, Gs^Vh, Gs^Es, Rr, Gs^Fms, 4 Ke, Mm, Ce, Gs^Fms, Hh, Hh, Gs, Re, Gg^Efm, Gs, Gs^Fp, Re, Re, Gs^Fp, Gs^Vl, Gll^Fmw, Hhd, Hhd, Gll^Fmw, Ss^Edb, Ss, Ss, Hhd^Em, Rb, Sm, Ss, Ss^Em, Ss^Em, Gll^Fdw, Gll^Fmw, Gll^Fmw, Gll^Fmw, Gll^Fmw, Gll^Fmw, Gll^Fp
Gg^Es, Gg, Gs^Fp, Gs^Fp, Gs^Fms, Rr^Es, Ce, Ce, Ke, Rr, Hh, Gg, Gg^Em, Gg^Vh, Gs, Gs, Gs^Fp, Gs, Gs^Fp, Gs^Em, Gll^Fmw, Gs^Fp, Re, Re, Rb^Fdw, Sm, Sm, Hhd, Re, Sm^Emf, Sm^Em, Rb^Fdw, Wwg, Rb^Fdw, Rb^Fmw, Gll^Fmw, Gll^Em, Gll^Fp, Gll^Emf, Gll^Fmw, Re
Gg, Hh, Hh^Fms, Gs^Fds, Rr, Hh, Gs^Fms, Rp, Gs^Fms, Hh^Fds, Hh, Gg, Gs^Fp, Gs^Fp, Gs, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fms, Gs^Fms, Gs^Fp, Gs^Fp, Gll^Fmw, Rb^Fdw, Gll^Fmw, Gll^Fmw, Re, Gd^Fmw, Gd^Fdw, Sm^Em, Ss^Vhs, Rb^Fdw, Sm, Sm, Ss^Edb, Ss, Ss^Em, Ss, Gll^Fmw, Gll^Fp, Gll^Fdw
Re, Hh, Gg^Efm, Gs^Fp, Gs, Rp, Hh^Es, Ce, Hh^Es, Gs^Fms, Rp^Es, Re, Re, Re, Gs, Gs, Re, Gs^Em, Gs^Fms, Gll^Fp, Gll^Fmf, Gll^Fmw, Gll^Fmw, Gll^Fp, Gll^Fmw, Ww^Ewl, Gll^Fdw, Gd^Fmw, Gd^Fdw, Ss, Sm, Ss^Tf, Ss, Sm^Edb, Ss^Edb, Sm^Edb, Sm, Wwg, Ss, Ss, Ss
Gg, Re, Re, Gg, Gs, Gs, Gs, Gs^Fp, Re, Re^Es, Re, Rp, Re, Re, Re, Re, Gs^Fp, Gs^Fp, Gs^Fp, Gll^Fp, Gs^Fp, Gg, Gll^Fp, Gll^Fp, Gll^Fmw, Gll^Fp, Gll^Fp, Gll^Fdw, Rb^Fmw, Ss, Sm, Sm^Emf, Rb^Fdw, Wwg, Wwg, Sm, Ss^Em, Wwg, Wwg^Ewl, Gll^Fdw, Gll^Fdw
Gg^Efm, Re, Gs^Fp, Gs^Fp, Gs^Fp, Gg^Em, Gs^Fp, Gg, Gs, Re, Gs^Fmw, Rp, Re, Rp^Es, Rp, Re, Gs, Gs^Fp, Re, Gs^Fms, Gll^Fmf, Gll^Fmf, Gll^Fp, Gll^Fp, Gll^Fmw, Gll^Fp, Gll^Fmw, Ss, Gll^Fp, Rb^Fmw, Gll^Fp, Gll^Fp, Ke, Ce, Re^Vct, Ss^Em, Ss^Tf, Ss^Emf, Gll^Fdw, Gll^Fmw, Ss
Gll, Gg^Es, Gg, Gs^Fms, Gs^Fms, Re, Re, Gs, Gs, Gs, Gs^Fp, Gs^Fp, Re, Re, Rp^Es, Gs^Fp, Rp^Es, Re, Re, Gll^Fp, Gll^Fp, Gs^Fp, Gll^Fp, Gll^Fp, Gll^Fmw, Gll^Fmf, Gll^Fp, Gll^Em, Ss, Gll^Fdw, Rb, Ce, Ce, Ce, Gll^Fp, Gll^Fdw, Ss, Gll^Fdw, Gd^Fmw, Gll^Fmw, Gll^Fmf
Gll, Gs^Fp, Gll, Gs^Fp, Gg, Gs^Fp, Gs^Fms, Gs, Re, Gs^Fp, Gs, Gs, Gll^Fp, Gs^Fmw, Gll, Rp^Es, Re, Rp, Gll^Fdw, Rp, Rp, Gll^Fp, Re, Gll, Gll^Fdw, Gd^Fmf, Gd^Fmf, Gd^Fmw, Gll^Fmw, Gll^Fmw, Rb, Re^Vct, Re^Es, Hhd, Gll^Fp, Gll^Fmw, Gll^Fdw, Gll^Fmw, Gd^Fp, Gd^Fmf, Gll^Fmw
Gll, Gs^Em, Gs, Gll^Em, Gll^Emf, Gs^Fp, Gll^Fmw, Gs^Fms, Gll^Fmw, Gs, Gll^Fp, Gs^Vc, Gll^Fp, Gll, Gll^Fmw, Re, Gll^Fp, Hhd, Hhd^Fdw, Re, Gll^Fdw, Gll, Re^Fdw, Re, Gd, Gd^Fmf, Gd^Fmw, Gll^Fmw, Gll^Fp, Gll^Fmw, Hhd, Hhd^Fmw, Hhd^Vhhr, Hhd^Fmw, Re, Re, Hhd, Gd^Fp, Gll^Fmw, Gll^Fdw, Gll^Fdw
Gll^Fp, Gll^Fp, Gll^Fmw, Gll^Fmw, Gs^Fmw, Gs^Fp, Gll^Fmw, Gll^Fmw, Gll, Gll^Fp, Re, Gll^Fp, Gs^Fmw, Gll^Fp, Gll^Fp, Gll^Fp, Hhd^Fp, Gll^Fmw, Gll^Fmw, Re, Gll^Fmw, Rp, Re, Re^Es, Re, Gll^Fdw, Gll^Fdw, Gd^Fdw, Gll^Fmw, Hhd^Fp, Gll^Fmw, Gll^Fp, Gll^Fmw, Gll^Fmf, Gll^Fmw, Hhd, Gll^Fp, Gll^Fdw, Gll, Gll^Fp, Gll^Fmw
Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gll^Fp, Gs^Fms, Gll^Emf, Gll^Fp, Gll^Fp, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fms, Hhd^Fms, Hhd^Fms, Gll^Fmw, Re, Re, Re^Es, Rp, Re, Gll^Fdw, Gll, Re, Rp, Re, Gll^Em, Re, Gll^Fmw, Hhd^Fp, Gll^Fmw, Hhd^Fmw, Gll^Fp, Gg^Fmf, Hhd^Fp, Hhd, Gll^Fmw, Gll^Fmw
Gll^Fp, Gs^Fms, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Gll^Fmw, Gs^Fms, Gll^Fp, Hhd^Fms, Hhd^Fms, Gs^Fms, Gs^Fms, Gs^Fds, Gll^Fp, Hhd^Fmw, Gs^Fms, Gll^Fp, Gll^Fmw, Gll^Fmw, Gll^Fp, Gll^Fdw, Gll^Fdw, Rp, Re, Re^Es, Gll^Fmw, Re, Rp, Re^Es, Gll^Fp, Hhd^Fmw, Hhd^Fmw, Gll^Fmw, Gd^Fp, Hhd^Fmf, Gll^Fdf, Hhd^Fmw, Hhd^Fmw, Hhd^Fdw, Hhd
Gll^Fmw, Gll^Fmw, Gs^Fds, Gll^Fp, Gll^Fp, Gll^Fmw, Gll^Fp, Gll^Fp, Gll^Fmw, Hhd^Fp, Gll^Emf, Gll^Fp, Gll^Fp, Gs^Fms, Gll^Fmw, Gll^Emf, Gll, Hhd^Fp, Gll^Fp, Gll^Fp, Hhd, Gll^Fmw, Gll^Fmw, Re, Hhd^Fp, Re, Gll^Fp, Re, Rp, Re, Gll^Fdw, Gll^Fmw, Gll^Fmw, Gll^Fdw, Gll^Fmw, Gd^Fmf, Gd^Fmf, Gd^Fp, Gll^Fp, Gll^Fmw, Gll^Fp
Gll^Fp, Gs^Fms, Gs^Fms, Gs^Fms, Re^Em, Gll^Fmw, Gll^Fp, Hhd^Fp, Re^Fmw, Gll^Fmw, Gll^Fp, Gll^Fp, Gll^Em, Gll^Fmw, Gll^Fp, Gll^Em, Gd^Fmw, Gd^Fp, Gll, Gll^Fmw, Gll^Fp, Gll^Fmw, Gll^Fp, Gll^Fmf, Hhd^Fmf, Hhd^Fp, Hhd^Fmf, Gll^Fmw, Rp, Re, Re, Hhd^Fmf, Gll^Em, Gll^Emf, Gll^Fmw, Hhd^Fp, Gll^Fmf, Gd^Fp, Hhd^Fp, Gll^Fmf, Gs^Fms
Gs^Fms, Gs^Fms, Gll^Fp, Gll^Fp, Hhd^Fmw, Re, Hhd, Re, Re^Fdw, Gll, Hhd^Fdw, Gll^Fmw, Ss, Gll^Vht, Gll^Fmw, Gll^Fp, Gd^Fmw, Gll^Fmw, Gll, Gll^Fmf, Gd^Fmf, Gll^Fmw, Hhd^Fmf, Gll^Fmf, Gll^Fmf, Gll^Fdf, Gd^Fmf, Gd^Fmw, Gll^Fmw, Rp, Rp, Re^Es, Gll^Fmw, Hhd^Fmw, Md, Hhd^Fmf, Gll^Fmf, Gll^Fdf, Gll^Fmw, Hhd^Fp, Hhd^Fp
Gll^Fmw, Gll^Fp, Gll^Fmw, Hhd^Fmw, Hhd^Fdw, Md, Md, Re, Hhd, Hhd, Re^Vct, Gll^Fdw, Ce, Ss, Gll^Fdw, Gd^Fmw, Gd^Fmw, Gll^Fmf, Hhd^Fmf, Gd^Fp, Gll^Fdf, Hhd^Fmf, Gd^Fmw, Gd^Fmw, Gll, Gll^Fp, Hhd^Fp, Gll^Fmf, Gd^Fp, Hhd^Fp, Re, Re^Es, Re^Es, Rp, Hhd^Fmw, Hhd^Fp, Hhd^Fp, Gd^Fp, Gll^Fp, Hhd^Fmf, Gs^Fp
Gll^Fp, Gll^Fmw, Gll^Fdw, Sm^Em, Sm, Md, Hhd^Fdw, Hhd^Fmw, Gll^Fmw, Gll^Fmw, Re^Em, Ce, 1 Ke, Ce, Gll, Gll^Em, Gd^Fmw, Hhd^Fmf, Hhd^Fp, Gll^Fdf, Gll^Fdf, Gd^Fp, Gll^Fmw, Gll^Fmf, Gll^Fp, Hhd^Em, Hhd, Gll^Fmf, Gll^Fmw, Gd^Fmw, Gd, Gll^Fdw, Re, Re, Re, Hhd^Es, Hhd^Em, Gd^Fmw, Gll^Fmw, Hhd^Fmf, Md
Re, Gll^Fp, Ss^Tf, Sm^Em, Rb^Fdw, Wwg, Wwg^Ewl, Gll^Fdw, Ss, Gll^Fp, Gll^Fp, Gll^Fp, Ce, Ce, Re^Vct, Gd^Fmw, Gd^Fmf, Gd^Fmf, Gd^Fmf, Hhd^Fmf, Hhd^Fmf, Gd^Fdf, Gll^Fmf, Gll^Fmf, Gll^Fmw, Hhd^Fmw, Gll^Fp, Hhd, Gll^Fmw, Gll^Fmf, Gll^Fmf, Gd^Fmw, Gll^Fdw, Re, Rb, Rp, Gll^Fdw, Gll^Fmw, Hhd^Fmw, Hhd^Fp, Hhd
Rb^Fdw, Gll^Fmw, Ss^Emf, Ss^Emf, Wwg, Wwg, Sm, Ss^Em, Ss, Gll^Fmw, Gll^Fmw, Gll^Fp, Gll^Fp, Ce, Gll^Fp, Gll^Fp, Ce, Gll^Fp, Ce, Gll^Fp, Hhd^Fmf, Hhd^Fmf, Gll^Fp, Re, Gll^Fp, Gll^Fmf, Hhd^Fdf, Gll^Fmf, Gd^Fmf, Gll^Fdf, Gll^Fmf, Gd^Fp, Gll^Fmw, Rp, Hhd, Rb, Rb, Re^Es, Re, Hhd^Em, Hhd
Sm, Ss^Em, Ss^Em, Ss^Em, Gll^Fdw, Gll^Fmw, Sm, Sm, Gll^Fmw, Gll, Ss, Gll^Fdw, Gll, Gll^Fp, Wwg, Rb, Gll^Vht, 2 Ke, Ce, Re, Hhd^Fp, Gll^Fmf, Gll^Fp, Re^Emf, Gll^Fp, Gll^Fmf, Hhd^Fmw, Hhd^Fmf, Gd^Fp, Gd^Fmf, Gd^Fmf, Gd^Fmw, Gll^Fp, Hhd, Gll^Fmw, Hhd^Fmw, Rb, 3 Re^Es, Rp, Re, Rp
Sm, Rb^Fdw, Wwg^Ewl, Rb^Fdw, Rb^Fmw, Gll^Fmw, Gll, Gll^Fp, Gll, Gll^Fmw, Gll^Fdw, Ss^Em, Ss^Emf, Ss^Em, Sm, Wwg^Ewl, Rb^Em, Gll^Fp, Gll^Fp, Re^Es, Re, Gll^Fp, Ss, Re^Fdw, Gll^Fmw, Gll^Fmw, Re, Gd^Fp, Hhd^Fmf, Hhd^Fdf, Gll^Fp, Gll^Fmf, Gll^Em, Gll^Fp, Gll^Fmw, Hhd, Hhd^Fmw, Re, Re, Rp, Rp
Ss, Rb^Fdw, Sm^Em, Sm^Em, Ss, Ss, Ss, Ss^Vhs, Gll^Fmw, Gll^Fp, Gll^Fmw, Ss, Wwg^Edb, Wwg^Edb, Sm^Emf, Sm^Em, Rb, Gll^Fp, Gll^Fmf, Gll^Fmw, Ss, Ss, Ss, Ss, Gll^Fmw, Gll^Fp, Re^Em, Gd^Fp, Hhd^Fmf, Gd^Fmf, Gs^Fmw, Hhd^Fmw, Md, Gll^Fmw, Gll^Fmw, Hhd^Fp, Hhd^Fmf, Hhd^Fmw, Hhd, Hhd^Fp, Hhd
Gll^Fms, Ss, Ss^Tf, Sm^Emf, Ss^Edb, Sm^Edb, Sm, Wwg, Gll^Fmw, Gll^Fp, Gll^Fmw, Gll^Fdw, Rb^Fdw, Ss^Edb, Ss^Em, Ss^Em, Ss^Em, Gll^Fdw, Gll^Fmw, Gll^Fmw, Hhd^Fdw, Sm, Hhd^Es, Hhd^Fdw, Wwg, Gll^Fdw, Gll^Fp, Gll^Fmw, Gll^Fmw, Gll^Fmf, Gs^Fp, Hhd^Fmw, Gll^Emf, Hhd^Fmw, Gll^Fp, Hhd^Fp, Hhd^Fmf, Re, Hhd, Md, Md
Ss, Re^Fdw, Sm, Wwg, Gll, Sm^Edb, Rb^Fmw, Gll^Fmw, Gll, Gll^Fp, Gll, Re, Rb, Ss^Em, Ss^Tf, Sm^Emf, Ss, Gll^Fdw, Gll^Fp, Gll^Em, Sm, Sm, Wwg, Sm, Wwg, Gll^Fdw, Hhd, Hhd^Fmw, Re, Gll^Fp, Re, Gll^Fmw, Gll^Fmf, Gll^Fmw, Gll^Fdf, Gll^Fmw, Hhd, Gll^Fp, Re^Em, Gll^Fp, Hhd^Fp
Ss, Ss, Ss, Rb^Fdw, Gll^Fdw, Sm, Ss, Ss, Ss, Ss^Vhs, Gll^Fdw, Rb^Fdw, Gll^Fmw, Sm, Sm, Sm, Hhd^Fmw, Gll^Fmw, Gll^Fmw, Gll^Fp, Rb, Rb^Fdw, Rb^Fmw, Sm, Sm, Ss, Ss, Gll^Fdw, Gll^Fdw, Re, Gll^Fdw, Gll^Fp, Gll^Fdf, Gll^Fmf, Gll^Fmf, Gll^Fmf, Gll^Fp, Hhd^Fp, Gll^Fmf, Gll^Fmf, Gll^Fp
Gg, Rb^Fdw, Gg, Ss, Ss, Sm, Ss, Sm, Sm, Wwg, Gll^Fdw, Gll^Fmw, Re^Fp, Gll^Fdw, Gll^Fmw, Hhd, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fmw, Rb^Fmw, Rb^Fmw, Rb^Fmw, Rb, Gg, Ss, Hhd, Re, Re, Re, Re, Gll^Fmw, Gs^Fp, Gll^Fmf, Gs^Fds, Gll^Fmw, Gll^Fmw, Gll^Fdf, Gll^Fp, Gll^Fdf, Gll^Fmw

View file

@ -1,7 +1,7 @@
Gg, Gg, Gg, Re, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fp, Gs^Fms, Ww, Ww, Gs^Fp, Gg, Gs^Fp, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gg, Gs^Fds, Gs^Fds
Gg, Gg, Gg, Re, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fp, Gs^Fp, Gs^Fp, Ww, Gs^Fms, Gg^Vh, Gs^Fp, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gg, Gs^Fds, Gs^Fds
Gg, Gg, Re, Re, Gg, Gg, Gg, Gg, Hh, Hh, Hh, Hh, Gg^Vh, Gg, Gg, Gs^Fms, Gs^Fms, Gs^Fp, Gs^Fms, Gs^Fp, Gs^Fms, Gs^Fms, Gs^Fms, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg^Vh, Hh, Gg, Ce, Ce, 3 Ke, Ce, Gg, Gs^Fds, Gs^Fds, Gs^Fds
Gg, Gg, Re, Gg, Gg, 5 Gg, Gg, Gg, Gg, Hh, Gg, Hh, Gg, Gg, Gg, Gg, Gg, Gs^Fp, Gg, Gs^Fp, Gs^Fp, Gg, Gs^Fp, Gs^Fp, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Hh, Gg, Gg, Ce, Ce, Ce, Gg, Gg^Vh, Gs^Fds, Gs^Fds
Gg, Gg, Re, Gg, Gg, 4 Gg, Gg, Gg, Gg, Hh, Gg, Hh, Gg, Gg, Gg, Gg, Gg, Gs^Fp, Gg, Gs^Fp, Gs^Fp, Gg, Gs^Fp, Gs^Fp, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Hh, Gg, Gg, Ce, Ce, Ce, Gg, Gg^Vh, Gs^Fds, Gs^Fds
Gg, Gg, Re, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fp, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Hh, Gg, Hh, Hh, Gg, Gg, Gg, Gg, Gg, Gg, Gg
Gg, Gg, Gg, Re, Hh, Hh, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Hh, Gg, Gg, Gg, Gg, Gg, Gg, Hh, Hh, Gg, Hh, Gg, Gg, Gg, Gg, Hh, Gg, Gg, Gg, Gs^Fds, Gg, Gg, Gg, Gg
Gg, Gg, Gg^Vh, Re, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Hh, Gg, Hh, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gg^Vh, Hh, Gg, Hh, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg
@ -35,8 +35,8 @@ Gs^Fds, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg,
Gs^Fds, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gg, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Re, Re, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gg, Gg, Re^Gvs, Re^Gvs, Gg, Gg, Gg, Gg
Gs^Fds, Gs^Fds, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Hh, Gs^Fds, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Re, Re, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gg, Gg, Gs^Fds, Gs^Fds, Gg, Re^Gvs, Re^Gvs, Re^Gvs, Gg, Gg, Gg, Gg
Gg, Gg, Gg, Gg, Gg^Vh, Gs^Fds, Hh^Fds, Hh^Fds, Gs^Fds, Gs^Fds, Hh, Gs^Fds, Gs^Fds, Gg, Gs^Fds, Gg, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Re, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gg^Vh, Gg, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fms
Gg, Gg, Gg, Gg, Gs^Fds, Hh, Hh^Fds, Hh^Fds, Hh, Gg^Vh, Gs^Fds, Hh, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Re, Gg, Gg, Gg, Ce, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fms
Hh, Hh, Hh^Fds, Gs^Fds, Hh^Fds, Gs^Fds, Gs^Fds, Hh, Gs^Fds, Gs^Fds, Hh, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gs^Fds, Re, Gg, Gs^Fds, Gs^Fds, 4 Ke, Ce, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fms, Gg, Gg
Gs^Fds, Hh^Fds, Hh^Fds, Hh, Hh^Fds, Hh^Fds, Gs^Fds, Gs^Fds, Hh^Fds, Hh^Fds, Hh^Fds, Gs^Fds, Gg, Gs^Fds, Ce, Ce, Ce, 1 Ke, Ce, Gg, Ce, Gg^Vh, Re, Gs^Fds, Gs^Fds, Ce, Ce, Ce, Ce, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gg, Gs^Fms, Gs^Fms, Gg, Gs^Fms, Gs^Fms, Gs^Fp, Gs^Fp
Gg, Gg, Gg, Gg, Gs^Fds, Hh, Hh^Fds, Hh^Fds, Hh, Gg^Vh, Gs^Fds, Hh, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Re, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fms
Hh, Hh, Hh^Fds, Gs^Fds, Hh^Fds, Gs^Fds, Gs^Fds, Hh, Gs^Fds, Gs^Fds, Hh, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gs^Fds, Re, Gg, Gs^Fds, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fms, Gg, Gg
Gs^Fds, Hh^Fds, Hh^Fds, Hh, Hh^Fds, Hh^Fds, Gs^Fds, Gs^Fds, Hh^Fds, Hh^Fds, Hh^Fds, Gs^Fds, Gg, Gs^Fds, Ce, Ce, Ce, 1 Ke, Ce, Gg, Ce, Gg^Vh, Re, Gs^Fds, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gg, Gs^Fms, Gs^Fms, Gg, Gs^Fms, Gs^Fms, Gs^Fp, Gs^Fp
Gs^Fds, Gs^Fds, Hh^Fds, Hh^Fds, Hh^Fds, Hh, Hh, Hh^Fds, Hh^Fds, Hh^Fds, Hh^Fds, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Ce, Gs^Fds, Gs^Fds, Re, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fp
Gs^Fds, Gs^Fds, Gs^Fds, Hh, Gs^Fds, Hh, Hh, Hh^Fds, Hh^Fds, Hh^Fds, Hh^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Re, Gs^Fds, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fp

View file

@ -1,29 +0,0 @@
Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gs, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Hh, Gs^Fds, Gs^Fds, Gs^Fds, Hh, Hh, Hh, Gs^Fds, Gs^Fds, Ww, Ww, Wo, Wo, Ww, Gs^Fds, Gs^Fds, Gs^Fds
Gg, Gg, Gg, Gg, Re^Gvs, Re^Gvs, Re^Gvs, Re^Gvs, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Vh, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Hh, Gs^Fds, Gs^Fds, Gs^Fds, Hh, Hh, Hh, Gs^Fds, Gs^Fds, Ww, Gs^Fds, Wo, Wo, Ww, Gs^Fds, Gs^Fds, Gs^Fds
Gg, Gg, Re^Gvs, Gg^Vh, Gg, Re^Gvs, Re^Gvs, Re^Gvs, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Hh, Hh, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Ww, Ww, Ww^Bw\, Gs^Fds, Ww, Ww, Ww
Gg, Re^Gvs, Re^Gvs, Gg, Gs^Fds, Gg, Gs^Fds, Gg^Vh, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Vh, Re, Gs^Fds, Re, Gs^Fds, Gs^Fds, Wo, Gs^Fms, Hh, Gs^Fds, Gs^Fds, Re, Gs^Fds, Re, Gs^Fds, Gs^Fds, Gs^Fds, Re, Gs^Fds, Gs^Fds, Gs^Fds
Gg, Re^Gvs, Re^Gvs, Gg, Gs^Fds, Gs^Fds, Ww, Gs^Fds, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Re, Gs^Fds, Re, Gs^Vh, Re, Re^Fds, Gs^Fds, Re, Re, Re, Re, Gs^Fds, Re, Gs^Fds, Re, Re^Fds, Re, Gs^Fds, Re, Re, Re
Gg, Gg, Gg^Vh, Gg, Gs^Fds, Ww, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Ww, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Re, Gs^Fds, Gs^Fds, Gs^Fmw, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Ss^Vhs, Ss, Gs^Fds, Ss^Vhs, Gs^Fds, Gs^Fds, Gs^Fds
Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Ww, Gs^Fds, Gs^Fds, Ww, Gs^Fds, Gs^Fmw, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Ww, Ww, Ss, Ss, Ss, Ww, Ww, Ww, Ww
Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg^Vh, Re^Gvs, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Ww, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Ww, Ww^Bw/, Gs^Fp, Ww, Ww, Gs^Fms, Ww, Gs^Fms, Gs^Fms
Gg, Gg, Hh, Hh, Hh, Hh, Hh, Gg, Gg, Gg, Re^Gvs, Re^Gvs, Re^Gvs, Re^Gvs, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Ss, Gs^Fds, Gs^Fds, Gs^Fmw, Gs^Fds, Gs^Fds, Gs^Fds, Ww, Ss, Ss, Ss, Gs^Fms, Gs^Fp, Gs^Fp
Hh, Hh, Gs^Fds, Gg, Gg, Gg, Gg, Hh, Hh, Gg, Gg, Re^Gvs, Re^Gvs, Re^Gvs, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Ss, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Ss, Gs^Fms, Ss^Vhs, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fp
Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg^Vh, Hh, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gg, Gs^Fds, Gg, Gs^Fds, Gs^Fds, Hh, Hh, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fms, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp
Gg, Gg, Hh, Hh, Hh, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gg, Gg, Gg, Gg, Gs^Fms, Gs^Fds, Hh, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp
Hh, Hh, Gs^Fds, Rr, Gs^Fds, Hh, Hh, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Hh, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fp, Gs^Fms, Gs^Fms, Gs^Fp, Gs^Fms, Gs^Fp, Gs^Fp
Rr, Rr, Kh, Ch, Ch, Rr, Hh, Gg, Gg, Gg, Gg, Gg, Gg, Hh, Gg, Hh, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Vl, Hh, Gs^Fp, Gs^Fp, Gs^Fp
Gs^Fds, Gs^Fds, Ch, Mm, 2 Kh, Gs^Fds, Hh, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg^Vh, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fmw, Gs^Fds, Gs^Fms, Hh, Hh, Hh, Hh, Hh, Hh
Rr, Rr, Gs^Fds, Ch, Gs^Fds, Rr, Hh, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Re^Gvs, Re^Gvs, Re^Gvs, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fp, Gs^Fp, Gs^Fms, Gs^Fms
Hh, Hh, Hh, Rp, Hh, Hh, Gs, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Re^Gvs, Re^Gvs, Re^Gvs, Re^Gvs, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gg, Gs^Fds, Gs^Fds, Gs^Fmw, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Hh, Gs^Fms, Gs^Fms, Gs^Fp, Gs^Fp, Gs^Fms
Gs, Gs, Rp, Rp, Rp, Gs^Fds, Rp, Gs, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Re^Gvs, Gg^Vh, Gg, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Ce, 1 Ke, Ce, Gs^Fms, Gs^Fms, Gs^Vl, Gs^Fp, Gs^Fp
Rp, Rp, Rp, Rp, Rp, Rp, Rp, Rp, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fds, Hh, Hh, Ce, Gs^Ecf, Ce, Hh, Gs^Fms, Gs^Fp, Gs^Fms, Gs^Fp
Rp, Rp, Gg, Rp, Gg, Gs, Rp, Rp, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Rp, Gg, Hh, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Hh, Gs^Fds, Gs^Fds, Gs^Fds, Hh, Hh, Gs^Fms, Gs^Fms, Hh, Hh
Gg, Gg, Gg, Gg, Gg, Rp, Rp, Gs^Vh, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Rp, Rp, Rp, Rp, Rp, Hh, Hh, Gs^Fds, Hh, Gs^Fds, Mm, Mm, Mm, Hh, Hh, Gs^Fds, Gs^Fds, Hh, Hh, Hh
Gg, Gg, Gg, Gg, Gg, Rp, Rp, Rp, Gs, Gs, Gs, Gg, Gg, Gg, Gg, Gg, Rp, Rp, Rp, Rp, Gs, Rp, Rp, Gs, Hh, Gs, Gs, Mm, Mm, Hh, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm
Gg, Gg, Gg, Gg, Gg, Gg, Rp, Rp, Rp, Rp, Rp, Gs, Gs, Gs, Rp, Rp, Rp, Rp, Gs, Gs, Gs, Rp, Rp, Rp, Rp, Rp, Rp, Rp, Rp, Rp, Rp, Rp, 3 Rp, Rp, Rp, Mm, Mm, Mm
Gg, Gg, Hh, Gg, Gg, Gg, Gg, Rp, Rp, Rp, Rp, Rp, Rp, Rp, Rp, Rp, Hh, Gs, Gg, Gg, Gg, Gs, Gs, Rp, Rp, Rp, Rp, Rp, Rp, Rp, Rp, Rp, Rp, Rp, Rp, Rp, Rp, Rp
Hh, Hh, Hh, Gg, Gg, Gg, Gg, Gg, Gs, Gs, Gs^Vh, Rp, Rp, Rp, Gs^Fds, Hh, Hh, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Vh, Hh, Gs, Hh, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Rp, Rp, Rp
Gg, Gg^Vh, Re^Gvs, Re^Gvs, Re^Gvs, Gg, Gs, Gs, Hh, Hh, Hh, Gs, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Hh, Gg, Hh, Gg, Gs^Fds, Gs^Fds, Mm, Mm, Gs^Fds, Gs^Fds, Hh, Hh, Gs, Gs^Fds, Gs, Gs^Fds, Mm, Mm, Mm
Gg, Gg, Re^Gvs, Re^Gvs, Re^Gvs, Re^Gvs, Gg, Gs, Gg, Gs, Gs, Gs, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gg, Gg, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fms, Hh, Hh, Gs^Fds, Gs^Fds
Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gs^Fds, Gg, Gs^Fds, Gg, Gs^Fds, Gg, Gs^Fds, Gs^Fds, Gs, Gg, Gs^Fds, Gg, Gs^Fms, Gg, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gg, Gs^Fds, Gg, Gg, Gs^Fds, Gs^Fms, Gs^Fds, Gg, Gg, Gg, Gg, Gg
Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fms, Gs^Fms, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gg, Gg, Gg, Gg

View file

@ -1,7 +1,7 @@
#textdomain wesnoth-l
[scenario]
id=05_Hide_and_Seek
next_scenario=06_The_Grey_Woods
next_scenario=06_The_Hunters
victory_when_enemies_defeated=no
name= _ "Hide and Seek"
map_file=campaigns/Liberty/maps/05_Hide_and_Seek.map

View file

@ -1,454 +0,0 @@
#textdomain wesnoth-l
[scenario]
id=06_The_Grey_Woods
name= _ "The Grey Woods"
next_scenario=07_The_Hunters
victory_when_enemies_defeated=yes
map_file=campaigns/Liberty/maps/06_The_Grey_Woods.map
{TURNS 50 44 42}
{DEFAULT_SCHEDULE_SECOND_WATCH}
# terrain=* only works inside an event.
[event]
name=prestart
[time_area]
terrain=U*,U*^*,Ce,Cud,Kud,Ql,Xu
x,y=27-34,4-9
{UNDERGROUND}
[/time_area]
[/event]
{INTRO_AND_SCENARIO_MUSIC "underground.ogg" "the_deep_path.ogg"}
{EXTRA_SCENARIO_MUSIC "elvish-theme.ogg"}
{EXTRA_SCENARIO_MUSIC "suspense.ogg"}
{EXTRA_SCENARIO_MUSIC "knalgan_theme.ogg"}
{LIBERTY_BIGMAP {JOURNEY_06_NEW} }
[side]
type=Bandit
id=Baldras
side=1
canrecruit=yes
controller=human
recruit=Thug,Footpad,Poacher
{GOLD 200 150 100}
#ifdef EASY
shroud=no
fog=yes
share_vision=all
#endif
#ifdef NORMAL
shroud=yes
fog=yes
share_vision=all
#endif
#ifdef HARD
shroud=yes
fog=yes
share_vision=shroud
#endif
team_name=good_guys
user_team_name=_"Rebels"
[/side]
[side]
type=Shadow Lord
id=Helicrom
name= _ "Helicrom"
profile=portraits/helicrom.png
facing=sw
side=2
canrecruit=yes
recruit=Rogue Mage,Shadow Mage,Thief,Trapper,Huntsman,Outlaw,Fugitive
{GOLD 300 250 200}
controller=ai
[ai]
recruitment_pattern=mixed fighter,mixed fighter,fighter,mixed fighter,archer
[/ai]
shroud=yes
fog=yes
share_vision=all
team_name=good_guys
user_team_name=_"Rebels"
[ai]
village_value=0.5
leader_value=1
[goal]
name=protect_unit
[criteria]
side=1
[/criteria]
protect_radius=8
value=2.0
[/goal]
[/ai]
[/side]
{STARTING_VILLAGES 2 9}
[side]
type=Necromancer
id=Mal-Jarrof
name= _ "Mal-Jarrof"
side=3
canrecruit=yes
recruit=Skeleton,Skeleton Archer,Ghost,Walking Corpse,Ghoul
controller=ai
{GOLD 80 100 100}
shroud=no
fog=no
team_name=evil_ones
user_team_name=_"Evil"
{FLAG_VARIANT undead}
[/side]
[side]
type=Necromancer
id=Mal-Jerod
name= _ "Mal-Jerod"
side=4
canrecruit=yes
recruit=Skeleton,Revenant,Skeleton Archer,Ghost,Walking Corpse
controller=ai
{GOLD 80 100 100}
shroud=no
fog=no
team_name=evil_ones
user_team_name=_"Evil"
{FLAG_VARIANT undead}
[/side]
[side]
type=Lich
id=Sel-Mana
name= _ "Sel-Mana"
facing=sw
side=5
canrecruit=yes
recruit=Skeleton,Dark Adept,Skeleton Archer,Soulless,Vampire Bat
controller=ai
{GOLD 80 100 100}
shroud=no
fog=no
team_name=evil_ones
user_team_name=_"Evil"
{FLAG_VARIANT undead}
[/side]
#
# Prestart events
#
[event]
name=prestart
[objectives]
side=1
[objective]
description= _ "Defeat the lich and its minions"
condition=win
[/objective]
[objective]
description= _ "Death of Baldras"
condition=lose
[/objective]
[objective]
description= _ "Death of Harper"
condition=lose
[/objective]
{TURNS_RUN_OUT}
[gold_carryover]
bonus=yes
carryover_percentage=40
[/gold_carryover]
[/objectives]
#Initialize switch
{VARIABLE Helicrom_dead 0}
#
# Give Helicrom some free underlings and the villages in his camp
#
{GENERIC_UNIT 2 (Rogue Mage) 13 6}
{GENERIC_UNIT 2 (Shadow Mage) 11 7}
#
# Give the SE Lich some baddies to shake things up
#
{GENERIC_UNIT 5 Wraith 37 36}
#ifdef HARD
{GENERIC_UNIT 5 Shadow 36 36}
#endif
[item]
x,y=8,19
image=items/burial.png
[/item]
[item]
x,y=37,39
image=items/bonestack.png
[/item]
[item]
x,y=35,31
image=items/burial.png
[/item]
[item]
x,y=33,35
image=items/bones.png
[/item]
[/event]
#
# Starting conversation and actions
#
[event]
name=start
{MOVE_UNIT id=Baldras 7 4}
[recall]
id=Harper
[/recall]
[redraw]
side=1
[/redraw]
[message]
speaker=Baldras
message= _ "The leader, I presume."
[/message]
[message]
speaker=Helicrom
message= _ "I am Helicrom, and you should not be so glib. I control dangerous men. My henchmen can slip unseen through any city, rob a man while he sleeps, or attack a caravan head-on. Its not noble work, but our pursuits require plenty of gold."
[/message]
[message]
speaker=Baldras
message= _ "Your pursuits?"
[/message]
[message]
speaker=Helicrom
message= _ "The former Kings magic ministry kept a tight control on the training and employment of mages in Wesnoth. Those of us who dared to... depart from the curriculum, you might say, were dealt with harshly. We are outcasts because we seek to master shadow magic. Our secrecy and security are not cheap."
[/message]
[message]
speaker=Baldras
message= _ "I have heard of you. Necromancers. Barely-human scum, I say."
[/message]
[message]
speaker=Helicrom
message= _ "Wrong. Necromancers become slaves to their lich masters and eventually lose their humanity. We have proven that practicing the dark arts need not lead down that path to damnation. We remain human, and seek the mystical secret of balance between the ways of light and darkness. We dance between both ways, adhering to neither."
[/message]
[message]
speaker=Baldras
message= _ "I... see, I think. Why do you want to help us?"
[/message]
[message]
speaker=Helicrom
message= _ "We dont. You have sought us out. But, I do know of your situation and am willing to help. Any weakening of the Throne of Wesnoth, whether it be occupied by King or Queen, aids us."
[/message]
[message]
speaker=Helicrom
message= _ "Carcyn is always foggy as of late because these woods have recently become home to a lich and two of its underling necromancers. Our experiments may have actually aroused it from sleep... Were not sure."
[/message]
[message]
speaker=Baldras
message= _ "So now you need to defend your rear as well as your front... I see your predicament. My men will wipe this land clean if you can help us defend our homeland."
[/message]
[/event]
[event]
name=die
[filter]
id=Sel-Mana
[/filter]
[if]
[have_unit]
side=3
canrecruit=yes
[/have_unit]
[or]
[have_unit]
side=4
canrecruit=yes
[/have_unit]
[/or]
[then]
[message]
speaker=Helicrom
message= _ "Finally, that creature is dead, yet its foolish minions resist."
[/message]
[/then]
[else]
[message]
speaker=Baldras
message= _ "The lich is destroyed and its minions dead."
[/message]
[/else]
[/if]
[/event]
[event]
name=enemies defeated
[if]
[variable]
name=Helicrom_dead
numerical_equals=1
[/variable]
[then]
[message]
speaker=narrator
message= _ "The defeat of the evil lich infesting the Grey Woods was a bittersweet victory. With Helicrom dead, the guild of shadow magic was thrown into disarray."
image="wesnoth-icon.png"
[/message]
[message]
speaker=narrator
message= _ "The remaining members were very grateful and offered Baldras a sizable sum of gold for his help. It was not the help he was hoping for, but he knew it would have to be enough for the coming conflict."
image="wesnoth-icon.png"
[/message]
[sound]
name=gold.ogg
[/sound]
[gold]
side=1
amount=500
[/gold]
[set_variable]
name=Helicrom_status
value=1
[/set_variable]
[/then]
[else]
[message]
speaker=Helicrom
message= _ "With the undead driven out, we may live here in relative peace and pursue our studies. For this, Baldras, I am grateful."
[/message]
[message]
speaker=Baldras
message= _ "Studies? Peace? You mean to continue feeding on the lawful citizens of Wesnoth. There will be no peace for them."
[/message]
[message]
speaker=Helicrom
message= _ "No one here is in a position to be dispensing moral judgments. Regardless, you have done great service to us today, and we owe you a debt. I will help you to the utmost of my ability."
[/message]
[message]
speaker=Helicrom
message= _ "I was planning on giving you gold. Any good army is well financed, and with the lich gone we can now spare it."
[/message]
[message]
speaker=Helicrom
message= _ "But, I think it would help you more if I lent you some of my men to join you on your adventures. The Queen has been sending mages out here, and my men are itching for some payback."
[/message]
[message]
speaker=Helicrom
message= _ "On the other hand, if I keep the full force of my organization here, we might be able to regroup and join you on the battlefield when the time comes."
[/message]
[message]
speaker=Helicrom
message= _ "I leave it to you to decide."
[option]
label= _ "I will take the gold. How does 500 sound?"
[command]
[message]
speaker=Helicrom
message= _ "Agreed. Good luck and farewell to you, Master Baldras."
[/message]
[sound]
name=gold.ogg
[/sound]
[gold]
side=1
amount=500
[/gold]
[set_variable]
name=Helicrom_status
value=1
[/set_variable]
[/command]
[/option]
# Note: don't mess with the alignment in the next message key.
[option]
label= _ "Send your men with us. They will be valuable help as we prepare for the assault from the Wesnoth army garrison."
[command]
[message]
speaker=Helicrom
message= _ "Done. My finest mages and thieves are at your disposal. Use them well."
[/message]
[allow_recruit]
side=1
type=Thief,Rogue Mage,Shadow Mage
[/allow_recruit]
[set_variable]
name=Helicrom_status
value=2
[/set_variable]
[/command]
[/option]
[option]
label= _ "I wish you to join us in battle against the Queens forces."
[command]
[message]
speaker=Helicrom
message= _ "All right. I need time to clean up this forest and recall my men from the countryside. We will be ready to march in seven days. All now hinges on you! Until then..."
[/message]
[set_variable]
name=Helicrom_status
value=3
[/set_variable]
[/command]
[/option]
[/message]
[/else]
[/if]
{CLEAR_VARIABLE Helicrom_dead}
[endlevel]
result=victory
bonus=yes
{NEW_GOLD_CARRYOVER 40}
[/endlevel]
[/event]
#
# Loss conditions - turns run out
#
[event]
name=time over
[message]
speaker=Baldras
message= _ "We have spent too much time here. Surely the Queens forces have returned to Dallben. Our mission is unfinished, but we must return to fight a suicide battle."
[/message]
[endlevel]
result=defeat
[/endlevel]
[/event]
{LIBERTY_DEATHS}
{VILLAGE_BURNED}
#
# Helicrom dies - you don't lose but your benefits are not so good.
#
[event]
name=last breath
[filter]
id=Helicrom
[/filter]
[message]
speaker=Helicrom
message= _ "My men... have failed to protect me! I perish..."
[/message]
{VARIABLE Helicrom_dead 1}
[/event]
[/scenario]

View file

@ -0,0 +1,836 @@
#textdomain wesnoth-l
[scenario]
id=06_The_Hunters
name= _ "The Hunters"
victory_when_enemies_defeated=no
next_scenario=07_Glory
map_file=campaigns/Liberty/maps/06_The_Hunters.map
turns=27
{FIRST_WATCH}
{FIRST_WATCH}
{FIRST_WATCH}
{MIDNIGHT}
{MIDNIGHT}
{MIDNIGHT}
{SECOND_WATCH}
{SECOND_WATCH}
{SECOND_WATCH}
{DAWN}
{MORNING}
{MORNING}
{MORNING}
{AFTERNOON}
{AFTERNOON}
{AFTERNOON}
{DUSK}
{FIRST_WATCH}
{FIRST_WATCH}
{FIRST_WATCH}
{MIDNIGHT}
{MIDNIGHT}
{MIDNIGHT}
{SECOND_WATCH}
{SECOND_WATCH}
{SECOND_WATCH}
{DAWN}
{MORNING}
{INTRO_AND_SCENARIO_MUSIC "underground.ogg" "the_deep_path.ogg"}
{EXTRA_SCENARIO_MUSIC siege_of_laurelmor.ogg}
{EXTRA_SCENARIO_MUSIC "suspense.ogg"}
{EXTRA_SCENARIO_MUSIC knalgan_theme.ogg}
{LIBERTY_BIGMAP {JOURNEY_06_NEW} }
[side]
side=1
type=Highwayman
id=Baldras
canrecruit=yes
controller=human
fog=yes
recruit=Thug,Footpad,Poacher
{GOLD 150 125 100}
village_gold=1
team_name=good_guys
user_team_name=_"Rebels"
[/side]
{STARTING_VILLAGES 1 10}
[side]
type=Shadow Lord
id=Helicrom
name= _ "Helicrom"
profile=portraits/helicrom.png
facing=sw
side=2
canrecruit=yes
recruit=Rogue Mage,Shadow Mage,Thief,Rogue
{GOLD 100 75 50}
village_gold=1
controller=human
fog=yes
share_vision=all
team_name=good_guys
user_team_name=_"Rebels"
[/side]
[side]
side=3
type=Shock Trooper
id=Linneus
name= _ "Linneus"
facing=sw
canrecruit=yes
recruit=
gold=100
controller=ai
shroud=yes
fog=yes
share_vision=none
team_name=bad_guys
user_team_name=_"Asheviere"
{FLAG_VARIANT loyalist}
[/side]
[side]
side=4
type=Lieutenant
id=Archarel
name= _ "Archarel"
canrecruit=yes
recruit=
gold=0
income=-2
controller=ai
shroud=yes
fog=yes
share_vision=none
team_name=bad_guys
user_team_name=_"Asheviere"
{FLAG_VARIANT loyalist}
[/side]
{STARTING_VILLAGES 4 10}
[event]
name=prestart
[micro_ai]
side=3
ai_type=messenger_escort
action=add
[filter]
side=3
canrecruit=yes
[/filter]
waypoint_x,waypoint_y=7,4
[/micro_ai]
{PLACE_IMAGE scenery/signpost.png 11 7}
[objectives]
side=1,2
[objective]
description= _ "Kill all enemy patrols before they reach the outpost"
condition=win
[/objective]
[objective]
description= _ "Death of Baldras"
condition=lose
[/objective]
[objective]
description= _ "Death of Harper"
condition=lose
[/objective]
[objective]
description= _ "Death of Helicrom"
condition=lose
[/objective]
[objective]
description= _ "Any patrol units survive when turns run out"
condition=lose
[/objective]
[objective]
description= _ "Any allied unit is sighted by the outpost guards"
condition=lose
[/objective]
[gold_carryover]
bonus=no
carryover_percentage=40
[/gold_carryover]
[/objectives]
[store_unit]
variable=stored_Linneus
kill=yes
[filter]
id=Linneus
[/filter]
[/store_unit]
#set up units
{GENERIC_UNIT 2 (Rogue Mage) 18 21}
{GENERIC_UNIT 2 (Shadow Mage) 18 22}
{GENERIC_UNIT 4 (Heavy Infantryman) 7 2} {GUARDIAN}
{GENERIC_UNIT 4 (Heavy Infantryman) 7 6} {GUARDIAN}
[/event]
#
# Starting conversation and actions
#
#define TROOPER TYPE TO_X TO_Y
[move_unit_fake]
type={TYPE}
side=3
x=39,{TO_X}
y=23,{TO_Y}
[/move_unit_fake]
{GENERIC_UNIT 3 {TYPE} {TO_X} {TO_Y}}
[+unit]
facing=sw
[/unit]
#enddef
[event]
name=start
[recall]
id=Harper
[/recall]
[message]
speaker=Baldras
message= _ "The leader, I presume."
[/message]
[message]
speaker=Helicrom
message= _ "I am Helicrom, and you should not be so glib. I control dangerous men. My henchmen can slip unseen through any city, rob a man while he sleeps, or attack a caravan head-on. Its not noble work, but our pursuits require plenty of gold."
[/message]
[message]
speaker=Baldras
message= _ "Your pursuits?"
[/message]
[message]
speaker=Helicrom
message= _ "The former Kings magic ministry kept a tight control on the training and employment of mages in Wesnoth. Those of us who dared to... depart from the curriculum, you might say, were dealt with harshly. We are outcasts because we seek to master shadow magic. Our secrecy and security are not cheap."
[/message]
[message]
speaker=Baldras
message= _ "Why do you want to help us?"
[/message]
[message]
speaker=Helicrom
message= _ "You are the ones who have sought us out. But, I do know of your situation and am willing to help. Any weakening of the Throne of Wesnoth, whether it be occupied by King or Queen, aids us. Do you know of Halstead?"
[/message]
[message]
speaker=Baldras
message= _ "The great fort standing between Aldril and Elensefar? It is an bastion of central importance, second only to Elensefar itself. Of course I know of it."
[/message]
[message]
speaker=Helicrom
message= _ "Then you should also know this. During the past week, several patrols have again ventured across the Great River into Annuvin. A woman named Relana opposed them with a small militia and was victorious. The Crown, however, has begun to take notice of this rebellion. Asheviere has begun to mass her forces within Halstead. Should she manage to raise a full army, even Elensefar would be threatened, nevermind our band of rogues."
[/message]
[message]
speaker=Baldras
message= _ "Well, what can we do? It seems to me that we can never win. It is impossible for us to face the entire forces of Weldyn by ourselves. Idiocy! If the noble lord of Elensefar is unwilling to resist the Queen, how can we expect to?"
[/message]
[message]
speaker=Helicrom
message= _ "A direct fight against the Crown would be undoubtedly foolish, but we have other means within our grasp. From Dan Tonk to Halstead, the fastest path lies through the pass between the Brown Hills and the Gryphon Mountains followed by the trek through these Grey Woods. We are in prime position to gnaw away at their troops, crippling their forces before they ever arrive at their destination."
[/message]
[message]
speaker=Harper
message= _ "Theres no way we can fight them all... can we?"
[/message]
[message]
speaker=Baldras
message= _ "We... cannot just surrender either. Helicrom is right. Its this or nothing. All we can do is see it through to the end."
[/message]
[message]
speaker=Helicrom
message= _ "My scouts have counted five platoons of troops marching towards the garrison in the last day. We must eliminate them all before they reach the outpost at the end of the woods. The outpost also must not be alerted to our presence, or we will have the bulk of their foces upon us."
[/message]
{SCROLL_TO 7 4}
[delay]
time=1500
[/delay]
[message]
speaker=Harper
message= _ "Another platoon approaches..."
[/message]
{SCROLL_TO 39 23}
[lift_fog]
[filter_side]
side=1
[/filter_side]
x,y=37,22
radius=3
[/lift_fog]
{TROOPER "Heavy Infantryman" 38 22}
{TROOPER "Heavy Infantryman" 38 21}
#ifdef EASY
{TROOPER "Heavy Infantryman" 37 23}
#else
{TROOPER "Shock Trooper" 37 23}
#endif
#ifdef HARD
{TROOPER "Shock Trooper" 38 23}
#else
{TROOPER "Heavy Infantryman" 38 23}
#endif
[move_unit_fake]
type=$stored_Linneus.type
side=$stored_Linneus.side
x=39,37
y=23,22
[/move_unit_fake]
[unstore_unit]
variable=stored_Linneus
[/unstore_unit]
{CLEAR_VARIABLE stored_Linneus}
[delay]
time=750
[/delay]
[message]
speaker=Helicrom
message= _ "My henchmen and I shall pincer them from the other side of this path. When we are done, no one will fear the open roads and night sky more than the army of the usurper. Strike fast, strike silently... and leave no one alive."
[/message]
[store_unit]
[filter]
id=Helicrom
[/filter]
variable=Helicrom
kill=yes
[/store_unit]
[move_unit_fake]
type=Shadow Lord
side=2
x=17,20
y=22,18
[/move_unit_fake]
[kill]
x,y=18,21
[/kill]
[move_unit_fake]
type=Rogue Mage
side=2
x=18,20
y=21,18
[/move_unit_fake]
[kill]
x,y=18,22
[/kill]
[move_unit_fake]
type=Shadow Mage
side=2
x=18,20
y=22,18
[/move_unit_fake]
[terrain]
x=16
y=21
terrain=Rb
[/terrain]
[terrain]
x=17,18
y=22,22
terrain=Gll^Em
[/terrain]
[terrain]
x=18
y=21
terrain=Re
[/terrain]
[redraw][/redraw]
{SCROLL_TO 32 8}
[lift_fog]
[filter_side]
side=1
[/filter_side]
x,y=32,8
radius=4
[/lift_fog]
[move_unit_fake]
type=Shadow Lord
side=2
x=28,32
y=11,8
[/move_unit_fake]
[unstore_unit]
variable=Helicrom
x,y=32,8
[/unstore_unit]
[move_unit_fake]
type=Rogue Mage
side=2
x=28,31
y=11,9
[/move_unit_fake]
{GENERIC_UNIT 2 (Rogue Mage) 31 9}
[move_unit_fake]
type=Shadow Mage
side=2
x=28,31
y=11,9
[/move_unit_fake]
{GENERIC_UNIT 2 (Shadow Mage) 32 9}
[capture_village]
[filter_side]
side=2
[/filter_side]
x=26-39
y=4-12
[/capture_village]
[redraw]
side=2
clear_shroud=yes
[/redraw]
{CLEAR_VARIABLE Helicrom}
[/event]
#
# Special Event - when you attack the bad guys for the first time they react
#
[event]
name=attack
[filter_second]
side=3
[/filter_second]
[message]
speaker=Linneus
message= _ "Its an ambush! Run!"
[/message]
[/event]
#
# Special Event - after 5 turns, send the second patrol
#
[event]
name=turn 5
{SCROLL_TO 39 23}
[lift_fog]
[filter_side]
side=1
[/filter_side]
x,y=37,22
radius=3
[/lift_fog]
{TROOPER "Spearman" 38 22}
{TROOPER "Heavy Infantryman" 38 21}
#ifdef EASY
{TROOPER "Spearman" 37 23}
#else
{TROOPER "Javelineer" 37 23}
#endif
#ifdef EASY
{TROOPER "Bowman" 39 23}
#else
{TROOPER "Longbowman" 39 23}
#endif
#ifdef HARD
{TROOPER "Shock Trooper" 38 23}
#else
{TROOPER "Heavy Infantryman" 38 23}
#endif
[move_unit_fake]
type=Swordsman
side=3
x=39,37
y=23,22
[/move_unit_fake]
[unit]
side=3
type=Swordsman
facing=sw
canrecruit=yes
x,y=37,22
[/unit]
[/event]
#
# Special Event - after 11 turns, send the third patrol
#
[event]
name=turn 11
{SCROLL_TO 39 23}
[lift_fog]
[filter_side]
side=1
[/filter_side]
x,y=37,22
radius=3
[/lift_fog]
{TROOPER "Spearman" 38 22}
{TROOPER "Heavy Infantryman" 38 21}
#ifdef EASY
{TROOPER "Spearman" 37 23}
#else
{TROOPER "Javelineer" 37 23}
#endif
#ifdef EASY
{TROOPER "Heavy Infantryman" 39 23}
#else
{TROOPER "Shock Trooper" 39 23}
#endif
#ifdef HARD
{TROOPER "Longbowman" 38 23}
#else
{TROOPER "Bowman" 38 23}
#endif
[move_unit_fake]
type=Pikeman
side=3
x=39,37
y=23,22
[/move_unit_fake]
[unit]
side=3
type=Pikeman
facing=sw
canrecruit=yes
x,y=37,22
[/unit]
[/event]
#
# Special Event - after 17 turns, send the fourth patrol
#
[event]
name=turn 17
{SCROLL_TO 39 23}
[lift_fog]
[filter_side]
side=1
[/filter_side]
x,y=37,22
radius=3
[/lift_fog]
{TROOPER "Shock Trooper" 38 22}
{TROOPER "Heavy Infantryman" 38 21}
{TROOPER "Swordsman" 37 23}
#ifdef EASY
{TROOPER "Bowman" 39 23}
#else
{TROOPER "Longbowman" 39 23}
#endif
#ifdef HARD
{TROOPER "Shock Trooper" 38 23}
#else
{TROOPER "Heavy Infantryman" 38 23}
#endif
{TROOPER "Spearman" 39 22}
[move_unit_fake]
type=Lieutenant
side=3
x=39,37
y=23,22
[/move_unit_fake]
[unit]
side=3
type=Lieutenant
facing=sw
canrecruit=yes
x,y=37,22
[/unit]
[/event]
#
# Special Event - after 21 turns, send the fifth patrol
# this one is a bit faster than the other patrols, so it'll be a bit more challenging
#
[event]
name=turn 21
{SCROLL_TO 39 23}
[lift_fog]
[filter_side]
side=1
[/filter_side]
x,y=37,22
radius=3
[/lift_fog]
{TROOPER "Duelist" 38 22}
{TROOPER "Swordsman" 38 21}
#ifdef EASY
{TROOPER "Fencer" 37 23}
#else
{TROOPER "Duelist" 37 23}
#endif
#ifdef EASY
{TROOPER "Spearman" 39 23}
#else
{TROOPER "Javelineer" 39 23}
#endif
#ifdef HARD
{TROOPER "Longbowman" 38 23}
#else
{TROOPER "Bowman" 38 23}
#endif
{TROOPER "Duelist" 39 22}
[move_unit_fake]
type=Master at Arms
side=3
x=39,37
y=23,22
[/move_unit_fake]
[unit]
side=3
type=Master at Arms
facing=sw
canrecruit=yes
x,y=37,22
[/unit]
[/event]
#
# Special Event - Archarel says some stuff
#
[event]
name=turn 10
{SCROLL_TO 7 4}
[lift_fog]
[filter_side]
side=1,2
[/filter_side]
x,y=7,4
radius=5
[/lift_fog]
[message]
speaker=Archarel
message= _ "Several platoons of troops were supposed to arrive today. I wonder if something has happened to them."
[/message]
[/event]
[event]
name=turn 18
{SCROLL_TO 7 4}
[lift_fog]
[filter_side]
side=1,2
[/filter_side]
x,y=7,4
radius=5
[/lift_fog]
[message]
speaker=Archarel
message= _ "Something about these woods seems quite unnatural. Perhaps we should stop sending our soldiers this way."
[/message]
[/event]
#define DEFEAT_TEXT
{SCROLL_TO 7 4}
[lift_fog]
[filter_side]
side=1,2
[/filter_side]
x,y=7,4
radius=5
[/lift_fog]
[message]
speaker=Archarel
message= _ "Troops, to arms! These fugitive scum think they are above the law. We will show them the law!"
[/message]
[message]
speaker=Baldras
message= _ "With the outpost aware of our presence, we can no longer harry their reinforcements. I fear their forces will soon grow too powerful for us to resist."
[/message]
#enddef
#
# End condition
#
[event]
name=time over
[if]
[have_unit]
side=3
[/have_unit]
[then]
[message]
speaker=narrator
message= _ "The next morning, the local night patrol returned to the nearby outpost. They were surprised to see their fellow soldiers engaged in combat with the band of thugs of which they had heard so much."
image="wesnoth-icon.png"
[/message]
{DEFEAT_TEXT}
[endlevel]
result=defeat
[/endlevel]
[/then]
[else]
[message]
speaker=Baldras
message= _ "What a bloody mess, but it is done. Their patrols are shattered and broken."
[/message]
[message]
speaker=Helicrom
message= _ "A job well done, but the fight is far from over. We have only sacked a few of their platoons, but more will come. These tactics will not work forever."
[/message]
[message]
speaker=Baldras
message= _ "It seems to me that our only choice is to attack Halstead itself. If we wait, their armies will become invincible. If we can burn it to the ground before the Queens forces rally, we may yet be able to break their foothold in this province."
[/message]
[message]
speaker=Harper
message= _ "Attack them directly? I thought you said there was no way we could fight them head on."
[/message]
[message]
speaker=Helicrom
message= _ "The only other option is to flee, but just as you have chosen to fight to protect your village, we are not so keen on abandoning our home in these woods."
[/message]
[message]
speaker=Baldras
message= _ "So youll join us?"
[/message]
[message]
speaker=Helicrom
message= _ "We will."
[/message]
[message]
speaker=Baldras
message= _ "Then its decided. We will attack the fort and raze it. Rest well tonight. Tomorrows battle will be a difficult one."
[/message]
[modify_unit]
[filter]
side=2
[/filter]
side=1
[/modify_unit]
[endlevel]
result=victory
bonus=yes
{NEW_GOLD_CARRYOVER 40}
[/endlevel]
[/else]
[/if]
[/event]
#
# Loss conditions
#
[event]
name=moveto
[filter]
side=3
x=1-10
y=1-6
[/filter]
[lift_fog]
[filter_side]
side=1,2
[/filter_side]
x,y=7,4
radius=5
[/lift_fog]
[message]
speaker=unit
message= _ "Lieutenant, we were assaulted by a band of outlaws en route to the outpost. We were only barely able to evade them and make it here!"
[/message]
{DEFEAT_TEXT}
[endlevel]
result=defeat
[/endlevel]
[/event]
[event]
name=sighted
[filter]
side=1
[/filter]
[filter_second]
side=4
[/filter_second]
[message]
speaker=second_unit
message= _ "Look there! Outlaws and bandits roam these woods, harrying our patrols!"
[/message]
{DEFEAT_TEXT}
[endlevel]
result=defeat
[/endlevel]
[/event]
[event]
name=last breath
[filter]
id=Helicrom
[/filter]
[message]
speaker=Helicrom
message= _ "This is the end for me..."
[/message]
[endlevel]
result=defeat
[/endlevel]
[/event]
{LIBERTY_DEATHS}
[/scenario]
#undef TROOPER
#undef DEFEAT_TEXT

View file

@ -1,10 +1,10 @@
#textdomain wesnoth-l
[scenario]
id=08_Glory
id=07_Glory
name= _ "Glory"
next_scenario=09_Epilogue
next_scenario=08_Epilogue
victory_when_enemies_defeated=no
map_file=campaigns/Liberty/maps/08_Glory.map
map_file=campaigns/Liberty/maps/07_Glory.map
{TURNS 48 45 40}
{DEFAULT_SCHEDULE_AFTERNOON}
@ -36,15 +36,16 @@
[/part]
[/story]
{LIBERTY_BIGMAP {JOURNEY_08_NEW} }
{LIBERTY_BIGMAP {JOURNEY_07_NEW} }
[side]
side=1
type=Highwayman
id=Baldras
recruit=Thug,Footpad,Poacher,Rogue Mage,Shadow Mage,Thief,Rogue
canrecruit=yes
controller=human
gold=200
{GOLD 450 350 250}
team_name=good_guys
user_team_name=_"Rebels"
[/side]
@ -139,36 +140,6 @@
[side]
side=4
type=Shadow Lord
id=Helicrom
name= _ "Helicrom"
profile=portraits/helicrom.png
canrecruit=yes
facing=sw
recruit=Shadow Mage,Fugitive,Rogue Mage,Rogue,Huntsman
{GOLD 700 600 500}
controller=ai
[ai]
recruitment_pattern=mixed fighter,mixed fighter,fighter,mixed fighter,archer
[goal]
[criteria]
side=2
[/criteria]
value=10
[/goal]
# Don't let side 4 accidentally move to a trapdoor
[avoid]
x=16,16,24,24
y=13,19,13,19
[/avoid]
[/ai]
team_name=good_guys
user_team_name=_"Rebels"
[/side]
[side]
side=5
no_leader=yes
{GOLD 380 260 160}
controller=ai
@ -277,36 +248,20 @@
{MODIFY_TERRAIN Gg (5) (3)}
#If the shadow gang is supposed to come help, then leave things
# otherwise kill the shadow lord and erase his castle
[if]
[variable]
name=Helicrom_status
numerical_equals=3
[/variable]
[then]
[objectives]
side=1
[objective]
description= _ "Destroy the stronghold of Halstead"
condition=win
[/objective]
[objective]
description= _ "Death of Baldras"
condition=lose
[/objective]
[objectives]
side=1
[objective]
description= _ "Destroy the stronghold of Halstead"
condition=win
[/objective]
[objective]
description= _ "Death of Baldras"
condition=lose
[/objective]
{TURNS_RUN_OUT}
{IS_LAST_SCENARIO}
[/objectives]
[/then]
[else]
[kill]
side=4
[/kill]
{MODIFY_TERRAIN Gs^Fds (25-28) (37-40)}
[/else]
[/if]
{TURNS_RUN_OUT}
{IS_LAST_SCENARIO}
[/objectives]
[/event]
#
@ -319,6 +274,9 @@
[recall]
id=Harper
[/recall]
[recall]
id=Helicrom
[/recall]
{MAKE_LOYAL_NORMAL Harper}
@ -349,61 +307,26 @@
speaker=Harper
message= _ "I dont see how we can bring it down. They are already invincible in there!"
[/message]
[if]
[variable]
name=Helicrom_status
numerical_equals=3
[/variable]
[then]
[message]
speaker=Helicrom
message= _ "No, my young friend. Halstead indeed has a weakness. Among my many assets is access to a wealth of secrets few in Wesnoth are privy to."
[/message]
[message]
speaker=Helicrom
message= _ "You see, the mountain on which the fort was built is solid, but the castle on top has been built and rebuilt many times over the ages. It is not as indestructible as you might think."
[/message]
[message]
speaker=Helicrom
message= _ "Beneath the structure is a system of catacombs that connects all four towers to the central keep. Over time, after many wars, supports were required to hold up the middle."
[/message]
[message]
speaker=Harper
message= _ "So... we can knock out the supports and bring down the stronghold of Halstead. Would it really work?"
[/message]
[message]
speaker=Helicrom
message= _ "I believe it will. Each tower has a passage down to the catacombs. If we can reach the center of each tower, one of our men can escape down to the bowels of the mountain and destroy its support. I am sure we will need to demolish no less than all four supports to raze the fortress."
[/message]
[/then]
[else]
[message]
speaker=Baldras
message= _ "No, young one. Halstead indeed has a weakness."
[/message]
[message]
speaker=Harper
message= _ "How do you know?"
[/message]
[message]
speaker=Baldras
message= _ "When I was a boy, my father — your grandfather — brought your mother and me to live in Aldril after orcs massacred many in our village. We grew up around here, and we learned many things."
[/message]
[message]
speaker=Baldras
message= _ "Beneath the structure is a system of catacombs that connects all four towers to the central keep. The catacombs growing over time, combined with centuries of war, made it necessary to install supports to hold up the middle."
[/message]
[message]
speaker=Harper
message= _ "So... we can knock out the supports and bring down the stronghold of Halstead. Would it really work?"
[/message]
[message]
speaker=Baldras
message= _ "I believe it will. Each tower has a passage down to the catacombs. If we can reach the center of each tower, one of our men can escape down to the bowels of the mountain and destroy its support. I am sure we will need to demolish no less than all four supports to raze the fortress."
[/message]
[/else]
[/if]
[message]
speaker=Helicrom
message= _ "No, my young friend. Halstead indeed has a weakness. Among my many assets is access to a wealth of secrets few in Wesnoth are privy to."
[/message]
[message]
speaker=Helicrom
message= _ "You see, the mountain on which the fort was built is solid, but the castle on top has been built and rebuilt many times over the ages. It is not as indestructible as you might think."
[/message]
[message]
speaker=Helicrom
message= _ "Beneath the structure is a system of catacombs that connects all four towers to the central keep. Over time, after many wars, supports were required to hold up the middle."
[/message]
[message]
speaker=Harper
message= _ "So... we can knock out the supports and bring down the stronghold of Halstead. Would it really work?"
[/message]
[message]
speaker=Helicrom
message= _ "I believe it will. Each tower has a passage down to the catacombs. If we can reach the center of each tower, one of our men can escape down to the bowels of the mountain and destroy its support. I am sure we will need to demolish no less than all four supports to raze the fortress."
[/message]
[message]
speaker=Harper
message= _ "I hope youre right. In a few hours, night will fall, and we will find out."
@ -457,7 +380,7 @@
[/if]
[unit]
side=5
side=4
type=Paladin
id=Sir Gwydion
name= _ "Sir Gwydion"
@ -467,10 +390,10 @@
{MOVE_UNIT (id=Sir Gwydion) 5 3}
{GENERIC_UNIT 5 (Lancer) 4 3}
{GENERIC_UNIT 5 (Lancer) 6 2}
{GENERIC_UNIT 5 (Knight) 4 2}
{GENERIC_UNIT 5 (Knight) 5 2}
{GENERIC_UNIT 4 (Lancer) 4 3}
{GENERIC_UNIT 4 (Lancer) 6 2}
{GENERIC_UNIT 4 (Knight) 4 2}
{GENERIC_UNIT 4 (Knight) 5 2}
#
#
[message]
@ -486,7 +409,7 @@
{MODIFY_TERRAIN Ke (5) (3)}
[set_recruit]
side=5
side=4
recruit=Knight,Lancer
[/set_recruit]
@ -572,7 +495,7 @@
side=2
[/filter]
[filter_second]
side=1,4,5
side=1,4
[/filter_second]
[message]
speaker=Dommel
@ -592,7 +515,7 @@
radius=4
[/filter_location]
side=1,3,4,5
side=1,3,4
[/filter]
[message]
speaker=Dommel
@ -895,7 +818,7 @@ Uu, Uu, Chr, Uh, Re, Uu, Uu, Uh, Uu, Chr, Chr
# Deaths - Dommel
#
# If either the orcs or Helicrom's guys happen to kill Dommel, we pretend
# If the orcs happen to kill Dommel, we pretend
# that Baldras killed him so that the dialogue makes more sense
[event]
name=last breath
@ -905,7 +828,7 @@ Uu, Uu, Chr, Uh, Re, Uu, Uu, Uh, Uu, Chr, Chr
[/filter]
[filter_second]
side=3,4
side=3
[/filter_second]
[fire_event]
@ -929,7 +852,7 @@ Uu, Uu, Chr, Uh, Re, Uu, Uu, Uh, Uu, Chr, Chr
[/filter]
[filter_second]
side=1,5
side=1,4
[/filter_second]
[message]

View file

@ -1,370 +0,0 @@
#textdomain wesnoth-l
[scenario]
id=07_The_Hunters
name= _ "The Hunters"
next_scenario=08_Glory
map_file=campaigns/Liberty/maps/07_The_Hunters.map
{TURNS 36 31 26}
{DEFAULT_SCHEDULE_DUSK}
{INTRO_AND_SCENARIO_MUSIC breaking_the_chains.ogg vengeful.ogg}
{EXTRA_SCENARIO_MUSIC battle.ogg}
{EXTRA_SCENARIO_MUSIC siege_of_laurelmor.ogg}
{EXTRA_SCENARIO_MUSIC wanderer.ogg}
{EXTRA_SCENARIO_MUSIC knalgan_theme.ogg}
[story]
[part]
story= _ "Baldras and his men quickly left the Grey Woods, not entirely convinced of their safety even after eradicating the lich."
[/part]
[part]
story= _ "As they marched, many men and women from the small hamlets peppering the area around Carcyn and the Grey Woods approached the group, asking to join them. The ascent of the Queen had cast an uneasy pall over the citizens of Wesnoth, and some of them were willing to resist it."
[/part]
[part]
story= _ "Knowing they too would be labeled criminals, he reluctantly accepted their help.
<b>Note:</b> Baldras is now able to recruit Outlaws."
[/part]
[part]
story= _ "Camped at the edge of the forest, they quietly observed substantial troop movements coming from the direction of Aldril, a nearby city, and marching to the northwest. Unsure what to make of it, they debated their next course of action..."
[/part]
[/story]
{LIBERTY_BIGMAP {JOURNEY_07_NEW} }
[side]
side=1
type=Highwayman
id=Baldras
canrecruit=yes
controller=human
recruit=Thug,Footpad,Poacher,Outlaw
{GOLD 200 150 100}
team_name=good_guys
user_team_name=_"Rebels"
[/side]
[side]
side=2
type=Royal Guard
id=Archarel
name= _ "Archarel"
canrecruit=yes
recruit=Swordsman,Red Mage,Horseman,Bowman,Cavalryman
{GOLD 200 250 300}
controller=ai
[ai]
recruitment_pattern=mixed fighter,fighter,fighter,archer,scout
village_value=0
[/ai]
team_name=bad_guys
user_team_name=_"Asheviere"
{FLAG_VARIANT loyalist}
defeat_condition=no_units_left
[/side]
[side]
side=3
type=Iron Mauler
id=Linneus
name= _ "Linneus"
facing=sw
canrecruit=yes
recruit=Heavy Infantryman,Mage,Spearman
gold=100
controller=ai
team_name=bad_guys
user_team_name=_"Asheviere"
{FLAG_VARIANT loyalist}
defeat_condition=no_units_left
[/side]
[event]
name=prestart
{PLACE_IMAGE scenery/rock1.png 12 22}
[objectives]
side=1
[objective]
description= _ "Kill all enemy forces"
condition=win
[/objective]
[objective]
description= _ "Death of Baldras"
condition=lose
[/objective]
[objective]
description= _ "Death of Harper"
condition=lose
[/objective]
{TURNS_RUN_OUT}
[gold_carryover]
bonus=yes
carryover_percentage=40
[/gold_carryover]
[/objectives]
#Hide both leaders initially
[store_unit]
variable=stored_Archarel
kill=yes
[filter]
id=Archarel
[/filter]
[/store_unit]
[store_unit]
variable=stored_Linneus
kill=yes
[filter]
id=Linneus
[/filter]
[/store_unit]
#set up units
[recall]
id=Harper
[/recall]
{NAMED_LOYAL_UNIT 1 Outlaw 30 17 Jingo ( _ "Jingo")}
{NAMED_LOYAL_UNIT 1 Outlaw 32 17 Majel ( _ "Majel")}
[/event]
#
# Starting conversation and actions
#
[event]
name=start
[allow_recruit]
side=1
type=Outlaw
[/allow_recruit]
[message]
speaker=Baldras
message= _ "The words of Lord Maddock have weighed heavy on me these past few days. It has dawned on me that we can never win. We will never defeat the entire army of Wesnoth. Idiocy! If the noble lord of Elensefar is unwilling to resist the Queen, how should I ever expect to?"
[/message]
[message]
speaker=Harper
message= _ "Whats worse is that she appears to have taken notice. We have counted five platoons of heavy infantry marching towards the garrison in just the last two hours."
[/message]
[message]
speaker=Baldras
message= _ "The garrison. The towers of Halstead are more than a garrison, nephew, they are a fortress. They used to protect this area from the enemies of Wesnoth; I never imagined they would house its enemies."
[/message]
{NAMED_LOYAL_UNIT 1 Dragoon 11 1 (Pitcher) ( _ "Pitcher")}
{MOVE_UNIT id=Pitcher 20 14}
[message]
speaker=Pitcher
message={WHISPER _"whisper^<i>Baldras!</i>"}
[/message]
[message]
speaker=Harper
message= _ "Uncle, he wears the crest of the Elense. We should answer."
[/message]
[message]
speaker=Baldras
message= _ "Rider, hush before we are discovered! Come to us, but quietly!"
[/message]
{MOVE_UNIT id=Pitcher 28 18}
[message]
speaker=Pitcher
message= _ "Master Baldras, I bring news from the north. During the past week, several patrols have again ventured across the Great River into Annuvin. A woman named Relana opposed them with a small militia. She was victorious."
[/message]
[message]
speaker=Majel
message= _ "This is surely good news!"
[/message]
[message]
speaker=Pitcher
message= _ "I am afraid it is not. The Queen is sending a branch of her main field army directly from Weldyn. As soon as they arrive, they will burn every village to the ground. No one will live."
[/message]
[message]
speaker=Baldras
message= _ "The troop movements all make sense now. We must stop this army from reaching the garrison. We cannot swallow them whole, but we can gnaw away at them. They mustnt take one step without us being there to harass and delay them. When they reach Halstead they must be exhausted or dying."
[/message]
[message]
speaker=Harper
message= _ "You just said we cant beat their entire army!"
[/message]
[message]
speaker=Baldras
message= _ "Do you propose surrender? Its this or nothing. All we can do is see it through to the end."
[/message]
[message]
speaker=Pitcher
message= _ "May you prevail in peace and war. I must depart before I am seen so far from my Lords borders."
[/message]
{MOVE_UNIT id=Pitcher 20 14}
[kill]
id=Pitcher
[/kill]
[message]
speaker=Jingo
message= _ "Another platoon approaches..."
[/message]
#define TROOPER TYPE TO_X TO_Y
[move_unit_fake]
type={TYPE}
side=3
x=36,{TO_X}
y=23,{TO_Y}
[/move_unit_fake]
{GENERIC_UNIT 3 {TYPE} {TO_X} {TO_Y}}
[+unit]
facing=sw
[/unit]
#enddef
#ifdef EASY
{TROOPER "Heavy Infantryman" 34 23}
#else
{TROOPER "Shock Trooper" 34 23}
#endif
{TROOPER "Heavy Infantryman" 35 23}
{TROOPER "Heavy Infantryman" 35 24}
#ifdef EASY
{TROOPER "Heavy Infantryman" 34 22}
#else
{TROOPER "Shock Trooper" 34 22}
#endif
{TROOPER "Heavy Infantryman" 36 24}
#ifdef HARD
{TROOPER "Shock Trooper" 36 23}
#else
{TROOPER "Heavy Infantryman" 36 23}
#endif
[move_unit_fake]
type=$stored_Linneus.type
side=$stored_Linneus.side
x=36,32
y=23,22
[/move_unit_fake]
[unstore_unit]
variable=stored_Linneus
[/unstore_unit]
{CLEAR_VARIABLE stored_Linneus}
[message]
speaker=Baldras
message= _ "When we are done, no one will fear the open roads and night sky more than the army of the usurper. Strike fast, strike silently... and leave no one alive."
[/message]
[/event]
#
# Special Event - when you attack the bad guys for the first time they react
#
[event]
name=attack
[filter_second]
side=3
[/filter_second]
[message]
speaker=Linneus
message= _ "Its an ambush! Hold your ground!"
[/message]
[/event]
#
# Special Event - after 4 turns, the outpost detachment returns to fight you
#
[event]
name=turn 4
[message]
speaker=narrator
message= _ "The next morning, the local night patrol returned to the nearby outpost. They were surprised to see their fellow soldiers engaged in combat with the band of thugs of which they had heard so much."
image="wesnoth-icon.png"
[/message]
[unstore_unit]
variable=stored_Archarel
[/unstore_unit]
[message]
speaker=Archarel
message= _ "Troops, to arms! These peasant scum think they are above the law. We will show them the law!"
[/message]
{CLEAR_VARIABLE stored_Archarel}
[/event]
#
# Special Event - don't step on the fire
#
[event]
name=moveto
[allow_undo]
[/allow_undo]
[filter]
x,y=31,18
[/filter]
[message]
speaker=unit
message= _ "Ow! Fire hot! No step in fire!"
[/message]
[/event]
#
# Victory
#
[event]
name=enemies defeated
[message]
speaker=Baldras
message= _ "What a bloody mess. We must attack Halstead next. If we wait, they will become invincible. If we can burn it to the ground before that happens, our people may have a chance. Rest well tonight, because tomorrows battle will decide the fate of our homes, our families, and our freedom."
[/message]
[if]
[variable]
name=Helicrom_status
numerical_equals=3
[/variable]
[then]
[message]
speaker=Baldras
message= _ "Send word to Helicrom that we are ready. It is time for him to repay his debt."
[/message]
[/then]
[/if]
{CLEAR_VARIABLE stored_Archarel}
[endlevel]
result=victory
bonus=yes
{NEW_GOLD_CARRYOVER 40}
[/endlevel]
[/event]
#
# Loss conditions - turns run out
#
[event]
name=time over
[message]
speaker=Baldras
message= _ "We have spent too much time here. Surely the entire Wesnoth army marches on our position. We are done for!"
[/message]
[endlevel]
result=defeat
[/endlevel]
[/event]
{LIBERTY_DEATHS}
{VILLAGE_BURNED}
[/scenario]
#undef TROOPER

View file

@ -1,6 +1,6 @@
#textdomain wesnoth-l
[scenario]
id=09_Epilogue
id=08_Epilogue
name= _ "Liberty — Epilogue"
{NO_MAP_DATA}
turns=10

View file

@ -114,9 +114,12 @@
{NEW_JOURNEY 685 417}
{NEW_JOURNEY 687 438}
{NEW_JOURNEY 688 458}
{NEW_JOURNEY 695 478}
{NEW_JOURNEY 710 491}
{NEW_BATTLE 729 499}
{NEW_JOURNEY 689 477}
{NEW_JOURNEY 685 496}
{NEW_JOURNEY 676 515}
{NEW_JOURNEY 665 528}
{NEW_JOURNEY 650 540}
{NEW_BATTLE 630 543}
#enddef
#define JOURNEY_06_OLD
@ -124,44 +127,20 @@
{OLD_JOURNEY 685 417}
{OLD_JOURNEY 687 438}
{OLD_JOURNEY 688 458}
{OLD_JOURNEY 695 478}
{OLD_JOURNEY 710 491}
{OLD_BATTLE 729 499}
{OLD_JOURNEY 689 477}
{OLD_JOURNEY 685 496}
{OLD_JOURNEY 676 515}
{OLD_JOURNEY 665 528}
{OLD_JOURNEY 648 540}
{OLD_BATTLE 626 543}
#enddef
#define JOURNEY_07_NEW
{JOURNEY_06_OLD}
{NEW_JOURNEY 710 491}
{NEW_JOURNEY 695 478}
{NEW_JOURNEY 677 470}
{NEW_JOURNEY 657 466}
{NEW_JOURNEY 638 467}
{NEW_JOURNEY 621 474}
{NEW_JOURNEY 607 487}
{NEW_JOURNEY 597 504}
{NEW_JOURNEY 593 524}
{NEW_BATTLE 598 543}
#enddef
#define JOURNEY_07_OLD
{JOURNEY_06_OLD}
{OLD_JOURNEY 710 491}
{OLD_JOURNEY 695 478}
{OLD_JOURNEY 677 470}
{OLD_JOURNEY 657 466}
{OLD_JOURNEY 638 467}
{OLD_JOURNEY 621 474}
{OLD_JOURNEY 607 487}
{OLD_JOURNEY 597 504}
{OLD_JOURNEY 593 524}
{OLD_BATTLE 598 543}
#enddef
#define JOURNEY_08_NEW
{JOURNEY_07_OLD}
{NEW_JOURNEY 593 524}
{NEW_JOURNEY 576 511}
{NEW_JOURNEY 555 501}
{NEW_JOURNEY 533 492}
{NEW_JOURNEY 608 534}
{NEW_JOURNEY 591 524}
{NEW_JOURNEY 574 511}
{NEW_JOURNEY 553 501}
{NEW_JOURNEY 531 492}
{NEW_BATTLE 520 476}
#enddef

View file

@ -4,7 +4,7 @@
id=2_Tutorial
name= _ "Wesnoth Tutorial — Part II"
map_file=campaigns/tutorial/maps/02_Tutorial_part_2.map
turns=30
turns=36
experience_modifier=100
{DEFAULT_SCHEDULE}
@ -19,7 +19,7 @@
side=1
controller=human
recruit=Elvish Fighter,Elvish Archer,Elvish Shaman
gold=123
gold=120
save_id=human_player
persistent=yes
team_name=player
@ -38,7 +38,7 @@
side=2
controller=ai
recruit=Orcish Grunt,Wolf Rider,Orcish Archer
gold=123
gold=100
team_name=orcs
user_team_name= _ "team_name^Orcs"
@ -56,10 +56,7 @@
x,y=15,12
ai_special=guardian
facing=nw
[modifications]
{TRAIT_RESILIENT}
{TRAIT_INTELLIGENT}
[/modifications]
random_traits=no
[/unit]
[ai]
@ -828,7 +825,7 @@ Please report the bug."
[/event]
[event]
name=turn 18
name=turn 28
[message]
speaker=Galdrad
@ -1128,7 +1125,7 @@ Please report the bug."
side=1
[filter_location]
x,y=38,5
radius=5
radius=6
[/filter_location]
[/filter]

View file

@ -556,7 +556,7 @@ if wesnoth.kernel_type() == "Game Lua Kernel" then
end
--[========[Units module]========]
wesnoth.units.scroll_to = wesnoth.interface.scroll_to_hex
--! Modifies all the units satisfying the given @a filter.
@ -576,7 +576,7 @@ if wesnoth.kernel_type() == "Game Lua Kernel" then
function wesnoth.units.find_attack(unit, filter)
for i, atk in ipairs(unit.attacks) do
if atk:matches(filter) then return atk end
if atk:matches(filter) then return atk, i end
end
end
@ -588,18 +588,18 @@ if wesnoth.kernel_type() == "Game Lua Kernel" then
end
return res
end
function wesnoth.units.chance_to_be_hit(...)
return 100 - wesnoth.units.defense_on(...)
end
-- Deprecated function
function wesnoth.units.resistance(...)
return 100 - wesnoth.units.resistance_against(...)
end
--[========[Sides module]========]
local sides_mt = {
__metatable = "sides",
__index = function(_, key)
@ -613,7 +613,7 @@ if wesnoth.kernel_type() == "Game Lua Kernel" then
end
}
setmetatable(wesnoth.sides, sides_mt)
-- Deprecated functions
function wesnoth.set_side_variable(side, var, val)
wesnoth.sides[side].variables[var] = val
@ -636,12 +636,12 @@ else
return self[key]
end
}
local function tovconfig_fake(cfg)
ensure_config(cfg)
return setmetatable(cfg, fake_vconfig_mt)
end
wesnoth.tovconfig = wesnoth.deprecate_api('wesnoth.tovconfig', 'wml.valid or wml.interpolate', 1, nil, tovconfig_fake, 'tovconfig is now deprecated in plugin or map generation contexts; if you need to check whether a table is valid as a WML object, use wml.valid instead, and use wml.interpolate if you need to substitute variables into a WML object.')
wml.tovconfig = wesnoth.deprecate_api('wml.tovconfig', 'wml.valid', 1, nil, tovconfig_fake, 'tovconfig is now deprecated in plugin or map generation contexts; if you need to check whether a table is valid as a WML object, use wml.valid instead.')
wml.literal = wesnoth.deprecate_api('wml.literal', '(no replacement)', 1, nil, wml.literal, 'Since vconfigs are not supported outside of the game kernel, this function is redundant and will be removed from plugin and map generation contexts. It will continue to work in the game kernel.')
@ -709,7 +709,7 @@ if wesnoth.kernel_type() == "Game Lua Kernel" then
-- No deprecation for these since since they're not actually public API yet
wesnoth.color_adjust = wesnoth.interface.color_adjust
wesnoth.set_menu_item = wesnoth.interface.set_menu_item
wesnoth.clear_menu_item = wesnoth.interface.clear_menu_item
wesnoth.clear_menu_item = wesnoth.interface.clear_menu_item
-- Units module
wesnoth.match_unit = wesnoth.deprecate_api('wesnoth.match_unit', 'wesnoth.units.matches', 1, nil, wesnoth.units.matches)
wesnoth.put_recall_unit = wesnoth.deprecate_api('wesnoth.put_recall_unit', 'wesnoth.units.to_recall', 1, nil, wesnoth.units.to_recall)

View file

@ -205,8 +205,7 @@ if __name__ == "__main__":
return uploads, version
def fixup(column):
column = column.replace("\n", "\\n")
return column
return column.replace("\n", "\\n").replace("\t", "\\t")
campaign_list = None
@ -219,7 +218,6 @@ if __name__ == "__main__":
for campaign in campaigns.get_all(tag = "campaign"):
print(campaign.debug())
else:
column_sizes = [10, 5, 10, 7, 8, 8, 10, 5, 10, 13]
columns = [["type", "name", "title", "author",
"version", "uploads", "downloads",
"size", "timestamp", "translate"]]
@ -236,13 +234,8 @@ if __name__ == "__main__":
time.ctime(int(campaign.get_text_val("timestamp", "0"))),
campaign.get_text_val("translate", "?")]
columns.append(column)
for i, s in enumerate(column_sizes):
if 1 + len(column[i]) > s:
column_sizes[i] = 1 + len(column[i])
for c in columns:
for i, f in enumerate(c):
sys.stdout.write(fixup(f).ljust(column_sizes[i]))
sys.stdout.write("\n")
print(*map(fixup, c), sep="\t", end="\n")
print_messages(data)
else:
sys.stderr.write("Could not connect.\n")

View file

@ -219,11 +219,13 @@ namespace
}
std::vector<std::string> allowed = ai_advancement.get_advancements(u);
if(!allowed.empty()){
std::string pick = allowed[randomness::generator->get_random_int(0, allowed.size() - 1)];
int res_new = get_advancement_index(*u, pick);
for(const auto& adv_id : allowed) {
int res_new = get_advancement_index(*u, adv_id);
if(res_new != -1) {
// if the advancement ids were really unique we could also make this function return the
// advancements id instead of its index. But i dont think there are guaraenteed to be unique.
res = res_new;
break;
}
}
}