let's go to stalingrad, it will be fun

This commit is contained in:
Boblet 2024-12-16 15:59:41 +01:00
parent c60f5cf400
commit ce3bff94eb
17 changed files with 83 additions and 227 deletions

131
changelog
View File

@ -1,124 +1,13 @@
## Gun rework
* Killed off most existing guns because they suck lol
* Added a bunch of new guns with all new models, animations ammo types and recipes
* Guns are now tiered, using progression related cast components
* Play with your guns! Most guns now have animations for dry firing, and an "inspect" animation that plays when hitting the reload key when reloading is not possible
* Most guns can now be aimed properly. Aiming now uses a dedicated key (mouse 3) instead of sneaking
* All new gun keybinds can be configured of course
* "why is it MMB and not RMB? i know a really easy fix" no you don't, trust me i put a lot of thought into this and that's the only way without making the keybinds inconsistent as hell
* Guns now have multiple types, "standard arsenal" (i.e. the regular selection of guns), "b-side" (alt versions of guns which are not visible in creative, although craftable), "special" (not really part of of the progression tiering) and "legendary" (neither in creative nor in NEI)
* Guns now make the screen visibly recoil. This is a bit of a bold change about which I am unsure myself, so there is an option to turn it off: `/ntmclient set GUN_VISUAL_RECOIL false`
* Special damage types now have unique death animations, explosive damage will cause gibbing and laser/electric/fire damage will incinerate the target with only the skeleton remaining
* The skeletonizer has compatibility with most bipedal vanilla mobs as well as most mobs from TechGuns
* Repairing guns is now easier, repair kits are generally cheaper, and have multiple uses
* Instead of working the same until they stop working entirely when durability runs out, new guns now decrease in accuracy (below 50%) and damage (below 33%) when durability goes down. Guns however will still remain functional with no durability left, however the gun will deal next to no damage and barely ever hot anything.
* Since every time i add recycling for deprecated features, someone ends up complaining about the balancing of the recycling or gets confused on where to source items, old guns and ammo are simply not recycleable and instead become useless. Sucks to be you!
* Stuff I did not get around finishing:
* Legendary weapons were supposed to spawn in new dungeons, however right now they just spawn in red rooms
* Bolter's ammo types don't work as advertised and aren't craftable because æügh
* Some of the remnant guns that aren't part of the new system yet are not craftable
* Armor balance may not entirely be correct (read: at all), there's a new system for resistances and current values are just a vague estimate
* You can easily test things yourself, there is a spawn egg for a new test dummy mob which can be equipped with any armor. Damage calculation applies just the same as it would with real players
* Some gun variants aren't even in yet (b-sides, legendaries) because those were super low priority
* Purple bullets don't have their special effects just yet
* Headshot mulitpliers don't apply yet
* Trechnmaster abilities do not work with the new guns yet
* Nitra doesn't craft any of the new ammo types yet, not sure what to even do with that
* Ammo backpacks. yeah! just remembered something about those
* Most of these issues are quite minor so expect them to be resolved in the next update rather soon for the next stable release
* Yes this is what i have been up to for the past months. everything hurts. now go away
## Added
* `/ntmclient`
* Allows some client-only config options to be edited while ingame
* Config is stored in `hbmClient.json` in the `hbmConfig` folder
* Configs can be edited ingame via `/ntmclient set <name> <value>` or in the file and then `/ntmclient reload`
* Available configs include geiger counter HUD position, info system position and orientation, custom main menu splash texts, ore dict display and custom nuke item info
* Check the config file or `/ntmclient list` for a full list of values, the name should make them self-explanatory!
* Liquid lead
* A valid coolant for both PWRs and ICFs
* Has an immense heat transfer speed bonus, allowing ICFs to be cooled even when using higher tier pellets
* Cools quite effectively in PWRs, but has a negative neutron modifier and a small penalty of how much heat ends up usable
* Overall a cheap and very good coolant, just not as efficient as sodium
* Rotary furnace
* Used to make new alloys like gunmetal or weapon steel
* Can also make desh and saturnite, as well as more efficient steel from iron fragments
* Requires both solid fuel and steam to work
* Ammo press
* Makes the new ammo types
* A recipe can be selected like in the anvil, however the selection will linger since the press has a proper inventory. Therefore, hooking up a hopper allows for ammo to be automated
## Changed
* Updated russian and chinese localization
* The fine soot recipe in the pyrolysis oven now only needs 4 tar
* Overdrive upgrades now use hard plastic/fullerite instead of lithium crystals
* Machines now only send their sync packets once a second instead of once per tick if the values haven't changed, reducing network traffic by a considerable amount
* Tom's explosion no longer causes any block updates on the millions of blocks it deletes which hopefully fixes a majority of the lag caused by the crater
* Overdrive upgrades now increase power usage in pyrolysis ovens (equivalent to 2 speed upgrades per level)
* Due to the increased maximum demand with overdrives + speed upgrades, the energy buffer for the pyrolysis oven has been increased tenfold
* Updated basalt textures
* Scaffold blocks can now be placed horizontally
* Updated the shredder's textures
* The strand caster will now cast its remaining buffer after 10 seconds of inactivity, even if the buffer is not full enough for a batch of 9
* The soldering station now has a toggle for the "refuse to do recipes with no fluid if fluid is present" behavior
* Recipes using the ore dictionary "oreThorium232" are now also generated for "oreThorium"
* Conveyor grabbers can now output onto belts directly
* I could have just made grabbers delete the input and spawn an identical item on the output but simply changing the position makes it look like the item is sucked in and it looks hilarious
* Cable connections (connectors, pylons, substations) now render about 10x faster and no longer have weird inaccuracies where the segments meet
* Cables can be made even faster by setting `RENDER_CABLE_HANG` in the config to `false`
* This causes cable connections to render taut, eliminating the need for multiple segments per pylon side
* Heat exchanging heaters are now set to 24,000mB/t by default
* The ICF GUI now lists the laser input as "per tick"
* Glpyhid hives caught in a fallout zone now turn radioactive
* Glyphids spawned by radioactive hives are immune to fire, twice as fast and five times as strong
* Radioactive glpyhids however are NOT immune to radiation, and typically die quickly
* Radioactive hives are sterile, they will not spawn scouts
* PWR core capacity is now limited to 500%, meaning the maximum amount of heatsinks usable is 80
* Item autogen now generates ingot forms for items that are castable but don't have an ingot form, preventing cases where a material is completely uncastable
* This change makes sodium and strontium castable
* Ore dict recipe autogen for crucible molds now prioritizes NTM's own items over any other ore dict compatible item
* If a cracking tower's input is set to an incorrect type, the input and steam tanks are now preserved instead of being set to NONE
* Removed legacy wire items
* Removed random ore, along with its configs
* DFC emitters are now only 95% efficient instead of 98%
* Oily coal has been removed from worldgen, it no longer spawns in new chunks
* Existing oily coal can be mined risk-free
* Reeds rendering into water can now be toggled with the RENDER_REEDS client config
* This option is usually enabled by default, unless Angelica is installed
* Microwave explosions no longer destroy blocks, only the microwave and nearby players
* Wings can now be used like armor mods
* At higher pollution levels, skeletons can now spawn with guns
* Logistic drones now move at 0.625 blocks/t instead of 0.6. There is no balancing reason for this, I just hate weird numbers like 0.6
* Fallout effects now remove snow layers in the same area where they would remove things like small plants and leaves
* Adjusted damage values to many swords and some tools
* Unsats and aromatics can now be filled into gas canisters
* Basalt asbestos ore no longer creates asbestos particles every block update, meaning volcanoes no longer cause massive delays with chunk rendering due to constant block changes
* Rockets shot by the rocket turret are no longer subject to gravity and lock onto the intended target
* Updated the anti-personell mine's model, it also now has 4 different textures which are automatically applied depending on whether the mine is placed underground or what biome it is in
* Saturnite is now exclusively made in the rotary furnace, requiring reformate gas, making it effectively post-RBMK
* To offset the increased cost, some things like ESAPI inserts and desh shredder blades/stamps no longer require saturnite at all
* Small explosions from land mines and bombers now use the new and improved explosions animations from 40mm grenades
* All mini nuclear explosions now use the VNT system, meaning their damaging AoE can no longer be blocked by tiny bumps in the terrain and they will now correctly deal knockback
* Problably a ton of other shit i forgot to document because it's been months and ther only way i even feel anything is by drinking gasoline
* Any bullet that can ricochet (or at least runs the code for it) can now also break glass
* Removed the witch taunter achievement for being unobtainable now
* AJR armor plating now uses niobium instead of saturnite, and yields twice as many items per recipe
* Due to the gating change, the saturnite anvil now has a tier equivalent to a bronze anvil
## Fixed
* The conveyor grabber should no longer skip over items when used in long lines
* Fixed a potential crash regarding crucibles
* Fixed compatibility with EndlessIDs, biome changes should no longer crash the game
* Fixed GL state leak caused by fluid tanks, causing some tile entities to be rendered without face culling
* Fixed a bug where using too many PWR heatsinks would cause an overflow, making the heat capacity negative
* Fixed landmines generating into the floor on superflat worlds
* All NTM type explosions are no longer affected by difficulty setting, preventing them from dealing damage in peaceful mode
* There are a few instances of vanilla explosions still being used, those will be phased out in the future
* Fixed tutorial presentations triggering when hitting F1 not just in the inventory but also when looking at the block in question
* Fixed a bug regarding shift clicking in the breeding reactor
* Fixed empty particle capsules not being extractable from the ICF pellet maker
* Fixed issue regarding mass storage filters when using GTNH-NEI
* Fixed DFC emitters calculating their original 98% inefficiency twice when hitting another emitter or tungsten crate
* Fixed the wood burner destroying container items like buckets when using lava as fuel
* Fixed pollution serialization for the fluid trait config being wrong
* Fixed slag crashing the game when trying to flow into the void
* Fixed issue where drones that are too fast may skip waypoints
* Fixed the electrolyzer speed upgrades not increasing energy consumption as advertised
* Fixed giblets rendering in fullbright even in the dark
* All NTM keybinds will reset when opening a GUI, meanig that jetpacks and guns should no longer get stuck operating when opening an inventory
* Fixed 9mm soft points being called ".9mm"
* Fixed missing localization for the hard plastic autogen material
* Fixed the fat mine's crafting recipe still using the deprecated ammo item
* Removed legacy ammo items from all remaining item pools
* Fixed the rubber grip not having a recipe
* Fixed the coilgun and bolter not being classified correctly

View File

@ -1044,8 +1044,8 @@ public class ModBlocks {
public static Block anvil_lead;
public static Block anvil_steel;
public static Block anvil_desh;
public static Block anvil_saturnite;
public static Block anvil_ferrouranium;
public static Block anvil_saturnite;
public static Block anvil_bismuth_bronze;
public static Block anvil_arsenic_bronze;
public static Block anvil_schrabidate;
@ -2215,8 +2215,8 @@ public class ModBlocks {
anvil_lead = new NTMAnvil(Material.iron, NTMAnvil.TIER_IRON).setBlockName("anvil_lead").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_lead");
anvil_steel = new NTMAnvil(Material.iron, NTMAnvil.TIER_STEEL).setBlockName("anvil_steel").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_steel");
anvil_desh = new NTMAnvil(Material.iron, NTMAnvil.TIER_OIL).setBlockName("anvil_desh").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_desh");
anvil_saturnite = new NTMAnvil(Material.iron, NTMAnvil.TIER_OIL).setBlockName("anvil_saturnite").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_saturnite");
anvil_ferrouranium = new NTMAnvil(Material.iron, NTMAnvil.TIER_NUCLEAR).setBlockName("anvil_ferrouranium").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_ferrouranium");
anvil_saturnite = new NTMAnvil(Material.iron, NTMAnvil.TIER_RBMK).setBlockName("anvil_saturnite").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_saturnite");
anvil_bismuth_bronze = new NTMAnvil(Material.iron, NTMAnvil.TIER_RBMK).setBlockName("anvil_bismuth_bronze").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_bismuth_bronze");
anvil_arsenic_bronze = new NTMAnvil(Material.iron, NTMAnvil.TIER_RBMK).setBlockName("anvil_arsenic_bronze").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_arsenic_bronze");
anvil_schrabidate = new NTMAnvil(Material.iron, NTMAnvil.TIER_FUSION).setBlockName("anvil_schrabidate").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_schrabidate");
@ -2950,8 +2950,8 @@ public class ModBlocks {
register(anvil_lead);
register(anvil_steel);
register(anvil_desh);
register(anvil_saturnite);
register(anvil_ferrouranium);
register(anvil_saturnite);
register(anvil_bismuth_bronze);
register(anvil_arsenic_bronze);
register(anvil_schrabidate);

View File

@ -3,8 +3,8 @@ package com.hbm.blocks.generic;
import java.util.ArrayList;
import java.util.Random;
import com.hbm.items.ItemAmmoEnums.*;
import com.hbm.items.ModItems;
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
import com.hbm.lib.RefStrings;
import cpw.mods.fml.relauncher.Side;
@ -69,27 +69,22 @@ public class BlockAmmoCrate extends Block {
ret.add(new ItemStack(ModItems.cap_nuka, 12 + rand.nextInt(21)));
ret.add(new ItemStack(ModItems.syringe_metal_stimpak, 1 + rand.nextInt(3)));
if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 16 + rand.nextInt(17), EnumAmmo.P9_SP.ordinal()));
if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 16 + rand.nextInt(17), EnumAmmo.P9_FMJ.ordinal()));
if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 16 + rand.nextInt(17), EnumAmmo.M357_SP.ordinal()));
if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 16 + rand.nextInt(17), EnumAmmo.M357_FMJ.ordinal()));
if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 16 + rand.nextInt(17), EnumAmmo.M44_SP.ordinal()));
if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 16 + rand.nextInt(17), EnumAmmo.M44_FMJ.ordinal()));
if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 16 + rand.nextInt(17), EnumAmmo.R556_SP.ordinal()));
if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 16 + rand.nextInt(17), EnumAmmo.R556_FMJ.ordinal()));
if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 16 + rand.nextInt(17), EnumAmmo.R762_SP.ordinal()));
if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 16 + rand.nextInt(17), EnumAmmo.R762_FMJ.ordinal()));
if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 16 + rand.nextInt(17), EnumAmmo.G12.ordinal()));
if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 16 + rand.nextInt(17), EnumAmmo.G12_SLUG.ordinal()));
if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 2 + rand.nextInt(3), EnumAmmo.G40_HE.ordinal()));
if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 2 + rand.nextInt(3), EnumAmmo.ROCKET_HE.ordinal()));
if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_22lr, 16 + rand.nextInt(17)));
if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_9mm, 6 + rand.nextInt(13)));
if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_12gauge, 6 + rand.nextInt(4)));
if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_20gauge, 3 + rand.nextInt(4)));
if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_357, 10 + rand.nextInt(11)));
if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_357, 12 + rand.nextInt(15), Ammo357Magnum.IRON.ordinal()));
if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_50bmg, 2 + rand.nextInt(7)));
if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_rocket, 1));
if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_grenade, 1 + rand.nextInt(2)));
if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_12gauge, 3, Ammo12Gauge.INCENDIARY.ordinal()));
if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_20gauge, 3, Ammo20Gauge.INCENDIARY.ordinal()));
if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_20gauge, 3, Ammo20Gauge.CAUSTIC.ordinal()));
if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_20gauge, 3, Ammo20Gauge.FLECHETTE.ordinal()));
if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_9mm, 7, Ammo9mm.AP.ordinal()));
if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_rocket, 1, AmmoRocket.INCENDIARY.ordinal()));
if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_rocket, 1, AmmoRocket.SLEEK.ordinal()));
if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_grenade, 1, AmmoGrenade.HE.ordinal()));
if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_grenade, 1, AmmoGrenade.INCENDIARY.ordinal()));
if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_grenade, 1, AmmoGrenade.SLEEK.ordinal()));
if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.syringe_metal_super, 2));
return ret;

View File

@ -5,7 +5,7 @@ import java.util.List;
import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.items.ItemAmmoEnums.Ammo44Magnum;
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret;
import com.hbm.items.ModItems;
import net.minecraft.block.BlockFalling;
@ -130,12 +130,12 @@ public class BlockCrate extends BlockFalling {
// Red Crate
BlockCrate.addToListWithWeight(redList, ModItems.mysteryshovel, 1);
BlockCrate.addToListWithWeight(redList, ModItems.gun_revolver_pip, 1);
BlockCrate.addToListWithWeight(redList, ModItems.gun_revolver_blackjack, 1);
BlockCrate.addToListWithWeight(redList, ModItems.gun_revolver_silver, 1);
BlockCrate.addToListWithWeight(redList, ModItems.ammo_44.stackFromEnum(Ammo44Magnum.PIP), 1);
BlockCrate.addToListWithWeight(redList, ModItems.ammo_44.stackFromEnum(Ammo44Magnum.BJ), 1);
BlockCrate.addToListWithWeight(redList, ModItems.ammo_44.stackFromEnum(Ammo44Magnum.SILVER), 1);
BlockCrate.addToListWithWeight(redList, ModItems.gun_heavy_revolver_lilmac, 1);
BlockCrate.addToListWithWeight(redList, ModItems.gun_autoshotgun_sexy, 1);
BlockCrate.addToListWithWeight(redList, ModItems.gun_maresleg_broken, 1);
BlockCrate.addToListWithWeight(redList, new ItemStack(ModItems.ammo_secret, 1, EnumAmmoSecret.M44_EQUESTRIAN.ordinal()), 1);
BlockCrate.addToListWithWeight(redList, new ItemStack(ModItems.ammo_secret, 1, EnumAmmoSecret.G12_EQUESTRIAN.ordinal()), 1);
BlockCrate.addToListWithWeight(redList, new ItemStack(ModItems.ammo_secret, 1, EnumAmmoSecret.BMG50_EQUESTRIAN.ordinal()), 1);
BlockCrate.addToListWithWeight(redList, ModItems.battery_spark, 1);
BlockCrate.addToListWithWeight(redList, ModItems.bottle_sparkle, 1);
BlockCrate.addToListWithWeight(redList, ModItems.bottle_rad, 1);

View File

@ -40,6 +40,7 @@ public class WeaponRecipes {
CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_grip, 1, Mats.MAT_HARDPLASTIC.id), new Object[] { "W ", " W", " W", 'W', PC.ingot() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_stock, 1, Mats.MAT_PVC.id), new Object[] { "WWW", " W", 'W', PVC.ingot() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_grip, 1, Mats.MAT_PVC.id), new Object[] { "W ", " W", " W", 'W', PVC.ingot() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_grip, 1, Mats.MAT_RUBBER.id), new Object[] { "W ", " W", " W", 'W', RUBBER.ingot() });
CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.casing, EnumCasingType.SHOTSHELL, 2), new Object[] { "P", "C", 'P', GUNMETAL.plate(), 'C', DictFrame.fromOne(ModItems.casing, EnumCasingType.LARGE) });
CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.casing, EnumCasingType.BUCKSHOT, 2), new Object[] { "P", "C", 'P', ANY_PLASTIC.ingot(), 'C', DictFrame.fromOne(ModItems.casing, EnumCasingType.LARGE) });
@ -239,7 +240,7 @@ public class WeaponRecipes {
CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_ap, 4), new Object[] { "I", "C", "S", 'I', ModItems.plate_polymer, 'C', ANY_SMOKELESS.dust(), 'S', STEEL.ingot() });
CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_shrap, 1), new Object[] { "L", "M", 'M', ModBlocks.mine_ap, 'L', ModItems.pellet_buckshot });
CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_he, 1), new Object[] { " C ", "PTP", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'P', STEEL.plate(), 'T', ANY_HIGHEXPLOSIVE.ingot() });
CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_fat, 1), new Object[] { "CDN", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG), 'D', ModItems.ducttape, 'N', ModItems.ammo_nuke });
CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_fat, 1), new Object[] { "CDN", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG), 'D', ModItems.ducttape, 'N', DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_DEMO) });
//Nuke parts
CraftingManager.addRecipeAuto(new ItemStack(ModItems.n2_charge, 1), new Object[] { " D ", "ERE", " D ", 'D', ModItems.ducttape, 'E', ModBlocks.det_charge, 'R', REDSTONE.block() });

View File

@ -7,12 +7,12 @@ import com.hbm.blocks.ModBlocks;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.gui.GUIScreenBobmazon.Offer;
import com.hbm.inventory.gui.GUIScreenBobmazon.Requirement;
import com.hbm.items.ItemAmmoEnums.*;
import com.hbm.items.ModItems;
import com.hbm.items.food.ItemConserve.EnumFoodType;
import com.hbm.items.machine.ItemBattery;
import com.hbm.items.special.ItemKitCustom;
import com.hbm.items.special.ItemKitNBT;
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
@ -110,32 +110,6 @@ public class BobmazonOfferFactory {
weapons.add(new Offer(new ItemStack(ModItems.detonator), Requirement.ASSEMBLY, 15 * inflation));
weapons.add(new Offer(new ItemStack(ModItems.detonator_laser), Requirement.CHEMICS, 60 * inflation));
weapons.add(new Offer(new ItemStack(ModItems.defuser), Requirement.OIL, 5 * inflation));
weapons.add(new Offer(new ItemStack(ModItems.gun_revolver), Requirement.ASSEMBLY, 15 * inflation));
weapons.add(new Offer(new ItemStack(ModItems.gun_revolver_nopip), Requirement.ASSEMBLY, 20 * inflation));
weapons.add(new Offer(new ItemStack(ModItems.gun_minigun), Requirement.OIL, 100 * inflation));
weapons.add(new Offer(new ItemStack(ModItems.gun_panzerschreck), Requirement.ASSEMBLY, 95 * inflation));
weapons.add(new Offer(new ItemStack(ModItems.gun_hk69), Requirement.ASSEMBLY, 60 * inflation));
weapons.add(new Offer(new ItemStack(ModItems.gun_uzi), Requirement.OIL, 80 * inflation));
weapons.add(new Offer(new ItemStack(ModItems.gun_lever_action), Requirement.ASSEMBLY, 60 * inflation));
weapons.add(new Offer(new ItemStack(ModItems.gun_bolt_action), Requirement.ASSEMBLY, 35 * inflation));
weapons.add(new Offer(ModItems.ammo_357.stackFromEnum(6, Ammo357Magnum.LEAD), Requirement.OIL, 12 * inflation));
weapons.add(new Offer(ModItems.ammo_357.stackFromEnum(6, Ammo357Magnum.DESH), Requirement.OIL, 36 * inflation));
weapons.add(new Offer(new ItemStack(ModItems.ammo_44, 6), Requirement.OIL, 12 * inflation));
weapons.add(new Offer(ModItems.ammo_44.stackFromEnum(6, Ammo44Magnum.AP), Requirement.OIL, 18 * inflation));
weapons.add(new Offer(new ItemStack(ModItems.ammo_5mm, 50), Requirement.OIL, 50 * inflation));
weapons.add(new Offer(ModItems.ammo_5mm.stackFromEnum(50, Ammo5mm.DU), Requirement.OIL, 75 * inflation));
weapons.add(new Offer(new ItemStack(ModItems.ammo_rocket), Requirement.OIL, 5 * inflation));
weapons.add(new Offer(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.INCENDIARY), Requirement.OIL, 8 * inflation));
weapons.add(new Offer(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.SLEEK), Requirement.OIL, 12 * inflation));
weapons.add(new Offer(new ItemStack(ModItems.ammo_grenade), Requirement.OIL, 4 * inflation));
weapons.add(new Offer(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.INCENDIARY), Requirement.OIL, 6 * inflation));
weapons.add(new Offer(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.SLEEK), Requirement.OIL, 10 * inflation));
weapons.add(new Offer(new ItemStack(ModItems.ammo_22lr, 32), Requirement.OIL, 24 * inflation));
weapons.add(new Offer(ModItems.ammo_22lr.stackFromEnum(32, Ammo22LR.AP), Requirement.OIL, 32 * inflation));
weapons.add(new Offer(new ItemStack(ModItems.ammo_20gauge, 6), Requirement.OIL, 18 * inflation));
weapons.add(new Offer(ModItems.ammo_20gauge.stackFromEnum(6, Ammo20Gauge.SLUG), Requirement.OIL, 20 * inflation));
weapons.add(new Offer(ModItems.ammo_20gauge.stackFromEnum(6, Ammo20Gauge.FLECHETTE), Requirement.OIL, 22 * inflation));
weapons.add(new Offer(new ItemStack(ModItems.gun_hp_ammo, 1), Requirement.ASSEMBLY, 1000 * inflation));
tools.add(new Offer(new ItemStack(ModBlocks.crate_can, 1), Requirement.STEEL, 20 * inflation));
tools.add(new Offer(new ItemStack(ModBlocks.machine_keyforge), Requirement.STEEL, 10 * inflation));
@ -238,23 +212,18 @@ public class BobmazonOfferFactory {
), Requirement.HIDDEN, 64));
special.add(new Offer(ItemKitCustom.create("Maid's Cleaning Utensils", "For the hard to reach spots", 0x00ff00, 0x008000,
new ItemStack(ModItems.gun_calamity),
ModItems.ammo_50bmg.stackFromEnum(64, Ammo50BMG.CHLOROPHYTE),
ModItems.ammo_50bmg.stackFromEnum(64, Ammo50BMG.CHLOROPHYTE),
ModItems.ammo_50bmg.stackFromEnum(64, Ammo50BMG.CHLOROPHYTE),
ModItems.ammo_50ae.stackFromEnum(64, Ammo50AE.STAR),
ModItems.ammo_50ae.stackFromEnum(64, Ammo50AE.STAR),
new ItemStack(ModItems.gun_supershotgun),
ModItems.ammo_12gauge.stackFromEnum(64, Ammo12Gauge.DU),
ModItems.ammo_12gauge.stackFromEnum(64, Ammo12Gauge.DU),
ModItems.ammo_12gauge.stackFromEnum(64, Ammo12Gauge.SHRAPNEL),
ModItems.ammo_12gauge.stackFromEnum(64, Ammo12Gauge.SHRAPNEL),
ModItems.ammo_12gauge.stackFromEnum(4, Ammo12Gauge.MARAUDER),
new ItemStack(ModItems.ammo_4gauge, 64),
ModItems.ammo_4gauge.stackFromEnum(64, Ammo4Gauge.CLAW),
ModItems.ammo_4gauge.stackFromEnum(64, Ammo4Gauge.KAMPF),
ModItems.ammo_4gauge.stackFromEnum(64, Ammo4Gauge.FLECHETTE),
ModItems.ammo_4gauge.stackFromEnum(64, Ammo4Gauge.VOID)
new ItemStack(ModItems.gun_m2),
new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.BMG50_DU.ordinal()),
new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.BMG50_DU.ordinal()),
new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.BMG50_DU.ordinal()),
new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.BMG50_DU.ordinal()),
new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.BMG50_DU.ordinal()),
new ItemStack(ModItems.gun_autoshotgun),
new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.G12_MAGNUM.ordinal()),
new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.G12_MAGNUM.ordinal()),
new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.G12_MAGNUM.ordinal()),
new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.G12_EXPLOSIVE.ordinal()),
new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.G12_EXPLOSIVE.ordinal())
), Requirement.HIDDEN, 64));
special.add(new Offer(ItemKitNBT.create(
@ -269,14 +238,10 @@ public class BobmazonOfferFactory {
new ItemStack(ModItems.rpa_plate),
new ItemStack(ModItems.rpa_legs),
new ItemStack(ModItems.rpa_boots),
new ItemStack(ModItems.gun_lacunae),
ModItems.ammo_5mm.stackFromEnum(64, Ammo5mm.STAR),
ModItems.ammo_5mm.stackFromEnum(64, Ammo5mm.STAR),
ModItems.ammo_5mm.stackFromEnum(64, Ammo5mm.STAR),
ModItems.ammo_5mm.stackFromEnum(64, Ammo5mm.STAR),
ModItems.ammo_5mm.stackFromEnum(64, Ammo5mm.STAR),
ModItems.ammo_5mm.stackFromEnum(64, Ammo5mm.STAR),
ModItems.ammo_5mm.stackFromEnum(64, Ammo5mm.STAR)
new ItemStack(ModItems.gun_minigun_lacunae),
new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.CAPACITOR_OVERCHARGE.ordinal()),
new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.CAPACITOR_OVERCHARGE.ordinal()),
new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.CAPACITOR_OVERCHARGE.ordinal())
).setStackDisplayName("Frenchman's Reward"), Requirement.HIDDEN, 32));
}

View File

@ -527,13 +527,13 @@ public class AnvilRecipes {
new AStack[] {new OreDictStack(TI.plate(), 2), new OreDictStack(STEEL.ingot(), 1), new OreDictStack(STEEL.bolt(), 4)},
new AnvilOutput(new ItemStack(ModItems.plate_armor_titanium))).setTier(2));
constructionRecipes.add(new AnvilConstructionRecipe(
new AStack[] {new OreDictStack(IRON.plate(), 4), new OreDictStack(BIGMT.plate(), 2), new ComparableStack(ModItems.plate_armor_titanium, 1)},
new AnvilOutput(new ItemStack(ModItems.plate_armor_ajr))).setTier(3));
new AStack[] {new OreDictStack(IRON.plate(), 6), new OreDictStack(NB.ingot(), 1), new ComparableStack(ModItems.plate_armor_titanium, 1)},
new AnvilOutput(new ItemStack(ModItems.plate_armor_ajr, 2))).setTier(3));
constructionRecipes.add(new AnvilConstructionRecipe(
new AStack[] {new OreDictStack(ALLOY.plate(), 4), new ComparableStack(ModItems.plate_armor_titanium, 1), new OreDictStack(W.wireFine(), 6)},
new AStack[] {new OreDictStack(ALLOY.plate(), 4), new ComparableStack(ModItems.plate_armor_titanium, 1), new OreDictStack(W.wireFine(), 8)},
new AnvilOutput(new ItemStack(ModItems.plate_armor_hev))).setTier(4));
constructionRecipes.add(new AnvilConstructionRecipe(
new AStack[] {new OreDictStack(OreDictManager.getReflector(), 4), new OreDictStack(STAR.ingot(), 1), new OreDictStack(MAGTUNG.wireFine(), 6)},
new AStack[] {new OreDictStack(OreDictManager.getReflector(), 4), new OreDictStack(STAR.ingot(), 1), new OreDictStack(MAGTUNG.wireFine(), 8)},
new AnvilOutput(new ItemStack(ModItems.plate_armor_lunar))).setTier(4));
constructionRecipes.add(new AnvilConstructionRecipe(
new AStack[] {new ComparableStack(ModItems.ingot_meteorite_forged, 4), new OreDictStack(DESH.ingot(), 1), new ComparableStack(ModItems.billet_yharonite, 1)},

View File

@ -44,10 +44,10 @@ public class ItemPoolsLegacy {
weighted(ModItems.circuit, EnumCircuitType.VACUUM_TUBE.ordinal(), 1, 1, 5),
weighted(ModItems.gun_light_revolver, 0, 1, 1, 3),
weighted(ModItems.ammo_standard, EnumAmmo.M357_SP.ordinal(), 2, 6, 4),
weighted(ModItems.ammo_standard, EnumAmmo.G12_BP.ordinal(), 3, 6, 3),
weighted(ModItems.ammo_standard, EnumAmmo.G26_FLARE_SUPPLY.ordinal(), 1, 1, 1),
weighted(ModItems.gun_kit_1, 0, 1, 3, 4),
weighted(ModItems.gun_lever_action, 0, 1, 1, 1),
weighted(ModItems.ammo_20gauge, 0, 2, 6, 3),
weighted(ModItems.casing_9, 0, 4, 10, 3),
weighted(ModItems.casing_50, 0, 4, 10, 3),
weighted(ModItems.cordite, 0, 4, 6, 5),

View File

@ -4,8 +4,8 @@ import static com.hbm.lib.HbmChestContents.weighted;
import com.hbm.blocks.ModBlocks;
import com.hbm.items.ModItems;
import com.hbm.items.ItemAmmoEnums.AmmoFatman;
import com.hbm.items.machine.ItemCircuit.EnumCircuitType;
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
import net.minecraft.init.Items;
import net.minecraft.util.WeightedRandomChestContent;
@ -47,8 +47,8 @@ public class ItemPoolsSingle {
weighted(ModItems.gun_calamity, 0, 1, 1, 1),
weighted(ModItems.bottle_quantum, 0, 1, 3, 1),
weighted(ModItems.ingot_advanced_alloy, 0, 4, 12, 1),
weighted(ModItems.ammo_50bmg, 0, 24, 48, 1),
weighted(ModItems.ammo_45, 0, 48, 64, 2),
weighted(ModItems.ammo_standard, EnumAmmo.BMG50_FMJ.ordinal(), 24, 48, 1),
weighted(ModItems.ammo_standard, EnumAmmo.P9_JHP.ordinal(), 48, 64, 2),
weighted(ModItems.circuit, EnumCircuitType.CHIP.ordinal(), 3, 6, 1),
weighted(ModItems.gas_mask_m65, 0, 1, 1, 1),
weighted(ModItems.grenade_if_he, 0, 1, 1, 1),
@ -63,7 +63,7 @@ public class ItemPoolsSingle {
weighted(ModItems.battery_advanced_cell_4, 0, 1, 1, 1),
weighted(ModItems.powder_desh_mix, 0, 1, 5, 1),
weighted(Items.diamond, 0, 3, 6, 1),
weighted(ModItems.ammo_nuke, 0, 1, 1, 1),
weighted(ModItems.ammo_standard, EnumAmmo.NUKE_STANDARD.ordinal(), 1, 1, 1),
weighted(ModItems.ammo_container, 0, 1, 1, 1),
weighted(ModItems.grenade_nuclear, 0, 1, 1, 1),
weighted(ModItems.grenade_smart, 0, 1, 6, 1),
@ -83,7 +83,7 @@ public class ItemPoolsSingle {
weighted(ModItems.sat_chip, 0, 1, 1, 1),
weighted(Items.diamond, 0, 5, 9, 1),
weighted(ModItems.warhead_nuclear, 0, 1, 1, 1),
weighted(ModItems.ammo_nuke, 0, 1, 3, 1),
weighted(ModItems.ammo_standard, EnumAmmo.NUKE_STANDARD.ordinal(), 1, 3, 1),
weighted(ModItems.ammo_container, 0, 1, 4, 1),
weighted(ModItems.grenade_nuclear, 0, 1, 2, 1),
weighted(ModItems.grenade_mirv, 0, 1, 1, 1),
@ -98,7 +98,7 @@ public class ItemPoolsSingle {
new ItemPool(POOL_VAULT_UNBREAKABLE) {{
this.pool = new WeightedRandomChestContent[] {
weighted(ModItems.ammo_container, 0, 3, 6, 1),
weighted(ModItems.ammo_nuke, AmmoFatman.MIRV.ordinal(), 2, 3, 1),
weighted(ModItems.ammo_standard, EnumAmmo.NUKE_DEMO.ordinal(), 2, 3, 1),
weighted(ModItems.gun_mirv, 0, 1, 1, 1),
weighted(ModItems.gun_proto, 0, 1, 1, 1),
weighted(ModItems.gun_b92, 0, 1, 1, 1),

View File

@ -9,6 +9,7 @@ import com.hbm.entity.projectile.EntityBoxcar;
import com.hbm.explosion.ExplosionChaos;
import com.hbm.explosion.ExplosionLarge;
import com.hbm.items.ModItems;
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
import com.hbm.lib.ModDamageSource;
import com.hbm.main.MainRegistry;
@ -111,8 +112,8 @@ public class ItemGlitch extends Item implements IBatteryItem {
player.addChatMessage(new ChatComponentText("89% of magic tricks are not magic. Technically, they are sorcery."));
break;
case 18:
player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_lever_action));
player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_20gauge, 12));
player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_maresleg));
player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_standard, 12, EnumAmmo.G12.ordinal()));
player.addChatMessage(new ChatComponentText("Here ya go."));
break;
case 19:

View File

@ -19,6 +19,8 @@ import com.hbm.util.EntityDamageUtil;
import com.hbm.util.TrackerUtil;
import com.hbm.util.DamageResistanceHandler.DamageClass;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.Item;
@ -161,6 +163,13 @@ public class BulletConfig implements Cloneable {
public static BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> LAMBDA_STANDARD_RICOCHET = (bullet, mop) -> {
if(mop.typeOfHit == mop.typeOfHit.BLOCK) {
Block b = bullet.worldObj.getBlock(mop.blockX, mop.blockY, mop.blockZ);
if(b.getMaterial() == Material.glass) {
bullet.worldObj.func_147480_a(mop.blockX, mop.blockY, mop.blockZ, false);
bullet.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord);
return;
}
ForgeDirection dir = ForgeDirection.getOrientation(mop.sideHit);
Vec3 face = Vec3.createVectorHelper(dir.offsetX, dir.offsetY, dir.offsetZ);

View File

@ -37,7 +37,7 @@ public class XFactory75Bolt {
b75_exp = new BulletConfig().setItem(EnumAmmo.B75_EXP).setDamage(1.5F).setArmorPiercing(-0.25F)
.setCasing(casing75.clone().register("b75exp"));
ModItems.gun_bolter = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig()
ModItems.gun_bolter = new ItemGunBaseNT(WeaponQuality.SPECIAL, new GunConfig()
.dura(3_000).draw(20).inspect(31).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE)
.rec(new Receiver(0)
.dmg(15F).delay(2).auto(true).spread(0.005F).reload(40).jam(55).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F)

View File

@ -108,7 +108,7 @@ public class XFactoryAccelerator {
.anim(LAMBDA_TAU_ANIMS).orchestra(Orchestras.ORCHESTRA_TAU)
).setUnlocalizedName("gun_tau");
ModItems.gun_coilgun = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig()
ModItems.gun_coilgun = new ItemGunBaseNT(WeaponQuality.SPECIAL, new GunConfig()
.dura(400).draw(5).inspect(39).crosshair(Crosshair.L_CIRCUMFLEX)
.rec(new Receiver(0)
.dmg(35F).delay(5).reload(20).jam(33).sound("hbm:weapon.coilgunShoot", 1.0F, 1.0F)

View File

@ -28,7 +28,6 @@ import com.hbm.inventory.material.Mats;
import com.hbm.inventory.recipes.*;
import com.hbm.inventory.recipes.anvil.AnvilRecipes;
import com.hbm.inventory.recipes.loader.SerializableRecipe;
import com.hbm.items.ItemAmmoEnums.Ammo4Gauge;
import com.hbm.items.ItemEnums.EnumAchievementType;
import com.hbm.items.ModItems;
import com.hbm.items.tool.ItemFertilizer;
@ -182,7 +181,6 @@ public class MainRegistry {
public static Achievement achSomeWounds;
public static Achievement achSlimeball;
public static Achievement achSulfuric;
public static Achievement achWitchtaunter;
public static Achievement achGoFish;
public static Achievement achNo9;
public static Achievement achInferno;
@ -673,7 +671,6 @@ public class MainRegistry {
achStratum = new Achievement("achievement.stratum", "stratum", -4, -2, new ItemStack(ModBlocks.stone_gneiss), null).initIndependentStat().setSpecial().registerStat();
achOmega12 = new Achievement("achievement.omega12", "omega12", 17, -1, ModItems.particle_digamma, null).initIndependentStat().setSpecial().registerStat();
achWitchtaunter = new Achievement("achievement.witchtaunter", "witchtaunter", -8, 7, ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.VAMPIRE), null).initIndependentStat().setSpecial().registerStat();
achNo9 = new Achievement("achievement.no9", "no9", -8, 12, ModItems.no9, null).initIndependentStat().registerStat();
achSlimeball = new Achievement("achievement.slimeball", "slimeball", -10, 6, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.ACID), null).initIndependentStat().registerStat();
achSulfuric = new Achievement("achievement.sulfuric", "sulfuric", -10, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.BALLS), achSlimeball).initIndependentStat().setSpecial().registerStat();
@ -755,7 +752,6 @@ public class MainRegistry {
horizonsBonus,
achRadPoison,
achRadDeath,
achWitchtaunter,
achNo9,
achInferno,
achRedRoom,

View File

@ -4,7 +4,6 @@ import java.util.HashMap;
import com.hbm.blocks.ModBlocks;
import com.hbm.inventory.RecipesCommon.ComparableStack;
import com.hbm.items.ItemAmmoEnums;
import com.hbm.items.ModItems;
import com.hbm.main.MainRegistry;
@ -53,7 +52,6 @@ public class AchievementHandler {
craftingAchievements.put(new ComparableStack(ModBlocks.machine_difurnace_off), MainRegistry.achBlastFurnace);
craftingAchievements.put(new ComparableStack(ModBlocks.machine_assembler), MainRegistry.achAssembly);
craftingAchievements.put(new ComparableStack(ModItems.billet_pu_mix), MainRegistry.achChicagoPile);
craftingAchievements.put(new ComparableStack(ModItems.ammo_4gauge, 1, ItemAmmoEnums.Ammo4Gauge.VAMPIRE.ordinal()), MainRegistry.achWitchtaunter);
}
public static void fire(EntityPlayer player, ItemStack stack) {

View File

@ -887,6 +887,7 @@ hbmmat.plutonium240=Plutonium-240
hbmmat.plutonium241=Plutonium-241
hbmmat.plutoniumrg=Reaktorfähiges Plutonium
hbmmat.polonium210=Polonium-210
hbmmat.polycarbonate=Hartplastik
hbmmat.polymer=Polymer
hbmmat.radium226=Radium-226
hbmmat.rareearth=Seltenerden

View File

@ -1609,6 +1609,7 @@ hbmmat.plutonium240=Plutonium-240
hbmmat.plutonium241=Plutonium-241
hbmmat.plutoniumrg=Reactor-Grade Plutonium
hbmmat.polonium210=Polonium-210
hbmmat.polycarbonate=Hard Plastic
hbmmat.polymer=Polymer
hbmmat.radium226=Radium-226
hbmmat.rareearth=Rare Earth
@ -1948,7 +1949,7 @@ item.ammo_standard.p22_sp.name=.22 LR Round (Soft Point)
item.ammo_standard.p9_ap.name=9mm Round (Armor Piercing)
item.ammo_standard.p9_fmj.name=9mm Round (Full Metal Jacket)
item.ammo_standard.p9_jhp.name=9mm Round (Jacketed Hollow Point)
item.ammo_standard.p9_sp.name=.9mm Round (Soft Point)
item.ammo_standard.p9_sp.name=9mm Round (Soft Point)
item.ammo_standard.r556_ap.name=5.56mm Round (Armor Piercing)
item.ammo_standard.r556_fmj.name=5.56mm Round (Full Metal Jacket)
item.ammo_standard.r556_jhp.name=5.56mm Round (Jacketed Hollow Point)