dead-cells-wiki/data/convert
2022-10-07 11:37:25 +08:00
..
31-0 Remove unused import 2022-09-30 21:10:49 +08:00
31-2 Outfits 2022-10-07 11:37:25 +08:00
README.md 🗃️ Store melee data into SQLite 2022-09-29 10:27:01 +08:00

数据转换

data.cdb 中的数据为 JSON 格式,随着死亡细胞版本的升级,里面的内容格式也会发生变化,因此比较好的处理方式是从中抽取需要的数据,保存为 SQLite 数据库文件,便于管理,也比较稳定。

以下是 data.cdb 中数据的解析:

  • sheets[1]["props"]["separatorTitles"] 字符串数组,下面的 group 字段即为此数组的索引。
  • sheets[1]["lines"] 对象数组,其中为武器、技能等。例:
    • 双向弩弓塔:
      {
        "synergy": [],
        "props": {
          "duration2": 0.09,
          "targetable": true,
          "dps": [45],
          "life": 100,
          "count": 2,
          "effectCD": 0.4
        },
        "gameplayDesc": "Tire sur ::count:: ennemis proches à la fois, chaque tir infligeant ::+dps:: DPS.",
        "moneyCost": 1750,
        "group": 0,
        "castCD": 10,
        "id": "HorizontalTurret",
        "icon": { "x": 1, "y": 0, "file": "cardIcons.png", "size": 24 },
        "legendAffixes": [{ "affix": "SuperPierce" }],
        "name": "Auto-balète double",
        "droppable": true,
        "tags": [
          { "tag": "Ranged" },
          { "tag": "HasBullets" },
          { "tag": "Deployable" },
          { "tag": "NeedPower" },
          { "tag": "UnlockInPublicEvent" }
        ],
        "tier1": "Tactic",
        "cellCost": 5
      }
      
    • 步兵手雷:
      {
        "synergy": [],
        "props": { "range": 4.5, "coolDown": 0.6, "power": [90] },
        "gameplayDesc": "Rapide à utiliser, mais inflige des dégâts modérés.",
        "moneyCost": 1250,
        "group": 1,
        "castCD": 4,
        "id": "FastGrenade",
        "icon": { "x": 6, "y": 8, "file": "cardIcons.png", "size": 24 },
        "legendAffixes": [{ "affix": "Oil" }],
        "name": "Grenade d'infanterie",
        "droppable": true,
        "tags": [
          { "tag": "Ranged" },
          { "tag": "Explosive" },
          { "tag": "ShortCooldown" },
          { "tag": "UnlockInPublicEvent" }
        ],
        "tier1": "Brutality",
        "cellCost": 0
      }
      
    • 稻草人装束:无瑕:
      {
        "props": { "movePauseMul": 99999 },
        "genTags": 544,
        "pfCost": 1,
        "blueprints": [],
        "maxPerRoom": 0,
        "group": 2,
        "canBeElite": false,
        "mobTags": [],
        "index": 107,
        "id": "Scarecrow",
        "weight": 500,
        "icon": { "x": 44, "y": 23, "file": "cardIcons.png", "size": 24 },
        "life": 500000,
        "name": "Scarecrow",
        "minPfHeight": 0,
        "minPfSize": 0,
        "metaItems": [],
        "maxPerPlatform": 0,
        "score": 0,
        "flesh1": 11562569,
        "skill": []
      }
      
    • 死亡之球:
      {
        "synergy": [],
        "props": {
          "speed": 0.11,
          "power": 50,
          "dps": 125,
          "count": 6,
          "distance": 25,
          "size": 2,
          "tick": 0.18,
          "duration": 12
        },
        "gameplayDesc": "Crée une orbe dévastatrice qui se déplace lentement.",
        "moneyCost": 1750,
        "group": 3,
        "castCD": 20,
        "id": "SlowOrb",
        "icon": { "x": 13, "y": 0, "file": "cardIcons.png", "size": 24 },
        "legendAffixes": [{ "affix": "DoubleSpeed" }],
        "name": "Orbe de mort",
        "droppable": true,
        "tags": [{ "tag": "Ranged" }],
        "tier1": "Survival",
        "cellCost": 50
      }
      
    • 生锈的刀
      {
        "synergy": [],
        "props": {},
        "moneyCost": 1,
        "group": 4,
        "castCD": 0,
        "ambiantDesc": "Peut servir à tuer des gens.",
        "id": "StartSword",
        "icon": { "x": 18, "y": 0, "file": "cardIcons.png", "size": 24 },
        "legendAffixes": [],
        "name": "Epée rouillée",
        "droppable": false,
        "tags": [{ "tag": "NoCritical" }, { "tag": "RustyItem" }],
        "tier1": "Brutality",
        "cellCost": 0
      }
      
    • 初学者弓箭:
      {
        "synergy": [],
        "props": { "ammo": 6 },
        "gameplayDesc": "Les munitions reviennent quand vous achevez les ennemis.",
        "moneyCost": 1,
        "group": 5,
        "castCD": 0,
        "ambiantDesc": "C'est le jouet du fils du geolier. On doit bien pouvoir tuer quelques trucs avec ça.",
        "id": "StartBow",
        "icon": { "x": 0, "y": 1, "file": "cardIcons.png", "size": 24 },
        "legendAffixes": [],
        "name": "Arc du fils du geolier",
        "droppable": false,
        "tags": [
          { "tag": "Ranged" },
          { "tag": "NoCritical" },
          { "tag": "HasBullets" },
          { "tag": "LimitedAmmo" },
          { "tag": "RustyItem" }
        ],
        "tier1": "Tactic",
      
    • 老木盾:
      {
        "synergy": [],
        "props": {},
        "gameplayDesc": "Maintenir pour absorber une partie des dégâts.\nAppuyer brièvement pour tenter une {parade@PA} et annuler les dégâts.",
        "moneyCost": 1,
        "group": 6,
        "castCD": 0,
        "id": "StartShield",
        "icon": { "x": 0, "y": 3, "file": "cardIcons.png", "size": 24 },
        "legendAffixes": [],
        "name": "Vieux bouclier en bois",
        "droppable": false,
        "tags": [
          { "tag": "Shield" },
          { "tag": "NegligibleDamage" },
          { "tag": "RustyItem" }
        ],
        "tier1": "Survival",
        "cellCost": 0
      }
      
    • 囚者颈环:
      {
        "synergy": [],
        "props": {},
        "moneyCost": 1,
        "group": 7,
        "castCD": 0,
        "ambiantDesc": "Rien de notable, si ce n'est une odeur persistante de rat crevé.",
        "id": "PrisonerCloth",
        "icon": { "x": 1, "y": 4, "file": "cardIcons.png", "size": 24 },
        "legendAffixes": [],
        "name": "Collier de prisonnier",
        "droppable": false,
        "tags": [{ "tag": "NoDamage" }],
        "cellCost": 0
      }
      
    • 钥匙:
      {
        "synergy": [],
        "props": { "highActivationPriority": true },
        "gameplayDesc": "Ouvre les portes verrouillées (original, non ?)",
        "moneyCost": 0,
        "group": 8,
        "castCD": 0,
        "id": "GenericKey",
        "icon": { "x": 0, "y": 0, "file": "cardIcons.png", "size": 24 },
        "legendAffixes": [],
        "name": "Clé",
        "droppable": false,
        "tags": [{ "tag": "Key" }],
        "cellCost": 0
      }
      
    • 藤蔓符文:
      {
        "synergy": [],
        "props": {},
        "gameplayDesc": "Cette rune {permanente@PE} permet de faire pousser des vignes grimpantes.",
        "moneyCost": 0,
        "group": 9,
        "castCD": 0,
        "id": "LadderKey",
        "icon": { "x": 5, "y": 3, "file": "cardIcons.png", "size": 24 },
        "legendAffixes": [],
        "name": "Rune des vignes",
        "droppable": false,
        "tags": [{ "tag": "MetaKey" }],
        "cellCost": 0
      }
      
    • 威力卷轴:
      {
        "synergy": [],
        "props": { "highActivationPriority": true },
        "gameplayDesc": "Améliore l'une de vos 3 caractéristiques au choix !",
        "moneyCost": 2500,
        "group": 10,
        "castCD": 0,
        "id": "AnyUp",
        "icon": { "x": 11, "y": 2, "file": "cardIcons.png", "size": 24 },
        "legendAffixes": [],
        "name": "Parchemin de puissance",
        "droppable": false,
        "tags": [{ "tag": "TierUpgrade" }],
        "cellCost": 0
      }
      
    • 贤者之石碎片:
      {
        "synergy": [],
        "props": {
          "power": 75000,
          "disableFloatAnim": true,
          "chance": 0,
          "highActivationPriority": true
        },
        "gameplayDesc": "Vous êtes officiellement la créature la plus riche de l'île. Ce petit bijou sans la moindre imperfection vaut ::$power::{iconCoin@img} !",
        "moneyCost": 0,
        "group": 11,
        "castCD": 0,
        "id": "LegendGem",
        "icon": { "x": 17, "y": 11, "file": "cardIcons.png", "size": 24 },
        "legendAffixes": [],
        "name": "Fragment de Pierre Philosophale",
        "droppable": false,
        "tags": [],
        "cellCost": 0
      }
      
    • 杀戮天性:
      {
        "synergy": [],
        "props": {
          "scaledValueCap": 3,
          "actcdrIncPerTier": 0.11,
          "actcdr": 0.4
        },
        "gameplayDesc": "Réduit les délais de réutilisation des compétences de ::actcdr:: sec pour chaque ennemi tué au corps à corps.",
        "moneyCost": 0,
        "group": 12,
        "castCD": 0,
        "id": "P_CDR_Kill",
        "icon": { "x": 1, "y": 13, "file": "cardIcons.png", "size": 24 },
        "legendAffixes": [],
        "name": "Inspiration meurtrière",
        "droppable": true,
        "tags": [],
        "tier1": "Brutality",
        "cellCost": 0
      }
      
    • 经典装束:
      {
        "synergy": [],
        "props": { "revealedAtStart": true },
        "gameplayDesc": "Avec elle, vous avez fait (et ferez encore) les 400 coups.",
        "moneyCost": 0,
        "group": 13,
        "castCD": 0,
        "id": "PrisonerDefault",
        "icon": { "x": 13, "y": 14, "file": "cardIcons.png", "size": 24 },
        "legendAffixes": [],
        "name": "Tenue classique",
        "droppable": false,
        "tags": [],
        "cellCost": 0
      }
      
    • 饮血者:
      {
        "synergy": [{ "tag": "Bleed", "trigger": false }],
        "props": { "prct": 0.03 },
        "gameplayDesc": "Every hit against a bleeding target heals you for ::prct::% of your max health. ",
        "moneyCost": 0,
        "group": 14,
        "castCD": 0,
        "id": "ASP_BloodDrinker",
        "icon": { "x": 2, "y": 19, "file": "cardIcons.png", "size": 24 },
        "legendAffixes": [],
        "name": "Blood Drinker",
        "droppable": true,
        "tags": [{ "tag": "NeedManualUnlock" }],
        "cellCost": 0
      }
      
    • group 为 15 的是 BossRushStatueUnlock,意义不明

先做近战武器。在 melee.py 中提取了所有近战数据。数据的 namegameplayDescambiantDesc 需要翻译。其中 name 一定存在,其余两者不一定存在;这两者有可能有多余的空格,所以需要去掉多余的空格;gameplayDesc 中有 ::duration:: 格式的部分,对应的值在 props 属性中,需要进行替换。双手武器只有一个的 droppableTrue。掘金镐有两份数据,其中只有一份是可掉落的。