From f9762916fdc7644c54409d2b6c33449bbf1cd38e Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 21 Jun 2021 22:45:26 +0200 Subject: [PATCH] some more meltdown stuff --- src/main/java/com/hbm/blocks/ModBlocks.java | 10 +++ .../java/com/hbm/blocks/bomb/Balefire.java | 5 -- .../com/hbm/blocks/bomb/DigammaFlame.java | 72 ++++++++++++++++++ .../com/hbm/blocks/gas/BlockGasRadon.java | 2 +- .../com/hbm/blocks/gas/BlockGasRadonTomb.java | 2 +- .../machine/rbmk/RBMKDebrisDigamma.java | 31 ++++++++ .../java/com/hbm/explosion/ExplosionNT.java | 27 ++++++- .../hbm/handler/BulletConfigSyncingUtil.java | 2 + .../hbm/handler/guncfg/GunRocketFactory.java | 46 +++++++++++ .../java/com/hbm/inventory/AnvilRecipes.java | 24 +++++- .../inventory/container/ContainerAnvil.java | 70 ++++++++++++++++- src/main/java/com/hbm/items/ModItems.java | 16 ++++ .../com/hbm/items/armor/ItemModKnife.java | 5 +- .../java/com/hbm/items/weapon/ItemAmmo.java | 8 ++ src/main/java/com/hbm/main/MainRegistry.java | 5 ++ src/main/java/com/hbm/util/ArmorUtil.java | 24 ++++++ .../java/com/hbm/util/ContaminationUtil.java | 6 +- src/main/resources/assets/hbm/lang/de_DE.lang | 2 + src/main/resources/assets/hbm/lang/en_US.lang | 2 + .../assets/hbm/textures/armor/robes_1.png | Bin 0 -> 1273 bytes .../assets/hbm/textures/armor/robes_2.png | Bin 0 -> 503 bytes .../hbm/textures/blocks/ash_digamma.png | Bin 0 -> 864 bytes .../hbm/textures/blocks/fire_digamma.png | Bin 0 -> 13139 bytes .../textures/blocks/fire_digamma.png.mcmeta | 3 + .../blocks/rbmk/rbmk_debris_digamma.png | Bin 0 -> 407 bytes .../textures/items/ammo_rocket_digamma.png | Bin 0 -> 193 bytes 26 files changed, 345 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/bomb/DigammaFlame.java create mode 100644 src/main/java/com/hbm/blocks/machine/rbmk/RBMKDebrisDigamma.java create mode 100644 src/main/resources/assets/hbm/textures/armor/robes_1.png create mode 100644 src/main/resources/assets/hbm/textures/armor/robes_2.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/ash_digamma.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/fire_digamma.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/fire_digamma.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_debris_digamma.png create mode 100644 src/main/resources/assets/hbm/textures/items/ammo_rocket_digamma.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index e917f2534..c1a9f689b 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -340,6 +340,8 @@ public class ModBlocks { public static Block glass_uranium; public static Block glass_trinitite; public static Block glass_polonium; + + public static Block ash_digamma; public static Block mush; public static Block mush_block; @@ -704,6 +706,7 @@ public class ModBlocks { public static final int guiID_fwatz_multiblock = 33; public static Block balefire; + public static Block fire_digamma; public static Block ams_base; public static final int guiID_ams_base = 54; @@ -936,6 +939,7 @@ public class ModBlocks { public static Block pribris; public static Block pribris_burning; public static Block pribris_radiating; + public static Block pribris_digamma; public static Block book_guide; @@ -1362,6 +1366,7 @@ public class ModBlocks { fence_metal = new BlockMetalFence(Material.iron).setBlockName("fence_metal").setCreativeTab(MainRegistry.machineTab).setHardness(15.0F).setResistance(0.25F).setBlockTextureName(RefStrings.MODID + ":fence_metal"); + ash_digamma = new BlockFalling(Material.sand).setBlockName("ash_digamma").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setResistance(150.0F).setBlockTextureName(RefStrings.MODID + ":ash_digamma"); sand_boron = new BlockFalling(Material.sand).setBlockName("sand_boron").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_boron"); sand_lead = new BlockFalling(Material.sand).setBlockName("sand_lead").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_lead"); sand_uranium = new BlockFalling(Material.sand).setBlockName("sand_uranium").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_uranium"); @@ -1641,6 +1646,7 @@ public class ModBlocks { fwatz_plasma = new BlockPlasma(Material.iron).setBlockName("fwatz_plasma").setHardness(5.0F).setResistance(6000.0F).setLightLevel(1.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fwatz_plasma"); balefire = new Balefire().setBlockName("balefire").setHardness(0.0F).setLightLevel(1.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":balefire"); + fire_digamma = new DigammaFlame().setBlockName("fire_digamma").setHardness(0.0F).setResistance(150F).setLightLevel(1.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fire_digamma"); ams_base = new BlockAMSBase(Material.iron).setBlockName("ams_base").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":ams_base"); ams_emitter = new BlockAMSEmitter(Material.iron).setBlockName("ams_emitter").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":ams_emitter"); @@ -1729,6 +1735,7 @@ public class ModBlocks { pribris = new RBMKDebris().setBlockName("pribris").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_debris"); pribris_burning = new RBMKDebrisBurning().setBlockName("pribris_burning").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_debris_burning"); pribris_radiating = new RBMKDebrisRadiating().setBlockName("pribris_radiating").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_debris_radiating"); + pribris_digamma = new RBMKDebrisDigamma().setBlockName("pribris_digamma").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_debris_digamma"); book_guide = new Guide(Material.iron).setBlockName("book_guide").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.nukeTab); @@ -2352,6 +2359,7 @@ public class ModBlocks { GameRegistry.registerBlock(fence_metal, fence_metal.getUnlocalizedName()); //Sands, Glass + GameRegistry.registerBlock(ash_digamma, ash_digamma.getUnlocalizedName()); GameRegistry.registerBlock(sand_boron, sand_boron.getUnlocalizedName()); GameRegistry.registerBlock(sand_lead, sand_lead.getUnlocalizedName()); GameRegistry.registerBlock(sand_uranium, sand_uranium.getUnlocalizedName()); @@ -2474,6 +2482,7 @@ public class ModBlocks { GameRegistry.registerBlock(pribris, pribris.getUnlocalizedName()); GameRegistry.registerBlock(pribris_burning, pribris_burning.getUnlocalizedName()); GameRegistry.registerBlock(pribris_radiating, pribris_radiating.getUnlocalizedName()); + GameRegistry.registerBlock(pribris_digamma, pribris_digamma.getUnlocalizedName()); GameRegistry.registerBlock(red_cable, red_cable.getUnlocalizedName()); GameRegistry.registerBlock(red_wire_coated, red_wire_coated.getUnlocalizedName()); @@ -2638,6 +2647,7 @@ public class ModBlocks { //E GameRegistry.registerBlock(balefire, balefire.getUnlocalizedName()); + GameRegistry.registerBlock(fire_digamma, fire_digamma.getUnlocalizedName()); //AMS GameRegistry.registerBlock(ams_base, ams_base.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/bomb/Balefire.java b/src/main/java/com/hbm/blocks/bomb/Balefire.java index c5553ae2d..3ad57ad2c 100644 --- a/src/main/java/com/hbm/blocks/bomb/Balefire.java +++ b/src/main/java/com/hbm/blocks/bomb/Balefire.java @@ -200,11 +200,6 @@ public class Balefire extends BlockFire { } } - private boolean isFlammable(World p_149817_1_, int p_149817_2_, int p_149817_3_, int p_149817_4_) - { - return p_149817_1_.getBlock(p_149817_2_, p_149817_3_, p_149817_4_).getMaterial().getCanBurn(); - } - public boolean canCatchFire(IBlockAccess world, int x, int y, int z, ForgeDirection face) { return world.getBlock(x, y, z).isFlammable(world, x, y, z, face); diff --git a/src/main/java/com/hbm/blocks/bomb/DigammaFlame.java b/src/main/java/com/hbm/blocks/bomb/DigammaFlame.java new file mode 100644 index 000000000..77264851f --- /dev/null +++ b/src/main/java/com/hbm/blocks/bomb/DigammaFlame.java @@ -0,0 +1,72 @@ +package com.hbm.blocks.bomb; + +import java.util.Random; + +import com.hbm.util.ContaminationUtil; +import com.hbm.util.ContaminationUtil.ContaminationType; +import com.hbm.util.ContaminationUtil.HazardType; + +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; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; + +public class DigammaFlame extends Block { + + public DigammaFlame() { + super(Material.fire); + } + + @Override + public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) { + + if(entity instanceof EntityLivingBase) { + ContaminationUtil.contaminate((EntityLivingBase) entity, HazardType.DIGAMMA, ContaminationType.DIGAMMA, 0.05F); + } + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, int p_149668_4_) { + return null; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public int getRenderType() { + return 1; + } + + @Override + public boolean isCollidable() { + return false; + } + + @Override + public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { + return null; + } + + @Override + public boolean canPlaceBlockAt(World world, int x, int y, int z) { + return World.doesBlockHaveSolidTopSurface(world, x, y - 1, z); + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { + if(!canPlaceBlockAt(world, x, y, z)) { + world.setBlockToAir(x, y, z); + } + } +} diff --git a/src/main/java/com/hbm/blocks/gas/BlockGasRadon.java b/src/main/java/com/hbm/blocks/gas/BlockGasRadon.java index 68b5ba189..765e91899 100644 --- a/src/main/java/com/hbm/blocks/gas/BlockGasRadon.java +++ b/src/main/java/com/hbm/blocks/gas/BlockGasRadon.java @@ -19,7 +19,7 @@ public class BlockGasRadon extends BlockGasBase { public void onEntityCollidedWithBlock(World world, int p_149670_2_, int p_149670_3_, int p_149670_4_, Entity entity) { if(entity instanceof EntityLivingBase) { - ContaminationUtil.contaminate((EntityLivingBase)entity, HazardType.RADIATION, ContaminationType.CREATIVE, 0.05F); + ContaminationUtil.contaminate((EntityLivingBase)entity, HazardType.RADIATION, ContaminationType.RAD_BYPASS, 0.05F); } } diff --git a/src/main/java/com/hbm/blocks/gas/BlockGasRadonTomb.java b/src/main/java/com/hbm/blocks/gas/BlockGasRadonTomb.java index 2b6b49a98..1cfdfa381 100644 --- a/src/main/java/com/hbm/blocks/gas/BlockGasRadonTomb.java +++ b/src/main/java/com/hbm/blocks/gas/BlockGasRadonTomb.java @@ -45,7 +45,7 @@ public class BlockGasRadonTomb extends BlockGasBase { public void onEntityCollidedWithBlock(World world, int p_149670_2_, int p_149670_3_, int p_149670_4_, Entity entity) { if(entity instanceof EntityLivingBase) { - ContaminationUtil.contaminate((EntityLivingBase)entity, HazardType.RADIATION, ContaminationType.CREATIVE, 0.5F); + ContaminationUtil.contaminate((EntityLivingBase)entity, HazardType.RADIATION, ContaminationType.RAD_BYPASS, 0.5F); } } diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKDebrisDigamma.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKDebrisDigamma.java new file mode 100644 index 000000000..493eda369 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKDebrisDigamma.java @@ -0,0 +1,31 @@ +package com.hbm.blocks.machine.rbmk; + +import java.util.Random; + +import com.hbm.blocks.ModBlocks; + +import net.minecraft.block.Block; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class RBMKDebrisDigamma extends RBMKDebris { + + + @Override + public void updateTick(World world, int x, int y, int z, Random rand) { + + if(!world.isRemote) { + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + Block b = world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ); + if((b instanceof RBMKDebris && b != this) || b == ModBlocks.corium_block || b == ModBlocks.block_corium) + world.setBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, this); + } + } + } + + public void onBlockAdded(World world, int x, int y, int z) { + super.onBlockAdded(world, x, y, z); + world.scheduleBlockUpdate(x, y, z, this, 2); + } +} diff --git a/src/main/java/com/hbm/explosion/ExplosionNT.java b/src/main/java/com/hbm/explosion/ExplosionNT.java index 8b02b8e07..1ff1817aa 100644 --- a/src/main/java/com/hbm/explosion/ExplosionNT.java +++ b/src/main/java/com/hbm/explosion/ExplosionNT.java @@ -222,6 +222,29 @@ public class ExplosionNT extends Explosion { } block.onBlockExploded(this.worldObj, i, j, k, this); + + if(block.isNormalCube()) { + + if(has(ExAttrib.DIGAMMA)) { + this.worldObj.setBlock(i, j, k, ModBlocks.ash_digamma); + + if(this.explosionRNG.nextInt(5) == 0 && this.worldObj.getBlock(i, j + 1, k) == Blocks.air) + this.worldObj.setBlock(i, j + 1, k, ModBlocks.fire_digamma); + + } else if(has(ExAttrib.DIGAMMA_CIRCUIT)) { + + if(i % 3 == 0 && k % 3 == 0) { + this.worldObj.setBlock(i, j, k, ModBlocks.pribris_digamma); + } else if((i % 3 == 0 || k % 3 == 0) && this.explosionRNG.nextBoolean()) { + this.worldObj.setBlock(i, j, k, ModBlocks.pribris_digamma); + } else { + this.worldObj.setBlock(i, j, k, ModBlocks.ash_digamma); + + if(this.explosionRNG.nextInt(5) == 0 && this.worldObj.getBlock(i, j + 1, k) == Blocks.air) + this.worldObj.setBlock(i, j + 1, k, ModBlocks.fire_digamma); + } + } + } } } } @@ -239,7 +262,7 @@ public class ExplosionNT extends Explosion { boolean shouldReplace = true; - if(!has(ExAttrib.ALLMOD)) + if(!has(ExAttrib.ALLMOD) && !has(ExAttrib.DIGAMMA)) shouldReplace = this.explosionRNG.nextInt(3) == 0; if(block.getMaterial() == Material.air && block1.func_149730_j() && shouldReplace) { @@ -271,6 +294,8 @@ public class ExplosionNT extends Explosion { public static enum ExAttrib { FIRE, //classic vanilla fire explosion BALEFIRE, //same with but with balefire + DIGAMMA, + DIGAMMA_CIRCUIT, LAVA, //again the same thing but lava ALLMOD, //block placer attributes like fire are applied for all destroyed blocks ALLDROP, //miner TNT! diff --git a/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java b/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java index 9809b3f15..f0b5d00e0 100644 --- a/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java +++ b/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java @@ -48,6 +48,7 @@ public class BulletConfigSyncingUtil { public static int ROCKET_TOXIC = i++; public static int ROCKET_PHOSPHORUS = i++; public static int ROCKET_CANISTER = i++; + public static int ROCKET_ERROR = i++; public static int GRENADE_NORMAL = i++; public static int GRENADE_HE = i++; @@ -276,6 +277,7 @@ public class BulletConfigSyncingUtil { configSet.put(ROCKET_CHAINSAW, GunRocketFactory.getRocketRPCConfig()); configSet.put(ROCKET_TOXIC, GunRocketFactory.getRocketChlorineConfig()); configSet.put(ROCKET_CANISTER, GunRocketFactory.getRocketCanisterConfig()); + configSet.put(ROCKET_ERROR, GunRocketFactory.getRocketErrorConfig()); configSet.put(GRENADE_NORMAL, GunGrenadeFactory.getGrenadeConfig()); configSet.put(GRENADE_HE, GunGrenadeFactory.getGrenadeHEConfig()); diff --git a/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java b/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java index 5e7db3218..1028a942a 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java @@ -3,6 +3,8 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.explosion.ExplosionNT; +import com.hbm.explosion.ExplosionNT.ExAttrib; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; @@ -17,6 +19,7 @@ import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.util.RenderScreenOverlay.Crosshair; import net.minecraft.block.material.Material; +import net.minecraft.util.Vec3; import net.minecraft.world.World; public class GunRocketFactory { @@ -145,6 +148,7 @@ public class GunRocketFactory { config.config.add(BulletConfigSyncingUtil.ROCKET_CANISTER); config.config.add(BulletConfigSyncingUtil.ROCKET_NUKE); config.config.add(BulletConfigSyncingUtil.ROCKET_CHAINSAW); + config.config.add(BulletConfigSyncingUtil.ROCKET_ERROR); config.durability = 500; return config; @@ -392,4 +396,46 @@ public class GunRocketFactory { return bullet; } + + public static BulletConfiguration getRocketErrorConfig() { + + BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); + + bullet.ammo = ModItems.ammo_rocket_digamma; + bullet.velocity = 0.5F; + bullet.dmgMin = 10; + bullet.dmgMax = 15; + bullet.wear = 35; + bullet.explosive = 0; + bullet.incendiary = 0; + bullet.trail = 7; + + bullet.bImpact = new IBulletImpactBehavior() { + + @Override + public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + + if(bullet.worldObj.isRemote) + return; + + for(int i = 0; i < 250; i++) { + + double ix = bullet.posX + bullet.worldObj.rand.nextGaussian() * 15; + double iy = bullet.posY + bullet.worldObj.rand.nextGaussian() * 2; + double iz = bullet.posZ + bullet.worldObj.rand.nextGaussian() * 15; + + ExAttrib at = Vec3.createVectorHelper(ix - bullet.posX, 0, iz - bullet.posZ).lengthVector() < 20 ? ExAttrib.DIGAMMA_CIRCUIT : ExAttrib.DIGAMMA; + + new ExplosionNT(bullet.worldObj, bullet, ix, iy, iz, 7.5F) + .addAttrib(ExAttrib.NOHURT) + .addAttrib(ExAttrib.NOPARTICLE) + .addAttrib(ExAttrib.NODROP) + .addAttrib(ExAttrib.NOSOUND) + .addAttrib(at).explode(); + } + } + }; + + return bullet; + } } diff --git a/src/main/java/com/hbm/inventory/AnvilRecipes.java b/src/main/java/com/hbm/inventory/AnvilRecipes.java index fc5696e0f..3789364d4 100644 --- a/src/main/java/com/hbm/inventory/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/AnvilRecipes.java @@ -19,6 +19,10 @@ public class AnvilRecipes { new OreDictStack("ingotSteel"), new OreDictStack("ingotSteel"))); } + public static List getSmithing() { + return smithingRecipes; + } + public static class AnvilSmithingRecipe { int tier; @@ -40,15 +44,19 @@ public class AnvilRecipes { } public boolean matches(ItemStack left, ItemStack right) { + return matchesInt(left, right) != -1; + } + + public int matchesInt(ItemStack left, ItemStack right) { if(doesStackMatch(left, this.left) && doesStackMatch(right, this.right)) - return true; + return 0; if(shapeless) { - return doesStackMatch(right, this.left) && doesStackMatch(left, this.right); + return doesStackMatch(right, this.left) && doesStackMatch(left, this.right) ? 1 : -1; } - return false; + return -1; } public boolean doesStackMatch(ItemStack input, AStack recipe) { @@ -58,5 +66,15 @@ public class AnvilRecipes { public ItemStack getOutput(ItemStack left, ItemStack right) { return output.copy(); } + + public int amountConsumed(int index, boolean mirrored) { + + if(index == 0) + return mirrored ? right.stacksize : left.stacksize; + if(index == 1) + return mirrored ? left.stacksize : right.stacksize; + + return 0; + } } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerAnvil.java b/src/main/java/com/hbm/inventory/container/ContainerAnvil.java index f235e8540..a707a3837 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerAnvil.java +++ b/src/main/java/com/hbm/inventory/container/ContainerAnvil.java @@ -1,5 +1,8 @@ package com.hbm.inventory.container; +import com.hbm.handler.ArmorModHandler; +import com.hbm.inventory.AnvilRecipes; +import com.hbm.inventory.AnvilRecipes.AnvilSmithingRecipe; import com.hbm.inventory.SlotMachineOutput; import net.minecraft.entity.player.EntityPlayer; @@ -18,10 +21,34 @@ public class ContainerAnvil extends Container { public ContainerAnvil(InventoryPlayer inventory) { - this.addSlotToContainer(new Slot(input, 0, 17, 27)); - this.addSlotToContainer(new Slot(input, 1, 53, 27)); + this.addSlotToContainer(new SmithingSlot(input, 0, 17, 27)); + this.addSlotToContainer(new SmithingSlot(input, 1, 53, 27)); this.addSlotToContainer(new SlotMachineOutput(output, 0, 89, 27) { + @Override + public void onPickupFromSlot(EntityPlayer player, ItemStack stack) { + super.onPickupFromSlot(player, stack); + + ItemStack left = ContainerAnvil.this.input.getStackInSlot(0); + ItemStack right = ContainerAnvil.this.input.getStackInSlot(1); + + if(left == null || right == null) { + return; + } + + for(AnvilSmithingRecipe rec : AnvilRecipes.getSmithing()) { + + int i = rec.matchesInt(left, right); + + if(i != -1) { + ContainerAnvil.this.input.decrStackSize(0, rec.amountConsumed(0, i == 1)); + ContainerAnvil.this.input.decrStackSize(1, rec.amountConsumed(1, i == 1)); + ContainerAnvil.this.updateSmithing(); + return; + } + } + } + }); for(int i = 0; i < 3; i++) { @@ -72,4 +99,43 @@ public class ContainerAnvil extends Container { return var3; } + + public class SmithingSlot extends Slot { + + public SmithingSlot(IInventory inventory, int index, int x, int y) { + super(inventory, index, x, y); + } + + @Override + public void putStack(ItemStack stack) { + super.putStack(stack); + ContainerAnvil.this.updateSmithing(); + } + + public void onPickupFromSlot(EntityPlayer player, ItemStack stack) { + super.onPickupFromSlot(player, stack); + ContainerAnvil.this.updateSmithing(); + } + } + + private void updateSmithing() { + + ItemStack left = this.input.getStackInSlot(0); + ItemStack right = this.input.getStackInSlot(1); + + if(left == null || right == null) { + this.output.setInventorySlotContents(0, null); + return; + } + + for(AnvilSmithingRecipe rec : AnvilRecipes.getSmithing()) { + + if(rec.matches(left, right)) { + this.output.setInventorySlotContents(0, rec.getOutput(left, right)); + return; + } + } + + this.output.setInventorySlotContents(0, null); + } } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 8459990df..aa7b19059 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1407,6 +1407,7 @@ public class ModItems { public static Item ammo_rocket_sleek; public static Item ammo_rocket_nuclear; public static Item ammo_rocket_rpc; + public static Item ammo_rocket_digamma; public static Item ammo_grenade; public static Item ammo_grenade_he; public static Item ammo_grenade_incendiary; @@ -1873,6 +1874,10 @@ public class ModItems { public static Item dns_legs; public static Item dns_boots; public static Item zirconium_legs; + public static Item robes_helmet; + public static Item robes_plate; + public static Item robes_legs; + public static Item robes_boots; public static Item australium_iii; public static Item australium_iv; @@ -3815,6 +3820,7 @@ public class ModItems { ammo_rocket_sleek = new ItemAmmo().setUnlocalizedName("ammo_rocket_sleek").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_rocket_sleek"); ammo_rocket_nuclear = new ItemAmmo().setUnlocalizedName("ammo_rocket_nuclear").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_rocket_nuclear"); ammo_rocket_rpc = new ItemAmmo().setUnlocalizedName("ammo_rocket_rpc").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_rocket_rpc"); + ammo_rocket_digamma = new ItemAmmo().setUnlocalizedName("ammo_rocket_digamma").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_rocket_digamma"); ammo_grenade = new ItemAmmo().setUnlocalizedName("ammo_grenade").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_grenade"); ammo_grenade_he = new ItemAmmo().setUnlocalizedName("ammo_grenade_he").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_grenade_he"); ammo_grenade_incendiary = new ItemAmmo().setUnlocalizedName("ammo_grenade_incendiary").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_grenade_incendiary"); @@ -4410,6 +4416,11 @@ public class ModItems { starmetal_legs = new ArmorFSB(MainRegistry.aMatStarmetal, 7, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png").cloneStats((ArmorFSB) starmetal_helmet).setUnlocalizedName("starmetal_legs").setTextureName(RefStrings.MODID + ":starmetal_legs"); starmetal_boots = new ArmorFSB(MainRegistry.aMatStarmetal, 7, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) starmetal_helmet).setUnlocalizedName("starmetal_boots").setTextureName(RefStrings.MODID + ":starmetal_boots"); + robes_helmet = new ArmorFSB(ArmorMaterial.CHAIN, 7, 0, RefStrings.MODID + ":textures/armor/robes_1.png").setThreshold(1.0F).setUnlocalizedName("robes_helmet").setTextureName(RefStrings.MODID + ":robes_helmet"); + robes_plate = new ArmorFSB(ArmorMaterial.CHAIN, 7, 1, RefStrings.MODID + ":textures/armor/robes_1.png").cloneStats((ArmorFSB) robes_helmet).setUnlocalizedName("robes_plate").setTextureName(RefStrings.MODID + ":robes_plate"); + robes_legs = new ArmorFSB(ArmorMaterial.CHAIN, 7, 2, RefStrings.MODID + ":textures/armor/robes_2.png").cloneStats((ArmorFSB) robes_helmet).setUnlocalizedName("robes_legs").setTextureName(RefStrings.MODID + ":robes_legs"); + robes_boots = new ArmorFSB(ArmorMaterial.CHAIN, 7, 3, RefStrings.MODID + ":textures/armor/robes_1.png").cloneStats((ArmorFSB) robes_helmet).setUnlocalizedName("robes_boots").setTextureName(RefStrings.MODID + ":robes_boots"); + ArmorMaterial aMatZirconium = EnumHelper.addArmorMaterial("HBM_ZIRCONIUM", 1000, new int[] { 2, 5, 3, 1 }, 100); aMatZirconium.customCraftingMaterial = ModItems.ingot_zirconium; zirconium_legs = new ArmorFSB(aMatZirconium, 7, 2, RefStrings.MODID + ":textures/armor/zirconium_2.png").setMod(0.0F).setUnlocalizedName("zirconium_legs").setTextureName(RefStrings.MODID + ":zirconium_legs"); @@ -6648,6 +6659,7 @@ public class ModItems { GameRegistry.registerItem(ammo_rocket_sleek, ammo_rocket_sleek.getUnlocalizedName()); GameRegistry.registerItem(ammo_rocket_nuclear, ammo_rocket_nuclear.getUnlocalizedName()); GameRegistry.registerItem(ammo_rocket_rpc, ammo_rocket_rpc.getUnlocalizedName()); + GameRegistry.registerItem(ammo_rocket_digamma, ammo_rocket_digamma.getUnlocalizedName()); GameRegistry.registerItem(ammo_grenade, ammo_grenade.getUnlocalizedName()); GameRegistry.registerItem(ammo_grenade_he, ammo_grenade_he.getUnlocalizedName()); GameRegistry.registerItem(ammo_grenade_incendiary, ammo_grenade_incendiary.getUnlocalizedName()); @@ -7249,6 +7261,10 @@ public class ModItems { GameRegistry.registerItem(euphemium_plate, euphemium_plate.getUnlocalizedName()); GameRegistry.registerItem(euphemium_legs, euphemium_legs.getUnlocalizedName()); GameRegistry.registerItem(euphemium_boots, euphemium_boots.getUnlocalizedName()); + GameRegistry.registerItem(robes_helmet, robes_helmet.getUnlocalizedName()); + GameRegistry.registerItem(robes_plate, robes_plate.getUnlocalizedName()); + GameRegistry.registerItem(robes_legs, robes_legs.getUnlocalizedName()); + GameRegistry.registerItem(robes_boots, robes_boots.getUnlocalizedName()); GameRegistry.registerItem(apple_euphemium, apple_euphemium.getUnlocalizedName()); GameRegistry.registerItem(watch, watch.getUnlocalizedName()); GameRegistry.registerItem(mask_of_infamy, mask_of_infamy.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/armor/ItemModKnife.java b/src/main/java/com/hbm/items/armor/ItemModKnife.java index b4fa2a3e0..9d61d7e2e 100644 --- a/src/main/java/com/hbm/items/armor/ItemModKnife.java +++ b/src/main/java/com/hbm/items/armor/ItemModKnife.java @@ -4,6 +4,7 @@ import java.util.List; import java.util.UUID; import com.hbm.handler.ArmorModHandler; +import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; @@ -64,7 +65,7 @@ public class ItemModKnife extends ItemArmorMod { attributeinstance.removeModifier(attributeinstance.getModifier(trigamma_UUID)); } catch(Exception ex) { } - attributeinstance.applyModifier(new AttributeModifier(trigamma_UUID, "digamma", -(20F - health + 2), 0)); + attributeinstance.applyModifier(new AttributeModifier(trigamma_UUID, "digamma", -(entity.getMaxHealth() - health + 2), 0)); if(entity instanceof EntityPlayerMP) { NBTTagCompound data = new NBTTagCompound(); @@ -76,6 +77,8 @@ public class ItemModKnife extends ItemArmorMod { } else { data.setInteger("time", 0); data.setInteger("maxTime", 0); + + ((EntityPlayer)entity).triggerAchievement(MainRegistry.achSomeWounds); } PacketDispatcher.wrapper.sendTo(new AuxParticlePacketNT(data, 0, 0, 0), (EntityPlayerMP)entity); } diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmo.java b/src/main/java/com/hbm/items/weapon/ItemAmmo.java index db953b150..f16d7ae1d 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmo.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmo.java @@ -1,6 +1,7 @@ package com.hbm.items.weapon; import java.util.List; +import java.util.Random; import com.hbm.items.ModItems; @@ -365,6 +366,13 @@ public class ItemAmmo extends Item { list.add(EnumChatFormatting.RED + "- Non-explosive"); list.add(EnumChatFormatting.YELLOW + "* Uhhhh"); } + if(this == ModItems.ammo_rocket_digamma) { + + if(new Random().nextInt(3) < 2) + list.add(EnumChatFormatting.RED + "COVER YOURSELF IN OIL"); + else + list.add(EnumChatFormatting.RED + "" + EnumChatFormatting.OBFUSCATED + "COVER YOURSELF IN OIL"); + } //40mm GRENADES if(this == ModItems.ammo_grenade_he) { diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index d5a185465..27b1f1093 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -181,6 +181,7 @@ public class MainRegistry { public static Achievement achMeltdown; public static Achievement achOmega12; public static Achievement achRadium; + public static Achievement achSomeWounds; public static Achievement bobMetalworks; public static Achievement bobAssembly; public static Achievement bobChemistry; @@ -962,6 +963,8 @@ public class MainRegistry { achRadPoison = new Achievement("achievement.radPoison", "radPoison", -2, 6, ModItems.geiger_counter, null).initIndependentStat().registerStat(); achRadDeath = new Achievement("achievement.radDeath", "radDeath", 0, 6, Items.skull, achRadPoison).initIndependentStat().registerStat().setSpecial(); + achSomeWounds = new Achievement("achievement.someWounds", "someWounds", -2, 10, ModItems.injector_knife, null).initIndependentStat().registerStat(); + digammaSee = new Achievement("achievement.digammaSee", "digammaSee", -2, 8, ModItems.digamma_see, null).initIndependentStat().registerStat(); digammaFeel = new Achievement("achievement.digammaFeel", "digammaFeel", 0, 8, ModItems.digamma_feel, digammaSee).initIndependentStat().registerStat(); digammaKnow = new Achievement("achievement.digammaKnow", "digammaKnow", 2, 8, ModItems.digamma_know, digammaFeel).initIndependentStat().registerStat().setSpecial(); @@ -1002,6 +1005,7 @@ public class MainRegistry { bossMaskman, bossWorm, bossUFO, + achSomeWounds, digammaSee, digammaFeel, digammaKnow, @@ -1027,6 +1031,7 @@ public class MainRegistry { HadronRecipes.register(); MagicRecipes.register(); SILEXRecipes.register(); + AnvilRecipes.register(); TileEntityNukeCustom.registerBombItems(); diff --git a/src/main/java/com/hbm/util/ArmorUtil.java b/src/main/java/com/hbm/util/ArmorUtil.java index 0c8525593..dccca3801 100644 --- a/src/main/java/com/hbm/util/ArmorUtil.java +++ b/src/main/java/com/hbm/util/ArmorUtil.java @@ -113,6 +113,30 @@ public class ArmorUtil { return false; } + public static boolean checkForDigamma2(EntityPlayer player) { + + if(!checkArmor(player, ModItems.robes_helmet, ModItems.robes_plate, ModItems.robes_legs, ModItems.robes_boots)) + return false; + + if(player.isPotionActive(HbmPotion.stability.id)) + return true; + + for(int i = 0; i < 4; i++) { + + ItemStack armor = player.getCurrentArmor(i); + + if(armor != null && ArmorModHandler.hasMods(armor)) { + + ItemStack mods[] = ArmorModHandler.pryMods(armor); + + if(!(mods[ArmorModHandler.cladding] != null && mods[ArmorModHandler.cladding].getItem() == ModItems.cladding_iron)) + return false; + } + } + + return player.getMaxHealth() < 3; + } + public static boolean checkForFaraday(EntityPlayer player) { ItemStack[] armor = player.inventory.armorInventory; diff --git a/src/main/java/com/hbm/util/ContaminationUtil.java b/src/main/java/com/hbm/util/ContaminationUtil.java index 867111691..fb0c79957 100644 --- a/src/main/java/com/hbm/util/ContaminationUtil.java +++ b/src/main/java/com/hbm/util/ContaminationUtil.java @@ -263,7 +263,7 @@ public class ContaminationUtil { DIGAMMA, //preventable by fau armor or stability DIGAMMA2, //preventable by robes CREATIVE, //preventable by creative mode, for rad calculation armor piece bonuses still apply - RAD_BYPASS, //same as creaative but fill not apply radiation resistance calculation + RAD_BYPASS, //same as craative but will not apply radiation resistance calculation NONE //not preventable } @@ -289,8 +289,8 @@ public class ContaminationUtil { case FARADAY: if(ArmorUtil.checkForFaraday(player)) return false; break; case HAZMAT: if(ArmorUtil.checkForHazmat(player)) return false; break; case HAZMAT2: if(ArmorUtil.checkForHaz2(player)) return false; break; - case DIGAMMA: if(ArmorUtil.checkForDigamma(player)) return false; break; - case DIGAMMA2: break; + case DIGAMMA: if(ArmorUtil.checkForDigamma(player)) return false; if(ArmorUtil.checkForDigamma2(player)) return false; break; + case DIGAMMA2: if(ArmorUtil.checkForDigamma2(player)) return false; break; } if(player.capabilities.isCreativeMode && cont != ContaminationType.NONE) diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index c5e93e208..27fb3d2d6 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -68,6 +68,8 @@ achievement.selenium.desc=Lange nicht gesehen! achievement.selenium=Und täglich grüßt der Mond achievement.stratum.desc=Steig' auf die Bremse, Mitts. achievement.stratum=Stratum +achievement.someWounds.desc=Bereite dich vor +achievement.someWounds=Manche Wunden heilen nie achievement.soyuz.desc=Werde knusprig achievement.soyuz=Gebackene Kartoffel achievement.space.desc=Scheitere in jeder möglichen Weise und verschwende 90 Millionen Dollar an Forschungsgeldern. diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index ed8fb694b..947413306 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -68,6 +68,8 @@ achievement.selenium.desc=Yeah. achievement.selenium=XVIII The Moon achievement.stratum.desc=Hit the brakes, Mitts. achievement.stratum=Stratum +achievement.someWounds.desc=Get ready +achievement.someWounds=Some Wounds Never Heal achievement.soyuz.desc=Become crunchy. achievement.soyuz=Baked Potato achievement.space.desc=Fail in every way possible and waste funds worth 90 million dollars. diff --git a/src/main/resources/assets/hbm/textures/armor/robes_1.png b/src/main/resources/assets/hbm/textures/armor/robes_1.png new file mode 100644 index 0000000000000000000000000000000000000000..35d89ec094acb3c3ac479e6e1b21e9407ef2c62c GIT binary patch literal 1273 zcmV@p$Zc?VJMu zXsrPNZQDXA1!D}nUrzJhLn#I49F$VHy}eak-}p?ieI|MDgF(Fa-a~60j0FIt6tvbW z^LJT#Ilws=4CXzJBMRp8dGyY3I7HjFTVC$=rPBd4P$?C`8vv}e!T8B!5^Z-`mOjg} z4_fy2q|*U3p4R{Z%-gmNs8}cDg#R0%chSPn2cp2ZO;c;hfG8V2W#+CJF~;0$!&=zSwn9$H&K>F|D-@Kj4M! zopYGYX3>jzo(CgkMvy{1)GgB`uypRt&CREJ$r@t&NF6dHWb-r{jZjq;=JPr7Jl_fU1AukTt-zBhuMYxb_K-Wu*e41A zU@#bjtg#F52LuVqP>^HJIqdK6uM|2(Q9x!8tu>4>5s}Kykd96>&Sy&}4o9O=w92Zg z-h5{~9((USs;Y{{i=u#Y4tIBV8)1Ju9((ePF$UMy*Bj~U)ebY(>$>ixw5qDLbwg1U z?_J-D$cAhi(#rwwk+;ZgTg10b{^+HtuIt{rzbW$A~*A)2Q7$z{HXEZnxiAscTA z&kV`#vUgw@lx68hqft~cTe}3GJZxbhrj)|-^D_Xf7|Wt7Eu~4=)WgG?tE;OwZQK}3 zWPaHc0l;5>{2Q+S`92B8t`lYnw%lyDnPp@Kq4Dw^S<3J2?ZH|bvRIdF%mK{zX+!jF z@D#3pEWQAUo1~^`LaUvgI;|_FsaN(Jd`4YevM~Y(dF~2p2^tM7ox!}H8Y+LX zK$1Jl=dz1rDA0Hresb)?9UyxMY2fdF{s#XyJP;#5#(a7{Aa|SJIni&6y-QkBClo7A;Yjwy0mGf2LNYhXP8c>xVX6J zR3J%8ic%`@z>me3s02ICt;q>l}<=QsBen2KwRl%S%&lTa{$ZcWwBVSRD$we z*7-D?|0OID@Dvdu=SWC%j6%nd@aQZW$#EIyvd?%=!L@>sEX#0udWw^i6Xbc`Pl;%V zRMGj&K^625W` zMBd}$W3+~Yg989BPQ1Ur$Km1O%0X_Y1F|d&2$)W%xV*gVR6v7R=F0wGB0$D1=g8gU zPRn8kK-5&Ryk6I6$@|G&`M$Q7H+g|L1j~;OOXR?fIcn3X8=eEM_DwRs5QmIrv4H_G^+pRHkeo2JW=``_K5@~E;W-v2|79Dqi z$A+e9kW%^>0e;K?Gy50;=x{g~5y8x|;So49Lsg-w0031jJ}!`%;e0;NTB+nU?*S4~ zd4O*rfLtDC1`)yie*e#P{~1g~5D^g3ApL!ZV`lgmz+xIDi%6NofX%GzxMxQ!2_R?0 z+(|&*T@fj}Dk4RUSQ<_&k-3v%tpgYYrmB-bV;RKpTw&koD1fS#z7QYJkR=4}P}g+^ z0BzgC%+U8e+P1~@dM!?y%?5qnm-%Y70ukYMyJ5Xv4^9df(}i_GecUun=_M|x`vAkN zW9FA%#na_-@gEofJmwbc=(=t)ci;VfZ@y^Hn%GR^{Q&^H>3Yyn1h>DlxjwD#Znv9U zq+&^l2voJ4D4ree8*zIS;CMW~HUpmhfCrRP{!~0xfgFsNh>PPsv8OO|DUWwv#h(@c t$U*voU5MXKi&!S(qZRlTWqjv&6<=88C5vrM4{HDb002ovPDHLkV1g7t*rxyh literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/ash_digamma.png b/src/main/resources/assets/hbm/textures/blocks/ash_digamma.png new file mode 100644 index 0000000000000000000000000000000000000000..ef9bc57f87b65a6a541a32267f21fa712d9bfaa6 GIT binary patch literal 864 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/fire_digamma.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/fire_digamma.png.mcmeta new file mode 100644 index 000000000..df9cfce6e --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/fire_digamma.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": { } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_debris_digamma.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_debris_digamma.png new file mode 100644 index 0000000000000000000000000000000000000000..de1ad606df9403779283aacf377152abbf2be402 GIT binary patch literal 407 zcmV;I0cie-P)>%=Q(O-hSnO)4EOsT?2OyCA*B?bh=dYm zhKS&FI$@e7JfBZY)AX(Z01;tbSD5`yLquR^s49pk@+l>(>k1-ztL|m}7qwQ@T7$&# zEFuH5nSFr)VBhyYNw|N_rMA{kNcr+_EF3Xr4%qTwr#_*EJ!I0xY&VvEFvHx?E4--B0|nNnu%zz zco@o?a?T-{h>%hmSbN*qm)Keha7t-7p1#qW-62+0)LKzW304P*NZh@LWBmc~hIyW$ zs$k~$k$Oj%IgadnK96_scsvHFz2C=ie2voE`~xha?jBMg@sa=l002ovPDHLkV1jRO Bu228~ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/ammo_rocket_digamma.png b/src/main/resources/assets/hbm/textures/items/ammo_rocket_digamma.png new file mode 100644 index 0000000000000000000000000000000000000000..785b7dd163263c6aced4087210ef3657526c7f57 GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2F47%Tboxu zn{`