276 lines
9.0 KiB
JSON
276 lines
9.0 KiB
JSON
{
|
||
"ram": {
|
||
"id": "ramming_charge",
|
||
"label": "Ramming Charge",
|
||
"_comment": "THE HEAD-ON OPENING. Type Offense (the type other skills will reference), 60 energy off the right orb, a 6 second recharge, five points to spend. Rank 0 = inert (no seat lights); rank ≥1 = castable. `seat: 1` is the default binding on a fresh run — keys 1-8 press the seat, not the skill.",
|
||
"type": "Offense",
|
||
"frame": 0,
|
||
"energy": 60,
|
||
"cooldown": 6,
|
||
"maxPoints": 5,
|
||
"requires": [],
|
||
"seat": 1,
|
||
"node": {
|
||
"col": 1,
|
||
"row": 0
|
||
},
|
||
"description": "Charge the nearest enemy at 3x speed over 1 second at ramming speed. Inflict 4x regular damage upon hit, 2x additional damage per additional skill point.",
|
||
"shortDescription": "Ram the nearest hostile for 4x weapon damage.",
|
||
"effect": {
|
||
"_comment": "kind = the handler in js/skills/SkillEffects.js. dashBlast: lock the flight controls, drive the hull at speedMul × the ship's own max speed along the line to the aim point, and detonate on ARRIVAL (the moment it reaches the point, or when durationMs runs out — whichever lands first). The aim point is the nearest hostile's position AT CAST plus overshootPx PAST it, so the ship ends up through the enemy rather than inside it. blastRadiusPx = how far the arrival shock reaches from the ship (every hostile inside takes the hit once). damageMul is a multiple of the cannon's own damage (data/combat.json → player.weapon.damage) at rank 1; damageMulPerRank adds to it for every skill point AFTER the first — 4x at 1/5, 6x at 2/5 … 12x at 5/5.",
|
||
"kind": "dashBlast",
|
||
"speedMul": 3,
|
||
"durationMs": 1000,
|
||
"overshootPx": 90,
|
||
"blastRadiusPx": 170,
|
||
"damageMul": 4,
|
||
"damageMulPerRank": 2,
|
||
"fx": {
|
||
"_comment": "The charge's own dressing (js/combat/Fx.js reads these; every key has a fallback): trailColor = the comet head's shed embers AND the arrival's ember ring, ringColor = the DAMAGE-RADIUS ring + the shock ripples, ringLifeMs = how long that radius ring lingers, sfxEvent = a COMBAT_SFX EVENT (js/combat/CombatSfx.js) played with the thunder boom ('kill') under the impact — 'hull' is the heavy armor-crack voice. The comet head itself, the lingering ~1 s ember trail and the fireball are Fx's fixed craft; these colors skin them.",
|
||
"trailColor": "#ff3a4d",
|
||
"trailAlpha": 0.55,
|
||
"ringColor": "#ffd84d",
|
||
"ringLifeMs": 480,
|
||
"sfxEvent": "hull"
|
||
}
|
||
}
|
||
},
|
||
"plate": {
|
||
"id": "reinforced_plating",
|
||
"_comment": "THE HULL THAT WILL NOT QUIT. Type Passive — no cast, no energy, no recharge, and it can NEVER hold a bar seat: it works from rank 1 onward. `seat` is null to say so out loud in the data.",
|
||
"label": "Reinforced Plating",
|
||
"type": "Passive",
|
||
"frame": 1,
|
||
"energy": 0,
|
||
"cooldown": 0,
|
||
"maxPoints": 5,
|
||
"requires": [],
|
||
"seat": null,
|
||
"node": {
|
||
"col": 3,
|
||
"row": 0
|
||
},
|
||
"description": "Strengthen your ship's hull, adding a 5% increase in hull strength, with an additional 5% increase per additional skill point.",
|
||
"shortDescription": "+5% hull. +5% more per point.",
|
||
"effect": {
|
||
"_comment": "hullPool: the armor's base hull (the ship's own stats.hullIntegrity, or data/combat.json → playerShip.hull on the range) is multiplied by 1 + hullBonusPerRank × rank — 5% at 1/5 … 25% at 5/5. THE MULTIPLIER IS RE-ROLLED FROM BASE EVERY TIME (never compounded on last frame's max), so rank-ups, level-up armor bumps (data/progression.json → reward), combat restarts and save/load can never stack it twice. The hull orb shows the bigger number.",
|
||
"kind": "hullPool",
|
||
"hullBonusPerRank": 0.05
|
||
}
|
||
},
|
||
"regions": {
|
||
"panel": {
|
||
"x": 29,
|
||
"y": 29,
|
||
"w": 1222,
|
||
"h": 662
|
||
},
|
||
"plate": {
|
||
"x": 45,
|
||
"y": 85,
|
||
"w": 321,
|
||
"h": 389
|
||
},
|
||
"tree": {
|
||
"x": 380,
|
||
"y": 85,
|
||
"w": 855,
|
||
"h": 389
|
||
},
|
||
"drawer": {
|
||
"x": 45,
|
||
"y": 488,
|
||
"w": 1190,
|
||
"h": 187
|
||
}
|
||
},
|
||
"final": {
|
||
"open": false,
|
||
"shipsOpen": false,
|
||
"door": true,
|
||
"selected": null,
|
||
"regions": {
|
||
"panel": {
|
||
"x": 29,
|
||
"y": 29,
|
||
"w": 1222,
|
||
"h": 662
|
||
},
|
||
"plate": {
|
||
"x": 45,
|
||
"y": 85,
|
||
"w": 321,
|
||
"h": 389
|
||
},
|
||
"tree": {
|
||
"x": 380,
|
||
"y": 85,
|
||
"w": 855,
|
||
"h": 389
|
||
},
|
||
"drawer": {
|
||
"x": 45,
|
||
"y": 488,
|
||
"w": 1190,
|
||
"h": 187
|
||
}
|
||
},
|
||
"scroll": {
|
||
"scroll": 0,
|
||
"maxScroll": 0
|
||
},
|
||
"snap": {
|
||
"hasClass": true,
|
||
"classId": "vanguard",
|
||
"className": "VANGUARD",
|
||
"accentCss": "#ff3a4d",
|
||
"frame": 0,
|
||
"iconKey": "class_icons",
|
||
"iconReady": true,
|
||
"points": 9,
|
||
"spent": 1,
|
||
"pending": 0,
|
||
"inSession": false,
|
||
"seatCount": 8,
|
||
"rows": [
|
||
{
|
||
"def": {
|
||
"id": "ramming_charge",
|
||
"classId": "vanguard",
|
||
"label": "Ramming Charge",
|
||
"typeId": "Offense",
|
||
"type": {
|
||
"id": "Offense",
|
||
"label": "OFFENSE",
|
||
"accent": 16726605,
|
||
"accentCss": "#ff3a4d",
|
||
"passive": false
|
||
},
|
||
"frame": 0,
|
||
"energy": 60,
|
||
"cooldown": 6,
|
||
"maxPoints": 5,
|
||
"requires": [],
|
||
"seatDefault": 1,
|
||
"layout": {
|
||
"col": 1,
|
||
"row": 0
|
||
},
|
||
"description": "Charge the nearest enemy at 3x speed over 1 second at ramming speed. Inflict 4x regular damage upon hit, 2x additional damage per additional skill point.",
|
||
"shortDescription": "Ram the nearest hostile for 4x weapon damage.",
|
||
"effect": {
|
||
"kind": "dashBlast",
|
||
"speedMul": 3,
|
||
"durationMs": 1000,
|
||
"overshootPx": 90,
|
||
"blastRadiusPx": 170,
|
||
"damageMul": 4,
|
||
"damageMulPerRank": 2,
|
||
"fx": {
|
||
"_comment": "The charge's own dressing (js/combat/Fx.js reads these; every key has a fallback): trailColor = the comet head's shed embers AND the arrival's ember ring, ringColor = the DAMAGE-RADIUS ring + the shock ripples, ringLifeMs = how long that radius ring lingers, sfxEvent = a COMBAT_SFX EVENT (js/combat/CombatSfx.js) played with the thunder boom ('kill') under the impact — 'hull' is the heavy armor-crack voice. The comet head itself, the lingering ~1 s ember trail and the fireball are Fx's fixed craft; these colors skin them.",
|
||
"trailColor": "#ff3a4d",
|
||
"trailAlpha": 0.55,
|
||
"ringColor": "#ffd84d",
|
||
"ringLifeMs": 480,
|
||
"sfxEvent": "hull"
|
||
}
|
||
},
|
||
"passive": false,
|
||
"castable": true
|
||
},
|
||
"id": "ramming_charge",
|
||
"rank": 1,
|
||
"max": 5,
|
||
"state": "upgradable",
|
||
"locked": null,
|
||
"seat": 3,
|
||
"spendable": true,
|
||
"pending": 0,
|
||
"resettable": false
|
||
},
|
||
{
|
||
"def": {
|
||
"id": "reinforced_plating",
|
||
"classId": "vanguard",
|
||
"label": "Reinforced Plating",
|
||
"typeId": "Passive",
|
||
"type": {
|
||
"id": "Passive",
|
||
"label": "PASSIVE",
|
||
"accent": 12616956,
|
||
"accentCss": "#c084fc",
|
||
"passive": true
|
||
},
|
||
"frame": 1,
|
||
"energy": 0,
|
||
"cooldown": 0,
|
||
"maxPoints": 5,
|
||
"requires": [],
|
||
"seatDefault": null,
|
||
"layout": {
|
||
"col": 3,
|
||
"row": 0
|
||
},
|
||
"description": "Strengthen your ship's hull, adding a 5% increase in hull strength, with an additional 5% increase per additional skill point.",
|
||
"shortDescription": "+5% hull. +5% more per point.",
|
||
"effect": {
|
||
"kind": "hullPool",
|
||
"hullBonusPerRank": 0.05
|
||
},
|
||
"passive": true,
|
||
"castable": false
|
||
},
|
||
"id": "reinforced_plating",
|
||
"rank": 0,
|
||
"max": 5,
|
||
"state": "available",
|
||
"locked": null,
|
||
"seat": null,
|
||
"spendable": true,
|
||
"pending": 0,
|
||
"resettable": false
|
||
}
|
||
]
|
||
},
|
||
"hits": [
|
||
{
|
||
"kind": "close",
|
||
"id": null,
|
||
"cx": 1234,
|
||
"cy": 49
|
||
},
|
||
{
|
||
"kind": "tile",
|
||
"id": "ramming_charge",
|
||
"cx": 745,
|
||
"cy": 279
|
||
},
|
||
{
|
||
"kind": "tile",
|
||
"id": "reinforced_plating",
|
||
"cx": 997,
|
||
"cy": 279
|
||
}
|
||
],
|
||
"tiles": [],
|
||
"texts": [],
|
||
"seats": [
|
||
null,
|
||
null,
|
||
"ramming_charge",
|
||
null,
|
||
null,
|
||
null,
|
||
null,
|
||
null
|
||
],
|
||
"ranks": {
|
||
"ramming_charge": 1
|
||
},
|
||
"pending": {
|
||
"ramming_charge": 0
|
||
},
|
||
"points": 9,
|
||
"session": false
|
||
}
|
||
} |