diff --git a/ryzom/tools/extract_r2_required/generate_sitem.py b/ryzom/tools/extract_r2_required/generate_sitem.py new file mode 100644 index 000000000..f5188bba2 --- /dev/null +++ b/ryzom/tools/extract_r2_required/generate_sitem.py @@ -0,0 +1,350 @@ + +import os + +def loadTsv(filename): + table = [] + with open(filename, "r") as f: + for l in f: + table += [ l.strip().split("\t") ] + return table; + +sitemParents = loadTsv("sitem_parents.tsv") +sitemParsed = loadTsv("sitem_parsed.tsv") +shapeParsed = loadTsv("shape_parsed.tsv") +matchSitemShape = loadTsv("match_sitem_shape.tsv") + +sitemTags = {} +sitemPath = "Y:\\ryzomcore4\\leveldesign\\game_element\\sitem" + +parentTags = {} + +for sitem in sitemParsed: + sitemTags[sitem[0]] = sitem[2:] +for sitem in sitemParents: + sitemTags[sitem[0]] = sitem[2:] + +def generateParents(): + for sitem in sitemParents: + name = sitem[0] + tags = sitem[2:] + strippedTags = tags[:] + + if "parent" in strippedTags: + strippedTags.remove("parent") + if "shared" in strippedTags: + strippedTags.remove("shared") + if "unspecified" in strippedTags: + strippedTags.remove("unspecified") + if "generic" in strippedTags: + strippedTags.remove("generic") + if "base" in strippedTags: + strippedTags.remove("base") + if "melee" in strippedTags: + strippedTags.remove("melee") + if "ranged" in strippedTags: + strippedTags.remove("ranged") + parentTags[name] = strippedTags + displayName = " ".join(strippedTags) + + family = "undefined" # item_family.typ + if "ammo" in tags: + family = "ammo" + elif "shield" in tags: + family = "shield" + elif "ranged" in tags: + family = "range weapon" + elif "melee" in tags: + family = "melee weapon" + elif "armor" in tags: + family = "armor" + + origin = "common" # item_origine.typ + if "refugee" in tags: + origin = "refugee" + elif "tribe" in tags: + origin = "tribe" + elif "karavan" in tags: + origin = "karavan" + elif "kami" in tags: + origin = "kami" + elif "fyros" in tags: + origin = "fyros" + elif "matis" in tags: + origin = "matis" + elif "zorai" in tags: + origin = "zorai" + elif "tryker" in tags: + origin = "tryker" + + dropOrSell = not "refugee" in tags + + armorCategory = "unknown" # item_category.typ + if "heavy" in tags: + armorCategory = "Heavy" + elif "medium" in tags: + armorCategory = "medium" + elif "light" in tags: + armorCategory = "light" + elif "melee" in tags: + armorCategory = "hands" + elif "ranged" in tags: + armorCategory = "hands" + elif "magic" in tags: + armorCategory = "hands" + elif "refugee" in tags: + armorCategory = "light" + + iconOverlay = "" + if "refugee" in tags: + iconOverlay = "pw_light.png" + elif "light" in tags: + iconOverlay = "pw_light.png" + elif "medium" in tags: + iconOverlay = "pw_medium.png" + elif "heavy" in tags: + iconOverlay = "pw_heavy.png" + + neverHide = False + icon = "" + animSet = "" + itemType = "undefined" # item_type.typ + leftHandSlot = "Undefined" # item_slot_type.typ + rightHandSlot = "Undefined" # item_slot_type.typ + if "magic" in tags: + if "amplifier" in tags: + if "gloves" in tags: + itemType = "Magician Staff" + icon = "mg_glove.png" + neverHide = True + rightHandSlot = "Two Hands" + elif "melee" in tags: + if "one-handed" in tags: + animSet = "1H" + rightHandSlot = "Right Hand" + if "dagger" in tags: + itemType = "Dagger" + animSet = "Dagger" + icon = "mw_dagger.png" + elif "sword" in tags: + itemType = "Sword" + animSet = "1H Sword" + icon = "mw_sword.png" + leftHandSlot = "Left Hand" + elif "mace" in tags: + itemType = "Mace" + icon = "mw_mace.png" + elif "axe" in tags: + itemType = "Axe" + icon = "mw_axe.png" + elif "spear" in tags: + itemType = "Spear" + icon = "mw_lance.png" + elif "staff" in tags: + itemType = "Staff" + icon = "mw_staff.png" + if "two-handed" in tags: + animSet = "2H" + rightHandSlot = "Two Hands" + if "sword" in tags: + itemType = "Two Hand Sword" + animSet = "2H Sword" + icon = "mw_2h_sword.png" + elif "axe" in tags: + itemType = "Two Hand Axe" + icon = "mw_2h_axe.png" + elif "pike" in tags: + itemType = "Pike" + animSet = "2H Lance" + icon = "mw_2h_lance.png" + elif "mace" in tags: + itemType = "Two Hand Mace" + icon = "mw_2h_mace.png" + elif "ranged" in tags: + if "autolauncher" in tags: + itemType = "Autolauch" + elif "bowrifle" in tags: + itemType = "Bowrifle" + elif "launcher" in tags: + itemType = "Launcher" + elif "pistol" in tags: + itemType = "Pistol" + elif "bowpistol" in tags: + itemType = "Bowpistol" + elif "rifle" in tags: + itemType = "Rifle" + elif "harpoon" in tags: + itemType = "Harpoon" + if "ammo" in tags and itemType != "undefined": + itemType += " ammo" + elif "shield" in tags: + leftHandSlot = "Left Hand" + animSet = "Shield" + if "buckler" in tags: + icon = "sh_buckler.png" + itemType = "Buckler" + elif "large" in tags: + icon = "sh_large_shield.png" + itemType = "Shield" + elif "armor" in tags: + if "refugee" in tags: + itemType = "Light " + elif "light" in tags: + itemType = "Light " + elif "medium" in tags: + itemType = "Medium " + elif "heavy" in tags: + itemType = "Heavy " + if "boots" in tags: + itemType += "boots" + elif "gloves" in tags: + itemType += "gloves" + elif "pants" in tags: + itemType += "pants" + elif "sleeves" in tags: + itemType += "Sleeves" + elif "vest" in tags: + itemType += "vest" + elif "helmet" in tags and "heavy" in tags: + itemType += "helmet" + else: + itemType = "undefined" + + damageType = "undefined" # item_damage_type.typ + if "piercing" in tags: + damageType = "Piercing" + elif "slashing" in tags: + damageType = "Slashing" + elif "blunt" in tags or "magic" in tags: + damageType = "Blunt" + + # craftingTool = "None" # item_crafting_tool_type.typ + # if "armor" in tags: + # craftingTool = "ArmorTool" + + folder = "_" + if "ammo" in tags: + folder = "ammo" + elif "ranged" in tags: + folder = "range_weapon" + elif "melee" in tags: + folder = "melee_weapon" + elif "armor" in tags: + folder = "armor" + elif "shield" in tags: + folder = "shield" + + if "shared" in tags and not "melee" in tags: + malus = 0 + bulk = 4 # TODO: Calibrate + equipTicks = 10 # TODO: Calibrate + if "one-handed" in tags: + malus += 0.01 # TODO: Calibrate + bulk += 2 # TODO: Calibrate + equipTicks += 10 # TODO: Calibrate + if "two-handed" in tags: + malus += 0.02 # TODO: Calibrate + bulk += 4 # TODO: Calibrate + equipTicks += 20 # TODO: Calibrate + if "medium" in tags: + malus += 0.01 # TODO: Calibrate + bulk += 2 # TODO: Calibrate + equipTicks += 10 # TODO: Calibrate + if "heavy" in tags: + malus += 0.02 # TODO: Calibrate + bulk += 4 # TODO: Calibrate + equipTicks += 20 # TODO: Calibrate + if "buckler" in tags: + malus += 0.01 # TODO: Calibrate + bulk += 2 # TODO: Calibrate + equipTicks += 10 # TODO: Calibrate + if "large" in tags: + malus += 0.02 # TODO: Calibrate + bulk += 4 # TODO: Calibrate + equipTicks += 20 # TODO: Calibrate + if "magic" in tags: + malus = 0 + bulk += 2 # TODO: Calibrate + equipTicks += 10 # TODO: Calibrate + comments = "TODO: WearEquipmentMalus, Bulk, Time to Equip In Ticks" + + dir = sitemPath + "\\" + folder + "\\_parent" + if not os.path.isdir(dir): + os.makedirs(dir) + path = dir + "\\" + name + ".sitem" + + print(path) + with open(path, "w") as f: + f.write("\n") + f.write("
\n") + f.flush() + +def generateSitems(): + for match in matchSitemShape: + name = match[0] + shapeMale = match[1] + shapeFemale = match[2] + tags = sitemTags[name] + # print(name) + # print(shapeMale) + # print(shapeFemale) + # print(tags) + +generateParents() +generateSitems() + diff --git a/ryzom/tools/extract_r2_required/scheme_sitem_parser.py b/ryzom/tools/extract_r2_required/scheme_sitem_parser.py index 8812a1932..076a97779 100644 --- a/ryzom/tools/extract_r2_required/scheme_sitem_parser.py +++ b/ryzom/tools/extract_r2_required/scheme_sitem_parser.py @@ -6,7 +6,7 @@ scheme = { { "i": "item", "b": "brick", - "_c": "parent craftable", + "_c": "parent shared", "_g": "parent generic", }, { diff --git a/ryzom/tools/extract_r2_required/sitem_parents.tsv b/ryzom/tools/extract_r2_required/sitem_parents.tsv index d6f555392..fe53664bb 100644 --- a/ryzom/tools/extract_r2_required/sitem_parents.tsv +++ b/ryzom/tools/extract_r2_required/sitem_parents.tsv @@ -1,19 +1,19 @@ -_c_ah _c_ah parent craftable unspecified heavy armor -_c_al _c_al parent craftable unspecified light armor -_c_am _c_am parent craftable unspecified medium armor -_c_ar _c_ar parent craftable unspecified refugee armor -_c_m1bm _c_m1bm parent craftable unspecified melee one-handed blunt mace -_c_m1pd _c_m1pd parent craftable unspecified melee one-handed piercing dagger -_c_m1ps _c_m1ps parent craftable unspecified melee one-handed piercing spear -_c_m1sa _c_m1sa parent craftable unspecified melee one-handed slashing axe -_c_m1ss _c_m1ss parent craftable unspecified melee one-handed slashing sword -_c_m2bm _c_m2bm parent craftable unspecified melee two-handed blunt mace -_c_m2ms _c_m2ms parent craftable unspecified melee two-handed magic amplifier gloves -_c_m2pp _c_m2pp parent craftable unspecified melee two-handed piercing pike -_c_m2sa _c_m2sa parent craftable unspecified melee two-handed slashing axe -_c_m2ss _c_m2ss parent craftable unspecified melee two-handed slashing sword -_c_sb _c_sb parent craftable unspecified buckler shield -_c_ss _c_ss parent craftable unspecified large shield +_c_ah _c_ah parent shared unspecified heavy armor +_c_al _c_al parent shared unspecified light armor +_c_am _c_am parent shared unspecified medium armor +_c_ar _c_ar parent shared unspecified refugee armor +_c_m1bm _c_m1bm parent shared unspecified melee one-handed blunt mace +_c_m1pd _c_m1pd parent shared unspecified melee one-handed piercing dagger +_c_m1ps _c_m1ps parent shared unspecified melee one-handed piercing spear +_c_m1sa _c_m1sa parent shared unspecified melee one-handed slashing axe +_c_m1ss _c_m1ss parent shared unspecified melee one-handed slashing sword +_c_m2bm _c_m2bm parent shared unspecified melee two-handed blunt mace +_c_m2ms _c_m2ms parent shared unspecified melee two-handed magic amplifier gloves +_c_m2pp _c_m2pp parent shared unspecified melee two-handed piercing pike +_c_m2sa _c_m2sa parent shared unspecified melee two-handed slashing axe +_c_m2ss _c_m2ss parent shared unspecified melee two-handed slashing sword +_c_sb _c_sb parent shared unspecified buckler shield +_c_ss _c_ss parent shared unspecified large shield _gfa_c _gfa_c parent generic fyros caster armor base _gfa_h _gfa_h parent generic fyros heavy armor base _gfa_l _gfa_l parent generic fyros light armor base @@ -30,3 +30,15 @@ _gza_c _gza_c parent generic zorai caster armor base _gza_h _gza_h parent generic zorai heavy armor base _gza_l _gza_l parent generic zorai light armor base _gza_m _gza_m parent generic zorai medium armor base +_gca_c _gca_c parent generic common caster armor base +_gca_h _gca_h parent generic common heavy armor base +_gca_l _gca_l parent generic common light armor base +_gca_m _gca_m parent generic common medium armor base +_gkara_c _gkara_c parent generic karavan caster armor base +_gkara_h _gkara_h parent generic karavan heavy armor base +_gkara_l _gkara_l parent generic karavan light armor base +_gkara_m _gkara_m parent generic karavan medium armor base +_gkama_c _gkama_c parent generic kami caster armor base +_gkama_h _gkama_h parent generic kami heavy armor base +_gkama_l _gkama_l parent generic kami light armor base +_gkama_m _gkama_m parent generic kami medium armor base diff --git a/ryzom/tools/extract_r2_required/sitem_parents.txt b/ryzom/tools/extract_r2_required/sitem_parents.txt index b1a9a5a4d..3bf79f48b 100644 --- a/ryzom/tools/extract_r2_required/sitem_parents.txt +++ b/ryzom/tools/extract_r2_required/sitem_parents.txt @@ -30,3 +30,15 @@ _gza_c.sitem _gza_h.sitem _gza_l.sitem _gza_m.sitem +_gca_c.sitem +_gca_h.sitem +_gca_l.sitem +_gca_m.sitem +_gkara_c.sitem +_gkara_h.sitem +_gkara_l.sitem +_gkara_m.sitem +_gkama_c.sitem +_gkama_h.sitem +_gkama_l.sitem +_gkama_m.sitem