Add flat fall damage resistance and nerf percent based damage resistance
This commit is contained in:
parent
27908cfe83
commit
f9a365b6dc
@ -314,7 +314,7 @@ fun addResearchData(serializer: Consumer<AndroidResearchType>, lang: MatteryLang
|
|||||||
AndroidResearchType.Builder(modLocation(MNames.FALL_DAMPENERS + "_3"))
|
AndroidResearchType.Builder(modLocation(MNames.FALL_DAMPENERS + "_3"))
|
||||||
.withExperience(35)
|
.withExperience(35)
|
||||||
.withDescription(0 .. 1)
|
.withDescription(0 .. 1)
|
||||||
.withDescription(AndroidResearchDescriptions.FALL_DAMPENERS.Instance(2))
|
.withDescription(AndroidResearchDescriptions.FALL_DAMPENERS.Instance(3))
|
||||||
.withIcon(ResearchIcons.ICON_FEATHER_FALLING)
|
.withIcon(ResearchIcons.ICON_FEATHER_FALLING)
|
||||||
.addFeatureLevel(AndroidFeatures.FALL_DAMPENERS)
|
.addFeatureLevel(AndroidFeatures.FALL_DAMPENERS)
|
||||||
.addPrerequisite(FALL_DAMPENERS_2)
|
.addPrerequisite(FALL_DAMPENERS_2)
|
||||||
@ -376,8 +376,8 @@ fun addResearchData(serializer: Consumer<AndroidResearchType>, lang: MatteryLang
|
|||||||
serializer.accept(JUMP_BOOST_2)
|
serializer.accept(JUMP_BOOST_2)
|
||||||
|
|
||||||
with(lang) {
|
with(lang) {
|
||||||
misc("fall_dampeners.description", "Reduces fall damage by %s%%") {
|
misc("fall_dampeners.description", "Reduces fall damage by %s%% and increases fall damage flat resist by %s half a hearts") {
|
||||||
russian("Уменьшает урон от падения на %s%%")
|
russian("Уменьшает урон от падения на %s%% и повышает сопротивление урону от падения на %s полусердец")
|
||||||
}
|
}
|
||||||
|
|
||||||
add(limbList[0], "Limb Overclocking %s") {
|
add(limbList[0], "Limb Overclocking %s") {
|
||||||
|
@ -36,7 +36,11 @@ object AndroidResearchDescriptions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val FALL_DAMPENERS: AndroidResearchDescription.Leveled by registrar.register("fall_dampeners") {
|
val FALL_DAMPENERS: AndroidResearchDescription.Leveled by registrar.register("fall_dampeners") {
|
||||||
AndroidResearchDescription.Leveled { _, _, level -> TranslatableComponent("otm.fall_dampeners.description", TextComponent("%.1f".format((AndroidConfig.FALL_DAMAGE_REDUCTION_PER_LEVEL * level).toFloat().coerceAtLeast(0f).coerceAtMost(1f) * 100f)).withStyle(ChatFormatting.YELLOW)) }
|
AndroidResearchDescription.Leveled { _, list, level ->
|
||||||
|
list.add(TranslatableComponent("otm.fall_dampeners.description",
|
||||||
|
TextComponent("%.1f".format((AndroidConfig.FALL_DAMAGE_REDUCTION_PER_LEVEL_P * level).toFloat().coerceIn(0f, 1f) * 100f)).withStyle(ChatFormatting.YELLOW),
|
||||||
|
TextComponent("%.1f".format((AndroidConfig.FALL_DAMAGE_REDUCTION_PER_LEVEL_F * level).toFloat())).withStyle(ChatFormatting.YELLOW),
|
||||||
|
)) }
|
||||||
}
|
}
|
||||||
|
|
||||||
val ITEM_MAGNET: AndroidResearchDescription.Singleton by registrar.register("item_magnet") {
|
val ITEM_MAGNET: AndroidResearchDescription.Singleton by registrar.register("item_magnet") {
|
||||||
|
@ -19,14 +19,16 @@ import ru.dbotthepony.mc.otm.triggers.FallDampenersSaveTrigger
|
|||||||
class FallDampenersFeature(capability: MatteryPlayerCapability) : AndroidFeature(AndroidFeatures.FALL_DAMPENERS, capability) {
|
class FallDampenersFeature(capability: MatteryPlayerCapability) : AndroidFeature(AndroidFeatures.FALL_DAMPENERS, capability) {
|
||||||
override fun onHurt(event: LivingHurtEvent) {
|
override fun onHurt(event: LivingHurtEvent) {
|
||||||
if (event.source.isFall) {
|
if (event.source.isFall) {
|
||||||
val reduction = (AndroidConfig.FALL_DAMAGE_REDUCTION_PER_LEVEL * (level + 1)).toFloat()
|
val reduction = (AndroidConfig.FALL_DAMAGE_REDUCTION_PER_LEVEL_P * (level + 1)).toFloat().coerceIn(0f, 1f)
|
||||||
|
val flat = (AndroidConfig.FALL_DAMAGE_REDUCTION_PER_LEVEL_F * (level + 1)).toFloat().coerceIn(0f, Float.MAX_VALUE)
|
||||||
|
|
||||||
val old = event.amount
|
val old = event.amount
|
||||||
|
|
||||||
if (reduction >= 1f) {
|
if (reduction >= 1f || event.amount <= flat) {
|
||||||
event.isCanceled = true
|
event.isCanceled = true
|
||||||
event.amount = 0f
|
event.amount = 0f
|
||||||
} else {
|
} else {
|
||||||
|
event.amount -= flat
|
||||||
event.amount *= (1f - reduction)
|
event.amount *= (1f - reduction)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,7 +54,16 @@ object AndroidConfig : AbstractConfig("androids") {
|
|||||||
val ANDROID_ENERGY_PER_HUNGER_POINT by builder.defineDecimal("energyPerHunger", Decimal(2000), Decimal.ZERO)
|
val ANDROID_ENERGY_PER_HUNGER_POINT by builder.defineDecimal("energyPerHunger", Decimal(2000), Decimal.ZERO)
|
||||||
val ANDROID_MAX_ENERGY by builder.comment("Internal battery of every android has this much storage").defineDecimal("capacity", Decimal(80_000), Decimal.ZERO)
|
val ANDROID_MAX_ENERGY by builder.comment("Internal battery of every android has this much storage").defineDecimal("capacity", Decimal(80_000), Decimal.ZERO)
|
||||||
val NIGHT_VISION_POWER_DRAW by builder.defineDecimal("nightVisionPowerDraw", Decimal(8), Decimal.ZERO)
|
val NIGHT_VISION_POWER_DRAW by builder.defineDecimal("nightVisionPowerDraw", Decimal(8), Decimal.ZERO)
|
||||||
val FALL_DAMAGE_REDUCTION_PER_LEVEL: Double by builder.comment("In percent. Level of feature is multiplied by this").defineInRange("fallDamageReductionPerDampenerLevel", 0.25, 0.01, 1.0)
|
|
||||||
|
val FALL_DAMAGE_REDUCTION_PER_LEVEL_P: Double by builder
|
||||||
|
.comment("In percent. Level of feature is multiplied by this")
|
||||||
|
.comment("First, fall damage is reduced by flat resistance, then reduced by percentage resistance (this)")
|
||||||
|
.defineInRange("FALL_DAMAGE_REDUCTION_PER_LEVEL_P", 0.2, 0.01, 1.0)
|
||||||
|
|
||||||
|
val FALL_DAMAGE_REDUCTION_PER_LEVEL_F: Double by builder
|
||||||
|
.comment("In flat half of hearts. Level of feature is multiplied by this")
|
||||||
|
.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())
|
||||||
|
|
||||||
object EnderTeleporter {
|
object EnderTeleporter {
|
||||||
init {
|
init {
|
||||||
|
Loading…
Reference in New Issue
Block a user