This commit is contained in:
Bob 2024-12-27 01:01:51 +01:00
parent d7776b52d5
commit 89a3a1f9bc
16 changed files with 73 additions and 117 deletions

View File

@ -1,46 +1,15 @@
## Changed
* Any bullet that can ricochet (or at least runs the code for it) can now also break glass, as well as destroy red barrels
* Removed three old achievements which no longer work due to the gun changes
* 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
* Doubled the liberator's base damage to be on-par with the lever action shotgun in order to offset its poor performance due to the reload speed
* Decreased the explosive 12 gauge's damage from x5 to x2.5
* All non black powder shotgun shells now have some amount of damage threshold negation in order to not immediately become useless when used against early power armor
* Obviously shot will always fare worse against higher tier armor, in those cases either use flechettes, slugs, any of the high tier rounds or a different caliber entirely
* Bombers and cargo planes now use interpolation, making their movement smoother and fixing potential desyncs due to TPS
* Trenchmaster armor no longer displays benefits that no longer exist
* Legendaries are no longer found in red rooms, rather they have a whole new system of being discovered and crafted
* "Recipes" are still subject to change, but the base system is final
* There will some day be a completely new dungeon for those, but for now I used what I had
* Mayhaps a new legendary has appeared?
* Glyphids now make use of the same resistance system as armors, their armor is no longer completely ignored by the new guns
* Different damage types have different resistances
* Damage resistance remains the same, while damage threshold is determined by the glyphid's armor - breaking the armor off will decrease the damage threshold
* Balancing might still be off, however glyhids shouldn't be too tanky
* I still haven't bothered to fix the bolter. It's like the son I don't love
* Changed some of the sounds of the guns that still used the default black powder noise
* The flamethrower turret now uses the new flamethrower projectiles
* The now unused old gun items have been completely obliterated
* Headhot mulitpliers now apply for most conventional projectiles, by default the bonus for headshots is +25% damage
* JHP adds +50%
* Removed the old casing items
* Reduced the flicker on the autoshotgun's holo sights
## Fixed
* Fixed 9mm soft points being called ".9mm"
* Fixed missing localization for the hard plastic and PVC autogen materials
* Fixed the fat mine's crafting recipe still using the deprecated ammo item
* Removed legacy ammo items and guns from all remaining item pools
* Fixed the rubber grip not having a recipe
* Fixed the coilgun and bolter not being classified correctly
* Fixed new death messages not working
* Fixed none of the armors having fall resistance
* Fixed survey scanners not picking up nether depth rock
* Fixed FMJ, AP and DU rounds not having damage threshold negation, making them worse against most armored targets compared to JHP
* Fixed autgen items made from unsmeltable materials being smeltable in the crucible
* Fixed 240mm shells not being visible in creative
* Fixed JHP's negative armor piercing value not being counted right, breaking the "armor is worth more" system
* Fixed the second UZI dealing more damage than it should
* Potentially fixed an issue where artillery rockets would sometimes get stuck mid-air
* Fixed the artillery rocket turret's grace range not being 250 as advertised
* Fixed black powder shotshells using smokeless powder instead of smokeful powder
* Fixed the ballistic gauntlet not working with the new system
* Since base damage is now bound to weapons, the ballistic gauntlet now has a base damage of 15
* Fixed the bullet casing molds being unobtainable
* Fixed instant crash caused by smelting certain things in the crucible
* Fixed the SPAS' alt fire having a delay of only 10 ticks instead of 20
* Fixed 240mm nuclear shells not triggering properly if they hit their target within 3 ticks of being spawned
* Fixed some items that are supposed to be hidden in NEI being visible
* Fixed dual lever action shotguns having inconsistent damage
* Fixed entities (especially players) not being affected at all by their own explosions (rockets, 40mm grenades, etc)
* To keep rocket jumping at least somewhat viable, self-damage from explosions is reduced by 50%, the knockback remains the same
* Fixed missing localization for the casing molds
* Fixed the broken CIWS turret crashing instantly

View File

@ -164,12 +164,6 @@ public class SmeltingRecipes {
GameRegistry.addSmelting(ModItems.crystal_cinnebar, new ItemStack(ModItems.cinnebar, 4), 2.0F);
GameRegistry.addSmelting(ModItems.crystal_osmiridium, new ItemStack(ModItems.ingot_osmiridium, 1), 2.0F);
GameRegistry.addSmelting(ModItems.casing_357, new ItemStack(ModItems.ingot_copper), 0.1F);
GameRegistry.addSmelting(ModItems.casing_44, new ItemStack(ModItems.ingot_copper), 0.1F);
GameRegistry.addSmelting(ModItems.casing_9, new ItemStack(ModItems.ingot_copper), 0.1F);
GameRegistry.addSmelting(ModItems.casing_50, new ItemStack(ModItems.ingot_copper), 0.1F);
GameRegistry.addSmelting(ModItems.casing_buckshot, new ItemStack(ModItems.ingot_copper), 0.1F);
GameRegistry.addSmelting(ModItems.ingot_chainsteel, ItemHot.heatUp(new ItemStack(ModItems.ingot_chainsteel)), 0.0F);
GameRegistry.addSmelting(ModItems.ingot_meteorite, ItemHot.heatUp(new ItemStack(ModItems.ingot_meteorite)), 0.0F);
GameRegistry.addSmelting(ModItems.ingot_meteorite_forged, ItemHot.heatUp(new ItemStack(ModItems.ingot_meteorite_forged)), 0.0F);

View File

@ -35,22 +35,19 @@ public class EntityBombletZeta extends EntityThrowable {
@Override
public void onUpdate() {
this.lastTickPosX = this.prevPosX = posX;
this.lastTickPosY = this.prevPosY = posY;
this.lastTickPosZ = this.prevPosZ = posZ;
this.setPosition(posX + this.motionX, posY + this.motionY, posZ + this.motionZ);
this.motionX *= 0.99;
this.motionZ *= 0.99;
this.motionY -= 0.05D;
this.rotation();
if(this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.air)
{
if(!this.worldObj.isRemote)
{
this.rotation();
if(this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.air) {
if(!this.worldObj.isRemote) {
if(type == 0) {
ExplosionVNT vnt = new ExplosionVNT(worldObj, this.posX + 0.5F, this.posY + 1.5F, this.posZ + 0.5F, 4F);
vnt.setBlockAllocator(new BlockAllocatorStandard());
@ -59,8 +56,8 @@ public class EntityBombletZeta extends EntityThrowable {
vnt.setPlayerProcessor(new PlayerProcessorStandard());
vnt.setSFX(new ExplosionEffectWeapon(15, 3.5F, 1.25F));
vnt.explode();
}
if(type == 1) {
}
if(type == 1) {
ExplosionVNT vnt = new ExplosionVNT(worldObj, this.posX + 0.5F, this.posY + 1.5F, this.posZ + 0.5F, 4F);
vnt.setBlockAllocator(new BlockAllocatorStandard());
@ -69,24 +66,25 @@ public class EntityBombletZeta extends EntityThrowable {
vnt.setPlayerProcessor(new PlayerProcessorStandard());
vnt.setSFX(new ExplosionEffectWeapon(15, 5F, 1.75F));
vnt.explode();
}
if(type == 2) {
worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "random.fizz", 5.0F, 2.6F + (rand.nextFloat() - rand.nextFloat()) * 0.8F);
ExplosionChaos.spawnChlorine(worldObj, this.posX + 0.5F - motionX, this.posY + 0.5F - motionY, this.posZ + 0.5F - motionZ, 75, 2, 0);
}
if(type == 4) {
worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, (int) (BombConfig.fatmanRadius * 1.5), posX, posY, posZ));
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "muke");
if(rand.nextInt(100) == 0) data.setBoolean("balefire", true);
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY + 0.5, posZ), new TargetPoint(dimension, posX, posY, posZ, 250));
worldObj.playSoundEffect(posX, posY, posZ, "hbm:weapon.mukeExplosion", 15.0F, 1.0F);
}
}
this.setDead();
}
}
if(type == 2) {
worldObj.playSoundEffect((double) (posX + 0.5F), (double) (posY + 0.5F), (double) (posZ + 0.5F), "random.fizz", 5.0F, 2.6F + (rand.nextFloat() - rand.nextFloat()) * 0.8F);
ExplosionChaos.spawnChlorine(worldObj, this.posX + 0.5F - motionX, this.posY + 0.5F - motionY, this.posZ + 0.5F - motionZ, 75, 2, 0);
}
if(type == 4) {
worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, (int) (BombConfig.fatmanRadius * 1.5), posX, posY, posZ));
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "muke");
if(rand.nextInt(100) == 0)
data.setBoolean("balefire", true);
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY + 0.5, posZ), new TargetPoint(dimension, posX, posY, posZ, 250));
worldObj.playSoundEffect(posX, posY, posZ, "hbm:weapon.mukeExplosion", 15.0F, 1.0F);
}
this.setDead();
}
}
}
public void rotation() {

View File

@ -28,10 +28,16 @@ public class EntityProcessorCross implements IEntityProcessor {
protected double nodeDist = 2D;
protected IEntityRangeMutator range;
protected ICustomDamageHandler damage;
protected boolean allowSelfDamage = false;
public EntityProcessorCross(double nodeDist) {
this.nodeDist = nodeDist;
}
public EntityProcessorCross setAllowSelfDamage() {
this.allowSelfDamage = true;
return this;
}
@Override
public HashMap<EntityPlayer, Vec3> process(ExplosionVNT explosion, World world, double x, double y, double z, float size) {
@ -51,7 +57,7 @@ public class EntityProcessorCross implements IEntityProcessor {
double minZ = z - (double) size - 1.0D;
double maxZ = z + (double) size + 1.0D;
List list = world.getEntitiesWithinAABBExcludingEntity(explosion.exploder, AxisAlignedBB.getBoundingBox(minX, minY, minZ, maxX, maxY, maxZ));
List list = world.getEntitiesWithinAABBExcludingEntity(allowSelfDamage ? null : explosion.exploder, AxisAlignedBB.getBoundingBox(minX, minY, minZ, maxX, maxY, maxZ));
ForgeEventFactory.onExplosionDetonate(world, explosion.compat, list, size);

View File

@ -20,6 +20,7 @@ public class EntityProcessorCrossSmooth extends EntityProcessorCross {
public EntityProcessorCrossSmooth(double nodeDist, float fixedDamage) {
super(nodeDist);
this.fixedDamage = fixedDamage;
this.setAllowSelfDamage();
}
public EntityProcessorCrossSmooth setupPiercing(float pierceDT, float pierceDR) {
@ -36,6 +37,7 @@ public class EntityProcessorCrossSmooth extends EntityProcessorCross {
@Override
public void attackEntity(Entity entity, ExplosionVNT source, float amount) {
if(!entity.isEntityAlive()) return;
if(source.exploder == entity) amount *= 0.5F;
DamageSource dmg = BulletConfig.getDamage(null, source.exploder instanceof EntityLivingBase ? (EntityLivingBase) source.exploder : null, clazz);
if(!(entity instanceof EntityLivingBase)) {
entity.attackEntityFrom(dmg, amount);

View File

@ -1,8 +1,5 @@
package com.hbm.handler.guncfg;
import com.hbm.handler.BulletConfiguration;
import com.hbm.inventory.RecipesCommon.ComparableStack;
import com.hbm.items.ModItems;
import com.hbm.particle.SpentCasing;
import com.hbm.particle.SpentCasing.CasingType;
@ -11,15 +8,14 @@ public class GunDGKFactory {
public static final SpentCasing CASINGDGK;
static {
CASINGDGK = new SpentCasing(CasingType.STRAIGHT).setScale(1.5F).setBounceMotion(0.05F, 0.02F).setColor(SpentCasing.COLOR_CASE_BRASS).setupSmoke(0.02F, 0.5D, 60, 20).setMaxAge(60); //3 instead of 12 seconds
CASINGDGK = new SpentCasing(CasingType.STRAIGHT).setScale(1.5F).setBounceMotion(0.05F, 0.02F).setColor(SpentCasing.COLOR_CASE_BRASS).register("DGK").setupSmoke(0.02F, 0.5D, 60, 20).setMaxAge(60); //3 instead of 12 seconds
}
public static BulletConfiguration getDGKConfig() {
/*public static BulletConfiguration getDGKConfig() {
BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig();
bullet.ammo = new ComparableStack(ModItems.ammo_dgk);
bullet.spentCasing = CASINGDGK.register("DGK");
return bullet;
}
}*/
}

View File

@ -207,9 +207,8 @@ public class Mats {
if(name.startsWith(prefix)) {
String materialName = name.substring(prefix.length());
NTMMaterial material = matByName.get(materialName);
NTMMaterial convert = material.smeltsInto; //hack
if(material != null && (convert.smeltable == SmeltingBehavior.SMELTABLE || convert.smeltable == SmeltingBehavior.ADDITIVE)) {
if(material != null && (material.smeltsInto.smeltable == SmeltingBehavior.SMELTABLE || material.smeltsInto.smeltable == SmeltingBehavior.ADDITIVE)) {
list.add(new MaterialStack(material, prefixEntry.getValue().q(1)));
break outer;
}

View File

@ -114,11 +114,6 @@ public class AnvilRecipes {
smithingRecipes.add(new AnvilSmithingMold(11, new OreDictStack(IRON.plate(), 9), new OreDictStack("plate", 9)));
smithingRecipes.add(new AnvilSmithingMold(12, new OreDictStack(IRON.block()), new OreDictStack("block")));
smithingRecipes.add(new AnvilSmithingMold(13, new ComparableStack(ModItems.pipes_steel), new ItemStack[] {new ItemStack(ModItems.pipes_steel)}));
smithingRecipes.add(new AnvilSmithingMold(14, new ComparableStack(ModItems.casing_357), new ItemStack[] {new ItemStack(ModItems.casing_357)}));
smithingRecipes.add(new AnvilSmithingMold(15, new ComparableStack(ModItems.casing_44), new ItemStack[] {new ItemStack(ModItems.casing_44)}));
smithingRecipes.add(new AnvilSmithingMold(16, new ComparableStack(ModItems.casing_9), new ItemStack[] {new ItemStack(ModItems.casing_9)}));
smithingRecipes.add(new AnvilSmithingMold(17, new ComparableStack(ModItems.casing_50), new ItemStack[] {new ItemStack(ModItems.casing_50)}));
smithingRecipes.add(new AnvilSmithingMold(18, new ComparableStack(ModItems.casing_buckshot), new ItemStack[] {new ItemStack(ModItems.casing_buckshot)}));
smithingRecipes.add(new AnvilSmithingMold(20, new OreDictStack(ALLOY.wireDense(), 1), new OreDictStack("wireDense", 1)));
smithingRecipes.add(new AnvilSmithingMold(21, new OreDictStack(ALLOY.wireDense(), 9), new OreDictStack("wireDense", 9)));
@ -579,6 +574,9 @@ public class AnvilRecipes {
constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.stamp_iron_flat), new OreDictStack(GUNMETAL.ingot(), 2)}, new AnvilOutput(new ItemStack(ModItems.stamp_50))).setTier(2));
constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.stamp_desh_flat), new OreDictStack(WEAPONSTEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.stamp_desh_9))).setTier(4));
constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.stamp_desh_flat), new OreDictStack(WEAPONSTEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.stamp_desh_50))).setTier(4));
constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(IRON.ingot(), 2)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 16))).setTier(1));
constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(IRON.ingot(), 2)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 17))).setTier(1));
constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 22))).setTier(2));
constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 23))).setTier(2));

View File

@ -2,6 +2,7 @@ package com.hbm.itempool;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.material.Mats;
import com.hbm.items.ItemEnums.EnumCasingType;
import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemBreedingRod.BreedingRodType;
import com.hbm.items.machine.ItemCircuit.EnumCircuitType;
@ -48,8 +49,8 @@ public class ItemPoolsLegacy {
weighted(ModItems.ammo_standard, EnumAmmo.G26_FLARE_SUPPLY.ordinal(), 1, 1, 1),
weighted(ModItems.gun_kit_1, 0, 1, 3, 4),
weighted(ModItems.gun_maresleg, 0, 1, 1, 1),
weighted(ModItems.casing_9, 0, 4, 10, 3),
weighted(ModItems.casing_50, 0, 4, 10, 3),
weighted(ModItems.casing, EnumCasingType.SMALL.ordinal(), 4, 10, 3),
weighted(ModItems.casing, EnumCasingType.SHOTSHELL.ordinal(), 4, 10, 3),
weighted(ModItems.cordite, 0, 4, 6, 5),
weighted(ModItems.battery_generic, 0, 1, 1, 4),
weighted(ModItems.battery_advanced, 0, 1, 1, 2),

View File

@ -592,12 +592,7 @@ public class ModItems {
public static Item mechanism_launcher_1;
public static Item mechanism_launcher_2;
public static Item mechanism_special;
public static Item casing_357;
public static Item casing_44;
public static Item casing_9;
public static Item casing_50;
public static Item casing_buckshot;
public static Item assembly_iron;
public static Item assembly_steel;
public static Item assembly_lead;
@ -2852,11 +2847,6 @@ public class ModItems {
mechanism_launcher_1 = new Item().setUnlocalizedName("mechanism_launcher_1").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":mechanism_5");
mechanism_launcher_2 = new Item().setUnlocalizedName("mechanism_launcher_2").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":mechanism_6");
mechanism_special = new Item().setUnlocalizedName("mechanism_special").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":mechanism_7");
casing_357 = new Item().setUnlocalizedName("casing_357").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":casing_357");
casing_44 = new Item().setUnlocalizedName("casing_44").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":casing_44");
casing_9 = new Item().setUnlocalizedName("casing_9").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":casing_9");
casing_50 = new Item().setUnlocalizedName("casing_50").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":casing_50");
casing_buckshot = new Item().setUnlocalizedName("casing_buckshot").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":casing_buckshot");
assembly_iron = new Item().setUnlocalizedName("assembly_iron").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_iron");
assembly_steel = new Item().setUnlocalizedName("assembly_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_steel");
assembly_lead = new Item().setUnlocalizedName("assembly_lead").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_lead");
@ -5703,14 +5693,8 @@ public class ModItems {
GameRegistry.registerItem(mechanism_launcher_1, mechanism_launcher_1.getUnlocalizedName());
GameRegistry.registerItem(mechanism_launcher_2, mechanism_launcher_2.getUnlocalizedName());
GameRegistry.registerItem(mechanism_special, mechanism_special.getUnlocalizedName());
//Casings
GameRegistry.registerItem(casing_357, casing_357.getUnlocalizedName());
GameRegistry.registerItem(casing_44, casing_44.getUnlocalizedName());
GameRegistry.registerItem(casing_9, casing_9.getUnlocalizedName());
GameRegistry.registerItem(casing_50, casing_50.getUnlocalizedName());
GameRegistry.registerItem(casing_buckshot, casing_buckshot.getUnlocalizedName());
//Casing
GameRegistry.registerItem(casing, casing.getUnlocalizedName());
//Bullet Assemblies

View File

@ -200,7 +200,7 @@ public class XFactory12ga {
}
if(rec.getFireSound(stack) != null) entity.worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, rec.getFireSound(stack), rec.getFireVolume(stack), rec.getFirePitch(stack) * (timeFired > 1 ? 0.9F : 1F));
ItemGunBaseNT.setState(stack, index, GunState.COOLDOWN);
ItemGunBaseNT.setTimer(stack, index, 10);
ItemGunBaseNT.setTimer(stack, index, 20);
} else {
if(rec.getDoesDryFire(stack)) {
ItemGunBaseNT.playAnimation(player, stack, AnimType.CYCLE_DRY, index);

View File

@ -46,7 +46,7 @@ public class XFactoryCatapult {
public static BulletConfig nuke_hive;
public static BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> LAMBDA_NUKE_STANDARD = (bullet, mop) -> {
if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return;
if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3 && mop.entityHit == bullet.getThrower()) return;
if(bullet.isDead) return;
bullet.setDead();

View File

@ -1612,6 +1612,11 @@ public class MainRegistry {
ignoreMappings.add("hbm:item.ln2_8");
ignoreMappings.add("hbm:item.ln2_9");
ignoreMappings.add("hbm:item.ln2_10");
ignoreMappings.add("hbm:item.casing_357");
ignoreMappings.add("hbm:item.casing_44");
ignoreMappings.add("hbm:item.casing_9");
ignoreMappings.add("hbm:item.casing_50");
ignoreMappings.add("hbm:item.casing_buckshot");
/// REMAP ///
remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses);

View File

@ -89,7 +89,7 @@ public class ItemRenderShredder extends ItemRenderWeaponBase {
GL11.glScalef(f3, -f3, f3);
GL11.glRotated(180D, 0, 1, 0);
GL11.glNormal3f(0.0F, 0.0F, -1.0F * f3);
float variance = 0.7F + player.getRNG().nextFloat() * 0.3F;
float variance = 0.9F + player.getRNG().nextFloat() * 0.1F;
font.drawString(label, 0, 0, new Color(sexy ? variance : 0F, sexy ? 0F : variance, 0F).getRGB());
GL11.glColor3f(1F, 1F, 1F);

View File

@ -3826,6 +3826,8 @@ shape.billet=Billet
shape.blade=Turbinenblatt
shape.blades=Sägeblatt
shape.block=Block
shape.c9=Kleinkaliberhülse
shape.c50=Großkaliberhülse
shape.dust=Haufen
shape.dusttiny=Winziger Haufen
shape.grip=Griff

View File

@ -4881,6 +4881,8 @@ shape.billet=Billet
shape.blade=Blade
shape.blades=Shredder Blades
shape.block=Block
shape.c9=Small Caliber Casing
shape.c50=Large Caliber Casing
shape.dust=Dust
shape.dusttiny=Tiny Dust
shape.grip=Grip