Browse Source

Alter Spell Effect based on DDProperties

Sam Jaffe 8 năm trước cách đây
mục cha
commit
bd47b8f743

+ 1 - 1
resources/spells/default.json

@@ -40,7 +40,7 @@
     "range":"Touch",
     "target":"Creature Touched",
     "effect":{
-      "format":"1d8 + {perlevel} per level (maximum +{upto})",
+      "format":"1d8 + {per} per level (maximum +{upto})",
       "resolved":"1d8 + {atlevel}",
       "per":1,
       "upto":5

+ 4 - 2
src/main/lombok/org/leumasjaffe/charsheet/model/magic/dimension/Effect.java

@@ -1,5 +1,7 @@
 package org.leumasjaffe.charsheet.model.magic.dimension;
 
+import java.util.Map;
+
 import org.leumasjaffe.format.Named;
 import org.leumasjaffe.format.StringHelper;
 
@@ -19,8 +21,8 @@ public class Effect {
 	int count, per, beyond;
 	@NonFinal @Setter(AccessLevel.PRIVATE) @Getter(AccessLevel.PRIVATE) int step = 1, upto = Integer.MAX_VALUE;
 	
-	public String getResolved(int level) {
-		final int result = count + per * ((Math.min(level, upto)-beyond) / step);
+	public String getResolved(int level, Map<String, Integer> map) {
+		final int result = map.getOrDefault("value", 0) + count + per * ((Math.min(level, upto)-beyond) / step);
 		return resolved == null ? toString() :
 			StringHelper.format(resolved, new Named("atlevel", result));
 	}

+ 3 - 1
src/main/lombok/org/leumasjaffe/charsheet/view/magic/SpellInfoPanel.java

@@ -239,7 +239,9 @@ class SpellInfoPanel extends JPanel {
 		gbc_lblEffect.gridy = 4;
 		panel.add(lblEffect, gbc_lblEffect);
 		
-		JTextField effect = new JTextField(asString(spell.getEffect(), e -> e.getResolved(classLevel.value())));
+		@SuppressWarnings("unchecked")
+		JTextField effect = new JTextField(asString(spell.getEffect(), 
+				e -> e.getResolved(classLevel.value(), (Map<String, Integer>) props.getOrDefault("effect", Collections.emptyMap()))));
 		effect.setToolTipText(asString(spell.getEffect()));
 		effect.setEditable(false);
 		effect.setColumns(10);