From 2be77d6f2df236c522a7adbd83aae807f3d4596b Mon Sep 17 00:00:00 2001 From: Helen Chong <119173961+helenclx@users.noreply.github.com> Date: Fri, 23 Jun 2023 02:05:23 +0800 Subject: [PATCH] Rewrote the layout of the entire website --- about/index.html | 44 +- articles/index.html | 42 +- changelog/2022.html | 286 ++++--- changelog/2023-redesign.html | 73 -- changelog/changelog.css | 10 - changelog/index.html | 303 ++++--- changelog/layouts.html | 59 +- changelog/updates/2023-redesign.html | 71 ++ components/footer.js | 15 + components/header.js | 47 ++ components/navbar.js | 66 ++ featured/featured.css | 12 - featured/index.html | 44 +- .../kotor2-modder-interview-ars-technica.html | 79 +- .../lgbtq-booklet-interview-misi-bawang.html | 104 ++- home.html | 80 +- links/index.html | 58 +- main.css | 686 ++++++++++----- main.js | 63 -- mycreations/index.html | 44 +- mycreations/mycreations.css | 21 - mymods/index.html | 47 +- mymods/kotor1mods/index.html | 338 ++++---- mymods/kotor2mods/index.html | 430 +++++----- mymods/mod-filter.js | 64 +- mymods/mymods.css | 42 +- playlists/index.html | 64 +- playlists/playlists.css | 21 - ...ti-harry-potter-jk-rowling-masterlist.html | 114 ++- resources/index.html | 61 +- shrines/asummersend/asummersend.css | 794 +++++++++++------- shrines/asummersend/components/footer.js | 15 + shrines/asummersend/components/header.js | 27 + shrines/asummersend/components/navbar.js | 66 ++ .../asummersend/components/sidebar-content.js | 21 + shrines/asummersend/gallery.html | 98 +-- shrines/asummersend/index.html | 124 ++- shrines/asummersend/playlists.html | 162 ++-- shrines/asummersend/trivia.html | 154 ++-- shrines/index.html | 41 +- shrines/shrine.js | 28 - .../articles/arren-kae-kreia-theory.html | 72 +- .../articles/handmaiden-sisters-mother.html | 82 +- shrines/starwarskotor/articles/index.html | 79 +- .../juhani-hostility-towards-canderous.html | 98 ++- .../articles/juhani-lesbian-evidence.html | 110 ++- shrines/starwarskotor/components/footer.js | 15 + shrines/starwarskotor/components/header.js | 26 + shrines/starwarskotor/components/navbar.js | 66 ++ .../components/sidebar-content.js | 14 + shrines/starwarskotor/guides/index.html | 102 +-- .../guides/kotor-juhani-romance-guide.html | 341 ++++---- .../guides/kotor-redeeming-bastila-guide.html | 251 +++--- .../kotor-sandral-matale-feud-guide.html | 181 ++-- shrines/starwarskotor/index.html | 72 +- shrines/starwarskotor/resources/index.html | 139 ++- .../kotor-same-gender-romance-mods.html | 378 ++++----- ...-female-exile-recruit-handmaiden-mods.html | 102 ++- .../tslrcm-m478ep-modules-music.html | 78 +- shrines/starwarskotor/starwarskotor.css | 790 ++++++++++------- shrines/starwarskotor/starwarskotor.js | 21 - sitemap.html | 157 ++-- 62 files changed, 4385 insertions(+), 3707 deletions(-) delete mode 100644 changelog/2023-redesign.html delete mode 100644 changelog/changelog.css create mode 100644 changelog/updates/2023-redesign.html create mode 100644 components/footer.js create mode 100644 components/header.js create mode 100644 components/navbar.js delete mode 100644 featured/featured.css delete mode 100644 main.js delete mode 100644 mycreations/mycreations.css delete mode 100644 playlists/playlists.css create mode 100644 shrines/asummersend/components/footer.js create mode 100644 shrines/asummersend/components/header.js create mode 100644 shrines/asummersend/components/navbar.js create mode 100644 shrines/asummersend/components/sidebar-content.js delete mode 100644 shrines/shrine.js create mode 100644 shrines/starwarskotor/components/footer.js create mode 100644 shrines/starwarskotor/components/header.js create mode 100644 shrines/starwarskotor/components/navbar.js create mode 100644 shrines/starwarskotor/components/sidebar-content.js delete mode 100644 shrines/starwarskotor/starwarskotor.js diff --git a/about/index.html b/about/index.html index 1b784a3d..16d68db6 100644 --- a/about/index.html +++ b/about/index.html @@ -1,5 +1,5 @@ - + @@ -12,33 +12,28 @@ - + + - + + + About | Leilukin's Hub + +
+ -
-
- -
- -
- - - -
-

About

+
+

About

The Site

a website button with Penelope the cat, the mascot of Neocities, and the text "hosted by neocities" @@ -49,7 +44,7 @@

The Site Owner

- +

You can call me Leilukin. I am a Malaysian Chinese non-binary lesbian born in the early 90s. My pronouns are they/she/他/她.

@@ -83,11 +78,12 @@

+
-
- -
-
-
+ +
+ \ No newline at end of file diff --git a/articles/index.html b/articles/index.html index 6f32b44a..312c4f7a 100644 --- a/articles/index.html +++ b/articles/index.html @@ -1,5 +1,5 @@ - + @@ -12,37 +12,37 @@ - + + - + + + Articles | Leilukin's Hub + +
+ -
-
- -
- -
- - - -
+
+

Articles

-
- +

Work in progress

+
-
-
+ + +
+ \ No newline at end of file diff --git a/changelog/2022.html b/changelog/2022.html index a6b16ff9..d2437138 100644 --- a/changelog/2022.html +++ b/changelog/2022.html @@ -1,5 +1,5 @@ - + @@ -12,188 +12,184 @@ - - + + - + + + Website Changelog Archive: 2022 | Leilukin's Hub + +
+ -
-
- -
+
+

Website Changelog

-
+

Archive: Latest | 2022 | Website Layouts

- - -
-

Website Changelog

+ December 29, 2022: + -

Archive: Latest | 2022 | Website Layouts

+ December 19, 2022: +
    +
  • Added new resource, Star Wars: Knights of the Old Republic save files, to my resources page: KotOR 2 Light Side Female Saves with The Sith Lords Restored Content Mod and PartySwap.
  • +
- December 29, 2022: - + December 16, 2022: + - December 19, 2022: -
    -
  • Added new resource, Star Wars: Knights of the Old Republic save files, to my resources page: KotOR 2 Light Side Female Saves with The Sith Lords Restored Content Mod and PartySwap.
  • -
+ December 11, 2022: + - December 16, 2022: - + December 8, 2022: + - December 11, 2022: - + November 27, 2022: + - December 8, 2022: - + November 24, 2022: + - November 27, 2022: - + November 22, 2022: + - November 24, 2022: - + November 16, 2022: + - November 22, 2022: - + November 12, 2022: + - November 16, 2022: - + November 9, 2022: + - November 12, 2022: - - - November 9, 2022: - - - October 23, 2022: - + October 23, 2022: + - October 22, 2022: - + October 22, 2022: + - October 17, 2022: -
    -
  • Added new resource, Star Wars: Knights of the Old Republic save files, to my resources page: Light Side Female Saves with KOTOR 1 Community Patch and All Romances.
  • -
+ October 17, 2022: +
    +
  • Added new resource, Star Wars: Knights of the Old Republic save files, to my resources page: Light Side Female Saves with KOTOR 1 Community Patch and All Romances.
  • +
- October 16, 2022: - + October 16, 2022: + - October 11, 2022: - + October 11, 2022: + - October 6, 2022: - + October 6, 2022: + - October 5, 2022: - + October 5, 2022: + - October 4, 2022: - + October 4, 2022: + - October 3, 2022: - + October 3, 2022: + - October 1, 2022: - + October 1, 2022: + - September 30, 2022: - + September 30, 2022: + - September 25, 2022: -
    -
  • Added a button to my Buy Me a Coffee page on the home page and About page.
  • -
  • The top banner on each page is now linked to the home page.
  • -
+ September 25, 2022: +
    +
  • Added a button to my Buy Me a Coffee page on the home page and About page.
  • +
  • The top banner on each page is now linked to the home page.
  • +
- September 20, 2022: - + September 20, 2022: + - September 16, 2022: -
    -
  • Adjusted the font size, line and paragraph spacing of the website to make it easier to read and more responsive.
  • -
  • Redesigned the buttons on the website.
  • -
+ September 16, 2022: +
    +
  • Adjusted the font size, line and paragraph spacing of the website to make it easier to read and more responsive.
  • +
  • Redesigned the buttons on the website.
  • +
- September 12, 2022: - + September 12, 2022: + - September 11, 2022: -
    -
  • Website launch.
  • -
-
- -
-
-
+ September 11, 2022: + + + + +
+ \ No newline at end of file diff --git a/changelog/2023-redesign.html b/changelog/2023-redesign.html deleted file mode 100644 index 855b8382..00000000 --- a/changelog/2023-redesign.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - 2023 New Year Redesign of Leilukin's Hub | Leilukin's Hub - - - -
-
- -
- -
- - - -
-

2023 New Year Redesign of Leilukin's Hub

- - A screenshot of Leilukin's Hub home page, with its layout design released on January 26, 2023 - -

In light of a new year, the Leilukin's Hub website has received a new design on January 26. 2023!

- -

I have wanted to rewrite and redesign this site after learning HTML and CSS more and getting better at writing those languages. With Visual Studio Code and the Live Server extension installed, I have also finally found a good workflow for me to write and test HTML and CSS.

- -

Looking at other Neocities websites have also given me more ideas in enhancing my own website. Special thanks to sadgrl.online, whose various web building resources, including the Layout Builder, have helped tremendously in redesigning this site.

- -

With this 2023 new year redesign of this website, the index page, which is for when you visit the link leilukin.neocities.org, you will be presented with a very simple page, but when you click the "Enter" button to enter, you will be brought to my website's home page, and can start properly browsing my website, and enjoying the new design!

- -

Highlights of the 2023 New Year redesign of Leilukin's Hub:

-
    -
  • Uses purple colour schemes primarily, as purple is one of my favourite colours.
  • -
  • Each page category has their own CSS file, allowing me to give certain pages unique elements. However, the site still has a main CSS file to be imported into CSS files of other pages, saving me time to edit the CSS files one by one just to tweak a certain part of the main layout design.
  • -
  • Background image added.
  • -
  • Sidebars added, with the contents being sticky, so you can still see them while scrolling through.
  • -
  • The navigation links are now on the right sidebar. Previously, the navigation links of my website are in a row placed at the header section.
  • -
  • The table of contents of some of my pages is now placed on the left sidebar.
  • -
  • The website changelog page adds archives for the layout designs of this site and old changelog.
  • -
  • My video game mod pages have added a filter function, so you can use buttons to view a specific category of mods.
  • -
- -

After spending many hours on this site redesign, I am very pleased with how it turns out. Hope you enjoy it!

-
- -
- -
- - \ No newline at end of file diff --git a/changelog/changelog.css b/changelog/changelog.css deleted file mode 100644 index 16c342a9..00000000 --- a/changelog/changelog.css +++ /dev/null @@ -1,10 +0,0 @@ -@import url("/main.css"); - -.changelist { - line-height: 1.5em; -} - -.changelist li { - margin-top: 0; - padding-bottom: 0.5em; -} \ No newline at end of file diff --git a/changelog/index.html b/changelog/index.html index 227dc93a..7887dba7 100644 --- a/changelog/index.html +++ b/changelog/index.html @@ -1,5 +1,5 @@ - + @@ -12,173 +12,168 @@ - - + + - + + + Website Changelog | Leilukin's Hub + +
+ -
-
- -
+
+

Website Changelog

-
+
+

Archive: Latest | 2022 | Website Layouts

+
- + June 15, 2023: +
    +
  • Removed unnecessary CSS files.
  • +
  • Refactored the index page's HTML and CSS.
  • +
-
-

Website Changelog

+ June 11, 2023: + -
-

Archive: Latest | 2022 | Website Layouts

-
- - June 15, 2023: -
    -
  • Removed unnecessary CSS files.
  • -
  • Refactored the index page's HTML and CSS.
  • -
- - June 11, 2023: - - - May 9, 2023: - - - May 5, 2023: -
    -
  • Modify the web application manifest of this site to make this site look more like a mobile app when added to a mobile device's home screen.
  • -
- - April 22, 2023: -
    -
  • Switch the content of the left and right sidebars. Navigation links are now on the left sidebar, while the table of contents on the right sidebar.
  • -
  • Proper indentation of the HTML codes.
  • -
- - March 27, 2023: - - - March 22, 2023: -
    -
  • Added the dates of publication of articles.
  • -
- - March 20, 2023: -
    -
  • Tweaked the format of the dates of publication and update of articles.
  • -
- - March 19, 2023: - - - March 8, 2023: - - - March 2, 2023: - - - February 18, 2023: - - - February 17, 2023: - - - February 16, 2023: - - - February 10, 2023: - - - February 7, 2023: - - - January 31, 2023: - - - January 30, 2023: - - - January 28, 2023: -
    -
  • Added a Links page.
  • -
  • Move the link to changelog to the sidebar.
  • -
  • Due to these new changes to the navigation links on the sidebar, I wrote a JavaScript file to dynamically generate the contents on the right sidebar and the footer across multiple pages on this site.
  • -
  • Adjust the line spacing and the spacing between the listed items on the changelog page.
  • -
  • Made adjustments to the relative paths in the HTML files, to ensure this site's favicons will show up on the title bar by default.
  • -
  • Fixed the issue of the page style not applied to the Not Found page.
  • -
  • Updated the About page.
  • -
  • Update the Page Not Found page.
  • -
- - January 26, 2023: - - - January 25, 2023: - - -
+ May 9, 2023: + -
-
-
+ May 5, 2023: + + + April 22, 2023: + + + March 27, 2023: + + + March 22, 2023: + + + March 20, 2023: + + + March 19, 2023: + + + March 8, 2023: + + + March 2, 2023: + + + February 18, 2023: + + + February 17, 2023: + + + February 16, 2023: + + + February 10, 2023: + + + February 7, 2023: + + + January 31, 2023: + + + January 30, 2023: + + + January 28, 2023: + + + January 26, 2023: + + + January 25, 2023: + + + + +
+ \ No newline at end of file diff --git a/changelog/layouts.html b/changelog/layouts.html index fc7f727f..8f15246a 100644 --- a/changelog/layouts.html +++ b/changelog/layouts.html @@ -1,5 +1,5 @@ - + @@ -12,50 +12,45 @@ - - + + - + + + Website Layout Archive | Leilukin's Hub + +
+ -
-
- -
+
+

Website Layout Archive

-
- - +
+

Archive: Latest | 2022 | Website Layouts

+
-
-

Website Layout Archive

+

January 26, 2023

+ A screenshot of Leilukin's Hub home page, with its layout design released on January 26, 2023 -
-

Archive: Latest | 2022 | Website Layouts

-
+

September 11, 2023 (Site Launch)

+ A screenshot of Leilukin's Hub home page, with its layout design released on the site's launch on September 11, 2023 + A screenshot of Leilukin's Hub website's My Creation page, with its layout design released on the site's launch on September 11, 2023 +
-

January 26, 2023

- A screenshot of Leilukin's Hub home page, with its layout design released on January 26, 2023 - -

September 11, 2023 (Site Launch)

- A screenshot of Leilukin's Hub home page, with its layout design released on the site's launch on September 11, 2023 - A screenshot of Leilukin's Hub website's My Creation page, with its layout design released on the site's launch on September 11, 2023 - -
- - - - + + + \ No newline at end of file diff --git a/changelog/updates/2023-redesign.html b/changelog/updates/2023-redesign.html new file mode 100644 index 00000000..bfa2f351 --- /dev/null +++ b/changelog/updates/2023-redesign.html @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Website Layout Archive | Leilukin's Hub + + + +
+ + +
+

2023 New Year Redesign of Leilukin's Hub

+ +

Published on January 26, 2023

+ + A screenshot of Leilukin's Hub home page, with its layout design released on January 26, 2023 + +

In light of a new year, the Leilukin's Hub website has received a new design on January 26. 2023!

+ +

I have wanted to rewrite and redesign this site after learning HTML and CSS more and getting better at writing those languages. With Visual Studio Code and the Live Server extension installed, I have also finally found a good workflow for me to write and test HTML and CSS.

+ +

Looking at other Neocities websites have also given me more ideas in enhancing my own website. Special thanks to sadgrl.online, whose various web building resources, including the Layout Builder, have helped tremendously in redesigning this site.

+ +

With this 2023 new year redesign of this website, the index page, which is for when you visit the link leilukin.neocities.org, you will be presented with a very simple page, but when you click the "Enter" button to enter, you will be brought to my website's home page, and can start properly browsing my website, and enjoying the new design!

+ +

Highlights of the 2023 New Year redesign of Leilukin's Hub:

+ + +

After spending many hours on this site redesign, I am very pleased with how it turns out. Hope you enjoy it!

+
+ + +
+ + + \ No newline at end of file diff --git a/components/footer.js b/components/footer.js new file mode 100644 index 00000000..06cbe0fd --- /dev/null +++ b/components/footer.js @@ -0,0 +1,15 @@ +class Footer extends HTMLElement { + constructor() { + super(); + } + + connectedCallback() { + this.innerHTML = ` + + `; + } +} + +customElements.define('footer-component', Footer); \ No newline at end of file diff --git a/components/header.js b/components/header.js new file mode 100644 index 00000000..205e4946 --- /dev/null +++ b/components/header.js @@ -0,0 +1,47 @@ +class Header extends HTMLElement { + constructor() { + super(); + } + + connectedCallback() { + this.innerHTML = ` +
+ +
+ + `; + } +} + +customElements.define('header-component', Header); \ No newline at end of file diff --git a/components/navbar.js b/components/navbar.js new file mode 100644 index 00000000..b8087094 --- /dev/null +++ b/components/navbar.js @@ -0,0 +1,66 @@ +/* FOR TOGGLING MENUS ON THE NAVBAR */ +const navToggle = document.querySelector(".nav__toggle"); +const navMenu = document.querySelector(".nav__menu"); +const navItems = document.querySelectorAll(".nav__item"); + +/* Toggle mobile navMenu */ +function toggleMenu() { + if (navMenu.classList.contains("nav__active")) { + navMenu.classList.remove("nav__active"); + navToggle.querySelector("a").innerHTML = ""; + } else { + navMenu.classList.add("nav__active"); + navToggle.querySelector("a").innerHTML = ""; + } +} + +/* Activate Submenu */ +function toggleItem() { + if (this.classList.contains("nav__submenu-active")) { + this.classList.remove("nav__submenu-active"); + } else if (navMenu.querySelector(".nav__submenu-active")) { + navMenu.querySelector(".nav__submenu-active").classList.remove("nav__submenu-active"); + this.classList.add("nav__submenu-active"); + } else { + this.classList.add("nav__submenu-active"); + } +} + +/* Close Submenu From Anywhere */ +function closeSubmenu(e) { + if (navMenu.querySelector(".nav__submenu-active")) { + let isClickInside = navMenu + .querySelector(".nav__submenu-active") + .contains(e.target); + + if (!isClickInside && navMenu.querySelector(".nav__submenu-active")) { + navMenu.querySelector(".nav__submenu-active").classList.remove("nav__submenu-active"); + } + } +} + +/* Event Listeners */ +navToggle.addEventListener("click", toggleMenu, false); +for (let item of navItems) { + if (item.querySelector(".nav__submenu")) { + item.addEventListener("click", toggleItem, false); + } + item.addEventListener("keypress", toggleItem, false); +} +document.addEventListener("click", closeSubmenu, false); + + +/* FOR MAKING THE NAVBAR STICKY */ +const header = document.querySelector("header"); +const navbar = document.querySelector("nav"); + + +window.addEventListener("scroll", e => { + const scrollPos = window.scrollY || document.documentElement.scrollTop; + const stickyLine = header.scrollHeight - navbar.scrollHeight; + if (scrollPos > stickyLine) { + navbar.classList.add("sticky-nav"); + } else { + navbar.classList.remove("sticky-nav"); + } +}); \ No newline at end of file diff --git a/featured/featured.css b/featured/featured.css deleted file mode 100644 index 1f70ae39..00000000 --- a/featured/featured.css +++ /dev/null @@ -1,12 +0,0 @@ -@import url("/main.css"); - -blockquote { - margin: 1.25rem 0; - padding: 0 1.25rem; - border-inline-start: 0.1875rem solid #999999; -} - -#source { - font-size: 1.6rem; - font-weight: bold; -} \ No newline at end of file diff --git a/featured/index.html b/featured/index.html index 26921beb..8be9a5db 100644 --- a/featured/index.html +++ b/featured/index.html @@ -1,5 +1,5 @@ - + @@ -12,34 +12,28 @@ - - + + - + + + Featured | Leilukin's Hub + +
+ -
-
- -
- - -
-
+ + +
+ \ No newline at end of file diff --git a/featured/kotor2-modder-interview-ars-technica.html b/featured/kotor2-modder-interview-ars-technica.html index feb02224..7081c29a 100644 --- a/featured/kotor2-modder-interview-ars-technica.html +++ b/featured/kotor2-modder-interview-ars-technica.html @@ -1,71 +1,64 @@ - + - + - - + + - + + + KotOR 2 Modders Interview on Ars Technica | Featured | Leilukin's Hub + +
+ -
-
- -
- -
- - - -
-

The modders who spent 15 years fixing Knights of the Old Republic 2 @ Ars Technica

+
+

The modders who spent 15 years fixing Knights of the Old Republic 2 @ Ars Technica

-

On December 6, 2019, to celebrate the 15th anniversary of Star Wars: Knights of the Old Republic 2, Ars Technica has published an article about the modding community of KotOR 2. I was interviewed by the author of this article, Austin Taylor, for my same-gender romance mods for KotOR 2.

- -
-

Romance? Yes, Please

- -

Unlike the first KOTOR, there are no same-gender romance options in Obsidian’s sequel. Leilukin, a modder on the Nexus Forums, has focused much of her modding work since 2016 on fixing that oversight.

- -

“As much as I love KOTOR2, I have always been frustrated by the fact that the romance content with the companions and certain NPCs… are all heterosexual,” she said.

- -

Some of these fixes are relatively simple. In vanilla KOTOR2, for instance, only male characters can recruit The Handmaiden upon leaving Telos, while female characters are the only ones who can recruit The Disciple during the main quest on Dantooine. By default, Leiluken’s mod simply flips that gender check, so only male characters can recruit the Disciple and only females can recruit The Handmaiden.

- -

But Leiluken’s mod goes further than that. The most challenging part, she said, was finding every reference to the Exile’s gender throughout the game spoken by gender-specific party members, then “add[ing] extra dialogue that replaces the pronouns and splic[ing] voiceover files myself.”

- -

To recruit both The Handmaiden and The Disciple at the same time, players can install the PartySwap mod by DarthTyren. That mod was initially lacking the same-gender romance dialogue from Leiluken’s mod. But Leiluken has since added a compatibility installation option, letting the two mods now work together and fully opening up the same-gender romance options of your dreams.

-
+

On December 6, 2019, to celebrate the 15th anniversary of Star Wars: Knights of the Old Republic 2, Ars Technica has published an article about the modding community of KotOR 2. I was interviewed by the author of this article, Austin Taylor, for my same-gender romance mods for KotOR 2.

+ +
+

Romance? Yes, Please

-

Read the full article on Ars Technica here:

+

Unlike the first KOTOR, there are no same-gender romance options in Obsidian’s sequel. Leilukin, a modder on the Nexus Forums, has focused much of her modding work since 2016 on fixing that oversight.

+ +

“As much as I love KOTOR2, I have always been frustrated by the fact that the romance content with the companions and certain NPCs… are all heterosexual,” she said.

+ +

Some of these fixes are relatively simple. In vanilla KOTOR2, for instance, only male characters can recruit The Handmaiden upon leaving Telos, while female characters are the only ones who can recruit The Disciple during the main quest on Dantooine. By default, Leiluken’s mod simply flips that gender check, so only male characters can recruit the Disciple and only females can recruit The Handmaiden.

+ +

But Leiluken’s mod goes further than that. The most challenging part, she said, was finding every reference to the Exile’s gender throughout the game spoken by gender-specific party members, then “add[ing] extra dialogue that replaces the pronouns and splic[ing] voiceover files myself.”

-

The modders who spent 15 years fixing Knights of the Old Republic 2

+

To recruit both The Handmaiden and The Disciple at the same time, players can install the PartySwap mod by DarthTyren. That mod was initially lacking the same-gender romance dialogue from Leiluken’s mod. But Leiluken has since added a compatibility installation option, letting the two mods now work together and fully opening up the same-gender romance options of your dreams.

+
+ +

Read the full article on Ars Technica here:
+ The modders who spent 15 years fixing Knights of the Old Republic 2

+
-
- -
-
-
+ +
+ \ No newline at end of file diff --git a/featured/lgbtq-booklet-interview-misi-bawang.html b/featured/lgbtq-booklet-interview-misi-bawang.html index 9fec78a9..7109b283 100644 --- a/featured/lgbtq-booklet-interview-misi-bawang.html +++ b/featured/lgbtq-booklet-interview-misi-bawang.html @@ -1,85 +1,81 @@ - + - + + - - + + - + + + LGBTQ+ Booklet Artist Interview from MISI:Bawang | Featured | Leilukin's Hub + +
+ -
-
- -
+
+

Floating in a Sky Full of Pride: LGBTQ+ Booklet Artist Interview from MISI:Bawang

+ +

(This article is also available on my art blog on Tumblr)

-
+

Floating in a Sky Full of Pride, the LGBTQ+ booklet of MISI:Bawang, a Malaysian digital booklet project, has been released on Valentine’s Day 2022. Since my submitted art piece, Life of a Bee with Pride, has been selected to be included in the booklet, I had received the honour of being interviewed by MISI:Bawang to share my personal experience with my LGBTQ+ identity, favourite queer art/media, and a ✨ special message to the Malaysian LGBTQ+ community. 🏳‍🌈

- - -
-

Floating in a Sky Full of Pride: LGBTQ+ Booklet Artist Interview from MISI:Bawang

- -

(This article is also available on my art blog on Tumblr)

+ First slide of MISI:Bawang's interview with me for their LGBTQ+ booklet
+ Second slide of MISI:Bawang's interview with me for their LGBTQ+ booklet
+ Third slide of MISI:Bawang's interview with me for their LGBTQ+ booklet
+ +

MISI:Bawang has shared their interview with me and other Malaysian LGBTQ+ artists and authors who submitted their work to the booklet on Twitter and Instagram. Here are the Twitter thread and Instagram post that include my interview.

+ +

Text version of my interview below:

+ +

“What was your experience discovering your LGBTQ+ identity?”

+
+

The first clear signs of my attraction to women I was aware of started from my secondary school days. However, due to lack of knowledge and awareness of same-gender attraction and identities, I brushed it off as a teenage phase.

-

Floating in a Sky Full of Pride, the LGBTQ+ booklet of MISI:Bawang, a Malaysian digital booklet project, has been released on Valentine’s Day 2022. Since my submitted art piece, Life of a Bee with Pride, has been selected to be included in the booklet, I had received the honour of being interviewed by MISI:Bawang to share my personal experience with my LGBTQ+ identity, favourite queer art/media, and a ✨ special message to the Malaysian LGBTQ+ community. 🏳‍🌈

- - First slide of MISI:Bawang's interview with me for their LGBTQ+ booklet
- Second slide of MISI:Bawang's interview with me for their LGBTQ+ booklet
- Third slide of MISI:Bawang's interview with me for their LGBTQ+ booklet
- -

MISI:Bawang has shared their interview with me and other Malaysian LGBTQ+ artists and authors who submitted their work to the booklet on Twitter and Instagram. Here are the Twitter thread and Instagram post that include my interview.

- -

Text version of my interview below:

- -

“What was your experience discovering your LGBTQ+ identity?”

-
-

The first clear signs of my attraction to women I was aware of started from my secondary school days. However, due to lack of knowledge and awareness of same-gender attraction and identities, I brushed it off as a teenage phase.

+

However, that changed as I started becoming active on Tumblr since I was 19. At first, I joined Tumblr to connect with people who share my interest in Star Wars and BioWare games. This led me to get to know LGBTQ+ from different parts of the world, which is especially helped by the fact that BioWare games are known for LGBTQ+ representation, therefore LGBTQ+ people are visible in BioWare player communities. This started my journey of questioning my sexuality and gender.

-

However, that changed as I started becoming active on Tumblr since I was 19. At first, I joined Tumblr to connect with people who share my interest in Star Wars and BioWare games. This led me to get to know LGBTQ+ from different parts of the world, which is especially helped by the fact that BioWare games are known for LGBTQ+ representation, therefore LGBTQ+ people are visible in BioWare player communities. This started my journey of questioning my sexuality and gender.

+

As I continue to stay on Tumblr, my engagement with LGBTQ+ people on Tumblr had gone beyond shared interest in entertainment media. Through Tumblr, I discovered many LGBTQ+ resources that helped me figure out my identity. As a result, at the age of 22, I eventually realised that I am a non-binary lesbian.

+
+ +

“Are there any LGBTQ+ related art (books, films, etc) that gives you comfort, inspiration, and strength? If so, tell us about them!”

+
+

A Summer’s End - Hong Kong 1986 is the LGBTQ+ art that gives me comfort, inspiration and strength the most. It is an indie visual novel developed by the Asian Canadian studio Oracle and Bone. The story is about a lesbian romance that takes place in Hong Kong in the year of 1986.

-

As I continue to stay on Tumblr, my engagement with LGBTQ+ people on Tumblr had gone beyond shared interest in entertainment media. Through Tumblr, I discovered many LGBTQ+ resources that helped me figure out my identity. As a result, at the age of 22, I eventually realised that I am a non-binary lesbian.

-
- -

“Are there any LGBTQ+ related art (books, films, etc) that gives you comfort, inspiration, and strength? If so, tell us about them!”

-
-

A Summer’s End - Hong Kong 1986 is the LGBTQ+ art that gives me comfort, inspiration and strength the most. It is an indie visual novel developed by the Asian Canadian studio Oracle and Bone. The story is about a lesbian romance that takes place in Hong Kong in the year of 1986.

+

A Summer’s End is the LGBTQ+ art I relate to most because it strongly resonates with my identity as a Cantonese-speaking Chinese lesbian who has grown up with Hong Kong media. I relate to both the protagonists, Michelle and Sam, as their characters represent different parts of my life as a Chinese lesbian. I also relate to the story’s theme of hoping for the future of our homeland despite the political uncertainties.

+
+ +

“Do you have a message to LGBTQ+ community living in Malaysia?”

+
+

First and foremost, you are not alone. LGBTQ+ Malaysians have a community that continues to survive despite the hardship we have to face due to society’s bigotry and misunderstanding of LGBTQ+ people and identities.

-

A Summer’s End is the LGBTQ+ art I relate to most because it strongly resonates with my identity as a Cantonese-speaking Chinese lesbian who has grown up with Hong Kong media. I relate to both the protagonists, Michelle and Sam, as their characters represent different parts of my life as a Chinese lesbian. I also relate to the story’s theme of hoping for the future of our homeland despite the political uncertainties.

-
- -

“Do you have a message to LGBTQ+ community living in Malaysia?”

-
-

First and foremost, you are not alone. LGBTQ+ Malaysians have a community that continues to survive despite the hardship we have to face due to society’s bigotry and misunderstanding of LGBTQ+ people and identities.

+

I hope the LGBTQ+ community in Malaysia will continue to grow and thrive, and more LGBTQ+ Malaysians who are still questioning and feeling lonely could be reached out. Let us work towards a future where we could live freely.

+
+
-

I hope the LGBTQ+ community in Malaysia will continue to grow and thrive, and more LGBTQ+ Malaysians who are still questioning and feeling lonely could be reached out. Let us work towards a future where we could live freely.

- -
- - - - + + + \ No newline at end of file diff --git a/home.html b/home.html index e144edeb..7cc7ab13 100644 --- a/home.html +++ b/home.html @@ -1,80 +1,88 @@ - + - + + - + + + Home | Leilukin's Hub + +
+ -
-
- -
- -
- - - -
+
+

Welcome!

Hello! You can call me Leilukin. Welcome to my website!

-

This hub is my own personal corner on the internet. Enjoy your stay!

+
-

Updates

-
+
+

Updates

+
June 15, 2023:
  • Removed unnecessary CSS files.
  • Refactored the index page's HTML and CSS.
+ View all site changelog +
-

Always Proud

- A website button of the 2018 Progress Flag - A website button of the 9 stripe rainbow flag - A website button of the lesbian pride flag - A website button of the non-binary pride flag - A website button of the demigirl pride flag - A website button of the agender pride flag - A website button of the bigender pride flag +
+

Always Proud

+
+ A website button of the 2018 Progress Flag + A website button of the 9 stripe rainbow flag + A website button of the lesbian pride flag + A website button of the non-binary pride flag + A website button of the demigirl pride flag + A website button of the agender pride flag + A website button of the bigender pride flag +

Credit to Dime for these pride buttons!

+
-

Webrings

-
left arrow queer coded webring right arrow
- -

Support Me

+
+

Webrings

+
left arrow queer coded webring right arrow
+
+ +
+

Support Me

If you enjoy my work, you can support me on Ko-Fi or Buy Me a Coffee:

-
- +
-
-
+ +
+ \ No newline at end of file diff --git a/links/index.html b/links/index.html index dfef2c66..da5cc42f 100644 --- a/links/index.html +++ b/links/index.html @@ -1,5 +1,5 @@ - + @@ -12,46 +12,50 @@ - + + - + + + Links | Leilukin's Hub + +
+ -
-
- -
- -
- - - -
+
+

Links

Webrings I Have Joined

-
left arrow queer coded webring right arrow
- -

Fanlistings I Have Joined

- A website button of a Star Wars: Knights of the Old Republic fanlisting - A website button of a Star Wars: Knights of the Old Republic 2 fanlisting - A website button of a Jedi fanlisting -
- +
left arrow queer coded webring right arrow
+ + +
+

Fanlistings I Have Joined

+ +
+ A website button of a Star Wars: Knights of the Old Republic fanlisting + A website button of a Star Wars: Knights of the Old Republic 2 fanlisting + A website button of a Jedi fanlisting +
+
-
-
+ + +
+ \ No newline at end of file diff --git a/main.css b/main.css index 98e8fea7..0e36afc3 100644 --- a/main.css +++ b/main.css @@ -1,10 +1,36 @@ :root { - --header-image: url('/assets/Leilukins-Hub-website-banner.png'); + --body-bg-color: #08031A; --body-bg-image: url('/assets/starsforever.gif'); - --content: #43256E; - --title-border: #d3aad5; - --code-bg: #241445; - --code-border: #82668f; + --body-font-color: #fceaff; + --content-bg-color: #3d2163; + + --main-heading-color: #ED64F5; + --sub-heading-color: #e8b86f; + --title-border-color: #d3aad5; + + --bold-font-color: #ff9933; + --link-color: #ED64F5; + --link-hover-color: #c355c9; + --quote-bg: #13092D; + --quote-border-color: #999999; + + --code-bg-color: #241445; + --code-border-color: #82668f; + + --link-btn-bg: #873eb5; + --link-btn-text: white; + --link-btn-hover: #241445; + + --header-bg-color: black; + --nav-bg: #222; + --nav-link: white; + --nav-submenu-active: #111; + --nav-item-hover: #ccc; + + --top-btn-bg: #251347; + --top-btn-icon: #d3aad5; + + --footer-bg: #13092D; } @font-face { @@ -13,7 +39,7 @@ font-weight: 125 950; font-stretch: 75% 125%; font-style: normal; - } +} @font-face { font-family: 'Nunito'; @@ -23,75 +49,459 @@ font-style: italic; } -html, -body { - scroll-behavior: smooth; -} - -body { - font-family: 'Nunito', Arial, sans-serif; - font-size: 1rem; /* 16px */ - margin: 0; - background-color: #08031A; - background-size: 4rem; - color: #fceaff; - background-image: var(--body-bg-image); - background-attachment: fixed; - line-height: 1.6; -} - -* { +/* CSS RESET */ +/* Box sizing rules */ +*, +*::before, +*::after { box-sizing: border-box; } +/* Remove default margin */ +body, +h1, +h2, +h3, +h4, +p, +figure, +blockquote, +dl, +dd { + margin: 0; +} + +/* Remove list styles on ul, ol elements with a list role, which suggests default styling will be removed */ +ul[role='list'], +ol[role='list'] { + list-style: none; +} + +/* Set core root defaults */ +html:focus-within { + scroll-behavior: smooth; +} + +/* Set core body defaults */ +body { + min-height: 100vh; + text-rendering: optimizeSpeed; + line-height: 1.5; +} + +/* A elements that don't have a class get default styles */ +a:not([class]) { + text-decoration-skip-ink: auto; +} + +/* Make images easier to work with */ +img, +picture { + max-width: 100%; + display: block; +} + +/* Inherit fonts for inputs and buttons */ +input, +button, +textarea, +select { + font: inherit; +} + +/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */ +@media (prefers-reduced-motion: reduce) { + html:focus-within { + scroll-behavior: auto; + } + + *, + *::before, + *::after { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + scroll-behavior: auto !important; + } +} + +/* STYLING BEGINS */ +body { + display: flex; + align-items: center; + flex-direction: column; + font-family: 'Nunito'; + color: var(--body-font-color); + background-color: var(--body-bg-color); + background-image: var(--body-bg-image); + background-attachment: fixed; +} + h1 { - color: #ED64F5; + color: var(--main-heading-color); +} + +h1 { + margin-bottom: 1.2rem; } h2, h3 { - color: #e8b86f; + color: var(--sub-heading-color); } h1 { font-size: 2.2rem; - border-bottom: 0.18rem solid var(--title-border); - padding-bottom: 0.5rem; -} - -h1:not(:first-child) { - padding-top: 2rem; + border-bottom: 0.18rem solid var(--title-border-color); } h2 { font-size: 1.7rem; } -strong { - color: #ff9933; +article h2, +article h3 { + margin-top: 1.5rem; } -span.monospace { +p { + padding: 0.5rem 0;; +} + +strong { + color: var(--bold-font-color); +} + +a { + font-weight: 700; + color: var(--link-color); +} + +a:hover { + color: var(--link-hover-color); +} + +blockquote { + margin: 1.5rem 0; + padding: 0.5rem 1rem; + border-inline-start: 0.1rem solid var(--main-heading-color); + background-color: var(--quote-bg); +} + +pre { + white-space: pre-wrap; + overflow-x: auto; +} + +/* HEADER */ +header { + width: 100vw; + max-height: 20rem; + background-color: var(--header-bg-color); + /* background: var(--header-img); */ + background-repeat: no-repeat; + background-size: auto; + background-position: center; + display: flex; + flex-direction: column; + justify-content: center; +} + +header img { + object-fit: contain; + height: 100%; +} + +/* NAVIGATION BAR */ +nav { + background: var(--nav-bg); + padding: 0 0.9rem; + width: 100%; + z-index: 999; +} + +nav a { + color: var(--nav-link); + text-decoration: none; + cursor: pointer; +} + +.nav__menu, +.nav__submenu { + list-style-type: none; + padding-left: 0; + margin: 0; +} + +.nav__title { + font-size: 20px; + padding: 0.2rem 0; +} + +.nav__item { + padding: 0.6rem; +} + +.nav__item a:hover, +.nav__item a:hover::after { + color: var(--nav-item-hover); +} + +/* Mobile nav__menu */ +.nav__menu { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; +} + +.nav__menu li a { + display: block; + padding: 0.9rem 0.8rem; +} + +.nav__menu li.nav__subitem a { + padding: 0.9rem; +} + +.nav__toggle { + order: 1; + font-size: 1.25rem; +} + +.nav__item { + order: 3; + width: 100%; + text-align: center; + display: none; +} + +.nav__active .nav__item { + display: block; +} + +/* nav__submenu up from mobile screens */ +.nav__submenu { + display: none; +} + +.nav__submenu-active .nav__submenu { + display: block; +} + +.nav__has-submenu i { + font-size: 0.75rem; +} + +.nav__has-submenu > a::after { + font-family: "Font Awesome 5 Free"; + font-size: 0.75rem; + line-height: 1.6; + font-weight: 900; + content: "\f078"; + color: white; + padding-left: 0.3125rem; +} + +.nav__subitem a { + padding: 0.625rem 0.9rem; +} + +.nav__submenu-active { + background-color: var(--nav-submenu-active); + border-radius: 0.1875rem; +} + +/* Added to the navbar with JS when it reaches its scroll position */ +.sticky-nav { + position: fixed; + width: 100vw; + top: 0; +} + +/* Add some top padding to the page content to prevent sudden quick movement (as the navigation bar gets a new position at the top of the page (position:fixed and top:0) */ +.sticky-nav + main { + padding-top: 3.75rem; +} + +/* Tablet nav__menu */ +@media all and (min-width: 43.75rem) { + .nav__menu { + justify-content: center; + } + + .nav__title { + flex: 1; + } + + .nav__toggle { + flex: 1; + text-align: right; + order: 2; + } +} + +/* Desktop nav__menu */ +@media all and (min-width: 60rem) { + .nav__menu { + align-items: flex-start; + flex-wrap: nowrap; + background: none; + } + + .nav__title { + order: 0; + } + + .nav__item { + order: 1; + position: relative; + display: block; + width: auto; + } + + .nav__submenu-active .nav__submenu { + display: block; + position: absolute; + left: 0; + top: 68px; + background: var(--nav-submenu-active); + } + + .nav__toggle { + display: none; + } + + .nav__submenu-active { + border-radius: 0; + } +} + +/* MAIN CONTENT */ +main, .content-container { + gap: 0.8rem; + display: flex; + flex-direction: column; + width: 100%; +} + +main { + font-size: 1.2rem; +} + +article, .content-section { + background-color: var(--content-bg-color); + padding: 1.35rem; +} + +.article-section { + padding: 1.25rem 0; +} + +aside { + padding: 1rem; + font-size: 0.9rem; + background-color: var(--content-bg-color); +} + +article, .content-container { + order: 1; +} + +.left-sidebar { + order: 2; +} + +.right-sidebar { + order: 3; +} + +/* Tablet main content layout */ +@media only screen and (min-width: 43.75rem) { + main { + flex-direction: row; + } + + aside { + width: 10rem; + } + + article, .content-container { + flex: 1; + order: 2; + } + + .left-sidebar { + order: 1; + } + + .right-sidebar { + order: 3; + } +} + +/* Desktop main content layout */ +@media only screen and (min-width: 60rem) { + main { + width: 60rem; + display: flex; + flex-direction: row; + justify-content: center; + } + + aside { + width: 13rem; + } +} + +/* CONTENT ELEMENTS WITH CUSTOM CLASSES */ +.inline-code { font-family: monospace; - border: 0.06rem solid var(--code-border); + border: 0.06rem solid var(--code-border-color); padding: 0.125rem 0.3rem; margin-left: 0.125rem; margin-right: 0.125rem; - background-color: var(--code-bg); + background-color: var(--code-bg-color); } .code-snippet { - background-color: var(--code-bg); - border: 0.06rem solid var(--code-border); - display: block; - padding: 0.5em; - overflow-x: auto; - word-break: break-all; + background-color: var(--code-bg-color); + border: 0.08rem solid var(--code-border-color); + display: block; + padding: 0.5em 0.8rem; + overflow-x: auto; + word-break: keep-all; + } + +.text-box { + background-color: var(--quote-bg); + border: 0.06rem solid var(--main-heading-color); + padding: 0.625rem; + margin-bottom: 0.8rem; } -.box { - background-color: #13092D; - border: 0.06rem solid #ED64F5; - padding: 0.625rem; +.link-btn { + font: 1.3rem 'Source Sans Pro', Arial, sans-serif; + display: inline-block; + border: 0.15rem solid var(--link-btn-bg); + border-radius: 0.6rem; + padding: 0.75rem 1rem; + background-color: var(--link-btn-bg); + color: var(--link-btn-text); + cursor: pointer; + font-weight: 700; + text-transform: uppercase; +} + +.link-btn, +.link-btn:hover, +.link-btn:visited { + text-decoration: none; +} + +.link-btn:hover { + cursor: pointer; + background-color: var(--link-btn-hover); + transition: 0.5s; } .full-width-youtube-video { @@ -108,194 +518,36 @@ span.monospace { height: 100%; } - -/* CONTAINER for wrapping the entire website */ -#container { - max-width: 1100px; - /* the width of the layout */ - /* if you change the above value, scroll to the bottom -and change the media query according to the comment! */ - margin: 0 auto; - /* this centers the entire page */ -} - -/* For all links on your page EXCEPT for the navigation */ -#container a { - color: #ED64F5; - font-weight: bold; -} - -#header { - width: 100%; - background-color: #13092D; - height: 22rem; - background-image: var(--header-image); - background-size: 100%; - background-repeat: no-repeat; - background-position: center; -} - -/* NAVIGATION SECTION */ -#navbar { - height: 2.5rem; - background-color: #13092D; - width: 100%; -} - -#navbar ul { - display: flex; - padding: 0; - margin: 0; - list-style-type: none; - justify-content: space-evenly; -} - -#navbar li { - padding-top: 0.625rem; -} - -#navbar li a { - color: #ED64F5; - /* navbar text color */ - font-weight: 800; - text-decoration: none; - /* this removes the underline */ -} - -#navbar li a:hover { - color: #a49cba; - text-decoration: underline; -} - -#flex { - display: flex; -} - -/* EXTRAS */ -#topBar { - width: 100%; - height: 1.875rem; - padding: 0.625rem; - font-size: smaller; - background-color: #13092D; -} - -/* MAIN CONTENT AREA, between the sidebars */ -main { - background-color: #3d2163; - font-size: 1.2rem; - flex: 1; - padding: 1.25rem; - order: 2; -} - -/* This colors BOTH sidebars -If you want to style them separately, -create styles for #leftSidebar and #rightSidebar */ -aside { - background-color: #241445; - width: 12.5rem; - padding: 20px; - font-size: smaller; - /* this makes the sidebar text slightly smaller */ -} - -aside h1, aside h2, aside h3 { - margin-bottom: 0; -} - -aside ul { - margin-top: 0.5rem; -} - -aside .box ul { - padding-left: 0.625rem; - } - - -#leftSidebar { - order: 1; -} - -#rightSidebar { - order: 3; -} - -.sidebar-content { - position: sticky; - top: 0; - font-size: 0.9rem; -} - /* TABLE OF CONTENTS */ +.sidebar__toc { + position: sticky; + top: 5rem; +} -.toc-title { +.sidebar__toc-title { font-size: 1.3rem; font-weight: bold; } -.toc-list { +.sidebar__toc-list { list-style: none; margin-left: 0; padding-left: 0; font-size: 1rem; } -.toc-list li { +.sidebar__toc-list li { margin-bottom: 0.5em; } - -/* SIDEBAR NAVIGATION LINKS */ - -.nav-links { +.sidebar__toc-list ul { padding-left: 1.25rem; - font-size: 1rem; - margin-top: 0; - list-style-image: url(./assets/arrow-list.png); } +/* FOOTER */ footer { - background-color: #13092D; - width: 100%; - height: 2.5rem; - padding: 0.625rem; + background-color: var(--footer-bg); + width: 100vw; + padding: 0.5rem; text-align: center; - margin-top: 0; -} - - -/* MEDIA QUERY STARTS HERE */ - -/* To keep things responsive, -if you want to change the width of your page, -take your new width of the #container, and then subtrack it by 100. -Use this new number as the "max-width" value below */ - -@media only screen and (max-width: 1000px) { - #flex { - flex-wrap: wrap; - } - - aside { - width: 100%; - } - - /* the order of the items is adjusted here for responsiveness. - since the sidebars would be too small on a mobile device. */ - main { - order: 2; - } - - #leftSidebar { - order: 3; - } - - #rightSidebar { - order: 1; - } - - #navbar ul { - flex-wrap: wrap; - } } \ No newline at end of file diff --git a/main.js b/main.js deleted file mode 100644 index 561f2428..00000000 --- a/main.js +++ /dev/null @@ -1,63 +0,0 @@ -var currentPath = window.location.pathname; - - -/* --- SCRIPT FOR THE RIGHT SIDEBAR --- */ - -// HTML template for the right sidebar -var leftSidebarHTML = ` -

Navigation

- -`; -document.querySelector("#leftSidebarContent").innerHTML = leftSidebarHTML; - -// Variables for the list of navigation links -var navList = ""; -var navLinks = [ - `
  • Home
  • `, - `
  • About
  • `, - `
  • Blog
  • `, - `
  • Articles
  • `, - `
  • My Creations
  • `, - `
  • My Mods
  • `, - `
  • Playlists
  • `, - `
  • Featured
  • `, - `
  • Resources
  • `, - `
  • Shrines
  • `, - `
  • Links
  • `, - `
  • Changelog
  • `, - `
  • Site Map
  • ` -]; - -// To show subpage links when visiting certain pages -if (currentPath.includes("mymods/")) { - navLinks.splice(6, 0, ` - - `); -} - -if (currentPath.includes("changelog/")) { - navLinks.splice(12, 0, ` - - `); -} - -// Go through the list of navigation link and display them -for (let i = 0; i < navLinks.length; i++) { - navList += navLinks[i]; -} -document.querySelector(".nav-links").innerHTML = navList; - - -/* --- SCRIPT FOR THE FOOTER --- */ - -// Generate footer content -var footerHTML = ` - Site Launched: September 11, 2022 by Leilukin -`; -document.querySelector("#footer").innerHTML = footerHTML; \ No newline at end of file diff --git a/mycreations/index.html b/mycreations/index.html index 0c2d3325..e7570655 100644 --- a/mycreations/index.html +++ b/mycreations/index.html @@ -1,5 +1,5 @@ - + @@ -12,42 +12,40 @@ - + + - + + + My Creations | Leilukin's Hub + +
    + -
    -
    - -
    - -
    - - - -
    +
    +

    My Creations

    Drawings

    My drawings can be found on my art blog on Tumblr:

    - -
    - + 🎨 Leilukin's Art Blog +
    -
    -
    + + +
    + \ No newline at end of file diff --git a/mycreations/mycreations.css b/mycreations/mycreations.css deleted file mode 100644 index 28fca23a..00000000 --- a/mycreations/mycreations.css +++ /dev/null @@ -1,21 +0,0 @@ -@import url("/main.css"); - -.linkBtn { - font: 1.3rem 'Source Sans Pro', Arial, sans-serif; - border: 0.125rem solid #BA6FE8; - border-radius: 10px; - padding: 0.75rem 1rem; - margin: 0.25em 0.15em; - background-color: #241445; - color: #BA6FE8; - cursor: pointer; - font-weight: 700; - text-transform: uppercase; - } - -.linkBtn:hover { - cursor:pointer; - color: white; - background-color: #BA6FE8; - transition: 0.5s; -} \ No newline at end of file diff --git a/mymods/index.html b/mymods/index.html index e96a6224..97c0cb7a 100644 --- a/mymods/index.html +++ b/mymods/index.html @@ -1,5 +1,5 @@ - + @@ -12,48 +12,45 @@ - - + + - + + + My Video Game Mods | Leilukin's Hub + +
    + -
    -
    - -
    - - -
    -
    + + +
    + \ No newline at end of file diff --git a/mymods/kotor1mods/index.html b/mymods/kotor1mods/index.html index 8b778f13..a5ecb404 100644 --- a/mymods/kotor1mods/index.html +++ b/mymods/kotor1mods/index.html @@ -1,5 +1,5 @@ - + @@ -13,198 +13,190 @@ - + + - + + + My KotOR 1 Mods | Leilukin's Hub + +
    + -
    -
    - -
    - -
    - - - -
    +
    +

    My Mods for Star Wars: Knights of the Old Republic

    - +

    Categories:

    - - - - - + + + + + +
    +
    + +
    +

    Player & Party Members

    + +
    +

    Juhani Dialogue Restoration

    + Banner of Juhani Dialogue Restoration mod
    +

    Restores Juhani's conversations with the player that are unused or easy to miss in vanilla KotOR.

    + Deadly Stream + Nexus Mods
    -
    - -
    -

    Player & Party Members

    - -
    -

    Juhani Dialogue Restoration

    - Banner of Juhani Dialogue Restoration mod
    -

    Restores Juhani's conversations with the player that are unused or easy to miss in vanilla KotOR.

    - - -
    - -
    -

    Carth Onasi and Male PC Romance

    - Banner of Carth Onasi and Male PC Romance mod
    -

    Makes Carth Onasi's romance subplot available for male player characters.

    - - -
    - -
    -

    Bastila and Carth Romance Removal

    - Banner of Bastila and Carth Romance Removal mod
    -

    Removes Bastila and Carth's romance by removing all romance-related dialogue from their conversations.

    - - -
    - -
    -

    Leilukin's Juhani's Outfit Reskin Pack

    - Banner of Leilukin's Juhani's Outfit Reskin Pack mod
    -

    Reskins Juhani's outfit by changing the outfit's color scheme, with multiple versions of reskin provided.

    - - -
    - -
    -

    Jolee in Unique Outfit Introduction

    - Banner of Jolee in Unique Outfit Introduction mod
    -

    Makes Jolee Bindo wear his signature robe when you meet him on Kashyyyk, before he joins your party.

    - - -
    - -
    -

    KotOR 1 Improved Party Outfits

    - Banner of KotOR 1 Improved Party Outfits mod
    -

    Adds new items to improve the properties of the default outfits of the human and humanoid party members of TSL, namely Bastila, Canderous, Carth, Jolee, Juhani and Mission.

    - - -
    - -
    -

    Darth Revan Texture for Star Forge Robes

    - Banner of Darth Revan Texture for Star Forge Robes mod
    -

    Makes the Star Forge Robes to have the same texture and inventory icon as Darth Revan's Robes.

    - - -
    -
    - -
    - -
    -

    Non-Playable Characters

    - -
    -

    KotOR 1 Twi'lek Male NPC Diversity

    - Banner of KotOR 1 Twi'lek Male NPC Diversity mod
    -

    Diversifies the appearances of Twi'lek male NPCs in KotOR 1 by giving the named Twi'lek male NPCs different looks instead of the generic NPC looks.

    - - -
    - -
    -

    KotOR 1 Twi'lek Female NPC Diversity

    - Banner of KotOR 1 Twi'lek Female NPC Diversity mod
    -

    Diversifies the appearances of Twi'lek female NPCs by giving the named Twi'lek female NPCs different looks instead of the generic NPC looks.

    - - -
    - -
    -

    Belaya's Unique Look

    - Banner of Belaya's Unique Look mod
    -

    Gives the NPC Belaya a unique look instead of a generic NPC look.

    - - -
    - -
    -

    Human Xor Restoration

    - Banner of Human Xor Restoration mod
    -

    Restores the original appearance of the NPC Xor in the Xbox version of KotOR, by changing his species from a Twi'lek to a human.

    - - -
    - -
    -

    Human Xor Unique Look

    - Banner of Human Xor Unique Look mod
    -

    Changes the NPC Xor's appearance by making him a human with a unique look to make him different from other human NPCs.

    - - -
    - -
    -

    KotOR 1 No Gendered Dialogue from Male NPCs

    - Banner of KotOR 1 No Gendered Dialogue from Male NPCs mod
    -

    Removes male NPC dialogues that involve them flirting with female player characters or remarking on the female PC's gender or appearance.

    - - -
    - -
    -

    PC Dialogue with Davik's Slaves Change

    - Banner of No Flirting with Davik's Slaves mod
    -

    Removes the option for the player character to flirt with Davik Kang's slaves, or give the player Dark Side options for requesting a massage from the slaves. Threatening the slaves also gives the player Dark Side points.

    - - -
    +
    +

    Carth Onasi and Male PC Romance

    + Banner of Carth Onasi and Male PC Romance mod
    +

    Makes Carth Onasi's romance subplot available for male player characters.

    + Deadly Stream + Nexus Mods
    -
    -

    Gameplay

    - -
    -

    Trask Ulgo Without Tutorials

    - Banner of Trask Ulgo Without Tutorials mod
    -

    Removes the tutorial elements from the game, while keeps Trask Ulgo as a party member in the first area of the Endar Spire.

    - - -
    +
    +

    Bastila and Carth Romance Removal

    + Banner of Bastila and Carth Romance Removal mod
    +

    Removes Bastila and Carth's romance by removing all romance-related dialogue from their conversations.

    + Deadly Stream + Nexus Mods
    -
    -

    Music

    - -
    -

    Mysterious Box Music for Unknown World

    - Banner of Mysterious Box Music for Unknown World mod
    -

    This mod will make the Mysterious Box's ambient music played in some areas of the Unknown World.

    - - -
    -
    - +
    +

    Leilukin's Juhani's Outfit Reskin Pack

    + Banner of Leilukin's Juhani's Outfit Reskin Pack mod
    +

    Reskins Juhani's outfit by changing the outfit's color scheme, with multiple versions of reskin provided.

    + Deadly Stream + Nexus Mods
    -
    - + +
    +

    Jolee in Unique Outfit Introduction

    + Banner of Jolee in Unique Outfit Introduction mod
    +

    Makes Jolee Bindo wear his signature robe when you meet him on Kashyyyk, before he joins your party.

    + Deadly Stream + Nexus Mods +
    + +
    +

    KotOR 1 Improved Party Outfits

    + Banner of KotOR 1 Improved Party Outfits mod
    +

    Adds new items to improve the properties of the default outfits of the human and humanoid party members of TSL, namely Bastila, Canderous, Carth, Jolee, Juhani and Mission.

    + Deadly Stream + Nexus Mods +
    + +
    +

    Darth Revan Texture for Star Forge Robes

    + Banner of Darth Revan Texture for Star Forge Robes mod
    +

    Makes the Star Forge Robes to have the same texture and inventory icon as Darth Revan's Robes.

    + Deadly Stream + Nexus Mods +
    + + +
    +

    Non-Playable Characters

    + +
    +

    KotOR 1 Twi'lek Male NPC Diversity

    + Banner of KotOR 1 Twi'lek Male NPC Diversity mod
    +

    Diversifies the appearances of Twi'lek male NPCs in KotOR 1 by giving the named Twi'lek male NPCs different looks instead of the generic NPC looks.

    + Deadly Stream + Nexus Mods +
    + +
    +

    KotOR 1 Twi'lek Female NPC Diversity

    + Banner of KotOR 1 Twi'lek Female NPC Diversity mod
    +

    Diversifies the appearances of Twi'lek female NPCs by giving the named Twi'lek female NPCs different looks instead of the generic NPC looks.

    + Deadly Stream + Nexus Mods +
    + +
    +

    Belaya's Unique Look

    + Banner of Belaya's Unique Look mod
    +

    Gives the NPC Belaya a unique look instead of a generic NPC look.

    + Deadly Stream + Nexus Mods +
    + +
    +

    Human Xor Restoration

    + Banner of Human Xor Restoration mod
    +

    Restores the original appearance of the NPC Xor in the Xbox version of KotOR, by changing his species from a Twi'lek to a human.

    + Deadly Stream + Nexus Mods +
    + +
    +

    Human Xor Unique Look

    + Banner of Human Xor Unique Look mod
    +

    Changes the NPC Xor's appearance by making him a human with a unique look to make him different from other human NPCs.

    + Deadly Stream + Nexus Mods +
    + +
    +

    KotOR 1 No Gendered Dialogue from Male NPCs

    + Banner of KotOR 1 No Gendered Dialogue from Male NPCs mod
    +

    Removes male NPC dialogues that involve them flirting with female player characters or remarking on the female PC's gender or appearance.

    + Deadly Stream + Nexus Mods +
    + +
    +

    PC Dialogue with Davik's Slaves Change

    + Banner of No Flirting with Davik's Slaves mod
    +

    Removes the option for the player character to flirt with Davik Kang's slaves, or give the player Dark Side options for requesting a massage from the slaves. Threatening the slaves also gives the player Dark Side points.

    + Deadly Stream + Nexus Mods +
    +
    + +
    +

    Gameplay

    + +
    +

    Trask Ulgo Without Tutorials

    + Banner of Trask Ulgo Without Tutorials mod
    +

    Removes the tutorial elements from the game, while keeps Trask Ulgo as a party member in the first area of the Endar Spire.

    + Deadly Stream + Nexus Mods +
    +
    + +
    +

    Music

    + +
    +

    Mysterious Box Music for Unknown World

    + Banner of Mysterious Box Music for Unknown World mod
    +

    This mod will make the Mysterious Box's ambient music played in some areas of the Unknown World.

    + Deadly Stream + Nexus Mods +
    +
    -
    -
    + + +
    + - \ No newline at end of file + - + @@ -13,242 +13,234 @@ - + + - - + + + My KotOR 2 Mods | Leilukin's Hub + +
    + -
    -
    - -
    - -
    - - - -
    +
    +

    My Mods for Star Wars: Knights of the Old Republic II: The Sith Lords

    Categories:

    - - - - - - - + + + + + + + +
    +
    + +
    +

    Same-Gender Romances

    +
    +

    ↓↓READ THIS↓↓ before asking questions about my romance mods!
    + Frequently Asked Questions (FAQ) for My Same-Gender Romance Mods for KotOR II

    +
    + +
    +

    Atton Rand and Male Exile Romance

    + Banner of Atton Rand and Male Exile Romance mod
    +

    Makes Atton flirts with and expresses romantic interests for male Exiles.

    + Deadly Stream + Nexus Mods
    -
    - -
    -

    Same-Gender Romances

    -
    -

    ↓↓READ THIS↓↓ before asking questions about my romance mods!
    - Frequently Asked Questions (FAQ) for My Same-Gender Romance Mods for KotOR II

    -
    - -
    -

    Atton Rand and Male Exile Romance

    - Banner of Atton Rand and Male Exile Romance mod
    -

    Makes Atton flirts with and expresses romantic interests for male Exiles.

    - - -
    - -
    -

    Handmaiden and Female Exile - Disciple and Male Exile Romance

    - Banner of Handmaiden and Female Exile - Disciple and Male Exile Romances mod
    -

    Makes the Handmaiden a romance option for female Exiles and the Disciple a romance option for male Exiles.

    - - -
    - -
    -

    Visas Marr and Female Exile Romance

    - Banner of Visas Marr and Female Exile Romance mod
    -

    Makes the Visas Marr romance scene available for female Exiles.

    - - -
    - -
    -

    Alternate Revan Romances REDUX

    - Banner of Alternate Revan Romances REDUX mod
    -

    Gives players options to set Revan's love ineterest(s), or lack thereof. Updated version of felixfelicitas' - Alternate Revan Romances mod.

    - - -
    - -
    -

    Darth Sion and Male Exile Mod

    - Banner of Darth Sion and Male Exile Mod
    -

    Makes Darth Sion develop the same affections to a male Exile like he did to a female Exile in vanilla KotOR II.

    - - -
    - -
    -

    Dahnis Flirt Option for Female PC

    - Banner of Dahnis Flirt Option for Female PC mod
    -

    Makes the NPC Dahnis flirt with the player character regardless of gender, including a female PC. A female PC also gets the option to flirt back.

    - - -
    -
    - -
    -

    Party Members

    - -
    -

    Leilukin’s Kreia Reskin

    - Banner of Leilukin’s Kreia Reskin mod
    -

    My version of a retexture of Kreia.

    - - -
    - -
    -

    No Jealousy Lock in Handmaiden Dialogue

    - Banner of No Jealousy Lock in Handmaiden Dialogue mod
    -

    Allows you to continue to talk to Handmaiden even if you have much higher influence with Visas than with Handmaiden.

    - - -
    - -
    -

    Visas Visible Jedi Robes

    - Banner of Visas Visible Jedi Robes mod
    -

    Makes Jedi robes visible on Visas Marr's body when you equip her with one.

    - - -
    - -
    -

    Love Between Brianna and the Exile - The Sith Lords Restored Content Mod Version

    - Banner of Love Between Brianna and the Exile - The Sith Lords Restored Content Mod Version
    -

    Updated version of DarthShgaad's Love Between Brianna and the Exile mod, made to be more compatible with The Sith Lords Restored Content Mod (TSLRCM).

    - -
    -
    - -
    -

    NPCs

    - -
    -

    Lonna Vash Mod for TSLRCM

    - Banner of Lonna Vash Mod for TSLRCM
    -

    Restores Jedi Master Lonna Vash's cut conversation by allowing the player to meet and talk to her in the secret tomb on Korriban. Updated version of Sikon's Lonna Vash Mod, made to be fully compatible with The Sith Lord Restored Content Mod (TSLRCM).

    - - -
    - -
    -

    TSL Twi'lek Male NPC Diversity

    - Banner of TSL Twi'lek Male NPC Diversity mod
    -

    Diversifies the appearances of Twi'lek male NPCs in KotOR 2: TSL by giving the named Twi'lek male NPCs different looks.

    - - -
    - -
    -

    Dahnis Unique Look

    - Banner of Dahnis Unique Look mod
    -

    Gives the NPC Dahnis a unique appearance to make her look different from other Twi'lek women NPCs.

    - - -
    -
    - -
    -

    Items

    - -
    -

    TSL Improved Party Outfits

    - Banner of TSL Improved Party Outfits mod
    -

    Adds new items to improve the properties of the default outfits of the human and humanoid party members of KotOR II, namely Atton, Bao-Dur, the Disciple, the Handmaiden, Kreia, Mandalore, Mira and Visas.

    - - -
    - -
    -

    Juhani Item Pack for TSL

    - Banner of Juhani Item Pack for TSL mod
    -

    Adds a new Jedi robe, a new headband and a new armband to In KotOR II: TSL, named after Juhani, with item descriptions that indicate these items once belonged to Juhani.

    - - -
    - -
    -

    Prologue Item Recovery

    - Banner of Prologue Item Recovery mod
    -

    Allows you to recover the items you obtain from the prologue, regardless if you choose to skip the prologue or not.

    - - -
    - -
    -

    TSL Workbench Lightsaber Creation

    - Banner of TSL Workbench Lightsaber Creation mod
    -

    Allows you to create lightsabers at a workbench, including double-bladed, one-handed or short lightsabers, with any color focusing crystals available in the game, after completing the quest to craft your first lightsaber.

    - - -
    -
    - -
    -

    Miscellaneous

    - -
    -

    Exile's Trial Overlay Removal

    - Banner of Exile's Trial Overlay Removal mod
    -

    Removes the blue overlay of the scene of the Exile's trial on Coruscant in The Sith Lords Restored Content Mod (TSLRCM).

    - - -
    -
    - -
    -

    Patches

    - -
    -

    PartySwap and Extended Enclave Compatibility Patch

    - Banner of PartySwap and Extended Enclave Compatibility Patch
    -

    A standalone patch to make DarthTyren's PartySwap mod compatible with danil-ch and Darth Hayze's Extended Enclave mod.

    - -
    - -
    -

    Remote Tells Influence Patch for The Sith Lords Restored Content Mod

    - Banner of LRemote Tells Influence Patch for The Sith Lords Restored Content Mod
    -

    A patch to make tk102's Remote Tells Influence mod more compatible with The Sith Lords Restored Content Mod (TSLRCM).

    - -
    -
    - +
    +

    Handmaiden and Female Exile - Disciple and Male Exile Romance

    + Banner of Handmaiden and Female Exile - Disciple and Male Exile Romances mod
    +

    Makes the Handmaiden a romance option for female Exiles and the Disciple a romance option for male Exiles.

    + Deadly Stream + Nexus Mods
    -
    - +
    +

    Visas Marr and Female Exile Romance

    + Banner of Visas Marr and Female Exile Romance mod
    +

    Makes the Visas Marr romance scene available for female Exiles.

    + Deadly Stream + Nexus Mods +
    + +
    +

    Alternate Revan Romances REDUX

    + Banner of Alternate Revan Romances REDUX mod
    +

    Gives players options to set Revan's love ineterest(s), or lack thereof. Updated version of felixfelicitas' + Alternate Revan Romances mod.

    + Deadly Stream + Nexus Mods +
    + +
    +

    Darth Sion and Male Exile Mod

    + Banner of Darth Sion and Male Exile Mod
    +

    Makes Darth Sion develop the same affections to a male Exile like he did to a female Exile in vanilla KotOR II.

    + Deadly Stream + Nexus Mods +
    + +
    +

    Dahnis Flirt Option for Female PC

    + Banner of Dahnis Flirt Option for Female PC mod
    +

    Makes the NPC Dahnis flirt with the player character regardless of gender, including a female PC. A female PC also gets the option to flirt back.

    + Deadly Stream + Nexus Mods +
    + + +
    +

    Party Members

    + +
    +

    Leilukin’s Kreia Reskin

    + Banner of Leilukin’s Kreia Reskin mod
    +

    My version of a retexture of Kreia.

    + Deadly Stream + Nexus Mods +
    + +
    +

    No Jealousy Lock in Handmaiden Dialogue

    + Banner of No Jealousy Lock in Handmaiden Dialogue mod
    +

    Allows you to continue to talk to Handmaiden even if you have much higher influence with Visas than with Handmaiden.

    + Deadly Stream + Nexus Mods +
    + +
    +

    Visas Visible Jedi Robes

    + Banner of Visas Visible Jedi Robes mod
    +

    Makes Jedi robes visible on Visas Marr's body when you equip her with one.

    + Deadly Stream + Nexus Mods +
    + +
    +

    Love Between Brianna and the Exile - The Sith Lords Restored Content Mod Version

    + Banner of Love Between Brianna and the Exile - The Sith Lords Restored Content Mod Version
    +

    Updated version of DarthShgaad's Love Between Brianna and the Exile mod, made to be more compatible with The Sith Lords Restored Content Mod (TSLRCM).

    + Dropbox +
    +
    + +
    +

    NPCs

    + +
    +

    Lonna Vash Mod for TSLRCM

    + Banner of Lonna Vash Mod for TSLRCM
    +

    Restores Jedi Master Lonna Vash's cut conversation by allowing the player to meet and talk to her in the secret tomb on Korriban. Updated version of Sikon's Lonna Vash Mod, made to be fully compatible with The Sith Lord Restored Content Mod (TSLRCM).

    + Deadly Stream + Nexus Mods +
    + +
    +

    TSL Twi'lek Male NPC Diversity

    + Banner of TSL Twi'lek Male NPC Diversity mod
    +

    Diversifies the appearances of Twi'lek male NPCs in KotOR 2: TSL by giving the named Twi'lek male NPCs different looks.

    + Deadly Stream + Nexus Mods +
    + +
    +

    Dahnis Unique Look

    + Banner of Dahnis Unique Look mod
    +

    Gives the NPC Dahnis a unique appearance to make her look different from other Twi'lek women NPCs.

    + Deadly Stream + Nexus Mods +
    +
    + +
    +

    Items

    + +
    +

    TSL Improved Party Outfits

    + Banner of TSL Improved Party Outfits mod
    +

    Adds new items to improve the properties of the default outfits of the human and humanoid party members of KotOR II, namely Atton, Bao-Dur, the Disciple, the Handmaiden, Kreia, Mandalore, Mira and Visas.

    + Deadly Stream + Nexus Mods +
    + +
    +

    Juhani Item Pack for TSL

    + Banner of Juhani Item Pack for TSL mod
    +

    Adds a new Jedi robe, a new headband and a new armband to In KotOR II: TSL, named after Juhani, with item descriptions that indicate these items once belonged to Juhani.

    + Deadly Stream + Nexus Mods +
    + +
    +

    Prologue Item Recovery

    + Banner of Prologue Item Recovery mod
    +

    Allows you to recover the items you obtain from the prologue, regardless if you choose to skip the prologue or not.

    + Deadly Stream + Nexus Mods +
    + +
    +

    TSL Workbench Lightsaber Creation

    + Banner of TSL Workbench Lightsaber Creation mod
    +

    Allows you to create lightsabers at a workbench, including double-bladed, one-handed or short lightsabers, with any color focusing crystals available in the game, after completing the quest to craft your first lightsaber.

    + Deadly Stream + Nexus Mods +
    +
    + +
    +

    Miscellaneous

    + +
    +

    Exile's Trial Overlay Removal

    + Banner of Exile's Trial Overlay Removal mod
    +

    Removes the blue overlay of the scene of the Exile's trial on Coruscant in The Sith Lords Restored Content Mod (TSLRCM).

    + Deadly Stream + Nexus Mods +
    +
    + +
    +

    Patches

    + +
    +

    PartySwap and Extended Enclave Compatibility Patch

    + Banner of PartySwap and Extended Enclave Compatibility Patch
    +

    A standalone patch to make DarthTyren's PartySwap mod compatible with danil-ch and Darth Hayze's Extended Enclave mod.

    + Deadly Stream +
    + +
    +

    Remote Tells Influence Patch for The Sith Lords Restored Content Mod

    + Banner of LRemote Tells Influence Patch for The Sith Lords Restored Content Mod
    +

    A patch to make tk102's Remote Tells Influence mod more compatible with The Sith Lords Restored Content Mod (TSLRCM).

    + Dropbox +
    +
    -
    -
    + + +
    + - \ No newline at end of file + -1) w3AddClass(x[i], "show"); - } + let x, i; + x = document.getElementsByClassName("filter-div"); + if (c == "all") c = ""; + // Add the "show-items" class (display:block) to the filtered elements, and remove the "show-items" class from the elements that are not selected + for (i = 0; i < x.length; i++) { + w3RemoveClass(x[i], "show-items"); + if (x[i].className.indexOf(c) > -1) w3AddClass(x[i], "show-items"); + } } -// Show filtered elements +// show-items filtered elements function w3AddClass(element, name) { - var i, arr1, arr2; - arr1 = element.className.split(" "); - arr2 = name.split(" "); - for (i = 0; i < arr2.length; i++) { - if (arr1.indexOf(arr2[i]) == -1) { - element.className += " " + arr2[i]; + let i, arr1, arr2; + arr1 = element.className.split(" "); + arr2 = name.split(" "); + for (i = 0; i < arr2.length; i++) { + if (arr1.indexOf(arr2[i]) == -1) { + element.className += " " + arr2[i]; + } } - } } // Hide elements that are not selected function w3RemoveClass(element, name) { - var i, arr1, arr2; - arr1 = element.className.split(" "); - arr2 = name.split(" "); - for (i = 0; i < arr2.length; i++) { - while (arr1.indexOf(arr2[i]) > -1) { - arr1.splice(arr1.indexOf(arr2[i]), 1); + let i, arr1, arr2; + arr1 = element.className.split(" "); + arr2 = name.split(" "); + for (i = 0; i < arr2.length; i++) { + while (arr1.indexOf(arr2[i]) > -1) { + arr1.splice(arr1.indexOf(arr2[i]), 1); + } } - } - element.className = arr1.join(" "); + element.className = arr1.join(" "); } // Add active class to the current control button (highlight it) -var btnContainer = document.getElementById("myBtnContainer"); -var btns = btnContainer.getElementsByClassName("filterBtn"); -for (var i = 0; i < btns.length; i++) { - btns[i].addEventListener("click", function() { - var current = document.getElementsByClassName("active"); - current[0].className = current[0].className.replace(" active", ""); - this.className += " active"; - }); +let btnContainer = document.getElementById("myBtnContainer"); +let btns = btnContainer.getElementsByClassName("filter-btn"); +for (let i = 0; i < btns.length; i++) { + btns[i].addEventListener("click", function() { + let current = document.getElementsByClassName("active"); + current[0].className = current[0].className.replace(" active", ""); + this.className += " active"; + }); } \ No newline at end of file diff --git a/mymods/mymods.css b/mymods/mymods.css index 68f0c2d7..3e9f7649 100644 --- a/mymods/mymods.css +++ b/mymods/mymods.css @@ -1,6 +1,4 @@ -@import url("/main.css"); - -.indexLink { +.index-link { font-size: 1.6rem; } @@ -17,20 +15,16 @@ padding: 1em 1.5em 1.5em 1.5em; } -.mod-list { - overflow: hidden; -} - -.filterDiv { +.filter-div { display: none; /* Hidden by default */ } -/* The "show" class is added to the filtered elements */ -.show { +/* The "show-items" class is added to the filtered elements */ +.show-items { display: block; } -.filterBtn { +.filter-btn { border: none; outline: none; padding: 0.75rem 1rem; @@ -38,35 +32,15 @@ background-color: #d3aad5; color: #241445; cursor: pointer; - font-weight: 600; + font-weight: 800; font-size: 1.1rem; } -.filterBtn:hover { +.filter-btn:hover { background-color: #d5c2d6; } -.filterBtn.active { +.filter-btn.active { background-color: #241445; color: #ED64F5; -} - -.linkBtn { - font: 1.3rem 'Source Sans Pro', Arial, sans-serif; - border: 0.125rem solid #BA6FE8; - border-radius: 0.6rem; - padding: 0.75rem 1rem; - margin: 0.25em 0.15em; - background-color: #241445; - color: #BA6FE8; - cursor: pointer; - font-weight: 700; - text-transform: uppercase; - } - -.linkBtn:hover { - cursor:pointer; - color: white; - background-color: #BA6FE8; - transition: 0.5s; } \ No newline at end of file diff --git a/playlists/index.html b/playlists/index.html index 1b254833..f5b0e34d 100644 --- a/playlists/index.html +++ b/playlists/index.html @@ -1,5 +1,5 @@ - + @@ -12,35 +12,34 @@ - - + + - + + + Playlists | Leilukin's Hub + +
    + -
    -
    - -
    - -
    - - - -
    -

    Leilukin's Music Playlists

    +
    +

    Leilukin's Music Playlists

    My Dear Summer Lover

    A playlist cover image made of Sam and Michelle from A Summer's End being close to kissing, with the title 'My Dear Summer Lover: A Sam x Michelle Fanmix'

    A fanmix for the visual novel A Summer’s End — Hong Kong 1986, dedicated to Sam and Michelle’s love story.

    @@ -50,7 +49,7 @@

    Since Oracle and Bone has cited Anita Mui as a major inspiration for them and this visual novel, I have also included multiple songs performed by Anita Mui in this mix. Because A Summer’s End is a lesbian story, when I was choosing which songs to include in this mix, I also prioritize songs that were performed by women artists.

    -

    + Listen on Spotify


    @@ -60,23 +59,14 @@

    Collection of Mandarin queer anthems.

    I made this playlist after discovering Wikipedia's list of Chinese queer anthems on its Mandarin article for Gay Anthem (同志國歌).

    -

    + Listen on Spotify

    +
    -
    - - - -
    -
    -
    + +
    + \ No newline at end of file diff --git a/playlists/playlists.css b/playlists/playlists.css deleted file mode 100644 index 0c19bc8f..00000000 --- a/playlists/playlists.css +++ /dev/null @@ -1,21 +0,0 @@ -@import url("/main.css"); - -.linkBtn { - font: 1.3rem 'Source Sans Pro', Arial, sans-serif; - border: 0.125rem solid #BA6FE8; - border-radius: 0.6rem; - padding: 0.75rem 1rem; - margin: 0.25em 0.15em; - background-color: #241445; - color: #BA6FE8; - cursor: pointer; - font-weight: 700; - text-transform: uppercase; -} - -.linkBtn:hover { - cursor:pointer; - color: white; - background-color: #BA6FE8; - transition: 0.5s; -} \ No newline at end of file diff --git a/resources/anti-harry-potter-jk-rowling-masterlist.html b/resources/anti-harry-potter-jk-rowling-masterlist.html index 133e76cc..81e45852 100644 --- a/resources/anti-harry-potter-jk-rowling-masterlist.html +++ b/resources/anti-harry-potter-jk-rowling-masterlist.html @@ -1,5 +1,5 @@ - + @@ -12,76 +12,72 @@ - + + - + + + Anti-Harry Potter and Anti-J. K. Rowling Masterlist | Resources | Leilukin's Hub + +
    + -
    -
    - -
    +
    +

    Anti-Harry Potter and Anti-J.K. Rowling Masterlist

    -
    - - - -
    -

    Anti-Harry Potter and Anti-J.K. Rowling Masterlist

    - -

    First published on March 19, 2023
    Last updated on April 15, 2023

    - -

    Like many millennials, I grew up with the Harry Potter series and was a major fan of the series. I had read the original 7 books and watched their film adaptations. The series was a special interest of mine throughout my early- to mid-teen years. While the Harry Potter novels were far from the first books I read, they were the first fantasy novels I read, and the series’ concept of a magical world set in a contemporary setting fascinated teenage me.

    - -

    However, even during my Harry Potter fixation years, there were things from the series that bothered me, from the idea of house elves being a slave race that naturally love being slaves, to Snape’s unconvincing “redemption” arc. As I got older and became more aware of social issues, I started to notice more problems with the series. In addition, reading more books has also made me realise that even on a technical writing level, the Harry Potter series was mediocre at best. As a result, I had stopped becoming a Harry Potter fan even before J.K. Rowling’s transphobia got mainstream attention.

    - -

    Unfortunately, many adults with nostalgia goggles still refuse to let go of Harry Potter, and they believe Harry Potter can be separated or “reclaimed” by J.K. Rowling, despite how much Rowling’s world-view and prejudice are inextricably linked to her writing and stories.

    - -

    Therefore, I am compiling this masterlist by curating various resources that are critical of the Harry Potter series and J.K. Rowling. Items are ordered in chronological order. This is far from a comprehensive list of all the pieces that criticise Harry Potter and Rowling; this list is my curated list of ones that I have read, watched or listened to, and considered excellent critiques.

    - -

    Articles

    - +

    First published on March 19, 2023
    Last updated on April 15, 2023

    -

    Videos

    - +

    Like many millennials, I grew up with the Harry Potter series and was a major fan of the series. I had read the original 7 books and watched their film adaptations. The series was a special interest of mine throughout my early- to mid-teen years. While the Harry Potter novels were far from the first books I read, they were the first fantasy novels I read, and the series’ concept of a magical world set in a contemporary setting fascinated teenage me.

    -

    Podcasts

    -
      -
    • The Shrieking Shack — A book reading podcast hosted by Xeecee and Liz. Originally a Harry Potter reread podcast made by and for lapsed fans that goes through every chapter of the Harry Potter books and their film adaptations and analyses the writing and politics of the series and J.K. Rowling.
    • -
    -
    - -
    -
    -
    +

    However, even during my Harry Potter fixation years, there were things from the series that bothered me, from the idea of house elves being a slave race that naturally love being slaves, to Snape’s unconvincing “redemption” arc. As I got older and became more aware of social issues, I started to notice more problems with the series. In addition, reading more books has also made me realise that even on a technical writing level, the Harry Potter series was mediocre at best. As a result, I had stopped becoming a Harry Potter fan even before J.K. Rowling’s transphobia got mainstream attention.

    + +

    Unfortunately, many adults with nostalgia goggles still refuse to let go of Harry Potter, and they believe Harry Potter can be separated or “reclaimed” by J.K. Rowling, despite how much Rowling’s world-view and prejudice are inextricably linked to her writing and stories.

    + +

    Therefore, I am compiling this masterlist by curating various resources that are critical of the Harry Potter series and J.K. Rowling. Items are ordered in chronological order. This is far from a comprehensive list of all the pieces that criticise Harry Potter and Rowling; this list is my curated list of ones that I have read, watched or listened to, and considered excellent critiques.

    + +

    Articles

    + + +

    Videos

    + + +

    Podcasts

    + + + + +
    + \ No newline at end of file diff --git a/resources/index.html b/resources/index.html index bcb93401..8c7f81e9 100644 --- a/resources/index.html +++ b/resources/index.html @@ -1,5 +1,5 @@ - + @@ -12,54 +12,55 @@ - + + - + + + Resources | Leilukin's Hub + +
    + -
    -
    - -
    - -
    - - - -
    +
    +

    Resources

    -

    Here are resources I have compiled myself.

    +
    +

    Leilukin's Masterlists

    - +
    + +

    Leilukin's Mod Builds

    Lists of video game mods I use for my own playthroughs.

    - -
    - + +
    -
    -
    + + +
    + \ No newline at end of file diff --git a/shrines/asummersend/asummersend.css b/shrines/asummersend/asummersend.css index c948f814..4f89afb5 100644 --- a/shrines/asummersend/asummersend.css +++ b/shrines/asummersend/asummersend.css @@ -1,355 +1,553 @@ :root { - --header-image: url('./img/asummersend_header.png'); - --body-color: #fceaff; - --body-bg: #1f0033; - --content-bg: #000000; - --content: #43256E; - --title-color: #FF29D8; - --title-border: #d3aad5; - --code-bg: #241445; - --code-border: #82668f; - --link-color: #d270ff; - --link-hover: #7E4197; - --blockquote-bg: #222121; - --blockquote-border: #4d4385; - --box-bg: #13092D; + --body-bg-color: #1f0033; + /* --body-bg-image: url('/assets/starsforever.gif'); */ + --body-font-color: #fceaff; + --content-bg-color: #000000; + + --main-heading-color: #FF29D8; + --sub-heading-color: #FF29D8; + --title-border-color: #d3aad5; + + --bold-font-color: #ff9933; + --link-color: #d270ff; + --link-hover-color: #7E4197; + --quote-bg: #222121; + --quote-border-color: #4d4385; + + --code-bg-color: #241445; + --code-border-color: #82668f; + + --link-btn-bg: #873eb5; + --link-btn-text: white; + --link-btn-hover: #241445; + + --header-bg-color: black; + --nav-bg: #101010; + --nav-link: white; + --nav-submenu-active: #111; + --nav-item-hover: #ccc; + + --top-btn-bg: #251347; + --top-btn-icon: #d3aad5; + + --footer-bg: #101010; } @font-face { - font-family: 'Nunito'; - src: url('/assets/fonts/Nunito-VariableFont_wght.ttf') format("truetype"); - font-weight: 125 950; - font-stretch: 75% 125%; - font-style: normal; + font-family: 'Nunito'; + src: url('/assets/fonts/Nunito-VariableFont_wght.ttf') format("truetype"); + font-weight: 125 950; + font-stretch: 75% 125%; + font-style: normal; } @font-face { - font-family: 'Nunito'; - src: url('/assets/fonts/Nunito-Italic-VariableFont_wght.ttf') format("truetype"); - font-weight: 125 950; - font-stretch: 75% 125%; - font-style: italic; + font-family: 'Nunito'; + src: url('/assets/fonts/Nunito-Italic-VariableFont_wght.ttf') format("truetype"); + font-weight: 125 950; + font-stretch: 75% 125%; + font-style: italic; } -html, -body { -scroll-behavior: smooth; -} - -body { - font-family: 'Nunito', Arial, sans-serif; - font-size: 1rem; /* 16px */ - margin: 0; - background-color: var(--body-bg); - background-size: 4rem; - color: var(--body-color); - background-image: var(--body-bg-image); - background-attachment: fixed; - line-height: 1.6; -} - -* { - box-sizing: border-box; +/* CSS RESET */ +/* Box sizing rules */ +*, +*::before, +*::after { + box-sizing: border-box; } +/* Remove default margin */ +body, h1, h2, -h3 { - color: var(--title-color); +h3, +h4, +p, +figure, +blockquote, +dl, +dd { + margin: 0; +} + +/* Remove list styles on ul, ol elements with a list role, which suggests default styling will be removed */ +ul[role='list'], +ol[role='list'] { + list-style: none; +} + +/* Set core root defaults */ +html:focus-within { + scroll-behavior: smooth; +} + +/* Set core body defaults */ +body { + min-height: 100vh; + text-rendering: optimizeSpeed; + line-height: 1.5; +} + +/* A elements that don't have a class get default styles */ +a:not([class]) { + text-decoration-skip-ink: auto; +} + +/* Make images easier to work with */ +img, +picture { + max-width: 100%; + display: block; +} + +/* Inherit fonts for inputs and buttons */ +input, +button, +textarea, +select { + font: inherit; +} + +/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */ +@media (prefers-reduced-motion: reduce) { + html:focus-within { + scroll-behavior: auto; + } + + *, + *::before, + *::after { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + scroll-behavior: auto !important; + } +} + +/* STYLING BEGINS */ +body { + display: flex; + align-items: center; + flex-direction: column; + font-family: 'Nunito'; + color: var(--body-font-color); + background-color: var(--body-bg-color); + background-image: var(--body-bg-image); + background-attachment: fixed; } h1 { - font-size: 2.2rem; - border-bottom: 0.18rem solid var(--title-border); - padding-bottom: 0.5rem; + color: var(--main-heading-color); } -h1:not(:first-child) { - padding-top: 30px; +h1 { + margin-bottom: 1.2rem; +} + +h2, h3 { + color: var(--sub-heading-color); +} + +h1 { + font-size: 2.2rem; + border-bottom: 0.18rem solid var(--title-border-color); } h2 { - font-size: 1.7rem; + font-size: 1.7rem; +} + +article h2, +article h3 { + margin-top: 1.5rem; +} + +p { + padding: 0.5rem 0;; } strong { - color: var(--title-color); + color: var(--bold-font-color); } -hr { - width: 75%; - margin-top: 1.5rem; - margin-bottom: 1.5rem; +a { + font-weight: 700; + color: var(--link-color); +} + +a:hover { + color: var(--link-hover-color); } blockquote { - border-left: var(--blockquote-border) 3px solid; - background: var(--blockquote-bg); - padding: 0 0.75rem; - margin: 0 1.5rem; + margin: 1.5rem 0; + padding: 0.5rem 1rem; + border-inline-start: 0.1rem solid var(--main-heading-color); + background-color: var(--quote-bg); } -.linkBtn { - font: 1.1rem 'Source Sans Pro', Arial, sans-serif; - border: 0.125rem solid var(--link-color); - border-radius: 10px; - padding: 0.75rem 1rem; - margin: 0.25em 0.15em; - background: none; - color: var(--link-color); - cursor: pointer; - font-weight: 700; - text-transform: uppercase; +pre { + white-space: pre-wrap; + overflow-x: auto; } -.linkBtn:hover { - cursor:pointer; - color: white; - background-color: var(--link-color); - transition: 0.5s; +/* HEADER */ +header { + width: 100vw; + max-height: 20rem; + background-color: var(--header-bg-color); + /* background: var(--header-img); */ + background-repeat: no-repeat; + background-size: auto; + background-position: center; + display: flex; + flex-direction: column; + justify-content: center; } -span.monospace { - font-family: monospace; - border: 1px solid var(--code-border); - padding: 2px; - background-color: var(--code-bg); +header img { + object-fit: contain; + height: 100%; +} + +/* NAVIGATION BAR */ +nav { + background: var(--nav-bg); + padding: 0 0.9rem; + width: 100%; + z-index: 999; +} + +nav a { + color: var(--nav-link); + text-decoration: none; + cursor: pointer; +} + +.nav__menu, +.nav__submenu { + list-style-type: none; + padding-left: 0; + margin: 0; +} + +.nav__title { + font-size: 20px; + padding: 0.2rem 0; +} + +.nav__item { + padding: 0.6rem; +} + +.nav__item a:hover, +.nav__item a:hover::after { + color: var(--nav-item-hover); +} + +/* Mobile nav__menu */ +.nav__menu { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; +} + +.nav__menu li a { + display: block; + padding: 0.9rem 0.8rem; +} + +.nav__menu li.nav__subitem a { + padding: 0.9rem; +} + +.nav__toggle { + order: 1; + font-size: 1.25rem; +} + +.nav__item { + order: 3; + width: 100%; + text-align: center; + display: none; +} + +.nav__active .nav__item { + display: block; +} + +/* nav__submenu up from mobile screens */ +.nav__submenu { + display: none; +} + +.nav__submenu-active .nav__submenu { + display: block; +} + +.nav__has-submenu i { + font-size: 0.75rem; +} + +.nav__has-submenu > a::after { + font-family: "Font Awesome 5 Free"; + font-size: 0.75rem; + line-height: 1.6; + font-weight: 900; + content: "\f078"; + color: white; + padding-left: 0.3125rem; +} + +.nav__subitem a { + padding: 0.625rem 0.9rem; +} + +.nav__submenu-active { + background-color: var(--nav-submenu-active); + border-radius: 0.1875rem; +} + +/* Added to the navbar with JS when it reaches its scroll position */ +.sticky-nav { + position: fixed; + width: 100vw; + top: 0; +} + +/* Add some top padding to the page content to prevent sudden quick movement (as the navigation bar gets a new position at the top of the page (position:fixed and top:0) */ +.sticky-nav + main { + padding-top: 3.75rem; +} + +/* Tablet nav__menu */ +@media all and (min-width: 43.75rem) { + .nav__menu { + justify-content: center; + } + + .nav__title { + flex: 1; + } + + .nav__toggle { + flex: 1; + text-align: right; + order: 2; + } +} + +/* Desktop nav__menu */ +@media all and (min-width: 60rem) { + .nav__menu { + align-items: flex-start; + flex-wrap: nowrap; + background: none; + } + + .nav__title { + order: 0; + } + + .nav__item { + order: 1; + position: relative; + display: block; + width: auto; + } + + .nav__submenu-active .nav__submenu { + display: block; + position: absolute; + left: 0; + top: 68px; + background: var(--nav-submenu-active); + } + + .nav__toggle { + display: none; + } + + .nav__submenu-active { + border-radius: 0; + } +} + +/* MAIN CONTENT */ +main, .content-container { + gap: 0.8rem; + display: flex; + flex-direction: column; + width: 100%; +} + +main { + font-size: 1.2rem; +} + +article, .content-section { + background-color: var(--content-bg-color); + padding: 1.35rem; +} + +.article-section { + padding: 1.25rem 0; +} + +aside { + padding: 1rem; + font-size: 0.9rem; + background-color: var(--content-bg-color); +} + +article, .content-container { + order: 1; +} + +.left-sidebar { + order: 2; +} + +.right-sidebar { + order: 3; +} + +/* Tablet main content layout */ +@media only screen and (min-width: 43.75rem) { + main { + flex-direction: row; + } + + aside { + width: 10rem; + } + + article, .content-container { + flex: 1; + order: 2; + } + + .left-sidebar { + order: 1; + } + + .right-sidebar { + order: 3; + } +} + +/* Desktop main content layout */ +@media only screen and (min-width: 60rem) { + main { + width: 60rem; + display: flex; + flex-direction: row; + justify-content: center; + } + + aside { + width: 13rem; + } +} + +/* CONTENT ELEMENTS WITH CUSTOM CLASSES */ +.inline-code { + font-family: monospace; + border: 0.06rem solid var(--code-border-color); + padding: 0.125rem 0.3rem; + margin-left: 0.125rem; + margin-right: 0.125rem; + background-color: var(--code-bg-color); } .code-snippet { - background-color: var(--code-bg); - border: 1px solid var(--code-border); - display: block; - padding: 0.5em; - overflow-x: auto; - word-break: break-all; + background-color: var(--code-bg-color); + border: 0.08rem solid var(--code-border-color); + display: block; + padding: 0.5em 0.8rem; + overflow-x: auto; + word-break: keep-all; + } + +.text-box { + background-color: var(--quote-bg); + border: 0.06rem solid var(--main-heading-color); + padding: 0.625rem; + margin-bottom: 0.8rem; } -.box { - background-color: var(--box-bg); - border: 1px solid var(--title-color); - padding: 10px; +.link-btn { + font: 1.3rem 'Source Sans Pro', Arial, sans-serif; + display: inline-block; + border: 0.15rem solid var(--link-btn-bg); + border-radius: 0.6rem; + padding: 0.75rem 1rem; + background-color: var(--link-btn-bg); + color: var(--link-btn-text); + cursor: pointer; + font-weight: 700; + text-transform: uppercase; +} + +.link-btn, +.link-btn:hover, +.link-btn:visited { + text-decoration: none; +} + +.link-btn:hover { + cursor: pointer; + background-color: var(--link-btn-hover); + transition: 0.5s; } .full-width-youtube-video { - position: relative; - padding-bottom: 56.25%; - height: 0; -} - + position: relative; + padding-bottom: 56.25%; + height: 0; + } + .full-width-youtube-video iframe { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; -} - - -/* CONTAINER for wrapping the entire website */ -#container { - max-width: 1100px; - /* the width of the layout */ - /* if you change the above value, scroll to the bottom -and change the media query according to the comment! */ - margin: 0 auto; - /* this centers the entire page */ -} - -/* For all links on your page EXCEPT for the navigation */ -#container a { - color: var(--link-color); - font-weight: bold; -} - -#container a:hover { - color: var(--link-hover); -} - -#header { - width: 100%; - background-color: var(--content-bg); - height: 480px; - background-image: var(--header-image); - background-size: 100%; - background-repeat: no-repeat; - background-position: center; -} - -/* NAVIGATION SECTION */ -.sticky-nav { - position: fixed; - top: 0; - max-width: 1100px; -} - -#navbar { - height: 2.5rem; - background-color: var(--content-bg); - width: 100%; - margin-bottom: 0.625rem; - z-index: 999; -} - -#navbar ul { - display: flex; - padding: 0; - margin: 0; - list-style-type: none; - justify-content: space-evenly; -} - -#navbar li { - padding-top: 0.625rem; -} - -#navbar li a { - color: var(--link-color); - /* navbar text color */ - font-weight: 800; - text-decoration: none; - /* this removes the underline */ -} - -#navbar li a:hover { - color: var(--link-hover); - text-decoration: underline; -} - -#flex { - display: flex; -} - -/* EXTRAS */ -#topBar { - width: 100%; - height: 1.875rem; - padding: 0.625rem; - font-size: smaller; - background-color: var(--box-bg); -} - -/* MAIN CONTENT AREA, between the sidebars */ -main { - font-size: 1.2rem; - flex: 1; - order: 2; -} - -.content-section { - background-color: var(--content-bg); - padding: 1.25rem; -} - -.content-section:not(:first-child) { - margin-top: 0.625rem; -} - -/* This colors BOTH sidebars -If you want to style them separately, -create styles for #leftSidebar and #rightSidebar */ -aside { - background-color: var(--content-bg); - width: 12.5rem; - padding: 1.25rem; - font-size: smaller; - /* this makes the sidebar text slightly smaller */ -} - -aside h1, aside h2, aside h3 { - margin-bottom: 0; -} - -aside ul { - margin-top: 0.5rem; -} - -aside .box ul { - padding-left: 1.25rem; -} - -#leftSidebar { - order: 1; - margin-right: 1.25rem; -} - -#rightSidebar { - order: 3; - margin-left: 1.25rem; -} - -.sidebar-content { - position: sticky; - top: 40px; - font-size: 0.9rem; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; } /* TABLE OF CONTENTS */ - -.toc-title { - font-size: 1.3rem; - font-weight: bold; +.sidebar__toc { + position: sticky; + top: 5rem; } -.toc-list { - list-style: none; - margin-left: 0; - padding-left: 0; - font-size: 1rem; +.sidebar__toc-title { + font-size: 1.3rem; + font-weight: bold; } -.toc-list li { - margin-bottom: 0.5em; +.sidebar__toc-list { + list-style: none; + margin-left: 0; + padding-left: 0; + font-size: 1rem; } +.sidebar__toc-list li { + margin-bottom: 0.5em; +} + +.sidebar__toc-list ul { + padding-left: 1.25rem; +} /* FOOTER */ - footer { - background-color: var(--content-bg); - width: 100%; - height: 2.5rem; - text-align: center; - display: flex; - justify-content: center; - align-items: center; - margin-top: 1.25rem; -} - - -/* MEDIA QUERY STARTS HERE */ - -/* To keep things responsive, -if you want to change the width of your page, -take your new width of the #container, and then subtrack it by 100. -Use this new number as the "max-width" value below */ - -@media only screen and (max-width: 1000px) { - #flex { - flex-wrap: wrap; - } - - aside { - width: 100%; - } - - /* the order of the items is adjusted here for responsiveness. - since the sidebars would be too small on a mobile device. */ - main { - order: 1; - } - - #leftSidebar { - order: 2; - margin-right: 1.25rem; - } - - #rightSidebar { - order: 3; - margin-left: 1.25rem; - } - - #navbar ul { - flex-wrap: wrap; - } + background-color: var(--footer-bg); + width: 100vw; + padding: 0.5rem; + text-align: center; } \ No newline at end of file diff --git a/shrines/asummersend/components/footer.js b/shrines/asummersend/components/footer.js new file mode 100644 index 00000000..fdcadca2 --- /dev/null +++ b/shrines/asummersend/components/footer.js @@ -0,0 +1,15 @@ +class Footer extends HTMLElement { + constructor() { + super(); + } + + connectedCallback() { + this.innerHTML = ` + + `; + } +} + +customElements.define('footer-component', Footer); \ No newline at end of file diff --git a/shrines/asummersend/components/header.js b/shrines/asummersend/components/header.js new file mode 100644 index 00000000..8283b569 --- /dev/null +++ b/shrines/asummersend/components/header.js @@ -0,0 +1,27 @@ +class Header extends HTMLElement { + constructor() { + super(); + } + + connectedCallback() { + this.innerHTML = ` +
    + +
    + + `; + } +} + +customElements.define('header-component', Header); \ No newline at end of file diff --git a/shrines/asummersend/components/navbar.js b/shrines/asummersend/components/navbar.js new file mode 100644 index 00000000..b8087094 --- /dev/null +++ b/shrines/asummersend/components/navbar.js @@ -0,0 +1,66 @@ +/* FOR TOGGLING MENUS ON THE NAVBAR */ +const navToggle = document.querySelector(".nav__toggle"); +const navMenu = document.querySelector(".nav__menu"); +const navItems = document.querySelectorAll(".nav__item"); + +/* Toggle mobile navMenu */ +function toggleMenu() { + if (navMenu.classList.contains("nav__active")) { + navMenu.classList.remove("nav__active"); + navToggle.querySelector("a").innerHTML = ""; + } else { + navMenu.classList.add("nav__active"); + navToggle.querySelector("a").innerHTML = ""; + } +} + +/* Activate Submenu */ +function toggleItem() { + if (this.classList.contains("nav__submenu-active")) { + this.classList.remove("nav__submenu-active"); + } else if (navMenu.querySelector(".nav__submenu-active")) { + navMenu.querySelector(".nav__submenu-active").classList.remove("nav__submenu-active"); + this.classList.add("nav__submenu-active"); + } else { + this.classList.add("nav__submenu-active"); + } +} + +/* Close Submenu From Anywhere */ +function closeSubmenu(e) { + if (navMenu.querySelector(".nav__submenu-active")) { + let isClickInside = navMenu + .querySelector(".nav__submenu-active") + .contains(e.target); + + if (!isClickInside && navMenu.querySelector(".nav__submenu-active")) { + navMenu.querySelector(".nav__submenu-active").classList.remove("nav__submenu-active"); + } + } +} + +/* Event Listeners */ +navToggle.addEventListener("click", toggleMenu, false); +for (let item of navItems) { + if (item.querySelector(".nav__submenu")) { + item.addEventListener("click", toggleItem, false); + } + item.addEventListener("keypress", toggleItem, false); +} +document.addEventListener("click", closeSubmenu, false); + + +/* FOR MAKING THE NAVBAR STICKY */ +const header = document.querySelector("header"); +const navbar = document.querySelector("nav"); + + +window.addEventListener("scroll", e => { + const scrollPos = window.scrollY || document.documentElement.scrollTop; + const stickyLine = header.scrollHeight - navbar.scrollHeight; + if (scrollPos > stickyLine) { + navbar.classList.add("sticky-nav"); + } else { + navbar.classList.remove("sticky-nav"); + } +}); \ No newline at end of file diff --git a/shrines/asummersend/components/sidebar-content.js b/shrines/asummersend/components/sidebar-content.js new file mode 100644 index 00000000..23bda789 --- /dev/null +++ b/shrines/asummersend/components/sidebar-content.js @@ -0,0 +1,21 @@ +class RightSidebarContent extends HTMLElement { + constructor() { + super(); + } + + connectedCallback() { + this.innerHTML = ` +

    About

    +

    A Summer’s End — Hong Kong 1986 is a visual novel set in 1980s Hong Kong. It tells of a love story between two women. Lush and vibrant visuals, the game features over 400 unique hand-drawn artwork inspired by Asian cinema and 1980s anime.

    +

    Links

    + + `; + } +} + +customElements.define('right-sidebar-component', RightSidebarContent); \ No newline at end of file diff --git a/shrines/asummersend/gallery.html b/shrines/asummersend/gallery.html index 846971d2..887e301b 100644 --- a/shrines/asummersend/gallery.html +++ b/shrines/asummersend/gallery.html @@ -1,78 +1,64 @@ - + - + - + - + + + + + + + + + Gallery | A Summer’s End — Hong Kong 1986 Shrine | Leilukin's Hub - -
    -
    - - + +
    + + +
    +
    +

    A Summer’s End — Hong Kong 1986 Gallery

    +

    A Summer’s End — Hong Kong 1986 was lovingly crafted by its developer Oracle and Bone with gorgeous art, so i want to make a page dedicated to my appreciation for the visual novel’s art.

    +

    I also highly recommend checking out the official site of A Summer's End and the social media accounts of Oracle and Bone's for more beauriful art about the visual novel!

    +
    + +
    +

    In-Game Screenshots

    + In-Game Screenshot of A Summer's End 01 + In-Game Screenshot of A Summer's End 02 + In-Game Screenshot of A Summer's End 03 + In-Game Screenshot of A Summer's End 04 + In-Game Screenshot of A Summer's End 05 + In-Game Screenshot of A Summer's End 06 + In-Game Screenshot of A Summer's End 07 + In-Game Screenshot of A Summer's End 08 + In-Game Screenshot of A Summer's End 09 +
    -
    - - - -
    -
    -

    A Summer’s End — Hong Kong 1986 Gallery

    -

    A Summer’s End — Hong Kong 1986 was lovingly crafted by its developer Oracle and Bone with gorgeous art, so i want to make a page dedicated to my appreciation for the visual novel’s art.

    -

    I also highly recommend checking out the official site of A Summer's End and the social media accounts of Oracle and Bone's for more beauriful art about the visual novel!

    -
    - -
    -

    In-Game Screenshots

    - In-Game Screenshot of A Summer's End 01 - In-Game Screenshot of A Summer's End 02 - In-Game Screenshot of A Summer's End 03 - In-Game Screenshot of A Summer's End 04 - In-Game Screenshot of A Summer's End 05 - In-Game Screenshot of A Summer's End 06 - In-Game Screenshot of A Summer's End 07 - In-Game Screenshot of A Summer's End 08 - In-Game Screenshot of A Summer's End 09 -
    -
    - -
    -
    -
    + + + \ No newline at end of file diff --git a/shrines/asummersend/index.html b/shrines/asummersend/index.html index 64fff96c..5380f13a 100644 --- a/shrines/asummersend/index.html +++ b/shrines/asummersend/index.html @@ -1,5 +1,5 @@ - + @@ -12,80 +12,66 @@ - + - + + + + + + + + + A Summer’s End — Hong Kong 1986 Shrine | Leilukin's Hub - -
    -
    - - + +
    + + +
    +
    +

    Welcome to my A Summer’s End — Hong Kong 1986 Shrine!

    + Promotional image of A Summer’s End — Hong Kong 1986 +

    A Summer’s End — Hong Kong 1986 is a visual novel developed by Oracle and Bone, a Canada-based independent studio consists of two Asian queer women, Charissa So and Tida Kietsungden. The visual novel tells of a lesbian romance story between Michelle Cheung, an office worker, and Sam Wong, a video store owner, that takes place in Hong Kong in the year of 1986.

    + +

    Initially released in English on 23 Apr, 2020, A Summer’s End has also been translated into Simplified Chinese, Traditional Chinese and Cantonese. The Chinese translations were released on July 9, 2021.

    + +

    A Summer’s End is available on Steam and itch.io. It also has an official website.

    +
    + +
    +

    How I Discovered A Summer’s End — Hong Kong 1986

    + In-Game Screenshot of A Summer's End 02 +

    I first learned about A Summer’s End — Hong Kong 1986 through Linux Game Consortium, a Linux gaming news website. There was a period where I set up my gaming laptop to dual boot Windows 10 and Linux, so I ended up following Linux gaming news for a while. While Windows is still my main platform for gaming, the discovery of A Summer’s End was the biggest unexpected benefit and surprise when I tried out Linux.

    + +

    As a lesbian, the premise of a visual novel about a sapphic romance already caught my interest, but what urged me to play it even more was the Hong Kong setting, which made my interest in the game personal, since I am a Cantonese-speaking Chinese lesbian who grew up with Hong Kong media. Not to mention, it is rare to see a fiction that tells of a sapphic love story that takes place in Hong Kong.

    +
    + +
    +

    Why A Summer’s End — Hong Kong 1986 is Special to Me

    + In-Game Screenshot of A Summer's End 05 +

    As a Chinese lesbian who speaks Cantonese and had engaged with a lot of Hong Kong media during my teenage years, A Summer’s End - Hong Kong 1986 is the lesbian story that I relate to and feel represented the most.

    + +

    I relate to both the protagonists, Michelle and Sam, as their characters represent different parts of my life as a Chinese lesbian. I also relate to the story’s theme of hoping for the future of our homeland despite the political uncertainties.

    + +

    My standards for lesbian representation in media has also become much higher because of this visual novel, since A Summer’s End is also a perfect example of how some of the best representations of minority groups are actually found in media made by indie creators, especially those who are part of those minority groups, so we shouldn’t rely on mainstream media for representation especially when big name media companies are going to just give us scraps.

    + +

    If you ask me to list just one piece of queer art that means everything to me, that gives me comfort, inspiration, and strength the most, A Summer’s End would be it.

    + +

    I seriously cannot recommend A Summer’s End enough, especially for Asian sapphic women.

    +
    -
    + - - -
    -
    -

    Welcome to my A Summer’s End — Hong Kong 1986 Shrine!

    -

    A Summer’s End — Hong Kong 1986 is a visual novel developed by Oracle and Bone, a Canada-based independent studio consists of two Asian queer women, Charissa So and Tida Kietsungden. The visual novel tells of a lesbian romance story between Michelle Cheung, an office worker, and Sam Wong, a video store owner, that takes place in Hong Kong in the year of 1986.

    - -

    Initially released in English on 23 Apr, 2020, A Summer’s End has also been translated into Simplified Chinese, Traditional Chinese and Cantonese. The Chinese translations were released on July 9, 2021.

    - -

    A Summer’s End is available on Steam and itch.io. It also has an official website.

    -
    - -
    -

    How I Discovered A Summer’s End — Hong Kong 1986

    - In-Game Screenshot of A Summer's End 02 -

    I first learned about A Summer’s End — Hong Kong 1986 through Linux Game Consortium, a Linux gaming news website. There was a period where I set up my gaming laptop to dual boot Windows 10 and Linux, so I ended up following Linux gaming news for a while. While Windows is still my main platform for gaming, the discovery of A Summer’s End was the biggest unexpected benefit and surprise when I tried out Linux.

    - -

    As a lesbian, the premise of a visual novel about a sapphic romance already caught my interest, but what urged me to play it even more was the Hong Kong setting, which made my interest in the game personal, since I am a Cantonese-speaking Chinese lesbian who grew up with Hong Kong media. Not to mention, it is rare to see a fiction that tells of a sapphic love story that takes place in Hong Kong.

    -
    - -
    -

    Why A Summer’s End — Hong Kong 1986 is Special to Me

    - In-Game Screenshot of A Summer's End 05 -

    As a Chinese lesbian who speaks Cantonese and had engaged with a lot of Hong Kong media during my teenage years, A Summer’s End - Hong Kong 1986 is the lesbian story that I relate to and feel represented the most.

    - -

    I relate to both the protagonists, Michelle and Sam, as their characters represent different parts of my life as a Chinese lesbian. I also relate to the story’s theme of hoping for the future of our homeland despite the political uncertainties.

    - -

    My standards for lesbian representation in media has also become much higher because of this visual novel, since A Summer’s End is also a perfect example of how some of the best representations of minority groups are actually found in media made by indie creators, especially those who are part of those minority groups, so we shouldn’t rely on mainstream media for representation especially when big name media companies are going to just give us scraps.

    - -

    If you ask me to list just one piece of queer art that means everything to me, that gives me comfort, inspiration, and strength the most, A Summer’s End would be it.

    - -

    I seriously cannot recommend A Summer’s End enough, especially for Asian sapphic women.

    -
    -
    - -
    -
    -
    - - + + + \ No newline at end of file diff --git a/shrines/asummersend/playlists.html b/shrines/asummersend/playlists.html index c1dbff0f..5da9a683 100644 --- a/shrines/asummersend/playlists.html +++ b/shrines/asummersend/playlists.html @@ -1,113 +1,95 @@ - + - + - + - + + + + + + + + + Playlists | A Summer’s End — Hong Kong 1986 Shrine | Leilukin's Hub - -
    - + + +
    +
    +

    A Summer’s End — Hong Kong 1986 Playlists

    +

    A Summer’s End — Hong Kong 1986 is a gold mine of music. Not only that the visual novel has a great soundtrack (its official soundtrack was released on August 21, 2020), but the developer Oracle and Bone has also compiled playlists related to the game.

    + +

    As a tribute to A Summer's End, I have also created a fanmix myself.

    +
    + +
    +

    Sam's Mixtape

    +

    Compiled by Oracle and Bone, Sam’s Mixtape A-Side and B-Side are playlists of the songs that Sam was listening to on the first day she met Michelle.

    + +

    Sam's Mixtape A-Side

    + Listen on Spotify

    + + +

    Sam's Mixtape B-Side

    + Listen on Spotify

    + +
    + +
    +

    夏日戀人 (Summer Lover)

    +

    Oracle and Bone compiled this playlist as a tribute to Anita Mui, who was a major inspiration for A Summer’s End — Hong Kong 1986.

    + + Listen on Spotify

    + +
    + +
    +

    My Dear Summer Lover

    + A playlist cover image made of Sam and Michelle from A Summer's End being close to kissing, with the title 'My Dear Summer Lover: A Sam x Michelle Fanmix' +

    My fanmix for A Summer’s End — Hong Kong 1986, dedicated to Sam and Michelle’s love story.

    + +

    This mix contains mostly Cantonese and English songs, with one Mandarin song. Majority of these songs were performed by Hong Kong artists and released in the 80s, because A Summer’s End took place in Hong Kong and in the 80s.

    + +

    I have carefully selected and arranged these tracks, so the lyrics would reflect Sam and Michelle’s relationship development throughout A Summer’s End. Therefore, the content of this mix could be considered spoilers if you have not played the visual novel.

    + +

    Since Oracle and Bone has cited Anita Mui as a major inspiration for them and this visual novel, I have also included multiple songs performed by Anita Mui in this mix. Because A Summer’s End is a lesbian story, when I was choosing which songs to include in this mix, I also prioritize songs that were performed by women artists.

    + + Listen on Spotify

    + +
    -
    - - - -
    -
    -

    A Summer’s End — Hong Kong 1986 Playlists

    -

    A Summer’s End — Hong Kong 1986 is a gold mine of music. Not only that the visual novel has a great soundtrack (its official soundtrack was released on August 21, 2020), but the developer Oracle and Bone has also compiled playlists related to the game.

    - -

    As a tribute to A Summer's End, I have also created a fanmix myself.

    -
    - -
    -

    Sam's Mixtape

    -

    Compiled by Oracle and Bone, Sam’s Mixtape A-Side and B-Side are playlists of the songs that Sam was listening to on the first day she met Michelle.

    - -

    Sam's Mixtape A-Side

    -

    - - -

    Sam's Mixtape B-Side

    -

    - -
    - -
    -

    夏日戀人 (Summer Lover)

    -

    Oracle and Bone compiled this playlist as a tribute to Anita Mui, who was a major inspiration for A Summer’s End — Hong Kong 1986.

    - -

    - -
    - -
    -

    My Dear Summer Lover

    - A playlist cover image made of Sam and Michelle from A Summer's End being close to kissing, with the title 'My Dear Summer Lover: A Sam x Michelle Fanmix' -

    My fanmix for A Summer’s End — Hong Kong 1986, dedicated to Sam and Michelle’s love story.

    - -

    This mix contains mostly Cantonese and English songs, with one Mandarin song. Majority of these songs were performed by Hong Kong artists and released in the 80s, because A Summer’s End took place in Hong Kong and in the 80s.

    - -

    I have carefully selected and arranged these tracks, so the lyrics would reflect Sam and Michelle’s relationship development throughout A Summer’s End. Therefore, the content of this mix could be considered spoilers if you have not played the visual novel.

    - -

    Since Oracle and Bone has cited Anita Mui as a major inspiration for them and this visual novel, I have also included multiple songs performed by Anita Mui in this mix. Because A Summer’s End is a lesbian story, when I was choosing which songs to include in this mix, I also prioritize songs that were performed by women artists.

    - -

    - -
    -
    - - - -
    -
    -
    + + + \ No newline at end of file diff --git a/shrines/asummersend/trivia.html b/shrines/asummersend/trivia.html index bc98c28d..c489d6c8 100644 --- a/shrines/asummersend/trivia.html +++ b/shrines/asummersend/trivia.html @@ -1,108 +1,94 @@ - + - + - + - + + + + + + + + + Trivia | A Summer’s End — Hong Kong 1986 Shrine | Leilukin's Hub - -
    -
    - - + +

    Zodiac Signs:

    + + +

    MBTI personalities

    + + +

    Inspirations

    +
      +
    • The character and fashion of Cecelia has been largely inspired by Anita Mui. [Source]
    • +
    +
    -
    - - - -
    -
    -

    A Summer’s End — Hong Kong 1986 Trivia

    -

    Here is a collection of trivia about the characters from A Summer’s End provided by the developer Oracle and Bone on their social media pages, especially Tumblr.

    -
    - -
    -

    Movies and Music References

    -

    A Summer’s End contains many references to movies and music. This community post on Steam compiles a list of the movie and music references made in the game. Please be aware it contains spoilers!

    - -

    Movies and Music in A Summer's End – Hong Kong 1986

    -
    - -
    -

    Character Trivia

    - -

    Chinese Names

    -

    Michelle Cheung's Chinese name is 張鳳霞, while Sam Wong's Chinese name is 黃嘉欣. Oracle and Bone had commented on their idea behind the characters' Chinese names on this Tumblr post:

    -
    - A part of how we came up with their names was by referencing names of Hong Kong film actresses from their time period as a little homage to them. We also thought of how their names might reflect their upbringing. For example, despite Michelle being younger than Sam, she has a more old fashioned sounding Chinese name. The meaning of their Chinese names was also important to us. We particularly wanted Michelle’s name to have metaphoric meaning that reflected her story as well as the themes of the game. -
    - -

    Birthdays

    - - -

    Zodiac Signs:

    - - -

    MBTI personalities

    - - -

    Inspirations

    -
      -
    • The character and fashion of Cecelia has been largely inspired by Anita Mui. [Source]
    • -
    -
    -
    - -
    -
    -
    + + + \ No newline at end of file diff --git a/shrines/index.html b/shrines/index.html index 9bd9b64a..ce1fa5e0 100644 --- a/shrines/index.html +++ b/shrines/index.html @@ -1,5 +1,5 @@ - + @@ -12,32 +12,28 @@ - + + - + + + Shrines | Leilukin's Hub + +
    + -
    -
    - -
    - -
    - - - -
    +
    +

    Shrines

    Internet shrines are website pages dedicated to specific topics or interests. Here is a list of shrines I have made for my own website.

    @@ -46,10 +42,13 @@

    Star Wars: Knights of the Old Republic

    Header of the Star Wars: Knights of the Old Republic series -
    - +
    - -
    + + +
    + \ No newline at end of file diff --git a/shrines/shrine.js b/shrines/shrine.js deleted file mode 100644 index ae0d522c..00000000 --- a/shrines/shrine.js +++ /dev/null @@ -1,28 +0,0 @@ -/* SCRIPT FOR THE NAVIGATION BAR */ - -// When the user scrolls the page, execute stickyFunction -window.onscroll = function() {stickyFunction()}; - -// Get the navbar -var navbar = document.getElementById("navbar"); - -// Get the offset position of the navbar -var sticky = navbar.offsetTop; - -// Add the sticky class to the navbar when you reach its scroll position. Remove "sticky" when you leave the scroll position -function stickyFunction() { - if (window.pageYOffset >= sticky) { - navbar.classList.add("sticky-nav") - } else { - navbar.classList.remove("sticky-nav"); - } -} - - -/* SCRIPT FOR THE FOOTER */ - -// Generate footer content -var footerHTML = ` -

    This shrine is made with ♥ by Leilukin

    -`; -document.querySelector("#footer").innerHTML = footerHTML; \ No newline at end of file diff --git a/shrines/starwarskotor/articles/arren-kae-kreia-theory.html b/shrines/starwarskotor/articles/arren-kae-kreia-theory.html index 23d81e13..4eff39d4 100644 --- a/shrines/starwarskotor/articles/arren-kae-kreia-theory.html +++ b/shrines/starwarskotor/articles/arren-kae-kreia-theory.html @@ -1,5 +1,5 @@ - + @@ -12,52 +12,50 @@ - + - - + + + + + + + + + My Thoughts on the “Arren Kae is Kreia” Theory | Articles | Star Wars: Knights of the Old Republic Shrine | Leilukin's Hub - -
    -
    - - -
    + +
    + -
    +
    +

    Why I Personally Do Not Subscribe to the “Arren Kae is Kreia” Theory

    - +

    Originally published on January 27, 2021 on Tumblr

    + +

    If you are a fan of Star Wars: Knights of the Old Republic II: The Sith Lords, you might have heard of the theory that Arren Kae, mother of Brianna the Handmaiden, and Kreia are the same person. If you have not heard of the theory, a compilation of the in-game evidence used to support the theory can be found on the Let’s Play Archive. The theory has become so popular that many fans of the game take it for granted, which can make it easy to forget that the theory was never officially confirmed.

    -
    -
    -

    Why I Personally Do Not Subscribe to the “Arren Kae is Kreia” Theory

    +

    I think the “Arren Kae is Kreia” theory is well-thought-out, and I agree that there are multiple in-game evidence that can support the theory. However, personally I do not subscribe to the theory, nor incorporate it into my headcanons for Knights of the Old Republic 2. I have eventually decided that in my KotOR 2 headcanons, I keep Arren and Kreia as two different people. Why?

    -

    Originally published on January 27, 2021 on Tumblr

    - -

    If you are a fan of Star Wars: Knights of the Old Republic II: The Sith Lords, you might have heard of the theory that Arren Kae, mother of Brianna the Handmaiden, and Kreia are the same person. If you have not heard of the theory, a compilation of the in-game evidence used to support the theory can be found on the Let’s Play Archive. The theory has become so popular that many fans of the game take it for granted, which can make it easy to forget that the theory was never officially confirmed.

    - -

    I think the “Arren Kae is Kreia” theory is well-thought-out, and I agree that there are multiple in-game evidence that can support the theory. However, personally I do not subscribe to the theory, nor incorporate it into my headcanons for Knights of the Old Republic 2. I have eventually decided that in my KotOR 2 headcanons, I keep Arren and Kreia as two different people. Why?

    - -

    Firstly, I want Brianna to have more positive women role models, especially given her troubled relationships with her sisters and Atris. Arren was the reason Brianna wants to be a Jedi, and the Kreia we see in the game is definitely not a good role model for someone who wants to be a Jedi. Kreia might have been a better person when she was a Jedi, but we never know for sure. Not to mention Kreia doesn’t treat Brianna any better than the other party members. Brianna deserves better.

    - -

    Secondly, I like the theory suggested by an anonymous message I received on Tumblr that Arren Kae was to Kreia what the Exile was to Atris. The KotOR 2 game itself already builds up parallels between Kreia and Atris: both were fallen Jedi who personally felt betrayed by the Jedi in some ways, and many of the things in KotOR 2 happen because of their plans, schemes and manipulation. Therefore, I love the idea that if Arren and Kreia were two different people, they had similar dynamics to the Exile and Atris, in that Arren and Kreia were very good friends in the past, with Kreia potentionally having romantic feelings for Arren, but Arren's departure and exile from the Jedi Order became a catalyst for Kreia's disillusionment with the Jedi Order, and it only got worse from there.

    - -

    Ultimately, since the "Arren Kae is Kreia" theory is never officially confirmed, I am free to choose to not subscribe to the theory, regardless of how popular the theory is in the fandom, and come up with my own theory about Arren Kae instead.

    - -

    In conclusion, Keeping Arren Kae and Kreia as two different people in my KotOR headcanons allows Arren to be a positive influence in Brianna’s life that Brianna needs. Also, there are many interesting ideas and possibilities about Arren and Kreia’s dynamics that could be explored.

    -
    -
    +

    Firstly, I want Brianna to have more positive women role models, especially given her troubled relationships with her sisters and Atris. Arren was the reason Brianna wants to be a Jedi, and the Kreia we see in the game is definitely not a good role model for someone who wants to be a Jedi. Kreia might have been a better person when she was a Jedi, but we never know for sure. Not to mention Kreia doesn’t treat Brianna any better than the other party members. Brianna deserves better.

    -
    -
    -
    +

    Secondly, I like the theory suggested by an anonymous message I received on Tumblr that Arren Kae was to Kreia what the Exile was to Atris. The KotOR 2 game itself already builds up parallels between Kreia and Atris: both were fallen Jedi who personally felt betrayed by the Jedi in some ways, and many of the things in KotOR 2 happen because of their plans, schemes and manipulation. Therefore, I love the idea that if Arren and Kreia were two different people, they had similar dynamics to the Exile and Atris, in that Arren and Kreia were very good friends in the past, with Kreia potentionally having romantic feelings for Arren, but Arren's departure and exile from the Jedi Order became a catalyst for Kreia's disillusionment with the Jedi Order, and it only got worse from there.

    +

    Ultimately, since the "Arren Kae is Kreia" theory is never officially confirmed, I am free to choose to not subscribe to the theory, regardless of how popular the theory is in the fandom, and come up with my own theory about Arren Kae instead.

    + +

    In conclusion, Keeping Arren Kae and Kreia as two different people in my KotOR headcanons allows Arren to be a positive influence in Brianna’s life that Brianna needs. Also, there are many interesting ideas and possibilities about Arren and Kreia’s dynamics that could be explored.

    + + + + + + \ No newline at end of file diff --git a/shrines/starwarskotor/articles/handmaiden-sisters-mother.html b/shrines/starwarskotor/articles/handmaiden-sisters-mother.html index 04a5c820..dca0f9c5 100644 --- a/shrines/starwarskotor/articles/handmaiden-sisters-mother.html +++ b/shrines/starwarskotor/articles/handmaiden-sisters-mother.html @@ -1,5 +1,5 @@ - + @@ -12,56 +12,54 @@ - + - - + + + + + + + + + Where is the Mother of Handmaiden’s Sisters? | Articles | Star Wars: Knights of the Old Republic Shrine | Leilukin's Hub - -
    -
    - - -
    + +
    + -
    +
    +

    Where is the Mother of the Handmaiden’s Sisters?

    - - -
    -
    -

    Where is the Mother of the Handmaiden’s Sisters?

    - -

    Originally published on February 19, 2020 on Tumblr

    - -

    In Star Wars: Knights of the Old Republic II: The Sith Lords, from the first conversation you could have with Brianna, also known as The Last Handmaiden, in the secret Jedi academy on Telos, to the moment where you train Brianna to become a Jedi Guardian if she joins your party, the game has consistently shown that Brianna's family plays a major part of her story and character arc due to her identity as an illegitimate child of the Echani general Yusanis and Jedi Knight Arren Kae. I have always enjoyed Brianna's arc, so even when I am playing a female Jedi Exile, I always use mods that allow Brianna to join a female Exile's party.

    +

    Originally published on February 19, 2020 on Tumblr

    -

    As I have thought more about Brianna’s family drama, one day I have come to realise that there is a mystery about Brianna’s family that I find it unfortunate that we know next to nothing about: the mother of Brianna’s sisters.

    - -

    I find it curious that we never get to learn anything about the mother of Brianna’s sisters at all, aside from the fact that she was not Arren Kae. Given what we know about Brianna’s family and the drama surrounding it, the realization that the game never explores the mother of Brianna’s sisters has made me want to ask a lot of questions about her:

    - -

    Where is she? Is she still alive? How is her relationship with Yusanis and her own biological daughters? How much did she know about Yusanis’ affair with Arren? Did she know Arren? Did she actually know Brianna? If so, how did she feel about Brianna?

    - -

    In the conversation where Brianna confirms she had a different mother than her sisters, she says she never saw her mother’s face, so we can assume that Arren was not part of Brianna’s life when Brianna grew up. In the same conversation, the extent Brianna talks about her father, like the reason her father went to fight in the Mandalorian Wars was to join her mother and how he had changed after returning from the war, suggests that Brianna knows her father well enough, so I guess she have lived with her father, though this makes me wonder: was the mother of Brianna’s sisters part of Brianna’s life when she grew up?

    - -

    I also wonder, when exactly did Brianna’s sisters know about their father’s affair with Arren? Did Yusanis tell them himself or did they find out in another way? Did Brianna and her sisters know each other before learning about their father’s affair?

    - -

    I guess it makes sense that we know more about Arren Kae than we did the mother of Brianna’s sisters, since she was the mother of one of the party members, while the Handmaiden Sisters are NPCs who are not even given any names. Arren is also mentioned by Mical the Disciple as one of Revan’s masters, and Revan is an important character in both Knights of the Old Republic games. If you subscribe to the theory that Arren Kae and Kreia are the same person (I have my own reasons not to, however), Arren’s importance increases even more.

    - -

    However, I would still like to know at least a little more about the mother of Brianna’s sisters, since Brianna’s complicated relationship with her sisters also affects Brianna’s character and story arc.

    -
    -
    +

    In Star Wars: Knights of the Old Republic II: The Sith Lords, from the first conversation you could have with Brianna, also known as The Last Handmaiden, in the secret Jedi academy on Telos, to the moment where you train Brianna to become a Jedi Guardian if she joins your party, the game has consistently shown that Brianna's family plays a major part of her story and character arc due to her identity as an illegitimate child of the Echani general Yusanis and Jedi Knight Arren Kae. I have always enjoyed Brianna's arc, so even when I am playing a female Jedi Exile, I always use mods that allow Brianna to join a female Exile's party.

    + +

    As I have thought more about Brianna’s family drama, one day I have come to realise that there is a mystery about Brianna’s family that I find it unfortunate that we know next to nothing about: the mother of Brianna’s sisters.

    + +

    I find it curious that we never get to learn anything about the mother of Brianna’s sisters at all, aside from the fact that she was not Arren Kae. Given what we know about Brianna’s family and the drama surrounding it, the realization that the game never explores the mother of Brianna’s sisters has made me want to ask a lot of questions about her:

    + +

    Where is she? Is she still alive? How is her relationship with Yusanis and her own biological daughters? How much did she know about Yusanis’ affair with Arren? Did she know Arren? Did she actually know Brianna? If so, how did she feel about Brianna?

    + +

    In the conversation where Brianna confirms she had a different mother than her sisters, she says she never saw her mother’s face, so we can assume that Arren was not part of Brianna’s life when Brianna grew up. In the same conversation, the extent Brianna talks about her father, like the reason her father went to fight in the Mandalorian Wars was to join her mother and how he had changed after returning from the war, suggests that Brianna knows her father well enough, so I guess she have lived with her father, though this makes me wonder: was the mother of Brianna’s sisters part of Brianna’s life when she grew up?

    + +

    I also wonder, when exactly did Brianna’s sisters know about their father’s affair with Arren? Did Yusanis tell them himself or did they find out in another way? Did Brianna and her sisters know each other before learning about their father’s affair?

    + +

    I guess it makes sense that we know more about Arren Kae than we did the mother of Brianna’s sisters, since she was the mother of one of the party members, while the Handmaiden Sisters are NPCs who are not even given any names. Arren is also mentioned by Mical the Disciple as one of Revan’s masters, and Revan is an important character in both Knights of the Old Republic games. If you subscribe to the theory that Arren Kae and Kreia are the same person (I have my own reasons not to, however), Arren’s importance increases even more.

    + +

    However, I would still like to know at least a little more about the mother of Brianna’s sisters, since Brianna’s complicated relationship with her sisters also affects Brianna’s character and story arc.

    +
    -
    -
    -
    + + + \ No newline at end of file diff --git a/shrines/starwarskotor/articles/index.html b/shrines/starwarskotor/articles/index.html index b9b6135f..420d58d9 100644 --- a/shrines/starwarskotor/articles/index.html +++ b/shrines/starwarskotor/articles/index.html @@ -1,5 +1,5 @@ - + @@ -12,48 +12,55 @@ - + - - + + + + + + + + + Articles | Star Wars: Knights of the Old Republic Shrine | Leilukin's Hub - -
    -
    - - + +
    + + +
    +
    +

    My Star Wars: Knights of the Old Republic Articles

    +

    Here is a list of articles I have written for the Star Wars: Knights of the Old Republic series.

    +
    + +
    +

    KotOR 1

    + +
    + +
    +

    KotOR 2

    + +
    -
    - - - -
    -
    -

    My Star Wars: Knights of the Old Republic Articles

    -

    Here is a list of articles I have written for the Star Wars: Knights of the Old Republic series.

    -
    - - -
    - -
    -
    -
    + + + \ No newline at end of file diff --git a/shrines/starwarskotor/articles/juhani-hostility-towards-canderous.html b/shrines/starwarskotor/articles/juhani-hostility-towards-canderous.html index 5a1ae75f..2cf07273 100644 --- a/shrines/starwarskotor/articles/juhani-hostility-towards-canderous.html +++ b/shrines/starwarskotor/articles/juhani-hostility-towards-canderous.html @@ -1,5 +1,5 @@ - + @@ -12,63 +12,61 @@ - + - - + + + + + + + + + Access Juhani's Conversaion about Canderous without Restoration Mods | Articles | Star Wars: Knights of the Old Republic Shrine | Leilukin's Hub - -
    -
    - - -
    + +
    + -
    +
    +

    How to Access Juhani's Conversaion about Canderous without Restoration Mods

    - +

    Published on October 11, 2022

    + +
    + +
    + +

    If you follow the modding scene of Star Wars: Knights of the Old Republic, you might be aware of a conversation with Juhani where the player asks her why she is hostile towards Canderous. It is a commonly assumed that it is cut content, because the condition to trigger said conversation is unknown by the KotOR community, and there are mods that aim to restore said conversation.

    + +

    After thorough investigation into the game files, I finally discovered that it is actually possible to access Juhani's conversation about Canderous without any restoration mod. However, the issue is that in the vanilla game, the condition to make said conversation available is very specific, thus making it extremely easy to miss. Therefore, what restoration mods do to this specific Juhani conversation is making it easier to access.

    + +

    Here are the conditions to make Juhani's conversation about Canderous without restoration mods:

    + +

    Firstly, you need to have both Canderous and Juhani in your party when talking to certain NPCs on Dantooine. Canderous will make comments when you talk to those NPCs, then Juhani will interject and show hostility towards Canderous. Specifically, these interjections happen when you:

    +
      +
    • Talk to Gar at the courtyard outside the Jedi Enclave and ask him about the problems with kath hounds and Mandalorians
    • +
    • Accuse Handon Guld of murdering Calder Nettic for cheating on his wife, during the "Murdered Settler" side quest
    • +
    • Tell Nurik Sandral you are investigating Shen Matale's disappearance, during the "Sandral-Matele Feud" side quest
    • +
    + +

    You need to hear Juhani's interjections to Canderous' comments on at least two of the above occasions.

    + +

    Secondly, you need to progress Juhani's conversations to the point where she reveals that her family fled to Taris because the Mandalorians attacked the Cathar homeworld and slaughtered many Cathar people. It is after this conversation where you get the dialogue option to ask Juhani why she is hostile towards Canderous.

    + +

    As evidence, I have recorded and compile the above video myself showing Juhani's interactions with Canderous and Juhani's conversation about Canderous.

    +
    -
    -
    -

    How to Access Juhani's Conversaion about Canderous without Restoration Mods

    - -

    Published on October 11, 2022

    - -
    - -
    - -

    If you follow the modding scene of Star Wars: Knights of the Old Republic, you might be aware of a conversation with Juhani where the player asks her why she is hostile towards Canderous. It is a commonly assumed that it is cut content, because the condition to trigger said conversation is unknown by the KotOR community, and there are mods that aim to restore said conversation.

    - -

    After thorough investigation into the game files, I finally discovered that it is actually possible to access Juhani's conversation about Canderous without any restoration mod. However, the issue is that in the vanilla game, the condition to make said conversation available is very specific, thus making it extremely easy to miss. Therefore, what restoration mods do to this specific Juhani conversation is making it easier to access.

    - -

    Here are the conditions to make Juhani's conversation about Canderous without restoration mods:

    - -

    Firstly, you need to have both Canderous and Juhani in your party when talking to certain NPCs on Dantooine. Canderous will make comments when you talk to those NPCs, then Juhani will interject and show hostility towards Canderous. Specifically, these interjections happen when you:

    -
      -
    • Talk to Gar at the courtyard outside the Jedi Enclave and ask him about the problems with kath hounds and Mandalorians
    • -
    • Accuse Handon Guld of murdering Calder Nettic for cheating on his wife, during the "Murdered Settler" side quest
    • -
    • Tell Nurik Sandral you are investigating Shen Matale's disappearance, during the "Sandral-Matele Feud" side quest
    • -
    - -

    You need to hear Juhani's interjections to Canderous' comments on at least two of the above occasions.

    - -

    Secondly, you need to progress Juhani's conversations to the point where she reveals that her family fled to Taris because the Mandalorians attacked the Cathar homeworld and slaughtered many Cathar people. It is after this conversation where you get the dialogue option to ask Juhani why she is hostile towards Canderous.

    - -

    As evidence, I have recorded and compile the above video myself showing Juhani's interactions with Canderous and Juhani's conversation about Canderous.

    -
    -
    - -
    -
    -
    + + + \ No newline at end of file diff --git a/shrines/starwarskotor/articles/juhani-lesbian-evidence.html b/shrines/starwarskotor/articles/juhani-lesbian-evidence.html index d4697707..56a1c55c 100644 --- a/shrines/starwarskotor/articles/juhani-lesbian-evidence.html +++ b/shrines/starwarskotor/articles/juhani-lesbian-evidence.html @@ -1,5 +1,5 @@ - + @@ -12,82 +12,80 @@ - + - - + + + + + + + + + Evidence of Juhani being a Lesbian from Star Wars: KotOR's Game Files | Articles | Star Wars: Knights of the Old Republic Shrine | Leilukin's Hub - -
    -
    - - -
    + +
    + -
    +
    +

    Evidence of Juhani being a Lesbian from Star Wars: Knights of the Old Republic's Game Files

    - +

    Originally published on July 15, 2017 on Tumblr

    + +

    The fact that Juhani from Star Wars: Knights of the Old Republic is a canon lesbian character is a fairly common knowledge among LGBTQ+ fans of Star Wars. However, occasionally I still see people who do not know that the first KotOR game has the very first confirmed gay character in any Star Wars media, including the old Star Wars Expanded Universe; there are some other people who actually believe that Juhani is bisexual.

    -
    -
    -

    Evidence of Juhani being a Lesbian from Star Wars: Knights of the Old Republic's Game Files

    +

    Therefore, as a lesbian and someone who has made mods for the Knights of the Old Republic games and written a detailed Juhani romance guide, I would like to present hard evidence from the game files to point out that Juhani is in fact a lesbian, a woman who is exclusively attracted to women.

    -

    Originally published on July 15, 2017 on Tumblr

    - -

    The fact that Juhani from Star Wars: Knights of the Old Republic is a canon lesbian character is a fairly common knowledge among LGBTQ+ fans of Star Wars. However, occasionally I still see people who do not know that the first KotOR game has the very first confirmed gay character in any Star Wars media, including the old Star Wars Expanded Universe; there are some other people who actually believe that Juhani is bisexual.

    +

    The most crucial evidence comes from k_hjuh_dialog.dlg, Juhani’s main dialogue file which contains all the conversations covered in my Juhani Romance Guide. If you use the KotOR Tool to browse the game files, k_hjuh_dialog.dlg is under KotOR I > BIFs > templates.bif > Dialog. I recommend using DLGEditor to view the .dlg files from KotOR games.

    -

    Therefore, as a lesbian and someone who has made mods for the Knights of the Old Republic games and written a detailed Juhani romance guide, I would like to present hard evidence from the game files to point out that Juhani is in fact a lesbian, a woman who is exclusively attracted to women.

    +

    Here is a screenshot of my DLGEditor with the most relevant part of the k_hjuh_dialog.dlg file:
    + A screenshot of Version 2.3.2 of the DLG Editor displaying Juhani's main dialogue file, with the first conversation highlighted

    -

    The most crucial evidence comes from k_hjuh_dialog.dlg, Juhani’s main dialogue file which contains all the conversations covered in my Juhani Romance Guide. If you use the KotOR Tool to browse the game files, k_hjuh_dialog.dlg is under KotOR I > BIFs > templates.bif > Dialog. I recommend using DLGEditor to view the .dlg files from KotOR games.

    +

    The highlighted dialogue shown in the screenshot (”I feel I must apologize for the way I acted towards you before, in the grove. It was wrong of me.”) is the beginning of your first personal conversation with Juhani after Juhani joins your party. Here is a video of the conversation in question:

    -

    Here is a screenshot of my DLGEditor with the most relevant part of the k_hjuh_dialog.dlg file:
    - A screenshot of Version 2.3.2 of the DLG Editor displaying Juhani's main dialogue file, with the first conversation highlighted

    +
    + +
    -

    The highlighted dialogue shown in the screenshot (”I feel I must apologize for the way I acted towards you before, in the grove. It was wrong of me.”) is the beginning of your first personal conversation with Juhani after Juhani joins your party. Here is a video of the conversation in question:

    -
    - -
    +

    As shown in the screenshot above, once you begin this conversation, the script k_hjuh_p17 will fire, and this is the source of the script in question:

    + +
    +void main()
    +{
    +    int iGender = GetGender(GetPCSpeaker());
    +    if (iGender == GENDER_FEMALE)
    +    {
    +        SetGlobalBoolean("T_JUHANIROM", TRUE);
    +    }
    +}
    +
    -

    As shown in the screenshot above, once you begin this conversation, the script k_hjuh_p17 will fire, and this is the source of the script in question:

    +

    (In KotOR Tool, you can see the source script k_hjuh_p17.nss under KotOR I > BIFs > scripts.bif > Script, Source)

    - - void main() - { - int iGender = GetGender(GetPCSpeaker()); +

    As you may have guessed from the above script, k_hjuh_p17 sets the Global Boolean T_JUHANIROM to TRUE if, and ONLY IF, the player character is female. The T_JUHANIROM global is used by the game to check if Juhani’s romance is active or not. In other words, the game activates Juhani’s romance ONLY IF your player character is female, as soon as you start Juhani’s personal conversation after she joins your party. If your player character is male, Juhani’s romance will NOT be activated.

    - if (iGender == GENDER_FEMALE) - { - SetGlobalBoolean("T_JUHANIROM", TRUE); - } - } -
    +

    Here is the hard evidence from KotOR's game files that Juhani is a lesbian, a woman who is exclusively attracted to women. Juhani is NOT straight. Juhani is NOT bisexual.

    -

    (In KotOR Tool, you can see the source script k_hjuh_p17.nss under KotOR I > BIFs > scripts.bif > Script, Source)

    +

    The game used to have a bug that allowed male player characters to access Juhani’s romance, which is probably why some thought that Juhani is bisexual. However, the bug had been fixed in later patches. By fixing the bug, the game has made sure that ONLY a female player character can romance Juhani.

    -

    As you may have guessed from the above script, k_hjuh_p17 sets the Global Boolean T_JUHANIROM to TRUE if, and ONLY IF, the player character is female. The T_JUHANIROM global is used by the game to check if Juhani’s romance is active or not. In other words, the game activates Juhani’s romance ONLY IF your player character is female, as soon as you start Juhani’s personal conversation after she joins your party. If your player character is male, Juhani’s romance will NOT be activated.

    +

    Even though the word “lesbian” or “gay” is never used in any of the KotOR games, it does not change the fact that Juhani is a woman character who can only be romanced by a woman player character, which means Juhani is gay, a lesbian.

    -

    Here is the hard evidence from KotOR's game files that Juhani is a lesbian, a woman who is exclusively attracted to women. Juhani is NOT straight. Juhani is NOT bisexual.

    +

    In conclusion, Juhani is a canon lesbian character and has always been intended to be such.

    -

    The game used to have a bug that allowed male player characters to access Juhani’s romance, which is probably why some thought that Juhani is bisexual. However, the bug had been fixed in later patches. By fixing the bug, the game has made sure that ONLY a female player character can romance Juhani.

    +

    I would also like to emphasise that I DO NOT support any mods that make Juhani a romance option for male characters under any circumstances, because such mods would be erasing the identity of the very first confirmed lesbian character in any Star Wars media. Not to mention, Juhani is the ONLY confirmed LGBTQ+ character in the entire KotOR series (Belaya from KotOR 1 and Luxa from KotOR 2 are heavily implied to be gay or bisexual, but their sexuality is never confirmed). Please respect LGBTQ+ representation and the identities of canon LGBTQ+ characters.

    +
    -

    Even though the word “lesbian” or “gay” is never used in any of the KotOR games, it does not change the fact that Juhani is a woman character who can only be romanced by a woman player character, which means Juhani is gay, a lesbian.

    - -

    In conclusion, Juhani is a canon lesbian character and has always been intended to be such.

    - -

    I would also like to emphasise that I DO NOT support any mods that make Juhani a romance option for male characters under any circumstances, because such mods would be erasing the identity of the very first confirmed lesbian character in any Star Wars media. Not to mention, Juhani is the ONLY confirmed LGBTQ+ character in the entire KotOR series (Belaya from KotOR 1 and Luxa from KotOR 2 are heavily implied to be gay or bisexual, but their sexuality is never confirmed). Please respect LGBTQ+ representation and the identities of canon LGBTQ+ characters.

    -
    -
    - -
    -
    -
    + + + \ No newline at end of file diff --git a/shrines/starwarskotor/components/footer.js b/shrines/starwarskotor/components/footer.js new file mode 100644 index 00000000..b5ccff47 --- /dev/null +++ b/shrines/starwarskotor/components/footer.js @@ -0,0 +1,15 @@ +class Footer extends HTMLElement { + constructor() { + super(); + } + + connectedCallback() { + this.innerHTML = ` +
    + Made with ♥ and the Force by Leilukin | Back to top +
    + `; + } +} + +customElements.define('footer-component', Footer); \ No newline at end of file diff --git a/shrines/starwarskotor/components/header.js b/shrines/starwarskotor/components/header.js new file mode 100644 index 00000000..d80ab8a6 --- /dev/null +++ b/shrines/starwarskotor/components/header.js @@ -0,0 +1,26 @@ +class Header extends HTMLElement { + constructor() { + super(); + } + + connectedCallback() { + this.innerHTML = ` +
    + +
    + + `; + } +} + +customElements.define('header-component', Header); \ No newline at end of file diff --git a/shrines/starwarskotor/components/navbar.js b/shrines/starwarskotor/components/navbar.js new file mode 100644 index 00000000..b8087094 --- /dev/null +++ b/shrines/starwarskotor/components/navbar.js @@ -0,0 +1,66 @@ +/* FOR TOGGLING MENUS ON THE NAVBAR */ +const navToggle = document.querySelector(".nav__toggle"); +const navMenu = document.querySelector(".nav__menu"); +const navItems = document.querySelectorAll(".nav__item"); + +/* Toggle mobile navMenu */ +function toggleMenu() { + if (navMenu.classList.contains("nav__active")) { + navMenu.classList.remove("nav__active"); + navToggle.querySelector("a").innerHTML = ""; + } else { + navMenu.classList.add("nav__active"); + navToggle.querySelector("a").innerHTML = ""; + } +} + +/* Activate Submenu */ +function toggleItem() { + if (this.classList.contains("nav__submenu-active")) { + this.classList.remove("nav__submenu-active"); + } else if (navMenu.querySelector(".nav__submenu-active")) { + navMenu.querySelector(".nav__submenu-active").classList.remove("nav__submenu-active"); + this.classList.add("nav__submenu-active"); + } else { + this.classList.add("nav__submenu-active"); + } +} + +/* Close Submenu From Anywhere */ +function closeSubmenu(e) { + if (navMenu.querySelector(".nav__submenu-active")) { + let isClickInside = navMenu + .querySelector(".nav__submenu-active") + .contains(e.target); + + if (!isClickInside && navMenu.querySelector(".nav__submenu-active")) { + navMenu.querySelector(".nav__submenu-active").classList.remove("nav__submenu-active"); + } + } +} + +/* Event Listeners */ +navToggle.addEventListener("click", toggleMenu, false); +for (let item of navItems) { + if (item.querySelector(".nav__submenu")) { + item.addEventListener("click", toggleItem, false); + } + item.addEventListener("keypress", toggleItem, false); +} +document.addEventListener("click", closeSubmenu, false); + + +/* FOR MAKING THE NAVBAR STICKY */ +const header = document.querySelector("header"); +const navbar = document.querySelector("nav"); + + +window.addEventListener("scroll", e => { + const scrollPos = window.scrollY || document.documentElement.scrollTop; + const stickyLine = header.scrollHeight - navbar.scrollHeight; + if (scrollPos > stickyLine) { + navbar.classList.add("sticky-nav"); + } else { + navbar.classList.remove("sticky-nav"); + } +}); \ No newline at end of file diff --git a/shrines/starwarskotor/components/sidebar-content.js b/shrines/starwarskotor/components/sidebar-content.js new file mode 100644 index 00000000..69335d73 --- /dev/null +++ b/shrines/starwarskotor/components/sidebar-content.js @@ -0,0 +1,14 @@ +class RightSidebarContent extends HTMLElement { + constructor() { + super(); + } + + connectedCallback() { + this.innerHTML = ` +

    About

    +

    Star Wars: Knights of the Old Republic is a space opera role-playing video game series that takes place in the Star Wars universe. The story takes place approximately 4,000 years before the rise of the Galactic Empire.

    + `; + } +} + +customElements.define('right-sidebar-component', RightSidebarContent); \ No newline at end of file diff --git a/shrines/starwarskotor/guides/index.html b/shrines/starwarskotor/guides/index.html index e4cffcf7..05f25048 100644 --- a/shrines/starwarskotor/guides/index.html +++ b/shrines/starwarskotor/guides/index.html @@ -1,5 +1,5 @@ - + @@ -12,68 +12,58 @@ - + - - + + + + + + + + + Guides | Star Wars: Knights of the Old Republic Shrine | Leilukin's Hub - -
    -
    - - + +
    + + +
    +
    +

    Star Wars: Knights of the Old Republic Guides

    +

    Here is a list of guides for the Star Wars: Knights of the Old Republic series I have written or found useful. This page also includes lists of cheats.

    +
    + +
    +

    KotOR 1 Guides

    + +
    + +
    +

    KotOR 2: TSL Guides

    + +
    -
    - - - -
    -
    -

    Star Wars: Knights of the Old Republic Guides

    -

    Here is a list of guides for the Star Wars: Knights of the Old Republic series I have written or found useful. This page also includes lists of cheats.

    -
    - -
    -

    KotOR 1 Guides

    - -
    - -
    -

    KotOR 2: TSL Guides

    - -
    - -
    -

    Cheats

    - -
    -
    - -
    -
    -
    + + + \ No newline at end of file diff --git a/shrines/starwarskotor/guides/kotor-juhani-romance-guide.html b/shrines/starwarskotor/guides/kotor-juhani-romance-guide.html index 72d5152f..dc6c2a18 100644 --- a/shrines/starwarskotor/guides/kotor-juhani-romance-guide.html +++ b/shrines/starwarskotor/guides/kotor-juhani-romance-guide.html @@ -1,5 +1,5 @@ - + @@ -12,186 +12,181 @@ - + - - + + + + + + + + + Juhani Romance Guide | Guides | Star Wars: Knights of the Old Republic Shrine | Leilukin's Hub - -
    -
    - - -
    - -
    - - - -
    -
    -

    Star Wars: Knights of the Old Republic: Juhani Romance Guide

    -

    Written by Leilukin

    -

    First published on March 5, 2016
    Last updated on October 12, 2022

    -

    [This guide is also available on Google Docs]

    - -

    The contents of this guide may not be reposted, in whole or in part, without my permission. You may quote a part of this guide to help players who have problems with progressing or completing Juhani's romance, but DO NOT claim this guide as your own.

    -
    - -
    -

    Introduction

    - -

    Since I could not find a solid and detailed guide for Juhani's romance anywhere, and many players (I used to be one of them as well) have troubles with triggering Juhani's final romance conversation, I have decided to write a guide myself. Even though there is very little content for Juhani's romance, if you want to experience the very first canon same-gender romance option in BioWare games first hand, this guide is for you.

    - -

    For this guide, I have done a lot of research and investigation to find out the conditions required to trigger Juhani's conversations, including tons of web searching, using KotOR Tool to browse and examine the game files related to Juhani's conversations, as well as using KotOR SaveGame Editor (KSE) to compare my save files.

    - -

    NOTE: Even if you use KotOR 1 Restoration (K1R) mod, the conditions to progress Juhani's romance remains the same as vanilla KotOR 1. However, I recommend using KOTOR 1 Community Patch (K1CP) instead of K1R due to the fact K1CP fixes more bugs than K1R does, including bugs related to Juhani.

    -
    - -
    -

    Important Notes

    - -

    First and foremost, since Juhani was written to be a lesbian, your player character must be female if you want to romance Juhani. The game activates Juhani's romance ONLY IF your player character is female.

    - -

    As long as your player character is female, even if you romance Carth, Bastila (if you use mods that allow the female player character to romance Bastila, such as the Biromantic Bastila mod) or even both, you can still romance Juhani.

    - -

    In order to advance your progress with Juhani's conversations, it is highly recommended to talk to Juhani and go through all her available conversations every time you level up. The progression with Juhani's conversations is tied in with the ability to level up, not just being at a certain level. Some Juhani's conversations will only be triggered after you gain 1 level after a previous conversation (see the Walkthrough section below for details). Given the limited level cap in KotOR 1 (the maximum level is 20), if you do not talk to Juhani often before you reach the level cap, it is very likely you will miss out on the chance to get her later conversations, including her final romance conversation.

    - -

    You also need to complete Juhani's personal quest, "Threat From Xor", to make her final romance conversation available.

    - -

    You need to be nice to Juhani during your conversations with her, because mean dialogue choices will set the global boolean T_JUHANIROM to 0, ending the romance, and apparently it is impossible to restart the romance afterwards.

    - -

    Before you start a new KotOR playthrough, I highly recommend you to download and install the KOTOR 1 Community Patch, because the mod fixes many bugs with KotOR, including bugs that may block you from progressing Juhani's quest and conversations.

    - -

    (WARNING: this guide contains spoilers for both Juhani's personal story and KotOR's main plot)

    -
    - -
    -

    Walkthrough

    - -

    There are two paths in Juhani's conversations: History and Personal. The History path explores Juhani's past and will lead to Juhani's personal quest "Threat from Xor", while the Personal path explores Juhani's relationship with the player character and will lead to Juhani's love confession if her romance is active.

    - -

    You can check your progress with Juhani's conversations by using the KotOR SaveGame Editor (KSE). Once you launch KSE, and it successfully loads your KotOR save files, expand a save file, and look for Globals > Numerics, G_JUHANIH_STATE refers to the History path, while G_JUHANIP_STATE refers to the Personal path. The walkthrough below contains details on how to trigger all the conversations required to make the final romance conversation available, the global values in KSE, and links to YouTube videos for these conversations.

    - -

    In addition, you can check if Juhani's romance is still active by using KSE: look for Globals > Booleans, and make sure T_JUHANIROM is set to 1.

    - -

    History Conversation Path

    - -

    History #1: This conversation is available once Juhani joins your party, which happens after you collect your first Star Map on Dantooine, and you're tasked by the Jedi Council to search for the Star Forge. You can ask Juhani how did she become a Jedi. After this conversation, the global value of G_JUHANIH_STATE will be set to 1. [YouTube video]

    - -

    History #2: Available when you gain 1 level after History #1. Juhani talks about meeting the Jedi back in her homeworld. After this conversation, the global value of G_JUHANIH_STATE will be set to 2. [YouTube video]

    - -

    History #3: Available when you gain 1 level after History #2. Juhani reveals that she was from Taris, and she expresses anger over the destruction of Taris. After this conversation, the global value of G_JUHANIH_STATE will be set to 3. [YouTube video]

    - -
      -
    • BUG WARNING: There is a bug that may block you from progressing Juhani's Personal Conversation path after you complete History #3, and thus preventing you from triggering Juhani's final romance conversation. See the "Personal Conversation Path" section below for more details about this bug. This bug is fixed by the KOTOR 1 Community Patch, which is a major reason I highly recommend this mod.
    • -
    • If you are unable to install mods for some reason, I would suggest that once you complete History #3, stop leveling up your character. Once you get your second Star Map (the Dantooine Star Map counts as the first Star Map), complete Personal #3 AND Personal #4 at once. After all that is done, you can now level up to trigger History #4.
    • -
    - -

    History #4: Available when you gain 1 level after History #3. Juhani apologizes for her outburst over Taris' destruction, and recalls her life on Taris. After this conversation, the global value of G_JUHANIH_STATE will be set to 4. [YouTube video]

    - -

    History #5: Available when you gain 1 level after History #4. Juhani talks about how her parents and her ended up on Taris. After this conversation, the global value of G_JUHANIH_STATE will be set to 5. [YouTube video]

    - -

    History #6: Available when you gain 1 level after History #5. Juhani talks about her being sold into slavery after her parents died. After this conversation, the global value of G_JUHANIH_STATE will be set to 6. This conversation will also make Juhani's personal quest, "Threat From Xor" available. [YouTube video]

    - -

    "Threat From Xor" quest: This quest will be available after you have completed History #6, where Juhani talks about her being sold into slavery. Have Juhani in your party and walk around the spaceport on Tatooine, Kashyyyk, Manaan or Korriban. A character named Xor will approach Juhani and reveal that he was the slaver who attempted to buy Juhani on Taris before the latter was freed by the Jedi. Xor leaves, but he threatens to come back later.

    - -

    The second encounter with Xor happens when you come back just outside the Ebon Hawk by using the Rapid Transit system. Xor will ambush you and Juhani. Once you defeat Xor, you can either let him die or encourage Juhani to kill him.

    - -

    After you have dealt with Xor, if you have completed Personal #6 (detailed below), the global value of G_JUHANIP_STATE will be set to 10. [YouTube video for the whole quest]

    - -
      -
    • BUG WARNING: There is an infamous bug with the Xor quest that once you trigger the quest, even after completing it, you will not be able to encounter any other messengers for your other party members' personal quests, and for Mika Dorin's premium shop on Korriban. The fix for this bug is included in the KOTOR 1 Community Patch and the KotOR 1 Restoration (K1R) mod.
    • -
    - -

    Personal Conversation Path

    - -

    Personal #1: Available once Juhani joins your party. She apologizes again for attacking you back on Dantooine. Once you begin this conversation, if — and ONLY IF — your player character is female, the global boolean T_JUHANIROM will be set to 1, which means Juhani's romance will become active. After this conversation, the global value of G_JUHANIP_STATE will be set to 1. [YouTube video]

    - -

    Personal #2: Available after completing Personal #1. Juhani talks about Quatra and her fall to the dark side. After this conversation, the global value of G_JUHANIP_STATE will be set to 2. [YouTube video]

    - -

    Personal #3: Available after completing Personal #2 and getting 2 Star Maps (including the Dantooine one). Juhani expresses gratitude to you for accepting her throughout your journey. After this conversation, the global value of G_JUHANIP_STATE will be set to 3. [YouTube video]

    - -

    Personal #4: Available once you complete History #3 and Personal #3. Juhani describes the life of being an alien on Taris is like hell. After this conversation, the global value of G_JUHANIP_STATE will be set to 4. [YouTube video]

    - -
      -
    • BUG WARNING: Personal #4 is by far the trickiest to trigger of all Juhani's conversations. There is a bug that once you complete History #3, if you level up even just once, History #4 will override Personal #4, making Personal #4 unavailable, and you will be unable to get the later conversations in the Personal Conversation path (except Personal #7 below), including the final romance conversation. In fact, I found that missing out Personal #4 was the reason I was unable to get Juhani's final romance conversation in my old playthrough. This bug is fixed by the KOTOR 1 Community Patch, which is a major reason I highly recommend this mod.

    • -
    • If you are unable to install mods for some reason, I would suggest that once you complete History #3, stop leveling up your character. Once you get your second Star Map (the Dantooine Star Map counts as the first Star Map), complete Personal #3, then immediately talk to Juhani again to check if Personal #4 is available. After you successfully trigger Personal #4 and complete the conversation, you can now level up your character to proceed to History #4 and beyond.
    • -
    - -

    Personal #5: Available when you gain 1 level after Personal #4. Juhani asks about your past. After this conversation, the global value of G_JUHANIP_STATE will be set to 6. [YouTube video]

    - -

    Personal #6: Available after completing Personal #5 and getting 3 Star Maps (including the Dantooine one). Juhani comments on your alignment (light side, dark side or neutral). After this conversation, if you have completed the "Threat From Xor" quest, the global value of G_JUHANIP_STATE will be set to 10; if you have not, the global value of G_JUHANIP_STATE will be set to 7. [YouTube video for light side version]

    - -

    Personal #7: Available after completing the Leviathan level. Juhani comments on the reveal that the player character is Revan. This conversation is not required to trigger Juhani's final romance conversation, but I include it here because not only it is classified as part of the Personal conversation path by the game files, but also it is a very important element in Juhani and Revan's relationship. [YouTube video]

    - -

    Personal #8: The final conversation, which is also Juhani's love confession, in order to make this final romance conversation available, you must meet ALL the following conditions:

    -
      -
    1. You have completed Personal #6 and the "Threat From Xor" quest. If you use KotOR SaveGame Editor to check your progress, the global value of G_JUHANIP_STATE must be 10.
    2. -
    3. During the confrontation with Bastila at the Rakatan temple summit on the Unknown World, you must reject Bastila's suggestion to reclaim the title of Dark Lord of the Sith and rule the galaxy, which gives you the light side ending of the game. If you choose to agree with Bastila's suggestion, you will be forced to kill Juhani (and Jolee), which ends the romance, and you will get the dark side ending of the game.
    4. -
    - -

    Provided the above conditions have been met, the final romance conversation occurs after Bastila leaves the Rakatan temple summit. When you talk to Juhani, she will confess her feelings to you. If you have installed Kexikus' Juhani Romance Enhancement mod (see the Mod Recommendation section below for details), the conversation will be triggered automatically when you are leaving the temple summit, so you do not need to initiate the conversation yourself. [YouTube video for vanilla version] [YouTube video for Juhani Romance Enhancement mod version]

    - -
    - -
    -

    Mod Recommendations

    - -

    These mods are not required to complete Juhani's romance, but they add or enhance Juhani's content.

    - + +
    +
    - - +
  • Mod Recommendations
  • + +
    + -
    -
    -
    +
    +
    +

    Star Wars: Knights of the Old Republic: Juhani Romance Guide

    +

    Written by Leilukin

    +

    First published on March 5, 2016
    Last updated on October 12, 2022

    +

    [This guide is also available on Google Docs]

    +

    The contents of this guide may not be reposted, in whole or in part, without my permission. You may quote a part of this guide to help players who have problems with progressing or completing Juhani's romance, but DO NOT claim this guide as your own.

    +
    + +
    +

    Introduction

    + +

    Since I could not find a solid and detailed guide for Juhani's romance anywhere, and many players (I used to be one of them as well) have troubles with triggering Juhani's final romance conversation, I have decided to write a guide myself. Even though there is very little content for Juhani's romance, if you want to experience the very first canon same-gender romance option in BioWare games first hand, this guide is for you.

    + +

    For this guide, I have done a lot of research and investigation to find out the conditions required to trigger Juhani's conversations, including tons of web searching, using KotOR Tool to browse and examine the game files related to Juhani's conversations, as well as using KotOR SaveGame Editor (KSE) to compare my save files.

    + +

    NOTE: Even if you use KotOR 1 Restoration (K1R) mod, the conditions to progress Juhani's romance remains the same as vanilla KotOR 1. However, I recommend using KOTOR 1 Community Patch (K1CP) instead of K1R due to the fact K1CP fixes more bugs than K1R does, including bugs related to Juhani.

    +
    + +
    +

    Important Notes

    + +

    First and foremost, since Juhani was written to be a lesbian, your player character must be female if you want to romance Juhani. The game activates Juhani's romance ONLY IF your player character is female.

    + +

    As long as your player character is female, even if you romance Carth, Bastila (if you use mods that allow the female player character to romance Bastila, such as the Biromantic Bastila mod) or even both, you can still romance Juhani.

    + +

    In order to advance your progress with Juhani's conversations, it is highly recommended to talk to Juhani and go through all her available conversations every time you level up. The progression with Juhani's conversations is tied in with the ability to level up, not just being at a certain level. Some Juhani's conversations will only be triggered after you gain 1 level after a previous conversation (see the Walkthrough section below for details). Given the limited level cap in KotOR 1 (the maximum level is 20), if you do not talk to Juhani often before you reach the level cap, it is very likely you will miss out on the chance to get her later conversations, including her final romance conversation.

    + +

    You also need to complete Juhani's personal quest, "Threat From Xor", to make her final romance conversation available.

    + +

    You need to be nice to Juhani during your conversations with her, because mean dialogue choices will set the global boolean T_JUHANIROM to 0, ending the romance, and apparently it is impossible to restart the romance afterwards.

    + +

    Before you start a new KotOR playthrough, I highly recommend you to download and install the KOTOR 1 Community Patch, because the mod fixes many bugs with KotOR, including bugs that may block you from progressing Juhani's quest and conversations.

    + +

    (WARNING: this guide contains spoilers for both Juhani's personal story and KotOR's main plot)

    +
    + +
    +

    Walkthrough

    + +

    There are two paths in Juhani's conversations: History and Personal. The History path explores Juhani's past and will lead to Juhani's personal quest "Threat from Xor", while the Personal path explores Juhani's relationship with the player character and will lead to Juhani's love confession if her romance is active.

    + +

    You can check your progress with Juhani's conversations by using the KotOR SaveGame Editor (KSE). Once you launch KSE, and it successfully loads your KotOR save files, expand a save file, and look for Globals > Numerics, G_JUHANIH_STATE refers to the History path, while G_JUHANIP_STATE refers to the Personal path. The walkthrough below contains details on how to trigger all the conversations required to make the final romance conversation available, the global values in KSE, and links to YouTube videos for these conversations.

    + +

    In addition, you can check if Juhani's romance is still active by using KSE: look for Globals > Booleans, and make sure T_JUHANIROM is set to 1.

    + +

    History Conversation Path

    + +

    History #1: This conversation is available once Juhani joins your party, which happens after you collect your first Star Map on Dantooine, and you're tasked by the Jedi Council to search for the Star Forge. You can ask Juhani how did she become a Jedi. After this conversation, the global value of G_JUHANIH_STATE will be set to 1. [YouTube video]

    + +

    History #2: Available when you gain 1 level after History #1. Juhani talks about meeting the Jedi back in her homeworld. After this conversation, the global value of G_JUHANIH_STATE will be set to 2. [YouTube video]

    + +

    History #3: Available when you gain 1 level after History #2. Juhani reveals that she was from Taris, and she expresses anger over the destruction of Taris. After this conversation, the global value of G_JUHANIH_STATE will be set to 3. [YouTube video]

    + +
      +
    • BUG WARNING: There is a bug that may block you from progressing Juhani's Personal Conversation path after you complete History #3, and thus preventing you from triggering Juhani's final romance conversation. See the "Personal Conversation Path" section below for more details about this bug. This bug is fixed by the KOTOR 1 Community Patch, which is a major reason I highly recommend this mod.
    • +
    • If you are unable to install mods for some reason, I would suggest that once you complete History #3, stop leveling up your character. Once you get your second Star Map (the Dantooine Star Map counts as the first Star Map), complete Personal #3 AND Personal #4 at once. After all that is done, you can now level up to trigger History #4.
    • +
    + +

    History #4: Available when you gain 1 level after History #3. Juhani apologizes for her outburst over Taris' destruction, and recalls her life on Taris. After this conversation, the global value of G_JUHANIH_STATE will be set to 4. [YouTube video]

    + +

    History #5: Available when you gain 1 level after History #4. Juhani talks about how her parents and her ended up on Taris. After this conversation, the global value of G_JUHANIH_STATE will be set to 5. [YouTube video]

    + +

    History #6: Available when you gain 1 level after History #5. Juhani talks about her being sold into slavery after her parents died. After this conversation, the global value of G_JUHANIH_STATE will be set to 6. This conversation will also make Juhani's personal quest, "Threat From Xor" available. [YouTube video]

    + +

    "Threat From Xor" quest: This quest will be available after you have completed History #6, where Juhani talks about her being sold into slavery. Have Juhani in your party and walk around the spaceport on Tatooine, Kashyyyk, Manaan or Korriban. A character named Xor will approach Juhani and reveal that he was the slaver who attempted to buy Juhani on Taris before the latter was freed by the Jedi. Xor leaves, but he threatens to come back later.

    + +

    The second encounter with Xor happens when you come back just outside the Ebon Hawk by using the Rapid Transit system. Xor will ambush you and Juhani. Once you defeat Xor, you can either let him die or encourage Juhani to kill him.

    + +

    After you have dealt with Xor, if you have completed Personal #6 (detailed below), the global value of G_JUHANIP_STATE will be set to 10. [YouTube video for the whole quest]

    + +
      +
    • BUG WARNING: There is an infamous bug with the Xor quest that once you trigger the quest, even after completing it, you will not be able to encounter any other messengers for your other party members' personal quests, and for Mika Dorin's premium shop on Korriban. The fix for this bug is included in the KOTOR 1 Community Patch and the KotOR 1 Restoration (K1R) mod.
    • +
    + +

    Personal Conversation Path

    + +

    Personal #1: Available once Juhani joins your party. She apologizes again for attacking you back on Dantooine. Once you begin this conversation, if — and ONLY IF — your player character is female, the global boolean T_JUHANIROM will be set to 1, which means Juhani's romance will become active. After this conversation, the global value of G_JUHANIP_STATE will be set to 1. [YouTube video]

    + +

    Personal #2: Available after completing Personal #1. Juhani talks about Quatra and her fall to the dark side. After this conversation, the global value of G_JUHANIP_STATE will be set to 2. [YouTube video]

    + +

    Personal #3: Available after completing Personal #2 and getting 2 Star Maps (including the Dantooine one). Juhani expresses gratitude to you for accepting her throughout your journey. After this conversation, the global value of G_JUHANIP_STATE will be set to 3. [YouTube video]

    + +

    Personal #4: Available once you complete History #3 and Personal #3. Juhani describes the life of being an alien on Taris is like hell. After this conversation, the global value of G_JUHANIP_STATE will be set to 4. [YouTube video]

    + +
      +
    • BUG WARNING: Personal #4 is by far the trickiest to trigger of all Juhani's conversations. There is a bug that once you complete History #3, if you level up even just once, History #4 will override Personal #4, making Personal #4 unavailable, and you will be unable to get the later conversations in the Personal Conversation path (except Personal #7 below), including the final romance conversation. In fact, I found that missing out Personal #4 was the reason I was unable to get Juhani's final romance conversation in my old playthrough. This bug is fixed by the KOTOR 1 Community Patch, which is a major reason I highly recommend this mod.

    • +
    • If you are unable to install mods for some reason, I would suggest that once you complete History #3, stop leveling up your character. Once you get your second Star Map (the Dantooine Star Map counts as the first Star Map), complete Personal #3, then immediately talk to Juhani again to check if Personal #4 is available. After you successfully trigger Personal #4 and complete the conversation, you can now level up your character to proceed to History #4 and beyond.
    • +
    + +

    Personal #5: Available when you gain 1 level after Personal #4. Juhani asks about your past. After this conversation, the global value of G_JUHANIP_STATE will be set to 6. [YouTube video]

    + +

    Personal #6: Available after completing Personal #5 and getting 3 Star Maps (including the Dantooine one). Juhani comments on your alignment (light side, dark side or neutral). After this conversation, if you have completed the "Threat From Xor" quest, the global value of G_JUHANIP_STATE will be set to 10; if you have not, the global value of G_JUHANIP_STATE will be set to 7. [YouTube video for light side version]

    + +

    Personal #7: Available after completing the Leviathan level. Juhani comments on the reveal that the player character is Revan. This conversation is not required to trigger Juhani's final romance conversation, but I include it here because not only it is classified as part of the Personal conversation path by the game files, but also it is a very important element in Juhani and Revan's relationship. [YouTube video]

    + +

    Personal #8: The final conversation, which is also Juhani's love confession, in order to make this final romance conversation available, you must meet ALL the following conditions:

    +
      +
    1. You have completed Personal #6 and the "Threat From Xor" quest. If you use KotOR SaveGame Editor to check your progress, the global value of G_JUHANIP_STATE must be 10.
    2. +
    3. During the confrontation with Bastila at the Rakatan temple summit on the Unknown World, you must reject Bastila's suggestion to reclaim the title of Dark Lord of the Sith and rule the galaxy, which gives you the light side ending of the game. If you choose to agree with Bastila's suggestion, you will be forced to kill Juhani (and Jolee), which ends the romance, and you will get the dark side ending of the game.
    4. +
    + +

    Provided the above conditions have been met, the final romance conversation occurs after Bastila leaves the Rakatan temple summit. When you talk to Juhani, she will confess her feelings to you. If you have installed Kexikus' Juhani Romance Enhancement mod (see the Mod Recommendation section below for details), the conversation will be triggered automatically when you are leaving the temple summit, so you do not need to initiate the conversation yourself. [YouTube video for vanilla version] [YouTube video for Juhani Romance Enhancement mod version]

    + +
    + +
    +

    Mod Recommendations

    + +

    These mods are not required to complete Juhani's romance, but they add or enhance Juhani's content.

    + +
      +
    • Juhani Romance Enhancement by Kexikus: Improves the final romance conversation with Juhani, including triggering the conversation automatically when you are about to leave the temple summit, instead of having to talk to Juhani yourself to initiate the conversation, provided you have met the conditions to make this conversation available (detailed in the Walkthrough section above), as well as adding a kiss between Juhani and the female player character.
    • +
    • KOTOR 1 Community Patch: Even though this bug fix mod is not specifically about Juhani, it fixes many bugs and issues related to Juhani's content, including but not limited to:
    • +
        +
      • Juhani wouldn't spawn in the post-Leviathan scene on the Ebon Hawk
      • +
      • If doing certain Juhani's conversations in the wrong order, it was possible to block any further progress in Juhani's Personal Conversation path, and prevent you from accessing Juhani's final romance conversation
      • +
      • No other messengers could appear once the "Threat From Xor" quest is started
      • +
      • The second Xor encounter was impossible to start if you first meet him and his goons without Juhani in your party
      • +
      • The second Xor encounter is unavailable on Tatooine
      • +
      • Xor is a Twi'lek, despite him being a human in the Xbox version of KotOR, and him openly making anti-alien comments (NOTE: This fix was originally done by my Human Xor Restoration mod. I have given permission to include my mod in this Community Patch)
      • +
      +
    • Juhani Dialogue Restoration by Leilukin: My mod. Restores Juhani's conversations with the player that are unused or easy to miss in vanilla KotOR, including:
    • +
        +
      • Asking Juhani about the planet you are on
      • +
      • Asking Juhani about why she is hostile towards Canderous
      • +
      • Juhani talking about the evils on Korriban
      • +
      +
    • Human Xor Unique Look by Leilukin: My mod. Changes Xor's species from a Twi'lek to a human to fit his anti-alien nature and dialogue, with a unique appearance different from other human NPCs. This mod is listed on this guide because Xor is tied to Juhani's personal quest.
    • +
    • Party on the Leviathan! by Fair Strides: Restores Juhani's conversation, including romance conversation with a female player character, on the Leviathan, by spawning the rest of the Ebon Hawk crew on the Leviathan after you are rescued.
    • +
    + +

    NOTE: I DO NOT support any mods that make Juhani a romance option for male characters under any circumstances. In addition, I DO NOT support any mods that make Juhani look like a human.

    +
    +
    + + + + + \ No newline at end of file diff --git a/shrines/starwarskotor/guides/kotor-redeeming-bastila-guide.html b/shrines/starwarskotor/guides/kotor-redeeming-bastila-guide.html index da0b4048..a6fa09cc 100644 --- a/shrines/starwarskotor/guides/kotor-redeeming-bastila-guide.html +++ b/shrines/starwarskotor/guides/kotor-redeeming-bastila-guide.html @@ -1,5 +1,5 @@ - + @@ -12,153 +12,146 @@ - + - - + + + + + + + + + Redeeming Bastila Guide | Guides | Star Wars: Knights of the Old Republic Shrine | Leilukin's Hub - -
    -
    - - -
    + +
    + -
    +
    +
    +

    Star Wars: Knights of the Old Republic: Redeeming Bastila Guide

    +

    written by Leilukin

    +

    First published on September 16, 2018

    +

    [This guide is also available on Google Docs]

    +
    + +
    +

    Introduction

    - +

    In Star Wars: Knights of the Old Republic, towards the end of the game you will be provided the opportunity to determine which ending you will get, and there will be consequences of your choice there.

    -
    -
    -

    Star Wars: Knights of the Old Republic: Redeeming Bastila Guide

    -

    written by Leilukin

    -

    First published on September 16, 2018

    -

    [This guide is also available on Google Docs]

    -
    +

    Specifically, on the Rakatan temple summit at the Unknown World, you will meet Basila, who at that point has fallen to the dark side. After some dialogue and you fought Bastila, Bastila will suggest you to reclaim the title of the Dark Lord of the Sith and rule the galaxy. If you choose to agree with Bastila's suggestion, you will get the dark side ending, with a lot of dark side points. However, if you choose to reject Bastila's suggestion, you will get the light side ending, with a lot of light side points.

    + +

    If you choose the light side ending, you will face the fallen Bastila again in the Star Forge. Depending on your dialogue choices, you will either successfully convince Bastila to return to the light side, or you kill her if you fail to do so.

    + +

    This guide will provide in-depth details on how the mechanics of redeeming Bastila on the Star Forge works, and which dialogue options will give you a better chance in successfully redeeming Bastila.

    + +

    For this guide, I have used KotOR Tool, DLGEditor and DeNCS to investigate the relevant dialogue file and scripts.

    +
    + +
    +

    The Mechanics of Redeeming Bastila

    + +

    The game uses a point system to determine if you will succeed in redeeming Bastila based on the amount of points you earn throughout the conversations when you face Bastila on the Star Forge. Some dialogue options will earn you points to increase your chance in redeeming Bastila.

    + +

    In general, to successfully convince Bastila to return to the light side, you need to choose dialogue options that say you believe that Bastila still has the light side in her, that she can be saved, tell her about the dangers of the dark side or remind her about the Jedi's teaching, and choose these options as much as possible.

    +

    In the final part of Bastila's dialogue, when Bastila says she is beyond saving, do not agree with her because it will make you kill her.

    + +

    There will be [Persuade] options in the final part of Bastila's dialogue. While it is possible to save Bastila without choosing the [Persuade] options as long as you choose the right dialogue options, if you invest skill points in Persuade and pass the Persuade check, it would also be easier to save Bastila. If you want to learn more about the Persuade mechanic in KotOR, you can check out this page.

    + +

    An active romance with Bastila will make it easier to save Bastila. Although in vanilla KotOR, only a male player character can romance Bastila, this mechanic also works for a female PC who romances Bastila with mods like JC's Romance Enhancement: Biromantic Bastila. That said, it is possible to redeem Bastila even if you do not romance her.

    +
    + +
    +

    Dialogue Walkthrough

    + +

    There are 4 phases in your conversation with Bastila in the Star Forge, as each phase will end with you and Bastila fight, and Bastila will initiate new dialogue each time you defeat her. There are dialogue options in each phase that will increase your points in your chance to save Bastila.

    + +

    Below is a full walkthrough of the dialogue options that will maximize your points to successfully redeem Bastila.

    + +

    Phase 1

    + +

    Once you find Bastila in the Star Forge, Bastila will start the conversation by saying, "Revan - I knew you'd come for me." When you are provided with dialogue options:

    +
      +
    • Choose the "I'll never give up on you, Bastila. I know you can still be saved." option to gain 2 points.
    • +
    + +

    Regardless of your dialogue choice here, you and Bastila will fight.

    + +

    Phase 2

    + +

    After you defeat Bastila for the first time, Bastila will initiate conversation again by saying, "I see now why Malak followed you...". After Bastila says, "You were a fool to give it all up and follow the light side.":

    +
      +
    • Choose either "I am as strong in the light as I ever was following the dark side." or "You've been consumed by the dark side, Bastila. Can't you see it's destroying you?" to gain 1 point.
    • +
    + +

    If you choose either of the above options, Bastila will argue. When she says "Eventually there will be no limit to what I can accomplish with the Force!":

    +
      +
    • Choose "You will accomplish death and destruction with the dark side, nothing else." to gain 1 point. If you choose this option or "Malak will never let you become that powerful. He will kill you first." (Note: this option does not give you any points), Bastila will argue again, choose "You're dooming yourself to an endless cycle of death and betrayal." to gain 1 point.
    • +
    + +

    You and Bastila will fight again.

    + +

    Phase 3

    + +

    After you defeat Bastila for the second time, Bastila will say, "You are growing weary, I can sense it!" After she says "... Soon this will all be over!":

    +
      +
    • Choose "Your emotions get the better of you, Bastila. Remember the Jedi code." to gain 1 point.
    • +
    • Alternately, choose "Then strike me down, Bastila. I won't defend myself." to gain 2 points. Any of the dialogue options following this will gain another 2 points. Specifically:
    • +
        +
      • "Remember what you once were, Bastila. A Jedi would never strike down a defenseless opponent."
      • +
      • "You are not evil, Bastila. You will not strike down a defenseless opponent."
      • +
      • If you romance Bastila, you have an additional option: "We meant something to each other, once. I don't believe you will strike me down."
      • +
      +
    + +

    You and Bastila will fight again.

    -
    -

    Introduction

    +

    Phase 4

    -

    In Star Wars: Knights of the Old Republic, towards the end of the game you will be provided the opportunity to determine which ending you will get, and there will be consequences of your choice there.

    +

    After you defeat Bastila for the last time, and Bastila questions, "Why can't I defeat you?":

    +
      +
    • Choose "Now you see the dark side is not stronger than the light." to gain 1 point.
    • +
    -

    Specifically, on the Rakatan temple summit at the Unknown World, you will meet Basila, who at that point has fallen to the dark side. After some dialogue and you fought Bastila, Bastila will suggest you to reclaim the title of the Dark Lord of the Sith and rule the galaxy. If you choose to agree with Bastila's suggestion, you will get the dark side ending, with a lot of dark side points. However, if you choose to reject Bastila's suggestion, you will get the light side ending, with a lot of light side points.

    +

    Later when Bastila says "End my life quickly. There is no other way.", choose "I could never kill you, Bastila." if you romance her, or "There's no need for me to kill you, Bastila." if you do not.

    -

    If you choose the light side ending, you will face the fallen Bastila again in the Star Forge. Depending on your dialogue choices, you will either successfully convince Bastila to return to the light side, or you kill her if you fail to do so.

    +

    After Bastila says "You cannot let me live", choose "You can reject the dark side, Bastila. Return to the light." to gain 2 points.

    -

    This guide will provide in-depth details on how the mechanics of redeeming Bastila on the Star Forge works, and which dialogue options will give you a better chance in successfully redeeming Bastila.

    - -

    For this guide, I have used KotOR Tool, DLGEditor and DeNCS to investigate the relevant dialogue file and scripts.

    -
    - -
    -

    The Mechanics of Redeeming Bastila

    - -

    The game uses a point system to determine if you will succeed in redeeming Bastila based on the amount of points you earn throughout the conversations when you face Bastila on the Star Forge. Some dialogue options will earn you points to increase your chance in redeeming Bastila.

    - -

    In general, to successfully convince Bastila to return to the light side, you need to choose dialogue options that say you believe that Bastila still has the light side in her, that she can be saved, tell her about the dangers of the dark side or remind her about the Jedi's teaching, and choose these options as much as possible.

    -

    In the final part of Bastila's dialogue, when Bastila says she is beyond saving, do not agree with her because it will make you kill her.

    - -

    There will be [Persuade] options in the final part of Bastila's dialogue. While it is possible to save Bastila without choosing the [Persuade] options as long as you choose the right dialogue options, if you invest skill points in Persuade and pass the Persuade check, it would also be easier to save Bastila. If you want to learn more about the Persuade mechanic in KotOR, you can check out this page.

    - -

    An active romance with Bastila will make it easier to save Bastila. Although in vanilla KotOR, only a male player character can romance Bastila, this mechanic also works for a female PC who romances Bastila with mods like JC's Romance Enhancement: Biromantic Bastila. That said, it is possible to redeem Bastila even if you do not romance her.

    -
    - -
    -

    Dialogue Walkthrough

    - -

    There are 4 phases in your conversation with Bastila in the Star Forge, as each phase will end with you and Bastila fight, and Bastila will initiate new dialogue each time you defeat her. There are dialogue options in each phase that will increase your points in your chance to save Bastila.

    - -

    Below is a full walkthrough of the dialogue options that will maximize your points to successfully redeem Bastila.

    - -

    Phase 1

    - -

    Once you find Bastila in the Star Forge, Bastila will start the conversation by saying, "Revan - I knew you'd come for me." When you are provided with dialogue options:

    +

    When Bastila says, "I can no longer find peace in the Force":

    +
      +
    • Choose the [Persuade] option. The [Persuade] options are different depending on if you romance Bastila or not.
      • -
      • Choose the "I'll never give up on you, Bastila. I know you can still be saved." option to gain 2 points.
      • +
      • If romanced, choose "[Persuade] Use our bond, then. Take your strength from me." Succeeding in this persuasion option requires an Easy Persuade check. If you pass the check, you will gain 2 points. Later, choose "[Persuade] I love you, Bastila. I can't abandon you, ever." Again, succeeding in this persuasion option requires an Easy Persuade check. If you pass the check, you will gain 5 points.
      • +
      • If not romanced, choose "[Persuade] Turn to the Jedi code, Bastila. It can help you." This requires a Medium Persuade check. If you pass the check, you will gain 2 points. Later, choose "[Persuade] Look into your heart, Bastila, and you will find the light." Again, succeeding in this persuasion option requires a Medium Persuade check. If you pass the check, you will gain 3 points.
      +
    • Alternately, if you are worried that you may fail the [Persuade] check, you can choose "I was redeemed, Bastila. You can be, too." to add 1 point. When Bastila responses with "I was supposed to protect you from the dark side", choose "You can't protect someone from the dark side. Each individual must choose their own path." to add 1 point, or if you romance her, choose "You did more than protect me, Bastila." to gain 1 point. Note that these dialogue options were also available after you choose the [Persuade] options, so if you want to gain the maximum amount of points, you may choose all these options.
    • +
    -

    Regardless of your dialogue choice here, you and Bastila will fight.

    +

    If you want to redeem Bastila, eventually you need to choose "Help us defeat the Sith, Bastila. This will atone for what you have done." and then "I trust you enough to leave myself open to your attack, Bastila.".

    -

    Phase 2

    +

    If you have gained at least 10 points in total, Bastila will respond with "You are brave... and some would say foolish. But you are also right. The dark side has not wholly consumed me. I cannot raise my blade against you." If Bastila says this to you, congratulations! You have saved her!

    -

    After you defeat Bastila for the first time, Bastila will initiate conversation again by saying, "I see now why Malak followed you...". After Bastila says, "You were a fool to give it all up and follow the light side.":

    -
      -
    • Choose either "I am as strong in the light as I ever was following the dark side." or "You've been consumed by the dark side, Bastila. Can't you see it's destroying you?" to gain 1 point.
    • -
    +

    From this point, regardless of your dialogue option, Bastila will stay behind and use her Battle Meditation to help the Republic, while you go to face Darth Malak alone.

    +
    +
    -

    If you choose either of the above options, Bastila will argue. When she says "Eventually there will be no limit to what I can accomplish with the Force!":

    -
      -
    • Choose "You will accomplish death and destruction with the dark side, nothing else." to gain 1 point. If you choose this option or "Malak will never let you become that powerful. He will kill you first." (Note: this option does not give you any points), Bastila will argue again, choose "You're dooming yourself to an endless cycle of death and betrayal." to gain 1 point.
    • -
    - -

    You and Bastila will fight again.

    - -

    Phase 3

    - -

    After you defeat Bastila for the second time, Bastila will say, "You are growing weary, I can sense it!" After she says "... Soon this will all be over!":

    -
      -
    • Choose "Your emotions get the better of you, Bastila. Remember the Jedi code." to gain 1 point.
    • -
    • Alternately, choose "Then strike me down, Bastila. I won't defend myself." to gain 2 points. Any of the dialogue options following this will gain another 2 points. Specifically:
    • -
        -
      • "Remember what you once were, Bastila. A Jedi would never strike down a defenseless opponent."
      • -
      • "You are not evil, Bastila. You will not strike down a defenseless opponent."
      • -
      • If you romance Bastila, you have an additional option: "We meant something to each other, once. I don't believe you will strike me down."
      • -
      -
    - -

    You and Bastila will fight again.

    - -

    Phase 4

    - -

    After you defeat Bastila for the last time, and Bastila questions, "Why can't I defeat you?":

    -
      -
    • Choose "Now you see the dark side is not stronger than the light." to gain 1 point.
    • -
    - -

    Later when Bastila says "End my life quickly. There is no other way.", choose "I could never kill you, Bastila." if you romance her, or "There's no need for me to kill you, Bastila." if you do not.

    - -

    After Bastila says "You cannot let me live", choose "You can reject the dark side, Bastila. Return to the light." to gain 2 points.

    - -

    When Bastila says, "I can no longer find peace in the Force":

    -
      -
    • Choose the [Persuade] option. The [Persuade] options are different depending on if you romance Bastila or not.
    • -
        -
      • If romanced, choose "[Persuade] Use our bond, then. Take your strength from me." Succeeding in this persuasion option requires an Easy Persuade check. If you pass the check, you will gain 2 points. Later, choose "[Persuade] I love you, Bastila. I can't abandon you, ever." Again, succeeding in this persuasion option requires an Easy Persuade check. If you pass the check, you will gain 5 points.
      • -
      • If not romanced, choose "[Persuade] Turn to the Jedi code, Bastila. It can help you." This requires a Medium Persuade check. If you pass the check, you will gain 2 points. Later, choose "[Persuade] Look into your heart, Bastila, and you will find the light." Again, succeeding in this persuasion option requires a Medium Persuade check. If you pass the check, you will gain 3 points.
      • -
      -
    • Alternately, if you are worried that you may fail the [Persuade] check, you can choose "I was redeemed, Bastila. You can be, too." to add 1 point. When Bastila responses with "I was supposed to protect you from the dark side", choose "You can't protect someone from the dark side. Each individual must choose their own path." to add 1 point, or if you romance her, choose "You did more than protect me, Bastila." to gain 1 point. Note that these dialogue options were also available after you choose the [Persuade] options, so if you want to gain the maximum amount of points, you may choose all these options.
    • -
    - -

    If you want to redeem Bastila, eventually you need to choose "Help us defeat the Sith, Bastila. This will atone for what you have done." and then "I trust you enough to leave myself open to your attack, Bastila.".

    - -

    If you have gained at least 10 points in total, Bastila will respond with "You are brave... and some would say foolish. But you are also right. The dark side has not wholly consumed me. I cannot raise my blade against you." If Bastila says this to you, congratulations! You have saved her!

    - -

    From this point, regardless of your dialogue option, Bastila will stay behind and use her Battle Meditation to help the Republic, while you go to face Darth Malak alone.

    -
    - -
    - - - -
    -
    -
    + + + \ No newline at end of file diff --git a/shrines/starwarskotor/guides/kotor-sandral-matale-feud-guide.html b/shrines/starwarskotor/guides/kotor-sandral-matale-feud-guide.html index e1157a54..da85ea6e 100644 --- a/shrines/starwarskotor/guides/kotor-sandral-matale-feud-guide.html +++ b/shrines/starwarskotor/guides/kotor-sandral-matale-feud-guide.html @@ -1,5 +1,5 @@ - + @@ -12,103 +12,108 @@ - + - - + + + + + + + + + Sandral-Matale Feud Ending Guide | Guides | Star Wars: Knights of the Old Republic Shrine | Leilukin's Hub - -
    -
    - - -
    + +
    + -
    +
    +
    +

    Star Wars: Knights of the Old Republic: Sandral-Matale Feud Ending Guide

    +

    written by Leilukin

    +

    First published on September 22, 2018

    +

    [This guide is also available on Google Docs]

    +
    + +
    +

    Introduction

    - +

    This guide is requested by Deadly Stream user Sith Holocron.

    -
    -
    -

    Star Wars: Knights of the Old Republic: Sandral-Matale Feud Ending Guide

    -

    written by Leilukin

    -

    First published on September 22, 2018

    -

    [This guide is also available on Google Docs]

    -
    +

    In Star Wars: Knights of the Old Republic, there is a side quest on Dantooine named "Sandral-Matale Feud", which you receive after you have dealt with Juhani at the grove and met the Jedi Council.

    + +

    This quest line revolves around a family feud between the Sandrals and the Matales, mainly between their patriarchs, Nurik Sandral and Ahlan Matale. As you progress the quest line, you will discover that Nurik's daughter, Rahasia and Ahlan's son, Shen are romantically involved. The quest line will lead to a heated confrontation between Nurik and Ahlan, and there are multiple ways to resolve the quest line.

    +

    This guide will provide details on the different ways to resolve the Sandral-Matele feud, and how to achieve those endings.

    +
    + +
    +

    Sandral-Matale Feud Resolution Walkthrough

    + +

    After you rescue Shen and meet Rahasia outside the Sandral estate, you will be confronted by Ahlan Matale and Nurik Sandral, Shen and Rahasia's fathers respectively.

    + +

    After Ahlan yells at Nurik, "I don't want to hear any of your excuses! Now I will get revenge for your transgressions!" Your following dialogue choices will determine the outcome of the "Sandral-Matale Feud" quest. I recommend saving the game before rescuing Shen and meeting Rahasia outside the Sandral estate, so you can reload the save if you do not get the ending you want.

    + +

    The "Sandral-Matale Feud" quest could be resolved in four different ways:

    + /section + +
    +

    1. Convincing Ahlan and Nurik to sort out their differences and allow their children to stay together as a couple.

    + +

    If you want to do a Light Side playthrough, this would be the best outcome. However, you need to pass a Hard difficulty Persuasion check to get this ending. If you want to learn more about the Persuade mechanic in KotOR, you can check out this page. Since you will likely be at level 10 when you do this quest, you need at least 10 points in your Persuade skill to have a decent chance to pass the check.

    + +

    As for the dialogue choices, after Ahlan rants about him getting revenge, you need to choose "You two just need to calm down."

    + +

    When Nurik calls Ahlan "Matale dog";, choose either "Both of you need to calm down." or "You should try to sort this out together."

    + +

    Now you will be given [Persuade] options. When presented the option, choose "[Persuade] Shen is capable of making decisions on his own." After you pass a Hard difficulty Persuasion check, choose another Persuade option "[Persuade] Children grow up and leave eventually." when you are given the opportunity. If you have successfully passed the previous Persuade check, you should have no problem passing this check.

    + +

    Once you have succeeded in these [Persuade] options, congratulations! You manage to set the feud between the Sandrals and the Matales peacefully. Your dialogue choices immediately following this do not matter. You will be rewarded with Light Side points.

    +
    + +
    +

    2. Shen and Rahasia run off together, while the feud between their fathers remains.

    + +

    To get this second Light Side ending, after Ahlan rants about him getting revenge:

    +
      +
    • Choose "You two just need to calm down." When Nurik calls Ahlan "Matale dog", choose "Why don't you try listening to your children?"
    • +
    • Alternately, choose "Don't make me intervene in this.". When Ahlan says, "This will be resolved very shortly", your dialogue choice here does not matter. Later, when Rahasia tells her father she wants to with Shen forever, choose "You two should stay together no matter what."
    • +
    + +

    Shen and Rahasia will run off together, and you will find them in the Jedi Enclave, while Ahlan and Nurik will remain angry at each other. You will be rewarded with Light Side points.

    + +

    You would also get this outcome if you fail the Persuade check when you choose the [Persuade] option.

    +
    + +
    +

    3. Breaking up Shen and Rahasia.

    +

    To get this ending, after Ahlan rants about him getting revenge:

    +
      +
    • Choose "Don't make me intervene in this." When Ahlan says, "This will be resolved very shortly." your dialogue choice here does not matter. Later, when Rahasia tells her father she wants to with Shen forever, choose either "I don't know if you can trust Rahasia, Shen." or "You may want to reconsider this." When Nurik yells "Get away from my daughter Matale!", choose "Turn away, Shen." Your dialogue choices following this do not matter.
    • +
    • Alternately, if you want to get Dark Side points from this outcome, choose "Why don't you just shoot each other and get it over with." When Ahlan says he wants Nurik "dead and rotting in the ground", choose "If you fight, you'll all be killed." and then choose "[Lie] Rahasia doesn't love you anyway." You need to pass a Medium difficulty Persuasion check for this [Lie] option to succeed.
    • +
    +

    Shen breaks up with Rahasia, and the two return to their own fathers.

    +
    + +
    +

    4. Making the Sandrals and the Matales kill each other, result in the death of the fathers and the children.

    + +

    To get this Dark Side ending, after Ahlan rants about him getting revenge, choose "Why don't you just shoot each other and get it over with." When Ahlan says he wants Nurik "dead and rotting in the ground", choose "The only way either of you will end this is with blood." When Ahlan yells about how can Shen disrespects his (Ahlan's) wishes, choose "[Lie] You know, Nurik, Ahlan actually did kill Casus." Interestingly, you do not need any Persuade skills to make this [Lie] option succeed.

    -
    -

    Introduction

    +

    After Nurik kills Shen, choose either "Are you going to let that one pass?" or "Wipe them all out." for more Dark Side points. After the fathers and their children are dead, you will fight the fathers' droids.

    +
    +
    -

    This guide is requested by Deadly Stream user Sith Holocron.

    - -

    In Star Wars: Knights of the Old Republic, there is a side quest on Dantooine named "Sandral-Matale Feud", which you receive after you have dealt with Juhani at the grove and met the Jedi Council.

    - -

    This quest line revolves around a family feud between the Sandrals and the Matales, mainly between their patriarchs, Nurik Sandral and Ahlan Matale. As you progress the quest line, you will discover that Nurik's daughter, Rahasia and Ahlan's son, Shen are romantically involved. The quest line will lead to a heated confrontation between Nurik and Ahlan, and there are multiple ways to resolve the quest line.

    -

    This guide will provide details on the different ways to resolve the Sandral-Matele feud, and how to achieve those endings.

    -
    - -
    -

    Sandral-Matale Feud Resolution Walkthrough

    - -

    After you rescue Shen and meet Rahasia outside the Sandral estate, you will be confronted by Ahlan Matale and Nurik Sandral, Shen and Rahasia's fathers respectively.

    - -

    After Ahlan yells at Nurik, "I don't want to hear any of your excuses! Now I will get revenge for your transgressions!" Your following dialogue choices will determine the outcome of the "Sandral-Matale Feud" quest. I recommend saving the game before rescuing Shen and meeting Rahasia outside the Sandral estate, so you can reload the save if you do not get the ending you want.

    - -

    The "Sandral-Matale Feud" quest could be resolved in four different ways:

    - -

    1. Convincing Ahlan and Nurik to sort out their differences and allow their children to stay together as a couple.

    - -

    If you want to do a Light Side playthrough, this would be the best outcome. However, you need to pass a Hard difficulty Persuasion check to get this ending. If you want to learn more about the Persuade mechanic in KotOR, you can check out this page. Since you will likely be at level 10 when you do this quest, you need at least 10 points in your Persuade skill to have a decent chance to pass the check.

    - -

    As for the dialogue choices, after Ahlan rants about him getting revenge, you need to choose "You two just need to calm down."

    - -

    When Nurik calls Ahlan "Matale dog";, choose either "Both of you need to calm down." or "You should try to sort this out together."

    - -

    Now you will be given [Persuade] options. When presented the option, choose "[Persuade] Shen is capable of making decisions on his own." After you pass a Hard difficulty Persuasion check, choose another Persuade option "[Persuade] Children grow up and leave eventually." when you are given the opportunity. If you have successfully passed the previous Persuade check, you should have no problem passing this check.

    - -

    Once you have succeeded in these [Persuade] options, congratulations! You manage to set the feud between the Sandrals and the Matales peacefully. Your dialogue choices immediately following this do not matter. You will be rewarded with Light Side points.

    - -

    2. Shen and Rahasia run off together, while the feud between their fathers remains.

    - -

    To get this second Light Side ending, after Ahlan rants about him getting revenge:

    -
      -
    • Choose "You two just need to calm down." When Nurik calls Ahlan "Matale dog", choose "Why don't you try listening to your children?"
    • -
    • Alternately, choose "Don't make me intervene in this.". When Ahlan says, "This will be resolved very shortly", your dialogue choice here does not matter. Later, when Rahasia tells her father she wants to with Shen forever, choose "You two should stay together no matter what."
    • -
    - -

    Shen and Rahasia will run off together, and you will find them in the Jedi Enclave, while Ahlan and Nurik will remain angry at each other. You will be rewarded with Light Side points.

    - -

    You would also get this outcome if you fail the Persuade check when you choose the [Persuade] option.

    - -

    3. Breaking up Shen and Rahasia.

    - -

    To get this ending, after Ahlan rants about him getting revenge:

    - -
      -
    • Choose "Don't make me intervene in this." When Ahlan says, "This will be resolved very shortly." your dialogue choice here does not matter. Later, when Rahasia tells her father she wants to with Shen forever, choose either "I don't know if you can trust Rahasia, Shen." or "You may want to reconsider this." When Nurik yells "Get away from my daughter Matale!", choose "Turn away, Shen." Your dialogue choices following this do not matter.
    • -
    • Alternately, if you want to get Dark Side points from this outcome, choose "Why don't you just shoot each other and get it over with." When Ahlan says he wants Nurik "dead and rotting in the ground", choose "If you fight, you'll all be killed." and then choose "[Lie] Rahasia doesn't love you anyway." You need to pass a Medium difficulty Persuasion check for this [Lie] option to succeed.
    • -
    - -

    Shen breaks up with Rahasia, and the two return to their own fathers.

    - -

    4. Making the Sandrals and the Matales kill each other, result in the death of the fathers and the children.

    - -

    To get this Dark Side ending, after Ahlan rants about him getting revenge, choose "Why don't you just shoot each other and get it over with." When Ahlan says he wants Nurik "dead and rotting in the ground", choose "The only way either of you will end this is with blood." When Ahlan yells about how can Shen disrespects his (Ahlan's) wishes, choose "[Lie] You know, Nurik, Ahlan actually did kill Casus." Interestingly, you do not need any Persuade skills to make this [Lie] option succeed.

    - -

    After Nurik kills Shen, choose either "Are you going to let that one pass?" or "Wipe them all out." for more Dark Side points. After the fathers and their children are dead, you will fight the fathers' droids.

    -
    -
    - -
    -
    -
    + + + \ No newline at end of file diff --git a/shrines/starwarskotor/index.html b/shrines/starwarskotor/index.html index 07fd9629..9365a711 100644 --- a/shrines/starwarskotor/index.html +++ b/shrines/starwarskotor/index.html @@ -1,5 +1,5 @@ - + @@ -12,52 +12,58 @@ - + - - + + + + + + + + + Star Wars: Knights of the Old Republic Shrine | Leilukin's Hub - -
    -
    - - -
    + +
    + -
    - - +
    +
    +

    Welcome to my Star Wars: Knights of the Old Republic Shrine!

    + Cover arts of Star Wars: Knights of the Old Republic series +

    Star Wars: Knights of the Old Republic (KotOR) is a space opera role-playing video game series. The series takes place in the fictional universe of Star Wars, with the story taking place approximately 4,000 years before the rise of the Galactic Empire.

    +

    The first title was developed by BioWare while the second (Star Wars: Knights of the Old Republic II: The Sith Lords) was done by Obsidian Entertainmenr. Both games were published by LucasArts. The KOTOR series also includes a subsequent new comic book series. Both comic series were published by Dark Horse Comics and act as prequels to the video games.

    +
    -
    -
    -

    Welcome to my Star Wars: Knights of the Old Republic Shrine!

    -

    Star Wars: Knights of the Old Republic (KotOR) is a space opera role-playing video game series. The series takes place in the fictional universe of Star Wars, with the story taking place approximately 4,000 years before the rise of the Galactic Empire.

    -

    The first title was developed by BioWare while the second (Star Wars: Knights of the Old Republic II: The Sith Lords) was done by Obsidian Entertainmenr. Both games were published by LucasArts. The KOTOR series also includes a subsequent new comic book series. Both comic series were published by Dark Horse Comics and act as prequels to the video games.

    -
    +
    +

    My Connection to the KotOR Series

    +

    Even though I had been a Star Wars fan since I was 13 in 2005, I was not aware of the existence of the Knights of the Old Republic series until around 2010. I started playing the first KotOR game in early 2011, immediately followed by KotOR 2, and the series has been one of my special interests ever since.

    -
    -

    My Connection to the KotOR Series

    -

    Even though I had been a Star Wars fan since I was 13 in 2005, I was not aware of the existence of the Knights of the Old Republic series until around 2010. I started playing the first KotOR game in early 2011, immediately followed by KotOR 2, and the series has been one of my special interests ever since.

    +

    My investment in the KotOR series has evolved over time, leading to me starting to get into modding the games in the mid-2010s. The very first KotOR mod I created was TSL Improved Party Outfits in 2015, while the first KotOR mod I released to the public was Visas Marr and Female Exile Romance on December 15, 2016.

    +
    -

    My investment in the KotOR series has evolved over time, leading to me starting to get into modding the games in the mid-2010s. The very first KotOR mod I created was TSL Improved Party Outfits in 2015, while the first KotOR mod I released to the public was Visas Marr and Female Exile Romance on December 15, 2016.

    - -

    I have also joined Erased Identity and Mysteries of Malachor, the fan listings for the two KotOR games.

    +
    +

    KotOR Fan Listings

    +

    I have joined Erased Identity and Mysteries of Malachor, the fan listings for the two KotOR games.

    +
    A website button of a Star Wars: Knights of the Old Republic fanlisting A website button of a Star Wars: Knights of the Old Republic 2 fanlisting
    -
    - +
    -
    -
    + + +
    + \ No newline at end of file diff --git a/shrines/starwarskotor/resources/index.html b/shrines/starwarskotor/resources/index.html index 00d268b4..a9300f4e 100644 --- a/shrines/starwarskotor/resources/index.html +++ b/shrines/starwarskotor/resources/index.html @@ -1,5 +1,5 @@ - + @@ -12,88 +12,87 @@ - + - - + + + + + + + + + Resources | Star Wars: Knights of the Old Republic Shrine | Leilukin's Hub - -
    -
    - - -
    + +
    + -
    - - +
    +
    +

    Star Wars: Knights of the Old Republic Resources

    +

    Here are resources for the Star Wars: Knights of the Old Republic series I have compiled myself.

    +
    -
    -
    -

    Star Wars: Knights of the Old Republic Resources

    -

    Here are resources for the Star Wars: Knights of the Old Republic series I have compiled myself.

    -
    +
    +

    My Mods

    +

    Here are the modifications for the KotOR series I have created.

    + +
    -
    -

    My Mods

    -

    Here are the modifications for the KotOR series I have created.

    - -
    +
    +

    My Modder's Resource

    + +
    -
    -

    My Modder's Resource

    - -
    +
    +

    My Save Files

    + +
    - +
    +

    My Mod Lists

    + +
    - +
    +

    References

    + +
    - - -
    -

    My Mod Builds

    -

    Lists of modifications for the KotOR games I use for my own playthroughs.

    - -
    - -
    - -
    -
    +
    +

    My Mod Builds

    +

    Lists of modifications for the KotOR games I use for my own playthroughs.

    + +
    + + +
    + \ No newline at end of file diff --git a/shrines/starwarskotor/resources/kotor-same-gender-romance-mods.html b/shrines/starwarskotor/resources/kotor-same-gender-romance-mods.html index d137bedd..71281f07 100644 --- a/shrines/starwarskotor/resources/kotor-same-gender-romance-mods.html +++ b/shrines/starwarskotor/resources/kotor-same-gender-romance-mods.html @@ -1,5 +1,5 @@ - + @@ -12,204 +12,198 @@ - + - - + + + + + + + + + Same-Gender Romance Mods for KotOR Series | Resources | Star Wars: Knights of the Old Republic Shrine | Leilukin's Hub - -
    -
    - - -
    + +
    + -
    +
    +
    +

    List of Same-Gender Romance Mods for Star Wars: Knights of the Old Republic Series

    + +

    [This list is also available on Google Docs]

    +

    The first Star Wars: Knights of the Old Republic video game introduced Juhani, the very first confirmed gay character in any Star Wars media, including Legends, the old Star Wars Expanded Universe, and the very first canon same-gender romance option in any BioWare game. However, the KotOR series at large has little LGBTQ+ content, and except for Juhani, none of the romance options in both KotOR games are available for same-gender romances.

    + +

    Therefore, throughout the years, modders of the KotOR games have created various mods adding more same-gender romance options and content to the games to fill the void.

    + +

    Below is a list of all the same-gender romance mods that had been created for the KotOR game series throughout KotOR’s modding history, sorted by their original release dates in chronological order.

    + +

    Wanting to make your KotOR games more gay? Then this list is for you! This list also serves as an archive to document the history of same-gender romance mods for the KotOR series. Happy gayming!

    + +

    NOTE: Some listed mods below have overlapping concepts and thus are not compatible with each other. Mods that are hosted exclusively on Gamefront are very old mods that were made in the 2000s, and thus may have compatibility issues with newer mods (not just ones that listed here).

    + +

    Warning: this list contains spoilers for both KotOR games.

    +
    + +
    +

    For Knights of the Old Republic I

    + +

    Bastila & Female Revan (Untold Love Story)

    +
      +
    • Mod Author: Master Kavar
    • +
    • Original Release Date: November 25, 2006
    • +
    • Download: Gamefront
    • +
    • Mod Description: Allows female Revan to romance Bastila. In addition, this mod also allows female Revan to flirt with certain female NPCs, most notably Yuthura Ban.
    • +
    + +

    The Romancing of Bastila

    +
      +
    • Mod Author: Darth Shan & Swfan28
    • +
    • Original Release Date: March 10, 2009
    • +
    • Download: Gamefront
    • +
    • Mod Description: Compiles several Bastila content mods into one mod. Regarding Bastila’s romance, in addition to allowing female Revan to romance Bastila, this mod also includes bug fixes and a kissing scene between Bastila and female Revan.
    • +
    • Installation Note: If you want to use this mod with Bastila & Female Revan (Untold Love Story), you must install this mod AFTER Untold Love Story, and override the k_hbas_dialog.dlg file when prompted.
    • +
    + +

    Party on the Leviathan!

    +
      +
    • Mod Author: Fair Strides
    • +
    • Original Release Date: July 2, 2015
    • +
    • Download: Deadly Stream
    • +
    • Mod Description: Restores Juhani’s conversation, including romance conversation with a female player character, on the Leviathan, by spawning the rest of the Ebon Hawk crew on the Leviathan after you are rescued.
    • +
    + +

    Bi Carth

    +
      +
    • Mod Author: forgetcanon
    • +
    • Original Release Date: July 20, 2015
    • +
    • Download: Deadly Stream | Nexus Mods
    • +
    • Mod Description: Allows Male Revan to romance Carth and flirt with certain male NPCs.
    • +
    + +

    Juhani Romance Enhancement

    +
      +
    • Mod Author: Kexikus
    • +
    • Original Release Date: January 4, 2016
    • +
    • Download: Deadly Stream | Nexus Mods
    • +
    • Mod Description: Improves the final romance conversation with Juhani, including triggering the conversation automatically, provided the conditions for this conversation are met, as well as adding a kiss between Juhani and female Revan.
    • +
    • Note: For details on how to successfully complete Juhani’s romance, please check out my Juhani Romance Guide.
    • +
    + +

    JC’s Romance Enhancement: Biromantic Bastila for K1

    +
      +
    • Mod Author: JCarter426
    • +
    • Original Release Date: January 19, 2020
    • +
    • Download: Deadly Stream
    • +
    • Mod Description: Another mod that allows female Revan to romance Bastila, but what makes this mod different is that it also further edits Bastila’s dialogue so Bastila would not refer to female Revan as a man. This mod also fixes the bugs with Bastila’s romance during the endgame.
    • +
    + +

    JC's Romance Enhancement: Pan-Galactic Flirting for K1

    +
      +
    • Mod Author: JCarter426
    • +
    • Original Release Date: July 6, 2022
    • +
    • Download: Deadly Stream
    • +
    • Mod Description: Allows the player to flirt with several NPCs regardless of gender.
    • +
    • Note: This mod is essentially a modern and improved version of Bastila & Female Revan (Untold Love Story). What makes JCarter426’s mod better is the fact that this mod uses an installer tool (TSLPatcher) to patch relevant dialogue files to improve compatibility with other mods, compared to Untold Love Story's installation method of putting dialogue files into the Override folder, which increases the chance of causing conflict with other mods.
    • +
    + +

    Carth Onasi and Male PC Romance

    +
      +
    • Mod Author: Leilukin (me)
    • +
    • Original Release Date: August 6, 2022
    • +
    • Download: Deadly Stream | Nexus Mods
    • +
    • Mod Description: Inspired by the aforementioned Bi Carth mod, this is my version of a male Revan and Carth romance mod. The biggest differences between my version and forgetcanon’s are that my mod is installed by patching relevant dialogue files, instead of putting modified dialogue files in the Override folder, and I have also edited Carth’s dialogue and spliced audio files to prevent Carth from referring to male Revan as a woman.
    • +
    +
    + +
    +

    For Knights of the Old Republic II: The Sith Lords

    + +

    Worthy of Note:

    +

    Stoffe’s Handmaiden Choice for Females mod (originally released on April 23, 2005), which was the first mod ever made that allowed female Exiles to recruit Handmaiden as a party member, could technically be considered a same-gender romance mod, due to the fact that with this mod, female Exiles would also be able to romance Handmaiden by having her as a party member.

    +

    In addition, since Handmaiden replaces Disciple’s place on the Ebon Hawk crew in this mod, this mod also allows female Exiles to get the Visas romance scene after the Rebuilt Jedi Enclave sequence.

    +

    That being said, these are all side effects of Handmaiden being exclusive to male Exiles in the vanilla game. Handmaiden Choice for Females was not intentionally made with same-gender romances in mind.

    +

    Hassat Hunter had remade the mod into Handmaiden 4 Females - Disciple for Males (originally released on March 14, 2014) to be compatible with The Sith Lords Restored Content Mod (TSLRCM). However, the mod is outdated and no longer supported.

    + +

    Alternate Revan Romances

    +
      +
    • Mod Author: felixfelicitas
    • +
    • Original Release Date: March 9, 2015
    • +
    • Download: Deadly Stream | Nexus Mods
    • +
    • Mod Description: Allows players to set Revan’s love interest(s), instead of letting the game assume male Revan is romantically involved with Bastila, while female Revan is romantically involved with Carth. Most notably, with this mod, Bastila can be chosen as female Revan’s love interest, and Carth can be chosen as male Revan’s love interest.
    • +
    • Required Mod: The Sith Lords Restored Content Mod (TSLRCM)
    • +
    • WARNING: This mod is outdated, and it has game-breaking bugs. Use my REDUX version of the mod below instead. I am listing the original mod here for historical record purpose.
    • +
    + +

    Visas Marr and Female Exile Romance

    +
      +
    • Mod Author: Leilukin (me)
    • +
    • Original Release Date: December 15, 2016
    • +
    • Download: Deadly Stream | Nexus Mods
    • +
    • Mod Description: Makes the Visas romance scene, which occurs near the endgame, available for the Exile regardless of gender.
    • +
    + +

    Atton Rand and Male Exile Romance

    + + +

    Handmaiden & Female Exile - Disciple & Male Exile Romance

    +
      +
    • Mod Author: Leilukin (me)
    • +
    • Original Release Date: January 2, 2017
    • +
    • Download: Deadly Stream | Nexus Mods
    • +
    • Mod Description: In addition to allowing Handmaiden to join a female Exile’s party and allowing Disciple to join a male Exile’s party, this mod also makes Handmaiden a romance option for a female Exile, and Disciple for a male Exile. It is worth noting that by allowing Handmaiden to join a female Exile, this mod also enables romantic subtext between Atris and the female Exile.
    • +
    • Required Mod: The Sith Lords Restored Content Mod (TSLRCM)
    • +
    + +

    Darth Sion and Male Exile Mod

    + + +

    Alternate Revan Romances REDUX

    +
      +
    • Mod Author: Leilukin (me), original mod made by felixfelicitas
    • +
    • Original Release Date: January 26, 2017
    • +
    • Download: Deadly Stream | Nexus Mods
    • +
    • Mod Description: My updated version of the Alternate Revan Romances mod, released with felixfelicitas’ permission. My mod fixes many bugs with the original version.
    • +
    • Required Mod: The Sith Lords Restored Content Mod (TSLRCM)
    • +
    + +

    Dahnis Flirt Option for Female PC

    +
      +
    • Mod Author: Leilukin (me)
    • +
    • Original Release Date: November 10, 2018
    • +
    • Download: Deadly Stream | Nexus Mods
    • +
    • Mod Description: Makes Dahnis, a minor NPC and one of the Pazaak players on Nar Shaddaa, flirt with the player character regardless of gender.
    • +
    +
    +
    - - -
    -
    -

    List of Same-Gender Romance Mods for Star Wars: Knights of the Old Republic Series

    - -

    [This list is also available on Google Docs]

    -

    The first Star Wars: Knights of the Old Republic video game introduced Juhani, the very first confirmed gay character in any Star Wars media, including Legends, the old Star Wars Expanded Universe, and the very first canon same-gender romance option in any BioWare game. However, the KotOR series at large has little LGBTQ+ content, and except for Juhani, none of the romance options in both KotOR games are available for same-gender romances.

    - -

    Therefore, throughout the years, modders of the KotOR games have created various mods adding more same-gender romance options and content to the games to fill the void.

    - -

    Below is a list of all the same-gender romance mods that had been created for the KotOR game series throughout KotOR’s modding history, sorted by their original release dates in chronological order.

    - -

    Wanting to make your KotOR games more gay? Then this list is for you! This list also serves as an archive to document the history of same-gender romance mods for the KotOR series. Happy gayming!

    - -

    NOTE: Some listed mods below have overlapping concepts and thus are not compatible with each other. Mods that are hosted exclusively on Gamefront are very old mods that were made in the 2000s, and thus may have compatibility issues with newer mods (not just ones that listed here).

    - -

    Warning: this list contains spoilers for both KotOR games.

    -
    - -
    -

    For Knights of the Old Republic I

    - -

    Bastila & Female Revan (Untold Love Story)

    -
      -
    • Mod Author: Master Kavar
    • -
    • Original Release Date: November 25, 2006
    • -
    • Download: Gamefront
    • -
    • Mod Description: Allows female Revan to romance Bastila. In addition, this mod also allows female Revan to flirt with certain female NPCs, most notably Yuthura Ban.
    • -
    - -

    The Romancing of Bastila

    -
      -
    • Mod Author: Darth Shan & Swfan28
    • -
    • Original Release Date: March 10, 2009
    • -
    • Download: Gamefront
    • -
    • Mod Description: Compiles several Bastila content mods into one mod. Regarding Bastila’s romance, in addition to allowing female Revan to romance Bastila, this mod also includes bug fixes and a kissing scene between Bastila and female Revan.
    • -
    • Installation Note: If you want to use this mod with Bastila & Female Revan (Untold Love Story), you must install this mod AFTER Untold Love Story, and override the k_hbas_dialog.dlg file when prompted.
    • -
    - -

    Party on the Leviathan!

    -
      -
    • Mod Author: Fair Strides
    • -
    • Original Release Date: July 2, 2015
    • -
    • Download: Deadly Stream
    • -
    • Mod Description: Restores Juhani’s conversation, including romance conversation with a female player character, on the Leviathan, by spawning the rest of the Ebon Hawk crew on the Leviathan after you are rescued.
    • -
    - -

    Bi Carth

    -
      -
    • Mod Author: forgetcanon
    • -
    • Original Release Date: July 20, 2015
    • -
    • Download: Deadly Stream | Nexus Mods
    • -
    • Mod Description: Allows Male Revan to romance Carth and flirt with certain male NPCs.
    • -
    - -

    Juhani Romance Enhancement

    -
      -
    • Mod Author: Kexikus
    • -
    • Original Release Date: January 4, 2016
    • -
    • Download: Deadly Stream | Nexus Mods
    • -
    • Mod Description: Improves the final romance conversation with Juhani, including triggering the conversation automatically, provided the conditions for this conversation are met, as well as adding a kiss between Juhani and female Revan.
    • -
    • Note: For details on how to successfully complete Juhani’s romance, please check out my Juhani Romance Guide.
    • -
    - -

    JC’s Romance Enhancement: Biromantic Bastila for K1

    -
      -
    • Mod Author: JCarter426
    • -
    • Original Release Date: January 19, 2020
    • -
    • Download: Deadly Stream
    • -
    • Mod Description: Another mod that allows female Revan to romance Bastila, but what makes this mod different is that it also further edits Bastila’s dialogue so Bastila would not refer to female Revan as a man. This mod also fixes the bugs with Bastila’s romance during the endgame.
    • -
    - -

    JC's Romance Enhancement: Pan-Galactic Flirting for K1

    -
      -
    • Mod Author: JCarter426
    • -
    • Original Release Date: July 6, 2022
    • -
    • Download: Deadly Stream
    • -
    • Mod Description: Allows the player to flirt with several NPCs regardless of gender.
    • -
    • Note: This mod is essentially a modern and improved version of Bastila & Female Revan (Untold Love Story). What makes JCarter426’s mod better is the fact that this mod uses an installer tool (TSLPatcher) to patch relevant dialogue files to improve compatibility with other mods, compared to Untold Love Story's installation method of putting dialogue files into the Override folder, which increases the chance of causing conflict with other mods.
    • -
    - -

    Carth Onasi and Male PC Romance

    -
      -
    • Mod Author: Leilukin (me)
    • -
    • Original Release Date: August 6, 2022
    • -
    • Download: Deadly Stream | Nexus Mods
    • -
    • Mod Description: Inspired by the aforementioned Bi Carth mod, this is my version of a male Revan and Carth romance mod. The biggest differences between my version and forgetcanon’s are that my mod is installed by patching relevant dialogue files, instead of putting modified dialogue files in the Override folder, and I have also edited Carth’s dialogue and spliced audio files to prevent Carth from referring to male Revan as a woman.
    • -
    -
    - -
    -

    For Knights of the Old Republic II: The Sith Lords

    - -

    Worthy of Note:

    -

    Stoffe’s Handmaiden Choice for Females mod (originally released on April 23, 2005), which was the first mod ever made that allowed female Exiles to recruit Handmaiden as a party member, could technically be considered a same-gender romance mod, due to the fact that with this mod, female Exiles would also be able to romance Handmaiden by having her as a party member.

    -

    In addition, since Handmaiden replaces Disciple’s place on the Ebon Hawk crew in this mod, this mod also allows female Exiles to get the Visas romance scene after the Rebuilt Jedi Enclave sequence.

    -

    That being said, these are all side effects of Handmaiden being exclusive to male Exiles in the vanilla game. Handmaiden Choice for Females was not intentionally made with same-gender romances in mind.

    -

    Hassat Hunter had remade the mod into Handmaiden 4 Females - Disciple for Males (originally released on March 14, 2014) to be compatible with The Sith Lords Restored Content Mod (TSLRCM). However, the mod is outdated and no longer supported.

    - -

    Alternate Revan Romances

    -
      -
    • Mod Author: felixfelicitas
    • -
    • Original Release Date: March 9, 2015
    • -
    • Download: Deadly Stream | Nexus Mods
    • -
    • Mod Description: Allows players to set Revan’s love interest(s), instead of letting the game assume male Revan is romantically involved with Bastila, while female Revan is romantically involved with Carth. Most notably, with this mod, Bastila can be chosen as female Revan’s love interest, and Carth can be chosen as male Revan’s love interest.
    • -
    • Required Mod: The Sith Lords Restored Content Mod (TSLRCM)
    • -
    • WARNING: This mod is outdated, and it has game-breaking bugs. Use my REDUX version of the mod below instead. I am listing the original mod here for historical record purpose.
    • -
    - -

    Visas Marr and Female Exile Romance

    -
      -
    • Mod Author: Leilukin (me)
    • -
    • Original Release Date: December 15, 2016
    • -
    • Download: Deadly Stream | Nexus Mods
    • -
    • Mod Description: Makes the Visas romance scene, which occurs near the endgame, available for the Exile regardless of gender.
    • -
    - -

    Atton Rand and Male Exile Romance

    - - -

    Handmaiden & Female Exile - Disciple & Male Exile Romance

    -
      -
    • Mod Author: Leilukin (me)
    • -
    • Original Release Date: January 2, 2017
    • -
    • Download: Deadly Stream | Nexus Mods
    • -
    • Mod Description: In addition to allowing Handmaiden to join a female Exile’s party and allowing Disciple to join a male Exile’s party, this mod also makes Handmaiden a romance option for a female Exile, and Disciple for a male Exile. It is worth noting that by allowing Handmaiden to join a female Exile, this mod also enables romantic subtext between Atris and the female Exile.
    • -
    • Required Mod: The Sith Lords Restored Content Mod (TSLRCM)
    • -
    - -

    Darth Sion and Male Exile Mod

    - - -

    Alternate Revan Romances REDUX

    -
      -
    • Mod Author: Leilukin (me), original mod made by felixfelicitas
    • -
    • Original Release Date: January 26, 2017
    • -
    • Download: Deadly Stream | Nexus Mods
    • -
    • Mod Description: My updated version of the Alternate Revan Romances mod, released with felixfelicitas’ permission. My mod fixes many bugs with the original version.
    • -
    • Required Mod: The Sith Lords Restored Content Mod (TSLRCM)
    • -
    - -

    Dahnis Flirt Option for Female PC

    -
      -
    • Mod Author: Leilukin (me)
    • -
    • Original Release Date: November 10, 2018
    • -
    • Download: Deadly Stream | Nexus Mods
    • -
    • Mod Description: Makes Dahnis, a minor NPC and one of the Pazaak players on Nar Shaddaa, flirt with the player character regardless of gender.
    • -
    -
    -
    - - - -
    -
    -
    + + + \ No newline at end of file diff --git a/shrines/starwarskotor/resources/kotor2-female-exile-recruit-handmaiden-mods.html b/shrines/starwarskotor/resources/kotor2-female-exile-recruit-handmaiden-mods.html index 47dff006..f4aaf682 100644 --- a/shrines/starwarskotor/resources/kotor2-female-exile-recruit-handmaiden-mods.html +++ b/shrines/starwarskotor/resources/kotor2-female-exile-recruit-handmaiden-mods.html @@ -1,5 +1,5 @@ - + @@ -12,65 +12,63 @@ - + - - + + + + + + + + + List of KotOR 2 Mods that Allow Female Exiles to Recruit the Handmaiden as a Party Member | Resources | Star Wars: Knights of the Old Republic Shrine | Leilukin's Hub - -
    -
    - - -
    + +
    + -
    +
    +

    List of Star Wars: Knights of the Old Republic II: The Sith Lords Mods that Allow Female Exiles to Recruit the Handmaiden as a Party Member

    + +

    One of the flaws of Star Wars: Knights of the Old Republic II: The Sith Lords (KotOR 2) I believe everyone, regardless of how much you like the game (or not), will agree on, is that the Handmaiden, real name Brianna, will only join your party if you play as a male Jedi Exile. The idea of a potential party member only joins you based on your player character's gender already makes little to no sense to begin with, and it does not help that Star Wars Legends, the old Star Wars Expanded Universe, established that both Brianna the Handmaiden and Mical the Disciple join the female Exile's crew.

    - +

    However, the good news is, there are actually mods that allow female Exiles to recruit Brianna the Handmaiden as a party member. Unfortunately, despite the fact that such mods have already existed since the 2000s, there are still KotOR 2 fans who do not know the existence of such mods, which is why I am making this list. Brianna is an amazing character with an interesting story, so I highly recommend you to have at least one playthrough with Brianna as your companion regardless of your Exile’s gender.

    + +

    These are the mods that allow female Exiles to recruit Brianna the Handmaiden as a party member:

    + +

    Handmaiden Choice for Females by Stoffe

    + +

    Released on April 23, 2005, Stoffe's Handmaiden Choice for Females was the very first mod that gives female Exiles the option to recruit the Handmaiden. However, it is not compatible with The Sith Lords Restored Content Mod (TSLRCM), as it was created and released years before TSLRCM. In addition, even with this mod, Handmaiden still refers to a female Exile with “he/him” pronouns, which some people (myself included) would find very immersion-breaking

    + +

    Handmaiden 4 Females - Disciple 4 Males by Hassat Hunter

    + +

    Released on March 14, 2014, Hassat Hunter made Handmaiden 4 Females - Disciple 4 Males based on Stoffe's Handmaiden Choice for Females, so the mod would be compatible with The Sith Lords Restored Content Mod (TSLRCM). However, this version retains the flaw of Handmaiden still referring to a female Exile with “he/him” pronouns. Additioally, the mod is outdated and no longer supported.

    + +

    PartySwap by DarthTyren

    + +

    This mod fixes any potential gender and pronouns mix-up by adding gender checks to dialogues that references the Exile’s gender, which, however, also prevents female Exiles from getting any dialogue that references any potential romantic feelings between the female Exile and the Handmaiden or Atris (similarly, if you play as a male Exile, you will not get any dialogue that references any potential romance between you and the Disciple). Therefore, if you also want to romance the Handmaiden as a female Exile (or romance the Disciple as a male Exile), I would recommend checking out the below mod as well.

    + +

    Handmaiden and Female Exile - Disciple and Male Exile Romance by Leilukin

    + +

    My mod, released on January 2, 2017. As the mod name suggests, this mod allows you to recruit and romance the Handmaiden as a female Exile, ditto for the Disciple as a male Exile. My mod also requires The Sith Lords Restored Content Mod (TSLRCM) to work.

    +

    My mod fixes any potential gender/pronouns mix-up by editing dialogue and splicing audio, so users of my mod can fully enjoy the Handmaiden and the Disciple's romance content without worrying about their Exile getting misgendered.

    +

    The default installation option of my mod will make the Handmaiden automatically joins a female Exile, and the Disciple automatically joins a male Exile. That said, my mod also provides an installation option to make my mod compatible with DarthTyren's PartySwap mod.

    + +

    Final Note

    +

    It is very important to note when it comes to installing mods for KotOR 2, I do NOT recommend using the Steam Workshop, including the Steam Workshop version of The Sith Lords Restored Contente Mod. because frankly, the Steam Workshop is a mod compatibility nightmare for games like KotOR 2. I recommend reading this post: Why NOT to Use the Steam Workshop.

    +
    -
    -
    -

    List of Star Wars: Knights of the Old Republic II: The Sith Lords Mods that Allow Female Exiles to Recruit the Handmaiden as a Party Member

    - -

    One of the flaws of Star Wars: Knights of the Old Republic II: The Sith Lords (KotOR 2) I believe everyone, regardless of how much you like the game (or not), will agree on, is that the Handmaiden, real name Brianna, will only join your party if you play as a male Jedi Exile. The idea of a potential party member only joins you based on your player character's gender already makes little to no sense to begin with, and it does not help that Star Wars Legends, the old Star Wars Expanded Universe, established that both Brianna the Handmaiden and Mical the Disciple join the female Exile's crew.

    - -

    However, the good news is, there are actually mods that allow female Exiles to recruit Brianna the Handmaiden as a party member. Unfortunately, despite the fact that such mods have already existed since the 2000s, there are still KotOR 2 fans who do not know the existence of such mods, which is why I am making this list. Brianna is an amazing character with an interesting story, so I highly recommend you to have at least one playthrough with Brianna as your companion regardless of your Exile’s gender.

    - -

    These are the mods that allow female Exiles to recruit Brianna the Handmaiden as a party member:

    - -

    Handmaiden Choice for Females by Stoffe

    - -

    Released on April 23, 2005, Stoffe's Handmaiden Choice for Females was the very first mod that gives female Exiles the option to recruit the Handmaiden. However, it is not compatible with The Sith Lords Restored Content Mod (TSLRCM), as it was created and released years before TSLRCM. In addition, even with this mod, Handmaiden still refers to a female Exile with “he/him” pronouns, which some people (myself included) would find very immersion-breaking

    - -

    Handmaiden 4 Females - Disciple 4 Males by Hassat Hunter

    - -

    Released on March 14, 2014, Hassat Hunter made Handmaiden 4 Females - Disciple 4 Males based on Stoffe's Handmaiden Choice for Females, so the mod would be compatible with The Sith Lords Restored Content Mod (TSLRCM). However, this version retains the flaw of Handmaiden still referring to a female Exile with “he/him” pronouns. Additioally, the mod is outdated and no longer supported.

    - -

    PartySwap by DarthTyren

    - -

    This mod fixes any potential gender and pronouns mix-up by adding gender checks to dialogues that references the Exile’s gender, which, however, also prevents female Exiles from getting any dialogue that references any potential romantic feelings between the female Exile and the Handmaiden or Atris (similarly, if you play as a male Exile, you will not get any dialogue that references any potential romance between you and the Disciple). Therefore, if you also want to romance the Handmaiden as a female Exile (or romance the Disciple as a male Exile), I would recommend checking out the below mod as well.

    - -

    Handmaiden and Female Exile - Disciple and Male Exile Romance by Leilukin

    - -

    My mod, released on January 2, 2017. As the mod name suggests, this mod allows you to recruit and romance the Handmaiden as a female Exile, ditto for the Disciple as a male Exile. My mod also requires The Sith Lords Restored Content Mod (TSLRCM) to work.

    -

    My mod fixes any potential gender/pronouns mix-up by editing dialogue and splicing audio, so users of my mod can fully enjoy the Handmaiden and the Disciple's romance content without worrying about their Exile getting misgendered.

    -

    The default installation option of my mod will make the Handmaiden automatically joins a female Exile, and the Disciple automatically joins a male Exile. That said, my mod also provides an installation option to make my mod compatible with DarthTyren's PartySwap mod.

    - -

    Final Note

    -

    It is very important to note when it comes to installing mods for KotOR 2, I do NOT recommend using the Steam Workshop, including the Steam Workshop version of The Sith Lords Restored Contente Mod. because frankly, the Steam Workshop is a mod compatibility nightmare for games like KotOR 2. I recommend reading this post: Why NOT to Use the Steam Workshop.

    -
    -
    - -
    -
    -
    + + + \ No newline at end of file diff --git a/shrines/starwarskotor/resources/tslrcm-m478ep-modules-music.html b/shrines/starwarskotor/resources/tslrcm-m478ep-modules-music.html index e08d2d0c..949bbcac 100644 --- a/shrines/starwarskotor/resources/tslrcm-m478ep-modules-music.html +++ b/shrines/starwarskotor/resources/tslrcm-m478ep-modules-music.html @@ -1,5 +1,5 @@ - + @@ -12,52 +12,50 @@ - + - - + + + + - TSLRCM + M4-78EP Modules, Warp Codes & Music Overview | Resources | Star Wars: Knights of the Old Republic Shrine | Leilukin's Hub + + + + + + List of KotOR 2 Mods that Allow Female Exiles to Recruit the Handmaiden as a Party Member | Resources | Star Wars: Knights of the Old Republic Shrine | Leilukin's Hub - -
    -
    - - -
    + +
    + -
    +
    +

    The Sith Lords Restored Content Mod + M4-78 Enhancement Project Modules, Warp Codes & Music Overview

    + +

    [Originally posted on Deadly Stream forums]

    - +

    In 2017, modder Kexikus created a spreadsheet to list all of The first Knights of the Old Republic game's modules and their corresponding Day, Night and Battle music. Sith Holocron, who is also a modder, requested a Knights of the Old Republic II: The Sith Lords version of such list, though none of the sort has been made, so I decided to volunteer the task myself.

    + +

    Here you go:

    + +

    The Sith Lords Restored Content Mod (TSLRCM) + M4-78 Enhancement Project (M4-78EP) modules and music overview spreadsheet

    + +

    This spreadsheet covers all the modules from both TSLRCM and M4-78EP. Like in K1, the module codes can be used for the warp cheat code (for example, warp 003EBO).

    + +

    All music tracks are listed with their number corresponding to their row in ambientmusic.2da, their file name (the music files can be found in the StreamMusic folder) and their track title as identified with their TLK (dialog.tlk) StrRef. I have also included previews of the music by linking to YouTube in the spreadsheet.

    + +

    Hope you will find this spreadsheet helpful. Enjoy!

    +
    -
    -
    -

    The Sith Lords Restored Content Mod + M4-78 Enhancement Project Modules, Warp Codes & Music Overview

    - -

    [Originally posted on Deadly Stream forums]

    - -

    In 2017, modder Kexikus created a spreadsheet to list all of The first Knights of the Old Republic game's modules and their corresponding Day, Night and Battle music. Sith Holocron, who is also a modder, requested a Knights of the Old Republic II: The Sith Lords version of such list, though none of the sort has been made, so I decided to volunteer the task myself.

    - -

    Here you go:

    - -

    The Sith Lords Restored Content Mod (TSLRCM) + M4-78 Enhancement Project (M4-78EP) modules and music overview spreadsheet

    - -

    This spreadsheet covers all the modules from both TSLRCM and M4-78EP. Like in K1, the module codes can be used for the warp cheat code (for example, warp 003EBO).

    - -

    All music tracks are listed with their number corresponding to their row in ambientmusic.2da, their file name (the music files can be found in the StreamMusic folder) and their track title as identified with their TLK (dialog.tlk) StrRef. I have also included previews of the music by linking to YouTube in the spreadsheet.

    - -

    Hope you will find this spreadsheet helpful. Enjoy!

    -
    -
    - -
    -
    -
    + + + \ No newline at end of file diff --git a/shrines/starwarskotor/starwarskotor.css b/shrines/starwarskotor/starwarskotor.css index 5fbe3d03..2ed3f5c7 100644 --- a/shrines/starwarskotor/starwarskotor.css +++ b/shrines/starwarskotor/starwarskotor.css @@ -1,355 +1,553 @@ :root { - --header-image: url('./img/swkotor-header.jpg'); - --body-color: #fceaff; - --body-bg: #212121; - --content-bg: #000000; - --content: #43256E; - --title-color: #ffc400; - --title-border: #ffe387; - --code-bg: #241445; - --code-border: #e4dbbe; - --link-color: #bb9671; - --link-hover: #94575a; - --blockquote-bg: #2f2d2d; - --blockquote-border: #4d4385; - --box-bg: #13092D; + --body-bg-color: #212121; + /* --body-bg-image: url('/assets/starsforever.gif'); */ + --body-font-color: #fceaff; + --content-bg-color: #000000; + + --main-heading-color: #ffc400; + --sub-heading-color: #ffc400; + --title-border-color: #ffe387; + + --bold-font-color: #ff9933; + --link-color: #bb9671; + --link-hover-color: #94575a; + --quote-bg: #2f2d2d; + --quote-border-color: #4d4385; + + --code-bg-color: #241445; + --code-border-color: #e4dbbe; + + --link-btn-bg: #873eb5; + --link-btn-text: white; + --link-btn-hover: #241445; + + --header-bg-color: black; + --nav-bg: #1c1c1c; + --nav-link: white; + --nav-submenu-active: #111; + --nav-item-hover: #ccc; + + --top-btn-bg: #251347; + --top-btn-icon: #d3aad5; + + --footer-bg: #1c1c1c; } @font-face { - font-family: 'Nunito'; - src: url('/assets/fonts/Nunito-VariableFont_wght.ttf') format("truetype"); - font-weight: 125 950; - font-stretch: 75% 125%; - font-style: normal; + font-family: 'Nunito'; + src: url('/assets/fonts/Nunito-VariableFont_wght.ttf') format("truetype"); + font-weight: 125 950; + font-stretch: 75% 125%; + font-style: normal; } @font-face { - font-family: 'Nunito'; - src: url('/assets/fonts/Nunito-Italic-VariableFont_wght.ttf') format("truetype"); - font-weight: 125 950; - font-stretch: 75% 125%; - font-style: italic; + font-family: 'Nunito'; + src: url('/assets/fonts/Nunito-Italic-VariableFont_wght.ttf') format("truetype"); + font-weight: 125 950; + font-stretch: 75% 125%; + font-style: italic; } -html, -body { -scroll-behavior: smooth; -} - -body { - font-family: 'Nunito', Arial, sans-serif; - font-size: 1rem; /* 16px */ - margin: 0; - background-color: var(--body-bg); - background-size: 4rem; - color: var(--body-color); - background-image: var(--body-bg-image); - background-attachment: fixed; - line-height: 1.6; -} - -* { - box-sizing: border-box; +/* CSS RESET */ +/* Box sizing rules */ +*, +*::before, +*::after { + box-sizing: border-box; } +/* Remove default margin */ +body, h1, h2, -h3 { - color: var(--title-color); +h3, +h4, +p, +figure, +blockquote, +dl, +dd { + margin: 0; +} + +/* Remove list styles on ul, ol elements with a list role, which suggests default styling will be removed */ +ul[role='list'], +ol[role='list'] { + list-style: none; +} + +/* Set core root defaults */ +html:focus-within { + scroll-behavior: smooth; +} + +/* Set core body defaults */ +body { + min-height: 100vh; + text-rendering: optimizeSpeed; + line-height: 1.5; +} + +/* A elements that don't have a class get default styles */ +a:not([class]) { + text-decoration-skip-ink: auto; +} + +/* Make images easier to work with */ +img, +picture { + max-width: 100%; + display: block; +} + +/* Inherit fonts for inputs and buttons */ +input, +button, +textarea, +select { + font: inherit; +} + +/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */ +@media (prefers-reduced-motion: reduce) { + html:focus-within { + scroll-behavior: auto; + } + + *, + *::before, + *::after { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + scroll-behavior: auto !important; + } +} + +/* STYLING BEGINS */ +body { + display: flex; + align-items: center; + flex-direction: column; + font-family: 'Nunito'; + color: var(--body-font-color); + background-color: var(--body-bg-color); + background-image: var(--body-bg-image); + background-attachment: fixed; } h1 { - font-size: 2.2rem; - border-bottom: 0.18rem solid var(--title-border); - padding-bottom: 0.5rem; + color: var(--main-heading-color); } -h1:not(:first-child) { - padding-top: 30px; +h1 { + margin-bottom: 1.2rem; +} + +h2, h3 { + color: var(--sub-heading-color); +} + +h1 { + font-size: 2.2rem; + border-bottom: 0.18rem solid var(--title-border-color); } h2 { - font-size: 1.7rem; + font-size: 1.7rem; +} + +article h2, +article h3 { + margin-top: 1.5rem; +} + +p { + padding: 0.5rem 0;; } strong { - color: var(--title-color); + color: var(--bold-font-color); } -hr { - width: 75%; - margin-top: 1.5rem; - margin-bottom: 1.5rem; +a { + font-weight: 700; + color: var(--link-color); +} + +a:hover { + color: var(--link-hover-color); } blockquote { - border-left: var(--blockquote-border) 3px solid; - background: var(--blockquote-bg); - padding: 0 0.75rem; - margin: 0 1.5rem; + margin: 1.5rem 0; + padding: 0.5rem 1rem; + border-inline-start: 0.1rem solid var(--main-heading-color); + background-color: var(--quote-bg); } -.linkBtn { - font: 1.1rem 'Source Sans Pro', Arial, sans-serif; - border: 0.125rem solid var(--link-color); - border-radius: 10px; - padding: 0.75rem 1rem; - margin: 0.25em 0.15em; - background: none; - color: var(--link-color); - cursor: pointer; - font-weight: 700; - text-transform: uppercase; +pre { + white-space: pre-wrap; + overflow-x: auto; } -.linkBtn:hover { - cursor:pointer; - color: white; - background-color: var(--link-color); - transition: 0.5s; +/* HEADER */ +header { + width: 100vw; + max-height: 20rem; + background-color: var(--header-bg-color); + /* background: var(--header-img); */ + background-repeat: no-repeat; + background-size: auto; + background-position: center; + display: flex; + flex-direction: column; + justify-content: center; } -span.monospace { - font-family: monospace; - border: 1px solid var(--code-border); - padding: 2px; - background-color: var(--code-bg); +header img { + object-fit: contain; + height: 100%; +} + +/* NAVIGATION BAR */ +nav { + background: var(--nav-bg); + padding: 0 0.9rem; + width: 100%; + z-index: 999; +} + +nav a { + color: var(--nav-link); + text-decoration: none; + cursor: pointer; +} + +.nav__menu, +.nav__submenu { + list-style-type: none; + padding-left: 0; + margin: 0; +} + +.nav__title { + font-size: 20px; + padding: 0.2rem 0; +} + +.nav__item { + padding: 0.6rem; +} + +.nav__item a:hover, +.nav__item a:hover::after { + color: var(--nav-item-hover); +} + +/* Mobile nav__menu */ +.nav__menu { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; +} + +.nav__menu li a { + display: block; + padding: 0.9rem 0.8rem; +} + +.nav__menu li.nav__subitem a { + padding: 0.9rem; +} + +.nav__toggle { + order: 1; + font-size: 1.25rem; +} + +.nav__item { + order: 3; + width: 100%; + text-align: center; + display: none; +} + +.nav__active .nav__item { + display: block; +} + +/* nav__submenu up from mobile screens */ +.nav__submenu { + display: none; +} + +.nav__submenu-active .nav__submenu { + display: block; +} + +.nav__has-submenu i { + font-size: 0.75rem; +} + +.nav__has-submenu > a::after { + font-family: "Font Awesome 5 Free"; + font-size: 0.75rem; + line-height: 1.6; + font-weight: 900; + content: "\f078"; + color: white; + padding-left: 0.3125rem; +} + +.nav__subitem a { + padding: 0.625rem 0.9rem; +} + +.nav__submenu-active { + background-color: var(--nav-submenu-active); + border-radius: 0.1875rem; +} + +/* Added to the navbar with JS when it reaches its scroll position */ +.sticky-nav { + position: fixed; + width: 100vw; + top: 0; +} + +/* Add some top padding to the page content to prevent sudden quick movement (as the navigation bar gets a new position at the top of the page (position:fixed and top:0) */ +.sticky-nav + main { + padding-top: 3.75rem; +} + +/* Tablet nav__menu */ +@media all and (min-width: 43.75rem) { + .nav__menu { + justify-content: center; + } + + .nav__title { + flex: 1; + } + + .nav__toggle { + flex: 1; + text-align: right; + order: 2; + } +} + +/* Desktop nav__menu */ +@media all and (min-width: 60rem) { + .nav__menu { + align-items: flex-start; + flex-wrap: nowrap; + background: none; + } + + .nav__title { + order: 0; + } + + .nav__item { + order: 1; + position: relative; + display: block; + width: auto; + } + + .nav__submenu-active .nav__submenu { + display: block; + position: absolute; + left: 0; + top: 68px; + background: var(--nav-submenu-active); + } + + .nav__toggle { + display: none; + } + + .nav__submenu-active { + border-radius: 0; + } +} + +/* MAIN CONTENT */ +main, .content-container { + gap: 0.8rem; + display: flex; + flex-direction: column; + width: 100%; +} + +main { + font-size: 1.2rem; +} + +article, .content-section { + background-color: var(--content-bg-color); + padding: 1.35rem; +} + +.article-section { + padding: 1.25rem 0; +} + +aside { + padding: 1rem; + font-size: 0.9rem; + background-color: var(--content-bg-color); +} + +article, .content-container { + order: 1; +} + +.left-sidebar { + order: 2; +} + +.right-sidebar { + order: 3; +} + +/* Tablet main content layout */ +@media only screen and (min-width: 43.75rem) { + main { + flex-direction: row; + } + + aside { + width: 10rem; + } + + article, .content-container { + flex: 1; + order: 2; + } + + .left-sidebar { + order: 1; + } + + .right-sidebar { + order: 3; + } +} + +/* Desktop main content layout */ +@media only screen and (min-width: 60rem) { + main { + width: 60rem; + display: flex; + flex-direction: row; + justify-content: center; + } + + aside { + width: 13rem; + } +} + +/* CONTENT ELEMENTS WITH CUSTOM CLASSES */ +.inline-code { + font-family: monospace; + border: 0.06rem solid var(--code-border-color); + padding: 0.125rem 0.3rem; + margin-left: 0.125rem; + margin-right: 0.125rem; + background-color: var(--code-bg-color); } .code-snippet { - background-color: var(--code-bg); - border: 1px solid var(--code-border); - display: block; - padding: 0.5em; - overflow-x: auto; - word-break: break-all; + background-color: var(--code-bg-color); + border: 0.08rem solid var(--code-border-color); + display: block; + padding: 0.5em 0.8rem; + overflow-x: auto; + word-break: keep-all; } -.box { - background-color: var(--box-bg); - border: 1px solid var(--title-color); - padding: 10px; +.text-box { + background-color: var(--quote-bg); + border: 0.06rem solid var(--main-heading-color); + padding: 0.625rem; + margin-bottom: 0.8rem; +} + +.link-btn { + font: 1.3rem 'Source Sans Pro', Arial, sans-serif; + display: inline-block; + border: 0.15rem solid var(--link-btn-bg); + border-radius: 0.6rem; + padding: 0.75rem 1rem; + background-color: var(--link-btn-bg); + color: var(--link-btn-text); + cursor: pointer; + font-weight: 700; + text-transform: uppercase; +} + +.link-btn, +.link-btn:hover, +.link-btn:visited { + text-decoration: none; +} + +.link-btn:hover { + cursor: pointer; + background-color: var(--link-btn-hover); + transition: 0.5s; } .full-width-youtube-video { - position: relative; - padding-bottom: 56.25%; - height: 0; + position: relative; + padding-bottom: 56.25%; + height: 0; } .full-width-youtube-video iframe { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; -} - - -/* CONTAINER for wrapping the entire website */ -#container { - max-width: 1100px; - /* the width of the layout */ - /* if you change the above value, scroll to the bottom -and change the media query according to the comment! */ - margin: 0 auto; - /* this centers the entire page */ -} - -/* For all links on your page EXCEPT for the navigation */ -#container a { - color: var(--link-color); - font-weight: bold; -} - -#container a:hover { - color: var(--link-hover); -} - -#header { - width: 100%; - background-color: var(--content-bg); - height: 480px; - background-image: var(--header-image); - background-size: 100%; - background-repeat: no-repeat; - background-position: center; -} - -/* NAVIGATION SECTION */ -.sticky-nav { - position: fixed; - top: 0; - max-width: 1100px; -} - -#navbar { - height: 2.5rem; - background-color: var(--content-bg); - width: 100%; - margin-bottom: 0.625rem; - z-index: 999; -} - -#navbar ul { - display: flex; - padding: 0; - margin: 0; - list-style-type: none; - justify-content: space-evenly; -} - -#navbar li { - padding-top: 0.625rem; -} - -#navbar li a { - color: var(--link-color); - /* navbar text color */ - font-weight: 800; - text-decoration: none; - /* this removes the underline */ -} - -#navbar li a:hover { - color: var(--link-hover); - text-decoration: underline; -} - -#flex { - display: flex; -} - -/* EXTRAS */ -#topBar { - width: 100%; - height: 1.875rem; - padding: 0.625rem; - font-size: smaller; - background-color: var(--box-bg); -} - -/* MAIN CONTENT AREA, between the sidebars */ -main { - font-size: 1.2rem; - flex: 1; - order: 2; -} - -.content-section { - background-color: var(--content-bg); - padding: 1.25rem; -} - -.content-section:not(:first-child) { - margin-top: 0.625rem; -} - -/* This colors BOTH sidebars -If you want to style them separately, -create styles for #leftSidebar and #rightSidebar */ -aside { - background-color: var(--content-bg); - width: 12.5rem; - padding: 1.25rem; - font-size: smaller; - /* this makes the sidebar text slightly smaller */ -} - -aside h1, aside h2, aside h3 { - margin-bottom: 0; -} - -aside ul { - margin-top: 0.5rem; -} - -aside .box ul { - padding-left: 1.25rem; -} - -#leftSidebar { - order: 1; - margin-right: 1.25rem; -} - -#rightSidebar { - order: 3; - margin-left: 1.25rem; -} - -.sidebar-content { - position: sticky; - top: 40px; - font-size: 0.9rem; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; } /* TABLE OF CONTENTS */ - -.toc-title { - font-size: 1.3rem; - font-weight: bold; +.sidebar__toc { + position: sticky; + top: 5rem; } -.toc-list { - list-style: none; - margin-left: 0; - padding-left: 0; - font-size: 1rem; +.sidebar__toc-title { + font-size: 1.3rem; + font-weight: bold; } -.toc-list li { - margin-bottom: 0.5em; +.sidebar__toc-list { + list-style: none; + margin-left: 0; + padding-left: 0; + font-size: 1rem; } +.sidebar__toc-list li { + margin-bottom: 0.5em; +} + +.sidebar__toc-list ul { + padding-left: 1.25rem; +} /* FOOTER */ - footer { - background-color: var(--content-bg); - width: 100%; - height: 2.5rem; - text-align: center; - display: flex; - justify-content: center; - align-items: center; - margin-top: 1.25rem; -} - - -/* MEDIA QUERY STARTS HERE */ - -/* To keep things responsive, -if you want to change the width of your page, -take your new width of the #container, and then subtrack it by 100. -Use this new number as the "max-width" value below */ - -@media only screen and (max-width: 1000px) { - #flex { - flex-wrap: wrap; - } - - aside { - width: 100%; - } - - /* the order of the items is adjusted here for responsiveness. - since the sidebars would be too small on a mobile device. */ - main { - order: 1; - } - - #leftSidebar { - order: 2; - margin-right: 1.25rem; - } - - #rightSidebar { - order: 3; - margin-left: 1.25rem; - } - - #navbar ul { - flex-wrap: wrap; - } + background-color: var(--footer-bg); + width: 100vw; + padding: 0.5rem; + text-align: center; } \ No newline at end of file diff --git a/shrines/starwarskotor/starwarskotor.js b/shrines/starwarskotor/starwarskotor.js deleted file mode 100644 index c78fc6f7..00000000 --- a/shrines/starwarskotor/starwarskotor.js +++ /dev/null @@ -1,21 +0,0 @@ -/* --- SCRIPT FOR THE NAVIGATION BAR --- */ -var navBarHTML = ` - -`; - -document.querySelector("#navbar").innerHTML = navBarHTML; - - -/* --- SCRIPT FOR THE RIGHT SIDEBAR --- */ -var leftSidebarHTML = ` -

    About

    -

    Star Wars: Knights of the Old Republic is a space opera role-playing video game series that takes place in the Star Wars universe. The story takes place approximately 4,000 years before the rise of the Galactic Empire.

    -`; - -document.querySelector("#leftSidebarContent").innerHTML = leftSidebarHTML; \ No newline at end of file diff --git a/sitemap.html b/sitemap.html index bf4cd95f..f11f9427 100644 --- a/sitemap.html +++ b/sitemap.html @@ -1,116 +1,111 @@ - + - - + + - + + - + + + Site Map | Leilukin's Hub + +
    + -
    -
    - -
    - -
    - - - -
    -

    Site Map

    -

    This page lists the links to the pages on my website for easier navigation.

    +
    +

    Site Map

    +

    This page lists the links to the pages on my website for easier navigation.

    + +
    -
    - -
    -
    -
    - + +
    + \ No newline at end of file