the malicious gigglefish from the silly dimension

This commit is contained in:
Bob 2025-03-23 21:46:56 +01:00
parent 737fb1e432
commit d6c15c8ff2
28 changed files with 175 additions and 31 deletions

View File

@ -44,6 +44,10 @@
* Crates will not longer show their contents when locked * Crates will not longer show their contents when locked
* Crates found in structures will sometimes contain things that aren't items * Crates found in structures will sometimes contain things that aren't items
* Beam weapons are no longer pinpoint accurate when firing unscoped * Beam weapons are no longer pinpoint accurate when firing unscoped
* Reduced the recoil animation's intensity on the G3 by 66%, unless if the stock is sawed off
* The comically long pistol no longer cancels the inspect animation when fired while inspecting
* Instead, it will fire where the gun is pointing, at the player's face
* There's no special animation for this, since in survival mode, that would be lethal anyway
## Fixed ## Fixed
* Fixed animation errors on the MAS-36 * Fixed animation errors on the MAS-36
@ -57,3 +61,4 @@
* Fixed disperser canisters not actually despawning on impact, endlessly spawning mist clouds * Fixed disperser canisters not actually despawning on impact, endlessly spawning mist clouds
* Fixed issues where the new packet system didn't play nice with machines that are being sent packets by other machines, like watz segments and radar screens * Fixed issues where the new packet system didn't play nice with machines that are being sent packets by other machines, like watz segments and radar screens
* Fixed fat man's piston not being extended correctly in non-first person rendering when unloaded * Fixed fat man's piston not being extended correctly in non-first person rendering when unloaded
* Fixed weapon equip animation not playing when switching between two weapons of the same type

View File

@ -1,6 +1,6 @@
mod_version=1.0.27 mod_version=1.0.27
# Empty build number makes a release type # Empty build number makes a release type
mod_build_number=5257 mod_build_number=5278
credits=HbMinecraft,\ credits=HbMinecraft,\
\ rodolphito (explosion algorithms),\ \ rodolphito (explosion algorithms),\

View File

@ -16,6 +16,7 @@ import com.hbm.items.ModItems;
import com.hbm.items.weapon.GunB92Cell; import com.hbm.items.weapon.GunB92Cell;
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret;
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumModSpecial;
import com.hbm.main.CraftingManager; import com.hbm.main.CraftingManager;
import net.minecraft.init.Blocks; import net.minecraft.init.Blocks;
@ -96,6 +97,21 @@ public class WeaponRecipes {
CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.STONE_SHOT, 6), new Object[] { "C", "P", "G", 'C', Blocks.gravel, 'P', Items.paper, 'G', Items.gunpowder }); CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.STONE_SHOT, 6), new Object[] { "C", "P", "G", 'C', Blocks.gravel, 'P', Items.paper, 'G', Items.gunpowder });
CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.STONE_IRON, 6), new Object[] { "C", "P", "G", 'C', IRON.ingot(), 'P', Items.paper, 'G', Items.gunpowder }); CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.STONE_IRON, 6), new Object[] { "C", "P", "G", 'C', IRON.ingot(), 'P', Items.paper, 'G', Items.gunpowder });
//SEDNA Mods
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SILENCER.ordinal()), new Object[] { "P", "B", "P", 'P', ANY_PLASTIC.ingot(), 'B', STEEL.lightBarrel() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SCOPE.ordinal()), new Object[] { "SPS", "G G", "SPS", 'P', ANY_PLASTIC.ingot(), 'S', STEEL.plate(), 'G', KEY_ANYPANE });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SAW.ordinal()), new Object[] { "BBS", "BHB", 'B', STEEL.bolt(), 'S', KEY_STICK, 'H', DURA.plate() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SPEEDLOADER.ordinal()), new Object[] { " B ", "BSB", " B ", 'B', STEEL.bolt(), 'S', WEAPONSTEEL.plate() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SLOWDOWN.ordinal()), new Object[] { " I ", " M ", "I I", 'I', WEAPONSTEEL.ingot(), 'M', WEAPONSTEEL.mechanism() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SPEEDUP.ordinal()), new Object[] { "PIP", "WWW", "PIP", 'P', WEAPONSTEEL.plate(), 'I', GUNMETAL.ingot(), 'W', GOLD.wireDense() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.GREASEGUN.ordinal()), new Object[] { "BRM", "P G", 'B', WEAPONSTEEL.lightBarrel(), 'R', WEAPONSTEEL.lightReceiver(), 'M', WEAPONSTEEL.mechanism(), 'P', DURA.plate(), 'G', ANY_PLASTIC.grip() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.CHOKE.ordinal()), new Object[] { "P", "B", "P", 'P', WEAPONSTEEL.plate(), 'B', DURA.lightBarrel() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.FURNITURE_GREEN.ordinal()), new Object[] { "PDS", " G", 'P', ANY_PLASTIC.ingot(), 'D', KEY_GREEN, 'S', ANY_PLASTIC.stock(), 'G', ANY_PLASTIC.grip() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.FURNITURE_BLACK.ordinal()), new Object[] { "PDS", " G", 'P', ANY_PLASTIC.ingot(), 'D', KEY_BLACK, 'S', ANY_PLASTIC.stock(), 'G', ANY_PLASTIC.grip() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SKIN_SATURNITE.ordinal()), new Object[] { "BRM", " P ", 'B', BIGMT.lightBarrel(), 'R', BIGMT.lightReceiver(), 'M', BIGMT.mechanism(), 'P', BIGMT.plate() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.STACK_MAG.ordinal()), new Object[] { "P P", "P P", "PMP", 'P', WEAPONSTEEL.plate(), 'M', BIGMT.mechanism() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.BAYONET.ordinal()), new Object[] { " P", "BBB", 'P', WEAPONSTEEL.plate(), 'B', STEEL.bolt() });
//Nitra! //Nitra!
CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M357_SP, 6), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M357_SP), ModItems.nitra }); CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M357_SP, 6), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M357_SP), ModItems.nitra });
CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M44_SP, 6), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M44_SP), ModItems.nitra }); CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M44_SP, 6), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M44_SP), ModItems.nitra });

View File

@ -39,6 +39,7 @@ public class AmmoPressRecipes extends SerializableRecipe {
OreDictStack copper = new OreDictStack(CU.ingot()); OreDictStack copper = new OreDictStack(CU.ingot());
OreDictStack plastic = new OreDictStack(ANY_PLASTIC.ingot()); OreDictStack plastic = new OreDictStack(ANY_PLASTIC.ingot());
OreDictStack uranium = new OreDictStack(U238.ingot()); OreDictStack uranium = new OreDictStack(U238.ingot());
OreDictStack ferro = new OreDictStack(FERRO.ingot());
ComparableStack smokeful = new ComparableStack(Items.gunpowder); ComparableStack smokeful = new ComparableStack(Items.gunpowder);
OreDictStack smokeless = new OreDictStack(ANY_SMOKELESS.dust()); OreDictStack smokeless = new OreDictStack(ANY_SMOKELESS.dust());
ComparableStack rocket = new ComparableStack(ModItems.rocket_fuel); ComparableStack rocket = new ComparableStack(ModItems.rocket_fuel);
@ -195,6 +196,10 @@ public class AmmoPressRecipes extends SerializableRecipe {
null, uranium.copy(2), null, null, uranium.copy(2), null,
null, smokeless.copy(4), null, null, smokeless.copy(4), null,
null, sSmall.copy(2), null)); null, sSmall.copy(2), null));
recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.R762_HE, 12),
he, ferro, null,
null, smokeless.copy(4), null,
null, sSmall.copy(2), null));
recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.BMG50_SP, 12), recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.BMG50_SP, 12),
null, lead.copy(2), null, null, lead.copy(2), null,
@ -216,6 +221,10 @@ public class AmmoPressRecipes extends SerializableRecipe {
null, uranium.copy(2), null, null, uranium.copy(2), null,
null, smokeless.copy(6), null, null, smokeless.copy(6), null,
null, sBig, null)); null, sBig, null));
recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.BMG50_HE, 12),
he, ferro, null,
null, smokeless.copy(6), null,
null, sBig, null));
recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G12_BP, 6), recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G12_BP, 6),
null, nugget.copy(6), null, null, nugget.copy(6), null,
@ -259,21 +268,22 @@ public class AmmoPressRecipes extends SerializableRecipe {
null, nugget.copy(8), null, null, nugget.copy(8), null,
null, smokeless.copy(2), null, null, smokeless.copy(2), null,
null, sShell, null)); null, sShell, null));
recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G10_SHRAPNEL, 4), recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G10_SHRAPNEL, 4),
plastic, nugget.copy(8), null, plastic, nugget.copy(8), null,
null, smokeless.copy(2), null, null, smokeless.copy(2), null,
null, sShell, null)); null, sShell, null));
recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G10_DU, 4), recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G10_DU, 4),
null, uranium, null, null, uranium, null,
null, smokeless.copy(2), null, null, smokeless.copy(2), null,
null, sShell, null)); null, sShell, null));
recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G10_SLUG, 4), recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G10_SLUG, 4),
null, lead, null, null, lead, null,
null, smokeless.copy(2), null, null, smokeless.copy(2), null,
null, sShell, null)); null, sShell, null));
recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G10_EXPLOSIVE, 4),
he, ferro, null,
null, smokeless.copy(2), null,
null, sShell, null));
recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G26_FLARE, 4), recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G26_FLARE, 4),
null, rp, null, null, rp, null,
@ -387,7 +397,6 @@ public class AmmoPressRecipes extends SerializableRecipe {
null, lPlate , null)); null, lPlate , null));
OreDictStack tungsten = new OreDictStack(W.ingot()); OreDictStack tungsten = new OreDictStack(W.ingot());
OreDictStack ferro = new OreDictStack(FERRO.ingot());
recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.COIL_TUNGSTEN, 4), recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.COIL_TUNGSTEN, 4),
null, null, null, null, null, null,
null, tungsten, null, null, tungsten, null,

View File

@ -14,7 +14,6 @@ import com.hbm.handler.HbmKeybinds.EnumKeybind;
import com.hbm.interfaces.IItemHUD; import com.hbm.interfaces.IItemHUD;
import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.ComparableStack;
import com.hbm.inventory.gui.GUIWeaponTable; import com.hbm.inventory.gui.GUIWeaponTable;
import com.hbm.items.IEquipReceiver;
import com.hbm.items.IKeybindReceiver; import com.hbm.items.IKeybindReceiver;
import com.hbm.items.weapon.sedna.hud.IHUDComponent; import com.hbm.items.weapon.sedna.hud.IHUDComponent;
import com.hbm.items.weapon.sedna.mags.IMagazine; import com.hbm.items.weapon.sedna.mags.IMagazine;
@ -48,7 +47,7 @@ import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipReceiver, IItemHUD { public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD {
/** Timestamp for rendering smoke nodes and muzzle flashes */ /** Timestamp for rendering smoke nodes and muzzle flashes */
public long[] lastShot; public long[] lastShot;
@ -96,6 +95,7 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei
public static final String KEY_LOCKONTARGET = "lockontarget"; public static final String KEY_LOCKONTARGET = "lockontarget";
public static final String KEY_LOCKEDON = "lockedon"; public static final String KEY_LOCKEDON = "lockedon";
public static final String KEY_CANCELRELOAD = "cancel"; public static final String KEY_CANCELRELOAD = "cancel";
public static final String KEY_EQUIPPED = "eqipped";
public static ConcurrentHashMap<EntityLivingBase, AudioWrapper> loopedSounds = new ConcurrentHashMap(); public static ConcurrentHashMap<EntityLivingBase, AudioWrapper> loopedSounds = new ConcurrentHashMap();
@ -228,7 +228,6 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei
} }
} }
@Override
public void onEquip(EntityPlayer player, ItemStack stack) { public void onEquip(EntityPlayer player, ItemStack stack) {
for(int i = 0; i < this.configs_DNA.length; i++) { for(int i = 0; i < this.configs_DNA.length; i++) {
playAnimation(player, stack, AnimType.EQUIP, i); playAnimation(player, stack, AnimType.EQUIP, i);
@ -291,6 +290,17 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei
return; return;
} }
/// ON EQUIP ///
if(player != null) {
boolean wasHeld = this.getIsEquipped(stack);
if(!wasHeld && isHeld && player != null) {
this.onEquip(player, stack);
}
}
this.setIsEquipped(stack, isHeld);
/// RESET WHEN NOT EQUIPPED /// /// RESET WHEN NOT EQUIPPED ///
if(!isHeld) { if(!isHeld) {
for(int i = 0; i < confNo; i++) { for(int i = 0; i < confNo; i++) {
@ -359,6 +369,9 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei
// RELOAD CANCEL // // RELOAD CANCEL //
public static boolean getReloadCancel(ItemStack stack) { return getValueBool(stack, KEY_CANCELRELOAD); } public static boolean getReloadCancel(ItemStack stack) { return getValueBool(stack, KEY_CANCELRELOAD); }
public static void setReloadCancel(ItemStack stack, boolean value) { setValueBool(stack, KEY_CANCELRELOAD, value); } public static void setReloadCancel(ItemStack stack, boolean value) { setValueBool(stack, KEY_CANCELRELOAD, value); }
// EQUIPPED //
public static boolean getIsEquipped(ItemStack stack) { return getValueBool(stack, KEY_EQUIPPED); }
public static void setIsEquipped(ItemStack stack, boolean value) { setValueBool(stack, KEY_EQUIPPED, value); }
/// UTIL /// /// UTIL ///

View File

@ -139,7 +139,8 @@ public class GunFactory {
} }
public static enum EnumModTest { public static enum EnumModTest {
FIRERATE, DAMAGE, MULTI; FIRERATE, DAMAGE, MULTI,
OVERRIDE_2_5, OVERRIDE_5, OVERRIDE_7_5, OVERRIDE_10, OVERRIDE_12_5, OVERRIDE_15, OVERRIDE_20;
} }
public static enum EnumModGeneric { public static enum EnumModGeneric {

View File

@ -111,7 +111,7 @@ public class XFactory556mm {
.addBus("EQUIP", new BusAnimationSequence().addPos(45, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_FULL)); .addBus("EQUIP", new BusAnimationSequence().addPos(45, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_FULL));
case CYCLE: return new BusAnimation() case CYCLE: return new BusAnimation()
.addBus("BOLT", new BusAnimationSequence().addPos(0, 0, 0, 20).addPos(0, 0, -4.5, 40).addPos(0, 0, 0, 40)) .addBus("BOLT", new BusAnimationSequence().addPos(0, 0, 0, 20).addPos(0, 0, -4.5, 40).addPos(0, 0, 0, 40))
.addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, ItemGunBaseNT.getIsAiming(stack) ? -0.5 : -0.75, 25, IType.SIN_DOWN).addPos(0, 0, 0, 75, IType.SIN_FULL)); .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, (ItemGunBaseNT.getIsAiming(stack) || !WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_NO_STOCK)) ? -0.25 : -0.75, 25, IType.SIN_DOWN).addPos(0, 0, 0, 75, IType.SIN_FULL));
case CYCLE_DRY: return new BusAnimation() case CYCLE_DRY: return new BusAnimation()
.addBus("BOLT", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(0, 0, -0.3125, 100).hold(25).addPos(0, 0, -2.75, 130).hold(50).addPos(0, 0, -2.4375, 50).addPos(0, 0, 0, 85)) .addBus("BOLT", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(0, 0, -0.3125, 100).hold(25).addPos(0, 0, -2.75, 130).hold(50).addPos(0, 0, -2.4375, 50).addPos(0, 0, 0, 85))
.addBus("PLUG", new BusAnimationSequence().addPos(0, 0, 0, 250).hold(125).addPos(0, 0, -2.4375, 130).hold(100).addPos(0, 0, 0, 85)) .addBus("PLUG", new BusAnimationSequence().addPos(0, 0, 0, 250).hold(125).addPos(0, 0, -2.4375, 130).hold(100).addPos(0, 0, 0, 85))

View File

@ -15,6 +15,7 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState;
import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext;
import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality;
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
import com.hbm.items.weapon.sedna.mags.IMagazine;
import com.hbm.items.weapon.sedna.mags.MagazineFullReload; import com.hbm.items.weapon.sedna.mags.MagazineFullReload;
import com.hbm.items.weapon.sedna.mods.WeaponModManager; import com.hbm.items.weapon.sedna.mods.WeaponModManager;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
@ -25,7 +26,10 @@ import com.hbm.render.anim.BusAnimation;
import com.hbm.render.anim.BusAnimationSequence; import com.hbm.render.anim.BusAnimationSequence;
import com.hbm.render.anim.BusAnimationKeyframe.IType; import com.hbm.render.anim.BusAnimationKeyframe.IType;
import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.anim.HbmAnimations.AnimType;
import com.hbm.util.EntityDamageUtil;
import com.hbm.util.DamageResistanceHandler.DamageClass;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
public class XFactory9mm { public class XFactory9mm {
@ -64,7 +68,7 @@ public class XFactory9mm {
.dmg(25F).delay(4).dry(10).spread(0.005F).reload(53).jam(44).sound("hbm:weapon.fire.pistol", 1.0F, 1.0F) .dmg(25F).delay(4).dry(10).spread(0.005F).reload(53).jam(44).sound("hbm:weapon.fire.pistol", 1.0F, 1.0F)
.mag(new MagazineFullReload(0, 17).addConfigs(p9_sp, p9_fmj, p9_jhp, p9_ap)) .mag(new MagazineFullReload(0, 17).addConfigs(p9_sp, p9_fmj, p9_jhp, p9_ap))
.offset(1, -0.0625 * 2.5, -0.25D) .offset(1, -0.0625 * 2.5, -0.25D)
.setupStandardFire().recoil(LAMBDA_RECOIL_LAG)) .setupStandardFire().fire(LAMBDA_FIRE_LAG).recoil(LAMBDA_RECOIL_LAG))
.setupStandardConfiguration() .setupStandardConfiguration()
.anim(LAMBDA_LAG_ANIMS).orchestra(Orchestras.ORCHESTRA_LAG) .anim(LAMBDA_LAG_ANIMS).orchestra(Orchestras.ORCHESTRA_LAG)
).setUnlocalizedName("gun_lag"); ).setUnlocalizedName("gun_lag");
@ -133,6 +137,27 @@ public class XFactory9mm {
GunStateDecider.deciderAutoRefire(stack, ctx, lastState, 0, index, () -> { return ItemGunBaseNT.getSecondary(stack, index) && ItemGunBaseNT.getMode(stack, ctx.configIndex) == 0; }); GunStateDecider.deciderAutoRefire(stack, ctx, lastState, 0, index, () -> { return ItemGunBaseNT.getSecondary(stack, index) && ItemGunBaseNT.getMode(stack, ctx.configIndex) == 0; });
}; };
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_FIRE_LAG = (stack, ctx) -> {
AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex);
int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex);
EntityPlayer player = ctx.getPlayer();
if(player != null && type == AnimType.INSPECT && timer > 20 && timer < 60) {
int index = ctx.configIndex;
Receiver primary = ctx.config.getReceivers(stack)[0];
IMagazine mag = primary.getMagazine(stack);
BulletConfig config = (BulletConfig) mag.getType(stack, ctx.inventory);
player.addStat(MainRegistry.statBullets, 1);
mag.useUpAmmo(stack, ctx.inventory, 1);
ItemGunBaseNT.setWear(stack, index, Math.min(ItemGunBaseNT.getWear(stack, index) + config.wear, ctx.config.getDurability(stack)));
player.worldObj.playSoundEffect(player.posX, player.posY, player.posZ, primary.getFireSound(stack), primary.getFireVolume(stack), primary.getFirePitch(stack));
ItemGunBaseNT.setState(stack, index, GunState.COOLDOWN);
ItemGunBaseNT.setTimer(stack, index, primary.getDelayAfterFire(stack));
EntityDamageUtil.attackEntityFromNT(player, BulletConfig.getDamage(player, player, DamageClass.PHYSICAL), 1_000F, true, false, 1D, 5F, 0F);
} else {
Lego.doStandardFire(stack, ctx, AnimType.CYCLE, true);
}
};
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_SMOKE = (stack, ctx) -> { public static BiConsumer<ItemStack, LambdaContext> LAMBDA_SMOKE = (stack, ctx) -> {
Lego.handleStandardSmoke(ctx.entity, stack, 2000, 0.05D, 1.1D, ctx.configIndex); Lego.handleStandardSmoke(ctx.entity, stack, 2000, 0.05D, 1.1D, ctx.configIndex);
}; };

View File

@ -58,6 +58,14 @@ public class WeaponModManager {
new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_test, 1, EnumModTest.DAMAGE.ordinal())).addDefault(TEST_DAMAGE); new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_test, 1, EnumModTest.DAMAGE.ordinal())).addDefault(TEST_DAMAGE);
new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_test, 1, EnumModTest.MULTI.ordinal())).addDefault(TEST_MULTI); new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_test, 1, EnumModTest.MULTI.ordinal())).addDefault(TEST_MULTI);
new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_test, 1, EnumModTest.OVERRIDE_2_5.ordinal())).addDefault(new WeaponModOverride(3, 2.5F, "OVERRIDE"));
new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_test, 1, EnumModTest.OVERRIDE_5.ordinal())).addDefault(new WeaponModOverride(4, 5F, "OVERRIDE"));
new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_test, 1, EnumModTest.OVERRIDE_7_5.ordinal())).addDefault(new WeaponModOverride(5, 7.5F, "OVERRIDE"));
new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_test, 1, EnumModTest.OVERRIDE_10.ordinal())).addDefault(new WeaponModOverride(6, 10F, "OVERRIDE"));
new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_test, 1, EnumModTest.OVERRIDE_12_5.ordinal())).addDefault(new WeaponModOverride(7, 12_5F, "OVERRIDE"));
new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_test, 1, EnumModTest.OVERRIDE_15.ordinal())).addDefault(new WeaponModOverride(8, 15F, "OVERRIDE"));
new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_test, 1, EnumModTest.OVERRIDE_20.ordinal())).addDefault(new WeaponModOverride(9, 20F, "OVERRIDE"));
new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_generic, 1, EnumModGeneric.IRON_DAMAGE.ordinal())).addMod(ModItems.gun_pepperbox, new WeaponModGenericDamage(100)); new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_generic, 1, EnumModGeneric.IRON_DAMAGE.ordinal())).addMod(ModItems.gun_pepperbox, new WeaponModGenericDamage(100));
new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_generic, 1, EnumModGeneric.IRON_DURA.ordinal())).addMod(ModItems.gun_pepperbox, new WeaponModGenericDurability(101)); new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_generic, 1, EnumModGeneric.IRON_DURA.ordinal())).addMod(ModItems.gun_pepperbox, new WeaponModGenericDurability(101));
@ -151,7 +159,7 @@ public class WeaponModManager {
.addMod(ModItems.gun_greasegun, new WeaponModCaliber(311, 24, 3F, p45)) .addMod(ModItems.gun_greasegun, new WeaponModCaliber(311, 24, 3F, p45))
.addMod(ModItems.gun_uzi, new WeaponModCaliber(312, 24, 3F, p45)) .addMod(ModItems.gun_uzi, new WeaponModCaliber(312, 24, 3F, p45))
.addMod(ModItems.gun_uzi_akimbo, new WeaponModCaliber(313, 24, 3F, p45)) .addMod(ModItems.gun_uzi_akimbo, new WeaponModCaliber(313, 24, 3F, p45))
.addMod(ModItems.gun_lag, new WeaponModCaliber(314, 24, 25F, p45)); .addMod(ModItems.gun_lag, new WeaponModCaliber(314, 15, 25F, p45));
new WeaponModDefinition(EnumModCaliber.P22) new WeaponModDefinition(EnumModCaliber.P22)
.addMod(ModItems.gun_henry, new WeaponModCaliber(320, 28, 10F, p22)) .addMod(ModItems.gun_henry, new WeaponModCaliber(320, 28, 10F, p22))
.addMod(ModItems.gun_uzi, new WeaponModCaliber(321, 40, 3F, p22)) .addMod(ModItems.gun_uzi, new WeaponModCaliber(321, 40, 3F, p22))
@ -260,6 +268,7 @@ public class WeaponModManager {
WeaponModDefinition def = stackToMod.get(new ComparableStack(mod)); WeaponModDefinition def = stackToMod.get(new ComparableStack(mod));
if(def == null) return null; if(def == null) return null;
IWeaponMod newMod = def.modByGun.get(new ComparableStack(gun).makeSingular()); //shift clicking causes the gun to have stack size 0! IWeaponMod newMod = def.modByGun.get(new ComparableStack(gun).makeSingular()); //shift clicking causes the gun to have stack size 0!
if(newMod == null) newMod = def.modByGun.get(null);
return newMod; return newMod;
} }

View File

@ -0,0 +1,22 @@
package com.hbm.items.weapon.sedna.mods;
import com.hbm.items.weapon.sedna.Receiver;
import net.minecraft.item.ItemStack;
public class WeaponModOverride extends WeaponModBase {
protected final float baseDamage;
public WeaponModOverride(int id, float baseDamage, String... slots) {
super(id, slots);
this.baseDamage = baseDamage;
this.setPriority(PRIORITY_SET);
}
@Override
public <T> T eval(T base, ItemStack gun, String key, Object parent) {
if(key == Receiver.F_BASEDAMAGE) return cast(baseDamage, base);
return base;
}
}

View File

@ -3,7 +3,7 @@ package com.hbm.lib;
public class RefStrings { public class RefStrings {
public static final String MODID = "hbm"; public static final String MODID = "hbm";
public static final String NAME = "Hbm's Nuclear Tech Mod"; public static final String NAME = "Hbm's Nuclear Tech Mod";
public static final String VERSION = "1.0.27 BETA (5257)"; public static final String VERSION = "1.0.27 BETA (5278)";
//HBM's Beta Naming Convention: //HBM's Beta Naming Convention:
//V T (X) //V T (X)
//V -> next release version //V -> next release version

View File

@ -1760,7 +1760,7 @@ public class ClientProxy extends ServerProxy {
.addPos(90, 0, 1, 800) .addPos(90, 0, 1, 800)
.addPos(0, 0, 1, 50)); .addPos(0, 0, 1, 50));
HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation); HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, null);
} }
/* crucible swing */ /* crucible swing */
@ -1782,7 +1782,7 @@ public class ClientProxy extends ServerProxy {
Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("hbm:weapon.cSwing"), 0.8F + player.getRNG().nextFloat() * 0.2F)); Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("hbm:weapon.cSwing"), 0.8F + player.getRNG().nextFloat() * 0.2F));
HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation); HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, null);
} }
} }
@ -1806,7 +1806,7 @@ public class ClientProxy extends ServerProxy {
.addPos(0, 0, 0, retire)); .addPos(0, 0, 0, retire));
HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation); HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, null);
} else { } else {
@ -1827,7 +1827,7 @@ public class ClientProxy extends ServerProxy {
.addPos(2, 0, 2, sideways) .addPos(2, 0, 2, sideways)
.addPos(0, 0, 0, retire)); .addPos(0, 0, 0, retire));
HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation); HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, null);
} }
} }
@ -1839,7 +1839,7 @@ public class ClientProxy extends ServerProxy {
BusAnimation anim = item.getAnimation(data, stack); BusAnimation anim = item.getAnimation(data, stack);
if(anim != null) { if(anim != null) {
HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), anim); HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), anim, null);
} }
} }
} }

View File

@ -105,7 +105,7 @@ public class GunAnimationPacket implements IMessage {
if(animation != null) { if(animation != null) {
boolean isReloadAnimation = type == AnimType.RELOAD || type == AnimType.RELOAD_CYCLE || type == AnimType.RELOAD_EMPTY; boolean isReloadAnimation = type == AnimType.RELOAD || type == AnimType.RELOAD_CYCLE || type == AnimType.RELOAD_EMPTY;
HbmAnimations.hotbar[slot][0] = new Animation(stack.getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, isReloadAnimation && base.mainConfig.reloadAnimationsSequential); HbmAnimations.hotbar[slot][0] = new Animation(stack.getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, type, isReloadAnimation && base.mainConfig.reloadAnimationsSequential);
} }
} catch(Exception x) { } } catch(Exception x) { }
@ -143,7 +143,7 @@ public class GunAnimationPacket implements IMessage {
Minecraft.getMinecraft().entityRenderer.itemRenderer.resetEquippedProgress(); Minecraft.getMinecraft().entityRenderer.itemRenderer.resetEquippedProgress();
Minecraft.getMinecraft().entityRenderer.itemRenderer.itemToRender = stack; Minecraft.getMinecraft().entityRenderer.itemRenderer.itemToRender = stack;
boolean isReloadAnimation = type == AnimType.RELOAD || type == AnimType.RELOAD_CYCLE || type == AnimType.RELOAD_EMPTY; boolean isReloadAnimation = type == AnimType.RELOAD || type == AnimType.RELOAD_CYCLE || type == AnimType.RELOAD_EMPTY;
HbmAnimations.hotbar[slot][gunIndex] = new Animation(stack.getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, isReloadAnimation && config.getReloadAnimSequential(stack)); HbmAnimations.hotbar[slot][gunIndex] = new Animation(stack.getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, type, isReloadAnimation && config.getReloadAnimSequential(stack));
} }
} }
} }

View File

@ -47,18 +47,22 @@ public class HbmAnimations {
public BusAnimation animation; public BusAnimation animation;
// If set, don't cancel this animation when the timer ends, instead wait for the next to start // If set, don't cancel this animation when the timer ends, instead wait for the next to start
public boolean holdLastFrame = false; public boolean holdLastFrame = false;
// so we know what type of animation we're playing, only used rarely
public AnimType type;
public Animation(String key, long startMillis, BusAnimation animation) { public Animation(String key, long startMillis, BusAnimation animation, AnimType type) {
this.key = key; this.key = key;
this.startMillis = startMillis; this.startMillis = startMillis;
this.animation = animation; this.animation = animation;
this.type = type;
} }
public Animation(String key, long startMillis, BusAnimation animation, boolean holdLastFrame) { public Animation(String key, long startMillis, BusAnimation animation, AnimType type, boolean holdLastFrame) {
this.key = key; this.key = key;
this.startMillis = startMillis; this.startMillis = startMillis;
this.animation = animation; this.animation = animation;
this.holdLastFrame = holdLastFrame; this.holdLastFrame = holdLastFrame;
this.type = type;
} }
} }

View File

@ -84,6 +84,16 @@ public abstract class ItemRenderWeaponBase implements IItemRenderer {
GL11.glPushMatrix(); GL11.glPushMatrix();
if(mc.gameSettings.thirdPersonView == 0 && !mc.renderViewEntity.isPlayerSleeping() && !mc.gameSettings.hideGUI && !mc.playerController.enableEverythingIsScrewedUpMode()) { if(mc.gameSettings.thirdPersonView == 0 && !mc.renderViewEntity.isPlayerSleeping() && !mc.gameSettings.hideGUI && !mc.playerController.enableEverythingIsScrewedUpMode()) {
/*ItemRenderer ir = mc.entityRenderer.itemRenderer;
float equip = ir.prevEquippedProgress + (ir.equippedProgress- ir.prevEquippedProgress) * interp;
Animation current = HbmAnimations.getRelevantAnim();
// flicker prevention, if equip is in progress, only render if an animation is playing
if(!(equip < 0.25 && ir.prevEquippedProgress < ir.equippedProgress && (current == null || current.type != AnimType.EQUIP))) {
entityRenderer.enableLightmap(interp);
this.setupTransformsAndRender(stack);
entityRenderer.disableLightmap(interp);
}*/
entityRenderer.enableLightmap(interp); entityRenderer.enableLightmap(interp);
this.setupTransformsAndRender(stack); this.setupTransformsAndRender(stack);
entityRenderer.disableLightmap(interp); entityRenderer.disableLightmap(interp);

View File

@ -1,5 +1,6 @@
package com.hbm.tileentity.machine.storage; package com.hbm.tileentity.machine.storage;
import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority;
import api.hbm.fluidmk2.IFluidStandardTransceiverMK2; import api.hbm.fluidmk2.IFluidStandardTransceiverMK2;
import com.hbm.blocks.ModBlocks; import com.hbm.blocks.ModBlocks;
@ -91,7 +92,7 @@ public class TileEntityBarrel extends TileEntityMachineBase implements SimpleCom
tank.unloadTank(4, 5, slots); tank.unloadTank(4, 5, slots);
for(DirPos pos : getConPos()) { for(DirPos pos : getConPos()) {
if(mode == 0 || mode == 2) this.trySubscribe(tank.getTankType(), worldObj, pos); if(mode == 0 || mode == 1) this.trySubscribe(tank.getTankType(), worldObj, pos);
if(mode == 1 || mode == 2) this.tryProvide(tank, worldObj, pos); if(mode == 1 || mode == 2) this.tryProvide(tank, worldObj, pos);
} }
@ -234,6 +235,11 @@ public class TileEntityBarrel extends TileEntityMachineBase implements SimpleCom
return new FluidTank[] { tank }; return new FluidTank[] { tank };
} }
@Override
public ConnectionPriority getFluidPriority() {
return mode == 1 ? ConnectionPriority.LOW : ConnectionPriority.NORMAL;
}
@Override @Override
public int[] getFluidIDToCopy() { public int[] getFluidIDToCopy() {
return new int[] {tank.getTankType().getID()}; return new int[] {tank.getTankType().getID()};

View File

@ -1,5 +1,6 @@
package com.hbm.tileentity.machine.storage; package com.hbm.tileentity.machine.storage;
import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority;
import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.fluid.IFluidStandardTransceiver;
import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ModBlocks; import com.hbm.blocks.ModBlocks;
@ -48,7 +49,7 @@ import java.util.List;
import java.util.Random; import java.util.Random;
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")}) @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")})
public class TileEntityMachineFluidTank extends TileEntityMachineBase implements SimpleComponent, OCComponent, IFluidStandardTransceiver, IPersistentNBT, IOverpressurable, IGUIProvider, IRepairable, IFluidCopiable{ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements SimpleComponent, OCComponent, IFluidStandardTransceiver, IPersistentNBT, IOverpressurable, IGUIProvider, IRepairable, IFluidCopiable {
public FluidTank tank; public FluidTank tank;
public short mode = 0; public short mode = 0;
@ -107,7 +108,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements
} }
for(DirPos pos : getConPos()) { for(DirPos pos : getConPos()) {
if(mode == 0 || mode == 2) this.trySubscribe(tank.getTankType(), worldObj, pos); if(mode == 0 || mode == 1) this.trySubscribe(tank.getTankType(), worldObj, pos);
if(mode == 1 || mode == 2) this.tryProvide(tank, worldObj, pos); if(mode == 1 || mode == 2) this.tryProvide(tank, worldObj, pos);
} }
@ -331,12 +332,8 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements
@Override @Override
public long getDemand(FluidType type, int pressure) { public long getDemand(FluidType type, int pressure) {
if(this.mode == 2 || this.mode == 3) return 0;
if(this.mode == 2 || this.mode == 3 || this.sendingBrake)
return 0;
if(tank.getPressure() != pressure) return 0; if(tank.getPressure() != pressure) return 0;
return type == tank.getTankType() ? tank.getMaxFill() - tank.getFill() : 0; return type == tank.getTankType() ? tank.getMaxFill() - tank.getFill() : 0;
} }
@ -377,6 +374,11 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements
return (mode == 0 || mode == 1) ? new FluidTank[] {tank} : new FluidTank[0]; return (mode == 0 || mode == 1) ? new FluidTank[] {tank} : new FluidTank[0];
} }
@Override
public ConnectionPriority getFluidPriority() {
return mode == 1 ? ConnectionPriority.LOW : ConnectionPriority.NORMAL;
}
@Override @Override
public int[] getFluidIDToCopy() { public int[] getFluidIDToCopy() {
return new int[] {tank.getTankType().getID()}; return new int[] {tank.getTankType().getID()};

View File

@ -40,6 +40,8 @@ public net.minecraft.nbt.NBTTagList * # Mo
# ItemRenderer # ItemRenderer
public net.minecraft.client.renderer.ItemRenderer field_78453_b # itemToRender public net.minecraft.client.renderer.ItemRenderer field_78453_b # itemToRender
public net.minecraft.client.renderer.ItemRenderer field_78454_c # equippedProgress
public net.minecraft.client.renderer.ItemRenderer field_78451_d # prevEquippedProgress
# AbstractResourcePack # AbstractResourcePack
public net.minecraft.client.resources.AbstractResourcePack field_110597_b # resourcePackFile public net.minecraft.client.resources.AbstractResourcePack field_110597_b # resourcePackFile

View File

@ -3736,6 +3736,16 @@ item.weapon_mod_special.slowdown.name=Rädergetriebe
item.weapon_mod_special.speedloader.name=Schnelllader item.weapon_mod_special.speedloader.name=Schnelllader
item.weapon_mod_special.speedup.name=Elektrischer Servomotor item.weapon_mod_special.speedup.name=Elektrischer Servomotor
item.weapon_mod_special.stack_mag.name=Zweistapel-Magazin item.weapon_mod_special.stack_mag.name=Zweistapel-Magazin
item.weapon_mod_test.damage.name=DAMAGE UPGRADE
item.weapon_mod_test.firerate.name=FIRE RATE UPGRADE
item.weapon_mod_test.multi.name=MULTI SHOT UPGRADE
item.weapon_mod_test.override_2_5.name=DAMAGE OVERRIDE (2.5)
item.weapon_mod_test.override_5.name=DAMAGE OVERRIDE (5)
item.weapon_mod_test.override_7_5.name=DAMAGE OVERRIDE (7.5)
item.weapon_mod_test.override_10.name=DAMAGE OVERRIDE (10)
item.weapon_mod_test.override_12_5.name=DAMAGE OVERRIDE (12.5)
item.weapon_mod_test.override_15.name=DAMAGE OVERRIDE (15)
item.weapon_mod_test.override_20.name=DAMAGE OVERRIDE (20)
item.weapon_pipe_lead.name=Die Handüberbrückung item.weapon_pipe_lead.name=Die Handüberbrückung
item.weapon_pipe_rusty.name=Der Einstellungskorrigierer item.weapon_pipe_rusty.name=Der Einstellungskorrigierer
item.weapon_saw.name=Ärztlich autorisierter Mord item.weapon_saw.name=Ärztlich autorisierter Mord

View File

@ -4762,6 +4762,16 @@ item.weapon_mod_special.slowdown.name=Gear Train
item.weapon_mod_special.speedloader.name=Speedloader item.weapon_mod_special.speedloader.name=Speedloader
item.weapon_mod_special.speedup.name=Auxiliary Electric Engine item.weapon_mod_special.speedup.name=Auxiliary Electric Engine
item.weapon_mod_special.stack_mag.name=Double-Stacked Magazine item.weapon_mod_special.stack_mag.name=Double-Stacked Magazine
item.weapon_mod_test.damage.name=DAMAGE UPGRADE
item.weapon_mod_test.firerate.name=FIRE RATE UPGRADE
item.weapon_mod_test.multi.name=MULTI SHOT UPGRADE
item.weapon_mod_test.override_2_5.name=DAMAGE OVERRIDE (2.5)
item.weapon_mod_test.override_5.name=DAMAGE OVERRIDE (5)
item.weapon_mod_test.override_7_5.name=DAMAGE OVERRIDE (7.5)
item.weapon_mod_test.override_10.name=DAMAGE OVERRIDE (10)
item.weapon_mod_test.override_12_5.name=DAMAGE OVERRIDE (12.5)
item.weapon_mod_test.override_15.name=DAMAGE OVERRIDE (15)
item.weapon_mod_test.override_20.name=DAMAGE OVERRIDE (20)
item.weapon_pipe_lead.name=The Manual Override item.weapon_pipe_lead.name=The Manual Override
item.weapon_pipe_rusty.name=The Attitude Adjuster item.weapon_pipe_rusty.name=The Attitude Adjuster
item.weapon_saw.name=Doctor Assisted Homicide item.weapon_saw.name=Doctor Assisted Homicide

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 B