Version 0.1
basic ovement, 1 ability, basic room layout + enemy movement, boss, flow system
@@ -0,0 +1 @@
|
|||||||
|
.vs
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<Solution>
|
||||||
|
<Project Path="pygame test/pygame test.pyproj" Type="888888a0-9f3d-457c-b088-3a5042f75d52" Id="e4b51f4c-e0be-4f9e-8a8e-d814a78b30c5">
|
||||||
|
<Build Project="false" />
|
||||||
|
</Project>
|
||||||
|
</Solution>
|
||||||
|
After Width: | Height: | Size: 702 B |
|
After Width: | Height: | Size: 680 B |
|
After Width: | Height: | Size: 695 B |
|
After Width: | Height: | Size: 879 B |
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"player_idle": {
|
||||||
|
"frame_time": 0.8,
|
||||||
|
"start_delay": 0.15,
|
||||||
|
"bob_amp": 2,
|
||||||
|
"bob_speed": 2.0
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"enemy": {
|
||||||
|
"light": { "min": 1, "max": 3 },
|
||||||
|
"dark_shade": { "weights": [0.5, 0.5] }
|
||||||
|
},
|
||||||
|
"miniboss": {
|
||||||
|
"light": { "min": 3, "max": 5 },
|
||||||
|
"dark_shade": { "weights": [0.34, 0.33, 0.33] }
|
||||||
|
},
|
||||||
|
"boss": {
|
||||||
|
"light": { "min": 5, "max": 10 }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
{
|
||||||
|
"bg": [30, 30, 30],
|
||||||
|
|
||||||
|
"player": {
|
||||||
|
"light": [200, 200, 200],
|
||||||
|
"dark": [60, 60, 60],
|
||||||
|
"hit": [255, 255, 0]
|
||||||
|
},
|
||||||
|
|
||||||
|
"platform": [80, 80, 80],
|
||||||
|
|
||||||
|
"bars": {
|
||||||
|
"charge_bg": [40, 40, 40],
|
||||||
|
"charge_fill": [0, 180, 255],
|
||||||
|
"health_bg": [60, 0, 0],
|
||||||
|
"health_fill": [255, 0, 0]
|
||||||
|
},
|
||||||
|
|
||||||
|
"enemy": {
|
||||||
|
"normal": [200, 50, 50],
|
||||||
|
"normal_hit": [255, 150, 150],
|
||||||
|
"miniboss": [170, 40, 210],
|
||||||
|
"miniboss_hit": [220, 140, 255],
|
||||||
|
"boss": [240, 220, 80],
|
||||||
|
"boss_hit": [255, 245, 160]
|
||||||
|
},
|
||||||
|
|
||||||
|
"healing": {
|
||||||
|
"dark": [0, 80, 0],
|
||||||
|
"light": [120, 255, 120]
|
||||||
|
},
|
||||||
|
|
||||||
|
"loot": {
|
||||||
|
"awakened": [255, 170, 0],
|
||||||
|
"attuned": [20, 40, 120],
|
||||||
|
"tempered": [200, 200, 200]
|
||||||
|
},
|
||||||
|
|
||||||
|
"ui": {
|
||||||
|
"panel_bg": [20, 20, 20],
|
||||||
|
"panel_border": [120, 120, 120],
|
||||||
|
"panel_inner": [25, 25, 25],
|
||||||
|
"panel_inner_border": [70, 70, 70],
|
||||||
|
"hint_text": [160, 160, 160],
|
||||||
|
"text": [230, 230, 230]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
{
|
||||||
|
"window": {
|
||||||
|
"width": 1300,
|
||||||
|
"height": 800,
|
||||||
|
"caption": "Light_and_Dark Prototype",
|
||||||
|
"fps": 60
|
||||||
|
},
|
||||||
|
"colors": {
|
||||||
|
"bg": [30, 30, 30],
|
||||||
|
"player_light": [200, 200, 200],
|
||||||
|
"player_dark": [60, 60, 60],
|
||||||
|
"platform": [80, 80, 80],
|
||||||
|
|
||||||
|
"charge_bg": [40, 40, 40],
|
||||||
|
"charge_fill": [0, 180, 255],
|
||||||
|
|
||||||
|
"health_bg": [60, 0, 0],
|
||||||
|
"health_fill": [255, 0, 0],
|
||||||
|
|
||||||
|
"enemy": [200, 50, 50],
|
||||||
|
"enemy_hit": [255, 150, 150],
|
||||||
|
|
||||||
|
"miniboss": [170, 40, 210],
|
||||||
|
"miniboss_hit": [220, 140, 255],
|
||||||
|
|
||||||
|
"boss": [240, 220, 80],
|
||||||
|
"boss_hit": [255, 245, 160],
|
||||||
|
|
||||||
|
"player_hit": [255, 255, 0],
|
||||||
|
|
||||||
|
"heal_dark": [0, 80, 0],
|
||||||
|
"heal_light": [120, 255, 120]
|
||||||
|
},
|
||||||
|
"loot_colors": {
|
||||||
|
"awakened": [255, 170, 0],
|
||||||
|
"attuned": [20, 40, 120],
|
||||||
|
"tempered": [200, 200, 200]
|
||||||
|
},
|
||||||
|
"resources": {
|
||||||
|
"base_max_charge": 100.0,
|
||||||
|
"charge_drain_rate": 40.0,
|
||||||
|
"charge_refill_rate": 20.0,
|
||||||
|
"base_max_health": 10,
|
||||||
|
"invincibility_duration": 1.0
|
||||||
|
},
|
||||||
|
"healing": {
|
||||||
|
"heal_duration": 2.0,
|
||||||
|
"heal_cost_flat": 50.0,
|
||||||
|
"heal_slow_mult": 0.30
|
||||||
|
},
|
||||||
|
"boss_shockwave": {
|
||||||
|
"slam_cooldown": 3.0,
|
||||||
|
"trigger_close": 140,
|
||||||
|
"trigger_far": 520,
|
||||||
|
"jump_vel": -16.0,
|
||||||
|
"speed": 600.0,
|
||||||
|
"lifetime": 2.0,
|
||||||
|
"height": 14,
|
||||||
|
"damage": 2
|
||||||
|
},
|
||||||
|
"assets": {
|
||||||
|
"player_sprite": "Player_01.png",
|
||||||
|
"player_sprite_shade": "Player_02.png"
|
||||||
|
},
|
||||||
|
"player": {
|
||||||
|
"sprite_offset_x": 0,
|
||||||
|
"sprite_offset_y": 0,
|
||||||
|
"sprite_scale": 1.6,
|
||||||
|
"hitbox_w": 48,
|
||||||
|
"hitbox_h": 72
|
||||||
|
},
|
||||||
|
"debug": {
|
||||||
|
"drop_debug_print": true
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
"talk_range": 110,
|
||||||
|
"trade_cost": 20,
|
||||||
|
"defaults": {
|
||||||
|
"vendor": {
|
||||||
|
"trade_cost": 20,
|
||||||
|
"offers": [
|
||||||
|
{ "slot": "helmet", "label": "Helmet", "rarity": "tempered" },
|
||||||
|
{ "slot": "chest", "label": "Chestplate", "rarity": "tempered" },
|
||||||
|
{ "slot": "pants", "label": "Greaves", "rarity": "tempered" }
|
||||||
|
],
|
||||||
|
"greet_light": "Greetings, little light!",
|
||||||
|
"greet_shade": "Stay away from me, evil!",
|
||||||
|
"greet_hint": "(Press F to interact)"
|
||||||
|
},
|
||||||
|
"upgrader": {
|
||||||
|
"trade_cost": 0,
|
||||||
|
"offers": [
|
||||||
|
{ "type": "upgrade_attune", "required_count": 5 }
|
||||||
|
],
|
||||||
|
"greet_light": "Bring me five tempered copies.",
|
||||||
|
"greet_shade": "Not here for your darkness.",
|
||||||
|
"greet_hint": "(Press F to upgrade)"
|
||||||
|
},
|
||||||
|
"necklace_vendor": {
|
||||||
|
"trade_cost": 20,
|
||||||
|
"offers": [
|
||||||
|
{ "type": "sell_specific", "item_id": "necklace_placeholder", "label": "Plain Necklace", "cost": 10 },
|
||||||
|
{ "type": "sell_specific", "item_id": "necklace_vigor", "label": "Charm of Vigor", "cost": 20 },
|
||||||
|
{ "type": "sell_specific", "item_id": "necklace_flow", "label": "Charm of Flow", "cost": 20 },
|
||||||
|
{ "type": "sell_specific", "item_id": "necklace_haste", "label": "Charm of Haste", "cost": 20 }
|
||||||
|
],
|
||||||
|
"greet_light": "Choose a necklace.",
|
||||||
|
"greet_shade": "No shade trinkets yet.",
|
||||||
|
"greet_hint": "(Press F to browse)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
{
|
||||||
|
"player": {
|
||||||
|
"speed_light": 5.0,
|
||||||
|
"speed_shade": 3.5,
|
||||||
|
"jump_light": -12.0,
|
||||||
|
"jump_shade": -9.0,
|
||||||
|
"gravity_light": 0.5,
|
||||||
|
"gravity_shade": 0.4
|
||||||
|
},
|
||||||
|
|
||||||
|
"resources": {
|
||||||
|
"base_max_charge": 100.0,
|
||||||
|
"charge_drain_rate": 40.0,
|
||||||
|
"charge_refill_rate": 20.0,
|
||||||
|
"base_max_health": 10,
|
||||||
|
"invincibility_duration": 1.0
|
||||||
|
},
|
||||||
|
|
||||||
|
"healing": {
|
||||||
|
"heal_duration": 2.0,
|
||||||
|
"heal_cost_flat": 50.0,
|
||||||
|
"heal_slow_mult": 0.30
|
||||||
|
},
|
||||||
|
|
||||||
|
"boss_shockwave": {
|
||||||
|
"slam_cooldown": 3.0,
|
||||||
|
"trigger_close": 140.0,
|
||||||
|
"trigger_far": 520.0,
|
||||||
|
"jump_vel": -16.0,
|
||||||
|
"shockwave_speed": 600.0,
|
||||||
|
"shockwave_lifetime": 2.0,
|
||||||
|
"shockwave_height": 14,
|
||||||
|
"shockwave_damage": 2
|
||||||
|
},
|
||||||
|
|
||||||
|
"loot_physics": {
|
||||||
|
"gravity": 900.0,
|
||||||
|
"terminal_vel": 900.0,
|
||||||
|
"bounce": 0.0,
|
||||||
|
"friction": 0.85,
|
||||||
|
"bob_amp": 3.0,
|
||||||
|
"bob_speed": 2.2
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"charge_cost": 5.0,
|
||||||
|
"damage_mult": 0.5,
|
||||||
|
"cooldown": 0.45,
|
||||||
|
"projectile": {
|
||||||
|
"speed": 650.0,
|
||||||
|
"lifetime": 1.2,
|
||||||
|
"size": [14, 6]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"room_id": "room_05.json",
|
||||||
|
"chest_pos": [520, 330],
|
||||||
|
"ability_pos": [820, 210],
|
||||||
|
"chest_coins": [30, 30]
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"coins_hud": {
|
||||||
|
"icon_size": 14,
|
||||||
|
"icon_gap": 6,
|
||||||
|
"x_start_offset": 220,
|
||||||
|
"y": 72,
|
||||||
|
"group_spacing": 90
|
||||||
|
},
|
||||||
|
|
||||||
|
"inventory_ui": {
|
||||||
|
"panel": { "x": 20, "y": 20, "w": 560, "h": 545, "pad": 10 },
|
||||||
|
"list": { "w": 360, "line_h": 18, "header_h": 40, "pad_y": 6, "pad_right": 14 },
|
||||||
|
"icons": { "size": 16, "gap": 6 },
|
||||||
|
"details": { "stats_h": 155, "hint_h": 24, "gap": 8 },
|
||||||
|
"equipped": { "line_gap": 4 }
|
||||||
|
},
|
||||||
|
|
||||||
|
"pickup_feed": {
|
||||||
|
"max_lines": 6,
|
||||||
|
"duration": 3.0,
|
||||||
|
"fade_time": 0.6,
|
||||||
|
"pad_x": 10,
|
||||||
|
"pad_y": 6,
|
||||||
|
"line_gap": 4,
|
||||||
|
"x": 14,
|
||||||
|
"y_offset_from_center": -10
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"normal": {
|
||||||
|
"rolls": 0,
|
||||||
|
"rarity_table": { "none": 1.0 }
|
||||||
|
},
|
||||||
|
"miniboss": {
|
||||||
|
"default_pool": "armor",
|
||||||
|
"rolls": 1,
|
||||||
|
"rarity_table": { "tempered": 0.85, "attuned": 0.15, "none": 0.0 }
|
||||||
|
},
|
||||||
|
"boss": {
|
||||||
|
"default_pool": "armor",
|
||||||
|
"guaranteed": [
|
||||||
|
{ "rarity": "attuned", "count": 1 },
|
||||||
|
{ "item_pool": "necklace", "count": 1 }
|
||||||
|
],
|
||||||
|
"rolls": 1,
|
||||||
|
"rarity_table": { "awakened": 0.15, "none": 0.85 }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"enemy": {
|
||||||
|
"rect": [40, 60],
|
||||||
|
"health": 3,
|
||||||
|
"speed": 2.2,
|
||||||
|
"air_speed": 2.0,
|
||||||
|
"detection_range": 240,
|
||||||
|
"contact_damage": 1,
|
||||||
|
"drop_profile": "normal"
|
||||||
|
},
|
||||||
|
"miniboss": {
|
||||||
|
"rect": [70, 95],
|
||||||
|
"health": 18,
|
||||||
|
"speed": 1.8,
|
||||||
|
"air_speed": 1.6,
|
||||||
|
"detection_range": 360,
|
||||||
|
"contact_damage": 2,
|
||||||
|
"drop_profile": "miniboss"
|
||||||
|
},
|
||||||
|
|
||||||
|
"boss": {
|
||||||
|
"rect": [110, 120],
|
||||||
|
"health": 10,
|
||||||
|
"speed": 1.6,
|
||||||
|
"air_speed": 1.4,
|
||||||
|
"detection_range": 500,
|
||||||
|
"contact_damage": 3,
|
||||||
|
"drop_profile": "boss"
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,373 @@
|
|||||||
|
{
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"id": "dawnrunner_helm",
|
||||||
|
"name": "Dawnrunner Helmet",
|
||||||
|
"set": "dawnrunner",
|
||||||
|
"slot": "helmet",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "move_speed_light_pct": 0.1 } },
|
||||||
|
"attuned": { "extra_stats": { "move_speed_light_pct": 0.1, "heal_speed_pct": 0.1 } },
|
||||||
|
"awakened": { "extra_stats": { "move_speed_light_pct": 0.15, "heal_speed_pct": 0.2 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dawnrunner_chest",
|
||||||
|
"name": "Dawnrunner Chestplate",
|
||||||
|
"set": "dawnrunner",
|
||||||
|
"slot": "chest",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "charge": 10 } },
|
||||||
|
"attuned": { "extra_stats": { "charge": 15, "move_speed_light_pct": 0.05 } },
|
||||||
|
"awakened": { "extra_stats": { "charge": 15, "move_speed_light_pct": 0.05, "heal_plus": 1 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dawnrunner_greaves",
|
||||||
|
"name": "Dawnrunner Greaves",
|
||||||
|
"set": "dawnrunner",
|
||||||
|
"slot": "pants",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "heal_speed_pct": 0.1 } },
|
||||||
|
"attuned": { "extra_stats": { "heal_speed_pct": 0.1, "move_speed_light_pct": 0.1 } },
|
||||||
|
"awakened": { "extra_stats": { "heal_speed_pct": 0.15, "move_speed_light_pct": 0.15 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"id": "gravemark_helm",
|
||||||
|
"name": "Gravemark Helmet",
|
||||||
|
"set": "gravemark",
|
||||||
|
"slot": "helmet",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "charge": 10 } },
|
||||||
|
"attuned": { "extra_stats": { "charge": 15, "charge_regen_pct": 0.1 } },
|
||||||
|
"awakened": { "extra_stats": { "charge": 15, "charge_regen_pct": 0.15, "health": 5 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "gravemark_chest",
|
||||||
|
"name": "Gravemark Chestplate",
|
||||||
|
"set": "gravemark",
|
||||||
|
"slot": "chest",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "charge_regen_pct": 0.1 } },
|
||||||
|
"attuned": { "extra_stats": { "charge_regen_pct": 0.1, "health": 5 } },
|
||||||
|
"awakened": { "extra_stats": { "charge_regen_pct": 0.2, "health": 10 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "gravemark_greaves",
|
||||||
|
"name": "Gravemark Greaves",
|
||||||
|
"set": "gravemark",
|
||||||
|
"slot": "pants",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "charge": 10 } },
|
||||||
|
"attuned": { "extra_stats": { "charge": 10, "health": 5 } },
|
||||||
|
"awakened": { "extra_stats": { "charge": 20, "health": 5 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"id": "vitalweave_helm",
|
||||||
|
"name": "Vitalweave Helmet",
|
||||||
|
"set": "vitalweave",
|
||||||
|
"slot": "helmet",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "health": 5 } },
|
||||||
|
"attuned": { "extra_stats": { "health": 10 } },
|
||||||
|
"awakened": { "extra_stats": { "health": 15 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "vitalweave_chest",
|
||||||
|
"name": "Vitalweave Chestplate",
|
||||||
|
"set": "vitalweave",
|
||||||
|
"slot": "chest",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "heal_speed_pct": 0.1 } },
|
||||||
|
"attuned": { "extra_stats": { "heal_speed_pct": 0.15 } },
|
||||||
|
"awakened": { "extra_stats": { "heal_speed_pct": 0.15, "health": 5 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "vitalweave_greaves",
|
||||||
|
"name": "Vitalweave Greaves",
|
||||||
|
"set": "vitalweave",
|
||||||
|
"slot": "pants",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "charge_regen_pct": 0.1 } },
|
||||||
|
"attuned": { "extra_stats": { "charge_regen_pct": 0.15 } },
|
||||||
|
"awakened": { "extra_stats": { "charge_regen_pct": 0.35 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"id": "duskwarrior_helm",
|
||||||
|
"name": "Duskwarrior Helmet",
|
||||||
|
"set": "duskwarrior",
|
||||||
|
"slot": "helmet",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "charge": 10 } },
|
||||||
|
"attuned": { "extra_stats": { "charge": 10, "health": 5 } },
|
||||||
|
"awakened": { "extra_stats": { "charge": 15, "health": 5, "charge_regen_pct": 0.1 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "duskwarrior_chest",
|
||||||
|
"name": "Duskwarrior Chestplate",
|
||||||
|
"set": "duskwarrior",
|
||||||
|
"slot": "chest",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "health": 5 } },
|
||||||
|
"attuned": { "extra_stats": { "health": 10, "move_speed_shade_pct": 0.1 } },
|
||||||
|
"awakened": { "extra_stats": { "health": 10, "move_speed_shade_pct": 0.2 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "duskwarrior_greaves",
|
||||||
|
"name": "Duskwarrior Greaves",
|
||||||
|
"set": "duskwarrior",
|
||||||
|
"slot": "pants",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "move_speed_shade_pct": 0.15 } },
|
||||||
|
"attuned": { "extra_stats": { "move_speed_shade_pct": 0.25 } },
|
||||||
|
"awakened": { "extra_stats": { "move_speed_shade_pct": 0.25, "charge": 10 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"id": "twister_helm",
|
||||||
|
"name": "Twister Helmet",
|
||||||
|
"set": "twister",
|
||||||
|
"slot": "helmet",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "attack_speed_pct": 0.1 } },
|
||||||
|
"attuned": { "extra_stats": { "attack_speed_pct": 0.15 } },
|
||||||
|
"awakened": { "extra_stats": { "attack_speed_pct": 0.15, "charge_regen_pct": 0.15 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "twister_chest",
|
||||||
|
"name": "Twister Chestplate",
|
||||||
|
"set": "twister",
|
||||||
|
"slot": "chest",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "charge": 10 } },
|
||||||
|
"attuned": { "extra_stats": { "charge": 15, "health": 5 } },
|
||||||
|
"awakened": { "extra_stats": { "charge": 15, "health": 10, "move_speed_pct": 0.1 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "twister_greaves",
|
||||||
|
"name": "Twister Greaves",
|
||||||
|
"set": "twister",
|
||||||
|
"slot": "pants",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "move_speed_pct": 0.1 } },
|
||||||
|
"attuned": { "extra_stats": { "move_speed_pct": 0.15 } },
|
||||||
|
"awakened": { "extra_stats": { "move_speed_pct": 0.25 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"id": "paladin_helm",
|
||||||
|
"name": "Paladin Helmet",
|
||||||
|
"set": "paladin",
|
||||||
|
"slot": "helmet",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "health": 5 } },
|
||||||
|
"attuned": { "extra_stats": { "health": 10, "negate_damage_chance": 0.05 } },
|
||||||
|
"awakened": { "extra_stats": { "health": 15, "negate_damage_chance": 0.1, "knockback_resistance": 0.25 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "paladin_chest",
|
||||||
|
"name": "Paladin Chestplate",
|
||||||
|
"set": "paladin",
|
||||||
|
"slot": "chest",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "health": 5 } },
|
||||||
|
"attuned": { "extra_stats": { "health": 10, "charge": 10 } },
|
||||||
|
"awakened": { "extra_stats": { "health": 10, "charge": 10, "negate_damage_chance": 0.1 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "paladin_greaves",
|
||||||
|
"name": "Paladin Greaves",
|
||||||
|
"set": "paladin",
|
||||||
|
"slot": "pants",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "health": 5 } },
|
||||||
|
"attuned": { "extra_stats": { "health": 10, "charge_regen_pct": 0.1 } },
|
||||||
|
"awakened": { "extra_stats": { "health": 15, "charge_regen_pct": 0.2 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"id": "luminal_growth_helm",
|
||||||
|
"name": "Luminal Growth Helmet",
|
||||||
|
"set": "luminal_growth",
|
||||||
|
"slot": "helmet",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "charge_regen_pct": 0.1 } },
|
||||||
|
"attuned": { "extra_stats": { "charge_regen_pct": 0.1, "health": 5 } },
|
||||||
|
"awakened": { "extra_stats": { "charge_regen_pct": 0.15, "health": 10, "negate_damage_chance": 0.05 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "luminal_growth_chest",
|
||||||
|
"name": "Luminal Growth Chestplate",
|
||||||
|
"set": "luminal_growth",
|
||||||
|
"slot": "chest",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "health": 5 } },
|
||||||
|
"attuned": { "extra_stats": { "health": 5, "charge_regen_pct": 0.15 } },
|
||||||
|
"awakened": { "extra_stats": { "health": 10, "charge_regen_pct": 0.2 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "luminal_growth_greaves",
|
||||||
|
"name": "Luminal Growth Greaves",
|
||||||
|
"set": "luminal_growth",
|
||||||
|
"slot": "pants",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "charge": 10 } },
|
||||||
|
"attuned": { "extra_stats": { "charge": 15 } },
|
||||||
|
"awakened": { "extra_stats": { "charge": 15, "charge_regen_pct": 0.1, "health": 5 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"id": "abyss_cleaver_helm",
|
||||||
|
"name": "Abyss Cleaver Helmet",
|
||||||
|
"set": "abyss_cleaver",
|
||||||
|
"slot": "helmet",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "shade_double_damage_chance": 0.05, "charge": 5 } },
|
||||||
|
"attuned": { "extra_stats": { "shade_double_damage_chance": 0.1, "charge": 10 } },
|
||||||
|
"awakened": { "extra_stats": { "shade_double_damage_chance": 0.15, "charge": 10, "health": 5 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "abyss_cleaver_chest",
|
||||||
|
"name": "Abyss Cleaver Chestplate",
|
||||||
|
"set": "abyss_cleaver",
|
||||||
|
"slot": "chest",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "attack_speed_pct": 0.1 } },
|
||||||
|
"attuned": { "extra_stats": { "attack_speed_pct": 0.1, "shade_double_damage_chance": 0.05 } },
|
||||||
|
"awakened": { "extra_stats": { "attack_speed_pct": 0.15, "shade_double_damage_chance": 0.05 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "abyss_cleaver_greaves",
|
||||||
|
"name": "Abyss Cleaver Greaves",
|
||||||
|
"set": "abyss_cleaver",
|
||||||
|
"slot": "pants",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "charge": 10 } },
|
||||||
|
"attuned": { "extra_stats": { "charge": 15, "health": 5 } },
|
||||||
|
"awakened": { "extra_stats": { "charge": 15, "health": 10, "attack_speed_pct": 0.1 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"id": "umbraflow_helm",
|
||||||
|
"name": "Umbraflow Helmet",
|
||||||
|
"set": "umbraflow",
|
||||||
|
"slot": "helmet",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "jump_height_shade_pct": 0.1 } },
|
||||||
|
"attuned": { "extra_stats": { "jump_height_shade_pct": 0.2 } },
|
||||||
|
"awakened": { "extra_stats": { "jump_height_shade_pct": 0.25, "shade_damage_flat": 1 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "umbraflow_chest",
|
||||||
|
"name": "Umbraflow Chestplate",
|
||||||
|
"set": "umbraflow",
|
||||||
|
"slot": "chest",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "charge": 10 } },
|
||||||
|
"attuned": { "extra_stats": { "charge": 15 } },
|
||||||
|
"awakened": { "extra_stats": { "charge": 25 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "umbraflow_greaves",
|
||||||
|
"name": "Umbraflow Greaves",
|
||||||
|
"set": "umbraflow",
|
||||||
|
"slot": "pants",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "move_speed_shade_pct": 0.1 } },
|
||||||
|
"attuned": { "extra_stats": { "move_speed_shade_pct": 0.15 } },
|
||||||
|
"awakened": { "extra_stats": { "move_speed_shade_pct": 0.2, "health": 10 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"id": "adaptive_traveller_helm",
|
||||||
|
"name": "Adaptive Traveller's Helmet",
|
||||||
|
"set": "adaptive_traveller",
|
||||||
|
"slot": "helmet",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "charge": 10 } },
|
||||||
|
"attuned": { "extra_stats": { "charge": 15 } },
|
||||||
|
"awakened": { "extra_stats": { "charge": 15, "charge_regen_pct": 0.15 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "adaptive_traveller_chest",
|
||||||
|
"name": "Adaptive Traveller's Chestplate",
|
||||||
|
"set": "adaptive_traveller",
|
||||||
|
"slot": "chest",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "health": 5 } },
|
||||||
|
"attuned": { "extra_stats": { "health": 5, "move_speed_light_pct": 0.1 } },
|
||||||
|
"awakened": { "extra_stats": { "health": 10, "move_speed_light_pct": 0.15 } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "adaptive_traveller_greaves",
|
||||||
|
"name": "Adaptive Traveller's Greaves",
|
||||||
|
"set": "adaptive_traveller",
|
||||||
|
"slot": "pants",
|
||||||
|
"base_stats": {},
|
||||||
|
"rarity_overrides": {
|
||||||
|
"tempered": { "extra_stats": { "health": 5 } },
|
||||||
|
"attuned": { "extra_stats": { "health": 5, "move_speed_shade_pct": 0.1 } },
|
||||||
|
"awakened": { "extra_stats": { "health": 10, "move_speed_shade_pct": 0.15 } }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"id": "necklace_placeholder",
|
||||||
|
"name": "Plain Necklace",
|
||||||
|
"slot": "necklace",
|
||||||
|
"item_type": "necklace",
|
||||||
|
"base_stats": { "health": 2 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "necklace_vigor",
|
||||||
|
"name": "Charm of Vigor",
|
||||||
|
"slot": "necklace",
|
||||||
|
"item_type": "necklace",
|
||||||
|
"base_stats": { "health": 5 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "necklace_flow",
|
||||||
|
"name": "Charm of Flow",
|
||||||
|
"slot": "necklace",
|
||||||
|
"item_type": "necklace",
|
||||||
|
"base_stats": { "charge": 10 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "necklace_haste",
|
||||||
|
"name": "Charm of Haste",
|
||||||
|
"slot": "necklace",
|
||||||
|
"item_type": "necklace",
|
||||||
|
"base_stats": { "move_speed_pct": 0.10 }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"tempered": { "tier": 1, "allows_abilities": false },
|
||||||
|
"attuned": { "tier": 2, "allows_abilities": false },
|
||||||
|
"awakened": { "tier": 3, "allows_abilities": true }
|
||||||
|
}
|
||||||
@@ -0,0 +1,177 @@
|
|||||||
|
{
|
||||||
|
"dawnrunner": {
|
||||||
|
"required_pieces": 3,
|
||||||
|
"attuned": {
|
||||||
|
"type": "passive",
|
||||||
|
"effects": { "health": 5 }
|
||||||
|
},
|
||||||
|
"awakened": {
|
||||||
|
"type": "passive",
|
||||||
|
"effects": { "health": 10, "move_speed_light_pct": 0.10 }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"gravemark": {
|
||||||
|
"required_pieces": 3,
|
||||||
|
"attuned": {
|
||||||
|
"type": "passive",
|
||||||
|
"effects": { "charge": 5 }
|
||||||
|
},
|
||||||
|
"awakened": {
|
||||||
|
"type": "passive",
|
||||||
|
"effects": { "charge": 10, "charge_regen_pct": 0.10 }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"vitalweave": {
|
||||||
|
"required_pieces": 3,
|
||||||
|
"attuned": {
|
||||||
|
"type": "passive",
|
||||||
|
"effects": { "health": 5 }
|
||||||
|
},
|
||||||
|
"awakened": {
|
||||||
|
"type": "passive",
|
||||||
|
"effects": { "health": 10, "heal_plus": 2 }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"duskwarrior": {
|
||||||
|
"required_pieces": 3,
|
||||||
|
"attuned": {
|
||||||
|
"type": "passive",
|
||||||
|
"effects": { "shade_damage_flat": 1 }
|
||||||
|
},
|
||||||
|
"awakened": {
|
||||||
|
"type": "passive",
|
||||||
|
"effects": { "shade_damage_flat": 1 },
|
||||||
|
"conditional_effects": [
|
||||||
|
{
|
||||||
|
"condition": "on_hit_in_shade",
|
||||||
|
"effects": { "restore_charge": 5 }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"twister": {
|
||||||
|
"required_pieces": 3,
|
||||||
|
"attuned": {
|
||||||
|
"type": "passive",
|
||||||
|
"effects": { "charge": -10, "negate_shade_speed_penalty": true }
|
||||||
|
},
|
||||||
|
"awakened": {
|
||||||
|
"type": "passive",
|
||||||
|
"effects": { "negate_shade_speed_penalty": true },
|
||||||
|
"conditional_effects": [
|
||||||
|
{
|
||||||
|
"condition": "after_form_switch",
|
||||||
|
"duration_sec": 2.0,
|
||||||
|
"effects": { "move_speed_pct": 0.15 }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"paladin": {
|
||||||
|
"required_pieces": 3,
|
||||||
|
"attuned": {
|
||||||
|
"type": "passive",
|
||||||
|
"effects": { "negate_damage_chance": 0.05 }
|
||||||
|
},
|
||||||
|
"awakened": {
|
||||||
|
"type": "passive",
|
||||||
|
"effects": { "negate_damage_chance": 0.05, "health": 10 }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"luminal_growth": {
|
||||||
|
"required_pieces": 3,
|
||||||
|
"attuned": {
|
||||||
|
"type": "passive",
|
||||||
|
"conditional_effects": [
|
||||||
|
{
|
||||||
|
"condition": "standing_still_in_light",
|
||||||
|
"effects": { "charge_regen_pct": 0.20 }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"awakened": {
|
||||||
|
"type": "passive",
|
||||||
|
"conditional_effects": [
|
||||||
|
{
|
||||||
|
"condition": "standing_still_in_light",
|
||||||
|
"effects": { "charge_regen_pct": 0.20, "negate_damage_chance": 0.10 }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"abyss_cleaver": {
|
||||||
|
"required_pieces": 3,
|
||||||
|
"attuned": {
|
||||||
|
"type": "passive",
|
||||||
|
"conditional_effects": [
|
||||||
|
{
|
||||||
|
"condition": "on_kill",
|
||||||
|
"chance": 0.05,
|
||||||
|
"effects": { "heal_flat": 1 }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"awakened": {
|
||||||
|
"type": "passive",
|
||||||
|
"conditional_effects": [
|
||||||
|
{
|
||||||
|
"condition": "on_kill",
|
||||||
|
"chance": 0.10,
|
||||||
|
"effects": { "heal_flat": 1 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"condition": "on_kill",
|
||||||
|
"duration_sec": 2.0,
|
||||||
|
"effects": { "move_speed_pct": 0.20 }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"umbraflow": {
|
||||||
|
"required_pieces": 3,
|
||||||
|
"attuned": {
|
||||||
|
"type": "passive",
|
||||||
|
"effects": { "shade_charge_drain_reduction_pct": 0.20 }
|
||||||
|
},
|
||||||
|
"awakened": {
|
||||||
|
"type": "passive",
|
||||||
|
"effects": { "shade_charge_drain_reduction_pct": 0.35 }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"adaptive_traveller": {
|
||||||
|
"required_pieces": 3,
|
||||||
|
"attuned": {
|
||||||
|
"type": "passive",
|
||||||
|
"conditional_effects": [
|
||||||
|
{
|
||||||
|
"condition": "after_form_switch",
|
||||||
|
"duration_sec": 2.0,
|
||||||
|
"effects": { "move_speed_pct": 0.15 }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"awakened": {
|
||||||
|
"type": "passive",
|
||||||
|
"conditional_effects": [
|
||||||
|
{
|
||||||
|
"condition": "after_form_switch",
|
||||||
|
"duration_sec": 2.0,
|
||||||
|
"effects": { "move_speed_pct": 0.25 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"condition": "on_form_switch",
|
||||||
|
"effects": { "restore_charge": 10 }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"objects": {
|
||||||
|
"lamp": {
|
||||||
|
"type": "light_source",
|
||||||
|
"charge_regen_range": 180
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 327 B |
|
After Width: | Height: | Size: 445 B |
|
After Width: | Height: | Size: 319 B |
|
After Width: | Height: | Size: 443 B |
|
After Width: | Height: | Size: 313 B |
|
After Width: | Height: | Size: 392 B |
|
After Width: | Height: | Size: 614 B |
|
After Width: | Height: | Size: 306 B |
|
After Width: | Height: | Size: 257 B |
|
After Width: | Height: | Size: 219 B |
|
After Width: | Height: | Size: 215 B |
|
After Width: | Height: | Size: 305 B |
|
After Width: | Height: | Size: 250 B |
|
After Width: | Height: | Size: 150 B |
|
After Width: | Height: | Size: 128 B |
|
After Width: | Height: | Size: 135 B |
|
After Width: | Height: | Size: 136 B |
@@ -0,0 +1,135 @@
|
|||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"id": "room_01",
|
||||||
|
"name": "Room 01 - Tutorial Steps"
|
||||||
|
},
|
||||||
|
"player_spawn": [
|
||||||
|
-260,
|
||||||
|
500
|
||||||
|
],
|
||||||
|
"bounds": {
|
||||||
|
"kill_y": 2000
|
||||||
|
},
|
||||||
|
"platforms": {
|
||||||
|
"ground": [
|
||||||
|
[
|
||||||
|
-500,
|
||||||
|
640,
|
||||||
|
2060,
|
||||||
|
460
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-500,
|
||||||
|
560,
|
||||||
|
520,
|
||||||
|
80
|
||||||
|
],
|
||||||
|
[
|
||||||
|
1560,
|
||||||
|
220,
|
||||||
|
120,
|
||||||
|
880
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-1100,
|
||||||
|
-520,
|
||||||
|
600,
|
||||||
|
1620
|
||||||
|
],
|
||||||
|
[
|
||||||
|
1680,
|
||||||
|
-100,
|
||||||
|
920,
|
||||||
|
1200
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-500,
|
||||||
|
-520,
|
||||||
|
940,
|
||||||
|
840
|
||||||
|
],
|
||||||
|
[
|
||||||
|
440,
|
||||||
|
-520,
|
||||||
|
2160,
|
||||||
|
420
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"floating": [
|
||||||
|
[
|
||||||
|
800,
|
||||||
|
220,
|
||||||
|
320,
|
||||||
|
40
|
||||||
|
],
|
||||||
|
[
|
||||||
|
880,
|
||||||
|
520,
|
||||||
|
240,
|
||||||
|
40
|
||||||
|
],
|
||||||
|
[
|
||||||
|
500,
|
||||||
|
400,
|
||||||
|
320,
|
||||||
|
40
|
||||||
|
],
|
||||||
|
[
|
||||||
|
440,
|
||||||
|
280,
|
||||||
|
200,
|
||||||
|
40
|
||||||
|
],
|
||||||
|
[
|
||||||
|
1220,
|
||||||
|
220,
|
||||||
|
340,
|
||||||
|
40
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"enemies": [],
|
||||||
|
"exits": [
|
||||||
|
{
|
||||||
|
"rect": [
|
||||||
|
-420,
|
||||||
|
480,
|
||||||
|
90,
|
||||||
|
80
|
||||||
|
],
|
||||||
|
"to": "room_reward_01",
|
||||||
|
"spawn": [
|
||||||
|
120,
|
||||||
|
300
|
||||||
|
],
|
||||||
|
"hint": "Reward"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rect": [
|
||||||
|
1560,
|
||||||
|
100,
|
||||||
|
120,
|
||||||
|
120
|
||||||
|
],
|
||||||
|
"to": "room_02",
|
||||||
|
"spawn": [
|
||||||
|
-420,
|
||||||
|
300
|
||||||
|
],
|
||||||
|
"hint": "",
|
||||||
|
"spawn_id": "entry_1"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ability_doors": [],
|
||||||
|
"entry_spawns": {},
|
||||||
|
"props": [
|
||||||
|
{
|
||||||
|
"type": "light_source",
|
||||||
|
"pos": [
|
||||||
|
0,
|
||||||
|
560
|
||||||
|
],
|
||||||
|
"radius": 180
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,205 @@
|
|||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"id": "room_02",
|
||||||
|
"name": "Room 02 - First Enemies"
|
||||||
|
},
|
||||||
|
"player_spawn": [
|
||||||
|
-320,
|
||||||
|
300
|
||||||
|
],
|
||||||
|
"bounds": {
|
||||||
|
"kill_y": 2000
|
||||||
|
},
|
||||||
|
"platforms": {
|
||||||
|
"ground": [
|
||||||
|
[
|
||||||
|
-500,
|
||||||
|
360,
|
||||||
|
2440,
|
||||||
|
660
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-760,
|
||||||
|
-580,
|
||||||
|
260,
|
||||||
|
1600
|
||||||
|
],
|
||||||
|
[
|
||||||
|
1940,
|
||||||
|
-580,
|
||||||
|
240,
|
||||||
|
1600
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-760,
|
||||||
|
-820,
|
||||||
|
2940,
|
||||||
|
240
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"floating": [
|
||||||
|
[
|
||||||
|
260,
|
||||||
|
260,
|
||||||
|
140,
|
||||||
|
18
|
||||||
|
],
|
||||||
|
[
|
||||||
|
520,
|
||||||
|
220,
|
||||||
|
140,
|
||||||
|
18
|
||||||
|
],
|
||||||
|
[
|
||||||
|
760,
|
||||||
|
180,
|
||||||
|
140,
|
||||||
|
18
|
||||||
|
],
|
||||||
|
[
|
||||||
|
940,
|
||||||
|
120,
|
||||||
|
170,
|
||||||
|
18
|
||||||
|
],
|
||||||
|
[
|
||||||
|
1200,
|
||||||
|
160,
|
||||||
|
170,
|
||||||
|
18
|
||||||
|
],
|
||||||
|
[
|
||||||
|
1460,
|
||||||
|
100,
|
||||||
|
170,
|
||||||
|
18
|
||||||
|
],
|
||||||
|
[
|
||||||
|
1200,
|
||||||
|
-20,
|
||||||
|
280,
|
||||||
|
40
|
||||||
|
],
|
||||||
|
[
|
||||||
|
40,
|
||||||
|
-140,
|
||||||
|
1100,
|
||||||
|
60
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-500,
|
||||||
|
-140,
|
||||||
|
460,
|
||||||
|
60
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-500,
|
||||||
|
-260,
|
||||||
|
260,
|
||||||
|
40
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-500,
|
||||||
|
-380,
|
||||||
|
160,
|
||||||
|
40
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-320,
|
||||||
|
-500,
|
||||||
|
1380,
|
||||||
|
40
|
||||||
|
],
|
||||||
|
[
|
||||||
|
1140,
|
||||||
|
-440,
|
||||||
|
340,
|
||||||
|
40
|
||||||
|
],
|
||||||
|
[
|
||||||
|
1560,
|
||||||
|
-380,
|
||||||
|
380,
|
||||||
|
40
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"enemies": [
|
||||||
|
{
|
||||||
|
"type": "enemy",
|
||||||
|
"pos": [
|
||||||
|
240,
|
||||||
|
-200
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "enemy",
|
||||||
|
"pos": [
|
||||||
|
620,
|
||||||
|
140
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "enemy",
|
||||||
|
"pos": [
|
||||||
|
860,
|
||||||
|
-200
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "enemy",
|
||||||
|
"pos": [
|
||||||
|
480,
|
||||||
|
-580
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "enemy",
|
||||||
|
"pos": [
|
||||||
|
1740,
|
||||||
|
280
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"exits": [
|
||||||
|
{
|
||||||
|
"rect": [
|
||||||
|
-500,
|
||||||
|
300,
|
||||||
|
80,
|
||||||
|
60
|
||||||
|
],
|
||||||
|
"to": "room_01",
|
||||||
|
"spawn": [
|
||||||
|
1560,
|
||||||
|
140
|
||||||
|
],
|
||||||
|
"hint": "Back"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rect": [
|
||||||
|
1860,
|
||||||
|
-500,
|
||||||
|
80,
|
||||||
|
120
|
||||||
|
],
|
||||||
|
"to": "room_07",
|
||||||
|
"spawn": [
|
||||||
|
180,
|
||||||
|
240
|
||||||
|
],
|
||||||
|
"hint": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ability_doors": [],
|
||||||
|
"entry_spawns": {
|
||||||
|
"entry_1": [
|
||||||
|
-420,
|
||||||
|
300
|
||||||
|
],
|
||||||
|
"entry_3": [
|
||||||
|
1840,
|
||||||
|
-440
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,426 @@
|
|||||||
|
{
|
||||||
|
"name": "room_07",
|
||||||
|
"display_name": "room_07",
|
||||||
|
"meta": {
|
||||||
|
"id": "room_07",
|
||||||
|
"name": "room_07"
|
||||||
|
},
|
||||||
|
"bounds": {
|
||||||
|
"kill_y": 3200
|
||||||
|
},
|
||||||
|
"player_spawn": [
|
||||||
|
200,
|
||||||
|
220
|
||||||
|
],
|
||||||
|
"entry_spawns": {
|
||||||
|
"entry_1": [
|
||||||
|
180,
|
||||||
|
240
|
||||||
|
],
|
||||||
|
"entry_2": [
|
||||||
|
4200,
|
||||||
|
2720
|
||||||
|
],
|
||||||
|
"entry_3": [
|
||||||
|
-320,
|
||||||
|
2720
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"platforms": [
|
||||||
|
{
|
||||||
|
"x": 60,
|
||||||
|
"y": 320,
|
||||||
|
"w": 1460,
|
||||||
|
"h": 40,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": -1160,
|
||||||
|
"y": 2780,
|
||||||
|
"w": 5500,
|
||||||
|
"h": 120,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": -1160,
|
||||||
|
"y": -300,
|
||||||
|
"w": 1220,
|
||||||
|
"h": 2480,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": -1280,
|
||||||
|
"y": -300,
|
||||||
|
"w": 120,
|
||||||
|
"h": 3200,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 2300,
|
||||||
|
"y": 1860,
|
||||||
|
"w": 2040,
|
||||||
|
"h": 320,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 4340,
|
||||||
|
"y": -300,
|
||||||
|
"w": 100,
|
||||||
|
"h": 3200,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 60,
|
||||||
|
"y": -300,
|
||||||
|
"w": 4280,
|
||||||
|
"h": 80,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 60,
|
||||||
|
"y": 1860,
|
||||||
|
"w": 1600,
|
||||||
|
"h": 320,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1600,
|
||||||
|
"y": 440,
|
||||||
|
"w": 1060,
|
||||||
|
"h": 40,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 2780,
|
||||||
|
"y": 320,
|
||||||
|
"w": 580,
|
||||||
|
"h": 40,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 3280,
|
||||||
|
"y": 800,
|
||||||
|
"w": 1060,
|
||||||
|
"h": 60,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1660,
|
||||||
|
"y": 1920,
|
||||||
|
"w": 360,
|
||||||
|
"h": 20,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1940,
|
||||||
|
"y": 2040,
|
||||||
|
"w": 360,
|
||||||
|
"h": 20,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1660,
|
||||||
|
"y": 2160,
|
||||||
|
"w": 360,
|
||||||
|
"h": 20,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1940,
|
||||||
|
"y": 2280,
|
||||||
|
"w": 360,
|
||||||
|
"h": 20,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1660,
|
||||||
|
"y": 2400,
|
||||||
|
"w": 360,
|
||||||
|
"h": 20,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1940,
|
||||||
|
"y": 2520,
|
||||||
|
"w": 360,
|
||||||
|
"h": 20,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1660,
|
||||||
|
"y": 2640,
|
||||||
|
"w": 360,
|
||||||
|
"h": 20,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1940,
|
||||||
|
"y": 2720,
|
||||||
|
"w": 360,
|
||||||
|
"h": 20,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 2660,
|
||||||
|
"y": 880,
|
||||||
|
"w": 520,
|
||||||
|
"h": 40,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 2140,
|
||||||
|
"y": 880,
|
||||||
|
"w": 380,
|
||||||
|
"h": 40,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1940,
|
||||||
|
"y": 880,
|
||||||
|
"w": 120,
|
||||||
|
"h": 40,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1680,
|
||||||
|
"y": 880,
|
||||||
|
"w": 100,
|
||||||
|
"h": 40,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1440,
|
||||||
|
"y": 880,
|
||||||
|
"w": 80,
|
||||||
|
"h": 40,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1220,
|
||||||
|
"y": 880,
|
||||||
|
"w": 80,
|
||||||
|
"h": 40,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 940,
|
||||||
|
"y": 880,
|
||||||
|
"w": 180,
|
||||||
|
"h": 40,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 660,
|
||||||
|
"y": 820,
|
||||||
|
"w": 180,
|
||||||
|
"h": 40,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 300,
|
||||||
|
"y": 740,
|
||||||
|
"w": 260,
|
||||||
|
"h": 60,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 260,
|
||||||
|
"y": 640,
|
||||||
|
"w": 40,
|
||||||
|
"h": 1100,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 300,
|
||||||
|
"y": 1260,
|
||||||
|
"w": 4040,
|
||||||
|
"h": 40,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 3240,
|
||||||
|
"y": 980,
|
||||||
|
"w": 60,
|
||||||
|
"h": 40,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 3100,
|
||||||
|
"y": 1060,
|
||||||
|
"w": 60,
|
||||||
|
"h": 40,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 3240,
|
||||||
|
"y": 1140,
|
||||||
|
"w": 60,
|
||||||
|
"h": 40,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 3380,
|
||||||
|
"y": 440,
|
||||||
|
"w": 300,
|
||||||
|
"h": 40,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 3700,
|
||||||
|
"y": 560,
|
||||||
|
"w": 300,
|
||||||
|
"h": 40,
|
||||||
|
"group": "ground"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 4020,
|
||||||
|
"y": 680,
|
||||||
|
"w": 320,
|
||||||
|
"h": 40,
|
||||||
|
"group": "ground"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"enemies": [
|
||||||
|
{
|
||||||
|
"x": 2080,
|
||||||
|
"y": 360,
|
||||||
|
"type": "enemy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 280,
|
||||||
|
"y": 2680,
|
||||||
|
"type": "miniboss"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 520,
|
||||||
|
"y": 2700,
|
||||||
|
"type": "enemy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 680,
|
||||||
|
"y": 2700,
|
||||||
|
"type": "enemy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 980,
|
||||||
|
"y": 2700,
|
||||||
|
"type": "enemy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 840,
|
||||||
|
"y": 2700,
|
||||||
|
"type": "enemy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 820,
|
||||||
|
"y": 1160,
|
||||||
|
"type": "enemy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1040,
|
||||||
|
"y": 1160,
|
||||||
|
"type": "enemy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1340,
|
||||||
|
"y": 1160,
|
||||||
|
"type": "enemy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1700,
|
||||||
|
"y": 1160,
|
||||||
|
"type": "enemy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 2140,
|
||||||
|
"y": 1160,
|
||||||
|
"type": "enemy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 2480,
|
||||||
|
"y": 1160,
|
||||||
|
"type": "enemy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 2700,
|
||||||
|
"y": 1160,
|
||||||
|
"type": "enemy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 2740,
|
||||||
|
"y": 1720,
|
||||||
|
"type": "miniboss"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"props": [],
|
||||||
|
"exits": [
|
||||||
|
{
|
||||||
|
"x": -1160,
|
||||||
|
"y": 2640,
|
||||||
|
"w": 100,
|
||||||
|
"h": 140,
|
||||||
|
"to": "room_town_gloomreach",
|
||||||
|
"spawn_id": "",
|
||||||
|
"spawn": [
|
||||||
|
120,
|
||||||
|
300
|
||||||
|
],
|
||||||
|
"hint": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": -420,
|
||||||
|
"y": 2720,
|
||||||
|
"w": 80,
|
||||||
|
"h": 60,
|
||||||
|
"to": "room_boss_01",
|
||||||
|
"spawn_id": "entry_2",
|
||||||
|
"spawn": [
|
||||||
|
-360,
|
||||||
|
300
|
||||||
|
],
|
||||||
|
"hint": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 4240,
|
||||||
|
"y": 2700,
|
||||||
|
"w": 100,
|
||||||
|
"h": 80,
|
||||||
|
"to": "room_reward_01",
|
||||||
|
"spawn_id": "",
|
||||||
|
"spawn": [
|
||||||
|
1760,
|
||||||
|
300
|
||||||
|
],
|
||||||
|
"hint": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 60,
|
||||||
|
"y": 180,
|
||||||
|
"w": 100,
|
||||||
|
"h": 140,
|
||||||
|
"to": "room_02",
|
||||||
|
"spawn_id": "",
|
||||||
|
"spawn": [
|
||||||
|
1840,
|
||||||
|
-440
|
||||||
|
],
|
||||||
|
"hint": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ability_doors": [
|
||||||
|
{
|
||||||
|
"x": -980,
|
||||||
|
"y": 2180,
|
||||||
|
"w": 80,
|
||||||
|
"h": 600
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 4100,
|
||||||
|
"y": 2180,
|
||||||
|
"w": 40,
|
||||||
|
"h": 600
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"room_w": 1600,
|
||||||
|
"room_h": 900
|
||||||
|
}
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"id": "room_boss_01",
|
||||||
|
"name": "room_boss_01"
|
||||||
|
},
|
||||||
|
"player_spawn": [
|
||||||
|
-240,
|
||||||
|
300
|
||||||
|
],
|
||||||
|
"bounds": {
|
||||||
|
"kill_y": 1400
|
||||||
|
},
|
||||||
|
"platforms": {
|
||||||
|
"ground": [
|
||||||
|
[
|
||||||
|
-500,
|
||||||
|
360,
|
||||||
|
1500,
|
||||||
|
240
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"enemies": [
|
||||||
|
{
|
||||||
|
"type": "boss",
|
||||||
|
"pos": [
|
||||||
|
280,
|
||||||
|
200
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"exits": [
|
||||||
|
{
|
||||||
|
"rect": [
|
||||||
|
-460,
|
||||||
|
300,
|
||||||
|
80,
|
||||||
|
60
|
||||||
|
],
|
||||||
|
"to": "room_07",
|
||||||
|
"spawn": [
|
||||||
|
-320,
|
||||||
|
2720
|
||||||
|
],
|
||||||
|
"hint": "Retreat",
|
||||||
|
"spawn_id": "entry_3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rect": [
|
||||||
|
880,
|
||||||
|
260,
|
||||||
|
120,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"to": "room_reward_01",
|
||||||
|
"spawn": [
|
||||||
|
100,
|
||||||
|
300
|
||||||
|
],
|
||||||
|
"hint": "Reward",
|
||||||
|
"spawn_id": "entry_2"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ability_doors": [],
|
||||||
|
"entry_spawns": {
|
||||||
|
"entry_2": [
|
||||||
|
-360,
|
||||||
|
300
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,116 @@
|
|||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"id": "room_reward_01",
|
||||||
|
"name": "room_reward_01"
|
||||||
|
},
|
||||||
|
"player_spawn": [
|
||||||
|
140,
|
||||||
|
300
|
||||||
|
],
|
||||||
|
"bounds": {
|
||||||
|
"kill_y": 2000
|
||||||
|
},
|
||||||
|
"platforms": {
|
||||||
|
"ground": [
|
||||||
|
[
|
||||||
|
-500,
|
||||||
|
360,
|
||||||
|
2400,
|
||||||
|
240
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"floating": [
|
||||||
|
[
|
||||||
|
650,
|
||||||
|
260,
|
||||||
|
220,
|
||||||
|
18
|
||||||
|
],
|
||||||
|
[
|
||||||
|
1100,
|
||||||
|
260,
|
||||||
|
220,
|
||||||
|
18
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"enemies": [],
|
||||||
|
"exits": [
|
||||||
|
{
|
||||||
|
"rect": [
|
||||||
|
0,
|
||||||
|
300,
|
||||||
|
80,
|
||||||
|
60
|
||||||
|
],
|
||||||
|
"to": "room_boss_01",
|
||||||
|
"spawn_id": "entry_2",
|
||||||
|
"spawn": [
|
||||||
|
110,
|
||||||
|
260
|
||||||
|
],
|
||||||
|
"hint": "Back"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rect": [
|
||||||
|
1840,
|
||||||
|
300,
|
||||||
|
60,
|
||||||
|
60
|
||||||
|
],
|
||||||
|
"to": "room_07",
|
||||||
|
"spawn_id": "entry_2",
|
||||||
|
"spawn": [
|
||||||
|
4200,
|
||||||
|
2720
|
||||||
|
],
|
||||||
|
"hint": "Forward"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ability_doors": [
|
||||||
|
{
|
||||||
|
"rect": [
|
||||||
|
1700,
|
||||||
|
60,
|
||||||
|
60,
|
||||||
|
300
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rect": [
|
||||||
|
1580,
|
||||||
|
60,
|
||||||
|
40,
|
||||||
|
300
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"entry_spawns": {
|
||||||
|
"entry_2": [
|
||||||
|
100,
|
||||||
|
300
|
||||||
|
],
|
||||||
|
"entry_1": [
|
||||||
|
1800,
|
||||||
|
300
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"props": [
|
||||||
|
{
|
||||||
|
"type": "reward_chest",
|
||||||
|
"pos": [
|
||||||
|
520,
|
||||||
|
330
|
||||||
|
],
|
||||||
|
"radius": 180
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "ability_pickup",
|
||||||
|
"pos": [
|
||||||
|
820,
|
||||||
|
210
|
||||||
|
],
|
||||||
|
"radius": 180
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"id": "room_town_gloomreach",
|
||||||
|
"name": "room_town_gloomreach"
|
||||||
|
},
|
||||||
|
"player_spawn": [
|
||||||
|
80,
|
||||||
|
260
|
||||||
|
],
|
||||||
|
"bounds": {
|
||||||
|
"kill_y": 2000
|
||||||
|
},
|
||||||
|
"platforms": {
|
||||||
|
"ground": [
|
||||||
|
[
|
||||||
|
-500,
|
||||||
|
360,
|
||||||
|
2400,
|
||||||
|
240
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"enemies": [],
|
||||||
|
"exits": [
|
||||||
|
{
|
||||||
|
"rect": [
|
||||||
|
10,
|
||||||
|
300,
|
||||||
|
80,
|
||||||
|
60
|
||||||
|
],
|
||||||
|
"to": "room_reward_01",
|
||||||
|
"spawn": [
|
||||||
|
1700,
|
||||||
|
260
|
||||||
|
],
|
||||||
|
"hint": "Back"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ability_doors": [],
|
||||||
|
"entry_spawns": {
|
||||||
|
"entry_1": [
|
||||||
|
120,
|
||||||
|
300
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"npcs": [
|
||||||
|
{
|
||||||
|
"type": "vendor",
|
||||||
|
"pos": [
|
||||||
|
700,
|
||||||
|
306
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "upgrader",
|
||||||
|
"pos": [
|
||||||
|
860,
|
||||||
|
306
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "necklace_vendor",
|
||||||
|
"pos": [
|
||||||
|
1020,
|
||||||
|
306
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
New skills
|
||||||
|
Tether
|
||||||
|
- hit an enemy, inflict a visual bind for a few seconds, end effect depends on which form the player is in when it ends
|
||||||
|
- light form: blind enemy (make them walk the other direction)
|
||||||
|
- shade form: instakill after a certain enemy HP threshold, slow otherwise
|
||||||
|
|
||||||
|
Reality Break
|
||||||
|
- light form: make all enemies double their drop rates
|
||||||
|
- shade form: instantly kill all enemies, halves drop rates
|
||||||
|
|
||||||
|
Shatterstep
|
||||||
|
- light form: for X seconds, create a platform below your feet when jumping, allowing for multiple jumps in the air
|
||||||
|
- shade form: when jumping, create aoe below you upon landing
|
||||||
|
|
||||||
|
|
||||||
|
Skill upgrades
|
||||||
|
Dash
|
||||||
|
- Refund cost upon successful stun/kill
|
||||||
|
- lower cooldown
|
||||||
|
- more range
|
||||||
|
- build up movement speed stacks with every dash, lose stacks upon getting hit
|
||||||
|
- more damage against targets that are stunned (inflict mark?)
|
||||||
|
- leave behind afterimage (enemy taunt)
|
||||||
|
|
||||||
|
Ranged Attack
|
||||||
|
- hold to charge, release for stronger attack (more damage and stun)
|
||||||
|
- faster speed, higher charge cost
|
||||||
|
- slower speed but more damage
|
||||||
|
- upgrade light form: pierce and slow
|
||||||
|
- upgrade shade form: aoe
|
||||||
|
- for every enemy kill collect stacks that increase damage, lose stacks upon not finishing enemies
|
||||||
|
|
||||||
|
Tether
|
||||||
|
- light form: higher hp threshold for kill; if used against boss: slower attacks
|
||||||
|
- shade form: longer fear; if used against boss: slower movement speed
|
||||||
|
|
||||||
|
|
||||||
|
How to obtain skill upgrades
|
||||||
|
- vendor (smith? trainer?) that can upgrade one spell (selection can be changed but requires paying for it every time)
|
||||||
|
- item (gem?) that can be slotted into armor to unlock a skill upgrade
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Ascended armor
|
||||||
|
- select one awakened armor piece as the main piece and one as the sacrifice
|
||||||
|
- select X number of traits from the sacrifice to merge onto the main piece
|
||||||
|
- sacrifice gets destroyed in the process, creating an Ascended armor piece
|
||||||
|
- cost: many coins/rare resource?
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<SchemaVersion>2.0</SchemaVersion>
|
||||||
|
<ProjectGuid>e4b51f4c-e0be-4f9e-8a8e-d814a78b30c5</ProjectGuid>
|
||||||
|
<ProjectHome>.</ProjectHome>
|
||||||
|
<StartupFile>pygame_test.py</StartupFile>
|
||||||
|
<SearchPath>
|
||||||
|
</SearchPath>
|
||||||
|
<WorkingDirectory>.</WorkingDirectory>
|
||||||
|
<OutputPath>.</OutputPath>
|
||||||
|
<Name>pygame test</Name>
|
||||||
|
<RootNamespace>pygame test</RootNamespace>
|
||||||
|
<TestFramework>unittest</TestFramework>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="pygame_test.py" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Python Tools\Microsoft.PythonTools.targets" />
|
||||||
|
<!-- Uncomment the CoreCompile target to enable the Build command in
|
||||||
|
Visual Studio and specify your pre- and post-build commands in
|
||||||
|
the BeforeBuild and AfterBuild targets below. -->
|
||||||
|
<!--<Target Name="CoreCompile" />-->
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
</Project>
|
||||||