Add automatic detection of condition

main
Joshua Sigona 3 years ago
parent 6957f40ff6
commit 4452398eba
  1. 13
      SigCrafter/src/sig/ColorPosition.java
  2. 206
      SigCrafter/src/sig/SigCraft.java
  3. 9
      SigCrafter/src/sig/Skill.java
  4. 8
      SigCrafter/src/sig/skills/BasicSynthesis.java
  5. 7
      SigCrafter/src/sig/skills/BasicTouch.java
  6. 8
      SigCrafter/src/sig/skills/BrandOfTheElements.java
  7. 24
      SigCrafter/src/sig/skills/ByregotsBlessing.java
  8. 8
      SigCrafter/src/sig/skills/GreatStrides.java
  9. 8
      SigCrafter/src/sig/skills/HastyTouch.java
  10. 8
      SigCrafter/src/sig/skills/InnerQuiet.java
  11. 8
      SigCrafter/src/sig/skills/Innovation.java
  12. 8
      SigCrafter/src/sig/skills/MastersMend.java
  13. 8
      SigCrafter/src/sig/skills/NameOfTheElements.java
  14. 8
      SigCrafter/src/sig/skills/Observe.java
  15. 8
      SigCrafter/src/sig/skills/RapidSynthesis.java
  16. 8
      SigCrafter/src/sig/skills/StandardTouch.java
  17. 8
      SigCrafter/src/sig/skills/TricksOfTheTrade.java
  18. 8
      SigCrafter/src/sig/skills/Veneration.java
  19. 8
      SigCrafter/src/sig/skills/WasteNot.java
  20. 8
      SigCrafter/src/sig/skills/WasteNotII.java

@ -0,0 +1,13 @@
package sig;
import java.awt.Color;
import java.awt.Point;
public class ColorPosition {
Point p;
Color c;
ColorPosition(int x,int y,int r,int g, int b) {
this.p=new Point(x,y);
this.c=new Color(r,g,b);
}
}

@ -1,13 +1,23 @@
package sig;
import java.awt.AWTException;
import java.awt.Color;
import java.awt.GraphicsEnvironment;
import java.awt.Point;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import sig.skills.BasicSynthesis;
import sig.skills.BasicTouch;
import sig.skills.BrandOfTheElements;
import sig.skills.ByregotsBlessing;
import sig.skills.GreatStrides;
import sig.skills.HastyTouch;
import sig.skills.InnerQuiet;
@ -45,6 +55,12 @@ public class SigCraft {
public static Craft BEST_CRAFT;
public static Robot r;
public static ColorPosition CRAFTING_WINDOW_PIXELS = new ColorPosition(284,68,77,77,77);
public static ColorPosition CRAFT_START_PIXELS = new ColorPosition(334,130,74,77,74);
public static ColorPosition READY_FOR_ACTION_PIXELS = new ColorPosition(1031,892,230,197,164);
//Quality = (0.37 * Control + 32.6) * (1 - 0.05 * min(max(Recipe Level - Character Level, 0), 5))
//Good +50%, Excellent +300%
@ -53,23 +69,32 @@ public class SigCraft {
public static ArrayList<Craft> SucceededCrafts = new ArrayList<Craft>();
public static void main(String[] args) {
SKILLLIST.put("Rapid Synthesis",new RapidSynthesis("Rapid Synthesis",0,false,9));
SKILLLIST.put("Basic Synthesis",new BasicSynthesis("Basic Synthesis",0,true,1));
SKILLLIST.put("Brand of the Elements",new BrandOfTheElements("Brand of the Elements",6,true,37));
SKILLLIST.put("Basic Touch",new BasicTouch("Basic Touch",18,true,5));
SKILLLIST.put("Hasty Touch",new HastyTouch("Hasty Touch",0,false,9));
SKILLLIST.put("Standard Touch",new StandardTouch("Standard Touch",32,true,18));
try {
r = new Robot();
} catch (AWTException e) {
e.printStackTrace();
}
SKILLLIST.put("Rapid Synthesis",new RapidSynthesis("Rapid Synthesis",0,false,9,KeyEvent.VK_SHIFT,KeyEvent.VK_4));
SKILLLIST.put("Basic Synthesis",new BasicSynthesis("Basic Synthesis",0,true,1,KeyEvent.VK_1));
SKILLLIST.put("Brand of the Elements",new BrandOfTheElements("Brand of the Elements",6,true,37,KeyEvent.VK_CONTROL,KeyEvent.VK_X));
SKILLLIST.put("Basic Touch",new BasicTouch("Basic Touch",18,true,5,KeyEvent.VK_2));
SKILLLIST.put("Hasty Touch",new HastyTouch("Hasty Touch",0,false,9,KeyEvent.VK_CONTROL,KeyEvent.VK_3));
SKILLLIST.put("Standard Touch",new StandardTouch("Standard Touch",32,true,18,KeyEvent.VK_SHIFT,KeyEvent.VK_2));
//SKILLLIST.add(new Skill("Byregot's Blessing",24,true,50)); //TODO We don't know how this works yet.
SKILLLIST.put("Tricks of the Trade",new TricksOfTheTrade("Tricks of the Trade",0,true,13));
SKILLLIST.put("Master's Mend",new MastersMend("Master's Mend",88,true,7));
SKILLLIST.put("Waste Not",new WasteNot("Waste Not",56,true,15));
SKILLLIST.put("Waste Not II",new WasteNotII("Waste Not II",98,true,47));
SKILLLIST.put("Inner Quiet",new InnerQuiet("Inner Quiet",18,true,11));
SKILLLIST.put("Veneration",new Veneration("Veneration",18,true,15));
SKILLLIST.put("Great Strides",new GreatStrides("Great Strides",32,true,21));
SKILLLIST.put("Innovation",new Innovation("Innovation",18,true,26));
SKILLLIST.put("Name of the Elements",new NameOfTheElements("Name of the Elements",30,true,37));
SKILLLIST.put("Observe",new Observe("Observe",7,true,13));
SKILLLIST.put("Tricks of the Trade",new TricksOfTheTrade("Tricks of the Trade",0,true,13,KeyEvent.VK_CONTROL,KeyEvent.VK_2));
SKILLLIST.put("Master's Mend",new MastersMend("Master's Mend",88,true,7,KeyEvent.VK_3));
SKILLLIST.put("Waste Not",new WasteNot("Waste Not",56,true,15,KeyEvent.VK_CONTROL,KeyEvent.VK_1));
SKILLLIST.put("Waste Not II",new WasteNotII("Waste Not II",98,true,47,KeyEvent.VK_CONTROL,KeyEvent.VK_4));
SKILLLIST.put("Inner Quiet",new InnerQuiet("Inner Quiet",18,true,11,KeyEvent.VK_5));
SKILLLIST.put("Veneration",new Veneration("Veneration",18,true,15,KeyEvent.VK_SHIFT,KeyEvent.VK_1));
SKILLLIST.put("Great Strides",new GreatStrides("Great Strides",32,true,21,KeyEvent.VK_CONTROL,KeyEvent.VK_5));
SKILLLIST.put("Innovation",new Innovation("Innovation",18,true,26,KeyEvent.VK_4));
SKILLLIST.put("Name of the Elements",new NameOfTheElements("Name of the Elements",30,true,37,KeyEvent.VK_CONTROL,KeyEvent.VK_Z));
SKILLLIST.put("Observe",new Observe("Observe",7,true,13,KeyEvent.VK_C));
SKILLLIST.put("Byregot's Blessing",new ByregotsBlessing("Byregot's Blessing",24,true,50,KeyEvent.VK_ALT,KeyEvent.VK_2));
BUFFLIST.put("Inner Quiet",new Buff("Inner Quiet",0));
BUFFLIST.put("Veneration",new Buff("Veneration",0));
@ -80,7 +105,125 @@ public class SigCraft {
BUFFLIST.put("Inner Quiet",new Buff("Inner Quiet", 0));
BUFFLIST.put("Waste Not",new Buff("Waste Not",0));
SetupCraft();
//SetupCraft();
//284,68 77,77,77
while (true) {
r.delay(1000);
try {
Color col=null;
LookForScreenPixels(CRAFTING_WINDOW_PIXELS);
System.out.println("Detected crafting window...");
PressKey(KeyEvent.VK_NUMPAD0);r.delay(300);
PressKey(KeyEvent.VK_NUMPAD0);r.delay(300);
PressKey(KeyEvent.VK_NUMPAD0);r.delay(300);
PressKey(KeyEvent.VK_NUMPAD0);r.delay(300);
//334,130 74,77,74
LookForScreenPixels(CRAFT_START_PIXELS);
System.out.println("Craft started...");
//336,267 151,220,96
LookForScreenPixels(READY_FOR_ACTION_PIXELS);
LoadRotation_40Durability_1700Quality_1Synth_280CP_LV47();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
//break;
}
}
private static void LoadRotation_40Durability_1700Quality_1Synth_280CP_LV47() {
PerformSkill("Inner Quiet");
PerformSkill("Innovation");
PerformSkill("Waste Not II");
PerformSkill("Basic Touch",true);
PerformSkill("Standard Touch",true);
PerformSkill("Basic Touch",true);
PerformSkill("Standard Touch",true);
PerformSkill("Innovation",true);
PerformSkill("Basic Touch",true);
PerformSkill("Standard Touch",true);
PerformSkill("Basic Touch",true);
PerformSkill("Basic Synthesis");
}
private static void LoadRotation_40Durability_1900Quality_1Synth_280CP_LV45() {
PerformSkill("Inner Quiet");
PerformSkill("Waste Not");
PerformSkill("Basic Touch",true);
PerformSkill("Standard Touch",true);
PerformSkill("Basic Touch",true);
PerformSkill("Standard Touch",true);
PerformSkill("Innovation",true);
PerformSkill("Basic Touch",true);
PerformSkill("Standard Touch",true);
PerformSkill("Basic Touch",true);
PerformSkill("Basic Synthesis");
}
private static void GetCondition() {
}
private static void PerformSkill(String string) {
PerformSkill(string,false);
}
private static void PerformSkill(String string,boolean checkForMaxQuality) {
try {
LookForScreenPixels(READY_FOR_ACTION_PIXELS);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
r.delay(100);
Skill s = SKILLLIST.get(string);
if (s==null) {
System.err.println("Could not find skill "+string+"!");
System.exit(1);
}
if (checkForMaxQuality&&MaxQuality()) {return;}
if (s.modifier!=-1) {
PressKeyWithModifier(s.modifier,s.key);
} else {
PressKey(s.key);
}
r.delay(500);
//1031,892 115,98,82 230,197,164
}
private static boolean MaxQuality() {
Color col=null;
try {
col = new Color(CaptureScreen().getRGB(336, 267));
} catch (IOException e) {
e.printStackTrace();
}
return col.getRed()==151&&col.getGreen()==220&&col.getBlue()==96;
}
private static void LookForScreenPixels(ColorPosition cp) throws IOException, InterruptedException {
Color col;
do {
col = new Color(CaptureScreen().getRGB(cp.p.x, cp.p.y));
r.delay(100);
} while (!cp.c.equals(col));
}
private static BufferedImage CaptureScreen() throws IOException {
BufferedImage screenshot = r.createScreenCapture(GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds());
//ImageIO.write(screenshot,"png",new File("screenshot.png"));
return screenshot;
}
private static void PressKey(int keycode) {
r.keyPress(keycode);
r.keyRelease(keycode);
}
private static void PressKeyWithModifier(int modifier,int keycode) {
r.keyPress(modifier);
r.keyPress(keycode);
r.keyRelease(keycode);r.delay(100);
r.keyRelease(modifier);
}
public static boolean IsThereEnoughTurns(int durability,Map<String,Buff> bufflist,int turnsRequired) {
@ -136,18 +279,24 @@ public class SigCraft {
System.out.println("\tUsing standard rotation for Progress. Quality CP Available: "+qualityCPRemaining);
}
RunCraftCheck(new String[]{},new String[]{"Basic Touch"},new String[]{});
boolean combo=false;
//Can we just straight up craft?
for (int i=0;i<2;i++) {
List<Skill> quality_rotation1 = new ArrayList<Skill>();
Craft c3 = new Craft(CONTROL,LEVEL,CP,BASE_PROGRESS,PROGRESS_GOAL,QUALITY_GOAL,GUARANTEED,DURABILITY,CRAFT_PROGRESS,CRAFT_QUALITY,DURABILITY,qualityCPRemaining,1,1,1,RECIPE_LEVEL,Status.NORMAL,BUFFLIST);
boolean combo=false;
combo=false;
while (c3.craft_quality<c3.quality_goal && IsThereEnoughTurns(c3.craft_durability,c3.BuffList,PROGRESS_FINAL_STEPS)) {
s = !combo?SKILLLIST.get("Basic Touch"):SKILLLIST.get("Standard Touch");
s.useSkill(c3);
quality_rotation1.add(s);
combo=!combo;
combo = AttemptMastersMend(PROGRESS_FINAL_STEPS, quality_rotation1, c3, combo);
if (i==1) {combo = AttemptMastersMend(PROGRESS_FINAL_STEPS, quality_rotation1, c3, combo);}
}
System.out.println("Raw Quality Rotation leaves "+c3.craft_cp+" CP, "+c3.craft_durability+" durability, "+(c3.quality_goal-c3.craft_quality)+" quality from the goal.");
if (i==0&&c3.craft_cp<=SKILLLIST.get("Master's Mend").CPCost) {break;}
}
//Add Inner Quiet
List<Skill> quality_rotation2 = new ArrayList<Skill>();
@ -435,6 +584,25 @@ public class SigCraft {
}
private static void RunCraftCheck(String[] preAbilities, String[] repeatAbilities, String[] reapplyBuffs, int qualityCPRemaining, int PROGRESS_FINAL_STEPS) {
List<Skill> rotation = new ArrayList<Skill>();
Craft craft = new Craft(CONTROL,LEVEL,CP,BASE_PROGRESS,PROGRESS_GOAL,QUALITY_GOAL,GUARANTEED,DURABILITY,CRAFT_PROGRESS,CRAFT_QUALITY,DURABILITY,qualityCPRemaining,1,1,1,RECIPE_LEVEL,Status.NORMAL,BUFFLIST);
for (String s : preAbilities) {
Skill ss = SKILLLIST.get(s);
ss.useSkill(craft);
rotation.add(ss);
}
while (craft.craft_quality<craft.quality_goal && IsThereEnoughTurns(craft.craft_durability,craft.BuffList,PROGRESS_FINAL_STEPS)) {
for (String s : reapplyBuffs) {
if (craft.BuffList.get(s.replaceAll(Pattern.quote("Waste Not II"),"Waste Not")).stackCount==0) {
Skill ss = SKILLLIST.get(s);
ss.useSkill(craft);
rotation.add(ss);
}
}
}
}
private static boolean AttemptMastersMend(int PROGRESS_FINAL_STEPS, List<Skill> quality_rotation1, Craft c3,
boolean combo) {
Skill s;

@ -5,11 +5,18 @@ public class Skill implements SkillInterface{
public int CPCost;
public boolean guaranteed;
public int lvReq;
public Skill(String name, int CPCost, boolean guaranteed, int lvReq) {
public int modifier;
public int key;
public Skill(String name, int CPCost, boolean guaranteed, int lvReq, int modifier, int key) {
this.name = name;
this.CPCost = CPCost;
this.guaranteed = guaranteed;
this.lvReq = lvReq;
this.modifier=modifier;
this.key=key;
}
public Skill(String name, int CPCost, boolean guaranteed, int lvReq, int key) {
this(name,CPCost,guaranteed,lvReq,-1,key);
}
public String getName() {
return name;

@ -5,8 +5,12 @@ import sig.Skill;
public class BasicSynthesis extends Skill {
public BasicSynthesis(String name, int CPCost, boolean guaranteed, int lvReq) {
super(name, CPCost, guaranteed, lvReq);
public BasicSynthesis(String name, int CPCost, boolean guaranteed, int lvReq, int modifier, int key) {
super(name, CPCost, guaranteed, lvReq, modifier, key);
}
public BasicSynthesis(String name, int CPCost, boolean guaranteed, int lvReq, int key) {
super(name, CPCost, guaranteed, lvReq, key);
}
@Override

@ -5,8 +5,11 @@ import sig.Skill;
public class BasicTouch extends Skill {
public BasicTouch(String name, int CPCost, boolean guaranteed, int lvReq) {
super(name, CPCost, guaranteed, lvReq);
public BasicTouch(String name, int CPCost, boolean guaranteed, int lvReq, int modifier, int key) {
super(name, CPCost, guaranteed, lvReq,modifier,key);
}
public BasicTouch(String name, int CPCost, boolean guaranteed, int lvReq, int key) {
super(name, CPCost, guaranteed, lvReq,key);
}
@Override

@ -5,8 +5,12 @@ import sig.Skill;
public class BrandOfTheElements extends Skill {
public BrandOfTheElements(String name, int CPCost, boolean guaranteed, int lvReq) {
super(name, CPCost, guaranteed, lvReq);
public BrandOfTheElements(String name, int CPCost, boolean guaranteed, int lvReq, int modifier, int key) {
super(name, CPCost, guaranteed, lvReq, modifier, key);
}
public BrandOfTheElements(String name, int CPCost, boolean guaranteed, int lvReq, int key) {
super(name, CPCost, guaranteed, lvReq, key);
}
@Override

@ -0,0 +1,24 @@
package sig.skills;
import sig.Buff;
import sig.Craft;
import sig.Skill;
public class ByregotsBlessing extends Skill {
public ByregotsBlessing(String name, int CPCost, boolean guaranteed, int lvReq, int modifier, int key) {
super(name, CPCost, guaranteed, lvReq, modifier, key);
}
public ByregotsBlessing(String name, int CPCost, boolean guaranteed, int lvReq, int key) {
super(name, CPCost, guaranteed, lvReq, key);
}
@Override
public void useSkill(Craft c) {
super.useSkill(c);
//TODO Actually implement it.
c.craft_quality += 1 * (c.quality_mult+c.BuffList.get("Inner Quiet").stackCount*0.2) * (0.37*c.control+32.6)*(1-0.05*Math.min(Math.max(c.recipe_level-c.level,0),5));
c.craft_durability -= 10 * c.durability_mult;
if (c.BuffList.get("Inner Quiet").stackCount>0) {c.BuffList.get("Inner Quiet").stackCount++;}
}
}

@ -5,8 +5,12 @@ import sig.Craft;
import sig.Skill;
public class GreatStrides extends Skill {
public GreatStrides(String name, int CPCost, boolean guaranteed, int lvReq) {
super(name, CPCost, guaranteed, lvReq);
public GreatStrides(String name, int CPCost, boolean guaranteed, int lvReq, int modifier, int key) {
super(name, CPCost, guaranteed, lvReq, modifier, key);
}
public GreatStrides(String name, int CPCost, boolean guaranteed, int lvReq, int key) {
super(name, CPCost, guaranteed, lvReq, key);
}
@Override

@ -5,8 +5,12 @@ import sig.Skill;
public class HastyTouch extends Skill {
public HastyTouch(String name, int CPCost, boolean guaranteed, int lvReq) {
super(name, CPCost, guaranteed, lvReq);
public HastyTouch(String name, int CPCost, boolean guaranteed, int lvReq, int modifier, int key) {
super(name, CPCost, guaranteed, lvReq, modifier, key);
}
public HastyTouch(String name, int CPCost, boolean guaranteed, int lvReq, int key) {
super(name, CPCost, guaranteed, lvReq, key);
}
@Override

@ -5,8 +5,12 @@ import sig.Craft;
import sig.Skill;
public class InnerQuiet extends Skill {
public InnerQuiet(String name, int CPCost, boolean guaranteed, int lvReq) {
super(name, CPCost, guaranteed, lvReq);
public InnerQuiet(String name, int CPCost, boolean guaranteed, int lvReq, int modifier, int key) {
super(name, CPCost, guaranteed, lvReq, modifier, key);
}
public InnerQuiet(String name, int CPCost, boolean guaranteed, int lvReq, int key) {
super(name, CPCost, guaranteed, lvReq, key);
}
@Override

@ -5,8 +5,12 @@ import sig.Craft;
import sig.Skill;
public class Innovation extends Skill {
public Innovation(String name, int CPCost, boolean guaranteed, int lvReq) {
super(name, CPCost, guaranteed, lvReq);
public Innovation(String name, int CPCost, boolean guaranteed, int lvReq, int modifier, int key) {
super(name, CPCost, guaranteed, lvReq, modifier, key);
}
public Innovation(String name, int CPCost, boolean guaranteed, int lvReq, int key) {
super(name, CPCost, guaranteed, lvReq, key);
}
@Override

@ -5,8 +5,12 @@ import sig.Skill;
public class MastersMend extends Skill {
public MastersMend(String name, int CPCost, boolean guaranteed, int lvReq) {
super(name, CPCost, guaranteed, lvReq);
public MastersMend(String name, int CPCost, boolean guaranteed, int lvReq, int modifier, int key) {
super(name, CPCost, guaranteed, lvReq, modifier, key);
}
public MastersMend(String name, int CPCost, boolean guaranteed, int lvReq, int key) {
super(name, CPCost, guaranteed, lvReq, key);
}
@Override

@ -5,8 +5,12 @@ import sig.Craft;
import sig.Skill;
public class NameOfTheElements extends Skill {
public NameOfTheElements(String name, int CPCost, boolean guaranteed, int lvReq) {
super(name, CPCost, guaranteed, lvReq);
public NameOfTheElements(String name, int CPCost, boolean guaranteed, int lvReq, int modifier, int key) {
super(name, CPCost, guaranteed, lvReq, modifier, key);
}
public NameOfTheElements(String name, int CPCost, boolean guaranteed, int lvReq, int key) {
super(name, CPCost, guaranteed, lvReq, key);
}
@Override

@ -4,8 +4,12 @@ import sig.Craft;
import sig.Skill;
public class Observe extends Skill {
public Observe(String name, int CPCost, boolean guaranteed, int lvReq) {
super(name, CPCost, guaranteed, lvReq);
public Observe(String name, int CPCost, boolean guaranteed, int lvReq, int modifier, int key) {
super(name, CPCost, guaranteed, lvReq, modifier, key);
}
public Observe(String name, int CPCost, boolean guaranteed, int lvReq, int key) {
super(name, CPCost, guaranteed, lvReq, key);
}
@Override

@ -5,8 +5,12 @@ import sig.Skill;
public class RapidSynthesis extends Skill {
public RapidSynthesis(String name, int CPCost, boolean guaranteed, int lvReq) {
super(name, CPCost, guaranteed, lvReq);
public RapidSynthesis(String name, int CPCost, boolean guaranteed, int lvReq, int modifier, int key) {
super(name, CPCost, guaranteed, lvReq, modifier, key);
}
public RapidSynthesis(String name, int CPCost, boolean guaranteed, int lvReq, int key) {
super(name, CPCost, guaranteed, lvReq, key);
}
@Override

@ -5,8 +5,12 @@ import sig.Skill;
public class StandardTouch extends Skill {
public StandardTouch(String name, int CPCost, boolean guaranteed, int lvReq) {
super(name, CPCost, guaranteed, lvReq);
public StandardTouch(String name, int CPCost, boolean guaranteed, int lvReq, int modifier, int key) {
super(name, CPCost, guaranteed, lvReq, modifier, key);
}
public StandardTouch(String name, int CPCost, boolean guaranteed, int lvReq, int key) {
super(name, CPCost, guaranteed, lvReq, key);
}
@Override

@ -6,8 +6,12 @@ import sig.Status;
public class TricksOfTheTrade extends Skill {
public TricksOfTheTrade(String name, int CPCost, boolean guaranteed, int lvReq) {
super(name, CPCost, guaranteed, lvReq);
public TricksOfTheTrade(String name, int CPCost, boolean guaranteed, int lvReq, int modifier, int key) {
super(name, CPCost, guaranteed, lvReq, modifier, key);
}
public TricksOfTheTrade(String name, int CPCost, boolean guaranteed, int lvReq, int key) {
super(name, CPCost, guaranteed, lvReq, key);
}
@Override

@ -5,8 +5,12 @@ import sig.Craft;
import sig.Skill;
public class Veneration extends Skill {
public Veneration(String name, int CPCost, boolean guaranteed, int lvReq) {
super(name, CPCost, guaranteed, lvReq);
public Veneration(String name, int CPCost, boolean guaranteed, int lvReq, int modifier, int key) {
super(name, CPCost, guaranteed, lvReq, modifier, key);
}
public Veneration(String name, int CPCost, boolean guaranteed, int lvReq, int key) {
super(name, CPCost, guaranteed, lvReq, key);
}
@Override

@ -6,8 +6,12 @@ import sig.Skill;
public class WasteNot extends Skill {
public WasteNot(String name, int CPCost, boolean guaranteed, int lvReq) {
super(name, CPCost, guaranteed, lvReq);
public WasteNot(String name, int CPCost, boolean guaranteed, int lvReq, int modifier, int key) {
super(name, CPCost, guaranteed, lvReq, modifier, key);
}
public WasteNot(String name, int CPCost, boolean guaranteed, int lvReq, int key) {
super(name, CPCost, guaranteed, lvReq, key);
}
@Override

@ -5,8 +5,12 @@ import sig.Craft;
import sig.Skill;
public class WasteNotII extends Skill {
public WasteNotII(String name, int CPCost, boolean guaranteed, int lvReq) {
super(name, CPCost, guaranteed, lvReq);
public WasteNotII(String name, int CPCost, boolean guaranteed, int lvReq, int modifier, int key) {
super(name, CPCost, guaranteed, lvReq, modifier, key);
}
public WasteNotII(String name, int CPCost, boolean guaranteed, int lvReq, int key) {
super(name, CPCost, guaranteed, lvReq, key);
}
@Override

Loading…
Cancel
Save