Add real opposites and affinities to JSON StatusEffect (#11596)

This commit is contained in:
Pyratite No Lead
2026-02-05 03:10:57 +08:00
committed by GitHub
parent 9e091eaf06
commit 637b02c42e
2 changed files with 30 additions and 3 deletions

View File

@@ -699,7 +699,34 @@ public class ContentParser{
read(() -> readFields(liquid, value));
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) -> {
if(value.isString()){
return locate(ContentType.sector, name);