- - liquibase formatted sql
- - changeset reya : users_table runInTransaction : false
CREATE TABLE IF NOT EXISTS users
(
id UUID NOT NULL PRIMARY KEY DEFAULT gen_random_uuid ( ) ,
is_admin BOOLEAN NOT NULL DEFAULT FALSE ,
created_at TIMESTAMPTZ NOT NULL DEFAULT now ( ) ,
updated_at TIMESTAMPTZ NOT NULL DEFAULT now ( ) ,
active_at TIMESTAMPTZ NULL DEFAULT NULL ,
FAMILY essentials ( id , is_admin ) ,
FAMILY timestamps ( created_at , updated_at , active_at )
) ;
- - rollback DROP TABLE IF EXISTS users ;
- - changeset reya : types_table runInTransaction : false
CREATE TABLE IF NOT EXISTS types
(
id INT NOT NULL PRIMARY KEY ,
name STRING NOT NULL ,
color STRING NOT NULL ,
display_order INT NOT NULL ,
immunities INT [ ] NOT NULL DEFAULT ' {} ' ,
resistances INT [ ] NOT NULL DEFAULT ' {} ' ,
weaknesses INT [ ] NOT NULL DEFAULT ' {} '
) ;
- - rollback DROP TABLE IF EXISTS types ;
- - changeset reya : types_values runInTransaction : true
INSERT INTO types ( id , name , color , display_order )
VALUES ( 0 , ' Basic ' , ' ' , 0 ) ,
( 1 , ' Sassy ' , ' ' , 1 ) ,
( 2 , ' Gentle ' , ' ' , 2 ) ,
( 3 , ' Sexy ' , ' ' , 3 ) ,
( 4 , ' Muscle ' , ' ' , 4 ) ,
( 5 , ' Glam ' , ' ' , 5 ) ,
( 6 , ' Punk ' , ' ' , 6 ) ,
( 7 , ' Glutton ' , ' ' , 7 ) ,
( 8 , ' Dumb ' , ' ' , 8 ) ,
( 9 , ' Drone ' , ' ' , 9 ) ,
( 10 , ' Spooky ' , ' ' , 10 ) ,
( 11 , ' Lively ' , ' ' , 11 ) ,
( 12 , ' Smart ' , ' ' , 12 ) ,
( 13 , ' Cool ' , ' ' , 13 ) ,
( 14 , ' Bully ' , ' ' , 14 ) ,
( 15 , ' Mythic ' , ' ' , 15 ) ,
( 16 , ' Toy ' , ' ' , 16 ) ,
( 17 , ' Cute ' , ' ' , 17 )
ON CONFLICT DO NOTHING ;
- - rollback DELETE FROM types WHERE id in ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 )
- - changeset reya : difficulties_table runInTransaction : false
CREATE TABLE IF NOT EXISTS difficulties
(
id INT NOT NULL PRIMARY KEY ,
name STRING NOT NULL UNIQUE ,
description STRING NOT NULL ,
display_order INT NOT NULL ,
endo_only BOOLEAN NOT NULL DEFAULT false ,
regenerate_talent BOOLEAN NOT NULL DEFAULT false ,
lose_proficiency_percent FLOAT NOT NULL DEFAULT 0 ,
lose_exp_percent FLOAT NOT NULL DEFAULT 0 ,
lose_money_percent FLOAT NOT NULL DEFAULT 0 ,
allow_reformation BOOLEAN NOT NULL DEFAULT true
) ;
- - rollback DROP TABLE IF EXISTS difficulties ;
- - changeset reya : difficulties_values runInTransaction : true
INSERT INTO difficulties
( id , name , description , display_order , endo_only , regenerate_talent , lose_proficiency_percent , lose_exp_percent ,
lose_money_percent , allow_reformation )
VALUES ( 0 , ' Endo Only ' , ' You can never be digested. You always come out sooner or later. ' , 0 , true , false , 0 , 0 , 0 ,
true ) ,
( 1 , ' Very Safe ' ,
' You '' ll be completely safe. The only downsides to being digested? Inconvenience. And smug predators. ' , 1 ,
false , false , 0 , 0 , 0 , true ) ,
( 2 , ' Safe ' ,
' Your noggin will get rattled around, sure, and you might drop some of your cash, but it '' s a small price to pay for being able to come back. ' ,
2 , false , true , 10 , 0 , 10 , true ) ,
( 3 , ' Risky ' ,
' Getting digested is going to mess with your head, for sure. You '' ll come back a bit weakened from the experience, and your wallet will notice. This is the recommended difficulty. ' ,
3 , false , true , 25 , 10 , 25 , true ) ,
( 4 , ' Dangerous ' ,
' Digestion is something to be avoided at all costs. You '' ll lose half your money, your stats will have atrophied, and you '' ll lose some of your memories. ' ,
4 , false , true , 50 , 25 , 50 , true ) ,
( 5 , ' Very Dangerous ' ,
' Being a meal is not just humiliating - it '' s a nightmare. You '' re lucky you get to hold on to anything. ' , 5 ,
false , true , 90 , 50 , 90 , true ) ,
( 6 , ' Extremely Dangerous ' ,
' If you get devoured and you don '' t get out, you '' ll lose just about everything. Be very, very careful... ' , 6 ,
false , true , 100 , 100 , 100 , true )
ON CONFLICT DO NOTHING ;
- - rollback DELETE FROM difficulties WHERE id IN ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ) ;
- - changeset reya : preferences_table runInTransaction : false
CREATE TABLE IF NOT EXISTS preferences
(
id INT NOT NULL PRIMARY KEY ,
name STRING NOT NULL UNIQUE ,
description STRING NOT NULL ,
display_order INT NOT NULL ,
can_use_vore BOOLEAN NOT NULL ,
can_receive_vore BOOLEAN NOT NULL
) ;
- - rollback DROP TABLE IF EXISTS preferences ;
- - changeset reya : preferences_values runInTransaction : true
INSERT INTO preferences ( id , name , description , display_order , can_use_vore , can_receive_vore )
VALUES ( 0 , ' Observer ' , ' You can neither eat nor be eaten. ' , 0 , false , false ) ,
( 1 , ' Prey Only ' , ' You can only be eaten, not eat. ' , 1 , false , true ) ,
( 2 , ' Pred Only ' , ' You can only eat, not be eaten. ' , 2 , true , false ) ,
( 3 , ' Switch ' , ' You can both eat and be eaten. ' , 3 , true , true )
ON CONFLICT DO NOTHING ;
- - rollback DELETE FROM preferences WHERE id IN ( 0 , 1 , 2 , 3 ) ;
- - changeset reya : genders_table runInTransaction : false
CREATE TABLE IF NOT EXISTS genders
(
id INT NOT NULL PRIMARY KEY ,
name STRING NOT NULL ,
pronouns STRING NOT NULL UNIQUE ,
display_order INT NOT NULL ,
use_plural BOOLEAN NOT NULL ,
subjective STRING NOT NULL ,
adjective STRING NOT NULL ,
possessive STRING NOT NULL ,
reflexive STRING NOT NULL ,
objective STRING NOT NULL
) ;
- - rollback DROP TABLE IF EXISTS genders ;
- - changeset reya : genders_values runInTransaction : true
INSERT INTO genders ( id , name , pronouns , display_order , use_plural , subjective , adjective , possessive , reflexive ,
objective )
VALUES ( 0 , ' Non-binary ' , ' name only ' , 0 , false , ' @@ ' , ' @@ '' s ' , ' @@ '' s ' , ' @@ '' s self ' , ' @@ ' ) ,
( 1 , ' Female ' , ' she/her ' , 1 , false , ' she ' , ' her ' , ' hers ' , ' herself ' , ' her ' ) ,
( 2 , ' Non-binary ' , ' they/them ' , 2 , true , ' they ' , ' their ' , ' theirs ' , ' themself ' , ' them ' ) ,
( 3 , ' Male ' , ' he/him ' , 3 , false , ' he ' , ' his ' , ' his ' , ' himself ' , ' him ' ) ,
( 4 , ' Object ' , ' it/its ' , 4 , false , ' it ' , ' its ' , ' its ' , ' itself ' , ' it ' ) ,
( 5 , ' Herm ' , ' shi/hir ' , 5 , false , ' shi ' , ' hir ' , ' hirs ' , ' hirself ' , ' hir ' ) ,
( 6 , ' Non-binary ' , ' ae/aer ' , 6 , false , ' ae ' , ' aer ' , ' aers ' , ' aerself ' , ' aer ' ) ,
( 7 , ' Non-binary ' , ' fae/faer ' , 7 , false , ' fae ' , ' faer ' , ' faers ' , ' faerself ' , ' faer ' ) ,
( 8 , ' Non-binary ' , ' e/em ' , 8 , false , ' e ' , ' eir ' , ' eirs ' , ' emself ' , ' em ' ) ,
( 9 , ' Non-binary ' , ' ey/em ' , 9 , false , ' ey ' , ' eir ' , ' eirs ' , ' emself ' , ' em ' ) ,
( 10 , ' Non-binary ' , ' per/per ' , 10 , false , ' per ' , ' pers ' , ' pers ' , ' perself ' , ' per ' ) ,
( 11 , ' Non-binary ' , ' ve/ver ' , 11 , false , ' ve ' , ' vis ' , ' vis ' , ' verself ' , ' ver ' ) ,
( 12 , ' Non-binary ' , ' xe/xem ' , 12 , false , ' xe ' , ' xyr ' , ' xyrs ' , ' xemself ' , ' xem ' ) ,
( 13 , ' Non-binary ' , ' ze/hir ' , 13 , false , ' ze ' , ' hir ' , ' hirs ' , ' hirself ' , ' hir ' ) ,
( 14 , ' Non-binary ' , ' zie/hir ' , 14 , false , ' zie ' , ' hir ' , ' hirs ' , ' hirself ' , ' hir ' ) ,
( 15 , ' Non-binary ' , ' zie/zim ' , 15 , false , ' zie ' , ' zir ' , ' zis ' , ' zieself ' , ' zim ' ) ,
( 16 , ' Non-binary ' , ' sie/sie ' , 16 , false , ' sie ' , ' hir ' , ' hirs ' , ' hirself ' , ' sie ' ) ,
( 17 , ' Non-binary ' , ' te/ter ' , 17 , false , ' te ' , ' tem ' , ' ters ' , ' terself ' , ' ter ' )
ON CONFLICT DO NOTHING ;
- - rollback DELETE FROM genders WHERE id IN ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 ) ;
- - changeset reya : characters_table runInTransaction : false
CREATE TABLE IF NOT EXISTS characters
(
id UUID NOT NULL PRIMARY KEY DEFAULT gen_random_uuid ( ) ,
user_id UUID NOT NULL REFERENCES users ( id ) ON DELETE CASCADE ,
name STRING NOT NULL ,
discriminator INT NULL DEFAULT NULL ,
title STRING NOT NULL ,
profile STRING NOT NULL ,
gender_id INT NOT NULL REFERENCES genders ( id ) ON DELETE RESTRICT ,
difficulty_id INT NOT NULL REFERENCES difficulties ( id ) ON DELETE RESTRICT ,
preference_id INT NOT NULL REFERENCES preferences ( id ) ON DELETE RESTRICT ,
type1_id INT NOT NULL REFERENCES types ( id ) ON DELETE RESTRICT ,
type2_id INT NOT NULL REFERENCES types ( id ) ON DELETE RESTRICT ,
experience INT NOT NULL DEFAULT 0 ,
money INT NOT NULL DEFAULT 0 ,
-- stats: base
base_confidence INT NOT NULL DEFAULT 70 ,
base_health INT NOT NULL DEFAULT 70 ,
base_stamina INT NOT NULL DEFAULT 70 ,
base_brawn INT NOT NULL DEFAULT 70 ,
base_durability INT NOT NULL DEFAULT 70 ,
base_intensity INT NOT NULL DEFAULT 70 ,
base_resilience INT NOT NULL DEFAULT 70 ,
base_speed INT NOT NULL DEFAULT 70 ,
-- stats: banked talent points
min_confidence_talent INT NOT NULL DEFAULT 0 ,
min_health_talent INT NOT NULL DEFAULT 0 ,
min_stamina_talent INT NOT NULL DEFAULT 0 ,
min_brawn_talent INT NOT NULL DEFAULT 0 ,
min_durability_talent INT NOT NULL DEFAULT 0 ,
min_intensity_talent INT NOT NULL DEFAULT 0 ,
min_resilience_talent INT NOT NULL DEFAULT 0 ,
min_speed_talent INT NOT NULL DEFAULT 0 ,
-- stats: current talent points
confidence_talent INT NOT NULL DEFAULT floor ( random ( ) * 32 ) : : INT , - - min_confidence_talent + floor ( random ( ) * ( 32 - min_confidence_talent ) ) ,
health_talent INT NOT NULL DEFAULT floor ( random ( ) * 32 ) : : INT , - - min_health_talent + floor ( random ( ) * ( 32 - min_health_talent ) ) ,
stamina_talent INT NOT NULL DEFAULT floor ( random ( ) * 32 ) : : INT , - - min_stamina_talent + floor ( random ( ) * ( 32 - min_stamina_talent ) ) ,
brawn_talent INT NOT NULL DEFAULT floor ( random ( ) * 32 ) : : INT , - - min_brawn_talent + floor ( random ( ) * ( 32 - min_brawn_talent ) ) ,
durability_talent INT NOT NULL DEFAULT floor ( random ( ) * 32 ) : : INT , - - min_durability_talent + floor ( random ( ) * ( 32 - min_durability_talent ) ) ,
intensity_talent INT NOT NULL DEFAULT floor ( random ( ) * 32 ) : : INT , - - min_intensity_talent + floor ( random ( ) * ( 32 - min_intensity_talent ) ) ,
resilience_talent INT NOT NULL DEFAULT floor ( random ( ) * 32 ) : : INT , - - min_resilience_talent + floor ( random ( ) * ( 32 - min_resilience_talent ) ) ,
speed_talent INT NOT NULL DEFAULT floor ( random ( ) * 32 ) : : INT , - - min_speed_talent + floor ( random ( ) * ( 32 - min_speed_talent ) ) ,
-- stats: current proficiency points
confidence_proficiency INT NOT NULL DEFAULT 0 ,
health_proficiency INT NOT NULL DEFAULT 0 ,
stamina_proficiency INT NOT NULL DEFAULT 0 ,
brawn_proficiency INT NOT NULL DEFAULT 0 ,
durability_proficiency INT NOT NULL DEFAULT 0 ,
intensity_proficiency INT NOT NULL DEFAULT 0 ,
resilience_proficiency INT NOT NULL DEFAULT 0 ,
speed_proficiency INT NOT NULL DEFAULT 0 ,
UNIQUE ( user_id , name , discriminator ) ,
FAMILY character_base ( id , user_id , name , title , profile , gender_id , type1_id , type2_id , base_confidence ,
base_health ,
base_stamina , base_brawn , base_durability , base_intensity , base_resilience , base_speed ) ,
FAMILY character_reformation_stats ( min_confidence_talent , min_health_talent , min_stamina_talent , min_brawn_talent ,
min_durability_talent , min_intensity_talent , min_resilience_talent ,
min_speed_talent ,
confidence_talent , health_talent , stamina_talent , brawn_talent ,
durability_talent , intensity_talent , resilience_talent , speed_talent ) ,
FAMILY character_live_stats ( difficulty_id , preference_id , experience , money , confidence_proficiency ,
health_proficiency , stamina_proficiency , brawn_proficiency , durability_proficiency ,
intensity_proficiency , resilience_proficiency , speed_proficiency )
) ;
- - rollback DROP TABLE IF EXISTS characters ;
- - changeset reya : character_creation_table runInTransaction : false
CREATE TABLE IF NOT EXISTS character_creation
(
user_id UUID NOT NULL REFERENCES users ( id ) ON DELETE CASCADE ,
character_id UUID NULL REFERENCES characters ( id ) ON DELETE CASCADE ,
name STRING NULL ,
title STRING NULL ,
profile STRING NULL ,
gender_id INT NULL REFERENCES genders ( id ) ON DELETE RESTRICT ,
difficulty_id INT NULL REFERENCES difficulties ( id ) ON DELETE RESTRICT ,
preference_id INT NULL REFERENCES preferences ( id ) ON DELETE RESTRICT ,
type1_id INT NULL REFERENCES types ( id ) ON DELETE RESTRICT ,
type2_id INT NULL REFERENCES types ( id ) ON DELETE RESTRICT ,
base_confidence INT NULL DEFAULT 70 ,
base_health INT NULL DEFAULT 70 ,
base_stamina INT NULL DEFAULT 70 ,
base_brawn INT NULL DEFAULT 70 ,
base_durability INT NULL DEFAULT 70 ,
base_intensity INT NULL DEFAULT 70 ,
base_resilience INT NULL DEFAULT 70 ,
base_speed INT NULL DEFAULT 70 ,
PRIMARY KEY ( user_id , character_id )
) ;
- - rollback DROP TABLE IF EXISTS character_creation ;
- - changeset reya : userDefaultDifficultyPreferenceGender
ALTER TABLE users
ADD COLUMN default_gender_id INT NULL REFERENCES genders ( id ) ON DELETE RESTRICT DEFAULT NULL
CREATE IF NOT EXISTS FAMILY character_defaults ,
ADD COLUMN default_difficulty_id INT NULL REFERENCES difficulties ( id ) ON DELETE RESTRICT DEFAULT NULL
FAMILY character_defaults ,
ADD COLUMN default_preference_id INT NULL REFERENCES preferences ( id ) ON DELETE RESTRICT DEFAULT NULL
FAMILY character_defaults ;
- - rollback ALTER