forked from MagicBane/Server
Compare commits
No commits in common. 'fear-mechanic' and 'master' have entirely different histories.
fear-mecha
...
master
15 changed files with 3 additions and 190 deletions
@ -1,42 +0,0 @@ |
|||||||
package engine.jobs; |
|
||||||
|
|
||||||
import engine.job.AbstractJob; |
|
||||||
import engine.objects.AbstractCharacter; |
|
||||||
import engine.math.Vector3fImmutable; |
|
||||||
import engine.server.MBServerStatics; |
|
||||||
|
|
||||||
import java.util.Random; |
|
||||||
|
|
||||||
public class FearWanderJob extends AbstractJob { |
|
||||||
private final AbstractCharacter target; |
|
||||||
private final Random rand = new Random(); |
|
||||||
|
|
||||||
public FearWanderJob(AbstractCharacter target) { |
|
||||||
super(); |
|
||||||
this.target = target; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public void doJob() { |
|
||||||
// Only wander if still feared
|
|
||||||
if (target == null || !target.getBonuses().getBool(engine.Enum.ModType.Fear, engine.Enum.SourceType.None)) |
|
||||||
return; |
|
||||||
|
|
||||||
// Pick a random direction and distance
|
|
||||||
float angle = rand.nextFloat() * (float)Math.PI * 2f; |
|
||||||
float distance = 5f + rand.nextFloat() * 10f; // 5-15 units
|
|
||||||
|
|
||||||
Vector3fImmutable current = target.getLoc(); |
|
||||||
float newX = current.x + (float)Math.cos(angle) * distance; |
|
||||||
float newZ = current.z + (float)Math.sin(angle) * distance; |
|
||||||
|
|
||||||
// Clamp to world bounds if needed
|
|
||||||
newX = (float) Math.max(0, Math.min(newX, MBServerStatics.MAX_WORLD_WIDTH)); |
|
||||||
newZ = (float) Math.max(0, Math.min(newZ, MBServerStatics.MAX_WORLD_HEIGHT)); |
|
||||||
|
|
||||||
Vector3fImmutable dest = new Vector3fImmutable(newX, current.y, newZ); |
|
||||||
|
|
||||||
// Issue movement (implement setEndLoc or similar in your AbstractCharacter)
|
|
||||||
target.setEndLoc(dest); |
|
||||||
} |
|
||||||
} |
|
@ -1,58 +0,0 @@ |
|||||||
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
||||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
||||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
||||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
||||||
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
||||||
// Magicbane Emulator Project © 2013 - 2022
|
|
||||||
// www.magicbane.com
|
|
||||||
|
|
||||||
|
|
||||||
package engine.powers.effectmodifiers; |
|
||||||
|
|
||||||
import engine.Enum.GameObjectType; |
|
||||||
import engine.Enum.ModType; |
|
||||||
import engine.Enum.SourceType; |
|
||||||
import engine.jobs.FearWanderJob; |
|
||||||
import engine.job.JobContainer; |
|
||||||
import engine.job.JobScheduler; |
|
||||||
import engine.jobs.AbstractEffectJob; |
|
||||||
import engine.objects.*; |
|
||||||
|
|
||||||
import java.sql.ResultSet; |
|
||||||
import java.sql.SQLException; |
|
||||||
|
|
||||||
public class FearEffectModifier extends AbstractEffectModifier { |
|
||||||
|
|
||||||
public FearEffectModifier(ResultSet rs) throws SQLException { |
|
||||||
super(rs); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) { |
|
||||||
// Optional: custom logic when fear is applied
|
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public void applyBonus(AbstractCharacter ac, int trains) { |
|
||||||
PlayerBonuses bonus = ac.getBonuses(); |
|
||||||
|
|
||||||
bonus.setBool(this.modType, this.sourceType, true); |
|
||||||
ac.cancelOnFear(); |
|
||||||
ac.setIsCasting(false); |
|
||||||
ac.stopMovement(ac.getLoc()); |
|
||||||
|
|
||||||
// Schedule the wander job if not already scheduled
|
|
||||||
if (ac.getTimers().get("FearWander") == null) { |
|
||||||
JobContainer wanderJob = JobScheduler.getInstance().scheduleJob( |
|
||||||
new FearWanderJob(ac), 2000 |
|
||||||
); |
|
||||||
|
|
||||||
ac.getTimers().put("FearWander", wanderJob); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public void applyBonus(Item item, int trains) {} |
|
||||||
@Override |
|
||||||
public void applyBonus(Building building, int trains) {} |
|
||||||
} |
|
Loading…
Reference in new issue