Przeglądaj źródła

使用随机数组生成物品品质

LTCatt 5 lat temu
rodzic
commit
7468678884

+ 8 - 9
data/item/functions/bonus_item/gameparty/mixed/random.mcfunction

@@ -1,17 +1,16 @@
 # 生成随机品质的物品
 
-# 品质 = d100
-scoreboard players set $random_min mem 1
-scoreboard players set $random_max mem 100
-function lib:random
-scoreboard players operation #quality mem = $random mem
+# 品质:生成一个 1~10 的 randomarray,每次从其中取下一个数
+execute unless data storage ltw:mini qualities[0] run function item:bonus_item/newarray
+execute store result score #quality mem run data get storage ltw:mini qualities[0]
+data remove storage ltw:mini qualities[0]
 
 # 根据品质生成不同的物品
 # 白色:40%
-execute if score #quality mem matches ..39 run function item:bonus_item/gameparty/mixed/white
+execute if score #quality mem matches ..4 run function item:bonus_item/gameparty/mixed/white
 # 绿色:30%
-execute if score #quality mem matches 40..69 run function item:bonus_item/gameparty/mixed/green
+execute if score #quality mem matches 5..7 run function item:bonus_item/gameparty/mixed/green
 # 蓝色:20%
-execute if score #quality mem matches 70..89 run function item:bonus_item/gameparty/mixed/blue
+execute if score #quality mem matches 8..9 run function item:bonus_item/gameparty/mixed/blue
 # 紫色:10%
-execute if score #quality mem matches 90.. run function item:bonus_item/gameparty/mixed/purple
+execute if score #quality mem matches 10.. run function item:bonus_item/gameparty/mixed/purple

+ 8 - 9
data/item/functions/bonus_item/gameparty/score/random.mcfunction

@@ -1,17 +1,16 @@
 # 生成随机品质的物品
 
-# 品质 = d100
-scoreboard players set $random_min mem 1
-scoreboard players set $random_max mem 100
-function lib:random
-scoreboard players operation #quality mem = $random mem
+# 品质:生成一个 1~10 的 randomarray,每次从其中取下一个数
+execute unless data storage ltw:mini qualities[0] run function item:bonus_item/newarray
+execute store result score #quality mem run data get storage ltw:mini qualities[0]
+data remove storage ltw:mini qualities[0]
 
 # 根据品质生成不同的物品
 # 白色:40%
-execute if score #quality mem matches ..40 run function item:bonus_item/gameparty/score/white
+execute if score #quality mem matches ..4 run function item:bonus_item/gameparty/score/white
 # 绿色:30%
-execute if score #quality mem matches 41..70 run function item:bonus_item/gameparty/score/green
+execute if score #quality mem matches 5..7 run function item:bonus_item/gameparty/score/green
 # 蓝色:20%
-execute if score #quality mem matches 71..90 run function item:bonus_item/gameparty/score/blue
+execute if score #quality mem matches 8..9 run function item:bonus_item/gameparty/score/blue
 # 紫色:10%
-execute if score #quality mem matches 91.. run function item:bonus_item/gameparty/score/purple
+execute if score #quality mem matches 10.. run function item:bonus_item/gameparty/score/purple

+ 4 - 0
data/item/functions/bonus_item/new_array.mcfunction

@@ -0,0 +1,4 @@
+scoreboard players set $randarray_max mem 10
+scoreboard players set $randarray_last mem 0
+function lib:randarray/call
+data modify storage ltw:mini qualities set from storage lib:randarray out

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

@@ -169,6 +169,7 @@ function ltw:state/0/state_enter
 
 # 重置随机数组
 data modify storage ltw:mini types set value []
+data modify storage ltw:mini qualities set value []
 data modify storage ltw:mini colormatch.types set value []
 
 # 显示提示