Add real opposites and affinities to JSON StatusEffect (#11596)
This commit is contained in:
@@ -699,7 +699,34 @@ public class ContentParser{
|
|||||||
read(() -> readFields(liquid, value));
|
read(() -> readFields(liquid, value));
|
||||||
return liquid;
|
return liquid;
|
||||||
},
|
},
|
||||||
ContentType.status, parser(ContentType.status, StatusEffect::new),
|
ContentType.status, (TypeParser<StatusEffect>)(mod, name, value) -> {
|
||||||
|
StatusEffect status;
|
||||||
|
if(locate(ContentType.status, name) != null){
|
||||||
|
status = locate(ContentType.status, name);
|
||||||
|
readBundle(ContentType.status, name, value);
|
||||||
|
}else{
|
||||||
|
readBundle(ContentType.status, name, value);
|
||||||
|
status = new StatusEffect(mod + "-" + name);
|
||||||
|
}
|
||||||
|
currentContent = status;
|
||||||
|
read(() -> readFields(status, value));
|
||||||
|
|
||||||
|
status.init(() -> {
|
||||||
|
var oldOpposite = status.opposites.copy();
|
||||||
|
status.opposites.clear();
|
||||||
|
status.opposite(oldOpposite.toSeq().toArray(StatusEffect.class));
|
||||||
|
|
||||||
|
var oldAffinities = status.affinities.copy();
|
||||||
|
status.affinities.clear();
|
||||||
|
for(StatusEffect affinity: oldAffinities){
|
||||||
|
status.affinity(affinity, (unit, result, time) -> {
|
||||||
|
unit.damagePierce(status.transitionDamage);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return status;
|
||||||
|
},
|
||||||
ContentType.sector, (TypeParser<SectorPreset>)(mod, name, value) -> {
|
ContentType.sector, (TypeParser<SectorPreset>)(mod, name, value) -> {
|
||||||
if(value.isString()){
|
if(value.isString()){
|
||||||
return locate(ContentType.sector, name);
|
return locate(ContentType.sector, name);
|
||||||
|
|||||||
@@ -176,13 +176,13 @@ public class StatusEffect extends UnlockableContent{
|
|||||||
transitions.put(effect, handler);
|
transitions.put(effect, handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void affinity(StatusEffect effect, TransitionHandler handler){
|
public void affinity(StatusEffect effect, TransitionHandler handler){
|
||||||
affinities.add(effect);
|
affinities.add(effect);
|
||||||
effect.affinities.add(this);
|
effect.affinities.add(this);
|
||||||
trans(effect, handler);
|
trans(effect, handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void opposite(StatusEffect... effect){
|
public void opposite(StatusEffect... effect){
|
||||||
for(var other : effect){
|
for(var other : effect){
|
||||||
handleOpposite(other);
|
handleOpposite(other);
|
||||||
other.handleOpposite(this);
|
other.handleOpposite(this);
|
||||||
|
|||||||
Reference in New Issue
Block a user