add BurnEffect.java FreezeEffect.java PoisonEffect.java StatusEffect.java

This commit is contained in:
2026-05-17 08:54:56 -07:00
parent 2d2f969fc9
commit e6dec6d0e8
4 changed files with 120 additions and 0 deletions
@@ -0,0 +1,16 @@
package org.project.weaponEffects;
import org.project.entity.Entity;
public class BurnEffect extends StatusEffect{
public BurnEffect() {
super("Burn", 10,5 , 3, StackType.damage);
}
@Override
public void onApply(Entity target) {
System.out.println(target.getName() + " is burned!");
}
}
@@ -0,0 +1,22 @@
package org.project.weaponEffects;
import org.project.entity.Entity;
public class FreezeEffect extends StatusEffect{
public FreezeEffect() {
super("Freeze",1,5 , 1, StatusEffect.StackType.damage);
}
@Override
public void onTick(Entity target) {
target.freeze();
super.onTick(target);
}
@Override
public void onExpire(Entity target) {
System.out.println(target.getName() + " is Frozen!");
}
}
@@ -0,0 +1,17 @@
package org.project.weaponEffects;
import org.project.entity.Entity;
public class PoisonEffect extends StatusEffect{
public PoisonEffect() {
super("Poison",10,5 , 3, StackType.damage);
}
@Override
public void onApply(Entity target) {
System.out.println(target.getName() + " is poisoned!");
}
}
@@ -0,0 +1,65 @@
package org.project.weaponEffects;
import org.project.entity.Entity;
public abstract class StatusEffect {
public enum StackType {
none, // this effect is not stackable
duration, // in duplication, just duration increases
damage,// in duplication, just damage increases
both // increases duration and damage
}
protected String name;
private int duration;
private int equipManaCost;
protected int damage;
protected StackType stackType;
public StatusEffect(String name, int damage, int equipManaCost, int duration, StackType stackType) {
this.name = name;
this.damage = damage;
this.equipManaCost = equipManaCost;
this.duration = duration;
this.stackType = stackType;
}
public String getName() { return name; }
public int getDamage() {
return damage;
}
public void setDamage(int damage) {
this.damage = damage;
}
public int getDuration() { return duration; }
public void setDuration(int duration) {
this.duration = duration;
}
public StackType getStackType() { return stackType; }
public int getEquipManaCost() {
return equipManaCost;
}
public void reduceDuration() {
duration--;
}
public void onApply(Entity target) {}
public void onTick(Entity target) {
target.takeDamage(damage);
System.out.println(target.getName() + " suffers " + damage + " damage form " + name);
reduceDuration();
}
public void onExpire(Entity target) {System.out.println(target.getName() + " is no longer suffering form " + name);}
}