diff --git a/database/spellsaurus_db_create.sql b/database/spellsaurus_db_create.sql new file mode 100644 index 0000000..fc80558 --- /dev/null +++ b/database/spellsaurus_db_create.sql @@ -0,0 +1,71 @@ +DROP DATABASE IF EXISTS spellsaurus; +CREATE DATABASE spellsaurus; +USE spellsaurus; + +/* ==== PRIMARY TABLES ==== */ + +/* SPELLS */ +CREATE TABLE IF NOT EXISTS `spell` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `name` VARCHAR(255) NOT NULL, + `description` VARCHAR(1000) NOT NULL, + `level` INT UNSIGNED, + `charge` INT UNSIGNED, + `cost` VARCHAR(255), + PRIMARY KEY(`id`) +); + +/* SCHOOLS */ +CREATE TABLE IF NOT EXISTS `school` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `name` VARCHAR(255) NOT NULL, + `description` VARCHAR(255), + PRIMARY KEY(`id`) +); + +/* COMMON INGREDIENTS */ +CREATE TABLE IF NOT EXISTS `ingredient` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `name` VARCHAR(255) NOT NULL, + PRIMARY KEY `pk_id`(`id`) +); + +/* COMMON VARIABLES */ +CREATE TABLE IF NOT EXISTS `variable` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `description` VARCHAR(255) NOT NULL, + PRIMARY KEY (`id`) +); + + +/* ==== ASSOCIATION TABLES ==== */ + +/* SPELLS' SCHOOLS */ +/* One spell can have multiple (up to 3) schools */ +CREATE TABLE IF NOT EXISTS `spells_schools` ( + `id_spell` INT UNSIGNED NOT NULL, + `id_school` INT UNSIGNED NOT NULL, + PRIMARY KEY (`id_spell`, `id_school`), + FOREIGN KEY(`id_spell`) REFERENCES spell(`id`), + FOREIGN KEY(`id_school`) REFERENCES school(`id`) +); + +/* SPELLS' VARIABLES */ +/* One spell can have multiple (up to 2) variables of cost */ +CREATE TABLE IF NOT EXISTS `spells_variables` ( + `id_spell` INT UNSIGNED NOT NULL, + `id_variable` INT UNSIGNED NOT NULL, + PRIMARY KEY (`id_spell`, `id_variable`), + FOREIGN KEY(`id_spell`) REFERENCES spell(`id`), + FOREIGN KEY(`id_variable`) REFERENCES variable(`id`) +); + +/* SPELLS' VARIABLES */ +/* One spell can have multiple ingredients */ +CREATE TABLE IF NOT EXISTS `spells_ingredients` ( + `id_spell` INT UNSIGNED NOT NULL, + `id_ingredient` INT UNSIGNED NOT NULL, + PRIMARY KEY (`id_spell`, `id_ingredient`), + FOREIGN KEY(`id_spell`) REFERENCES spell(`id`), + FOREIGN KEY(`id_ingredient`) REFERENCES ingredient(`id`) +); diff --git a/database/spellsaurus_db_data.sql b/database/spellsaurus_db_data.sql new file mode 100644 index 0000000..2d74c23 --- /dev/null +++ b/database/spellsaurus_db_data.sql @@ -0,0 +1,23 @@ +INSERT INTO `spell` VALUES (1, 'Soleil Pourri', 'Le lanceur projette un petit astre vert jusqu’à 20m autour de lui. L’astre brûle l’air environnant, nécrosant rapidement les formes de vies dans un rayon de 100m. Toutes les créatures dans la portée de l’astre (sauf le lanceur) doivent réussir un jet de CON avec un malus de -30. Si elles échouent, elles subissent 3D20 dégâts radiants et 2D20 dégâts nécrotiques. Elles perdent également 1D10 PV max.', 30, 2, "-90"); +INSERT INTO `spell` VALUES (2, 'Œil de Sotana', 'Donne au lanceur une vision thermique des 5 mètres alentours permettant de voir la force vitale des créatures conscientes environnantes. Plus une forme apparait clairement au lanceur, plus elle est en bonne santé.', 10, 0, "-15x"); + +INSERT INTO `spell` VALUES (3, 'Guérison I', 'Rend 2D4+4 PV, soigne les contusions légères et blessures superficielles.', 0, 0, "0"); +INSERT INTO `spell` VALUES (4, 'Guérison II', 'Rend 2D6+6 PV, soigne les blessures mineures.', 0, 0, "-10"); +INSERT INTO `spell` VALUES (5, 'Guérison III', 'Rend 2D10+10 PV, soigne les blessures profondes.', 0, 0, "-20"); +INSERT INTO `spell` VALUES (6, 'Guérison IV', 'Rend 2D20+20 PV, soigne les blessures graves et stoppe les hémorragies.', 0, 0, "-40"); +INSERT INTO `spell` VALUES (7, 'Thaumaturgie', 'Débordant d’altruisme, le lanceur canalise l’arcane autour de lui afin de panser les blessures d’une créature. La créature ciblée regagne 3D20+30 PV. Ses blessures graves se guérissent instantannément et toute hémorragie cesse. Si la cible se trouvait dans un état de mort imminente, elle est considérée comme stabilisée.', 20, 1, "-60"); + +INSERT INTO `spell` VALUES (8, 'Guérison collective I', 'Rend 1D4+4 PV à plusieurs créatures, soigne les contusions légères et blessures superficielles.', 0, 0, "-2x"); +INSERT INTO `spell` VALUES (9, 'Guérison collective II', 'Rend 1D6+6 PV à plusieurs créatures, soigne les blessures mineures.', 0, 0, "-10"); +INSERT INTO `spell` VALUES (10, 'Guérison collective III', 'Rend 1D10+10 PV à plusieurs créatures, soigne les blessures profondes.', 0, 0, "-20"); +INSERT INTO `spell` VALUES (11, 'Guérison collective IV', 'Rend 1D20+20 PV à plusieurs créatures, soigne les blessures graves et stoppe les hémorragies.', 0, 0, "-40"); +INSERT INTO `spell` VALUES (12, 'Polythurgie', 'Le lanceur transmet de l\'énergie vitale pure à plusieurs créatures. Elles regagnent 3D10+30 PV et leurs hémorragies graves s\'estompent. Si les cibles se trouvaient dans un état de mort imminente, elles sont considérées comme stabilisées.', 20, 1, "-60"); + +INSERT INTO `spell` VALUES (13, 'Fanisy', 'Déplace le lanceur à travers le temps, lui permettant d`\'accéder à des époques passées ou futures. Il est plus difficile d\'accéder au passé qu\'au futur. Si le lanceur modifie un point temporel fixe qui se répercute de manière significative sur le reste de la ligne temporelle, il subit 5D10 dégâts bruts ignorants l\'armure inesquivables par tour où le point fixe temporel à été altéré.', 60, 2, "?"); + +/* INGREDIENTS */ +INSERT INTO `ingredient` VALUES (1, 'Volonté'); +INSERT INTO `ingredient` VALUES (2, 'Geste'); + +/* VARIABLES */ +INSERT INTO `variable` VALUES (1, 'Nombre de personnes soignées'); diff --git a/package-lock.json b/package-lock.json index 48354ad..540fce3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7667,9 +7667,9 @@ } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "minipass": { diff --git a/package.json b/package.json index eee8938..c17c3f2 100644 --- a/package.json +++ b/package.json @@ -1,63 +1,64 @@ { - "name": "spellsaurus", - "version": "1.0.0", - "description": "A dictionnary of arcane spells from a homebrew tabletop RPG.", - "keywords": [ - "rpg", - "dev", - "spells", - "roleplay", - "website", - "database" - ], - "author": "AlexisNP", - "license": "ISC", - "bugs": { - "url": "https://github.com/AlexisNP/spellsaurus/issues" - }, - "homepage": "https://github.com/AlexisNP/spellsaurus#readme", - "private": true, - "repository": { - "type": "git", - "url": "git+https://github.com/AlexisNP/spellsaurus.git" - }, - "scripts": { - "serve": "vue-cli-service serve", - "build": "vue-cli-service build", - "lint": "vue-cli-service lint" - }, - "dependencies": { - "core-js": "^3.6.4", - "vue": "^2.6.11" - }, - "devDependencies": { - "@vue/cli-plugin-babel": "~4.2.0", - "@vue/cli-plugin-eslint": "~4.2.0", - "@vue/cli-service": "~4.2.0", - "babel-eslint": "^10.0.3", - "eslint": "^6.7.2", - "eslint-plugin-vue": "^6.1.2", - "node-sass": "^4.13.1", - "sass-loader": "^8.0.2", - "vue-router": "^3.1.6", - "vue-template-compiler": "^2.6.11" - }, - "eslintConfig": { - "root": true, - "env": { - "node": true - }, - "extends": [ - "plugin:vue/essential", - "eslint:recommended" + "name": "spellsaurus", + "version": "1.0.0", + "description": "A dictionnary of arcane spells from a homebrew tabletop RPG.", + "keywords": [ + "rpg", + "dev", + "spells", + "roleplay", + "website", + "database" ], - "parserOptions": { - "parser": "babel-eslint" + "author": "AlexisNP", + "license": "ISC", + "bugs": { + "url": "https://github.com/AlexisNP/spellsaurus/issues" }, - "rules": {} - }, - "browserslist": [ - "> 1%", - "last 2 versions" - ] + "homepage": "https://github.com/AlexisNP/spellsaurus#readme", + "private": true, + "repository": { + "type": "git", + "url": "git+https://github.com/AlexisNP/spellsaurus.git" + }, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint" + }, + "dependencies": { + "core-js": "^3.6.4", + "vue": "^2.6.11" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "~4.2.0", + "@vue/cli-plugin-eslint": "~4.2.0", + "@vue/cli-service": "~4.2.0", + "babel-eslint": "^10.0.3", + "eslint": "^6.7.2", + "eslint-plugin-vue": "^6.1.2", + "express": "^4.17.1", + "node-sass": "^4.13.1", + "sass-loader": "^8.0.2", + "vue-router": "^3.1.6", + "vue-template-compiler": "^2.6.11" + }, + "eslintConfig": { + "root": true, + "env": { + "node": true + }, + "extends": [ + "plugin:vue/essential", + "eslint:recommended" + ], + "parserOptions": { + "parser": "babel-eslint" + }, + "rules": {} + }, + "browserslist": [ + "> 1%", + "last 2 versions" + ] } diff --git a/src/models/Spell.ts b/src/models/Spell.ts new file mode 100644 index 0000000..85bb757 --- /dev/null +++ b/src/models/Spell.ts @@ -0,0 +1,18 @@ +class Spell { + + private id: number + private name: string + private description: string + private cost: number + private charge: number + private schools: Array + private ingredients: Array + private variables: Array + + constructor(id: number) { + this.id = id + } + +} + +export default Spell; \ No newline at end of file diff --git a/src/pages/spells.vue b/src/pages/spells.vue index 6e2d545..58c3715 100644 --- a/src/pages/spells.vue +++ b/src/pages/spells.vue @@ -1,26 +1,37 @@