调整perk使用限制

This commit is contained in:
17146 2025-03-11 03:28:01 +08:00
parent 8b5aa13ca7
commit dc84d8d3b4
7 changed files with 21 additions and 33 deletions

View file

@ -175,7 +175,7 @@ public class M79Item extends GunItem implements GeoItem, SpecialFireWeapon {
@Override @Override
public boolean canApplyPerk(Perk perk) { public boolean canApplyPerk(Perk perk) {
return PerkHelper.LAUNCHER_PERKS.test(perk); return PerkHelper.LAUNCHER_PERKS.test(perk) || perk == ModPerks.MICRO_MISSILE.get();
} }
@Override @Override

View file

@ -275,7 +275,7 @@ public class SecondaryCataclysm extends GunItem implements GeoItem, SpecialFireW
@Override @Override
public boolean canApplyPerk(Perk perk) { public boolean canApplyPerk(Perk perk) {
return PerkHelper.LAUNCHER_PERKS.test(perk); return PerkHelper.LAUNCHER_PERKS.test(perk) || perk == ModPerks.MICRO_MISSILE.get();
} }
@Override @Override

View file

@ -203,7 +203,7 @@ public class MinigunItem extends GunItem implements GeoItem {
@Override @Override
public boolean canApplyPerk(Perk perk) { public boolean canApplyPerk(Perk perk) {
return switch (perk.type) { return switch (perk.type) {
case AMMO -> true; case AMMO -> perk != ModPerks.MICRO_MISSILE.get() && perk != ModPerks.LONGER_WIRE.get();
case FUNCTIONAL -> perk == ModPerks.FIELD_DOCTOR.get() || perk == ModPerks.INTELLIGENT_CHIP.get(); case FUNCTIONAL -> perk == ModPerks.FIELD_DOCTOR.get() || perk == ModPerks.INTELLIGENT_CHIP.get();
case DAMAGE -> perk == ModPerks.MONSTER_HUNTER.get() || perk == ModPerks.KILLING_TALLY.get(); case DAMAGE -> perk == ModPerks.MONSTER_HUNTER.get() || perk == ModPerks.KILLING_TALLY.get();
}; };

View file

@ -173,7 +173,7 @@ public class VectorItem extends GunItem implements GeoItem {
@Override @Override
public ResourceLocation getGunIcon() { public ResourceLocation getGunIcon() {
return new ResourceLocation(ModUtils.MODID, "textures/gun_icon/vector_icon.png"); return ModUtils.loc("textures/gun_icon/vector_icon.png");
} }
@Override @Override

View file

@ -102,7 +102,6 @@ public class HuntingRifleItem extends GunItem implements GeoItem {
@Override @Override
public AnimatableInstanceCache getAnimatableInstanceCache() { public AnimatableInstanceCache getAnimatableInstanceCache() {
return this.cache; return this.cache;
} }
public static ItemStack getGunInstance() { public static ItemStack getGunInstance() {

View file

@ -165,7 +165,7 @@ public class BocekItem extends GunItem implements GeoItem, SpecialFireWeapon {
@Override @Override
public boolean canApplyPerk(Perk perk) { public boolean canApplyPerk(Perk perk) {
return switch (perk.type) { return switch (perk.type) {
case AMMO -> !perk.descriptionId.equals("butterfly_bullet"); case AMMO -> !perk.descriptionId.equals("butterfly_bullet") && perk != ModPerks.MICRO_MISSILE.get();
case FUNCTIONAL -> perk == ModPerks.FIELD_DOCTOR.get() || perk == ModPerks.INTELLIGENT_CHIP.get(); case FUNCTIONAL -> perk == ModPerks.FIELD_DOCTOR.get() || perk == ModPerks.INTELLIGENT_CHIP.get();
case DAMAGE -> perk == ModPerks.MONSTER_HUNTER.get() || perk == ModPerks.KILLING_TALLY.get(); case DAMAGE -> perk == ModPerks.MONSTER_HUNTER.get() || perk == ModPerks.KILLING_TALLY.get();
}; };

View file

@ -181,7 +181,8 @@ public class PerkHelper {
} }
public static final Predicate<Perk> SHOTGUN_PERKS = perk -> switch (perk.type) { public static final Predicate<Perk> SHOTGUN_PERKS = perk -> switch (perk.type) {
case AMMO -> !perk.descriptionId.equals("butterfly_bullet"); case AMMO -> !perk.descriptionId.equals("butterfly_bullet") && perk != ModPerks.MICRO_MISSILE.get()
&& perk != ModPerks.LONGER_WIRE.get();
case FUNCTIONAL -> perk == ModPerks.SUBSISTENCE.get() case FUNCTIONAL -> perk == ModPerks.SUBSISTENCE.get()
|| perk == ModPerks.POWERFUL_ATTRACTION.get() || perk == ModPerks.POWERFUL_ATTRACTION.get()
|| perk == ModPerks.HEAL_CLIP.get() || perk == ModPerks.HEAL_CLIP.get()
@ -193,28 +194,19 @@ public class PerkHelper {
|| perk == ModPerks.VORPAL_WEAPON.get(); || perk == ModPerks.VORPAL_WEAPON.get();
}; };
public static final Predicate<Perk> RIFLE_PERKS = perk -> { public static final Predicate<Perk> RIFLE_PERKS = perk -> switch (perk.type) {
switch (perk.type) { case AMMO -> perk != ModPerks.MICRO_MISSILE.get() && perk != ModPerks.LONGER_WIRE.get();
case AMMO -> { case FUNCTIONAL -> perk == ModPerks.HEAL_CLIP.get() || perk == ModPerks.FIELD_DOCTOR.get() ||
return true;
}
case FUNCTIONAL -> {
return perk == ModPerks.HEAL_CLIP.get() || perk == ModPerks.FIELD_DOCTOR.get() ||
perk == ModPerks.FOURTH_TIMES_CHARM.get() || perk == ModPerks.SUBSISTENCE.get() || perk == ModPerks.FOURTH_TIMES_CHARM.get() || perk == ModPerks.SUBSISTENCE.get() ||
perk == ModPerks.POWERFUL_ATTRACTION.get() || perk == ModPerks.INTELLIGENT_CHIP.get(); perk == ModPerks.POWERFUL_ATTRACTION.get() || perk == ModPerks.INTELLIGENT_CHIP.get();
} case DAMAGE ->
case DAMAGE -> { perk == ModPerks.KILL_CLIP.get() || perk == ModPerks.GUTSHOT_STRAIGHT.get() || perk == ModPerks.MONSTER_HUNTER.get() ||
return perk == ModPerks.KILL_CLIP.get() || perk == ModPerks.GUTSHOT_STRAIGHT.get() || perk == ModPerks.MONSTER_HUNTER.get() ||
perk == ModPerks.HEAD_SEEKER.get() || perk == ModPerks.DESPERADO.get() || perk == ModPerks.VORPAL_WEAPON.get(); perk == ModPerks.HEAD_SEEKER.get() || perk == ModPerks.DESPERADO.get() || perk == ModPerks.VORPAL_WEAPON.get();
}
default -> {
return false;
}
}
}; };
public static final Predicate<Perk> HANDGUN_PERKS = perk -> switch (perk.type) { public static final Predicate<Perk> HANDGUN_PERKS = perk -> switch (perk.type) {
case AMMO -> !perk.descriptionId.equals("butterfly_bullet"); case AMMO -> !perk.descriptionId.equals("butterfly_bullet") && perk != ModPerks.MICRO_MISSILE.get()
&& perk != ModPerks.LONGER_WIRE.get();
case FUNCTIONAL -> perk == ModPerks.HEAL_CLIP.get() case FUNCTIONAL -> perk == ModPerks.HEAL_CLIP.get()
|| perk == ModPerks.FIELD_DOCTOR.get() || perk == ModPerks.FIELD_DOCTOR.get()
|| perk == ModPerks.SUBSISTENCE.get() || perk == ModPerks.SUBSISTENCE.get()
@ -227,8 +219,8 @@ public class PerkHelper {
}; };
public static final Predicate<Perk> SNIPER_RIFLE_PERKS = perk -> switch (perk.type) { public static final Predicate<Perk> SNIPER_RIFLE_PERKS = perk -> switch (perk.type) {
case AMMO -> !perk.descriptionId.equals("butterfly_bullet"); case AMMO -> !perk.descriptionId.equals("butterfly_bullet") && perk != ModPerks.MICRO_MISSILE.get()
&& perk != ModPerks.LONGER_WIRE.get();
case FUNCTIONAL -> perk == ModPerks.HEAL_CLIP.get() case FUNCTIONAL -> perk == ModPerks.HEAL_CLIP.get()
|| perk == ModPerks.FOURTH_TIMES_CHARM.get() || perk == ModPerks.FOURTH_TIMES_CHARM.get()
|| perk == ModPerks.POWERFUL_ATTRACTION.get() || perk == ModPerks.POWERFUL_ATTRACTION.get()
@ -240,7 +232,7 @@ public class PerkHelper {
}; };
public static final Predicate<Perk> SMG_PERKS = perk -> switch (perk.type) { public static final Predicate<Perk> SMG_PERKS = perk -> switch (perk.type) {
case AMMO -> true; case AMMO -> perk != ModPerks.MICRO_MISSILE.get() && perk != ModPerks.LONGER_WIRE.get();
case FUNCTIONAL -> perk == ModPerks.HEAL_CLIP.get() case FUNCTIONAL -> perk == ModPerks.HEAL_CLIP.get()
|| perk == ModPerks.FOURTH_TIMES_CHARM.get() || perk == ModPerks.FOURTH_TIMES_CHARM.get()
|| perk == ModPerks.SUBSISTENCE.get() || perk == ModPerks.SUBSISTENCE.get()
@ -255,8 +247,7 @@ public class PerkHelper {
}; };
public static final Predicate<Perk> MACHINE_GUN_PERKS = perk -> switch (perk.type) { public static final Predicate<Perk> MACHINE_GUN_PERKS = perk -> switch (perk.type) {
case AMMO -> true; case AMMO -> perk != ModPerks.MICRO_MISSILE.get() && perk != ModPerks.LONGER_WIRE.get();
case FUNCTIONAL -> perk == ModPerks.FOURTH_TIMES_CHARM.get() case FUNCTIONAL -> perk == ModPerks.FOURTH_TIMES_CHARM.get()
|| perk == ModPerks.SUBSISTENCE.get() || perk == ModPerks.SUBSISTENCE.get()
|| perk == ModPerks.POWERFUL_ATTRACTION.get() || perk == ModPerks.POWERFUL_ATTRACTION.get()
@ -271,7 +262,5 @@ public class PerkHelper {
public static final Predicate<Perk> LAUNCHER_PERKS = perk -> perk == ModPerks.MONSTER_HUNTER.get() public static final Predicate<Perk> LAUNCHER_PERKS = perk -> perk == ModPerks.MONSTER_HUNTER.get()
|| perk == ModPerks.POWERFUL_ATTRACTION.get() || perk == ModPerks.POWERFUL_ATTRACTION.get()
|| perk == ModPerks.INTELLIGENT_CHIP.get() || perk == ModPerks.INTELLIGENT_CHIP.get()
|| perk == ModPerks.VORPAL_WEAPON.get() || perk == ModPerks.VORPAL_WEAPON.get();
|| perk == ModPerks.MICRO_MISSILE.get();
} }