优化部分弹药perk

This commit is contained in:
17146 2025-05-07 14:23:56 +08:00 committed by Light_Quanta
parent c6798522f1
commit 279f86a6ab
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
13 changed files with 143 additions and 77 deletions

View file

@ -3,9 +3,7 @@ package com.atsuishio.superbwarfare.init;
import com.atsuishio.superbwarfare.Mod; import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.perk.AmmoPerk; import com.atsuishio.superbwarfare.perk.AmmoPerk;
import com.atsuishio.superbwarfare.perk.Perk; import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.ammo.APBullet; import com.atsuishio.superbwarfare.perk.ammo.*;
import com.atsuishio.superbwarfare.perk.ammo.BeastBullet;
import com.atsuishio.superbwarfare.perk.ammo.SilverBullet;
import com.atsuishio.superbwarfare.perk.damage.*; import com.atsuishio.superbwarfare.perk.damage.*;
import com.atsuishio.superbwarfare.perk.functional.*; import com.atsuishio.superbwarfare.perk.functional.*;
import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceKey;
@ -33,18 +31,15 @@ public class ModPerks {
public static final DeferredRegister<Perk> AMMO_PERKS = DeferredRegister.create(Mod.loc("perk"), Mod.MODID); public static final DeferredRegister<Perk> AMMO_PERKS = DeferredRegister.create(Mod.loc("perk"), Mod.MODID);
public static final DeferredHolder<Perk, Perk> AP_BULLET = AMMO_PERKS.register("ap_bullet", APBullet::new); public static final DeferredHolder<Perk, Perk> AP_BULLET = AMMO_PERKS.register("ap_bullet", APBullet::new);
public static final DeferredHolder<Perk, Perk> JHP_BULLET = AMMO_PERKS.register("jhp_bullet", public static final DeferredHolder<Perk, Perk> JHP_BULLET = AMMO_PERKS.register("jhp_bullet", JHPBullet::new);
() -> new AmmoPerk(new AmmoPerk.Builder("jhp_bullet", Perk.Type.AMMO).bypassArmorRate(-0.2f).damageRate(1.1f).speedRate(0.95f).slug(true).rgb(230, 131, 65))); public static final DeferredHolder<Perk, Perk> HE_BULLET = AMMO_PERKS.register("he_bullet", HEBullet::new);
public static final DeferredHolder<Perk, Perk> HE_BULLET = AMMO_PERKS.register("he_bullet",
() -> new AmmoPerk(new AmmoPerk.Builder("he_bullet", Perk.Type.AMMO).bypassArmorRate(-0.3f).damageRate(0.5f).speedRate(0.85f).slug(true).rgb(240, 20, 10)));
public static final DeferredHolder<Perk, Perk> SILVER_BULLET = AMMO_PERKS.register("silver_bullet", SilverBullet::new); public static final DeferredHolder<Perk, Perk> SILVER_BULLET = AMMO_PERKS.register("silver_bullet", SilverBullet::new);
public static final DeferredHolder<Perk, Perk> POISONOUS_BULLET = AMMO_PERKS.register("poisonous_bullet", public static final DeferredHolder<Perk, Perk> POISONOUS_BULLET = AMMO_PERKS.register("poisonous_bullet",
() -> new AmmoPerk(new AmmoPerk.Builder("poisonous_bullet", Perk.Type.AMMO).bypassArmorRate(0.0f).damageRate(1.0f).speedRate(1.0f).rgb(48, 131, 6) () -> new AmmoPerk(new AmmoPerk.Builder("poisonous_bullet", Perk.Type.AMMO).bypassArmorRate(0.0f).damageRate(1.0f).speedRate(1.0f).rgb(48, 131, 6)
.mobEffect(MobEffects.POISON::value))); .mobEffect(MobEffects.POISON::value)));
public static final DeferredHolder<Perk, Perk> BEAST_BULLET = AMMO_PERKS.register("beast_bullet", BeastBullet::new); public static final DeferredHolder<Perk, Perk> BEAST_BULLET = AMMO_PERKS.register("beast_bullet", BeastBullet::new);
public static final DeferredHolder<Perk, Perk> LONGER_WIRE = AMMO_PERKS.register("longer_wire", () -> new Perk("longer_wire", Perk.Type.AMMO)); public static final DeferredHolder<Perk, Perk> LONGER_WIRE = AMMO_PERKS.register("longer_wire", () -> new Perk("longer_wire", Perk.Type.AMMO));
public static final DeferredHolder<Perk, Perk> INCENDIARY_BULLET = AMMO_PERKS.register("incendiary_bullet", public static final DeferredHolder<Perk, Perk> INCENDIARY_BULLET = AMMO_PERKS.register("incendiary_bullet", IncendiaryBullet::new);
() -> new AmmoPerk(new AmmoPerk.Builder("incendiary_bullet", Perk.Type.AMMO).bypassArmorRate(-0.4f).damageRate(0.7f).speedRate(0.75f).slug(false).rgb(230, 131, 65)));
public static final DeferredHolder<Perk, Perk> MICRO_MISSILE = AMMO_PERKS.register("micro_missile", public static final DeferredHolder<Perk, Perk> MICRO_MISSILE = AMMO_PERKS.register("micro_missile",
() -> new AmmoPerk(new AmmoPerk.Builder("micro_missile", Perk.Type.AMMO).speedRate(1.2f))); () -> new AmmoPerk(new AmmoPerk.Builder("micro_missile", Perk.Type.AMMO).speedRate(1.2f)));
@ -71,7 +66,7 @@ public class ModPerks {
public static final DeferredHolder<Perk, Perk> GUTSHOT_STRAIGHT = DAMAGE_PERKS.register("gutshot_straight", GutshotStraight::new); public static final DeferredHolder<Perk, Perk> GUTSHOT_STRAIGHT = DAMAGE_PERKS.register("gutshot_straight", GutshotStraight::new);
public static final DeferredHolder<Perk, Perk> KILLING_TALLY = DAMAGE_PERKS.register("killing_tally", KillingTally::new); public static final DeferredHolder<Perk, Perk> KILLING_TALLY = DAMAGE_PERKS.register("killing_tally", KillingTally::new);
public static final DeferredHolder<Perk, Perk> HEAD_SEEKER = DAMAGE_PERKS.register("head_seeker", HeadSeeker::new); public static final DeferredHolder<Perk, Perk> HEAD_SEEKER = DAMAGE_PERKS.register("head_seeker", HeadSeeker::new);
public static final DeferredHolder<Perk, Perk> MONSTER_HUNTER = DAMAGE_PERKS.register("monster_hunter", () -> new Perk("monster_hunter", Perk.Type.DAMAGE)); public static final DeferredHolder<Perk, Perk> MONSTER_HUNTER = DAMAGE_PERKS.register("monster_hunter", MonsterHunter::new);
public static final DeferredHolder<Perk, Perk> VOLT_OVERLOAD = DAMAGE_PERKS.register("volt_overload", () -> new Perk("volt_overload", Perk.Type.DAMAGE)); public static final DeferredHolder<Perk, Perk> VOLT_OVERLOAD = DAMAGE_PERKS.register("volt_overload", () -> new Perk("volt_overload", Perk.Type.DAMAGE));
public static final DeferredHolder<Perk, Perk> DESPERADO = DAMAGE_PERKS.register("desperado", Desperado::new); public static final DeferredHolder<Perk, Perk> DESPERADO = DAMAGE_PERKS.register("desperado", Desperado::new);
public static final DeferredHolder<Perk, Perk> VORPAL_WEAPON = DAMAGE_PERKS.register("vorpal_weapon", VorpalWeapon::new); public static final DeferredHolder<Perk, Perk> VORPAL_WEAPON = DAMAGE_PERKS.register("vorpal_weapon", VorpalWeapon::new);

View file

@ -4,7 +4,10 @@ import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.client.PoseTool; import com.atsuishio.superbwarfare.client.PoseTool;
import com.atsuishio.superbwarfare.client.tooltip.component.GunImageComponent; import com.atsuishio.superbwarfare.client.tooltip.component.GunImageComponent;
import com.atsuishio.superbwarfare.entity.projectile.ProjectileEntity; import com.atsuishio.superbwarfare.entity.projectile.ProjectileEntity;
import com.atsuishio.superbwarfare.init.*; import com.atsuishio.superbwarfare.init.ModAttachments;
import com.atsuishio.superbwarfare.init.ModItems;
import com.atsuishio.superbwarfare.init.ModPerks;
import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.CustomRendererItem; import com.atsuishio.superbwarfare.item.CustomRendererItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.item.gun.data.value.AttachmentType; import com.atsuishio.superbwarfare.item.gun.data.value.AttachmentType;
@ -606,14 +609,6 @@ public abstract class GunItem extends Item implements CustomRendererItem {
public void onFireKeyRelease(final GunData data, Player player, double power, boolean zoom) { public void onFireKeyRelease(final GunData data, Player player, double power, boolean zoom) {
} }
public static double perkSpeed(GunData data) {
var perk = data.perk.get(Perk.Type.AMMO);
if (perk instanceof AmmoPerk ammoPerk) {
return ammoPerk.speedRate;
}
return 1;
}
public static double perkDamage(Perk perk) { public static double perkDamage(Perk perk) {
if (perk instanceof AmmoPerk ammoPerk) { if (perk instanceof AmmoPerk ammoPerk) {
return ammoPerk.damageRate; return ammoPerk.damageRate;
@ -631,10 +626,8 @@ public abstract class GunItem extends Item implements CustomRendererItem {
float headshot = (float) data.headshot(); float headshot = (float) data.headshot();
float damage = (float) data.damage(); float damage = (float) data.damage();
float velocity = (float) (data.velocity() * perkSpeed(data)); float velocity = (float) data.velocity();
float bypassArmorRate = (float) data.bypassArmor(); float bypassArmorRate = (float) data.bypassArmor();
var perkInstance = data.perk.getInstance(Perk.Type.AMMO);
var perk = perkInstance != null ? perkInstance.perk() : null;
ProjectileEntity projectile = new ProjectileEntity(player.level()) ProjectileEntity projectile = new ProjectileEntity(player.level())
.shooter(player) .shooter(player)
@ -648,28 +641,14 @@ public abstract class GunItem extends Item implements CustomRendererItem {
var instance = data.perk.getInstance(type); var instance = data.perk.getInstance(type);
if (instance != null) { if (instance != null) {
instance.perk().modifyProjectile(data, instance, projectile); instance.perk().modifyProjectile(data, instance, projectile);
if (instance.perk() instanceof AmmoPerk ammoPerk) {
velocity = (float) ammoPerk.getModifiedVelocity(data, instance);
}
} }
} }
if (perk == ModPerks.JHP_BULLET.get()) {
int level = data.perk.getLevel(perk);
projectile.jhpBullet(level);
} else if (perk == ModPerks.HE_BULLET.get()) {
int level = data.perk.getLevel(perk);
projectile.heBullet(level);
} else if (perk == ModPerks.INCENDIARY_BULLET.get()) {
int level = data.perk.getLevel(perk);
projectile.fireBullet(level, stack.is(ModTags.Items.SHOTGUN));
}
var dmgPerk = data.perk.get(Perk.Type.DAMAGE);
if (dmgPerk == ModPerks.MONSTER_HUNTER.get()) {
int level = data.perk.getLevel(dmgPerk);
projectile.monsterMultiple(0.1f + 0.1f * level);
}
projectile.setPos(player.getX() - 0.1 * player.getLookAngle().x, player.getEyeY() - 0.1 - 0.1 * player.getLookAngle().y, player.getZ() + -0.1 * player.getLookAngle().z); projectile.setPos(player.getX() - 0.1 * player.getLookAngle().x, player.getEyeY() - 0.1 - 0.1 * player.getLookAngle().y, player.getZ() + -0.1 * player.getLookAngle().z);
projectile.shoot(player, player.getLookAngle().x, player.getLookAngle().y + 0.001f, player.getLookAngle().z, stack.is(ModTags.Items.SHOTGUN) && perk == ModPerks.INCENDIARY_BULLET.get() ? 4.5f : velocity, (float) spread); projectile.shoot(player, player.getLookAngle().x, player.getLookAngle().y + 0.001f, player.getLookAngle().z, velocity, (float) spread);
player.level().addFreshEntity(projectile); player.level().addFreshEntity(projectile);
return true; return true;

View file

@ -8,7 +8,6 @@ import com.atsuishio.superbwarfare.entity.projectile.JavelinMissileEntity;
import com.atsuishio.superbwarfare.entity.vehicle.base.VehicleEntity; import com.atsuishio.superbwarfare.entity.vehicle.base.VehicleEntity;
import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModEnumExtensions; import com.atsuishio.superbwarfare.init.ModEnumExtensions;
import com.atsuishio.superbwarfare.init.ModPerks;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; import com.atsuishio.superbwarfare.item.gun.data.GunData;
@ -237,10 +236,11 @@ public class JavelinItem extends GunItem implements GeoItem {
new Vec3(tag.getDouble("TargetPosX"), tag.getDouble("TargetPosY"), tag.getDouble("TargetPosZ")) new Vec3(tag.getDouble("TargetPosX"), tag.getDouble("TargetPosY"), tag.getDouble("TargetPosZ"))
); );
var dmgPerk = data.perk.get(Perk.Type.DAMAGE); for (Perk.Type type : Perk.Type.values()) {
if (dmgPerk == ModPerks.MONSTER_HUNTER.get()) { var instance = data.perk.getInstance(type);
int perkLevel = data.perk.getLevel(dmgPerk); if (instance != null) {
missileEntity.setMonsterMultiplier(0.1f + 0.1f * perkLevel); instance.perk().modifyProjectile(data, instance, missileEntity);
}
} }
missileEntity.setPos(player.getX() + firePos.x, player.getEyeY() + firePos.y, player.getZ() + firePos.z); missileEntity.setPos(player.getX() + firePos.x, player.getEyeY() + firePos.y, player.getZ() + firePos.z);
@ -313,5 +313,4 @@ public class JavelinItem extends GunItem implements GeoItem {
tag.putBoolean("Seeking", true); tag.putBoolean("Seeking", true);
tag.putInt("SeekTime", 0); tag.putInt("SeekTime", 0);
} }
} }

View file

@ -131,10 +131,11 @@ public class M79Item extends GunItem implements GeoItem {
(float) data.explosionRadius() (float) data.explosionRadius()
); );
var dmgPerk = data.perk.get(Perk.Type.DAMAGE); for (Perk.Type type : Perk.Type.values()) {
if (dmgPerk == ModPerks.MONSTER_HUNTER.get()) { var instance = data.perk.getInstance(type);
int perkLevel = data.perk.getLevel(dmgPerk); if (instance != null) {
gunGrenadeEntity.setMonsterMultiplier(0.1f + 0.1f * perkLevel); instance.perk().modifyProjectile(data, instance, gunGrenadeEntity);
}
} }
gunGrenadeEntity.setNoGravity(data.perk.get(Perk.Type.AMMO) == ModPerks.MICRO_MISSILE.get()); gunGrenadeEntity.setNoGravity(data.perk.get(Perk.Type.AMMO) == ModPerks.MICRO_MISSILE.get());

View file

@ -156,10 +156,11 @@ public class RpgItem extends GunItem implements GeoItem {
(float) data.explosionRadius() (float) data.explosionRadius()
); );
var dmgPerk = data.perk.get(Perk.Type.DAMAGE); for (Perk.Type type : Perk.Type.values()) {
if (dmgPerk == ModPerks.MONSTER_HUNTER.get()) { var instance = data.perk.getInstance(type);
int perkLevel = data.perk.getLevel(dmgPerk); if (instance != null) {
rocket.setMonsterMultiplier(0.1f + 0.1f * perkLevel); instance.perk().modifyProjectile(data, instance, rocket);
}
} }
float velocity = (float) data.velocity(); float velocity = (float) data.velocity();

View file

@ -248,10 +248,11 @@ public class SecondaryCataclysm extends GunItem implements GeoItem, EnergyStorag
(float) data.explosionRadius() (float) data.explosionRadius()
); );
var dmgPerk = data.perk.get(Perk.Type.DAMAGE); for (Perk.Type type : Perk.Type.values()) {
if (dmgPerk == ModPerks.MONSTER_HUNTER.get()) { var instance = data.perk.getInstance(type);
int perkLevel = data.perk.getLevel(dmgPerk); if (instance != null) {
gunGrenadeEntity.setMonsterMultiplier(0.1f + 0.1f * perkLevel); instance.perk().modifyProjectile(data, instance, gunGrenadeEntity);
}
} }
gunGrenadeEntity.setNoGravity(data.perk.get(Perk.Type.AMMO) == ModPerks.MICRO_MISSILE.get()); gunGrenadeEntity.setNoGravity(data.perk.get(Perk.Type.AMMO) == ModPerks.MICRO_MISSILE.get());

View file

@ -216,7 +216,7 @@ public class BocekItem extends GunItem implements GeoItem {
var perk = data.perk.get(Perk.Type.AMMO); var perk = data.perk.get(Perk.Type.AMMO);
float headshot = (float) data.headshot(); float headshot = (float) data.headshot();
float velocity = (float) (24 * power * (float) perkSpeed(data)); float velocity = (float) (24 * power);
float bypassArmorRate = (float) data.bypassArmor(); float bypassArmorRate = (float) data.bypassArmor();
double damage; double damage;
@ -245,23 +245,6 @@ public class BocekItem extends GunItem implements GeoItem {
} }
} }
if (perk == ModPerks.JHP_BULLET.get()) {
int level = data.perk.getLevel(perk);
projectile.jhpBullet(level);
} else if (perk == ModPerks.HE_BULLET.get()) {
int level = data.perk.getLevel(perk);
projectile.heBullet(level);
} else if (perk == ModPerks.INCENDIARY_BULLET.get()) {
int level = data.perk.getLevel(perk);
projectile.fireBullet(level, !zoom);
}
var dmgPerk = data.perk.get(Perk.Type.DAMAGE);
if (dmgPerk == ModPerks.MONSTER_HUNTER.get()) {
int perkLevel = data.perk.getLevel(dmgPerk);
projectile.monsterMultiple(0.1f + 0.1f * perkLevel);
}
projectile.setPos(player.getX() - 0.1 * player.getLookAngle().x, player.getEyeY() - 0.1 - 0.1 * player.getLookAngle().y, player.getZ() + -0.1 * player.getLookAngle().z); projectile.setPos(player.getX() - 0.1 * player.getLookAngle().x, player.getEyeY() - 0.1 - 0.1 * player.getLookAngle().y, player.getZ() + -0.1 * player.getLookAngle().z);
projectile.shoot(player, player.getLookAngle().x, player.getLookAngle().y, player.getLookAngle().z, (!zoom && perk == ModPerks.INCENDIARY_BULLET.get() ? 0.2f : 1) * velocity, spread); projectile.shoot(player, player.getLookAngle().x, player.getLookAngle().y, player.getLookAngle().z, (!zoom && perk == ModPerks.INCENDIARY_BULLET.get() ? 0.2f : 1) * velocity, spread);
projectile.damage((float) damage); projectile.damage((float) damage);

View file

@ -52,6 +52,10 @@ public class AmmoPerk extends Perk {
return instance.level() - 1; return instance.level() - 1;
} }
public double getModifiedVelocity(GunData data, PerkInstance instance) {
return data.velocity() * this.speedRate;
}
public static class Builder { public static class Builder {
String descriptionId; String descriptionId;

View file

@ -88,7 +88,7 @@ public class Perk {
return false; return false;
} }
public void modifyProjectile(GunData data, PerkInstance instance, Entity projectile) { public void modifyProjectile(GunData data, PerkInstance instance, Entity entity) {
} }
public enum Type { public enum Type {

View file

@ -0,0 +1,22 @@
package com.atsuishio.superbwarfare.perk.ammo;
import com.atsuishio.superbwarfare.entity.projectile.ProjectileEntity;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.AmmoPerk;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkInstance;
import net.minecraft.world.entity.Entity;
public class HEBullet extends AmmoPerk {
public HEBullet() {
super(new AmmoPerk.Builder("he_bullet", Perk.Type.AMMO).bypassArmorRate(-0.3f).damageRate(0.5f).speedRate(0.85f).slug(true).rgb(240, 20, 10));
}
@Override
public void modifyProjectile(GunData data, PerkInstance instance, Entity entity) {
super.modifyProjectile(data, instance, entity);
if (!(entity instanceof ProjectileEntity projectile)) return;
projectile.heBullet(instance.level());
}
}

View file

@ -0,0 +1,28 @@
package com.atsuishio.superbwarfare.perk.ammo;
import com.atsuishio.superbwarfare.entity.projectile.ProjectileEntity;
import com.atsuishio.superbwarfare.init.ModTags;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.AmmoPerk;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkInstance;
import net.minecraft.world.entity.Entity;
public class IncendiaryBullet extends AmmoPerk {
public IncendiaryBullet() {
super(new AmmoPerk.Builder("incendiary_bullet", Perk.Type.AMMO).bypassArmorRate(-0.4f).damageRate(0.7f).speedRate(0.75f).slug(false).rgb(230, 131, 65));
}
@Override
public void modifyProjectile(GunData data, PerkInstance instance, Entity entity) {
super.modifyProjectile(data, instance, entity);
if (!(entity instanceof ProjectileEntity projectile)) return;
projectile.fireBullet(instance.level(), data.stack.is(ModTags.Items.SHOTGUN));
}
@Override
public double getModifiedVelocity(GunData data, PerkInstance instance) {
return data.stack.is(ModTags.Items.SHOTGUN) ? 4.5f : super.getModifiedVelocity(data, instance);
}
}

View file

@ -0,0 +1,22 @@
package com.atsuishio.superbwarfare.perk.ammo;
import com.atsuishio.superbwarfare.entity.projectile.ProjectileEntity;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.AmmoPerk;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkInstance;
import net.minecraft.world.entity.Entity;
public class JHPBullet extends AmmoPerk {
public JHPBullet() {
super(new AmmoPerk.Builder("jhp_bullet", Perk.Type.AMMO).bypassArmorRate(-0.2f).damageRate(1.1f).speedRate(0.95f).slug(true).rgb(230, 131, 65));
}
@Override
public void modifyProjectile(GunData data, PerkInstance instance, Entity entity) {
super.modifyProjectile(data, instance, entity);
if (!(entity instanceof ProjectileEntity projectile)) return;
projectile.jhpBullet(instance.level());
}
}

View file

@ -0,0 +1,31 @@
package com.atsuishio.superbwarfare.perk.damage;
import com.atsuishio.superbwarfare.entity.projectile.GunGrenadeEntity;
import com.atsuishio.superbwarfare.entity.projectile.JavelinMissileEntity;
import com.atsuishio.superbwarfare.entity.projectile.ProjectileEntity;
import com.atsuishio.superbwarfare.entity.projectile.RpgRocketEntity;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkInstance;
import net.minecraft.world.entity.Entity;
public class MonsterHunter extends Perk {
public MonsterHunter() {
super("monster_hunter", Perk.Type.DAMAGE);
}
@Override
public void modifyProjectile(GunData data, PerkInstance instance, Entity entity) {
float multiplier = 0.1f + 0.1f * instance.level();
if (entity instanceof ProjectileEntity projectile) {
projectile.monsterMultiple(multiplier);
} else if (entity instanceof JavelinMissileEntity projectile) {
projectile.setMonsterMultiplier(multiplier);
} else if (entity instanceof GunGrenadeEntity projectile) {
projectile.setMonsterMultiplier(multiplier);
} else if (entity instanceof RpgRocketEntity projectile) {
projectile.setMonsterMultiplier(multiplier);
}
}
}