Files
BattleBane/src/engine/powers/poweractions/CharmPowerAction.java
T

72 lines
2.8 KiB
Java
Raw Normal View History

2022-04-30 09:41:17 -04:00
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.powers.poweractions;
import engine.math.Vector3fImmutable;
import engine.mbEnums;
2022-04-30 09:41:17 -04:00
import engine.net.client.ClientConnection;
import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.Mob;
import engine.objects.PlayerCharacter;
import engine.powers.ActionsBase;
import engine.powers.PowersBase;
2024-09-02 16:30:47 -05:00
import engine.wpak.data.PowerAction;
2022-04-30 09:41:17 -04:00
public class CharmPowerAction extends AbstractPowerAction {
2023-07-15 09:23:48 -04:00
private int levelCap;
private int levelCapRamp;
2022-04-30 09:41:17 -04:00
2024-09-05 15:46:59 -04:00
public CharmPowerAction(PowerAction powerAction) {
super(powerAction);
2025-02-22 15:33:59 -05:00
this.levelCap = powerAction.levelCap;
2025-02-22 15:37:38 -05:00
this.levelCapRamp = powerAction.levelCapCurve.ordinal();
2023-07-15 09:23:48 -04:00
}
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
@Override
protected void _startAction(AbstractCharacter source, AbstractWorldObject awo, Vector3fImmutable targetLoc, int trains, ActionsBase ab, PowersBase pb) {
2022-04-30 09:41:17 -04:00
if (source == null || awo == null || !(awo.getObjectType().equals(mbEnums.GameObjectType.Mob)) || !(source.getObjectType().equals(mbEnums.GameObjectType.PlayerCharacter)))
2023-07-15 09:23:48 -04:00
return;
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
PlayerCharacter owner = (PlayerCharacter) source;
ClientConnection origin = owner.getClientConnection();
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
if (origin == null)
return;
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
//verify is mob, not pet or guard
Mob mob = (Mob) awo;
if (!(mob.agentType.equals(mbEnums.AIAgentType.MOBILE)))
2023-07-15 09:23:48 -04:00
return;
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
//make sure mob isn't too high level
int cap = this.levelCap + (this.levelCapRamp * trains);
if (mob.getLevel() > cap && pb.getToken() != 1577464266)
return;
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
//turn mob into pet.
owner.commandSiegeMinion(mob);
}
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
@Override
protected void _handleChant(AbstractCharacter source, AbstractWorldObject target, Vector3fImmutable targetLoc, int trains, ActionsBase ab, PowersBase pb) {
}
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
@Override
protected void _startAction(AbstractCharacter source, AbstractWorldObject awo, Vector3fImmutable targetLoc,
int numTrains, ActionsBase ab, PowersBase pb, int duration) {
// TODO Auto-generated method stub
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
}
2022-04-30 09:41:17 -04:00
}