diff --git a/index.html b/index.html
index 920cd39..c87a9ee 100644
--- a/index.html
+++ b/index.html
@@ -63,6 +63,7 @@
+
@@ -873,12 +874,18 @@
Description
Phobias
-
Empty.
+
+
Collection
+
+
+
Manias
+
+
Listing
Empty.
diff --git a/scripts/collections/background/phobias_collection.js b/scripts/collections/background/phobias_collection.js
new file mode 100644
index 0000000..d6157c2
--- /dev/null
+++ b/scripts/collections/background/phobias_collection.js
@@ -0,0 +1,110 @@
+import { Random } from "../../math/random.js";
+
+export const PhobiasCollection = Object.freeze({
+ phobias: [
+ { name: "Ablutophobia", description: "Fear of washing or bathing." },
+ { name: "Acrophobia", description: "Fear of heights." },
+ { name: "Aerophobia", description: "Fear of flying." },
+ { name: "Afefobia", description: "Fear of being touched." },
+ { name: "Agoraphobia", description: "Fear of open public spaces (crowded)." },
+ { name: "Alectorophobia", description: "Fear of chickens." },
+ { name: "Alliumphobia", description: "Fear of garlic." },
+ { name: "Amaxophobia", description: "Fear of being inside vehicles or driving them." },
+ { name: "Ancraophobia", description: "Fear of wind." },
+ { name: "Androphobia", description: "Fear of men." },
+ { name: "Anglophobia", description: "Fear of England or English culture, etc." },
+ { name: "Anthophobia", description: "Fear of flowers." },
+ { name: "Apotemnophobia", description: "Fear of people with amputated limbs." },
+ { name: "Arachnophobia", description: "Fear of spiders." },
+ { name: "Astraphobia", description: "Fear of lightning." },
+ { name: "Atephobia", description: "Fear of ruins." },
+ { name: "Aulophobia", description: "Fear of flutes." },
+ { name: "Bacteriophobia", description: "Fear of bacteria." },
+ { name: "Ballistophobia", description: "Fear of projectiles or bullets." },
+ { name: "Basophobia", description: "Fear of falling." },
+ { name: "Bibliophobia", description: "Fear of books." },
+ { name: "Botanophobia", description: "Fear of plants." },
+ { name: "Caligynephobia", description: "Fear of beautiful women." },
+ { name: "Ceraunophobia", description: "Fear of thunder." },
+ { name: "Cheimaphobia", description: "Fear of cold." },
+ { name: "Cynophobia", description: "Fear of dogs." },
+ { name: "Claustrophobia", description: "Fear of enclosed or small spaces." },
+ { name: "Coulrophobia", description: "Fear of clowns." },
+ { name: "Chronomentrophobia", description: "Fear of clocks." },
+ { name: "Demophobia", description: "Fear of crowds." },
+ { name: "Demonophobia", description: "Fear of spirits or demons." },
+ { name: "Dentophobia", description: "Fear of dentists." },
+ { name: "Disposophobia", description: "Fear of throwing things away (hoarding)." },
+ { name: "Doraphobia", description: "Fear of animal skins." },
+ { name: "Dromophobia", description: "Fear of crossing streets." },
+ { name: "Ecclesiophobia", description: "Fear of churches." },
+ { name: "Eisoptrophobia", description: "Fear of mirrors." },
+ { name: "Enetophobia", description: "Fear of needles or pins." },
+ { name: "Entomophobia", description: "Fear of insects." },
+ { name: "Scotophobia", description: "Fear of darkness or night." },
+ { name: "Stenophobia", description: "Fear of narrow things or places." },
+ { name: "Phagophobia", description: "Fear of swallowing, eating, or being eaten." },
+ { name: "Pharmacophobia", description: "Fear of taking medicines." },
+ { name: "Spectrophobia", description: "Fear of ghosts." },
+ { name: "Ailurophobia", description: "Fear of cats." },
+ { name: "Phengophobia", description: "Fear of daylight." },
+ { name: "Gephyrophobia", description: "Fear of crossing bridges." },
+ { name: "Gerontophobia", description: "Fear of old people or aging." },
+ { name: "Gynophobia", description: "Fear of women." },
+ { name: "Hamartophobia", description: "Fear of sinning." },
+ { name: "Hemophobia", description: "Fear of blood." },
+ { name: "Herpetophobia", description: "Fear of reptiles." },
+ { name: "Hydrophobia", description: "Fear of water." },
+ { name: "Hypnophobia", description: "Fear of sleeping or being hypnotized." },
+ { name: "Homichlophobia", description: "Fear of fog." },
+ { name: "Hoplophobia", description: "Fear of firearms." },
+ { name: "Iatrophobia", description: "Fear of doctors." },
+ { name: "Ichthyophobia", description: "Fear of fish." },
+ { name: "Katsaridaphobia", description: "Fear of cockroaches." },
+ { name: "Lachanophobia", description: "Fear of vegetables." },
+ { name: "Ligyrophobia", description: "Fear of loud noises." },
+ { name: "Limnophobia", description: "Fear of lakes." },
+ { name: "Mechanophobia", description: "Fear of machines or machinery." },
+ { name: "Megalophobia", description: "Fear of large things." },
+ { name: "Merinthophobia", description: "Fear of being tied up." },
+ { name: "Meteorophobia", description: "Fear of meteors or meteorites." },
+ { name: "Mysophobia", description: "Fear of dirt or contamination." },
+ { name: "Mixophobia", description: "Fear of sticky substances." },
+ { name: "Monophobia", description: "Fear of being alone." },
+ { name: "Necrophobia", description: "Fear of dead things." },
+ { name: "Octophobia", description: "Fear of the number 8." },
+ { name: "Odontophobia", description: "Fear of teeth." },
+ { name: "Ophidiophobia", description: "Fear of snakes." },
+ { name: "Oneirophobia", description: "Fear of dreams." },
+ { name: "Onomatophobia", description: "Fear of hearing a certain word or words." },
+ { name: "Ornithophobia", description: "Fear of birds." },
+ { name: "Parasitophobia", description: "Fear of parasites." },
+ { name: "Pediophobia", description: "Fear of dolls." },
+ { name: "Pyrophobia", description: "Fear of fire." },
+ { name: "Pogonophobia", description: "Fear of beards." },
+ { name: "Potamophobia", description: "Fear of rivers." },
+ { name: "Potophobia", description: "Fear of alcohol or alcoholic beverages." },
+ { name: "Rabdophobia", description: "Fear of magic." },
+ { name: "Selenophobia", description: "Fear of the moon." },
+ { name: "Siderodromophobia", description: "Fear of traveling by train." },
+ { name: "Siderophobia", description: "Fear of stars." },
+ { name: "Symmetrophobia", description: "Fear of symmetry." },
+ { name: "Taphophobia", description: "Fear of being buried alive or cemeteries." },
+ { name: "Thalassophobia", description: "Fear of the sea." },
+ { name: "Taurophobia", description: "Fear of bulls." },
+ { name: "Telephonophobia", description: "Fear of telephones." },
+ { name: "Teratophobia", description: "Fear of monsters." },
+ { name: "Tomophobia", description: "Fear of surgical operations." },
+ { name: "Triskaidekaphobia", description: "Fear of the number 13." },
+ { name: "Vestiphobia", description: "Fear of clothing." },
+ { name: "Wiccaphobia", description: "Fear of witches and witchcraft." },
+ { name: "Xanthophobia", description: "Fear of the color yellow or the word 'yellow'." },
+ { name: "Xenophobia", description: "Fear of strangers or foreigners." },
+ { name: "Xenoglossophobia", description: "Fear of foreign languages." },
+ { name: "Zoophobia", description: "Fear of animals." }
+ ],
+
+ getRandomPhobia: function () {
+ return Random.getRandomArrayElement(this.phobias);
+ },
+});
\ No newline at end of file
diff --git a/scripts/generator/routine/scsg_data.js b/scripts/generator/routine/scsg_data.js
index a26f2ba..09204ee 100644
--- a/scripts/generator/routine/scsg_data.js
+++ b/scripts/generator/routine/scsg_data.js
@@ -30,6 +30,7 @@ import { IntensityCollection } from "../../collections/special/intensity_collect
import { Random } from "../../math/random.js";
import { BelovedBelongingsCollection } from "../../collections/background/beloved_belongings_collection.js";
import { CharacteristicsCollection } from "../../collections/background/characteristics_collection.js";
+import { PhobiasCollection } from "../../collections/background/phobias_collection.js";
//#endregion
@@ -69,6 +70,7 @@ export function SCSGData(settings) {
let char_background_important_location = backgroundGenerator.getRandomImportantLocation();
let char_background_dear_belongings = backgroundGenerator.getRandomDarlingBelonging();
let char_background_dear_characteristic = backgroundGenerator.getRandomCharacteristic();
+ let char_background_dear_phobias = backgroundGenerator.getRandomPhobias();
//#endregion
return {
@@ -157,7 +159,9 @@ export function SCSGData(settings) {
characteristics: {
target: char_background_dear_characteristic
- }
+ },
+
+ phobias: char_background_dear_phobias,
},
};
}
@@ -333,5 +337,38 @@ const backgroundGenerator = Object.freeze({
getRandomCharacteristic: function () {
return CharacteristicsCollection.getRandomCharacteristic();
},
+
+ getRandomPhobias: function () {
+ let phobias = [];
+ let phobiasAndIntensity = [];
+
+ let count = Random.getRandomNumber(0, 5);
+
+ for (let i = 0; i < count; i++) {
+ let phobiaSelected = PhobiasCollection.getRandomPhobia();
+
+ if (phobias.includes(phobiaSelected)) {
+ continue;
+ }
+
+ phobias.push(phobiaSelected);
+ }
+
+ phobias.forEach(phobia => {
+ let intensitySelected;
+
+ do {
+ intensitySelected = IntensityCollection.getRandomIntensity();
+ } while (intensitySelected === "None");
+
+ phobiasAndIntensity.push({
+ name: phobia.name,
+ description: phobia.description,
+ intensity: intensitySelected
+ });
+ });
+
+ return phobiasAndIntensity;
+ },
});
//#endregion
diff --git a/scripts/generator/routine/scsg_updater.js b/scripts/generator/routine/scsg_updater.js
index fa38473..eb971cc 100644
--- a/scripts/generator/routine/scsg_updater.js
+++ b/scripts/generator/routine/scsg_updater.js
@@ -33,6 +33,7 @@ let cs_background_significant_people_reason;
let cs_background_important_location;
let cs_background_dear_belongings;
let cs_background_characteristic;
+let cs_background_phobias_collection;
// ======================================== //
// Main
@@ -72,6 +73,7 @@ export function SCSGQueryElements() {
cs_background_important_location = document.querySelector("#cs-background-important-location");
cs_background_dear_belongings = document.querySelector("#cs-background-dear-belongings");
cs_background_characteristic = document.querySelector("#cs-background-characteristic");
+ cs_background_phobias_collection = document.querySelector("#cs-background-phobias-collection");
}
export function SCSGUpdater(characterInfos) {
@@ -152,6 +154,37 @@ function updateBackground(characterInfos) {
// Characteristics
cs_background_characteristic.innerHTML = characterInfos.background.characteristics.target;
+
+ // Phobias
+ cs_background_phobias_collection.replaceChildren();
+
+ if (characterInfos.background.phobias.length > 0) {
+ characterInfos.background.phobias.forEach(phobia => {
+ let phobia_item = document.createElement("div");
+ let title = document.createElement("span");
+ let description = document.createElement("span");
+
+ phobia_item.classList.add("app-item-square");
+ title.classList.add("app-item-square-title");
+ description.classList.add("app-item-square-description");
+
+ phobia_item.appendChild(title);
+ phobia_item.appendChild(description);
+
+ title.innerHTML = `${phobia.name} (${phobia.intensity})`;
+ description.innerHTML = phobia.description;
+
+ cs_background_phobias_collection.appendChild(phobia_item);
+ });
+ }
+ else {
+ let empty_item = document.createElement("div");
+ empty_item.classList.add("app-item-square");
+
+ empty_item.innerHTML = "The character does not have phobias.";
+
+ cs_background_phobias_collection.appendChild(empty_item);
+ }
}
// ================================ //
diff --git a/styles/core/elements/app_elements.css b/styles/core/elements/app_elements.css
index d0670ad..cc9862c 100644
--- a/styles/core/elements/app_elements.css
+++ b/styles/core/elements/app_elements.css
@@ -74,4 +74,37 @@
margin-left: 16px;
font-size: 120%;
+}
+
+/* COLLECTION */
+.app-items-collection {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 10px;
+
+ width: 100%;
+ height: auto;
+}
+
+.app-item-square {
+ display: flex;
+ flex-direction: column;
+
+ width: auto;
+ height: auto;
+
+ background-color: #2b2d31;
+
+ padding: 16px;
+
+ border-radius: 16px;
+}
+
+.app-item-square-title {
+ font-size: 18px;
+ font-weight: bolder;
+}
+
+.app-item-square-description {
+ text-align: justify;
}
\ No newline at end of file