From e20d28f1d6f88b807f162ce1f3316bd632f9e3c0 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 23 Feb 2026 10:30:24 +0100 Subject: [PATCH] slight musky man nerf --- changelog | 10 ++++++ .../com/hbm/entity/mob/EntityMaskMan.java | 14 +++------ .../java/com/hbm/items/armor/ArmorNCRPA.java | 31 ++++++++++++++++++- .../com/hbm/items/armor/ArmorNCRPAMelee.java | 5 +-- 4 files changed, 48 insertions(+), 12 deletions(-) diff --git a/changelog b/changelog index ffcf5eb22..d3dc84d3d 100644 --- a/changelog +++ b/changelog @@ -2,6 +2,14 @@ * Target pistol * Weapon steel tier pistol that holds 15 rounds and shoots .22 LR * Accepts silencers +* NCR Ranger Power Armor + * Legendary set, like the remnants power armor + * Stats are largely similar, but has a speed boost when sprinting + * Comes with the power armor - melee controller item + * If the full set is equipped, the melee controller allows for powerful melee attacks + * Left click does two rapid swings, right click causes both arms to swing at once + * The NCRPA's blades are armor-piercing and gib enemies on death + * The blades do 250% damage on large enemies, i.e. ones with 100 or more max health ## Changed * Reworked the industrial turbine @@ -24,6 +32,8 @@ * Cleaned up a ton of unused assets * The old crucible smelting rules when not using a template can be restores with the `/ntmserver` value `LEGACY_CRUCIBLE_RULES` * Due to repeated complaints, power armor sounds are now generally more quiet, with 25% volume for steps and 50% volume for jumping and landing +* Reduced mask man's projectile resistance from 75% to 50% +* Reduced maskman's resistance to damage above 50 from 75% to 50% # Fixed * Fixed proxy tiles that do not use electricity at all visually connecting to cables diff --git a/src/main/java/com/hbm/entity/mob/EntityMaskMan.java b/src/main/java/com/hbm/entity/mob/EntityMaskMan.java index f4814358d..64e1658c0 100644 --- a/src/main/java/com/hbm/entity/mob/EntityMaskMan.java +++ b/src/main/java/com/hbm/entity/mob/EntityMaskMan.java @@ -66,17 +66,13 @@ public class EntityMaskMan extends EntityMob implements IBossDisplayData, IRadia return true; } - if(source.isFireDamage()) - amount = 0; - if(source.isMagicDamage()) - amount = 0; - if(source.isProjectile()) - amount *= 0.25F; - if(source.isExplosion()) - amount *= 0.5F; + if(source.isFireDamage()) amount = 0; + if(source.isMagicDamage()) amount = 0; + if(source.isProjectile()) amount *= 0.5F; + if(source.isExplosion()) amount *= 0.5F; if(amount > 50) { - amount = 50 + (amount - 50) * 0.25F; + amount = 50 + (amount - 50) * 0.5F; } return super.attackEntityFrom(source, amount); diff --git a/src/main/java/com/hbm/items/armor/ArmorNCRPA.java b/src/main/java/com/hbm/items/armor/ArmorNCRPA.java index d109693d5..69d19c527 100644 --- a/src/main/java/com/hbm/items/armor/ArmorNCRPA.java +++ b/src/main/java/com/hbm/items/armor/ArmorNCRPA.java @@ -1,7 +1,12 @@ package com.hbm.items.armor; +import java.util.UUID; + import org.lwjgl.opengl.GL11; +import com.google.common.collect.Multimap; +import com.hbm.extprop.HbmPlayerProps; +import com.hbm.items.ModItems; import com.hbm.main.ResourceManager; import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorNCRPA; @@ -11,9 +16,12 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.world.World; import net.minecraftforge.client.IItemRenderer; public class ArmorNCRPA extends ArmorFSBPowered implements IItemRendererProvider, IPAWeaponsProvider { @@ -29,13 +37,34 @@ public class ArmorNCRPA extends ArmorFSBPowered implements IItemRendererProvider @SideOnly(Side.CLIENT) public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) { - if(models == null) { models = new ModelArmorNCRPA[4]; + if(models == null) { + models = new ModelArmorNCRPA[4]; for(int i = 0; i < 4; i++) models[i] = new ModelArmorNCRPA(i); } return models[armorSlot]; } + private static final UUID speed = UUID.fromString("6ab858ba-d712-485c-bae9-e5e765fc555a"); + + @Override + public void onArmorTick(World world, EntityPlayer player, ItemStack stack) { + super.onArmorTick(world, player, stack); + + if(this != ModItems.ncrpa_plate) return; + + HbmPlayerProps props = HbmPlayerProps.getData(player); + + /// SPEED /// + Multimap multimap = super.getAttributeModifiers(stack); + multimap.put(SharedMonsterAttributes.movementSpeed.getAttributeUnlocalizedName(), new AttributeModifier(speed, "NCRPA SPEED", 0.1, 0)); + player.getAttributeMap().removeAttributeModifiers(multimap); + + if(player.isSprinting()) { + player.getAttributeMap().applyAttributeModifiers(multimap); + } + } + @Override public Item getItemForRenderer() { return this; } @Override diff --git a/src/main/java/com/hbm/items/armor/ArmorNCRPAMelee.java b/src/main/java/com/hbm/items/armor/ArmorNCRPAMelee.java index 5a586c8f3..b06e48471 100644 --- a/src/main/java/com/hbm/items/armor/ArmorNCRPAMelee.java +++ b/src/main/java/com/hbm/items/armor/ArmorNCRPAMelee.java @@ -23,8 +23,8 @@ import net.minecraft.util.MovingObjectPosition; public class ArmorNCRPAMelee implements IPAMelee { - @Override public void clickPrimary(ItemStack stack, LambdaContext ctx) { XFactoryPA.doSwing(stack, ctx, GunAnimation.CYCLE, 30); } - @Override public void clickSecondary(ItemStack stack, LambdaContext ctx) { XFactoryPA.doSwing(stack, ctx, GunAnimation.ALT_CYCLE, 40); } + @Override public void clickPrimary(ItemStack stack, LambdaContext ctx) { XFactoryPA.doSwing(stack, ctx, GunAnimation.CYCLE, 25); } + @Override public void clickSecondary(ItemStack stack, LambdaContext ctx) { XFactoryPA.doSwing(stack, ctx, GunAnimation.ALT_CYCLE, 30); } @Override public void orchestra(ItemStack stack, LambdaContext ctx) { @@ -48,6 +48,7 @@ public class ArmorNCRPAMelee implements IPAMelee { if(mop.entityHit instanceof EntityLivingBase) { EntityLivingBase living = (EntityLivingBase) mop.entityHit; + if(living.getMaxHealth() >= 100) damage *= 2.5; EntityDamageUtil.attackEntityFromNT((EntityLivingBase) mop.entityHit, DamageSource.causePlayerDamage(ctx.getPlayer()), damage, true, false, knockback, dt, pierce); if(!living.isEntityAlive()) ConfettiUtil.gib(living); } else {