Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weโ€™ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

๐Ÿง‘โ€๐Ÿ’ป ใƒ€ใƒกใƒผใ‚ธไธŠ้™ใฎๅผ•ใไธŠใ’ #1635

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 6 additions & 7 deletions TheSkyBlessing/data/api/functions/damage/core/calc/.mcfunction
Original file line number Diff line number Diff line change
Expand Up @@ -9,23 +9,22 @@
#declare score_holder $isDefenseCalcSkip

# ่จˆ็ฎ—ๅผ:
# damage * (1 - min(20, max(defensePoints / 5, defensePoints - damage / (2 + toughness / 4))) / 25) * (1 - min(5, resistanceLv) / 5) * (1 - (min(20, cappedEPF) / 25))
# damage * (1 - min(20, max(defensePoints / 5, defensePoints - damage / (2 + toughness / 4))) / 25) * (1 - min(10, resistanceLv) / 10) * (1 - (min(20, cappedEPF) / 25))

# ่จˆ็ฎ—็š„ใชใƒ€ใƒกใƒผใ‚ธไธŠ้™(21474.83)ใƒใ‚งใƒƒใ‚ฏ
execute if score $Damage Temporary matches 2147483.. run scoreboard players set $Damage Temporary 2147483
# ่จˆ็ฎ—็š„ใชใƒ€ใƒกใƒผใ‚ธไธŠ้™(214748.36)ใƒใ‚งใƒƒใ‚ฏ
execute if score $Damage Temporary matches 21474836.. run scoreboard players set $Damage Temporary 21474836
# ้˜ฒๅพกใซใ‚ˆใ‚‹่ปฝๆธ›่จˆ็ฎ—้ƒจ
execute if score $defensePoints Temporary matches 0 if score $toughness Temporary matches 0 run scoreboard players set $isDefenseCalcSkip Temporary 1
execute unless score $isDefenseCalcSkip Temporary matches 1 run function api:damage/core/calc/defense
execute if score $isDefenseCalcSkip Temporary matches 1 run scoreboard players operation $Damage Temporary *= $100 Const
# ่€ๆ€งใ‚จใƒ•ใ‚งใ‚ฏใƒˆใซใ‚ˆใ‚‹่ปฝๆธ›่จˆ็ฎ—้ƒจ
execute if score $Resistance Temporary matches 1.. run function api:damage/core/calc/resistance
# ใ‚จใƒณใƒใƒฃใƒณใƒˆใซใ‚ˆใ‚‹่ปฝๆธ›่จˆ็ฎ—้ƒจ
execute if score $EPF Temporary matches 1.. run function api:damage/core/calc/enchantment
# ใ‚ทใ‚นใƒ†ใƒ ็š„ใชใƒ€ใƒกใƒผใ‚ธไธŠ้™(9999.9/99999999(e4))ใƒใ‚งใƒƒใ‚ฏ
execute if score $Damage Temporary matches 99999000.. run scoreboard players set $Damage Temporary 99999000
# ใ‚ทใ‚นใƒ†ใƒ ็š„ใชใƒ€ใƒกใƒผใ‚ธไธŠ้™(99999.9(e2))ใƒใ‚งใƒƒใ‚ฏ
execute if score $Damage Temporary matches 9999990.. run scoreboard players set $Damage Temporary 9999990
# Reset
scoreboard players reset $isDefenseCalcSkip Temporary
scoreboard players reset $defensePoints Temporary
scoreboard players reset $toughness Temporary
scoreboard players reset $EPF Temporary
scoreboard players reset $Resistance Temporary
scoreboard players reset $Resistance Temporary
Original file line number Diff line number Diff line change
Expand Up @@ -8,54 +8,48 @@
# @private
#declare score_holder $CalcA
#declare score_holder $CalcB
#declare score_holder $CalcB1
#declare score_holder $CalcB2
#declare score_holder $CalcB3
#declare score_holder $CalcC
#declare score_holder $CalcD
#declare score_holder $CalcE

# $CalcA(e2) = $defensePoints(e2) * e2 / 5 / e2
# $CalcA(e2) = $defensePoints(e2) / 5
scoreboard players operation $CalcA Temporary = $defensePoints Temporary
scoreboard players operation $CalcA Temporary *= $20 Const
scoreboard players operation $CalcA Temporary /= $100 Const
# $CalcB3(e2) = $toughness(e2) * e2 / 4 / e2 + 2 * e2 : $damage >= 1000 * e2
# $CalcB3(e4) = $toughness(e2) * e2 / 4 + 2 * e4 : $damage < 1000 * e2
scoreboard players operation $CalcB3 Temporary = $toughness Temporary
scoreboard players operation $CalcB3 Temporary *= $25 Const
execute if score $Damage Temporary matches 100000.. run scoreboard players operation $CalcB3 Temporary /= $100 Const
execute if score $Damage Temporary matches 100000.. run scoreboard players operation $CalcB3 Temporary += $200 Const
execute if score $Damage Temporary matches ..099999 run scoreboard players operation $CalcB3 Temporary += $20000 Const
# $CalcB2(e2) = $damage(e2) * e2 / $CalcB3(e2) : $damage >= 1000 * e2
# $CalcB2(e2) = $damage(e2) * e4 / $CalcB3(e4) : $damage < 1000 * e2
scoreboard players operation $CalcA Temporary /= $5 Const
# $CalcB1(e2) = 2 * e2 + $toughness(e2) / 4
scoreboard players operation $CalcB1 Temporary = $toughness Temporary
scoreboard players operation $CalcB1 Temporary /= $4 Const
scoreboard players add $CalcB1 Temporary 200
# $CalcB2(e2) = $Damage(e2) * e2 / $CalcB1(e2)
scoreboard players operation $CalcB2 Temporary = $Damage Temporary
execute if score $Damage Temporary matches 100000.. run scoreboard players operation $CalcB2 Temporary *= $100 Const
execute if score $Damage Temporary matches ..099999 run scoreboard players operation $CalcB2 Temporary *= $10000 Const
scoreboard players operation $CalcB2 Temporary /= $CalcB3 Temporary
scoreboard players operation $CalcB2 Temporary *= $100 Const
scoreboard players operation $CalcB2 Temporary /= $CalcB1 Temporary
# $CalcB(e2) = $defensePoints(e2) - $CalcB2(e2)
scoreboard players operation $CalcB Temporary = $defensePoints Temporary
scoreboard players operation $CalcB Temporary -= $CalcB2 Temporary
# $CalcC(e4) = min(max($CalcA(e2), $CalcB(e2)), 20 * e2) * e2 / 25
# $CalcC(e3) = min(max($CalcA(e2), $CalcB(e2)), 20 * e2) * e1 / 25
scoreboard players operation $CalcC Temporary = $CalcA Temporary
scoreboard players operation $CalcC Temporary > $CalcB Temporary
scoreboard players operation $CalcC Temporary < $2000 Const
scoreboard players operation $CalcC Temporary *= $4 Const
# $CalcD(e3) = (1 * e4 - $CalcC(e4)) / e1 : $damage >= 1000 * e2
# $CalcD(e4) = (1 * e4 - $CalcC(e4)) : $damage < 1000 * e2
scoreboard players operation $CalcD Temporary = $10000 Const
scoreboard players operation $CalcC Temporary /= $10 Const
# $CalcD(e3) = 1 * e3 - $CalcC(e3)
scoreboard players set $CalcD Temporary 1000
scoreboard players operation $CalcD Temporary -= $CalcC Temporary
execute if score $Damage Temporary matches 100000.. run scoreboard players operation $CalcD Temporary /= $10 Const
# $damage(e4) = $damage(e2) * $CalcD(e3) / e1 : $damage >= 1000 * e2
# $damage(e4) = $damage(e2) * $CalcD(e4) / e2 : $damage < 1000 * e2
# $Damage(e2) = $Damage(e2) * $CalcD(e3) / e3
scoreboard players operation $CalcE Temporary = $Damage Temporary
execute if score $Damage Temporary matches 1000000.. run scoreboard players operation $CalcE Temporary /= $10 Const
scoreboard players operation $CalcE Temporary *= $CalcD Temporary
execute if score $Damage Temporary matches 100000.. run scoreboard players operation $CalcE Temporary /= $10 Const
execute if score $Damage Temporary matches ..099999 run scoreboard players operation $CalcE Temporary /= $100 Const
execute if score $Damage Temporary matches 1000000.. run scoreboard players operation $CalcE Temporary /= $100 Const
execute if score $Damage Temporary matches ..999999 run scoreboard players operation $CalcE Temporary /= $1000 Const
scoreboard players operation $Damage Temporary = $CalcE Temporary

# ใƒชใ‚ปใƒƒใƒˆ
scoreboard players reset $CalcA Temporary
scoreboard players reset $CalcB Temporary
scoreboard players reset $CalcB1 Temporary
scoreboard players reset $CalcB2 Temporary
scoreboard players reset $CalcB3 Temporary
scoreboard players reset $CalcC Temporary
scoreboard players reset $CalcD Temporary
scoreboard players reset $CalcE Temporary
scoreboard players reset $CalcE Temporary
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
# @private
#declare score_holder $Mul

# $Resistance(e1) *= min(5, $Resistance(e0)) * e1 / 5
# $Resistance(e1) *= min(5, $Resistance(e0)) * e1 / 10
scoreboard players operation $Resistance Temporary < $10 Const
# $Mul(e1) = 1 * e1 - $Resistance(e1)
scoreboard players operation $Mul Temporary = $10 Const
Expand All @@ -17,4 +17,4 @@
scoreboard players operation $Damage Temporary *= $Mul Temporary
scoreboard players operation $Damage Temporary /= $10 Const
# ใƒชใ‚ปใƒƒใƒˆ
scoreboard players reset $Mul Temporary
scoreboard players reset $Mul Temporary
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@
# @private
#declare score_holder $Fluctuation

# ใƒ€ใƒกใƒผใ‚ธ้‡ใ‚’่ฃœๆญฃ
scoreboard players operation $Damage Temporary /= $100 Const
# ใƒ€ใƒกใƒผใ‚ธ่กจ็คบ
scoreboard players set $Fluctuation Lib 0
scoreboard players operation $Fluctuation Lib -= $Damage Temporary
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
# ้›ฃๆ˜“ๅบฆ่ฃœๆญฃใ‚’ๆŽ›ใ‘ใ‚‹
execute if data storage api: Argument{BypassDifficulty:false} run function api:damage/core/health_subtract/player/difficulty_modifier
# ๅผ•ๆ•ฐใจใ—ใฆไปฃๅ…ฅ
execute store result storage api: Argument.Fluctuation double -0.0001 run scoreboard players get $Damage Temporary
execute store result storage api: Argument.Fluctuation double -0.01 run scoreboard players get $Damage Temporary
execute store result storage api: Argument.Attacker int 1 run scoreboard players get $LatestModifiedEntity MobUUID
# data modify storage api: Argument.AttackType set from storage api: Argument.AttackType
# data modify storage api: Argument.ElementType set from storage api: Argument.ElementType
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
scoreboard players add $Difficulty Temporary 6
scoreboard players operation $Damage Temporary *= $Difficulty Temporary
scoreboard players operation $Damage Temporary /= $10 Const
execute if score $Damage Temporary matches 999990000.. run scoreboard players set $Damage Temporary 999990000
execute if score $Damage Temporary matches 9999990.. run scoreboard players set $Damage Temporary 9999990

# ใƒชใ‚ปใƒƒใƒˆ
scoreboard players reset $Difficulty Temporary
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ data remove storage api: Argument.BypassArmorDefense
data remove storage api: Argument.BypassToughness
data remove storage api: Argument.BypassEnchantments
data remove storage api: Argument.BypassResistance
data remove storage api: Argument.BypassDifficulty
data remove storage api: Argument.DisableParticle
data remove storage api: Argument.ReduceEnchantment
data remove storage api: Argument.AdditionalMPHeal
Expand Down
Loading