130 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			MySQL
		
	
	
		
		
			
		
	
	
			130 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			MySQL
		
	
	
| 
								 | 
							
								-- -*- mode:sql sql-product:sqlite -*-
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								PRAGMA foreign_keys = ON;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								-- TODO needs data
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								-- Rarity will be by trait
							 | 
						||
| 
								 | 
							
								-- Monster 'type' will be by trait
							 | 
						||
| 
								 | 
							
								-- Monster category is also by trait
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								-- So the bestiary breaks down trait versus category or family, but then sticks
							 | 
						||
| 
								 | 
							
								-- them all in the trait position on the stat block, so I think we just do it
							 | 
						||
| 
								 | 
							
								-- all with traits. Thoughts?
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE monsters (
							 | 
						||
| 
								 | 
							
								  monster_id INTEGER PRIMARY KEY,
							 | 
						||
| 
								 | 
							
								  is_comty_use BOOLEAN NOT NULL, -- false = no community use policy req
							 | 
						||
| 
								 | 
							
								  sourceentry_id INTEGER, -- new style source entries
							 | 
						||
| 
								 | 
							
								  -- monstercategories_id INTEGER, -- Humanoid etc..
							 | 
						||
| 
								 | 
							
								  "name" TEXT NOT NULL UNIQUE,
							 | 
						||
| 
								 | 
							
								  "level" INTEGER,
							 | 
						||
| 
								 | 
							
								  alignment_id INTEGER, -- i.e. NG, LE etc..
							 | 
						||
| 
								 | 
							
								  perception INTEGER,
							 | 
						||
| 
								 | 
							
								  size_id INTEGER, -- i.e. large medium small etc..
							 | 
						||
| 
								 | 
							
								  ac INTEGER,
							 | 
						||
| 
								 | 
							
								  fortitude INTEGER,
							 | 
						||
| 
								 | 
							
								  reflex INTEGER,
							 | 
						||
| 
								 | 
							
								  will INTEGER,
							 | 
						||
| 
								 | 
							
								  hp INTEGER,
							 | 
						||
| 
								 | 
							
								  land_speed INTEGER, -- we decided to make the speeds flattened as they don't
							 | 
						||
| 
								 | 
							
								                      -- save much extra space
							 | 
						||
| 
								 | 
							
								  burrow_speed INTEGER,
							 | 
						||
| 
								 | 
							
								  climb_speed INTEGER,
							 | 
						||
| 
								 | 
							
								  fly_speed INTEGER,
							 | 
						||
| 
								 | 
							
								  swim_speed INTEGER,
							 | 
						||
| 
								 | 
							
								  str_mod INTEGER,
							 | 
						||
| 
								 | 
							
								  dex_mod INTEGER,
							 | 
						||
| 
								 | 
							
								  con_mod INTEGER,
							 | 
						||
| 
								 | 
							
								  int_mod INTEGER,
							 | 
						||
| 
								 | 
							
								  wis_mod INTEGER,
							 | 
						||
| 
								 | 
							
								  cha_mod INTEGER,
							 | 
						||
| 
								 | 
							
								  specific_monster_flavortext TEXT,
							 | 
						||
| 
								 | 
							
								  FOREIGN KEY (alignment_id) REFERENCES alignments(alignments_id),
							 | 
						||
| 
								 | 
							
								  FOREIGN KEY (size_id) REFERENCES sizes(size_id),
							 | 
						||
| 
								 | 
							
								  FOREIGN KEY (sourceentry_id) REFERENCES sourceentries(sourceentry_id)
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE monsterflavortexttypes (
							 | 
						||
| 
								 | 
							
								  monsterflavortexttype_id INTEGER PRIMARY KEY,
							 | 
						||
| 
								 | 
							
								  "name" TEXT NOT NULL UNIQUE
							 | 
						||
| 
								 | 
							
								  -- page 7 Bestiary
							 | 
						||
| 
								 | 
							
								  -- 'Monster Category' -- i.e. "Bear"
							 | 
						||
| 
								 | 
							
								  -- THE FOLLOWING ARE THE SIDEBAR CONTENT FROM BESTIARY
							 | 
						||
| 
								 | 
							
								  -- 'Advice and Rules'
							 | 
						||
| 
								 | 
							
								  -- 'Related Creatures'
							 | 
						||
| 
								 | 
							
								  -- 'Additional Lore'
							 | 
						||
| 
								 | 
							
								  -- 'Treasure and Rewards'
							 | 
						||
| 
								 | 
							
								  -- 'Locations'
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE monsterflavortexts (
							 | 
						||
| 
								 | 
							
								  monsterflavortext_id INTEGER PRIMARY KEY,
							 | 
						||
| 
								 | 
							
								  monsterflavortexttype_id INTEGER,
							 | 
						||
| 
								 | 
							
								  heading TEXT NOT NULL,
							 | 
						||
| 
								 | 
							
								  mft_text TEXT NOT NULL,
							 | 
						||
| 
								 | 
							
								  FOREIGN KEY (monsterflavortexttype_id) REFERENCES monsterflavortexttypes(monsterflavortexttype_id)
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE monsters_monsterflavortexts (
							 | 
						||
| 
								 | 
							
								  id INTEGER PRIMARY KEY,
							 | 
						||
| 
								 | 
							
								  monster_id,
							 | 
						||
| 
								 | 
							
								  monsterflavortext_id,
							 | 
						||
| 
								 | 
							
								  FOREIGN KEY (monster_id) REFERENCES monsters(monster_id),
							 | 
						||
| 
								 | 
							
								  FOREIGN KEY (monsterflavortext_id) REFERENCES monsterflavortexts(monsterflavortext_id)
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE monsters_senses (
							 | 
						||
| 
								 | 
							
								  id INTEGER PRIMARY KEY,
							 | 
						||
| 
								 | 
							
								  monster_id INTEGER NOT NULL,
							 | 
						||
| 
								 | 
							
								  sense_id INTEGER NOT NULL,
							 | 
						||
| 
								 | 
							
								  FOREIGN KEY (monster_id) REFERENCES monsters(monster_id),
							 | 
						||
| 
								 | 
							
								  FOREIGN KEY (sense_id) REFERENCES senses(senses_id)
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE monsters_immunities (
							 | 
						||
| 
								 | 
							
								  id INTEGER PRIMARY KEY,
							 | 
						||
| 
								 | 
							
								  monsters_id INTEGER NOT NULL,
							 | 
						||
| 
								 | 
							
								  immunities_id INTEGER NOT NULL,
							 | 
						||
| 
								 | 
							
								  FOREIGN KEY (monsters_id) REFERENCES monsters(monsters_id),
							 | 
						||
| 
								 | 
							
								  FOREIGN KEY (immunities_id) REFERENCES immunities(immunities_id)
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE monsters_skills (
							 | 
						||
| 
								 | 
							
								  id INTEGER PRIMARY KEY,
							 | 
						||
| 
								 | 
							
								  monster_id INTEGER NOT NULL,
							 | 
						||
| 
								 | 
							
								  skills_id INTEGER NOT NULL, -- will ID the specific skill
							 | 
						||
| 
								 | 
							
								  skill_mod INTEGER NOT NULL, -- will hold the modifier value
							 | 
						||
| 
								 | 
							
								  UNIQUE(monster_id, skills_id), -- so we don't get duplicate rows for a specific monster
							 | 
						||
| 
								 | 
							
								  FOREIGN KEY (monster_id) REFERENCES monsters(monster_id),
							 | 
						||
| 
								 | 
							
								  FOREIGN KEY (skills_id) REFERENCES skills(skills_id)
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE monsters_traits (
							 | 
						||
| 
								 | 
							
								  id INTEGER PRIMARY KEY,
							 | 
						||
| 
								 | 
							
								  monster_id INTEGER NOT NULL,
							 | 
						||
| 
								 | 
							
								  trait_id INTEGER NOT NULL,
							 | 
						||
| 
								 | 
							
								  FOREIGN KEY (monster_id) REFERENCES monsters(monster_id),
							 | 
						||
| 
								 | 
							
								  FOREIGN KEY (trait_id) REFERENCES traits(trait_id)
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE monsters_langs (
							 | 
						||
| 
								 | 
							
								  id INTEGER PRIMARY KEY,
							 | 
						||
| 
								 | 
							
								  monster_id INTEGER NOT NULL,
							 | 
						||
| 
								 | 
							
								  lang_id INTEGER NOT NULL,
							 | 
						||
| 
								 | 
							
								  FOREIGN KEY (monster_id) REFERENCES monsters(monster_id),
							 | 
						||
| 
								 | 
							
								  FOREIGN KEY (lang_id) REFERENCES langs(lang_id)
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE monsteractions (
							 | 
						||
| 
								 | 
							
								  monsteraction_id INTEGER PRIMARY KEY,
							 | 
						||
| 
								 | 
							
								  "name" TEXT
							 | 
						||
| 
								 | 
							
								  -- TODO
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE monsters_actions (
							 | 
						||
| 
								 | 
							
								  id INTEGER PRIMARY KEY,
							 | 
						||
| 
								 | 
							
								  monster_id INTEGER NOT NULL,
							 | 
						||
| 
								 | 
							
								  monsteraction_id INTEGER NOT NULL
							 | 
						||
| 
								 | 
							
								);
							 |