diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModPerks.java b/src/main/java/com/atsuishio/superbwarfare/init/ModPerks.java index a9b35311a..dbb9fbf0f 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModPerks.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModPerks.java @@ -73,6 +73,7 @@ public class ModPerks { public static final DeferredHolder DESPERADO = DAMAGE_PERKS.register("desperado", Desperado::new); public static final DeferredHolder VORPAL_WEAPON = DAMAGE_PERKS.register("vorpal_weapon", VorpalWeapon::new); public static final DeferredHolder MAGNIFICENT_HOWL = DAMAGE_PERKS.register("magnificent_howl", MagnificentHowl::new); + public static final DeferredHolder FIREFLY = DAMAGE_PERKS.register("firefly", Firefly::new); // public static void registerCompatPerks() { // if (ModList.get().isLoaded(CompatHolder.DMV)) { diff --git a/src/main/java/com/atsuishio/superbwarfare/perk/damage/Firefly.java b/src/main/java/com/atsuishio/superbwarfare/perk/damage/Firefly.java new file mode 100644 index 000000000..c05ef708d --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/perk/damage/Firefly.java @@ -0,0 +1,45 @@ +package com.atsuishio.superbwarfare.perk.damage; + +import com.atsuishio.superbwarfare.init.ModDamageTypes; +import com.atsuishio.superbwarfare.item.gun.data.GunData; +import com.atsuishio.superbwarfare.perk.Perk; +import com.atsuishio.superbwarfare.perk.PerkInstance; +import com.atsuishio.superbwarfare.tools.CustomExplosion; +import com.atsuishio.superbwarfare.tools.DamageTypeTool; +import com.atsuishio.superbwarfare.tools.ParticleTool; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.projectile.Projectile; +import net.neoforged.neoforge.event.EventHooks; + +public class Firefly extends Perk { + + public Firefly() { + super("firefly", Perk.Type.DAMAGE); + } + + @Override + public void onKill(GunData data, PerkInstance instance, LivingEntity target, DamageSource source) { + if (!DamageTypeTool.isHeadshotDamage(source)) return; + + Player attacker = null; + if (source.getEntity() instanceof Player player) { + attacker = player; + } + if (source.getDirectEntity() instanceof Projectile p && p.getOwner() instanceof Player player) { + attacker = player; + } + if (attacker == null) return; + + CustomExplosion explosion = new CustomExplosion(target.level(), attacker, + ModDamageTypes.causeProjectileBoomDamage(target.level().registryAccess(), null, attacker), + 6 + instance.level() * 2, target.getX(), target.getY(), target.getZ(), + 2 + instance.level() * 0.5f, CustomExplosion.BlockInteraction.KEEP, false) + .setFireTime(3 + instance.level() / 3); + explosion.explode(); + EventHooks.onExplosionStart(target.level(), explosion); + explosion.finalizeExplosion(false); + ParticleTool.spawnSmallExplosionParticles(target.level(), target.position()); + } +} diff --git a/src/main/resources/assets/superbwarfare/lang/en_us.json b/src/main/resources/assets/superbwarfare/lang/en_us.json index f26ccad13..ce66ea46c 100644 --- a/src/main/resources/assets/superbwarfare/lang/en_us.json +++ b/src/main/resources/assets/superbwarfare/lang/en_us.json @@ -360,6 +360,8 @@ "des.superbwarfare.vorpal_weapon": "Increases damage against bosses.", "item.superbwarfare.magnificent_howl": "Magnificent Howl", "des.superbwarfare.magnificent_howl": "The number of precision final blows before reloading affects the total rounds granted with increased damage.", + "item.superbwarfare.firefly": "Firefly", + "des.superbwarfare.firefly": "Precision kills cause the target to explode with fire.", "item.superbwarfare.empty_perk": "Empty Perk", "item.superbwarfare.shortcut_pack": "Shortcut Pack", diff --git a/src/main/resources/assets/superbwarfare/lang/zh_cn.json b/src/main/resources/assets/superbwarfare/lang/zh_cn.json index dd496c02f..ebe5d149a 100644 --- a/src/main/resources/assets/superbwarfare/lang/zh_cn.json +++ b/src/main/resources/assets/superbwarfare/lang/zh_cn.json @@ -358,6 +358,8 @@ "des.superbwarfare.vorpal_weapon": "提升对强大敌人造成的伤害", "item.superbwarfare.magnificent_howl": "宏伟之嚎", "des.superbwarfare.magnificent_howl": "填装前精准最后一击的次数会影响伤害增加的子弹总数", + "item.superbwarfare.firefly": "萤火虫", + "des.superbwarfare.firefly": "完成精准击杀可以使目标产生一次燃烧爆炸", "item.superbwarfare.empty_perk": "空白模组", "item.superbwarfare.shortcut_pack": "捷径包", diff --git a/src/main/resources/data/superbwarfare/guns/ak_12.json b/src/main/resources/data/superbwarfare/guns/ak_12.json index 622ce8fb0..a3164cc99 100644 --- a/src/main/resources/data/superbwarfare/guns/ak_12.json +++ b/src/main/resources/data/superbwarfare/guns/ak_12.json @@ -30,6 +30,7 @@ "superbwarfare:head_seeker", "superbwarfare:desperado", "superbwarfare:vorpal_weapon", + "superbwarfare:firefly", "!superbwarfare:micro_missile", "!superbwarfare:longer_wire" ] diff --git a/src/main/resources/data/superbwarfare/guns/ak_47.json b/src/main/resources/data/superbwarfare/guns/ak_47.json index c3ec8b858..c26d0a3f6 100644 --- a/src/main/resources/data/superbwarfare/guns/ak_47.json +++ b/src/main/resources/data/superbwarfare/guns/ak_47.json @@ -30,6 +30,7 @@ "superbwarfare:head_seeker", "superbwarfare:desperado", "superbwarfare:vorpal_weapon", + "superbwarfare:firefly", "!superbwarfare:micro_missile", "!superbwarfare:longer_wire" ] diff --git a/src/main/resources/data/superbwarfare/guns/glock_17.json b/src/main/resources/data/superbwarfare/guns/glock_17.json index 278a887b9..c7fadc81e 100644 --- a/src/main/resources/data/superbwarfare/guns/glock_17.json +++ b/src/main/resources/data/superbwarfare/guns/glock_17.json @@ -25,6 +25,7 @@ "superbwarfare:gutshot_straight", "superbwarfare:monster_hunter", "superbwarfare:vorpal_weapon", + "superbwarfare:firefly", "!superbwarfare:micro_missile", "!superbwarfare:longer_wire", "!superbwarfare:butterfly_bullet" diff --git a/src/main/resources/data/superbwarfare/guns/glock_18.json b/src/main/resources/data/superbwarfare/guns/glock_18.json index 26359ba98..190ee9c93 100644 --- a/src/main/resources/data/superbwarfare/guns/glock_18.json +++ b/src/main/resources/data/superbwarfare/guns/glock_18.json @@ -27,6 +27,7 @@ "superbwarfare:monster_hunter", "superbwarfare:vorpal_weapon", "superbwarfare:desperado", + "superbwarfare:firefly", "!superbwarfare:micro_missile", "!superbwarfare:longer_wire", "!superbwarfare:butterfly_bullet" diff --git a/src/main/resources/data/superbwarfare/guns/hk_416.json b/src/main/resources/data/superbwarfare/guns/hk_416.json index c60f47c2d..d1866afc1 100644 --- a/src/main/resources/data/superbwarfare/guns/hk_416.json +++ b/src/main/resources/data/superbwarfare/guns/hk_416.json @@ -30,6 +30,7 @@ "superbwarfare:head_seeker", "superbwarfare:desperado", "superbwarfare:vorpal_weapon", + "superbwarfare:firefly", "!superbwarfare:micro_missile", "!superbwarfare:longer_wire" ] diff --git a/src/main/resources/data/superbwarfare/guns/insidious.json b/src/main/resources/data/superbwarfare/guns/insidious.json index f4f5027f4..e6b65388b 100644 --- a/src/main/resources/data/superbwarfare/guns/insidious.json +++ b/src/main/resources/data/superbwarfare/guns/insidious.json @@ -28,6 +28,7 @@ "superbwarfare:head_seeker", "superbwarfare:desperado", "superbwarfare:vorpal_weapon", + "superbwarfare:firefly", "!superbwarfare:micro_missile", "!superbwarfare:longer_wire" ] diff --git a/src/main/resources/data/superbwarfare/guns/m_1911.json b/src/main/resources/data/superbwarfare/guns/m_1911.json index 6875dfe56..e6c85364d 100644 --- a/src/main/resources/data/superbwarfare/guns/m_1911.json +++ b/src/main/resources/data/superbwarfare/guns/m_1911.json @@ -25,6 +25,7 @@ "superbwarfare:gutshot_straight", "superbwarfare:monster_hunter", "superbwarfare:vorpal_weapon", + "superbwarfare:firefly", "!superbwarfare:micro_missile", "!superbwarfare:longer_wire", "!superbwarfare:butterfly_bullet" diff --git a/src/main/resources/data/superbwarfare/guns/m_4.json b/src/main/resources/data/superbwarfare/guns/m_4.json index 8fda9012c..e889a8044 100644 --- a/src/main/resources/data/superbwarfare/guns/m_4.json +++ b/src/main/resources/data/superbwarfare/guns/m_4.json @@ -30,6 +30,7 @@ "superbwarfare:head_seeker", "superbwarfare:desperado", "superbwarfare:vorpal_weapon", + "superbwarfare:firefly", "!superbwarfare:micro_missile", "!superbwarfare:longer_wire" ] diff --git a/src/main/resources/data/superbwarfare/guns/marlin.json b/src/main/resources/data/superbwarfare/guns/marlin.json index 22dfa0fb0..06bdd601b 100644 --- a/src/main/resources/data/superbwarfare/guns/marlin.json +++ b/src/main/resources/data/superbwarfare/guns/marlin.json @@ -29,6 +29,7 @@ "superbwarfare:desperado", "superbwarfare:vorpal_weapon", "superbwarfare:magnificent_howl", + "superbwarfare:firefly", "!superbwarfare:micro_missile", "!superbwarfare:longer_wire" ] diff --git a/src/main/resources/data/superbwarfare/guns/mk_14.json b/src/main/resources/data/superbwarfare/guns/mk_14.json index eebfe35ef..8049e7247 100644 --- a/src/main/resources/data/superbwarfare/guns/mk_14.json +++ b/src/main/resources/data/superbwarfare/guns/mk_14.json @@ -30,6 +30,7 @@ "superbwarfare:head_seeker", "superbwarfare:desperado", "superbwarfare:vorpal_weapon", + "superbwarfare:firefly", "!superbwarfare:micro_missile", "!superbwarfare:longer_wire" ] diff --git a/src/main/resources/data/superbwarfare/guns/mp_443.json b/src/main/resources/data/superbwarfare/guns/mp_443.json index 278a887b9..c7fadc81e 100644 --- a/src/main/resources/data/superbwarfare/guns/mp_443.json +++ b/src/main/resources/data/superbwarfare/guns/mp_443.json @@ -25,6 +25,7 @@ "superbwarfare:gutshot_straight", "superbwarfare:monster_hunter", "superbwarfare:vorpal_weapon", + "superbwarfare:firefly", "!superbwarfare:micro_missile", "!superbwarfare:longer_wire", "!superbwarfare:butterfly_bullet" diff --git a/src/main/resources/data/superbwarfare/guns/qbz_95.json b/src/main/resources/data/superbwarfare/guns/qbz_95.json index 0d4f31474..908b82210 100644 --- a/src/main/resources/data/superbwarfare/guns/qbz_95.json +++ b/src/main/resources/data/superbwarfare/guns/qbz_95.json @@ -30,6 +30,7 @@ "superbwarfare:head_seeker", "superbwarfare:desperado", "superbwarfare:vorpal_weapon", + "superbwarfare:firefly", "!superbwarfare:micro_missile", "!superbwarfare:longer_wire" ] diff --git a/src/main/resources/data/superbwarfare/guns/sks.json b/src/main/resources/data/superbwarfare/guns/sks.json index 6ef0bc46a..56bba346b 100644 --- a/src/main/resources/data/superbwarfare/guns/sks.json +++ b/src/main/resources/data/superbwarfare/guns/sks.json @@ -27,6 +27,7 @@ "superbwarfare:head_seeker", "superbwarfare:vorpal_weapon", "superbwarfare:magnificent_howl", + "superbwarfare:firefly", "!superbwarfare:micro_missile", "!superbwarfare:longer_wire" ] diff --git a/src/main/resources/data/superbwarfare/guns/trachelium.json b/src/main/resources/data/superbwarfare/guns/trachelium.json index 216dbe7e2..f7cc3991a 100644 --- a/src/main/resources/data/superbwarfare/guns/trachelium.json +++ b/src/main/resources/data/superbwarfare/guns/trachelium.json @@ -26,6 +26,7 @@ "superbwarfare:monster_hunter", "superbwarfare:vorpal_weapon", "superbwarfare:magnificent_howl", + "superbwarfare:firefly", "!superbwarfare:micro_missile", "!superbwarfare:longer_wire", "!superbwarfare:butterfly_bullet" diff --git a/src/main/resources/data/superbwarfare/guns/vector.json b/src/main/resources/data/superbwarfare/guns/vector.json index f98b08a35..235baaf9d 100644 --- a/src/main/resources/data/superbwarfare/guns/vector.json +++ b/src/main/resources/data/superbwarfare/guns/vector.json @@ -29,6 +29,7 @@ "superbwarfare:head_seeker", "superbwarfare:desperado", "superbwarfare:vorpal_weapon", + "superbwarfare:firefly", "!superbwarfare:micro_missile", "!superbwarfare:longer_wire" ] diff --git a/src/main/resources/data/superbwarfare/recipe/perk/firefly_perk_crafting.json b/src/main/resources/data/superbwarfare/recipe/perk/firefly_perk_crafting.json new file mode 100644 index 000000000..9db3083c2 --- /dev/null +++ b/src/main/resources/data/superbwarfare/recipe/perk/firefly_perk_crafting.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "cbc", + "bab", + "cbc" + ], + "key": { + "a": { + "item": "superbwarfare:empty_perk" + }, + "b": [ + { + "item": "minecraft:ochre_froglight" + }, + { + "item": "minecraft:verdant_froglight" + }, + { + "item": "minecraft:pearlescent_froglight" + } + ], + "c": { + "item": "superbwarfare:high_energy_explosives" + } + }, + "result": { + "id": "superbwarfare:firefly", + "count": 1 + } +} \ No newline at end of file