223 lines
8.2 KiB
INI
223 lines
8.2 KiB
INI
#textdomain wesnoth-multiplayer
|
|
|
|
[multiplayer_side]
|
|
id=Custom
|
|
name= _"Custom"
|
|
image="units/unknown-unit.png"
|
|
{MAGENTA_IS_THE_TEAM_COLOR}
|
|
[/multiplayer_side]
|
|
|
|
#define RANDOM_SIDE
|
|
[multiplayer_side]
|
|
id=Random
|
|
name= _"Random"
|
|
image="units/random-dice.png"
|
|
{MAGENTA_IS_THE_TEAM_COLOR}
|
|
random_faction=yes
|
|
[/multiplayer_side]
|
|
#enddef
|
|
|
|
#define QUICK_4MP_LEADERS
|
|
# This makes all leaders with 4 MP receive the quick trait, except ones with
|
|
# unit.variables.dont_make_me_quick=yes (boolean)
|
|
|
|
[event]
|
|
name=prestart
|
|
|
|
[store_unit]
|
|
[filter]
|
|
canrecruit=yes
|
|
|
|
[filter_wml]
|
|
max_moves=4
|
|
[/filter_wml]
|
|
[/filter]
|
|
|
|
kill=yes
|
|
variable=leaders_to_make_quick
|
|
[/store_unit]
|
|
|
|
{FOREACH leaders_to_make_quick i}
|
|
[if]
|
|
# The variable check is done here instead of in the [store_unit]
|
|
# so that all boolean values work
|
|
[variable]
|
|
name=leaders_to_make_quick[$i].variables.dont_make_me_quick
|
|
boolean_equals=yes
|
|
[/variable]
|
|
|
|
[then]
|
|
[unstore_unit]
|
|
variable=leaders_to_make_quick[$i]
|
|
[/unstore_unit]
|
|
[/then]
|
|
|
|
[else]
|
|
[set_variables]
|
|
name=temp
|
|
|
|
[literal]
|
|
{TRAIT_QUICK}
|
|
[/literal]
|
|
[/set_variables]
|
|
|
|
[set_variables]
|
|
name=leaders_to_make_quick[$i].modifications.trait
|
|
mode=append
|
|
|
|
[insert_tag]
|
|
name=literal
|
|
variable=temp.trait
|
|
[/insert_tag]
|
|
[/set_variables]
|
|
|
|
{CLEAR_VARIABLE leaders_to_make_quick[$i].max_moves,leaders_to_make_quick[$i].moves,leaders_to_make_quick[$i].max_hitpoints,leaders_to_make_quick[$i].hitpoints}
|
|
|
|
[unstore_unit]
|
|
variable=leaders_to_make_quick[$i]
|
|
[/unstore_unit]
|
|
[/else]
|
|
[/if]
|
|
{NEXT i}
|
|
|
|
{CLEAR_VARIABLE leaders_to_make_quick,temp}
|
|
[/event]
|
|
#enddef
|
|
|
|
#define TURNS_OVER_ADVANTAGE
|
|
[event]
|
|
name=time over
|
|
[lua]
|
|
# wmllint: markcheck off
|
|
code=<<
|
|
local _ = wesnoth.textdomain "wesnoth-multiplayer"
|
|
local function all_sides()
|
|
local function f(s, i)
|
|
i = i + 1
|
|
local t = wesnoth.sides[i]
|
|
return t and i, t
|
|
end
|
|
return f, nil, 0
|
|
end
|
|
|
|
local income_factor = 5
|
|
|
|
local side_num = -1
|
|
local total_score = -1
|
|
local side_comparison = ""
|
|
for side, team in all_sides() do
|
|
repeat -- ugly hack to convert 'break' into 'continue'
|
|
if team.__cfg.hidden then
|
|
break
|
|
end
|
|
local r, g, b = 255, 255, 255
|
|
if team.__cfg.color == 1 then r, g, b = 255, 0, 0
|
|
elseif team.__cfg.color == 2 then r, g, b = 0, 0, 255
|
|
elseif team.__cfg.color == 3 then r, g, b = 0, 255, 0
|
|
elseif team.__cfg.color == 4 then r, g, b = 155, 48, 255
|
|
elseif team.__cfg.color == 5 then r, g, b = 0, 0, 0
|
|
elseif team.__cfg.color == 6 then r, g, b = 165, 42, 42
|
|
elseif team.__cfg.color == 7 then r, g, b = 255, 165, 0
|
|
elseif team.__cfg.color == 8 then r, g, b = 255, 255, 255
|
|
elseif team.__cfg.color == 9 then r, g, b = 0, 128, 128 end
|
|
if # wesnoth.get_units( { side = side } ) == 0 then
|
|
side_comparison = side_comparison ..
|
|
string.format( tostring( _ "<span strikethrough='true' foreground='#%02x%02x%02x'>Side %d</span>") .. "\n",
|
|
r, g, b, side)
|
|
break
|
|
end
|
|
local income = team.total_income * income_factor
|
|
local units = 0
|
|
-- Calc the total unit-score here
|
|
for i, unit in ipairs( wesnoth.get_units { side = side } ) do
|
|
if not unit.__cfg.canrecruit then
|
|
wesnoth.fire("unit_worth", { id = unit.id })
|
|
units = units + wesnoth.get_variable("unit_worth")
|
|
end
|
|
end
|
|
-- Up to here
|
|
local total = units + team.gold + income
|
|
side_comparison = side_comparison ..
|
|
string.format( tostring( _ "<span foreground='#%02x%02x%02x'>Side %d</span>: Income score = %d Unit score = %d Gold = %d") .. "\n" .. tostring( _ "Grand total: <b>%d</b>") .. "\n",
|
|
r, g, b, side, income, units, team.gold, total)
|
|
if total > total_score then
|
|
color = string.format("#%02x%02x%02x", r, g, b)
|
|
side_num = side
|
|
total_score = total
|
|
end
|
|
until true -- end ugly hack
|
|
end
|
|
side_comparison = side_comparison ..
|
|
string.format( "\n" .. tostring( _ "<span foreground='%s'>Side %d</span> has the advantage."), color, side_num)
|
|
wesnoth.fire("message", { message = side_comparison, speaker = "narrator", image = "wesnoth-icon.png"})
|
|
>>
|
|
# wmllint: markcheck on
|
|
[/lua]
|
|
[/event]
|
|
#enddef
|
|
|
|
# These macros make things easier for UMC eras which are additions to or modifications of the default eras.
|
|
# If anything gets changed or added to the default eras, please do it in the code included in these macros.
|
|
#define ERA_DEFAULT
|
|
{RANDOM_SIDE}
|
|
{multiplayer/factions/loyalists-default.cfg}
|
|
{multiplayer/factions/rebels-default.cfg}
|
|
{multiplayer/factions/northerners-default.cfg}
|
|
{multiplayer/factions/undead-default.cfg}
|
|
{multiplayer/factions/knalgans-default.cfg}
|
|
{multiplayer/factions/drakes-default.cfg}
|
|
|
|
{QUICK_4MP_LEADERS}
|
|
{TURNS_OVER_ADVANTAGE}
|
|
#enddef
|
|
|
|
[era]
|
|
id=era_default
|
|
name= _ "Default"
|
|
description=_ "The standard era for Wesnoth multiplayer. Consists of six factions and is generally balanced."
|
|
|
|
{ERA_DEFAULT}
|
|
[/era]
|
|
|
|
#define ERA_HEROES
|
|
{RANDOM_SIDE}
|
|
{multiplayer/factions/loyalists-aoh.cfg}
|
|
{multiplayer/factions/rebels-aoh.cfg}
|
|
{multiplayer/factions/northerners-aoh.cfg}
|
|
{multiplayer/factions/undead-aoh.cfg}
|
|
{multiplayer/factions/knalgans-aoh.cfg}
|
|
{multiplayer/factions/drakes-aoh.cfg}
|
|
|
|
{QUICK_4MP_LEADERS}
|
|
{TURNS_OVER_ADVANTAGE}
|
|
#enddef
|
|
|
|
[era]
|
|
id=era_heroes
|
|
name= _ "Age of Heroes"
|
|
description= _"An era with higher level units: level three leaders, with level one and two units available for recruit. Consists of six factions. Not considered balanced."
|
|
|
|
{ERA_HEROES}
|
|
[/era]
|
|
|
|
[era]
|
|
id=era_khalifate
|
|
name= _ "Default + Khalifate"
|
|
description= _ "An era featuring an additional faction besides the six factions from Default Era. Khalifate units use no magic, but instead rely on careful use of terrain and coordinated strikes around dusk or dawn.
|
|
|
|
This era is still under development, so please be sure to report any problems that arise."
|
|
|
|
{ERA_DEFAULT}
|
|
{multiplayer/factions/khalifate-default.cfg}
|
|
[/era]
|
|
|
|
[era]
|
|
id=era_khalifate_heroes
|
|
name= _ "Age of Heroes + Khalifate"
|
|
description= _ "An era featuring an additional faction besides the six factions from Age of Heroes Era. Khalifate units use no magic, but instead rely on careful use of terrain and coordinated strikes around dusk or dawn.
|
|
|
|
This era is still under development, so please be sure to report any problems that arise."
|
|
|
|
{ERA_HEROES}
|
|
{multiplayer/factions/khalifate-aoh.cfg}
|
|
[/era]
|