package com.hbm.items; import java.util.Set; import com.google.common.collect.ImmutableSet; import com.hbm.items.weapon.ItemAmmo.AmmoItemTrait; import com.hbm.lib.HbmCollection; public class ItemAmmoEnums { public enum AmmoLunaticSniper implements IAmmoItemEnum { SABOT("ammo_luna"), INCENDIARY("ammo_luna_incendiary"), EXPLOSIVE("ammo_luna_explosive"); private final Set traits; private final String unloc; private AmmoLunaticSniper(String unloc, AmmoItemTrait... traits) { this.traits = safeAssign(traits); this.unloc = unloc; } @Override public Set getTraits() { return traits; } @Override public String getInternalName() { return unloc; } } public enum AmmoFireExt implements IAmmoItemEnum { WATER("ammo_fireext"), FOAM("ammo_fireext_foam"), SAND("ammo_fireext_sand"); private final Set traits; private final String unloc; private AmmoFireExt(String unloc, AmmoItemTrait... traits) { this.traits = safeAssign(traits); this.unloc = unloc; } @Override public Set getTraits() { return traits; } @Override public String getInternalName() { return unloc; } } public enum AmmoFlamethrower implements IAmmoItemEnum { DIESEL("ammo_fuel"), NAPALM("ammo_fuel_napalm", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_RANGE, AmmoItemTrait.CON_HEAVY_WEAR), PHOSPHORUS("ammo_fuel_phosphorus", AmmoItemTrait.PRO_PHOSPHORUS_SPLASH, AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_RANGE, AmmoItemTrait.PRO_RANGE, AmmoItemTrait.PRO_ACCURATE1, AmmoItemTrait.NEU_WARCRIME1, AmmoItemTrait.CON_SING_PROJECTILE, AmmoItemTrait.CON_HEAVY_WEAR), VAPORIZER("ammo_fuel_vaporizer", AmmoItemTrait.PRO_PHOSPHORUS, AmmoItemTrait.PRO_FLAMES, AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.NEU_ERASER, AmmoItemTrait.CON_ACCURACY2, AmmoItemTrait.CON_RANGE2, AmmoItemTrait.CON_HEAVY_WEAR, AmmoItemTrait.CON_LING_FIRE), CHLORINE("ammo_fuel_gas", AmmoItemTrait.PRO_NO_GRAVITY, AmmoItemTrait.PRO_POISON_GAS, AmmoItemTrait.CON_NO_DAMAGE, AmmoItemTrait.CON_NO_FIRE); private final Set traits; private final String unloc; private AmmoFlamethrower(String unloc, AmmoItemTrait... traits) { this.traits = safeAssign(traits); this.unloc = unloc; } @Override public Set getTraits() { return traits; } @Override public String getInternalName() { return unloc; } } public enum AmmoMisc implements IAmmoItemEnum { //LUNA_SNIPER("ammo_lunar", Gun50BMGFactory.getLunaticSabotRound(), AmmoItemTrait.PRO_HEAVY_DAMAGE, AmmoItemTrait.PRO_ACCURATE2, AmmoItemTrait.NEU_HEAVY_METAL), DGK("ammo_dkg"); private final Set traits; private final String unloc; private AmmoMisc(String unloc, AmmoItemTrait... traits) { this.traits = safeAssign(traits); this.unloc = unloc; } @Override public Set getTraits() { return traits; } @Override public String getInternalName() { return unloc; } } public enum AmmoStinger implements IAmmoItemEnum { STOCK("ammo_stinger_rocket"), HE("ammo_stinger_rocket_he", AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.CON_WEAR), INCENDIARY("ammo_stinger_rocket_incendiary", HbmCollection.IncendiaryType), NUCLEAR("ammo_stinger_rocket_nuclear", AmmoItemTrait.PRO_NUCLEAR, AmmoItemTrait.CON_SUPER_WEAR), BONES("ammo_stinger_rocket_bones"); private final Set traits; private final String unloc; private AmmoStinger(String unloc, AmmoItemTrait... traits) { this.traits = safeAssign(traits); this.unloc = unloc; } private AmmoStinger(String unloc, Set traits) { this.traits = traits; this.unloc = unloc; } @Override public Set getTraits() { return traits; } @Override public String getInternalName() { return unloc; } } public enum AmmoRocket implements IAmmoItemEnum { STOCK("ammo_rocket"), HE("ammo_rocket_he", AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.CON_WEAR), INCENDIARY("ammo_rocket_incendiary", HbmCollection.IncendiaryType), EMP("ammo_rocket_emp", AmmoItemTrait.PRO_EMP, AmmoItemTrait.CON_RADIUS), SLEEK("ammo_rocket_sleek", AmmoItemTrait.PRO_RADIUS_HIGH, AmmoItemTrait.PRO_NO_GRAVITY, AmmoItemTrait.CON_SPEED), SHRAPNEL("ammo_rocket_shrapnel", AmmoItemTrait.PRO_SHRAPNEL), GLARE("ammo_rocket_glare", AmmoItemTrait.PRO_SPEED, AmmoItemTrait.PRO_INCENDIARY, AmmoItemTrait.CON_WEAR), NUCLEAR("ammo_rocket_nuclear", AmmoItemTrait.PRO_NUCLEAR, AmmoItemTrait.CON_SUPER_WEAR, AmmoItemTrait.CON_SPEED), CHLORINE("ammo_rocket_toxic", AmmoItemTrait.PRO_CHLORINE, AmmoItemTrait.CON_NO_EXPLODE1, AmmoItemTrait.CON_SPEED), RPC("ammo_rocket_rpc", AmmoItemTrait.PRO_CHAINSAW, AmmoItemTrait.PRO_PENETRATION, AmmoItemTrait.PRO_NO_GRAVITY, AmmoItemTrait.CON_WEAR, AmmoItemTrait.CON_NO_EXPLODE1, AmmoItemTrait.NEU_UHH ), PHOSPHORUS("ammo_rocket_phosphorus", HbmCollection.PhosphorusTypeSpecial), CANISTER("ammo_rocket_canister"), DIGAMMA("ammo_rocket_digamma"); private final Set traits; private final String unloc; private AmmoRocket(String unloc, AmmoItemTrait... traits) { this.traits = safeAssign(traits); this.unloc = unloc; } private AmmoRocket(String unloc, Set traits) { this.traits = traits; this.unloc = unloc; } @Override public Set getTraits() { return traits; } @Override public String getInternalName() { return unloc; } } public enum AmmoGrenade implements IAmmoItemEnum { STOCK("ammo_grenade"), HE("ammo_grenade_he", AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.CON_WEAR), INCENDIARY("ammo_grenade_incendiary", AmmoItemTrait.PRO_INCENDIARY, AmmoItemTrait.CON_WEAR), PHOSPHORUS("ammo_grenade_phosphorus", AmmoItemTrait.PRO_PHOSPHORUS_SPLASH, AmmoItemTrait.NEU_WARCRIME1, AmmoItemTrait.CON_WEAR), CHLORINE("ammo_grenade_toxic", AmmoItemTrait.PRO_CHLORINE, AmmoItemTrait.CON_NO_EXPLODE1), SLEEK("ammo_grenade_sleek", AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.NEU_JOLT), CONCUSSION("ammo_grenade_concussion", AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.CON_NO_EXPLODE2), FINNED("ammo_grenade_finned", AmmoItemTrait.PRO_GRAVITY, AmmoItemTrait.CON_RADIUS), NUCLEAR("ammo_grenade_nuclear", AmmoItemTrait.PRO_NUCLEAR, AmmoItemTrait.PRO_RANGE, AmmoItemTrait.CON_HEAVY_WEAR), TRACER("ammo_grenade_tracer", AmmoItemTrait.NEU_BLANK), KAMPF("ammo_grenade_kampf", AmmoItemTrait.PRO_ROCKET_PROPELLED, AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.PRO_ACCURATE1, AmmoItemTrait.CON_WEAR), LEADBURSTER("ammo_grenade_leadburster", AmmoItemTrait.NEU_LEADBURSTER, AmmoItemTrait.CON_NO_EXPLODE1); private final Set traits; private final String unloc; private AmmoGrenade(String unloc, AmmoItemTrait... traits) { this.traits = safeAssign(traits); this.unloc = unloc; } @Override public Set getTraits() { return traits; } @Override public String getInternalName() { return unloc; } } public enum AmmoFatman implements IAmmoItemEnum { STOCK("ammo_nuke"), LOW("ammo_nuke_low", AmmoItemTrait.CON_RADIUS), HIGH("ammo_nuke_high", AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.PRO_FALLOUT), TOTS("ammo_nuke_tots", AmmoItemTrait.PRO_BOMB_COUNT, AmmoItemTrait.NEU_FUN, AmmoItemTrait.CON_ACCURACY2, AmmoItemTrait.CON_RADIUS, AmmoItemTrait.CON_NO_MIRV), SAFE("ammo_nuke_safe", AmmoItemTrait.CON_RADIUS, AmmoItemTrait.CON_NO_EXPLODE2), PUMPKIN("ammo_nuke_pumpkin", AmmoItemTrait.CON_NN), MIRV("ammo_mirv"), MIRV_LOW("ammo_mirv_low", AmmoItemTrait.CON_RADIUS), MIRV_HIGH("ammo_mirv_high", AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.PRO_FALLOUT), MIRV_SAFE("ammo_mirv_safe", AmmoItemTrait.CON_RADIUS, AmmoItemTrait.CON_NO_EXPLODE2), MIRV_SPECIAL("ammo_mirv_special"), BALEFIRE("gun_bf_ammo"), BARREL("ammo_nuke_barrel"); private final Set traits; private final String unloc; private AmmoFatman(String unloc, AmmoItemTrait... traits) { this.traits = safeAssign(traits); this.unloc = unloc; } @Override public Set getTraits() { return traits; } @Override public String getInternalName() { return unloc; } } public enum AmmoDart implements IAmmoItemEnum { GPS("ammo_dart"), NUCLEAR("ammo_dart_nuclear"), NERF("ammo_dart_nerf"); private final Set traits; private final String unloc; private AmmoDart(String unloc, AmmoItemTrait... traits) { this.traits = safeAssign(traits); this.unloc = unloc; } @Override public Set getTraits() { return traits; } @Override public String getInternalName() { return unloc; } } public enum Ammo240Shell implements IAmmoItemEnum { STOCK("ammo_shell"), EXPLOSIVE("ammo_shell_explosive"), APFSDS_T("ammo_shell_apfsds_t"), APFSDS_DU("ammo_shell_apfsds_du"), W9("ammo_shell_w9"); private final Set traits; private final String unloc; private Ammo240Shell(String unloc, AmmoItemTrait... traits) { this.traits = safeAssign(traits); this.unloc = unloc; } @Override public Set getTraits() { return traits; } @Override public String getInternalName() { return unloc; } } public enum Ammo9mm implements IAmmoItemEnum { STOCK("ammo_9mm"), AP("ammo_9mm_ap", HbmCollection.APType), DU("ammo_9mm_du", HbmCollection.DUType), CHLOROPHYTE("ammo_9mm_chlorophyte", HbmCollection.ChlorophyteType), ROCKET("ammo_9mm_rocket", AmmoItemTrait.PRO_ROCKET, AmmoItemTrait.NEU_UHH); private final Set traits; private final String unloc; private Ammo9mm(String unloc, AmmoItemTrait... traits) { this.traits = safeAssign(traits); this.unloc = unloc; } private Ammo9mm(String unloc, Set traits) { this.traits = traits; this.unloc = unloc; } @Override public Set getTraits() { return traits; } @Override public String getInternalName() { return unloc; } } public enum Ammo762NATO implements IAmmoItemEnum { STOCK("ammo_762"), AP("ammo_762_ap", HbmCollection.APType), DU("ammo_762_du", HbmCollection.DUType), TRACER("ammo_762_tracer", AmmoItemTrait.NEU_TRACER), PHOSPHORUS("ammo_762_phosphorus", HbmCollection.PhosphorusType), BLANK("ammo_762_k", AmmoItemTrait.NEU_BLANK); private final Set traits; private final String unloc; private Ammo762NATO(String unloc, AmmoItemTrait... traits) { this.traits = safeAssign(traits); this.unloc = unloc; } private Ammo762NATO(String unloc, Set traits) { this.traits = traits; this.unloc = unloc; } @Override public Set getTraits() { return traits; } @Override public String getInternalName() { return unloc; } } public enum Ammo75Bolt implements IAmmoItemEnum { STOCK("ammo_75bolt"), INCENDIARY("ammo_75bolt_incendiary"), HE("ammo_75bolt_he"); private final Set traits; private final String unloc; private Ammo75Bolt(String unloc, AmmoItemTrait... traits) { this.traits = safeAssign(traits); this.unloc = unloc; } @Override public Set getTraits() { return traits; } @Override public String getInternalName() { return unloc; } } public enum Ammo5mm implements IAmmoItemEnum { STOCK("ammo_5mm"), EXPLOSIVE("ammo_5mm_explosive", HbmCollection.ExplosiveType), DU("ammo_5mm_du", HbmCollection.DUType), STAR("ammo_5mm_star", HbmCollection.StarmetalType), CHLOROPHYTE("ammo_5mm_chlorophyte", HbmCollection.ChlorophyteType); private final Set traits; private final String unloc; private Ammo5mm(String unloc, AmmoItemTrait... traits) { this.traits = safeAssign(traits); this.unloc = unloc; } private Ammo5mm(String unloc, Set traits) { this.traits = traits; this.unloc = unloc; } @Override public Set getTraits() { return traits; } @Override public String getInternalName() { return unloc; } } public enum Ammo556mm implements IAmmoItemEnum { STOCK("ammo_556"), GOLD("gun_pm_ammo"), PHOSPHORUS("ammo_556_phosphorus", HbmCollection.PhosphorusType), AP("ammo_556_ap", HbmCollection.APType), DU("ammo_556_du", HbmCollection.DUType), STAR("ammo_556_star", HbmCollection.StarmetalType), CHLOROPHYTE("ammo_556_chlorophyte", HbmCollection.ChlorophyteType), SLEEK("ammo_556_sleek", AmmoItemTrait.NEU_MASKMAN_METEORITE), TRACER("ammo_556_tracer", AmmoItemTrait.NEU_TRACER), FLECHETTE("ammo_556_flechette", HbmCollection.FlechetteType), FLECHETTE_INCENDIARY("ammo_556_flechette_incendiary", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_INCENDIARY, AmmoItemTrait.NEU_LESS_BOUNCY, AmmoItemTrait.CON_WEAR, AmmoItemTrait.CON_PENETRATION), FLECHETTE_PHOSPHORUS("ammo_556_flechette_phosphorus", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_PHOSPHORUS, AmmoItemTrait.NEU_WARCRIME2, AmmoItemTrait.NEU_LESS_BOUNCY, AmmoItemTrait.CON_WEAR, AmmoItemTrait.CON_PENETRATION), FLECHETTE_DU("ammo_556_flechette_du", AmmoItemTrait.PRO_HEAVY_DAMAGE, AmmoItemTrait.PRO_PENETRATION, AmmoItemTrait.NEU_HEAVY_METAL, AmmoItemTrait.NEU_LESS_BOUNCY, AmmoItemTrait.CON_HEAVY_WEAR), FLECHETTE_CHLOROPHYTE("ammo_556_flechette_chlorophyte", HbmCollection.ChlorophyteType), FLECHETTE_SLEEK("ammo_556_flechette_sleek", AmmoItemTrait.NEU_MASKMAN_METEORITE), K("ammo_556_k", AmmoItemTrait.NEU_BLANK); private final Set traits; private final String unloc; private Ammo556mm(String unloc, AmmoItemTrait... traits) { this.traits = safeAssign(traits); this.unloc = unloc; } private Ammo556mm(String unloc, Set traits) { this.traits = traits; this.unloc = unloc; } @Override public Set getTraits() { return traits; } @Override public String getInternalName() { return unloc; } } public enum Ammo50BMG implements IAmmoItemEnum { STOCK("ammo_50bmg"), INCENDIARY("ammo_50bmg_incendiary", HbmCollection.IncendiaryType), PHOSPHORUS("ammo_50bmg_phosphorus", HbmCollection.PhosphorusType), EXPLOSIVE("ammo_50bmg_explosive", HbmCollection.ExplosiveType), AP("ammo_50bmg_ap", HbmCollection.APType), DU("ammo_50bmg_du", HbmCollection.DUType), STAR("ammo_50bmg_star", HbmCollection.StarmetalType), CHLOROPHYTE("ammo_50bmg_chlorophyte", HbmCollection.ChlorophyteType), SLEEK("ammo_50bmg_sleek", AmmoItemTrait.NEU_MASKMAN_METEORITE), FLECHETTE("ammo_50bmg_flechette", AmmoItemTrait.PRO_DAMAGE), FLECHETTE_AM("ammo_50bmg_flechette_am", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.NEU_UHH), FLECHETTE_PO("ammo_50bmg_flechette_po", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.NEU_UHH); private final Set traits; private final String unloc; private Ammo50BMG(String unloc, AmmoItemTrait... traits) { this.traits = safeAssign(traits); this.unloc = unloc; } private Ammo50BMG(String unloc, Set traits) { this.traits = traits; this.unloc = unloc; } @Override public Set getTraits() { return traits; } @Override public String getInternalName() { return unloc; } } public enum Ammo50AE implements IAmmoItemEnum { STOCK("ammo_50ae"), AP("ammo_50ae_ap", HbmCollection.APType), DU("ammo_50ae_du", HbmCollection.DUType), STAR("ammo_50ae_star", HbmCollection.StarmetalType), CHLOROPHYTE("ammo_50ae_chlorophyte", HbmCollection.ChlorophyteType); private final Set traits; private final String unloc; private Ammo50AE(String unloc, AmmoItemTrait... traits) { this.traits = safeAssign(traits); this.unloc = unloc; } private Ammo50AE(String unloc, Set traits) { this.traits = traits; this.unloc = unloc; } @Override public Set getTraits() { return traits; } @Override public String getInternalName() { return unloc; } } public enum Ammo4Gauge implements IAmmoItemEnum { STOCK("ammo_4gauge"), SLUG("ammo_4gauge_slug", AmmoItemTrait.PRO_ACCURATE2, AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_WEAR, AmmoItemTrait.CON_SING_PROJECTILE), FLECHETTE("ammo_4gauge_flechette", HbmCollection.FlechetteType), FLECHETTE_PHOSPHORUS("ammo_4gauge_flechette_phosphorus", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_PHOSPHORUS, AmmoItemTrait.NEU_WARCRIME2, AmmoItemTrait.NEU_LESS_BOUNCY, AmmoItemTrait.CON_WEAR), EXPLOSIVE("ammo_4gauge_explosive", AmmoItemTrait.PRO_EXPLOSIVE, AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.NEU_40MM, AmmoItemTrait.CON_HEAVY_WEAR, AmmoItemTrait.CON_SING_PROJECTILE), MINING("ammo_4gauge_semtex", AmmoItemTrait.PRO_EXPLOSIVE, AmmoItemTrait.PRO_MINING, AmmoItemTrait.CON_NO_EXPLODE3, AmmoItemTrait.CON_HEAVY_WEAR, AmmoItemTrait.CON_SING_PROJECTILE), BALEFIRE("ammo_4gauge_balefire", AmmoItemTrait.PRO_EXPLOSIVE, AmmoItemTrait.PRO_BALEFIRE, AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.CON_HEAVY_WEAR, AmmoItemTrait.CON_SING_PROJECTILE), KAMPF("ammo_4gauge_kampf", AmmoItemTrait.PRO_EXPLOSIVE, AmmoItemTrait.PRO_ROCKET_PROPELLED, AmmoItemTrait.PRO_ACCURATE1, AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.CON_WEAR, AmmoItemTrait.CON_SING_PROJECTILE), CANISTER("ammo_4gauge_canister"), SLEEK("ammo_4gauge_sleek", AmmoItemTrait.NEU_MASKMAN_FLECHETTE), CLAW("ammo_4gauge_claw"), VAMPIRE("ammo_4gauge_vampire"), VOID("ammo_4gauge_void"), QUACK("ammo_4gauge_titan", AmmoItemTrait.PRO_MARAUDER, AmmoItemTrait.NEU_NO_CON); private final Set traits; private final String unloc; private Ammo4Gauge(String unloc, AmmoItemTrait... traits) { this.traits = safeAssign(traits); this.unloc = unloc; } private Ammo4Gauge(String unloc, Set traits) { this.traits = traits; this.unloc = unloc; } @Override public Set getTraits() { return traits; } @Override public String getInternalName() { return unloc; } } public enum Ammo45ACP implements IAmmoItemEnum { STOCK("ammo_45"), AP("ammo_45_ap", HbmCollection.APType), DU("ammo_45_du", HbmCollection.DUType); private final Set traits; private final String unloc; private Ammo45ACP(String unloc, AmmoItemTrait... traits) { this.traits = safeAssign(traits); this.unloc = unloc; } private Ammo45ACP(String unloc, Set traits) { this.traits = traits; this.unloc = unloc; } @Override public Set getTraits() { return traits; } @Override public String getInternalName() { return unloc; } } public enum Ammo44Magnum implements IAmmoItemEnum { STOCK("ammo_44"), AP("ammo_44_ap", HbmCollection.APType), DU("ammo_44_du", HbmCollection.DUType), PHOSPHORUS("ammo_44_phosphorus", HbmCollection.PhosphorusType), STAR("ammo_44_star", HbmCollection.StarmetalType), CHLOROPHYTE("ammo_44_chlorophyte", HbmCollection.ChlorophyteType), PIP("ammo_44_pip", AmmoItemTrait.NEU_BOXCAR, AmmoItemTrait.CON_DAMAGE), BJ("ammo_44_bj", AmmoItemTrait.NEU_BOAT, AmmoItemTrait.CON_DAMAGE), SILVER("ammo_44_silver", AmmoItemTrait.NEU_BUILDING, AmmoItemTrait.CON_DAMAGE), ROCKET("ammo_44_rocket", AmmoItemTrait.PRO_ROCKET, AmmoItemTrait.NEU_UHH); private final Set traits; private final String unloc; private Ammo44Magnum(String unloc, AmmoItemTrait... traits) { this.traits = safeAssign(traits); this.unloc = unloc; } private Ammo44Magnum(String unloc, Set traits) { this.traits = traits; this.unloc = unloc; } @Override public Set getTraits() { return traits; } @Override public String getInternalName() { return unloc; } } public enum Ammo357Magnum implements IAmmoItemEnum { IRON("gun_revolver_iron_ammo"), LEAD("gun_revolver_ammo"), NUCLEAR("gun_revolver_lead_ammo"), GOLD("gun_revolver_gold_ammo"), DESH("ammo_357_desh", AmmoItemTrait.PRO_FIT_357, AmmoItemTrait.PRO_DAMAGE_SLIGHT), SCHRABIDIUM("gun_revolver_schrabidium_ammo"), STEEL("gun_revolver_cursed_ammo"), NIGHTMARE1("gun_revolver_nightmare_ammo"), NIGHTMARE2("gun_revolver_nightmare2_ammo"); private final Set traits; private final String unloc; private Ammo357Magnum(String unloc, AmmoItemTrait... traits) { this.traits = safeAssign(traits); this.unloc = unloc; } @Override public Set getTraits() { return traits; } @Override public String getInternalName() { return unloc; } } public enum Ammo22LR implements IAmmoItemEnum { STOCK("ammo_22lr"), AP("ammo_22lr_ap", HbmCollection.APType), CHLOROPHYTE("ammo_22lr_chlorophyte", HbmCollection.ChlorophyteType); private final Set traits; private final String unloc; private Ammo22LR(String unloc, AmmoItemTrait... traits) { this.traits = safeAssign(traits); this.unloc = unloc; } private Ammo22LR(String unloc, Set traits) { this.traits = traits; this.unloc = unloc; } @Override public Set getTraits() { return traits; } @Override public String getInternalName() { return unloc; } } public enum Ammo20Gauge implements IAmmoItemEnum { STOCK("ammo_20gauge"), SLUG("ammo_20gauge_slug", AmmoItemTrait.PRO_ACCURATE2, AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_WEAR, AmmoItemTrait.CON_SING_PROJECTILE), FLECHETTE("ammo_20gauge_flechette", HbmCollection.FlechetteType), INCENDIARY("ammo_20gauge_incendiary", AmmoItemTrait.PRO_INCENDIARY, AmmoItemTrait.CON_WEAR), SHRAPNEL("ammo_20gauge_shrapnel", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.NEU_MORE_BOUNCY, AmmoItemTrait.CON_WEAR), EXPLOSIVE("ammo_20gauge_explosive", HbmCollection.ExplosiveType), CAUSTIC("ammo_20gauge_caustic", AmmoItemTrait.PRO_TOXIC, AmmoItemTrait.PRO_CAUSTIC, AmmoItemTrait.NEU_NO_BOUNCE, AmmoItemTrait.CON_HEAVY_WEAR), SHOCK("ammo_20gauge_shock", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_STUNNING, AmmoItemTrait.PRO_EMP, AmmoItemTrait.NEU_NO_BOUNCE, AmmoItemTrait.CON_HEAVY_WEAR), WITHER("ammo_20gauge_wither", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_WITHERING), SLEEK("ammo_20gauge_sleek", AmmoItemTrait.NEU_MASKMAN_FLECHETTE); private final Set traits; private final String unloc; private Ammo20Gauge(String unloc, AmmoItemTrait... traits) { this.traits = safeAssign(traits); this.unloc = unloc; } private Ammo20Gauge(String unloc, Set traits) { this.traits = traits; this.unloc = unloc; } @Override public Set getTraits() { return traits; } @Override public String getInternalName() { return unloc; } } public enum Ammo12Gauge implements IAmmoItemEnum { STOCK("ammo_12gauge"), INCENDIARY("ammo_12gauge_incendiary", AmmoItemTrait.PRO_INCENDIARY, AmmoItemTrait.CON_WEAR), SHRAPNEL("ammo_12gauge_shrapnel", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.NEU_MORE_BOUNCY, AmmoItemTrait.CON_WEAR), DU("ammo_12gauge_du", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_PENETRATION, AmmoItemTrait.NEU_HEAVY_METAL, AmmoItemTrait.CON_HEAVY_WEAR), MARAUDER("ammo_12gauge_marauder", AmmoItemTrait.PRO_MARAUDER, AmmoItemTrait.NEU_NO_CON), SLEEK("ammo_12gauge_sleek", AmmoItemTrait.NEU_MASKMAN_FLECHETTE), PERCUSSION("ammo_12gauge_percussion", AmmoItemTrait.PRO_PERCUSSION, AmmoItemTrait.CON_NO_PROJECTILE); private final Set traits; private final String unloc; private Ammo12Gauge(String unloc, AmmoItemTrait... traits) { this.traits = safeAssign(traits); this.unloc = unloc; } @Override public Set getTraits() { return traits; } @Override public String getInternalName() { return unloc; } } public enum AmmoCoilgun implements IAmmoItemEnum { STOCK("ammo_coilgun"), DU("ammo_coilgun_du", AmmoItemTrait.PRO_HEAVY_DAMAGE, AmmoItemTrait.CON_HEAVY_WEAR), RUBBER("ammo_coilgun_rubber", AmmoItemTrait.NEU_MORE_BOUNCY, AmmoItemTrait.CON_DAMAGE); private final Set traits; private final String unloc; private AmmoCoilgun(String unloc, AmmoItemTrait... traits) { this.traits = safeAssign(traits); this.unloc = unloc; } @Override public Set getTraits() { return traits; } @Override public String getInternalName() { return unloc; } } public interface IAmmoItemEnum { public Set getTraits(); public String getInternalName(); } static Set safeAssign(AmmoItemTrait[] traits) { return traits == null ? ImmutableSet.of() : ImmutableSet.copyOf(traits); } }