mirror of
https://github.com/Sollace/Unicopia.git
synced 2025-02-08 06:26:43 +01:00
Distribute mana cost between party members
This commit is contained in:
parent
17233f425a
commit
082e5e37f2
2 changed files with 32 additions and 5 deletions
|
@ -14,8 +14,7 @@ import com.minelittlepony.unicopia.client.render.PlayerPoser.Animation;
|
||||||
import com.minelittlepony.unicopia.*;
|
import com.minelittlepony.unicopia.*;
|
||||||
import com.minelittlepony.unicopia.ability.AbilityDispatcher;
|
import com.minelittlepony.unicopia.ability.AbilityDispatcher;
|
||||||
import com.minelittlepony.unicopia.ability.EarthPonyStompAbility;
|
import com.minelittlepony.unicopia.ability.EarthPonyStompAbility;
|
||||||
import com.minelittlepony.unicopia.ability.magic.Affine;
|
import com.minelittlepony.unicopia.ability.magic.*;
|
||||||
import com.minelittlepony.unicopia.ability.magic.SpellPredicate;
|
|
||||||
import com.minelittlepony.unicopia.ability.magic.spell.Spell;
|
import com.minelittlepony.unicopia.ability.magic.spell.Spell;
|
||||||
import com.minelittlepony.unicopia.ability.magic.spell.effect.SpellType;
|
import com.minelittlepony.unicopia.ability.magic.spell.effect.SpellType;
|
||||||
import com.minelittlepony.unicopia.ability.magic.spell.trait.TraitDiscovery;
|
import com.minelittlepony.unicopia.ability.magic.spell.trait.TraitDiscovery;
|
||||||
|
@ -23,6 +22,7 @@ import com.minelittlepony.unicopia.advancement.UCriteria;
|
||||||
import com.minelittlepony.unicopia.entity.*;
|
import com.minelittlepony.unicopia.entity.*;
|
||||||
import com.minelittlepony.unicopia.entity.effect.SunBlindnessStatusEffect;
|
import com.minelittlepony.unicopia.entity.effect.SunBlindnessStatusEffect;
|
||||||
import com.minelittlepony.unicopia.entity.effect.UEffects;
|
import com.minelittlepony.unicopia.entity.effect.UEffects;
|
||||||
|
import com.minelittlepony.unicopia.item.FriendshipBraceletItem;
|
||||||
import com.minelittlepony.unicopia.item.UItems;
|
import com.minelittlepony.unicopia.item.UItems;
|
||||||
import com.minelittlepony.unicopia.item.toxin.Toxin;
|
import com.minelittlepony.unicopia.item.toxin.Toxin;
|
||||||
import com.minelittlepony.unicopia.network.Channel;
|
import com.minelittlepony.unicopia.network.Channel;
|
||||||
|
@ -451,6 +451,22 @@ public class Pony extends Living<PlayerEntity> implements Transmittable, Copieab
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean subtractEnergyCost(double foodSubtract) {
|
public boolean subtractEnergyCost(double foodSubtract) {
|
||||||
|
|
||||||
|
List<Pony> partyMembers = FriendshipBraceletItem.getPartyMembers(this, 10).toList();
|
||||||
|
|
||||||
|
if (!partyMembers.isEmpty()) {
|
||||||
|
foodSubtract /= (partyMembers.size() + 1);
|
||||||
|
for (Pony member : partyMembers) {
|
||||||
|
member.directTakeEnergy(foodSubtract);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
directTakeEnergy(foodSubtract);
|
||||||
|
|
||||||
|
return entity.getHealth() > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void directTakeEnergy(double foodSubtract) {
|
||||||
if (!entity.isCreative() && !entity.world.isClient) {
|
if (!entity.isCreative() && !entity.world.isClient) {
|
||||||
|
|
||||||
float currentMana = mana.getMana().get();
|
float currentMana = mana.getMana().get();
|
||||||
|
@ -465,8 +481,6 @@ public class Pony extends Living<PlayerEntity> implements Transmittable, Copieab
|
||||||
magicExhaustion += foodSubtract;
|
magicExhaustion += foodSubtract;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return entity.getHealth() > 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private float burnFood(float foodSubtract) {
|
private float burnFood(float foodSubtract) {
|
||||||
|
@ -615,8 +629,14 @@ public class Pony extends Living<PlayerEntity> implements Transmittable, Copieab
|
||||||
return player == null ? null : ((PonyContainer<Pony>)player).get();
|
return player == null ? null : ((PonyContainer<Pony>)player).get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Stream<Pony> stream(Stream<Entity> entities) {
|
||||||
|
return entities.flatMap(entity -> of(entity).stream());
|
||||||
|
}
|
||||||
|
|
||||||
public static Optional<Pony> of(Entity entity) {
|
public static Optional<Pony> of(Entity entity) {
|
||||||
return entity instanceof PlayerEntity ? PonyContainer.of(entity).map(a -> (Pony)a.get()) : Optional.empty();
|
return entity instanceof PlayerEntity
|
||||||
|
? PonyContainer.of(entity).map(a -> (Pony)a.get())
|
||||||
|
: Optional.empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean equal(GameProfile one, GameProfile two) {
|
public static boolean equal(GameProfile one, GameProfile two) {
|
||||||
|
|
|
@ -2,12 +2,15 @@ package com.minelittlepony.unicopia.item;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import com.minelittlepony.unicopia.EquinePredicates;
|
import com.minelittlepony.unicopia.EquinePredicates;
|
||||||
import com.minelittlepony.unicopia.USounds;
|
import com.minelittlepony.unicopia.USounds;
|
||||||
import com.minelittlepony.unicopia.ability.magic.Caster;
|
import com.minelittlepony.unicopia.ability.magic.Caster;
|
||||||
|
import com.minelittlepony.unicopia.entity.player.Pony;
|
||||||
|
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
|
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
|
||||||
|
@ -119,4 +122,8 @@ public class FriendshipBraceletItem extends WearableItem implements DyeableItem,
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Stream<Pony> getPartyMembers(Caster<?> caster, double radius) {
|
||||||
|
return Pony.stream(caster.findAllEntitiesInRange(radius, entity -> isComrade(caster, entity)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue