Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
3da4faa
feat: add data-driven ContentDB with browser-safe overrides
ramonsamagaio Aug 23, 2026
509a171
content: add reusable melee ranged and spell attack catalog
ramonsamagaio Aug 23, 2026
5bf7cf3
content: add projectile catalog with arrows bolts and magic payloads
ramonsamagaio Aug 23, 2026
6ca7d0d
content: add weapon and armor definitions with sprite attack and proj…
ramonsamagaio Aug 23, 2026
c8716ea
content: expand biome monster roster and authored drop tables
ramonsamagaio Aug 23, 2026
afe62b3
content: add biome tile variant catalog for local territories
ramonsamagaio Aug 23, 2026
bde2fdf
feat: register ContentDB autoload
ramonsamagaio Aug 23, 2026
a0cdfdd
feat: make equipped weapons drive melee hitboxes projectiles knockbac…
ramonsamagaio Aug 23, 2026
58da7f9
feat: route expeditions through data-driven depth combat
ramonsamagaio Aug 23, 2026
7407f81
feat: add scene-driven Content Lab editor shell
ramonsamagaio Aug 23, 2026
9909a12
feat: make Content Lab browse edit validate and persist runtime content
ramonsamagaio Aug 23, 2026
58f7d10
feat: add routable Content Lab screen wrapper
ramonsamagaio Aug 23, 2026
c7e14a4
feat: expose Content Lab from scene-driven navigation
ramonsamagaio Aug 23, 2026
63135ef
feat: add Content Lab button to editable main shell
ramonsamagaio Aug 23, 2026
d8022e7
feat: surface weapon attack projectile and sprite links in Inventory
ramonsamagaio Aug 23, 2026
d079577
docs: define editable item monster attack projectile and tile schemas
ramonsamagaio Aug 23, 2026
d386682
fix: strongly type depth combat and simplify reusable weapon runtime
ramonsamagaio Aug 23, 2026
aa35ccc
fix: strongly type Content Lab and sanitize array summaries
ramonsamagaio Aug 23, 2026
9fcd76a
docs: sync canonical state with data-driven depth pass
ramonsamagaio Aug 23, 2026
e0a7ec9
docs: add content-depth milestones and fix completed scene-shell status
ramonsamagaio Aug 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions data/content/attacks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"slash_quick": {"name":"Quick Slash","mode":"melee_arc","motion":"slash","reach":72,"arc_degrees":100,"duration":0.22,"active_start":0.05,"active_end":0.15,"hitbox_radius":18,"damage_mult":1.0,"knockback_mult":1.0,"visual_id":"fx_slash"},
"slash_heavy": {"name":"Heavy Cleave","mode":"melee_arc","motion":"slash","reach":86,"arc_degrees":128,"duration":0.42,"active_start":0.12,"active_end":0.28,"hitbox_radius":23,"damage_mult":1.45,"knockback_mult":1.55,"visual_id":"fx_slash"},
"axe_cleave": {"name":"Axe Cleave","mode":"melee_arc","motion":"slash","reach":80,"arc_degrees":145,"duration":0.38,"active_start":0.10,"active_end":0.26,"hitbox_radius":24,"damage_mult":1.28,"knockback_mult":1.7,"visual_id":"fx_slash"},
"dagger_stab": {"name":"Dagger Flurry","mode":"melee_thrust","motion":"thrust","reach":58,"width":18,"duration":0.16,"active_start":0.03,"active_end":0.10,"damage_mult":0.72,"knockback_mult":0.45,"visual_id":"fx_slash"},
"spear_thrust": {"name":"Spear Thrust","mode":"melee_thrust","motion":"thrust","reach":112,"width":22,"duration":0.34,"active_start":0.10,"active_end":0.23,"damage_mult":1.16,"knockback_mult":1.35,"visual_id":"fx_slash"},
"hammer_slam": {"name":"Hammer Slam","mode":"melee_slam","motion":"slam","reach":66,"radius":54,"duration":0.58,"active_start":0.25,"active_end":0.36,"damage_mult":1.75,"knockback_mult":2.25,"visual_id":"fx_explosion"},
"bow_shot": {"name":"Bow Shot","mode":"ranged","motion":"draw","duration":0.48,"release_time":0.27,"damage_mult":1.0,"knockback_mult":0.72,"default_projectile":"arrow_wood","visual_id":"fx_arrow"},
"crossbow_shot": {"name":"Crossbow Bolt","mode":"ranged","motion":"recoil","duration":0.62,"release_time":0.18,"damage_mult":1.42,"knockback_mult":1.25,"default_projectile":"bolt_iron","visual_id":"fx_arrow"},
"staff_cast": {"name":"Staff Cast","mode":"ranged","motion":"thrust","duration":0.50,"release_time":0.22,"damage_mult":1.12,"knockback_mult":0.65,"default_projectile":"arcane_bolt","visual_id":"fx_arcane"},
"wand_cast": {"name":"Wand Flick","mode":"ranged","motion":"flick","duration":0.30,"release_time":0.12,"damage_mult":0.78,"knockback_mult":0.35,"default_projectile":"arcane_bolt","visual_id":"fx_arcane"},
"ember_lance": {"name":"Ember Lance","mode":"ranged","motion":"thrust","duration":0.52,"release_time":0.23,"damage_mult":1.22,"knockback_mult":0.95,"default_projectile":"ember_orb","visual_id":"fx_fireball"},
"frost_shard": {"name":"Frost Shard","mode":"ranged","motion":"thrust","duration":0.46,"release_time":0.20,"damage_mult":1.05,"knockback_mult":0.78,"default_projectile":"frost_shard","visual_id":"fx_arcane"},
"void_orb": {"name":"Void Orb","mode":"ranged","motion":"cast","duration":0.66,"release_time":0.34,"damage_mult":1.5,"knockback_mult":1.1,"default_projectile":"void_orb","visual_id":"fx_void"},
"sun_spear": {"name":"Sun Spear","mode":"ranged","motion":"thrust","duration":0.58,"release_time":0.24,"damage_mult":1.3,"knockback_mult":1.05,"default_projectile":"holy_spark","visual_id":"fx_holy"},
"thorn_burst": {"name":"Thorn Burst","mode":"ranged","motion":"cast","duration":0.55,"release_time":0.28,"damage_mult":1.0,"knockback_mult":0.9,"default_projectile":"thorn_spine","visual_id":"fx_arcane"},
"enemy_bite": {"name":"Bite","mode":"melee_arc","motion":"bite","reach":42,"arc_degrees":70,"duration":0.48,"damage_mult":1.0,"knockback_mult":0.8},
"enemy_claw": {"name":"Claw","mode":"melee_arc","motion":"slash","reach":52,"arc_degrees":95,"duration":0.55,"damage_mult":1.05,"knockback_mult":0.85},
"enemy_slam": {"name":"Slam","mode":"melee_slam","motion":"slam","reach":48,"radius":50,"duration":0.9,"damage_mult":1.4,"knockback_mult":1.8},
"enemy_spit": {"name":"Spit","mode":"ranged","motion":"cast","duration":1.1,"release_time":0.55,"damage_mult":0.9,"knockback_mult":0.55,"default_projectile":"acid_spit"},
"enemy_bolt": {"name":"Hex Bolt","mode":"ranged","motion":"cast","duration":1.0,"release_time":0.48,"damage_mult":1.0,"knockback_mult":0.6,"default_projectile":"enemy_hex"}
}
28 changes: 28 additions & 0 deletions data/content/items.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"training_sword": {"name":"Training Sword","kind":"weapon","slot":"weapon","weapon_class":"sword","tier":1,"power":5,"attack_id":"slash_quick","projectile_id":"","attack_speed":1.0,"damage_mult":1.0,"knockback":0.8,"inventory_sprite":"item_sword_training","equipped_sheet":"weapon_sword_training","attack_sprite":"weapon_sword_training","biomes":["Greenlands"]},
"frontier_sabre": {"name":"Frontier Sabre","kind":"weapon","slot":"weapon","weapon_class":"sword","tier":2,"power":12,"attack_id":"slash_quick","projectile_id":"","attack_speed":1.16,"damage_mult":1.08,"knockback":0.9,"inventory_sprite":"item_sword_frontier","equipped_sheet":"weapon_sword_frontier","attack_sprite":"weapon_sword_frontier","biomes":["Greenlands","Ancient Forest"]},
"ruin_greatsword": {"name":"Ruin Greatsword","kind":"weapon","slot":"weapon","weapon_class":"greatsword","tier":4,"power":31,"attack_id":"slash_heavy","projectile_id":"","attack_speed":0.72,"damage_mult":1.38,"knockback":1.8,"inventory_sprite":"item_greatsword_ruin","equipped_sheet":"weapon_greatsword_ruin","attack_sprite":"weapon_greatsword_ruin","biomes":["Iron Hills","Ash Wastes"]},
"woodsman_axe": {"name":"Woodsman's Axe","kind":"weapon","slot":"weapon","weapon_class":"axe","tier":1,"power":8,"attack_id":"axe_cleave","projectile_id":"","attack_speed":0.88,"damage_mult":1.12,"knockback":1.35,"inventory_sprite":"item_axe_woodsman","equipped_sheet":"weapon_axe_woodsman","attack_sprite":"weapon_axe_woodsman","biomes":["Greenlands","Ancient Forest"]},
"cinder_executioner": {"name":"Cinder Executioner","kind":"weapon","slot":"weapon","weapon_class":"axe","tier":5,"power":42,"attack_id":"axe_cleave","projectile_id":"","attack_speed":0.82,"damage_mult":1.48,"knockback":2.0,"inventory_sprite":"item_axe_cinder","equipped_sheet":"weapon_axe_cinder","attack_sprite":"weapon_axe_cinder","biomes":["Ash Wastes"]},
"militia_spear": {"name":"Militia Spear","kind":"weapon","slot":"weapon","weapon_class":"spear","tier":1,"power":7,"attack_id":"spear_thrust","projectile_id":"","attack_speed":0.94,"damage_mult":1.0,"knockback":1.15,"inventory_sprite":"item_spear_militia","equipped_sheet":"weapon_spear_militia","attack_sprite":"weapon_spear_militia","biomes":["Greenlands"]},
"frost_pike": {"name":"Frost Pike","kind":"weapon","slot":"weapon","weapon_class":"spear","tier":4,"power":34,"attack_id":"spear_thrust","projectile_id":"","attack_speed":1.02,"damage_mult":1.28,"knockback":1.55,"inventory_sprite":"item_spear_frost","equipped_sheet":"weapon_spear_frost","attack_sprite":"weapon_spear_frost","biomes":["Frostwild"]},
"mire_dagger": {"name":"Mirefang Dagger","kind":"weapon","slot":"weapon","weapon_class":"dagger","tier":2,"power":13,"attack_id":"dagger_stab","projectile_id":"","attack_speed":1.65,"damage_mult":0.86,"knockback":0.42,"inventory_sprite":"item_dagger_mire","equipped_sheet":"weapon_dagger_mire","attack_sprite":"weapon_dagger_mire","biomes":["Mistfen"]},
"quarry_maul": {"name":"Quarry Maul","kind":"weapon","slot":"weapon","weapon_class":"hammer","tier":3,"power":24,"attack_id":"hammer_slam","projectile_id":"","attack_speed":0.58,"damage_mult":1.46,"knockback":2.35,"inventory_sprite":"item_hammer_quarry","equipped_sheet":"weapon_hammer_quarry","attack_sprite":"weapon_hammer_quarry","biomes":["Iron Hills"]},
"hunter_bow": {"name":"Hunter Bow","kind":"weapon","slot":"weapon","weapon_class":"bow","tier":1,"power":8,"attack_id":"bow_shot","projectile_id":"arrow_wood","attack_speed":1.0,"damage_mult":0.98,"knockback":0.62,"inventory_sprite":"item_bow_hunter","equipped_sheet":"weapon_bow_hunter","attack_sprite":"weapon_bow_hunter","biomes":["Greenlands","Ancient Forest"]},
"ironwood_bow": {"name":"Ironwood Bow","kind":"weapon","slot":"weapon","weapon_class":"bow","tier":3,"power":23,"attack_id":"bow_shot","projectile_id":"arrow_iron","attack_speed":1.12,"damage_mult":1.12,"knockback":0.82,"inventory_sprite":"item_bow_ironwood","equipped_sheet":"weapon_bow_ironwood","attack_sprite":"weapon_bow_ironwood","biomes":["Ancient Forest","Iron Hills"]},
"ember_bow": {"name":"Emberstring Bow","kind":"weapon","slot":"weapon","weapon_class":"bow","tier":4,"power":33,"attack_id":"bow_shot","projectile_id":"arrow_fire","attack_speed":1.06,"damage_mult":1.18,"knockback":0.7,"inventory_sprite":"item_bow_ember","equipped_sheet":"weapon_bow_ember","attack_sprite":"weapon_bow_ember","biomes":["Ash Wastes"]},
"rime_bow": {"name":"Rimeglass Bow","kind":"weapon","slot":"weapon","weapon_class":"bow","tier":4,"power":33,"attack_id":"bow_shot","projectile_id":"arrow_frost","attack_speed":1.08,"damage_mult":1.1,"knockback":0.68,"inventory_sprite":"item_bow_rime","equipped_sheet":"weapon_bow_rime","attack_sprite":"weapon_bow_rime","biomes":["Frostwild"]},
"iron_crossbow": {"name":"Iron Crossbow","kind":"weapon","slot":"weapon","weapon_class":"crossbow","tier":3,"power":27,"attack_id":"crossbow_shot","projectile_id":"bolt_iron","attack_speed":0.7,"damage_mult":1.42,"knockback":1.25,"inventory_sprite":"item_crossbow_iron","equipped_sheet":"weapon_crossbow_iron","attack_sprite":"weapon_crossbow_iron","biomes":["Iron Hills"]},
"apprentice_staff": {"name":"Apprentice Staff","kind":"weapon","slot":"weapon","weapon_class":"staff","tier":1,"power":9,"attack_id":"staff_cast","projectile_id":"arcane_bolt","attack_speed":0.9,"damage_mult":1.0,"knockback":0.55,"inventory_sprite":"item_staff_apprentice","equipped_sheet":"weapon_staff_apprentice","attack_sprite":"weapon_staff_apprentice","biomes":["Greenlands"]},
"ember_staff": {"name":"Cinderwake Staff","kind":"weapon","slot":"weapon","weapon_class":"staff","tier":4,"power":36,"attack_id":"ember_lance","projectile_id":"ember_orb","attack_speed":0.82,"damage_mult":1.34,"knockback":0.9,"inventory_sprite":"item_staff_ember","equipped_sheet":"weapon_staff_ember","attack_sprite":"weapon_staff_ember","biomes":["Ash Wastes"]},
"frost_staff": {"name":"Rimecaller Staff","kind":"weapon","slot":"weapon","weapon_class":"staff","tier":4,"power":35,"attack_id":"frost_shard","projectile_id":"frost_shard","attack_speed":0.92,"damage_mult":1.22,"knockback":0.72,"inventory_sprite":"item_staff_frost","equipped_sheet":"weapon_staff_frost","attack_sprite":"weapon_staff_frost","biomes":["Frostwild"]},
"void_staff": {"name":"Voidglass Staff","kind":"weapon","slot":"weapon","weapon_class":"staff","tier":5,"power":48,"attack_id":"void_orb","projectile_id":"void_orb","attack_speed":0.68,"damage_mult":1.58,"knockback":1.15,"inventory_sprite":"item_staff_void","equipped_sheet":"weapon_staff_void","attack_sprite":"weapon_staff_void","biomes":["Mistfen","Ash Wastes"]},
"sun_staff": {"name":"Sunward Crozier","kind":"weapon","slot":"weapon","weapon_class":"staff","tier":5,"power":46,"attack_id":"sun_spear","projectile_id":"holy_spark","attack_speed":0.76,"damage_mult":1.5,"knockback":1.0,"inventory_sprite":"item_staff_sun","equipped_sheet":"weapon_staff_sun","attack_sprite":"weapon_staff_sun","biomes":["Greenlands","Ancient Forest"]},
"thorn_wand": {"name":"Thorn Wand","kind":"weapon","slot":"weapon","weapon_class":"wand","tier":2,"power":16,"attack_id":"thorn_burst","projectile_id":"thorn_spine","attack_speed":1.28,"damage_mult":0.92,"knockback":0.48,"inventory_sprite":"item_wand_thorn","equipped_sheet":"weapon_wand_thorn","attack_sprite":"weapon_wand_thorn","biomes":["Ancient Forest"]},
"frontier_helm": {"name":"Frontier Helm","kind":"armor","slot":"helm","tier":1,"power":5,"inventory_sprite":"armor_helm_frontier","equipped_sheet":"armor_helm_frontier","biomes":["Greenlands"]},
"iron_cuirass": {"name":"Deepforge Cuirass","kind":"armor","slot":"chest","tier":3,"power":24,"inventory_sprite":"armor_chest_deepforge","equipped_sheet":"armor_chest_deepforge","biomes":["Iron Hills"]},
"briar_gloves": {"name":"Briarbound Gloves","kind":"armor","slot":"gloves","tier":2,"power":15,"inventory_sprite":"armor_gloves_briar","equipped_sheet":"armor_gloves_briar","biomes":["Ancient Forest"]},
"mire_boots": {"name":"Mireglass Boots","kind":"armor","slot":"boots","tier":3,"power":22,"inventory_sprite":"armor_boots_mire","equipped_sheet":"armor_boots_mire","biomes":["Mistfen"]},
"cinder_belt": {"name":"Cinderborn Warbelt","kind":"armor","slot":"belt","tier":4,"power":31,"inventory_sprite":"armor_belt_cinder","equipped_sheet":"armor_belt_cinder","biomes":["Ash Wastes"]},
"rime_mantle": {"name":"Rimebound Mantle","kind":"armor","slot":"cape","tier":4,"power":32,"inventory_sprite":"armor_cape_rime","equipped_sheet":"armor_cape_rime","biomes":["Frostwild"]}
}
Loading
Loading