KF3: Api additions and improvements.

This commit is contained in:
2023-09-04 14:20:35 +02:00
parent 12df873ead
commit 37225532c8
17 changed files with 353 additions and 169 deletions

View File

@@ -87,6 +87,31 @@ def calculate_stats(friend, awaken : int, level : int, trust_percent = 0, trustA
return stats
def get_stat_growth(friend, awaken : int):
stats_array = friend["attrScriptParam"]
max_awaken = friend["maxAwaken"]
awaken_step = max_awaken + 2
atk_ptr = 1 * awaken_step
satk_ptr = 2 * awaken_step
pdef_ptr = 3 * awaken_step
sdef_ptr = 4 * awaken_step
hp_ptr = 5 * awaken_step
speed_ptr = 6 * awaken_step
stats = {}
i = awaken
stats["patk"] += stats_array[atk_ptr + 1 + i]
stats["satk"] += stats_array[satk_ptr + 1 + i]
stats["pdef"] += stats_array[pdef_ptr + 1 + i]
stats["sdef"] += stats_array[sdef_ptr + 1 + i]
stats["hp"] += stats_array[hp_ptr + 1 + i]
stats["speed"] += stats_array[speed_ptr + 1 + i]
return stats
def clean_skill_string(input_string):
if input_string is None:
return None

View File

@@ -3,6 +3,11 @@ import platform
from loaders.Kingdom.numeric import numeric
from loaders.Kingdom.kemono import clean_skill_string, calculate_stats, fill_miracle, get_awaken_materials, get_skill_materials
from endpoints.Kingdom.friend import Kingdom_Friend
from endpoints.Kingdom.friends import Kingdom_Friends
from endpoints.Kingdom.item import Kingdom_Item
from endpoints.Kingdom.items import Kingdom_Items
#element 1-orange 2-blue 3-green
#showSkillType 1-control 2-guard 3-heal 4-support 5-assault 6-aoe
@@ -10,7 +15,8 @@ class KingdomDB:
processed_friends = {}
item_stages = {}
def __init__(self, app) -> None:
def __init__(self, api) -> None:
app = api.app
if "Kingdom" in app.databases:
del app.databases["Kingdom"]
@@ -45,6 +51,10 @@ class KingdomDB:
self.process_stages()
app.databases["Kingdom"] = self
api.add_resource(Kingdom_Friend, "/Kingdom/Friend/<int:id>")
api.add_resource(Kingdom_Friends, "/Kingdom/Friends")
api.add_resource(Kingdom_Item, "/Kingdom/Item/<int:id>")
api.add_resource(Kingdom_Items, "/Kingdom/Items")
def process_friends(self):
self.processed_friends = {}
@@ -87,11 +97,15 @@ class KingdomDB:
raise Exception()
if bk_value["effectType1"] == 4:
lb = self.kfk_en_kemono_WkPaDc.get(bk_value['effectParam1'][0] * 100)
if lb is None:
lb = {"name": None, "describe": None}
limit_breaks.append({"name": lb["name"], "desc": clean_skill_string(lb["describe"])})
habits = []
for habit in friend["habitSn"]:
hbt = self.kfk_en_kemono_WkPaDc.get(habit*100)
if hbt is None:
hbt = {"name": None, "describe": None}
habits.append({"name":hbt["name"], "desc":hbt["describe"]})
for i in range (3):
if len(habits) < i+1:
@@ -103,6 +117,8 @@ class KingdomDB:
awaken_id = friend_id * 100 + i
awaken = self.kfk_kemono_waken.get(awaken_id)
awaken1 = self.kfk_en_kemono_waken.get(awaken_id)
if awaken1 == None:
awaken1 = {"describe":"missing", "brilliance":"missing"}
if awaken != None and awaken1 != None:
awaken["en"] = awaken1
awakens.append(awaken)