slight musky man nerf

This commit is contained in:
Boblet 2026-02-23 10:30:24 +01:00
parent 18074097c7
commit e20d28f1d6
4 changed files with 48 additions and 12 deletions

View File

@ -2,6 +2,14 @@
* Target pistol * Target pistol
* Weapon steel tier pistol that holds 15 rounds and shoots .22 LR * Weapon steel tier pistol that holds 15 rounds and shoots .22 LR
* Accepts silencers * 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 ## Changed
* Reworked the industrial turbine * Reworked the industrial turbine
@ -24,6 +32,8 @@
* Cleaned up a ton of unused assets * 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` * 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 * 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
* Fixed proxy tiles that do not use electricity at all visually connecting to cables * Fixed proxy tiles that do not use electricity at all visually connecting to cables

View File

@ -66,17 +66,13 @@ public class EntityMaskMan extends EntityMob implements IBossDisplayData, IRadia
return true; return true;
} }
if(source.isFireDamage()) if(source.isFireDamage()) amount = 0;
amount = 0; if(source.isMagicDamage()) amount = 0;
if(source.isMagicDamage()) if(source.isProjectile()) amount *= 0.5F;
amount = 0; if(source.isExplosion()) amount *= 0.5F;
if(source.isProjectile())
amount *= 0.25F;
if(source.isExplosion())
amount *= 0.5F;
if(amount > 50) { if(amount > 50) {
amount = 50 + (amount - 50) * 0.25F; amount = 50 + (amount - 50) * 0.5F;
} }
return super.attackEntityFrom(source, amount); return super.attackEntityFrom(source, amount);

View File

@ -1,7 +1,12 @@
package com.hbm.items.armor; package com.hbm.items.armor;
import java.util.UUID;
import org.lwjgl.opengl.GL11; 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.main.ResourceManager;
import com.hbm.render.item.ItemRenderBase; import com.hbm.render.item.ItemRenderBase;
import com.hbm.render.model.ModelArmorNCRPA; import com.hbm.render.model.ModelArmorNCRPA;
@ -11,9 +16,12 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.model.ModelBiped; import net.minecraft.client.model.ModelBiped;
import net.minecraft.entity.EntityLivingBase; 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.entity.player.EntityPlayer;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.client.IItemRenderer; import net.minecraftforge.client.IItemRenderer;
public class ArmorNCRPA extends ArmorFSBPowered implements IItemRendererProvider, IPAWeaponsProvider { public class ArmorNCRPA extends ArmorFSBPowered implements IItemRendererProvider, IPAWeaponsProvider {
@ -29,13 +37,34 @@ public class ArmorNCRPA extends ArmorFSBPowered implements IItemRendererProvider
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) { 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); for(int i = 0; i < 4; i++) models[i] = new ModelArmorNCRPA(i);
} }
return models[armorSlot]; 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 public Item getItemForRenderer() { return this; }
@Override @Override

View File

@ -23,8 +23,8 @@ import net.minecraft.util.MovingObjectPosition;
public class ArmorNCRPAMelee implements IPAMelee { public class ArmorNCRPAMelee implements IPAMelee {
@Override public void clickPrimary(ItemStack stack, LambdaContext ctx) { XFactoryPA.doSwing(stack, ctx, GunAnimation.CYCLE, 30); } @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, 40); } @Override public void clickSecondary(ItemStack stack, LambdaContext ctx) { XFactoryPA.doSwing(stack, ctx, GunAnimation.ALT_CYCLE, 30); }
@Override @Override
public void orchestra(ItemStack stack, LambdaContext ctx) { public void orchestra(ItemStack stack, LambdaContext ctx) {
@ -48,6 +48,7 @@ public class ArmorNCRPAMelee implements IPAMelee {
if(mop.entityHit instanceof EntityLivingBase) { if(mop.entityHit instanceof EntityLivingBase) {
EntityLivingBase living = (EntityLivingBase) mop.entityHit; 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); EntityDamageUtil.attackEntityFromNT((EntityLivingBase) mop.entityHit, DamageSource.causePlayerDamage(ctx.getPlayer()), damage, true, false, knockback, dt, pierce);
if(!living.isEntityAlive()) ConfettiUtil.gib(living); if(!living.isEntityAlive()) ConfettiUtil.gib(living);
} else { } else {