41 lines
1.2 KiB
Java
41 lines
1.2 KiB
Java
package tc.oc.pgm.mutation.types.targetable;
|
|
|
|
import com.google.common.collect.Range;
|
|
import org.bukkit.Location;
|
|
import org.bukkit.util.Vector;
|
|
import tc.oc.pgm.match.Match;
|
|
import tc.oc.pgm.match.MatchPlayer;
|
|
import tc.oc.pgm.mutation.types.TargetMutation;
|
|
|
|
import java.time.Duration;
|
|
import java.util.List;
|
|
|
|
public class LightningMutation extends TargetMutation.Impl {
|
|
|
|
final static Duration FREQUENCY = Duration.ofSeconds(30);
|
|
final static Range<Integer> TARGETS = Range.closed(2, 5);
|
|
final static Range<Integer> STRIKES = Range.closed(1, 3);
|
|
|
|
public LightningMutation(Match match) {
|
|
super(match, FREQUENCY);
|
|
}
|
|
|
|
@Override
|
|
public void target(List<MatchPlayer> players) {
|
|
players.forEach(player -> {
|
|
Location location = player.getLocation();
|
|
world().strikeLightning(location.clone().add(Vector.getRandom()));
|
|
int strikes = entropy().randomInt(STRIKES);
|
|
for(int i = 0; i < strikes; i++) {
|
|
world().strikeLightningEffect(location.clone().add(Vector.getRandom().multiply(Math.pow(i + 1, 2))));
|
|
}
|
|
});
|
|
}
|
|
|
|
@Override
|
|
public int targets() {
|
|
return match().entropyForTick().randomInt(TARGETS);
|
|
}
|
|
|
|
}
|