Swim Boosters android feature, electromotor crafting component

This commit is contained in:
DBotThePony 2023-08-23 14:24:43 +07:00
parent 61d799fb29
commit 313f9cb39d
Signed by: DBot
GPG Key ID: DCC23B5715498507
11 changed files with 130 additions and 9 deletions

View File

@ -43,6 +43,45 @@ fun addResearchData(serializer: Consumer<AndroidResearchType>, lang: MatteryLang
serializer.accept(IMPROVED_LIMBS)
val SWIM_BOOSTERS = AndroidResearchType.Builder(modLocation(MNames.SWIM_BOOSTERS))
.withExperience(26)
.withDescription(AndroidResearchDescriptions.SWIM_BOOSTERS.Instance(0))
.addPrerequisite(IMPROVED_LIMBS)
.addPrerequisite(AIR_BAGS)
.addFeatureResult(AndroidFeatures.SWIM_BOOSTERS)
.withIcon(ResearchIcons.ICON_LIMB_OVERCLOCKING)
.addItem(MItemTags.TRITANIUM_PLATES, 2)
.addItem(MItemTags.COPPER_WIRES, 2)
.addItem(MItems.ELECTROMOTOR, 2)
.build()
serializer.accept(SWIM_BOOSTERS)
val SWIM_BOOSTERS_2 = AndroidResearchType.Builder(modLocation(MNames.SWIM_BOOSTERS + "_2"))
.withExperience(30)
.withDescription(AndroidResearchDescriptions.SWIM_BOOSTERS.Instance(1))
.addPrerequisite(SWIM_BOOSTERS)
.addFeatureLevel(AndroidFeatures.SWIM_BOOSTERS)
.withIcon(ResearchIcons.ICON_LIMB_OVERCLOCKING)
.addItem(MItemTags.GOLD_WIRES, 8)
.addItem(MItems.ELECTROMOTOR, 2)
.build()
serializer.accept(SWIM_BOOSTERS_2)
val SWIM_BOOSTERS_3 = AndroidResearchType.Builder(modLocation(MNames.SWIM_BOOSTERS + "_3"))
.withExperience(30)
.withDescription(AndroidResearchDescriptions.SWIM_BOOSTERS.Instance(2))
.addPrerequisite(SWIM_BOOSTERS_2)
.addFeatureLevel(AndroidFeatures.SWIM_BOOSTERS)
.withIcon(ResearchIcons.ICON_LIMB_OVERCLOCKING)
.addItem(MItemTags.CARBON_PLATES, 8)
.addItem(MItemTags.TRITANIUM_NUGGETS, 4)
.addItem(MItemTags.COPPER_WIRES, 2)
.build()
serializer.accept(SWIM_BOOSTERS_3)
val STEP_ASSIST = AndroidResearchType.Builder(modLocation(MNames.STEP_ASSIST))
.withExperience(24)
.addFeatureResult(AndroidFeatures.STEP_ASSIST)
@ -384,7 +423,7 @@ fun addResearchData(serializer: Consumer<AndroidResearchType>, lang: MatteryLang
}
add(limbList[0], "Limb Overclocking %s") {
russian("Разгон Конечностей %s")
russian("Разгон конечностей %s")
}
add(limbList[0], "description", "Boosts mobility by %s%% and attack speed by %s%%") {
@ -392,7 +431,7 @@ fun addResearchData(serializer: Consumer<AndroidResearchType>, lang: MatteryLang
}
add(AIR_BAGS, "Air Bags") {
russian("Воздушные Мешки")
russian("Воздушные мешки")
}
add(NANOBOTS, "Nanobots") {
russian("Наноботы")
@ -415,7 +454,7 @@ fun addResearchData(serializer: Consumer<AndroidResearchType>, lang: MatteryLang
}
add(NANOBOTS_ARMOR, "Nanobots Armor") {
russian("Броня из Наноботов")
russian("Броня из наноботов")
}
add(NANOBOTS_ARMOR, "description", "Allows nanobots to align themselves in cell shape, reducing incoming damage by a %% by absorbing impacts") {
russian("Позволяет наноботам выстраиваться в клеточную структуру, уменьшая внешний урон на определённый проект путём поглощения ударов")
@ -429,35 +468,50 @@ fun addResearchData(serializer: Consumer<AndroidResearchType>, lang: MatteryLang
}
add(armorStrengthList[0], "Nanobots Armor Strength %s") {
russian("Сила Слоя Брони Наноботов %s")
russian("Сила слоя брони наноботов %s")
}
add(armorStrengthList[0], "description", "Increases impact absorption strength of nanobots") {
russian("Увеличивает поглощающею силу брони наноботов")
}
add(EXTENDED_REACH, "Extended Reach") {
russian("Удлинённые Манипуляторы")
russian("Удлинённые манипуляторы")
}
add(EXTENDED_REACH, "description", "Increases block interaction distance") {
russian("Увеличивает радиус взаимодействия с блоками")
}
add(IMPROVED_LIMBS, "Improved Limbs") {
russian("Улучшенные Конечности")
russian("Улучшенные конечности")
}
add(IMPROVED_LIMBS, "description", "Allows limbs to be upgraded") {
russian("Позволяет улучшать конечности")
}
add(SWIM_BOOSTERS, "Swim Boosters") {
russian("Плавательные лопасти")
}
add(SWIM_BOOSTERS, "description", "Increases swimming speed by %s%%") {
russian("Ускоряет скорость плавания на %s%%")
}
add(SWIM_BOOSTERS_2, "Swim Boosters 2") {
russian("Плавательные Лопасти 2")
}
add(SWIM_BOOSTERS_3, "Swim Boosters 3") {
russian("Плавательные Лопасти 3")
}
add(STEP_ASSIST, "Step Assist") {
russian("Помощь Подъёма")
russian("Помощь подъёма")
}
add(STEP_ASSIST, "description", "Allows unit to step up whole blocks") {
russian("Позволяет переступать полные блоки")
}
add(ITEM_MAGNET, "Item Magnet") {
russian("Предметный Магнит")
russian("Предметный магнит")
}
add(ITEM_MAGNET, "description0", "Pulls nearby items while active") {
russian("Притягивает ближайшие предметы пока активен")

View File

@ -605,6 +605,7 @@ private fun items(provider: MatteryLanguageProvider) {
add(MItems.ADVANCED_CONTROL_CIRCUIT, "Advanced Control Circuit")
add(MItems.QUANTUM_TRANSCEIVER, "Quantum Transceiver")
add(MItems.ELECTROMAGNET, "Electromagnet")
add(MItems.ELECTROMOTOR, "Electromotor")
add(MItems.MIRROR_COMPOUND, "Mirror Compound")
add(MItems.MIRROR, "Mirror")
add(MItems.MIRROR, "description", "I can clearly see my own reflection in this mirror")
@ -704,6 +705,7 @@ private fun androidFeatures(provider: MatteryLanguageProvider) {
add(AndroidFeatures.NIGHT_VISION, "Night Vision")
add(AndroidFeatures.NANOBOTS_ARMOR, "Nanobots Armor")
add(AndroidFeatures.ITEM_MAGNET, "Item Magnet")
add(AndroidFeatures.SWIM_BOOSTERS, "Swim Boosters")
add(AndroidFeatures.STEP_ASSIST, "Step Assist")
add(AndroidFeatures.JUMP_BOOST, "Jump Boost")
add(AndroidFeatures.ENDER_TELEPORTER, "Ender Teleporter")

View File

@ -607,6 +607,7 @@ private fun items(provider: MatteryLanguageProvider) {
add(MItems.ADVANCED_CONTROL_CIRCUIT, "Продвинутая схема управления")
add(MItems.QUANTUM_TRANSCEIVER, "Квантовый передатчик")
add(MItems.ELECTROMAGNET, "Электромагнит")
add(MItems.ELECTROMOTOR, "Электромотор")
add(MItems.MIRROR_COMPOUND, "Набор выплавки зеркала")
add(MItems.MIRROR, "Зеркало")
add(MItems.MIRROR, "description", "Я могу очень отчётливо видеть своё отражение в этом зеркале")
@ -706,6 +707,7 @@ private fun androidFeatures(provider: MatteryLanguageProvider) {
add(AndroidFeatures.NIGHT_VISION, "Ночное зрение")
add(AndroidFeatures.NANOBOTS_ARMOR, "Броня из наноботов")
add(AndroidFeatures.ITEM_MAGNET, "Предметный магнит")
add(AndroidFeatures.SWIM_BOOSTERS, "Плавательные лопасти")
add(AndroidFeatures.STEP_ASSIST, "Помощник подъёма")
add(AndroidFeatures.JUMP_BOOST, "Усилитель прыжка")
add(AndroidFeatures.ENDER_TELEPORTER, "Телепортатор края")

View File

@ -161,7 +161,14 @@ fun addCraftingTableRecipes(consumer: Consumer<FinishedRecipe>) {
MatteryRecipe(MItems.ELECTROMAGNET, category = RecipeCategory.MISC)
.row(MItemTags.COPPER_WIRES, Tags.Items.INGOTS_IRON, MItemTags.COPPER_WIRES)
.unlockedBy(Tags.Items.ENDER_PEARLS)
.unlockedBy(Tags.Items.INGOTS_IRON)
.build(consumer)
MatteryRecipe(MItems.ELECTROMOTOR, category = RecipeCategory.MISC)
.rowB(MItems.ELECTROMAGNET)
.row(MItems.ELECTROMAGNET, Tags.Items.INGOTS_IRON, MItems.ELECTROMAGNET)
.row(MItemTags.COPPER_WIRES, Tags.Items.INGOTS_IRON, MItemTags.COPPER_WIRES)
.unlockedBy(MItems.ELECTROMAGNET)
.build(consumer)
MatteryRecipe(MItems.ENERGY_SERVO, category = RecipeCategory.MISC)

View File

@ -43,6 +43,14 @@ object AndroidResearchDescriptions {
)) }
}
val SWIM_BOOSTERS: AndroidResearchDescription.Leveled by registrar.register("swim_boosters") {
AndroidResearchDescription.Leveled { _, list, level ->
list.add(TranslatableComponent(
"android_research.overdrive_that_matters.swim_boosters.description",
TextComponent("%.1f".format(AndroidConfig.SWIM_BOOSTERS * (1 + level) * 100.0)).withStyle(ChatFormatting.YELLOW)
)) }
}
val ITEM_MAGNET: AndroidResearchDescription.Singleton by registrar.register("item_magnet") {
AndroidResearchDescription.singleton { TranslatableComponent("otm.gui.power_cost_per_tick", AndroidConfig.Magnet.POWER_DRAW.formatPower(formatAsReadable = ShiftPressedCond).copy().withStyle(ChatFormatting.YELLOW)) }
}

View File

@ -0,0 +1,39 @@
package ru.dbotthepony.mc.otm.android.feature
import net.minecraft.client.gui.GuiGraphics
import net.minecraft.world.entity.ai.attributes.AttributeModifier
import net.minecraftforge.common.ForgeMod
import ru.dbotthepony.mc.otm.android.AndroidSwitchableFeature
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
import ru.dbotthepony.mc.otm.client.render.ResearchIcons
import ru.dbotthepony.mc.otm.config.AndroidConfig
import ru.dbotthepony.mc.otm.core.math.RGBAColor
import ru.dbotthepony.mc.otm.registry.AndroidFeatures
import java.util.*
class SwimBoostersFeature(android: MatteryPlayerCapability) : AndroidSwitchableFeature(AndroidFeatures.SWIM_BOOSTERS, android) {
override fun applyModifiers() {
if (!ForgeMod.SWIM_SPEED.isPresent || !isActive)
return
val attr = ply.getAttribute(ForgeMod.SWIM_SPEED.get()) ?: return
attr.removeModifier(MODIFIER_ID)
attr.addPermanentModifier(AttributeModifier(MODIFIER_ID, type.displayName.toString(), (level + 1) * AndroidConfig.SWIM_BOOSTERS, AttributeModifier.Operation.ADDITION))
}
override fun removeModifiers() {
if (!ForgeMod.SWIM_SPEED.isPresent)
return
ply.getAttribute(ForgeMod.SWIM_SPEED.get())?.removeModifier(MODIFIER_ID)
}
override fun renderIcon(graphics: GuiGraphics, x: Float, y: Float, width: Float, height: Float, color: RGBAColor) {
ResearchIcons.ICON_LIMB_OVERCLOCKING.render(graphics, x, y, width, height, color = color)
}
companion object {
private val MODIFIER_ID = UUID.fromString("4a3ffa46-47a8-a03f-857d-f5c2b2c8f2f6")
}
}

View File

@ -68,6 +68,10 @@ object AndroidConfig : AbstractConfig("androids") {
.comment("First, fall damage is reduced by flat resistance (this), then reduced by percentage resistance")
.defineInRange("FALL_DAMAGE_REDUCTION_PER_LEVEL_F", 1.5, 0.0, Float.MAX_VALUE.toDouble())
val SWIM_BOOSTERS: Double by builder
.comment("Increase per level")
.defineInRange("SWIM_BOOSTERS", 0.25, 0.0, Float.MAX_VALUE.toDouble())
object EnderTeleporter {
init {
builder.comment("Ender Teleporter ability").push("EnderTeleporter")

View File

@ -12,6 +12,7 @@ object AndroidFeatures {
val AIR_BAGS: AndroidFeatureType<DummyAndroidFeature> by registry.register(MNames.AIR_BAGS) { AndroidFeatureType(::DummyAndroidFeature) }
val STEP_ASSIST: AndroidFeatureType<StepAssistFeature> by registry.register(MNames.STEP_ASSIST) { AndroidFeatureType(::StepAssistFeature) }
val SWIM_BOOSTERS: AndroidFeatureType<SwimBoostersFeature> by registry.register(MNames.SWIM_BOOSTERS) { AndroidFeatureType(::SwimBoostersFeature) }
val LIMB_OVERCLOCKING: AndroidFeatureType<LimbOverclockingFeature> by registry.register(MNames.LIMB_OVERCLOCKING) { AndroidFeatureType(::LimbOverclockingFeature) }
val ATTACK_BOOST: AndroidFeatureType<AttackBoostFeature> by registry.register(MNames.ATTACK_BOOST) { AndroidFeatureType(::AttackBoostFeature) }
val NANOBOTS_REGENERATION: AndroidFeatureType<NanobotsRegenerationFeature> by registry.register(MNames.NANOBOTS_REGENERATION) { AndroidFeatureType(::NanobotsRegenerationFeature) }

View File

@ -452,6 +452,7 @@ object MItems {
val QUANTUM_TRANSCEIVER: Item by registry.register("quantum_transceiver") { Item(DEFAULT_PROPERTIES) }
val ELECTROMAGNET: Item by registry.register("electromagnet") { Item(DEFAULT_PROPERTIES) }
val ELECTROMOTOR: Item by registry.register("electromotor") { Item(DEFAULT_PROPERTIES) }
val MIRROR_COMPOUND: Item by registry.register("mirror_compound") { Item(DEFAULT_PROPERTIES) }
val MIRROR: Item by registry.register("mirror") { object : Item(DEFAULT_PROPERTIES) {
override fun appendHoverText(
@ -488,6 +489,7 @@ object MItems {
::QUANTUM_TRANSCEIVER,
::ELECTROMAGNET,
::ELECTROMOTOR,
::MIRROR_COMPOUND,
::MIRROR,
@ -514,6 +516,7 @@ object MItems {
::MATTER_TRANSFORM_MATRIX,
::QUANTUM_TRANSCEIVER,
::ELECTROMAGNET,
::ELECTROMOTOR,
::MIRROR_COMPOUND,
::MIRROR,

View File

@ -196,6 +196,7 @@ object MNames {
// android features and research
const val AIR_BAGS = "air_bags"
const val STEP_ASSIST = "step_assist"
const val SWIM_BOOSTERS = "swim_boosters"
const val LIMB_OVERCLOCKING = "limb_overclocking"
const val LIMB_OVERCLOCKING_1 = "limb_overclocking_1"

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB