mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
I18n implementation for guns
This commit is contained in:
parent
3f641a843b
commit
9a0cadaf9d
@ -29,6 +29,7 @@ import com.hbm.render.util.RenderScreenOverlay;
|
|||||||
import com.hbm.sound.AudioWrapper;
|
import com.hbm.sound.AudioWrapper;
|
||||||
import com.hbm.util.BobMathUtil;
|
import com.hbm.util.BobMathUtil;
|
||||||
import com.hbm.util.EnumUtil;
|
import com.hbm.util.EnumUtil;
|
||||||
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
@ -55,10 +56,10 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
|
|||||||
public long[] lastShot;
|
public long[] lastShot;
|
||||||
/** [0;1] randomized every shot for various rendering applications */
|
/** [0;1] randomized every shot for various rendering applications */
|
||||||
public double shotRand = 0D;
|
public double shotRand = 0D;
|
||||||
|
|
||||||
public static List<Item> secrets = new ArrayList();
|
public static List<Item> secrets = new ArrayList();
|
||||||
public List<ComparableStack> recognizedMods = new ArrayList();
|
public List<ComparableStack> recognizedMods = new ArrayList();
|
||||||
|
|
||||||
public static final DecimalFormatSymbols SYMBOLS_US = new DecimalFormatSymbols(Locale.US);
|
public static final DecimalFormatSymbols SYMBOLS_US = new DecimalFormatSymbols(Locale.US);
|
||||||
public static final DecimalFormat FORMAT_DMG = new DecimalFormat("#.##", SYMBOLS_US);
|
public static final DecimalFormat FORMAT_DMG = new DecimalFormat("#.##", SYMBOLS_US);
|
||||||
|
|
||||||
@ -68,20 +69,20 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
|
|||||||
public static float recoilRebound = 0.25F;
|
public static float recoilRebound = 0.25F;
|
||||||
public static float offsetVertical = 0;
|
public static float offsetVertical = 0;
|
||||||
public static float offsetHorizontal = 0;
|
public static float offsetHorizontal = 0;
|
||||||
|
|
||||||
public static void setupRecoil(float vertical, float horizontal, float decay, float rebound) {
|
public static void setupRecoil(float vertical, float horizontal, float decay, float rebound) {
|
||||||
recoilVertical += vertical;
|
recoilVertical += vertical;
|
||||||
recoilHorizontal += horizontal;
|
recoilHorizontal += horizontal;
|
||||||
recoilDecay = decay;
|
recoilDecay = decay;
|
||||||
recoilRebound = rebound;
|
recoilRebound = rebound;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setupRecoil(float vertical, float horizontal) {
|
public static void setupRecoil(float vertical, float horizontal) {
|
||||||
setupRecoil(vertical, horizontal, 0.75F, 0.25F);
|
setupRecoil(vertical, horizontal, 0.75F, 0.25F);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final String O_GUNCONFIG = "O_GUNCONFIG_";
|
public static final String O_GUNCONFIG = "O_GUNCONFIG_";
|
||||||
|
|
||||||
public static final String KEY_DRAWN = "drawn";
|
public static final String KEY_DRAWN = "drawn";
|
||||||
public static final String KEY_AIMING = "aiming";
|
public static final String KEY_AIMING = "aiming";
|
||||||
public static final String KEY_MODE = "mode_";
|
public static final String KEY_MODE = "mode_";
|
||||||
@ -98,28 +99,28 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
|
|||||||
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 final String KEY_EQUIPPED = "eqipped";
|
||||||
|
|
||||||
public static ConcurrentHashMap<EntityLivingBase, AudioWrapper> loopedSounds = new ConcurrentHashMap();
|
public static ConcurrentHashMap<EntityLivingBase, AudioWrapper> loopedSounds = new ConcurrentHashMap();
|
||||||
|
|
||||||
public static float prevAimingProgress;
|
public static float prevAimingProgress;
|
||||||
public static float aimingProgress;
|
public static float aimingProgress;
|
||||||
|
|
||||||
/** NEVER ACCESS DIRECTLY - USE GETTER */
|
/** NEVER ACCESS DIRECTLY - USE GETTER */
|
||||||
protected GunConfig[] configs_DNA;
|
protected GunConfig[] configs_DNA;
|
||||||
|
|
||||||
public Function<ItemStack, String> LAMBDA_NAME_MUTATOR;
|
public Function<ItemStack, String> LAMBDA_NAME_MUTATOR;
|
||||||
public WeaponQuality quality;
|
public WeaponQuality quality;
|
||||||
|
|
||||||
public GunConfig getConfig(ItemStack stack, int index) {
|
public GunConfig getConfig(ItemStack stack, int index) {
|
||||||
GunConfig cfg = configs_DNA[index];
|
GunConfig cfg = configs_DNA[index];
|
||||||
if(stack == null) return cfg;
|
if(stack == null) return cfg;
|
||||||
return WeaponModManager.eval(cfg, stack, O_GUNCONFIG + index, this, index);
|
return WeaponModManager.eval(cfg, stack, O_GUNCONFIG + index, this, index);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getConfigCount() {
|
public int getConfigCount() {
|
||||||
return configs_DNA.length;
|
return configs_DNA.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemGunBaseNT(WeaponQuality quality, GunConfig... cfg) {
|
public ItemGunBaseNT(WeaponQuality quality, GunConfig... cfg) {
|
||||||
this.setMaxStackSize(1);
|
this.setMaxStackSize(1);
|
||||||
this.configs_DNA = cfg;
|
this.configs_DNA = cfg;
|
||||||
@ -130,7 +131,7 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
|
|||||||
if(quality == WeaponQuality.LEGENDARY || quality == WeaponQuality.SECRET) this.secrets.add(this);
|
if(quality == WeaponQuality.LEGENDARY || quality == WeaponQuality.SECRET) this.secrets.add(this);
|
||||||
this.setTextureName(RefStrings.MODID + ":gun_darter");
|
this.setTextureName(RefStrings.MODID + ":gun_darter");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static enum WeaponQuality {
|
public static enum WeaponQuality {
|
||||||
A_SIDE,
|
A_SIDE,
|
||||||
B_SIDE,
|
B_SIDE,
|
||||||
@ -148,73 +149,73 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
|
|||||||
RELOADING, //forced delay after which a reload action happens, may be canceled (TBI)
|
RELOADING, //forced delay after which a reload action happens, may be canceled (TBI)
|
||||||
JAMMED, //forced delay due to jamming
|
JAMMED, //forced delay due to jamming
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemGunBaseNT setNameMutator(Function<ItemStack, String> lambda) {
|
public ItemGunBaseNT setNameMutator(Function<ItemStack, String> lambda) {
|
||||||
this.LAMBDA_NAME_MUTATOR = lambda;
|
this.LAMBDA_NAME_MUTATOR = lambda;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getItemStackDisplayName(ItemStack stack) {
|
public String getItemStackDisplayName(ItemStack stack) {
|
||||||
|
|
||||||
if(this.LAMBDA_NAME_MUTATOR != null) {
|
if(this.LAMBDA_NAME_MUTATOR != null) {
|
||||||
String unloc = this.LAMBDA_NAME_MUTATOR.apply(stack);
|
String unloc = this.LAMBDA_NAME_MUTATOR.apply(stack);
|
||||||
if(unloc != null) return (StatCollector.translateToLocal(unloc + ".name")).trim();
|
if(unloc != null) return (StatCollector.translateToLocal(unloc + ".name")).trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
return super.getItemStackDisplayName(stack);
|
return super.getItemStackDisplayName(stack);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
|
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
|
||||||
|
|
||||||
int configs = this.configs_DNA.length;
|
int configs = this.configs_DNA.length;
|
||||||
for(int i = 0; i < configs; i++) {
|
for(int i = 0; i < configs; i++) {
|
||||||
GunConfig config = getConfig(stack, i);
|
GunConfig config = getConfig(stack, i);
|
||||||
for(Receiver rec : config.getReceivers(stack)) {
|
for(Receiver rec : config.getReceivers(stack)) {
|
||||||
IMagazine mag = rec.getMagazine(stack);
|
IMagazine mag = rec.getMagazine(stack);
|
||||||
list.add("Ammo: " + mag.getIconForHUD(stack, player).getDisplayName() + " " + mag.reportAmmoStateForHUD(stack, player));
|
list.add(I18nUtil.resolveKey("gui.weapon.ammo") + ": " + mag.getIconForHUD(stack, player).getDisplayName() + " " + mag.reportAmmoStateForHUD(stack, player));
|
||||||
float dmg = rec.getBaseDamage(stack);
|
float dmg = rec.getBaseDamage(stack);
|
||||||
list.add("Base Damage: " + FORMAT_DMG.format(dmg));
|
list.add(I18nUtil.resolveKey("gui.weapon.baseDamage") + ": " + FORMAT_DMG.format(dmg));
|
||||||
if(mag.getType(stack, player.inventory) instanceof BulletConfig) {
|
if(mag.getType(stack, player.inventory) instanceof BulletConfig) {
|
||||||
BulletConfig bullet = (BulletConfig) mag.getType(stack, player.inventory);
|
BulletConfig bullet = (BulletConfig) mag.getType(stack, player.inventory);
|
||||||
int min = (int) (bullet.projectilesMin * rec.getSplitProjectiles(stack));
|
int min = (int) (bullet.projectilesMin * rec.getSplitProjectiles(stack));
|
||||||
int max = (int) (bullet.projectilesMax * rec.getSplitProjectiles(stack));
|
int max = (int) (bullet.projectilesMax * rec.getSplitProjectiles(stack));
|
||||||
list.add("Damage with current ammo: " + FORMAT_DMG.format(dmg * bullet.damageMult) + (min > 1 ? (" x" + (min != max ? (min + "-" + max) : min)) : ""));
|
list.add(I18nUtil.resolveKey("gui.weapon.damageWithAmmo") + ": " + FORMAT_DMG.format(dmg * bullet.damageMult) + (min > 1 ? (" x" + (min != max ? (min + "-" + max) : min)) : ""));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float maxDura = config.getDurability(stack);
|
float maxDura = config.getDurability(stack);
|
||||||
if(maxDura > 0) {
|
if(maxDura > 0) {
|
||||||
int dura = MathHelper.clamp_int((int)((maxDura - this.getWear(stack, i)) * 100 / maxDura), 0, 100);
|
int dura = MathHelper.clamp_int((int)((maxDura - this.getWear(stack, i)) * 100 / maxDura), 0, 100);
|
||||||
list.add("Condition: " + dura + "%");
|
list.add(I18nUtil.resolveKey("gui.weapon.condition") + ": " + dura + "%");
|
||||||
}
|
}
|
||||||
|
|
||||||
for(ItemStack upgrade : WeaponModManager.getUpgradeItems(stack, i)) {
|
for(ItemStack upgrade : WeaponModManager.getUpgradeItems(stack, i)) {
|
||||||
list.add(EnumChatFormatting.YELLOW + upgrade.getDisplayName());
|
list.add(EnumChatFormatting.YELLOW + upgrade.getDisplayName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(this.quality) {
|
switch(this.quality) {
|
||||||
case A_SIDE: list.add(EnumChatFormatting.YELLOW + "Standard Arsenal"); break;
|
case A_SIDE: list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("gui.weapon.quality.aside")); break;
|
||||||
case B_SIDE: list.add(EnumChatFormatting.GOLD + "B-Side"); break;
|
case B_SIDE: list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("gui.weapon.quality.bside")); break;
|
||||||
case LEGENDARY: list.add(EnumChatFormatting.RED + "Legendary Weapon"); break;
|
case LEGENDARY: list.add(EnumChatFormatting.RED + I18nUtil.resolveKey("gui.weapon.quality.legendary")); break;
|
||||||
case SPECIAL: list.add(EnumChatFormatting.AQUA + "Special Weapon"); break;
|
case SPECIAL: list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKey("gui.weapon.quality.special")); break;
|
||||||
case UTILITY: list.add(EnumChatFormatting.GREEN + "Utility"); break;
|
case UTILITY: list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey("gui.weapon.quality.utility")); break;
|
||||||
case SECRET: list.add((BobMathUtil.getBlink() ? EnumChatFormatting.DARK_RED : EnumChatFormatting.RED) + "SECRET"); break;
|
case SECRET: list.add((BobMathUtil.getBlink() ? EnumChatFormatting.DARK_RED : EnumChatFormatting.RED) + I18nUtil.resolveKey("gui.weapon.quality.secret")); break;
|
||||||
case DEBUG: list.add((BobMathUtil.getBlink() ? EnumChatFormatting.YELLOW : EnumChatFormatting.GOLD) + "DEBUG"); break;
|
case DEBUG: list.add((BobMathUtil.getBlink() ? EnumChatFormatting.YELLOW : EnumChatFormatting.GOLD) + I18nUtil.resolveKey("gui.weapon.quality.debug")); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(Minecraft.getMinecraft().currentScreen instanceof GUIWeaponTable && !this.recognizedMods.isEmpty()) {
|
if(Minecraft.getMinecraft().currentScreen instanceof GUIWeaponTable && !this.recognizedMods.isEmpty()) {
|
||||||
list.add(EnumChatFormatting.RED + "Accepts:");
|
list.add(EnumChatFormatting.RED + I18nUtil.resolveKey("gui.weapon.accepts" + ":"));
|
||||||
for(ComparableStack comp : this.recognizedMods) list.add(EnumChatFormatting.RED + " " + comp.toStack().getDisplayName());
|
for(ComparableStack comp : this.recognizedMods) list.add(EnumChatFormatting.RED + " " + comp.toStack().getDisplayName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canHandleKeybind(EntityPlayer player, ItemStack stack, EnumKeybind keybind) {
|
public boolean canHandleKeybind(EntityPlayer player, ItemStack stack, EnumKeybind keybind) {
|
||||||
return keybind == EnumKeybind.GUN_PRIMARY || keybind == EnumKeybind.GUN_SECONDARY || keybind == EnumKeybind.GUN_TERTIARY || keybind == EnumKeybind.RELOAD;
|
return keybind == EnumKeybind.GUN_PRIMARY || keybind == EnumKeybind.GUN_SECONDARY || keybind == EnumKeybind.GUN_TERTIARY || keybind == EnumKeybind.RELOAD;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handleKeybind(EntityPlayer player, ItemStack stack, EnumKeybind keybind, boolean newState) {
|
public void handleKeybind(EntityPlayer player, ItemStack stack, EnumKeybind keybind, boolean newState) {
|
||||||
handleKeybind(player, player.inventory, stack, keybind, newState);
|
handleKeybind(player, player.inventory, stack, keybind, newState);
|
||||||
@ -222,13 +223,13 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
|
|||||||
|
|
||||||
public void handleKeybind(EntityLivingBase entity, IInventory inventory, ItemStack stack, EnumKeybind keybind, boolean newState) {
|
public void handleKeybind(EntityLivingBase entity, IInventory inventory, ItemStack stack, EnumKeybind keybind, boolean newState) {
|
||||||
if(!GeneralConfig.enableGuns) return;
|
if(!GeneralConfig.enableGuns) return;
|
||||||
|
|
||||||
int configs = this.configs_DNA.length;
|
int configs = this.configs_DNA.length;
|
||||||
|
|
||||||
for(int i = 0; i < configs; i++) {
|
for(int i = 0; i < configs; i++) {
|
||||||
GunConfig config = getConfig(stack, i);
|
GunConfig config = getConfig(stack, i);
|
||||||
LambdaContext ctx = new LambdaContext(config, entity, inventory, i);
|
LambdaContext ctx = new LambdaContext(config, entity, inventory, i);
|
||||||
|
|
||||||
if(keybind == EnumKeybind.GUN_PRIMARY && newState && !getPrimary(stack, i)) { if(config.getPressPrimary(stack) != null) config.getPressPrimary(stack).accept(stack, ctx); this.setPrimary(stack, i, newState); continue; }
|
if(keybind == EnumKeybind.GUN_PRIMARY && newState && !getPrimary(stack, i)) { if(config.getPressPrimary(stack) != null) config.getPressPrimary(stack).accept(stack, ctx); this.setPrimary(stack, i, newState); continue; }
|
||||||
if(keybind == EnumKeybind.GUN_PRIMARY && !newState && getPrimary(stack, i)) { if(config.getReleasePrimary(stack) != null) config.getReleasePrimary(stack).accept(stack, ctx); this.setPrimary(stack, i, newState); continue; }
|
if(keybind == EnumKeybind.GUN_PRIMARY && !newState && getPrimary(stack, i)) { if(config.getReleasePrimary(stack) != null) config.getReleasePrimary(stack).accept(stack, ctx); this.setPrimary(stack, i, newState); continue; }
|
||||||
if(keybind == EnumKeybind.GUN_SECONDARY && newState && !getSecondary(stack, i)) { if(config.getPressSecondary(stack) != null) config.getPressSecondary(stack).accept(stack, ctx); this.setSecondary(stack, i, newState); continue; }
|
if(keybind == EnumKeybind.GUN_SECONDARY && newState && !getSecondary(stack, i)) { if(config.getPressSecondary(stack) != null) config.getPressSecondary(stack).accept(stack, ctx); this.setSecondary(stack, i, newState); continue; }
|
||||||
@ -243,7 +244,7 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
|
|||||||
@Override
|
@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++) {
|
||||||
if(this.getLastAnim(stack, i) == AnimType.EQUIP && this.getAnimTimer(stack, i) < 5) continue;
|
if(this.getLastAnim(stack, i) == AnimType.EQUIP && this.getAnimTimer(stack, i) < 5) continue;
|
||||||
playAnimation(player, stack, AnimType.EQUIP, i);
|
playAnimation(player, stack, AnimType.EQUIP, i);
|
||||||
this.setPrimary(stack, i, false);
|
this.setPrimary(stack, i, false);
|
||||||
this.setSecondary(stack, i, false);
|
this.setSecondary(stack, i, false);
|
||||||
@ -251,7 +252,7 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
|
|||||||
this.setReloadKey(stack, i, false);
|
this.setReloadKey(stack, i, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void playAnimation(EntityPlayer player, ItemStack stack, AnimType type, int index) {
|
public static void playAnimation(EntityPlayer player, ItemStack stack, AnimType type, int index) {
|
||||||
if(player instanceof EntityPlayerMP) {
|
if(player instanceof EntityPlayerMP) {
|
||||||
PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(type.ordinal(), 0, index), (EntityPlayerMP) player);
|
PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(type.ordinal(), 0, index), (EntityPlayerMP) player);
|
||||||
@ -262,7 +263,7 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isHeld) {
|
public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isHeld) {
|
||||||
|
|
||||||
if(!(entity instanceof EntityLivingBase)) return;
|
if(!(entity instanceof EntityLivingBase)) return;
|
||||||
EntityPlayer player = entity instanceof EntityPlayer ? (EntityPlayer) entity : null;
|
EntityPlayer player = entity instanceof EntityPlayer ? (EntityPlayer) entity : null;
|
||||||
int confNo = this.configs_DNA.length;
|
int confNo = this.configs_DNA.length;
|
||||||
@ -272,17 +273,17 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
|
|||||||
configs[i] = this.getConfig(stack, i);
|
configs[i] = this.getConfig(stack, i);
|
||||||
ctx[i] = new LambdaContext(configs[i], (EntityLivingBase) entity, player != null ? player.inventory : null, i);
|
ctx[i] = new LambdaContext(configs[i], (EntityLivingBase) entity, player != null ? player.inventory : null, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(world.isRemote) {
|
if(world.isRemote) {
|
||||||
|
|
||||||
if(isHeld && player == MainRegistry.proxy.me()) {
|
if(isHeld && player == MainRegistry.proxy.me()) {
|
||||||
|
|
||||||
/// DEBUG ///
|
/// DEBUG ///
|
||||||
/*Vec3 offset = Vec3.createVectorHelper(-0.2, -0.1, 0.75);
|
/*Vec3 offset = Vec3.createVectorHelper(-0.2, -0.1, 0.75);
|
||||||
offset.rotateAroundX(-entity.rotationPitch / 180F * (float) Math.PI);
|
offset.rotateAroundX(-entity.rotationPitch / 180F * (float) Math.PI);
|
||||||
offset.rotateAroundY(-entity.rotationYaw / 180F * (float) Math.PI);
|
offset.rotateAroundY(-entity.rotationYaw / 180F * (float) Math.PI);
|
||||||
world.spawnParticle("flame", entity.posX + offset.xCoord, entity.posY + entity.getEyeHeight() + offset.yCoord, entity.posZ + offset.zCoord, 0, 0, 0);*/
|
world.spawnParticle("flame", entity.posX + offset.xCoord, entity.posY + entity.getEyeHeight() + offset.yCoord, entity.posZ + offset.zCoord, 0, 0, 0);*/
|
||||||
|
|
||||||
/// AIMING ///
|
/// AIMING ///
|
||||||
prevAimingProgress = aimingProgress;
|
prevAimingProgress = aimingProgress;
|
||||||
boolean aiming = this.getIsAiming(stack);
|
boolean aiming = this.getIsAiming(stack);
|
||||||
@ -290,12 +291,12 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
|
|||||||
if(aiming && aimingProgress < 1F) aimingProgress += aimSpeed;
|
if(aiming && aimingProgress < 1F) aimingProgress += aimSpeed;
|
||||||
if(!aiming && aimingProgress > 0F) aimingProgress -= aimSpeed;
|
if(!aiming && aimingProgress > 0F) aimingProgress -= aimSpeed;
|
||||||
aimingProgress = MathHelper.clamp_float(aimingProgress, 0F, 1F);
|
aimingProgress = MathHelper.clamp_float(aimingProgress, 0F, 1F);
|
||||||
|
|
||||||
/// SMOKE NODES ///
|
/// SMOKE NODES ///
|
||||||
for(int i = 0; i < confNo; i++) if(configs[i].getSmokeHandler(stack) != null) {
|
for(int i = 0; i < confNo; i++) if(configs[i].getSmokeHandler(stack) != null) {
|
||||||
configs[i].getSmokeHandler(stack).accept(stack, ctx[i]);
|
configs[i].getSmokeHandler(stack).accept(stack, ctx[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int i = 0; i < confNo; i++) {
|
for(int i = 0; i < confNo; i++) {
|
||||||
BiConsumer<ItemStack, LambdaContext> orchestra = configs[i].getOrchestra(stack);
|
BiConsumer<ItemStack, LambdaContext> orchestra = configs[i].getOrchestra(stack);
|
||||||
if(orchestra != null) orchestra.accept(stack, ctx[i]);
|
if(orchestra != null) orchestra.accept(stack, ctx[i]);
|
||||||
@ -303,18 +304,18 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// ON EQUIP ///
|
/// ON EQUIP ///
|
||||||
if(player != null) {
|
if(player != null) {
|
||||||
boolean wasHeld = this.getIsEquipped(stack);
|
boolean wasHeld = this.getIsEquipped(stack);
|
||||||
|
|
||||||
if(!wasHeld && isHeld && player != null) {
|
if(!wasHeld && isHeld && player != null) {
|
||||||
this.onEquip(player, stack);
|
this.onEquip(player, stack);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setIsEquipped(stack, isHeld);
|
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++) {
|
||||||
@ -329,13 +330,13 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
|
|||||||
this.setReloadCancel(stack, false);
|
this.setReloadCancel(stack, false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int i = 0; i < confNo; i++) for(int k = 0; k == 0 || (k < 2 && ArmorTrenchmaster.isTrenchMaster(player) && this.getState(stack, i) == GunState.RELOADING); k++) {
|
for(int i = 0; i < confNo; i++) for(int k = 0; k == 0 || (k < 2 && ArmorTrenchmaster.isTrenchMaster(player) && this.getState(stack, i) == GunState.RELOADING); k++) {
|
||||||
BiConsumer<ItemStack, LambdaContext> orchestra = configs[i].getOrchestra(stack);
|
BiConsumer<ItemStack, LambdaContext> orchestra = configs[i].getOrchestra(stack);
|
||||||
if(orchestra != null) orchestra.accept(stack, ctx[i]);
|
if(orchestra != null) orchestra.accept(stack, ctx[i]);
|
||||||
|
|
||||||
setAnimTimer(stack, i, getAnimTimer(stack, i) + 1);
|
setAnimTimer(stack, i, getAnimTimer(stack, i) + 1);
|
||||||
|
|
||||||
/// STTATE MACHINE ///
|
/// STTATE MACHINE ///
|
||||||
int timer = this.getTimer(stack, i);
|
int timer = this.getTimer(stack, i);
|
||||||
if(timer > 0) this.setTimer(stack, i, timer - 1);
|
if(timer > 0) this.setTimer(stack, i, timer - 1);
|
||||||
@ -371,7 +372,7 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
|
|||||||
public static void setLastAnim(ItemStack stack, int index, AnimType value) { setValueInt(stack, KEY_LASTANIM + index, value.ordinal()); }
|
public static void setLastAnim(ItemStack stack, int index, AnimType value) { setValueInt(stack, KEY_LASTANIM + index, value.ordinal()); }
|
||||||
public static int getAnimTimer(ItemStack stack, int index) { return getValueInt(stack, KEY_ANIMTIMER + index); }
|
public static int getAnimTimer(ItemStack stack, int index) { return getValueInt(stack, KEY_ANIMTIMER + index); }
|
||||||
public static void setAnimTimer(ItemStack stack, int index, int value) { setValueInt(stack, KEY_ANIMTIMER + index, value); }
|
public static void setAnimTimer(ItemStack stack, int index, int value) { setValueInt(stack, KEY_ANIMTIMER + index, value); }
|
||||||
|
|
||||||
// BUTTON STATES //
|
// BUTTON STATES //
|
||||||
public static boolean getPrimary(ItemStack stack, int index) { return getValueBool(stack, KEY_PRIMARY + index); }
|
public static boolean getPrimary(ItemStack stack, int index) { return getValueBool(stack, KEY_PRIMARY + index); }
|
||||||
public static void setPrimary(ItemStack stack, int index, boolean value) { setValueBool(stack, KEY_PRIMARY + index, value); }
|
public static void setPrimary(ItemStack stack, int index, boolean value) { setValueBool(stack, KEY_PRIMARY + index, value); }
|
||||||
@ -387,28 +388,28 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
|
|||||||
// EQUIPPED //
|
// EQUIPPED //
|
||||||
public static boolean getIsEquipped(ItemStack stack) { return getValueBool(stack, KEY_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); }
|
public static void setIsEquipped(ItemStack stack, boolean value) { setValueBool(stack, KEY_EQUIPPED, value); }
|
||||||
|
|
||||||
|
|
||||||
/// UTIL ///
|
/// UTIL ///
|
||||||
public static int getValueInt(ItemStack stack, String name) { if(stack.hasTagCompound()) return stack.getTagCompound().getInteger(name); return 0; }
|
public static int getValueInt(ItemStack stack, String name) { if(stack.hasTagCompound()) return stack.getTagCompound().getInteger(name); return 0; }
|
||||||
public static void setValueInt(ItemStack stack, String name, int value) { if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.getTagCompound().setInteger(name, value); }
|
public static void setValueInt(ItemStack stack, String name, int value) { if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.getTagCompound().setInteger(name, value); }
|
||||||
|
|
||||||
public static float getValueFloat(ItemStack stack, String name) { if(stack.hasTagCompound()) return stack.getTagCompound().getFloat(name); return 0; }
|
public static float getValueFloat(ItemStack stack, String name) { if(stack.hasTagCompound()) return stack.getTagCompound().getFloat(name); return 0; }
|
||||||
public static void setValueFloat(ItemStack stack, String name, float value) { if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.getTagCompound().setFloat(name, value); }
|
public static void setValueFloat(ItemStack stack, String name, float value) { if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.getTagCompound().setFloat(name, value); }
|
||||||
|
|
||||||
public static byte getValueByte(ItemStack stack, String name) { if(stack.hasTagCompound()) return stack.getTagCompound().getByte(name); return 0; }
|
public static byte getValueByte(ItemStack stack, String name) { if(stack.hasTagCompound()) return stack.getTagCompound().getByte(name); return 0; }
|
||||||
public static void setValueByte(ItemStack stack, String name, byte value) { if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.getTagCompound().setByte(name, value); }
|
public static void setValueByte(ItemStack stack, String name, byte value) { if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.getTagCompound().setByte(name, value); }
|
||||||
|
|
||||||
public static boolean getValueBool(ItemStack stack, String name) { if(stack.hasTagCompound()) return stack.getTagCompound().getBoolean(name); return false; }
|
public static boolean getValueBool(ItemStack stack, String name) { if(stack.hasTagCompound()) return stack.getTagCompound().getBoolean(name); return false; }
|
||||||
public static void setValueBool(ItemStack stack, String name, boolean value) { if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.getTagCompound().setBoolean(name, value); }
|
public static void setValueBool(ItemStack stack, String name, boolean value) { if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.getTagCompound().setBoolean(name, value); }
|
||||||
|
|
||||||
/** Wrapper for extra context used in most Consumer lambdas which are part of the guncfg */
|
/** Wrapper for extra context used in most Consumer lambdas which are part of the guncfg */
|
||||||
public static class LambdaContext {
|
public static class LambdaContext {
|
||||||
public final GunConfig config;
|
public final GunConfig config;
|
||||||
public final EntityLivingBase entity;
|
public final EntityLivingBase entity;
|
||||||
public final IInventory inventory;
|
public final IInventory inventory;
|
||||||
public final int configIndex;
|
public final int configIndex;
|
||||||
|
|
||||||
public LambdaContext(GunConfig config, EntityLivingBase player, IInventory inventory, int configIndex) {
|
public LambdaContext(GunConfig config, EntityLivingBase player, IInventory inventory, int configIndex) {
|
||||||
this.config = config;
|
this.config = config;
|
||||||
this.entity = player;
|
this.entity = player;
|
||||||
@ -425,42 +426,42 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
|
|||||||
@Override
|
@Override
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public void renderHUD(Pre event, ElementType type, EntityPlayer player, ItemStack stack) {
|
public void renderHUD(Pre event, ElementType type, EntityPlayer player, ItemStack stack) {
|
||||||
|
|
||||||
ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem();
|
ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem();
|
||||||
|
|
||||||
if(type == ElementType.CROSSHAIRS) {
|
if(type == ElementType.CROSSHAIRS) {
|
||||||
event.setCanceled(true);
|
event.setCanceled(true);
|
||||||
GunConfig config = gun.getConfig(stack, 0);
|
GunConfig config = gun.getConfig(stack, 0);
|
||||||
if(config.getHideCrosshair(stack) && aimingProgress >= 1F) return;
|
if(config.getHideCrosshair(stack) && aimingProgress >= 1F) return;
|
||||||
RenderScreenOverlay.renderCustomCrosshairs(event.resolution, Minecraft.getMinecraft().ingameGUI, config.getCrosshair(stack));
|
RenderScreenOverlay.renderCustomCrosshairs(event.resolution, Minecraft.getMinecraft().ingameGUI, config.getCrosshair(stack));
|
||||||
}
|
}
|
||||||
|
|
||||||
int confNo = this.configs_DNA.length;
|
int confNo = this.configs_DNA.length;
|
||||||
|
|
||||||
for(int i = 0; i < confNo; i++) {
|
for(int i = 0; i < confNo; i++) {
|
||||||
IHUDComponent[] components = gun.getConfig(stack, i).getHUDComponents(stack);
|
IHUDComponent[] components = gun.getConfig(stack, i).getHUDComponents(stack);
|
||||||
|
|
||||||
if(components != null) for(IHUDComponent component : components) {
|
if(components != null) for(IHUDComponent component : components) {
|
||||||
int bottomOffset = 0;
|
int bottomOffset = 0;
|
||||||
component.renderHUDComponent(event, type, player, stack, bottomOffset, i);
|
component.renderHUDComponent(event, type, player, stack, bottomOffset, i);
|
||||||
bottomOffset += component.getComponentHeight(player, stack);
|
bottomOffset += component.getComponentHeight(player, stack);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons);
|
Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*@Override
|
/*@Override
|
||||||
public boolean getShareTag() { return false; }*/ // nbt sync dupe fix, didn't work
|
public boolean getShareTag() { return false; }*/ // nbt sync dupe fix, didn't work
|
||||||
|
|
||||||
public static class SmokeNode {
|
public static class SmokeNode {
|
||||||
|
|
||||||
public double forward = 0D;
|
public double forward = 0D;
|
||||||
public double side = 0D;
|
public double side = 0D;
|
||||||
public double lift = 0D;
|
public double lift = 0D;
|
||||||
public double alpha;
|
public double alpha;
|
||||||
public double width = 1D;
|
public double width = 1D;
|
||||||
|
|
||||||
public SmokeNode(double alpha) { this.alpha = alpha; }
|
public SmokeNode(double alpha) { this.alpha = alpha; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6282,3 +6282,124 @@ gui.recipe.enabledFor=Enabled for
|
|||||||
gui.recipe.setRecipe=Click to set recipe
|
gui.recipe.setRecipe=Click to set recipe
|
||||||
|
|
||||||
tile.oc_cable_paintable.name=Paintable Network Cable
|
tile.oc_cable_paintable.name=Paintable Network Cable
|
||||||
|
|
||||||
|
# shared recipe / machine labels
|
||||||
|
gui.recipe.duration=Duration
|
||||||
|
gui.recipe.consumption=Consumption
|
||||||
|
gui.recipe.input=Input
|
||||||
|
gui.recipe.output=Output
|
||||||
|
gui.recipe.mB=mB
|
||||||
|
gui.recipe.atPressure=at
|
||||||
|
gui.recipe.autoswitch=Auto-switch group
|
||||||
|
gui.recipe.enabledFor=Enabled for
|
||||||
|
gui.recipe.setRecipe=Click to set recipe
|
||||||
|
|
||||||
|
# --- Missile / parts (generic) ---
|
||||||
|
gui.missile.warhead=Warhead
|
||||||
|
gui.missile.strength=Strength
|
||||||
|
gui.missile.fuelType=Fuel Type
|
||||||
|
gui.missile.fuelAmount=Fuel amount
|
||||||
|
gui.missile.chipInaccuracy=Chip inaccuracy
|
||||||
|
gui.missile.finInaccuracy=Fin inaccuracy
|
||||||
|
gui.missile.size=Size
|
||||||
|
gui.missile.health=Health
|
||||||
|
gui.missile.fuel=Fuel
|
||||||
|
gui.missile.fuelCapacity=Fuel capacity
|
||||||
|
gui.missile.notLaunchable=Not launchable!
|
||||||
|
|
||||||
|
# missile tiers
|
||||||
|
missile.tier.tier0=Tier 0
|
||||||
|
missile.tier.tier1=Tier 1
|
||||||
|
missile.tier.tier2=Tier 2
|
||||||
|
missile.tier.tier3=Tier 3
|
||||||
|
missile.tier.tier4=Tier 4
|
||||||
|
|
||||||
|
# missile fuel names
|
||||||
|
missile.fuel.solid=Solid Fuel
|
||||||
|
missile.fuel.ethanol_peroxide=Ethanol / Hydrogen Peroxide
|
||||||
|
missile.fuel.kerosene_peroxide=Kerosene / Hydrogen Peroxide
|
||||||
|
missile.fuel.kerosene_loxy=Kerosene / Liquid Oxygen
|
||||||
|
missile.fuel.jetfuel_loxy=Jet Fuel / Liquid Oxygen
|
||||||
|
|
||||||
|
# warheads (used by parts)
|
||||||
|
warhead.he=HE
|
||||||
|
warhead.incendiary=Incendiary
|
||||||
|
warhead.cluster=Cluster
|
||||||
|
warhead.bunker_buster=Bunker Buster
|
||||||
|
warhead.nuclear=Nuclear
|
||||||
|
warhead.thermonuclear=Thermonuclear (TX)
|
||||||
|
warhead.n2=N²
|
||||||
|
warhead.balefire=BF
|
||||||
|
warhead.schrabidium=Schrabidium
|
||||||
|
warhead.taint=Taint
|
||||||
|
warhead.cloud=Cloud
|
||||||
|
warhead.turbine=Turbine
|
||||||
|
|
||||||
|
# part keys
|
||||||
|
part.inaccuracy=Inaccuracy
|
||||||
|
part.size=Size
|
||||||
|
part.type=Type
|
||||||
|
part.strength=Strength
|
||||||
|
part.weight=Weight
|
||||||
|
part.topSize=Top size
|
||||||
|
part.bottomSize=Bottom size
|
||||||
|
part.fuelType=Fuel type
|
||||||
|
part.fuelAmount=Fuel amount
|
||||||
|
part.fuelConsumption=Fuel consumption
|
||||||
|
part.maxPayload=Max. payload
|
||||||
|
part.health=Health
|
||||||
|
part.rarity=Rarity
|
||||||
|
part.by=by
|
||||||
|
part.size.any=Any
|
||||||
|
part.size.none=None
|
||||||
|
|
||||||
|
# fuel extras used by parts
|
||||||
|
fuel.xenon=Xenon
|
||||||
|
fuel.balefire=BF Rocket Fuel
|
||||||
|
|
||||||
|
# part rarity keys (enum-based)
|
||||||
|
part.rarity.common=Common
|
||||||
|
part.rarity.uncommon=Uncommon
|
||||||
|
part.rarity.rare=Rare
|
||||||
|
part.rarity.epic=Epic
|
||||||
|
part.rarity.legendary=Legendary
|
||||||
|
part.rarity.strange=Strange
|
||||||
|
|
||||||
|
# generic / fallback
|
||||||
|
general.na=N/A
|
||||||
|
error.generic=### I AM ERROR ###
|
||||||
|
|
||||||
|
# --- Satellite chips ---
|
||||||
|
satchip.frequency=Satellite frequency
|
||||||
|
satchip.foeq=Gives you an achievement. That's it.
|
||||||
|
satchip.gerald.line1=Single use.
|
||||||
|
satchip.gerald.line2=Requires orbital module.
|
||||||
|
satchip.gerald.line3=Melter of CPUs, bane of every server owner.
|
||||||
|
satchip.laser=Allows to summon lasers with a 15 second cooldown.
|
||||||
|
satchip.mapper=Displays currently loaded chunks.
|
||||||
|
satchip.miner=Will deliver ore powders to a cargo landing pad.
|
||||||
|
satchip.lunar_miner=Mines moon turf to deliver it to a cargo landing pad.
|
||||||
|
satchip.radar=Shows a map of active entities.
|
||||||
|
satchip.resonator=Allows for teleportation with no cooldown.
|
||||||
|
satchip.scanner=Creates a topdown map of underground ores.
|
||||||
|
|
||||||
|
# --- Items (bomb components) ---
|
||||||
|
item.bomb_part.used_in=Used in:
|
||||||
|
item.n2.mine=N² Mine
|
||||||
|
item.fleija.name=F.L.E.I.J.A.
|
||||||
|
item.solinium.name=Solinium Bomb
|
||||||
|
|
||||||
|
# --- Weapon / gun tooltips ---
|
||||||
|
gui.weapon.ammo=Ammo
|
||||||
|
gui.weapon.baseDamage=Base Damage
|
||||||
|
gui.weapon.damageWithAmmo=Damage with current ammo
|
||||||
|
gui.weapon.condition=Condition
|
||||||
|
gui.weapon.accepts=Accepts
|
||||||
|
|
||||||
|
gui.weapon.quality.aside=Standard Arsenal
|
||||||
|
gui.weapon.quality.bside=B-Side
|
||||||
|
gui.weapon.quality.legendary=Legendary Weapon
|
||||||
|
gui.weapon.quality.special=Special Weapon
|
||||||
|
gui.weapon.quality.utility=Utility
|
||||||
|
gui.weapon.quality.secret=SECRET
|
||||||
|
gui.weapon.quality.debug=DEBUG
|
||||||
|
|||||||
@ -4588,19 +4588,6 @@ item.sat_radar.name=Спутник с радиолокационным зонд
|
|||||||
item.sat_resonator.name=Спутник с Зен-Резонатором
|
item.sat_resonator.name=Спутник с Зен-Резонатором
|
||||||
item.sat_scanner.name=Спутник с модулем глубинно-ресурсного сканирования
|
item.sat_scanner.name=Спутник с модулем глубинно-ресурсного сканирования
|
||||||
|
|
||||||
item.sat.desc.frequency=Частота спутника
|
|
||||||
item.sat.desc.foeq=Даёт тебе достижение. Это всё.
|
|
||||||
item.sat.desc.gerald.single_use=Одноразовое.
|
|
||||||
item.sat.desc.gerald.orbital_module=Требует орбитальный модуль.
|
|
||||||
item.sat.desc.gerald.melter=Расплавитель процессоров, проклятие каждого владельца сервера.
|
|
||||||
item.sat.desc.laser=Позволяет вызывать лазеры с перезарядкой 15 секунд.
|
|
||||||
item.sat.desc.mapper=Отображает загруженные в данный момент чанки.
|
|
||||||
item.sat.desc.miner=Доставит рудные порошки на грузовую посадочную площадку.
|
|
||||||
item.sat.desc.lunar_miner=Добывает лунный грунт, чтобы доставить его на грузовую посадочную площадку.
|
|
||||||
item.sat.desc.radar=Показывает карту активных объектов.
|
|
||||||
item.sat.desc.resonator=Позволяет телепортироваться без перезарядки.
|
|
||||||
item.sat.desc.scanner=Создаёт карту подземных руд сверху вниз.
|
|
||||||
|
|
||||||
item.sawblade.name=Лезвие пилорамы
|
item.sawblade.name=Лезвие пилорамы
|
||||||
item.schnitzel_vegan.name=Вегетарианский шницель
|
item.schnitzel_vegan.name=Вегетарианский шницель
|
||||||
item.schrabidium_axe.name=Шрабидиевый топор
|
item.schrabidium_axe.name=Шрабидиевый топор
|
||||||
@ -6625,4 +6612,125 @@ gui.recipe.autoswitch=Группа автоматического переклю
|
|||||||
gui.recipe.enabledFor=Включено для
|
gui.recipe.enabledFor=Включено для
|
||||||
gui.recipe.setRecipe=Нажмите, чтобы выбрать рецепт
|
gui.recipe.setRecipe=Нажмите, чтобы выбрать рецепт
|
||||||
|
|
||||||
|
# shared recipe / machine labels
|
||||||
|
gui.recipe.duration=Время
|
||||||
|
gui.recipe.consumption=Потребление
|
||||||
|
gui.recipe.input=Вход
|
||||||
|
gui.recipe.output=Выход
|
||||||
|
gui.recipe.mB=mB
|
||||||
|
gui.recipe.atPressure=при
|
||||||
|
gui.recipe.autoswitch=Автопереключение группы
|
||||||
|
gui.recipe.enabledFor=Доступно для
|
||||||
|
gui.recipe.setRecipe=Нажмите, чтобы установить рецепт
|
||||||
|
|
||||||
|
# --- Missile / parts (generic) ---
|
||||||
|
gui.missile.warhead=Боеголовка
|
||||||
|
gui.missile.strength=Мощность
|
||||||
|
gui.missile.fuelType=Тип топлива
|
||||||
|
gui.missile.fuelAmount=Количество топлива
|
||||||
|
gui.missile.chipInaccuracy=Неточность чипа
|
||||||
|
gui.missile.finInaccuracy=Неточность стабилизаторов
|
||||||
|
gui.missile.size=Размер
|
||||||
|
gui.missile.health=Прочность
|
||||||
|
gui.missile.fuel=Топливо
|
||||||
|
gui.missile.fuelCapacity=Ёмкость топлива
|
||||||
|
gui.missile.notLaunchable=Невозможно запустить!
|
||||||
|
|
||||||
|
# missile tiers
|
||||||
|
missile.tier.tier0=Уровень 0
|
||||||
|
missile.tier.tier1=Уровень 1
|
||||||
|
missile.tier.tier2=Уровень 2
|
||||||
|
missile.tier.tier3=Уровень 3
|
||||||
|
missile.tier.tier4=Уровень 4
|
||||||
|
|
||||||
|
# missile fuel names
|
||||||
|
missile.fuel.solid=Твердое топливо
|
||||||
|
missile.fuel.ethanol_peroxide=Этанол / Перекись водорода
|
||||||
|
missile.fuel.kerosene_peroxide=Керосин / Перекись водорода
|
||||||
|
missile.fuel.kerosene_loxy=Керосин / Жидкий кислород
|
||||||
|
missile.fuel.jetfuel_loxy=Авиационное топливо / Жидкий кислород
|
||||||
|
|
||||||
|
# warheads (used by parts)
|
||||||
|
warhead.he=HE
|
||||||
|
warhead.incendiary=Зажигательная
|
||||||
|
warhead.cluster=Кассетная
|
||||||
|
warhead.bunker_buster=Противобункерная
|
||||||
|
warhead.nuclear=Ядерная
|
||||||
|
warhead.thermonuclear=Термоядерная (TX)
|
||||||
|
warhead.n2=N²
|
||||||
|
warhead.balefire=Жар-ядерная
|
||||||
|
warhead.schrabidium=Шрабидевая
|
||||||
|
warhead.taint=Порча
|
||||||
|
warhead.cloud=Облако
|
||||||
|
warhead.turbine=Турбина
|
||||||
|
|
||||||
|
# part keys
|
||||||
|
part.inaccuracy=Неточность
|
||||||
|
part.size=Размер
|
||||||
|
part.type=Тип
|
||||||
|
part.strength=Прочность
|
||||||
|
part.weight=Вес
|
||||||
|
part.topSize=Верхний размер
|
||||||
|
part.bottomSize=Нижний размер
|
||||||
|
part.fuelType=Тип топлива
|
||||||
|
part.fuelAmount=Количество топлива
|
||||||
|
part.fuelConsumption=Расход топлива
|
||||||
|
part.maxPayload=Макс. нагрузка
|
||||||
|
part.health=Прочность
|
||||||
|
part.rarity=Редкость
|
||||||
|
part.by=Автор
|
||||||
|
part.size.any=Любой
|
||||||
|
part.size.none=Нет
|
||||||
|
|
||||||
|
# fuel extras used by parts
|
||||||
|
fuel.xenon=Ксенон
|
||||||
|
fuel.balefire=Жар-ракетное топливо
|
||||||
|
|
||||||
|
# part rarity keys (enum-based, neuter)
|
||||||
|
part.rarity.common=Обычное
|
||||||
|
part.rarity.uncommon=Необычное
|
||||||
|
part.rarity.rare=Редкое
|
||||||
|
part.rarity.epic=Эпическое
|
||||||
|
part.rarity.legendary=Легендарное
|
||||||
|
part.rarity.strange=Странное
|
||||||
|
|
||||||
|
# generic / fallback
|
||||||
|
general.na=Н/Д
|
||||||
|
error.generic=### Я ОШИБКА ###
|
||||||
|
|
||||||
|
# --- Satellite chips ---
|
||||||
|
satchip.frequency=Частота спутника
|
||||||
|
satchip.foeq=Даёт достижение. И всё.
|
||||||
|
satchip.gerald.line1=Одноразовый.
|
||||||
|
satchip.gerald.line2=Требуется орбитальный модуль.
|
||||||
|
satchip.gerald.line3=Расплавитель процессоров, проклятие каждого владельца сервера.
|
||||||
|
satchip.laser=Позволяет вызывать лазеры с перезарядкой 15 секунд.
|
||||||
|
satchip.mapper=Отображает загруженные в данный момент чанки.
|
||||||
|
satchip.miner=Доставляет рудные порошки на посадочную площадку.
|
||||||
|
satchip.lunar_miner=Добывает лунный грунт и доставляет на посадочную площадку.
|
||||||
|
satchip.radar=Показывает карту активных сущностей
|
||||||
|
satchip.resonator=Позволяет телепортироваться без перезарядки.
|
||||||
|
satchip.scanner=Создаёт карту подземных руд сверху вниз.
|
||||||
|
|
||||||
|
# --- Items (bomb components) ---
|
||||||
|
item.bomb_part.used_in=Используется в:
|
||||||
|
item.n2.mine=Мина N²
|
||||||
|
item.fleija.name=Ф.Л.Е.Я.
|
||||||
|
item.solinium.name=Синий Ополаскиватель
|
||||||
|
|
||||||
|
# --- Weapon / gun tooltips ---
|
||||||
|
gui.weapon.ammo=Боеприпасы
|
||||||
|
gui.weapon.baseDamage=Базовый урон
|
||||||
|
gui.weapon.damageWithAmmo=Урон с текущими боеприпасами
|
||||||
|
gui.weapon.condition=Состояние
|
||||||
|
gui.weapon.accepts=Принимает
|
||||||
|
|
||||||
|
gui.weapon.quality.aside=Стандартный арсенал
|
||||||
|
gui.weapon.quality.bside=Би-Сайд
|
||||||
|
gui.weapon.quality.legendary=Легендарное оружие
|
||||||
|
gui.weapon.quality.special=Специальное оружие
|
||||||
|
gui.weapon.quality.utility=Утилитарное
|
||||||
|
gui.weapon.quality.secret=СЕКРЕТ
|
||||||
|
gui.weapon.quality.debug=ОТЛАДКА
|
||||||
|
|
||||||
// Last updated 23.08.2025 by Bufka2011, MrKimkimora and TactiCOOLHimZa //
|
// Last updated 23.08.2025 by Bufka2011, MrKimkimora and TactiCOOLHimZa //
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user