package emu.grasscutter.data.excels; import dev.morphia.annotations.Transient; import emu.grasscutter.data.*; import emu.grasscutter.data.common.*; import it.unimi.dsi.fastutil.objects.*; import java.util.*; import lombok.Getter; @ResourceType(name = "ProudSkillExcelConfigData.json") public class ProudSkillData extends GameResource { private int proudSkillId; @Getter private int proudSkillGroupId; @Getter private int level; @Getter private int coinCost; @Getter private int breakLevel; @Getter private int proudSkillType; @Getter private String openConfig; @Getter private List costItems; @Getter private List filterConds; @Getter private List lifeEffectParams; @Getter private FightPropData[] addProps; @Getter private float[] paramList; @Getter private long[] paramDescList; @Getter private long nameTextMapHash; @Transient private Iterable totalCostItems; @Transient @Getter private Object2FloatMap paramListMap = new Object2FloatOpenHashMap<>(); @Override public int getId() { return proudSkillId; } public Iterable getTotalCostItems() { if (this.totalCostItems == null) { List total = (this.costItems != null) ? new ArrayList<>(this.costItems) : new ArrayList<>(1); if (this.coinCost > 0) total.add(new ItemParamData(202, this.coinCost)); this.totalCostItems = total; } return this.totalCostItems; } @Override public void onLoad() { // Fight props var parsed = new ArrayList(getAddProps().length); for (var prop : getAddProps()) { if (prop.getPropType() != null && prop.getValue() != 0f) { prop.onLoad(); parsed.add(prop); } } this.addProps = parsed.toArray(new FightPropData[0]); for (int i = 0; i < paramList.length; i++) { this.paramListMap.put(Integer.toString(i + 1), paramList[i]); } } }