Repository reorganisation

Unified kotlin and java into just src/main
Unified the rs09 and core packages
Took all content out of the core package, and placed it into the new content package
Reorganised all source code relating to content to be easier to find and explore
This commit is contained in:
Ceikry
2023-01-26 13:59:28 +00:00
committed by Ryan
parent e4b799c44a
commit a100affda2
3156 changed files with 24205 additions and 30585 deletions
@@ -0,0 +1,217 @@
package content.region.fremennik.waterbirth.handlers;
import java.util.List;
import content.data.BossKillCounter;
import core.game.node.entity.Entity;
import core.game.node.entity.combat.BattleState;
import core.game.node.entity.combat.CombatStyle;
import core.game.node.entity.npc.AbstractNPC;
import core.game.node.entity.player.Player;
import core.game.world.map.Location;
import core.game.world.map.RegionManager;
import core.tools.RandomFunction;
/**
* Represents a dagannoth king npc.
* @author Vexia
*/
public final class DagannothKingNPC extends AbstractNPC {
/**
* The type of dag.
*/
private DagType type;
/**
* Constructs a new {@Code DagannothKingNPC} {@Code Object}
*/
public DagannothKingNPC() {
super(-1, null);
}
/**
* Constructs a new {@Code DagannothKingNPC} {@Code Object}
* @param id the id.
* @param location the location.
*/
public DagannothKingNPC(int id, Location location) {
super(id, location);
}
@Override
public void init() {
type = DagType.forId(getId());
super.init();
}
@Override
public void checkImpact(BattleState state) {
CombatStyle style = state.getStyle();
if (style == null) {
style = state.getAttacker().getProperties().getCombatPulse().getStyle();
}
if (type.isImmune(style)) {
state.neutralizeHits();
}
}
@Override
public double getLevelMod(Entity entity, Entity victim) {
if (type == DagType.PRIME) {
return 3.5;
}
return 0.0;
}
@Override
public void sendImpact(BattleState state) {
if (state.getEstimatedHit() > type.getMaxHit()) {
state.setEstimatedHit(RandomFunction.random(type.getMaxHit() - 5, type.getMaxHit()));
}
if (type != DagType.REX && RandomFunction.random(5) <= 2) {
List<Player> players = RegionManager.getLocalPlayers(this, 9);
if (players.size() <= 1) {
return;
}
Player newP = players.get(RandomFunction.random(players.size()));
if (newP != null) {
getProperties().getCombatPulse().stop();
getAggressiveHandler().setPauseTicks(2);
attack(newP);
}
}
}
@Override
public AbstractNPC construct(int id, Location location, Object... objects) {
return new DagannothKingNPC(id, location);
}
@Override
public int[] getIds() {
return new int[] { 2881, 2882, 2883 };
}
@Override
public void finalizeDeath(Entity killer) {
super.finalizeDeath(killer);
if (getId() == 2881 || getId() == 2882 || getId() == 2883) {
BossKillCounter.addtoKillcount((Player) killer, this.getId());
}
}
/**
* ß A king type.
* @author Vexia
*/
public enum DagType {
SUPREME(2881, CombatStyle.RANGE, CombatStyle.MELEE, CombatStyle.MAGIC, 30), PRIME(2882, CombatStyle.MAGIC, CombatStyle.RANGE, CombatStyle.MELEE, 61), REX(2883, CombatStyle.MELEE, CombatStyle.MAGIC, CombatStyle.RANGE, 28);
/**
* The npc id.
*/
private final int id;
/**
* The combat style.
*/
private final CombatStyle style;
/**
* The style he is weak to.
*/
private final CombatStyle weakStyle;
/**
* The style he is immunned to.
*/
private final CombatStyle immuneStyle;
/**
* The max hit.
*/
private final int maxHit;
/**
* Constructs a new {@Code DagType} {@Code Object}
* @param id the id.
* @param style the style.
* @param weakStyle the weak style.
* @parmam immuneStyle the style.
* @param maxHit the max hit.
*/
private DagType(int id, CombatStyle style, CombatStyle weakStyle, CombatStyle immuneStyle, int maxHit) {
this.id = id;
this.style = style;
this.weakStyle = weakStyle;
this.immuneStyle = immuneStyle;
this.maxHit = maxHit;
}
/**
* Gets the maxHit.
* @return the maxHit
*/
public int getMaxHit() {
return maxHit;
}
/**
* Gets a dag type.
* @param id the id.
* @return the type.
*/
public static DagType forId(int id) {
for (DagType type : values()) {
if (type.getId() == id) {
return type;
}
}
return null;
}
/**
* Checks if the dag is immune to a style.
* @param style the style.
* @return {@code True} if so.
*/
public boolean isImmune(CombatStyle style) {
return style == immuneStyle || style == this.style;
}
/**
* Gets the id.
* @return the id
*/
public int getId() {
return id;
}
/**
* Gets the style.
* @return the style
*/
public CombatStyle getStyle() {
return style;
}
/**
* Gets the immuneStyle.
* @return the immuneStyle
*/
public CombatStyle getImmuneStyle() {
return immuneStyle;
}
/**
* Gets the weakStyle.
* @return the weakStyle
*/
public CombatStyle getWeakStyle() {
return weakStyle;
}
}
}