Przeglądaj źródła

添加尸海寻路

LTCatt 6 lat temu
rodzic
commit
4ee901f6b9
31 zmienionych plików z 105 dodań i 15 usunięć
  1. 1 0
      data/ltw/functions/clock/tick20.mcfunction
  2. 3 0
      data/ltw/functions/clock/tick5.mcfunction
  3. 5 1
      data/ltw/functions/init.mcfunction
  4. 4 0
      data/ltw/functions/main/player_death.mcfunction
  5. 0 1
      data/ltw/functions/state/0/player_enter.mcfunction
  6. 2 1
      data/ltw/functions/state/0/state_enter.mcfunction
  7. 1 1
      data/ltw/functions/state/3/state_enter.mcfunction
  8. 1 0
      data/ltw/functions/state/5/player_death.mcfunction
  9. 0 1
      data/ltw/functions/state/5/player_enter.mcfunction
  10. 0 1
      data/ltw/functions/state/5/tick2.mcfunction
  11. 1 0
      data/ltw/functions/state/5/tick20.mcfunction
  12. 3 2
      data/mini/functions/colormatch/game_init.mcfunction
  13. 2 1
      data/mini/functions/hotpm/game_init.mcfunction
  14. 2 0
      data/mini/functions/main/game_init.mcfunction
  15. 3 1
      data/mini/functions/main/game_start.mcfunction
  16. 2 0
      data/mini/functions/main/player_death.mcfunction
  17. 2 1
      data/mini/functions/main/player_enter.mcfunction
  18. 2 1
      data/mini/functions/main/player_intro.mcfunction
  19. 1 0
      data/mini/functions/main/tick2.mcfunction
  20. 1 0
      data/mini/functions/main/tick20.mcfunction
  21. 2 1
      data/mini/functions/main/watcher_limit.mcfunction
  22. 2 1
      data/mini/functions/parkour/game_init.mcfunction
  23. 2 1
      data/mini/functions/tntrun/game_init.mcfunction
  24. 3 0
      data/mini/functions/zombie/game_end.mcfunction
  25. 15 0
      data/mini/functions/zombie/game_init.mcfunction
  26. 21 0
      data/mini/functions/zombie/player_enter.mcfunction
  27. 2 0
      data/mini/functions/zombie/player_failed.mcfunction
  28. 3 0
      data/mini/functions/zombie/player_intro.mcfunction
  29. 6 0
      data/mini/functions/zombie/tick20.mcfunction
  30. 3 0
      data/mini/functions/zombie/watcher_limit.mcfunction
  31. 10 0
      data/test/functions/mini/zombie.mcfunction

+ 1 - 0
data/ltw/functions/clock/tick20.mcfunction

@@ -4,6 +4,7 @@ schedule function ltw:clock/tick20 20t replace
 # 调用其他模块
 execute if score $state mem matches 3 run function ltw:state/3/tick20
 execute if score $state mem matches 4 run function ltw:state/4/tick20
+execute if score $state mem matches 5 run function ltw:state/5/tick20
 execute if score $state mem matches 6 run function ltw:state/6/tick20
 
 # 全局倒计时

+ 3 - 0
data/ltw/functions/clock/tick5.mcfunction

@@ -5,3 +5,6 @@ schedule function ltw:clock/tick5 5t replace
 execute if score $state mem matches 0 run function ltw:state/0/tick5
 execute if score $state mem matches 5 run function ltw:state/5/tick5
 function ltw:main/tick5
+
+# 死亡触发
+execute as @a[scores={death=1..}] at @s run function ltw:main/player_death

+ 5 - 1
data/ltw/functions/init.mcfunction

@@ -21,6 +21,10 @@ gamerule doTileDrops false
 forceload add 0 0
 
 # 记分板
+scoreboard objectives remove health
+scoreboard objectives add health health "生命值"
+scoreboard objectives remove death
+scoreboard objectives add death deathCount "死亡触发"
 scoreboard objectives remove mem
 scoreboard objectives add mem dummy "全局变量"
 scoreboard objectives remove total_score
@@ -34,7 +38,7 @@ scoreboard objectives add game_id dummy "游戏编号"
 scoreboard players set $ game_id 0
 
 # 常量
-scoreboard players set $global_mini_count mem 4
+scoreboard players set $global_mini_count mem 5
 
 # 队伍
 team remove ltw

+ 4 - 0
data/ltw/functions/main/player_death.mcfunction

@@ -0,0 +1,4 @@
+# 当玩家死亡后触发
+scoreboard players reset @s death
+
+execute if score $state mem matches 5 run function ltw:state/5/player_death

+ 0 - 1
data/ltw/functions/state/0/player_enter.mcfunction

@@ -12,7 +12,6 @@ effect give @s saturation 1000000 0 true
 gamerule naturalRegeneration true
 effect give @s night_vision 1000000 0 true
 effect give @s resistance 1000000 4 true
-effect give @s weakness 1000000 4 true
 
 # 冒险模式
 gamemode adventure

+ 2 - 1
data/ltw/functions/state/0/state_enter.mcfunction

@@ -7,7 +7,8 @@ scoreboard objectives setdisplay belowName
 scoreboard objectives setdisplay sidebar
 scoreboard objectives setdisplay list
 
-# 关闭伤害
+# 伤害管理
+team modify ltw friendlyFire false
 gamerule fallDamage false
 
 # 清理加载区域

+ 1 - 1
data/ltw/functions/state/3/state_enter.mcfunction

@@ -11,7 +11,7 @@ scoreboard objectives setdisplay list total_score_disp
 scoreboard players set $countdown mem 10
 
 # 小游戏编号
-# 1 跑酷;2 TNT Run;3 热土豆;4 陷阱迷阵
+# 1 跑酷;2 TNT Run;3 热土豆;4 陷阱迷阵;5 僵尸
 # 优化下一次游戏的选择:生成一个 1~[最大游戏编号] 的 randomarray,每次从其中取下一个数。
 execute unless data storage ltw:mini types[0] run function ltw:state/3/newarray
 execute store result score $mini_type mem run data get storage ltw:mini types[0]

+ 1 - 0
data/ltw/functions/state/5/player_death.mcfunction

@@ -0,0 +1 @@
+function mini:main/player_death

+ 0 - 1
data/ltw/functions/state/5/player_enter.mcfunction

@@ -1,2 +1 @@
-# 对单个玩家的处理(如果玩家中途加入就会执行此函数)
 function mini:main/player_enter

+ 0 - 1
data/ltw/functions/state/5/tick2.mcfunction

@@ -1,2 +1 @@
-function mini:main/watcher_limit
 function mini:main/tick2

+ 1 - 0
data/ltw/functions/state/5/tick20.mcfunction

@@ -0,0 +1 @@
+function mini:main/tick20

+ 3 - 2
data/mini/functions/colormatch/game_init.mcfunction

@@ -18,5 +18,6 @@ scoreboard players set $color_match_type mem 0
 function mini:colormatch/game/prepare_round
 schedule function mini:colormatch/game_init2 18t replace
 
-# 关闭伤害
-gamerule fallDamage false
+# 伤害管理
+team modify ltw friendlyFire true
+gamerule fallDamage false

+ 2 - 1
data/mini/functions/hotpm/game_init.mcfunction

@@ -3,7 +3,8 @@ forceload add 1000 3000 1100 3100
 
 scoreboard players set $finish_mode mem 0
 
-# 关闭伤害
+# 伤害管理
+team modify ltw friendlyFire true
 gamerule fallDamage false
 
 # 生成地图

+ 2 - 0
data/mini/functions/main/game_init.mcfunction

@@ -1,9 +1,11 @@
 # 计分板初始化
 scoreboard players reset * mini_score
 scoreboard players reset * mini_heart
+scoreboard players reset * health
 
 # 小游戏初始化
 execute if score $mini_type mem matches 1 run function mini:parkour/game_init
 execute if score $mini_type mem matches 2 run function mini:tntrun/game_init
 execute if score $mini_type mem matches 3 run function mini:hotpm/game_init
 execute if score $mini_type mem matches 4 run function mini:colormatch/game_init
+execute if score $mini_type mem matches 5 run function mini:zombie/game_init

+ 3 - 1
data/mini/functions/main/game_start.mcfunction

@@ -8,8 +8,10 @@ execute if score $mini_type mem matches 3 run scoreboard objectives setdisplay s
 execute if score $mini_type mem matches 3 run scoreboard objectives setdisplay belowName mini_heart
 execute if score $mini_type mem matches 4 run scoreboard objectives setdisplay sidebar mini_heart
 execute if score $mini_type mem matches 4 run scoreboard objectives setdisplay belowName mini_heart
+execute if score $mini_type mem matches 5 run scoreboard objectives setdisplay sidebar health
+execute if score $mini_type mem matches 5 run scoreboard objectives setdisplay belowName health
 scoreboard objectives setdisplay list total_score_disp
-
+# TODO : [LTCat] 添加 list HUD 统一
 
 # 调用其他模块
 execute if score $mini_type mem matches 2 run function mini:tntrun/game_start

+ 2 - 0
data/mini/functions/main/player_death.mcfunction

@@ -0,0 +1,2 @@
+# 玩家死亡后触发
+execute if score $mini_type mem matches 5 run function mini:zombie/player_failed

+ 2 - 1
data/mini/functions/main/player_enter.mcfunction

@@ -10,4 +10,5 @@ function mini:main/update_player_count
 execute if score $mini_type mem matches 1 run function mini:parkour/player_enter
 execute if score $mini_type mem matches 2 run function mini:tntrun/player_enter
 execute if score $mini_type mem matches 3 run function mini:hotpm/player_enter
-execute if score $mini_type mem matches 4 run function mini:colormatch/player_enter
+execute if score $mini_type mem matches 4 run function mini:colormatch/player_enter
+execute if score $mini_type mem matches 5 run function mini:zombie/player_enter

+ 2 - 1
data/mini/functions/main/player_intro.mcfunction

@@ -2,4 +2,5 @@
 execute if score $mini_type mem matches 1 run function mini:parkour/player_intro
 execute if score $mini_type mem matches 2 run function mini:tntrun/player_intro
 execute if score $mini_type mem matches 3 run function mini:hotpm/player_intro
-execute if score $mini_type mem matches 4 run function mini:colormatch/player_intro
+execute if score $mini_type mem matches 4 run function mini:colormatch/player_intro
+execute if score $mini_type mem matches 5 run function mini:zombie/player_intro

+ 1 - 0
data/mini/functions/main/tick2.mcfunction

@@ -1,3 +1,4 @@
+function mini:main/watcher_limit
 execute if score $mini_type mem matches 2 run function mini:tntrun/tick2
 execute if score $mini_type mem matches 3 run function mini:hotpm/tick2
 execute if score $mini_type mem matches 4 run function mini:colormatch/tick2

+ 1 - 0
data/mini/functions/main/tick20.mcfunction

@@ -0,0 +1 @@
+execute if score $mini_type mem matches 5 run function mini:zombie/tick20

+ 2 - 1
data/mini/functions/main/watcher_limit.mcfunction

@@ -2,4 +2,5 @@
 execute if score $mini_type mem matches 1 run function mini:parkour/watcher_limit
 execute if score $mini_type mem matches 2 run function mini:tntrun/watcher_limit
 execute if score $mini_type mem matches 3 run function mini:hotpm/watcher_limit
-execute if score $mini_type mem matches 4 run function mini:colormatch/watcher_limit
+execute if score $mini_type mem matches 4 run function mini:colormatch/watcher_limit
+execute if score $mini_type mem matches 5 run function mini:zombie/watcher_limit

+ 2 - 1
data/mini/functions/parkour/game_init.mcfunction

@@ -7,5 +7,6 @@ scoreboard players set $finish_mode mem 1
 setblock 1000 10 1000 minecraft:structure_block{mode:"LOAD",name:"mini:parkour"}
 setblock 1000 11 1000 minecraft:redstone_block
 
-# 关闭伤害
+# 伤害管理
+team modify ltw friendlyFire true
 gamerule fallDamage false

+ 2 - 1
data/mini/functions/tntrun/game_init.mcfunction

@@ -10,5 +10,6 @@ setblock 1000 11 2000 minecraft:redstone_block
 # 清理残余实体
 kill @e[tag=tntrun_block]
 
-# 关闭伤害
+# 伤害管理
+team modify ltw friendlyFire true
 gamerule fallDamage false

+ 3 - 0
data/mini/functions/zombie/game_end.mcfunction

@@ -0,0 +1,3 @@
+# 结束僵尸
+forceload remove 1000 5000 1050 5050
+team modify ltw friendlyFire true

+ 15 - 0
data/mini/functions/zombie/game_init.mcfunction

@@ -0,0 +1,15 @@
+# 初始化僵尸地图
+forceload add 1000 5000 1050 5050
+
+scoreboard players set $finish_mode mem 0
+
+# 生成地图
+setblock 1000 10 5000 minecraft:structure_block{mode:"LOAD",name:"mini:zombie"}
+setblock 1000 11 5000 minecraft:redstone_block
+
+# 清理残余实体
+tp @e[type=zombie] ~ -100 ~
+
+# 伤害管理
+team modify ltw friendlyFire false
+gamerule fallDamage false

+ 21 - 0
data/mini/functions/zombie/player_enter.mcfunction

@@ -0,0 +1,21 @@
+# 单个玩家开始小游戏时执行
+function lib:sounds/music/mini_fast
+title @s clear
+title @s actionbar ""
+
+# 状态效果
+effect clear @s
+effect give @s saturation 1000000 0 true
+effect give @s instant_health 10 0 true
+gamerule naturalRegeneration false
+effect give @s night_vision 1000000 0 true
+
+# 传送玩家
+tp @s 1010.5 12 5013.0
+
+# 调整模式
+gamemode spectator @s
+gamemode adventure @s[tag=!watcher,tag=!rejoining]
+
+# 重新加入处理
+execute if entity @s[tag=rejoining] run function mini:zombie/player_failed

+ 2 - 0
data/mini/functions/zombie/player_failed.mcfunction

@@ -0,0 +1,2 @@
+# 玩家死亡时由玩家自己触发
+function mini:main/player_failed

+ 3 - 0
data/mini/functions/zombie/player_intro.mcfunction

@@ -0,0 +1,3 @@
+# 向单个玩家展示小游戏介绍
+tp @s 1010.5 20 5006.0 0 25
+tellraw @s [{"text":"\n>> 尸海寻路 >>\n\n","color":"red","bold":true},{"text": "僵尸正在不断地涌现……成为最后的幸存者吧!\n","color":"white","bold": false}]

+ 6 - 0
data/mini/functions/zombie/tick20.mcfunction

@@ -0,0 +1,6 @@
+# 随机召唤僵尸
+scoreboard players set $random_min mem 0
+scoreboard players set $random_max mem 2
+function lib:random
+execute if score $random mem matches 1 run summon zombie 1006.0 20.5 5013.0
+execute if score $random mem matches 2 run summon zombie 1015.0 20.5 5013.0

+ 3 - 0
data/mini/functions/zombie/watcher_limit.mcfunction

@@ -0,0 +1,3 @@
+# 观察者限制飞行范围
+execute as @a[gamemode=spectator] unless entity @s[x=1001,y=11,z=5001,dx=18,dz=11,dy=23] run spectate
+execute as @a[gamemode=spectator] unless entity @s[x=1001,y=11,z=5001,dx=18,dz=11,dy=23] run tp @s 1010.5 20 5006.0 0 25

+ 10 - 0
data/test/functions/mini/zombie.mcfunction

@@ -0,0 +1,10 @@
+# 测试用:快速开始僵尸
+tag @a add hub_gameparty
+tag @a remove hub_watch
+function ltw:state/0/start_gameparty
+scoreboard players set $round mem 100
+scoreboard players set $mini_type mem 5
+function mini:main/game_init
+function ltw:state/4/state_enter
+scoreboard players set $countdown mem 5
+say 已开始尸海寻路!