战争
警告: 此功能目前标记为实验性,使用过程中可能会遇到错误。如果您有反馈,请发送给我!
城镇战争,在HuskTowns v2.6中添加,允许标记为敌对关系的[[城镇]]进行战争!此功能需要启用[[关系]]功能。
1. 启用城镇战争
要启用城镇战争,请在配置文件的relations
部分下查找wars
子部分。确保两个enabled
设置都设置为true
。
城镇战争 (config.yml)
relations:
# 启用城镇关系(联盟和敌对)。文档: https://william278.net/docs/husktowns/town-relations/
enabled: true
wars:
# 允许敌对城镇同意进行战争。需要启用城镇关系。战争由成员之间的战斗组成,战斗将在防守城镇的出生点进行。文档: https://william278.net/docs/husktowns/town-wars/
enabled: true
2. 战争的前提条件
警告: 存在一个配置设置,要求在宣战前必须有最低百分比的城镇成员在线,但在v2.6中此功能尚未生效。
战争在两个城镇之间进行,双方城镇在开战前必须满足一些要求。
- 两个城镇必须至少有一个设置了
/town spawn
点的领地。 - 两个城镇必须能够支付战争的最低赌注(默认值:
5000
) - 两个城镇不能处于上次战争的冷却期(默认值:
48小时
)
2.1 赌注
作为宣战的一部分,城镇必须同意与另一个城镇进行战争的赌注,赌注的总和将奖励给胜利者。宣战需要最低赌注;这可以在config.yml
中配置(默认值为5000
)。如果战争以平局结束(见下文),赌注将丢失。
2.2 冷却期
战争结束后,将有一个冷却期,防止该城镇立即再次开战。冷却期结束后,城镇将能够再次进行战争。
2.3 宣战和进行战争
如果满足要求,拥有DECLARE_WAR
权限的用户(默认为市长角色)可以使用/war declare <town> <wager>
宣战。战争声明将跨服务器发送(如果使用此功能),但战争战斗本身将在防守城镇的出生点所在的服务器上进行。
战争声明的发送者被视为进攻城镇。防守城镇将收到一条消息,告知他们已收到针对他们的战争声明请求。他们必须使用/war accept
接受战争条款(包括提议的赌注)。战争声明将在可配置的时间段(默认:10分钟
)后过期,之后必须重新发送。
2.4 战争规则
战争围绕防守城镇的/town spawn
点的战争区域进行。战争区域有一个半径(默认:128方块
),不允许离开此半径(见下文)。这为防守方提供了主场优势,以准备适当的防御措施。一旦战争声明被接受,战争开始,用户将被传送。
战争结束后将显示简要概述消息。
2.5 传送进入战斗
所有在线的城镇成员(包括不在战争发生服务器上的成员)将被传送到战争区域。
- 对于防守城镇的成员,所有成员将被传送到定义的
/town spawn
点。 - 对于进攻城镇的成员,所有在线成员将被传送到防守城镇出生点径向距离
X
方块外的随机安全地面位置(其中X
是战争区域半径 / 2
)。
2.6 战时城镇规则
在战争期间,防守城镇的领地内适用特殊的城镇规则;您可以在rules.yml
文件中配置这些规则,以适应您服务器的混乱风格,例如启用方块破坏、爆炸等。默认情况下,这些规则仅允许PvP。
默认战时城镇规则 (rules.yml)
# 城镇战争期间的默认规则(仅在城镇战争期间使用)
wartime_rules:
public_interact_access: true
public_build_access: true
monster_spawning: true
pvp: true
explosion_damage: true
public_farm_access: true
mob_griefing: true
fire_damage: true
public_container_access: true
2.7 战争期间的PvP战争
参与战争的用户在定义的战争区域内拥有PvP权限,并能够攻击其他玩家。请注意,config.yml
中的标准城镇友军伤害设置在战争期间仍然适用。
当前未参与战争的用户(因为他们来自其他城镇或已死亡/逃离/断开连接)将根据其当前位置遵守标准的PvP规则。
2.8 死亡、逃离和断开连接
战争参与者在以下情况下将被移除出战争:
- 他们被杀死或以其他方式死亡
- 他们从服务器断开连接(包括更换服务器)
- 他们逃离战争区域半径(包括通过使用传送命令)
如果用户死亡或逃离战争,将在战争发生的服务器上显示一条特殊消息。
2.9 查看战争状态
/town war
命令将在聊天中显示一个概述,指示当前城镇战争的状态。这包括战争的赌注、开始时间、位置以及显示当前战斗局势的进度条。
当前的战争参与者还将看到一个Boss Bar,显示对方城镇仍然存活的成员数量。
在城镇概览菜单(/town info
)中,处于战争状态的城镇还将显示一个小的“当前与...交战”通知,点击可以查看战争状态菜单。
2.10 胜利条件
如果对方城镇没有在线的战争参与者,则战争获胜。
任何一方城镇也可以使用/war surrender
命令投降;对方城镇将被宣布为胜利者。这需要DECLARE_WAR
权限。
2.11 平局条件
战争将在3小时后以平局结束。
此外,如果服务器在战争期间重启,战争也将被清除并在服务器重新启动后标记为平局。
3. 配置城镇战争
以下是config.yml
文件中与城镇战争相关的完整部分,位于文件的relations
部分下。
城镇战争配置 (config.yml)
wars:
# 允许敌对城镇同意进行战争。需要启用城镇关系。战争由成员之间的战斗组成,战斗将在防守城镇的出生点进行。文档: https://william278.net/docs/husktowns/town-wars/
enabled: false
# 城镇在完成一次战争后,可以再次参与战争前的小时数
cooldown: 48
# 战争声明在过期前的持续时间
declaration_expiry: 10
# 战争的最低赌注。这是每个城镇参与战争必须支付的金额。战争的胜利者将获得双方的赌注。
minimum_wager: 5000.0
# 战争期间显示的Boss Bar的颜色
boss_bar_color: RED
# 城镇参与战争所需的最低在线成员百分比。
required_online_membership: 50.0
# 防守城镇出生点周围的战斗区域半径,以方块为单位。(最小:16)
war_zone_radius: 128