|
|
@@ -0,0 +1,31 @@
|
|
|
+package org.leumasjaffe.charsheet.model.magic;
|
|
|
+
|
|
|
+import org.leumasjaffe.charsheet.util.StringHelper;
|
|
|
+import org.leumasjaffe.format.Named;
|
|
|
+
|
|
|
+import lombok.AccessLevel;
|
|
|
+import lombok.NonNull;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
+import lombok.experimental.FieldDefaults;
|
|
|
+import lombok.experimental.NonFinal;
|
|
|
+
|
|
|
+@RequiredArgsConstructor
|
|
|
+@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
|
|
|
+public class Effect {
|
|
|
+ @NonNull String format;
|
|
|
+ String resolved;
|
|
|
+ int count, perlevel, beyond;
|
|
|
+ @NonFinal int step = 1, upto = Integer.MAX_VALUE;
|
|
|
+
|
|
|
+ public String getResolved(int level) {
|
|
|
+ final int result = count + perlevel * ((Math.min(level, upto)-beyond) / step);
|
|
|
+ return resolved == null ? toString() :
|
|
|
+ StringHelper.format(resolved, new Named("atlevel", result));
|
|
|
+ }
|
|
|
+
|
|
|
+ public String toString() {
|
|
|
+ return StringHelper.format(format, new Named("count", count),
|
|
|
+ new Named("perlevel", perlevel), new Named("step", step),
|
|
|
+ new Named("beyond", beyond), new Named("upto", upto));
|
|
|
+ }
|
|
|
+}
|