Update Healer Man server
This commit is contained in:
1 parent
a868401ebc
commit
48a678dcc5
295 files changed
+7644
-467
No files matched your search
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,73 @@
|
||||
# RuneWaker media batch plan
|
||||
|
||||
Generated by `npm run effects:rom:plan` from the current primary-five spell manifest and decoded ROS archive. It groups remaining controller and timing work. The manifest generator already attaches source direct audio events at supported phase boundaries.
|
||||
|
||||
The archive has 170 unique models: 74 ready, 1 partial original, 0 fully decoded but unverified, 95 blocked, and 0 failed. 125 of 129 source spell entries have at least one packaged audio cue.
|
||||
|
||||
## Shared controller blockers
|
||||
|
||||
Counts overlap when a model has several controller families. A family should be ported and verified once against representative models before its other users are considered for promotion.
|
||||
|
||||
| Controller family | Models | Source spell IDs using those models |
|
||||
| --- | ---: | ---: |
|
||||
| CRuController_EventTrigger | 148 | 124 |
|
||||
| CRuController_GlobalAlpha | 47 | 49 |
|
||||
| CRuEntity_Particle_Visualizer_Entity | 35 | 44 |
|
||||
| CRuController_Particle_Visualizer_Entity | 34 | 43 |
|
||||
| CRuController_GlobalColor | 26 | 26 |
|
||||
| RuneWaker browser emitter geometry mode | 18 | 21 |
|
||||
| CRuController_Decal | 17 | 17 |
|
||||
| CRuController_GhostTrail | 11 | 15 |
|
||||
| CRuController_Hierarchy | 11 | 12 |
|
||||
| CRuController_Entity | 5 | 4 |
|
||||
| RuneWaker browser sprite mode | 5 | 5 |
|
||||
| CRuController_UVFX | 3 | 3 |
|
||||
| CRuController_MaterialTexture | 1 | 1 |
|
||||
| CRuController_PolyLine | 1 | 1 |
|
||||
|
||||
## Fully decoded models awaiting visual review
|
||||
|
||||
| Source model | Spell-phase references | Sprite layers | Blockers |
|
||||
| --- | ---: | ---: | --- |
|
||||
|
||||
## Event-only models still blocked
|
||||
|
||||
These models have sprite data but include an event callback outside the validated visual-only set. Effect-spawning and projectile-flight callbacks require browser behavior before their visuals can be promoted.
|
||||
|
||||
| Source model | Spell-phase references | Sprite layers | Blockers |
|
||||
| --- | ---: | ---: | --- |
|
||||
| model/fx/skill/ice/act_cone01_c_hand.ros | 3 | 12 | CRuController_EventTrigger |
|
||||
| model/fx/skill/fire/act_fireball02_t_hit_point.ros | 1 | 5 | CRuController_EventTrigger |
|
||||
| model/fx/skill/holy/act_armorup_c_top.ros | 1 | 8 | CRuController_EventTrigger |
|
||||
| model/fx/skill/physical/act_concentration_t_top.ros | 1 | 3 | CRuController_EventTrigger |
|
||||
| model/fx/skill/physical/act_focus_c_top.ros | 1 | 4 | CRuController_EventTrigger |
|
||||
| model/fx/skill/physical/act_fracture01_t_freeze_hit.ros | 1 | 6 | CRuController_EventTrigger |
|
||||
|
||||
There are 6 event-only models. The archive also exposes 3 model/phase audio-event candidates missing from the current packaged manifest. They need delayed timing or a later lifecycle phase; an ROS motion name alone is insufficient. Full per-model evidence is in `docs/ROM_MEDIA_BATCH_PLAN.json`.
|
||||
|
||||
## Largest blocker combinations
|
||||
|
||||
| Controller signature | Models | Source spell IDs | Example model |
|
||||
| --- | ---: | ---: | --- |
|
||||
| CRuController_EventTrigger + CRuController_Particle_Visualizer_Entity + CRuEntity_Particle_Visualizer_Entity | 13 | 20 | model/fx/skill/earth/act_casting_c_hand.ros |
|
||||
| CRuController_EventTrigger | 9 | 11 | model/fx/skill/fire/act_fireball02_t_hit_point.ros |
|
||||
| CRuController_Decal + CRuController_EventTrigger + CRuController_GlobalAlpha + CRuController_GlobalColor | 8 | 8 | model/fx/skill/earth/act_vriusinfection_t_freeze_down_e.ros |
|
||||
| CRuController_EventTrigger + CRuController_GlobalAlpha | 6 | 7 | model/fx/skill/fire/act_fireball01_c_hand_i.ros |
|
||||
| CRuController_EventTrigger + CRuController_GlobalAlpha + CRuController_Particle_Visualizer_Entity + CRuEntity_Particle_Visualizer_Entity | 5 | 6 | model/fx/skill/holy/act_chain_t_down.ros |
|
||||
| CRuController_EventTrigger + CRuController_Particle_Visualizer_Entity + CRuEntity_Particle_Visualizer_Entity + RuneWaker browser emitter geometry mode | 5 | 5 | model/fx/skill/holy/act_moist_t_down.ros |
|
||||
| CRuController_EventTrigger + RuneWaker browser emitter geometry mode | 5 | 8 | model/fx/skill/physical/act_deep_thought_c_down_e.ros |
|
||||
| CRuController_Particle_Visualizer_Entity + CRuEntity_Particle_Visualizer_Entity | 4 | 10 | model/fx/skill/dark/act_dark_hand_wave_c_hand_e.ros |
|
||||
| CRuController_Decal + CRuController_Entity + CRuController_EventTrigger + CRuController_GlobalAlpha + CRuController_GlobalColor | 2 | 1 | model/fx/skill/holy/act_scrifice_healing_c_freeze_down_e.ros |
|
||||
| CRuController_Entity + CRuController_EventTrigger | 2 | 2 | model/fx/skill/holy/act_judgement_t_hit_point.ros |
|
||||
| CRuController_EventTrigger + CRuController_GhostTrail + CRuController_GlobalAlpha | 2 | 4 | model/fx/skill/fire/act_fireball02_f.ros |
|
||||
| CRuController_EventTrigger + CRuController_GhostTrail + CRuController_GlobalAlpha + CRuController_GlobalColor + CRuController_Hierarchy | 2 | 2 | model/fx/skill/physical/act_deflecting_shot_f.ros |
|
||||
| CRuController_EventTrigger + CRuController_GhostTrail + CRuController_Particle_Visualizer_Entity + CRuEntity_Particle_Visualizer_Entity | 2 | 2 | model/fx/skill/ice/act_icearrow_f.ros |
|
||||
| CRuController_EventTrigger + RuneWaker browser emitter geometry mode + RuneWaker browser sprite mode | 2 | 2 | model/fx/skill/physical/act_attackspeedup_c_down.ros |
|
||||
| CRuController_Decal + CRuController_Entity + CRuController_GlobalAlpha + CRuController_GlobalColor + RuneWaker browser emitter geometry mode + RuneWaker browser sprite mode | 1 | 1 | model/fx/skill/physical/act_beckon_holy_c_freeze_down_e.ros |
|
||||
|
||||
## Batch workflow
|
||||
|
||||
1. Run `npm run effects:rom:batch` to refresh source links, package audio and ROS graphs, attach verified phases, and rebuild this plan.
|
||||
2. Review the remaining event timing candidates and largest shared blocker families above.
|
||||
3. Port one controller family in the exporter/WebGL runtime and add a parser check that every promoted graph is renderable.
|
||||
4. Regenerate the manifest and media audit, replay representative graphs in the RuneWaker preview, then spot-check distinct motion and attachment patterns in live combat.
|
||||
@@ -2,50 +2,50 @@
|
||||
|
||||
Generated by `node scripts/combat-effects/audit-rom-media.mjs --write` from the player catalog and combat effect manifest. The five accepted pairings follow `src/game/romFiveIdentities.ts`. Castable skills are listed; passives have no cast media event.
|
||||
|
||||
The effect column records original client ROS/RAS references and their cast phase. 7 castable skills have browser-playable original phases; other source visuals use the game's generated runtime effect until their controller families are supported. A `partial original` phase renders verified source layers and declares its remaining fidelity limit. The sound column lists packaged client cues on their mapped phase. A dash means the source record or matching sound file did not provide that media.
|
||||
The effect column records original client ROS/RAS references and their cast phase. 84 castable skills have browser-playable original phases; other source visuals use the game's generated runtime effect until their controller families are supported. A `partial original` phase renders verified source layers and declares its remaining fidelity limit. The sound column lists packaged client cues on their mapped phase. A dash means the source record or matching sound file did not provide that media.
|
||||
|
||||
| Primary class | Skill group | Castable skills | With source effect | With packaged sound | With playable original effect |
|
||||
| --- | --- | ---: | ---: | ---: | ---: |
|
||||
| Priest | Base | 25 | 19 | 18 | 4 |
|
||||
| Priest | Accepted elite pair | 6 | 6 | 4 | 0 |
|
||||
| Knight | Base | 19 | 17 | 14 | 2 |
|
||||
| Knight | Accepted elite pair | 6 | 6 | 3 | 0 |
|
||||
| Scout | Base | 20 | 16 | 14 | 0 |
|
||||
| Scout | Accepted elite pair | 4 | 4 | 3 | 0 |
|
||||
| Rogue | Base | 20 | 10 | 9 | 0 |
|
||||
| Rogue | Accepted elite pair | 4 | 4 | 2 | 0 |
|
||||
| Mage | Base | 21 | 20 | 11 | 1 |
|
||||
| Mage | Accepted elite pair | 5 | 5 | 5 | 0 |
|
||||
| Priest | Base | 25 | 23 | 23 | 18 |
|
||||
| Priest | Accepted elite pair | 6 | 6 | 6 | 3 |
|
||||
| Knight | Base | 19 | 19 | 18 | 13 |
|
||||
| Knight | Accepted elite pair | 6 | 6 | 6 | 2 |
|
||||
| Scout | Base | 20 | 20 | 19 | 13 |
|
||||
| Scout | Accepted elite pair | 4 | 4 | 4 | 4 |
|
||||
| Rogue | Base | 20 | 20 | 18 | 15 |
|
||||
| Rogue | Accepted elite pair | 4 | 4 | 4 | 2 |
|
||||
| Mage | Base | 21 | 20 | 20 | 13 |
|
||||
| Mage | Accepted elite pair | 5 | 5 | 5 | 1 |
|
||||
|
||||
## Priest — base
|
||||
|
||||
| Skill | Source spell IDs | Effect phase and source model | Sound phase and source cue |
|
||||
| --- | --- | --- | --- |
|
||||
| Soul Source | 490288 | — | — |
|
||||
| Wave Armor | 490273 | impact: act_holywater_armor_t_top.ros<br>aura-start: act_watershieldbuff_c_down_i.ros | impact: act_holywater_armor_t_top.mp3 |
|
||||
| Heal | 490261 | cast-start: act_casting_c_hand.ros | cast-start: act_casting_c_hand.wav |
|
||||
| Ice Fog | 490274 | cast-start: act_cone01_c_hand.ros | cast-start: act_cone01_c_hand.mp3 |
|
||||
| Bone Chill | 491165 | cast-start: act_ice_hand_wave_c_hand_e.ros | — |
|
||||
| Soul Source | 490288 | impact: act_soulspring_t_down.ros | impact: act_soulspring_t_down.ros.mp3 |
|
||||
| Wave Armor | 490273 | impact: act_holywater_armor_t_top.ros<br>aura-start: act_watershieldbuff_c_down_i.ros | impact: act_holywater_armor_t_top.mp3<br>aura-start: act_watershieldbuff_c_down_i.ros.mp3 |
|
||||
| Heal | 490261 | cast-start: act_casting_c_hand.ros<br>impact: act_mainheal_t_down_e.ros | cast-start: act_casting_c_hand.wav<br>impact: act_friendly_t_down_i.mp3<br>impact: act_mainheal_t_down_e.ros 2.mp3 |
|
||||
| Ice Fog | 490274 | cast-start: act_cone01_c_hand.ros<br>impact: act_icefog_t_freeze_hit_e.ros | cast-start: act_cone01_c_hand.ros.mp3<br>impact: act_icefog_t_freeze_hit_e.ros.mp3 |
|
||||
| Bone Chill | 491165 | cast-start: act_ice_hand_wave_c_hand_e.ros<br>impact: act_icefog_t_freeze_hit_e.ros | cast-start: act_ice_hand_wave_c_hand_e.ros.mp3<br>impact: act_icefog_t_freeze_hit_e.ros.mp3 |
|
||||
| Resurrection | 490280 | cast-start: act_casting_c_hand.ros<br>impact: act_anabiosis_t_down.ros | cast-start: act_casting_c_hand.wav<br>impact: act_anabiosis_t_down.mp3 |
|
||||
| Soul Bond | 490297 | cast-start: act_casting_c_hand.ros | cast-start: act_casting_c_hand.wav |
|
||||
| Grace of Life | 490290 | — | — |
|
||||
| Group Heal | 490281 | cast-start: act_casting_c_hand.ros | cast-start: act_casting_c_hand.wav |
|
||||
| Chain of Light | 491164 | cast-start: act_light_chain_c_hand_i.ros<br>impact: act_light_chain_t_down_i.ros<br>impact: act_light_chainhit_t_down_e.ros | impact: act_light_chain_t_down_i.mp3 |
|
||||
| Amplified Attack | 490491 | cast-start: act_casting_c_hand.ros | cast-start: act_casting_c_hand.wav |
|
||||
| Ice Fog | 490275 | cast-start: act_cone01_c_hand.ros | cast-start: act_cone01_c_hand.mp3 |
|
||||
| Healing Salve | 490294 | — | — |
|
||||
| Soul Bond | 490297 | cast-start: act_casting_c_hand.ros<br>impact: act_holycross_t_top.ros | cast-start: act_casting_c_hand.wav<br>impact: act_holycross_t_top.mp3 |
|
||||
| Grace of Life | 490290 | impact: act_rainpray_t_down.ros | impact: act_rainpray_t_down.mp3 |
|
||||
| Group Heal | 490281 | cast-start: act_casting_c_hand.ros<br>impact: act_anima_t_name_title.ros | cast-start: act_casting_c_hand.wav<br>impact: act_anima_t_name_title.mp3 |
|
||||
| Chain of Light | 491164 | cast-start: act_light_chain_c_hand_i.ros<br>impact: act_light_chain_t_down_i.ros<br>impact: act_light_chainhit_t_down_e.ros | cast-start: act_powergather_c_right_hand.mp3<br>impact: act_light_chainhit_t_down_e.ros.mp3 |
|
||||
| Amplified Attack | 490491 | cast-start: act_casting_c_hand.ros<br>impact: act_power_up_t_down.ros | cast-start: act_casting_c_hand.wav<br>impact: act_power_up_t_down.mp3 |
|
||||
| Ice Fog | 490275 | cast-start: act_cone01_c_hand.ros<br>impact: act_icefog_t_freeze_hit_e.ros | cast-start: act_cone01_c_hand.ros.mp3<br>impact: act_icefog_t_freeze_hit_e.ros.mp3 |
|
||||
| Healing Salve | 490294 | impact: act_moist_t_down.ros | impact: act_moist_t_down.mp3 |
|
||||
| Blessing of Humility | 490301 | — | — |
|
||||
| Ice Fog | 490276 | cast-start: act_cone01_c_hand.ros | cast-start: act_cone01_c_hand.mp3 |
|
||||
| Ice Fog | 490276 | cast-start: act_cone01_c_hand.ros<br>impact: act_icefog_t_freeze_hit_e.ros | cast-start: act_cone01_c_hand.ros.mp3<br>impact: act_icefog_t_freeze_hit_e.ros.mp3 |
|
||||
| Holy Candle | 490304 | — | — |
|
||||
| Cleanse | 491175 | impact: act_dispersion_t_freeze_hit_e.ros | impact: act_dispersion_t_freeze_hit_e.mp3 |
|
||||
| Advanced Resurrection | 491176 | cast-start: act_casting_c_hand.ros<br>impact: act_anabiosis_t_down.ros | cast-start: act_casting_c_hand.wav<br>impact: act_anabiosis_t_down.mp3 |
|
||||
| Supreme Resurrection | 491177 | cast-start: act_casting_c_hand.ros<br>impact: act_anabiosis_t_down.ros | cast-start: act_casting_c_hand.wav<br>impact: act_anabiosis_t_down.mp3 |
|
||||
| Urgent Heal | 491147 | cast-start: act_casting_c_hand.ros<br>impact: act_benedictory_heal_t_down.ros (partial original) | cast-start: act_casting_c_hand.wav<br>impact: act_benedictory_heal_t_down.mp3 |
|
||||
| Rising Tide | 490256 | cast-start: act_icecone01_c_hand.ros<br>release: act_icecone01_f.ros<br>impact: act_riptide_t_freeze_hit.ros | cast-start: act_icecone01_c_hand.wav<br>release: act_icecone01_f.ros.mp3<br>impact: act_riptide_t_freeze_hit.mp3 |
|
||||
| Regenerate | 490269 | cast-start: act_casting_c_hand.ros<br>cast-start: act_holy_hand_wave_c_hand_e.ros | cast-start: act_casting_c_hand.wav |
|
||||
| Holy Aura | 490300 | cast-start: act_casting_c_hand.ros<br>cast-start: act_flash_candle_c_down_e.ros | cast-start: act_casting_c_hand.wav |
|
||||
| Magic Barrier | 491166 | — | — |
|
||||
| Blessed Spring Water | 490298 | cast-start: act_icecone01_c_hand.ros | cast-start: act_icecone01_c_hand.wav |
|
||||
| Rising Tide | 490256 | cast-start: act_icecone01_c_hand.ros<br>release: act_icecone01_f.ros<br>impact: act_riptide_t_freeze_hit.ros | cast-start: act_cone01_c_hand.mp3<br>release: act_icecone01_f.ros.mp3<br>impact: act_riptide_t_freeze_hit.mp3 |
|
||||
| Regenerate | 490269 | cast-start: act_casting_c_hand.ros<br>cast-start: act_holy_hand_wave_c_hand_e.ros<br>impact: act_blessed_heal_t_down.ros | cast-start: act_casting_c_hand.wav<br>impact: act_blessed_heal_t_down.mp3 |
|
||||
| Holy Aura | 490300 | cast-start: act_casting_c_hand.ros<br>cast-start: act_flash_candle_c_down_e.ros<br>impact: act_flash_candle_t_freeze_hit.ros | cast-start: act_casting_c_hand.wav<br>cast-start: act_flash_candle_c_down_e.ros.mp3<br>impact: act_flash_candle_t_freeze_hit.mp3 |
|
||||
| Magic Barrier | 491166 | impact: act_magicdefence_t_down_e.ros | impact: act_anima_t_name_title.mp3 |
|
||||
| Blessed Spring Water | 490298 | cast-start: act_icecone01_c_hand.ros<br>impact: act_springblessing_t_top.ros | cast-start: act_cone01_c_hand.mp3<br>impact: act_springblessing_t_top.mp3 |
|
||||
|
||||
## Priest — accepted elite pair
|
||||
|
||||
@@ -53,9 +53,9 @@ The effect column records original client ROS/RAS references and their cast phas
|
||||
| --- | --- | --- | --- |
|
||||
| Last Prayer | 491648 | impact: act_benedictory_heal_t_down.ros | impact: act_benedictory_heal_t_down.mp3 |
|
||||
| Divine Incarnation | 491366 | cast-start: act_sacredincarnation_c_down.ros | cast-start: act_sacredincarnation_c_down.mp3 |
|
||||
| Calm Heart | 492639 | cast-start: act_casting_c_hand.ros<br>impact: act_fearless_t_down_e.ros | cast-start: act_casting_c_hand.wav |
|
||||
| Sacrificial Cure | 492934 | cast-start: act_scrifice_healing_c_freeze_down_e.ros<br>impact: act_scrifice_healing_t_down_e.ros | — |
|
||||
| Holy Power | 493044 | cast-start: act_holyenergy_c_down_e.ros<br>cast-start: act_holyenergy_c_down_i.ros | — |
|
||||
| Calm Heart | 492639 | cast-start: act_casting_c_hand.ros<br>impact: act_fearless_t_down_e.ros | cast-start: act_casting_c_hand.wav<br>impact: skill_fearless_t_down_e.mp3 |
|
||||
| Sacrificial Cure | 492934 | cast-start: act_scrifice_healing_c_freeze_down_e.ros<br>impact: act_scrifice_healing_t_down_e.ros | cast-start: skill_scrifice_healing_c_freeze_down_e.mp3<br>impact: skill_scrifice_healing_t_down_e.mp3 |
|
||||
| Holy Power | 493044 | cast-start: act_holyenergy_c_down_e.ros<br>cast-start: act_holyenergy_c_down_i.ros | cast-start: skill_holyenergy_c_down_e.ros.mp3<br>cast-start: skill_holyenergy_c_down_i.mp3 |
|
||||
| Light Fairy | 493271 | cast-start: act_casting_c_hand.ros<br>cast-start: act_beckon_holy_c_freeze_down_e.ros | cast-start: act_casting_c_hand.wav |
|
||||
|
||||
## Knight — base
|
||||
@@ -68,19 +68,19 @@ The effect column records original client ROS/RAS references and their cast phas
|
||||
| Whirlwind Shield | 490175 | cast-start: act_shieldstorm_c_down_e.ros<br>impact: act_shieldstorm_t_freeze_hit_e.ros | — |
|
||||
| Shackles of Light | 490189 | cast-start: act_chain_c_shoot02.ros | cast-start: act_chain_c_shoot02.mp3 |
|
||||
| Resolution | 490168 | cast-start: act_physical_casting_c_hand.ros<br>cast-start: act_responsibility_c_down.ros | cast-start: act_physical_casting_c_hand.mp3<br>cast-start: act_responsibility_c_down.mp3 |
|
||||
| Charge | 490150 | cast-start: act_charge02_c_down.ros | cast-start: act_charge02_c_down.mp3 |
|
||||
| Threaten | 490153 | — | — |
|
||||
| Charge | 490150 | cast-start: act_charge02_c_down.ros<br>impact: act_strikeback_t_hit_point.ros | cast-start: act_charge02_c_down.mp3<br>impact: act_strikeback_t_hit_point.mp3 |
|
||||
| Threaten | 490153 | impact: act_intimidation_t_freeze_hit_e.ros | impact: act_intimidation_t_freeze_hit_e.mp3 |
|
||||
| Shield of Valor | 490468 | cast-start: act_courage_shield_c_top.ros | cast-start: act_courage_shield_c_top.mp3 |
|
||||
| Truth Shield Bash | 490186 | cast-start: act_truth_shield_c_top.ros | cast-start: act_truth_shield_c_top.mp3 |
|
||||
| Shock | 490154 | cast-start: act_holy_hand_wave_c_hand_e.ros | — |
|
||||
| Truth Shield Bash | 490186 | cast-start: act_truth_shield_c_top.ros<br>impact: act_judge_shield_t_hit_point.ros | cast-start: act_truth_shield_c_top.mp3<br>impact: act_judge_shield_t_hit_point.mp3 |
|
||||
| Shock | 490154 | cast-start: act_holy_hand_wave_c_hand_e.ros<br>impact: act_shock_t_hit_point.ros | impact: act_shock_t_hit_point.mp3 |
|
||||
| Holy Strength | 491321 | cast-start: act_manafreeback_c_down_e.ros | cast-start: act_manafreeback_c_down_e.mp3 |
|
||||
| Hall of Dead Heroes | 495724 | aura-start: act_herosoul_buff_c_top.ros | aura-start: act_herosoul_buff_c_top.mp3 |
|
||||
| Punishment | 490151 | cast-start: act_holy_hand_wave_c_hand_e.ros | — |
|
||||
| Punishment | 490151 | cast-start: act_holy_hand_wave_c_hand_e.ros<br>impact: act_judgement_t_hit_point.ros | impact: act_judgement_t_hit_point.mp3 |
|
||||
| Holy Strike | 490148 | impact: act_san_sword_t_down_e.ros | impact: act_san_sword_t_down_e.mp3 |
|
||||
| Disarmament | 490159 | — | — |
|
||||
| Disarmament | 490159 | impact: act_disarm01_t_hit_point.ros | impact: act_disarm01_t_hit_point.mp3 |
|
||||
| Strike of Punishment | 490179 | impact: act_brokenhit_t_hit_point.ros | impact: act_brokenhit_t_hit_point.mp3 |
|
||||
| Enhanced Armor | 490152 | cast-start: act_armorup_c_top.ros | cast-start: act_armorup_c_top.mp3 |
|
||||
| Shield of Discipline | 490192 | cast-start: act_discipline_shield_c_top.ros | cast-start: act_discipline_shield_c_top.mp3 |
|
||||
| Shield of Discipline | 490192 | cast-start: act_discipline_shield_c_top.ros<br>impact: act_discipline_shield_t_hit_point.ros | cast-start: act_discipline_shield_c_top.mp3<br>impact: act_capacity_crash_c_freeze_hit_e.ros.mp3 |
|
||||
|
||||
## Knight — accepted elite pair
|
||||
|
||||
@@ -89,34 +89,34 @@ The effect column records original client ROS/RAS references and their cast phas
|
||||
| Arrow of Vengeance | 491616 | release: act_revengearrow_f_i.ros<br>impact: act_revengearrow_t_hit_point_e.ros | impact: act_revengearrow_t_hit_point_e.mp3 |
|
||||
| Holy Chains | 491613 | impact: act_chain_t_down.ros | impact: act_chain_t_down.mp3 |
|
||||
| Heavenly Arrow | 491354 | cast-start: act_holy_hand_wave_c_hand_e.ros<br>impact: act_heavenarrow_t_down_e.ros | impact: act_heavenarrow_t_down_e.mp3 |
|
||||
| Sacred Resistance | 492939 | cast-start: act_holyresist_c_down_e.ros | — |
|
||||
| Sacred Protection | 493046 | cast-start: act_holyprotect_c_down_e.ros<br>impact: act_ingoreself_t_down_e.ros | — |
|
||||
| Disregard Danger | 493273 | cast-start: act_fire_hand_wave_c_hand_e.ros<br>impact: act_ingoreself_t_down_e.ros | — |
|
||||
| Sacred Resistance | 492939 | cast-start: act_holyresist_c_down_e.ros | cast-start: act_acheignore_c_down_e.mp3 |
|
||||
| Sacred Protection | 493046 | cast-start: act_holyprotect_c_down_e.ros<br>impact: act_ingoreself_t_down_e.ros | cast-start: skill_holyprotect_c_down_e.mp3<br>impact: skill_ingoreself_t_down_e.mp3 |
|
||||
| Disregard Danger | 493273 | cast-start: act_fire_hand_wave_c_hand_e.ros<br>impact: act_ingoreself_t_down_e.ros | cast-start: act_fire_hand_wave_c_hand_e.ros.mp3<br>impact: skill_ingoreself_t_down_e.mp3 |
|
||||
|
||||
## Scout — base
|
||||
|
||||
| Skill | Source spell IDs | Effect phase and source model | Sound phase and source cue |
|
||||
| --- | --- | --- | --- |
|
||||
| Arrow of Essence | 490494 | — | — |
|
||||
| Wind Arrows | 491128 | release: act_gustwindarrow_f_hit_point_i.ros<br>impact: act_gustwindarrow_t_hit_point_e.ros | impact: act_gustwindarrow_t_hit_point_e.mp3 |
|
||||
| Arrow of Essence | 490494 | impact: act_mentalarrow_t_freeze_hit.ros | impact: act_mentalarrow_t_freeze_hit.mp3 |
|
||||
| Wind Arrows | 491128 | release: act_gustwindarrow_f_hit_point_i.ros<br>impact: act_gustwindarrow_t_hit_point_e.ros<br>impact: act_icearrow_t_hit_point.ros | release: act_gustwindarrow_f_hit_point_i.ros.mp3<br>impact: act_gustwindarrow_t_hit_point_e.mp3<br>impact: act_gustwindarrow_f_hit_point_e.mp3<br>impact: act_icearrow_t_hit_point.mp3 |
|
||||
| Mana Drain Shot | 490441 | release: act_sorcerersting_f.ros | release: act_sorcerersting_f.mp3 |
|
||||
| Lasso | 490454 | cast-start: act_casting_c_hand.ros | cast-start: act_casting_c_hand.wav |
|
||||
| Piercing Arrow | 490400 | release: act_immolatingshot_f.ros | release: act_immolatingshot_f.mp3 |
|
||||
| Snipe | 490450 | release: act_snipe_f.ros | release: act_snipe_f.mp3 |
|
||||
| Detection | 490463 | cast-start: act_focus_c_top.ros | cast-start: act_focus_c_top.mp3 |
|
||||
| Combo Shot | 490424 | release: act_arrow_f.ros | release: act_arrow_f.mp3 |
|
||||
| Piercing Arrow | 490400 | release: act_immolatingshot_f.ros<br>impact: act_immolatingshot_t_hit_point.ros | release: act_immolatingshot_f.mp3<br>impact: act_immolatingshot_t_hit_point.mp3 |
|
||||
| Snipe | 490450 | release: act_snipe_f.ros<br>impact: act_snipe_t_freeze_hit.ros | release: act_snipe_f.mp3<br>impact: act_snipe_t_freeze_hit.mp3 |
|
||||
| Detection | 490463 | cast-start: act_focus_c_top.ros<br>cast-start: act_focus_c_down.ros | cast-start: act_focus_c_top.mp3 |
|
||||
| Combo Shot | 490424 | release: act_arrow_f.ros<br>impact: act_arrow_t_hit_point.ros | release: act_arrow_f.mp3<br>impact: act_arrow_t_hit_point.mp3 |
|
||||
| Neck Strike | 490438 | impact: act_neckattack_t_mouth.ros | impact: act_neckattack_t_mouth.mp3 |
|
||||
| Reflected Shot | 490457 | release: act_deflecting_shot_f.ros | release: act_deflecting_shot_f.mp3 |
|
||||
| Reflected Shot | 490457 | release: act_deflecting_shot_f.ros<br>impact: act_deflecting_shot_t_freeze_hit.ros | release: act_deflecting_shot_f.mp3<br>impact: act_deflecting_shot_t_freeze_hit.mp3 |
|
||||
| Concentration | 490460 | impact: act_concentration_t_top.ros | impact: act_concentration_t_top.mp3 |
|
||||
| Target Area | 490464 | cast-start: act_physical_casting_c_hand.ros<br>cast-start: act_shooterexpert_c_down.ros | cast-start: act_physical_casting_c_hand.mp3<br>cast-start: act_shooterexpert_c_down.mp3 |
|
||||
| Frost Arrow | 491163 | release: act_icearrow_f.ros | release: act_icearrow_f.mp3 |
|
||||
| Autoshot | 492589 | release: act_normalarrow_f_i.ros | — |
|
||||
| Shot | 490423 | release: act_arrow_f.ros | release: act_arrow_f.mp3 |
|
||||
| Frost Arrow | 491163 | release: act_icearrow_f.ros<br>impact: act_icearrow_t_hit_point.ros | release: act_icearrow_f.mp3<br>impact: act_icearrow_t_hit_point.mp3 |
|
||||
| Autoshot | 492589 | release: act_normalarrow_f_i.ros<br>impact: act_arrow_t_hit_point.ros | impact: act_arrow_t_hit_point.mp3 |
|
||||
| Shot | 490423 | release: act_arrow_f.ros<br>impact: act_arrow_t_hit_point.ros | release: act_arrow_f.mp3<br>impact: act_arrow_t_hit_point.mp3 |
|
||||
| Vampire Arrows | 491292 | release: act_bitesbloodarrow_f_hit_point_i.ros<br>impact: act_bitesbloodarrow_t_hit_point_e.ros<br>impact: act_bloodstain_t_freeze_down.ros | impact: act_bitesbloodarrow_t_hit_point_e.mp3<br>impact: act_bloodstain_t_freeze_down.mp3 |
|
||||
| Joint Blow | 490420 | — | — |
|
||||
| Joint Blow | 490420 | impact: act_jointattack_t_freeze_hit.ros | impact: act_jointattack_t_freeze_hit.mp3 |
|
||||
| Blood Arrow | 490434 | cast-start: act_fear_c_hand.ros | — |
|
||||
| Throat Attack | 490428 | — | — |
|
||||
| Wrist Attack | 490451 | — | — |
|
||||
| Throat Attack | 490428 | impact: act_throatattack_t_mouth.ros | impact: act_throatattack_t_mouth.mp3 |
|
||||
| Wrist Attack | 490451 | impact: act_handoff_t_freeze_hit_e.ros | impact: act_handoff_t_freeze_hit_e.mp3 |
|
||||
|
||||
## Scout — accepted elite pair
|
||||
|
||||
@@ -125,66 +125,66 @@ The effect column records original client ROS/RAS references and their cast phas
|
||||
| Weak Spot | 491493 | release: act_bitesbloodarrow_f_hit_point_i.ros<br>impact: act_lockbuff_t_top.ros | impact: act_lockbuff_t_top.mp3 |
|
||||
| Blinding Powder | 491336 | impact: act_blindpowder_t_top_e.ros | impact: act_blindpowder_t_top_e.mp3 |
|
||||
| Sapping Arrow | 491496 | release: act_weakarrow_f_i.ros<br>impact: act_weakarrow_t_freeze_hit_e.ros | impact: act_weakarrow_t_freeze_hit_e.mp3 |
|
||||
| Deadly Poison Bite | 492621 | cast-start: act_poison_casting_c_hand.ros<br>release: act_deadlypoison_f_i.ros<br>impact: act_deadlypoison_t_hit_point_e.ros | — |
|
||||
| Deadly Poison Bite | 492621 | cast-start: act_poison_casting_c_hand.ros<br>release: act_deadlypoison_f_i.ros<br>impact: act_deadlypoison_t_hit_point_e.ros<br>impact: act_bitesbloodarrow_t_hit_point_e.ros | impact: skill_deadlypoison_t_hit_point_e.mp3<br>impact: act_bitesbloodarrow_t_hit_point_e.mp3 |
|
||||
|
||||
## Rogue — base
|
||||
|
||||
| Skill | Source spell IDs | Effect phase and source model | Sound phase and source cue |
|
||||
| --- | --- | --- | --- |
|
||||
| Assassins Rage | 490506 | cast-start: act_absolute_strike_c_top.ros | cast-start: act_absolute_strike_c_top.mp3 |
|
||||
| Low Blow | 490323 | — | — |
|
||||
| Wound Attack | 490313 | — | — |
|
||||
| Blind Spot | 490311 | — | — |
|
||||
| Numbing Dagger | 490347 | cast-start: nor_dark_casting.ros<br>release: act_throw01_f.ros | release: act_throw01_f.mp3 |
|
||||
| Low Blow | 490323 | impact: act_crow01_t_hit_point.ros | impact: act_crow01_t_hit_point.mp3 |
|
||||
| Wound Attack | 490313 | impact: act_scotch_t_freeze_hit.ros | impact: act_scotch_t_freeze_hit.mp3 |
|
||||
| Blind Spot | 490311 | impact: act_fracture01_t_freeze_hit.ros | impact: act_fracture01_t_freeze_hit.mp3 |
|
||||
| Numbing Dagger | 490347 | cast-start: nor_dark_casting.ros<br>release: act_throw01_f.ros | release: act_throw.mp3 |
|
||||
| Poison | 490329 | cast-start: act_apply_poison_c_hand.ros | cast-start: act_apply_poison_c_hand.mp3 |
|
||||
| Hide | 490312 | cast-start: act_snug_c_freeze_down.ros | cast-start: act_snug_c_freeze_down.mp3 |
|
||||
| Premeditation | 490507 | — | — |
|
||||
| Sneak Attack | 490337 | — | — |
|
||||
| Premeditation | 490507 | cast-start: act_premeditation_c_hand.ros | cast-start: act_premeditation_c_hand.mp3 |
|
||||
| Sneak Attack | 490337 | impact: act_sneak_attack_t_freeze_hit.ros | impact: act_scotch_t_freeze_hit.mp3 |
|
||||
| Vanish | 490354 | cast-start: act_hiding_c_freeze_down.ros | cast-start: act_hiding_c_freeze_down.mp3 |
|
||||
| Sprint | 490341 | — | — |
|
||||
| Sprint | 490341 | cast-start: act_speedup01_c_down.ros | cast-start: act_speedup01_c_down.mp3 |
|
||||
| Evasion | 490355 | cast-start: act_illusionmoving_c_down.ros | cast-start: act_illusionmoving_c_down.mp3 |
|
||||
| Combo Throw | 490338 | release: act_throw01_f.ros | release: act_throw01_f.mp3 |
|
||||
| Combo Throw | 490338 | release: act_throw01_f.ros<br>impact: act_throw01_t_hit_point.ros | release: act_throw.mp3<br>impact: act_throw01_t_hit_point.mp3 |
|
||||
| Shadow Prison | 490346 | cast-start: act_dark_hand_wave_c_hand_e.ros | — |
|
||||
| Informer | 490350 | — | — |
|
||||
| Informer | 490350 | impact: nor_hitrateup_t_down_e.ros | — |
|
||||
| Fervent Attack | 490333 | cast-start: act_attackspeedup_c_down.ros | cast-start: act_attackspeedup_c_down.mp3 |
|
||||
| Shadowstab | 490306 | — | — |
|
||||
| Throw | 490309 | release: act_throw01_f.ros | release: act_throw01_f.mp3 |
|
||||
| Blind Stab | 490317 | — | — |
|
||||
| Shadow Step | 490344 | — | — |
|
||||
| Shadowstab | 490306 | impact: act_serpentine_t_freeze_hit.ros | impact: act_serpentine_t_freeze_hit.mp3 |
|
||||
| Throw | 490309 | release: act_throw01_f.ros<br>impact: act_throw01_t_hit_point.ros | release: act_throw.mp3<br>impact: act_throw01_t_hit_point.mp3 |
|
||||
| Blind Stab | 490317 | impact: act_blind01_t_freeze_hit.ros | impact: act_blind01_t_freeze_hit.mp3 |
|
||||
| Shadow Step | 490344 | cast-start: act_shadowmoving_c_down.ros<br>cast-start: act_disaster_appear_c_down_e.ros | cast-start: act_shadowmoving_c_down.mp3<br>cast-start: act_disaster_appear_c_down_e.mp3 |
|
||||
|
||||
## Rogue — accepted elite pair
|
||||
|
||||
| Skill | Source spell IDs | Effect phase and source model | Sound phase and source cue |
|
||||
| --- | --- | --- | --- |
|
||||
| Death's Touch | 491339 | cast-start: act_dark_hand_wave_c_hand_e.ros<br>impact: act_deathtouch_t_down_e.ros | impact: act_deathtouch_t_down_e.mp3 |
|
||||
| Death's Touch | 491339 | cast-start: act_dark_hand_wave_c_hand_e.ros<br>impact: act_deathtouch_t_down_e.ros<br>impact: act_serpentine_t_freeze_hit.ros | impact: act_deathtouch_t_down_e.mp3<br>impact: act_serpentine_t_freeze_hit.mp3 |
|
||||
| Poisonous Infection | 492625 | impact: act_poisondot_t_down.ros | impact: act_poisondot_t_down.mp3 |
|
||||
| Poison Spray | 492920 | cast-start: act_earth_hand_wave_c_hand_e.ros<br>impact: act_vriusinfection_t_freeze_down_e.ros | — |
|
||||
| Decay | 493017 | impact: act_rot_t_down_e.ros | — |
|
||||
| Poison Spray | 492920 | cast-start: act_earth_hand_wave_c_hand_e.ros<br>impact: act_vriusinfection_t_freeze_down_e.ros | cast-start: act_earth_hand_wave_c_hand_e.mp3<br>impact: skill_vriusinfection_t_freeze_down_e.mp3 |
|
||||
| Decay | 493017 | impact: act_rot_t_down_e.ros | impact: skill_rot_t_down_e.mp3 |
|
||||
|
||||
## Mage — base
|
||||
|
||||
| Skill | Source spell IDs | Effect phase and source model | Sound phase and source cue |
|
||||
| --- | --- | --- | --- |
|
||||
| Elemental Catalysis | 490238, 497971 | cast-start: act_casting_c_hand.ros<br>cast-start: act_castup01_c_down.ros | cast-start: act_casting_c_hand.mp3<br>cast-start: act_castup01_c_down.mp3 |
|
||||
| Flame | 491150 | cast-start: act_fireball01_c_hand_i.ros<br>cast-start: act_fireball02_c_hand_e.ros<br>release: act_fireball01_f_i.ros | — |
|
||||
| Electrostatic Charge | 491156 | cast-start: act_casting_c_hand.ros<br>cast-start: act_electricfield_c_top.ros<br>aura-start: act_electricfieldbuff_c_down_i.ros | cast-start: act_casting_c_hand.mp3<br>cast-start: act_electricfield_c_top.mp3 |
|
||||
| Discharge | 490242 | cast-start: act_wind_hand_wave_c_hand_e.ros<br>cast-start: act_lightningstrike_c_shoot.ros | cast-start: act_lightningstrike_c_shoot.mp3 |
|
||||
| Flame | 491150 | cast-start: act_fireball01_c_hand_i.ros<br>cast-start: act_fireball02_c_hand_e.ros<br>release: act_fireball01_f_i.ros<br>impact: act_fireball01_t_freeze_hit_e.ros | cast-start: act_vengeance_c_hand.mp3<br>cast-start: act_fireball02_c_hand_e.ros.mp3<br>release: act_fireball02_f.mp3<br>impact: act_fireball01_t_freeze_hit_e.ros.mp3 |
|
||||
| Electrostatic Charge | 491156 | cast-start: act_casting_c_hand.ros<br>cast-start: act_electricfield_c_top.ros<br>aura-start: act_electricfieldbuff_c_down_i.ros | cast-start: act_casting_c_hand.mp3<br>cast-start: act_electricfield_c_top.mp3<br>aura-start: act_electricfieldbuff2.mp3<br>aura-start: act_electricfieldbuff_c_down_i.ros.mp3 |
|
||||
| Discharge | 490242 | cast-start: act_wind_hand_wave_c_hand_e.ros<br>cast-start: act_lightningstrike_c_shoot.ros<br>cast-start: act_deep_thought_c_down_e.ros | cast-start: act_lightningstrike_c_shoot.mp3 |
|
||||
| Meteor Shower | 490252 | cast-start: act_noncasting_c_hand.ros<br>impact: act_shottingstars_t_down.ros | impact: act_shottingstars_t_down.mp3 |
|
||||
| Phoenix | 490239 | cast-start: act_vengeance_c_hand.ros<br>cast-start: act_phoenix_c_freeze_down.ros | cast-start: act_vengeance_c_hand.mp3<br>cast-start: act_phoenix_c_freeze_down.mp3 |
|
||||
| Purgatory Fire | 491153 | cast-start: act_fireball02_c_hand_e.ros<br>impact: act_fireball01_t_freeze_hit_e.ros | — |
|
||||
| Energy Influx | 490218 | aura-start: act_magebuff01_c_top.ros | aura-start: act_magebuff01_c_top.mp3 |
|
||||
| Phoenix | 490239 | cast-start: act_vengeance_c_hand.ros<br>cast-start: act_phoenix_c_freeze_down.ros<br>cast-start: act_deep_thought_c_down_e.ros<br>impact: act_firedot_t_down.ros | cast-start: act_vengeance_c_hand.mp3<br>cast-start: act_phoenix_c_freeze_down.ros.mp3<br>impact: act_firedot_t_down.mp3 |
|
||||
| Purgatory Fire | 491153 | cast-start: act_fireball02_c_hand_e.ros<br>impact: act_fireball01_t_freeze_hit_e.ros<br>impact: act_firedot_t_down.ros | cast-start: act_fireball02_c_hand_e.ros.mp3<br>impact: act_fireball01_t_freeze_hit_e.ros.mp3<br>impact: act_firedot_t_down.mp3 |
|
||||
| Energy Influx | 490218 | aura-start: act_magebuff01_c_top.ros | aura-start: act_magebuff01_c_top.ros.mp3 |
|
||||
| Energy Well | 490251 | impact: act_manareduce01_c_hit_point.ros | impact: act_manareduce01_c_hit_point.mp3 |
|
||||
| Elemental Weakness | 490247, 497977 | cast-start: act_casting_c_hand.ros<br>impact: act_elementdecay_t_down.ros | impact: act_elementdecay_t_down.mp3 |
|
||||
| Thunderstorm | 490244 | cast-start: act_casting_c_hand.ros<br>cast-start: act_torodo_c_freeze_down.ros | cast-start: act_casting_c_hand.mp3<br>cast-start: act_torodo_c_freeze_down.mp3 |
|
||||
| Plasma Arrow | 491169 | cast-start: act_electric_casting_c_hand_i.ros<br>release: act_electric_arrow_f_i.ros<br>impact: act_electric_explode_t_freeze_hit_e.ros | — |
|
||||
| Electric Bolt | 491168 | cast-start: act_electric_casting_c_hand_i.ros<br>release: act_electric_ball_f_i.ros<br>impact: act_electric_ball_t_freeze_hit_e.ros<br>impact: act_electric_dot_t_down_e.ros | — |
|
||||
| Electric Explosion | 491170 | cast-start: act_electric_casting_c_hand_i.ros<br>impact: act_electric_explode_f_i.ros<br>impact: act_electric_explode_t_freeze_hit_e.ros | — |
|
||||
| Electric Compression | 491171 | cast-start: act_electricnet_recharge_c_down_e.ros | — |
|
||||
| Static Field | 491172 | cast-start: act_electric_casting_c_hand_i.ros<br>cast-start: act_electric_net_c_down_e.ros<br>impact: act_electric_net_t_down_i.ros | — |
|
||||
| Fireball | 490204 | cast-start: act_fire_hand_wave_c_hand_e.ros<br>release: act_fireball02_f.ros | release: act_fireball02_f.mp3 |
|
||||
| Lightning | 490212 | cast-start: act_wind_hand_wave_c_hand_e.ros | — |
|
||||
| Elemental Weakness | 490247, 497977 | cast-start: act_casting_c_hand.ros<br>impact: act_elementdecay_t_down.ros | cast-start: act_dark_casting_c_hand.wav<br>impact: act_elementdecay_t_down.mp3 |
|
||||
| Thunderstorm | 490244 | cast-start: act_casting_c_hand.ros<br>cast-start: act_torodo_c_freeze_down.ros<br>impact: act_rushlevel_fail_c_hit.ros | cast-start: act_casting_c_hand.mp3<br>cast-start: act_torodo_c_freeze_down.ros.mp3<br>impact: act_rushlevel_fail_c_hit.ros.mp3 |
|
||||
| Plasma Arrow | 491169 | cast-start: act_electric_casting_c_hand_i.ros<br>release: act_electric_arrow_f_i.ros<br>impact: act_electric_explode_t_freeze_hit_e.ros | cast-start: act_electric_casting_c_hand_i_db.mp3<br>cast-start: act_electric_casting_c_hand_ifadein.mp3<br>release: act_electric_arrow_f_i.ros.mp3<br>impact: act_electric_explode_t_freeze_hit_e.ros.mp3 |
|
||||
| Electric Bolt | 491168 | cast-start: act_electric_casting_c_hand_i.ros<br>release: act_electric_ball_f_i.ros<br>impact: act_electric_ball_t_freeze_hit_e.ros<br>impact: act_electric_dot_t_down_e.ros | cast-start: act_electric_casting_c_hand_i_db.mp3<br>cast-start: act_electric_casting_c_hand_ifadein.mp3<br>impact: act_electric_dot_t_down_e.ros.mp3 |
|
||||
| Electric Explosion | 491170 | cast-start: act_electric_casting_c_hand_i.ros<br>impact: act_electric_explode_f_i.ros<br>impact: act_electric_explode_t_freeze_hit_e.ros | cast-start: act_electric_casting_c_hand_i_db.mp3<br>cast-start: act_electric_casting_c_hand_ifadein.mp3<br>impact: act_electric_explode_f_i.ros.mp3<br>impact: act_electric_explode_t_freeze_hit_e.ros.mp3 |
|
||||
| Electric Compression | 491171 | cast-start: act_electricnet_recharge_c_down_e.ros | cast-start: act_electricnet_recharge_c_down_e.ros.mp3 |
|
||||
| Static Field | 491172 | cast-start: act_electric_casting_c_hand_i.ros<br>cast-start: act_electric_net_c_down_e.ros<br>impact: act_electric_net_t_down_i.ros | cast-start: act_electric_casting_c_hand_i_db.mp3<br>cast-start: act_electric_casting_c_hand_ifadein.mp3<br>cast-start: act_electric_net_c_down_e.ros.mp3<br>impact: act_electric_net_t_down_i.ros.mp3 |
|
||||
| Fireball | 490204 | cast-start: act_fire_hand_wave_c_hand_e.ros<br>cast-start: act_deep_thought_c_down_e.ros<br>release: act_fireball02_f.ros<br>impact: act_fireball02_t_hit_point.ros | cast-start: act_fire_hand_wave_c_hand_e.ros.mp3<br>release: act_fireball02_f.mp3<br>impact: act_fireball02_t_hit_point.mp3 |
|
||||
| Lightning | 490212 | cast-start: act_wind_hand_wave_c_hand_e.ros<br>cast-start: act_deep_thought_c_down_e.ros<br>impact: act_summonlighting_t_hit_point.ros | impact: act_summonlighting_t_hit_point.mp3 |
|
||||
| Intensification | 490225, 497976 | — | — |
|
||||
| Silence | 490296 | cast-start: act_casting_c_hand.ros<br>cast-start: act_dark_hand_wave_c_hand_e.ros | — |
|
||||
| Silence | 490296 | cast-start: act_casting_c_hand.ros<br>cast-start: act_dark_hand_wave_c_hand_e.ros | cast-start: act_dark_casting_c_hand.wav |
|
||||
| Fire Ward | 490248 | cast-start: act_vengeance_c_hand.ros<br>cast-start: act_fireresistance_c_top.ros | cast-start: act_vengeance_c_hand.mp3<br>cast-start: act_fireresistance_c_top.mp3 |
|
||||
|
||||
## Mage — accepted elite pair
|
||||
@@ -195,11 +195,11 @@ The effect column records original client ROS/RAS references and their cast phas
|
||||
| Breath Erase | 498750 | cast-start: act_hide_c_down_e.ros | cast-start: act_hide_c_down_e.mp3 |
|
||||
| Soul Stepping | 498757 | cast-start: act_soul_walker_c_down_e.ros | cast-start: act_soul_walker_c_down_e.mp3 |
|
||||
| Deep Inspiration | 498758 | cast-start: act_deep_open_c_down_e.ros | cast-start: act_deep_open_c_down_e.mp3 |
|
||||
| Fire Lightning Burst | 498759 | cast-start: act_fireball01_c_hand_i.ros<br>cast-start: act_electric_casting_c_hand_i.ros<br>release: act_fire-thunder_f.ros<br>impact: act_fire-thunder_t_hitpoint_e.ros | impact: act_fire-thunder_t_hitpoint_e.mp3 |
|
||||
| Fire Lightning Burst | 498759 | cast-start: act_fireball01_c_hand_i.ros<br>cast-start: act_electric_casting_c_hand_i.ros<br>release: act_fire-thunder_f.ros<br>impact: act_fire-thunder_t_hitpoint_e.ros | cast-start: act_vengeance_c_hand.mp3<br>cast-start: act_electric_casting_c_hand_i_db.mp3<br>cast-start: act_electric_casting_c_hand_ifadein.mp3<br>release: act_fire-thunder_f02.wav<br>release: act_fire-thunder_f01.mp3<br>impact: act_fire-thunder_t_hitpoint_e.mp3 |
|
||||
|
||||
## Decoded particle archive
|
||||
|
||||
The particle archive covers 124 referenced ROS models, with 7 fully decoded models and 117 partial models. 7 models are renderer-ready and 1 has a browser-playable partial original. The Priest holy cast's remaining EventTrigger is an audio callback; Urgent Heal's target renders its source sprites, emitted rune mesh, and animated ground decal. Its terrain-triangle decal projection remains approximated by a level plane. The archive exports 515 sprite controllers and 106 distinct PNG textures. See `public/assets/game/combat-effects/original/runewaker/manifest.json` for per-model details.
|
||||
The particle archive covers 170 referenced ROS models, with 9 fully decoded models and 161 partial models. 74 models are renderer-ready and 1 has a browser-playable partial original. The Priest holy cast's remaining EventTrigger is an audio callback; Urgent Heal's target renders its source sprites, emitted rune mesh, and animated ground decal. Its terrain-triangle decal projection remains approximated by a level plane. The archive exports 668 sprite controllers and 139 distinct PNG textures. See `public/assets/game/combat-effects/original/runewaker/manifest.json` for per-model details.
|
||||
|
||||
## Next conversion step
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 135 KiB |
@@ -0,0 +1,121 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="700" viewBox="0 0 1200 700">
|
||||
<defs>
|
||||
<linearGradient id="backdrop" x2="1" y2="1"><stop stop-color="#193628"/><stop offset="1" stop-color="#06100e"/></linearGradient>
|
||||
<linearGradient id="panel" x2="1" y2="1"><stop stop-color="#27312a"/><stop offset="1" stop-color="#0c1714"/></linearGradient>
|
||||
<radialGradient id="portrait"><stop stop-color="#435549"/><stop offset="1" stop-color="#111d1a"/></radialGradient>
|
||||
<linearGradient id="scale" x2=".8" y2="1"><stop stop-color="#aac49b"/><stop offset=".45" stop-color="#4d8067"/><stop offset="1" stop-color="#1d4b42"/></linearGradient>
|
||||
<linearGradient id="belly" x2="1" y2=".8"><stop stop-color="#eee5a5"/><stop offset="1" stop-color="#a7a474"/></linearGradient>
|
||||
<linearGradient id="guardian-fill" x2=".8" y2="1"><stop stop-color="#aad36f"/><stop offset=".48" stop-color="#568d49"/><stop offset="1" stop-color="#274f37"/></linearGradient>
|
||||
<filter id="shadow"><feDropShadow dx="0" dy="12" stdDeviation="17" flood-opacity=".7"/></filter>
|
||||
<filter id="creature-shadow"><feDropShadow dx="0" dy="5" stdDeviation="4" flood-opacity=".7"/></filter>
|
||||
<g id="serpent" filter="url(#creature-shadow)">
|
||||
<path d="M24 92 C8 75 30 61 53 69 C84 79 89 55 69 45 C53 37 54 23 67 18" fill="none" stroke="#193f37" stroke-width="26" stroke-linecap="round"/>
|
||||
<path d="M24 91 C12 77 36 65 55 73 C82 82 92 54 70 44 C56 36 57 23 68 18" fill="none" stroke="url(#scale)" stroke-width="19" stroke-linecap="round"/>
|
||||
<path d="M27 84 C35 76 43 75 52 78 M67 73 C75 70 79 62 78 56 M67 41 C59 32 62 22 68 18" fill="none" stroke="url(#belly)" stroke-width="6" stroke-linecap="round" opacity=".85"/>
|
||||
<path d="M62 25 L56 15 L64 18 L67 9 L74 17 L82 14 L79 25 Q78 35 70 36 Q61 35 62 25" fill="url(#scale)" stroke="#173d34" stroke-width="2"/>
|
||||
<path d="M62 33 Q69 43 77 33 L73 48 L69 40 L64 48Z" fill="#e2cf9c"/>
|
||||
<circle cx="65" cy="25" r="2.5" fill="#f8d378"/><circle cx="75" cy="25" r="2.5" fill="#f8d378"/>
|
||||
</g>
|
||||
<g id="guardian" filter="url(#creature-shadow)">
|
||||
<path d="M40 92 L22 76 L17 47 L29 28 L43 22 L63 26 L77 43 L82 75 L65 91Z" fill="url(#guardian-fill)" stroke="#214c30" stroke-width="3"/>
|
||||
<path d="M24 41 L11 20 L31 31 M72 40 L90 18 L75 50" fill="url(#guardian-fill)" stroke="#214c30" stroke-width="3"/>
|
||||
<path d="M38 30 L40 15 L50 25 L60 14 L66 33 M27 58 L10 53 L25 72 M76 59 L91 54 L80 76" fill="#427d3d" stroke="#1b472b" stroke-width="3"/>
|
||||
<path d="M40 43 Q50 51 61 43 L65 71 Q50 80 35 69Z" fill="#9cc372" opacity=".8"/>
|
||||
<path d="M35 38 L45 42 L41 46 M65 38 L55 42 L59 46" fill="#eae99e"/>
|
||||
<path d="M40 58 Q50 63 61 58" fill="none" stroke="#173e29" stroke-width="4"/>
|
||||
</g>
|
||||
<g id="mutant" filter="url(#creature-shadow)">
|
||||
<path d="M30 90 L20 65 L30 37 L45 29 L58 31 L73 45 L80 69 L68 91Z" fill="url(#scale)" stroke="#214b3e" stroke-width="3"/>
|
||||
<path d="M34 35 L21 19 L24 42 M62 36 L75 18 L75 46" fill="url(#scale)" stroke="#214b3e" stroke-width="3"/>
|
||||
<path d="M21 61 L5 53 L18 80 M76 58 L92 48 L84 80" fill="none" stroke="#376b56" stroke-width="12" stroke-linecap="round"/>
|
||||
<path d="M36 51 L46 54 M62 51 L55 54" stroke="#e7dc89" stroke-width="5" stroke-linecap="round"/>
|
||||
<path d="M38 66 Q49 80 62 66 L58 75 L54 69 L50 79 L46 69 L42 75Z" fill="#eadfb3"/>
|
||||
</g>
|
||||
</defs>
|
||||
<rect width="1200" height="700" fill="url(#backdrop)"/>
|
||||
<path d="M0 660Q130 310 300 490T760 365T1200 470V700H0" fill="#2c5037" opacity=".24"/>
|
||||
<rect x="58" y="34" width="1084" height="632" rx="16" fill="url(#panel)" stroke="#8d7d56" stroke-width="2" filter="url(#shadow)"/>
|
||||
<text x="88" y="102" font-family="Georgia,serif" font-size="38" fill="#f3ead1">Wailing Caverns</text>
|
||||
<text x="88" y="132" font-family="Arial,sans-serif" font-size="14" fill="#b8b5a7">6 bosses ahead · 2 collected</text>
|
||||
<path d="M978 56V140" stroke="#88764f"/>
|
||||
<text x="1050" y="78" text-anchor="middle" font-family="Arial,sans-serif" font-size="11" letter-spacing="2" fill="#b8b5a7">ENTERING IN</text>
|
||||
<text x="1050" y="134" text-anchor="middle" font-family="Georgia,serif" font-size="60" fill="#d5b875">05</text>
|
||||
<g transform="translate(88 166)">
|
||||
<rect width="320" height="210" rx="9" fill="#151f1b" stroke="#69b4ff" stroke-width="2"/>
|
||||
<rect x="1" y="1" width="318" height="28" rx="8" fill="#0a1410"/>
|
||||
<text x="12" y="19" font-family="Arial,sans-serif" font-size="11" letter-spacing="2" fill="#efe8d7">BOSS 01</text>
|
||||
<text x="307" y="19" text-anchor="end" font-family="Arial,sans-serif" font-size="10" fill="#69b4ff">COLLECTED</text>
|
||||
<rect x="7" y="31" width="306" height="113" rx="3" fill="url(#portrait)"/>
|
||||
<ellipse cx="160" cy="137" rx="53" ry="5" fill="#030a08" opacity=".7"/>
|
||||
<use href="#serpent" transform="translate(105 30) scale(1.08)"/>
|
||||
<text x="13" y="164" font-family="Georgia,serif" font-size="20" fill="#f3ead1">Lady Anacondra</text>
|
||||
<text x="13" y="181" font-family="Arial,sans-serif" font-size="11" fill="#b8b5a7">3 copies owned</text>
|
||||
<path d="M0 187H320" stroke="#536357" opacity=".6"/>
|
||||
<g transform="translate(12 191)"><rect width="21" height="21" rx="3" fill="#2a3a3c" stroke="#ddd8ce"/><text x="10.5" y="15" text-anchor="middle" font-family="Arial,sans-serif" font-size="12" fill="#ddd8ce">N</text></g><g transform="translate(39 191)"><rect width="21" height="21" rx="3" fill="#2a3a3c" stroke="#69b4ff"/><text x="10.5" y="15" text-anchor="middle" font-family="Arial,sans-serif" font-size="12" fill="#69b4ff">R</text></g><g transform="translate(66 191)"><rect width="21" height="21" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="10.5" y="15" text-anchor="middle" font-family="Arial,sans-serif" font-size="12" fill="#79877d">E</text></g><g transform="translate(93 191)"><rect width="21" height="21" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="10.5" y="15" text-anchor="middle" font-family="Arial,sans-serif" font-size="12" fill="#79877d">L</text></g>
|
||||
</g>
|
||||
<g transform="translate(440 166)">
|
||||
<rect width="320" height="210" rx="9" fill="#151f1b" stroke="#69756b" stroke-width="1"/>
|
||||
<rect x="1" y="1" width="318" height="28" rx="8" fill="#0a1410"/>
|
||||
<text x="12" y="19" font-family="Arial,sans-serif" font-size="11" letter-spacing="2" fill="#efe8d7">BOSS 02</text>
|
||||
<text x="307" y="19" text-anchor="end" font-family="Arial,sans-serif" font-size="10" fill="#a5a99b">UNCOLLECTED</text>
|
||||
<rect x="7" y="31" width="306" height="113" rx="3" fill="url(#portrait)"/>
|
||||
<ellipse cx="160" cy="137" rx="53" ry="5" fill="#030a08" opacity=".7"/>
|
||||
<use href="#serpent" transform="translate(105 30) scale(1.08)"/>
|
||||
<text x="13" y="164" font-family="Georgia,serif" font-size="20" fill="#f3ead1">Lord Cobrahn</text>
|
||||
<text x="13" y="181" font-family="Arial,sans-serif" font-size="11" fill="#b8b5a7">Card not collected</text>
|
||||
<path d="M0 187H320" stroke="#536357" opacity=".6"/>
|
||||
<g transform="translate(12 191)"><rect width="21" height="21" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="10.5" y="15" text-anchor="middle" font-family="Arial,sans-serif" font-size="12" fill="#79877d">N</text></g><g transform="translate(39 191)"><rect width="21" height="21" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="10.5" y="15" text-anchor="middle" font-family="Arial,sans-serif" font-size="12" fill="#79877d">R</text></g><g transform="translate(66 191)"><rect width="21" height="21" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="10.5" y="15" text-anchor="middle" font-family="Arial,sans-serif" font-size="12" fill="#79877d">E</text></g><g transform="translate(93 191)"><rect width="21" height="21" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="10.5" y="15" text-anchor="middle" font-family="Arial,sans-serif" font-size="12" fill="#79877d">L</text></g>
|
||||
</g>
|
||||
<g transform="translate(792 166)">
|
||||
<rect width="320" height="210" rx="9" fill="#151f1b" stroke="#69756b" stroke-width="1"/>
|
||||
<rect x="1" y="1" width="318" height="28" rx="8" fill="#0a1410"/>
|
||||
<text x="12" y="19" font-family="Arial,sans-serif" font-size="11" letter-spacing="2" fill="#efe8d7">BOSS 03</text>
|
||||
<text x="307" y="19" text-anchor="end" font-family="Arial,sans-serif" font-size="10" fill="#a5a99b">UNCOLLECTED</text>
|
||||
<rect x="7" y="31" width="306" height="113" rx="3" fill="url(#portrait)"/>
|
||||
<ellipse cx="160" cy="137" rx="53" ry="5" fill="#030a08" opacity=".7"/>
|
||||
<use href="#serpent" transform="translate(105 30) scale(1.08)"/>
|
||||
<text x="13" y="164" font-family="Georgia,serif" font-size="20" fill="#f3ead1">Lord Pythas</text>
|
||||
<text x="13" y="181" font-family="Arial,sans-serif" font-size="11" fill="#b8b5a7">Card not collected</text>
|
||||
<path d="M0 187H320" stroke="#536357" opacity=".6"/>
|
||||
<g transform="translate(12 191)"><rect width="21" height="21" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="10.5" y="15" text-anchor="middle" font-family="Arial,sans-serif" font-size="12" fill="#79877d">N</text></g><g transform="translate(39 191)"><rect width="21" height="21" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="10.5" y="15" text-anchor="middle" font-family="Arial,sans-serif" font-size="12" fill="#79877d">R</text></g><g transform="translate(66 191)"><rect width="21" height="21" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="10.5" y="15" text-anchor="middle" font-family="Arial,sans-serif" font-size="12" fill="#79877d">E</text></g><g transform="translate(93 191)"><rect width="21" height="21" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="10.5" y="15" text-anchor="middle" font-family="Arial,sans-serif" font-size="12" fill="#79877d">L</text></g>
|
||||
</g>
|
||||
<g transform="translate(88 392)">
|
||||
<rect width="320" height="210" rx="9" fill="#151f1b" stroke="#c493ff" stroke-width="2"/>
|
||||
<rect x="1" y="1" width="318" height="28" rx="8" fill="#0a1410"/>
|
||||
<text x="12" y="19" font-family="Arial,sans-serif" font-size="11" letter-spacing="2" fill="#efe8d7">BOSS 04</text>
|
||||
<text x="307" y="19" text-anchor="end" font-family="Arial,sans-serif" font-size="10" fill="#c493ff">COLLECTED</text>
|
||||
<rect x="7" y="31" width="306" height="113" rx="3" fill="url(#portrait)"/>
|
||||
<ellipse cx="160" cy="137" rx="53" ry="5" fill="#030a08" opacity=".7"/>
|
||||
<use href="#guardian" transform="translate(105 30) scale(1.08)"/>
|
||||
<text x="13" y="164" font-family="Georgia,serif" font-size="18" fill="#f3ead1">Verdan the Everliving</text>
|
||||
<text x="13" y="181" font-family="Arial,sans-serif" font-size="11" fill="#b8b5a7">5 copies owned</text>
|
||||
<path d="M0 187H320" stroke="#536357" opacity=".6"/>
|
||||
<g transform="translate(12 191)"><rect width="21" height="21" rx="3" fill="#2a3a3c" stroke="#ddd8ce"/><text x="10.5" y="15" text-anchor="middle" font-family="Arial,sans-serif" font-size="12" fill="#ddd8ce">N</text></g><g transform="translate(39 191)"><rect width="21" height="21" rx="3" fill="#2a3a3c" stroke="#69b4ff"/><text x="10.5" y="15" text-anchor="middle" font-family="Arial,sans-serif" font-size="12" fill="#69b4ff">R</text></g><g transform="translate(66 191)"><rect width="21" height="21" rx="3" fill="#2a3a3c" stroke="#c493ff"/><text x="10.5" y="15" text-anchor="middle" font-family="Arial,sans-serif" font-size="12" fill="#c493ff">E</text></g><g transform="translate(93 191)"><rect width="21" height="21" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="10.5" y="15" text-anchor="middle" font-family="Arial,sans-serif" font-size="12" fill="#79877d">L</text></g>
|
||||
</g>
|
||||
<g transform="translate(440 392)">
|
||||
<rect width="320" height="210" rx="9" fill="#151f1b" stroke="#69756b" stroke-width="1"/>
|
||||
<rect x="1" y="1" width="318" height="28" rx="8" fill="#0a1410"/>
|
||||
<text x="12" y="19" font-family="Arial,sans-serif" font-size="11" letter-spacing="2" fill="#efe8d7">BOSS 05</text>
|
||||
<text x="307" y="19" text-anchor="end" font-family="Arial,sans-serif" font-size="10" fill="#a5a99b">UNCOLLECTED</text>
|
||||
<rect x="7" y="31" width="306" height="113" rx="3" fill="url(#portrait)"/>
|
||||
<ellipse cx="160" cy="137" rx="53" ry="5" fill="#030a08" opacity=".7"/>
|
||||
<use href="#serpent" transform="translate(105 30) scale(1.08)"/>
|
||||
<text x="13" y="164" font-family="Georgia,serif" font-size="20" fill="#f3ead1">Lord Serpentis</text>
|
||||
<text x="13" y="181" font-family="Arial,sans-serif" font-size="11" fill="#b8b5a7">Card not collected</text>
|
||||
<path d="M0 187H320" stroke="#536357" opacity=".6"/>
|
||||
<g transform="translate(12 191)"><rect width="21" height="21" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="10.5" y="15" text-anchor="middle" font-family="Arial,sans-serif" font-size="12" fill="#79877d">N</text></g><g transform="translate(39 191)"><rect width="21" height="21" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="10.5" y="15" text-anchor="middle" font-family="Arial,sans-serif" font-size="12" fill="#79877d">R</text></g><g transform="translate(66 191)"><rect width="21" height="21" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="10.5" y="15" text-anchor="middle" font-family="Arial,sans-serif" font-size="12" fill="#79877d">E</text></g><g transform="translate(93 191)"><rect width="21" height="21" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="10.5" y="15" text-anchor="middle" font-family="Arial,sans-serif" font-size="12" fill="#79877d">L</text></g>
|
||||
</g>
|
||||
<g transform="translate(792 392)">
|
||||
<rect width="320" height="210" rx="9" fill="#151f1b" stroke="#69756b" stroke-width="1"/>
|
||||
<rect x="1" y="1" width="318" height="28" rx="8" fill="#0a1410"/>
|
||||
<text x="12" y="19" font-family="Arial,sans-serif" font-size="11" letter-spacing="2" fill="#efe8d7">BOSS 06</text>
|
||||
<text x="307" y="19" text-anchor="end" font-family="Arial,sans-serif" font-size="10" fill="#a5a99b">UNCOLLECTED</text>
|
||||
<rect x="7" y="31" width="306" height="113" rx="3" fill="url(#portrait)"/>
|
||||
<ellipse cx="160" cy="137" rx="53" ry="5" fill="#030a08" opacity=".7"/>
|
||||
<use href="#mutant" transform="translate(105 30) scale(1.08)"/>
|
||||
<text x="13" y="164" font-family="Georgia,serif" font-size="20" fill="#f3ead1">Mutanus the Devourer</text>
|
||||
<text x="13" y="181" font-family="Arial,sans-serif" font-size="11" fill="#b8b5a7">Card not collected</text>
|
||||
<path d="M0 187H320" stroke="#536357" opacity=".6"/>
|
||||
<g transform="translate(12 191)"><rect width="21" height="21" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="10.5" y="15" text-anchor="middle" font-family="Arial,sans-serif" font-size="12" fill="#79877d">N</text></g><g transform="translate(39 191)"><rect width="21" height="21" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="10.5" y="15" text-anchor="middle" font-family="Arial,sans-serif" font-size="12" fill="#79877d">R</text></g><g transform="translate(66 191)"><rect width="21" height="21" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="10.5" y="15" text-anchor="middle" font-family="Arial,sans-serif" font-size="12" fill="#79877d">E</text></g><g transform="translate(93 191)"><rect width="21" height="21" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="10.5" y="15" text-anchor="middle" font-family="Arial,sans-serif" font-size="12" fill="#79877d">L</text></g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 15 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 93 KiB |
@@ -0,0 +1,125 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="700" viewBox="0 0 1200 700">
|
||||
<defs>
|
||||
<linearGradient id="backdrop" x2="1" y2="1"><stop stop-color="#193628"/><stop offset="1" stop-color="#06100e"/></linearGradient>
|
||||
<linearGradient id="panel" x2="1" y2="1"><stop stop-color="#27312a"/><stop offset="1" stop-color="#0c1714"/></linearGradient>
|
||||
<radialGradient id="portrait"><stop stop-color="#435549"/><stop offset="1" stop-color="#111d1a"/></radialGradient>
|
||||
<linearGradient id="scale" x2=".8" y2="1"><stop stop-color="#aac49b"/><stop offset=".45" stop-color="#4d8067"/><stop offset="1" stop-color="#1d4b42"/></linearGradient>
|
||||
<linearGradient id="belly" x2="1" y2=".8"><stop stop-color="#eee5a5"/><stop offset="1" stop-color="#a7a474"/></linearGradient>
|
||||
<linearGradient id="guardian-fill" x2=".8" y2="1"><stop stop-color="#aad36f"/><stop offset=".48" stop-color="#568d49"/><stop offset="1" stop-color="#274f37"/></linearGradient>
|
||||
<filter id="shadow"><feDropShadow dx="0" dy="12" stdDeviation="17" flood-opacity=".7"/></filter>
|
||||
<filter id="creature-shadow"><feDropShadow dx="0" dy="5" stdDeviation="4" flood-opacity=".7"/></filter>
|
||||
<g id="serpent" filter="url(#creature-shadow)">
|
||||
<path d="M24 92 C8 75 30 61 53 69 C84 79 89 55 69 45 C53 37 54 23 67 18" fill="none" stroke="#193f37" stroke-width="26" stroke-linecap="round"/>
|
||||
<path d="M24 91 C12 77 36 65 55 73 C82 82 92 54 70 44 C56 36 57 23 68 18" fill="none" stroke="url(#scale)" stroke-width="19" stroke-linecap="round"/>
|
||||
<path d="M27 84 C35 76 43 75 52 78 M67 73 C75 70 79 62 78 56 M67 41 C59 32 62 22 68 18" fill="none" stroke="url(#belly)" stroke-width="6" stroke-linecap="round" opacity=".85"/>
|
||||
<path d="M62 25 L56 15 L64 18 L67 9 L74 17 L82 14 L79 25 Q78 35 70 36 Q61 35 62 25" fill="url(#scale)" stroke="#173d34" stroke-width="2"/>
|
||||
<path d="M62 33 Q69 43 77 33 L73 48 L69 40 L64 48Z" fill="#e2cf9c"/>
|
||||
<circle cx="65" cy="25" r="2.5" fill="#f8d378"/><circle cx="75" cy="25" r="2.5" fill="#f8d378"/>
|
||||
</g>
|
||||
<g id="guardian" filter="url(#creature-shadow)">
|
||||
<path d="M40 92 L22 76 L17 47 L29 28 L43 22 L63 26 L77 43 L82 75 L65 91Z" fill="url(#guardian-fill)" stroke="#214c30" stroke-width="3"/>
|
||||
<path d="M24 41 L11 20 L31 31 M72 40 L90 18 L75 50" fill="url(#guardian-fill)" stroke="#214c30" stroke-width="3"/>
|
||||
<path d="M38 30 L40 15 L50 25 L60 14 L66 33 M27 58 L10 53 L25 72 M76 59 L91 54 L80 76" fill="#427d3d" stroke="#1b472b" stroke-width="3"/>
|
||||
<path d="M40 43 Q50 51 61 43 L65 71 Q50 80 35 69Z" fill="#9cc372" opacity=".8"/>
|
||||
<path d="M35 38 L45 42 L41 46 M65 38 L55 42 L59 46" fill="#eae99e"/>
|
||||
<path d="M40 58 Q50 63 61 58" fill="none" stroke="#173e29" stroke-width="4"/>
|
||||
</g>
|
||||
<g id="mutant" filter="url(#creature-shadow)">
|
||||
<path d="M30 90 L20 65 L30 37 L45 29 L58 31 L73 45 L80 69 L68 91Z" fill="url(#scale)" stroke="#214b3e" stroke-width="3"/>
|
||||
<path d="M34 35 L21 19 L24 42 M62 36 L75 18 L75 46" fill="url(#scale)" stroke="#214b3e" stroke-width="3"/>
|
||||
<path d="M21 61 L5 53 L18 80 M76 58 L92 48 L84 80" fill="none" stroke="#376b56" stroke-width="12" stroke-linecap="round"/>
|
||||
<path d="M36 51 L46 54 M62 51 L55 54" stroke="#e7dc89" stroke-width="5" stroke-linecap="round"/>
|
||||
<path d="M38 66 Q49 80 62 66 L58 75 L54 69 L50 79 L46 69 L42 75Z" fill="#eadfb3"/>
|
||||
</g>
|
||||
</defs>
|
||||
<rect width="1200" height="700" fill="url(#backdrop)"/>
|
||||
<path d="M0 680Q130 370 320 520T700 390T1200 540V700H0" fill="#275137" opacity=".32"/>
|
||||
<rect width="1200" height="700" fill="#020705" opacity=".58"/>
|
||||
<rect x="150" y="30" width="900" height="640" rx="15" fill="url(#panel)" stroke="#8d7d56" stroke-width="2" filter="url(#shadow)"/>
|
||||
<text x="180" y="80" font-family="Arial,sans-serif" font-size="24" font-weight="bold" letter-spacing="4" fill="#f3ead1">PAUSED</text>
|
||||
<circle cx="779" cy="70" r="22" fill="#253a31" stroke="#b7b381"/>
|
||||
<text x="779" y="78" text-anchor="middle" font-family="Georgia,serif" font-size="23" fill="#d5b875">+</text>
|
||||
<text x="814" y="67" font-family="Arial,sans-serif" font-size="17" font-weight="bold" fill="#f3ead1">Aria</text>
|
||||
<text x="814" y="86" font-family="Arial,sans-serif" font-size="12" fill="#b8b5a7">Level 24 · Priest / Discipline</text>
|
||||
<path d="M178 105H1022" stroke="#8d7d56" opacity=".6"/>
|
||||
<text x="180" y="131" font-family="Arial,sans-serif" font-size="12" font-weight="bold" letter-spacing="1" fill="#d5b875">BOSS CARDS IN THIS DUNGEON</text>
|
||||
<text x="1018" y="131" text-anchor="end" font-family="Arial,sans-serif" font-size="12" fill="#b8b5a7">2 / 6 COLLECTED</text>
|
||||
<g transform="translate(180 145)">
|
||||
<rect width="155" height="171" rx="7" fill="#17231e" stroke="#69b4ff"/>
|
||||
<rect x="1" y="1" width="153" height="20" rx="6" fill="#0a1410"/>
|
||||
<text x="8" y="14" font-family="Arial,sans-serif" font-size="8" letter-spacing="1" fill="#e9e2d2">BOSS 01</text>
|
||||
<text x="147" y="14" text-anchor="end" font-family="Arial,sans-serif" font-size="8" fill="#69b4ff">OWNED</text>
|
||||
<rect x="4" y="23" width="147" height="79" fill="url(#portrait)"/>
|
||||
<ellipse cx="78" cy="100" rx="37" ry="4" fill="#030a08" opacity=".6"/>
|
||||
<use href="#serpent" transform="translate(46 22) scale(.67)"/>
|
||||
<text x="7" y="120" font-family="Georgia,serif" font-size="12" fill="#f3ead1">Lady Anacondra</text>
|
||||
<text x="7" y="136" font-family="Arial,sans-serif" font-size="9" fill="#b8b5a7">3 copies owned</text>
|
||||
<path d="M0 143H155" stroke="#536357" opacity=".6"/>
|
||||
<g transform="translate(8 148)"><rect width="15" height="15" rx="3" fill="#2a3a3c" stroke="#ddd8ce"/><text x="7.5" y="11" text-anchor="middle" font-family="Arial,sans-serif" font-size="9" fill="#ddd8ce">N</text></g><g transform="translate(27 148)"><rect width="15" height="15" rx="3" fill="#2a3a3c" stroke="#69b4ff"/><text x="7.5" y="11" text-anchor="middle" font-family="Arial,sans-serif" font-size="9" fill="#69b4ff">R</text></g><g transform="translate(46 148)"><rect width="15" height="15" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="7.5" y="11" text-anchor="middle" font-family="Arial,sans-serif" font-size="9" fill="#79877d">E</text></g><g transform="translate(65 148)"><rect width="15" height="15" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="7.5" y="11" text-anchor="middle" font-family="Arial,sans-serif" font-size="9" fill="#79877d">L</text></g>
|
||||
</g>
|
||||
<g transform="translate(349 145)">
|
||||
<rect width="155" height="171" rx="7" fill="#17231e" stroke="#6e796d"/>
|
||||
<rect x="1" y="1" width="153" height="20" rx="6" fill="#0a1410"/>
|
||||
<text x="8" y="14" font-family="Arial,sans-serif" font-size="8" letter-spacing="1" fill="#e9e2d2">BOSS 02</text>
|
||||
<text x="147" y="14" text-anchor="end" font-family="Arial,sans-serif" font-size="8" fill="#a5a99b">MISSING</text>
|
||||
<rect x="4" y="23" width="147" height="79" fill="url(#portrait)"/>
|
||||
<ellipse cx="78" cy="100" rx="37" ry="4" fill="#030a08" opacity=".6"/>
|
||||
<use href="#serpent" transform="translate(46 22) scale(.67)"/>
|
||||
<text x="7" y="120" font-family="Georgia,serif" font-size="12" fill="#f3ead1">Lord Cobrahn</text>
|
||||
<text x="7" y="136" font-family="Arial,sans-serif" font-size="9" fill="#b8b5a7">Not collected</text>
|
||||
<path d="M0 143H155" stroke="#536357" opacity=".6"/>
|
||||
<g transform="translate(8 148)"><rect width="15" height="15" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="7.5" y="11" text-anchor="middle" font-family="Arial,sans-serif" font-size="9" fill="#79877d">N</text></g><g transform="translate(27 148)"><rect width="15" height="15" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="7.5" y="11" text-anchor="middle" font-family="Arial,sans-serif" font-size="9" fill="#79877d">R</text></g><g transform="translate(46 148)"><rect width="15" height="15" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="7.5" y="11" text-anchor="middle" font-family="Arial,sans-serif" font-size="9" fill="#79877d">E</text></g><g transform="translate(65 148)"><rect width="15" height="15" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="7.5" y="11" text-anchor="middle" font-family="Arial,sans-serif" font-size="9" fill="#79877d">L</text></g>
|
||||
</g>
|
||||
<g transform="translate(518 145)">
|
||||
<rect width="155" height="171" rx="7" fill="#17231e" stroke="#6e796d"/>
|
||||
<rect x="1" y="1" width="153" height="20" rx="6" fill="#0a1410"/>
|
||||
<text x="8" y="14" font-family="Arial,sans-serif" font-size="8" letter-spacing="1" fill="#e9e2d2">BOSS 03</text>
|
||||
<text x="147" y="14" text-anchor="end" font-family="Arial,sans-serif" font-size="8" fill="#a5a99b">MISSING</text>
|
||||
<rect x="4" y="23" width="147" height="79" fill="url(#portrait)"/>
|
||||
<ellipse cx="78" cy="100" rx="37" ry="4" fill="#030a08" opacity=".6"/>
|
||||
<use href="#serpent" transform="translate(46 22) scale(.67)"/>
|
||||
<text x="7" y="120" font-family="Georgia,serif" font-size="12" fill="#f3ead1">Lord Pythas</text>
|
||||
<text x="7" y="136" font-family="Arial,sans-serif" font-size="9" fill="#b8b5a7">Not collected</text>
|
||||
<path d="M0 143H155" stroke="#536357" opacity=".6"/>
|
||||
<g transform="translate(8 148)"><rect width="15" height="15" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="7.5" y="11" text-anchor="middle" font-family="Arial,sans-serif" font-size="9" fill="#79877d">N</text></g><g transform="translate(27 148)"><rect width="15" height="15" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="7.5" y="11" text-anchor="middle" font-family="Arial,sans-serif" font-size="9" fill="#79877d">R</text></g><g transform="translate(46 148)"><rect width="15" height="15" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="7.5" y="11" text-anchor="middle" font-family="Arial,sans-serif" font-size="9" fill="#79877d">E</text></g><g transform="translate(65 148)"><rect width="15" height="15" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="7.5" y="11" text-anchor="middle" font-family="Arial,sans-serif" font-size="9" fill="#79877d">L</text></g>
|
||||
</g>
|
||||
<g transform="translate(687 145)">
|
||||
<rect width="155" height="171" rx="7" fill="#17231e" stroke="#c493ff"/>
|
||||
<rect x="1" y="1" width="153" height="20" rx="6" fill="#0a1410"/>
|
||||
<text x="8" y="14" font-family="Arial,sans-serif" font-size="8" letter-spacing="1" fill="#e9e2d2">BOSS 04</text>
|
||||
<text x="147" y="14" text-anchor="end" font-family="Arial,sans-serif" font-size="8" fill="#c493ff">OWNED</text>
|
||||
<rect x="4" y="23" width="147" height="79" fill="url(#portrait)"/>
|
||||
<ellipse cx="78" cy="100" rx="37" ry="4" fill="#030a08" opacity=".6"/>
|
||||
<use href="#guardian" transform="translate(46 22) scale(.67)"/>
|
||||
<text x="7" y="120" font-family="Georgia,serif" font-size="10" fill="#f3ead1">Verdan the Everliving</text>
|
||||
<text x="7" y="136" font-family="Arial,sans-serif" font-size="9" fill="#b8b5a7">5 copies owned</text>
|
||||
<path d="M0 143H155" stroke="#536357" opacity=".6"/>
|
||||
<g transform="translate(8 148)"><rect width="15" height="15" rx="3" fill="#2a3a3c" stroke="#ddd8ce"/><text x="7.5" y="11" text-anchor="middle" font-family="Arial,sans-serif" font-size="9" fill="#ddd8ce">N</text></g><g transform="translate(27 148)"><rect width="15" height="15" rx="3" fill="#2a3a3c" stroke="#69b4ff"/><text x="7.5" y="11" text-anchor="middle" font-family="Arial,sans-serif" font-size="9" fill="#69b4ff">R</text></g><g transform="translate(46 148)"><rect width="15" height="15" rx="3" fill="#2a3a3c" stroke="#c493ff"/><text x="7.5" y="11" text-anchor="middle" font-family="Arial,sans-serif" font-size="9" fill="#c493ff">E</text></g><g transform="translate(65 148)"><rect width="15" height="15" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="7.5" y="11" text-anchor="middle" font-family="Arial,sans-serif" font-size="9" fill="#79877d">L</text></g>
|
||||
</g>
|
||||
<g transform="translate(856 145)">
|
||||
<rect width="155" height="171" rx="7" fill="#17231e" stroke="#6e796d"/>
|
||||
<rect x="1" y="1" width="153" height="20" rx="6" fill="#0a1410"/>
|
||||
<text x="8" y="14" font-family="Arial,sans-serif" font-size="8" letter-spacing="1" fill="#e9e2d2">BOSS 05</text>
|
||||
<text x="147" y="14" text-anchor="end" font-family="Arial,sans-serif" font-size="8" fill="#a5a99b">MISSING</text>
|
||||
<rect x="4" y="23" width="147" height="79" fill="url(#portrait)"/>
|
||||
<ellipse cx="78" cy="100" rx="37" ry="4" fill="#030a08" opacity=".6"/>
|
||||
<use href="#serpent" transform="translate(46 22) scale(.67)"/>
|
||||
<text x="7" y="120" font-family="Georgia,serif" font-size="12" fill="#f3ead1">Lord Serpentis</text>
|
||||
<text x="7" y="136" font-family="Arial,sans-serif" font-size="9" fill="#b8b5a7">Not collected</text>
|
||||
<path d="M0 143H155" stroke="#536357" opacity=".6"/>
|
||||
<g transform="translate(8 148)"><rect width="15" height="15" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="7.5" y="11" text-anchor="middle" font-family="Arial,sans-serif" font-size="9" fill="#79877d">N</text></g><g transform="translate(27 148)"><rect width="15" height="15" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="7.5" y="11" text-anchor="middle" font-family="Arial,sans-serif" font-size="9" fill="#79877d">R</text></g><g transform="translate(46 148)"><rect width="15" height="15" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="7.5" y="11" text-anchor="middle" font-family="Arial,sans-serif" font-size="9" fill="#79877d">E</text></g><g transform="translate(65 148)"><rect width="15" height="15" rx="3" fill="#252f2c" stroke="#5c6a60"/><text x="7.5" y="11" text-anchor="middle" font-family="Arial,sans-serif" font-size="9" fill="#79877d">L</text></g>
|
||||
</g>
|
||||
<text x="1018" y="335" text-anchor="end" font-family="Arial,sans-serif" font-size="11" fill="#9fa994">SCROLL →</text>
|
||||
<path d="M178 347H1022" stroke="#8d7d56" opacity=".6"/>
|
||||
<rect x="440" y="364" width="320" height="45" rx="8" fill="#587348" stroke="#9bb477"/>
|
||||
<text x="600" y="393" text-anchor="middle" font-family="Arial,sans-serif" font-size="16" font-weight="bold" fill="#fbfee9">Resume game</text>
|
||||
<g font-family="Arial,sans-serif">
|
||||
<rect x="180" y="427" width="384" height="101" rx="8" fill="#1a2621" stroke="#526153"/>
|
||||
<rect x="636" y="427" width="384" height="101" rx="8" fill="#1a2621" stroke="#526153"/>
|
||||
<rect x="180" y="544" width="384" height="101" rx="8" fill="#1a2621" stroke="#526153"/>
|
||||
<rect x="636" y="544" width="384" height="101" rx="8" fill="#1a2621" stroke="#526153"/>
|
||||
<g fill="#b8b5a7" font-size="12" font-weight="bold" letter-spacing="2"><text x="195" y="451">ADVENTURE</text><text x="651" y="451">CHARACTER</text><text x="195" y="568">SETTINGS</text><text x="651" y="568">SESSION</text></g>
|
||||
<g fill="#314136" stroke="#64795d"><rect x="195" y="466" width="169" height="43" rx="6"/><rect x="379" y="466" width="169" height="43" rx="6"/><rect x="651" y="466" width="169" height="43" rx="6"/><rect x="835" y="466" width="169" height="43" rx="6"/><rect x="195" y="583" width="169" height="43" rx="6"/><rect x="379" y="583" width="169" height="43" rx="6"/><rect x="651" y="583" width="169" height="43" rx="6"/><rect x="835" y="583" width="169" height="43" rx="6"/></g>
|
||||
<g fill="#eee9d9" font-size="12" text-anchor="middle"><text x="279" y="493">Party management</text><text x="463" y="493">Dungeon map</text><text x="735" y="493">Inventory</text><text x="919" y="493">Spellbook</text><text x="279" y="610">Options</text><text x="463" y="610">Keybinds</text><text x="735" y="610">Return to entrance</text><text x="919" y="610">Main menu</text></g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1,142 @@
|
||||
import { writeFile } from "node:fs/promises";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { dirname, join } from "node:path";
|
||||
import sharp from "sharp";
|
||||
|
||||
const outputDir = dirname(fileURLToPath(import.meta.url));
|
||||
const bosses = [
|
||||
{ name: "Lady Anacondra", copies: "3 copies owned", owned: true, accent: "#69b4ff", shape: "serpent" },
|
||||
{ name: "Lord Cobrahn", copies: "Card not collected", owned: false, accent: "#a5a99b", shape: "serpent" },
|
||||
{ name: "Lord Pythas", copies: "Card not collected", owned: false, accent: "#a5a99b", shape: "serpent" },
|
||||
{ name: "Verdan the Everliving", copies: "5 copies owned", owned: true, accent: "#c493ff", shape: "guardian" },
|
||||
{ name: "Lord Serpentis", copies: "Card not collected", owned: false, accent: "#a5a99b", shape: "serpent" },
|
||||
{ name: "Mutanus the Devourer", copies: "Card not collected", owned: false, accent: "#a5a99b", shape: "mutant" },
|
||||
];
|
||||
|
||||
const defs = `<defs>
|
||||
<linearGradient id="backdrop" x2="1" y2="1"><stop stop-color="#193628"/><stop offset="1" stop-color="#06100e"/></linearGradient>
|
||||
<linearGradient id="panel" x2="1" y2="1"><stop stop-color="#27312a"/><stop offset="1" stop-color="#0c1714"/></linearGradient>
|
||||
<radialGradient id="portrait"><stop stop-color="#435549"/><stop offset="1" stop-color="#111d1a"/></radialGradient>
|
||||
<linearGradient id="scale" x2=".8" y2="1"><stop stop-color="#aac49b"/><stop offset=".45" stop-color="#4d8067"/><stop offset="1" stop-color="#1d4b42"/></linearGradient>
|
||||
<linearGradient id="belly" x2="1" y2=".8"><stop stop-color="#eee5a5"/><stop offset="1" stop-color="#a7a474"/></linearGradient>
|
||||
<linearGradient id="guardian-fill" x2=".8" y2="1"><stop stop-color="#aad36f"/><stop offset=".48" stop-color="#568d49"/><stop offset="1" stop-color="#274f37"/></linearGradient>
|
||||
<filter id="shadow"><feDropShadow dx="0" dy="12" stdDeviation="17" flood-opacity=".7"/></filter>
|
||||
<filter id="creature-shadow"><feDropShadow dx="0" dy="5" stdDeviation="4" flood-opacity=".7"/></filter>
|
||||
<g id="serpent" filter="url(#creature-shadow)">
|
||||
<path d="M24 92 C8 75 30 61 53 69 C84 79 89 55 69 45 C53 37 54 23 67 18" fill="none" stroke="#193f37" stroke-width="26" stroke-linecap="round"/>
|
||||
<path d="M24 91 C12 77 36 65 55 73 C82 82 92 54 70 44 C56 36 57 23 68 18" fill="none" stroke="url(#scale)" stroke-width="19" stroke-linecap="round"/>
|
||||
<path d="M27 84 C35 76 43 75 52 78 M67 73 C75 70 79 62 78 56 M67 41 C59 32 62 22 68 18" fill="none" stroke="url(#belly)" stroke-width="6" stroke-linecap="round" opacity=".85"/>
|
||||
<path d="M62 25 L56 15 L64 18 L67 9 L74 17 L82 14 L79 25 Q78 35 70 36 Q61 35 62 25" fill="url(#scale)" stroke="#173d34" stroke-width="2"/>
|
||||
<path d="M62 33 Q69 43 77 33 L73 48 L69 40 L64 48Z" fill="#e2cf9c"/>
|
||||
<circle cx="65" cy="25" r="2.5" fill="#f8d378"/><circle cx="75" cy="25" r="2.5" fill="#f8d378"/>
|
||||
</g>
|
||||
<g id="guardian" filter="url(#creature-shadow)">
|
||||
<path d="M40 92 L22 76 L17 47 L29 28 L43 22 L63 26 L77 43 L82 75 L65 91Z" fill="url(#guardian-fill)" stroke="#214c30" stroke-width="3"/>
|
||||
<path d="M24 41 L11 20 L31 31 M72 40 L90 18 L75 50" fill="url(#guardian-fill)" stroke="#214c30" stroke-width="3"/>
|
||||
<path d="M38 30 L40 15 L50 25 L60 14 L66 33 M27 58 L10 53 L25 72 M76 59 L91 54 L80 76" fill="#427d3d" stroke="#1b472b" stroke-width="3"/>
|
||||
<path d="M40 43 Q50 51 61 43 L65 71 Q50 80 35 69Z" fill="#9cc372" opacity=".8"/>
|
||||
<path d="M35 38 L45 42 L41 46 M65 38 L55 42 L59 46" fill="#eae99e"/>
|
||||
<path d="M40 58 Q50 63 61 58" fill="none" stroke="#173e29" stroke-width="4"/>
|
||||
</g>
|
||||
<g id="mutant" filter="url(#creature-shadow)">
|
||||
<path d="M30 90 L20 65 L30 37 L45 29 L58 31 L73 45 L80 69 L68 91Z" fill="url(#scale)" stroke="#214b3e" stroke-width="3"/>
|
||||
<path d="M34 35 L21 19 L24 42 M62 36 L75 18 L75 46" fill="url(#scale)" stroke="#214b3e" stroke-width="3"/>
|
||||
<path d="M21 61 L5 53 L18 80 M76 58 L92 48 L84 80" fill="none" stroke="#376b56" stroke-width="12" stroke-linecap="round"/>
|
||||
<path d="M36 51 L46 54 M62 51 L55 54" stroke="#e7dc89" stroke-width="5" stroke-linecap="round"/>
|
||||
<path d="M38 66 Q49 80 62 66 L58 75 L54 69 L50 79 L46 69 L42 75Z" fill="#eadfb3"/>
|
||||
</g>
|
||||
</defs>`;
|
||||
|
||||
function rarityMarks(boss, x, y, compact = false) {
|
||||
const size = compact ? 15 : 21;
|
||||
const gap = compact ? 4 : 6;
|
||||
return ["N", "R", "E", "L"].map((label, index) => {
|
||||
const owned = boss.owned && (boss.name.startsWith("Verdan") ? index < 3 : index < 2);
|
||||
const color = ["#ddd8ce", "#69b4ff", "#c493ff", "#e5a757"][index];
|
||||
return `<g transform="translate(${x + index * (size + gap)} ${y})"><rect width="${size}" height="${size}" rx="3" fill="${owned ? "#2a3a3c" : "#252f2c"}" stroke="${owned ? color : "#5c6a60"}"/><text x="${size / 2}" y="${compact ? 11 : 15}" text-anchor="middle" font-family="Arial,sans-serif" font-size="${compact ? 9 : 12}" fill="${owned ? color : "#79877d"}">${label}</text></g>`;
|
||||
}).join("");
|
||||
}
|
||||
|
||||
function largeCard(boss, index) {
|
||||
const x = 88 + index % 3 * 352;
|
||||
const y = 166 + Math.floor(index / 3) * 226;
|
||||
const owned = boss.owned;
|
||||
return `<g transform="translate(${x} ${y})">
|
||||
<rect width="320" height="210" rx="9" fill="#151f1b" stroke="${owned ? boss.accent : "#69756b"}" stroke-width="${owned ? 2 : 1}"/>
|
||||
<rect x="1" y="1" width="318" height="28" rx="8" fill="#0a1410"/>
|
||||
<text x="12" y="19" font-family="Arial,sans-serif" font-size="11" letter-spacing="2" fill="#efe8d7">BOSS ${String(index + 1).padStart(2, "0")}</text>
|
||||
<text x="307" y="19" text-anchor="end" font-family="Arial,sans-serif" font-size="10" fill="${boss.accent}">${owned ? "COLLECTED" : "UNCOLLECTED"}</text>
|
||||
<rect x="7" y="31" width="306" height="113" rx="3" fill="url(#portrait)"/>
|
||||
<ellipse cx="160" cy="137" rx="53" ry="5" fill="#030a08" opacity=".7"/>
|
||||
<use href="#${boss.shape}" transform="translate(105 30) scale(1.08)"/>
|
||||
<text x="13" y="164" font-family="Georgia,serif" font-size="${boss.name.length > 20 ? 18 : 20}" fill="#f3ead1">${boss.name}</text>
|
||||
<text x="13" y="181" font-family="Arial,sans-serif" font-size="11" fill="#b8b5a7">${boss.copies}</text>
|
||||
<path d="M0 187H320" stroke="#536357" opacity=".6"/>
|
||||
${rarityMarks(boss, 12, 191)}
|
||||
</g>`;
|
||||
}
|
||||
|
||||
const countdown = `<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="700" viewBox="0 0 1200 700">
|
||||
${defs}
|
||||
<rect width="1200" height="700" fill="url(#backdrop)"/>
|
||||
<path d="M0 660Q130 310 300 490T760 365T1200 470V700H0" fill="#2c5037" opacity=".24"/>
|
||||
<rect x="58" y="34" width="1084" height="632" rx="16" fill="url(#panel)" stroke="#8d7d56" stroke-width="2" filter="url(#shadow)"/>
|
||||
<text x="88" y="102" font-family="Georgia,serif" font-size="38" fill="#f3ead1">Wailing Caverns</text>
|
||||
<text x="88" y="132" font-family="Arial,sans-serif" font-size="14" fill="#b8b5a7">6 bosses ahead · 2 collected</text>
|
||||
<path d="M978 56V140" stroke="#88764f"/>
|
||||
<text x="1050" y="78" text-anchor="middle" font-family="Arial,sans-serif" font-size="11" letter-spacing="2" fill="#b8b5a7">ENTERING IN</text>
|
||||
<text x="1050" y="134" text-anchor="middle" font-family="Georgia,serif" font-size="60" fill="#d5b875">05</text>
|
||||
${bosses.map(largeCard).join("\n ")}
|
||||
</svg>\n`;
|
||||
|
||||
function compactCard(boss, index) {
|
||||
const x = 180 + index * 169;
|
||||
return `<g transform="translate(${x} 145)">
|
||||
<rect width="155" height="171" rx="7" fill="#17231e" stroke="${boss.owned ? boss.accent : "#6e796d"}"/>
|
||||
<rect x="1" y="1" width="153" height="20" rx="6" fill="#0a1410"/>
|
||||
<text x="8" y="14" font-family="Arial,sans-serif" font-size="8" letter-spacing="1" fill="#e9e2d2">BOSS ${String(index + 1).padStart(2, "0")}</text>
|
||||
<text x="147" y="14" text-anchor="end" font-family="Arial,sans-serif" font-size="8" fill="${boss.accent}">${boss.owned ? "OWNED" : "MISSING"}</text>
|
||||
<rect x="4" y="23" width="147" height="79" fill="url(#portrait)"/>
|
||||
<ellipse cx="78" cy="100" rx="37" ry="4" fill="#030a08" opacity=".6"/>
|
||||
<use href="#${boss.shape}" transform="translate(46 22) scale(.67)"/>
|
||||
<text x="7" y="120" font-family="Georgia,serif" font-size="${boss.name.length > 19 ? 10 : 12}" fill="#f3ead1">${boss.name}</text>
|
||||
<text x="7" y="136" font-family="Arial,sans-serif" font-size="9" fill="#b8b5a7">${boss.owned ? boss.copies : "Not collected"}</text>
|
||||
<path d="M0 143H155" stroke="#536357" opacity=".6"/>
|
||||
${rarityMarks(boss, 8, 148, true)}
|
||||
</g>`;
|
||||
}
|
||||
|
||||
const pause = `<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="700" viewBox="0 0 1200 700">
|
||||
${defs}
|
||||
<rect width="1200" height="700" fill="url(#backdrop)"/>
|
||||
<path d="M0 680Q130 370 320 520T700 390T1200 540V700H0" fill="#275137" opacity=".32"/>
|
||||
<rect width="1200" height="700" fill="#020705" opacity=".58"/>
|
||||
<rect x="150" y="30" width="900" height="640" rx="15" fill="url(#panel)" stroke="#8d7d56" stroke-width="2" filter="url(#shadow)"/>
|
||||
<text x="180" y="80" font-family="Arial,sans-serif" font-size="24" font-weight="bold" letter-spacing="4" fill="#f3ead1">PAUSED</text>
|
||||
<circle cx="779" cy="70" r="22" fill="#253a31" stroke="#b7b381"/>
|
||||
<text x="779" y="78" text-anchor="middle" font-family="Georgia,serif" font-size="23" fill="#d5b875">+</text>
|
||||
<text x="814" y="67" font-family="Arial,sans-serif" font-size="17" font-weight="bold" fill="#f3ead1">Aria</text>
|
||||
<text x="814" y="86" font-family="Arial,sans-serif" font-size="12" fill="#b8b5a7">Level 24 · Priest / Discipline</text>
|
||||
<path d="M178 105H1022" stroke="#8d7d56" opacity=".6"/>
|
||||
<text x="180" y="131" font-family="Arial,sans-serif" font-size="12" font-weight="bold" letter-spacing="1" fill="#d5b875">BOSS CARDS IN THIS DUNGEON</text>
|
||||
<text x="1018" y="131" text-anchor="end" font-family="Arial,sans-serif" font-size="12" fill="#b8b5a7">2 / 6 COLLECTED</text>
|
||||
${bosses.slice(0, 5).map(compactCard).join("\n ")}
|
||||
<text x="1018" y="335" text-anchor="end" font-family="Arial,sans-serif" font-size="11" fill="#9fa994">SCROLL →</text>
|
||||
<path d="M178 347H1022" stroke="#8d7d56" opacity=".6"/>
|
||||
<rect x="440" y="364" width="320" height="45" rx="8" fill="#587348" stroke="#9bb477"/>
|
||||
<text x="600" y="393" text-anchor="middle" font-family="Arial,sans-serif" font-size="16" font-weight="bold" fill="#fbfee9">Resume game</text>
|
||||
<g font-family="Arial,sans-serif">
|
||||
<rect x="180" y="427" width="384" height="101" rx="8" fill="#1a2621" stroke="#526153"/>
|
||||
<rect x="636" y="427" width="384" height="101" rx="8" fill="#1a2621" stroke="#526153"/>
|
||||
<rect x="180" y="544" width="384" height="101" rx="8" fill="#1a2621" stroke="#526153"/>
|
||||
<rect x="636" y="544" width="384" height="101" rx="8" fill="#1a2621" stroke="#526153"/>
|
||||
<g fill="#b8b5a7" font-size="12" font-weight="bold" letter-spacing="2"><text x="195" y="451">ADVENTURE</text><text x="651" y="451">CHARACTER</text><text x="195" y="568">SETTINGS</text><text x="651" y="568">SESSION</text></g>
|
||||
<g fill="#314136" stroke="#64795d"><rect x="195" y="466" width="169" height="43" rx="6"/><rect x="379" y="466" width="169" height="43" rx="6"/><rect x="651" y="466" width="169" height="43" rx="6"/><rect x="835" y="466" width="169" height="43" rx="6"/><rect x="195" y="583" width="169" height="43" rx="6"/><rect x="379" y="583" width="169" height="43" rx="6"/><rect x="651" y="583" width="169" height="43" rx="6"/><rect x="835" y="583" width="169" height="43" rx="6"/></g>
|
||||
<g fill="#eee9d9" font-size="12" text-anchor="middle"><text x="279" y="493">Party management</text><text x="463" y="493">Dungeon map</text><text x="735" y="493">Inventory</text><text x="919" y="493">Spellbook</text><text x="279" y="610">Options</text><text x="463" y="610">Keybinds</text><text x="735" y="610">Return to entrance</text><text x="919" y="610">Main menu</text></g>
|
||||
</g>
|
||||
</svg>\n`;
|
||||
|
||||
for (const [name, svg] of [["dungeon-boss-countdown", countdown], ["pause-boss-card-strip", pause]]) {
|
||||
await writeFile(join(outputDir, `${name}.svg`), svg);
|
||||
await sharp(Buffer.from(svg)).png().toFile(join(outputDir, `${name}.png`));
|
||||
}
|
||||
Reference in new issue
Block a user