From 70c1354a4a96698758a88c032866288f79de6f5a Mon Sep 17 00:00:00 2001 From: Benjamin Culkin Date: Sat, 24 Aug 2024 08:16:37 -0400 Subject: Initial commit --- .../java/jp/plusplus/fbs/spirit/SkillManager.java | 208 +++++++++++++++++++++ 1 file changed, 208 insertions(+) create mode 100644 src/main/java/jp/plusplus/fbs/spirit/SkillManager.java (limited to 'src/main/java/jp/plusplus/fbs/spirit/SkillManager.java') diff --git a/src/main/java/jp/plusplus/fbs/spirit/SkillManager.java b/src/main/java/jp/plusplus/fbs/spirit/SkillManager.java new file mode 100644 index 0000000..1f499d5 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/spirit/SkillManager.java @@ -0,0 +1,208 @@ +package jp.plusplus.fbs.spirit; + +import net.minecraft.util.StatCollector; + +import java.util.ArrayList; + +/** + * Created by plusplus_F on 2015/11/02. + * 精霊武器のスキルを管理するクラス + */ +public class SkillManager { + private static SkillManager instance=new SkillManager(); + + private int uId=0; + private ArrayList skills=new ArrayList(); + private ArrayList skillEntries=new ArrayList(); + + private SkillManager(){} + + public static void register(){ + //congenital + registerSkill("fbs.precocious", 1); + registerSkill("fbs.lateBloomer", 1); + + //demerit + registerSkill("fbs.blood", 1); + registerSkill("fbs.end", 1); + registerSkill("fbs.insanity", 1); + + //passive + registerSkill("fbs.soulBind", 1); + registerSkill("fbs.contract", 1); + registerSkill("fbs.knowledge", 1); + + //battle + registerSkill("fbs.fire", 5); + registerSkill("fbs.vampire", 5); + registerSkill("fbs.poison", 5); + registerSkill("fbs.sonic", 5); + registerSkill("fbs.knockback", 5); + registerSkill("fbs.infinity", 1); + registerSkill("fbs.critical", 5); + registerSkill("fbs.hero", 5); + registerSkill("fbs.lucky", 5); + registerSkill("fbs.headhunt", 5); + registerSkill("fbs.smite", 3); + registerSkill("fbs.arthropods", 3); + + //harvest + + //------------------------------------------------------------------------------------------------- + + addSkillEntry(new SkillEntry(getSkill("fbs.soulBind"), new int[]{10})); + addSkillEntry(new SkillEntry(getSkill("fbs.contract"), new int[]{15})); + addSkillEntry(new SkillEntry(getSkill("fbs.knowledge"), new int[]{8})); + + addSkillEntry(new SkillEntry(getSkill("fbs.fire"), new int[]{5,8,11,14,17})); + addSkillEntry(new SkillEntry(getSkill("fbs.blood"), new int[]{10,14,18,22,26})); + addSkillEntry(new SkillEntry(getSkill("fbs.poison"), new int[]{5,8,11,14,17})); + addSkillEntry(new SkillEntry(getSkill("fbs.sonic"), new int[]{10,14,18,22,26})); + addSkillEntry(new SkillEntry(getSkill("fbs.knockback"), new int[]{5,8,11,14,17})); + addSkillEntry(new SkillEntry(getSkill("fbs.infinity"), new int[]{35})); + addSkillEntry(new SkillEntry(getSkill("fbs.critical"), new int[]{5,8,11,14,17})); + addSkillEntry(new SkillEntry(getSkill("fbs.hero"), new int[]{10,14,18,22,26})); + addSkillEntry(new SkillEntry(getSkill("fbs.lucky"), new int[]{10,14,18,22,26})); + addSkillEntry(new SkillEntry(getSkill("fbs.headhunt"), new int[]{20,25,30,35,40})); + addSkillEntry(new SkillEntry(getSkill("fbs.smite"), new int[]{3,6,9,12,15})); + addSkillEntry(new SkillEntry(getSkill("fbs.arthropods"), new int[]{3,6,9,12,15})); + } + + /** + * 精霊武器のスキルのデータを登録する。 + * @param name スキル名 + * @param max 最大レベル + * @return + */ + public static int registerSkill(String name, int max){ + instance.skills.add(new Skill(++instance.uId, name, max)); + return instance.uId; + } + + /** + * IDからスキルのデータを取得する + * @param id + * @return + */ + public static Skill getSkill(int id){ + if(id<=0 || id>instance.skills.size()) return null; + return instance.skills.get(id-1); + } + public static Skill getSkill(String name){ + for(Skill s : instance.skills){ + if(s.getName().equals(name)) return s; + } + return null; + } + + public static void addSkillEntry(SkillEntry se){ + instance.skillEntries.add(se); + } + + public static ArrayList getSkillEntiries(){ + return instance.skillEntries; + } + + /** + * スキルのデータのクラス + */ + public static class Skill{ + private int id; + private String name; + private int lvMax; + + public Skill(int id, String name, int max){ + this.id=id; + this.name=name; + lvMax=max; + } + + + + public String getLocalizedName(){ + return StatCollector.translateToLocal("spirit.skill."+name); + } + + public int getId() { + return id; + } + + public int getLvMax() { + return lvMax; + } + + public String getName(){ + return name; + } + } + + public static class SkillEntry{ + private Skill skill; + private int[] minLv; + private SkillData[] parents; + + public SkillEntry(Skill skill, int[] minLv){ + this(skill, minLv, new SkillData[0]); + } + public SkillEntry(Skill skill, int[] minLv, SkillData[] parents){ + this.skill=skill; + this.minLv=minLv; + this.parents=parents; + } + + public boolean canLearn(SpiritStatus status){ + //精霊レベル + int nowLv=status.getSkillLevel(skill.getId())+1; + if(nowLv>=skill.getLvMax()) return false; + if(status.getLv()0){ + for(int i=0;i