├── .gitignore ├── README.md ├── buffs.html ├── config.html ├── css ├── buffs │ └── buffs.css ├── config │ └── config.css ├── gauges │ ├── arrow.css │ ├── bar.css │ ├── fonts │ │ └── OPTIEdgarBold-Extended.otf │ ├── gauges.css │ ├── glow.css │ └── square.css └── general │ └── general.css ├── glow ├── ATEX │ ├── Game_File.java │ ├── ImageDecoding.java │ ├── TextureFile.java │ ├── Utils.java │ └── main.java └── lum_to_alpha.py ├── img ├── buff_icons │ ├── battlelitany.png │ ├── battlevoice.png │ ├── bio.png │ ├── biolysis.png │ ├── bloodofthedragon.png │ ├── brotherhood.png │ ├── bunshin.png │ ├── causticbite.png │ ├── chainstratagem.png │ ├── chaosthrust.png │ ├── combust.png │ ├── delirium.png │ ├── devilment.png │ ├── devotion.png │ ├── dia.png │ ├── disembowel.png │ ├── divination.png │ ├── doublemidare.png │ ├── dragonsight.png │ ├── embolden.png │ ├── firebirdtrance.png │ ├── goringblade.png │ ├── higanbana.png │ ├── innerrelease.png │ ├── jinpu.png │ ├── ladyofcrowns.png │ ├── lancecharge.png │ ├── livingshadow.png │ ├── lordofcrowns.png │ ├── manafication.png │ ├── miasma.png │ ├── nastrond.png │ ├── offguard.png │ ├── peculiarlight.png │ ├── ragingstrikes.png │ ├── riddleoffire.png │ ├── shifu.png │ ├── songoftorment.png │ ├── stormbite.png │ ├── stormseye.png │ ├── summonbahamut.png │ ├── technicalfinish.png │ ├── thearrow.png │ ├── thebalance.png │ ├── thebole.png │ ├── theewer.png │ ├── thespear.png │ ├── thespire.png │ ├── thunder3.png │ ├── thunder4.png │ ├── trickattack.png │ └── wildfire.png ├── buff_icons_small │ ├── bahamut.png │ ├── bio.png │ ├── biolysis.png │ ├── bloodweapon.png │ ├── causticbite.png │ ├── combust.png │ ├── delirium.png │ ├── devilment.png │ ├── dia.png │ ├── fightorflight.png │ ├── goringblade.png │ ├── higanbana.png │ ├── hypercharge.png │ ├── innerrelease.png │ ├── jinpu.png │ ├── lancecharge.png │ ├── manafication.png │ ├── miasma.png │ ├── nomercy.png │ ├── perfectbalance.png │ ├── pheonix.png │ ├── ragingstrikes.png │ ├── requiescat.png │ ├── riddleoffire.png │ ├── righteye.png │ ├── shifu.png │ ├── songoftorment.png │ ├── stormbite.png │ ├── stormseye.png │ ├── thunder3.png │ ├── thunder4.png │ ├── trickattack.png │ └── wildfire.png ├── docs │ ├── AST.gif │ ├── DRK.gif │ ├── alex.gif │ └── demo_img.png ├── general │ ├── cog.png │ ├── dash.gif │ ├── dash │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ ├── 4.png │ │ ├── 5.png │ │ ├── 6.png │ │ ├── 7.png │ │ └── 8.png │ ├── diamond.png │ ├── recast.png │ ├── recast │ │ ├── frame.png │ │ ├── recast_01.png │ │ ├── recast_02.png │ │ ├── recast_03.png │ │ ├── recast_04.png │ │ ├── recast_05.png │ │ ├── recast_06.png │ │ ├── recast_07.png │ │ ├── recast_08.png │ │ ├── recast_09.png │ │ ├── recast_10.png │ │ ├── recast_11.png │ │ ├── recast_12.png │ │ ├── recast_13.png │ │ ├── recast_14.png │ │ ├── recast_15.png │ │ ├── recast_16.png │ │ ├── recast_17.png │ │ ├── recast_18.png │ │ ├── recast_19.png │ │ ├── recast_20.png │ │ ├── recast_21.png │ │ ├── recast_22.png │ │ ├── recast_23.png │ │ ├── recast_24.png │ │ ├── recast_25.png │ │ ├── recast_26.png │ │ ├── recast_27.png │ │ ├── recast_28.png │ │ ├── recast_29.png │ │ ├── recast_30.png │ │ ├── recast_31.png │ │ ├── recast_32.png │ │ ├── recast_33.png │ │ ├── recast_34.png │ │ ├── recast_35.png │ │ ├── recast_36.png │ │ ├── recast_37.png │ │ ├── recast_38.png │ │ ├── recast_39.png │ │ ├── recast_40.png │ │ ├── recast_41.png │ │ ├── recast_42.png │ │ ├── recast_43.png │ │ ├── recast_44.png │ │ ├── recast_45.png │ │ ├── recast_46.png │ │ ├── recast_47.png │ │ ├── recast_48.png │ │ ├── recast_49.png │ │ ├── recast_50.png │ │ ├── recast_51.png │ │ ├── recast_52.png │ │ ├── recast_53.png │ │ ├── recast_54.png │ │ ├── recast_55.png │ │ ├── recast_56.png │ │ ├── recast_57.png │ │ ├── recast_58.png │ │ ├── recast_59.png │ │ ├── recast_60.png │ │ ├── recast_61.png │ │ ├── recast_62.png │ │ ├── recast_63.png │ │ ├── recast_64.png │ │ ├── recast_65.png │ │ ├── recast_66.png │ │ ├── recast_67.png │ │ ├── recast_68.png │ │ ├── recast_69.png │ │ ├── recast_70.png │ │ ├── recast_71.png │ │ ├── recast_72.png │ │ ├── recast_73.png │ │ ├── recast_74.png │ │ ├── recast_75.png │ │ ├── recast_76.png │ │ ├── recast_77.png │ │ ├── recast_78.png │ │ ├── recast_79.png │ │ ├── recast_80.png │ │ └── recast_81.png │ └── silver_gauge.png ├── glow │ ├── mask │ │ ├── cyber.png │ │ ├── cyber2.png │ │ ├── glass.png │ │ ├── hex.png │ │ ├── hex2.png │ │ ├── ice.png │ │ ├── l.png │ │ ├── l2.png │ │ ├── m1.png │ │ ├── m10.png │ │ ├── m11.png │ │ ├── m12.png │ │ ├── m13.png │ │ ├── m2.png │ │ ├── m3.png │ │ ├── m4.png │ │ ├── m5.png │ │ ├── m6.png │ │ ├── m7.png │ │ ├── m8.png │ │ ├── m9.png │ │ ├── prism.png │ │ └── write.png │ └── tex │ │ ├── aura0.png │ │ ├── aura2.png │ │ ├── aura3.png │ │ ├── bene.png │ │ ├── black.png │ │ ├── cloud.png │ │ ├── cyber.png │ │ ├── cyber2.png │ │ ├── dark.png │ │ ├── dark2.png │ │ ├── dark3.png │ │ ├── elec.png │ │ ├── elec2.png │ │ ├── elec3.png │ │ ├── elec4.png │ │ ├── fire.png │ │ ├── fire2.png │ │ ├── fire3.png │ │ ├── fire4.png │ │ ├── fireblue.png │ │ ├── fireblue2.png │ │ ├── fireblueblack.png │ │ ├── green.png │ │ ├── jewel.png │ │ ├── lens_03.atex.png │ │ ├── line.png │ │ ├── prism.png │ │ ├── prism2.png │ │ ├── prism3.png │ │ ├── purple.png │ │ ├── rainbow.png │ │ ├── rainbow2.png │ │ ├── rock.png │ │ ├── smash.png │ │ ├── sonic.png │ │ ├── sonic2.png │ │ ├── sonic3.png │ │ ├── swirl.png │ │ ├── thin.png │ │ ├── water.png │ │ ├── water2.png │ │ ├── water3.png │ │ └── wind.png └── job_icons │ ├── AST.png │ ├── BLM.png │ ├── BLU.png │ ├── BRD.png │ ├── DNC.png │ ├── DRG.png │ ├── DRK.png │ ├── GNB.png │ ├── MCH.png │ ├── MNK.png │ ├── NIN.png │ ├── PLD.png │ ├── RDM.png │ ├── SAM.png │ ├── SCH.png │ ├── SMN.png │ ├── WAR.png │ └── WHM.png ├── index.html ├── js ├── buffs │ ├── buffs.js │ ├── index.js │ ├── settings.js │ └── visual.js ├── classes │ ├── gaugeBuff.js │ ├── partyBuff.js │ └── user.js ├── config │ ├── config-default.js │ └── index.js ├── gauges │ ├── actions.js │ ├── index.js │ ├── settings.js │ └── visual.js └── general │ ├── ids.js │ └── init.js └── test_webserver.js /.gitignore: -------------------------------------------------------------------------------- 1 | img/actions/Illustration.clip 2 | *.class 3 | package-lock.json 4 | node_modules -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CODEX 2 | 3 | Extra gauges and buff trackers for FFXIV 4 | 5 | **❗❗❗ Consider using the [QuickLauncher plugin](https://github.com/0ceal0t/JobBars) instead, as it has more features and is being more actively maintained ❗❗❗** 6 | 7 | 8 | 9 | ## Installation 10 | 1. ACT + FFXIV Plugin 11 | 2. [NGLD's OverlayPlugin](https://github.com/quisquous/cactbot#install-ngld-overlayplugin) 12 | 3. For gauges, add a new Miniparse overlay, and point the url to `https://mkaminsky11.github.io/Codex/index.html` 13 | 4. For buff tracker, add a new Miniparse overlay, and point the url to `https://mkaminsky11.github.io/Codex/buffs.html` 14 | 5. After positioning the overlays, check "Lock Overlay" and "Enable Clickthrough" in ACT 15 | 16 | ### (For Streamers) 17 | 1. In OBS, add new brower sources pointing to `https://mkaminsky11.github.io/Codex/index.html?OVERLAY_WS=ws://127.0.0.1:10501/ws` or `https://mkaminsky11.github.io/Codex/buffs.html?OVERLAY_WS=ws://127.0.0.1:10501/ws` 18 | 19 | ## Job Gauges 20 | Shows information such as how much time you have left on your DoT (Biolysis, Dia, etc.), how many gcds you have gotten under buffs (Inner release, Perfect Balance) 21 | 22 | ## Buff Tracker 23 | Shows which party buffs are currently active and how long until they are off cooldown. For Astrologian, also shows which personal buffs your party members are using so that you can give them cards. 24 | 25 | ![](img/docs/AST.gif) 26 | ![](img/docs/DRK.gif) 27 | 28 | ## Known Issues 29 | + The overlay has problems in exploration zones (Eureka and Bozja), and will often not register actions correctly. I'm looking into it :/ 30 | 31 | ## FAQs 32 | ### Do I need Cactbot for this to work? 33 | > No 34 | ### How to I change the overlay settings? 35 | > Hover your cursor over the gauges and click on the cog icon. Make sure "Enable Clickthrough" is not checked in ACT. 36 | ### Why aren't my party buffs showing up? 37 | > Make sure to add a new overlay pointing to `https://mkaminsky11.github.io/Codex/buffs.html`. Otherwise, open an [Issue](https://github.com/mkaminsky11/Codex/issues/new) 38 | ### Why does it say "UNLOCKED (LOCK BEFORE USING)" 39 | > Check "Lock Overlay" inside of ACT ([see this image](https://github.com/quisquous/cactbot/raw/main/screenshots/overlay_plugin_new_raidboss_locked.png)) 40 | 41 | ## TODO Log 42 | ``` 43 | - ~~horizontal gauges~~ [DONE] 44 | - settings in all overlays 45 | - add demolish, chaos thrust 46 | - dots in own bars 47 | - ~~make everything more modular~~ [DONE] 48 | - ~~add icons~~ [DONE] 49 | - ~~change buff size~~ [DONE] 50 | - glows on arrows 51 | - multi-DoT tracker 52 | - multi-buffs (if you have multiple of a job in your party) 53 | - ~~change bar type~~ [DONE] 54 | - ~~change arrow size~~ 55 | - material UI or base FFXIV 56 | - add buff settings (change size, etc.) 57 | - stop flashing dot warning after a while (if enabled) 58 | - reset button 59 | ``` 60 | 61 | ## Jobs 62 | 63 | ### DRK 64 | + **Gauges**: GCDS used in Delirium, GCDS used in Blood Weapon 65 | + **Buffs**: Delerium, Living Shadow 66 | 67 | ### WAR 68 | + **Gauges**: GCDS used in Inner Release, Storm's Eye tracker 69 | + **Buffs**: Inner Release 70 | 71 | ### PLD 72 | + **Gauges**: GCDS used in Requiescat, GCDS used in Fight or Flight, Goring Blade tracker 73 | 74 | ### GNB 75 | + **Gauges**: GCDS used in No Mercy 76 | 77 | ### SCH 78 | + **Gauges**: Biolysis tracker 79 | + **Buffs**: Chain Stratagem 80 | 81 | ### WHM 82 | + **Gauges**: Dia tracker 83 | 84 | ### AST 85 | + **Gauges**: Combust Tracker 86 | + **Buffs**: Cards, Divination 87 | 88 | ### MNK 89 | + **Gauges**: GCDS used in Riddle of Fire, GCDS used in Perfect Balance 90 | + **Buffs**: Brotherhood, Riddle of Fire 91 | 92 | ### DRG 93 | + **Gauges**: GCDS used in Lance Charge, GCDS used in Dragon Sight 94 | + **Buffs**: Dragon Sight, Litany, Lance Charge 95 | 96 | ### NIN 97 | + **Gauges**: GCDS used in Trick 98 | + **Buffs**: Trick Attack, Bunshin 99 | 100 | ### SAM 101 | + **Gauges**: Jinpu tracker, Shifu tracker, Higanbana tracker 102 | + **Buffs**: Double Midare 103 | 104 | ### BRD 105 | + **Gauges**: GCDS used in Raging Strikes, Caustic Bite tracker, Stormbite tracker 106 | + **Buffs**: Battle Voice, Raging Strikes 107 | 108 | ### MCH 109 | + **Gauges**: GCDS used in Hypercharge, GCDS used in Wildfire 110 | + **Buffs**: Wildfire 111 | 112 | ### DNC 113 | + **Gauges**: GCDS used in Devilment 114 | + **Buffs**: Technical Step, Devilment 115 | 116 | ### BLM 117 | + **Gauges**: Thunder tracker 118 | 119 | ### SMN 120 | + **Gauges**: Bio tracker, Miasma tracker, Wyrmwave and Scarlet Flame tracker 121 | + **Buffs**: Devotion, Summon Bahamut, Firebird Trance 122 | 123 | ### RDM 124 | + **Gauges**: GCDS used in Manification 125 | + **Buffs**: Embolden, Manafication 126 | 127 | ### BLU 128 | + **Gauges**: Song of Torment tracker 129 | + **Buffs**: Off-guard, Peculiar Light 130 | + **TODO:** Revenge blast indicator 131 | 132 | ## Issues and Acknowledgement 133 | Thank you to [skotlex](https://github.com/skotlex/ffxiv-material-ui) for the awesome icons. 134 | 135 | Thank you to [goaaats](https://github.com/goaaats/ffxiv-explorer-fork) and all the contributors of FFXIV-Explorer for the `.atex` conversion code 136 | 137 | Please report any issues [here](https://github.com/mkaminsky11/Codex/issues) or message me @ ocealot#4484 138 | -------------------------------------------------------------------------------- /buffs.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | UNLOCKED (LOCK OVERLAY BEFORE USING) 10 | 11 |
12 |
13 |
14 |
15 |
16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /config.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 |
9 | SETTINGS 10 | REPORT AN ISSUE 11 | SAVE 12 |
13 |
14 |
+JOB GAUGES
15 |
16 |
17 |
18 | Edges 19 | 24 |
25 |
26 | Scaling 27 | 28 |
29 |
30 | Font Size 31 | 32 |
33 | 34 |
35 | Justify Right 36 | 37 |
38 |
39 | Reverse 40 | 41 |
42 |
43 | Small Icons 44 | 45 |
46 |
47 | Horizontal Gauges 48 | 49 |
50 |
51 | 52 |
53 |
54 | Time visible after buff ends (milliseconds) 55 | 56 |
57 |
58 | Timer refresh (milliseconds) 59 | 60 |
61 |
62 | Flash when DoTs low 63 | 64 |
65 |
66 | Glow around active bars 67 | 68 |
69 |
70 | 71 |
72 | Jobs 73 |
74 |
75 | 76 |
+PARTY BUFFS
77 |
78 |
79 | Always show party member's personal buffs (enabled for AST automatically) 80 | 81 |
82 |
83 | Show own personal buffs 84 | 85 |
86 |
87 | Small buffs 88 | 89 |
90 |
91 |
92 |
93 | 94 | 95 | 96 | -------------------------------------------------------------------------------- /css/buffs/buffs.css: -------------------------------------------------------------------------------- 1 | #buffs { 2 | display: flex; 3 | flex-direction: row; 4 | flex-wrap: wrap; 5 | } 6 | /* ====== BUFFS ===== */ 7 | .buff { 8 | margin: 5px; 9 | display: flex; 10 | flex-direction: column; 11 | width: 40px; 12 | height: 30px; 13 | overflow: hidden; 14 | position: relative; 15 | border-color: white; 16 | border-width: 1px; 17 | border-style: solid; 18 | order: 1; 19 | align-items: center; 20 | justify-content: center; 21 | } 22 | .buff img { 23 | margin-top: -3px; 24 | width: 100%; 25 | z-index: 1; 26 | } 27 | .buff-text { 28 | position: absolute; 29 | z-index: 3; 30 | color: white; 31 | font-weight: 900; 32 | font-size: 19px; 33 | font-family: sans-serif; 34 | -webkit-text-stroke-color: #191919; 35 | -webkit-text-stroke-width: 1px; 36 | width: 100%; 37 | height: 100%; 38 | text-align: center; 39 | line-height: 1; 40 | } 41 | .buff-ready .pulse { 42 | animation: pulse 0.5s; 43 | } 44 | .pulse { 45 | position: absolute; 46 | z-index: 1; 47 | content: ''; 48 | } 49 | @keyframes pulse { 50 | 0% { 51 | width: 0%; 52 | height: 0%; 53 | left: 50%; 54 | bottom: 50%; 55 | background-color: white; 56 | } 57 | 50% { 58 | background-color: white; 59 | } 60 | 100% { 61 | height: 100%; 62 | width: 100%; 63 | left: 0%; 64 | bottom: 0%; 65 | background-color: rgba(255, 255, 255, 0.0); 66 | } 67 | } 68 | .buff-overlay { 69 | position: absolute; 70 | z-index: 2; 71 | width: 100%; 72 | height: 0%; 73 | background-color: rgba(0,0,0,0.6); 74 | bottom: 0px; 75 | } 76 | .buff-small .buff { 77 | width: 30px; 78 | height: 20px; 79 | } 80 | .buff-small .buff-text { 81 | font-size: 16px; 82 | } 83 | /* ====== ON CD ======== */ 84 | .buff-cd { 85 | border-color:black !important; 86 | filter: brightness(0.8); 87 | order: 2 !important; 88 | } 89 | .buff-cd .buff-img { 90 | filter: brightness(0.8); 91 | } 92 | /* ======== READY ========= */ 93 | .buff-ready .buff-text { 94 | display: none; 95 | } 96 | /* ===== PERSONAL ========== */ 97 | .buff-personal { 98 | order: 3 !important; 99 | } 100 | /* ======= HIDDEN ======== */ 101 | .not-ast .buff-ast-only { 102 | display: none !important; 103 | } 104 | .locked .buff-hidden { 105 | display: none !important; 106 | } 107 | .hide { 108 | display: none !important; 109 | } 110 | .hideOverride { 111 | display: none !important; 112 | } -------------------------------------------------------------------------------- /css/config/config.css: -------------------------------------------------------------------------------- 1 | /* SETUP */ 2 | body { 3 | margin: 0; 4 | width: 100%; 5 | height: 100%; 6 | font-family: Arial, Helvetica, sans-serif; 7 | } 8 | #settings-panel { 9 | z-index: 2; 10 | background-color: #292929; 11 | width: 100%; 12 | height: 100%; 13 | position: absolute; 14 | display: flex; 15 | flex-direction: column; 16 | top: 0; 17 | left: 0; 18 | } 19 | #settings-header { 20 | display: flex; 21 | flex-direction: row; 22 | width: calc(100% - 10px); 23 | padding: 5px; 24 | background-color: #191919; 25 | } 26 | #settings-title { 27 | flex: 1; 28 | color: white; 29 | font-weight: bold; 30 | margin-left: 15px; 31 | margin-top: 2px; 32 | } 33 | #settings-help { 34 | background-color: #565656; 35 | } 36 | #settings-apply:hover { 37 | background-color: #19a5a5; 38 | } 39 | #settings-body { 40 | width: 100%; 41 | flex: 1; 42 | display: flex; 43 | overflow: auto; 44 | flex-direction: column; 45 | } 46 | /* GENERIC */ 47 | .btn { 48 | padding: 5px; 49 | font-size: 14px; 50 | background-color: #0a6f6f; 51 | color: #f3f3f3; 52 | margin-right: 9px; 53 | border: solid thin #163944; 54 | font-weight: bold; 55 | padding-left: 10px; 56 | padding-right: 10px; 57 | border-radius: 2px; 58 | } 59 | .btn a { 60 | text-decoration: none; 61 | color: white; 62 | } 63 | .settings-category { 64 | display: flex; 65 | flex-direction: column; 66 | } 67 | .hide { 68 | display: none !important; 69 | } 70 | .row { 71 | display: flex; 72 | flex-direction: row; 73 | } 74 | .row-title { 75 | flex: 1; 76 | } 77 | .text { 78 | margin-left: 7px; 79 | margin-right: 3px; 80 | font-size: 13px; 81 | color: #d8d8d8; 82 | } 83 | input, select { 84 | font-size: 11px; 85 | margin: 0; 86 | padding: 0px; 87 | height: 16px; 88 | border-radius: 2px; 89 | border: none; 90 | padding-left: 2px; 91 | padding-right: 2px; 92 | background-color: #ffffff; 93 | border: solid thin #212121; 94 | } 95 | /* ROW */ 96 | .job-icon { 97 | height: 20px; 98 | margin-bottom: -3px; 99 | } 100 | .settings-row { 101 | color: white; 102 | padding: 5px; 103 | padding-right: 10px; 104 | padding-left: 10px; 105 | border-radius: 2px; 106 | margin: 5px; 107 | margin-left: 20px; 108 | margin-right: 20px; 109 | background-color: #353535; 110 | border: solid thin black; 111 | } 112 | .settings-row > span { 113 | font-weight: bold; 114 | } 115 | /* ROW 2 */ 116 | .settings-row-2 { 117 | border-radius: 2px; 118 | margin: 5px; 119 | border: solid thin #272727; 120 | } 121 | .settings-row-2-header { 122 | padding: 5px; 123 | padding-right: 10px; 124 | padding-left: 10px; 125 | background-color: #464646; 126 | } 127 | .settings-row-2-body { 128 | padding: 5px; 129 | padding-right: 10px; 130 | padding-left: 10px; 131 | background-color: #353535; 132 | border-top: solid thin #191919; 133 | } 134 | .codex-order { 135 | width: 20px; 136 | margin-left: 5px; 137 | margin-right: 5px; 138 | } 139 | /* COLLAPSE */ 140 | .settings-collapse { 141 | padding: 5px; 142 | background-color: #060606; 143 | color: white; 144 | padding-left: 10px; 145 | font-size: 15px; 146 | } 147 | .settings-collapse-button { 148 | font-family: monospace; 149 | margin-right: 20px; 150 | font-size: 19px; 151 | } 152 | /* TAG */ 153 | .tag { 154 | font-size: 11px; 155 | font-family: Consolas; 156 | border: solid thin white; 157 | padding-left: 5px; 158 | padding-right: 5px; 159 | border-radius: 3px; 160 | margin-left: 5px; 161 | } 162 | .tag-red { 163 | color: #ff7a7a; 164 | border-color: #ff7a7a; 165 | } 166 | .tag-yellow { 167 | color: #ffe94b; 168 | border-color: #ffe94b; 169 | } 170 | .tag-green { 171 | color: #25ff17; 172 | border-color: #25ff17; 173 | } -------------------------------------------------------------------------------- /css/gauges/arrow.css: -------------------------------------------------------------------------------- 1 | /*==== ARROW =====*/ 2 | .arrow-row { 3 | position: relative; 4 | display: flex; 5 | flex-direction: row; 6 | padding: 5px; 7 | padding-top: 0px; 8 | margin-right: 5px; 9 | } 10 | /* ====== COLORS =======*/ 11 | .arrow-red .arrow-active { 12 | fill: url(#gradient-red); 13 | } 14 | .arrow-blue .arrow-active { 15 | fill: url(#gradient-blue); 16 | } 17 | .arrow-orange .arrow-active { 18 | fill: url(#gradient-orange); 19 | } 20 | .arrow-green .arrow-active { 21 | fill: url(#gradient-green); 22 | } 23 | .arrow-yellow .arrow-active { 24 | fill: url(#gradient-yellow); 25 | } 26 | .arrow-purple .arrow-active { 27 | fill: url(#gradient-purple); 28 | } 29 | .arrow-active { 30 | animation-duration: 0.25s; 31 | animation-name: arrowIn; 32 | } 33 | @keyframes arrowIn { 34 | 0% { 35 | transform: translate(-5px, 0); 36 | } 37 | 50% { 38 | transform: translate(3px, 0); 39 | } 40 | 100% { 41 | transform: translate(0, 0); 42 | } 43 | } -------------------------------------------------------------------------------- /css/gauges/bar.css: -------------------------------------------------------------------------------- 1 | /*==== BAR =====*/ 2 | .bar { 3 | display: flex; 4 | flex-direction: column; 5 | padding: 5px; 6 | position: relative; 7 | overflow: visible; 8 | margin-right: 5px; 9 | } 10 | .progress-bar { 11 | width: 148px; 12 | background-color: #40454c; 13 | height: 8px; 14 | border: solid 1px black; 15 | border-radius: 6px; 16 | filter: drop-shadow(0px 0px 2px #212121); 17 | position: relative; 18 | overflow: hidden; 19 | filter: brightness(1); 20 | overflow: hidden; 21 | } 22 | .progress-bar-flash { 23 | animation: flash 2s infinite; 24 | } 25 | @keyframes flash { 26 | 0% {filter: brightness(1)} 27 | 50% {filter: brightness(2)} 28 | 100% {filter: brightness(1)} 29 | } 30 | .silver-edge { 31 | position: absolute; 32 | z-index: 2; 33 | left: -10px; 34 | width: 181px; 35 | top: 2px; 36 | } 37 | .edges-corners, .edges-silver { 38 | border-radius: 0px; 39 | } 40 | .progress-bar > span { 41 | width: 0%; 42 | height: 100%; 43 | position: absolute; 44 | transition: width 0.2s; 45 | border-radius: 6px 0px 0px 6px; 46 | } 47 | .edges-corners, .edges-silver > span { 48 | border-radius: 0px 0px 0px 0px; 49 | } 50 | [type='timer'] .progress-bar > span{ 51 | transition: none; 52 | } 53 | .progress-bar-red > span { 54 | background: linear-gradient(0.25turn, #ff1c1c, #ff6262); 55 | } 56 | .progress-bar-blue > span { 57 | background: linear-gradient(0.25turn, #4b51ff, #9d97ff); 58 | } 59 | .progress-bar-orange > span { 60 | background: linear-gradient(0.25turn, #ffa64b, #ffd197); 61 | } 62 | .progress-bar-green > span { 63 | background: linear-gradient(0.25turn, #baff4b, #c4ff97); 64 | } 65 | .progress-bar-yellow > span { 66 | background: linear-gradient(0.25turn, #fcff4b, #fffc97); 67 | } 68 | .progress-bar-purple > span { 69 | background: linear-gradient(0.25turn, #774bff, #d297ff); 70 | } -------------------------------------------------------------------------------- /css/gauges/fonts/OPTIEdgarBold-Extended.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/css/gauges/fonts/OPTIEdgarBold-Extended.otf -------------------------------------------------------------------------------- /css/gauges/gauges.css: -------------------------------------------------------------------------------- 1 | /*==== SETUP =====*/ 2 | @font-face { 3 | font-family: 'OPTIEdgarBold'; 4 | src: url('fonts/OPTIEdgarBold-Extended.otf') format("opentype"); 5 | } 6 | /*===== MAIN =====*/ 7 | #container { 8 | display: flex; 9 | flex-direction: column; 10 | padding-left: 10px; 11 | overflow: visible; 12 | } 13 | .horizontal-gauges #container { 14 | flex-direction: row !important; 15 | } 16 | .row { 17 | display: flex; 18 | flex-direction: row; 19 | overflow: visible; 20 | } 21 | .justify-right .row { 22 | justify-content: flex-end; 23 | } 24 | .reverse-row .row { 25 | flex-direction: row-reverse; 26 | } 27 | .row-item { 28 | display: flex; 29 | align-items: center; 30 | justify-content: center; 31 | padding: 4px; 32 | overflow: visible; 33 | } 34 | img.small-icon { 35 | height: 30px; 36 | } 37 | .data-row { 38 | margin-top: -2px; 39 | display: flex; 40 | flex-direction: row-reverse; 41 | position: relative; 42 | height: 20px; 43 | } 44 | .data-text { 45 | font-family: 'OPTIEdgarBold'; 46 | text-align: right; 47 | margin-right: 9px; 48 | font-size: 15px; 49 | z-index: 1; 50 | color: white; 51 | text-shadow: 0px 0px 3px #ffa51f, 0px 0px 14px #000, 0px 0px 14px #000, 0px 0px 14px #000, 0px 0px 14px #000; 52 | user-select: none; 53 | } 54 | .data-text-flash { 55 | animation: textFlash 1s infinite; 56 | } 57 | @keyframes textFlash { 58 | 0% { 59 | font-size: 200%; 60 | margin-top: -10%; 61 | color: red; 62 | } 63 | 50% { 64 | } 65 | 100% { 66 | } 67 | } 68 | .flex-1 { 69 | flex: 1; 70 | } 71 | .hideOverride { 72 | display: none !important; 73 | } -------------------------------------------------------------------------------- /css/gauges/glow.css: -------------------------------------------------------------------------------- 1 | .glow { 2 | width: 170px; 3 | height: 47px; 4 | position: absolute; 5 | left: -5px; 6 | top: -8px; 7 | -webkit-mask-image: linear-gradient(to bottom, transparent 0, black 20%, black 80%, transparent 100%); 8 | z-index: -1; 9 | opacity: 0; /* 0/1 */ 10 | transition: opacity 2s; 11 | display: flex; 12 | } 13 | .glow > div { 14 | position: relative; 15 | display: flex; 16 | width: 100%; 17 | height: 100%; 18 | -webkit-mask-image: linear-gradient(to right, transparent 0, black 20%, black 80%, transparent 100%); 19 | } 20 | .glow.glow-active { 21 | opacity: 1; 22 | } 23 | .glow .tex { 24 | width: 100%; 25 | height: 100%; 26 | position: relative; 27 | background-image: url(../../img/glow/tex/wind.png); 28 | background-size: 94px 58px; 29 | background-repeat: repeat; 30 | background-position: 0px 0px; 31 | 32 | animation: glow-move 0.5s 0s infinite; 33 | animation-timing-function: linear; 34 | 35 | -webkit-mask-image: url(../../img/glow/mask/m13.png); 36 | -webkit-mask-repeat: repeat; 37 | -webkit-mask-size: 74px 62px; 38 | -webkit-mask-position: -2px -10px; 39 | 40 | } 41 | @keyframes glow-move { 42 | 0% { 43 | background-position: 0px 0px; 44 | } 45 | 100% { 46 | background-position: 94px 0px; 47 | } 48 | } 49 | .glow.glow-noGlow { 50 | display: none !important; 51 | } 52 | .glow.glow-green .tex { 53 | background-image: url(../../img/glow/tex/green.png) 54 | } 55 | .glow.glow-blue .tex { 56 | background-image: url(../../img/glow/tex/aura2.png) 57 | } 58 | .glow.glow-yellow .tex { 59 | background-image: url(../../img/glow/tex/cyber.png) 60 | } 61 | .glow.glow-orange .tex { 62 | background-image: url(../../img/glow/tex/fire2.png) 63 | } 64 | .glow.glow-purple .tex { 65 | background-image: url(../../img/glow/tex/purple.png) 66 | } 67 | .glow.glow-red .tex { 68 | background-image: url(../../img/glow/tex/fire4.png) 69 | } 70 | .glow.glow-dark .tex { 71 | background-image: url(../../img/glow/tex/dark2.png) 72 | } 73 | .glow.glow-dark2 .tex { 74 | background-image: url(../../img/glow/tex/dark3.png) 75 | } 76 | .glow.glow-rock .tex { 77 | background-image: url(../../img/glow/tex/rock.png) 78 | } 79 | .glow.glow-blue2 .tex { 80 | background-image: url(../../img/glow/tex/fireblueblack.png) 81 | } 82 | .glow.glow-fire .tex { 83 | background-image: url(../../img/glow/tex/fire4.png) 84 | } 85 | .glow.glow-sonic .tex { 86 | background-image: url(../../img/glow/tex/sonic.png) 87 | } 88 | .glow.glow-swirl .tex { 89 | background-image: url(../../img/glow/tex/swirl.png) 90 | } 91 | .glow.glow-water .tex { 92 | background-image: url(../../img/glow/tex/water2.png) 93 | } 94 | .glow.glow-jewel .tex { 95 | background-image: url(../../img/glow/tex/jewel.png) 96 | } 97 | .glow.glow-prism .tex { 98 | background-image: url(../../img/glow/tex/aura3.png) 99 | } 100 | .glow.glow-fireblue .tex { 101 | background-image: url(../../img/glow/tex/fireblue.png) 102 | } 103 | .glow.glow-fireblue2 .tex { 104 | background-image: url(../../img/glow/tex/fireblue2.png) 105 | } 106 | .glow.glow-rainbow .tex { 107 | background-image: url(../../img/glow/tex/rainbow.png) 108 | } -------------------------------------------------------------------------------- /css/gauges/square.css: -------------------------------------------------------------------------------- 1 | /* ======= SQUARE =========*/ 2 | .square { 3 | position: relative; 4 | width: 48px; 5 | height: 48px; 6 | } 7 | .square .icon { 8 | position: absolute; 9 | z-index: -2; 10 | top: 3px; 11 | left: 4px; 12 | } 13 | .square .frame { 14 | position: absolute; 15 | z-index: -1; 16 | top: 0px; 17 | left: 0px; 18 | display: none; 19 | } 20 | .square .recast { 21 | position: absolute; 22 | z-index: -1; 23 | top: 1px; 24 | left: 2px; 25 | } 26 | .square .recast-time { 27 | position: absolute; 28 | z-index: 2; 29 | color: white; 30 | font-size: 15px; 31 | filter: drop-shadow(0px 2px 1px black); 32 | bottom: -1px; 33 | left: 3px; 34 | } 35 | .recast-hidden .recast, .recast-hidden .recast-time{ 36 | display: none !important; 37 | } 38 | .recast-hidden .frame { 39 | display: block !important; 40 | } 41 | .dash-hidden .dash { 42 | display:none !important; 43 | } -------------------------------------------------------------------------------- /css/general/general.css: -------------------------------------------------------------------------------- 1 | #settings { 2 | display: none; 3 | position: absolute; 4 | z-index: 99; 5 | top: 1px; 6 | left: 1px; 7 | } 8 | .justify-right #settings, .reverse-row #settings { 9 | left: initial; 10 | right: 1px; 11 | } 12 | body:hover #settings { 13 | display: block !important; 14 | } 15 | #lock { 16 | position: absolute; 17 | width: calc(100% - 4px); 18 | z-index: -1; 19 | height: calc(100% - 4px); 20 | display: flex; 21 | margin: 0; 22 | padding: 0; 23 | background-color: #d260607a; 24 | align-items: center; 25 | justify-content: center; 26 | border: solid 2px #c72f02; 27 | border-style: dashed; 28 | } 29 | #lock #settings { 30 | display: block !important; 31 | } 32 | #lock-text { 33 | color: white; 34 | font-weight: 900; 35 | font-size: 18px; 36 | -webkit-text-stroke-width: 1px; 37 | -webkit-text-stroke-color: #1f0101; 38 | } 39 | #lock-handle { 40 | position: absolute; 41 | bottom: 0; 42 | right: 0; 43 | width: 20px; 44 | height: 20px; 45 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABh0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4zjOaXUAAAAGZJREFUOE+ljEEOACEIA92f+f9XaQ822EUgajJJC4xtvu+BPnEXFSBff7Bk5N8yw8pgW2aojLwdRHhy+YOTjMzhiUgGDB6ZjMyiVGTAgeV0rB1wqMusL7iIjrVb0mPtypMMGC7k1geoEhcn0OEM6wAAAABJRU5ErkJggg==); 46 | } 47 | .locked #lock { 48 | display: none !important; 49 | } 50 | body { 51 | margin: 0; 52 | width: 100%; 53 | height: 100%; 54 | font-family: Arial, Helvetica, sans-serif; 55 | } 56 | .hide { 57 | display: none !important; 58 | } -------------------------------------------------------------------------------- /glow/ATEX/Game_File.java: -------------------------------------------------------------------------------- 1 | import java.nio.ByteOrder; 2 | 3 | public abstract class Game_File { 4 | 5 | final ByteOrder endian; 6 | 7 | Game_File(ByteOrder endian) { 8 | this.endian = endian; 9 | } 10 | 11 | public ByteOrder getEndian() { 12 | return endian; 13 | } 14 | 15 | public boolean isBigEndian() { 16 | return endian == ByteOrder.BIG_ENDIAN; 17 | } 18 | } -------------------------------------------------------------------------------- /glow/ATEX/TextureFile.java: -------------------------------------------------------------------------------- 1 | 2 | import javax.imageio.ImageIO; 3 | import java.awt.image.BufferedImage; 4 | import java.io.ByteArrayOutputStream; 5 | import java.io.IOException; 6 | import java.nio.ByteBuffer; 7 | import java.nio.ByteOrder; 8 | import java.util.Map; 9 | 10 | public class TextureFile extends Game_File { 11 | 12 | final public int compressionType; 13 | final public int numMipMaps; 14 | final public int uncompressedWidth; 15 | final public int uncompressedHeight; 16 | final public int[] mipmapOffsets; 17 | final public byte[] data; 18 | 19 | public TextureFile(byte[] data, ByteOrder endian) { 20 | super(endian); 21 | 22 | this.data = data; 23 | 24 | ByteBuffer bb = ByteBuffer.wrap(data); 25 | bb.order(endian); 26 | int attribute = bb.getInt(); // Uknown 27 | compressionType = bb.getInt(); 28 | uncompressedWidth = bb.getShort(); 29 | uncompressedHeight = bb.getShort(); 30 | short depth = bb.getShort(); 31 | numMipMaps = bb.getShort(); 32 | mipmapOffsets = new int[numMipMaps]; 33 | 34 | bb.position(0x1c); 35 | 36 | for (int i = 0; i < numMipMaps; i++) 37 | mipmapOffsets[i] = bb.getInt(); 38 | } 39 | 40 | public final BufferedImage decode(int index, final Map parameters) throws ImageDecoding.ImageDecodingException { 41 | 42 | if (data == null) 43 | throw new NullPointerException("Data is null"); 44 | 45 | int mipMapDivide = (int) (index == 0 ? 1 : Math.pow(2, index)); 46 | 47 | switch (compressionType) { 48 | case 0x3420: { 49 | return ImageDecoding.decodeImageDX1(data, 50 | mipmapOffsets[index], 51 | uncompressedWidth / (mipMapDivide), 52 | uncompressedHeight / (mipMapDivide), 53 | (uncompressedWidth / (mipMapDivide)) / 4, 54 | (uncompressedHeight / (mipMapDivide)) / 4); 55 | } 56 | case 0x1130: 57 | case 0x1131: { 58 | return ImageDecoding.decodeImageRaw(data, 59 | mipmapOffsets[index], 60 | uncompressedWidth / (mipMapDivide), 61 | uncompressedHeight / (mipMapDivide), 0, 0); 62 | } 63 | case 0x3430: { 64 | return ImageDecoding.decodeImageDX3(data, 65 | mipmapOffsets[index], uncompressedWidth / (mipMapDivide), 66 | uncompressedHeight / (mipMapDivide), 67 | (uncompressedWidth / (mipMapDivide)) / 4, 68 | (uncompressedHeight / (mipMapDivide)) / 4); 69 | } 70 | case 0x3431: { 71 | return ImageDecoding.decodeImageDX5(data, 72 | mipmapOffsets[index], 73 | uncompressedWidth / (mipMapDivide), 74 | uncompressedHeight / (mipMapDivide), 75 | (uncompressedWidth / (mipMapDivide)) / 4, 76 | (uncompressedHeight / (mipMapDivide)) / 4); 77 | } 78 | case 0x1440: { 79 | if (parameters != null) { 80 | if (parameters.containsKey("4444.channel")) { 81 | Object q = parameters.get("4444.channel"); 82 | return ImageDecoding.decodeImage4444split1channel(data, 83 | mipmapOffsets[index], 84 | uncompressedWidth / (mipMapDivide), 85 | uncompressedHeight / (mipMapDivide), 0, 0, 86 | (q instanceof Integer ? (Integer) q : 0)); 87 | } 88 | if (parameters.containsKey("1008.4444.mergedSplit") 89 | && parameters.get("1008.4444.mergedSplit").equals( 90 | ImageDecoding.ON_VALUE)) { 91 | return ImageDecoding.decodeImage4444split(data, 92 | mipmapOffsets[index], 93 | uncompressedWidth / (mipMapDivide), 94 | uncompressedHeight / (mipMapDivide), 0, 0); 95 | } 96 | } 97 | return ImageDecoding.decodeImage4444(data, 98 | mipmapOffsets[index], 99 | uncompressedWidth / (mipMapDivide), 100 | uncompressedHeight / (mipMapDivide), 0, 0); 101 | } 102 | case 0x1441: { 103 | return ImageDecoding.decodeImage5551(data, 104 | mipmapOffsets[index], 105 | uncompressedWidth / (mipMapDivide), 106 | uncompressedHeight / (mipMapDivide), 0, 0, parameters); 107 | } 108 | case 0x1450: 109 | case 0x1451: { 110 | return ImageDecoding.decodeImageRGBA(data, 111 | mipmapOffsets[index], 112 | uncompressedWidth / (mipMapDivide), 113 | uncompressedHeight / (mipMapDivide), 0, 0); 114 | } 115 | case 0x2460: { 116 | return ImageDecoding.decodeImageRGBAF(data, endian, mipmapOffsets[index], uncompressedWidth / (mipMapDivide), uncompressedHeight / (mipMapDivide), 0, 0); 117 | } 118 | } 119 | throw new ImageDecoding.ImageDecodingException("Unsupported format: " 120 | + compressionType); 121 | } 122 | 123 | public byte[] getImage(String type) throws IOException, ImageDecoding.ImageDecodingException { 124 | ByteArrayOutputStream baos = new ByteArrayOutputStream(); 125 | ImageIO.write(decode(0, null), "png", baos); 126 | byte[] bytes = baos.toByteArray(); 127 | return bytes; 128 | } 129 | 130 | public String getCompressionTypeString() { 131 | switch (compressionType) { 132 | case 0x3420: 133 | return "DX1"; 134 | case 0x3430: 135 | return "DX3"; 136 | case 0x3431: 137 | return "DX5"; 138 | case 0x1130: 139 | case 0x1131: 140 | return "RGB 8bit"; 141 | case 0x1440: 142 | return "RGBA 4444"; 143 | case 0x1441: 144 | return "RGBA 5551"; 145 | case 0x1450: 146 | case 0x1451: 147 | return "RGBA"; 148 | case 0x2460: 149 | return "RGBAF"; 150 | default: 151 | return String.format("Unknown: 0x%x", compressionType); 152 | } 153 | } 154 | 155 | public int getSize() { 156 | if (compressionType == 0x3431) { 157 | return (uncompressedWidth * uncompressedWidth) / 2; 158 | } 159 | 160 | return -1; 161 | } 162 | 163 | } -------------------------------------------------------------------------------- /glow/ATEX/Utils.java: -------------------------------------------------------------------------------- 1 | import java.io.File; 2 | import java.io.FileInputStream; 3 | import java.io.IOException; 4 | 5 | public class Utils { 6 | 7 | /** 8 | * Converts a single precision (32 bit) floating point value 9 | * into half precision (16 bit). 10 | *

11 | * Source: http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf 12 | * 13 | * @param half The half floating point value as a short. 14 | * @return floating point value of the half. 15 | */ 16 | public static float convertHalfToFloat(short half) { 17 | switch ((int) half) { 18 | case 0x0000: 19 | return 0f; 20 | case 0x8000: 21 | return -0f; 22 | case 0x7c00: 23 | return Float.POSITIVE_INFINITY; 24 | case 0xfc00: 25 | return Float.NEGATIVE_INFINITY; 26 | // TODO: Support for NaN? 27 | default: 28 | return Float.intBitsToFloat(((half & 0x8000) << 16) 29 | | (((half & 0x7c00) + 0x1C000) << 13) 30 | | ((half & 0x03FF) << 13)); 31 | } 32 | } 33 | 34 | public static short convertFloatToHalf(float flt) { 35 | if (Float.isNaN(flt)) { 36 | throw new UnsupportedOperationException("NaN to half conversion not supported!"); 37 | } else if (flt == Float.POSITIVE_INFINITY) { 38 | return (short) 0x7c00; 39 | } else if (flt == Float.NEGATIVE_INFINITY) { 40 | return (short) 0xfc00; 41 | } else if (flt == 0f) { 42 | return (short) 0x0000; 43 | } else if (flt == -0f) { 44 | return (short) 0x8000; 45 | } else if (flt > 65504f) { 46 | // max value supported by half float 47 | return 0x7bff; 48 | } else if (flt < -65504f) { 49 | return (short) (0x7bff | 0x8000); 50 | } else if (flt > 0f && flt < 5.96046E-8f) { 51 | return 0x0001; 52 | } else if (flt < 0f && flt > -5.96046E-8f) { 53 | return (short) 0x8001; 54 | } 55 | 56 | int f = Float.floatToIntBits(flt); 57 | return (short) (((f >> 16) & 0x8000) 58 | | ((((f & 0x7f800000) - 0x38000000) >> 13) & 0x7c00) 59 | | ((f >> 13) & 0x03ff)); 60 | } 61 | 62 | public static String getRegexpFromFormatString(String format) { 63 | String toReturn = format; 64 | 65 | // escape some special regexp chars 66 | toReturn = toReturn.replaceAll("\\.", "\\\\."); 67 | toReturn = toReturn.replaceAll("\\!", "\\\\!"); 68 | 69 | if (toReturn.indexOf("%") >= 0) { 70 | toReturn = toReturn.replaceAll("%s", "[\\\\w]+"); //accepts 0-9 A-Z a-z _ 71 | 72 | while (toReturn.matches(".*%([0-9]+)[d]{1}.*")) { 73 | String digitStr = toReturn.replaceFirst(".*%([0-9]+)[d]{1}.*", "$1"); 74 | int numDigits = Integer.parseInt(digitStr); 75 | toReturn = toReturn.replaceFirst("(.*)(%[0-9]+[d]{1})(.*)", "$1[0-9]{" + numDigits + "}$3"); 76 | } 77 | } 78 | 79 | return "^" + toReturn + "$"; 80 | } 81 | 82 | public static byte[] readContentIntoByteArray(File file) throws IOException { 83 | FileInputStream fileInputStream = null; 84 | byte[] bFile = new byte[(int) file.length()]; 85 | 86 | //convert file into array of bytes 87 | fileInputStream = new FileInputStream(file); 88 | fileInputStream.read(bFile); 89 | fileInputStream.close(); 90 | 91 | return bFile; 92 | } 93 | 94 | } -------------------------------------------------------------------------------- /glow/ATEX/main.java: -------------------------------------------------------------------------------- 1 | import java.nio.ByteOrder; 2 | import java.nio.file.*; 3 | import java.io.File; 4 | import java.awt.image.BufferedImage; 5 | import javax.imageio.ImageIO; 6 | 7 | public class main { 8 | public static void main(String[] args) { 9 | if(args[0].equals("image")) { 10 | convertImage(args[1]); 11 | } 12 | else if(args[0].equals("folder")) { 13 | String folder = args[1]; 14 | File dir = new File(folder); 15 | String contents[] = dir.list(); 16 | for(int i = 0; i < contents.length; i++) { 17 | if(contents[i].endsWith(".atex")) { 18 | String path = Paths.get(dir.getPath().toString(), contents[i]).toString(); 19 | convertImage(path); 20 | } 21 | } 22 | } 23 | } 24 | 25 | public static void convertImage(String source) { 26 | try { 27 | String out = source + ".png"; 28 | 29 | Path fileLocation = Paths.get(source); 30 | byte[] data = Files.readAllBytes(fileLocation); 31 | 32 | TextureFile tex = new TextureFile(data, ByteOrder.LITTLE_ENDIAN); 33 | BufferedImage preview = tex.decode(0, null); 34 | File outputfile = new File(out); 35 | ImageIO.write(preview, "png", outputfile); 36 | } 37 | catch(Exception e) { 38 | System.out.println("error"); 39 | } 40 | } 41 | } -------------------------------------------------------------------------------- /glow/lum_to_alpha.py: -------------------------------------------------------------------------------- 1 | from PIL import Image 2 | import sys 3 | import os 4 | 5 | def convert_atex(path): 6 | imag = Image.open(path) 7 | imag = imag.convert ('RGBA') 8 | imag.putalpha(imag.convert('L')) 9 | imag.save(path) 10 | 11 | path = sys.argv[1] 12 | files = os.listdir(path) 13 | for f in files: 14 | if f.endswith(".png"): 15 | convert_atex(os.path.join(path, f)) -------------------------------------------------------------------------------- /img/buff_icons/battlelitany.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/battlelitany.png -------------------------------------------------------------------------------- /img/buff_icons/battlevoice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/battlevoice.png -------------------------------------------------------------------------------- /img/buff_icons/bio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/bio.png -------------------------------------------------------------------------------- /img/buff_icons/biolysis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/biolysis.png -------------------------------------------------------------------------------- /img/buff_icons/bloodofthedragon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/bloodofthedragon.png -------------------------------------------------------------------------------- /img/buff_icons/brotherhood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/brotherhood.png -------------------------------------------------------------------------------- /img/buff_icons/bunshin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/bunshin.png -------------------------------------------------------------------------------- /img/buff_icons/causticbite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/causticbite.png -------------------------------------------------------------------------------- /img/buff_icons/chainstratagem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/chainstratagem.png -------------------------------------------------------------------------------- /img/buff_icons/chaosthrust.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/chaosthrust.png -------------------------------------------------------------------------------- /img/buff_icons/combust.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/combust.png -------------------------------------------------------------------------------- /img/buff_icons/delirium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/delirium.png -------------------------------------------------------------------------------- /img/buff_icons/devilment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/devilment.png -------------------------------------------------------------------------------- /img/buff_icons/devotion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/devotion.png -------------------------------------------------------------------------------- /img/buff_icons/dia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/dia.png -------------------------------------------------------------------------------- /img/buff_icons/disembowel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/disembowel.png -------------------------------------------------------------------------------- /img/buff_icons/divination.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/divination.png -------------------------------------------------------------------------------- /img/buff_icons/doublemidare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/doublemidare.png -------------------------------------------------------------------------------- /img/buff_icons/dragonsight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/dragonsight.png -------------------------------------------------------------------------------- /img/buff_icons/embolden.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/embolden.png -------------------------------------------------------------------------------- /img/buff_icons/firebirdtrance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/firebirdtrance.png -------------------------------------------------------------------------------- /img/buff_icons/goringblade.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/goringblade.png -------------------------------------------------------------------------------- /img/buff_icons/higanbana.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/higanbana.png -------------------------------------------------------------------------------- /img/buff_icons/innerrelease.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/innerrelease.png -------------------------------------------------------------------------------- /img/buff_icons/jinpu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/jinpu.png -------------------------------------------------------------------------------- /img/buff_icons/ladyofcrowns.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/ladyofcrowns.png -------------------------------------------------------------------------------- /img/buff_icons/lancecharge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/lancecharge.png -------------------------------------------------------------------------------- /img/buff_icons/livingshadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/livingshadow.png -------------------------------------------------------------------------------- /img/buff_icons/lordofcrowns.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/lordofcrowns.png -------------------------------------------------------------------------------- /img/buff_icons/manafication.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/manafication.png -------------------------------------------------------------------------------- /img/buff_icons/miasma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/miasma.png -------------------------------------------------------------------------------- /img/buff_icons/nastrond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/nastrond.png -------------------------------------------------------------------------------- /img/buff_icons/offguard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/offguard.png -------------------------------------------------------------------------------- /img/buff_icons/peculiarlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/peculiarlight.png -------------------------------------------------------------------------------- /img/buff_icons/ragingstrikes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/ragingstrikes.png -------------------------------------------------------------------------------- /img/buff_icons/riddleoffire.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/riddleoffire.png -------------------------------------------------------------------------------- /img/buff_icons/shifu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/shifu.png -------------------------------------------------------------------------------- /img/buff_icons/songoftorment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/songoftorment.png -------------------------------------------------------------------------------- /img/buff_icons/stormbite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/stormbite.png -------------------------------------------------------------------------------- /img/buff_icons/stormseye.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/stormseye.png -------------------------------------------------------------------------------- /img/buff_icons/summonbahamut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/summonbahamut.png -------------------------------------------------------------------------------- /img/buff_icons/technicalfinish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/technicalfinish.png -------------------------------------------------------------------------------- /img/buff_icons/thearrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/thearrow.png -------------------------------------------------------------------------------- /img/buff_icons/thebalance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/thebalance.png -------------------------------------------------------------------------------- /img/buff_icons/thebole.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/thebole.png -------------------------------------------------------------------------------- /img/buff_icons/theewer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/theewer.png -------------------------------------------------------------------------------- /img/buff_icons/thespear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/thespear.png -------------------------------------------------------------------------------- /img/buff_icons/thespire.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/thespire.png -------------------------------------------------------------------------------- /img/buff_icons/thunder3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/thunder3.png -------------------------------------------------------------------------------- /img/buff_icons/thunder4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/thunder4.png -------------------------------------------------------------------------------- /img/buff_icons/trickattack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/trickattack.png -------------------------------------------------------------------------------- /img/buff_icons/wildfire.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons/wildfire.png -------------------------------------------------------------------------------- /img/buff_icons_small/bahamut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/bahamut.png -------------------------------------------------------------------------------- /img/buff_icons_small/bio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/bio.png -------------------------------------------------------------------------------- /img/buff_icons_small/biolysis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/biolysis.png -------------------------------------------------------------------------------- /img/buff_icons_small/bloodweapon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/bloodweapon.png -------------------------------------------------------------------------------- /img/buff_icons_small/causticbite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/causticbite.png -------------------------------------------------------------------------------- /img/buff_icons_small/combust.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/combust.png -------------------------------------------------------------------------------- /img/buff_icons_small/delirium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/delirium.png -------------------------------------------------------------------------------- /img/buff_icons_small/devilment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/devilment.png -------------------------------------------------------------------------------- /img/buff_icons_small/dia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/dia.png -------------------------------------------------------------------------------- /img/buff_icons_small/fightorflight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/fightorflight.png -------------------------------------------------------------------------------- /img/buff_icons_small/goringblade.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/goringblade.png -------------------------------------------------------------------------------- /img/buff_icons_small/higanbana.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/higanbana.png -------------------------------------------------------------------------------- /img/buff_icons_small/hypercharge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/hypercharge.png -------------------------------------------------------------------------------- /img/buff_icons_small/innerrelease.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/innerrelease.png -------------------------------------------------------------------------------- /img/buff_icons_small/jinpu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/jinpu.png -------------------------------------------------------------------------------- /img/buff_icons_small/lancecharge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/lancecharge.png -------------------------------------------------------------------------------- /img/buff_icons_small/manafication.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/manafication.png -------------------------------------------------------------------------------- /img/buff_icons_small/miasma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/miasma.png -------------------------------------------------------------------------------- /img/buff_icons_small/nomercy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/nomercy.png -------------------------------------------------------------------------------- /img/buff_icons_small/perfectbalance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/perfectbalance.png -------------------------------------------------------------------------------- /img/buff_icons_small/pheonix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/pheonix.png -------------------------------------------------------------------------------- /img/buff_icons_small/ragingstrikes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/ragingstrikes.png -------------------------------------------------------------------------------- /img/buff_icons_small/requiescat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/requiescat.png -------------------------------------------------------------------------------- /img/buff_icons_small/riddleoffire.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/riddleoffire.png -------------------------------------------------------------------------------- /img/buff_icons_small/righteye.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/righteye.png -------------------------------------------------------------------------------- /img/buff_icons_small/shifu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/shifu.png -------------------------------------------------------------------------------- /img/buff_icons_small/songoftorment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/songoftorment.png -------------------------------------------------------------------------------- /img/buff_icons_small/stormbite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/stormbite.png -------------------------------------------------------------------------------- /img/buff_icons_small/stormseye.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/stormseye.png -------------------------------------------------------------------------------- /img/buff_icons_small/thunder3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/thunder3.png -------------------------------------------------------------------------------- /img/buff_icons_small/thunder4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/thunder4.png -------------------------------------------------------------------------------- /img/buff_icons_small/trickattack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/trickattack.png -------------------------------------------------------------------------------- /img/buff_icons_small/wildfire.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/buff_icons_small/wildfire.png -------------------------------------------------------------------------------- /img/docs/AST.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/docs/AST.gif -------------------------------------------------------------------------------- /img/docs/DRK.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/docs/DRK.gif -------------------------------------------------------------------------------- /img/docs/alex.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/docs/alex.gif -------------------------------------------------------------------------------- /img/docs/demo_img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/docs/demo_img.png -------------------------------------------------------------------------------- /img/general/cog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/cog.png -------------------------------------------------------------------------------- /img/general/dash.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/dash.gif -------------------------------------------------------------------------------- /img/general/dash/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/dash/1.png -------------------------------------------------------------------------------- /img/general/dash/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/dash/2.png -------------------------------------------------------------------------------- /img/general/dash/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/dash/3.png -------------------------------------------------------------------------------- /img/general/dash/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/dash/4.png -------------------------------------------------------------------------------- /img/general/dash/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/dash/5.png -------------------------------------------------------------------------------- /img/general/dash/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/dash/6.png -------------------------------------------------------------------------------- /img/general/dash/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/dash/7.png -------------------------------------------------------------------------------- /img/general/dash/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/dash/8.png -------------------------------------------------------------------------------- /img/general/diamond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/diamond.png -------------------------------------------------------------------------------- /img/general/recast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast.png -------------------------------------------------------------------------------- /img/general/recast/frame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/frame.png -------------------------------------------------------------------------------- /img/general/recast/recast_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_01.png -------------------------------------------------------------------------------- /img/general/recast/recast_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_02.png -------------------------------------------------------------------------------- /img/general/recast/recast_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_03.png -------------------------------------------------------------------------------- /img/general/recast/recast_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_04.png -------------------------------------------------------------------------------- /img/general/recast/recast_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_05.png -------------------------------------------------------------------------------- /img/general/recast/recast_06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_06.png -------------------------------------------------------------------------------- /img/general/recast/recast_07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_07.png -------------------------------------------------------------------------------- /img/general/recast/recast_08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_08.png -------------------------------------------------------------------------------- /img/general/recast/recast_09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_09.png -------------------------------------------------------------------------------- /img/general/recast/recast_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_10.png -------------------------------------------------------------------------------- /img/general/recast/recast_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_11.png -------------------------------------------------------------------------------- /img/general/recast/recast_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_12.png -------------------------------------------------------------------------------- /img/general/recast/recast_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_13.png -------------------------------------------------------------------------------- /img/general/recast/recast_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_14.png -------------------------------------------------------------------------------- /img/general/recast/recast_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_15.png -------------------------------------------------------------------------------- /img/general/recast/recast_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_16.png -------------------------------------------------------------------------------- /img/general/recast/recast_17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_17.png -------------------------------------------------------------------------------- /img/general/recast/recast_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_18.png -------------------------------------------------------------------------------- /img/general/recast/recast_19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_19.png -------------------------------------------------------------------------------- /img/general/recast/recast_20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_20.png -------------------------------------------------------------------------------- /img/general/recast/recast_21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_21.png -------------------------------------------------------------------------------- /img/general/recast/recast_22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_22.png -------------------------------------------------------------------------------- /img/general/recast/recast_23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_23.png -------------------------------------------------------------------------------- /img/general/recast/recast_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_24.png -------------------------------------------------------------------------------- /img/general/recast/recast_25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_25.png -------------------------------------------------------------------------------- /img/general/recast/recast_26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_26.png -------------------------------------------------------------------------------- /img/general/recast/recast_27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_27.png -------------------------------------------------------------------------------- /img/general/recast/recast_28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_28.png -------------------------------------------------------------------------------- /img/general/recast/recast_29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_29.png -------------------------------------------------------------------------------- /img/general/recast/recast_30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_30.png -------------------------------------------------------------------------------- /img/general/recast/recast_31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_31.png -------------------------------------------------------------------------------- /img/general/recast/recast_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_32.png -------------------------------------------------------------------------------- /img/general/recast/recast_33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_33.png -------------------------------------------------------------------------------- /img/general/recast/recast_34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_34.png -------------------------------------------------------------------------------- /img/general/recast/recast_35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_35.png -------------------------------------------------------------------------------- /img/general/recast/recast_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_36.png -------------------------------------------------------------------------------- /img/general/recast/recast_37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_37.png -------------------------------------------------------------------------------- /img/general/recast/recast_38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_38.png -------------------------------------------------------------------------------- /img/general/recast/recast_39.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_39.png -------------------------------------------------------------------------------- /img/general/recast/recast_40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_40.png -------------------------------------------------------------------------------- /img/general/recast/recast_41.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_41.png -------------------------------------------------------------------------------- /img/general/recast/recast_42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_42.png -------------------------------------------------------------------------------- /img/general/recast/recast_43.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_43.png -------------------------------------------------------------------------------- /img/general/recast/recast_44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_44.png -------------------------------------------------------------------------------- /img/general/recast/recast_45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_45.png -------------------------------------------------------------------------------- /img/general/recast/recast_46.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_46.png -------------------------------------------------------------------------------- /img/general/recast/recast_47.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_47.png -------------------------------------------------------------------------------- /img/general/recast/recast_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_48.png -------------------------------------------------------------------------------- /img/general/recast/recast_49.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_49.png -------------------------------------------------------------------------------- /img/general/recast/recast_50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_50.png -------------------------------------------------------------------------------- /img/general/recast/recast_51.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_51.png -------------------------------------------------------------------------------- /img/general/recast/recast_52.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_52.png -------------------------------------------------------------------------------- /img/general/recast/recast_53.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_53.png -------------------------------------------------------------------------------- /img/general/recast/recast_54.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_54.png -------------------------------------------------------------------------------- /img/general/recast/recast_55.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_55.png -------------------------------------------------------------------------------- /img/general/recast/recast_56.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_56.png -------------------------------------------------------------------------------- /img/general/recast/recast_57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_57.png -------------------------------------------------------------------------------- /img/general/recast/recast_58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_58.png -------------------------------------------------------------------------------- /img/general/recast/recast_59.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_59.png -------------------------------------------------------------------------------- /img/general/recast/recast_60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_60.png -------------------------------------------------------------------------------- /img/general/recast/recast_61.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_61.png -------------------------------------------------------------------------------- /img/general/recast/recast_62.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_62.png -------------------------------------------------------------------------------- /img/general/recast/recast_63.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_63.png -------------------------------------------------------------------------------- /img/general/recast/recast_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_64.png -------------------------------------------------------------------------------- /img/general/recast/recast_65.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_65.png -------------------------------------------------------------------------------- /img/general/recast/recast_66.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_66.png -------------------------------------------------------------------------------- /img/general/recast/recast_67.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_67.png -------------------------------------------------------------------------------- /img/general/recast/recast_68.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_68.png -------------------------------------------------------------------------------- /img/general/recast/recast_69.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_69.png -------------------------------------------------------------------------------- /img/general/recast/recast_70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_70.png -------------------------------------------------------------------------------- /img/general/recast/recast_71.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_71.png -------------------------------------------------------------------------------- /img/general/recast/recast_72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_72.png -------------------------------------------------------------------------------- /img/general/recast/recast_73.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_73.png -------------------------------------------------------------------------------- /img/general/recast/recast_74.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_74.png -------------------------------------------------------------------------------- /img/general/recast/recast_75.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_75.png -------------------------------------------------------------------------------- /img/general/recast/recast_76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_76.png -------------------------------------------------------------------------------- /img/general/recast/recast_77.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_77.png -------------------------------------------------------------------------------- /img/general/recast/recast_78.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_78.png -------------------------------------------------------------------------------- /img/general/recast/recast_79.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_79.png -------------------------------------------------------------------------------- /img/general/recast/recast_80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_80.png -------------------------------------------------------------------------------- /img/general/recast/recast_81.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/recast/recast_81.png -------------------------------------------------------------------------------- /img/general/silver_gauge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/general/silver_gauge.png -------------------------------------------------------------------------------- /img/glow/mask/cyber.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/mask/cyber.png -------------------------------------------------------------------------------- /img/glow/mask/cyber2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/mask/cyber2.png -------------------------------------------------------------------------------- /img/glow/mask/glass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/mask/glass.png -------------------------------------------------------------------------------- /img/glow/mask/hex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/mask/hex.png -------------------------------------------------------------------------------- /img/glow/mask/hex2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/mask/hex2.png -------------------------------------------------------------------------------- /img/glow/mask/ice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/mask/ice.png -------------------------------------------------------------------------------- /img/glow/mask/l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/mask/l.png -------------------------------------------------------------------------------- /img/glow/mask/l2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/mask/l2.png -------------------------------------------------------------------------------- /img/glow/mask/m1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/mask/m1.png -------------------------------------------------------------------------------- /img/glow/mask/m10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/mask/m10.png -------------------------------------------------------------------------------- /img/glow/mask/m11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/mask/m11.png -------------------------------------------------------------------------------- /img/glow/mask/m12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/mask/m12.png -------------------------------------------------------------------------------- /img/glow/mask/m13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/mask/m13.png -------------------------------------------------------------------------------- /img/glow/mask/m2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/mask/m2.png -------------------------------------------------------------------------------- /img/glow/mask/m3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/mask/m3.png -------------------------------------------------------------------------------- /img/glow/mask/m4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/mask/m4.png -------------------------------------------------------------------------------- /img/glow/mask/m5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/mask/m5.png -------------------------------------------------------------------------------- /img/glow/mask/m6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/mask/m6.png -------------------------------------------------------------------------------- /img/glow/mask/m7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/mask/m7.png -------------------------------------------------------------------------------- /img/glow/mask/m8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/mask/m8.png -------------------------------------------------------------------------------- /img/glow/mask/m9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/mask/m9.png -------------------------------------------------------------------------------- /img/glow/mask/prism.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/mask/prism.png -------------------------------------------------------------------------------- /img/glow/mask/write.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/mask/write.png -------------------------------------------------------------------------------- /img/glow/tex/aura0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/aura0.png -------------------------------------------------------------------------------- /img/glow/tex/aura2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/aura2.png -------------------------------------------------------------------------------- /img/glow/tex/aura3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/aura3.png -------------------------------------------------------------------------------- /img/glow/tex/bene.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/bene.png -------------------------------------------------------------------------------- /img/glow/tex/black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/black.png -------------------------------------------------------------------------------- /img/glow/tex/cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/cloud.png -------------------------------------------------------------------------------- /img/glow/tex/cyber.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/cyber.png -------------------------------------------------------------------------------- /img/glow/tex/cyber2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/cyber2.png -------------------------------------------------------------------------------- /img/glow/tex/dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/dark.png -------------------------------------------------------------------------------- /img/glow/tex/dark2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/dark2.png -------------------------------------------------------------------------------- /img/glow/tex/dark3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/dark3.png -------------------------------------------------------------------------------- /img/glow/tex/elec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/elec.png -------------------------------------------------------------------------------- /img/glow/tex/elec2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/elec2.png -------------------------------------------------------------------------------- /img/glow/tex/elec3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/elec3.png -------------------------------------------------------------------------------- /img/glow/tex/elec4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/elec4.png -------------------------------------------------------------------------------- /img/glow/tex/fire.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/fire.png -------------------------------------------------------------------------------- /img/glow/tex/fire2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/fire2.png -------------------------------------------------------------------------------- /img/glow/tex/fire3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/fire3.png -------------------------------------------------------------------------------- /img/glow/tex/fire4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/fire4.png -------------------------------------------------------------------------------- /img/glow/tex/fireblue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/fireblue.png -------------------------------------------------------------------------------- /img/glow/tex/fireblue2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/fireblue2.png -------------------------------------------------------------------------------- /img/glow/tex/fireblueblack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/fireblueblack.png -------------------------------------------------------------------------------- /img/glow/tex/green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/green.png -------------------------------------------------------------------------------- /img/glow/tex/jewel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/jewel.png -------------------------------------------------------------------------------- /img/glow/tex/lens_03.atex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/lens_03.atex.png -------------------------------------------------------------------------------- /img/glow/tex/line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/line.png -------------------------------------------------------------------------------- /img/glow/tex/prism.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/prism.png -------------------------------------------------------------------------------- /img/glow/tex/prism2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/prism2.png -------------------------------------------------------------------------------- /img/glow/tex/prism3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/prism3.png -------------------------------------------------------------------------------- /img/glow/tex/purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/purple.png -------------------------------------------------------------------------------- /img/glow/tex/rainbow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/rainbow.png -------------------------------------------------------------------------------- /img/glow/tex/rainbow2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/rainbow2.png -------------------------------------------------------------------------------- /img/glow/tex/rock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/rock.png -------------------------------------------------------------------------------- /img/glow/tex/smash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/smash.png -------------------------------------------------------------------------------- /img/glow/tex/sonic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/sonic.png -------------------------------------------------------------------------------- /img/glow/tex/sonic2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/sonic2.png -------------------------------------------------------------------------------- /img/glow/tex/sonic3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/sonic3.png -------------------------------------------------------------------------------- /img/glow/tex/swirl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/swirl.png -------------------------------------------------------------------------------- /img/glow/tex/thin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/thin.png -------------------------------------------------------------------------------- /img/glow/tex/water.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/water.png -------------------------------------------------------------------------------- /img/glow/tex/water2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/water2.png -------------------------------------------------------------------------------- /img/glow/tex/water3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/water3.png -------------------------------------------------------------------------------- /img/glow/tex/wind.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/glow/tex/wind.png -------------------------------------------------------------------------------- /img/job_icons/AST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/job_icons/AST.png -------------------------------------------------------------------------------- /img/job_icons/BLM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/job_icons/BLM.png -------------------------------------------------------------------------------- /img/job_icons/BLU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/job_icons/BLU.png -------------------------------------------------------------------------------- /img/job_icons/BRD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/job_icons/BRD.png -------------------------------------------------------------------------------- /img/job_icons/DNC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/job_icons/DNC.png -------------------------------------------------------------------------------- /img/job_icons/DRG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/job_icons/DRG.png -------------------------------------------------------------------------------- /img/job_icons/DRK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/job_icons/DRK.png -------------------------------------------------------------------------------- /img/job_icons/GNB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/job_icons/GNB.png -------------------------------------------------------------------------------- /img/job_icons/MCH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/job_icons/MCH.png -------------------------------------------------------------------------------- /img/job_icons/MNK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/job_icons/MNK.png -------------------------------------------------------------------------------- /img/job_icons/NIN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/job_icons/NIN.png -------------------------------------------------------------------------------- /img/job_icons/PLD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/job_icons/PLD.png -------------------------------------------------------------------------------- /img/job_icons/RDM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/job_icons/RDM.png -------------------------------------------------------------------------------- /img/job_icons/SAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/job_icons/SAM.png -------------------------------------------------------------------------------- /img/job_icons/SCH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/job_icons/SCH.png -------------------------------------------------------------------------------- /img/job_icons/SMN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/job_icons/SMN.png -------------------------------------------------------------------------------- /img/job_icons/WAR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/job_icons/WAR.png -------------------------------------------------------------------------------- /img/job_icons/WHM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mkaminsky11/Codex/e678606ca1e3a3ccc312ab56811da5913fcad6db/img/job_icons/WHM.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |

13 | UNLOCKED (LOCK OVERLAY BEFORE USING) 14 | 15 |
16 | 17 |
18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /js/buffs/buffs.js: -------------------------------------------------------------------------------- 1 | import {actionIds, buffIds} from '../general/ids.js' 2 | 3 | var buffConfig = { 4 | DRK: { 5 | [buffIds.Delirium]: { 6 | name: "Delirium", 7 | duration: 10, 8 | cd: 90, 9 | color: "red", 10 | self: false, target: false, party: true, 11 | }, 12 | [actionIds.LivingShadow]: { 13 | name: "Living Shadow", 14 | duration: 24, 15 | cd: 120, 16 | color: "purple", 17 | self: false, target: false, party: true, 18 | } 19 | }, 20 | WAR: { 21 | [buffIds.InnerRelease]: { 22 | name: "Inner Release", 23 | duration: 10, 24 | cd: 90, 25 | color: "orange", 26 | self: false, target: false, party: true, 27 | }, 28 | }, 29 | PLD: {}, 30 | GNB: {}, 31 | SCH: { 32 | [buffIds.Chain]: { 33 | name: "Chain Stratagem", 34 | duration: 15, 35 | cd: 120, 36 | color: "blue", 37 | self: false, target: true, party: false, 38 | }, 39 | }, 40 | WHM: {}, 41 | AST: { 42 | [buffIds.Balance]: { 43 | name: "The Balance", 44 | duration: 15, 45 | noCd: true, 46 | color: "orange", 47 | self: true, target: false, party: false, 48 | }, 49 | [buffIds.Bole]: { 50 | name: "The Bole", 51 | duration: 15, 52 | noCd: true, 53 | color: "green", 54 | self: true, target: false, party: false, 55 | }, 56 | [buffIds.Spear]: { 57 | name: "The Spear", 58 | duration: 15, 59 | noCd: true, 60 | color: "blue", 61 | self: true, target: false, party: false, 62 | }, 63 | [buffIds.Spire]: { 64 | name: "The Spire", 65 | duration: 15, 66 | noCd: true, 67 | color: "yellow", 68 | self: true, target: false, party: false, 69 | }, 70 | [buffIds.Arrow]: { 71 | name: "The Arrow", 72 | duration: 15, 73 | noCd: true, 74 | color: "blue", 75 | self: true, target: false, party: false, 76 | }, 77 | [buffIds.Ewer]: { 78 | name: "The Ewer", 79 | duration: 15, 80 | noCd: true, 81 | color: "blue", 82 | self: true, target: false, party: false, 83 | }, 84 | [buffIds.LadyOfCrowns]: { 85 | name: "Lady Of Crowns", 86 | duration: 15, 87 | noCd: true, 88 | color: "purple", 89 | self: true, target: false, party: false, 90 | }, 91 | [buffIds.LordOfCrowns]: { 92 | name: "Lord Of Crowns", 93 | duration: 15, 94 | noCd: true, 95 | color: "red", 96 | self: true, target: false, party: false, 97 | }, 98 | [buffIds.Divination]: { 99 | name: "Divination", 100 | duration: 15, 101 | cd: 120, 102 | color: "yellow", 103 | self: true, target: false, party: false, 104 | }, 105 | }, 106 | MNK: { 107 | [buffIds.Brotherhood]: { 108 | name: "Brotherhood", 109 | duration: 15, 110 | cd: 90, 111 | color: "orange", 112 | self: true, target: false, party: false, 113 | }, 114 | [buffIds.RiddleOfFire]: { 115 | name: "Riddle of Fire", 116 | duration: 20, 117 | cd: 90, 118 | color: "red", 119 | self: false, target: false, party: true, 120 | }, 121 | }, 122 | DRG: { 123 | [buffIds.LeftEye]: { 124 | name: "Dragon Sight", 125 | duration: 20, 126 | cd: 120, 127 | color: "red", 128 | self: true, target: false, party: false, 129 | }, 130 | [buffIds.BattleLitany]: { 131 | name: "Battle Litany", 132 | duration: 20, 133 | cd: 180, 134 | color: "blue", 135 | self: true, target: false, party: false, 136 | }, 137 | [buffIds.LanceCharge]: { 138 | name: "Lance Charge", 139 | duration: 20, 140 | cd: 90, 141 | color: "red", 142 | self: false, target: false, party: true, 143 | }, 144 | }, 145 | NIN: { 146 | [buffIds.TrickAttack]: { 147 | name: "Trick Attack", 148 | duration: 15, 149 | cd: 60, 150 | color: "yellow", 151 | self: false, target: true, party: false, 152 | }, 153 | [buffIds.Bunshin]: { 154 | name: "Bunshin", 155 | duration: 10, 156 | cd: 90, 157 | noRefresh: true, 158 | color: "orange", 159 | self: false, target: false, party: true, 160 | }, 161 | }, 162 | SAM: { 163 | [actionIds.DoubleMidare]: { 164 | name: "Double Midare", 165 | duration: 5, 166 | cd: 60, 167 | color: "blue", 168 | self: false, target: false, party: true, 169 | }, 170 | }, 171 | BRD: { 172 | [buffIds.BattleVoice]: { 173 | name: "Battle Voice", 174 | duration: 20, 175 | cd: 180, 176 | color: "orange", 177 | self: true, target: false, party: false, 178 | }, 179 | [buffIds.RagingStrikes]: { 180 | name: "Raging Strikes", 181 | duration: 20, 182 | cd: 80, 183 | color: "yellow", 184 | self: false, target: false, party: true, 185 | }, 186 | }, 187 | MCH: { 188 | [buffIds.Wildfire]: { 189 | name: "Wildfire", 190 | duration: 10, 191 | cd: 120, 192 | color: "red", 193 | self: false, target: true, party: false, 194 | }, 195 | }, 196 | DNC: { 197 | [buffIds.TechnicalFinish]: { 198 | name: "Technical Finish", 199 | duration: 20, 200 | cd: 120, 201 | color: "red", 202 | self: true, target: false, party: false, 203 | }, 204 | [buffIds.Devilment]: { 205 | name: "Devilment", 206 | duration: 20, 207 | cd: 120, 208 | color: "green", 209 | self: true, target: false, party: false, 210 | }, 211 | }, 212 | BLM: {}, 213 | SMN: { 214 | [buffIds.Devotion]: { 215 | name: "Devotion", 216 | duration: 15, 217 | cd: 180, 218 | color: "yellow", 219 | self: true, target: false, party: false, 220 | }, 221 | [actionIds.SummonBahamut]: { 222 | name: "Summon Bahamut", 223 | duration: 20, 224 | cd: 60, 225 | color: "blue", 226 | self: false, target: false, party: true, 227 | }, 228 | [actionIds.FirebirdTrance]: { 229 | name: "Firebird Trance", 230 | duration: 20, 231 | cd: 60, 232 | color: "orange", 233 | self: false, target: false, party: true, 234 | }, 235 | }, 236 | RDM: { 237 | [buffIds.Embolden]: { 238 | name: "Embolden", 239 | duration: 20, 240 | cd: 120, 241 | noRefresh: true, 242 | color: "blue", 243 | self: true, target: false, party: false, 244 | }, 245 | [buffIds.Manafication]: { 246 | name: "Manafication", 247 | duration: 10, 248 | cd: 110, 249 | color: "blue", 250 | self: false, target: false, party: true, 251 | }, 252 | }, 253 | BLU: { 254 | [buffIds.PeculiarLight]: { 255 | name: "Peculiar Light", 256 | duration: 15, 257 | cd: 60, 258 | color: "red", 259 | self: false, target: true, party: false, 260 | }, 261 | [buffIds.OffGuard]: { 262 | name: "Off Guard", 263 | duration: 15, 264 | cd: 60, 265 | color: "green", 266 | self: false, target: true, party: false, 267 | }, 268 | }, 269 | }; 270 | 271 | export {buffConfig} -------------------------------------------------------------------------------- /js/buffs/index.js: -------------------------------------------------------------------------------- 1 | import {User} from '../classes/user.js' 2 | import {buffConfig} from './buffs.js' 3 | import {setupBuffsUI, setTimeUI, hide, unHide, buffOnCdUI, buffReadyUI, buffActiveUI} from './visual.js' 4 | import {getSettings} from './settings.js' 5 | import {setup} from '../general/init.js' 6 | 7 | var user = new User(); 8 | var config = getSettings(); 9 | var REFRESH = config.refresh; 10 | var SHOW_CD = 30; 11 | var debug = false; 12 | 13 | function logAction(sourceId, actionId, actionName, targetId, isAoe){ 14 | if(user.usesBuff(actionId)) { 15 | gainBuff(sourceId, targetId, actionId, user.getBuff(actionId).data.duration, actionName); 16 | } 17 | } 18 | function gainBuff(sourceId, targetId, buffId, buffTime, buffName){ 19 | if(user.usesBuff(buffId)) { 20 | var buff = user.getBuff(buffId); 21 | if( 22 | (buff.target && user.inParty(sourceId)) || 23 | (buff.self && targetId === user.id) || 24 | (buff.party && user.inParty(sourceId)) 25 | ) { 26 | if(debug) { console.log(`BUFF ${buffId} ${buffName}`); } 27 | // 28 | if(buff.data.noRefresh && buff.active) { return; } 29 | buff.active = true; 30 | buff.cd = false; 31 | buff.startTime = (new Date()).getTime(); 32 | buff.duration = buff.data.duration; 33 | unHide(buffId); 34 | buffActiveUI(buffId); 35 | setTimeUI(buffId, buff.data.duration, buff.data.duration, user, config); 36 | user.resetInterval(buffId); 37 | user.intervals[buffId] = setInterval(function() { 38 | if(user.usesBuff(buffId)) { 39 | var b_ = user.getBuff(buffId); 40 | if(b_.active) { 41 | var timeLeft = b_.duration - ((new Date()).getTime() - b_.startTime) / 1000; 42 | setTimeUI(buffId, Math.max(0,timeLeft), b_.duration, true, user, config); 43 | if(timeLeft <= 0) { 44 | cdBuff(sourceId, buffId, buffName); 45 | } 46 | } 47 | } 48 | }, REFRESH) 49 | } 50 | } 51 | } 52 | 53 | function loseBuff(sourceId, targetId, buffId, buffName){ 54 | } 55 | 56 | function cdBuff(sourceId, buffId, buffName) { 57 | if(debug) { console.log(`LOSEBUFF ${buffId} ${buffName}`); } 58 | // 59 | user.resetInterval(buffId); 60 | hide(buffId); 61 | var buff = user.getBuff(buffId); 62 | if(buff.data.noCd) { return; } 63 | buff.active = false; 64 | buff.cd = true; 65 | buff.duration = buff.data.cd; 66 | buffOnCdUI(buffId); 67 | user.intervals[buffId] = setInterval(function() { 68 | if(user.usesBuff(buffId)) { 69 | var b_ = user.getBuff(buffId); 70 | if(b_.cd) { 71 | var timeLeft = b_.duration - ((new Date()).getTime() - b_.startTime) / 1000; 72 | setTimeUI(buffId, Math.max(0,timeLeft), b_.duration, false, user, config); 73 | if(timeLeft <= SHOW_CD) { 74 | unHide(buffId); 75 | } 76 | if(timeLeft <= 0) { 77 | readyBuff(sourceId, buffId, buffName); 78 | } 79 | } 80 | } 81 | }, REFRESH); 82 | } 83 | 84 | function readyBuff(sourceId, buffId, buffName) { 85 | user.resetInterval(buffId); 86 | user.getBuff(buffId).cd = false; 87 | buffReadyUI(buffId); 88 | } 89 | 90 | function switchJob(jobId) { 91 | if(user.setJob(jobId)) { 92 | user.initPBuffs(buffConfig, config.all_personals, config.own_personals, config.buffs_disabled); 93 | setupBuffsUI(user, config); 94 | } 95 | } 96 | 97 | function reload() { 98 | user.reset(); 99 | user.initPBuffs(buffConfig, config.all_personals, config.own_personals, config.buffs_disabled); 100 | setupBuffsUI(user, config); 101 | } 102 | 103 | function parseJob(sourceId, jobId) { 104 | if(sourceId == user.id) { 105 | switchJob(jobId); 106 | } 107 | } 108 | function wipe(){ 109 | reload(); 110 | } 111 | function bindPet(ownerId, petId, petName){ 112 | } 113 | 114 | setup( 115 | logAction, 116 | gainBuff, 117 | loseBuff, 118 | parseJob, 119 | bindPet, 120 | wipe, 121 | // ========== 122 | (playerId) => { 123 | if(user.id !== '' && playerId !== user.id) { location.reload(); } 124 | }, 125 | (zoneId) => { 126 | if(!user.setZone(zoneId)) { reload(); } 127 | }, 128 | (party) => { 129 | user.changeParty(party); 130 | }, 131 | (playerId, playerJob) => { 132 | user.init(playerId); 133 | switchJob(playerJob); 134 | } 135 | ) -------------------------------------------------------------------------------- /js/buffs/settings.js: -------------------------------------------------------------------------------- 1 | import {getCurrentSettings, setupReload} from '../config/config-default.js' 2 | 3 | function getSettings() { 4 | var config = getCurrentSettings(); 5 | setupReload(); 6 | 7 | if(config.buffs_small) { 8 | document.documentElement.classList.add("buff-small"); 9 | } 10 | 11 | return config; 12 | } 13 | 14 | export {getSettings} -------------------------------------------------------------------------------- /js/buffs/visual.js: -------------------------------------------------------------------------------- 1 | function setupBuffsUI(user, config) { 2 | var buffRow = document.getElementById("buffs"); 3 | buffRow.innerHTML = ""; 4 | for(const buffId in user.buffs) { 5 | var buff = user.buffs[buffId]; 6 | var buffElem = document.createElement("div"); 7 | buffElem.classList.add("buff"); 8 | buffElem.classList.add("buff-hidden"); 9 | if(buff.data.party) { 10 | buffElem.classList.add("buff-personal"); 11 | } 12 | buffElem.setAttribute("id", buffId); 13 | buffElem.setAttribute("style", "border-color:" + buff.data.color); 14 | buffElem.innerHTML = ` 15 | 16 | 17 | 0 18 |
`; 19 | buffRow.appendChild(buffElem); 20 | } 21 | } 22 | 23 | function setTimeUI(buffId, time, maxTime, invert, user, config) { 24 | var percent = invert ? 100 - (100 * time/maxTime) : (100 * time/maxTime); 25 | document.getElementById(buffId).querySelector(".buff-text").innerHTML = time.toFixed(0); 26 | document.getElementById(buffId).querySelector(".buff-overlay").setAttribute("style","height:" + percent + "%"); 27 | } 28 | 29 | function hide(buffId) { 30 | document.getElementById(buffId).classList.add("buff-hidden"); 31 | } 32 | 33 | function unHide(buffId) { 34 | document.getElementById(buffId).classList.remove("buff-hidden"); 35 | } 36 | 37 | function buffOnCdUI(buffId) { 38 | document.getElementById(buffId).classList.add("buff-cd"); 39 | } 40 | 41 | function buffReadyUI(buffId) { 42 | document.getElementById(buffId).classList.remove("buff-cd"); 43 | document.getElementById(buffId).classList.add("buff-ready"); 44 | } 45 | 46 | function buffActiveUI(buffId) { 47 | document.getElementById(buffId).classList.remove("buff-cd"); 48 | document.getElementById(buffId).classList.remove("buff-ready"); 49 | } 50 | 51 | export {setupBuffsUI, setTimeUI, hide, unHide, buffOnCdUI, buffReadyUI, buffActiveUI} -------------------------------------------------------------------------------- /js/classes/gaugeBuff.js: -------------------------------------------------------------------------------- 1 | class GBuff { 2 | constructor(id, data) { 3 | this.id = id; 4 | this.active = false; 5 | this.type = data.type; 6 | this.max = data.max; 7 | this.count = 0; 8 | 9 | this.data = data; 10 | } 11 | 12 | usesId(id) { 13 | if(this.type !== 'gcds') { return false; } 14 | return (this.data.ids.indexOf(id) !== -1); 15 | } 16 | } 17 | export {GBuff} -------------------------------------------------------------------------------- /js/classes/partyBuff.js: -------------------------------------------------------------------------------- 1 | class PBuff { 2 | constructor(id, job, data) { 3 | this.id = id; 4 | this.active = false; 5 | this.cd = false; 6 | this.self = data.self; 7 | this.target = data.target; 8 | this.party = data.party; 9 | this.job = job; 10 | 11 | this.data = data; 12 | } 13 | } 14 | export {PBuff} -------------------------------------------------------------------------------- /js/classes/user.js: -------------------------------------------------------------------------------- 1 | import {GBuff} from './gaugeBuff.js' 2 | import {PBuff} from './partyBuff.js' 3 | import {jobIds} from '../general/ids.js' 4 | 5 | class User { 6 | constructor() { 7 | this.id = ''; 8 | this.job = ''; 9 | this.zone = ''; 10 | this.party = {}; 11 | this.lastCast = {}; 12 | } 13 | init(id) { 14 | this.id = id; 15 | } 16 | setJob(jobId) { 17 | if(!(jobId in jobIds)) { return false; } 18 | if(this.job !== jobIds[jobId]) { 19 | this.job = jobIds[jobId]; 20 | this.reset(); 21 | console.log(`SETJOB ${this.job}`); 22 | return true; 23 | } 24 | return false; 25 | } 26 | usesBuff(buffId) { 27 | return (buffId in this.buffs); 28 | } 29 | getBuff(buffId) { 30 | return this.buffs[buffId]; 31 | } 32 | getIconName(buff){ 33 | return buff.data.name.toLowerCase().replace(/[ ]/g, ''); 34 | } 35 | allBuffs(callback) { 36 | for(const i in this.buffs) { 37 | callback(this.buffs[i]); 38 | } 39 | } 40 | hasAlias(buffId) { 41 | return (buffId in this.alias); 42 | } 43 | getAlias(buffId) { 44 | return this.alias[buffId]; 45 | } 46 | // GAUGES 47 | initGBuffs(actions) { 48 | for(const buffId in actions[this.job].buffs) { 49 | this.buffs[buffId] = new GBuff(buffId, actions[this.job].buffs[buffId]); 50 | } 51 | for(const aliasId in actions[this.job].alias) { 52 | this.alias[aliasId] = actions[this.job].alias[aliasId]; 53 | } 54 | } 55 | // PARTY BUFFS 56 | initPBuffs(buffs, configAllPersonals, configOwnPersonals, configDisabledBuffs) { 57 | var allPersonals = (this.job === 'AST') || configAllPersonals; 58 | for(const jobId in buffs) { 59 | for(const buffId in buffs[jobId]) { 60 | var buff = buffs[jobId][buffId]; 61 | if(configDisabledBuffs[buffId]) { continue; } 62 | if( buff.self || 63 | buff.target || 64 | allPersonals || 65 | (jobId == this.job && configOwnPersonals) 66 | ) { 67 | this.buffs[buffId] = new PBuff(buffId, jobId, buff); 68 | } 69 | } 70 | } 71 | } 72 | // PETS 73 | bindPet(ownerId, petId, petName) { 74 | if(ownerId !== this.id) { return false; } 75 | console.log(`BIND ${petName}`); 76 | this.pet = { 77 | id: petId.toUpperCase(), 78 | name: petName 79 | }; 80 | } 81 | // ZONE 82 | setZone(zone) { 83 | if(this.zone !== '' && zone !== this.zone) { 84 | this.zone = zone; 85 | return false; 86 | } 87 | this.zone = zone; 88 | return true; 89 | } 90 | exploreZone() { 91 | if(this.zone == 920) { 92 | return true; 93 | } 94 | return false; 95 | } 96 | // PARTY 97 | changeParty(party) { 98 | this.party = {}; 99 | for(var i = 0; i < party.length; i++) { 100 | if(party[i].inParty) { 101 | this.party[party[i].id] = true; 102 | } 103 | } 104 | } 105 | inParty(id) { 106 | return (id === this.id || id in this.party); 107 | } 108 | // RESET TIMERS AND STUFF 109 | resetAttrs() { 110 | this.intervals = {}; 111 | this.timers = {}; 112 | this.buffs = {}; 113 | this.alias = {}; 114 | this.pet = {name: '', id: ''}; 115 | } 116 | reset() { 117 | this.resetIntervals(); 118 | this.resetTimers(); 119 | this.resetAttrs(); 120 | } 121 | resetInterval(buffId) { 122 | clearInterval(this.intervals[buffId]); 123 | } 124 | resetIntervals() { 125 | for(const id in this.intervals) { this.resetInterval(id); } 126 | } 127 | resetTimer(buffId) { 128 | clearTimeout(this.timers[buffId]); 129 | } 130 | resetTimers() { 131 | for(const id in this.timers) { this.resetTimer(id); } 132 | } 133 | } 134 | 135 | export {User} -------------------------------------------------------------------------------- /js/config/config-default.js: -------------------------------------------------------------------------------- 1 | var config = { 2 | // GENERAL 3 | timeout: 5000, 4 | refresh: 100, 5 | 6 | // GAUGES 7 | edges: "round", 8 | zoom: 1, 9 | fontSize: 15, 10 | justify_right: false, 11 | reverse_row: false, 12 | horizontal_gauges: false, 13 | small_icons: false, 14 | disabled: {}, 15 | gaugeType: {}, 16 | color: {}, 17 | order: {}, 18 | danger: false, 19 | glow: true, 20 | glows: {}, 21 | 22 | // BUFFS 23 | all_personals: false, 24 | own_personals: true, 25 | buffs_disabled: {}, 26 | buffs_small: false 27 | }; 28 | 29 | function setupReload(){ 30 | // RELOAD WHEN SETTINGS ARE CHANGED 31 | window.addEventListener("storage", function(e) { 32 | console.log(e); 33 | if(e.key != "CodexSettings") { return; } 34 | location.reload(); 35 | }); 36 | } 37 | 38 | function getCurrentSettings(){ 39 | var s = localStorage.getItem("CodexSettings"); 40 | if(s != null) { 41 | s = JSON.parse(s); 42 | for(const key in s) { // copy over configs 43 | config[key] = s[key]; 44 | } 45 | } 46 | return config; 47 | } 48 | 49 | export {getCurrentSettings, setupReload} -------------------------------------------------------------------------------- /js/config/index.js: -------------------------------------------------------------------------------- 1 | import {gaugeConfig} from '../gauges/actions.js' 2 | import {buffConfig} from '../buffs/buffs.js' 3 | import {getCurrentSettings} from '../config/config-default.js' 4 | 5 | var config = getCurrentSettings(); 6 | 7 | // =========== 8 | // HELPERS 9 | // ============ 10 | function setSettings() { 11 | localStorage.setItem('CodexSettings', JSON.stringify(config)); 12 | } 13 | function colorOptions(color) { 14 | var colors = ['red','blue','green','orange','yellow','purple']; 15 | return colors.map(function(c){ 16 | var selected = (c === color)? 'selected' : ''; 17 | return ``; 18 | }).join(''); 19 | } 20 | function glowsOptions(glow) { 21 | var glowSelected = glow ? glow : 'noGlow'; 22 | var glows = [ 23 | 'noGlow', 24 | 'green', 25 | 'blue', 26 | 'yellow', 27 | 'orange', 28 | 'purple', 29 | 'red', 30 | 'dark', 31 | 'dark2', 32 | 'rock', 33 | 'blue2', 34 | 'fire', 35 | 'sonic', 36 | 'swirl', 37 | 'water', 38 | 'jewel', 39 | 'prism', 40 | 'fireblue', 41 | 'fireblue2', 42 | 'rainbow']; 43 | return glows.map(function(g) { 44 | var selected = (g === glowSelected) ? 'selected' : ''; 45 | return ``; 46 | }).join(''); 47 | } 48 | 49 | function typeOptions(type, typeSelected) { 50 | var types = []; 51 | switch(type) { 52 | case 'timer': 53 | console.log(type); 54 | types = ['BAR', 'SQUARE']; 55 | break; 56 | case 'gcds': 57 | types = ['ARROW', 'BAR']; 58 | break; 59 | } 60 | return types.map(function(t) { 61 | var selected = (t === typeSelected) ? 'selected' : ''; 62 | return ``; 63 | }).join(''); 64 | } 65 | document.getElementById('settings-apply').addEventListener('click', function(e){ 66 | setSettings(); 67 | }); 68 | document.getElementById('job-gauges-collapse').addEventListener('click', function(e){ 69 | document.getElementById('gauge-settings').classList.toggle('hide'); 70 | }); 71 | document.getElementById('buffs-collapse').addEventListener('click', function(e){ 72 | document.getElementById('buffs-settings').classList.toggle('hide'); 73 | }); 74 | 75 | // UPDATE CONFIG BASED ON FIELDS 76 | document.getElementById('codex-edges').addEventListener('change', function(e){ 77 | config.edges = e.target.value; 78 | }); 79 | document.getElementById('codex-zoom').addEventListener('change', function(e){ 80 | config.zoom = e.target.value; 81 | }); 82 | document.getElementById('codex-fontsize').addEventListener('change', function(e){ 83 | config.fontSize = e.target.value; 84 | }); 85 | document.getElementById('codex-justify-right').addEventListener('change', function(e){ 86 | config.justify_right = e.target.checked; 87 | }); 88 | document.getElementById('codex-reverse-row').addEventListener('change', function(e){ 89 | config.reverse_row = e.target.checked; 90 | }); 91 | document.getElementById('codex-small-icons').addEventListener('change', function(e){ 92 | config.small_icons = e.target.checked; 93 | }); 94 | document.getElementById('codex-horizontal-gauges').addEventListener('change', function(e){ 95 | config.horizontal_gauges = e.target.checked; 96 | }); 97 | document.getElementById('codex-timeout').addEventListener('change', function(e){ 98 | if(!isNaN(parseInt(e.target.value))){ 99 | config.timeout = parseInt(e.target.value); 100 | } 101 | }); 102 | document.getElementById('codex-refresh').addEventListener('change', function(e){ 103 | if(!isNaN(parseInt(e.target.value))){ 104 | config.refresh = parseInt(e.target.value); 105 | } 106 | }); 107 | document.getElementById('codex-danger').addEventListener('change', function(e){ 108 | config.danger = e.target.checked; 109 | }); 110 | document.getElementById('codex-glow').addEventListener('change', function(e){ 111 | config.glow = e.target.checked; 112 | }); 113 | document.getElementById('codex-buffs-small').addEventListener('change', function(e){ 114 | config.buffs_small = e.target.checked; 115 | }); 116 | document.getElementById('codex-all-personals').addEventListener('change', function(e){ 117 | config.all_personals = e.target.checked; 118 | }); 119 | document.getElementById('codex-own-personals').addEventListener('change', function(e){ 120 | config.own_personals = e.target.checked; 121 | }); 122 | 123 | // INIT FIELDS 124 | document.getElementById('codex-edges').value = config.edges; 125 | document.getElementById('codex-zoom').value = config.zoom; 126 | document.getElementById('codex-fontsize').value = config.fontSize; 127 | document.getElementById('codex-justify-right').checked = config.justify_right; 128 | document.getElementById('codex-horizontal-gauges').checked = config.horizontal_gauges; 129 | document.getElementById('codex-timeout').value = config.timeout; 130 | document.getElementById('codex-refresh').value = config.refresh; 131 | document.getElementById('codex-danger').checked = config.danger; 132 | document.getElementById('codex-glow').checked = config.glow; 133 | document.getElementById('codex-buffs-small').checked = config.buffs_small; 134 | document.getElementById('codex-all-personals').checked = config.all_personals; 135 | document.getElementById('codex-own-personals').checked = config.own_personals; 136 | 137 | // ================= 138 | // GAUGES 139 | // ================= 140 | for(const job in gaugeConfig) { 141 | var settingsRow = document.createElement('div'); 142 | settingsRow.classList.add('settings-row'); 143 | var gaugeCheckboxes = ` 144 | 145 | 146 | ${job} 147 | `; 148 | for(const buffId in gaugeConfig[job].buffs) { 149 | var checked = config.disabled[buffId] ? '' : 'checked'; 150 | var type = config.gaugeType[buffId] ? config.gaugeType[buffId] : gaugeConfig[job].buffs[buffId].visual.type; // BAR, ARROW, etc. 151 | 152 | var color = config.color[buffId] ? config.color[buffId] : gaugeConfig[job].buffs[buffId].visual.color; 153 | var color_select = ``; 154 | 155 | var order = config.order[buffId] ? config.order[buffId] : gaugeConfig[job].buffs[buffId].order; 156 | 157 | var glows = config.glows[buffId] ? config.glows[buffId] : gaugeConfig[job].buffs[buffId].visual.glow; 158 | var glows_select_1 = ``; 159 | var glows_select = (type === 'BAR' && gaugeConfig[job].buffs[buffId].type == 'timer') ? glows_select_1 : ''; // only make bars that count down glow 160 | 161 | var type_select = ``; 162 | 163 | var order_select = ` 164 | # 165 | `; 166 | var disabled_select = ``; 167 | 168 | gaugeCheckboxes += ` 169 |
170 |
171 | ${gaugeConfig[job].buffs[buffId].name} 172 | ${order_select} 173 | ${disabled_select} 174 |
175 |
176 | ${color_select} 177 | ${glows_select} 178 | ${type_select} 179 |
180 |
`; 181 | } 182 | settingsRow.innerHTML = gaugeCheckboxes; 183 | document.getElementById('gauge-settings').appendChild(settingsRow); 184 | } 185 | document.querySelectorAll('.codex-disabled').forEach(function(item) { 186 | item.addEventListener('change', function(e) { 187 | config.disabled[e.target.getAttribute('data-id')] = !(e.target.checked); 188 | }); 189 | }); 190 | document.querySelectorAll('.codex-color').forEach(function(item) { 191 | item.addEventListener('change', function(e) { 192 | config.color[e.target.getAttribute('data-id')] = e.target.value; 193 | }); 194 | }); 195 | document.querySelectorAll('.codex-order').forEach(function(item) { 196 | item.addEventListener('change', function(e) { 197 | config.order[e.target.getAttribute('data-id')] = e.target.value; 198 | }); 199 | }); 200 | document.querySelectorAll('.codex-glows').forEach(function(item) { 201 | item.addEventListener('change', function(e) { 202 | config.glows[e.target.getAttribute('data-id')] = e.target.value; 203 | }); 204 | }); 205 | document.querySelectorAll('.codex-type').forEach(function(item) { 206 | item.addEventListener('change', function(e) { 207 | config.gaugeType[e.target.getAttribute('data-id')] = e.target.value; 208 | }); 209 | }); 210 | 211 | // ============== 212 | // BUFFS 213 | // ============== 214 | var buffSettingsRow = document.createElement('div'); 215 | buffSettingsRow.classList.add('settings-row'); 216 | var buffCheckboxes = `PARTY BUFFS`; 217 | for(const jobId in buffConfig) { 218 | for(const buffId in buffConfig[jobId]) { 219 | var buff = buffConfig[jobId][buffId]; 220 | var checked = config.buffs_disabled[buffId] ? '' : 'checked'; 221 | var selfTag = buff.self ? 'ON SELF': ''; 222 | var targetTag = buff.target ? 'ON TARGET': ''; 223 | var partyTag = buff.party ? 'ON PARTY MEMBER': ''; 224 | buffCheckboxes += ` 225 |
226 | ${buff.name} ${selfTag} ${targetTag} ${partyTag} 227 | 228 |
`; 229 | } 230 | } 231 | buffSettingsRow.innerHTML = buffCheckboxes; 232 | document.getElementById('buffs-settings').appendChild(buffSettingsRow); 233 | document.querySelectorAll('.codex-buffs-disabled').forEach(function(item) { 234 | item.addEventListener('change', function(e) { 235 | config.buffs_disabled[e.target.getAttribute('data-id')] = !(e.target.checked); 236 | }); 237 | }); -------------------------------------------------------------------------------- /js/gauges/actions.js: -------------------------------------------------------------------------------- 1 | import {actionIds, buffIds} from '../general/ids.js' 2 | var gaugeConfig = { 3 | DRK: { 4 | buffs: { 5 | [buffIds.Delirium]: { 6 | name: 'Delirium', 7 | order: 0, 8 | time: 10, max: 5, 9 | type: 'gcds', 10 | ids: [ 11 | actionIds.BloodSpiller, 12 | actionIds.Quietus 13 | ], 14 | visual: { type: 'ARROW', color: 'red'} 15 | }, 16 | [buffIds.BloodWeapon]: { 17 | name: 'Blood Weapon', 18 | order: 1, 19 | time: 10, max: 5, 20 | type: 'gcds', 21 | ids: [ 22 | actionIds.HardSlash, 23 | actionIds.SiphonStrike, 24 | actionIds.Souleater, 25 | actionIds.Unmend, 26 | actionIds.Unleash, 27 | actionIds.StalwartSoul, 28 | actionIds.BloodSpiller, 29 | actionIds.Quietus 30 | ], 31 | visual: {type: 'BAR', color: 'blue', glow: 'dark'} 32 | } 33 | }, 34 | alias: {} 35 | }, 36 | WAR: { 37 | buffs: { 38 | [buffIds.InnerRelease]: { 39 | name: 'Inner Release', 40 | order: 0, 41 | time: 10, max: 5, 42 | type: 'gcds', 43 | ids: [ 44 | actionIds.FellCleave, 45 | actionIds.Decimate 46 | ], 47 | visual: {type: 'ARROW', color: 'orange'} 48 | }, 49 | [buffIds.StormsEye]: { 50 | name: 'Storms Eye', 51 | order: 1, 52 | max: 60, 53 | type: 'timer', 54 | visual: {type: 'BAR', color: 'red', danger: true} 55 | } 56 | }, 57 | alias: {} 58 | }, 59 | PLD: { 60 | buffs: { 61 | [buffIds.Requiescat]: { 62 | name: 'Requiescat', 63 | order: 0, 64 | time: 12, max: 5, 65 | type: 'gcds', 66 | ids: [ 67 | actionIds.HolySpirit, 68 | actionIds.HolyCircle, 69 | actionIds.Confiteor 70 | ], 71 | visual: {type: 'ARROW', color: 'blue'} 72 | }, 73 | [buffIds.FightOrFlight]: { 74 | name: 'Fight or Flight', 75 | order: 2, 76 | time: 25, max: 11, 77 | type: 'gcds', 78 | ids: [ 79 | actionIds.FastBlade, 80 | actionIds.RiotBlade, 81 | actionIds.RoyalAuthority, 82 | actionIds.Atonement, 83 | actionIds.GoringBlade, 84 | actionIds.TotalEclipse, 85 | actionIds.Prominence 86 | ], 87 | visual: {type: 'BAR', color: 'red', glow: 'red'} 88 | }, 89 | [buffIds.GoringBlade]: { 90 | name: 'Goring Blade', 91 | order: 1, 92 | max: 21, 93 | type: 'timer', 94 | visual: {type: 'BAR', color: 'orange', danger: true} 95 | } 96 | }, 97 | alias: {} 98 | }, 99 | GNB: { 100 | buffs: { 101 | [buffIds.NoMercy]: { 102 | name: 'No Mercy', 103 | order: 0, time: 20, max: 9, 104 | type: 'gcds', 105 | ids: [ 106 | actionIds.DemonSlice, 107 | actionIds.DemonSlaughter, 108 | actionIds.KeenEdge, 109 | actionIds.BrutalShell, 110 | actionIds.SolidBarrel, 111 | actionIds.BurstStrike, 112 | actionIds.SonicBreak, 113 | actionIds.GnashingFang, 114 | actionIds.SavageClaw, 115 | actionIds.WickedTalon, 116 | actionIds.FatedCicle 117 | ], 118 | visual: {type: 'ARROW', color: 'orange'} 119 | } 120 | }, 121 | alias: {} 122 | }, 123 | SCH: { 124 | buffs: { 125 | [buffIds.Biolysis]: { 126 | name: 'Biolysis', 127 | order: 0, 128 | max: 30, 129 | type: 'timer', 130 | visual: {type: 'BAR', color: 'green', danger: true} 131 | } 132 | }, 133 | alias: { 134 | [buffIds.SchBio]: buffIds.Biolysis, 135 | [buffIds.SchBio2]: buffIds.Biolysis 136 | } 137 | }, 138 | WHM: { 139 | buffs: { 140 | [buffIds.Dia]: { 141 | name: 'Dia', 142 | order: 0, 143 | max: 30, 144 | type: 'timer', 145 | visual: {type: 'BAR', color: 'blue', danger: true} 146 | } 147 | }, 148 | alias: { 149 | [buffIds.Aero]: buffIds.Dia, 150 | [buffIds.Aero2]: buffIds.Dia 151 | } 152 | }, 153 | AST: { 154 | buffs: { 155 | [buffIds.Combust3]: { 156 | name: 'Combust', 157 | order: 0, 158 | max: 30, 159 | type: 'timer', 160 | visual: {type: 'BAR', color: 'blue', danger: true} 161 | } 162 | }, 163 | alias: { 164 | [buffIds.Combust]: buffIds.Combust3, 165 | [buffIds.Combust2]: buffIds.Combust3 166 | } 167 | }, 168 | MNK: { 169 | buffs: { 170 | [buffIds.PerfectBalance]: { 171 | name: 'Perfect Balance', 172 | order: 0, 173 | time: 15, max: 6, 174 | type: 'gcds', 175 | noRefresh: true, 176 | ids: [ 177 | actionIds.Bootshine, 178 | actionIds.TrueStrike, 179 | actionIds.SnapPunch, 180 | actionIds.DragonKick, 181 | actionIds.TwinSnakes, 182 | actionIds.Demolish, 183 | actionIds.ArmOfTheDestroyer, 184 | actionIds.FourPointFury, 185 | actionIds.RockBreaker 186 | ], 187 | visual: {type: 'ARROW', color: 'yellow'} 188 | }, 189 | [buffIds.RiddleOfFire]: { 190 | name: 'Riddle of Fire', 191 | order: 1, time: 20, max: 9, 192 | type: 'gcds', 193 | ids: [ 194 | actionIds.Bootshine, 195 | actionIds.TrueStrike, 196 | actionIds.SnapPunch, 197 | actionIds.DragonKick, 198 | actionIds.TwinSnakes, 199 | actionIds.Demolish, 200 | actionIds.ArmOfTheDestroyer, 201 | actionIds.FourPointFury, 202 | actionIds.RockBreaker 203 | ], 204 | visual: {type: 'BAR', color: 'red', glow: 'red'} 205 | } 206 | }, 207 | alias: {} 208 | }, 209 | DRG: { 210 | buffs: { 211 | [buffIds.LanceCharge]: { 212 | name: 'Lance Charge', 213 | order: 0, 214 | time: 20, max: 9, 215 | type: 'gcds', 216 | ids: [ 217 | actionIds.TrueThrust, 218 | actionIds.Disembowel, 219 | actionIds.ChaosThrust, 220 | actionIds.WheelingThrust, 221 | actionIds.VorpalThrust, 222 | actionIds.FullThrust, 223 | actionIds.FangAndClaw, 224 | actionIds.RaidenThrust, 225 | actionIds.DoomSpike, 226 | actionIds.SonicThrust, 227 | actionIds.CoerthanTorment, 228 | actionIds.PiercingTalon 229 | ], 230 | visual: {type: 'ARROW', color: 'red'} 231 | }, 232 | [buffIds.RightEye]: { 233 | name: 'Right Eye', 234 | order: 2, 235 | time: 20, max: 9, 236 | type: 'gcds', 237 | ids: [ 238 | actionIds.TrueThrust, 239 | actionIds.Disembowel, 240 | actionIds.ChaosThrust, 241 | actionIds.WheelingThrust, 242 | actionIds.VorpalThrust, 243 | actionIds.FullThrust, 244 | actionIds.FangAndClaw, 245 | actionIds.RaidenThrust, 246 | actionIds.DoomSpike, 247 | actionIds.SonicThrust, 248 | actionIds.CoerthanTorment, 249 | actionIds.PiercingTalon 250 | ], 251 | visual: {type: 'BAR', color: 'orange', glow: 'orange'} 252 | } 253 | }, 254 | alias: { 255 | [buffIds.RightEye2]: buffIds.RightEye 256 | } 257 | }, 258 | NIN: { 259 | buffs: { 260 | [buffIds.TrickAttack]: { 261 | name: 'Trick Attack', 262 | order: 0, 263 | time: 15, max: 7, 264 | type: 'gcds', 265 | ids: [ 266 | actionIds.SpinningEdge, 267 | actionIds.GustSlash, 268 | actionIds.AeolionEdge, 269 | actionIds.ArmorCrush, 270 | actionIds.ShadowFang, 271 | actionIds.ThrowingDagger, 272 | actionIds.DeathBlossom, 273 | actionIds.Hakke, 274 | actionIds.Fuma, 275 | actionIds.Katon, 276 | actionIds.Raiton, 277 | actionIds.Hyothon, 278 | actionIds.Huton, 279 | actionIds.Doton, 280 | actionIds.Suiton, 281 | actionIds.Goka, 282 | actionIds.Hyosho 283 | ], 284 | visual: {type: 'ARROW', color: 'yellow'} 285 | }, 286 | }, 287 | alias: {} 288 | }, 289 | SAM: { 290 | buffs: { 291 | [buffIds.Jinpu]: { 292 | name: 'Jinpu', 293 | order: 0, max: 40, 294 | type: 'timer', 295 | visual: {type: 'BAR', color: 'blue', danger: true} 296 | }, 297 | [buffIds.Shifu]: { 298 | name: 'Shifu', 299 | order: 1, max: 40, 300 | type: 'timer', 301 | visual: {type: 'BAR', color: 'red', danger: true} 302 | }, 303 | [buffIds.Higanbana]: { 304 | name: 'Higanbana', 305 | order: 2, max: 60, 306 | type: 'timer', 307 | visual: {type: 'BAR', color: 'orange', danger: true} 308 | } 309 | }, 310 | alias: {} 311 | }, 312 | BRD: { 313 | buffs: { 314 | [buffIds.CausticBite]: { 315 | name: 'Caustic Bite', 316 | order: 0, 317 | max: 30, 318 | type: 'timer', 319 | visual: {type: 'BAR', color: 'red', danger: true} 320 | }, 321 | [buffIds.Stormbite]: { 322 | name: 'Stormbite', 323 | order: 1, 324 | max: 30, 325 | type: 'timer', 326 | visual: {type: 'BAR', color: 'blue', danger: true} 327 | }, 328 | [buffIds.RagingStrikes]: { 329 | name: 'Raging Strikes', 330 | order: 2, 331 | time: 20, max: 9, // +2 for barrage? 332 | type: 'gcds', 333 | ids: [ 334 | actionIds.BurstShot, 335 | actionIds.RefulgentArrow, 336 | actionIds.CausticBite, 337 | actionIds.Stormbite, 338 | actionIds.IronJaws, 339 | actionIds.QuickNock 340 | ], 341 | visual: {type: 'ARROW', color: 'orange'} 342 | } 343 | }, 344 | alias: { 345 | [buffIds.VenomousBite]: buffIds.CausticBite, 346 | [buffIds.Windbite]: buffIds.Stormbite 347 | } 348 | }, 349 | MCH: { 350 | buffs: { 351 | [actionIds.Hypercharge]: { 352 | name: 'Hypercharge', 353 | order: 0, 354 | time: 9, max: 5, 355 | combo: true, 356 | type: 'gcds', 357 | ids: [ 358 | actionIds.HeatBlast, 359 | actionIds.AutoCrossbow 360 | ], 361 | visual: {type: 'ARROW', color: 'orange'} 362 | }, 363 | [buffIds.Wildfire]: { 364 | name: 'Wildfire', 365 | order: 1, 366 | time: 10, max: 6, 367 | type: 'gcds', 368 | ids: [ 369 | actionIds.HeatedSplitShot, 370 | actionIds.HeatedSlugShot, 371 | actionIds.HeatedCleanShot, 372 | actionIds.AirAnchor, 373 | actionIds.Drill, 374 | actionIds.BioBlaster, 375 | actionIds.HeatBlast, 376 | actionIds.AutoCrossbow, 377 | actionIds.HotShot, 378 | actionIds.CleanShot 379 | ], 380 | visual: {type: 'BAR', color: 'red', glow: 'red'} 381 | } 382 | }, 383 | alias: {} 384 | }, 385 | DNC: { 386 | buffs: { 387 | [buffIds.Devilment]: { 388 | name: 'Devilment', 389 | order: 0, 390 | time: 20, max: 10, 391 | type: 'gcds', 392 | ids: [ 393 | actionIds.Cascade, 394 | actionIds.Fountain, 395 | actionIds.Windmill, 396 | actionIds.Bladeshower, 397 | actionIds.ReverseCascade, 398 | actionIds.Fountainfall, 399 | actionIds.ReverseWindmill, 400 | actionIds.Bloodshower, 401 | actionIds.StandardStep, 402 | actionIds.DoubleStandardFinish, 403 | actionIds.TechnicalStep, 404 | actionIds.QuadTechnicalFinish, 405 | actionIds.Emboite, 406 | actionIds.Entrechat, 407 | actionIds.Jete, 408 | actionIds.Pirouette, 409 | actionIds.SaberDance, 410 | ], 411 | visual: {type: 'BAR', color: 'red', glow: 'red'} 412 | }, 413 | }, 414 | alias: {} 415 | }, 416 | BLM: { 417 | buffs: { 418 | [buffIds.Thunder3]: { 419 | name: 'Thunder 3', 420 | order: 0, 421 | max: 24, 422 | type: 'timer', 423 | visual: {type: 'BAR', color: 'blue', danger: true}, 424 | hides: [buffIds.Thunder4] 425 | }, 426 | [buffIds.Thunder4]: { 427 | name: 'Thunder 4', 428 | order: 1, 429 | max: 18, 430 | type: 'timer', 431 | visual: {type: 'BAR', color: 'purple', danger: true}, 432 | hides: [buffIds.Thunder3], 433 | hidden: true 434 | } 435 | }, 436 | alias: { 437 | [buffIds.Thunder]: buffIds.Thunder3, 438 | [buffIds.Thunder2]: buffIds.Thunder4 439 | } 440 | }, 441 | SMN: { 442 | buffs: { 443 | [actionIds.SummonBahamut]: { 444 | name: 'Bahamut', 445 | order: 0, time: 21, max: 8, 446 | combo: true, 447 | type: 'gcds', 448 | ids: [actionIds.Wyrmwave], 449 | visual: {type: 'ARROW', color: 'blue'}, 450 | hides: actionIds.FirebirdTrance 451 | }, 452 | [actionIds.FirebirdTrance]: { 453 | name: 'Pheonix', 454 | order: 1, time: 21, max: 8, 455 | combo: true, 456 | type: 'gcds', 457 | ids: [actionIds.ScarletFlame], 458 | visual: {type: 'ARROW', color: 'orange'}, 459 | hides: actionIds.SummonBahamut, 460 | hidden: true 461 | }, 462 | [buffIds.SmnBio3]: { 463 | name: 'Bio', 464 | order: 2, max: 30, 465 | type: 'timer', 466 | visual: {type: 'BAR', color: 'green', danger: true}, 467 | }, 468 | [buffIds.Miasma]: { 469 | name: 'Miasma', 470 | order: 3, max: 30, 471 | type: 'timer', 472 | visual: {type: 'BAR', color: 'blue', danger: true}, 473 | } 474 | }, 475 | alias: { 476 | [buffIds.SmnBio]: [buffIds.SmnBio3], 477 | [buffIds.SmnBio2]: [buffIds.SmnBio3] 478 | } 479 | }, 480 | RDM: { 481 | buffs: { 482 | [buffIds.Manafication]: { 483 | name: 'Manafication', 484 | order: 0, 485 | time: 10, max: 5, 486 | type: 'gcds', 487 | noRefresh: true, 488 | ids: [ 489 | actionIds.Jolt, 490 | actionIds.Verareo, 491 | actionIds.Verthunder, 492 | actionIds.Verfire, 493 | actionIds.Verstone, 494 | actionIds.Vercure, 495 | actionIds.Verareo2, 496 | actionIds.Verthunder2, 497 | actionIds.Impact, 498 | actionIds.ERiposte, 499 | actionIds.ERedoublement, 500 | actionIds.EZ, 501 | actionIds.EMoul, 502 | actionIds.EReprise, 503 | actionIds.Verfire, 504 | actionIds.Verholy, 505 | actionIds.Scorch 506 | ], 507 | visual: {type: 'ARROW', color: 'blue'} 508 | } 509 | }, 510 | alias: {} 511 | }, 512 | BLU: { 513 | buffs: { 514 | [buffIds.SongOfTorment]: { 515 | name: 'Song of Torment', 516 | order: 0, 517 | max: 30, 518 | type: 'timer', 519 | visual: {type: 'BAR', color: 'red', danger: true} 520 | } 521 | }, 522 | alias: {} 523 | }, 524 | }; 525 | 526 | export {gaugeConfig} -------------------------------------------------------------------------------- /js/gauges/index.js: -------------------------------------------------------------------------------- 1 | import {User} from '../classes/user.js' 2 | import {gaugeConfig} from './actions.js' 3 | import {setJobUI, setGaugeValue, addGlow, removeGlow, clearDanger, hide, unHide} from './visual.js' 4 | import {getSettings} from './settings.js' 5 | import {setup} from '../general/init.js' 6 | 7 | var user = new User(); 8 | var config = getSettings(); 9 | var TIMEOUT = config.timeout; 10 | var REFRESH = config.refresh; 11 | var debug = false; 12 | 13 | function logAction(sourceId, actionId, actionName, targetId, isAoe){ 14 | if(sourceId == user.id || sourceId == user.pet.id) { 15 | // ignore multihit for aoe 16 | if(isAoe) { 17 | var time = (new Date()).getTime(); 18 | if(actionId in user.lastCast && (time - user.lastCast[actionId] < 100)) { return; } 19 | user.lastCast[actionId] = time; 20 | } 21 | if(debug){ console.log(`ACTION ${actionId} ${actionName}`); } 22 | 23 | user.allBuffs(function(buff) { // count action usage towards gauge (ie, fell cleaves under IR) 24 | if(buff.active && buff.type === 'gcds' && buff.usesId(actionId)) { 25 | buff.count++; 26 | setGaugeValue(buff.id, buff.count, user, config); 27 | } 28 | }); 29 | if(user.usesBuff(actionId)) { // treat action like buff 30 | var buff = user.getBuff(actionId); 31 | gainBuff(sourceId, targetId, actionId, buff.data.time, actionName); 32 | user.resetTimer(actionId); 33 | user.timers[actionId] = setTimeout(function() { 34 | loseBuff(sourceId, targetId, actionId, actionName); 35 | }, 1000 * buff.data.time); 36 | } 37 | if(user.hasAlias(actionId)) { 38 | logAction(sourceId, user.getAlias(actionId), actionName, targetId, isAoe); 39 | } 40 | } 41 | } 42 | 43 | function gainBuff(sourceId, targetId, buffId, buffTime, buffName){ 44 | if(sourceId == user.id) { 45 | if(debug) { console.log(`BUFF ${buffId} ${buffName}`); } 46 | // 47 | if(user.usesBuff(buffId)) { 48 | var buff = user.getBuff(buffId); 49 | if(buff.active && buff.data.noRefresh) { return; } // block refreshing 50 | switch(buff.type) { 51 | case 'gcds': 52 | buff.count = 0; 53 | buff.active = true; 54 | break; 55 | case 'timer': 56 | buff.startTime = (new Date()).getTime(); 57 | buff.count = parseFloat(buffTime); 58 | buff.active = true; 59 | user.resetInterval(buffId); 60 | user.intervals[buffId] = setInterval(function() { // automatically expire after set amount of time 61 | if(user.usesBuff(buffId)) { 62 | var b_ = user.getBuff(buffId); 63 | if(b_.active) { 64 | var count = b_.count - ((new Date()).getTime() - b_.startTime) / 1000; 65 | setGaugeValue(buffId, Math.max(0,count), user, config); 66 | } 67 | } 68 | }, REFRESH); 69 | break; 70 | } 71 | 72 | /*if(user.exploreZone()) { // TODO: exploration zones are wonky 73 | user.resetTimer(buffId); 74 | user.timers[buffId] = setTimeout(function() { 75 | loseBuff(sourceId, targetId, buffId, buffName); 76 | }, 1000 * parseFloat(buffTime)); 77 | }*/ 78 | 79 | if(config.glow) { 80 | addGlow(buffId); 81 | } 82 | if(buff.data.hides) { // buff hides another bar 83 | hide(buff.data.hides); 84 | unHide(buffId); 85 | } 86 | } 87 | if(user.hasAlias(buffId)) { 88 | gainBuff(sourceId, targetId, user.getAlias(buffId), buffTime, buffName); 89 | } 90 | } 91 | } 92 | 93 | function loseBuff(sourceId, targetId, buffId, buffName){ 94 | if(sourceId == user.id) { 95 | if(user.usesBuff(buffId)) { 96 | var buff = user.getBuff(buffId); 97 | if(buff.active) { 98 | if(debug) { console.log(`LOSEBUFF ${buffId} ${buffName}`); } 99 | // 100 | switch(buff.type) { 101 | case 'gcds': 102 | break; 103 | case 'timer': 104 | user.resetInterval(buffId); 105 | setGaugeValue(buffId, 0, user, config); 106 | break; 107 | } 108 | buff.active = false; 109 | setTimeout(function() { 110 | setGaugeValue(buffId, 0, user, config); 111 | }, TIMEOUT) 112 | if(config.glow) { 113 | removeGlow(buffId); 114 | } 115 | } 116 | if(user.hasAlias(buffId)) { 117 | loseBuff(sourceId, targetId, user.getAlias(buffId), buffName); 118 | } 119 | } 120 | } 121 | } 122 | 123 | function switchJob(jobId) { 124 | if(user.setJob(jobId)) { 125 | user.initGBuffs(gaugeConfig); 126 | setJobUI(user, config); 127 | } 128 | } 129 | function reload() { 130 | user.reset(); 131 | user.initGBuffs(gaugeConfig); 132 | clearDanger(); 133 | setJobUI(user, config); 134 | } 135 | 136 | 137 | function parseJob(sourceId, jobId) { 138 | if(sourceId == user.id) { 139 | switchJob(jobId); 140 | } 141 | } 142 | function bindPet(ownerId, petId, petName){ 143 | user.bindPet(ownerId, petId, petName); 144 | } 145 | function wipe(){ 146 | location.reload(); 147 | } 148 | setup( 149 | logAction, 150 | gainBuff, 151 | loseBuff, 152 | parseJob, 153 | bindPet, 154 | wipe, 155 | // ========= 156 | (playerId) => { 157 | if(user.id !== '' && playerId !== user.id) { location.reload(); } 158 | }, 159 | (zoneId) => { 160 | if(!user.setZone(zoneId)) { reload(); } 161 | }, 162 | (party) => {}, 163 | (playerId, playerJob) => { 164 | user.init(playerId); 165 | switchJob(playerJob); 166 | } 167 | ) -------------------------------------------------------------------------------- /js/gauges/settings.js: -------------------------------------------------------------------------------- 1 | import {getCurrentSettings, setupReload} from '../config/config-default.js' 2 | 3 | document.querySelector("#settings").addEventListener("click", function(e){ 4 | window.open( 5 | 'config.html', 6 | 'Settings', 7 | `width=800,height=600` 8 | ) 9 | }); 10 | 11 | // GET 12 | function getSettings() { 13 | var config = getCurrentSettings(); 14 | setupReload(); 15 | 16 | // ADD CLASSES 17 | if(config.justify_right) { 18 | document.documentElement.classList.add("justify-right"); 19 | } 20 | if(config.reverse_row){ 21 | document.documentElement.classList.add("reverse-row"); 22 | } 23 | if(config.horizontal_gauges) { 24 | document.documentElement.classList.add("horizontal-gauges"); 25 | } 26 | // ADD STYLE 27 | var style = document.createElement('style'); 28 | style.innerHTML = ` 29 | body { 30 | zoom: ${config.zoom}; 31 | } 32 | .data-text { 33 | font-size: ${config.fontSize}px; 34 | }`; 35 | document.head.appendChild(style); 36 | 37 | return config; 38 | } 39 | 40 | export {getSettings} -------------------------------------------------------------------------------- /js/gauges/visual.js: -------------------------------------------------------------------------------- 1 | function setJobUI(user, config) { 2 | var container = document.getElementById('container'); 3 | container.innerHTML = ""; 4 | var buffIds = []; // SORT THE BARS 5 | user.allBuffs(function(buff) { 6 | buffIds.push({ 7 | id: buff.id, 8 | order: (config.order[buff.id] ? config.order[buff.id] : buff.data.order) 9 | }) 10 | }); 11 | buffIds.sort((a, b) => (a.order > b.order) ? 1 : -1) 12 | for(var b = 0; b < buffIds.length; b++) { 13 | var buff = user.getBuff(buffIds[b].id); 14 | var row = document.createElement('div'); 15 | var visual = buff.data.visual; 16 | 17 | var silver = (config.edges === "silver") ? "" : ''; 18 | var smallIcon = (config.small_icons) ? `` : ''; 19 | 20 | visual.color = config.color[buff.id] ? config.color[buff.id] : visual.color; 21 | visual.glow = config.glows[buff.id] ? config.glows[buff.id] : visual.glow; 22 | visual.type = config.gaugeType[buff.id] ? config.gaugeType[buff.id] : visual.type; 23 | 24 | row.setAttribute("class","row"); 25 | row.setAttribute("id", buff.id); 26 | row.setAttribute("type", buff.type); 27 | if(buff.data.hidden) { 28 | row.classList.add("hide"); 29 | } 30 | if(config.disabled[buff.id]) { 31 | row.classList.add("hideOverride"); 32 | } 33 | // ===== VISUAL TYPES ============ 34 | if(visual.type === "BAR") { 35 | var glow = (config.glow && visual.glow && visual.glow !== "noGlow") ? ` 36 |
37 |
38 | 39 |
40 |
41 | ` : ""; 42 | row.innerHTML = ` 43 | ${smallIcon} 44 |
45 | ${glow} ${silver} 46 |
47 | 48 |
49 |
50 | 0 51 | 52 |
53 |
54 | 55 | `; 56 | } 57 | else if(visual.type === "ARROW") { 58 | /*var totalHTML = ` 59 | ${smallIcon} 60 |
`; 61 | 62 | for(var i = 0; i < buff.max; i++) { 63 | totalHTML += `
`; 64 | } 65 | totalHTML += "
"; 66 | row.innerHTML = totalHTML;*/ 67 | 68 | row.innerHTML = ` 69 | ${smallIcon} 70 |
71 | ${createArrow(buff.data.max, visual.color)} 72 |
73 | `; 74 | } 75 | else if(visual.type === "SQUARE") { 76 | row.innerHTML = ` 77 |
78 | 79 | 80 | 81 | 82 | 83 |
84 | `; 85 | } 86 | container.appendChild(row); 87 | } 88 | } 89 | 90 | var arrowGradients = { 91 | 'red': ['#ff1c1c', '#ff6262'], 92 | 'blue': ['#4b51ff', '#9d97ff'], 93 | 'orange': ['#ffa64b', '#ffd197'], 94 | 'green': ['#baff4b', '#c4ff97'], 95 | 'yellow': ['#fcff4b', '#fffc97'], 96 | 'purple': ['#774bff', '#d297ff'], 97 | } 98 | function createArrow(num, color){ 99 | var body = ''; 100 | var slant = 10; 101 | var offset = 5; 102 | var targetWidth = 150; 103 | var targetHeight = 30; 104 | var strokeWidth = 1; 105 | var padLeft = 2; 106 | // targetWidth = (width + offset) * num + slant 107 | var height = targetHeight - 2 * strokeWidth; 108 | var width = (targetWidth - slant - 2 * strokeWidth) / num - offset; 109 | 110 | var grad = ` 111 | 112 | 113 | 114 | 115 | 116 | 117 | `; 118 | 119 | for(var i = 0; i < num; i++){ 120 | var startX = i * (width + offset) + strokeWidth + padLeft; 121 | var startY = strokeWidth; 122 | body += ` 123 | `; 133 | } 134 | 135 | return ` 136 | 137 | ${grad} 138 | ${body} 139 | `; 140 | } 141 | 142 | function setGaugeValue(buffId, count, user, config) { 143 | if(user.usesBuff(buffId)) { 144 | var buff = user.getBuff(buffId); 145 | var visual = buff.data.visual; 146 | visual.type = config.gaugeType[buff.id] ? config.gaugeType[buff.id] : visual.type; 147 | 148 | if(visual.type === "BAR") { 149 | var elem = document.querySelector(`.row[id="${buffId}"]`); 150 | var countString = count.toFixed(0); // NO DECIMAL PLACES 151 | var width = 100 * count / buff.max; 152 | 153 | elem.querySelector(".data-text").innerHTML = countString; 154 | elem.querySelector(".progress-bar > span").setAttribute('style',`width: ${width}%`); 155 | if(width <= 30 && visual.danger && config.danger) { // FLASH IF BAR IS LOW, ADD ON THE NEXT SECOND 156 | var delay = 1000 - ((new Date()).getTime() % 1000); 157 | window.setTimeout(function(){ 158 | elem.querySelector(".progress-bar > span").classList.add("progress-bar-flash"); 159 | elem.querySelector(".data-text").classList.add("data-text-flash"); 160 | }, delay); 161 | } 162 | else { 163 | elem.querySelector(".progress-bar > span").classList.remove("progress-bar-flash"); 164 | elem.querySelector(".data-text").classList.remove("data-text-flash"); 165 | } 166 | } 167 | else if(visual.type === "ARROW") { 168 | document.querySelectorAll(`.row[id="${buffId}"] .arrow`).forEach(function(item, idx) { 169 | if(idx < count) { 170 | item.classList.add("arrow-active"); 171 | } 172 | else { 173 | item.classList.remove("arrow-active"); 174 | } 175 | }); 176 | } 177 | else if(visual.type === "SQUARE") { 178 | var elem = document.querySelector(`.row[id="${buffId}"] .square`); 179 | var countString = count.toFixed(0); 180 | var percent = 100 * count / buff.max; 181 | // set recast text 182 | elem.querySelector(".recast-time").innerHTML = countString; 183 | // set the recast image 184 | var mapped = 1 + 80 * (1 - count / buff.max) 185 | var mappedNumber = Math.round(mapped).toFixed(0).padStart(2,"0"); 186 | elem.querySelector(".recast").setAttribute("src",`img/general/recast/recast_${mappedNumber}.png`); 187 | // if 0, add dash, remove stuff 188 | if(count == 0) { 189 | elem.classList.add("recast-hidden"); 190 | elem.classList.remove("dash-hidden"); 191 | } 192 | else { 193 | elem.classList.remove("recast-hidden"); 194 | elem.classList.add("dash-hidden"); 195 | } 196 | 197 | } 198 | } 199 | } 200 | 201 | function addGlow(buffId) { 202 | var g = document.querySelector(`.row[id="${buffId}"] .glow`); 203 | if(g) { 204 | g.classList.add("glow-active"); 205 | } 206 | } 207 | function removeGlow(buffId) { 208 | var g = document.querySelector(`.row[id="${buffId}"] .glow`); 209 | if(g) { 210 | g.classList.remove("glow-active"); 211 | } 212 | } 213 | 214 | function clearDanger() { 215 | document.querySelectorAll(".data-text").forEach(function(elem) { 216 | elem.classList.remove("data-text-flash"); 217 | }); 218 | } 219 | 220 | function hide(buffId) { 221 | document.querySelector(`.row[id="${buffId}"]`).classList.add("hide"); 222 | } 223 | function unHide(buffId) { 224 | document.querySelector(`.row[id="${buffId}"]`).classList.remove("hide"); 225 | } 226 | 227 | export {setJobUI, setGaugeValue, addGlow, removeGlow, clearDanger, hide, unHide} -------------------------------------------------------------------------------- /js/general/ids.js: -------------------------------------------------------------------------------- 1 | //===========// 2 | // BUFFS 3 | //===========// 4 | const buffIds = { 5 | // DRK 6 | Delirium: '7b4', 7 | BloodWeapon: '2e6', 8 | // WAR 9 | InnerRelease: '499', 10 | StormsEye: 'a75', 11 | // PLD 12 | FightOrFlight: '4c', 13 | GoringBlade: '2d5', 14 | Requiescat: '558', 15 | // GNB 16 | NoMercy: '727', 17 | // SCH 18 | Biolysis: '767', 19 | SchBio: 'b3', 20 | SchBio2: 'bd', 21 | Chain: '4c5', 22 | // WHM 23 | Dia: '74f', 24 | Aero: '8f', 25 | Aero2: '90', 26 | // AST 27 | Combust: '346', 28 | Combust2: '34b', 29 | Combust3: '759', 30 | Balance: '75a', 31 | Bole: '75b', 32 | Arrow: '75c', 33 | Spear: '75d', 34 | Ewer: '75e', 35 | Spire: '75f', 36 | LordOfCrowns: '754', 37 | LadyOfCrowns: '755', 38 | Divination: '756', 39 | // MNK 40 | PerfectBalance: '6e', 41 | Brotherhood: '4a1', 42 | RiddleOfFire: '49d', 43 | // DRG 44 | LanceCharge: '748', 45 | BattleLitany: '312', 46 | RightEye: '776', 47 | RightEye2: '5ad', 48 | LeftEye: '5ae', 49 | // NIN 50 | TrickAttack: '27e', 51 | Bunshin: '7a2', 52 | // SAM 53 | Jinpu: '512', 54 | Shifu: '513', 55 | Higanbana: '4cc', 56 | // BRD 57 | CausticBite: '4b0', 58 | Stormbite: '4b1', 59 | VenomousBite: '7c', 60 | Windbite: '81', 61 | RagingStrikes: '7d', 62 | BattleVoice: '8d', 63 | // MCH 64 | Wildfire: '79a', 65 | // DNC 66 | Devilment: '721', 67 | TechnicalFinish: '71e', 68 | // BLM 69 | Thunder: 'a1', 70 | Thunder2: 'a2', 71 | Thunder3: 'a3', 72 | Thunder4: 'ab4', 73 | // SMN 74 | SmnBio: 'b3', 75 | SmnBio2: 'bd', 76 | SmnBio3: '4be', 77 | Miasma: '4bf', 78 | Devotion: '4bd', 79 | // RDM 80 | Manafication: '7b3', 81 | Embolden: '4d7', 82 | // BLU 83 | SongOfTorment: '6b2', 84 | PeculiarLight: '6b9', 85 | OffGuard: '6b5', 86 | }; 87 | //=============// 88 | // ABILITIES 89 | //=============// 90 | const actionIds = { 91 | // DRK 92 | LivingShadow: '4058', 93 | BloodSpiller: '1CE0', 94 | Quietus: '1CDF', 95 | HardSlash: 'E28', 96 | SiphonStrike: 'E21', 97 | Souleater: 'E27', 98 | Unmend: 'E30', 99 | Unleash: 'E25', 100 | StalwartSoul: '4054', 101 | // WAR 102 | FellCleave: 'DDD', 103 | Decimate: 'DDE', 104 | // PLD 105 | FastBlade: '09', 106 | RiotBlade: '0F', 107 | GoringBlade: 'DD2', 108 | RoyalAuthority: 'DD3', 109 | Atonement: '404C', 110 | TotalEclipse: '1CD5', 111 | Prominence: '4049', 112 | HolySpirit: '1CD8', 113 | HolyCircle: '404A', 114 | Confiteor: '404B', 115 | // GNB 116 | DemonSlice: '3F0D', 117 | DemonSlaughter: '3F15', 118 | KeenEdge: '3F09', 119 | BrutalShell: '3F0B', 120 | SolidBarrel: '3F11', 121 | BurstStrike: '3F22', 122 | SonicBreak: '3F19', 123 | GnashingFang: '3F12', 124 | SavageClaw: '3F13', 125 | WickedTalon: '3F16', 126 | FatedCicle: '3F23', 127 | // SCH 128 | // WHM 129 | // AST 130 | // MNK 131 | Bootshine: '35', 132 | TrueStrike: '36', 133 | SnapPunch: '38', 134 | DragonKick: '4A', 135 | TwinSnakes: '3D', 136 | Demolish: '42', 137 | ArmOfTheDestroyer: '3E', 138 | FourPointFury: '4059', 139 | RockBreaker: '46', 140 | SixSidedStar: '405C', 141 | TornadoKick: 'DD7', 142 | // DRG 143 | TrueThrust: '4B', 144 | Disembowel: '57', 145 | ChaosThrust: '58', 146 | WheelingThrust: 'DE4', 147 | VorpalThrust: '4E', 148 | FullThrust: '54', 149 | FangAndClaw: 'DE2', 150 | RaidenThrust: '405F', 151 | DoomSpike: '56', 152 | SonicThrust: '1CE5', 153 | CoerthanTorment: '405D', 154 | PiercingTalon: '5A', 155 | Nastrond: '1CE8', 156 | // NIN 157 | SpinningEdge: '8C0', 158 | GustSlash: '8C2', 159 | AeolionEdge: '8CF', 160 | ArmorCrush: 'DEB', 161 | ShadowFang: '8D1', 162 | ThrowingDagger: '8C7', 163 | DeathBlossom: '8CE', 164 | Hakke: '4068', 165 | Fuma: '8D9', 166 | Katon: '8DA', 167 | Raiton: '8DB', 168 | Hyothon: '8DC', 169 | Huton: '8DD', 170 | Doton: '8DE', 171 | Suiton: '8DF', 172 | Goka: '406B', 173 | Hyosho: '406C', 174 | // SAM 175 | DoubleMidare: '4066', 176 | // BRD 177 | BurstShot: '406F', 178 | HeavyShot: '61', 179 | RefulgentArrow: '1CF1', 180 | StraightShot: '62', 181 | CausticBite: '1CEE', 182 | Stormbite: '1CEF', 183 | IronJaws: 'DE8', 184 | QuickNock: '6A', 185 | VenomousBite: '64', 186 | Windbite: '71', 187 | // MCH 188 | Hypercharge: '4339', 189 | HeatedSplitShot: '1CF3', 190 | HeatedSlugShot: '1CF4', 191 | HeatedCleanShot: '1CF5', 192 | AirAnchor: '4074', 193 | Drill: '4072', 194 | BioBlaster: '4073', 195 | HeatBlast: '1CF2', 196 | AutoCrossbow: '4071', 197 | CleanShot: 'B39', 198 | HotShot: 'B38', 199 | // DNC 200 | Cascade: '3E75', 201 | Fountain: '3E76', 202 | Windmill: '3E79', 203 | Bladeshower: '3E7A', 204 | ReverseCascade: '3E77', 205 | Fountainfall: '3E78', 206 | ReverseWindmill: '3E7B', 207 | Bloodshower: '3E7C', 208 | StandardStep: '3E7D', 209 | Emboite: '3E7F', 210 | Entrechat: '3E80', 211 | Jete: '3E81', 212 | Pirouette: '3E82', 213 | DoubleStandardFinish: '3F40', 214 | TechnicalStep: '3E7E', 215 | QuadTechnicalFinish: '3F44', 216 | SaberDance: '3E85', 217 | // BLM 218 | // SMN 219 | SummonBahamut: '1D03', 220 | FirebirdTrance: '40A5', 221 | Wyrmwave: '1D04', 222 | ScarletFlame: '4087', 223 | // RDM 224 | Jolt: '1D64', 225 | Verareo: '1D53', 226 | Verthunder: '1D51', 227 | Verfire: '1D56', 228 | Verstone: '1D57', 229 | Vercure: '1D5A', 230 | Verareo2: '408D', 231 | Verthunder2: '408C', 232 | Impact: '408E', 233 | ERiposte: '1D67', 234 | ERedoublement: '1D68', 235 | EZ: '1D69', 236 | EMoul: '1D6A', 237 | EReprise: '4090', 238 | Verflare: '1D65', 239 | Verholy: '1D66', 240 | Scorch: '4092', 241 | }; 242 | //=================// 243 | // JOBS 244 | //=================// 245 | var jobIds = { 246 | 37: 'GNB', 247 | 33: 'AST', 248 | 19: 'PLD', 249 | 21: 'WAR', 250 | 32: 'DRK', 251 | 28: 'SCH', 252 | 24: 'WHM', 253 | 23: 'BRD', 254 | 22: 'DRG', 255 | 27: 'SMN', 256 | 34: 'SAM', 257 | 25: 'BLM', 258 | 35: 'RDM', 259 | 31: 'MCH', 260 | 38: 'DNC', 261 | 30: 'NIN', 262 | 20: 'MNK', 263 | 36: 'BLU' 264 | }; 265 | 266 | export {jobIds, actionIds, buffIds} 267 | -------------------------------------------------------------------------------- /js/general/init.js: -------------------------------------------------------------------------------- 1 | async function init(onInit) { 2 | let combat = (await callOverlayHandler({ call: 'getCombatants' })).combatants; 3 | if(combat.length > 0) { 4 | onInit((combat[0].ID).toString(16).toUpperCase(), combat[0].Job); 5 | } 6 | else { 7 | setTimeout(function() {init(onInit);}, 1000) // retry every second 8 | } 9 | } 10 | 11 | var logFunctions = {} 12 | function onLog(line){ 13 | switch(line[0]){ 14 | case '03': 15 | logFunctions.onBindPet(line[6].toUpperCase(), line[2], line[3]); 16 | break; 17 | case "21": 18 | logFunctions.onAction(line[2], line[4], line[5], line[6], false); 19 | break; 20 | case "22": 21 | logFunctions.onAction(line[2], line[4], line[5], line[6], true); 22 | break; 23 | case "26": 24 | logFunctions.onGainBuff(line[5], line[7], line[2], parseFloat(line[4]), line[3]); 25 | break; 26 | case "30": 27 | logFunctions.onLoseBuff(line[5], line[7], line[2], line[3]); 28 | break; 29 | case "31": 30 | var jobId = parseInt(line[3].substr(line[3].length - 2,2),16); 31 | logFunctions.onJobChange(line[2], jobId) 32 | break; 33 | case "33": 34 | if(line[3] === '40000010') { logFunctions.onWipe(); } // on wipe 35 | break; 36 | } 37 | } 38 | 39 | function setup( 40 | onAction, 41 | onGainBuff, 42 | onLoseBuff, 43 | onJobChange, 44 | onBindPet, 45 | onWipe, 46 | 47 | onPlayerChange, 48 | onZoneChange, 49 | onPartyChange, 50 | onInit 51 | ){ 52 | logFunctions.onAction = onAction; 53 | logFunctions.onGainBuff = onGainBuff; 54 | logFunctions.onLoseBuff = onLoseBuff; 55 | logFunctions.onJobChange = onJobChange; 56 | logFunctions.onBindPet = onBindPet; 57 | logFunctions.onWipe = onWipe; 58 | 59 | addOverlayListener('LogLine', (data) => { 60 | onLog(data.line); 61 | }); 62 | addOverlayListener('ChangePrimaryPlayer', (data) => { 63 | onPlayerChange((data.charID).toString(16).toUpperCase()); 64 | }); 65 | addOverlayListener('ChangeZone', (data) => { 66 | onZoneChange(data.zoneID); 67 | }); 68 | addOverlayListener('PartyChanged', (data) => { 69 | onPartyChange(data.party); 70 | }); 71 | document.addEventListener('onOverlayStateUpdate', (e) => { 72 | let docClassList = document.documentElement.classList; 73 | if (e.detail.isLocked) 74 | docClassList.add('locked'); 75 | else 76 | docClassList.remove('locked'); 77 | }); 78 | startOverlayEvents(); 79 | 80 | init(onInit); 81 | } 82 | 83 | export {setup} -------------------------------------------------------------------------------- /test_webserver.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var app = express(); 3 | 4 | app.use('/css', express.static('css')) 5 | app.use('/js', express.static('js')) 6 | app.use('/img', express.static('img')) 7 | app.use('/glow', express.static('glow')) 8 | app.use('/general', express.static('general')) 9 | 10 | app.get('/index.html', (req, res)=>{res.sendFile('index.html', { root: __dirname });}); 11 | app.get('/config.html', (req, res)=>{res.sendFile('config.html', { root: __dirname });}); 12 | app.get('/buffs.html', (req, res)=>{res.sendFile('buffs.html', { root: __dirname });}); 13 | app.listen(8080, function() 14 | { 15 | }); --------------------------------------------------------------------------------