Added sun-related death messages

This commit is contained in:
Sollace 2022-12-23 22:49:44 +01:00
parent 9824801609
commit 2a13627b3f
4 changed files with 40 additions and 32 deletions

View file

@ -6,11 +6,11 @@ import com.minelittlepony.unicopia.EquinePredicates;
import com.minelittlepony.unicopia.UTags; import com.minelittlepony.unicopia.UTags;
import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.entity.player.Pony;
import com.minelittlepony.unicopia.trinkets.TrinketsDelegate; import com.minelittlepony.unicopia.trinkets.TrinketsDelegate;
import com.minelittlepony.unicopia.util.MagicalDamageSource;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.EquipmentSlot;
import net.minecraft.entity.LivingEntity; import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.damage.DamageSource;
import net.minecraft.entity.effect.StatusEffect; import net.minecraft.entity.effect.StatusEffect;
import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.entity.effect.StatusEffectInstance;
import net.minecraft.entity.effect.StatusEffectCategory; import net.minecraft.entity.effect.StatusEffectCategory;
@ -37,8 +37,8 @@ public class SunBlindnessStatusEffect extends StatusEffect {
if (entity.age % 15 == 0) { if (entity.age % 15 == 0) {
if (!hasSunExposure(entity)) { if (!hasSunExposure(entity)) {
entity.setStatusEffect(new StatusEffectInstance(this, (int)(state.getDuration() * 0.8F), Math.max(1, amplifier - 1), true, false), entity); entity.setStatusEffect(new StatusEffectInstance(this, (int)(state.getDuration() * 0.8F), Math.max(1, amplifier - 1), true, false), entity);
} else if (amplifier > 1) { } else {
entity.damage(DamageSource.IN_FIRE, amplifier / 20F); entity.damage(amplifier == 2 ? MagicalDamageSource.SUN : MagicalDamageSource.SUNLIGHT, amplifier / 5F);
} }
} }
} }

View file

@ -450,7 +450,7 @@ public class Pony extends Living<PlayerEntity> implements Copyable<Pony>, Update
} }
} }
if (entity.hurtTime == 1) { if (entity.hurtTime == 1 && getSpecies().canCast()) {
corruption.add(1); corruption.add(1);
setDirty(); setDirty();
} }

View file

@ -1,7 +1,6 @@
package com.minelittlepony.unicopia.util; package com.minelittlepony.unicopia.util;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@ -15,17 +14,15 @@ import net.minecraft.item.ItemStack;
import net.minecraft.text.Text; import net.minecraft.text.Text;
public class MagicalDamageSource extends EntityDamageSource { public class MagicalDamageSource extends EntityDamageSource {
public static final DamageSource EXHAUSTION = new MagicalDamageSource("magical_exhaustion", null, true, true); public static final DamageSource EXHAUSTION = new MagicalDamageSource("magical_exhaustion", null, true, true);
public static final DamageSource ALICORN_AMULET = new MagicalDamageSource("alicorn_amulet", null, true, true); public static final DamageSource ALICORN_AMULET = new MagicalDamageSource("alicorn_amulet", null, true, true);
public static final DamageSource FOOD_POISONING = mundane("food_poisoning"); public static final DamageSource FOOD_POISONING = new DamageSource("food_poisoning");
public static final DamageSource TRIBE_SWAP = mundane("tribe_swap"); public static final DamageSource TRIBE_SWAP = new DamageSource("tribe_swap");
public static final DamageSource ZAP_APPLE = create("zap"); public static final DamageSource ZAP_APPLE = create("zap");
public static final DamageSource KICK = create("kick"); public static final DamageSource KICK = create("kick");
public static final DamageSource SUN = new DamageSource("sun").setBypassesArmor().setFire();
public static DamageSource mundane(String type) { public static final DamageSource SUNLIGHT = new DamageSource("sunlight").setBypassesArmor().setFire();
return new DamageSource(type) {}; public static final DamageSource PETRIFIED = new DamageSource("petrified").setBypassesArmor().setFire();
}
public static MagicalDamageSource create(String type) { public static MagicalDamageSource create(String type) {
return new MagicalDamageSource(type, null, null, false, false); return new MagicalDamageSource(type, null, null, false, false);
@ -84,21 +81,22 @@ public class MagicalDamageSource extends EntityDamageSource {
@Nullable @Nullable
Entity attacker = source != null ? source : target.getPrimeAdversary(); Entity attacker = source != null ? source : target.getPrimeAdversary();
if (attacker != null) {
if (attacker == target) {
basic += ".self";
} else {
basic += ".attacker";
params.add(attacker.getDisplayName());
}
}
ItemStack item = attacker instanceof LivingEntity ? ((LivingEntity)attacker).getMainHandStack() : ItemStack.EMPTY; ItemStack item = attacker instanceof LivingEntity ? ((LivingEntity)attacker).getMainHandStack() : ItemStack.EMPTY;
if (!item.isEmpty() && item.hasCustomName()) { if (attacker == target) {
basic += ".self";
if (!item.isEmpty() && item.hasCustomName()) {
basic += ".item";
params.add(item.toHoverableText());
}
} else if (!item.isEmpty() && item.hasCustomName()) {
basic += ".item"; basic += ".item";
params.add(attacker.getDisplayName());
params.add(item.toHoverableText()); params.add(item.toHoverableText());
} else if (attacker != null) {
basic += ".player";
params.add(attacker.getDisplayName());
} }
return Text.translatable(basic, params.toArray()); return Text.translatable(basic, params.toArray());

View file

@ -493,28 +493,38 @@
"death.attack.generic.and_also": "%1$s and %2$s", "death.attack.generic.and_also": "%1$s and %2$s",
"death.attack.tribe_swap": "%1$s was reborn into a different tribe", "death.attack.tribe_swap": "%1$s was reborn into a different tribe",
"death.attack.sun": "%1$s stared into the sun",
"death.attack.sun.player": "%1$s stared into the sun whilst fighting %2$s",
"death.attack.sunlight": "%1$s was burned by the sun",
"death.attack.sunlight.player": "%1$s was burned by the sun whilst fighting %2$s",
"death.attack.petrified": "%1$s turned to stone",
"death.attack.petrified.player": "%1$s turned to stone whilst fighting %2$s",
"death.attack.magical_exhaustion": "%1$s exhausted themselves", "death.attack.magical_exhaustion": "%1$s exhausted themselves",
"death.attack.magical_exhaustion.player": "%1$s exhausted themselves whilst fighting %2$s",
"death.attack.alicorn_amulet": "%1$s was driven insane", "death.attack.alicorn_amulet": "%1$s was driven insane",
"death.attack.alicorn_amulet.player": "%1$s went insane whilst fighting %2$s",
"death.attack.darkness": "%1$s went missing", "death.attack.darkness": "%1$s went missing",
"death.attack.feed": "%1$s was drained of all life", "death.attack.feed": "%1$s was drained of all life",
"death.attack.feed.attacker": "%1$s died to feed %2$s", "death.attack.feed.player": "%1$s died to feed %2$s",
"death.attack.drain": "%1$s was drained of all life", "death.attack.drain": "%1$s was drained of all life",
"death.attack.drain.self": "%1$s was killed by their own spell", "death.attack.drain.self": "%1$s was killed by their own spell",
"death.attack.drain.attacker": "%1$s was killed by a spell cast by %2$s", "death.attack.drain.player": "%1$s was killed by a spell cast by %2$s",
"death.attack.eeee": "%1$s was frightened to death", "death.attack.eeee": "%1$s was frightened to death",
"death.attack.eeee.attacker": "%2$s scared %1$s", "death.attack.eeee.player": "%2$s scared %1$s",
"death.attack.eeee.attacker.item": "%1$s was frightened to death by %2$s using %3$s", "death.attack.eeee.item": "%1$s was frightened to death by %2$s using %3$s",
"death.attack.eeee.self": "%1$s scared themselves to death", "death.attack.eeee.self": "%1$s scared themselves to death",
"death.attack.smash": "%1$s was crushed under hoof", "death.attack.smash": "%1$s was crushed under hoof",
"death.attack.smash.attacker": "%1$s was crushed by %2$s", "death.attack.smash.player": "%1$s was crushed by %2$s",
"death.attack.zap": "%1$s bit into a Zap Apple", "death.attack.zap": "%1$s bit into a Zap Apple",
"death.attack.zap.player": "%1$s bit into a Zap Apple whilst fighting %2$s",
"death.attack.paradox": "%1$s imploded", "death.attack.paradox": "%1$s imploded",
"death.attack.paradox.player": "%1$s imploded with some help from %2$s",
"death.attack.food_poisoning": "%1$s died of food poisoning", "death.attack.food_poisoning": "%1$s died of food poisoning",
"death.attack.food_poisoning.attacker": "%2$s poisoned %1$s to death", "death.attack.food_poisoning.player": "%2$s poisoned %1$s to death",
"death.attack.black_hole": "%1$s was sucked into a black hole", "death.attack.black_hole": "%1$s was sucked into a black hole",
"death.attack.black_hole.attacker": "%1$s got sucked into %2$s's black hole", "death.attack.black_hole.player": "%1$s got sucked into %2$s's black hole",
"death.attack.kick": "%1$s was kicked really hard", "death.attack.kick": "%1$s was kicked really hard",
"death.attack.kick.attacker": "%2$s kicked %1$s really hard", "death.attack.kick.player": "%2$s kicked %1$s really hard",
"unicopia.subtitle.flap_wings": "Wing flaps", "unicopia.subtitle.flap_wings": "Wing flaps",
"unicopia.subtitle.dash": "Pony Dashes", "unicopia.subtitle.dash": "Pony Dashes",