跳到主要内容

战争

警告: 此功能目前标记为实验性,使用过程中可能会遇到错误。如果您有反馈,请发送给我!

城镇战争,在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命令将在聊天中显示一个概述,指示当前城镇战争的状态。这包括战争的赌注、开始时间、位置以及显示当前战斗局势的进度条。

HuskTowns城镇战争状态屏幕截图

当前的战争参与者还将看到一个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