|
11 | 11 | import io.github.sefiraat.slimetinker.utils.ThemeUtils; |
12 | 12 | import io.github.sefiraat.slimetinker.utils.WorldUtils; |
13 | 13 | import io.github.thebusybiscuit.slimefun4.libraries.dough.data.persistent.PersistentDataAPI; |
14 | | -import org.bukkit.*; |
| 14 | +import org.bukkit.Color; |
| 15 | +import org.bukkit.Effect; |
| 16 | +import org.bukkit.Location; |
| 17 | +import org.bukkit.Material; |
| 18 | +import org.bukkit.NamespacedKey; |
| 19 | +import org.bukkit.Particle; |
15 | 20 | import org.bukkit.attribute.Attribute; |
16 | 21 | import org.bukkit.entity.EnderDragon; |
17 | 22 | import org.bukkit.entity.Enderman; |
@@ -152,43 +157,34 @@ public static void plateBrass(EventFriend friend) { |
152 | 157 | if (!(itemMeta instanceof Damageable)) { |
153 | 158 | return; |
154 | 159 | } |
155 | | - // fix issue # 93: nerf brass |
156 | | - // its logic is wrongly coded , mismatching its description |
157 | | - // And it is truly overpowered at current values |
158 | | - // Note: getDamage() returns the durability already used |
159 | | - // Imagine you have a set of brass plate armor each piece with only 1 / 10 durability |
160 | | - // you will get total of -1 damageMod, which means the event will be cancelled and armor will not be damaged by the attack, and the player will be invulnerable |
161 | | - // even if you only got 2/ 10 of durability, hold a carbon mesh bind tool will result in -1.13 damageMod |
162 | | - // Note: tools with infinity rod and carbon mesh bind decrease damageMod to 1/2 (1 - 33%) = 0.33, if we provide more than 0.33 in add operation, the player will be invulnerable again. so we decide to use multiplication, which provide a maxinum of 0.125 reduce of damageMod per piece |
163 | | - // we decided to cut it in half , letting it result in about -0.4 of CURRENT damageMod for a set of armor |
164 | | - // Note: providing a total of (1 - 0.25)^4 = 0.3 damageMod multiplier is also too op, (you're granted the same dameg reduction as infinite rod = carbon mesh bind just by wearing armor) |
| 160 | + |
165 | 161 | Damageable damagable = (Damageable) itemMeta; |
166 | 162 | int maxDurability = itemStack.getType().getMaxDurability(); |
167 | 163 | int damage = damagable.getDamage(); |
168 | 164 | float dmgPerc = ((float) damage) / ((float) maxDurability); |
169 | 165 |
|
170 | 166 | if (dmgPerc <= 0) { |
171 | | - friend.setDamageMod(friend.getDamageMod() * (1 - 0.125)); |
| 167 | + friend.setDamageMod(friend.getDamageMod() + 0.25); |
172 | 168 | } else if (dmgPerc <= 0.1) { |
173 | | - friend.setDamageMod(friend.getDamageMod() * (1 - 0.1)); |
| 169 | + friend.setDamageMod(friend.getDamageMod() + 0.20); |
174 | 170 | } else if (dmgPerc <= 0.2) { |
175 | | - friend.setDamageMod(friend.getDamageMod() * (1 - 0.075)); |
| 171 | + friend.setDamageMod(friend.getDamageMod() + 0.15); |
176 | 172 | } else if (dmgPerc <= 0.3) { |
177 | | - friend.setDamageMod(friend.getDamageMod() * (1 - 0.050)); |
| 173 | + friend.setDamageMod(friend.getDamageMod() + 0.10); |
178 | 174 | } else if (dmgPerc <= 0.4) { |
179 | | - friend.setDamageMod(friend.getDamageMod() * (1 - 0.025)); |
| 175 | + friend.setDamageMod(friend.getDamageMod() + 0.05); |
180 | 176 | } else if (dmgPerc <= 0.5) { |
181 | | -// friend.setDamageMod(friend.getDamageMod() + ); |
| 177 | + friend.setDamageMod(friend.getDamageMod() + 0.00); |
182 | 178 | } else if (dmgPerc <= 0.6) { |
183 | | - friend.setDamageMod(friend.getDamageMod() * (1 + 0.05)); |
| 179 | + friend.setDamageMod(friend.getDamageMod() - 0.05); |
184 | 180 | } else if (dmgPerc <= 0.7) { |
185 | | - friend.setDamageMod(friend.getDamageMod() * (1 + 0.10)); |
| 181 | + friend.setDamageMod(friend.getDamageMod() - 0.10); |
186 | 182 | } else if (dmgPerc <= 0.8) { |
187 | | - friend.setDamageMod(friend.getDamageMod() * (1 + 0.15)); |
| 183 | + friend.setDamageMod(friend.getDamageMod() - 0.15); |
188 | 184 | } else if (dmgPerc <= 0.9) { |
189 | | - friend.setDamageMod(friend.getDamageMod() * (1 + 0.20)); |
| 185 | + friend.setDamageMod(friend.getDamageMod() - 0.20); |
190 | 186 | } else if (dmgPerc <= 1) { |
191 | | - friend.setDamageMod(friend.getDamageMod() * (1 + 0.25)); |
| 187 | + friend.setDamageMod(friend.getDamageMod() - 0.25); |
192 | 188 | } |
193 | 189 | } |
194 | 190 |
|
@@ -643,13 +639,12 @@ public static void linksMagThor(EventFriend friend) { |
643 | 639 | public static void plateIridium(EventFriend friend) { |
644 | 640 | Player p = friend.getPlayer(); |
645 | 641 | Entity e = friend.getDamagingEntity(); |
646 | | - //fix issue #92, damage from player should also be blocked |
647 | | - if (e instanceof Mob || e instanceof Player) { |
| 642 | + if (e instanceof Mob) { |
648 | 643 | if (e.getType() == EntityType.GUARDIAN) { |
649 | 644 | return; |
650 | 645 | } |
651 | 646 |
|
652 | | - ((org.bukkit.entity.Damageable) e).damage(friend.getInitialDamage() * 0.1, p); |
| 647 | + ((Mob) e).damage(friend.getInitialDamage() * 0.1, p); |
653 | 648 | friend.setDamageMod(friend.getDamageMod() - 0.1); |
654 | 649 | } |
655 | 650 | } |
|
0 commit comments