diff --git a/PalEdit.py b/PalEdit.py index 4d9ce99..b7ae0ed 100644 --- a/PalEdit.py +++ b/PalEdit.py @@ -6,11 +6,11 @@ import pyperclip import SaveConverter -from lib.gvas import GvasFile -from lib.archive import FArchiveReader, FArchiveWriter, UUID -from lib.json_tools import CustomEncoder -from lib.palsav import compress_gvas_to_sav, decompress_sav_to_gvas -from lib.paltypes import PALWORLD_CUSTOM_PROPERTIES, PALWORLD_TYPE_HINTS +from palworld_save_tools.gvas import GvasFile +from palworld_save_tools.archive import FArchiveReader, FArchiveWriter, UUID +from palworld_save_tools.json_tools import CustomEncoder +from palworld_save_tools.palsav import compress_gvas_to_sav, decompress_sav_to_gvas +from palworld_save_tools.paltypes import PALWORLD_CUSTOM_PROPERTIES, PALWORLD_TYPE_HINTS import tkinter as tk import copy @@ -20,7 +20,7 @@ from tkinter import ttk from tkinter.filedialog import askopenfilename, asksaveasfilename from tkinter import messagebox -from PIL import ImageTk, Image + class UUIDEncoder(json.JSONEncoder): def default(self, obj): @@ -29,7 +29,97 @@ def default(self, obj): return str(obj) return json.JSONEncoder.default(self, obj) + +def skip_decode( + reader: FArchiveReader, type_name: str, size: int, path: str +): + if type_name == "ArrayProperty": + array_type = reader.fstring() + value = { + "skip_type": type_name, + "array_type": array_type, + "id": reader.optional_guid(), + "value": reader.read(size) + } + elif type_name == "MapProperty": + key_type = reader.fstring() + value_type = reader.fstring() + _id = reader.optional_guid() + value = { + "skip_type": type_name, + "key_type": key_type, + "value_type": value_type, + "id": _id, + "value": reader.read(size), + } + elif type_name == "StructProperty": + value = { + "skip_type": type_name, + "struct_type": reader.fstring(), + "struct_id": reader.guid(), + "id": reader.optional_guid(), + "value": reader.read(size), + } + else: + raise Exception( + f"Expected ArrayProperty or MapProperty or StructProperty, got {type_name} in {path}" + ) + return value + + +def skip_encode( + writer: FArchiveWriter, property_type: str, properties: dict +) -> int: + if "skip_type" not in properties: + if properties['custom_type'] in PALWORLD_CUSTOM_PROPERTIES is not None: + # print("process parent encoder -> ", properties['custom_type']) + return PALWORLD_CUSTOM_PROPERTIES[properties["custom_type"]][1]( + writer, property_type, properties + ) + else: + # Never be run to here + return writer.property_inner(writer, property_type, properties) + if property_type == "ArrayProperty": + del properties["custom_type"] + del properties["skip_type"] + writer.fstring(properties["array_type"]) + writer.optional_guid(properties.get("id", None)) + writer.write(properties["value"]) + return len(properties["value"]) + elif property_type == "MapProperty": + del properties["custom_type"] + del properties["skip_type"] + writer.fstring(properties["key_type"]) + writer.fstring(properties["value_type"]) + writer.optional_guid(properties.get("id", None)) + writer.write(properties["value"]) + return len(properties["value"]) + elif property_type == "StructProperty": + del properties["custom_type"] + del properties["skip_type"] + writer.fstring(properties["struct_type"]) + writer.guid(properties["struct_id"]) + writer.optional_guid(properties.get("id", None)) + writer.write(properties["value"]) + return len(properties["value"]) + else: + raise Exception( + f"Expected ArrayProperty or MapProperty or StructProperty, got {property_type}" + ) + + +PALEDIT_PALWORLD_CUSTOM_PROPERTIES = copy.deepcopy(PALWORLD_CUSTOM_PROPERTIES) +PALEDIT_PALWORLD_CUSTOM_PROPERTIES[".worldSaveData.MapObjectSaveData"] = (skip_decode, skip_encode) +PALEDIT_PALWORLD_CUSTOM_PROPERTIES[".worldSaveData.FoliageGridSaveDataMap"] = (skip_decode, skip_encode) +PALEDIT_PALWORLD_CUSTOM_PROPERTIES[".worldSaveData.MapObjectSpawnerInStageSaveData"] = (skip_decode, skip_encode) +PALEDIT_PALWORLD_CUSTOM_PROPERTIES[".worldSaveData.DynamicItemSaveData"] = (skip_decode, skip_encode) +PALEDIT_PALWORLD_CUSTOM_PROPERTIES[".worldSaveData.CharacterContainerSaveData"] = (skip_decode, skip_encode) +PALEDIT_PALWORLD_CUSTOM_PROPERTIES[".worldSaveData.ItemContainerSaveData"] = (skip_decode, skip_encode) +PALEDIT_PALWORLD_CUSTOM_PROPERTIES[".worldSaveData.GroupSaveDataMap"] = (skip_decode, skip_encode) + import traceback + + class PalEditConfig: version = "0.6.3" ftsize = 18 @@ -38,6 +128,7 @@ class PalEditConfig: okayskill = "#DFE8E7" goodskill = "#FEDE00" + class PalEdit(): ranks = (0, 1, 2, 3, 4) @@ -47,9 +138,9 @@ def load_i18n(self, lang=""): path = f"{module_dir}/resources/data/ui_{lang}.json" with open(path, "r", encoding="utf-8") as f: keys = json.load(f) - for i18n_k in keys: # For multi lang didn't translate with original one + for i18n_k in keys: # For multi lang didn't translate with original one self.i18n[i18n_k] = keys[i18n_k] - + for item in self.i18n_el: if item in self.i18n: try: @@ -77,26 +168,7 @@ def load_i18n(self, lang=""): self.attackops.sort() self.attackops.insert(0, "None") - op = [PalInfo.PalPassives[e] for e in PalInfo.PalPassives] - op.pop(0) - op.pop(0) - op.sort() - op.insert(0, "None") - - def atk_upd(menu, atk_id, idx, n): - menu['menu'].entryconfigure(idx, label=n, command=tk._setit(self.attacks_name[atk_id], n, - lambda evt: self.changeattack(atk_id))) - - for atk_id, menu in enumerate(self.attackdrops): - for idx, n in enumerate(self.attackops): - atk_upd(menu, atk_id, idx, n) - - def skill_upd(menu, skid, idx, n): - menu['menu'].entryconfigure(idx, label=n, command=tk._setit(self.skills_name[skid], n, lambda evt:self.changeskill(skid))) - - for skid, menu in enumerate(self.skilldrops): - for idx, n in enumerate(op): - skill_upd(menu, skid, idx, n) + self.updateSkillMenu() self.updateAttackName() self.updateSkillsName() @@ -104,14 +176,51 @@ def skill_upd(menu, skid, idx, n): species.sort() try: for idx, n in enumerate(species): - self.palname['menu'].entryconfigure(idx, label=n, command=tk._setit(self.speciesvar_name, n, self.changespeciestype)) + self.palname['menu'].entryconfigure(idx, label=n, + command=tk._setit(self.speciesvar_name, n, self.changespeciestype)) if self.speciesvar.get() in PalInfo.PalSpecies: self.speciesvar_name.set(PalInfo.PalSpecies[self.speciesvar.get()].GetName()) else: self.speciesvar_name.set(self.speciesvar.get()) except AttributeError as e: pass - + + def updateSkillMenu(self): + if not self.isPalSelected(): + return + + i = int(self.listdisplay.curselection()[0]) + pal = self.palbox[self.players[self.current.get()]][i] + + available_ops = pal.GetAvailableSkills() + available_ops.sort() + available_ops.insert(0, "None") + + def atk_upd(menu, atk_id, label, codename): + menu['menu'].add_command(label=label, command=tk._setit(self.attacks[atk_id], codename, + lambda evt: self.changeattack(atk_id))) + + for atk_id, menu in enumerate(self.attackdrops): + while menu['menu'].index("end") is not None: + menu['menu'].delete(0) + for idx, codename in enumerate(available_ops): + atk_upd(menu, atk_id, PalAttacks[codename], codename) + + op = [PalInfo.PalPassives[e] for e in PalInfo.PalPassives] + op.pop(0) + op.pop(0) + op.sort() + op.insert(0, "None") + + def skill_upd(menu, skid, idx, n): + menu['menu'].entryconfigure(idx, label=n, command=tk._setit(self.skills_name[skid], n, + lambda evt: self.changeskill(skid))) + + for skid, menu in enumerate(self.skilldrops): + for idx, n in enumerate(op): + skill_upd(menu, skid, idx, n) + + @staticmethod def hex_to_rgb(value): value = value.lstrip('#') @@ -175,8 +284,8 @@ def getSelectedPalData(self): return i = int(self.listdisplay.curselection()[0]) pal = self.palbox[self.players[self.current.get()]][i] - # print(f"Get Data: {pal.GetNickname()}") - # print(f"{pal._obj}") + # print(f"Get Data: {pal.GetNickname()}") + # print(f"{pal._obj}") pyperclip.copy(f"{pal._obj}") webbrowser.open('https://jsonformatter.curiousconcept.com/#') @@ -206,7 +315,7 @@ def setAttackCols(self): basecol = PalInfo.PalElements[PalInfo.AttackTypes[v]] halfcol = PalEdit.mean_color(basecol, "ffffff") self.attackdrops[i].config(highlightbackground=basecol, bg=halfcol, activebackground=halfcol) - + def updateAttackName(self): for idx, n in enumerate(self.attacks): self.attacks_name[idx].set(PalInfo.PalAttacks[n.get()]) @@ -221,7 +330,7 @@ def setpreset(self, preset): for v in range(0, 4): t = self.skills_name[v].trace_add("write", lambda *args, num=v: self.changeskill(num)) tid.append(t) - + match preset: case "base": self.skills_name[0].set(PalInfo.PalPassives["CraftSpeed_up2"]) @@ -350,15 +459,15 @@ def changeattack(self, num): i = int(self.listdisplay.curselection()[0]) pal = self.palbox[self.players[self.current.get()]][i] - index = list(PalInfo.PalAttacks.values()).index(self.attacks_name[num].get()) - self.attacks[num].set(list(PalInfo.PalAttacks.keys())[index]) + # index = list(PalInfo.PalAttacks.values()).index(self.attacks_name[num].get()) + # self.attacks[num].set(list(PalInfo.PalAttacks.keys())[index]) if not self.attacks[num].get() in ["Unknown", "UNKNOWN"]: if self.attacks[num].get() in ["None", "NONE"]: pal.RemoveAttack(num) elif not self.attacks[num].get() in pal._equipMoves: pal.SetAttackSkill(num, self.attacks[num].get()) - - self.updateAttackName() + + self.updateAttacks() self.refresh(i) def onselect(self, evt): @@ -367,7 +476,7 @@ def onselect(self, evt): if not self.isPalSelected(): self.portrait.config(image=self.purplepanda) return - + self.updatestats() index = int(w.curselection()[0]) @@ -408,6 +517,7 @@ def onselect(self, evt): self.luckyvar.set(pal.isLucky) self.alphavar.set(pal.isBoss) + self.updateSkillMenu() self.updateAttacks() # rank @@ -416,7 +526,7 @@ def onselect(self, evt): s = pal.GetSkills()[:] while len(s) < 4: s.append("NONE") - + for i in range(0, 4): if not s[i] in [p for p in PalInfo.PalPassives]: self.skills[i].set("Unknown") @@ -428,7 +538,6 @@ def onselect(self, evt): self.setskillcolours() self.is_onselect = False - def changetext(self, num): if num == -1: self.skilllabel.config(text=self.i18n['msg_skill']) @@ -463,7 +572,7 @@ def loadfile(self): data = f.read() raw_gvas, _ = decompress_sav_to_gvas(data) self.skilllabel.config(text=self.i18n['msg_loading']) - gvas_file = GvasFile.read(raw_gvas, PALWORLD_TYPE_HINTS, PALWORLD_CUSTOM_PROPERTIES) + gvas_file = GvasFile.read(raw_gvas, PALWORLD_TYPE_HINTS, PALEDIT_PALWORLD_CUSTOM_PROPERTIES) self.loaddata(gvas_file) # self.doconvertjson(file, (not self.debug)) else: @@ -473,7 +582,7 @@ def load(self, file): self.current.set("") self.palbox = {} self.players = {} - + f = open(file, "r", encoding="utf8") data = json.loads(f.read()) f.close() @@ -486,9 +595,9 @@ def load(self, file): # f = open("current.pson", "w", encoding="utf8") # json.dump(paldata, f, indent=4) # f.close() - + messagebox.showinfo("Done", self.i18n['msg_done']) - + def loaddata(self, data): print(type(data)) self.data = data @@ -500,7 +609,7 @@ def loaddata(self, data): paldata = self.data['properties']['worldSaveData']['value']['CharacterSaveParameterMap']['value'] self.palguidmanager = PalGuid(self.data) self.loadpal(paldata) - + def loadpal(self, paldata): self.palbox = {} self.players = {} @@ -536,8 +645,9 @@ def loadpal(self, paldata): # self.players[pl] = plguid else: self.unknown.append(i) - print(f"Error occured: {str(e)}") + print(f"Error occured on {i['key']['InstanceId']['value']}: {e.__class__.__name__}: {str(e)}") traceback.print_exception(e) + print() # print(f"Debug: Data {i}") self.current.set(next(iter(self.players))) @@ -572,7 +682,7 @@ def loadpal(self, paldata): nullmoves.sort() for i in nullmoves: print(f"{i} was not found in Attack Database") - + self.refresh() self.changetext(-1) @@ -587,7 +697,7 @@ def jump(self): def updateDisplay(self): self.listdisplay.delete(0, tk.constants.END) self.palbox[self.players[self.current.get()]].sort(key=lambda e: e.GetName()) - + for p in self.palbox[self.players[self.current.get()]]: self.listdisplay.insert(tk.constants.END, p.GetFullName()) @@ -595,7 +705,7 @@ def updateDisplay(self): self.listdisplay.itemconfig(tk.constants.END, {'fg': 'red'}) elif p.isLucky: self.listdisplay.itemconfig(tk.constants.END, {'fg': 'blue'}) - + self.refresh() def savefile(self): @@ -610,7 +720,7 @@ def savefile(self): print(file, self.filename) if file: print(f"Opening file {file}") - + if 'gvas_file' in self.data: gvas_file = self.data['gvas_file'] if ( @@ -621,7 +731,7 @@ def savefile(self): else: save_type = 0x31 sav_file = compress_gvas_to_sav( - gvas_file.write(PALWORLD_CUSTOM_PROPERTIES), save_type + gvas_file.write(PALEDIT_PALWORLD_CUSTOM_PROPERTIES), save_type ) self.skilllabel.config(text=self.i18n['msg_writing']) with open(file, "wb") as f: @@ -683,7 +793,7 @@ def OLD_handleMaxHealthUpdates(self, pal: PalEntity, changes: dict): retval = pal.UpdateMaxHP(changes) if retval is not None: answer = messagebox.askquestion( - title="Choose HP Scaling", + title="Choose HP Scaling", message=""" Note: - It is rare but some bosses may have different scaling data that I haven't yet added to PalEdit. @@ -700,17 +810,16 @@ def OLD_handleMaxHealthUpdates(self, pal: PalEntity, changes: dict): """ % (retval[0], retval[1], pal.GetName(), retval[1])) pal.UpdateMaxHP(changes, hp_scaling=retval[1] if answer == 'yes' else retval[0]) - def updatestats(self): if not self.isPalSelected(): return - + if self.editindex < 0: return pal = self.palbox[self.players[self.current.get()]][self.editindex] l = pal.GetLevel() - + if self.phpvar.dirty: self.phpvar.dirty = False h = self.phpvar.get() @@ -746,7 +855,6 @@ def updatestats(self): print(f"{pal.GetFullName()}: WorkSpeed {pal.GetWorkSpeed()} -> {w}") pal.SetWorkSpeed(w) - def takelevel(self): if not self.isPalSelected(): return @@ -855,16 +963,16 @@ def spawnpal(self): self.palguidmanager.SetContainerSave(slotguid, i, newguid) self.data['properties']['worldSaveData']['value']['CharacterSaveParameterMap']['value'].append(pal._data) print(f"Add Pal at slot {i} : {slotguid}") - self.loaddata(self.data)#['properties']['worldSaveData']['value']['CharacterSaveParameterMap']['value']) + self.loaddata(self.data) # ['properties']['worldSaveData']['value']['CharacterSaveParameterMap']['value']) def dumppals(self): if not self.isPalSelected(): return i = int(self.listdisplay.curselection()[0]) pal = self.palbox[self.players[self.current.get()]][i] - + pals = {} - pals['Pals'] = [pal._data] #[pal._data for pal in self.palbox[self.players[self.current.get()]]] + pals['Pals'] = [pal._data] # [pal._data for pal in self.palbox[self.players[self.current.get()]]] file = asksaveasfilename(filetypes=[("json files", "*.json")], defaultextension=".json") if file: with open(file, "wb") as f: @@ -944,7 +1052,7 @@ def createWindow(self): root = tk.Tk() root.title(f"PalEdit v{PalEditConfig.version}") return root - + def add_lang_menu(self, langmenu, languages, lang): langmenu.add_command(label=languages[lang], command=lambda: self.load_i18n(lang)) @@ -952,7 +1060,7 @@ def build_menu(self): self.menu = tk.Menu(self.gui) tools = self.menu self.gui.config(menu=tools) - + global filemenu filemenu = tk.Menu(tools, tearoff=0) filemenu.add_command(label=self.i18n['menu_load_save'], command=self.loadfile) @@ -975,7 +1083,7 @@ def build_menu(self): self.add_lang_menu(langmenu, languages, lang) tools.add_cascade(label="Language", menu=langmenu, underline=0) - + # convmenu = Menu(tools, tearoff=0) # convmenu.add_command(label="Convert Save to Json", command=converttojson) # convmenu.add_command(label="Convert Json to Save", command=converttosave) @@ -985,7 +1093,7 @@ def build_menu(self): def updateSkillsName(self): for idx, n in enumerate(self.skills): self.skills_name[idx].set(PalInfo.PalPassives[n.get()]) - + def __init__(self): global EmptyObjectHandler, PalInfo import EmptyObjectHandler @@ -1005,7 +1113,6 @@ def __init__(self): self.palguidmanager: PalGuid = None self.is_onselect = False - self.attacks = [] self.attacks_name = [] self.attackops = [] @@ -1013,17 +1120,17 @@ def __init__(self): self.skilldrops = [] self.skills = [] self.skills_name = [] + + self.current = tk.StringVar() + self.current.set("") + self.load_i18n() - - self.purplepanda = ImageTk.PhotoImage( - Image.open(f'{module_dir}/resources/MossandaIcon.png').resize((240, 240))) + + self.purplepanda = tk.PhotoImage(master=self.gui, file=f'{module_dir}/resources/MossandaIcon.png') self.gui.iconphoto(True, self.purplepanda) root = self.gui - self.current = tk.StringVar() - self.current.set("") - scrollview = tk.Frame(root) scrollview.pack(side=tk.constants.LEFT, fill=tk.constants.Y) @@ -1098,15 +1205,18 @@ def __init__(self): statlbls = tk.Frame(stats, width=6, bg="darkgrey") statlbls.pack(side=tk.constants.LEFT, expand=True, fill=tk.constants.X) - hthstatlbl = tk.Label(statlbls, bg="darkgrey", text=self.i18n['health_lbl'], font=(PalEditConfig.font, PalEditConfig.ftsize), + hthstatlbl = tk.Label(statlbls, bg="darkgrey", text=self.i18n['health_lbl'], + font=(PalEditConfig.font, PalEditConfig.ftsize), justify="center") self.i18n_el['health_lbl'] = hthstatlbl hthstatlbl.pack() - atkstatlbl = tk.Label(statlbls, bg="darkgrey", text=self.i18n['attack_lbl'], font=(PalEditConfig.font, PalEditConfig.ftsize), + atkstatlbl = tk.Label(statlbls, bg="darkgrey", text=self.i18n['attack_lbl'], + font=(PalEditConfig.font, PalEditConfig.ftsize), justify="center") self.i18n_el['attack_lbl'] = atkstatlbl atkstatlbl.pack() - defstatlbl = tk.Label(statlbls, bg="darkgrey", text=self.i18n['defence_lbl'], font=(PalEditConfig.font, PalEditConfig.ftsize), + defstatlbl = tk.Label(statlbls, bg="darkgrey", text=self.i18n['defence_lbl'], + font=(PalEditConfig.font, PalEditConfig.ftsize), justify="center") self.i18n_el['defence_lbl'] = atkstatlbl defstatlbl.pack() @@ -1145,7 +1255,8 @@ def __init__(self): typeframe = tk.Frame(resourceview) typeframe.pack(expand=True, fill=tk.constants.X) - self.ptype = tk.Label(typeframe, text=self.i18n['electric_lbl'], font=(PalEditConfig.font, PalEditConfig.ftsize), + self.ptype = tk.Label(typeframe, text=self.i18n['electric_lbl'], + font=(PalEditConfig.font, PalEditConfig.ftsize), bg=PalInfo.PalElements["Electric"], width=6) self.i18n_el['electric_lbl'] = self.ptype self.ptype.pack(side=tk.constants.LEFT, expand=True, fill=tk.constants.X) @@ -1158,11 +1269,13 @@ def __init__(self): formframe.pack(expand=True, fill=tk.constants.X) self.luckyvar = tk.IntVar() self.alphavar = tk.IntVar() - luckybox = tk.Checkbutton(formframe, text=self.i18n['lucky_lbl'], variable=self.luckyvar, onvalue='1', offvalue='0', + luckybox = tk.Checkbutton(formframe, text=self.i18n['lucky_lbl'], variable=self.luckyvar, onvalue='1', + offvalue='0', command=self.togglelucky) self.i18n_el['lucky_lbl'] = luckybox luckybox.pack(side=tk.constants.LEFT, expand=True) - alphabox = tk.Checkbutton(formframe, text=self.i18n['alpha_lbl'], variable=self.alphavar, onvalue='1', offvalue='0', + alphabox = tk.Checkbutton(formframe, text=self.i18n['alpha_lbl'], variable=self.alphavar, onvalue='1', + offvalue='0', command=self.togglealpha) self.i18n_el['alpha_lbl'] = alphabox alphabox.pack(side=tk.constants.RIGHT, expand=True) @@ -1199,14 +1312,17 @@ def __init__(self): labelview = tk.Frame(deckview, bg="lightgrey", pady=0, padx=16) labelview.pack(side=tk.constants.LEFT, expand=True, fill=tk.constants.BOTH) - name = tk.Label(labelview, text=self.i18n['name_prop'], font=(PalEditConfig.font, PalEditConfig.ftsize), bg="lightgrey") + name = tk.Label(labelview, text=self.i18n['name_prop'], font=(PalEditConfig.font, PalEditConfig.ftsize), + bg="lightgrey") name.pack(expand=True, fill=tk.constants.X) self.i18n_el['name_prop'] = name - gender = tk.Label(labelview, text=self.i18n['gender_prop'], font=(PalEditConfig.font, PalEditConfig.ftsize), bg="lightgrey", + gender = tk.Label(labelview, text=self.i18n['gender_prop'], font=(PalEditConfig.font, PalEditConfig.ftsize), + bg="lightgrey", width=6, pady=6) self.i18n_el['gender_prop'] = gender gender.pack(expand=True, fill=tk.constants.X) - attack = tk.Label(labelview, text=self.i18n['attack_prop'], font=(PalEditConfig.font, PalEditConfig.ftsize), bg="lightgrey", + attack = tk.Label(labelview, text=self.i18n['attack_prop'], font=(PalEditConfig.font, PalEditConfig.ftsize), + bg="lightgrey", width=8) self.i18n_el['attack_prop'] = attack attack.pack(expand=True, fill=tk.constants.X) @@ -1214,15 +1330,18 @@ def __init__(self): bg="lightgrey", width=8) self.i18n_el['defence_prop'] = defence defence.pack(expand=True, fill=tk.constants.X) - workspeed = tk.Label(labelview, text=self.i18n['workspeed_prop'], font=(PalEditConfig.font, PalEditConfig.ftsize), + workspeed = tk.Label(labelview, text=self.i18n['workspeed_prop'], + font=(PalEditConfig.font, PalEditConfig.ftsize), bg="lightgrey", width=12) self.i18n_el['workspeed_prop'] = workspeed workspeed.pack(expand=True, fill=tk.constants.X) - hp = tk.Label(labelview, text=self.i18n['hp_prop'], font=(PalEditConfig.font, PalEditConfig.ftsize), bg="lightgrey", + hp = tk.Label(labelview, text=self.i18n['hp_prop'], font=(PalEditConfig.font, PalEditConfig.ftsize), + bg="lightgrey", width=10) self.i18n_el['hp_prop'] = hp hp.pack(expand=True, fill=tk.constants.X) - rankspeed = tk.Label(labelview, text=self.i18n['rank_prop'], font=(PalEditConfig.font, PalEditConfig.ftsize), bg="lightgrey") + rankspeed = tk.Label(labelview, text=self.i18n['rank_prop'], font=(PalEditConfig.font, PalEditConfig.ftsize), + bg="lightgrey") self.i18n_el['rank_prop'] = rankspeed rankspeed.pack(expand=True, fill=tk.constants.X) @@ -1236,7 +1355,7 @@ def __init__(self): self.speciesvar_name.set("PalEdit") self.palname = tk.OptionMenu(editview, self.speciesvar_name, *species, command=self.changespeciestype) self.palname.config(font=(PalEditConfig.font, PalEditConfig.ftsize), padx=0, pady=0, borderwidth=1, width=5, - direction='right') + direction='right') self.palname.pack(expand=True, fill=tk.constants.X) genderframe = tk.Frame(editview, pady=0) @@ -1258,7 +1377,7 @@ def validate_and_mark_dirty(var, entry: tk.Entry): except TclError as e: var.dirty = False return - + clamp(var) var.dirty = True @@ -1287,7 +1406,6 @@ def try_update(var, event=None): return self.updatestats() - valreg = root.register(ivvalidate) attackframe = tk.Frame(editview, width=6) @@ -1296,26 +1414,27 @@ def try_update(var, event=None): self.meleevar = tk.IntVar() self.meleevar.dirty = False self.meleevar.set(100) -## meleeicon = tk.Label(attackframe, text="⚔", font=(PalEditConfig.font, PalEditConfig.ftsize)) -## meleeicon.pack(side=tk.constants.LEFT) -## palmelee = tk.Entry(attackframe, textvariable=self.meleevar, font=(PalEditConfig.font, PalEditConfig.ftsize), width=6) -## palmelee.config(justify="center", validate="all", validatecommand=(valreg, '%P'), state="disabled") -## palmelee.bind("", lambda event, var=self.meleevar: try_update(var)) -## palmelee.pack(side=tk.constants.LEFT) -## self.meleevar.trace_add("write", lambda name, index, mode, sv=self.meleevar, entry=palmelee: validate_and_mark_dirty(sv, entry)) - + ## meleeicon = tk.Label(attackframe, text="⚔", font=(PalEditConfig.font, PalEditConfig.ftsize)) + ## meleeicon.pack(side=tk.constants.LEFT) + ## palmelee = tk.Entry(attackframe, textvariable=self.meleevar, font=(PalEditConfig.font, PalEditConfig.ftsize), width=6) + ## palmelee.config(justify="center", validate="all", validatecommand=(valreg, '%P'), state="disabled") + ## palmelee.bind("", lambda event, var=self.meleevar: try_update(var)) + ## palmelee.pack(side=tk.constants.LEFT) + ## self.meleevar.trace_add("write", lambda name, index, mode, sv=self.meleevar, entry=palmelee: validate_and_mark_dirty(sv, entry)) self.shotvar = tk.IntVar() self.shotvar.dirty = False self.shotvar.set(100) - #shoticon = tk.Label(attackframe, text="🏹", font=(PalEditConfig.font, PalEditConfig.ftsize)) - #shoticon.pack(side=tk.constants.RIGHT) - palshot = tk.Entry(attackframe, textvariable=self.shotvar, font=(PalEditConfig.font, PalEditConfig.ftsize), width=6) + # shoticon = tk.Label(attackframe, text="🏹", font=(PalEditConfig.font, PalEditConfig.ftsize)) + # shoticon.pack(side=tk.constants.RIGHT) + palshot = tk.Entry(attackframe, textvariable=self.shotvar, font=(PalEditConfig.font, PalEditConfig.ftsize), + width=6) palshot.config(justify="center", validate="all", validatecommand=(valreg, '%P')) palshot.bind("", lambda event, var=self.shotvar: try_update(var)) - palshot.pack(fill=X)#side=tk.constants.RIGHT) - self.shotvar.trace_add("write", lambda name, index, mode, sv=self.shotvar, entry=palshot: validate_and_mark_dirty(sv, entry)) - + palshot.pack(fill=X) # side=tk.constants.RIGHT) + self.shotvar.trace_add("write", + lambda name, index, mode, sv=self.shotvar, entry=palshot: validate_and_mark_dirty(sv, + entry)) self.defvar = tk.IntVar() self.defvar.dirty = False @@ -1324,8 +1443,9 @@ def try_update(var, event=None): paldef.config(justify="center", validate="all", validatecommand=(valreg, '%P')) paldef.bind("", lambda event, var=self.defvar: try_update(var)) paldef.pack(expand=True, fill=tk.constants.X) - self.defvar.trace_add("write", lambda name, index, mode, sv=self.defvar, entry=paldef: validate_and_mark_dirty(sv, entry)) - + self.defvar.trace_add("write", + lambda name, index, mode, sv=self.defvar, entry=paldef: validate_and_mark_dirty(sv, + entry)) self.wspvar = tk.IntVar() self.wspvar.dirty = False @@ -1334,8 +1454,9 @@ def try_update(var, event=None): palwsp.config(justify="center", validate="all", validatecommand=(valreg, '%P')) palwsp.bind("", lambda event, var=self.wspvar: try_update(var)) palwsp.pack(expand=True, fill=tk.constants.X) - self.wspvar.trace_add("write", lambda name, index, mode, sv=self.wspvar, entry=palwsp: validate_and_mark_dirty(sv, entry)) - + self.wspvar.trace_add("write", + lambda name, index, mode, sv=self.wspvar, entry=palwsp: validate_and_mark_dirty(sv, + entry)) def talent_hp_changed(*args): if not self.isPalSelected(): @@ -1353,8 +1474,9 @@ def talent_hp_changed(*args): palhps.config(justify="center", validate="all", validatecommand=(valreg, '%P')) palhps.bind("", lambda event, var=self.phpvar: try_update(var)) palhps.pack(expand=True, fill=tk.constants.X) - self.phpvar.trace_add("write", lambda name, index, mode, sv=self.phpvar, entry=palhps: validate_and_mark_dirty(sv, entry)) - + self.phpvar.trace_add("write", + lambda name, index, mode, sv=self.phpvar, entry=palhps: validate_and_mark_dirty(sv, + entry)) """ talent_hp_var = IntVar(value=50) @@ -1457,7 +1579,8 @@ def talent_hp_changed(*args): width=9) preset_title1.pack(side=tk.constants.LEFT, fill=tk.constants.X) self.i18n_el['preset_title1'] = preset_title1 - preset_button = tk.Button(framePresetsButtons1, text=self.i18n['preset_base'], command=lambda: self.setpreset("base")) + preset_button = tk.Button(framePresetsButtons1, text=self.i18n['preset_base'], + command=lambda: self.setpreset("base")) self.i18n_el['preset_base'] = preset_button preset_button.config(font=(PalEditConfig.font, 12)) preset_button.pack(side=tk.constants.LEFT, expand=True, fill=tk.constants.BOTH) @@ -1466,11 +1589,13 @@ def talent_hp_changed(*args): self.i18n_el['preset_speed_worker'] = preset_button preset_button.config(font=(PalEditConfig.font, 12)) preset_button.pack(side=tk.constants.LEFT, expand=True, fill=tk.constants.BOTH) - preset_button = tk.Button(framePresetsButtons1, text=self.i18n['preset_speed_runner'], command=lambda: self.setpreset("movement")) + preset_button = tk.Button(framePresetsButtons1, text=self.i18n['preset_speed_runner'], + command=lambda: self.setpreset("movement")) self.i18n_el['preset_speed_runner'] = preset_button preset_button.config(font=(PalEditConfig.font, 12)) preset_button.pack(side=tk.constants.LEFT, expand=True, fill=tk.constants.BOTH) - preset_button = tk.Button(framePresetsButtons1, text=self.i18n['preset_tank'], command=lambda: self.setpreset("tank")) + preset_button = tk.Button(framePresetsButtons1, text=self.i18n['preset_tank'], + command=lambda: self.setpreset("tank")) self.i18n_el['preset_tank'] = preset_button preset_button.config(font=(PalEditConfig.font, 12)) preset_button.pack(side=tk.constants.LEFT, expand=True, fill=tk.constants.BOTH) @@ -1482,19 +1607,23 @@ def talent_hp_changed(*args): width=9) preset_title2.pack(side=tk.constants.LEFT, fill=tk.constants.X) self.i18n_el['preset_title2'] = preset_title2 - preset_button = tk.Button(framePresetsButtons2, text=self.i18n['preset_max'], command=lambda: self.setpreset("dmg_max")) + preset_button = tk.Button(framePresetsButtons2, text=self.i18n['preset_max'], + command=lambda: self.setpreset("dmg_max")) self.i18n_el['preset_max'] = preset_button preset_button.config(font=(PalEditConfig.font, 12)) preset_button.pack(side=tk.constants.LEFT, expand=True, fill=tk.constants.BOTH) - preset_button = tk.Button(framePresetsButtons2, text=self.i18n['preset_balance'], command=lambda: self.setpreset("dmg_balanced")) + preset_button = tk.Button(framePresetsButtons2, text=self.i18n['preset_balance'], + command=lambda: self.setpreset("dmg_balanced")) self.i18n_el['preset_balance'] = preset_button preset_button.config(font=(PalEditConfig.font, 12)) preset_button.pack(side=tk.constants.LEFT, expand=True, fill=tk.constants.BOTH) - preset_button = tk.Button(framePresetsButtons2, text=self.i18n['preset_mount'], command=lambda: self.setpreset("dmg_mount")) + preset_button = tk.Button(framePresetsButtons2, text=self.i18n['preset_mount'], + command=lambda: self.setpreset("dmg_mount")) self.i18n_el['preset_mount'] = preset_button preset_button.config(font=(PalEditConfig.font, 12)) preset_button.pack(side=tk.constants.LEFT, expand=True, fill=tk.constants.BOTH) - preset_button = tk.Button(framePresetsButtons2, text=self.i18n['preset_element'], command=lambda: self.setpreset("dmg_element")) + preset_button = tk.Button(framePresetsButtons2, text=self.i18n['preset_element'], + command=lambda: self.setpreset("dmg_element")) self.i18n_el['preset_element'] = preset_button preset_button.config(font=(PalEditConfig.font, 12)) preset_button.pack(side=tk.constants.LEFT, expand=True, fill=tk.constants.BOTH) @@ -1505,13 +1634,15 @@ def talent_hp_changed(*args): framePresetsLevel = tk.Frame(framePresetsExtras) framePresetsLevel.pack(fill=tk.constants.BOTH, expand=True) - presetTitleLevel = tk.Label(framePresetsLevel, text=self.i18n['preset_title_level'], anchor='center', bg="lightgrey", + presetTitleLevel = tk.Label(framePresetsLevel, text=self.i18n['preset_title_level'], anchor='center', + bg="lightgrey", font=(PalEditConfig.font, 13), width=20, height=1) presetTitleLevel.pack(side=tk.constants.LEFT, expand=False, fill=tk.constants.Y) self.i18n_el['preset_title_level'] = presetTitleLevel self.checkboxLevelVar = tk.IntVar() - checkboxLevel = tk.Checkbutton(framePresetsLevel, text=self.i18n['preset_chg_lvl'], variable=self.checkboxLevelVar, + checkboxLevel = tk.Checkbutton(framePresetsLevel, text=self.i18n['preset_chg_lvl'], + variable=self.checkboxLevelVar, onvalue='1', offvalue='0') checkboxLevel.pack(side=tk.constants.LEFT, expand=False, fill=tk.constants.BOTH) @@ -1523,13 +1654,15 @@ def talent_hp_changed(*args): framePresetsRank = tk.Frame(framePresetsExtras) framePresetsRank.pack(fill=tk.constants.BOTH, expand=True) - presetTitleRank = tk.Label(framePresetsRank, text=self.i18n['preset_title_rank'], anchor='center', bg="lightgrey", + presetTitleRank = tk.Label(framePresetsRank, text=self.i18n['preset_title_rank'], anchor='center', + bg="lightgrey", font=(PalEditConfig.font, 13), width=20, height=1) presetTitleRank.pack(side=tk.constants.LEFT, expand=False, fill=tk.constants.Y) self.i18n_el['preset_title_rank'] = presetTitleRank self.checkboxRankVar = tk.IntVar() - checkboxRank = tk.Checkbutton(framePresetsRank, text=self.i18n['preset_change_rank'], variable=self.checkboxRankVar, + checkboxRank = tk.Checkbutton(framePresetsRank, text=self.i18n['preset_change_rank'], + variable=self.checkboxRankVar, onvalue='1', offvalue='0') checkboxRank.pack(side=tk.constants.LEFT, expand=False, fill=tk.constants.BOTH) @@ -1546,8 +1679,8 @@ def talent_hp_changed(*args): bg="lightgrey", font=(PalEditConfig.font, 13), width=20, height=1) presetTitleAttributes.pack(side=tk.constants.LEFT, - expand=False, - fill=tk.constants.Y) + expand=False, + fill=tk.constants.Y) self.i18n_el['preset_set_attr'] = presetTitleAttributes self.checkboxAttributesVar = tk.IntVar() checkboxAttributes = tk.Checkbutton(framePresetsAttributes, text=self.i18n['preset_change_attr'], @@ -1588,8 +1721,8 @@ def talent_hp_changed(*args): button.pack(side=tk.constants.LEFT, expand=True, fill=tk.constants.BOTH) cloneLabel = tk.Label(atkskill, bg="darkgrey", width=12, text=self.i18n['clone_lbl'], - font=(PalEditConfig.font, PalEditConfig.ftsize), - justify="center") + font=(PalEditConfig.font, PalEditConfig.ftsize), + justify="center") self.i18n_el['clone_lbl'] = cloneLabel cloneLabel.pack(fill=tk.constants.X) palframe = Frame(atkskill) @@ -1615,17 +1748,16 @@ def talent_hp_changed(*args): def save_before_close(): self.updatestats() root.destroy() + root.protocol("WM_DELETE_WINDOW", save_before_close) - + def mainloop(self): self.gui.mainloop() - def cleanup_pal_selection(self): # workaround so onselect no longer tries to get pals using pal[newplayer][oldindex] self.editindex = -1 - def changeplayer(self, evt): self.cleanup_pal_selection() self.updateDisplay() @@ -1646,10 +1778,12 @@ def updateWindowSize(self, doCenter=""): else: root.geometry("{}x{}".format(window_width, window_height)) + def main(): global pal pal = PalEdit() pal.gui.mainloop() + if __name__ == "__main__": main() diff --git a/PalInfo.py b/PalInfo.py index 3674613..343031b 100644 --- a/PalInfo.py +++ b/PalInfo.py @@ -1,15 +1,19 @@ import copy import json import os +import sys +import traceback from enum import Enum -from PIL import ImageTk, Image +import tkinter from EmptyObjectHandler import * import uuid import copy import math -# for some reason os.path when compiled with CxFreeze bugs out the program. Will look into it. -module_dir = "." #os.path.dirname(os.path.realpath(__file__)) +module_dir = os.path.dirname(os.path.realpath(__file__)) +if not os.path.exists("%s/resources/data/elements.json" % module_dir) and getattr(sys, 'frozen', False): + # for some reason os.path when compiled with CxFreeze bugs out the program. Will look into it. + module_dir = os.path.dirname(sys.executable) xpthresholds = [ 0, @@ -72,10 +76,9 @@ class PalGender(Enum): FEMALE = "#EC49A6" UNKNOWN = "darkgrey" - class PalObject: - def __init__(self, name, code_name, primary, secondary="None", human=False, tower=False, imageName=None, scaling=None): + def __init__(self, name, code_name, primary, secondary="None", human=False, tower=False, scaling=None): self._name = name self._code_name = code_name self._img = None @@ -83,12 +86,11 @@ def __init__(self, name, code_name, primary, secondary="None", human=False, towe self._secondary = secondary self._human = human self._tower = tower - self._imageName = imageName self._scaling = scaling def GetName(self): return self._name - + def GetCodeName(self): return self._code_name @@ -97,10 +99,9 @@ def IsTower(self): def GetImage(self): if self._img == None: - n = self.GetName() if not self._human else "Human" - if self._imageName is not None and not self._human: - n = self._imageName - self._img = ImageTk.PhotoImage(Image.open(module_dir+f'/resources/{n}.png').resize((240,240))) + n = self.GetCodeName() if not self._human else "Human" + # self._img = ImageTk.PhotoImage(Image.open(module_dir+f'/resources/{n}.png').resize((240,240))) + self._img = tkinter.PhotoImage(file=f'{module_dir}/resources/pals/{n}.png') return self._img def GetPrimary(self): @@ -108,10 +109,11 @@ def GetPrimary(self): def GetSecondary(self): return self._secondary - + def GetScaling(self): return self._scaling + class PalEntity: def __init__(self, data): @@ -129,16 +131,15 @@ def __init__(self, data): self._obj["IsRarePal"] = copy.deepcopy(EmptyRarePalObject) self.isLucky = self._obj["IsRarePal"]['value'] - typename = self._obj['CharacterID']['value'] # print(f"Debug: typename1 - {typename}") self.isBoss = False if typename[:5].lower() == "boss_": - typename = typename[5:] # if first 5 characters match boss_ then cut the first 5 characters off + typename = typename[5:] # if first 5 characters match boss_ then cut the first 5 characters off # typename = typename.replace("BOSS_", "") # this causes bugs self.isBoss = True if not self.isLucky else False - if typename == "LazyCatFish": # BOSS_LazyCatFish and LazyCatfish + if typename == "LazyCatFish": # BOSS_LazyCatFish and LazyCatfish typename = "LazyCatfish" # print(f"Debug: typename2 - '{typename}'") @@ -164,7 +165,7 @@ def __init__(self, data): if not "Talent_HP" in self._obj: self._obj['Talent_HP'] = copy.deepcopy(EmptyMeleeObject) - self._talent_hp = 0 # we set 0, so if its not changed it should be removed by the game again. + self._talent_hp = 0 # we set 0, so if its not changed it should be removed by the game again. self._talent_hp = self._obj['Talent_HP']['value'] if not "Talent_Melee" in self._obj: @@ -212,15 +213,12 @@ def __init__(self, data): if not "MasteredWaza" in self._obj: self._obj["MasteredWaza"] = copy.deepcopy(EmptyMovesObject) - - - + self._learntMoves = self._obj["MasteredWaza"]["value"]["values"] self._equipMoves = self._obj["EquipWaza"]["value"]["values"] - + self.CleanseAttacks() self.UpdateMaxHP() - def SwapGender(self): if self._obj['Gender']['value']['value'] == "EPalGenderType::Male": @@ -229,7 +227,6 @@ def SwapGender(self): else: self._obj['Gender']['value']['value'] = "EPalGenderType::Male" self._gender = "Male ♂" - def CleanseSkills(self): i = 0 @@ -237,37 +234,50 @@ def CleanseSkills(self): if self._skills[i].lower() == "none": self._skills.pop(i) else: - i+=1 + i += 1 + + def GetAvailableSkills(self): + avail_skills = [] + for skill_codename in SkillExclusivity: + if skill_codename == '': + continue + if SkillExclusivity[skill_codename] is None or self._type.GetCodeName() in SkillExclusivity[skill_codename]: + avail_skills.append(skill_codename) + + return avail_skills def CleanseAttacks(self): i = 0 while i < len(self._learntMoves): remove = False - if not SkillExclusivity[self._learntMoves[i]] is None: - if not self._type.GetCodeName() in SkillExclusivity[self._learntMoves[i]]: - remove = True - - if PalAttacks[self._learntMoves[i]] in PalLearnSet[self._type.GetCodeName()]: - if not self._level >= PalLearnSet[self._type.GetCodeName()][PalAttacks[self._learntMoves[i]]]: - if self._learntMoves[i] not in self._equipMoves: + if self._learntMoves[i] in ["None", "EPalWazaID::None"]: + remove = True + else: + # Check skill has Exclusivity + if not (SkillExclusivity[self._learntMoves[i]] is None): + if not self._type.GetCodeName() in SkillExclusivity[self._learntMoves[i]]: + remove = True + # Check level are available for Skills + if self._learntMoves[i] in PalLearnSet[self._type.GetCodeName()]: + if not self._level >= PalLearnSet[self._type.GetCodeName()][self._learntMoves[i]]: remove = True - + if remove: if self._learntMoves[i] in self._equipMoves: self._equipMoves.remove(self._learntMoves[i]) self._learntMoves.pop(i) else: i += 1 - - for i in PalLearnSet[self._type.GetCodeName()]: - if not find(i) in self._learntMoves: - if PalLearnSet[self._type.GetCodeName()][i] <= self._level: - self._learntMoves.append(find(i)) + + for skill_CodeName in PalLearnSet[self._type.GetCodeName()]: + if not skill_CodeName in self._learntMoves: + if PalLearnSet[self._type.GetCodeName()][skill_CodeName] <= self._level: + self._learntMoves.append(skill_CodeName) for i in self._equipMoves: if not i in self._learntMoves: self._learntMoves.append(i) - + def GetType(self): return self._type @@ -308,21 +318,21 @@ def GetRankAttack(self): if "Rank_Attack" in self._obj: return self._obj["Rank_Attack"]["value"] return 0 - + def GetRankDefence(self): # I haven't checked if this is the correct key. # unused if "Rank_Defence" in self._obj: return self._obj["Rank_Defence"]["value"] return 0 - + # def GetRankCraftSpeed(self): # # I haven't checked if this is the correct key. # # unused # if "Rank_CraftSpeed" in self._obj: # return self._obj["Rank_CraftSpeed"]["value"] # return 0 - + def GetMaxHP(self): return self._obj['MaxHP']['value']['Value']['value'] @@ -378,7 +388,9 @@ def OLD_UpdateMaxHP(self, changes: dict, hp_scaling=None) -> bool: old_hp = self.GetMaxHP() if hp_scaling is None: # assume old MaxHP is valid - possible_hp_scaling = (old_hp / 1000 - 500 - 5 * factors['level']) / (0.5 * factors['level'] * (1 + factors['hp_iv'] * 0.3 / 100) * (1 + factors['hp_rank'] * 3 / 100) * (1 + (factors['rank'] - 1) * 5 / 100)) + possible_hp_scaling = (old_hp / 1000 - 500 - 5 * factors['level']) / ( + 0.5 * factors['level'] * (1 + factors['hp_iv'] * 0.3 / 100) * ( + 1 + factors['hp_rank'] * 3 / 100) * (1 + (factors['rank'] - 1) * 5 / 100)) print("--------") print("Derived Specie HP Scaling (from og MaxHP): %s" % possible_hp_scaling) hp_scaling = possible_hp_scaling @@ -395,19 +407,20 @@ def OLD_UpdateMaxHP(self, changes: dict, hp_scaling=None) -> bool: print("%s HP Scaling: %s" % (self.GetName(), hp_scaling)) else: print("HP scaling data missing, using derived value.") - print("Calculating MaxHP using the following stats:") + print("Calculating MaxHP using the following stats:") for valkey in factors: if valkey in changes: factors[valkey] = changes[valkey] print("- %s: %s" % (valkey, factors[valkey])) print("- hp_scaling: %s" % hp_scaling) - - new_hp = int((500 + 5 * factors['level'] + hp_scaling * 0.5 * factors['level'] * (1 + factors['hp_iv'] * 0.3 / 100) * (1 + factors['hp_rank'] * 3 / 100) * (1 + (factors['rank'] - 1) * 5 / 100))) * 1000 + + new_hp = int((500 + 5 * factors['level'] + hp_scaling * 0.5 * factors['level'] * ( + 1 + factors['hp_iv'] * 0.3 / 100) * (1 + factors['hp_rank'] * 3 / 100) * ( + 1 + (factors['rank'] - 1) * 5 / 100))) * 1000 self._obj['MaxHP']['value']['Value']['value'] = new_hp self._obj['HP']['value']['Value']['value'] = new_hp print("%s MaxHP: %s -> %s" % (self.GetFullName(), old_hp, new_hp)) - def GetAttackMelee(self): return self._melee @@ -428,13 +441,13 @@ def SetDefence(self, value): def GetName(self): return self.GetObject().GetName() - + def GetCodeName(self): return self.GetObject().GetCodeName() def GetImage(self): return self.GetObject().GetImage() - + def GetPrimary(self): return self.GetObject().GetPrimary() @@ -450,13 +463,13 @@ def SkillCount(self): def SetSkill(self, slot, skill): print("set slot %d -> %s" % (slot, skill)) - if slot > len(self._skills)-1: + if slot > len(self._skills) - 1: self._skills.append(skill) else: self._skills[slot] = skill def SetAttackSkill(self, slot, attack): - if slot > len(self._equipMoves)-1: + if slot > len(self._equipMoves) - 1: self._equipMoves.append(attack) else: self._equipMoves[slot] = attack @@ -472,42 +485,43 @@ def SetLevel(self, value): # We need this check until we fix adding missing nodes if "Level" in self._obj and "Exp" in self._obj: self._obj['Level']['value'] = self._level = value - self._obj['Exp']['value'] = xpthresholds[value-1] - self.CleanseAttacks() #self.SetLevelMoves() + self._obj['Exp']['value'] = xpthresholds[value - 1] + self.CleanseAttacks() # self.SetLevelMoves() else: print(f"[ERROR:] Failed to update level for: '{self.GetName()}'") -## def SetLevelMoves(self): -## value = self._level -## self._obj["MasteredWaza"]["value"]["values"] = self._learntMoves = self._learntBackup[:] -## for i in PalLearnSet[self._type.GetCodeName()]: -## if value >= PalLearnSet[self._type.GetCodeName()][i]: -## if not find(i) in self._obj["MasteredWaza"]["value"]["values"]: -## self._obj["MasteredWaza"]["value"]["values"].append(find(i)) -## elif find(i) in self._obj["MasteredWaza"]["value"]["values"]: -## self._obj["MasteredWaza"]["value"]["values"].remove(find(i)) -## -## for i in self._equipMoves: -## if not matches(self._type.GetCodeName(), i): -## self._equipMoves.remove(i) -## self._obj["EquipWaza"]["value"]["values"] = self._equipMoves -## elif not i in self._obj["MasteredWaza"]["value"]["values"]: -## self._obj["MasteredWaza"]["value"]["values"].append(i) -## -## self._learntMoves = self._obj["MasteredWaza"]["value"]["values"] -## print("------") -## for i in self._learntMoves: -## print(i) - + ## def SetLevelMoves(self): + ## value = self._level + ## self._obj["MasteredWaza"]["value"]["values"] = self._learntMoves = self._learntBackup[:] + ## for i in PalLearnSet[self._type.GetCodeName()]: + ## if value >= PalLearnSet[self._type.GetCodeName()][i]: + ## if not find(i) in self._obj["MasteredWaza"]["value"]["values"]: + ## self._obj["MasteredWaza"]["value"]["values"].append(find(i)) + ## elif find(i) in self._obj["MasteredWaza"]["value"]["values"]: + ## self._obj["MasteredWaza"]["value"]["values"].remove(find(i)) + ## + ## for i in self._equipMoves: + ## if not matches(self._type.GetCodeName(), i): + ## self._equipMoves.remove(i) + ## self._obj["EquipWaza"]["value"]["values"] = self._equipMoves + ## elif not i in self._obj["MasteredWaza"]["value"]["values"]: + ## self._obj["MasteredWaza"]["value"]["values"].append(i) + ## + ## self._learntMoves = self._obj["MasteredWaza"]["value"]["values"] + ## print("------") + ## for i in self._learntMoves: + ## print(i) def GetRank(self): return self._rank def SetRank(self, value): if "Rank" in self._obj: - self._obj['Rank']['value'] = self._rank = value # we dont +1 here, since we have methods to patch rank in PalEdit.py + self._obj['Rank'][ + 'value'] = self._rank = value # we dont +1 here, since we have methods to patch rank in PalEdit.py else: - print(f"[ERROR:] Failed to update rank for: '{self.GetName()}'") # we probably could get rid of this line, since you add rank if missing - same with level + print( + f"[ERROR:] Failed to update rank for: '{self.GetName()}'") # we probably could get rid of this line, since you add rank if missing - same with level def RemoveSkill(self, slot): if slot < len(self._skills): @@ -522,15 +536,16 @@ def GetNickname(self): return self.GetName() if self._nickname == "" else self._nickname def GetFullName(self): - return self.GetObject().GetName() + (" 💀" if self.isBoss else "") + (" ♖" if self.isTower else "" ) + (" ✨" if self.isLucky else "") + (f" - '{self._nickname}'" if not self._nickname == "" else "") - + return self.GetObject().GetName() + (" 💀" if self.isBoss else "") + (" ♖" if self.isTower else "") + ( + " ✨" if self.isLucky else "") + (f" - '{self._nickname}'" if not self._nickname == "" else "") + def SetLucky(self, v=True): self._obj["IsRarePal"]['value'] = self.isLucky = v self.SetType(self._type.GetCodeName()) if v: if self.isBoss: self.isBoss = False - + def SetBoss(self, v=True): self.isBoss = v self.SetType(self._type.GetCodeName()) @@ -540,7 +555,7 @@ def SetBoss(self, v=True): def GetEquippedMoves(self): return self._equipMoves - + def GetLearntMoves(self): return self._learntMoves @@ -576,17 +591,18 @@ def GetPalInstanceGuid(self): def SetPalInstanceGuid(self, v: str): self._data['key']['InstanceId']['value'] = v + class PalGuid: def __init__(self, data): self._data = data self._CharacterContainerSaveData = \ - data['properties']['worldSaveData']['value']['CharacterContainerSaveData']['value'] + data['properties']['worldSaveData']['value']['CharacterContainerSaveData']['value'] self._GroupSaveDataMap = data['properties']['worldSaveData']['value']['GroupSaveDataMap']['value'] - + def GetPlayerslist(self): players = list(filter(lambda x: 'IsPlayer' in x['value'], [ - {'uid':x['key']['PlayerUId'], - 'value':x['value']['RawData']['value']['object']['SaveParameter']['value'] + {'uid': x['key']['PlayerUId'], + 'value': x['value']['RawData']['value']['object']['SaveParameter']['value'] } for x in self._data['properties']['worldSaveData']['value']['CharacterSaveParameterMap']['value']])) return {x['value']['NickName']['value']: str(x['uid']['value']) for x in players} @@ -671,6 +687,7 @@ def Save(self, svdata): svdata['properties']['worldSaveData']['value']['GroupSaveDataMap']['value'] = self._GroupSaveDataMap return svdata + class PalPlayerEntity: def __init__(self, data): self._data = data @@ -719,7 +736,7 @@ def SetAncientTechnologyPoint(self, v: int): def dump(self): return self._data - + with open("%s/resources/data/elements.json" % (module_dir), "r", encoding="utf8") as elementfile: PalElements = {} @@ -727,8 +744,10 @@ def dump(self): PalElements[i['Name']] = i['Color'] PalSpecies = {} +# PalLearnSet: Pal Skills require Level PalLearnSet = {} + def LoadPals(lang=None): global PalSpecies, PalLearnSet @@ -739,44 +758,57 @@ def LoadPals(lang=None): with open("%s/resources/data/pals.json" % (module_dir), "r", encoding="utf8") as palfile: pals = json.load(palfile) PalCodeMapping = {pal['CodeName']: pal['Name'] for pal in pals['values']} - with open("%s/resources/data/pals%s.json" % (module_dir, "_"+lang if lang is not None else ""), "r", encoding="utf8") as palfile: + with open("%s/resources/data/pals%s.json" % (module_dir, "_" + lang if lang is not None else ""), "r", + encoding="utf8") as palfile: PalSpecies = {} PalLearnSet = {} for i in json.loads(palfile.read())["values"]: + # try: + # img = Image.open(module_dir + f'/resources/{i["Name"]}.png').resize((240, 240)) + # with open(module_dir + f'/resources/pals/{i["CodeName"]}.png', 'wb') as f: + # img.save(f) + # except Exception as e: + # traceback.print_exception(e) h = "Human" in i t = "Tower" in i p = i["Type"][0] s = "None" if len(i["Type"]) == 2: s = i["Type"][1] - PalSpecies[i["CodeName"]] = PalObject(i["Name"], i["CodeName"], p, s, h, t, PalCodeMapping[i['CodeName']], i["Scaling"] if "Scaling" in i else None) + PalSpecies[i["CodeName"]] = PalObject(i["Name"], i["CodeName"], p, s, h, t, + i["Scaling"] if "Scaling" in i else None) PalLearnSet[i["CodeName"]] = i["Moveset"] + LoadPals() PalPassives = {} PassiveDescriptions = {} PassiveRating = {} + def LoadPassives(lang=None): global PalPassives, PassiveDescriptions, PassiveRating PalPassives = {} PassiveDescriptions = {} PassiveRating = {} - - if lang is not None and not os.path.exists("%s/resources/data/passives%s.json" % (module_dir, "_"+lang)): + + if lang is not None and not os.path.exists("%s/resources/data/passives%s.json" % (module_dir, "_" + lang)): lang = None - - with open("%s/resources/data/passives%s.json" % (module_dir, "_"+lang if lang is not None else ""), "r", encoding="utf8") as passivefile: + + with open("%s/resources/data/passives%s.json" % (module_dir, "_" + lang if lang is not None else ""), "r", + encoding="utf8") as passivefile: for i in json.loads(passivefile.read())["values"]: PalPassives[i["CodeName"]] = i["Name"] PassiveDescriptions[i["CodeName"]] = i["Description"] PassiveRating[i["CodeName"]] = i["Rating"] PalPassives = dict(sorted(PalPassives.items())) + LoadPassives() +# PalAttacks CodeName -> Name PalAttacks = {} AttackPower = {} AttackTypes = {} @@ -789,16 +821,17 @@ def LoadAttacks(lang=None): if lang is not None and not os.path.exists("%s/resources/data/attacks%s.json" % (module_dir, "_" + lang)): lang = None - with open("%s/resources/data/attacks%s.json" % (module_dir, "_"+lang if lang is not None else ""), "r", encoding="utf8") as attackfile: + with open("%s/resources/data/attacks%s.json" % (module_dir, "_" + lang if lang is not None else ""), "r", + encoding="utf8") as attackfile: PalAttacks = {} AttackPower = {} AttackTypes = {} SkillExclusivity = {} - + l = json.loads(attackfile.read()) - + debugOutput = l["values"] - + for i in l["values"]: PalAttacks[i["CodeName"]] = i["Name"] AttackPower[i["CodeName"]] = i["Power"] @@ -807,11 +840,12 @@ def LoadAttacks(lang=None): SkillExclusivity[i["CodeName"]] = i["Exclusive"] else: SkillExclusivity[i["CodeName"]] = None - + PalAttacks = dict(sorted(PalAttacks.items())) LoadAttacks() + def find(name): for i in PalSpecies: if PalSpecies[i].GetName() == name: @@ -824,18 +858,34 @@ def find(name): return i return "None" - +if __name__ == "__main__": + # Convert Pals -> Moveset from Name to CodeName for i18n + with open("%s/resources/data/pals.json" % (module_dir), "r", encoding="utf-8") as f: + pals = json.load(f) + for pal in pals['values']: + if 'Moveset' in pal: + new_moveset = {} + for move_name in pal['Moveset']: + move_id = pal['Moveset'][move_name] + if find(move_name) != "None": + new_moveset[find(move_name)] = move_id + elif move_name in PalAttacks: + new_moveset[move_name] = move_id + else: + print(f"Error: Invalid {move_name}") + pal['Moveset'] = new_moveset + + with open("%s/resources/data/pals.json" % (module_dir), "w", encoding="utf-8") as f: + json.dump(pals, f, indent=4) -##if __name__ == "__main__": -## PalObject("Mossanda Noct", "Electric", "Dark") ## ## ## if True: ## import bs4 as bsoup ## import urllib.request as ureq ## -## -## +## +## ## with open(module_dir+"/resources/data/pals.json", "r+", encoding="utf8") as palfile: ## p = json.loads(palfile.read()) ## palfile.seek(0) @@ -851,7 +901,7 @@ def find(name): ## con = soup.find_all("div", {"class": "active skills"}) ## if len(con) > 0: ## for item in con[0].find_all("div", {"class": "item"}): -## +## ## name = item.find("div", {"class": "name"}).text ## level = item.find("div", {"class": "level"}) ## @@ -859,7 +909,7 @@ def find(name): ## level = int(level.text.replace("- Lv ", "")) ## pal["Moveset"][name] = level ## json.dump(p, palfile, indent=4) -## +## ## ## if True: ## @@ -882,6 +932,4 @@ def find(name): ## for i in codes: ## debugOutput.append({"CodeName": codes[i], "Name": i, "Type": "", "Power": 0}) ## with open(module_dir+"/resources/data/attacks.json", "w", encoding="utf8") as attackfile: -## json.dump({"values": debugOutput}, attackfile, indent=4) - - +## json.dump({"values": debugOutput}, attackfile, indent=4) \ No newline at end of file diff --git a/resources/#ERROR.png b/assets/#ERROR.png similarity index 100% rename from resources/#ERROR.png rename to assets/#ERROR.png diff --git a/resources/Anubis.png b/assets/Anubis.png similarity index 100% rename from resources/Anubis.png rename to assets/Anubis.png diff --git a/resources/Arsox.png b/assets/Arsox.png similarity index 100% rename from resources/Arsox.png rename to assets/Arsox.png diff --git a/resources/Astegon.png b/assets/Astegon.png similarity index 100% rename from resources/Astegon.png rename to assets/Astegon.png diff --git a/resources/Axel & Orserk.png b/assets/Axel & Orserk.png similarity index 100% rename from resources/Axel & Orserk.png rename to assets/Axel & Orserk.png diff --git a/resources/Azurobe.png b/assets/Azurobe.png similarity index 100% rename from resources/Azurobe.png rename to assets/Azurobe.png diff --git a/resources/Beakon.png b/assets/Beakon.png similarity index 100% rename from resources/Beakon.png rename to assets/Beakon.png diff --git a/resources/Beegarde.png b/assets/Beegarde.png similarity index 100% rename from resources/Beegarde.png rename to assets/Beegarde.png diff --git a/resources/Black Marketeer.png b/assets/Black Marketeer.png similarity index 100% rename from resources/Black Marketeer.png rename to assets/Black Marketeer.png diff --git a/resources/Blazamut.png b/assets/Blazamut.png similarity index 100% rename from resources/Blazamut.png rename to assets/Blazamut.png diff --git a/resources/Blazehowl Noct.png b/assets/Blazehowl Noct.png similarity index 100% rename from resources/Blazehowl Noct.png rename to assets/Blazehowl Noct.png diff --git a/resources/Blazehowl.png b/assets/Blazehowl.png similarity index 100% rename from resources/Blazehowl.png rename to assets/Blazehowl.png diff --git a/resources/Boltmane.png b/assets/Boltmane.png similarity index 100% rename from resources/Boltmane.png rename to assets/Boltmane.png diff --git a/resources/Bristla.png b/assets/Bristla.png similarity index 100% rename from resources/Bristla.png rename to assets/Bristla.png diff --git a/resources/Broncherry Aqua.png b/assets/Broncherry Aqua.png similarity index 100% rename from resources/Broncherry Aqua.png rename to assets/Broncherry Aqua.png diff --git a/resources/Broncherry.png b/assets/Broncherry.png similarity index 100% rename from resources/Broncherry.png rename to assets/Broncherry.png diff --git a/resources/Brothers of the Eternal Pyre Martyr.png b/assets/Brothers of the Eternal Pyre Martyr.png similarity index 100% rename from resources/Brothers of the Eternal Pyre Martyr.png rename to assets/Brothers of the Eternal Pyre Martyr.png diff --git a/resources/Burly Merc.png b/assets/Burly Merc.png similarity index 100% rename from resources/Burly Merc.png rename to assets/Burly Merc.png diff --git a/resources/Bushi.png b/assets/Bushi.png similarity index 100% rename from resources/Bushi.png rename to assets/Bushi.png diff --git a/resources/Caprity.png b/assets/Caprity.png similarity index 100% rename from resources/Caprity.png rename to assets/Caprity.png diff --git a/resources/Cattiva.png b/assets/Cattiva.png similarity index 100% rename from resources/Cattiva.png rename to assets/Cattiva.png diff --git a/resources/Cawgnito.png b/assets/Cawgnito.png similarity index 100% rename from resources/Cawgnito.png rename to assets/Cawgnito.png diff --git a/resources/Celaray.png b/assets/Celaray.png similarity index 100% rename from resources/Celaray.png rename to assets/Celaray.png diff --git a/resources/Chikipi.png b/assets/Chikipi.png similarity index 100% rename from resources/Chikipi.png rename to assets/Chikipi.png diff --git a/resources/Chillet.png b/assets/Chillet.png similarity index 100% rename from resources/Chillet.png rename to assets/Chillet.png diff --git a/resources/Cinnamoth.png b/assets/Cinnamoth.png similarity index 100% rename from resources/Cinnamoth.png rename to assets/Cinnamoth.png diff --git a/resources/Cremis.png b/assets/Cremis.png similarity index 100% rename from resources/Cremis.png rename to assets/Cremis.png diff --git a/resources/Cryolinx.png b/assets/Cryolinx.png similarity index 100% rename from resources/Cryolinx.png rename to assets/Cryolinx.png diff --git a/resources/Daedream.png b/assets/Daedream.png similarity index 100% rename from resources/Daedream.png rename to assets/Daedream.png diff --git a/resources/Dark Mutant.png b/assets/Dark Mutant.png similarity index 100% rename from resources/Dark Mutant.png rename to assets/Dark Mutant.png diff --git a/resources/Dazzi.png b/assets/Dazzi.png similarity index 100% rename from resources/Dazzi.png rename to assets/Dazzi.png diff --git a/resources/Depresso.png b/assets/Depresso.png similarity index 100% rename from resources/Depresso.png rename to assets/Depresso.png diff --git a/resources/Digtoise.png b/assets/Digtoise.png similarity index 100% rename from resources/Digtoise.png rename to assets/Digtoise.png diff --git a/resources/Dinossom Lux.png b/assets/Dinossom Lux.png similarity index 100% rename from resources/Dinossom Lux.png rename to assets/Dinossom Lux.png diff --git a/resources/Dinossom.png b/assets/Dinossom.png similarity index 100% rename from resources/Dinossom.png rename to assets/Dinossom.png diff --git a/resources/Direhowl.png b/assets/Direhowl.png similarity index 100% rename from resources/Direhowl.png rename to assets/Direhowl.png diff --git a/resources/Dragostrophe.png b/assets/Dragostrophe.png similarity index 100% rename from resources/Dragostrophe.png rename to assets/Dragostrophe.png diff --git a/resources/Dumud.png b/assets/Dumud.png similarity index 100% rename from resources/Dumud.png rename to assets/Dumud.png diff --git a/resources/Eikthyrdeer Terra.png b/assets/Eikthyrdeer Terra.png similarity index 100% rename from resources/Eikthyrdeer Terra.png rename to assets/Eikthyrdeer Terra.png diff --git a/resources/Eikthyrdeer.png b/assets/Eikthyrdeer.png similarity index 100% rename from resources/Eikthyrdeer.png rename to assets/Eikthyrdeer.png diff --git a/resources/Elizabee.png b/assets/Elizabee.png similarity index 100% rename from resources/Elizabee.png rename to assets/Elizabee.png diff --git a/resources/Elphidran Aqua.png b/assets/Elphidran Aqua.png similarity index 100% rename from resources/Elphidran Aqua.png rename to assets/Elphidran Aqua.png diff --git a/resources/Elphidran.png b/assets/Elphidran.png similarity index 100% rename from resources/Elphidran.png rename to assets/Elphidran.png diff --git a/resources/Expedition Survivor.png b/assets/Expedition Survivor.png similarity index 100% rename from resources/Expedition Survivor.png rename to assets/Expedition Survivor.png diff --git a/resources/Faleris.png b/assets/Faleris.png similarity index 100% rename from resources/Faleris.png rename to assets/Faleris.png diff --git a/resources/Felbat.png b/assets/Felbat.png similarity index 100% rename from resources/Felbat.png rename to assets/Felbat.png diff --git a/resources/Fenglope.png b/assets/Fenglope.png similarity index 100% rename from resources/Fenglope.png rename to assets/Fenglope.png diff --git a/resources/Flambelle.png b/assets/Flambelle.png similarity index 100% rename from resources/Flambelle.png rename to assets/Flambelle.png diff --git a/resources/Flopie.png b/assets/Flopie.png similarity index 100% rename from resources/Flopie.png rename to assets/Flopie.png diff --git a/resources/Foxcicle.png b/assets/Foxcicle.png similarity index 100% rename from resources/Foxcicle.png rename to assets/Foxcicle.png diff --git a/resources/Foxparks.png b/assets/Foxparks.png similarity index 100% rename from resources/Foxparks.png rename to assets/Foxparks.png diff --git a/resources/Free Pal Alliance Devout.png b/assets/Free Pal Alliance Devout.png similarity index 100% rename from resources/Free Pal Alliance Devout.png rename to assets/Free Pal Alliance Devout.png diff --git a/resources/Frostallion Noct.png b/assets/Frostallion Noct.png similarity index 100% rename from resources/Frostallion Noct.png rename to assets/Frostallion Noct.png diff --git a/resources/Frostallion.png b/assets/Frostallion.png similarity index 100% rename from resources/Frostallion.png rename to assets/Frostallion.png diff --git a/resources/Fuack.png b/assets/Fuack.png similarity index 100% rename from resources/Fuack.png rename to assets/Fuack.png diff --git a/resources/Fuddler.png b/assets/Fuddler.png similarity index 100% rename from resources/Fuddler.png rename to assets/Fuddler.png diff --git a/resources/Galeclaw.png b/assets/Galeclaw.png similarity index 100% rename from resources/Galeclaw.png rename to assets/Galeclaw.png diff --git a/resources/Gobfin Ignis.png b/assets/Gobfin Ignis.png similarity index 100% rename from resources/Gobfin Ignis.png rename to assets/Gobfin Ignis.png diff --git a/resources/Gobfin.png b/assets/Gobfin.png similarity index 100% rename from resources/Gobfin.png rename to assets/Gobfin.png diff --git a/resources/Gorirat.png b/assets/Gorirat.png similarity index 100% rename from resources/Gorirat.png rename to assets/Gorirat.png diff --git a/resources/Grintale.png b/assets/Grintale.png similarity index 100% rename from resources/Grintale.png rename to assets/Grintale.png diff --git a/resources/Grizzbolt.png b/assets/Grizzbolt.png similarity index 100% rename from resources/Grizzbolt.png rename to assets/Grizzbolt.png diff --git a/resources/Gumoss (Special).png b/assets/Gumoss (Special).png similarity index 100% rename from resources/Gumoss (Special).png rename to assets/Gumoss (Special).png diff --git a/resources/Gumoss.png b/assets/Gumoss.png similarity index 100% rename from resources/Gumoss.png rename to assets/Gumoss.png diff --git a/resources/Hangyu Cryst.png b/assets/Hangyu Cryst.png similarity index 100% rename from resources/Hangyu Cryst.png rename to assets/Hangyu Cryst.png diff --git a/resources/Hangyu.png b/assets/Hangyu.png similarity index 100% rename from resources/Hangyu.png rename to assets/Hangyu.png diff --git a/resources/Helzephyr.png b/assets/Helzephyr.png similarity index 100% rename from resources/Helzephyr.png rename to assets/Helzephyr.png diff --git a/resources/Hoocrates.png b/assets/Hoocrates.png similarity index 100% rename from resources/Hoocrates.png rename to assets/Hoocrates.png diff --git a/resources/Human.png b/assets/Human.png similarity index 100% rename from resources/Human.png rename to assets/Human.png diff --git a/resources/Ice Kingpaca.png b/assets/Ice Kingpaca.png similarity index 100% rename from resources/Ice Kingpaca.png rename to assets/Ice Kingpaca.png diff --git a/resources/Ice Reptyro.png b/assets/Ice Reptyro.png similarity index 100% rename from resources/Ice Reptyro.png rename to assets/Ice Reptyro.png diff --git a/resources/Incineram Noct.png b/assets/Incineram Noct.png similarity index 100% rename from resources/Incineram Noct.png rename to assets/Incineram Noct.png diff --git a/resources/Incineram.png b/assets/Incineram.png similarity index 100% rename from resources/Incineram.png rename to assets/Incineram.png diff --git a/resources/Jetragon.png b/assets/Jetragon.png similarity index 100% rename from resources/Jetragon.png rename to assets/Jetragon.png diff --git a/resources/Jolthog Cryst.png b/assets/Jolthog Cryst.png similarity index 100% rename from resources/Jolthog Cryst.png rename to assets/Jolthog Cryst.png diff --git a/resources/Jolthog.png b/assets/Jolthog.png similarity index 100% rename from resources/Jolthog.png rename to assets/Jolthog.png diff --git a/resources/Jormuntide Ignis.png b/assets/Jormuntide Ignis.png similarity index 100% rename from resources/Jormuntide Ignis.png rename to assets/Jormuntide Ignis.png diff --git a/resources/Jormuntide.png b/assets/Jormuntide.png similarity index 100% rename from resources/Jormuntide.png rename to assets/Jormuntide.png diff --git a/resources/Katress.png b/assets/Katress.png similarity index 100% rename from resources/Katress.png rename to assets/Katress.png diff --git a/resources/Kelpsea Ignis.png b/assets/Kelpsea Ignis.png similarity index 100% rename from resources/Kelpsea Ignis.png rename to assets/Kelpsea Ignis.png diff --git a/resources/Kelpsea.png b/assets/Kelpsea.png similarity index 100% rename from resources/Kelpsea.png rename to assets/Kelpsea.png diff --git a/resources/Killamari.png b/assets/Killamari.png similarity index 100% rename from resources/Killamari.png rename to assets/Killamari.png diff --git a/resources/Kingpaca.png b/assets/Kingpaca.png similarity index 100% rename from resources/Kingpaca.png rename to assets/Kingpaca.png diff --git a/resources/Kitsun.png b/assets/Kitsun.png similarity index 100% rename from resources/Kitsun.png rename to assets/Kitsun.png diff --git a/resources/Lamball.png b/assets/Lamball.png similarity index 100% rename from resources/Lamball.png rename to assets/Lamball.png diff --git a/resources/Leezpunk Ignis.png b/assets/Leezpunk Ignis.png similarity index 100% rename from resources/Leezpunk Ignis.png rename to assets/Leezpunk Ignis.png diff --git a/resources/Leezpunk.png b/assets/Leezpunk.png similarity index 100% rename from resources/Leezpunk.png rename to assets/Leezpunk.png diff --git a/resources/Lifmunk.png b/assets/Lifmunk.png similarity index 100% rename from resources/Lifmunk.png rename to assets/Lifmunk.png diff --git a/resources/Lily & Lyleen.png b/assets/Lily & Lyleen.png similarity index 100% rename from resources/Lily & Lyleen.png rename to assets/Lily & Lyleen.png diff --git a/resources/Loupmoon.png b/assets/Loupmoon.png similarity index 100% rename from resources/Loupmoon.png rename to assets/Loupmoon.png diff --git a/resources/Lovander.png b/assets/Lovander.png similarity index 100% rename from resources/Lovander.png rename to assets/Lovander.png diff --git a/resources/Lunaris.png b/assets/Lunaris.png similarity index 100% rename from resources/Lunaris.png rename to assets/Lunaris.png diff --git a/resources/Lyleen Noct.png b/assets/Lyleen Noct.png similarity index 100% rename from resources/Lyleen Noct.png rename to assets/Lyleen Noct.png diff --git a/resources/Lyleen.png b/assets/Lyleen.png similarity index 100% rename from resources/Lyleen.png rename to assets/Lyleen.png diff --git a/resources/Mammorest Cryst.png b/assets/Mammorest Cryst.png similarity index 100% rename from resources/Mammorest Cryst.png rename to assets/Mammorest Cryst.png diff --git a/resources/Mammorest.png b/assets/Mammorest.png similarity index 100% rename from resources/Mammorest.png rename to assets/Mammorest.png diff --git a/resources/Maraith.png b/assets/Maraith.png similarity index 100% rename from resources/Maraith.png rename to assets/Maraith.png diff --git a/resources/Marus & Faleris.png b/assets/Marus & Faleris.png similarity index 100% rename from resources/Marus & Faleris.png rename to assets/Marus & Faleris.png diff --git a/resources/Mau Cryst.png b/assets/Mau Cryst.png similarity index 100% rename from resources/Mau Cryst.png rename to assets/Mau Cryst.png diff --git a/resources/Mau.png b/assets/Mau.png similarity index 100% rename from resources/Mau.png rename to assets/Mau.png diff --git a/resources/Melpaca.png b/assets/Melpaca.png similarity index 100% rename from resources/Melpaca.png rename to assets/Melpaca.png diff --git a/resources/Menasting.png b/assets/Menasting.png similarity index 100% rename from resources/Menasting.png rename to assets/Menasting.png diff --git a/resources/Mossanda Lux.png b/assets/Mossanda Lux.png similarity index 100% rename from resources/Mossanda Lux.png rename to assets/Mossanda Lux.png diff --git a/resources/Mossanda.png b/assets/Mossanda.png similarity index 100% rename from resources/Mossanda.png rename to assets/Mossanda.png diff --git a/assets/MossandaIcon.png b/assets/MossandaIcon.png new file mode 100644 index 0000000..ec50acb Binary files /dev/null and b/assets/MossandaIcon.png differ diff --git a/resources/Mozzarina.png b/assets/Mozzarina.png similarity index 100% rename from resources/Mozzarina.png rename to assets/Mozzarina.png diff --git a/resources/Necromus.png b/assets/Necromus.png similarity index 100% rename from resources/Necromus.png rename to assets/Necromus.png diff --git a/resources/Nitewing.png b/assets/Nitewing.png similarity index 100% rename from resources/Nitewing.png rename to assets/Nitewing.png diff --git a/resources/Nox.png b/assets/Nox.png similarity index 100% rename from resources/Nox.png rename to assets/Nox.png diff --git a/resources/Orserk.png b/assets/Orserk.png similarity index 100% rename from resources/Orserk.png rename to assets/Orserk.png diff --git a/resources/PAL Genetic Research Unit Executioner.png b/assets/PAL Genetic Research Unit Executioner.png similarity index 100% rename from resources/PAL Genetic Research Unit Executioner.png rename to assets/PAL Genetic Research Unit Executioner.png diff --git a/resources/PIDF Guard.png b/assets/PIDF Guard.png similarity index 100% rename from resources/PIDF Guard.png rename to assets/PIDF Guard.png diff --git a/resources/Pal Merchant.png b/assets/Pal Merchant.png similarity index 100% rename from resources/Pal Merchant.png rename to assets/Pal Merchant.png diff --git a/resources/Paladius.png b/assets/Paladius.png similarity index 100% rename from resources/Paladius.png rename to assets/Paladius.png diff --git a/resources/Pengullet.png b/assets/Pengullet.png similarity index 100% rename from resources/Pengullet.png rename to assets/Pengullet.png diff --git a/resources/Penking.png b/assets/Penking.png similarity index 100% rename from resources/Penking.png rename to assets/Penking.png diff --git a/resources/Petallia.png b/assets/Petallia.png similarity index 100% rename from resources/Petallia.png rename to assets/Petallia.png diff --git a/resources/Pyrin Noct.png b/assets/Pyrin Noct.png similarity index 100% rename from resources/Pyrin Noct.png rename to assets/Pyrin Noct.png diff --git a/resources/Pyrin.png b/assets/Pyrin.png similarity index 100% rename from resources/Pyrin.png rename to assets/Pyrin.png diff --git a/resources/Quivern.png b/assets/Quivern.png similarity index 100% rename from resources/Quivern.png rename to assets/Quivern.png diff --git a/resources/Ragnahawk.png b/assets/Ragnahawk.png similarity index 100% rename from resources/Ragnahawk.png rename to assets/Ragnahawk.png diff --git a/resources/Rayhound.png b/assets/Rayhound.png similarity index 100% rename from resources/Rayhound.png rename to assets/Rayhound.png diff --git a/resources/Reindrix.png b/assets/Reindrix.png similarity index 100% rename from resources/Reindrix.png rename to assets/Reindrix.png diff --git a/resources/Relaxaurus Lux.png b/assets/Relaxaurus Lux.png similarity index 100% rename from resources/Relaxaurus Lux.png rename to assets/Relaxaurus Lux.png diff --git a/resources/Relaxaurus.png b/assets/Relaxaurus.png similarity index 100% rename from resources/Relaxaurus.png rename to assets/Relaxaurus.png diff --git a/resources/Reptyro.png b/assets/Reptyro.png similarity index 100% rename from resources/Reptyro.png rename to assets/Reptyro.png diff --git a/resources/Ribbuny.png b/assets/Ribbuny.png similarity index 100% rename from resources/Ribbuny.png rename to assets/Ribbuny.png diff --git a/resources/Robinquill Terra.png b/assets/Robinquill Terra.png similarity index 100% rename from resources/Robinquill Terra.png rename to assets/Robinquill Terra.png diff --git a/resources/Robinquill.png b/assets/Robinquill.png similarity index 100% rename from resources/Robinquill.png rename to assets/Robinquill.png diff --git a/resources/Rooby.png b/assets/Rooby.png similarity index 100% rename from resources/Rooby.png rename to assets/Rooby.png diff --git a/resources/Rushoar.png b/assets/Rushoar.png similarity index 100% rename from resources/Rushoar.png rename to assets/Rushoar.png diff --git a/resources/Shadowbeak.png b/assets/Shadowbeak.png similarity index 100% rename from resources/Shadowbeak.png rename to assets/Shadowbeak.png diff --git a/resources/Sibelyx.png b/assets/Sibelyx.png similarity index 100% rename from resources/Sibelyx.png rename to assets/Sibelyx.png diff --git a/resources/Sparkit.png b/assets/Sparkit.png similarity index 100% rename from resources/Sparkit.png rename to assets/Sparkit.png diff --git a/resources/Surfent Terra.png b/assets/Surfent Terra.png similarity index 100% rename from resources/Surfent Terra.png rename to assets/Surfent Terra.png diff --git a/resources/Surfent.png b/assets/Surfent.png similarity index 100% rename from resources/Surfent.png rename to assets/Surfent.png diff --git a/resources/Suzaku Aqua.png b/assets/Suzaku Aqua.png similarity index 100% rename from resources/Suzaku Aqua.png rename to assets/Suzaku Aqua.png diff --git a/resources/Suzaku.png b/assets/Suzaku.png similarity index 100% rename from resources/Suzaku.png rename to assets/Suzaku.png diff --git a/resources/Swee.png b/assets/Swee.png similarity index 100% rename from resources/Swee.png rename to assets/Swee.png diff --git a/resources/Sweepa.png b/assets/Sweepa.png similarity index 100% rename from resources/Sweepa.png rename to assets/Sweepa.png diff --git a/resources/Syndicate Cleaner.png b/assets/Syndicate Cleaner.png similarity index 100% rename from resources/Syndicate Cleaner.png rename to assets/Syndicate Cleaner.png diff --git a/resources/Syndicate Crusher.png b/assets/Syndicate Crusher.png similarity index 100% rename from resources/Syndicate Crusher.png rename to assets/Syndicate Crusher.png diff --git a/resources/Syndicate Elite.png b/assets/Syndicate Elite.png similarity index 100% rename from resources/Syndicate Elite.png rename to assets/Syndicate Elite.png diff --git a/resources/Syndicate Grenadier.png b/assets/Syndicate Grenadier.png similarity index 100% rename from resources/Syndicate Grenadier.png rename to assets/Syndicate Grenadier.png diff --git a/resources/Syndicate Gunner.png b/assets/Syndicate Gunner.png similarity index 100% rename from resources/Syndicate Gunner.png rename to assets/Syndicate Gunner.png diff --git a/resources/Syndicate Hunter.png b/assets/Syndicate Hunter.png similarity index 100% rename from resources/Syndicate Hunter.png rename to assets/Syndicate Hunter.png diff --git a/resources/Syndicate Thug (Bat).png b/assets/Syndicate Thug (Bat).png similarity index 100% rename from resources/Syndicate Thug (Bat).png rename to assets/Syndicate Thug (Bat).png diff --git a/resources/Syndicate Thug (Handgun).png b/assets/Syndicate Thug (Handgun).png similarity index 100% rename from resources/Syndicate Thug (Handgun).png rename to assets/Syndicate Thug (Handgun).png diff --git a/resources/Syndicate Thug.png b/assets/Syndicate Thug.png similarity index 100% rename from resources/Syndicate Thug.png rename to assets/Syndicate Thug.png diff --git a/resources/Tanzee.png b/assets/Tanzee.png similarity index 100% rename from resources/Tanzee.png rename to assets/Tanzee.png diff --git a/resources/Teafant.png b/assets/Teafant.png similarity index 100% rename from resources/Teafant.png rename to assets/Teafant.png diff --git a/resources/Tocotoco.png b/assets/Tocotoco.png similarity index 100% rename from resources/Tocotoco.png rename to assets/Tocotoco.png diff --git a/resources/Tombat.png b/assets/Tombat.png similarity index 100% rename from resources/Tombat.png rename to assets/Tombat.png diff --git a/resources/Univolt.png b/assets/Univolt.png similarity index 100% rename from resources/Univolt.png rename to assets/Univolt.png diff --git a/resources/Vaelet.png b/assets/Vaelet.png similarity index 100% rename from resources/Vaelet.png rename to assets/Vaelet.png diff --git a/resources/Vanwyrm Cryst.png b/assets/Vanwyrm Cryst.png similarity index 100% rename from resources/Vanwyrm Cryst.png rename to assets/Vanwyrm Cryst.png diff --git a/resources/Vanwyrm.png b/assets/Vanwyrm.png similarity index 100% rename from resources/Vanwyrm.png rename to assets/Vanwyrm.png diff --git a/resources/Verdash.png b/assets/Verdash.png similarity index 100% rename from resources/Verdash.png rename to assets/Verdash.png diff --git a/resources/Victor & Shadowbeak.png b/assets/Victor & Shadowbeak.png similarity index 100% rename from resources/Victor & Shadowbeak.png rename to assets/Victor & Shadowbeak.png diff --git a/resources/Vixy.png b/assets/Vixy.png similarity index 100% rename from resources/Vixy.png rename to assets/Vixy.png diff --git a/resources/Wandering Merchant.png b/assets/Wandering Merchant.png similarity index 100% rename from resources/Wandering Merchant.png rename to assets/Wandering Merchant.png diff --git a/resources/Warsect.png b/assets/Warsect.png similarity index 100% rename from resources/Warsect.png rename to assets/Warsect.png diff --git a/resources/Wixen.png b/assets/Wixen.png similarity index 100% rename from resources/Wixen.png rename to assets/Wixen.png diff --git a/resources/Woolipop.png b/assets/Woolipop.png similarity index 100% rename from resources/Woolipop.png rename to assets/Woolipop.png diff --git a/resources/Wumpo Botan.png b/assets/Wumpo Botan.png similarity index 100% rename from resources/Wumpo Botan.png rename to assets/Wumpo Botan.png diff --git a/resources/Wumpo.png b/assets/Wumpo.png similarity index 100% rename from resources/Wumpo.png rename to assets/Wumpo.png diff --git a/resources/Zoe & Grizzbolt.png b/assets/Zoe & Grizzbolt.png similarity index 100% rename from resources/Zoe & Grizzbolt.png rename to assets/Zoe & Grizzbolt.png diff --git a/requirements.txt b/requirements.txt index 7de04c4..bc78412 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,3 +5,4 @@ pillow==10.2.0 pyinstaller==6.3.0 pyinstaller-hooks-contrib==2024.0 pywin32-ctypes==0.2.2 +palworld_save_tools diff --git a/resources/MossandaIcon.png b/resources/MossandaIcon.png index ec50acb..b0694f9 100644 Binary files a/resources/MossandaIcon.png and b/resources/MossandaIcon.png differ diff --git a/resources/data/pals.json b/resources/data/pals.json index 85070fa..c14a286 100644 --- a/resources/data/pals.json +++ b/resources/data/pals.json @@ -7,13 +7,13 @@ "Neutral" ], "Moveset": { - "Air Cannon": 1, - "Fluffy Tackle": 7, - "Sand Blast": 15, - "Power Shot": 22, - "Shockwave": 30, - "Power Bomb": 40, - "Pal Blast": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::Unique_Alpaca_Tackle": 7, + "EPalWazaID::MudShot": 15, + "EPalWazaID::PowerShot": 22, + "EPalWazaID::ElecWave": 30, + "EPalWazaID::PowerBall": 40, + "EPalWazaID::HyperBeam": 50 }, "Scaling": { "HP": 90, @@ -28,13 +28,13 @@ "Fire" ], "Moveset": { - "Ignis Blast": 1, - "Spirit Fire": 7, - "Spirit Flame": 15, - "Daring Flames": 22, - "Flare Storm": 30, - "Ignis Rage": 40, - "Fire Ball": 50 + "EPalWazaID::FireBlast": 1, + "EPalWazaID::FireSeed": 7, + "EPalWazaID::GhostFlame": 15, + "EPalWazaID::Unique_AmaterasuWolf_FireCharge": 22, + "EPalWazaID::FlareTornado": 30, + "EPalWazaID::Inferno": 40, + "EPalWazaID::FireBall": 50 }, "Scaling": { "HP": 100, @@ -49,13 +49,13 @@ "Ground" ], "Moveset": { - "Stone Blast": 1, - "Power Bomb": 7, - "Sand Tornado": 15, - "Spinning Roundhouse": 22, - "Forceful Charge": 30, - "Ground Smash": 40, - "Rock Lance": 50 + "EPalWazaID::StoneShotgun": 1, + "EPalWazaID::PowerBall": 7, + "EPalWazaID::SandTornado": 15, + "EPalWazaID::Unique_Anubis_LowRoundKick": 22, + "EPalWazaID::Unique_Anubis_Tackle": 30, + "EPalWazaID::Unique_Anubis_GroundPunch": 40, + "EPalWazaID::RockLance": 50 }, "Scaling": { "HP": 120, @@ -71,13 +71,13 @@ "Dark" ], "Moveset": { - "Ignis Blast": 1, - "Spirit Fire": 7, - "Flare Arrow": 15, - "Hellfire Claw": 22, - "Shadow Burst": 30, - "Fire Ball": 40, - "Ignis Rage": 50 + "EPalWazaID::FireBlast": 1, + "EPalWazaID::FireSeed": 7, + "EPalWazaID::FlareArrow": 15, + "EPalWazaID::Unique_Baphomet_SwallowKite": 22, + "EPalWazaID::DarkWave": 30, + "EPalWazaID::FireBall": 40, + "EPalWazaID::Inferno": 50 }, "Scaling": { "HP": 95, @@ -92,13 +92,13 @@ "Dark" ], "Moveset": { - "Ignis Blast": 1, - "Spirit Fire": 7, - "Flare Arrow": 15, - "Hellfire Claw": 22, - "Shadow Burst": 30, - "Fire Ball": 40, - "Ignis Rage": 50 + "EPalWazaID::FireBlast": 1, + "EPalWazaID::FireSeed": 7, + "EPalWazaID::FlareArrow": 15, + "EPalWazaID::Unique_Baphomet_SwallowKite": 22, + "EPalWazaID::DarkWave": 30, + "EPalWazaID::FireBall": 40, + "EPalWazaID::Inferno": 50 }, "Scaling": { "HP": 95, @@ -113,13 +113,13 @@ "Dark" ], "Moveset": { - "Sand Blast": 1, - "Dark Ball": 7, - "Shadow Burst": 15, - "Sand Tornado": 22, - "Spirit Flame": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 + "EPalWazaID::MudShot": 1, + "EPalWazaID::DarkBall": 7, + "EPalWazaID::DarkWave": 15, + "EPalWazaID::SandTornado": 22, + "EPalWazaID::GhostFlame": 30, + "EPalWazaID::ShadowBall": 40, + "EPalWazaID::DarkLaser": 50 }, "Scaling": { "HP": 70, @@ -134,13 +134,13 @@ "Ice" ], "Moveset": { - "Ice Missile": 1, - "Air Cannon": 7, - "Sand Blast": 15, - "Icicle Cutter": 22, - "Iceberg": 30, - "Cryst Breath": 40, - "Blizzard Spike": 50 + "EPalWazaID::IceMissile": 1, + "EPalWazaID::AirCanon": 7, + "EPalWazaID::MudShot": 15, + "EPalWazaID::IceBlade": 22, + "EPalWazaID::BlizzardLance": 30, + "EPalWazaID::FrostBreath": 40, + "EPalWazaID::IcicleThrow": 50 }, "Scaling": { "HP": 70, @@ -155,13 +155,13 @@ "Grass" ], "Moveset": { - "Wind Cutter": 1, - "Air Cannon": 7, - "Sand Blast": 15, - "Power Shot": 22, - "Grass Tornado": 30, - "Spine Vine": 40, - "Solar Blast": 50 + "EPalWazaID::WindCutter": 1, + "EPalWazaID::AirCanon": 7, + "EPalWazaID::MudShot": 15, + "EPalWazaID::PowerShot": 22, + "EPalWazaID::GrassTornado": 30, + "EPalWazaID::RootAttack": 40, + "EPalWazaID::SolarBeam": 50 }, "Scaling": { "HP": 100, @@ -177,13 +177,13 @@ "Dark" ], "Moveset": { - "Air Cannon": 1, - "Ignis Blast": 7, - "Spirit Fire": 15, - "Ignis Breath": 22, - "Nightmare Ball": 30, - "Fire Ball": 40, - "Dark Laser": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::FireBlast": 7, + "EPalWazaID::FireSeed": 15, + "EPalWazaID::Flamethrower": 22, + "EPalWazaID::ShadowBall": 30, + "EPalWazaID::FireBall": 40, + "EPalWazaID::DarkLaser": 50 }, "Scaling": { "HP": 90, @@ -199,13 +199,13 @@ "Dark" ], "Moveset": { - "Air Cannon": 1, - "Ice Missile": 7, - "Icicle Cutter": 15, - "Cryst Breath": 22, - "Nightmare Ball": 30, - "Blizzard Spike": 40, - "Dark Laser": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::IceMissile": 7, + "EPalWazaID::IceBlade": 15, + "EPalWazaID::FrostBreath": 22, + "EPalWazaID::ShadowBall": 30, + "EPalWazaID::IcicleThrow": 40, + "EPalWazaID::DarkLaser": 50 }, "Scaling": { "HP": 90, @@ -220,13 +220,13 @@ "Dark" ], "Moveset": { - "Shadow Burst": 1, - "Spirit Fire": 7, - "Spirit Flame": 15, - "Nightmare Ball": 22, - "Rock Lance": 30, - "Twin Spears": 40, - "Dark Laser": 50 + "EPalWazaID::DarkWave": 1, + "EPalWazaID::FireSeed": 7, + "EPalWazaID::GhostFlame": 15, + "EPalWazaID::ShadowBall": 22, + "EPalWazaID::RockLance": 30, + "EPalWazaID::Unique_BlackCentaur_TwoSpearRushes": 40, + "EPalWazaID::DarkLaser": 50 }, "Scaling": { "HP": 130, @@ -242,13 +242,13 @@ "Dark" ], "Moveset": { - "Air Cannon": 1, - "Dark Ball": 7, - "Shadow Burst": 15, - "Spirit Flame": 22, - "Nightmare Ball": 30, - "Divine Disaster": 40, - "Dark Laser": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::DarkBall": 7, + "EPalWazaID::DarkWave": 15, + "EPalWazaID::GhostFlame": 22, + "EPalWazaID::ShadowBall": 30, + "EPalWazaID::Unique_BlackGriffon_TackleLaser": 40, + "EPalWazaID::DarkLaser": 50 }, "Scaling": { "HP": 120, @@ -264,13 +264,13 @@ "Dark" ], "Moveset": { - "Dragon Cannon": 1, - "Spirit Flame": 7, - "Dragon Burst": 15, - "Nightmare Ball": 22, - "Draconic Breath": 30, - "Dark Laser": 40, - "Dragon Meteor": 50 + "EPalWazaID::DragonCanon": 1, + "EPalWazaID::GhostFlame": 7, + "EPalWazaID::DragonWave": 15, + "EPalWazaID::ShadowBall": 22, + "EPalWazaID::DragonBreath": 30, + "EPalWazaID::DarkLaser": 40, + "EPalWazaID::DragonMeteor": 50 }, "Scaling": { "HP": 100, @@ -286,13 +286,13 @@ "Dragon" ], "Moveset": { - "Aqua Gun": 1, - "Dragon Cannon": 7, - "Bubble Blast": 15, - "Dragon Burst": 22, - "Draconic Breath": 30, - "Hydro Laser": 40, - "Dragon Meteor": 50 + "EPalWazaID::WaterGun": 1, + "EPalWazaID::DragonCanon": 7, + "EPalWazaID::BubbleShot": 15, + "EPalWazaID::DragonWave": 22, + "EPalWazaID::DragonBreath": 30, + "EPalWazaID::HydroPump": 40, + "EPalWazaID::DragonMeteor": 50 }, "Scaling": { "HP": 110, @@ -307,13 +307,13 @@ "Water" ], "Moveset": { - "Aqua Gun": 1, - "Power Shot": 7, - "Hydro Jet": 15, - "Ice Missile": 22, - "Bubble Blast": 30, - "Aqua Burst": 40, - "Hydro Laser": 50 + "EPalWazaID::WaterGun": 1, + "EPalWazaID::PowerShot": 7, + "EPalWazaID::AquaJet": 15, + "EPalWazaID::IceMissile": 22, + "EPalWazaID::BubbleShot": 30, + "EPalWazaID::WaterBall": 40, + "EPalWazaID::HydroPump": 50 }, "Scaling": { "HP": 60, @@ -328,13 +328,13 @@ "Ground" ], "Moveset": { - "Reckless Charge": 1, - "Sand Blast": 7, - "Power Shot": 15, - "Stone Blast": 22, - "Power Bomb": 30, - "Rock Lance": 40, - "Pal Blast": 50 + "EPalWazaID::Unique_Boar_Tackle": 1, + "EPalWazaID::MudShot": 7, + "EPalWazaID::PowerShot": 15, + "EPalWazaID::StoneShotgun": 22, + "EPalWazaID::PowerBall": 30, + "EPalWazaID::RockLance": 40, + "EPalWazaID::HyperBeam": 50 }, "Scaling": { "HP": 80, @@ -350,13 +350,13 @@ "Ice" ], "Moveset": { - "Aqua Gun": 1, - "Iceberg": 7, - "Emperor Slide": 15, - "Cryst Breath": 22, - "Aqua Burst": 30, - "Blizzard Spike": 40, - "Hydro Laser": 50 + "EPalWazaID::WaterGun": 1, + "EPalWazaID::BlizzardLance": 7, + "EPalWazaID::Unique_CaptainPenguin_BodySlide": 15, + "EPalWazaID::FrostBreath": 22, + "EPalWazaID::WaterBall": 30, + "EPalWazaID::IcicleThrow": 40, + "EPalWazaID::HydroPump": 50 }, "Scaling": { "HP": 95, @@ -371,13 +371,13 @@ "Grass" ], "Moveset": { - "Wind Cutter": 1, - "Air Cannon": 7, - "Power Shot": 15, - "Seed Machine Gun": 22, - "Power Bomb": 30, - "Spine Vine": 40, - "Solar Blast": 50 + "EPalWazaID::WindCutter": 1, + "EPalWazaID::AirCanon": 7, + "EPalWazaID::PowerShot": 15, + "EPalWazaID::SeedMachinegun": 22, + "EPalWazaID::PowerBall": 30, + "EPalWazaID::RootAttack": 40, + "EPalWazaID::SolarBeam": 50 }, "Scaling": { "HP": 75, @@ -392,13 +392,13 @@ "Dark" ], "Moveset": { - "Air Cannon": 1, - "Poison Blast": 7, - "Dark Ball": 15, - "Shadow Burst": 22, - "Spirit Flame": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::PoisonShot": 7, + "EPalWazaID::DarkBall": 15, + "EPalWazaID::DarkWave": 22, + "EPalWazaID::GhostFlame": 30, + "EPalWazaID::ShadowBall": 40, + "EPalWazaID::DarkLaser": 50 }, "Scaling": { "HP": 95, @@ -413,13 +413,13 @@ "Dark" ], "Moveset": { - "Ignis Blast": 1, - "Dark Ball": 7, - "Flare Arrow": 15, - "Shadow Burst": 22, - "Spirit Flame": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 + "EPalWazaID::FireBlast": 1, + "EPalWazaID::DarkBall": 7, + "EPalWazaID::FlareArrow": 15, + "EPalWazaID::DarkWave": 22, + "EPalWazaID::GhostFlame": 30, + "EPalWazaID::ShadowBall": 40, + "EPalWazaID::DarkLaser": 50 }, "Scaling": { "HP": 90, @@ -434,13 +434,13 @@ "Dark" ], "Moveset": { - "Poison Blast": 1, - "Dark Ball": 7, - "Shadow Burst": 15, - "Spirit Flame": 22, - "Nightmare Ball": 30, - "Ignis Rage": 40, - "Dark Laser": 50 + "EPalWazaID::PoisonShot": 1, + "EPalWazaID::DarkBall": 7, + "EPalWazaID::DarkWave": 15, + "EPalWazaID::GhostFlame": 22, + "EPalWazaID::ShadowBall": 30, + "EPalWazaID::Inferno": 40, + "EPalWazaID::DarkLaser": 50 }, "Scaling": { "HP": 100, @@ -455,13 +455,13 @@ "Neutral" ], "Moveset": { - "Chicken Rush": 1, - "Air Cannon": 7, - "Power Shot": 15, - "Implode": 22, - "Grass Tornado": 30, - "Sand Tornado": 40, - "Flare Storm": 50 + "EPalWazaID::Unique_ChickenPal_ChickenPeck": 1, + "EPalWazaID::AirCanon": 7, + "EPalWazaID::PowerShot": 15, + "EPalWazaID::SelfDestruct": 22, + "EPalWazaID::GrassTornado": 30, + "EPalWazaID::SandTornado": 40, + "EPalWazaID::FlareTornado": 50 }, "Scaling": { "HP": 60, @@ -476,13 +476,13 @@ "Neutral" ], "Moveset": { - "Implode": 1, - "Air Cannon": 7, - "Power Shot": 15, - "Megaton Implode": 22, - "Sand Tornado": 30, - "Power Bomb": 40, - "Pal Blast": 50 + "EPalWazaID::SelfDestruct": 1, + "EPalWazaID::AirCanon": 7, + "EPalWazaID::PowerShot": 15, + "EPalWazaID::SelfExplosion": 22, + "EPalWazaID::SandTornado": 30, + "EPalWazaID::PowerBall": 40, + "EPalWazaID::HyperBeam": 50 }, "Scaling": { "HP": 60, @@ -497,13 +497,13 @@ "Neutral" ], "Moveset": { - "Power Shot": 1, - "Sand Blast": 7, - "Air Cannon": 15, - "Stone Blast": 22, - "Stone Cannon": 30, - "Power Bomb": 40, - "Pal Blast": 50 + "EPalWazaID::PowerShot": 1, + "EPalWazaID::MudShot": 7, + "EPalWazaID::AirCanon": 15, + "EPalWazaID::StoneShotgun": 22, + "EPalWazaID::ThrowRock": 30, + "EPalWazaID::PowerBall": 40, + "EPalWazaID::HyperBeam": 50 }, "Scaling": { "HP": 90, @@ -518,13 +518,13 @@ "Grass" ], "Moveset": { - "Air Cannon": 1, - "Wind Cutter": 7, - "Poison Fog": 15, - "Sand Tornado": 22, - "Seed Mine": 30, - "Grass Tornado": 40, - "Solar Blast": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::WindCutter": 7, + "EPalWazaID::PoisonFog": 15, + "EPalWazaID::SandTornado": 22, + "EPalWazaID::SeedMine": 30, + "EPalWazaID::GrassTornado": 40, + "EPalWazaID::SolarBeam": 50 }, "Scaling": { "HP": 70, @@ -539,13 +539,13 @@ "Neutral" ], "Moveset": { - "Air Cannon": 1, - "Sand Blast": 7, - "Power Shot": 15, - "Wind Cutter": 22, - "Seed Machine Gun": 30, - "Power Bomb": 40, - "Pal Blast": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::MudShot": 7, + "EPalWazaID::PowerShot": 15, + "EPalWazaID::WindCutter": 22, + "EPalWazaID::SeedMachinegun": 30, + "EPalWazaID::PowerBall": 40, + "EPalWazaID::HyperBeam": 50 }, "Scaling": { "HP": 70, @@ -560,13 +560,13 @@ "Ground" ], "Moveset": { - "Sand Blast": 1, - "Power Shot": 7, - "Stone Blast": 15, - "Stone Cannon": 22, - "Power Bomb": 30, - "Sand Tornado": 40, - "Rock Lance": 50 + "EPalWazaID::MudShot": 1, + "EPalWazaID::PowerShot": 7, + "EPalWazaID::StoneShotgun": 15, + "EPalWazaID::ThrowRock": 22, + "EPalWazaID::PowerBall": 30, + "EPalWazaID::SandTornado": 40, + "EPalWazaID::RockLance": 50 }, "Scaling": { "HP": 65, @@ -581,13 +581,13 @@ "Dark" ], "Moveset": { - "Air Cannon": 1, - "Dark Ball": 7, - "Phantom Peck": 15, - "Shadow Burst": 22, - "Spirit Flame": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::DarkBall": 7, + "EPalWazaID::Unique_DarkCrow_TelePoke": 15, + "EPalWazaID::DarkWave": 22, + "EPalWazaID::GhostFlame": 30, + "EPalWazaID::ShadowBall": 40, + "EPalWazaID::DarkLaser": 50 }, "Scaling": { "HP": 75, @@ -603,13 +603,13 @@ "Ground" ], "Moveset": { - "Sand Blast": 1, - "Poison Blast": 7, - "Shadow Burst": 15, - "Stone Cannon": 22, - "Nightmare Ball": 30, - "Rock Lance": 40, - "Dark Laser": 50 + "EPalWazaID::MudShot": 1, + "EPalWazaID::PoisonShot": 7, + "EPalWazaID::DarkWave": 15, + "EPalWazaID::ThrowRock": 22, + "EPalWazaID::ShadowBall": 30, + "EPalWazaID::RockLance": 40, + "EPalWazaID::DarkLaser": 50 }, "Scaling": { "HP": 100, @@ -624,13 +624,13 @@ "Neutral" ], "Moveset": { - "Power Shot": 1, - "Antler Uppercut": 7, - "Stone Blast": 15, - "Stone Cannon": 22, - "Power Bomb": 30, - "Rock Lance": 40, - "Pal Blast": 50 + "EPalWazaID::PowerShot": 1, + "EPalWazaID::Unique_Deer_PushupHorn": 7, + "EPalWazaID::StoneShotgun": 15, + "EPalWazaID::ThrowRock": 22, + "EPalWazaID::PowerBall": 30, + "EPalWazaID::RockLance": 40, + "EPalWazaID::HyperBeam": 50 }, "Scaling": { "HP": 95, @@ -645,13 +645,13 @@ "Ground" ], "Moveset": { - "Power Shot": 1, - "Antler Uppercut": 7, - "Stone Blast": 15, - "Stone Cannon": 22, - "Power Bomb": 30, - "Sand Tornado": 40, - "Rock Lance": 50 + "EPalWazaID::PowerShot": 1, + "EPalWazaID::Unique_Deer_PushupHorn": 7, + "EPalWazaID::StoneShotgun": 15, + "EPalWazaID::ThrowRock": 22, + "EPalWazaID::PowerBall": 30, + "EPalWazaID::SandTornado": 40, + "EPalWazaID::RockLance": 50 }, "Scaling": { "HP": 95, @@ -666,13 +666,13 @@ "Dark" ], "Moveset": { - "Dark Ball": 1, - "Poison Blast": 7, - "Shadow Burst": 15, - "Cryst Breath": 22, - "Spirit Flame": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 + "EPalWazaID::DarkBall": 1, + "EPalWazaID::PoisonShot": 7, + "EPalWazaID::DarkWave": 15, + "EPalWazaID::FrostBreath": 22, + "EPalWazaID::GhostFlame": 30, + "EPalWazaID::ShadowBall": 40, + "EPalWazaID::DarkLaser": 50 }, "Scaling": { "HP": 70, @@ -687,13 +687,13 @@ "Ground" ], "Moveset": { - "Aqua Gun": 1, - "Stone Blast": 7, - "Shell Spin": 15, - "Stone Cannon": 22, - "Sand Tornado": 30, - "Aqua Burst": 40, - "Rock Lance": 50 + "EPalWazaID::WaterGun": 1, + "EPalWazaID::StoneShotgun": 7, + "EPalWazaID::Unique_DrillGame_ShellAttack": 15, + "EPalWazaID::ThrowRock": 22, + "EPalWazaID::SandTornado": 30, + "EPalWazaID::WaterBall": 40, + "EPalWazaID::RockLance": 50 }, "Scaling": { "HP": 80, @@ -708,13 +708,13 @@ "Neutral" ], "Moveset": { - "Gale Claw": 1, - "Air Cannon": 7, - "Sand Blast": 15, - "Wind Cutter": 22, - "Sand Tornado": 30, - "Grass Tornado": 40, - "Pal Blast": 50 + "EPalWazaID::Unique_Eagle_GlidingNail": 1, + "EPalWazaID::AirCanon": 7, + "EPalWazaID::MudShot": 15, + "EPalWazaID::WindCutter": 22, + "EPalWazaID::SandTornado": 30, + "EPalWazaID::GrassTornado": 40, + "EPalWazaID::HyperBeam": 50 }, "Scaling": { "HP": 75, @@ -729,13 +729,13 @@ "Electric" ], "Moveset": { - "Spark Blast": 1, - "Sand Blast": 7, - "Shockwave": 15, - "Electric Ball": 22, - "Tri-Lightning": 30, - "Lightning Streak": 40, - "Lightning Bolt": 50 + "EPalWazaID::SpreadPulse": 1, + "EPalWazaID::MudShot": 7, + "EPalWazaID::ElecWave": 15, + "EPalWazaID::ThunderBall": 22, + "EPalWazaID::ThreeThunder": 30, + "EPalWazaID::LineThunder": 40, + "EPalWazaID::Thunderbolt": 50 }, "Scaling": { "HP": 60, @@ -750,13 +750,13 @@ "Electric" ], "Moveset": { - "Spark Blast": 1, - "Shockwave": 7, - "Lightning Claw": 15, - "Lightning Streak": 22, - "Tri-Lightning": 30, - "Lightning Strike": 40, - "Lightning Bolt": 50 + "EPalWazaID::SpreadPulse": 1, + "EPalWazaID::ElecWave": 7, + "EPalWazaID::Unique_ElecPanda_ElecScratch": 15, + "EPalWazaID::LineThunder": 22, + "EPalWazaID::ThreeThunder": 30, + "EPalWazaID::LightningStrike": 40, + "EPalWazaID::Thunderbolt": 50 }, "Scaling": { "HP": 105, @@ -771,13 +771,13 @@ "Dragon" ], "Moveset": { - "Dragon Cannon": 1, - "Dragon Burst": 7, - "Flare Arrow": 15, - "Mystic Whirlwind": 22, - "Draconic Breath": 30, - "Pal Blast": 40, - "Dragon Meteor": 50 + "EPalWazaID::DragonCanon": 1, + "EPalWazaID::DragonWave": 7, + "EPalWazaID::FlareArrow": 15, + "EPalWazaID::Unique_FairyDragon_FairyTornado": 22, + "EPalWazaID::DragonBreath": 30, + "EPalWazaID::HyperBeam": 40, + "EPalWazaID::DragonMeteor": 50 }, "Scaling": { "HP": 110, @@ -793,13 +793,13 @@ "Water" ], "Moveset": { - "Aqua Gun": 1, - "Dragon Cannon": 7, - "Dragon Burst": 15, - "Mystic Whirlwind": 22, - "Acid Rain": 30, - "Hydro Laser": 40, - "Dragon Meteor": 50 + "EPalWazaID::WaterGun": 1, + "EPalWazaID::DragonCanon": 7, + "EPalWazaID::DragonWave": 15, + "EPalWazaID::Unique_FairyDragon_FairyTornado": 22, + "EPalWazaID::AcidRain": 30, + "EPalWazaID::HydroPump": 40, + "EPalWazaID::DragonMeteor": 50 }, "Scaling": { "HP": 115, @@ -814,13 +814,13 @@ "Neutral" ], "Moveset": { - "Air Cannon": 1, - "Aqua Gun": 7, - "Cloud Tempest": 15, - "Acid Rain": 22, - "Aqua Burst": 30, - "Blizzard Spike": 40, - "Pal Blast": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::WaterGun": 7, + "EPalWazaID::Unique_FengyunDeeper_CloudTempest": 15, + "EPalWazaID::AcidRain": 22, + "EPalWazaID::WaterBall": 30, + "EPalWazaID::IcicleThrow": 40, + "EPalWazaID::HyperBeam": 50 }, "Scaling": { "HP": 110, @@ -835,13 +835,13 @@ "Fire" ], "Moveset": { - "Sand Blast": 1, - "Ignis Blast": 7, - "Spirit Fire": 15, - "Flare Arrow": 22, - "Ignis Slam": 30, - "Ignis Rage": 40, - "Fire Ball": 50 + "EPalWazaID::MudShot": 1, + "EPalWazaID::FireBlast": 7, + "EPalWazaID::FireSeed": 15, + "EPalWazaID::FlareArrow": 22, + "EPalWazaID::Unique_FireKirin_Tackle": 30, + "EPalWazaID::Inferno": 40, + "EPalWazaID::FireBall": 50 }, "Scaling": { "HP": 100, @@ -857,13 +857,13 @@ "Dark" ], "Moveset": { - "Ignis Blast": 1, - "Shadow Burst": 7, - "Ignis Breath": 15, - "Spirit Flame": 22, - "Dark Charge": 30, - "Ignis Rage": 40, - "Dark Laser": 50 + "EPalWazaID::FireBlast": 1, + "EPalWazaID::DarkWave": 7, + "EPalWazaID::Flamethrower": 15, + "EPalWazaID::GhostFlame": 22, + "EPalWazaID::Unique_FireKirin_Dark_DarkTossin": 30, + "EPalWazaID::Inferno": 40, + "EPalWazaID::DarkLaser": 50 }, "Scaling": { "HP": 100, @@ -878,13 +878,13 @@ "Fire" ], "Moveset": { - "Ignis Blast": 1, - "Power Shot": 7, - "Spirit Fire": 15, - "Flare Arrow": 22, - "Flare Storm": 30, - "Ignis Rage": 40, - "Fire Ball": 50 + "EPalWazaID::FireBlast": 1, + "EPalWazaID::PowerShot": 7, + "EPalWazaID::FireSeed": 15, + "EPalWazaID::FlareArrow": 22, + "EPalWazaID::FlareTornado": 30, + "EPalWazaID::Inferno": 40, + "EPalWazaID::FireBall": 50 }, "Scaling": { "HP": 75, @@ -899,13 +899,13 @@ "Fire" ], "Moveset": { - "Ignis Blast": 1, - "Blazing Horn": 7, - "Spirit Fire": 15, - "Flare Arrow": 22, - "Ignis Breath": 30, - "Ignis Rage": 40, - "Fire Ball": 50 + "EPalWazaID::FireBlast": 1, + "EPalWazaID::Unique_FlameBuffalo_FlameHorn": 7, + "EPalWazaID::FireSeed": 15, + "EPalWazaID::FlareArrow": 22, + "EPalWazaID::Flamethrower": 30, + "EPalWazaID::Inferno": 40, + "EPalWazaID::FireBall": 50 }, "Scaling": { "HP": 85, @@ -921,13 +921,13 @@ "Dragon" ], "Moveset": { - "Wind Cutter": 1, - "Botanical Smash": 7, - "Dragon Burst": 15, - "Seed Mine": 22, - "Draconic Breath": 30, - "Spine Vine": 40, - "Solar Blast": 50 + "EPalWazaID::WindCutter": 1, + "EPalWazaID::Unique_FlowerDinosaur_Whip": 7, + "EPalWazaID::DragonWave": 15, + "EPalWazaID::SeedMine": 22, + "EPalWazaID::DragonBreath": 30, + "EPalWazaID::RootAttack": 40, + "EPalWazaID::SolarBeam": 50 }, "Scaling": { "HP": 110, @@ -943,13 +943,13 @@ "Dragon" ], "Moveset": { - "Shockwave": 1, - "Plasma Tornado": 7, - "Botanical Smash": 15, - "Draconic Breath": 22, - "Tri-Lightning": 30, - "Lightning Strike": 40, - "Lightning Bolt": 50 + "EPalWazaID::ElecWave": 1, + "EPalWazaID::ThunderFunnel": 7, + "EPalWazaID::Unique_FlowerDinosaur_Whip": 15, + "EPalWazaID::DragonBreath": 22, + "EPalWazaID::ThreeThunder": 30, + "EPalWazaID::LightningStrike": 40, + "EPalWazaID::Thunderbolt": 50 }, "Scaling": { "HP": 110, @@ -964,13 +964,13 @@ "Grass" ], "Moveset": { - "Wind Cutter": 1, - "Aqua Gun": 7, - "Seed Machine Gun": 15, - "Bubble Blast": 22, - "Grass Tornado": 30, - "Spine Vine": 40, - "Solar Blast": 50 + "EPalWazaID::WindCutter": 1, + "EPalWazaID::WaterGun": 7, + "EPalWazaID::SeedMachinegun": 15, + "EPalWazaID::BubbleShot": 22, + "EPalWazaID::GrassTornado": 30, + "EPalWazaID::RootAttack": 40, + "EPalWazaID::SolarBeam": 50 }, "Scaling": { "HP": 100, @@ -985,13 +985,13 @@ "Grass" ], "Moveset": { - "Wind Cutter": 1, - "Air Cannon": 7, - "Hydro Jet": 15, - "Seed Machine Gun": 22, - "Bubble Blast": 30, - "Grass Tornado": 40, - "Solar Blast": 50 + "EPalWazaID::WindCutter": 1, + "EPalWazaID::AirCanon": 7, + "EPalWazaID::AquaJet": 15, + "EPalWazaID::SeedMachinegun": 22, + "EPalWazaID::BubbleShot": 30, + "EPalWazaID::GrassTornado": 40, + "EPalWazaID::SolarBeam": 50 }, "Scaling": { "HP": 75, @@ -1006,13 +1006,13 @@ "Water" ], "Moveset": { - "Hydro Jet": 1, - "Aqua Gun": 7, - "Power Shot": 15, - "Bubble Blast": 22, - "Seed Machine Gun": 30, - "Aqua Burst": 40, - "Hydro Laser": 50 + "EPalWazaID::AquaJet": 1, + "EPalWazaID::WaterGun": 7, + "EPalWazaID::PowerShot": 15, + "EPalWazaID::BubbleShot": 22, + "EPalWazaID::SeedMachinegun": 30, + "EPalWazaID::WaterBall": 40, + "EPalWazaID::HydroPump": 50 }, "Scaling": { "HP": 80, @@ -1027,13 +1027,13 @@ "Fire" ], "Moveset": { - "Ignis Blast": 1, - "Spirit Fire": 7, - "Flare Arrow": 15, - "Spirit Flame": 22, - "Flare Storm": 30, - "Fire Ball": 40, - "Dragon Meteor": 50 + "EPalWazaID::FireBlast": 1, + "EPalWazaID::FireSeed": 7, + "EPalWazaID::FlareArrow": 15, + "EPalWazaID::GhostFlame": 22, + "EPalWazaID::FlareTornado": 30, + "EPalWazaID::FireBall": 40, + "EPalWazaID::DragonMeteor": 50 }, "Scaling": { "HP": 90, @@ -1048,13 +1048,13 @@ "Water" ], "Moveset": { - "Aqua Gun": 1, - "Hydro Jet": 7, - "Sand Blast": 15, - "Bubble Blast": 22, - "Acid Rain": 30, - "Aqua Burst": 40, - "Hydro Laser": 50 + "EPalWazaID::WaterGun": 1, + "EPalWazaID::AquaJet": 7, + "EPalWazaID::MudShot": 15, + "EPalWazaID::BubbleShot": 22, + "EPalWazaID::AcidRain": 30, + "EPalWazaID::WaterBall": 40, + "EPalWazaID::HydroPump": 50 }, "Scaling": { "HP": 70, @@ -1069,13 +1069,13 @@ "Neutral" ], "Moveset": { - "Fierce Fang": 1, - "Sand Blast": 7, - "Air Cannon": 15, - "Power Shot": 22, - "Ignis Blast": 30, - "Power Bomb": 40, - "Pal Blast": 50 + "EPalWazaID::Unique_Garm_Bite": 1, + "EPalWazaID::MudShot": 7, + "EPalWazaID::AirCanon": 15, + "EPalWazaID::PowerShot": 22, + "EPalWazaID::FireBlast": 30, + "EPalWazaID::PowerBall": 40, + "EPalWazaID::HyperBeam": 50 }, "Scaling": { "HP": 80, @@ -1090,13 +1090,13 @@ "Dark" ], "Moveset": { - "Ignis Blast": 1, - "Dark Ball": 7, - "Flare Arrow": 15, - "Shadow Burst": 22, - "Spirit Flame": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 + "EPalWazaID::FireBlast": 1, + "EPalWazaID::DarkBall": 7, + "EPalWazaID::FlareArrow": 15, + "EPalWazaID::DarkWave": 22, + "EPalWazaID::GhostFlame": 30, + "EPalWazaID::ShadowBall": 40, + "EPalWazaID::DarkLaser": 50 }, "Scaling": { "HP": 75, @@ -1111,13 +1111,13 @@ "Neutral" ], "Moveset": { - "Sand Blast": 1, - "Power Shot": 7, - "Ground Pound": 15, - "Stone Blast": 22, - "Seed Machine Gun": 30, - "Power Bomb": 40, - "Pal Blast": 50 + "EPalWazaID::MudShot": 1, + "EPalWazaID::PowerShot": 7, + "EPalWazaID::Unique_Gorilla_GroundPunch": 15, + "EPalWazaID::StoneShotgun": 22, + "EPalWazaID::SeedMachinegun": 30, + "EPalWazaID::PowerBall": 40, + "EPalWazaID::HyperBeam": 50 }, "Scaling": { "HP": 90, @@ -1132,13 +1132,13 @@ "Grass" ], "Moveset": { - "Sand Blast": 1, - "Seed Machine Gun": 7, - "Power Bomb": 15, - "Grass Tornado": 22, - "Earth Impact": 30, - "Spine Vine": 40, - "Solar Blast": 50 + "EPalWazaID::MudShot": 1, + "EPalWazaID::SeedMachinegun": 7, + "EPalWazaID::PowerBall": 15, + "EPalWazaID::GrassTornado": 22, + "EPalWazaID::Unique_Grassmammoth_Earthquake": 30, + "EPalWazaID::RootAttack": 40, + "EPalWazaID::SolarBeam": 50 }, "Scaling": { "HP": 150, @@ -1153,13 +1153,13 @@ "Ice" ], "Moveset": { - "Stone Cannon": 1, - "Icicle Cutter": 7, - "Power Bomb": 15, - "Iceberg": 22, - "Earth Impact": 30, - "Cryst Breath": 40, - "Blizzard Spike": 50 + "EPalWazaID::ThrowRock": 1, + "EPalWazaID::IceBlade": 7, + "EPalWazaID::PowerBall": 15, + "EPalWazaID::BlizzardLance": 22, + "EPalWazaID::Unique_Grassmammoth_Earthquake": 30, + "EPalWazaID::FrostBreath": 40, + "EPalWazaID::IcicleThrow": 50 }, "Scaling": { "HP": 150, @@ -1174,13 +1174,13 @@ "Grass" ], "Moveset": { - "Power Shot": 1, - "Seed Machine Gun": 7, - "Stone Cannon": 15, - "Crushing Punch": 22, - "Seed Mine": 30, - "Spine Vine": 40, - "Solar Blast": 50 + "EPalWazaID::PowerShot": 1, + "EPalWazaID::SeedMachinegun": 7, + "EPalWazaID::ThrowRock": 15, + "EPalWazaID::Unique_GrassPanda_MusclePunch": 22, + "EPalWazaID::SeedMine": 30, + "EPalWazaID::RootAttack": 40, + "EPalWazaID::SolarBeam": 50 }, "Scaling": { "HP": 100, @@ -1195,13 +1195,13 @@ "Electric" ], "Moveset": { - "Spark Blast": 1, - "Shockwave": 7, - "Lightning Streak": 15, - "Blast Punch": 22, - "Tri-Lightning": 30, - "Lightning Strike": 40, - "Lightning Bolt": 50 + "EPalWazaID::SpreadPulse": 1, + "EPalWazaID::ElecWave": 7, + "EPalWazaID::LineThunder": 15, + "EPalWazaID::Unique_GrassPanda_Electric_ElectricPunch": 22, + "EPalWazaID::ThreeThunder": 30, + "EPalWazaID::LightningStrike": 40, + "EPalWazaID::Thunderbolt": 50 }, "Scaling": { "HP": 100, @@ -1216,13 +1216,13 @@ "Grass" ], "Moveset": { - "Wind Cutter": 1, - "Stone Cannon": 7, - "Seed Machine Gun": 15, - "Stone Blast": 22, - "Grass Tornado": 30, - "Spine Vine": 40, - "Solar Blast": 50 + "EPalWazaID::WindCutter": 1, + "EPalWazaID::ThrowRock": 7, + "EPalWazaID::SeedMachinegun": 15, + "EPalWazaID::StoneShotgun": 22, + "EPalWazaID::GrassTornado": 30, + "EPalWazaID::RootAttack": 40, + "EPalWazaID::SolarBeam": 50 }, "Scaling": { "HP": 90, @@ -1237,13 +1237,13 @@ "Dark" ], "Moveset": { - "Spirit Fire": 1, - "Dark Ball": 7, - "Shadow Burst": 15, - "Flare Storm": 22, - "Spirit Flame": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 + "EPalWazaID::FireSeed": 1, + "EPalWazaID::DarkBall": 7, + "EPalWazaID::DarkWave": 15, + "EPalWazaID::FlareTornado": 22, + "EPalWazaID::GhostFlame": 30, + "EPalWazaID::ShadowBall": 40, + "EPalWazaID::DarkLaser": 50 }, "Scaling": { "HP": 100, @@ -1258,13 +1258,13 @@ "Neutral" ], "Moveset": { - "Air Cannon": 1, - "Tornado Attack": 7, - "Wind Cutter": 15, - "Power Bomb": 22, - "Sand Tornado": 30, - "Grass Tornado": 40, - "Pal Blast": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::Unique_HawkBird_Storm": 7, + "EPalWazaID::WindCutter": 15, + "EPalWazaID::PowerBall": 22, + "EPalWazaID::SandTornado": 30, + "EPalWazaID::GrassTornado": 40, + "EPalWazaID::HyperBeam": 50 }, "Scaling": { "HP": 100, @@ -1279,13 +1279,13 @@ "Electric" ], "Moveset": { - "Shockwave": 1, - "Power Shot": 7, - "Electric Ball": 15, - "Power Bomb": 22, - "Tri-Lightning": 30, - "Lightning Streak": 40, - "Lightning Bolt": 50 + "EPalWazaID::ElecWave": 1, + "EPalWazaID::PowerShot": 7, + "EPalWazaID::ThunderBall": 15, + "EPalWazaID::PowerBall": 22, + "EPalWazaID::ThreeThunder": 30, + "EPalWazaID::LineThunder": 40, + "EPalWazaID::Thunderbolt": 50 }, "Scaling": { "HP": 70, @@ -1300,13 +1300,13 @@ "Ice" ], "Moveset": { - "Ice Missile": 1, - "Power Shot": 7, - "Iceberg": 15, - "Power Bomb": 22, - "Icicle Cutter": 30, - "Cryst Breath": 40, - "Blizzard Spike": 50 + "EPalWazaID::IceMissile": 1, + "EPalWazaID::PowerShot": 7, + "EPalWazaID::BlizzardLance": 15, + "EPalWazaID::PowerBall": 22, + "EPalWazaID::IceBlade": 30, + "EPalWazaID::FrostBreath": 40, + "EPalWazaID::IcicleThrow": 50 }, "Scaling": { "HP": 70, @@ -1322,13 +1322,13 @@ "Grass" ], "Moveset": { - "Wind Cutter": 1, - "Seed Machine Gun": 7, - "Stone Blast": 15, - "Stone Cannon": 22, - "Giga Horn": 30, - "Rock Lance": 40, - "Solar Blast": 50 + "EPalWazaID::WindCutter": 1, + "EPalWazaID::SeedMachinegun": 7, + "EPalWazaID::StoneShotgun": 15, + "EPalWazaID::ThrowRock": 22, + "EPalWazaID::Unique_HerculesBeetle_BeetleTackle": 30, + "EPalWazaID::RockLance": 40, + "EPalWazaID::SolarBeam": 50 }, "Scaling": { "HP": 120, @@ -1343,13 +1343,13 @@ "Fire" ], "Moveset": { - "Ignis Blast": 1, - "Flare Arrow": 7, - "Spirit Fire": 15, - "Ignis Breath": 22, - "Phoenix Flare": 30, - "Ignis Rage": 40, - "Fire Ball": 50 + "EPalWazaID::FireBlast": 1, + "EPalWazaID::FlareArrow": 7, + "EPalWazaID::FireSeed": 15, + "EPalWazaID::Flamethrower": 22, + "EPalWazaID::Unique_Horus_FlareBird": 30, + "EPalWazaID::Inferno": 40, + "EPalWazaID::FireBall": 50 }, "Scaling": { "HP": 100, @@ -1364,13 +1364,13 @@ "Ice" ], "Moveset": { - "Air Cannon": 1, - "Ice Missile": 7, - "Icicle Cutter": 15, - "Freezing Charge": 22, - "Iceberg": 30, - "Cryst Breath": 40, - "Blizzard Spike": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::IceMissile": 7, + "EPalWazaID::IceBlade": 15, + "EPalWazaID::Unique_IceDeer_IceHorn": 22, + "EPalWazaID::BlizzardLance": 30, + "EPalWazaID::FrostBreath": 40, + "EPalWazaID::IcicleThrow": 50 }, "Scaling": { "HP": 100, @@ -1385,13 +1385,13 @@ "Ice" ], "Moveset": { - "Air Cannon": 1, - "Ice Missile": 7, - "Icicle Cutter": 15, - "Spirit Flame": 22, - "Iceberg": 30, - "Cryst Breath": 40, - "Blizzard Spike": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::IceMissile": 7, + "EPalWazaID::IceBlade": 15, + "EPalWazaID::GhostFlame": 22, + "EPalWazaID::BlizzardLance": 30, + "EPalWazaID::FrostBreath": 40, + "EPalWazaID::IcicleThrow": 50 }, "Scaling": { "HP": 90, @@ -1406,13 +1406,13 @@ "Ice" ], "Moveset": { - "Air Cannon": 1, - "Ice Missile": 7, - "Icicle Cutter": 15, - "Iceberg": 22, - "Crystal Wing": 30, - "Cryst Breath": 40, - "Blizzard Spike": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::IceMissile": 7, + "EPalWazaID::IceBlade": 15, + "EPalWazaID::BlizzardLance": 22, + "EPalWazaID::Unique_IceHorse_IceBladeAttack": 30, + "EPalWazaID::FrostBreath": 40, + "EPalWazaID::IcicleThrow": 50 }, "Scaling": { "HP": 140, @@ -1427,13 +1427,13 @@ "Dark" ], "Moveset": { - "Air Cannon": 1, - "Dark Ball": 7, - "Shadow Burst": 15, - "Spirit Flame": 22, - "Crystal Wing": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::DarkBall": 7, + "EPalWazaID::DarkWave": 15, + "EPalWazaID::GhostFlame": 22, + "EPalWazaID::Unique_IceHorse_IceBladeAttack": 30, + "EPalWazaID::ShadowBall": 40, + "EPalWazaID::DarkLaser": 50 }, "Scaling": { "HP": 140, @@ -1448,13 +1448,13 @@ "Dragon" ], "Moveset": { - "Spirit Fire": 1, - "Dragon Burst": 7, - "Flare Storm": 15, - "Draconic Breath": 22, - "Beam Comet": 30, - "Fire Ball": 40, - "Dragon Meteor": 50 + "EPalWazaID::FireSeed": 1, + "EPalWazaID::DragonWave": 7, + "EPalWazaID::FlareTornado": 15, + "EPalWazaID::DragonBreath": 22, + "EPalWazaID::Unique_JetDragon_JumpBeam": 30, + "EPalWazaID::FireBall": 40, + "EPalWazaID::DragonMeteor": 50 }, "Scaling": { "HP": 110, @@ -1470,13 +1470,13 @@ "Water" ], "Moveset": { - "Hydro Jet": 1, - "Dragon Cannon": 7, - "Aqua Gun": 15, - "Bubble Blast": 22, - "Power Bomb": 30, - "Aqua Burst": 40, - "Hydro Laser": 50 + "EPalWazaID::AquaJet": 1, + "EPalWazaID::DragonCanon": 7, + "EPalWazaID::WaterGun": 15, + "EPalWazaID::BubbleShot": 22, + "EPalWazaID::PowerBall": 30, + "EPalWazaID::WaterBall": 40, + "EPalWazaID::HydroPump": 50 }, "Scaling": { "HP": 70, @@ -1491,13 +1491,13 @@ "Fire" ], "Moveset": { - "Ignis Blast": 1, - "Dragon Cannon": 7, - "Spirit Fire": 15, - "Flare Arrow": 22, - "Dragon Burst": 30, - "Ignis Breath": 40, - "Fire Ball": 50 + "EPalWazaID::FireBlast": 1, + "EPalWazaID::DragonCanon": 7, + "EPalWazaID::FireSeed": 15, + "EPalWazaID::FlareArrow": 22, + "EPalWazaID::DragonWave": 30, + "EPalWazaID::Flamethrower": 40, + "EPalWazaID::FireBall": 50 }, "Scaling": { "HP": 70, @@ -1512,13 +1512,13 @@ "Neutral" ], "Moveset": { - "Sand Blast": 1, - "Power Shot": 7, - "Power Bomb": 15, - "Kingly Slam": 22, - "Tri-Lightning": 30, - "Rock Lance": 40, - "Pal Blast": 50 + "EPalWazaID::MudShot": 1, + "EPalWazaID::PowerShot": 7, + "EPalWazaID::PowerBall": 15, + "EPalWazaID::Unique_KingAlpaca_BodyPress": 22, + "EPalWazaID::ThreeThunder": 30, + "EPalWazaID::RockLance": 40, + "EPalWazaID::HyperBeam": 50 }, "Scaling": { "HP": 120, @@ -1533,13 +1533,13 @@ "Ice" ], "Moveset": { - "Ice Missile": 1, - "Icicle Cutter": 7, - "Iceberg": 15, - "Kingly Slam": 22, - "Cryst Breath": 30, - "Aqua Burst": 40, - "Blizzard Spike": 50 + "EPalWazaID::IceMissile": 1, + "EPalWazaID::IceBlade": 7, + "EPalWazaID::BlizzardLance": 15, + "EPalWazaID::Unique_KingAlpaca_BodyPress": 22, + "EPalWazaID::FrostBreath": 30, + "EPalWazaID::WaterBall": 40, + "EPalWazaID::IcicleThrow": 50 }, "Scaling": { "HP": 120, @@ -1554,13 +1554,13 @@ "Fire" ], "Moveset": { - "Power Shot": 1, - "Ignis Blast": 7, - "Stone Blast": 15, - "Ignis Breath": 22, - "Ignis Rage": 30, - "Fire Ball": 40, - "Rock Lance": 50 + "EPalWazaID::PowerShot": 1, + "EPalWazaID::FireBlast": 7, + "EPalWazaID::StoneShotgun": 15, + "EPalWazaID::Flamethrower": 22, + "EPalWazaID::Inferno": 30, + "EPalWazaID::FireBall": 40, + "EPalWazaID::RockLance": 50 }, "Scaling": { "HP": 100, @@ -1575,13 +1575,13 @@ "Electric" ], "Moveset": { - "Spark Blast": 1, - "Shockwave": 7, - "Lock-on Laser": 15, - "Lightning Streak": 22, - "Tri-Lightning": 30, - "Lightning Strike": 40, - "Lightning Bolt": 50 + "EPalWazaID::SpreadPulse": 1, + "EPalWazaID::ElecWave": 7, + "EPalWazaID::LockonLaser": 15, + "EPalWazaID::LineThunder": 22, + "EPalWazaID::ThreeThunder": 30, + "EPalWazaID::LightningStrike": 40, + "EPalWazaID::Thunderbolt": 50 }, "Scaling": { "HP": 80, @@ -1596,13 +1596,13 @@ "Fire" ], "Moveset": { - "Ignis Blast": 1, - "Sand Blast": 7, - "Spirit Fire": 15, - "Flare Arrow": 22, - "Ignis Breath": 30, - "Spirit Flame": 40, - "Fire Ball": 50 + "EPalWazaID::FireBlast": 1, + "EPalWazaID::MudShot": 7, + "EPalWazaID::FireSeed": 15, + "EPalWazaID::FlareArrow": 22, + "EPalWazaID::Flamethrower": 30, + "EPalWazaID::GhostFlame": 40, + "EPalWazaID::FireBall": 50 }, "Scaling": { "HP": 65, @@ -1617,13 +1617,13 @@ "Fire" ], "Moveset": { - "Ignis Blast": 1, - "Spirit Fire": 7, - "Flare Arrow": 15, - "Spirit Flame": 22, - "Flare Storm": 30, - "Ignis Rage": 40, - "Fire Ball": 50 + "EPalWazaID::FireBlast": 1, + "EPalWazaID::FireSeed": 7, + "EPalWazaID::FlareArrow": 15, + "EPalWazaID::GhostFlame": 22, + "EPalWazaID::FlareTornado": 30, + "EPalWazaID::Inferno": 40, + "EPalWazaID::FireBall": 50 }, "Scaling": { "HP": 60, @@ -1652,13 +1652,13 @@ "Water" ], "Moveset": { - "Dragon Cannon": 1, - "Aqua Gun": 7, - "Dragon Burst": 15, - "Bubble Blast": 22, - "Draconic Breath": 30, - "Aqua Burst": 40, - "Dragon Meteor": 50 + "EPalWazaID::DragonCanon": 1, + "EPalWazaID::WaterGun": 7, + "EPalWazaID::DragonWave": 15, + "EPalWazaID::BubbleShot": 22, + "EPalWazaID::DragonBreath": 30, + "EPalWazaID::WaterBall": 40, + "EPalWazaID::DragonMeteor": 50 }, "Scaling": { "HP": 110, @@ -1674,13 +1674,13 @@ "Electric" ], "Moveset": { - "Spark Blast": 1, - "Dragon Cannon": 7, - "Shockwave": 15, - "Lightning Streak": 22, - "Draconic Breath": 30, - "Lightning Strike": 40, - "Lightning Bolt": 50 + "EPalWazaID::SpreadPulse": 1, + "EPalWazaID::DragonCanon": 7, + "EPalWazaID::ElecWave": 15, + "EPalWazaID::LineThunder": 22, + "EPalWazaID::DragonBreath": 30, + "EPalWazaID::LightningStrike": 40, + "EPalWazaID::Thunderbolt": 50 }, "Scaling": { "HP": 110, @@ -1695,13 +1695,13 @@ "Grass" ], "Moveset": { - "Wind Cutter": 1, - "Seed Machine Gun": 7, - "Seed Mine": 15, - "Aqua Burst": 22, - "Grass Tornado": 30, - "Spine Vine": 40, - "Solar Blast": 50 + "EPalWazaID::WindCutter": 1, + "EPalWazaID::SeedMachinegun": 7, + "EPalWazaID::SeedMine": 15, + "EPalWazaID::WaterBall": 22, + "EPalWazaID::GrassTornado": 30, + "EPalWazaID::RootAttack": 40, + "EPalWazaID::SolarBeam": 50 }, "Scaling": { "HP": 110, @@ -1716,13 +1716,13 @@ "Dark" ], "Moveset": { - "Dark Ball": 1, - "Icicle Cutter": 7, - "Shadow Burst": 15, - "Cryst Breath": 22, - "Nightmare Ball": 30, - "Blizzard Spike": 40, - "Dark Laser": 50 + "EPalWazaID::DarkBall": 1, + "EPalWazaID::IceBlade": 7, + "EPalWazaID::DarkWave": 15, + "EPalWazaID::FrostBreath": 22, + "EPalWazaID::ShadowBall": 30, + "EPalWazaID::IcicleThrow": 40, + "EPalWazaID::DarkLaser": 50 }, "Scaling": { "HP": 110, @@ -1737,13 +1737,13 @@ "Grass" ], "Moveset": { - "Wind Cutter": 1, - "Seed Machine Gun": 7, - "Ice Missile": 15, - "Grass Tornado": 22, - "Iceberg": 30, - "Spine Vine": 40, - "Solar Blast": 50 + "EPalWazaID::WindCutter": 1, + "EPalWazaID::SeedMachinegun": 7, + "EPalWazaID::IceMissile": 15, + "EPalWazaID::GrassTornado": 22, + "EPalWazaID::BlizzardLance": 30, + "EPalWazaID::RootAttack": 40, + "EPalWazaID::SolarBeam": 50 }, "Scaling": { "HP": 80, @@ -1758,13 +1758,13 @@ "Dark" ], "Moveset": { - "Poison Blast": 1, - "Dark Ball": 7, - "Shadow Burst": 15, - "Spirit Flame": 22, - "Nightmare Ball": 30, - "Ignis Breath": 40, - "Dark Laser": 50 + "EPalWazaID::PoisonShot": 1, + "EPalWazaID::DarkBall": 7, + "EPalWazaID::DarkWave": 15, + "EPalWazaID::GhostFlame": 22, + "EPalWazaID::ShadowBall": 30, + "EPalWazaID::Flamethrower": 40, + "EPalWazaID::DarkLaser": 50 }, "Scaling": { "HP": 80, @@ -1779,13 +1779,13 @@ "Fire" ], "Moveset": { - "Ignis Blast": 1, - "Poison Blast": 7, - "Spirit Fire": 15, - "Ignis Breath": 22, - "Flare Storm": 30, - "Ignis Rage": 40, - "Fire Ball": 50 + "EPalWazaID::FireBlast": 1, + "EPalWazaID::PoisonShot": 7, + "EPalWazaID::FireSeed": 15, + "EPalWazaID::Flamethrower": 22, + "EPalWazaID::FlareTornado": 30, + "EPalWazaID::Inferno": 40, + "EPalWazaID::FireBall": 50 }, "Scaling": { "HP": 80, @@ -1800,13 +1800,13 @@ "Fire" ], "Moveset": { - "Ignis Blast": 1, - "Power Shot": 7, - "Flare Arrow": 15, - "Ignis Breath": 22, - "Ignis Rage": 30, - "Fire Ball": 40, - "Pal Blast": 50 + "EPalWazaID::FireBlast": 1, + "EPalWazaID::PowerShot": 7, + "EPalWazaID::FlareArrow": 15, + "EPalWazaID::Flamethrower": 22, + "EPalWazaID::Inferno": 30, + "EPalWazaID::FireBall": 40, + "EPalWazaID::HyperBeam": 50 }, "Scaling": { "HP": 105, @@ -1822,13 +1822,13 @@ "Dark" ], "Moveset": { - "Shadow Burst": 1, - "Flare Arrow": 7, - "Ignis Breath": 15, - "Spirit Flame": 22, - "Ignis Rage": 30, - "Fire Ball": 40, - "Dark Laser": 50 + "EPalWazaID::DarkWave": 1, + "EPalWazaID::FlareArrow": 7, + "EPalWazaID::Flamethrower": 15, + "EPalWazaID::GhostFlame": 22, + "EPalWazaID::Inferno": 30, + "EPalWazaID::FireBall": 40, + "EPalWazaID::DarkLaser": 50 }, "Scaling": { "HP": 105, @@ -1843,13 +1843,13 @@ "Grass" ], "Moveset": { - "Wind Cutter": 1, - "Sand Blast": 7, - "Seed Machine Gun": 15, - "Seed Mine": 22, - "Stone Cannon": 30, - "Grass Tornado": 40, - "Solar Blast": 50 + "EPalWazaID::WindCutter": 1, + "EPalWazaID::MudShot": 7, + "EPalWazaID::SeedMachinegun": 15, + "EPalWazaID::SeedMine": 22, + "EPalWazaID::ThrowRock": 30, + "EPalWazaID::GrassTornado": 40, + "EPalWazaID::SolarBeam": 50 }, "Scaling": { "HP": 80, @@ -1864,13 +1864,13 @@ "Ice" ], "Moveset": { - "Air Cannon": 1, - "Ice Missile": 7, - "Icicle Cutter": 15, - "Power Bomb": 22, - "Iceberg": 30, - "Cryst Breath": 40, - "Blizzard Spike": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::IceMissile": 7, + "EPalWazaID::IceBlade": 15, + "EPalWazaID::PowerBall": 22, + "EPalWazaID::BlizzardLance": 30, + "EPalWazaID::FrostBreath": 40, + "EPalWazaID::IcicleThrow": 50 }, "Scaling": { "HP": 60, @@ -1885,13 +1885,13 @@ "Ice" ], "Moveset": { - "Power Shot": 1, - "Ice Missile": 7, - "Icicle Cutter": 15, - "Iceberg": 22, - "Cryst Breath": 30, - "Pal Blast": 40, - "Blizzard Spike": 50 + "EPalWazaID::PowerShot": 1, + "EPalWazaID::IceMissile": 7, + "EPalWazaID::IceBlade": 15, + "EPalWazaID::BlizzardLance": 22, + "EPalWazaID::FrostBreath": 30, + "EPalWazaID::HyperBeam": 40, + "EPalWazaID::IcicleThrow": 50 }, "Scaling": { "HP": 100, @@ -1906,13 +1906,13 @@ "Neutral" ], "Moveset": { - "Air Cannon": 1, - "Power Shot": 7, - "Icicle Cutter": 15, - "Plasma Tornado": 22, - "Power Bomb": 30, - "Blizzard Spike": 40, - "Pal Blast": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::PowerShot": 7, + "EPalWazaID::IceBlade": 15, + "EPalWazaID::ThunderFunnel": 22, + "EPalWazaID::PowerBall": 30, + "EPalWazaID::IcicleThrow": 40, + "EPalWazaID::HyperBeam": 50 }, "Scaling": { "HP": 90, @@ -1927,13 +1927,13 @@ "Neutral" ], "Moveset": { - "Sand Blast": 1, - "Power Shot": 7, - "Cat Press": 15, - "Stone Blast": 22, - "Stone Cannon": 30, - "Power Bomb": 40, - "Pal Blast": 50 + "EPalWazaID::MudShot": 1, + "EPalWazaID::PowerShot": 7, + "EPalWazaID::Unique_NaughtyCat_CatPress": 15, + "EPalWazaID::StoneShotgun": 22, + "EPalWazaID::ThrowRock": 30, + "EPalWazaID::PowerBall": 40, + "EPalWazaID::HyperBeam": 50 }, "Scaling": { "HP": 110, @@ -1948,13 +1948,13 @@ "Dark" ], "Moveset": { - "Poison Blast": 1, - "Sand Blast": 7, - "Dark Ball": 15, - "Ice Missile": 22, - "Shadow Burst": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 + "EPalWazaID::PoisonShot": 1, + "EPalWazaID::MudShot": 7, + "EPalWazaID::DarkBall": 15, + "EPalWazaID::IceMissile": 22, + "EPalWazaID::DarkWave": 30, + "EPalWazaID::ShadowBall": 40, + "EPalWazaID::DarkLaser": 50 }, "Scaling": { "HP": 70, @@ -1969,13 +1969,13 @@ "Dark" ], "Moveset": { - "Hydro Jet": 1, - "Poison Blast": 7, - "Dark Ball": 15, - "Shadow Burst": 22, - "Acid Rain": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 + "EPalWazaID::AquaJet": 1, + "EPalWazaID::PoisonShot": 7, + "EPalWazaID::DarkBall": 15, + "EPalWazaID::DarkWave": 22, + "EPalWazaID::AcidRain": 30, + "EPalWazaID::ShadowBall": 40, + "EPalWazaID::DarkLaser": 50 }, "Scaling": { "HP": 60, @@ -1990,13 +1990,13 @@ "Dark" ], "Moveset": { - "Air Cannon": 1, - "Dark Ball": 7, - "Shadow Burst": 15, - "Power Bomb": 22, - "Spirit Flame": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::DarkBall": 7, + "EPalWazaID::DarkWave": 15, + "EPalWazaID::PowerBall": 22, + "EPalWazaID::GhostFlame": 30, + "EPalWazaID::ShadowBall": 40, + "EPalWazaID::DarkLaser": 50 }, "Scaling": { "HP": 75, @@ -2012,13 +2012,13 @@ "Ice" ], "Moveset": { - "Ice Missile": 1, - "Hydro Jet": 7, - "Aqua Gun": 15, - "Icicle Cutter": 22, - "Iceberg": 30, - "Blizzard Spike": 40, - "Hydro Laser": 50 + "EPalWazaID::IceMissile": 1, + "EPalWazaID::AquaJet": 7, + "EPalWazaID::WaterGun": 15, + "EPalWazaID::IceBlade": 22, + "EPalWazaID::BlizzardLance": 30, + "EPalWazaID::IcicleThrow": 40, + "EPalWazaID::HydroPump": 50 }, "Scaling": { "HP": 70, @@ -2033,13 +2033,13 @@ "Neutral" ], "Moveset": { - "Punch Flurry": 1, - "Air Cannon": 7, - "Sand Blast": 15, - "Power Shot": 22, - "Wind Cutter": 30, - "Seed Machine Gun": 40, - "Pal Blast": 50 + "EPalWazaID::Unique_PinkCat_CatPunch": 1, + "EPalWazaID::AirCanon": 7, + "EPalWazaID::MudShot": 15, + "EPalWazaID::PowerShot": 22, + "EPalWazaID::WindCutter": 30, + "EPalWazaID::SeedMachinegun": 40, + "EPalWazaID::HyperBeam": 50 }, "Scaling": { "HP": 70, @@ -2054,13 +2054,13 @@ "Neutral" ], "Moveset": { - "Power Shot": 1, - "Poison Blast": 7, - "Shadow Burst": 15, - "Acid Rain": 22, - "Power Bomb": 30, - "Implode": 40, - "Pal Blast": 50 + "EPalWazaID::PowerShot": 1, + "EPalWazaID::PoisonShot": 7, + "EPalWazaID::DarkWave": 15, + "EPalWazaID::AcidRain": 22, + "EPalWazaID::PowerBall": 30, + "EPalWazaID::SelfDestruct": 40, + "EPalWazaID::HyperBeam": 50 }, "Scaling": { "HP": 120, @@ -2075,13 +2075,13 @@ "Neutral" ], "Moveset": { - "Air Cannon": 1, - "Power Shot": 7, - "Ice Missile": 15, - "Blizzard Spike": 22, - "Power Bomb": 30, - "Iceberg": 40, - "Pal Blast": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::PowerShot": 7, + "EPalWazaID::IceMissile": 15, + "EPalWazaID::IcicleThrow": 22, + "EPalWazaID::PowerBall": 30, + "EPalWazaID::BlizzardLance": 40, + "EPalWazaID::HyperBeam": 50 } }, { @@ -2092,13 +2092,13 @@ "Ground" ], "Moveset": { - "Sand Blast": 1, - "Wind Cutter": 7, - "Stone Blast": 15, - "Seed Machine Gun": 22, - "Seed Mine": 30, - "Sand Tornado": 40, - "Solar Blast": 50 + "EPalWazaID::MudShot": 1, + "EPalWazaID::WindCutter": 7, + "EPalWazaID::StoneShotgun": 15, + "EPalWazaID::SeedMachinegun": 22, + "EPalWazaID::SeedMine": 30, + "EPalWazaID::SandTornado": 40, + "EPalWazaID::SolarBeam": 50 }, "Scaling": { "HP": 70, @@ -2114,13 +2114,13 @@ "Ground" ], "Moveset": { - "Sand Blast": 1, - "Wind Cutter": 7, - "Stone Blast": 15, - "Seed Machine Gun": 22, - "Seed Mine": 30, - "Sand Tornado": 40, - "Solar Blast": 50 + "EPalWazaID::MudShot": 1, + "EPalWazaID::WindCutter": 7, + "EPalWazaID::StoneShotgun": 15, + "EPalWazaID::SeedMachinegun": 22, + "EPalWazaID::SeedMine": 30, + "EPalWazaID::SandTornado": 40, + "EPalWazaID::SolarBeam": 50 }, "Scaling": { "HP": 70, @@ -2135,13 +2135,13 @@ "Grass" ], "Moveset": { - "Air Cannon": 1, - "Wind Cutter": 7, - "Poison Blast": 15, - "Spinning Lance": 22, - "Grass Tornado": 30, - "Spine Vine": 40, - "Solar Blast": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::WindCutter": 7, + "EPalWazaID::PoisonShot": 15, + "EPalWazaID::Unique_QueenBee_SpinLance": 22, + "EPalWazaID::GrassTornado": 30, + "EPalWazaID::RootAttack": 40, + "EPalWazaID::SolarBeam": 50 }, "Scaling": { "HP": 90, @@ -2156,13 +2156,13 @@ "Electric" ], "Moveset": { - "Air Cannon": 1, - "Shockwave": 7, - "Acid Rain": 15, - "Lightning Streak": 22, - "Tri-Lightning": 30, - "Lightning Strike": 40, - "Lightning Bolt": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::ElecWave": 7, + "EPalWazaID::AcidRain": 15, + "EPalWazaID::LineThunder": 22, + "EPalWazaID::ThreeThunder": 30, + "EPalWazaID::LightningStrike": 40, + "EPalWazaID::Thunderbolt": 50 }, "Scaling": { "HP": 70, @@ -2177,13 +2177,13 @@ "Fire" ], "Moveset": { - "Air Cannon": 1, - "Spirit Fire": 7, - "Flare Arrow": 15, - "Sand Tornado": 22, - "Flare Storm": 30, - "Ignis Breath": 40, - "Fire Ball": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::FireSeed": 7, + "EPalWazaID::FlareArrow": 15, + "EPalWazaID::SandTornado": 22, + "EPalWazaID::FlareTornado": 30, + "EPalWazaID::Flamethrower": 40, + "EPalWazaID::FireBall": 50 }, "Scaling": { "HP": 95, @@ -2198,13 +2198,13 @@ "Grass" ], "Moveset": { - "Wind Cutter": 1, - "Power Shot": 7, - "Focus Shot": 15, - "Seed Mine": 22, - "Grass Tornado": 30, - "Spine Vine": 40, - "Solar Blast": 50 + "EPalWazaID::WindCutter": 1, + "EPalWazaID::PowerShot": 7, + "EPalWazaID::Unique_RobinHood_BowSnipe": 15, + "EPalWazaID::SeedMine": 22, + "EPalWazaID::GrassTornado": 30, + "EPalWazaID::RootAttack": 40, + "EPalWazaID::SolarBeam": 50 }, "Scaling": { "HP": 90, @@ -2220,13 +2220,13 @@ "Ground" ], "Moveset": { - "Sand Blast": 1, - "Wind Cutter": 7, - "Focus Shot": 15, - "Stone Blast": 22, - "Sand Tornado": 30, - "Solar Blast": 40, - "Rock Lance": 50 + "EPalWazaID::MudShot": 1, + "EPalWazaID::WindCutter": 7, + "EPalWazaID::Unique_RobinHood_BowSnipe": 15, + "EPalWazaID::StoneShotgun": 22, + "EPalWazaID::SandTornado": 30, + "EPalWazaID::SolarBeam": 40, + "EPalWazaID::RockLance": 50 }, "Scaling": { "HP": 90, @@ -2241,13 +2241,13 @@ "Fire" ], "Moveset": { - "Ignis Blast": 1, - "Wind Cutter": 7, - "Icicle Cutter": 15, - "Iaigiri": 22, - "Ignis Breath": 30, - "Lightning Strike": 40, - "Ignis Rage": 50 + "EPalWazaID::FireBlast": 1, + "EPalWazaID::WindCutter": 7, + "EPalWazaID::IceBlade": 15, + "EPalWazaID::Unique_Ronin_Iai": 22, + "EPalWazaID::Flamethrower": 30, + "EPalWazaID::LightningStrike": 40, + "EPalWazaID::Inferno": 50 }, "Scaling": { "HP": 80, @@ -2262,13 +2262,13 @@ "Neutral" ], "Moveset": { - "Power Shot": 1, - "Ice Missile": 7, - "Iceberg": 15, - "Power Bomb": 22, - "Blizzard Spike": 30, - "Spear Thrust": 40, - "Pal Blast": 50 + "EPalWazaID::PowerShot": 1, + "EPalWazaID::IceMissile": 7, + "EPalWazaID::BlizzardLance": 15, + "EPalWazaID::PowerBall": 22, + "EPalWazaID::IcicleThrow": 30, + "EPalWazaID::Unique_SaintCentaur_OneSpearRushes": 40, + "EPalWazaID::HyperBeam": 50 }, "Scaling": { "HP": 130, @@ -2284,13 +2284,13 @@ "Grass" ], "Moveset": { - "Wind Cutter": 1, - "Sand Blast": 7, - "Muscle Slam": 15, - "Seed Mine": 22, - "Grass Tornado": 30, - "Spine Vine": 40, - "Solar Blast": 50 + "EPalWazaID::WindCutter": 1, + "EPalWazaID::MudShot": 7, + "EPalWazaID::Unique_SakuraSaurus_SideTackle": 15, + "EPalWazaID::SeedMine": 22, + "EPalWazaID::GrassTornado": 30, + "EPalWazaID::RootAttack": 40, + "EPalWazaID::SolarBeam": 50 }, "Scaling": { "HP": 120, @@ -2306,13 +2306,13 @@ "Water" ], "Moveset": { - "Aqua Gun": 1, - "Bubble Blast": 7, - "Muscle Slam": 15, - "Seed Mine": 22, - "Spine Vine": 30, - "Aqua Burst": 40, - "Hydro Laser": 50 + "EPalWazaID::WaterGun": 1, + "EPalWazaID::BubbleShot": 7, + "EPalWazaID::Unique_SakuraSaurus_SideTackle": 15, + "EPalWazaID::SeedMine": 22, + "EPalWazaID::RootAttack": 30, + "EPalWazaID::WaterBall": 40, + "EPalWazaID::HydroPump": 50 }, "Scaling": { "HP": 120, @@ -2327,13 +2327,13 @@ "Water" ], "Moveset": { - "Hydro Jet": 1, - "Dragon Cannon": 7, - "Aqua Gun": 15, - "Bubble Blast": 22, - "Dragon Burst": 30, - "Draconic Breath": 40, - "Hydro Laser": 50 + "EPalWazaID::AquaJet": 1, + "EPalWazaID::DragonCanon": 7, + "EPalWazaID::WaterGun": 15, + "EPalWazaID::BubbleShot": 22, + "EPalWazaID::DragonWave": 30, + "EPalWazaID::DragonBreath": 40, + "EPalWazaID::HydroPump": 50 }, "Scaling": { "HP": 90, @@ -2348,13 +2348,13 @@ "Ground" ], "Moveset": { - "Sand Blast": 1, - "Dragon Cannon": 7, - "Stone Blast": 15, - "Stone Cannon": 22, - "Sand Tornado": 30, - "Draconic Breath": 40, - "Rock Lance": 50 + "EPalWazaID::MudShot": 1, + "EPalWazaID::DragonCanon": 7, + "EPalWazaID::StoneShotgun": 15, + "EPalWazaID::ThrowRock": 22, + "EPalWazaID::SandTornado": 30, + "EPalWazaID::DragonBreath": 40, + "EPalWazaID::RockLance": 50 }, "Scaling": { "HP": 90, @@ -2369,13 +2369,13 @@ "Water" ], "Moveset": { - "Hydro Jet": 1, - "Power Shot": 7, - "Aqua Gun": 15, - "Bubble Blast": 22, - "Icicle Cutter": 30, - "Aqua Burst": 40, - "Hydro Laser": 50 + "EPalWazaID::AquaJet": 1, + "EPalWazaID::PowerShot": 7, + "EPalWazaID::WaterGun": 15, + "EPalWazaID::BubbleShot": 22, + "EPalWazaID::IceBlade": 30, + "EPalWazaID::WaterBall": 40, + "EPalWazaID::HydroPump": 50 }, "Scaling": { "HP": 90, @@ -2390,13 +2390,13 @@ "Fire" ], "Moveset": { - "Ignis Blast": 1, - "Power Shot": 7, - "Spirit Fire": 15, - "Flare Arrow": 22, - "Lightning Streak": 30, - "Fire Ball": 40, - "Ignis Rage": 50 + "EPalWazaID::FireBlast": 1, + "EPalWazaID::PowerShot": 7, + "EPalWazaID::FireSeed": 15, + "EPalWazaID::FlareArrow": 22, + "EPalWazaID::LineThunder": 30, + "EPalWazaID::FireBall": 40, + "EPalWazaID::Inferno": 50 }, "Scaling": { "HP": 90, @@ -2411,13 +2411,13 @@ "Neutral" ], "Moveset": { - "Roly Poly": 1, - "Air Cannon": 7, - "Power Shot": 15, - "Implode": 22, - "Electric Ball": 30, - "Power Bomb": 40, - "Pal Blast": 50 + "EPalWazaID::Unique_SheepBall_Roll": 1, + "EPalWazaID::AirCanon": 7, + "EPalWazaID::PowerShot": 15, + "EPalWazaID::SelfDestruct": 22, + "EPalWazaID::ThunderBall": 30, + "EPalWazaID::PowerBall": 40, + "EPalWazaID::HyperBeam": 50 }, "Scaling": { "HP": 70, @@ -2432,13 +2432,13 @@ "Dragon" ], "Moveset": { - "Dragon Cannon": 1, - "Spirit Fire": 7, - "Acid Rain": 15, - "Draconic Breath": 22, - "Grass Tornado": 30, - "Aqua Burst": 40, - "Dragon Meteor": 50 + "EPalWazaID::DragonCanon": 1, + "EPalWazaID::FireSeed": 7, + "EPalWazaID::AcidRain": 15, + "EPalWazaID::DragonBreath": 22, + "EPalWazaID::GrassTornado": 30, + "EPalWazaID::WaterBall": 40, + "EPalWazaID::DragonMeteor": 50 }, "Scaling": { "HP": 105, @@ -2453,13 +2453,13 @@ "Grass" ], "Moveset": { - "Air Cannon": 1, - "Wind Cutter": 7, - "Bee Quiet": 15, - "Poison Blast": 22, - "Acid Rain": 30, - "Grass Tornado": 40, - "Solar Blast": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::WindCutter": 7, + "EPalWazaID::SelfDestruct_Bee": 15, + "EPalWazaID::PoisonShot": 22, + "EPalWazaID::AcidRain": 30, + "EPalWazaID::GrassTornado": 40, + "EPalWazaID::SolarBeam": 50 }, "Scaling": { "HP": 80, @@ -2474,13 +2474,13 @@ "Fire" ], "Moveset": { - "Air Cannon": 1, - "Ignis Blast": 7, - "Spirit Fire": 15, - "Flare Arrow": 22, - "Ignis Breath": 30, - "Flare Storm": 40, - "Fire Ball": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::FireBlast": 7, + "EPalWazaID::FireSeed": 15, + "EPalWazaID::FlareArrow": 22, + "EPalWazaID::Flamethrower": 30, + "EPalWazaID::FlareTornado": 40, + "EPalWazaID::FireBall": 50 }, "Scaling": { "HP": 120, @@ -2495,13 +2495,13 @@ "Water" ], "Moveset": { - "Hydro Jet": 1, - "Ice Missile": 7, - "Aqua Gun": 15, - "Cryst Breath": 22, - "Aqua Burst": 30, - "Blizzard Spike": 40, - "Hydro Laser": 50 + "EPalWazaID::AquaJet": 1, + "EPalWazaID::IceMissile": 7, + "EPalWazaID::WaterGun": 15, + "EPalWazaID::FrostBreath": 22, + "EPalWazaID::WaterBall": 30, + "EPalWazaID::IcicleThrow": 40, + "EPalWazaID::HydroPump": 50 }, "Scaling": { "HP": 125, @@ -2516,13 +2516,13 @@ "Neutral" ], "Moveset": { - "Air Cannon": 1, - "Sand Blast": 7, - "Power Shot": 15, - "Wind Cutter": 22, - "Bubble Blast": 30, - "Power Bomb": 40, - "Pal Blast": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::MudShot": 7, + "EPalWazaID::PowerShot": 15, + "EPalWazaID::WindCutter": 22, + "EPalWazaID::BubbleShot": 30, + "EPalWazaID::PowerBall": 40, + "EPalWazaID::HyperBeam": 50 }, "Scaling": { "HP": 70, @@ -2537,13 +2537,13 @@ "Electric" ], "Moveset": { - "Air Cannon": 1, - "Spark Blast": 7, - "Shockwave": 15, - "Lightning Streak": 22, - "Tri-Lightning": 30, - "Sand Tornado": 40, - "Lightning Bolt": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::SpreadPulse": 7, + "EPalWazaID::ElecWave": 15, + "EPalWazaID::LineThunder": 22, + "EPalWazaID::ThreeThunder": 30, + "EPalWazaID::SandTornado": 40, + "EPalWazaID::Thunderbolt": 50 }, "Scaling": { "HP": 105, @@ -2558,13 +2558,13 @@ "Electric" ], "Moveset": { - "Sand Blast": 1, - "Shockwave": 7, - "Spark Blast": 15, - "Stone Blast": 22, - "Electric Ball": 30, - "Lightning Streak": 40, - "Lightning Bolt": 50 + "EPalWazaID::MudShot": 1, + "EPalWazaID::ElecWave": 7, + "EPalWazaID::SpreadPulse": 15, + "EPalWazaID::StoneShotgun": 22, + "EPalWazaID::ThunderBall": 30, + "EPalWazaID::LineThunder": 40, + "EPalWazaID::Thunderbolt": 50 }, "Scaling": { "HP": 90, @@ -2580,13 +2580,13 @@ "Electric" ], "Moveset": { - "Kerauno": 1, - "Lightning Strike": 7, - "Spark Blast": 15, - "Draconic Breath": 22, - "Lightning Streak": 30, - "Tri-Lightning": 40, - "Lightning Bolt": 50 + "EPalWazaID::Unique_ThunderDragonMan_ThunderSwordAttack": 1, + "EPalWazaID::LightningStrike": 7, + "EPalWazaID::SpreadPulse": 15, + "EPalWazaID::DragonBreath": 22, + "EPalWazaID::LineThunder": 30, + "EPalWazaID::ThreeThunder": 40, + "EPalWazaID::Thunderbolt": 50 }, "Scaling": { "HP": 100, @@ -2602,13 +2602,13 @@ "Water" ], "Moveset": { - "Aqua Gun": 1, - "Dragon Cannon": 7, - "Draconic Breath": 15, - "Aqua Burst": 22, - "Tri-Lightning": 30, - "Hydro Laser": 40, - "Dragon Meteor": 50 + "EPalWazaID::WaterGun": 1, + "EPalWazaID::DragonCanon": 7, + "EPalWazaID::DragonBreath": 15, + "EPalWazaID::WaterBall": 22, + "EPalWazaID::ThreeThunder": 30, + "EPalWazaID::HydroPump": 40, + "EPalWazaID::DragonMeteor": 50 }, "Scaling": { "HP": 130, @@ -2624,13 +2624,13 @@ "Fire" ], "Moveset": { - "Ignis Blast": 1, - "Dragon Cannon": 7, - "Flare Storm": 15, - "Ignis Breath": 22, - "Tri-Lightning": 30, - "Fire Ball": 40, - "Dragon Meteor": 50 + "EPalWazaID::FireBlast": 1, + "EPalWazaID::DragonCanon": 7, + "EPalWazaID::FlareTornado": 15, + "EPalWazaID::Flamethrower": 22, + "EPalWazaID::ThreeThunder": 30, + "EPalWazaID::FireBall": 40, + "EPalWazaID::DragonMeteor": 50 }, "Scaling": { "HP": 130, @@ -2645,13 +2645,13 @@ "Grass" ], "Moveset": { - "Poison Fog": 1, - "Wind Cutter": 7, - "Poison Blast": 15, - "Seed Mine": 22, - "Grass Tornado": 30, - "Nightmare Ball": 40, - "Solar Blast": 50 + "EPalWazaID::PoisonFog": 1, + "EPalWazaID::WindCutter": 7, + "EPalWazaID::PoisonShot": 15, + "EPalWazaID::SeedMine": 22, + "EPalWazaID::GrassTornado": 30, + "EPalWazaID::ShadowBall": 40, + "EPalWazaID::SolarBeam": 50 }, "Scaling": { "HP": 100, @@ -2667,13 +2667,13 @@ "Ground" ], "Moveset": { - "Ignis Blast": 1, - "Stone Blast": 7, - "Stone Cannon": 15, - "Ignis Breath": 22, - "Volcanic Burst": 30, - "Ignis Rage": 40, - "Rock Lance": 50 + "EPalWazaID::FireBlast": 1, + "EPalWazaID::StoneShotgun": 7, + "EPalWazaID::ThrowRock": 15, + "EPalWazaID::Flamethrower": 22, + "EPalWazaID::Unique_VolcanicMonster_MagmaAttack": 30, + "EPalWazaID::Inferno": 40, + "EPalWazaID::RockLance": 50 }, "Scaling": { "HP": 110, @@ -2689,13 +2689,13 @@ "Ground" ], "Moveset": { - "Ice Missile": 1, - "Stone Blast": 7, - "Iceberg": 15, - "Cryst Breath": 22, - "Frost Burst": 30, - "Blizzard Spike": 40, - "Rock Lance": 50 + "EPalWazaID::IceMissile": 1, + "EPalWazaID::StoneShotgun": 7, + "EPalWazaID::BlizzardLance": 15, + "EPalWazaID::FrostBreath": 22, + "EPalWazaID::Unique_VolcanicMonster_Ice_IceAttack": 30, + "EPalWazaID::IcicleThrow": 40, + "EPalWazaID::RockLance": 50 }, "Scaling": { "HP": 110, @@ -2711,13 +2711,13 @@ "Dragon" ], "Moveset": { - "Ice Missile": 1, - "Dragon Cannon": 7, - "Dragon Burst": 15, - "Icicle Cutter": 22, - "Draconic Breath": 30, - "Cryst Breath": 40, - "Dragon Meteor": 50 + "EPalWazaID::IceMissile": 1, + "EPalWazaID::DragonCanon": 7, + "EPalWazaID::DragonWave": 15, + "EPalWazaID::IceBlade": 22, + "EPalWazaID::DragonBreath": 30, + "EPalWazaID::FrostBreath": 40, + "EPalWazaID::DragonMeteor": 50 }, "Scaling": { "HP": 90, @@ -2732,13 +2732,13 @@ "Dark" ], "Moveset": { - "Dark Ball": 1, - "Jumping Claw": 7, - "Shadow Burst": 15, - "Icicle Cutter": 22, - "Spirit Flame": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 + "EPalWazaID::DarkBall": 1, + "EPalWazaID::Unique_Werewolf_Scratch": 7, + "EPalWazaID::DarkWave": 15, + "EPalWazaID::IceBlade": 22, + "EPalWazaID::GhostFlame": 30, + "EPalWazaID::ShadowBall": 40, + "EPalWazaID::DarkLaser": 50 }, "Scaling": { "HP": 80, @@ -2753,13 +2753,13 @@ "Ice" ], "Moveset": { - "Ice Missile": 1, - "Icicle Cutter": 7, - "Iceberg": 15, - "Cryst Breath": 22, - "Spirit Flame": 30, - "Aqua Burst": 40, - "Blizzard Spike": 50 + "EPalWazaID::IceMissile": 1, + "EPalWazaID::IceBlade": 7, + "EPalWazaID::BlizzardLance": 15, + "EPalWazaID::FrostBreath": 22, + "EPalWazaID::GhostFlame": 30, + "EPalWazaID::WaterBall": 40, + "EPalWazaID::IcicleThrow": 50 }, "Scaling": { "HP": 110, @@ -2774,13 +2774,13 @@ "Ice" ], "Moveset": { - "Power Shot": 1, - "Ice Missile": 7, - "Stone Cannon": 15, - "Icicle Cutter": 22, - "Iceberg": 30, - "Cryst Breath": 40, - "Blizzard Spike": 50 + "EPalWazaID::PowerShot": 1, + "EPalWazaID::IceMissile": 7, + "EPalWazaID::ThrowRock": 15, + "EPalWazaID::IceBlade": 22, + "EPalWazaID::BlizzardLance": 30, + "EPalWazaID::FrostBreath": 40, + "EPalWazaID::IcicleThrow": 50 }, "Scaling": { "HP": 100, @@ -2821,13 +2821,13 @@ "Dark" ], "Moveset": { - "Air Cannon": 1, - "Dark Ball": 7, - "Shadow Burst": 15, - "Sand Tornado": 22, - "Spirit Flame": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::DarkBall": 7, + "EPalWazaID::DarkWave": 15, + "EPalWazaID::SandTornado": 22, + "EPalWazaID::GhostFlame": 30, + "EPalWazaID::ShadowBall": 40, + "EPalWazaID::DarkLaser": 50 }, "Scaling": { "HP": 70, @@ -2842,13 +2842,13 @@ "Neutral" ], "Moveset": { - "Air Cannon": 1, - "Sand Blast": 7, - "Spark Blast": 15, - "Power Shot": 22, - "Shockwave": 30, - "Power Bomb": 40, - "Lightning Bolt": 50 + "EPalWazaID::AirCanon": 1, + "EPalWazaID::MudShot": 7, + "EPalWazaID::SpreadPulse": 15, + "EPalWazaID::PowerShot": 22, + "EPalWazaID::ElecWave": 30, + "EPalWazaID::PowerBall": 40, + "EPalWazaID::Thunderbolt": 50 }, "Scaling": { "HP": 70, @@ -2863,13 +2863,13 @@ "Ice" ], "Moveset": { - "Ice Missile": 1, - "Wind Cutter": 7, - "Icicle Cutter": 15, - "Iceberg": 22, - "Cryst Breath": 30, - "Blizzard Spike": 40, - "Solar Blast": 50 + "EPalWazaID::IceMissile": 1, + "EPalWazaID::WindCutter": 7, + "EPalWazaID::IceBlade": 15, + "EPalWazaID::BlizzardLance": 22, + "EPalWazaID::FrostBreath": 30, + "EPalWazaID::IcicleThrow": 40, + "EPalWazaID::SolarBeam": 50 }, "Scaling": { "HP": 140, @@ -2884,13 +2884,13 @@ "Grass" ], "Moveset": { - "Wind Cutter": 1, - "Aqua Gun": 7, - "Seed Mine": 15, - "Grass Tornado": 22, - "Spine Vine": 30, - "Aqua Burst": 40, - "Solar Blast": 50 + "EPalWazaID::WindCutter": 1, + "EPalWazaID::WaterGun": 7, + "EPalWazaID::SeedMine": 15, + "EPalWazaID::GrassTornado": 22, + "EPalWazaID::RootAttack": 30, + "EPalWazaID::WaterBall": 40, + "EPalWazaID::SolarBeam": 50 }, "Scaling": { "HP": 140, @@ -2905,8 +2905,7 @@ "Dark", "Dragon" ], - "Moveset": { - }, + "Moveset": {}, "Scaling": { "HP": 130, "ATK": 130, @@ -2919,8 +2918,7 @@ "Type": [ "Electric" ], - "Moveset": { - }, + "Moveset": {}, "Scaling": { "HP": 100, "ATK": 110, @@ -2934,8 +2932,7 @@ "Dark", "Dragon" ], - "Moveset": { - }, + "Moveset": {}, "Scaling": { "HP": 100, "ATK": 100, diff --git a/resources/data/pals_zh-CN.json b/resources/data/pals_zh-CN.json deleted file mode 100644 index 85070fa..0000000 --- a/resources/data/pals_zh-CN.json +++ /dev/null @@ -1,3145 +0,0 @@ -{ - "values": [ - { - "CodeName": "Alpaca", - "Name": "Melpaca", - "Type": [ - "Neutral" - ], - "Moveset": { - "Air Cannon": 1, - "Fluffy Tackle": 7, - "Sand Blast": 15, - "Power Shot": 22, - "Shockwave": 30, - "Power Bomb": 40, - "Pal Blast": 50 - }, - "Scaling": { - "HP": 90, - "ATK": 75, - "DEF": 90 - } - }, - { - "CodeName": "AmaterasuWolf", - "Name": "Kitsun", - "Type": [ - "Fire" - ], - "Moveset": { - "Ignis Blast": 1, - "Spirit Fire": 7, - "Spirit Flame": 15, - "Daring Flames": 22, - "Flare Storm": 30, - "Ignis Rage": 40, - "Fire Ball": 50 - }, - "Scaling": { - "HP": 100, - "ATK": 115, - "DEF": 100 - } - }, - { - "CodeName": "Anubis", - "Name": "Anubis", - "Type": [ - "Ground" - ], - "Moveset": { - "Stone Blast": 1, - "Power Bomb": 7, - "Sand Tornado": 15, - "Spinning Roundhouse": 22, - "Forceful Charge": 30, - "Ground Smash": 40, - "Rock Lance": 50 - }, - "Scaling": { - "HP": 120, - "ATK": 130, - "DEF": 100 - } - }, - { - "CodeName": "Baphomet", - "Name": "Incineram", - "Type": [ - "Fire", - "Dark" - ], - "Moveset": { - "Ignis Blast": 1, - "Spirit Fire": 7, - "Flare Arrow": 15, - "Hellfire Claw": 22, - "Shadow Burst": 30, - "Fire Ball": 40, - "Ignis Rage": 50 - }, - "Scaling": { - "HP": 95, - "ATK": 100, - "DEF": 85 - } - }, - { - "CodeName": "Baphomet_Dark", - "Name": "Incineram Noct", - "Type": [ - "Dark" - ], - "Moveset": { - "Ignis Blast": 1, - "Spirit Fire": 7, - "Flare Arrow": 15, - "Hellfire Claw": 22, - "Shadow Burst": 30, - "Fire Ball": 40, - "Ignis Rage": 50 - }, - "Scaling": { - "HP": 95, - "ATK": 105, - "DEF": 85 - } - }, - { - "CodeName": "Bastet", - "Name": "Mau", - "Type": [ - "Dark" - ], - "Moveset": { - "Sand Blast": 1, - "Dark Ball": 7, - "Shadow Burst": 15, - "Sand Tornado": 22, - "Spirit Flame": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 - }, - "Scaling": { - "HP": 70, - "ATK": 60, - "DEF": 70 - } - }, - { - "CodeName": "Bastet_Ice", - "Name": "Mau Cryst", - "Type": [ - "Ice" - ], - "Moveset": { - "Ice Missile": 1, - "Air Cannon": 7, - "Sand Blast": 15, - "Icicle Cutter": 22, - "Iceberg": 30, - "Cryst Breath": 40, - "Blizzard Spike": 50 - }, - "Scaling": { - "HP": 70, - "ATK": 65, - "DEF": 70 - } - }, - { - "CodeName": "BerryGoat", - "Name": "Caprity", - "Type": [ - "Grass" - ], - "Moveset": { - "Wind Cutter": 1, - "Air Cannon": 7, - "Sand Blast": 15, - "Power Shot": 22, - "Grass Tornado": 30, - "Spine Vine": 40, - "Solar Blast": 50 - }, - "Scaling": { - "HP": 100, - "ATK": 70, - "DEF": 90 - } - }, - { - "CodeName": "BirdDragon", - "Name": "Vanwyrm", - "Type": [ - "Fire", - "Dark" - ], - "Moveset": { - "Air Cannon": 1, - "Ignis Blast": 7, - "Spirit Fire": 15, - "Ignis Breath": 22, - "Nightmare Ball": 30, - "Fire Ball": 40, - "Dark Laser": 50 - }, - "Scaling": { - "HP": 90, - "ATK": 115, - "DEF": 90 - } - }, - { - "CodeName": "BirdDragon_Ice", - "Name": "Vanwyrm Cryst", - "Type": [ - "Ice", - "Dark" - ], - "Moveset": { - "Air Cannon": 1, - "Ice Missile": 7, - "Icicle Cutter": 15, - "Cryst Breath": 22, - "Nightmare Ball": 30, - "Blizzard Spike": 40, - "Dark Laser": 50 - }, - "Scaling": { - "HP": 90, - "ATK": 120, - "DEF": 95 - } - }, - { - "CodeName": "BlackCentaur", - "Name": "Necromus", - "Type": [ - "Dark" - ], - "Moveset": { - "Shadow Burst": 1, - "Spirit Fire": 7, - "Spirit Flame": 15, - "Nightmare Ball": 22, - "Rock Lance": 30, - "Twin Spears": 40, - "Dark Laser": 50 - }, - "Scaling": { - "HP": 130, - "HP_BOSS": 260, - "ATK": 145, - "DEF": 120 - } - }, - { - "CodeName": "BlackGriffon", - "Name": "Shadowbeak", - "Type": [ - "Dark" - ], - "Moveset": { - "Air Cannon": 1, - "Dark Ball": 7, - "Shadow Burst": 15, - "Spirit Flame": 22, - "Nightmare Ball": 30, - "Divine Disaster": 40, - "Dark Laser": 50 - }, - "Scaling": { - "HP": 120, - "ATK": 120, - "DEF": 140 - } - }, - { - "CodeName": "BlackMetalDragon", - "Name": "Astegon", - "Type": [ - "Dragon", - "Dark" - ], - "Moveset": { - "Dragon Cannon": 1, - "Spirit Flame": 7, - "Dragon Burst": 15, - "Nightmare Ball": 22, - "Draconic Breath": 30, - "Dark Laser": 40, - "Dragon Meteor": 50 - }, - "Scaling": { - "HP": 100, - "ATK": 125, - "DEF": 125 - } - }, - { - "CodeName": "BlueDragon", - "Name": "Azurobe", - "Type": [ - "Water", - "Dragon" - ], - "Moveset": { - "Aqua Gun": 1, - "Dragon Cannon": 7, - "Bubble Blast": 15, - "Dragon Burst": 22, - "Draconic Breath": 30, - "Hydro Laser": 40, - "Dragon Meteor": 50 - }, - "Scaling": { - "HP": 110, - "ATK": 100, - "DEF": 100 - } - }, - { - "CodeName": "BluePlatypus", - "Name": "Fuack", - "Type": [ - "Water" - ], - "Moveset": { - "Aqua Gun": 1, - "Power Shot": 7, - "Hydro Jet": 15, - "Ice Missile": 22, - "Bubble Blast": 30, - "Aqua Burst": 40, - "Hydro Laser": 50 - }, - "Scaling": { - "HP": 60, - "ATK": 80, - "DEF": 60 - } - }, - { - "CodeName": "Boar", - "Name": "Rushoar", - "Type": [ - "Ground" - ], - "Moveset": { - "Reckless Charge": 1, - "Sand Blast": 7, - "Power Shot": 15, - "Stone Blast": 22, - "Power Bomb": 30, - "Rock Lance": 40, - "Pal Blast": 50 - }, - "Scaling": { - "HP": 80, - "ATK": 70, - "DEF": 70 - } - }, - { - "CodeName": "CaptainPenguin", - "Name": "Penking", - "Type": [ - "Water", - "Ice" - ], - "Moveset": { - "Aqua Gun": 1, - "Iceberg": 7, - "Emperor Slide": 15, - "Cryst Breath": 22, - "Aqua Burst": 30, - "Blizzard Spike": 40, - "Hydro Laser": 50 - }, - "Scaling": { - "HP": 95, - "ATK": 95, - "DEF": 95 - } - }, - { - "CodeName": "Carbunclo", - "Name": "Lifmunk", - "Type": [ - "Grass" - ], - "Moveset": { - "Wind Cutter": 1, - "Air Cannon": 7, - "Power Shot": 15, - "Seed Machine Gun": 22, - "Power Bomb": 30, - "Spine Vine": 40, - "Solar Blast": 50 - }, - "Scaling": { - "HP": 75, - "ATK": 70, - "DEF": 70 - } - }, - { - "CodeName": "CatBat", - "Name": "Tombat", - "Type": [ - "Dark" - ], - "Moveset": { - "Air Cannon": 1, - "Poison Blast": 7, - "Dark Ball": 15, - "Shadow Burst": 22, - "Spirit Flame": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 - }, - "Scaling": { - "HP": 95, - "ATK": 95, - "DEF": 80 - } - }, - { - "CodeName": "CatMage", - "Name": "Katress", - "Type": [ - "Dark" - ], - "Moveset": { - "Ignis Blast": 1, - "Dark Ball": 7, - "Flare Arrow": 15, - "Shadow Burst": 22, - "Spirit Flame": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 - }, - "Scaling": { - "HP": 90, - "ATK": 105, - "DEF": 90 - } - }, - { - "CodeName": "CatVampire", - "Name": "Felbat", - "Type": [ - "Dark" - ], - "Moveset": { - "Poison Blast": 1, - "Dark Ball": 7, - "Shadow Burst": 15, - "Spirit Flame": 22, - "Nightmare Ball": 30, - "Ignis Rage": 40, - "Dark Laser": 50 - }, - "Scaling": { - "HP": 100, - "ATK": 105, - "DEF": 110 - } - }, - { - "CodeName": "ChickenPal", - "Name": "Chikipi", - "Type": [ - "Neutral" - ], - "Moveset": { - "Chicken Rush": 1, - "Air Cannon": 7, - "Power Shot": 15, - "Implode": 22, - "Grass Tornado": 30, - "Sand Tornado": 40, - "Flare Storm": 50 - }, - "Scaling": { - "HP": 60, - "ATK": 60, - "DEF": 60 - } - }, - { - "CodeName": "ColorfulBird", - "Name": "Tocotoco", - "Type": [ - "Neutral" - ], - "Moveset": { - "Implode": 1, - "Air Cannon": 7, - "Power Shot": 15, - "Megaton Implode": 22, - "Sand Tornado": 30, - "Power Bomb": 40, - "Pal Blast": 50 - }, - "Scaling": { - "HP": 60, - "ATK": 75, - "DEF": 70 - } - }, - { - "CodeName": "CowPal", - "Name": "Mozzarina", - "Type": [ - "Neutral" - ], - "Moveset": { - "Power Shot": 1, - "Sand Blast": 7, - "Air Cannon": 15, - "Stone Blast": 22, - "Stone Cannon": 30, - "Power Bomb": 40, - "Pal Blast": 50 - }, - "Scaling": { - "HP": 90, - "ATK": 50, - "DEF": 80 - } - }, - { - "CodeName": "CuteButterfly", - "Name": "Cinnamoth", - "Type": [ - "Grass" - ], - "Moveset": { - "Air Cannon": 1, - "Wind Cutter": 7, - "Poison Fog": 15, - "Sand Tornado": 22, - "Seed Mine": 30, - "Grass Tornado": 40, - "Solar Blast": 50 - }, - "Scaling": { - "HP": 70, - "ATK": 80, - "DEF": 80 - } - }, - { - "CodeName": "CuteFox", - "Name": "Vixy", - "Type": [ - "Neutral" - ], - "Moveset": { - "Air Cannon": 1, - "Sand Blast": 7, - "Power Shot": 15, - "Wind Cutter": 22, - "Seed Machine Gun": 30, - "Power Bomb": 40, - "Pal Blast": 50 - }, - "Scaling": { - "HP": 70, - "ATK": 70, - "DEF": 70 - } - }, - { - "CodeName": "CuteMole", - "Name": "Fuddler", - "Type": [ - "Ground" - ], - "Moveset": { - "Sand Blast": 1, - "Power Shot": 7, - "Stone Blast": 15, - "Stone Cannon": 22, - "Power Bomb": 30, - "Sand Tornado": 40, - "Rock Lance": 50 - }, - "Scaling": { - "HP": 65, - "ATK": 80, - "DEF": 50 - } - }, - { - "CodeName": "DarkCrow", - "Name": "Cawgnito", - "Type": [ - "Dark" - ], - "Moveset": { - "Air Cannon": 1, - "Dark Ball": 7, - "Phantom Peck": 15, - "Shadow Burst": 22, - "Spirit Flame": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 - }, - "Scaling": { - "HP": 75, - "ATK": 95, - "DEF": 80 - } - }, - { - "CodeName": "DarkScorpion", - "Name": "Menasting", - "Type": [ - "Dark", - "Ground" - ], - "Moveset": { - "Sand Blast": 1, - "Poison Blast": 7, - "Shadow Burst": 15, - "Stone Cannon": 22, - "Nightmare Ball": 30, - "Rock Lance": 40, - "Dark Laser": 50 - }, - "Scaling": { - "HP": 100, - "ATK": 100, - "DEF": 130 - } - }, - { - "CodeName": "Deer", - "Name": "Eikthyrdeer", - "Type": [ - "Neutral" - ], - "Moveset": { - "Power Shot": 1, - "Antler Uppercut": 7, - "Stone Blast": 15, - "Stone Cannon": 22, - "Power Bomb": 30, - "Rock Lance": 40, - "Pal Blast": 50 - }, - "Scaling": { - "HP": 95, - "ATK": 80, - "DEF": 80 - } - }, - { - "CodeName": "Deer_Ground", - "Name": "Eikthyrdeer Terra", - "Type": [ - "Ground" - ], - "Moveset": { - "Power Shot": 1, - "Antler Uppercut": 7, - "Stone Blast": 15, - "Stone Cannon": 22, - "Power Bomb": 30, - "Sand Tornado": 40, - "Rock Lance": 50 - }, - "Scaling": { - "HP": 95, - "ATK": 80, - "DEF": 80 - } - }, - { - "CodeName": "DreamDemon", - "Name": "Daedream", - "Type": [ - "Dark" - ], - "Moveset": { - "Dark Ball": 1, - "Poison Blast": 7, - "Shadow Burst": 15, - "Cryst Breath": 22, - "Spirit Flame": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 - }, - "Scaling": { - "HP": 70, - "ATK": 75, - "DEF": 60 - } - }, - { - "CodeName": "DrillGame", - "Name": "Digtoise", - "Type": [ - "Ground" - ], - "Moveset": { - "Aqua Gun": 1, - "Stone Blast": 7, - "Shell Spin": 15, - "Stone Cannon": 22, - "Sand Tornado": 30, - "Aqua Burst": 40, - "Rock Lance": 50 - }, - "Scaling": { - "HP": 80, - "ATK": 95, - "DEF": 120 - } - }, - { - "CodeName": "Eagle", - "Name": "Galeclaw", - "Type": [ - "Neutral" - ], - "Moveset": { - "Gale Claw": 1, - "Air Cannon": 7, - "Sand Blast": 15, - "Wind Cutter": 22, - "Sand Tornado": 30, - "Grass Tornado": 40, - "Pal Blast": 50 - }, - "Scaling": { - "HP": 75, - "ATK": 85, - "DEF": 60 - } - }, - { - "CodeName": "ElecCat", - "Name": "Sparkit", - "Type": [ - "Electric" - ], - "Moveset": { - "Spark Blast": 1, - "Sand Blast": 7, - "Shockwave": 15, - "Electric Ball": 22, - "Tri-Lightning": 30, - "Lightning Streak": 40, - "Lightning Bolt": 50 - }, - "Scaling": { - "HP": 60, - "ATK": 75, - "DEF": 70 - } - }, - { - "CodeName": "ElecPanda", - "Name": "Grizzbolt", - "Type": [ - "Electric" - ], - "Moveset": { - "Spark Blast": 1, - "Shockwave": 7, - "Lightning Claw": 15, - "Lightning Streak": 22, - "Tri-Lightning": 30, - "Lightning Strike": 40, - "Lightning Bolt": 50 - }, - "Scaling": { - "HP": 105, - "ATK": 100, - "DEF": 100 - } - }, - { - "CodeName": "FairyDragon", - "Name": "Elphidran", - "Type": [ - "Dragon" - ], - "Moveset": { - "Dragon Cannon": 1, - "Dragon Burst": 7, - "Flare Arrow": 15, - "Mystic Whirlwind": 22, - "Draconic Breath": 30, - "Pal Blast": 40, - "Dragon Meteor": 50 - }, - "Scaling": { - "HP": 110, - "ATK": 80, - "DEF": 90 - } - }, - { - "CodeName": "FairyDragon_Water", - "Name": "Elphidran Aqua", - "Type": [ - "Dragon", - "Water" - ], - "Moveset": { - "Aqua Gun": 1, - "Dragon Cannon": 7, - "Dragon Burst": 15, - "Mystic Whirlwind": 22, - "Acid Rain": 30, - "Hydro Laser": 40, - "Dragon Meteor": 50 - }, - "Scaling": { - "HP": 115, - "ATK": 80, - "DEF": 95 - } - }, - { - "CodeName": "FengyunDeeper", - "Name": "Fenglope", - "Type": [ - "Neutral" - ], - "Moveset": { - "Air Cannon": 1, - "Aqua Gun": 7, - "Cloud Tempest": 15, - "Acid Rain": 22, - "Aqua Burst": 30, - "Blizzard Spike": 40, - "Pal Blast": 50 - }, - "Scaling": { - "HP": 110, - "ATK": 110, - "DEF": 90 - } - }, - { - "CodeName": "FireKirin", - "Name": "Pyrin", - "Type": [ - "Fire" - ], - "Moveset": { - "Sand Blast": 1, - "Ignis Blast": 7, - "Spirit Fire": 15, - "Flare Arrow": 22, - "Ignis Slam": 30, - "Ignis Rage": 40, - "Fire Ball": 50 - }, - "Scaling": { - "HP": 100, - "ATK": 95, - "DEF": 90 - } - }, - { - "CodeName": "FireKirin_Dark", - "Name": "Pyrin Noct", - "Type": [ - "Fire", - "Dark" - ], - "Moveset": { - "Ignis Blast": 1, - "Shadow Burst": 7, - "Ignis Breath": 15, - "Spirit Flame": 22, - "Dark Charge": 30, - "Ignis Rage": 40, - "Dark Laser": 50 - }, - "Scaling": { - "HP": 100, - "ATK": 95, - "DEF": 90 - } - }, - { - "CodeName": "FlameBambi", - "Name": "Rooby", - "Type": [ - "Fire" - ], - "Moveset": { - "Ignis Blast": 1, - "Power Shot": 7, - "Spirit Fire": 15, - "Flare Arrow": 22, - "Flare Storm": 30, - "Ignis Rage": 40, - "Fire Ball": 50 - }, - "Scaling": { - "HP": 75, - "ATK": 70, - "DEF": 75 - } - }, - { - "CodeName": "FlameBuffalo", - "Name": "Arsox", - "Type": [ - "Fire" - ], - "Moveset": { - "Ignis Blast": 1, - "Blazing Horn": 7, - "Spirit Fire": 15, - "Flare Arrow": 22, - "Ignis Breath": 30, - "Ignis Rage": 40, - "Fire Ball": 50 - }, - "Scaling": { - "HP": 85, - "ATK": 95, - "DEF": 95 - } - }, - { - "CodeName": "FlowerDinosaur", - "Name": "Dinossom", - "Type": [ - "Grass", - "Dragon" - ], - "Moveset": { - "Wind Cutter": 1, - "Botanical Smash": 7, - "Dragon Burst": 15, - "Seed Mine": 22, - "Draconic Breath": 30, - "Spine Vine": 40, - "Solar Blast": 50 - }, - "Scaling": { - "HP": 110, - "ATK": 85, - "DEF": 90 - } - }, - { - "CodeName": "FlowerDinosaur_Electric", - "Name": "Dinossom Lux", - "Type": [ - "Electric", - "Dragon" - ], - "Moveset": { - "Shockwave": 1, - "Plasma Tornado": 7, - "Botanical Smash": 15, - "Draconic Breath": 22, - "Tri-Lightning": 30, - "Lightning Strike": 40, - "Lightning Bolt": 50 - }, - "Scaling": { - "HP": 110, - "ATK": 90, - "DEF": 90 - } - }, - { - "CodeName": "FlowerDoll", - "Name": "Petallia", - "Type": [ - "Grass" - ], - "Moveset": { - "Wind Cutter": 1, - "Aqua Gun": 7, - "Seed Machine Gun": 15, - "Bubble Blast": 22, - "Grass Tornado": 30, - "Spine Vine": 40, - "Solar Blast": 50 - }, - "Scaling": { - "HP": 100, - "ATK": 95, - "DEF": 100 - } - }, - { - "CodeName": "FlowerRabbit", - "Name": "Flopie", - "Type": [ - "Grass" - ], - "Moveset": { - "Wind Cutter": 1, - "Air Cannon": 7, - "Hydro Jet": 15, - "Seed Machine Gun": 22, - "Bubble Blast": 30, - "Grass Tornado": 40, - "Solar Blast": 50 - }, - "Scaling": { - "HP": 75, - "ATK": 65, - "DEF": 70 - } - }, - { - "CodeName": "FlyingManta", - "Name": "Celaray", - "Type": [ - "Water" - ], - "Moveset": { - "Hydro Jet": 1, - "Aqua Gun": 7, - "Power Shot": 15, - "Bubble Blast": 22, - "Seed Machine Gun": 30, - "Aqua Burst": 40, - "Hydro Laser": 50 - }, - "Scaling": { - "HP": 80, - "ATK": 70, - "DEF": 80 - } - }, - { - "CodeName": "FoxMage", - "Name": "Wixen", - "Type": [ - "Fire" - ], - "Moveset": { - "Ignis Blast": 1, - "Spirit Fire": 7, - "Flare Arrow": 15, - "Spirit Flame": 22, - "Flare Storm": 30, - "Fire Ball": 40, - "Dragon Meteor": 50 - }, - "Scaling": { - "HP": 90, - "ATK": 110, - "DEF": 80 - } - }, - { - "CodeName": "Ganesha", - "Name": "Teafant", - "Type": [ - "Water" - ], - "Moveset": { - "Aqua Gun": 1, - "Hydro Jet": 7, - "Sand Blast": 15, - "Bubble Blast": 22, - "Acid Rain": 30, - "Aqua Burst": 40, - "Hydro Laser": 50 - }, - "Scaling": { - "HP": 70, - "ATK": 60, - "DEF": 70 - } - }, - { - "CodeName": "Garm", - "Name": "Direhowl", - "Type": [ - "Neutral" - ], - "Moveset": { - "Fierce Fang": 1, - "Sand Blast": 7, - "Air Cannon": 15, - "Power Shot": 22, - "Ignis Blast": 30, - "Power Bomb": 40, - "Pal Blast": 50 - }, - "Scaling": { - "HP": 80, - "ATK": 90, - "DEF": 75 - } - }, - { - "CodeName": "GhostBeast", - "Name": "Maraith", - "Type": [ - "Dark" - ], - "Moveset": { - "Ignis Blast": 1, - "Dark Ball": 7, - "Flare Arrow": 15, - "Shadow Burst": 22, - "Spirit Flame": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 - }, - "Scaling": { - "HP": 75, - "ATK": 105, - "DEF": 80 - } - }, - { - "CodeName": "Gorilla", - "Name": "Gorirat", - "Type": [ - "Neutral" - ], - "Moveset": { - "Sand Blast": 1, - "Power Shot": 7, - "Ground Pound": 15, - "Stone Blast": 22, - "Seed Machine Gun": 30, - "Power Bomb": 40, - "Pal Blast": 50 - }, - "Scaling": { - "HP": 90, - "ATK": 95, - "DEF": 90 - } - }, - { - "CodeName": "GrassMammoth", - "Name": "Mammorest", - "Type": [ - "Grass" - ], - "Moveset": { - "Sand Blast": 1, - "Seed Machine Gun": 7, - "Power Bomb": 15, - "Grass Tornado": 22, - "Earth Impact": 30, - "Spine Vine": 40, - "Solar Blast": 50 - }, - "Scaling": { - "HP": 150, - "ATK": 85, - "DEF": 90 - } - }, - { - "CodeName": "GrassMammoth_Ice", - "Name": "Mammorest Cryst", - "Type": [ - "Ice" - ], - "Moveset": { - "Stone Cannon": 1, - "Icicle Cutter": 7, - "Power Bomb": 15, - "Iceberg": 22, - "Earth Impact": 30, - "Cryst Breath": 40, - "Blizzard Spike": 50 - }, - "Scaling": { - "HP": 150, - "ATK": 85, - "DEF": 90 - } - }, - { - "CodeName": "GrassPanda", - "Name": "Mossanda", - "Type": [ - "Grass" - ], - "Moveset": { - "Power Shot": 1, - "Seed Machine Gun": 7, - "Stone Cannon": 15, - "Crushing Punch": 22, - "Seed Mine": 30, - "Spine Vine": 40, - "Solar Blast": 50 - }, - "Scaling": { - "HP": 100, - "ATK": 90, - "DEF": 90 - } - }, - { - "CodeName": "GrassPanda_Electric", - "Name": "Mossanda Lux", - "Type": [ - "Electric" - ], - "Moveset": { - "Spark Blast": 1, - "Shockwave": 7, - "Lightning Streak": 15, - "Blast Punch": 22, - "Tri-Lightning": 30, - "Lightning Strike": 40, - "Lightning Bolt": 50 - }, - "Scaling": { - "HP": 100, - "ATK": 100, - "DEF": 100 - } - }, - { - "CodeName": "GrassRabbitMan", - "Name": "Verdash", - "Type": [ - "Grass" - ], - "Moveset": { - "Wind Cutter": 1, - "Stone Cannon": 7, - "Seed Machine Gun": 15, - "Stone Blast": 22, - "Grass Tornado": 30, - "Spine Vine": 40, - "Solar Blast": 50 - }, - "Scaling": { - "HP": 90, - "ATK": 115, - "DEF": 90 - } - }, - { - "CodeName": "HadesBird", - "Name": "Helzephyr", - "Type": [ - "Dark" - ], - "Moveset": { - "Spirit Fire": 1, - "Dark Ball": 7, - "Shadow Burst": 15, - "Flare Storm": 22, - "Spirit Flame": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 - }, - "Scaling": { - "HP": 100, - "ATK": 125, - "DEF": 100 - } - }, - { - "CodeName": "HawkBird", - "Name": "Nitewing", - "Type": [ - "Neutral" - ], - "Moveset": { - "Air Cannon": 1, - "Tornado Attack": 7, - "Wind Cutter": 15, - "Power Bomb": 22, - "Sand Tornado": 30, - "Grass Tornado": 40, - "Pal Blast": 50 - }, - "Scaling": { - "HP": 100, - "ATK": 95, - "DEF": 80 - } - }, - { - "CodeName": "Hedgehog", - "Name": "Jolthog", - "Type": [ - "Electric" - ], - "Moveset": { - "Shockwave": 1, - "Power Shot": 7, - "Electric Ball": 15, - "Power Bomb": 22, - "Tri-Lightning": 30, - "Lightning Streak": 40, - "Lightning Bolt": 50 - }, - "Scaling": { - "HP": 70, - "ATK": 75, - "DEF": 70 - } - }, - { - "CodeName": "Hedgehog_Ice", - "Name": "Jolthog Cryst", - "Type": [ - "Ice" - ], - "Moveset": { - "Ice Missile": 1, - "Power Shot": 7, - "Iceberg": 15, - "Power Bomb": 22, - "Icicle Cutter": 30, - "Cryst Breath": 40, - "Blizzard Spike": 50 - }, - "Scaling": { - "HP": 70, - "ATK": 75, - "DEF": 80 - } - }, - { - "CodeName": "HerculesBeetle", - "Name": "Warsect", - "Type": [ - "Ground", - "Grass" - ], - "Moveset": { - "Wind Cutter": 1, - "Seed Machine Gun": 7, - "Stone Blast": 15, - "Stone Cannon": 22, - "Giga Horn": 30, - "Rock Lance": 40, - "Solar Blast": 50 - }, - "Scaling": { - "HP": 120, - "ATK": 100, - "DEF": 120 - } - }, - { - "CodeName": "Horus", - "Name": "Faleris", - "Type": [ - "Fire" - ], - "Moveset": { - "Ignis Blast": 1, - "Flare Arrow": 7, - "Spirit Fire": 15, - "Ignis Breath": 22, - "Phoenix Flare": 30, - "Ignis Rage": 40, - "Fire Ball": 50 - }, - "Scaling": { - "HP": 100, - "ATK": 105, - "DEF": 110 - } - }, - { - "CodeName": "IceDeer", - "Name": "Reindrix", - "Type": [ - "Ice" - ], - "Moveset": { - "Air Cannon": 1, - "Ice Missile": 7, - "Icicle Cutter": 15, - "Freezing Charge": 22, - "Iceberg": 30, - "Cryst Breath": 40, - "Blizzard Spike": 50 - }, - "Scaling": { - "HP": 100, - "ATK": 85, - "DEF": 110 - } - }, - { - "CodeName": "IceFox", - "Name": "Foxcicle", - "Type": [ - "Ice" - ], - "Moveset": { - "Air Cannon": 1, - "Ice Missile": 7, - "Icicle Cutter": 15, - "Spirit Flame": 22, - "Iceberg": 30, - "Cryst Breath": 40, - "Blizzard Spike": 50 - }, - "Scaling": { - "HP": 90, - "ATK": 95, - "DEF": 105 - } - }, - { - "CodeName": "IceHorse", - "Name": "Frostallion", - "Type": [ - "Ice" - ], - "Moveset": { - "Air Cannon": 1, - "Ice Missile": 7, - "Icicle Cutter": 15, - "Iceberg": 22, - "Crystal Wing": 30, - "Cryst Breath": 40, - "Blizzard Spike": 50 - }, - "Scaling": { - "HP": 140, - "ATK": 140, - "DEF": 120 - } - }, - { - "CodeName": "IceHorse_Dark", - "Name": "Frostallion Noct", - "Type": [ - "Dark" - ], - "Moveset": { - "Air Cannon": 1, - "Dark Ball": 7, - "Shadow Burst": 15, - "Spirit Flame": 22, - "Crystal Wing": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 - }, - "Scaling": { - "HP": 140, - "ATK": 140, - "DEF": 135 - } - }, - { - "CodeName": "JetDragon", - "Name": "Jetragon", - "Type": [ - "Dragon" - ], - "Moveset": { - "Spirit Fire": 1, - "Dragon Burst": 7, - "Flare Storm": 15, - "Draconic Breath": 22, - "Beam Comet": 30, - "Fire Ball": 40, - "Dragon Meteor": 50 - }, - "Scaling": { - "HP": 110, - "HP_BOSS": 330, - "ATK": 140, - "DEF": 110 - } - }, - { - "CodeName": "Kelpie", - "Name": "Kelpsea", - "Type": [ - "Water" - ], - "Moveset": { - "Hydro Jet": 1, - "Dragon Cannon": 7, - "Aqua Gun": 15, - "Bubble Blast": 22, - "Power Bomb": 30, - "Aqua Burst": 40, - "Hydro Laser": 50 - }, - "Scaling": { - "HP": 70, - "ATK": 70, - "DEF": 70 - } - }, - { - "CodeName": "Kelpie_Fire", - "Name": "Kelpsea Ignis", - "Type": [ - "Fire" - ], - "Moveset": { - "Ignis Blast": 1, - "Dragon Cannon": 7, - "Spirit Fire": 15, - "Flare Arrow": 22, - "Dragon Burst": 30, - "Ignis Breath": 40, - "Fire Ball": 50 - }, - "Scaling": { - "HP": 70, - "ATK": 70, - "DEF": 70 - } - }, - { - "CodeName": "KingAlpaca", - "Name": "Kingpaca", - "Type": [ - "Neutral" - ], - "Moveset": { - "Sand Blast": 1, - "Power Shot": 7, - "Power Bomb": 15, - "Kingly Slam": 22, - "Tri-Lightning": 30, - "Rock Lance": 40, - "Pal Blast": 50 - }, - "Scaling": { - "HP": 120, - "ATK": 85, - "DEF": 90 - } - }, - { - "CodeName": "KingAlpaca_Ice", - "Name": "Ice Kingpaca", - "Type": [ - "Ice" - ], - "Moveset": { - "Ice Missile": 1, - "Icicle Cutter": 7, - "Iceberg": 15, - "Kingly Slam": 22, - "Cryst Breath": 30, - "Aqua Burst": 40, - "Blizzard Spike": 50 - }, - "Scaling": { - "HP": 120, - "ATK": 85, - "DEF": 90 - } - }, - { - "CodeName": "KingBahamut", - "Name": "Blazamut", - "Type": [ - "Fire" - ], - "Moveset": { - "Power Shot": 1, - "Ignis Blast": 7, - "Stone Blast": 15, - "Ignis Breath": 22, - "Ignis Rage": 30, - "Fire Ball": 40, - "Rock Lance": 50 - }, - "Scaling": { - "HP": 100, - "ATK": 125, - "DEF": 120 - } - }, - { - "CodeName": "Kirin", - "Name": "Univolt", - "Type": [ - "Electric" - ], - "Moveset": { - "Spark Blast": 1, - "Shockwave": 7, - "Lock-on Laser": 15, - "Lightning Streak": 22, - "Tri-Lightning": 30, - "Lightning Strike": 40, - "Lightning Bolt": 50 - }, - "Scaling": { - "HP": 80, - "ATK": 105, - "DEF": 105 - } - }, - { - "CodeName": "Kitsunebi", - "Name": "Foxparks", - "Type": [ - "Fire" - ], - "Moveset": { - "Ignis Blast": 1, - "Sand Blast": 7, - "Spirit Fire": 15, - "Flare Arrow": 22, - "Ignis Breath": 30, - "Spirit Flame": 40, - "Fire Ball": 50 - }, - "Scaling": { - "HP": 65, - "ATK": 75, - "DEF": 70 - } - }, - { - "CodeName": "LavaGirl", - "Name": "Flambelle", - "Type": [ - "Fire" - ], - "Moveset": { - "Ignis Blast": 1, - "Spirit Fire": 7, - "Flare Arrow": 15, - "Spirit Flame": 22, - "Flare Storm": 30, - "Ignis Rage": 40, - "Fire Ball": 50 - }, - "Scaling": { - "HP": 60, - "ATK": 70, - "DEF": 80 - } - }, - { - "CodeName": "LazyCatfish", - "Name": "Dumud", - "Type": [ - "Ground" - ], - "Moveset": {}, - "Scaling": { - "HP": 100, - "ATK": 70, - "DEF": 95 - } - }, - { - "CodeName": "LazyDragon", - "Name": "Relaxaurus", - "Type": [ - "Dragon", - "Water" - ], - "Moveset": { - "Dragon Cannon": 1, - "Aqua Gun": 7, - "Dragon Burst": 15, - "Bubble Blast": 22, - "Draconic Breath": 30, - "Aqua Burst": 40, - "Dragon Meteor": 50 - }, - "Scaling": { - "HP": 110, - "ATK": 100, - "DEF": 70 - } - }, - { - "CodeName": "LazyDragon_Electric", - "Name": "Relaxaurus Lux", - "Type": [ - "Dragon", - "Electric" - ], - "Moveset": { - "Spark Blast": 1, - "Dragon Cannon": 7, - "Shockwave": 15, - "Lightning Streak": 22, - "Draconic Breath": 30, - "Lightning Strike": 40, - "Lightning Bolt": 50 - }, - "Scaling": { - "HP": 110, - "ATK": 110, - "DEF": 75 - } - }, - { - "CodeName": "LilyQueen", - "Name": "Lyleen", - "Type": [ - "Grass" - ], - "Moveset": { - "Wind Cutter": 1, - "Seed Machine Gun": 7, - "Seed Mine": 15, - "Aqua Burst": 22, - "Grass Tornado": 30, - "Spine Vine": 40, - "Solar Blast": 50 - }, - "Scaling": { - "HP": 110, - "ATK": 110, - "DEF": 105 - } - }, - { - "CodeName": "LilyQueen_Dark", - "Name": "Lyleen Noct", - "Type": [ - "Dark" - ], - "Moveset": { - "Dark Ball": 1, - "Icicle Cutter": 7, - "Shadow Burst": 15, - "Cryst Breath": 22, - "Nightmare Ball": 30, - "Blizzard Spike": 40, - "Dark Laser": 50 - }, - "Scaling": { - "HP": 110, - "ATK": 110, - "DEF": 115 - } - }, - { - "CodeName": "LittleBriarRose", - "Name": "Bristla", - "Type": [ - "Grass" - ], - "Moveset": { - "Wind Cutter": 1, - "Seed Machine Gun": 7, - "Ice Missile": 15, - "Grass Tornado": 22, - "Iceberg": 30, - "Spine Vine": 40, - "Solar Blast": 50 - }, - "Scaling": { - "HP": 80, - "ATK": 80, - "DEF": 80 - } - }, - { - "CodeName": "LizardMan", - "Name": "Leezpunk", - "Type": [ - "Dark" - ], - "Moveset": { - "Poison Blast": 1, - "Dark Ball": 7, - "Shadow Burst": 15, - "Spirit Flame": 22, - "Nightmare Ball": 30, - "Ignis Breath": 40, - "Dark Laser": 50 - }, - "Scaling": { - "HP": 80, - "ATK": 80, - "DEF": 50 - } - }, - { - "CodeName": "LizardMan_Fire", - "Name": "Leezpunk Ignis", - "Type": [ - "Fire" - ], - "Moveset": { - "Ignis Blast": 1, - "Poison Blast": 7, - "Spirit Fire": 15, - "Ignis Breath": 22, - "Flare Storm": 30, - "Ignis Rage": 40, - "Fire Ball": 50 - }, - "Scaling": { - "HP": 80, - "ATK": 80, - "DEF": 50 - } - }, - { - "CodeName": "Manticore", - "Name": "Blazehowl", - "Type": [ - "Fire" - ], - "Moveset": { - "Ignis Blast": 1, - "Power Shot": 7, - "Flare Arrow": 15, - "Ignis Breath": 22, - "Ignis Rage": 30, - "Fire Ball": 40, - "Pal Blast": 50 - }, - "Scaling": { - "HP": 105, - "ATK": 110, - "DEF": 80 - } - }, - { - "CodeName": "Manticore_Dark", - "Name": "Blazehowl Noct", - "Type": [ - "Fire", - "Dark" - ], - "Moveset": { - "Shadow Burst": 1, - "Flare Arrow": 7, - "Ignis Breath": 15, - "Spirit Flame": 22, - "Ignis Rage": 30, - "Fire Ball": 40, - "Dark Laser": 50 - }, - "Scaling": { - "HP": 105, - "ATK": 115, - "DEF": 80 - } - }, - { - "CodeName": "Monkey", - "Name": "Tanzee", - "Type": [ - "Grass" - ], - "Moveset": { - "Wind Cutter": 1, - "Sand Blast": 7, - "Seed Machine Gun": 15, - "Seed Mine": 22, - "Stone Cannon": 30, - "Grass Tornado": 40, - "Solar Blast": 50 - }, - "Scaling": { - "HP": 80, - "ATK": 70, - "DEF": 70 - } - }, - { - "CodeName": "MopBaby", - "Name": "Swee", - "Type": [ - "Ice" - ], - "Moveset": { - "Air Cannon": 1, - "Ice Missile": 7, - "Icicle Cutter": 15, - "Power Bomb": 22, - "Iceberg": 30, - "Cryst Breath": 40, - "Blizzard Spike": 50 - }, - "Scaling": { - "HP": 60, - "ATK": 60, - "DEF": 60 - } - }, - { - "CodeName": "MopKing", - "Name": "Sweepa", - "Type": [ - "Ice" - ], - "Moveset": { - "Power Shot": 1, - "Ice Missile": 7, - "Icicle Cutter": 15, - "Iceberg": 22, - "Cryst Breath": 30, - "Pal Blast": 40, - "Blizzard Spike": 50 - }, - "Scaling": { - "HP": 100, - "ATK": 90, - "DEF": 90 - } - }, - { - "CodeName": "Mutant", - "Name": "Lunaris", - "Type": [ - "Neutral" - ], - "Moveset": { - "Air Cannon": 1, - "Power Shot": 7, - "Icicle Cutter": 15, - "Plasma Tornado": 22, - "Power Bomb": 30, - "Blizzard Spike": 40, - "Pal Blast": 50 - }, - "Scaling": { - "HP": 90, - "ATK": 100, - "DEF": 90 - } - }, - { - "CodeName": "NaughtyCat", - "Name": "Grintale", - "Type": [ - "Neutral" - ], - "Moveset": { - "Sand Blast": 1, - "Power Shot": 7, - "Cat Press": 15, - "Stone Blast": 22, - "Stone Cannon": 30, - "Power Bomb": 40, - "Pal Blast": 50 - }, - "Scaling": { - "HP": 110, - "ATK": 80, - "DEF": 80 - } - }, - { - "CodeName": "NegativeKoala", - "Name": "Depresso", - "Type": [ - "Dark" - ], - "Moveset": { - "Poison Blast": 1, - "Sand Blast": 7, - "Dark Ball": 15, - "Ice Missile": 22, - "Shadow Burst": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 - }, - "Scaling": { - "HP": 70, - "ATK": 70, - "DEF": 70 - } - }, - { - "CodeName": "NegativeOctopus", - "Name": "Killamari", - "Type": [ - "Dark" - ], - "Moveset": { - "Hydro Jet": 1, - "Poison Blast": 7, - "Dark Ball": 15, - "Shadow Burst": 22, - "Acid Rain": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 - }, - "Scaling": { - "HP": 60, - "ATK": 60, - "DEF": 70 - } - }, - { - "CodeName": "NightFox", - "Name": "Nox", - "Type": [ - "Dark" - ], - "Moveset": { - "Air Cannon": 1, - "Dark Ball": 7, - "Shadow Burst": 15, - "Power Bomb": 22, - "Spirit Flame": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 - }, - "Scaling": { - "HP": 75, - "ATK": 85, - "DEF": 70 - } - }, - { - "CodeName": "Penguin", - "Name": "Pengullet", - "Type": [ - "Water", - "Ice" - ], - "Moveset": { - "Ice Missile": 1, - "Hydro Jet": 7, - "Aqua Gun": 15, - "Icicle Cutter": 22, - "Iceberg": 30, - "Blizzard Spike": 40, - "Hydro Laser": 50 - }, - "Scaling": { - "HP": 70, - "ATK": 75, - "DEF": 70 - } - }, - { - "CodeName": "PinkCat", - "Name": "Cattiva", - "Type": [ - "Neutral" - ], - "Moveset": { - "Punch Flurry": 1, - "Air Cannon": 7, - "Sand Blast": 15, - "Power Shot": 22, - "Wind Cutter": 30, - "Seed Machine Gun": 40, - "Pal Blast": 50 - }, - "Scaling": { - "HP": 70, - "ATK": 70, - "DEF": 70 - } - }, - { - "CodeName": "PinkLizard", - "Name": "Lovander", - "Type": [ - "Neutral" - ], - "Moveset": { - "Power Shot": 1, - "Poison Blast": 7, - "Shadow Burst": 15, - "Acid Rain": 22, - "Power Bomb": 30, - "Implode": 40, - "Pal Blast": 50 - }, - "Scaling": { - "HP": 120, - "ATK": 70, - "DEF": 70 - } - }, - { - "CodeName": "PinkRabbit", - "Name": "Ribbuny", - "Type": [ - "Neutral" - ], - "Moveset": { - "Air Cannon": 1, - "Power Shot": 7, - "Ice Missile": 15, - "Blizzard Spike": 22, - "Power Bomb": 30, - "Iceberg": 40, - "Pal Blast": 50 - } - }, - { - "CodeName": "PlantSlime", - "Name": "Gumoss", - "Type": [ - "Grass", - "Ground" - ], - "Moveset": { - "Sand Blast": 1, - "Wind Cutter": 7, - "Stone Blast": 15, - "Seed Machine Gun": 22, - "Seed Mine": 30, - "Sand Tornado": 40, - "Solar Blast": 50 - }, - "Scaling": { - "HP": 70, - "ATK": 70, - "DEF": 70 - } - }, - { - "CodeName": "PlantSlime_Flower", - "Name": "Gumoss (Special)", - "Type": [ - "Grass", - "Ground" - ], - "Moveset": { - "Sand Blast": 1, - "Wind Cutter": 7, - "Stone Blast": 15, - "Seed Machine Gun": 22, - "Seed Mine": 30, - "Sand Tornado": 40, - "Solar Blast": 50 - }, - "Scaling": { - "HP": 70, - "ATK": 70, - "DEF": 70 - } - }, - { - "CodeName": "QueenBee", - "Name": "Elizabee", - "Type": [ - "Grass" - ], - "Moveset": { - "Air Cannon": 1, - "Wind Cutter": 7, - "Poison Blast": 15, - "Spinning Lance": 22, - "Grass Tornado": 30, - "Spine Vine": 40, - "Solar Blast": 50 - }, - "Scaling": { - "HP": 90, - "ATK": 105, - "DEF": 100 - } - }, - { - "CodeName": "RaijinDaughter", - "Name": "Dazzi", - "Type": [ - "Electric" - ], - "Moveset": { - "Air Cannon": 1, - "Shockwave": 7, - "Acid Rain": 15, - "Lightning Streak": 22, - "Tri-Lightning": 30, - "Lightning Strike": 40, - "Lightning Bolt": 50 - }, - "Scaling": { - "HP": 70, - "ATK": 80, - "DEF": 70 - } - }, - { - "CodeName": "RedArmorBird", - "Name": "Ragnahawk", - "Type": [ - "Fire" - ], - "Moveset": { - "Air Cannon": 1, - "Spirit Fire": 7, - "Flare Arrow": 15, - "Sand Tornado": 22, - "Flare Storm": 30, - "Ignis Breath": 40, - "Fire Ball": 50 - }, - "Scaling": { - "HP": 95, - "ATK": 105, - "DEF": 120 - } - }, - { - "CodeName": "RobinHood", - "Name": "Robinquill", - "Type": [ - "Grass" - ], - "Moveset": { - "Wind Cutter": 1, - "Power Shot": 7, - "Focus Shot": 15, - "Seed Mine": 22, - "Grass Tornado": 30, - "Spine Vine": 40, - "Solar Blast": 50 - }, - "Scaling": { - "HP": 90, - "ATK": 105, - "DEF": 80 - } - }, - { - "CodeName": "RobinHood_Ground", - "Name": "Robinquill Terra", - "Type": [ - "Grass", - "Ground" - ], - "Moveset": { - "Sand Blast": 1, - "Wind Cutter": 7, - "Focus Shot": 15, - "Stone Blast": 22, - "Sand Tornado": 30, - "Solar Blast": 40, - "Rock Lance": 50 - }, - "Scaling": { - "HP": 90, - "ATK": 105, - "DEF": 80 - } - }, - { - "CodeName": "Ronin", - "Name": "Bushi", - "Type": [ - "Fire" - ], - "Moveset": { - "Ignis Blast": 1, - "Wind Cutter": 7, - "Icicle Cutter": 15, - "Iaigiri": 22, - "Ignis Breath": 30, - "Lightning Strike": 40, - "Ignis Rage": 50 - }, - "Scaling": { - "HP": 80, - "ATK": 125, - "DEF": 80 - } - }, - { - "CodeName": "SaintCentaur", - "Name": "Paladius", - "Type": [ - "Neutral" - ], - "Moveset": { - "Power Shot": 1, - "Ice Missile": 7, - "Iceberg": 15, - "Power Bomb": 22, - "Blizzard Spike": 30, - "Spear Thrust": 40, - "Pal Blast": 50 - }, - "Scaling": { - "HP": 130, - "HP_BOSS": 260, - "ATK": 120, - "DEF": 145 - } - }, - { - "CodeName": "SakuraSaurus", - "Name": "Broncherry", - "Type": [ - "Grass" - ], - "Moveset": { - "Wind Cutter": 1, - "Sand Blast": 7, - "Muscle Slam": 15, - "Seed Mine": 22, - "Grass Tornado": 30, - "Spine Vine": 40, - "Solar Blast": 50 - }, - "Scaling": { - "HP": 120, - "ATK": 90, - "DEF": 100 - } - }, - { - "CodeName": "SakuraSaurus_Water", - "Name": "Broncherry Aqua", - "Type": [ - "Grass", - "Water" - ], - "Moveset": { - "Aqua Gun": 1, - "Bubble Blast": 7, - "Muscle Slam": 15, - "Seed Mine": 22, - "Spine Vine": 30, - "Aqua Burst": 40, - "Hydro Laser": 50 - }, - "Scaling": { - "HP": 120, - "ATK": 95, - "DEF": 100 - } - }, - { - "CodeName": "Serpent", - "Name": "Surfent", - "Type": [ - "Water" - ], - "Moveset": { - "Hydro Jet": 1, - "Dragon Cannon": 7, - "Aqua Gun": 15, - "Bubble Blast": 22, - "Dragon Burst": 30, - "Draconic Breath": 40, - "Hydro Laser": 50 - }, - "Scaling": { - "HP": 90, - "ATK": 90, - "DEF": 80 - } - }, - { - "CodeName": "Serpent_Ground", - "Name": "Surfent Terra", - "Type": [ - "Ground" - ], - "Moveset": { - "Sand Blast": 1, - "Dragon Cannon": 7, - "Stone Blast": 15, - "Stone Cannon": 22, - "Sand Tornado": 30, - "Draconic Breath": 40, - "Rock Lance": 50 - }, - "Scaling": { - "HP": 90, - "ATK": 90, - "DEF": 100 - } - }, - { - "CodeName": "SharkKid", - "Name": "Gobfin", - "Type": [ - "Water" - ], - "Moveset": { - "Hydro Jet": 1, - "Power Shot": 7, - "Aqua Gun": 15, - "Bubble Blast": 22, - "Icicle Cutter": 30, - "Aqua Burst": 40, - "Hydro Laser": 50 - }, - "Scaling": { - "HP": 90, - "ATK": 90, - "DEF": 75 - } - }, - { - "CodeName": "SharkKid_Fire", - "Name": "Gobfin Ignis", - "Type": [ - "Fire" - ], - "Moveset": { - "Ignis Blast": 1, - "Power Shot": 7, - "Spirit Fire": 15, - "Flare Arrow": 22, - "Lightning Streak": 30, - "Fire Ball": 40, - "Ignis Rage": 50 - }, - "Scaling": { - "HP": 90, - "ATK": 90, - "DEF": 75 - } - }, - { - "CodeName": "Sheepball", - "Name": "Lamball", - "Type": [ - "Neutral" - ], - "Moveset": { - "Roly Poly": 1, - "Air Cannon": 7, - "Power Shot": 15, - "Implode": 22, - "Electric Ball": 30, - "Power Bomb": 40, - "Pal Blast": 50 - }, - "Scaling": { - "HP": 70, - "ATK": 70, - "DEF": 70 - } - }, - { - "CodeName": "SkyDragon", - "Name": "Quivern", - "Type": [ - "Dragon" - ], - "Moveset": { - "Dragon Cannon": 1, - "Spirit Fire": 7, - "Acid Rain": 15, - "Draconic Breath": 22, - "Grass Tornado": 30, - "Aqua Burst": 40, - "Dragon Meteor": 50 - }, - "Scaling": { - "HP": 105, - "ATK": 100, - "DEF": 100 - } - }, - { - "CodeName": "SoldierBee", - "Name": "Beegarde", - "Type": [ - "Grass" - ], - "Moveset": { - "Air Cannon": 1, - "Wind Cutter": 7, - "Bee Quiet": 15, - "Poison Blast": 22, - "Acid Rain": 30, - "Grass Tornado": 40, - "Solar Blast": 50 - }, - "Scaling": { - "HP": 80, - "ATK": 90, - "DEF": 90 - } - }, - { - "CodeName": "Suzaku", - "Name": "Suzaku", - "Type": [ - "Fire" - ], - "Moveset": { - "Air Cannon": 1, - "Ignis Blast": 7, - "Spirit Fire": 15, - "Flare Arrow": 22, - "Ignis Breath": 30, - "Flare Storm": 40, - "Fire Ball": 50 - }, - "Scaling": { - "HP": 120, - "ATK": 105, - "DEF": 105 - } - }, - { - "CodeName": "Suzaku_Water", - "Name": "Suzaku Aqua", - "Type": [ - "Water" - ], - "Moveset": { - "Hydro Jet": 1, - "Ice Missile": 7, - "Aqua Gun": 15, - "Cryst Breath": 22, - "Aqua Burst": 30, - "Blizzard Spike": 40, - "Hydro Laser": 50 - }, - "Scaling": { - "HP": 125, - "ATK": 105, - "DEF": 105 - } - }, - { - "CodeName": "SweetsSheep", - "Name": "Woolipop", - "Type": [ - "Neutral" - ], - "Moveset": { - "Air Cannon": 1, - "Sand Blast": 7, - "Power Shot": 15, - "Wind Cutter": 22, - "Bubble Blast": 30, - "Power Bomb": 40, - "Pal Blast": 50 - }, - "Scaling": { - "HP": 70, - "ATK": 70, - "DEF": 90 - } - }, - { - "CodeName": "ThunderBird", - "Name": "Beakon", - "Type": [ - "Electric" - ], - "Moveset": { - "Air Cannon": 1, - "Spark Blast": 7, - "Shockwave": 15, - "Lightning Streak": 22, - "Tri-Lightning": 30, - "Sand Tornado": 40, - "Lightning Bolt": 50 - }, - "Scaling": { - "HP": 105, - "ATK": 115, - "DEF": 80 - } - }, - { - "CodeName": "ThunderDog", - "Name": "Rayhound", - "Type": [ - "Electric" - ], - "Moveset": { - "Sand Blast": 1, - "Shockwave": 7, - "Spark Blast": 15, - "Stone Blast": 22, - "Electric Ball": 30, - "Lightning Streak": 40, - "Lightning Bolt": 50 - }, - "Scaling": { - "HP": 90, - "ATK": 100, - "DEF": 80 - } - }, - { - "CodeName": "ThunderDragonMan", - "Name": "Orserk", - "Type": [ - "Dragon", - "Electric" - ], - "Moveset": { - "Kerauno": 1, - "Lightning Strike": 7, - "Spark Blast": 15, - "Draconic Breath": 22, - "Lightning Streak": 30, - "Tri-Lightning": 40, - "Lightning Bolt": 50 - }, - "Scaling": { - "HP": 100, - "ATK": 130, - "DEF": 100 - } - }, - { - "CodeName": "Umihebi", - "Name": "Jormuntide", - "Type": [ - "Dragon", - "Water" - ], - "Moveset": { - "Aqua Gun": 1, - "Dragon Cannon": 7, - "Draconic Breath": 15, - "Aqua Burst": 22, - "Tri-Lightning": 30, - "Hydro Laser": 40, - "Dragon Meteor": 50 - }, - "Scaling": { - "HP": 130, - "ATK": 120, - "DEF": 100 - } - }, - { - "CodeName": "Umihebi_Fire", - "Name": "Jormuntide Ignis", - "Type": [ - "Dragon", - "Fire" - ], - "Moveset": { - "Ignis Blast": 1, - "Dragon Cannon": 7, - "Flare Storm": 15, - "Ignis Breath": 22, - "Tri-Lightning": 30, - "Fire Ball": 40, - "Dragon Meteor": 50 - }, - "Scaling": { - "HP": 130, - "ATK": 130, - "DEF": 100 - } - }, - { - "CodeName": "VioletFairy", - "Name": "Vaelet", - "Type": [ - "Grass" - ], - "Moveset": { - "Poison Fog": 1, - "Wind Cutter": 7, - "Poison Blast": 15, - "Seed Mine": 22, - "Grass Tornado": 30, - "Nightmare Ball": 40, - "Solar Blast": 50 - }, - "Scaling": { - "HP": 100, - "ATK": 100, - "DEF": 120 - } - }, - { - "CodeName": "VolcanicMonster", - "Name": "Reptyro", - "Type": [ - "Fire", - "Ground" - ], - "Moveset": { - "Ignis Blast": 1, - "Stone Blast": 7, - "Stone Cannon": 15, - "Ignis Breath": 22, - "Volcanic Burst": 30, - "Ignis Rage": 40, - "Rock Lance": 50 - }, - "Scaling": { - "HP": 110, - "ATK": 105, - "DEF": 120 - } - }, - { - "CodeName": "VolcanicMonster_Ice", - "Name": "Ice Reptyro", - "Type": [ - "Ice", - "Ground" - ], - "Moveset": { - "Ice Missile": 1, - "Stone Blast": 7, - "Iceberg": 15, - "Cryst Breath": 22, - "Frost Burst": 30, - "Blizzard Spike": 40, - "Rock Lance": 50 - }, - "Scaling": { - "HP": 110, - "ATK": 105, - "DEF": 130 - } - }, - { - "CodeName": "WeaselDragon", - "Name": "Chillet", - "Type": [ - "Ice", - "Dragon" - ], - "Moveset": { - "Ice Missile": 1, - "Dragon Cannon": 7, - "Dragon Burst": 15, - "Icicle Cutter": 22, - "Draconic Breath": 30, - "Cryst Breath": 40, - "Dragon Meteor": 50 - }, - "Scaling": { - "HP": 90, - "ATK": 80, - "DEF": 80 - } - }, - { - "CodeName": "Werewolf", - "Name": "Loupmoon", - "Type": [ - "Dark" - ], - "Moveset": { - "Dark Ball": 1, - "Jumping Claw": 7, - "Shadow Burst": 15, - "Icicle Cutter": 22, - "Spirit Flame": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 - }, - "Scaling": { - "HP": 80, - "ATK": 100, - "DEF": 80 - } - }, - { - "CodeName": "WhiteMoth", - "Name": "Sibelyx", - "Type": [ - "Ice" - ], - "Moveset": { - "Ice Missile": 1, - "Icicle Cutter": 7, - "Iceberg": 15, - "Cryst Breath": 22, - "Spirit Flame": 30, - "Aqua Burst": 40, - "Blizzard Spike": 50 - }, - "Scaling": { - "HP": 110, - "ATK": 90, - "DEF": 100 - } - }, - { - "CodeName": "WhiteTiger", - "Name": "Cryolinx", - "Type": [ - "Ice" - ], - "Moveset": { - "Power Shot": 1, - "Ice Missile": 7, - "Stone Cannon": 15, - "Icicle Cutter": 22, - "Iceberg": 30, - "Cryst Breath": 40, - "Blizzard Spike": 50 - }, - "Scaling": { - "HP": 100, - "ATK": 100, - "DEF": 110 - } - }, - { - "CodeName": "WindChimes", - "Name": "Hangyu", - "Type": [ - "Ground" - ], - "Moveset": {}, - "Scaling": { - "HP": 80, - "ATK": 70, - "DEF": 70 - } - }, - { - "CodeName": "WindChimes_Ice", - "Name": "Hangyu Cryst", - "Type": [ - "Ice" - ], - "Moveset": {}, - "Scaling": { - "HP": 80, - "ATK": 80, - "DEF": 70 - } - }, - { - "CodeName": "WizardOwl", - "Name": "Hoocrates", - "Type": [ - "Dark" - ], - "Moveset": { - "Air Cannon": 1, - "Dark Ball": 7, - "Shadow Burst": 15, - "Sand Tornado": 22, - "Spirit Flame": 30, - "Nightmare Ball": 40, - "Dark Laser": 50 - }, - "Scaling": { - "HP": 70, - "ATK": 70, - "DEF": 80 - } - }, - { - "CodeName": "WoolFox", - "Name": "Cremis", - "Type": [ - "Neutral" - ], - "Moveset": { - "Air Cannon": 1, - "Sand Blast": 7, - "Spark Blast": 15, - "Power Shot": 22, - "Shockwave": 30, - "Power Bomb": 40, - "Lightning Bolt": 50 - }, - "Scaling": { - "HP": 70, - "ATK": 70, - "DEF": 75 - } - }, - { - "CodeName": "Yeti", - "Name": "Wumpo", - "Type": [ - "Ice" - ], - "Moveset": { - "Ice Missile": 1, - "Wind Cutter": 7, - "Icicle Cutter": 15, - "Iceberg": 22, - "Cryst Breath": 30, - "Blizzard Spike": 40, - "Solar Blast": 50 - }, - "Scaling": { - "HP": 140, - "ATK": 80, - "DEF": 100 - } - }, - { - "CodeName": "Yeti_Grass", - "Name": "Wumpo Botan", - "Type": [ - "Grass" - ], - "Moveset": { - "Wind Cutter": 1, - "Aqua Gun": 7, - "Seed Mine": 15, - "Grass Tornado": 22, - "Spine Vine": 30, - "Aqua Burst": 40, - "Solar Blast": 50 - }, - "Scaling": { - "HP": 140, - "ATK": 80, - "DEF": 110 - } - }, - { - "CodeName": "BlackFurDragon", - "Name": "Dragostrophe", - "Type": [ - "Dark", - "Dragon" - ], - "Moveset": { - }, - "Scaling": { - "HP": 130, - "ATK": 130, - "DEF": 110 - } - }, - { - "CodeName": "ElecLion", - "Name": "Boltmane", - "Type": [ - "Electric" - ], - "Moveset": { - }, - "Scaling": { - "HP": 100, - "ATK": 110, - "DEF": 70 - } - }, - { - "CodeName": "DarkMutant", - "Name": "Dark Mutant", - "Type": [ - "Dark", - "Dragon" - ], - "Moveset": { - }, - "Scaling": { - "HP": 100, - "ATK": 100, - "DEF": 100 - } - }, - { - "CodeName": "GYM_ThunderDragonMan", - "Name": "Axel & Orserk", - "Type": [ - "Dragon", - "Electric" - ], - "Moveset": {}, - "Tower": true - }, - { - "CodeName": "GYM_LilyQueen", - "Name": "Lily & Lyleen", - "Type": [ - "Grass" - ], - "Moveset": {}, - "Tower": true - }, - { - "CodeName": "GYM_Horus", - "Name": "Marus & Faleris", - "Type": [ - "Fire" - ], - "Moveset": {}, - "Tower": true - }, - { - "CodeName": "GYM_BlackGriffon", - "Name": "Victor & Shadowbeak", - "Type": [ - "Dark" - ], - "Moveset": {}, - "Tower": true - }, - { - "CodeName": "GYM_ElecPanda", - "Name": "Zoe & Grizzbolt", - "Type": [ - "Electric" - ], - "Moveset": {}, - "Tower": true - }, - { - "CodeName": "Male_DarkTrader01", - "Name": "Black Marketeer", - "Type": [ - "None" - ], - "Moveset": {}, - "Human": true - }, - { - "CodeName": "FireCult_FlameThrower", - "Name": "Brothers of the Eternal Pyre Martyr", - "Type": [ - "None" - ], - "Moveset": {}, - "Human": true - }, - { - "CodeName": "Male_Soldier01", - "Name": "Burly Merc", - "Type": [ - "None" - ], - "Moveset": {}, - "Human": true - }, - { - "CodeName": "Female_Soldier01", - "Name": "Expedition Survivor", - "Type": [ - "None" - ], - "Moveset": {}, - "Human": true - }, - { - "CodeName": "Believer_CrossBow", - "Name": "Free Pal Alliance Devout", - "Type": [ - "None" - ], - "Moveset": {}, - "Human": true - }, - { - "CodeName": "Male_Scientist01_LaserRifle", - "Name": "PAL Genetic Research Unit Executioner", - "Type": [ - "None" - ], - "Moveset": {}, - "Human": true - }, - { - "CodeName": "PalDealer", - "Name": "Pal Merchant", - "Type": [ - "None" - ], - "Moveset": {}, - "Human": true - }, - { - "CodeName": "Police_Handgun", - "Name": "PIDF Guard", - "Type": [ - "None" - ], - "Moveset": {}, - "Human": true - }, - { - "CodeName": "Hunter_Bat", - "Name": "Syndicate Thug (Bat)", - "Type": [ - "None" - ], - "Moveset": {}, - "Human": true - }, - { - "CodeName": "Hunter_FlameThrower", - "Name": "Syndicate Cleaner", - "Type": [ - "None" - ], - "Moveset": {}, - "Human": true - }, - { - "CodeName": "Hunter_Fat_GatlingGun", - "Name": "Syndicate Crusher", - "Type": [ - "None" - ], - "Moveset": {}, - "Human": true - }, - { - "CodeName": "Hunter_RocketLauncher", - "Name": "Syndicate Elite", - "Type": [ - "None" - ], - "Moveset": {}, - "Human": true - }, - { - "CodeName": "Hunter_Grenade", - "Name": "Syndicate Grenadier", - "Type": [ - "None" - ], - "Moveset": {}, - "Human": true - }, - { - "CodeName": "Hunter_Rifle", - "Name": "Syndicate Gunner", - "Type": [ - "None" - ], - "Moveset": {}, - "Human": true - }, - { - "CodeName": "Hunter_Shotgun", - "Name": "Syndicate Hunter", - "Type": [ - "None" - ], - "Moveset": {}, - "Human": true - }, - { - "CodeName": "Hunter_Handgun", - "Name": "Syndicate Thug (Handgun)", - "Type": [ - "None" - ], - "Moveset": {}, - "Human": true - }, - { - "CodeName": "SalesPerson", - "Name": "Wandering Merchant", - "Type": [ - "None" - ], - "Moveset": {}, - "Human": true - } - ] -} \ No newline at end of file diff --git a/resources/pals/Alpaca.png b/resources/pals/Alpaca.png new file mode 100644 index 0000000..6c76cd9 Binary files /dev/null and b/resources/pals/Alpaca.png differ diff --git a/resources/pals/AmaterasuWolf.png b/resources/pals/AmaterasuWolf.png new file mode 100644 index 0000000..9bb471c Binary files /dev/null and b/resources/pals/AmaterasuWolf.png differ diff --git a/resources/pals/Anubis.png b/resources/pals/Anubis.png new file mode 100644 index 0000000..462c21f Binary files /dev/null and b/resources/pals/Anubis.png differ diff --git a/resources/pals/Baphomet.png b/resources/pals/Baphomet.png new file mode 100644 index 0000000..70a8cb7 Binary files /dev/null and b/resources/pals/Baphomet.png differ diff --git a/resources/pals/Baphomet_Dark.png b/resources/pals/Baphomet_Dark.png new file mode 100644 index 0000000..49d4d00 Binary files /dev/null and b/resources/pals/Baphomet_Dark.png differ diff --git a/resources/pals/Bastet.png b/resources/pals/Bastet.png new file mode 100644 index 0000000..38c72c7 Binary files /dev/null and b/resources/pals/Bastet.png differ diff --git a/resources/pals/Bastet_Ice.png b/resources/pals/Bastet_Ice.png new file mode 100644 index 0000000..3394526 Binary files /dev/null and b/resources/pals/Bastet_Ice.png differ diff --git a/resources/pals/BerryGoat.png b/resources/pals/BerryGoat.png new file mode 100644 index 0000000..d4d9a6d Binary files /dev/null and b/resources/pals/BerryGoat.png differ diff --git a/resources/pals/BirdDragon.png b/resources/pals/BirdDragon.png new file mode 100644 index 0000000..524bfb8 Binary files /dev/null and b/resources/pals/BirdDragon.png differ diff --git a/resources/pals/BirdDragon_Ice.png b/resources/pals/BirdDragon_Ice.png new file mode 100644 index 0000000..8f4675c Binary files /dev/null and b/resources/pals/BirdDragon_Ice.png differ diff --git a/resources/pals/BlackCentaur.png b/resources/pals/BlackCentaur.png new file mode 100644 index 0000000..8f245ca Binary files /dev/null and b/resources/pals/BlackCentaur.png differ diff --git a/resources/pals/BlackFurDragon.png b/resources/pals/BlackFurDragon.png new file mode 100644 index 0000000..1854e36 Binary files /dev/null and b/resources/pals/BlackFurDragon.png differ diff --git a/resources/pals/BlackGriffon.png b/resources/pals/BlackGriffon.png new file mode 100644 index 0000000..420d60e Binary files /dev/null and b/resources/pals/BlackGriffon.png differ diff --git a/resources/pals/BlackMetalDragon.png b/resources/pals/BlackMetalDragon.png new file mode 100644 index 0000000..03241b0 Binary files /dev/null and b/resources/pals/BlackMetalDragon.png differ diff --git a/resources/pals/BlueDragon.png b/resources/pals/BlueDragon.png new file mode 100644 index 0000000..bae6b3b Binary files /dev/null and b/resources/pals/BlueDragon.png differ diff --git a/resources/pals/BluePlatypus.png b/resources/pals/BluePlatypus.png new file mode 100644 index 0000000..e74373c Binary files /dev/null and b/resources/pals/BluePlatypus.png differ diff --git a/resources/pals/Boar.png b/resources/pals/Boar.png new file mode 100644 index 0000000..d161f64 Binary files /dev/null and b/resources/pals/Boar.png differ diff --git a/resources/pals/CaptainPenguin.png b/resources/pals/CaptainPenguin.png new file mode 100644 index 0000000..5304aec Binary files /dev/null and b/resources/pals/CaptainPenguin.png differ diff --git a/resources/pals/Carbunclo.png b/resources/pals/Carbunclo.png new file mode 100644 index 0000000..79eb8ca Binary files /dev/null and b/resources/pals/Carbunclo.png differ diff --git a/resources/pals/CatBat.png b/resources/pals/CatBat.png new file mode 100644 index 0000000..8258197 Binary files /dev/null and b/resources/pals/CatBat.png differ diff --git a/resources/pals/CatMage.png b/resources/pals/CatMage.png new file mode 100644 index 0000000..c29cb40 Binary files /dev/null and b/resources/pals/CatMage.png differ diff --git a/resources/pals/CatVampire.png b/resources/pals/CatVampire.png new file mode 100644 index 0000000..f183f65 Binary files /dev/null and b/resources/pals/CatVampire.png differ diff --git a/resources/pals/ChickenPal.png b/resources/pals/ChickenPal.png new file mode 100644 index 0000000..f7a0054 Binary files /dev/null and b/resources/pals/ChickenPal.png differ diff --git a/resources/pals/ColorfulBird.png b/resources/pals/ColorfulBird.png new file mode 100644 index 0000000..912739c Binary files /dev/null and b/resources/pals/ColorfulBird.png differ diff --git a/resources/pals/CowPal.png b/resources/pals/CowPal.png new file mode 100644 index 0000000..92b094f Binary files /dev/null and b/resources/pals/CowPal.png differ diff --git a/resources/pals/CuteButterfly.png b/resources/pals/CuteButterfly.png new file mode 100644 index 0000000..595c21e Binary files /dev/null and b/resources/pals/CuteButterfly.png differ diff --git a/resources/pals/CuteFox.png b/resources/pals/CuteFox.png new file mode 100644 index 0000000..4d408cb Binary files /dev/null and b/resources/pals/CuteFox.png differ diff --git a/resources/pals/CuteMole.png b/resources/pals/CuteMole.png new file mode 100644 index 0000000..84af754 Binary files /dev/null and b/resources/pals/CuteMole.png differ diff --git a/resources/pals/DarkCrow.png b/resources/pals/DarkCrow.png new file mode 100644 index 0000000..deab8d8 Binary files /dev/null and b/resources/pals/DarkCrow.png differ diff --git a/resources/pals/DarkMutant.png b/resources/pals/DarkMutant.png new file mode 100644 index 0000000..ddec8fa Binary files /dev/null and b/resources/pals/DarkMutant.png differ diff --git a/resources/pals/DarkScorpion.png b/resources/pals/DarkScorpion.png new file mode 100644 index 0000000..dcc627a Binary files /dev/null and b/resources/pals/DarkScorpion.png differ diff --git a/resources/pals/Deer.png b/resources/pals/Deer.png new file mode 100644 index 0000000..be46396 Binary files /dev/null and b/resources/pals/Deer.png differ diff --git a/resources/pals/Deer_Ground.png b/resources/pals/Deer_Ground.png new file mode 100644 index 0000000..44fa7e5 Binary files /dev/null and b/resources/pals/Deer_Ground.png differ diff --git a/resources/pals/DreamDemon.png b/resources/pals/DreamDemon.png new file mode 100644 index 0000000..424fda0 Binary files /dev/null and b/resources/pals/DreamDemon.png differ diff --git a/resources/pals/DrillGame.png b/resources/pals/DrillGame.png new file mode 100644 index 0000000..0b27109 Binary files /dev/null and b/resources/pals/DrillGame.png differ diff --git a/resources/pals/Eagle.png b/resources/pals/Eagle.png new file mode 100644 index 0000000..fdba30b Binary files /dev/null and b/resources/pals/Eagle.png differ diff --git a/resources/pals/ElecCat.png b/resources/pals/ElecCat.png new file mode 100644 index 0000000..04a15f4 Binary files /dev/null and b/resources/pals/ElecCat.png differ diff --git a/resources/pals/ElecLion.png b/resources/pals/ElecLion.png new file mode 100644 index 0000000..170d68e Binary files /dev/null and b/resources/pals/ElecLion.png differ diff --git a/resources/pals/ElecPanda.png b/resources/pals/ElecPanda.png new file mode 100644 index 0000000..ba0fb44 Binary files /dev/null and b/resources/pals/ElecPanda.png differ diff --git a/resources/pals/FairyDragon.png b/resources/pals/FairyDragon.png new file mode 100644 index 0000000..f2ffd1e Binary files /dev/null and b/resources/pals/FairyDragon.png differ diff --git a/resources/pals/FairyDragon_Water.png b/resources/pals/FairyDragon_Water.png new file mode 100644 index 0000000..a17e892 Binary files /dev/null and b/resources/pals/FairyDragon_Water.png differ diff --git a/resources/pals/FengyunDeeper.png b/resources/pals/FengyunDeeper.png new file mode 100644 index 0000000..b9f9699 Binary files /dev/null and b/resources/pals/FengyunDeeper.png differ diff --git a/resources/pals/FireKirin.png b/resources/pals/FireKirin.png new file mode 100644 index 0000000..293e2be Binary files /dev/null and b/resources/pals/FireKirin.png differ diff --git a/resources/pals/FireKirin_Dark.png b/resources/pals/FireKirin_Dark.png new file mode 100644 index 0000000..2d31d4d Binary files /dev/null and b/resources/pals/FireKirin_Dark.png differ diff --git a/resources/pals/FlameBambi.png b/resources/pals/FlameBambi.png new file mode 100644 index 0000000..6da29f8 Binary files /dev/null and b/resources/pals/FlameBambi.png differ diff --git a/resources/pals/FlameBuffalo.png b/resources/pals/FlameBuffalo.png new file mode 100644 index 0000000..dfc0cb9 Binary files /dev/null and b/resources/pals/FlameBuffalo.png differ diff --git a/resources/pals/FlowerDinosaur.png b/resources/pals/FlowerDinosaur.png new file mode 100644 index 0000000..1169525 Binary files /dev/null and b/resources/pals/FlowerDinosaur.png differ diff --git a/resources/pals/FlowerDinosaur_Electric.png b/resources/pals/FlowerDinosaur_Electric.png new file mode 100644 index 0000000..54bd348 Binary files /dev/null and b/resources/pals/FlowerDinosaur_Electric.png differ diff --git a/resources/pals/FlowerDoll.png b/resources/pals/FlowerDoll.png new file mode 100644 index 0000000..45286c4 Binary files /dev/null and b/resources/pals/FlowerDoll.png differ diff --git a/resources/pals/FlowerRabbit.png b/resources/pals/FlowerRabbit.png new file mode 100644 index 0000000..1aba43f Binary files /dev/null and b/resources/pals/FlowerRabbit.png differ diff --git a/resources/pals/FlyingManta.png b/resources/pals/FlyingManta.png new file mode 100644 index 0000000..f73c4e3 Binary files /dev/null and b/resources/pals/FlyingManta.png differ diff --git a/resources/pals/FoxMage.png b/resources/pals/FoxMage.png new file mode 100644 index 0000000..5ef054d Binary files /dev/null and b/resources/pals/FoxMage.png differ diff --git a/resources/pals/GYM_BlackGriffon.png b/resources/pals/GYM_BlackGriffon.png new file mode 100644 index 0000000..f80df34 Binary files /dev/null and b/resources/pals/GYM_BlackGriffon.png differ diff --git a/resources/pals/GYM_ElecPanda.png b/resources/pals/GYM_ElecPanda.png new file mode 100644 index 0000000..e0a70ac Binary files /dev/null and b/resources/pals/GYM_ElecPanda.png differ diff --git a/resources/pals/GYM_Horus.png b/resources/pals/GYM_Horus.png new file mode 100644 index 0000000..7ff2a14 Binary files /dev/null and b/resources/pals/GYM_Horus.png differ diff --git a/resources/pals/GYM_LilyQueen.png b/resources/pals/GYM_LilyQueen.png new file mode 100644 index 0000000..2220ec4 Binary files /dev/null and b/resources/pals/GYM_LilyQueen.png differ diff --git a/resources/pals/GYM_ThunderDragonMan.png b/resources/pals/GYM_ThunderDragonMan.png new file mode 100644 index 0000000..daa718e Binary files /dev/null and b/resources/pals/GYM_ThunderDragonMan.png differ diff --git a/resources/pals/Ganesha.png b/resources/pals/Ganesha.png new file mode 100644 index 0000000..6d0e7d4 Binary files /dev/null and b/resources/pals/Ganesha.png differ diff --git a/resources/pals/Garm.png b/resources/pals/Garm.png new file mode 100644 index 0000000..63bf331 Binary files /dev/null and b/resources/pals/Garm.png differ diff --git a/resources/pals/GhostBeast.png b/resources/pals/GhostBeast.png new file mode 100644 index 0000000..ca4c5c0 Binary files /dev/null and b/resources/pals/GhostBeast.png differ diff --git a/resources/pals/Gorilla.png b/resources/pals/Gorilla.png new file mode 100644 index 0000000..a02d8e6 Binary files /dev/null and b/resources/pals/Gorilla.png differ diff --git a/resources/pals/GrassMammoth.png b/resources/pals/GrassMammoth.png new file mode 100644 index 0000000..fb540bf Binary files /dev/null and b/resources/pals/GrassMammoth.png differ diff --git a/resources/pals/GrassMammoth_Ice.png b/resources/pals/GrassMammoth_Ice.png new file mode 100644 index 0000000..c79472d Binary files /dev/null and b/resources/pals/GrassMammoth_Ice.png differ diff --git a/resources/pals/GrassPanda.png b/resources/pals/GrassPanda.png new file mode 100644 index 0000000..b2a8081 Binary files /dev/null and b/resources/pals/GrassPanda.png differ diff --git a/resources/pals/GrassPanda_Electric.png b/resources/pals/GrassPanda_Electric.png new file mode 100644 index 0000000..c86b688 Binary files /dev/null and b/resources/pals/GrassPanda_Electric.png differ diff --git a/resources/pals/GrassRabbitMan.png b/resources/pals/GrassRabbitMan.png new file mode 100644 index 0000000..a4d2239 Binary files /dev/null and b/resources/pals/GrassRabbitMan.png differ diff --git a/resources/pals/HadesBird.png b/resources/pals/HadesBird.png new file mode 100644 index 0000000..175110a Binary files /dev/null and b/resources/pals/HadesBird.png differ diff --git a/resources/pals/HawkBird.png b/resources/pals/HawkBird.png new file mode 100644 index 0000000..476b623 Binary files /dev/null and b/resources/pals/HawkBird.png differ diff --git a/resources/pals/Hedgehog.png b/resources/pals/Hedgehog.png new file mode 100644 index 0000000..48dc819 Binary files /dev/null and b/resources/pals/Hedgehog.png differ diff --git a/resources/pals/Hedgehog_Ice.png b/resources/pals/Hedgehog_Ice.png new file mode 100644 index 0000000..32ecbeb Binary files /dev/null and b/resources/pals/Hedgehog_Ice.png differ diff --git a/resources/pals/HerculesBeetle.png b/resources/pals/HerculesBeetle.png new file mode 100644 index 0000000..4215caf Binary files /dev/null and b/resources/pals/HerculesBeetle.png differ diff --git a/resources/pals/Horus.png b/resources/pals/Horus.png new file mode 100644 index 0000000..c2cd95f Binary files /dev/null and b/resources/pals/Horus.png differ diff --git a/resources/pals/IceDeer.png b/resources/pals/IceDeer.png new file mode 100644 index 0000000..c3da800 Binary files /dev/null and b/resources/pals/IceDeer.png differ diff --git a/resources/pals/IceFox.png b/resources/pals/IceFox.png new file mode 100644 index 0000000..0b93ec0 Binary files /dev/null and b/resources/pals/IceFox.png differ diff --git a/resources/pals/IceHorse.png b/resources/pals/IceHorse.png new file mode 100644 index 0000000..01f3c7d Binary files /dev/null and b/resources/pals/IceHorse.png differ diff --git a/resources/pals/IceHorse_Dark.png b/resources/pals/IceHorse_Dark.png new file mode 100644 index 0000000..611f049 Binary files /dev/null and b/resources/pals/IceHorse_Dark.png differ diff --git a/resources/pals/JetDragon.png b/resources/pals/JetDragon.png new file mode 100644 index 0000000..324de2a Binary files /dev/null and b/resources/pals/JetDragon.png differ diff --git a/resources/pals/Kelpie.png b/resources/pals/Kelpie.png new file mode 100644 index 0000000..792ba24 Binary files /dev/null and b/resources/pals/Kelpie.png differ diff --git a/resources/pals/Kelpie_Fire.png b/resources/pals/Kelpie_Fire.png new file mode 100644 index 0000000..a6f7eb2 Binary files /dev/null and b/resources/pals/Kelpie_Fire.png differ diff --git a/resources/pals/KingAlpaca.png b/resources/pals/KingAlpaca.png new file mode 100644 index 0000000..68a149b Binary files /dev/null and b/resources/pals/KingAlpaca.png differ diff --git a/resources/pals/KingAlpaca_Ice.png b/resources/pals/KingAlpaca_Ice.png new file mode 100644 index 0000000..b0b2c72 Binary files /dev/null and b/resources/pals/KingAlpaca_Ice.png differ diff --git a/resources/pals/KingBahamut.png b/resources/pals/KingBahamut.png new file mode 100644 index 0000000..051c9f7 Binary files /dev/null and b/resources/pals/KingBahamut.png differ diff --git a/resources/pals/Kirin.png b/resources/pals/Kirin.png new file mode 100644 index 0000000..5a96d5d Binary files /dev/null and b/resources/pals/Kirin.png differ diff --git a/resources/pals/Kitsunebi.png b/resources/pals/Kitsunebi.png new file mode 100644 index 0000000..5d22238 Binary files /dev/null and b/resources/pals/Kitsunebi.png differ diff --git a/resources/pals/LavaGirl.png b/resources/pals/LavaGirl.png new file mode 100644 index 0000000..85dcbc4 Binary files /dev/null and b/resources/pals/LavaGirl.png differ diff --git a/resources/pals/LazyCatfish.png b/resources/pals/LazyCatfish.png new file mode 100644 index 0000000..39b928b Binary files /dev/null and b/resources/pals/LazyCatfish.png differ diff --git a/resources/pals/LazyDragon.png b/resources/pals/LazyDragon.png new file mode 100644 index 0000000..aff9483 Binary files /dev/null and b/resources/pals/LazyDragon.png differ diff --git a/resources/pals/LazyDragon_Electric.png b/resources/pals/LazyDragon_Electric.png new file mode 100644 index 0000000..7f6e0e3 Binary files /dev/null and b/resources/pals/LazyDragon_Electric.png differ diff --git a/resources/pals/LilyQueen.png b/resources/pals/LilyQueen.png new file mode 100644 index 0000000..82f5118 Binary files /dev/null and b/resources/pals/LilyQueen.png differ diff --git a/resources/pals/LilyQueen_Dark.png b/resources/pals/LilyQueen_Dark.png new file mode 100644 index 0000000..12b93a7 Binary files /dev/null and b/resources/pals/LilyQueen_Dark.png differ diff --git a/resources/pals/LittleBriarRose.png b/resources/pals/LittleBriarRose.png new file mode 100644 index 0000000..0522172 Binary files /dev/null and b/resources/pals/LittleBriarRose.png differ diff --git a/resources/pals/LizardMan.png b/resources/pals/LizardMan.png new file mode 100644 index 0000000..1377944 Binary files /dev/null and b/resources/pals/LizardMan.png differ diff --git a/resources/pals/LizardMan_Fire.png b/resources/pals/LizardMan_Fire.png new file mode 100644 index 0000000..3ce91fd Binary files /dev/null and b/resources/pals/LizardMan_Fire.png differ diff --git a/resources/pals/Manticore.png b/resources/pals/Manticore.png new file mode 100644 index 0000000..99bc2fd Binary files /dev/null and b/resources/pals/Manticore.png differ diff --git a/resources/pals/Manticore_Dark.png b/resources/pals/Manticore_Dark.png new file mode 100644 index 0000000..0e6deac Binary files /dev/null and b/resources/pals/Manticore_Dark.png differ diff --git a/resources/pals/Monkey.png b/resources/pals/Monkey.png new file mode 100644 index 0000000..d85bdcb Binary files /dev/null and b/resources/pals/Monkey.png differ diff --git a/resources/pals/MopBaby.png b/resources/pals/MopBaby.png new file mode 100644 index 0000000..9b97676 Binary files /dev/null and b/resources/pals/MopBaby.png differ diff --git a/resources/pals/MopKing.png b/resources/pals/MopKing.png new file mode 100644 index 0000000..87a7ba5 Binary files /dev/null and b/resources/pals/MopKing.png differ diff --git a/resources/pals/Mutant.png b/resources/pals/Mutant.png new file mode 100644 index 0000000..0678977 Binary files /dev/null and b/resources/pals/Mutant.png differ diff --git a/resources/pals/NaughtyCat.png b/resources/pals/NaughtyCat.png new file mode 100644 index 0000000..d57b737 Binary files /dev/null and b/resources/pals/NaughtyCat.png differ diff --git a/resources/pals/NegativeKoala.png b/resources/pals/NegativeKoala.png new file mode 100644 index 0000000..f079178 Binary files /dev/null and b/resources/pals/NegativeKoala.png differ diff --git a/resources/pals/NegativeOctopus.png b/resources/pals/NegativeOctopus.png new file mode 100644 index 0000000..9e5be92 Binary files /dev/null and b/resources/pals/NegativeOctopus.png differ diff --git a/resources/pals/NightFox.png b/resources/pals/NightFox.png new file mode 100644 index 0000000..7e4a697 Binary files /dev/null and b/resources/pals/NightFox.png differ diff --git a/resources/pals/Penguin.png b/resources/pals/Penguin.png new file mode 100644 index 0000000..02689ed Binary files /dev/null and b/resources/pals/Penguin.png differ diff --git a/resources/pals/PinkCat.png b/resources/pals/PinkCat.png new file mode 100644 index 0000000..f649269 Binary files /dev/null and b/resources/pals/PinkCat.png differ diff --git a/resources/pals/PinkLizard.png b/resources/pals/PinkLizard.png new file mode 100644 index 0000000..4b569b3 Binary files /dev/null and b/resources/pals/PinkLizard.png differ diff --git a/resources/pals/PinkRabbit.png b/resources/pals/PinkRabbit.png new file mode 100644 index 0000000..9b4de6e Binary files /dev/null and b/resources/pals/PinkRabbit.png differ diff --git a/resources/pals/PlantSlime.png b/resources/pals/PlantSlime.png new file mode 100644 index 0000000..aaa7c31 Binary files /dev/null and b/resources/pals/PlantSlime.png differ diff --git a/resources/pals/PlantSlime_Flower.png b/resources/pals/PlantSlime_Flower.png new file mode 100644 index 0000000..aaa7c31 Binary files /dev/null and b/resources/pals/PlantSlime_Flower.png differ diff --git a/resources/pals/QueenBee.png b/resources/pals/QueenBee.png new file mode 100644 index 0000000..b7d2c51 Binary files /dev/null and b/resources/pals/QueenBee.png differ diff --git a/resources/pals/RaijinDaughter.png b/resources/pals/RaijinDaughter.png new file mode 100644 index 0000000..4412f0c Binary files /dev/null and b/resources/pals/RaijinDaughter.png differ diff --git a/resources/pals/RedArmorBird.png b/resources/pals/RedArmorBird.png new file mode 100644 index 0000000..6b45c9d Binary files /dev/null and b/resources/pals/RedArmorBird.png differ diff --git a/resources/pals/RobinHood.png b/resources/pals/RobinHood.png new file mode 100644 index 0000000..67d4f6b Binary files /dev/null and b/resources/pals/RobinHood.png differ diff --git a/resources/pals/RobinHood_Ground.png b/resources/pals/RobinHood_Ground.png new file mode 100644 index 0000000..46b92a8 Binary files /dev/null and b/resources/pals/RobinHood_Ground.png differ diff --git a/resources/pals/Ronin.png b/resources/pals/Ronin.png new file mode 100644 index 0000000..37c9fd0 Binary files /dev/null and b/resources/pals/Ronin.png differ diff --git a/resources/pals/SaintCentaur.png b/resources/pals/SaintCentaur.png new file mode 100644 index 0000000..ce9d4c5 Binary files /dev/null and b/resources/pals/SaintCentaur.png differ diff --git a/resources/pals/SakuraSaurus.png b/resources/pals/SakuraSaurus.png new file mode 100644 index 0000000..57301b3 Binary files /dev/null and b/resources/pals/SakuraSaurus.png differ diff --git a/resources/pals/SakuraSaurus_Water.png b/resources/pals/SakuraSaurus_Water.png new file mode 100644 index 0000000..eb03984 Binary files /dev/null and b/resources/pals/SakuraSaurus_Water.png differ diff --git a/resources/pals/Serpent.png b/resources/pals/Serpent.png new file mode 100644 index 0000000..013bd78 Binary files /dev/null and b/resources/pals/Serpent.png differ diff --git a/resources/pals/Serpent_Ground.png b/resources/pals/Serpent_Ground.png new file mode 100644 index 0000000..3359d0a Binary files /dev/null and b/resources/pals/Serpent_Ground.png differ diff --git a/resources/pals/SharkKid.png b/resources/pals/SharkKid.png new file mode 100644 index 0000000..36df9b2 Binary files /dev/null and b/resources/pals/SharkKid.png differ diff --git a/resources/pals/SharkKid_Fire.png b/resources/pals/SharkKid_Fire.png new file mode 100644 index 0000000..4f59077 Binary files /dev/null and b/resources/pals/SharkKid_Fire.png differ diff --git a/resources/pals/Sheepball.png b/resources/pals/Sheepball.png new file mode 100644 index 0000000..8dea170 Binary files /dev/null and b/resources/pals/Sheepball.png differ diff --git a/resources/pals/SkyDragon.png b/resources/pals/SkyDragon.png new file mode 100644 index 0000000..05474a3 Binary files /dev/null and b/resources/pals/SkyDragon.png differ diff --git a/resources/pals/SoldierBee.png b/resources/pals/SoldierBee.png new file mode 100644 index 0000000..90f0a0f Binary files /dev/null and b/resources/pals/SoldierBee.png differ diff --git a/resources/pals/Suzaku.png b/resources/pals/Suzaku.png new file mode 100644 index 0000000..efe1b58 Binary files /dev/null and b/resources/pals/Suzaku.png differ diff --git a/resources/pals/Suzaku_Water.png b/resources/pals/Suzaku_Water.png new file mode 100644 index 0000000..aacd809 Binary files /dev/null and b/resources/pals/Suzaku_Water.png differ diff --git a/resources/pals/SweetsSheep.png b/resources/pals/SweetsSheep.png new file mode 100644 index 0000000..03bb6ae Binary files /dev/null and b/resources/pals/SweetsSheep.png differ diff --git a/resources/pals/ThunderBird.png b/resources/pals/ThunderBird.png new file mode 100644 index 0000000..79280da Binary files /dev/null and b/resources/pals/ThunderBird.png differ diff --git a/resources/pals/ThunderDog.png b/resources/pals/ThunderDog.png new file mode 100644 index 0000000..3dfbc3f Binary files /dev/null and b/resources/pals/ThunderDog.png differ diff --git a/resources/pals/ThunderDragonMan.png b/resources/pals/ThunderDragonMan.png new file mode 100644 index 0000000..5f9e517 Binary files /dev/null and b/resources/pals/ThunderDragonMan.png differ diff --git a/resources/pals/Umihebi.png b/resources/pals/Umihebi.png new file mode 100644 index 0000000..bc58f7c Binary files /dev/null and b/resources/pals/Umihebi.png differ diff --git a/resources/pals/Umihebi_Fire.png b/resources/pals/Umihebi_Fire.png new file mode 100644 index 0000000..8c1d091 Binary files /dev/null and b/resources/pals/Umihebi_Fire.png differ diff --git a/resources/pals/VioletFairy.png b/resources/pals/VioletFairy.png new file mode 100644 index 0000000..a9b5d49 Binary files /dev/null and b/resources/pals/VioletFairy.png differ diff --git a/resources/pals/VolcanicMonster.png b/resources/pals/VolcanicMonster.png new file mode 100644 index 0000000..bf9a1ac Binary files /dev/null and b/resources/pals/VolcanicMonster.png differ diff --git a/resources/pals/VolcanicMonster_Ice.png b/resources/pals/VolcanicMonster_Ice.png new file mode 100644 index 0000000..0443600 Binary files /dev/null and b/resources/pals/VolcanicMonster_Ice.png differ diff --git a/resources/pals/WeaselDragon.png b/resources/pals/WeaselDragon.png new file mode 100644 index 0000000..0d571d5 Binary files /dev/null and b/resources/pals/WeaselDragon.png differ diff --git a/resources/pals/Werewolf.png b/resources/pals/Werewolf.png new file mode 100644 index 0000000..7ef08d6 Binary files /dev/null and b/resources/pals/Werewolf.png differ diff --git a/resources/pals/WhiteMoth.png b/resources/pals/WhiteMoth.png new file mode 100644 index 0000000..0263f3c Binary files /dev/null and b/resources/pals/WhiteMoth.png differ diff --git a/resources/pals/WhiteTiger.png b/resources/pals/WhiteTiger.png new file mode 100644 index 0000000..8f9e733 Binary files /dev/null and b/resources/pals/WhiteTiger.png differ diff --git a/resources/pals/WindChimes.png b/resources/pals/WindChimes.png new file mode 100644 index 0000000..1f76de0 Binary files /dev/null and b/resources/pals/WindChimes.png differ diff --git a/resources/pals/WindChimes_Ice.png b/resources/pals/WindChimes_Ice.png new file mode 100644 index 0000000..3760794 Binary files /dev/null and b/resources/pals/WindChimes_Ice.png differ diff --git a/resources/pals/WizardOwl.png b/resources/pals/WizardOwl.png new file mode 100644 index 0000000..4e3738b Binary files /dev/null and b/resources/pals/WizardOwl.png differ diff --git a/resources/pals/WoolFox.png b/resources/pals/WoolFox.png new file mode 100644 index 0000000..c048de4 Binary files /dev/null and b/resources/pals/WoolFox.png differ diff --git a/resources/pals/Yeti.png b/resources/pals/Yeti.png new file mode 100644 index 0000000..bc2f627 Binary files /dev/null and b/resources/pals/Yeti.png differ diff --git a/resources/pals/Yeti_Grass.png b/resources/pals/Yeti_Grass.png new file mode 100644 index 0000000..b2a2f7d Binary files /dev/null and b/resources/pals/Yeti_Grass.png differ