Compare commits
274 Commits
Author | SHA1 | Date | |
---|---|---|---|
b6204e81e7 | |||
8ff2711363 | |||
55a77aec8c | |||
5bd30e36f7 | |||
1ee65ef764 | |||
4f94e86a7c | |||
123d1673b6 | |||
9d36c16600 | |||
4ede197d83 | |||
706b2aa0fa | |||
0a5b7a06f4 | |||
9c41f51820 | |||
ba91bea4ea | |||
844137b551 | |||
18aebc4733 | |||
92b8366cef | |||
bbf28330e6 | |||
e048fe71a3 | |||
3f164b7e17 | |||
fc57fcbaba | |||
d43cac8129 | |||
98079872ca | |||
c31075e54f | |||
44e6fd20b9 | |||
47f5132f14 | |||
b0aaea1474 | |||
0e0079d973 | |||
32d645ea19 | |||
ef7678fa69 | |||
20dec1e4eb | |||
cac19da882 | |||
8a7426cda5 | |||
f9c41061e1 | |||
60895fd395 | |||
d5d9247edd | |||
3a8090dab7 | |||
ee05b0d381 | |||
96ff8ae45f | |||
42c786b1d0 | |||
99f177887f | |||
69e23bf187 | |||
93a6631cc3 | |||
f7dc48b008 | |||
0b29aca44d | |||
dde7039ad4 | |||
c3dda1de44 | |||
3466b54785 | |||
afe8b5e184 | |||
22069cae7d | |||
d572db69ca | |||
dcf17cf1de | |||
39fbd6c3bf | |||
b31cf9c703 | |||
3e1f7cd637 | |||
561db899da | |||
92fbe801b0 | |||
8fe7584682 | |||
3fcc2d77b0 | |||
d0cddafbac | |||
b2436c7dc9 | |||
905c26d873 | |||
226dd666f5 | |||
f3cfe2a326 | |||
0d696c5bcd | |||
5259a2ec57 | |||
c9b2f15521 | |||
0d0e03218d | |||
686e1b374a | |||
a16f03a720 | |||
0d69bbfe75 | |||
5949512a38 | |||
f3c1edbc2c | |||
e199b01f50 | |||
a7ac3e65f2 | |||
35cbec16f7 | |||
b740fdc3b4 | |||
bf58d05503 | |||
b71fcaa385 | |||
f99437e3ab | |||
d3f9d79af1 | |||
2005670077 | |||
46f2e3d158 | |||
d21f9ecc4e | |||
d26d9278a3 | |||
12ecf5e935 | |||
42eeb72f1a | |||
e6dc7deeb9 | |||
151d63fc24 | |||
100d8a6806 | |||
ad92ad468b | |||
71f01a167c | |||
3ca90663b2 | |||
8a7c50b307 | |||
3facffb771 | |||
108dc89fd7 | |||
09863e9b8e | |||
80873d2dfc | |||
d146ea3b78 | |||
7d790cfdc8 | |||
deab61d1f2 | |||
f56b4ce009 | |||
19c7a08703 | |||
95b995fd2d | |||
81d3be7dd8 | |||
28fce7c075 | |||
fad8b27797 | |||
f31b41f942 | |||
f8b7fe6243 | |||
2255777840 | |||
d9d3fba1b2 | |||
b2af139799 | |||
057f4f2e52 | |||
55077fc27b | |||
1fc14dc5c8 | |||
11b117d85c | |||
d84ecd91a1 | |||
abb484abf1 | |||
16b6dbe977 | |||
538c58c1e4 | |||
9f51f12cca | |||
766b323042 | |||
c700651427 | |||
0d3ee36121 | |||
6200459bdb | |||
82eb65e679 | |||
94192b41eb | |||
eefd121157 | |||
27a2028001 | |||
dccbdb8f4a | |||
e414e321b6 | |||
868c05ef99 | |||
edb72d1701 | |||
c805fd2cb3 | |||
3627f987da | |||
b13a34044b | |||
07af6cdbf6 | |||
145491fd2a | |||
ad951c9cf8 | |||
736debbb96 | |||
b43720cab8 | |||
2ff3509c30 | |||
461a547db7 | |||
ff83237c95 | |||
48d9ba09f9 | |||
046ba41ebb | |||
3ee90ae9e1 | |||
166d8eb47a | |||
0a932a00d7 | |||
73099fbd90 | |||
7ecda94c7b | |||
d542652a8b | |||
9103feccfb | |||
fa2077c5fb | |||
67cb189ef4 | |||
6c3e23a1ea | |||
2461605557 | |||
ab0aae1cdb | |||
146abad9f5 | |||
5fb593cba1 | |||
68ab7ceebd | |||
c39c0b442a | |||
20d81f4bf5 | |||
bb2876f7a3 | |||
7075e8ef88 | |||
085d406216 | |||
ae72c1ddac | |||
b588292daf | |||
12a30784e1 | |||
0cb1a61c3a | |||
527a3f695f | |||
c0c8718eb0 | |||
28a27472a8 | |||
0c29cb0554 | |||
99da683632 | |||
16a132dccd | |||
136a68bda4 | |||
3cc4dace5d | |||
36b89d209f | |||
b8c77084b2 | |||
f6ff8aaf20 | |||
7640d788d0 | |||
015ef0dbaa | |||
95f20adb03 | |||
ca0bbe22a4 | |||
6ca10bd803 | |||
b53ece536b | |||
c8123bdc86 | |||
1bce1e94e8 | |||
5cd626e799 | |||
b1f2ff17f2 | |||
cd8f3228ba | |||
8ca94d33b8 | |||
6f7b71ad70 | |||
5206a700f8 | |||
74a3ce0487 | |||
883d1835d1 | |||
0223cfd4d1 | |||
4e6ecf39b9 | |||
9781b5da1f | |||
c59e4b3814 | |||
03366a3540 | |||
fadeaf1c43 | |||
9296e1713b | |||
aeafc97679 | |||
e1c42cf07f | |||
da96fea874 | |||
de3b7e3315 | |||
809362175d | |||
dcbc5326dc | |||
c793c99811 | |||
ebbd30fc30 | |||
03bca2c11f | |||
45288b2e3e | |||
543bc41f3f | |||
b35cca6091 | |||
02d7304de3 | |||
3c52e2d65d | |||
329ac81ed2 | |||
a7aaacb2e5 | |||
f75e20876b | |||
85dc9920fa | |||
18d1b75c4a | |||
665ef65ec0 | |||
7b430e05cb | |||
d61c3f620f | |||
9477b7346b | |||
7e083c3024 | |||
6dc97aa9c3 | |||
2126eabe75 | |||
2a5e04bbd1 | |||
fe5921fa57 | |||
4b0382a931 | |||
89c25d4342 | |||
e17e3ace58 | |||
b82393a62b | |||
607145f45f | |||
b9c44c9120 | |||
004619d6dd | |||
9826e57e7f | |||
d6da8436bc | |||
e47ba17121 | |||
e5196c3513 | |||
e1c0c66b1b | |||
1fc3e040e7 | |||
c1f520fbc5 | |||
f426f5029b | |||
b49bdae96a | |||
070cafed58 | |||
441e09a12f | |||
0de41a2ce8 | |||
8de1b8bb5a | |||
44fdbc9029 | |||
9c4b438e9b | |||
6350ad7239 | |||
2c302d7f09 | |||
23c19b9acb | |||
d6db2b6b56 | |||
10cd041d38 | |||
bf5604871d | |||
11af142a09 | |||
e4ce736960 | |||
![]() |
1698b66f43 | ||
6145d9f594 | |||
3d33b981fe | |||
956d7b2a32 | |||
4ddb1a5194 | |||
910918d4c5 | |||
a37ebe0e98 | |||
6461af2757 | |||
b138651a8f | |||
eeb9c2ebe0 | |||
f75e9d96f9 | |||
c384b279cb | |||
474d01e901 |
4
.gitignore
vendored
4
.gitignore
vendored
@ -2,6 +2,10 @@
|
|||||||
# Created by https://www.toptal.com/developers/gitignore/api/aspnetcore,node,visualstudio,visualstudiocode,vscode,windows,linux,angular
|
# Created by https://www.toptal.com/developers/gitignore/api/aspnetcore,node,visualstudio,visualstudiocode,vscode,windows,linux,angular
|
||||||
# Edit at https://www.toptal.com/developers/gitignore?templates=aspnetcore,node,visualstudio,visualstudiocode,vscode,windows,linux,angular
|
# Edit at https://www.toptal.com/developers/gitignore?templates=aspnetcore,node,visualstudio,visualstudiocode,vscode,windows,linux,angular
|
||||||
|
|
||||||
|
#Swagger
|
||||||
|
SessionCompanion/SessionCompanion/SessionCompanion.xml
|
||||||
|
SessionCompanion/SessionCompanion.ViewModels/SessionCompanion.ViewModels.xml
|
||||||
|
|
||||||
### Angular ###
|
### Angular ###
|
||||||
## Angular ##
|
## Angular ##
|
||||||
# compiled output
|
# compiled output
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
using SessionCompanion.Database.Tables;
|
using SessionCompanion.Database.Tables;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@ -24,13 +26,293 @@ namespace SessionCompanion.Database
|
|||||||
public virtual DbSet<Strength> Strengths { get; set; }
|
public virtual DbSet<Strength> Strengths { get; set; }
|
||||||
public virtual DbSet<User> Users { get; set; }
|
public virtual DbSet<User> Users { get; set; }
|
||||||
public virtual DbSet<Wisdom> Wisdoms { get; set; }
|
public virtual DbSet<Wisdom> Wisdoms { get; set; }
|
||||||
|
public virtual DbSet<Spell> Spells { get; set; }
|
||||||
|
public virtual DbSet<CharacterSpell> CharacterSpells { get; set; }
|
||||||
|
public virtual DbSet<CharacterSpellSlots> CharacterSpellSlots { get; set; }
|
||||||
|
public virtual DbSet<Armor> Armors { get; set; }
|
||||||
|
public virtual DbSet<CharacterArmor> CharacterArmors { get; set; }
|
||||||
|
public virtual DbSet<Weapon> Weapons { get; set; }
|
||||||
|
public virtual DbSet<CharacterWeapon> CharacterWeapons { get; set; }
|
||||||
|
public virtual DbSet<OtherEquipment> OtherEquipment { get; set; }
|
||||||
|
public virtual DbSet<CharacterOtherEquipment> CharacterOtherEquipment { get; set; }
|
||||||
|
public virtual DbSet<Monster> Monsters { get; set; }
|
||||||
|
public virtual DbSet<MonsterAction> MonsterActions { get; set; }
|
||||||
|
public virtual DbSet<MonsterLegendaryAction> MonsterLegendaryActions { get; set; }
|
||||||
|
public virtual DbSet<MonsterSpecialAbility> MonsterSpecialAbilities { get; set; }
|
||||||
|
public virtual DbSet<GameAction> GameActions { get; set; }
|
||||||
|
public virtual DbSet<LegendaryAction> LegendaryActions { get; set; }
|
||||||
|
public virtual DbSet<SpecialAbility> SpecialAbilities { get; set; }
|
||||||
|
public virtual DbSet<Shopkeeper> Shopkeepers { get; set; }
|
||||||
|
public virtual DbSet<ShopkeeperItem> ShopkeeperItems { get; set; }
|
||||||
|
|
||||||
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { }
|
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { }
|
||||||
|
|
||||||
|
public List<SpecialAbility> SpecialAbilitiesList { get; set; }
|
||||||
|
public List<LegendaryAction> LegendaryActionsList { get; set; }
|
||||||
|
public List<GameAction> GameActionsList { get; set; }
|
||||||
|
|
||||||
|
protected IEnumerable<Weapon> SeedWeapon()
|
||||||
|
{
|
||||||
|
const string file = "../SessionCompanion.Database/JsonData/weapons.json";
|
||||||
|
List<Weapon> weapons = new List<Weapon>();
|
||||||
|
using (StreamReader reader = new StreamReader(file))
|
||||||
|
{
|
||||||
|
var json = reader.ReadToEnd();
|
||||||
|
dynamic jweapons = JArray.Parse(json);
|
||||||
|
foreach (dynamic item in jweapons)
|
||||||
|
weapons.Add(SeedFromJsons.SingleWeaponSeeder(item));
|
||||||
|
}
|
||||||
|
return weapons;
|
||||||
|
}
|
||||||
|
protected IEnumerable<Armor> SeedArmor()
|
||||||
|
{
|
||||||
|
const string file = "../SessionCompanion.Database/JsonData/armors.json";
|
||||||
|
List<Armor> armors = new List<Armor>();
|
||||||
|
using (StreamReader reader = new StreamReader(file))
|
||||||
|
{
|
||||||
|
var json = reader.ReadToEnd();
|
||||||
|
dynamic jactions = JArray.Parse(json);
|
||||||
|
int id = 1;
|
||||||
|
foreach (dynamic item in jactions)
|
||||||
|
{
|
||||||
|
armors.Add(SeedFromJsons.SingleArmorSeeder(item, id));
|
||||||
|
id++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return armors;
|
||||||
|
}
|
||||||
|
protected IEnumerable<OtherEquipment> SeedOtherEquipment()
|
||||||
|
{
|
||||||
|
const string file = "../SessionCompanion.Database/JsonData/otherEquipments.json";
|
||||||
|
List<OtherEquipment> otherEquipment = new List<OtherEquipment>();
|
||||||
|
using (StreamReader reader = new StreamReader(file))
|
||||||
|
{
|
||||||
|
var json = reader.ReadToEnd();
|
||||||
|
dynamic jactions = JArray.Parse(json);
|
||||||
|
int id = 1;
|
||||||
|
foreach (dynamic item in jactions)
|
||||||
|
{
|
||||||
|
otherEquipment.Add(SeedFromJsons.SingleOtherEquipmentSeeder(item, id));
|
||||||
|
id++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return otherEquipment;
|
||||||
|
}
|
||||||
|
protected IEnumerable<Spell> SeedSpell()
|
||||||
|
{
|
||||||
|
const string file = "../SessionCompanion.Database/JsonData/spells.json";
|
||||||
|
List<Spell> spells = new List<Spell>();
|
||||||
|
using (StreamReader reader = new StreamReader(file))
|
||||||
|
{
|
||||||
|
var json = reader.ReadToEnd();
|
||||||
|
dynamic jspells = JArray.Parse(json);
|
||||||
|
foreach (dynamic item in jspells)
|
||||||
|
spells.Add(SeedFromJsons.SingleSpellSeeder(item));
|
||||||
|
}
|
||||||
|
return spells;
|
||||||
|
}
|
||||||
|
protected IEnumerable<SpecialAbility> SeedSpecialAbilities()
|
||||||
|
{
|
||||||
|
const string file = "../SessionCompanion.Database/JsonData/monsters.json";
|
||||||
|
List<SpecialAbility> specAbilities = new List<SpecialAbility>();
|
||||||
|
using (StreamReader reader = new StreamReader(file))
|
||||||
|
{
|
||||||
|
var json = reader.ReadToEnd();
|
||||||
|
dynamic jabilites = JArray.Parse(json);
|
||||||
|
int id = 1;
|
||||||
|
foreach (dynamic item in jabilites)
|
||||||
|
{
|
||||||
|
if (item.special_abilities != null)
|
||||||
|
{
|
||||||
|
foreach (dynamic sp in item.special_abilities)
|
||||||
|
{
|
||||||
|
if (specAbilities.Find(x => x.Name == (string)sp.name) is null)
|
||||||
|
{
|
||||||
|
specAbilities.Add(SeedFromJsons.SingleSpecialAbilitySeeder(sp, id));
|
||||||
|
id++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SpecialAbilitiesList = specAbilities;
|
||||||
|
return specAbilities;
|
||||||
|
}
|
||||||
|
protected IEnumerable<GameAction> SeedActions()
|
||||||
|
{
|
||||||
|
const string file = "../SessionCompanion.Database/JsonData/monsters.json";
|
||||||
|
List<GameAction> gameActions = new List<GameAction>();
|
||||||
|
using (StreamReader reader = new StreamReader(file))
|
||||||
|
{
|
||||||
|
var json = reader.ReadToEnd();
|
||||||
|
dynamic jactions = JArray.Parse(json);
|
||||||
|
int id = 1;
|
||||||
|
foreach (dynamic item in jactions)
|
||||||
|
{
|
||||||
|
if (item.actions != null)
|
||||||
|
{
|
||||||
|
foreach (dynamic a in item.actions)
|
||||||
|
{
|
||||||
|
if (gameActions.Find(x => x.Name == (string)a.name) is null)
|
||||||
|
{
|
||||||
|
gameActions.Add(SeedFromJsons.SingleActionSeeder(a, id));
|
||||||
|
id++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
GameActionsList = gameActions;
|
||||||
|
return gameActions;
|
||||||
|
}
|
||||||
|
protected IEnumerable<LegendaryAction> SeedLegendaryActions()
|
||||||
|
{
|
||||||
|
const string file = "../SessionCompanion.Database/JsonData/monsters.json";
|
||||||
|
List<LegendaryAction> legendaryActions = new List<LegendaryAction>();
|
||||||
|
using (StreamReader reader = new StreamReader(file))
|
||||||
|
{
|
||||||
|
var json = reader.ReadToEnd();
|
||||||
|
dynamic jlegendaryactions = JArray.Parse(json);
|
||||||
|
int id = 1;
|
||||||
|
foreach (dynamic item in jlegendaryactions)
|
||||||
|
{
|
||||||
|
if (item.legendary_actions != null)
|
||||||
|
{
|
||||||
|
foreach (dynamic la in item.legendary_actions)
|
||||||
|
{
|
||||||
|
if (legendaryActions.Find(x => x.Name == (string)la.name) is null)
|
||||||
|
{
|
||||||
|
legendaryActions.Add(SeedFromJsons.SingleLegendaryActionSeeder(la, id));
|
||||||
|
id++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
LegendaryActionsList = legendaryActions;
|
||||||
|
return legendaryActions;
|
||||||
|
}
|
||||||
|
protected IEnumerable<Monster> SeedMonster()
|
||||||
|
{
|
||||||
|
const string file = "../SessionCompanion.Database/JsonData/monsters.json";
|
||||||
|
List<Monster> monsters = new List<Monster>();
|
||||||
|
using (StreamReader reader = new StreamReader(file))
|
||||||
|
{
|
||||||
|
var json = reader.ReadToEnd();
|
||||||
|
dynamic jmonsters = JArray.Parse(json);
|
||||||
|
foreach (dynamic item in jmonsters)
|
||||||
|
monsters.Add(SeedFromJsons.SingleMonsterSeeder(item));
|
||||||
|
}
|
||||||
|
return monsters;
|
||||||
|
}
|
||||||
|
protected IEnumerable<MonsterSpecialAbility> SeedMonsterSpecialAbilities()
|
||||||
|
{
|
||||||
|
const string file = "../SessionCompanion.Database/JsonData/monsters.json";
|
||||||
|
List<MonsterSpecialAbility> monsterSpecialAbilities = new List<MonsterSpecialAbility>();
|
||||||
|
using (StreamReader reader = new StreamReader(file))
|
||||||
|
{
|
||||||
|
var json = reader.ReadToEnd();
|
||||||
|
dynamic jabilities = JArray.Parse(json);
|
||||||
|
int id = 1;
|
||||||
|
foreach (dynamic item in jabilities)
|
||||||
|
{
|
||||||
|
if (item.special_abilities != null)
|
||||||
|
{
|
||||||
|
foreach (dynamic a in item.special_abilities)
|
||||||
|
{
|
||||||
|
var abilityId = SpecialAbilitiesList.Find(x => x.Name == (string)a.name).Id;
|
||||||
|
monsterSpecialAbilities.Add(new MonsterSpecialAbility { Id = id, MonsterId = (int)item.index, SpecialAbilityId = abilityId });
|
||||||
|
id++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return monsterSpecialAbilities;
|
||||||
|
}
|
||||||
|
protected IEnumerable<MonsterAction> SeedMonsterActions()
|
||||||
|
{
|
||||||
|
const string file = "../SessionCompanion.Database/JsonData/monsters.json";
|
||||||
|
List<MonsterAction> monsterActions = new List<MonsterAction>();
|
||||||
|
using (StreamReader reader = new StreamReader(file))
|
||||||
|
{
|
||||||
|
var json = reader.ReadToEnd();
|
||||||
|
dynamic jactions = JArray.Parse(json);
|
||||||
|
int id = 1;
|
||||||
|
foreach (dynamic item in jactions)
|
||||||
|
{
|
||||||
|
if (item.actions != null)
|
||||||
|
{
|
||||||
|
foreach (dynamic a in item.actions)
|
||||||
|
{
|
||||||
|
var abilityId = GameActionsList.Find(x => x.Name == (string)a.name).Id;
|
||||||
|
monsterActions.Add(new MonsterAction { Id = id, MonsterId = (int)item.index, GameActionId = abilityId });
|
||||||
|
id++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return monsterActions;
|
||||||
|
}
|
||||||
|
protected IEnumerable<MonsterLegendaryAction> SeedMonsterLegendaryActions()
|
||||||
|
{
|
||||||
|
const string file = "../SessionCompanion.Database/JsonData/monsters.json";
|
||||||
|
List<MonsterLegendaryAction> monsterLegendaryActions = new List<MonsterLegendaryAction>();
|
||||||
|
using (StreamReader reader = new StreamReader(file))
|
||||||
|
{
|
||||||
|
var json = reader.ReadToEnd();
|
||||||
|
dynamic jactions = JArray.Parse(json);
|
||||||
|
int id = 1;
|
||||||
|
foreach (dynamic item in jactions)
|
||||||
|
{
|
||||||
|
if (item.legendary_actions != null)
|
||||||
|
{
|
||||||
|
foreach (dynamic a in item.legendary_actions)
|
||||||
|
{
|
||||||
|
var actionId = LegendaryActionsList.Find(x => x.Name == (string)a.name).Id;
|
||||||
|
monsterLegendaryActions.Add(new MonsterLegendaryAction { Id = id, MonsterId = (int)item.index, LegendaryActionId = actionId });
|
||||||
|
id++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return monsterLegendaryActions;
|
||||||
|
}
|
||||||
protected override void OnModelCreating(ModelBuilder builder)
|
protected override void OnModelCreating(ModelBuilder builder)
|
||||||
{
|
{
|
||||||
base.OnModelCreating(builder);
|
base.OnModelCreating(builder);
|
||||||
builder.Entity<User>().HasData(SeedData.SeedUsers());
|
builder.Entity<User>().HasData(SeedData.SeedUsers());
|
||||||
|
builder.Entity<Character>().HasData(SeedData.SeedCharacter());
|
||||||
|
builder.Entity<Race>().HasData(SeedData.SeedRace());
|
||||||
|
builder.Entity<Class>().HasData(SeedData.SeedClass());
|
||||||
|
builder.Entity<Alignment>().HasData(SeedData.SeedAlignment());
|
||||||
|
builder.Entity<Background>().HasData(SeedData.SeedBackground());
|
||||||
|
builder.Entity<Biography>().HasData(SeedData.SeedBiography());
|
||||||
|
builder.Entity<Statistics>().HasData(SeedData.SeedStatistics());
|
||||||
|
builder.Entity<Weapon>().HasData(SeedWeapon());
|
||||||
|
builder.Entity<Armor>().HasData(SeedArmor());
|
||||||
|
builder.Entity<OtherEquipment>().HasData(SeedOtherEquipment());
|
||||||
|
builder.Entity<CharacterWeapon>().HasData(SeedData.SeedCharacterWeapon());
|
||||||
|
builder.Entity<CharacterArmor>().HasData(SeedData.SeedCharacterArmor());
|
||||||
|
builder.Entity<CharacterOtherEquipment>().HasData(SeedData.SeedCharacterOtherEquipment());
|
||||||
|
builder.Entity<Charisma>().HasData(SeedData.SeedCharisma());
|
||||||
|
builder.Entity<Constitution>().HasData(SeedData.SeedConstitution());
|
||||||
|
builder.Entity<Dexterity>().HasData(SeedData.SeedDexterity());
|
||||||
|
builder.Entity<Intelligence>().HasData(SeedData.SeedIntelligence());
|
||||||
|
builder.Entity<Strength>().HasData(SeedData.SeedStrength());
|
||||||
|
builder.Entity<Wisdom>().HasData(SeedData.SeedWisdom());
|
||||||
|
builder.Entity<Spell>().HasData(SeedSpell());
|
||||||
|
builder.Entity<CharacterSpell>().HasData(SeedData.SeedCharacterSpell());
|
||||||
|
builder.Entity<CharacterSpellSlots>().HasData(SeedData.SeedCharacterSpellSlot());
|
||||||
|
builder.Entity<Monster>().HasData(SeedMonster());
|
||||||
|
builder.Entity<SpecialAbility>().HasData(SeedSpecialAbilities());
|
||||||
|
builder.Entity<LegendaryAction>().HasData(SeedLegendaryActions());
|
||||||
|
builder.Entity<GameAction>().HasData(SeedActions());
|
||||||
|
builder.Entity<MonsterSpecialAbility>().HasData(SeedMonsterSpecialAbilities());
|
||||||
|
builder.Entity<MonsterAction>().HasData(SeedMonsterActions());
|
||||||
|
builder.Entity<MonsterLegendaryAction>().HasData(SeedMonsterLegendaryActions());
|
||||||
|
builder.Entity<Shopkeeper>().HasData(SeedData.SeedSchopkeepers());
|
||||||
|
builder.Entity<ShopkeeperItem>().HasData(SeedData.SeedShopkeeperItems());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
236
SessionCompanion/SessionCompanion.Database/JsonData/armors.json
Normal file
236
SessionCompanion/SessionCompanion.Database/JsonData/armors.json
Normal file
@ -0,0 +1,236 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"index": 38,
|
||||||
|
"name": "Padded",
|
||||||
|
"equipment_category": "Armor",
|
||||||
|
"armor_category": "Light",
|
||||||
|
"armor_class": {
|
||||||
|
"base": 11,
|
||||||
|
"dex_bonus": true,
|
||||||
|
"max_bonus": null
|
||||||
|
},
|
||||||
|
"str_minimum": 0,
|
||||||
|
"stealth_disadvantage": true,
|
||||||
|
"weight": 8,
|
||||||
|
"cost": {
|
||||||
|
"quantity": 5,
|
||||||
|
"unit": "gp"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"index": 39,
|
||||||
|
"name": "Leather",
|
||||||
|
"equipment_category": "Armor",
|
||||||
|
"armor_category": "Light",
|
||||||
|
"armor_class": {
|
||||||
|
"base": 11,
|
||||||
|
"dex_bonus": true,
|
||||||
|
"max_bonus": null
|
||||||
|
},
|
||||||
|
"str_minimum": 0,
|
||||||
|
"stealth_disadvantage": false,
|
||||||
|
"weight": 10,
|
||||||
|
"cost": {
|
||||||
|
"quantity": 10,
|
||||||
|
"unit": "gp"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"index": 40,
|
||||||
|
"name": "Studded Leather",
|
||||||
|
"equipment_category": "Armor",
|
||||||
|
"armor_category": "Light",
|
||||||
|
"armor_class": {
|
||||||
|
"base": 12,
|
||||||
|
"dex_bonus": true,
|
||||||
|
"max_bonus": null
|
||||||
|
},
|
||||||
|
"str_minimum": 0,
|
||||||
|
"stealth_disadvantage": false,
|
||||||
|
"weight": 13,
|
||||||
|
"cost": {
|
||||||
|
"quantity": 45,
|
||||||
|
"unit": "gp"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"index": 41,
|
||||||
|
"name": "Hide",
|
||||||
|
"equipment_category": "Armor",
|
||||||
|
"armor_category": "Medium",
|
||||||
|
"armor_class": {
|
||||||
|
"base": 12,
|
||||||
|
"dex_bonus": true,
|
||||||
|
"max_bonus": 2
|
||||||
|
},
|
||||||
|
"str_minimum": 0,
|
||||||
|
"stealth_disadvantage": false,
|
||||||
|
"weight": 12,
|
||||||
|
"cost": {
|
||||||
|
"quantity": 10,
|
||||||
|
"unit": "gp"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"index": 42,
|
||||||
|
"name": "Chain Shirt",
|
||||||
|
"equipment_category": "Armor",
|
||||||
|
"armor_category": "Medium",
|
||||||
|
"armor_class": {
|
||||||
|
"base": 13,
|
||||||
|
"dex_bonus": true,
|
||||||
|
"max_bonus": 2
|
||||||
|
},
|
||||||
|
"str_minimum": 0,
|
||||||
|
"stealth_disadvantage": false,
|
||||||
|
"weight": 20,
|
||||||
|
"cost": {
|
||||||
|
"quantity": 50,
|
||||||
|
"unit": "gp"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"index": 43,
|
||||||
|
"name": "Scale Mail",
|
||||||
|
"equipment_category": "Armor",
|
||||||
|
"armor_category": "Medium",
|
||||||
|
"armor_class": {
|
||||||
|
"base": 14,
|
||||||
|
"dex_bonus": true,
|
||||||
|
"max_bonus": 2
|
||||||
|
},
|
||||||
|
"str_minimum": 0,
|
||||||
|
"stealth_disadvantage": true,
|
||||||
|
"weight": 45,
|
||||||
|
"cost": {
|
||||||
|
"quantity": 50,
|
||||||
|
"unit": "gp"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"index": 44,
|
||||||
|
"name": "Breastplate",
|
||||||
|
"equipment_category": "Armor",
|
||||||
|
"armor_category": "Medium",
|
||||||
|
"armor_class": {
|
||||||
|
"base": 14,
|
||||||
|
"dex_bonus": true,
|
||||||
|
"max_bonus": 2
|
||||||
|
},
|
||||||
|
"str_minimum": 0,
|
||||||
|
"stealth_disadvantage": false,
|
||||||
|
"weight": 20,
|
||||||
|
"cost": {
|
||||||
|
"quantity": 400,
|
||||||
|
"unit": "gp"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"index": 45,
|
||||||
|
"name": "Half Plate",
|
||||||
|
"equipment_category": "Armor",
|
||||||
|
"armor_category": "Medium",
|
||||||
|
"armor_class": {
|
||||||
|
"base": 15,
|
||||||
|
"dex_bonus": true,
|
||||||
|
"max_bonus": 2
|
||||||
|
},
|
||||||
|
"str_minimum": 0,
|
||||||
|
"stealth_disadvantage": true,
|
||||||
|
"weight": 40,
|
||||||
|
"cost": {
|
||||||
|
"quantity": 750,
|
||||||
|
"unit": "gp"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"index": 46,
|
||||||
|
"name": "Ring Mail",
|
||||||
|
"equipment_category": "Armor",
|
||||||
|
"armor_category": "Heavy",
|
||||||
|
"armor_class": {
|
||||||
|
"base": 14,
|
||||||
|
"dex_bonus": false,
|
||||||
|
"max_bonus": null
|
||||||
|
},
|
||||||
|
"str_minimum": 0,
|
||||||
|
"stealth_disadvantage": true,
|
||||||
|
"weight": 40,
|
||||||
|
"cost": {
|
||||||
|
"quantity": 30,
|
||||||
|
"unit": "gp"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"index": 47,
|
||||||
|
"name": "Chain Mail",
|
||||||
|
"equipment_category": "Armor",
|
||||||
|
"armor_category": "Heavy",
|
||||||
|
"armor_class": {
|
||||||
|
"base": 16,
|
||||||
|
"dex_bonus": false,
|
||||||
|
"max_bonus": null
|
||||||
|
},
|
||||||
|
"str_minimum": 13,
|
||||||
|
"stealth_disadvantage": true,
|
||||||
|
"weight": 55,
|
||||||
|
"cost": {
|
||||||
|
"quantity": 75,
|
||||||
|
"unit": "gp"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"index": 48,
|
||||||
|
"name": "Splint",
|
||||||
|
"equipment_category": "Armor",
|
||||||
|
"armor_category": "Heavy",
|
||||||
|
"armor_class": {
|
||||||
|
"base": 17,
|
||||||
|
"dex_bonus": false,
|
||||||
|
"max_bonus": null
|
||||||
|
},
|
||||||
|
"str_minimum": 15,
|
||||||
|
"stealth_disadvantage": true,
|
||||||
|
"weight": 60,
|
||||||
|
"cost": {
|
||||||
|
"quantity": 200,
|
||||||
|
"unit": "gp"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"index": 49,
|
||||||
|
"name": "Plate",
|
||||||
|
"equipment_category": "Armor",
|
||||||
|
"armor_category": "Heavy",
|
||||||
|
"armor_class": {
|
||||||
|
"base": 18,
|
||||||
|
"dex_bonus": false,
|
||||||
|
"max_bonus": null
|
||||||
|
},
|
||||||
|
"str_minimum": 15,
|
||||||
|
"stealth_disadvantage": true,
|
||||||
|
"weight": 65,
|
||||||
|
"cost": {
|
||||||
|
"quantity": 1500,
|
||||||
|
"unit": "gp"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"index": 50,
|
||||||
|
"name": "Shield",
|
||||||
|
"equipment_category": "Armor",
|
||||||
|
"armor_category": "Shield",
|
||||||
|
"armor_class": {
|
||||||
|
"base": 2,
|
||||||
|
"dex_bonus": false,
|
||||||
|
"max_bonus": null
|
||||||
|
},
|
||||||
|
"str_minimum": 0,
|
||||||
|
"stealth_disadvantage": false,
|
||||||
|
"weight": 6,
|
||||||
|
"cost": {
|
||||||
|
"quantity": 10,
|
||||||
|
"unit": "gp"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
@ -0,0 +1,985 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"userId": -1,
|
||||||
|
"statistics": {
|
||||||
|
"ExperiencePoints": 0,
|
||||||
|
"Level": 1,
|
||||||
|
"Speed": 4,
|
||||||
|
"Initiative": 2,
|
||||||
|
"HealthPoints": 8,
|
||||||
|
"CurrentHealthPoints": 8,
|
||||||
|
"ArmorClass": 5,
|
||||||
|
"Proficiency": 2
|
||||||
|
},
|
||||||
|
"biography": {
|
||||||
|
"Name": "Ulora",
|
||||||
|
"ClassId": 2,
|
||||||
|
"RaceId": 3,
|
||||||
|
"AlignmentId": 1,
|
||||||
|
"BackgroundId": 2,
|
||||||
|
"Sex": "Female",
|
||||||
|
"Languages": "Common",
|
||||||
|
"background": {
|
||||||
|
"Origin": "No origin",
|
||||||
|
"History": "Nothing much"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"characterWeapons": [
|
||||||
|
{
|
||||||
|
"WeaponId": 11,
|
||||||
|
"InUse": true,
|
||||||
|
"HoldInRightHand": true,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"WeaponId": 12,
|
||||||
|
"InUse": false,
|
||||||
|
"HoldInRightHand": false,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"characterSpells": [
|
||||||
|
{
|
||||||
|
"SpellId": 44
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"SpellId": 57
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"charisma": {
|
||||||
|
"Value": 5,
|
||||||
|
"Modification": -2,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSavingThrows": false,
|
||||||
|
"Deception": 0,
|
||||||
|
"CanDeception": false,
|
||||||
|
"Intimidation": 0,
|
||||||
|
"CanIntimidation": false,
|
||||||
|
"Performance": 0,
|
||||||
|
"CanPerformance": false,
|
||||||
|
"Persuasion": 0,
|
||||||
|
"CanPersuasion": false
|
||||||
|
},
|
||||||
|
"constitution": {
|
||||||
|
"Value": 12,
|
||||||
|
"Modification": 2,
|
||||||
|
"SavingThrows": 2,
|
||||||
|
"CanSaveThrows": true
|
||||||
|
},
|
||||||
|
"dexterity": {
|
||||||
|
"Value": 15,
|
||||||
|
"Modification": 2,
|
||||||
|
"SavingThrows": 3,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Acrobatics": 3,
|
||||||
|
"CanAcrobatics": true,
|
||||||
|
"SleightOfHand": 2,
|
||||||
|
"CanSleightOfHand": true,
|
||||||
|
"Stealth": 3,
|
||||||
|
"canStealth": true
|
||||||
|
},
|
||||||
|
"intelligence": {
|
||||||
|
"Value": 14,
|
||||||
|
"Modification": 4,
|
||||||
|
"SavingThrows": 2,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"arcana": 2,
|
||||||
|
"canArcana": true,
|
||||||
|
"History": 4,
|
||||||
|
"CanHistory": true,
|
||||||
|
"Investigation": 3,
|
||||||
|
"CanInvestigation": true,
|
||||||
|
"Nature": 1,
|
||||||
|
"CanNature": true,
|
||||||
|
"Religion": 0,
|
||||||
|
"canReligion": false
|
||||||
|
},
|
||||||
|
"strength": {
|
||||||
|
"Value": 8,
|
||||||
|
"Modification": -1,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"Athletics": 0,
|
||||||
|
"canAthletics": false
|
||||||
|
},
|
||||||
|
"wisdom": {
|
||||||
|
"Value": 10,
|
||||||
|
"Modification": 0,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"AnimalHandling": 1,
|
||||||
|
"CanAnimalHandling": true,
|
||||||
|
"Insight": 0,
|
||||||
|
"canInsight": false,
|
||||||
|
"medicine": 0,
|
||||||
|
"CanMedicine": false,
|
||||||
|
"Perception": 2,
|
||||||
|
"CanPerception": true,
|
||||||
|
"Survival": 0,
|
||||||
|
"CanSurvival": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"userId": -1,
|
||||||
|
"statistics": {
|
||||||
|
"ExperiencePoints": 0,
|
||||||
|
"Level": 1,
|
||||||
|
"Speed": 3,
|
||||||
|
"Initiative": 5,
|
||||||
|
"HealthPoints": 12,
|
||||||
|
"CurrentHealthPoints": 11,
|
||||||
|
"ArmorClass": 4,
|
||||||
|
"Proficiency": 1
|
||||||
|
},
|
||||||
|
"biography": {
|
||||||
|
"Name": "Nucate",
|
||||||
|
"ClassId": 1,
|
||||||
|
"RaceId": 1,
|
||||||
|
"AlignmentId": 2,
|
||||||
|
"BackgroundId": 1,
|
||||||
|
"Sex": "Male",
|
||||||
|
"Languages": "Common",
|
||||||
|
"background": {
|
||||||
|
"Origin": "No origin",
|
||||||
|
"History": "Nothing much"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"characterWeapons": [
|
||||||
|
{
|
||||||
|
"WeaponId": 30,
|
||||||
|
"InUse": true,
|
||||||
|
"HoldInRightHand": true,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"WeaponId": 25,
|
||||||
|
"InUse": false,
|
||||||
|
"HoldInRightHand": false,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"characterSpells": [
|
||||||
|
{
|
||||||
|
"SpellId": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"SpellId": 42
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"charisma": {
|
||||||
|
"Value": 10,
|
||||||
|
"Modification": 3,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSavingThrows": false,
|
||||||
|
"Deception": 0,
|
||||||
|
"CanDeception": false,
|
||||||
|
"Intimidation": 1,
|
||||||
|
"CanIntimidation": true,
|
||||||
|
"Performance": 2,
|
||||||
|
"CanPerformance": true,
|
||||||
|
"Persuasion": 0,
|
||||||
|
"CanPersuasion": false
|
||||||
|
},
|
||||||
|
"constitution": {
|
||||||
|
"Value": 11,
|
||||||
|
"Modification": 4,
|
||||||
|
"SavingThrows": 2,
|
||||||
|
"CanSaveThrows": true
|
||||||
|
},
|
||||||
|
"dexterity": {
|
||||||
|
"Value": 10,
|
||||||
|
"Modification": 1,
|
||||||
|
"SavingThrows": 4,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Acrobatics": 3,
|
||||||
|
"CanAcrobatics": true,
|
||||||
|
"SleightOfHand": 1,
|
||||||
|
"CanSleightOfHand": true,
|
||||||
|
"Stealth": 2,
|
||||||
|
"canStealth": true
|
||||||
|
},
|
||||||
|
"intelligence": {
|
||||||
|
"Value": 6,
|
||||||
|
"Modification": -2,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"arcana": 1,
|
||||||
|
"canArcana": true,
|
||||||
|
"History": 4,
|
||||||
|
"CanHistory": true,
|
||||||
|
"Investigation": 0,
|
||||||
|
"CanInvestigation": false,
|
||||||
|
"Nature": 1,
|
||||||
|
"CanNature": true,
|
||||||
|
"Religion": 3,
|
||||||
|
"canReligion": true
|
||||||
|
},
|
||||||
|
"strength": {
|
||||||
|
"Value": 10,
|
||||||
|
"Modification": 1,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"Athletics": 2,
|
||||||
|
"canAthletics": true
|
||||||
|
},
|
||||||
|
"wisdom": {
|
||||||
|
"Value": 11,
|
||||||
|
"Modification": 3,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"AnimalHandling": 2,
|
||||||
|
"canAnimalHandling": true,
|
||||||
|
"Insight": 1,
|
||||||
|
"canInsight": true,
|
||||||
|
"medicine": 0,
|
||||||
|
"CanMedicine": false,
|
||||||
|
"Perception": 5,
|
||||||
|
"CanPerception": true,
|
||||||
|
"Survival": 2,
|
||||||
|
"CanSurvival": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 3,
|
||||||
|
"userId": -1,
|
||||||
|
"statistics": {
|
||||||
|
"ExperiencePoints": 0,
|
||||||
|
"Level": 1,
|
||||||
|
"Speed": 4,
|
||||||
|
"Initiative": 2,
|
||||||
|
"HealthPoints": 17,
|
||||||
|
"CurrentHealthPoints": 16,
|
||||||
|
"ArmorClass": 6,
|
||||||
|
"Proficiency": 3
|
||||||
|
},
|
||||||
|
"biography": {
|
||||||
|
"Name": "Muraraj",
|
||||||
|
"ClassId": 2,
|
||||||
|
"RaceId": 2,
|
||||||
|
"AlignmentId": 1,
|
||||||
|
"BackgroundId": 1,
|
||||||
|
"Sex": "Male",
|
||||||
|
"Languages": "Common",
|
||||||
|
"background": {
|
||||||
|
"Origin": "No origin",
|
||||||
|
"History": "Nothing much"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"characterWeapons": [
|
||||||
|
{
|
||||||
|
"WeaponId": 1,
|
||||||
|
"InUse": true,
|
||||||
|
"HoldInRightHand": true,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"WeaponId": 2,
|
||||||
|
"InUse": false,
|
||||||
|
"HoldInRightHand": false,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"WeaponId": 10,
|
||||||
|
"InUse": false,
|
||||||
|
"HoldInRightHand": false,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"characterSpells": [
|
||||||
|
{
|
||||||
|
"SpellId": 42
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"charisma": {
|
||||||
|
"Value": 15,
|
||||||
|
"Modification": 2,
|
||||||
|
"SavingThrows": 2,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Deception": 1,
|
||||||
|
"CanDeception": true,
|
||||||
|
"Intimidation": 4,
|
||||||
|
"CanIntimidation": true,
|
||||||
|
"Performance": 2,
|
||||||
|
"CanPerformance": true,
|
||||||
|
"Persuasion": 2,
|
||||||
|
"CanPersuasion": true
|
||||||
|
},
|
||||||
|
"constitution": {
|
||||||
|
"Value": 15,
|
||||||
|
"Modification": 4,
|
||||||
|
"SavingThrows": 2,
|
||||||
|
"CanSaveThrows": true
|
||||||
|
},
|
||||||
|
"dexterity": {
|
||||||
|
"Value": 8,
|
||||||
|
"Modification": -1,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"Acrobatics": 0,
|
||||||
|
"CanAcrobatics": false,
|
||||||
|
"SleightOfHand": 0,
|
||||||
|
"CanSleightOfHand": false,
|
||||||
|
"Stealth": 0,
|
||||||
|
"canStealth": false
|
||||||
|
},
|
||||||
|
"intelligence": {
|
||||||
|
"Value": 8,
|
||||||
|
"Modification": -1,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"arcana": 0,
|
||||||
|
"canArcana": false,
|
||||||
|
"History": 0,
|
||||||
|
"CanHistory": false,
|
||||||
|
"Investigation": 0,
|
||||||
|
"CanInvestigation": false,
|
||||||
|
"Nature": 0,
|
||||||
|
"CanNature": false,
|
||||||
|
"Religion": 0,
|
||||||
|
"canReligion": false
|
||||||
|
},
|
||||||
|
"strength": {
|
||||||
|
"Value": 18,
|
||||||
|
"Modification": 4,
|
||||||
|
"SavingThrows": 3,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Athletics": 5,
|
||||||
|
"canAthletics": true
|
||||||
|
},
|
||||||
|
"wisdom": {
|
||||||
|
"Value": 6,
|
||||||
|
"Modification": -3,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"AnimalHandling": 0,
|
||||||
|
"CanAnimalHandling": false,
|
||||||
|
"Insight": 0,
|
||||||
|
"canInsight": false,
|
||||||
|
"medicine": 0,
|
||||||
|
"CanMedicine": false,
|
||||||
|
"Perception": 0,
|
||||||
|
"CanPerception": false,
|
||||||
|
"Survival": 0,
|
||||||
|
"CanSurvival": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 4,
|
||||||
|
"userId": -1,
|
||||||
|
"statistics": {
|
||||||
|
"ExperiencePoints": 0,
|
||||||
|
"Level": 1,
|
||||||
|
"Speed": 8,
|
||||||
|
"Initiative": 7,
|
||||||
|
"HealthPoints": 7,
|
||||||
|
"CurrentHealthPoints": 7,
|
||||||
|
"ArmorClass": 2,
|
||||||
|
"Proficiency": 3
|
||||||
|
},
|
||||||
|
"biography": {
|
||||||
|
"Name": "Amarena",
|
||||||
|
"ClassId": 2,
|
||||||
|
"RaceId": 1,
|
||||||
|
"AlignmentId": 1,
|
||||||
|
"BackgroundId": 2,
|
||||||
|
"Sex": "Female",
|
||||||
|
"Languages": "Common",
|
||||||
|
"background": {
|
||||||
|
"Origin": "No origin",
|
||||||
|
"History": "Nothing much"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"characterWeapons": [
|
||||||
|
{
|
||||||
|
"WeaponId": 2,
|
||||||
|
"InUse": true,
|
||||||
|
"HoldInRightHand": true,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"WeaponId": 14,
|
||||||
|
"InUse": false,
|
||||||
|
"HoldInRightHand": false,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"WeaponId": 4,
|
||||||
|
"InUse": false,
|
||||||
|
"HoldInRightHand": false,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"characterSpells": [
|
||||||
|
{
|
||||||
|
"SpellId": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"charisma": {
|
||||||
|
"Value": 7,
|
||||||
|
"Modification": -2,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSavingThrows": false,
|
||||||
|
"Deception": 0,
|
||||||
|
"CanDeception": false,
|
||||||
|
"Intimidation": 0,
|
||||||
|
"CanIntimidation": false,
|
||||||
|
"Performance": 0,
|
||||||
|
"CanPerformance": false,
|
||||||
|
"Persuasion": 0,
|
||||||
|
"CanPersuasion": false
|
||||||
|
},
|
||||||
|
"constitution": {
|
||||||
|
"Value": 11,
|
||||||
|
"Modification": 1,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSaveThrows": true
|
||||||
|
},
|
||||||
|
"dexterity": {
|
||||||
|
"Value": 17,
|
||||||
|
"Modification": 4,
|
||||||
|
"SavingThrows": 3,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Acrobatics": 4,
|
||||||
|
"CanAcrobatics": true,
|
||||||
|
"SleightOfHand": 2,
|
||||||
|
"CanSleightOfHand": true,
|
||||||
|
"Stealth": 5,
|
||||||
|
"canStealth": true
|
||||||
|
},
|
||||||
|
"intelligence": {
|
||||||
|
"Value": 10,
|
||||||
|
"Modification": 0,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"arcana": 0,
|
||||||
|
"canArcana": false,
|
||||||
|
"History": 0,
|
||||||
|
"CanHistory": false,
|
||||||
|
"Investigation": 0,
|
||||||
|
"CanInvestigation": false,
|
||||||
|
"Nature": 0,
|
||||||
|
"CanNature": false,
|
||||||
|
"Religion": 0,
|
||||||
|
"canReligion": false
|
||||||
|
},
|
||||||
|
"strength": {
|
||||||
|
"Value": 14,
|
||||||
|
"Modification": 2,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Athletics": 3,
|
||||||
|
"canAthletics": true
|
||||||
|
},
|
||||||
|
"wisdom": {
|
||||||
|
"Value": 7,
|
||||||
|
"Modification": 0,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"AnimalHandling": 0,
|
||||||
|
"canAnimalHandling": false,
|
||||||
|
"Insight": 0,
|
||||||
|
"canInsight": false,
|
||||||
|
"medicine": 0,
|
||||||
|
"CanMedicine": false,
|
||||||
|
"Perception": 0,
|
||||||
|
"CanPerception": false,
|
||||||
|
"Survival": 0,
|
||||||
|
"CanSurvival": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 5,
|
||||||
|
"userId": -1,
|
||||||
|
"statistics": {
|
||||||
|
"ExperiencePoints": 0,
|
||||||
|
"Level": 1,
|
||||||
|
"Speed": 2,
|
||||||
|
"Initiative": 3,
|
||||||
|
"HealthPoints": 17,
|
||||||
|
"CurrentHealthPoints": 17,
|
||||||
|
"ArmorClass": 5,
|
||||||
|
"Proficiency": 1
|
||||||
|
},
|
||||||
|
"biography": {
|
||||||
|
"Name": "Yaz' uw Emul",
|
||||||
|
"ClassId": 1,
|
||||||
|
"RaceId": 3,
|
||||||
|
"AlignmentId": 1,
|
||||||
|
"BackgroundId": 3,
|
||||||
|
"Sex": "Male",
|
||||||
|
"Languages": "Common",
|
||||||
|
"background": {
|
||||||
|
"Origin": "No origin",
|
||||||
|
"History": "Nothing much"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"characterWeapons": [
|
||||||
|
{
|
||||||
|
"WeaponId": 16,
|
||||||
|
"InUse": true,
|
||||||
|
"HoldInRightHand": true,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"WeaponId": 14,
|
||||||
|
"InUse": false,
|
||||||
|
"HoldInRightHand": false,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"characterSpells": [
|
||||||
|
{
|
||||||
|
"SpellId": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"SpellId": 65
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"SpellId": 44
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"charisma": {
|
||||||
|
"Value": 10,
|
||||||
|
"Modification": 0,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSavingThrows": false,
|
||||||
|
"Deception": 1,
|
||||||
|
"CanDeception": true,
|
||||||
|
"Intimidation": 2,
|
||||||
|
"CanIntimidation": true,
|
||||||
|
"Performance": 0,
|
||||||
|
"CanPerformance": false,
|
||||||
|
"Persuasion": 0,
|
||||||
|
"CanPersuasion": false
|
||||||
|
},
|
||||||
|
"constitution": {
|
||||||
|
"Value": 14,
|
||||||
|
"Modification": 4,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSaveThrows": true
|
||||||
|
},
|
||||||
|
"dexterity": {
|
||||||
|
"Value": 6,
|
||||||
|
"Modification": -3,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"Acrobatics": 0,
|
||||||
|
"CanAcrobatics": false,
|
||||||
|
"SleightOfHand": 0,
|
||||||
|
"CanSleightOfHand": false,
|
||||||
|
"Stealth": 0,
|
||||||
|
"canStealth": false
|
||||||
|
},
|
||||||
|
"intelligence": {
|
||||||
|
"Value": 11,
|
||||||
|
"Modification": 1,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"arcana": 0,
|
||||||
|
"canArcana": false,
|
||||||
|
"History": 2,
|
||||||
|
"CanHistory": true,
|
||||||
|
"Investigation": 1,
|
||||||
|
"CanInvestigation": true,
|
||||||
|
"Nature": 0,
|
||||||
|
"CanNature": false,
|
||||||
|
"Religion": 4,
|
||||||
|
"canReligion": true
|
||||||
|
},
|
||||||
|
"strength": {
|
||||||
|
"Value": 18,
|
||||||
|
"Modification": 4,
|
||||||
|
"SavingThrows": 2,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Athletics": 4,
|
||||||
|
"canAthletics": true
|
||||||
|
},
|
||||||
|
"wisdom": {
|
||||||
|
"Value": 9,
|
||||||
|
"Modification": -1,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"AnimalHandling": 0,
|
||||||
|
"canAnimalHandling": false,
|
||||||
|
"Insight": 0,
|
||||||
|
"canInsight": false,
|
||||||
|
"medicine": 0,
|
||||||
|
"CanMedicine": false,
|
||||||
|
"Perception": 0,
|
||||||
|
"CanPerception": false,
|
||||||
|
"Survival": 0,
|
||||||
|
"CanSurvival": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 6,
|
||||||
|
"userId": -1,
|
||||||
|
"statistics": {
|
||||||
|
"ExperiencePoints": 0,
|
||||||
|
"Level": 1,
|
||||||
|
"Speed": 5,
|
||||||
|
"Initiative": 4,
|
||||||
|
"HealthPoints": 13,
|
||||||
|
"CurrentHealthPoints": 13,
|
||||||
|
"ArmorClass": 2,
|
||||||
|
"Proficiency": 1
|
||||||
|
},
|
||||||
|
"biography": {
|
||||||
|
"Name": "Kamul",
|
||||||
|
"ClassId": 2,
|
||||||
|
"RaceId": 1,
|
||||||
|
"AlignmentId": 2,
|
||||||
|
"BackgroundId": 1,
|
||||||
|
"Sex": "Female",
|
||||||
|
"Languages": "Common",
|
||||||
|
"background": {
|
||||||
|
"Origin": "No origin",
|
||||||
|
"History": "Nothing much"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"characterWeapons": [
|
||||||
|
{
|
||||||
|
"WeaponId": 18,
|
||||||
|
"InUse": true,
|
||||||
|
"HoldInRightHand": true,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"WeaponId": 1,
|
||||||
|
"InUse": false,
|
||||||
|
"HoldInRightHand": false,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"characterSpells": [
|
||||||
|
{
|
||||||
|
"SpellId": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"SpellId": 85
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"SpellId": 94
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"charisma": {
|
||||||
|
"Value": 10,
|
||||||
|
"Modification": 0,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSavingThrows": false,
|
||||||
|
"Deception": 2,
|
||||||
|
"CanDeception": true,
|
||||||
|
"Intimidation": 0,
|
||||||
|
"CanIntimidation": false,
|
||||||
|
"Performance": 1,
|
||||||
|
"CanPerformance": true,
|
||||||
|
"Persuasion": 2,
|
||||||
|
"CanPersuasion": true
|
||||||
|
},
|
||||||
|
"constitution": {
|
||||||
|
"Value": 8,
|
||||||
|
"Modification": -2,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false
|
||||||
|
},
|
||||||
|
"dexterity": {
|
||||||
|
"Value": 12,
|
||||||
|
"Modification": 1,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Acrobatics": 2,
|
||||||
|
"CanAcrobatics": true,
|
||||||
|
"SleightOfHand": 1,
|
||||||
|
"CanSleightOfHand": true,
|
||||||
|
"Stealth": 0,
|
||||||
|
"canStealth": false
|
||||||
|
},
|
||||||
|
"intelligence": {
|
||||||
|
"Value": 15,
|
||||||
|
"Modification": 4,
|
||||||
|
"SavingThrows": 2,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"arcana": 4,
|
||||||
|
"canArcana": true,
|
||||||
|
"History": 1,
|
||||||
|
"CanHistory": true,
|
||||||
|
"Investigation": 1,
|
||||||
|
"CanInvestigation": true,
|
||||||
|
"Nature": 6,
|
||||||
|
"CanNature": true,
|
||||||
|
"Religion": 0,
|
||||||
|
"canReligion": false
|
||||||
|
},
|
||||||
|
"strength": {
|
||||||
|
"Value": 13,
|
||||||
|
"Modification": 1,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Athletics": 2,
|
||||||
|
"canAthletics": true
|
||||||
|
},
|
||||||
|
"wisdom": {
|
||||||
|
"Value": 13,
|
||||||
|
"Modification": 2,
|
||||||
|
"SavingThrows": 2,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"AnimalHandling": 1,
|
||||||
|
"canAnimalHandling": true,
|
||||||
|
"Insight": 4,
|
||||||
|
"canInsight": true,
|
||||||
|
"medicine": 2,
|
||||||
|
"CanMedicine": true,
|
||||||
|
"Perception": 5,
|
||||||
|
"CanPerception": true,
|
||||||
|
"Survival": 2,
|
||||||
|
"CanSurvival": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 7,
|
||||||
|
"userId": -1,
|
||||||
|
"statistics": {
|
||||||
|
"ExperiencePoints": 0,
|
||||||
|
"Level": 1,
|
||||||
|
"Speed": 9,
|
||||||
|
"Initiative": 6,
|
||||||
|
"HealthPoints": 7,
|
||||||
|
"CurrentHealthPoints": 7,
|
||||||
|
"ArmorClass": 4,
|
||||||
|
"Proficiency": 1
|
||||||
|
},
|
||||||
|
"biography": {
|
||||||
|
"Name": "Mu",
|
||||||
|
"ClassId": 1,
|
||||||
|
"RaceId": 3,
|
||||||
|
"AlignmentId": 1,
|
||||||
|
"BackgroundId": 2,
|
||||||
|
"Sex": "Male",
|
||||||
|
"Languages": "Common",
|
||||||
|
"background": {
|
||||||
|
"Origin": "No origin",
|
||||||
|
"History": "Nothing much"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"characterWeapons": [
|
||||||
|
{
|
||||||
|
"WeaponId": 1,
|
||||||
|
"InUse": true,
|
||||||
|
"HoldInRightHand": true,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"WeaponId": 17,
|
||||||
|
"InUse": false,
|
||||||
|
"HoldInRightHand": false,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"WeaponId": 27,
|
||||||
|
"InUse": false,
|
||||||
|
"HoldInRightHand": false,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"characterSpells": [
|
||||||
|
{
|
||||||
|
"SpellId": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"charisma": {
|
||||||
|
"Value": 11,
|
||||||
|
"Modification": 1,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSavingThrows": true,
|
||||||
|
"Deception": 1,
|
||||||
|
"CanDeception": true,
|
||||||
|
"Intimidation": 0,
|
||||||
|
"CanIntimidation": false,
|
||||||
|
"Performance": 0,
|
||||||
|
"CanPerformance": false,
|
||||||
|
"Persuasion": 0,
|
||||||
|
"CanPersuasion": false
|
||||||
|
},
|
||||||
|
"constitution": {
|
||||||
|
"Value": 13,
|
||||||
|
"Modification": 2,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSaveThrows": true
|
||||||
|
},
|
||||||
|
"dexterity": {
|
||||||
|
"Value": 17,
|
||||||
|
"Modification": 4,
|
||||||
|
"SavingThrows": 3,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Acrobatics": 3,
|
||||||
|
"CanAcrobatics": true,
|
||||||
|
"SleightOfHand": 4,
|
||||||
|
"CanSleightOfHand": true,
|
||||||
|
"Stealth": 1,
|
||||||
|
"canStealth": true
|
||||||
|
},
|
||||||
|
"intelligence": {
|
||||||
|
"Value": 8,
|
||||||
|
"Modification": -2,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"arcana": 0,
|
||||||
|
"canArcana": false,
|
||||||
|
"History": 0,
|
||||||
|
"CanHistory": false,
|
||||||
|
"Investigation": 0,
|
||||||
|
"CanInvestigation": false,
|
||||||
|
"Nature": 0,
|
||||||
|
"CanNature": false,
|
||||||
|
"Religion": 0,
|
||||||
|
"canReligion": false
|
||||||
|
},
|
||||||
|
"strength": {
|
||||||
|
"Value": 18,
|
||||||
|
"Modification": 4,
|
||||||
|
"SavingThrows": 3,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Athletics": 5,
|
||||||
|
"canAthletics": true
|
||||||
|
},
|
||||||
|
"wisdom": {
|
||||||
|
"Value": 8,
|
||||||
|
"Modification": -2,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"AnimalHandling": 0,
|
||||||
|
"canAnimalHandling": false,
|
||||||
|
"Insight": 0,
|
||||||
|
"canInsight": false,
|
||||||
|
"medicine": 0,
|
||||||
|
"CanMedicine": false,
|
||||||
|
"Perception": 0,
|
||||||
|
"CanPerception": false,
|
||||||
|
"Survival": 0,
|
||||||
|
"CanSurvival": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 8,
|
||||||
|
"userId": -1,
|
||||||
|
"statistics": {
|
||||||
|
"ExperiencePoints": 0,
|
||||||
|
"Level": 1,
|
||||||
|
"Speed": 4,
|
||||||
|
"Initiative": 3,
|
||||||
|
"HealthPoints": 12,
|
||||||
|
"CurrentHealthPoints": 12,
|
||||||
|
"ArmorClass": 3,
|
||||||
|
"Proficiency": 1
|
||||||
|
},
|
||||||
|
"biography": {
|
||||||
|
"Name": "Aarak",
|
||||||
|
"ClassId": 2,
|
||||||
|
"RaceId": 3,
|
||||||
|
"AlignmentId": 1,
|
||||||
|
"BackgroundId": 2,
|
||||||
|
"Sex": "Female",
|
||||||
|
"Languages": "Common",
|
||||||
|
"background": {
|
||||||
|
"Origin": "No origin",
|
||||||
|
"History": "Nothing much"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"characterWeapons": [
|
||||||
|
{
|
||||||
|
"WeaponId": 4,
|
||||||
|
"InUse": true,
|
||||||
|
"HoldInRightHand": true,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"WeaponId": 7,
|
||||||
|
"InUse": false,
|
||||||
|
"HoldInRightHand": false,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"characterSpells": [
|
||||||
|
{
|
||||||
|
"SpellId": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"SpellId": 55
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"charisma": {
|
||||||
|
"Value": 12,
|
||||||
|
"Modification": 2,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSavingThrows": true,
|
||||||
|
"Deception": 0,
|
||||||
|
"CanDeception": false,
|
||||||
|
"Intimidation": 0,
|
||||||
|
"CanIntimidation": false,
|
||||||
|
"Performance": 0,
|
||||||
|
"CanPerformance": false,
|
||||||
|
"Persuasion": 3,
|
||||||
|
"CanPersuasion": true
|
||||||
|
},
|
||||||
|
"constitution": {
|
||||||
|
"Value": 11,
|
||||||
|
"Modification": 1,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSaveThrows": true
|
||||||
|
},
|
||||||
|
"dexterity": {
|
||||||
|
"Value": 15,
|
||||||
|
"Modification": 3,
|
||||||
|
"SavingThrows": 2,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Acrobatics": 2,
|
||||||
|
"CanAcrobatics": true,
|
||||||
|
"SleightOfHand": 1,
|
||||||
|
"CanSleightOfHand": true,
|
||||||
|
"Stealth": 4,
|
||||||
|
"canStealth": true
|
||||||
|
},
|
||||||
|
"intelligence": {
|
||||||
|
"Value": 12,
|
||||||
|
"Modification": 1,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"arcana": 0,
|
||||||
|
"canArcana": false,
|
||||||
|
"History": 0,
|
||||||
|
"CanHistory": false,
|
||||||
|
"Investigation": 0,
|
||||||
|
"CanInvestigation": false,
|
||||||
|
"Nature": 2,
|
||||||
|
"CanNature": true,
|
||||||
|
"Religion": 0,
|
||||||
|
"canReligion": false
|
||||||
|
},
|
||||||
|
"strength": {
|
||||||
|
"Value": 15,
|
||||||
|
"Modification": 4,
|
||||||
|
"SavingThrows": 3,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Athletics": 2,
|
||||||
|
"canAthletics": true
|
||||||
|
},
|
||||||
|
"wisdom": {
|
||||||
|
"Value": 6,
|
||||||
|
"Modification": -4,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"AnimalHandling": 0,
|
||||||
|
"canAnimalHandling": false,
|
||||||
|
"Insight": 0,
|
||||||
|
"canInsight": false,
|
||||||
|
"medicine": 0,
|
||||||
|
"CanMedicine": false,
|
||||||
|
"Perception": 0,
|
||||||
|
"CanPerception": false,
|
||||||
|
"Survival": 0,
|
||||||
|
"CanSurvival": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
20322
SessionCompanion/SessionCompanion.Database/JsonData/monsters.json
Normal file
20322
SessionCompanion/SessionCompanion.Database/JsonData/monsters.json
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
14218
SessionCompanion/SessionCompanion.Database/JsonData/spells.json
Normal file
14218
SessionCompanion/SessionCompanion.Database/JsonData/spells.json
Normal file
File diff suppressed because it is too large
Load Diff
1450
SessionCompanion/SessionCompanion.Database/JsonData/weapons.json
Normal file
1450
SessionCompanion/SessionCompanion.Database/JsonData/weapons.json
Normal file
File diff suppressed because it is too large
Load Diff
838
SessionCompanion/SessionCompanion.Database/Migrations/20201218105527_Character Data Seed.Designer.cs
generated
Normal file
838
SessionCompanion/SessionCompanion.Database/Migrations/20201218105527_Character Data Seed.Designer.cs
generated
Normal file
@ -0,0 +1,838 @@
|
|||||||
|
// <auto-generated />
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||||
|
using Microsoft.EntityFrameworkCore.Metadata;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||||
|
using SessionCompanion.Database;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Migrations
|
||||||
|
{
|
||||||
|
[DbContext(typeof(ApplicationDbContext))]
|
||||||
|
[Migration("20201218105527_Character Data Seed")]
|
||||||
|
partial class CharacterDataSeed
|
||||||
|
{
|
||||||
|
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||||
|
{
|
||||||
|
#pragma warning disable 612, 618
|
||||||
|
modelBuilder
|
||||||
|
.UseIdentityColumns()
|
||||||
|
.HasAnnotation("Relational:MaxIdentifierLength", 128)
|
||||||
|
.HasAnnotation("ProductVersion", "5.0.0");
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Alignment", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("Alignments");
|
||||||
|
|
||||||
|
b.HasData(
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 1
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 2
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 3
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Background", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("Backgrounds");
|
||||||
|
|
||||||
|
b.HasData(
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 1
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 2
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 3
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Biography", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.Property<int>("AlignmentId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("BackgroundId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("CharacterId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("ClassId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<int>("RaceId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<string>("Sex")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("AlignmentId");
|
||||||
|
|
||||||
|
b.HasIndex("BackgroundId");
|
||||||
|
|
||||||
|
b.HasIndex("CharacterId")
|
||||||
|
.IsUnique();
|
||||||
|
|
||||||
|
b.HasIndex("ClassId");
|
||||||
|
|
||||||
|
b.HasIndex("RaceId");
|
||||||
|
|
||||||
|
b.ToTable("Biographies");
|
||||||
|
|
||||||
|
b.HasData(
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 1,
|
||||||
|
AlignmentId = 1,
|
||||||
|
BackgroundId = 1,
|
||||||
|
CharacterId = 1,
|
||||||
|
ClassId = 1,
|
||||||
|
Name = "Bob",
|
||||||
|
RaceId = 1,
|
||||||
|
Sex = "Male"
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 2,
|
||||||
|
AlignmentId = 2,
|
||||||
|
BackgroundId = 2,
|
||||||
|
CharacterId = 2,
|
||||||
|
ClassId = 2,
|
||||||
|
Name = "Queen Daenerys Stormborn of the House Targaryen, the First of Her Name, Queen of the Andals, the Rhoynar and the First Men, Lady of the Seven Kingdoms and Protector of the Realm, Lady of Dragonstone, Queen of Meereen, Khaleesi of the Great Grass Sea, the Unburnt, Breaker of Chains and Mother of Dragons.",
|
||||||
|
RaceId = 2,
|
||||||
|
Sex = "Female"
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 3,
|
||||||
|
AlignmentId = 3,
|
||||||
|
BackgroundId = 3,
|
||||||
|
CharacterId = 3,
|
||||||
|
ClassId = 3,
|
||||||
|
Name = "Gandalf the White",
|
||||||
|
RaceId = 3,
|
||||||
|
Sex = "Both"
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Character", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.Property<int>("UserId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("UserId");
|
||||||
|
|
||||||
|
b.ToTable("Characters");
|
||||||
|
|
||||||
|
b.HasData(
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 1,
|
||||||
|
UserId = 1
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 2,
|
||||||
|
UserId = 2
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 3,
|
||||||
|
UserId = 3
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Charisma", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.Property<bool>("CanDeception")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanIntimidation")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanPerformance")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanPersuasion")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanSaveThrows")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<int>("CharacterId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Deception")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Intimidation")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Modification")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Performance")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Persuasion")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("SavingThrows")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Value")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("CharacterId")
|
||||||
|
.IsUnique();
|
||||||
|
|
||||||
|
b.ToTable("Charismas");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Class", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("Classes");
|
||||||
|
|
||||||
|
b.HasData(
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 1,
|
||||||
|
Name = "Warrior"
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 2,
|
||||||
|
Name = "Knight"
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 3,
|
||||||
|
Name = "Priest"
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Constitution", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.Property<bool>("CanSaveThrows")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<int>("CharacterId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Modification")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("SavingThrows")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Value")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("CharacterId")
|
||||||
|
.IsUnique();
|
||||||
|
|
||||||
|
b.ToTable("Constitutions");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Dexterity", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.Property<int>("Acrobatics")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<bool>("CanAcrobatics")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanSaveThrows")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanSleightOfHand")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanStealth")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<int>("CharacterId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Modification")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("SavingThrows")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("SleightOfHand")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Stealth")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Value")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("CharacterId")
|
||||||
|
.IsUnique();
|
||||||
|
|
||||||
|
b.ToTable("Dexterities");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Intelligence", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.Property<int>("Arcana")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<bool>("CanArcana")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanHistory")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanInvestigation")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanNature")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanReligion")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanSaveThrows")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<int>("CharacterId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("History")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Investigation")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Modification")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Nature")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Religion")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("SavingThrows")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Value")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("CharacterId")
|
||||||
|
.IsUnique();
|
||||||
|
|
||||||
|
b.ToTable("Intelligences");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Race", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("Races");
|
||||||
|
|
||||||
|
b.HasData(
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 1,
|
||||||
|
Name = "Human"
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 2,
|
||||||
|
Name = "Dwarf"
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 3,
|
||||||
|
Name = "Elf"
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Statistics", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.Property<int>("ArmorClass")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("CharacterId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("CurrentHealthPoints")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("ExperiencePoints")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("HealthPoints")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Initiative")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Level")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Proficiency")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Speed")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("CharacterId")
|
||||||
|
.IsUnique();
|
||||||
|
|
||||||
|
b.ToTable("Statistics");
|
||||||
|
|
||||||
|
b.HasData(
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 1,
|
||||||
|
ArmorClass = 9,
|
||||||
|
CharacterId = 1,
|
||||||
|
CurrentHealthPoints = 18,
|
||||||
|
ExperiencePoints = 2,
|
||||||
|
HealthPoints = 20,
|
||||||
|
Initiative = 12,
|
||||||
|
Level = 1,
|
||||||
|
Proficiency = 1,
|
||||||
|
Speed = 5
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 2,
|
||||||
|
ArmorClass = 12,
|
||||||
|
CharacterId = 2,
|
||||||
|
CurrentHealthPoints = 26,
|
||||||
|
ExperiencePoints = 0,
|
||||||
|
HealthPoints = 26,
|
||||||
|
Initiative = 7,
|
||||||
|
Level = 1,
|
||||||
|
Proficiency = 1,
|
||||||
|
Speed = 10
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 3,
|
||||||
|
ArmorClass = 2,
|
||||||
|
CharacterId = 3,
|
||||||
|
CurrentHealthPoints = 7,
|
||||||
|
ExperiencePoints = 24,
|
||||||
|
HealthPoints = 7,
|
||||||
|
Initiative = 18,
|
||||||
|
Level = 1,
|
||||||
|
Proficiency = 2,
|
||||||
|
Speed = 15
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Strength", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.Property<int>("Athletics")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<bool>("CanAthletics")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanSaveThrows")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<int>("CharacterId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Modification")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("SavingThrows")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Value")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("CharacterId")
|
||||||
|
.IsUnique();
|
||||||
|
|
||||||
|
b.ToTable("Strengths");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.User", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.Property<string>("Password")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<string>("Username")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("Users");
|
||||||
|
|
||||||
|
b.HasData(
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 1,
|
||||||
|
Password = "123",
|
||||||
|
Username = "Morwiec"
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 2,
|
||||||
|
Password = "123",
|
||||||
|
Username = "Cichoklepiec"
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 3,
|
||||||
|
Password = "123",
|
||||||
|
Username = "Ruletka"
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Wisdom", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.Property<int>("AnimalHandling")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<bool>("CanAnimalHandling")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanInsight")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanMedicine")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanPerception")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanSaveThrows")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanSurvival")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<int>("CharacterId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Insight")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Medicine")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Modification")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Perception")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("SavingThrows")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Survival")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Value")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("CharacterId")
|
||||||
|
.IsUnique();
|
||||||
|
|
||||||
|
b.ToTable("Wisdoms");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Biography", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.Alignment", "Alignment")
|
||||||
|
.WithMany("Biography")
|
||||||
|
.HasForeignKey("AlignmentId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.Background", "Background")
|
||||||
|
.WithMany("Biography")
|
||||||
|
.HasForeignKey("BackgroundId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.Character", "Character")
|
||||||
|
.WithOne("Biography")
|
||||||
|
.HasForeignKey("SessionCompanion.Database.Tables.Biography", "CharacterId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.Class", "Class")
|
||||||
|
.WithMany("Biography")
|
||||||
|
.HasForeignKey("ClassId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.Race", "Race")
|
||||||
|
.WithMany("Biography")
|
||||||
|
.HasForeignKey("RaceId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Alignment");
|
||||||
|
|
||||||
|
b.Navigation("Background");
|
||||||
|
|
||||||
|
b.Navigation("Character");
|
||||||
|
|
||||||
|
b.Navigation("Class");
|
||||||
|
|
||||||
|
b.Navigation("Race");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Character", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.User", "User")
|
||||||
|
.WithMany("Character")
|
||||||
|
.HasForeignKey("UserId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("User");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Charisma", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.Character", "Character")
|
||||||
|
.WithOne("Charisma")
|
||||||
|
.HasForeignKey("SessionCompanion.Database.Tables.Charisma", "CharacterId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Character");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Constitution", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.Character", "Character")
|
||||||
|
.WithOne("Constitution")
|
||||||
|
.HasForeignKey("SessionCompanion.Database.Tables.Constitution", "CharacterId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Character");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Dexterity", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.Character", "Character")
|
||||||
|
.WithOne("Dexterity")
|
||||||
|
.HasForeignKey("SessionCompanion.Database.Tables.Dexterity", "CharacterId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Character");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Intelligence", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.Character", "Character")
|
||||||
|
.WithOne("Intelligence")
|
||||||
|
.HasForeignKey("SessionCompanion.Database.Tables.Intelligence", "CharacterId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Character");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Statistics", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.Character", "Character")
|
||||||
|
.WithOne("Statistics")
|
||||||
|
.HasForeignKey("SessionCompanion.Database.Tables.Statistics", "CharacterId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Character");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Strength", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.Character", "Character")
|
||||||
|
.WithOne("Strength")
|
||||||
|
.HasForeignKey("SessionCompanion.Database.Tables.Strength", "CharacterId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Character");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Wisdom", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.Character", "Character")
|
||||||
|
.WithOne("Wisdom")
|
||||||
|
.HasForeignKey("SessionCompanion.Database.Tables.Wisdom", "CharacterId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Character");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Alignment", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("Biography");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Background", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("Biography");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Character", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("Biography");
|
||||||
|
|
||||||
|
b.Navigation("Charisma");
|
||||||
|
|
||||||
|
b.Navigation("Constitution");
|
||||||
|
|
||||||
|
b.Navigation("Dexterity");
|
||||||
|
|
||||||
|
b.Navigation("Intelligence");
|
||||||
|
|
||||||
|
b.Navigation("Statistics");
|
||||||
|
|
||||||
|
b.Navigation("Strength");
|
||||||
|
|
||||||
|
b.Navigation("Wisdom");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Class", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("Biography");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Race", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("Biography");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.User", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("Character");
|
||||||
|
});
|
||||||
|
#pragma warning restore 612, 618
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,188 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Migrations
|
||||||
|
{
|
||||||
|
public partial class CharacterDataSeed : Migration
|
||||||
|
{
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Alignments",
|
||||||
|
column: "Id",
|
||||||
|
values: new object[]
|
||||||
|
{
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Backgrounds",
|
||||||
|
column: "Id",
|
||||||
|
values: new object[]
|
||||||
|
{
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Characters",
|
||||||
|
columns: new[] { "Id", "UserId" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 1, 1 },
|
||||||
|
{ 2, 2 },
|
||||||
|
{ 3, 3 }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Classes",
|
||||||
|
columns: new[] { "Id", "Name" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 1, "Warrior" },
|
||||||
|
{ 2, "Knight" },
|
||||||
|
{ 3, "Priest" }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Races",
|
||||||
|
columns: new[] { "Id", "Name" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 1, "Human" },
|
||||||
|
{ 2, "Dwarf" },
|
||||||
|
{ 3, "Elf" }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Biographies",
|
||||||
|
columns: new[] { "Id", "AlignmentId", "BackgroundId", "CharacterId", "ClassId", "Name", "RaceId", "Sex" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 1, 1, 1, 1, 1, "Bob", 1, "Male" },
|
||||||
|
{ 2, 2, 2, 2, 2, "Queen Daenerys Stormborn of the House Targaryen, the First of Her Name, Queen of the Andals, the Rhoynar and the First Men, Lady of the Seven Kingdoms and Protector of the Realm, Lady of Dragonstone, Queen of Meereen, Khaleesi of the Great Grass Sea, the Unburnt, Breaker of Chains and Mother of Dragons.", 2, "Female" },
|
||||||
|
{ 3, 3, 3, 3, 3, "Gandalf the White", 3, "Both" }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Statistics",
|
||||||
|
columns: new[] { "Id", "ArmorClass", "CharacterId", "CurrentHealthPoints", "ExperiencePoints", "HealthPoints", "Initiative", "Level", "Proficiency", "Speed" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 1, 9, 1, 18, 2, 20, 12, 1, 1, 5 },
|
||||||
|
{ 2, 12, 2, 26, 0, 26, 7, 1, 1, 10 },
|
||||||
|
{ 3, 2, 3, 7, 24, 7, 18, 1, 2, 15 }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Biographies",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Biographies",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Biographies",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Statistics",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Statistics",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Statistics",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Alignments",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Alignments",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Alignments",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Backgrounds",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Backgrounds",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Backgrounds",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Characters",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Characters",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Characters",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Classes",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Classes",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Classes",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Races",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Races",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Races",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
838
SessionCompanion/SessionCompanion.Database/Migrations/20201228114303_Class name fix.Designer.cs
generated
Normal file
838
SessionCompanion/SessionCompanion.Database/Migrations/20201228114303_Class name fix.Designer.cs
generated
Normal file
@ -0,0 +1,838 @@
|
|||||||
|
// <auto-generated />
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||||
|
using Microsoft.EntityFrameworkCore.Metadata;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||||
|
using SessionCompanion.Database;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Migrations
|
||||||
|
{
|
||||||
|
[DbContext(typeof(ApplicationDbContext))]
|
||||||
|
[Migration("20201228114303_Class name fix")]
|
||||||
|
partial class Classnamefix
|
||||||
|
{
|
||||||
|
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||||
|
{
|
||||||
|
#pragma warning disable 612, 618
|
||||||
|
modelBuilder
|
||||||
|
.UseIdentityColumns()
|
||||||
|
.HasAnnotation("Relational:MaxIdentifierLength", 128)
|
||||||
|
.HasAnnotation("ProductVersion", "5.0.0");
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Alignment", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("Alignments");
|
||||||
|
|
||||||
|
b.HasData(
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 1
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 2
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 3
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Background", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("Backgrounds");
|
||||||
|
|
||||||
|
b.HasData(
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 1
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 2
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 3
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Biography", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.Property<int>("AlignmentId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("BackgroundId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("CharacterId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("ClassId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<int>("RaceId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<string>("Sex")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("AlignmentId");
|
||||||
|
|
||||||
|
b.HasIndex("BackgroundId");
|
||||||
|
|
||||||
|
b.HasIndex("CharacterId")
|
||||||
|
.IsUnique();
|
||||||
|
|
||||||
|
b.HasIndex("ClassId");
|
||||||
|
|
||||||
|
b.HasIndex("RaceId");
|
||||||
|
|
||||||
|
b.ToTable("Biographies");
|
||||||
|
|
||||||
|
b.HasData(
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 1,
|
||||||
|
AlignmentId = 1,
|
||||||
|
BackgroundId = 1,
|
||||||
|
CharacterId = 1,
|
||||||
|
ClassId = 1,
|
||||||
|
Name = "Bob",
|
||||||
|
RaceId = 1,
|
||||||
|
Sex = "Male"
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 2,
|
||||||
|
AlignmentId = 2,
|
||||||
|
BackgroundId = 2,
|
||||||
|
CharacterId = 2,
|
||||||
|
ClassId = 2,
|
||||||
|
Name = "Queen Daenerys Stormborn of the House Targaryen, the First of Her Name, Queen of the Andals, the Rhoynar and the First Men, Lady of the Seven Kingdoms and Protector of the Realm, Lady of Dragonstone, Queen of Meereen, Khaleesi of the Great Grass Sea, the Unburnt, Breaker of Chains and Mother of Dragons.",
|
||||||
|
RaceId = 2,
|
||||||
|
Sex = "Female"
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 3,
|
||||||
|
AlignmentId = 3,
|
||||||
|
BackgroundId = 3,
|
||||||
|
CharacterId = 3,
|
||||||
|
ClassId = 3,
|
||||||
|
Name = "Gandalf the White",
|
||||||
|
RaceId = 3,
|
||||||
|
Sex = "Both"
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Character", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.Property<int>("UserId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("UserId");
|
||||||
|
|
||||||
|
b.ToTable("Characters");
|
||||||
|
|
||||||
|
b.HasData(
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 1,
|
||||||
|
UserId = 1
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 2,
|
||||||
|
UserId = 2
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 3,
|
||||||
|
UserId = 3
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Charisma", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.Property<bool>("CanDeception")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanIntimidation")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanPerformance")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanPersuasion")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanSaveThrows")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<int>("CharacterId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Deception")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Intimidation")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Modification")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Performance")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Persuasion")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("SavingThrows")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Value")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("CharacterId")
|
||||||
|
.IsUnique();
|
||||||
|
|
||||||
|
b.ToTable("Charismas");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Class", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("Classes");
|
||||||
|
|
||||||
|
b.HasData(
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 1,
|
||||||
|
Name = "Fighter"
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 2,
|
||||||
|
Name = "Paladin"
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 3,
|
||||||
|
Name = "Cleric"
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Constitution", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.Property<bool>("CanSaveThrows")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<int>("CharacterId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Modification")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("SavingThrows")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Value")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("CharacterId")
|
||||||
|
.IsUnique();
|
||||||
|
|
||||||
|
b.ToTable("Constitutions");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Dexterity", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.Property<int>("Acrobatics")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<bool>("CanAcrobatics")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanSaveThrows")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanSleightOfHand")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanStealth")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<int>("CharacterId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Modification")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("SavingThrows")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("SleightOfHand")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Stealth")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Value")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("CharacterId")
|
||||||
|
.IsUnique();
|
||||||
|
|
||||||
|
b.ToTable("Dexterities");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Intelligence", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.Property<int>("Arcana")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<bool>("CanArcana")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanHistory")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanInvestigation")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanNature")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanReligion")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanSaveThrows")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<int>("CharacterId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("History")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Investigation")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Modification")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Nature")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Religion")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("SavingThrows")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Value")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("CharacterId")
|
||||||
|
.IsUnique();
|
||||||
|
|
||||||
|
b.ToTable("Intelligences");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Race", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("Races");
|
||||||
|
|
||||||
|
b.HasData(
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 1,
|
||||||
|
Name = "Human"
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 2,
|
||||||
|
Name = "Dwarf"
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 3,
|
||||||
|
Name = "Elf"
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Statistics", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.Property<int>("ArmorClass")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("CharacterId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("CurrentHealthPoints")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("ExperiencePoints")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("HealthPoints")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Initiative")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Level")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Proficiency")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Speed")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("CharacterId")
|
||||||
|
.IsUnique();
|
||||||
|
|
||||||
|
b.ToTable("Statistics");
|
||||||
|
|
||||||
|
b.HasData(
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 1,
|
||||||
|
ArmorClass = 9,
|
||||||
|
CharacterId = 1,
|
||||||
|
CurrentHealthPoints = 18,
|
||||||
|
ExperiencePoints = 2,
|
||||||
|
HealthPoints = 20,
|
||||||
|
Initiative = 12,
|
||||||
|
Level = 1,
|
||||||
|
Proficiency = 1,
|
||||||
|
Speed = 5
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 2,
|
||||||
|
ArmorClass = 12,
|
||||||
|
CharacterId = 2,
|
||||||
|
CurrentHealthPoints = 26,
|
||||||
|
ExperiencePoints = 0,
|
||||||
|
HealthPoints = 26,
|
||||||
|
Initiative = 7,
|
||||||
|
Level = 1,
|
||||||
|
Proficiency = 1,
|
||||||
|
Speed = 10
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 3,
|
||||||
|
ArmorClass = 2,
|
||||||
|
CharacterId = 3,
|
||||||
|
CurrentHealthPoints = 7,
|
||||||
|
ExperiencePoints = 24,
|
||||||
|
HealthPoints = 7,
|
||||||
|
Initiative = 18,
|
||||||
|
Level = 1,
|
||||||
|
Proficiency = 2,
|
||||||
|
Speed = 15
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Strength", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.Property<int>("Athletics")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<bool>("CanAthletics")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanSaveThrows")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<int>("CharacterId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Modification")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("SavingThrows")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Value")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("CharacterId")
|
||||||
|
.IsUnique();
|
||||||
|
|
||||||
|
b.ToTable("Strengths");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.User", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.Property<string>("Password")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<string>("Username")
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("Users");
|
||||||
|
|
||||||
|
b.HasData(
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 1,
|
||||||
|
Password = "123",
|
||||||
|
Username = "Morwiec"
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 2,
|
||||||
|
Password = "123",
|
||||||
|
Username = "Cichoklepiec"
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 3,
|
||||||
|
Password = "123",
|
||||||
|
Username = "Ruletka"
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Wisdom", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int")
|
||||||
|
.UseIdentityColumn();
|
||||||
|
|
||||||
|
b.Property<int>("AnimalHandling")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<bool>("CanAnimalHandling")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanInsight")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanMedicine")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanPerception")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanSaveThrows")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("CanSurvival")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<int>("CharacterId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Insight")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Medicine")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Modification")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Perception")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("SavingThrows")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Survival")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<int>("Value")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("CharacterId")
|
||||||
|
.IsUnique();
|
||||||
|
|
||||||
|
b.ToTable("Wisdoms");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Biography", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.Alignment", "Alignment")
|
||||||
|
.WithMany("Biography")
|
||||||
|
.HasForeignKey("AlignmentId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.Background", "Background")
|
||||||
|
.WithMany("Biography")
|
||||||
|
.HasForeignKey("BackgroundId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.Character", "Character")
|
||||||
|
.WithOne("Biography")
|
||||||
|
.HasForeignKey("SessionCompanion.Database.Tables.Biography", "CharacterId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.Class", "Class")
|
||||||
|
.WithMany("Biography")
|
||||||
|
.HasForeignKey("ClassId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.Race", "Race")
|
||||||
|
.WithMany("Biography")
|
||||||
|
.HasForeignKey("RaceId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Alignment");
|
||||||
|
|
||||||
|
b.Navigation("Background");
|
||||||
|
|
||||||
|
b.Navigation("Character");
|
||||||
|
|
||||||
|
b.Navigation("Class");
|
||||||
|
|
||||||
|
b.Navigation("Race");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Character", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.User", "User")
|
||||||
|
.WithMany("Character")
|
||||||
|
.HasForeignKey("UserId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("User");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Charisma", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.Character", "Character")
|
||||||
|
.WithOne("Charisma")
|
||||||
|
.HasForeignKey("SessionCompanion.Database.Tables.Charisma", "CharacterId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Character");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Constitution", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.Character", "Character")
|
||||||
|
.WithOne("Constitution")
|
||||||
|
.HasForeignKey("SessionCompanion.Database.Tables.Constitution", "CharacterId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Character");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Dexterity", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.Character", "Character")
|
||||||
|
.WithOne("Dexterity")
|
||||||
|
.HasForeignKey("SessionCompanion.Database.Tables.Dexterity", "CharacterId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Character");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Intelligence", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.Character", "Character")
|
||||||
|
.WithOne("Intelligence")
|
||||||
|
.HasForeignKey("SessionCompanion.Database.Tables.Intelligence", "CharacterId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Character");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Statistics", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.Character", "Character")
|
||||||
|
.WithOne("Statistics")
|
||||||
|
.HasForeignKey("SessionCompanion.Database.Tables.Statistics", "CharacterId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Character");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Strength", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.Character", "Character")
|
||||||
|
.WithOne("Strength")
|
||||||
|
.HasForeignKey("SessionCompanion.Database.Tables.Strength", "CharacterId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Character");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Wisdom", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SessionCompanion.Database.Tables.Character", "Character")
|
||||||
|
.WithOne("Wisdom")
|
||||||
|
.HasForeignKey("SessionCompanion.Database.Tables.Wisdom", "CharacterId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Character");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Alignment", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("Biography");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Background", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("Biography");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Character", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("Biography");
|
||||||
|
|
||||||
|
b.Navigation("Charisma");
|
||||||
|
|
||||||
|
b.Navigation("Constitution");
|
||||||
|
|
||||||
|
b.Navigation("Dexterity");
|
||||||
|
|
||||||
|
b.Navigation("Intelligence");
|
||||||
|
|
||||||
|
b.Navigation("Statistics");
|
||||||
|
|
||||||
|
b.Navigation("Strength");
|
||||||
|
|
||||||
|
b.Navigation("Wisdom");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Class", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("Biography");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.Race", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("Biography");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SessionCompanion.Database.Tables.User", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("Character");
|
||||||
|
});
|
||||||
|
#pragma warning restore 612, 618
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,55 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Migrations
|
||||||
|
{
|
||||||
|
public partial class Classnamefix : Migration
|
||||||
|
{
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Classes",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
column: "Name",
|
||||||
|
value: "Fighter");
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Classes",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2,
|
||||||
|
column: "Name",
|
||||||
|
value: "Paladin");
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Classes",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3,
|
||||||
|
column: "Name",
|
||||||
|
value: "Cleric");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Classes",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
column: "Name",
|
||||||
|
value: "Warrior");
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Classes",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2,
|
||||||
|
column: "Name",
|
||||||
|
value: "Knight");
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Classes",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3,
|
||||||
|
column: "Name",
|
||||||
|
value: "Priest");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
2974
SessionCompanion/SessionCompanion.Database/Migrations/20210102163136_weapons-added.Designer.cs
generated
Normal file
2974
SessionCompanion/SessionCompanion.Database/Migrations/20210102163136_weapons-added.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,480 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Migrations
|
||||||
|
{
|
||||||
|
public partial class weaponsadded : Migration
|
||||||
|
{
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "Armors",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
Name = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||||
|
Category = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||||
|
ArmorClassBase = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||||
|
HaveDexterityBonus = table.Column<bool>(type: "bit", nullable: false),
|
||||||
|
MinimumStrength = table.Column<int>(type: "int", nullable: true),
|
||||||
|
HaveStealthDisadvantage = table.Column<bool>(type: "bit", nullable: false),
|
||||||
|
Weight = table.Column<int>(type: "int", nullable: false),
|
||||||
|
Cost = table.Column<int>(type: "int", nullable: false),
|
||||||
|
CurrencyType = table.Column<int>(type: "int", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_Armors", x => x.Id);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "OtherEquipment",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
Name = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||||
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||||
|
Cost = table.Column<int>(type: "int", nullable: false),
|
||||||
|
CurrencyType = table.Column<int>(type: "int", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_OtherEquipment", x => x.Id);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "Weapons",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
Name = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||||
|
Cost = table.Column<int>(type: "int", nullable: false),
|
||||||
|
Weight = table.Column<int>(type: "int", nullable: false),
|
||||||
|
CurrencyType = table.Column<int>(type: "int", nullable: false),
|
||||||
|
DiceCount = table.Column<int>(type: "int", nullable: false),
|
||||||
|
DiceValue = table.Column<int>(type: "int", nullable: false),
|
||||||
|
TwoHandDiceCount = table.Column<int>(type: "int", nullable: true),
|
||||||
|
TwoHandDiceValue = table.Column<int>(type: "int", nullable: true),
|
||||||
|
TwoHandDamageType = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||||
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||||
|
WeaponType = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||||
|
RangeMeele = table.Column<int>(type: "int", nullable: false),
|
||||||
|
RangeThrowNormal = table.Column<int>(type: "int", nullable: true),
|
||||||
|
RangeThrowLong = table.Column<int>(type: "int", nullable: true),
|
||||||
|
RangeLong = table.Column<int>(type: "int", nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_Weapons", x => x.Id);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "CharacterArmors",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
CharacterId = table.Column<int>(type: "int", nullable: false),
|
||||||
|
ArmorId = table.Column<int>(type: "int", nullable: false),
|
||||||
|
InUse = table.Column<bool>(type: "bit", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_CharacterArmors", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_CharacterArmors_Armors_ArmorId",
|
||||||
|
column: x => x.ArmorId,
|
||||||
|
principalTable: "Armors",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_CharacterArmors_Characters_CharacterId",
|
||||||
|
column: x => x.CharacterId,
|
||||||
|
principalTable: "Characters",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "CharacterOtherEquipment",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
CharacterId = table.Column<int>(type: "int", nullable: false),
|
||||||
|
OtherEquipmentId = table.Column<int>(type: "int", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_CharacterOtherEquipment", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_CharacterOtherEquipment_Characters_CharacterId",
|
||||||
|
column: x => x.CharacterId,
|
||||||
|
principalTable: "Characters",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_CharacterOtherEquipment_OtherEquipment_OtherEquipmentId",
|
||||||
|
column: x => x.OtherEquipmentId,
|
||||||
|
principalTable: "OtherEquipment",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "CharacterWeapons",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
CharacterId = table.Column<int>(type: "int", nullable: false),
|
||||||
|
WeaponId = table.Column<int>(type: "int", nullable: false),
|
||||||
|
InUse = table.Column<bool>(type: "bit", nullable: false),
|
||||||
|
HoldInRightHand = table.Column<bool>(type: "bit", nullable: false),
|
||||||
|
HoldInLeftHand = table.Column<bool>(type: "bit", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_CharacterWeapons", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_CharacterWeapons_Characters_CharacterId",
|
||||||
|
column: x => x.CharacterId,
|
||||||
|
principalTable: "Characters",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_CharacterWeapons_Weapons_WeaponId",
|
||||||
|
column: x => x.WeaponId,
|
||||||
|
principalTable: "Weapons",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Armors",
|
||||||
|
columns: new[] { "Id", "ArmorClassBase", "Category", "Cost", "CurrencyType", "HaveDexterityBonus", "HaveStealthDisadvantage", "MinimumStrength", "Name", "Weight" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 1, "11", "Light", 5, 3, true, true, 0, "Padded", 8 },
|
||||||
|
{ 13, "2", "Shield", 10, 3, false, false, 0, "Shield", 6 },
|
||||||
|
{ 12, "18", "Heavy", 1500, 3, false, true, 15, "Plate", 65 },
|
||||||
|
{ 11, "17", "Heavy", 200, 3, false, true, 15, "Splint", 60 },
|
||||||
|
{ 9, "14", "Heavy", 30, 3, false, true, 0, "Ring Mail", 40 },
|
||||||
|
{ 8, "15", "Medium", 750, 3, true, true, 0, "Half Plate", 40 },
|
||||||
|
{ 10, "16", "Heavy", 75, 3, false, true, 13, "Chain Mail", 55 },
|
||||||
|
{ 6, "14", "Medium", 50, 3, true, true, 0, "Scale Mail", 45 },
|
||||||
|
{ 5, "13", "Medium", 50, 3, true, false, 0, "Chain Shirt", 20 },
|
||||||
|
{ 4, "12", "Medium", 10, 3, true, false, 0, "Hide", 12 },
|
||||||
|
{ 3, "12", "Light", 45, 3, true, false, 0, "Studded Leather", 13 },
|
||||||
|
{ 2, "11", "Light", 10, 3, true, false, 0, "Leather", 10 },
|
||||||
|
{ 7, "14", "Medium", 400, 3, true, false, 0, "Breastplate", 20 }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "OtherEquipment",
|
||||||
|
columns: new[] { "Id", "Cost", "CurrencyType", "Description", "Name" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 92, 5, 0, "", "Signal whistle" },
|
||||||
|
{ 88, 1, 0, "", "Sack" },
|
||||||
|
{ 89, 5, 3, " A scale includes a small balance, pans, and a suitable assortment of weights up to 2 pounds. With it, you can measure the exact weight of small objects, such as raw precious metals or trade goods, to help determine their worth.", "Scale, merchant's" },
|
||||||
|
{ 90, 5, 1, "", "Sealing wax" },
|
||||||
|
{ 91, 2, 3, "", "Shovel" },
|
||||||
|
{ 93, 5, 3, "", "Signet ring" },
|
||||||
|
{ 100, 1, 0, " A torch burns for 1 hour, providing bright light in a 20-foot radius and dim light for an additional 20 feet. If you make a melee attack with a burning torch and hit, it deals 1 fire damage.", "Torch" },
|
||||||
|
{ 95, 50, 3, " Essential for wizards, a spellbook is a leather-bound tome with 100 blank vellum pages suitable for recording spells.", "Spellbook" },
|
||||||
|
{ 96, 1, 1, "", "Spike, iron" },
|
||||||
|
{ 97, 1000, 3, " Objects viewed through a spyglass are magnified to twice their size.", "Spyglass" },
|
||||||
|
{ 98, 2, 3, " A simple and portable canvas shelter, a tent sleeps two.", "Tent, two-person" },
|
||||||
|
{ 99, 5, 1, " This small container holds flint, fire steel, and tinder (usually dry cloth soaked in light oil) used to kindle a fire. Using it to light a torch--or anything else with abundant, exposed fuel--takes an action. Lighting any other fire takes 1 minute.", "Tinderbox" },
|
||||||
|
{ 87, 10, 3, " Rope, whether made of hemp or silk, has 2 hit points and can be burst with a DC 17 Strength check.", "Rope, silk (50 feet)" },
|
||||||
|
{ 94, 2, 0, "", "Soap" },
|
||||||
|
{ 86, 1, 3, " Rope, whether made of hemp or silk, has 2 hit points and can be burst with a DC 17 Strength check.", "Rope, hempen (50 feet)" },
|
||||||
|
{ 79, 50, 3, " A character who drinks the magical red fluid in this vial regains 2d4 + 2 hit points. Drinking or administering a potion takes an action.", "Potion of healing" },
|
||||||
|
{ 84, 5, 3, " A holy symbol is a representation of a god or pantheon. It might be an amulet depicting a symbol representing a deity, the same symbol carefully engraved or inlaid as an emblem on a shield, or a tiny box holding a fragment of a sacred relic. Appendix B lists the symbols commonly associated with many gods in the multiverse. A cleric or paladin can use a holy symbol as a spellcasting focus. To use the symbol in this way, the caster must hold it in hand, wear it visibly, or bear it on a shield.", "Reliquary" },
|
||||||
|
{ 83, 5, 1, " Rations consist of dry foods suitable for extended travel, including jerky, dried fruit, hardtack, and nuts.", "Rations (1 day)" },
|
||||||
|
{ 82, 4, 3, " You can use a portable ram to break down doors. When doing so, you gain a +4 bonus on the Strength check. One other character can help you use the ram, giving you advantage on this check.", "Ram, portable" },
|
||||||
|
{ 81, 1, 3, " A quiver can hold up to 20 arrows.", "Quiver" },
|
||||||
|
{ 101, 1, 3, "", "Vial" },
|
||||||
|
{ 78, 2, 3, "", "Pot, iron" },
|
||||||
|
{ 77, 5, 0, "", "Pole (10-foot)" },
|
||||||
|
{ 76, 100, 3, " You can use the poison in this vial to coat one slashing or piercing weapon or up to three pieces of ammunition. Applying the poison takes an action. A creature hit by the poisoned weapon or ammunition must make a DC 10 Constitution saving throw or take 1d4 poison damage. Once applied, the poison retains potency for 1 minute before drying.", "Poison, basic (vial)" },
|
||||||
|
{ 75, 5, 0, "", "Piton" },
|
||||||
|
{ 74, 2, 3, "", "Pick, miner's" },
|
||||||
|
{ 73, 5, 3, "", "Perfume (vial)" },
|
||||||
|
{ 72, 1, 1, "", "Parchment (one sheet)" },
|
||||||
|
{ 71, 2, 1, "", "Paper (one sheet)" }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "OtherEquipment",
|
||||||
|
columns: new[] { "Id", "Cost", "CurrencyType", "Description", "Name" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 70, 1, 1, " Oil usually comes in a clay flask that holds 1 pint. As an action, you can splash the oil in this flask onto a creature within 5 feet of you or throw it up to 20 feet, shattering it on impact. Make a ranged attack against a target creature or object, treating the oil as an improvised weapon. On a hit, the target is covered in oil. If the target takes any fire damage before the oil dries (after 1 minute), the target takes an additional 5 fire damage from the burning oil. You can also pour a flask of oil on the ground to cover a 5-foot-square area, provided that the surface is level. If lit, the oil burns for 2 rounds and deals 5 fire damage to any creature that enters the area or ends its turn in the area. A creature can take this damage only once per turn.", "Oil (flask)" },
|
||||||
|
{ 85, 1, 3, "", "Robes" },
|
||||||
|
{ 102, 2, 1, "", "Waterskin" },
|
||||||
|
{ 109, 15, 3, " These special tools include the items needed to pursue a craft or trade. The table shows examples of the most common types of tools, each providing items related to a single craft. Proficiency with a set of artisan's tools lets you add your proficiency bonus to any ability checks you make using the tools in your craft. Each type of artisan's tools requires a separate proficiency.", "Cartographer's tools" },
|
||||||
|
{ 104, 16, 3, "", "Burglar's Pack" },
|
||||||
|
{ 135, 25, 3, " This set of tools includes a small file, a set of lock picks, a small mirror mounted on a metal handle, a set of narrow-bladed scissors, and a pair of pliers. Proficiency with these tools lets you add your proficiency bonus to any ability checks you make to disarm traps or open locks.", "Thieves' tools" },
|
||||||
|
{ 134, 25, 3, " This set of instruments is used for navigation at sea. Proficiency with navigator's tools lets you chart a ship's course and follow navigation charts. In addition, these tools allow you to add your proficiency bonus to any ability check you make to avoid getting lost at sea.", "Navigator's tools" },
|
||||||
|
{ 133, 30, 3, " Several of the most common types of musical instruments are shown on the table as examples. If you have proficiency with a given musical instrument, you can add your proficiency bonus to any ability checks you make to play music with the instrument. A bard can use a musical instrument as a spellcasting focus. Each type of musical instrument requires a separate proficiency.", "Viol" },
|
||||||
|
{ 132, 2, 3, " Several of the most common types of musical instruments are shown on the table as examples. If you have proficiency with a given musical instrument, you can add your proficiency bonus to any ability checks you make to play music with the instrument. A bard can use a musical instrument as a spellcasting focus. Each type of musical instrument requires a separate proficiency.", "Shawm" },
|
||||||
|
{ 131, 12, 3, " Several of the most common types of musical instruments are shown on the table as examples. If you have proficiency with a given musical instrument, you can add your proficiency bonus to any ability checks you make to play music with the instrument. A bard can use a musical instrument as a spellcasting focus. Each type of musical instrument requires a separate proficiency.", "Pan flute" },
|
||||||
|
{ 130, 3, 3, " Several of the most common types of musical instruments are shown on the table as examples. If you have proficiency with a given musical instrument, you can add your proficiency bonus to any ability checks you make to play music with the instrument. A bard can use a musical instrument as a spellcasting focus. Each type of musical instrument requires a separate proficiency.", "Horn" },
|
||||||
|
{ 129, 30, 3, " Several of the most common types of musical instruments are shown on the table as examples. If you have proficiency with a given musical instrument, you can add your proficiency bonus to any ability checks you make to play music with the instrument. A bard can use a musical instrument as a spellcasting focus. Each type of musical instrument requires a separate proficiency.", "Lyre" },
|
||||||
|
{ 128, 35, 3, " Several of the most common types of musical instruments are shown on the table as examples. If you have proficiency with a given musical instrument, you can add your proficiency bonus to any ability checks you make to play music with the instrument. A bard can use a musical instrument as a spellcasting focus. Each type of musical instrument requires a separate proficiency.", "Lute" },
|
||||||
|
{ 127, 2, 3, " Several of the most common types of musical instruments are shown on the table as examples. If you have proficiency with a given musical instrument, you can add your proficiency bonus to any ability checks you make to play music with the instrument. A bard can use a musical instrument as a spellcasting focus. Each type of musical instrument requires a separate proficiency.", "Flute" },
|
||||||
|
{ 126, 25, 3, " Several of the most common types of musical instruments are shown on the table as examples. If you have proficiency with a given musical instrument, you can add your proficiency bonus to any ability checks you make to play music with the instrument. A bard can use a musical instrument as a spellcasting focus. Each type of musical instrument requires a separate proficiency.", "Dulcimer" },
|
||||||
|
{ 125, 6, 3, " Several of the most common types of musical instruments are shown on the table as examples. If you have proficiency with a given musical instrument, you can add your proficiency bonus to any ability checks you make to play music with the instrument. A bard can use a musical instrument as a spellcasting focus. Each type of musical instrument requires a separate proficiency.", "Drum" },
|
||||||
|
{ 124, 30, 3, " Several of the most common types of musical instruments are shown on the table as examples. If you have proficiency with a given musical instrument, you can add your proficiency bonus to any ability checks you make to play music with the instrument. A bard can use a musical instrument as a spellcasting focus. Each type of musical instrument requires a separate proficiency.", "Bagpipes" },
|
||||||
|
{ 123, 5, 1, " This item encompasses a wide range of game pieces, including dice and decks of cards (for games such as Three-Dragon Ante). A few common examples appear on the Tools table, but other kinds of gaming sets exist. If you are proficient with a gaming set, you can add your proficiency bonus to ability checks you make to play a game with that set. Each type of gaming set requires a separate proficiency.", "Playing card set" },
|
||||||
|
{ 122, 1, 1, " This item encompasses a wide range of game pieces, including dice and decks of cards (for games such as Three-Dragon Ante). A few common examples appear on the Tools table, but other kinds of gaming sets exist. If you are proficient with a gaming set, you can add your proficiency bonus to ability checks you make to play a game with that set. Each type of gaming set requires a separate proficiency.", "Dice set" },
|
||||||
|
{ 121, 1, 3, " These special tools include the items needed to pursue a craft or trade. The table shows examples of the most common types of tools, each providing items related to a single craft. Proficiency with a set of artisan's tools lets you add your proficiency bonus to any ability checks you make using the tools in your craft. Each type of artisan's tools requires a separate proficiency.", "Woodcarver's tools" },
|
||||||
|
{ 120, 1, 3, " These special tools include the items needed to pursue a craft or trade. The table shows examples of the most common types of tools, each providing items related to a single craft. Proficiency with a set of artisan's tools lets you add your proficiency bonus to any ability checks you make using the tools in your craft. Each type of artisan's tools requires a separate proficiency.", "Weaver's tools" },
|
||||||
|
{ 119, 50, 3, " These special tools include the items needed to pursue a craft or trade. The table shows examples of the most common types of tools, each providing items related to a single craft. Proficiency with a set of artisan's tools lets you add your proficiency bonus to any ability checks you make using the tools in your craft. Each type of artisan's tools requires a separate proficiency.", "Tinker's tools" },
|
||||||
|
{ 105, 50, 3, " These special tools include the items needed to pursue a craft or trade. The table shows examples of the most common types of tools, each providing items related to a single craft. Proficiency with a set of artisan's tools lets you add your proficiency bonus to any ability checks you make using the tools in your craft. Each type of artisan's tools requires a separate proficiency.", "Alchemist's supplies" },
|
||||||
|
{ 106, 20, 3, " These special tools include the items needed to pursue a craft or trade. The table shows examples of the most common types of tools, each providing items related to a single craft. Proficiency with a set of artisan's tools lets you add your proficiency bonus to any ability checks you make using the tools in your craft. Each type of artisan's tools requires a separate proficiency.", "Brewer's supplies" },
|
||||||
|
{ 107, 10, 3, " These special tools include the items needed to pursue a craft or trade. The table shows examples of the most common types of tools, each providing items related to a single craft. Proficiency with a set of artisan's tools lets you add your proficiency bonus to any ability checks you make using the tools in your craft. Each type of artisan's tools requires a separate proficiency.", "Calligrapher's supplies" },
|
||||||
|
{ 108, 8, 3, " These special tools include the items needed to pursue a craft or trade. The table shows examples of the most common types of tools, each providing items related to a single craft. Proficiency with a set of artisan's tools lets you add your proficiency bonus to any ability checks you make using the tools in your craft. Each type of artisan's tools requires a separate proficiency.", "Carpenter's tools" },
|
||||||
|
{ 69, 5, 3, "", "Mirror, steel" },
|
||||||
|
{ 110, 5, 3, " These special tools include the items needed to pursue a craft or trade. The table shows examples of the most common types of tools, each providing items related to a single craft. Proficiency with a set of artisan's tools lets you add your proficiency bonus to any ability checks you make using the tools in your craft. Each type of artisan's tools requires a separate proficiency.", "Cobbler's tools" },
|
||||||
|
{ 103, 1, 0, "", "Whetstone" },
|
||||||
|
{ 111, 1, 3, " These special tools include the items needed to pursue a craft or trade. The table shows examples of the most common types of tools, each providing items related to a single craft. Proficiency with a set of artisan's tools lets you add your proficiency bonus to any ability checks you make using the tools in your craft. Each type of artisan's tools requires a separate proficiency.", "Cook's utensils" },
|
||||||
|
{ 113, 25, 3, " These special tools include the items needed to pursue a craft or trade. The table shows examples of the most common types of tools, each providing items related to a single craft. Proficiency with a set of artisan's tools lets you add your proficiency bonus to any ability checks you make using the tools in your craft. Each type of artisan's tools requires a separate proficiency.", "Jeweler's tools" },
|
||||||
|
{ 114, 5, 3, " These special tools include the items needed to pursue a craft or trade. The table shows examples of the most common types of tools, each providing items related to a single craft. Proficiency with a set of artisan's tools lets you add your proficiency bonus to any ability checks you make using the tools in your craft. Each type of artisan's tools requires a separate proficiency.", "Leatherworker's tools" },
|
||||||
|
{ 115, 10, 3, " These special tools include the items needed to pursue a craft or trade. The table shows examples of the most common types of tools, each providing items related to a single craft. Proficiency with a set of artisan's tools lets you add your proficiency bonus to any ability checks you make using the tools in your craft. Each type of artisan's tools requires a separate proficiency.", "Mason's tools" },
|
||||||
|
{ 116, 10, 3, " These special tools include the items needed to pursue a craft or trade. The table shows examples of the most common types of tools, each providing items related to a single craft. Proficiency with a set of artisan's tools lets you add your proficiency bonus to any ability checks you make using the tools in your craft. Each type of artisan's tools requires a separate proficiency.", "Painter's supplies" },
|
||||||
|
{ 117, 10, 3, " These special tools include the items needed to pursue a craft or trade. The table shows examples of the most common types of tools, each providing items related to a single craft. Proficiency with a set of artisan's tools lets you add your proficiency bonus to any ability checks you make using the tools in your craft. Each type of artisan's tools requires a separate proficiency.", "Potter's tools" },
|
||||||
|
{ 118, 20, 3, " These special tools include the items needed to pursue a craft or trade. The table shows examples of the most common types of tools, each providing items related to a single craft. Proficiency with a set of artisan's tools lets you add your proficiency bonus to any ability checks you make using the tools in your craft. Each type of artisan's tools requires a separate proficiency.", "Smith's tools" },
|
||||||
|
{ 112, 30, 3, " These special tools include the items needed to pursue a craft or trade. The table shows examples of the most common types of tools, each providing items related to a single craft. Proficiency with a set of artisan's tools lets you add your proficiency bonus to any ability checks you make using the tools in your craft. Each type of artisan's tools requires a separate proficiency.", "Glassblower's tools" },
|
||||||
|
{ 68, 2, 3, " These metal restraints can bind a Small or Medium creature. Escaping the manacles requires a successful DC 20 Dexterity check. Breaking them requires a successful DC 20 Strength check. Each set of manacles comes with one key. Without the key, a creature proficient with thieves' tools can pick the manacles' lock with a successful DC 15 Dexterity check. Manacles have 15 hit points.", "Manacles" },
|
||||||
|
{ 80, 5, 1, " A cloth or leather pouch can hold up to 20 sling bullets or 50 blowgun needles, among other things. A compartmentalized pouch for holding spell components is called a component pouch (described earlier in this section).", "Pouch" },
|
||||||
|
{ 66, 10, 3, " A key is provided with the lock. Without the key, a creature proficient with thieves' tools can pick this lock with a successful DC 15 Dexterity check. Your GM may decide that better locks are available for higher prices.", "Lock" },
|
||||||
|
{ 31, 1, 0, "", "Chalk (1 piece)" },
|
||||||
|
{ 30, 5, 3, " A chain has 10 hit points. It can be burst with a successful DC 20 Strength check.", "Chain (10 feet)" }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "OtherEquipment",
|
||||||
|
columns: new[] { "Id", "Cost", "CurrencyType", "Description", "Name" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 29, 1, 3, " This cylindrical leather case can hold up to ten rolled-up sheets of paper or five rolled-up sheets of parchment.", "Case, map or scroll" },
|
||||||
|
{ 28, 1, 3, " This wooden case can hold up to twenty crossbow bolts.", "Case, crossbow bolt" },
|
||||||
|
{ 27, 1, 0, " For 1 hour, a candle sheds bright light in a 5-foot radius and dim light for an additional 5 feet.", "Candle" },
|
||||||
|
{ 26, 5, 0, " As an action, you can spread a bag of caltrops to cover a square area that is 5 feet on a side. Any creature that enters the area must succeed on a DC 15 Dexterity saving throw or stop moving this turn and take 1 piercing damage. Taking this damage reduces the creature's walking speed by 10 feet until the creature regains at least 1 hit point. A creature moving through the area at half speed doesn't need to make the save.", "Caltrops" },
|
||||||
|
{ 25, 5, 0, "", "Bucket" },
|
||||||
|
{ 24, 2, 3, "", "Bottle, glass" },
|
||||||
|
{ 23, 25, 3, " A book might contain poetry, historical accounts, information pertaining to a particular field of lore, diagrams and notes on gnomish contraptions, or just about anything else that can be represented using text or pictures. A book of spells is a spellbook (described later in this section).", "Book" },
|
||||||
|
{ 22, 1, 3, " A set of pulleys with a cable threaded through them and a hook to attach to objects, a block and tackle allows you to hoist up to four times the weight you can normally lift.", "Block and tackle" },
|
||||||
|
{ 21, 5, 1, "", "Blanket" },
|
||||||
|
{ 20, 1, 3, "", "Bell" },
|
||||||
|
{ 19, 1, 3, "", "Bedroll" },
|
||||||
|
{ 18, 4, 1, "", "Basket" },
|
||||||
|
{ 17, 2, 3, "", "Barrel" },
|
||||||
|
{ 67, 100, 3, " This lens allows a closer look at small objects. It is also useful as a substitute for flint and steel when starting fires. Lighting a fire with a magnifying glass requires light as bright as sunlight to focus, tinder to ignite, and about 5 minutes for the fire to ignite. A magnifying glass grants advantage on any ability check made to appraise or inspect an item that is small or highly detailed.", "Magnifying glass" },
|
||||||
|
{ 15, 2, 3, "", "Backpack" },
|
||||||
|
{ 1, 2, 3, "", "Abacus" },
|
||||||
|
{ 2, 25, 3, " As an action, you can splash the contents of this vial onto a creature within 5 feet of you or throw the vial up to 20 feet, shattering it on impact. In either case, make a ranged attack against a creature or object, treating the acid as an improvised weapon. On a hit, the target takes 2d6 acid damage.", "Acid (vial)" },
|
||||||
|
{ 3, 50, 3, " This sticky, adhesive fluid ignites when exposed to air. As an action, you can throw this flask up to 20 feet, shattering it on impact. Make a ranged attack against a creature or object, treating the alchemist's fire as an improvised weapon. On a hit, the target takes 1d4 fire damage at the start of each of its turns. A creature can end this damage by using its action to make a DC 10 Dexterity check to extinguish the flames.", "Alchemist's fire (flask)" },
|
||||||
|
{ 4, 5, 0, "", "Arrow" },
|
||||||
|
{ 5, 2, 0, "", "Blowgun needle" },
|
||||||
|
{ 6, 5, 0, "", "Crossbow bolt" },
|
||||||
|
{ 32, 5, 3, "", "Chest" },
|
||||||
|
{ 7, 1, 0, "", "Sling bullet" },
|
||||||
|
{ 9, 50, 3, " A creature that drinks this vial of liquid gains advantage on saving throws against poison for 1 hour. It confers no benefit to undead or constructs.", "Antitoxin (vial)" },
|
||||||
|
{ 10, 10, 3, " An arcane focus is a special item--an orb, a crystal, a rod, a specially constructed staff, a wand-like length of wood, or some similar item--designed to channel the power of arcane spells. A sorcerer, warlock, or wizard can use such an item as a spellcasting focus.", "Crystal" },
|
||||||
|
{ 11, 20, 3, " An arcane focus is a special item--an orb, a crystal, a rod, a specially constructed staff, a wand-like length of wood, or some similar item--designed to channel the power of arcane spells. A sorcerer, warlock, or wizard can use such an item as a spellcasting focus.", "Orb" },
|
||||||
|
{ 12, 10, 3, " An arcane focus is a special item--an orb, a crystal, a rod, a specially constructed staff, a wand-like length of wood, or some similar item--designed to channel the power of arcane spells. A sorcerer, warlock, or wizard can use such an item as a spellcasting focus.", "Rod" },
|
||||||
|
{ 13, 5, 3, " An arcane focus is a special item--an orb, a crystal, a rod, a specially constructed staff, a wand-like length of wood, or some similar item--designed to channel the power of arcane spells. A sorcerer, warlock, or wizard can use such an item as a spellcasting focus.", "Staff" },
|
||||||
|
{ 14, 10, 3, " An arcane focus is a special item--an orb, a crystal, a rod, a specially constructed staff, a wand-like length of wood, or some similar item--designed to channel the power of arcane spells. A sorcerer, warlock, or wizard can use such an item as a spellcasting focus.", "Wand" },
|
||||||
|
{ 8, 5, 3, " A holy symbol is a representation of a god or pantheon. It might be an amulet depicting a symbol representing a deity, the same symbol carefully engraved or inlaid as an emblem on a shield, or a tiny box holding a fragment of a sacred relic. Appendix B lists the symbols commonly associated with many gods in the multiverse. A cleric or paladin can use a holy symbol as a spellcasting focus. To use the symbol in this way, the caster must hold it in hand, wear it visibly, or bear it on a shield.", "Amulet" },
|
||||||
|
{ 33, 5, 1, "", "Clothes, common" },
|
||||||
|
{ 16, 1, 3, " As an action, you can spill these tiny metal balls from their pouch to cover a level, square area that is 10 feet on a side. A creature moving across the covered area must succeed on a DC 10 Dexterity saving throw or fall prone. A creature moving through the area at half speed doesn't need to make the save.", "Ball bearings (bag of 1,000)" },
|
||||||
|
{ 35, 15, 3, "", "Clothes, fine" },
|
||||||
|
{ 34, 5, 3, "", "Clothes, costume" },
|
||||||
|
{ 65, 5, 3, " A hooded lantern casts bright light in a 30-foot radius and dim light for an additional 30 feet. Once lit, it burns for 6 hours on a flask (1 pint) of oil. As an action, you can lower the hood, reducing the light to dim light in a 5-foot radius.", "Lantern, hooded" },
|
||||||
|
{ 64, 10, 3, " A bullseye lantern casts bright light in a 60-foot cone and dim light for an additional 60 feet. Once lit, it burns for 6 hours on a flask (1 pint) of oil.", "Lantern, bullseye" },
|
||||||
|
{ 63, 5, 1, " A lamp casts bright light in a 15-foot radius and dim light for an additional 30 feet. Once lit, it burns for 6 hours on a flask (1 pint) of oil.", "Lamp" },
|
||||||
|
{ 62, 1, 1, "", "Ladder (10-foot)" },
|
||||||
|
{ 61, 50, 3, " A poisoner's kit includes the vials, chemicals, and other equipment necessary for the creation of poisons. Proficiency with this kit lets you add your proficiency bonus to any ability checks you make to craft or use poisons.", "Poisoner's Kit" },
|
||||||
|
{ 60, 2, 1, " This tin box contains a cup and simple cutlery. The box clamps together, and one side can be used as a cooking pan and the other as a plate or shallow bowl.", "Mess Kit" },
|
||||||
|
{ 59, 5, 3, " This kit is a leather pouch containing bandages, salves, and splints. The kit has ten uses. As an action, you can expend one use of the kit to stabilize a creature that has 0 hit points, without needing to make a Wisdom (Medicine) check.", "Healer's Kit" },
|
||||||
|
{ 57, 15, 3, " This small box contains a variety of papers and parchments, pens and inks, seals and sealing wax, gold and silver leaf, and other supplies necessary to create convincing forgeries of physical documents. Proficiency with this kit lets you add your proficiency bonus to any ability checks you make to create a physical forgery of a document.", "Forgery Kit" }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "OtherEquipment",
|
||||||
|
columns: new[] { "Id", "Cost", "CurrencyType", "Description", "Name" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 56, 25, 3, " This pouch of cosmetics, hair dye, and small props lets you create disguises that change your physical appearance. Proficiency with this kit lets you add your proficiency bonus to any ability checks you make to create a visual disguise.", "Disguise Kit" },
|
||||||
|
{ 55, 25, 3, " A climber's kit includes special pitons, boot tips, gloves, and a harness. You can use the climber's kit as an action to anchor yourself; when you do, you can't fall more than 25 feet from the point where you anchored yourself, and you can't climb more than 25 feet away from that point without undoing the anchor.", "Climber's Kit" },
|
||||||
|
{ 54, 2, 0, "", "Jug or pitcher" },
|
||||||
|
{ 53, 2, 0, "", "Ink pen" },
|
||||||
|
{ 52, 10, 3, "", "Ink (1 ounce bottle)" },
|
||||||
|
{ 51, 5, 3, " When you use your action to set it, this trap forms a saw-toothed steel ring that snaps shut when a creature steps on a pressure plate in the center. The trap is affixed by a heavy chain to an immobile object, such as a tree or a spike driven into the ground. A creature that steps on the plate must succeed on a DC 13 Dexterity saving throw or take 1d4 piercing damage and stop moving. Thereafter, until the creature breaks free of the trap, its movement is limited by the length of the chain (typically 3 feet long). A creature can use its action to make a DC 13 Strength check, freeing itself or another creature within its reach on a success. Each failed check deals 1 piercing damage to the trapped creature.", "Hunting trap" },
|
||||||
|
{ 58, 5, 3, " This kit contains a variety of instruments such as clippers, mortar and pestle, and pouches and vials used by herbalists to create remedies and potions. Proficiency with this kit lets you add your proficiency bonus to any ability checks you make to identify or apply herbs. Also, proficiency with this kit is required to create antitoxin and potions of healing.", "Herbalism Kit" },
|
||||||
|
{ 49, 25, 3, " As an action, you can splash the contents of this flask onto a creature within 5 feet of you or throw it up to 20 feet, shattering it on impact. In either case, make a ranged attack against a target creature, treating the holy water as an improvised weapon. If the target is a fiend or undead, it takes 2d6 radiant damage. A cleric or paladin may create holy water by performing a special ritual. The ritual takes 1 hour to perform, uses 25 gp worth of powdered silver, and requires the caster to expend a 1st-level spell slot.", "Holy water (flask)" },
|
||||||
|
{ 36, 2, 3, "", "Clothes, traveler's" },
|
||||||
|
{ 50, 25, 3, "", "Hourglass" },
|
||||||
|
{ 37, 25, 3, " A component pouch is a small, watertight leather belt pouch that has compartments to hold all the material components and other special items you need to cast your spells, except for those components that have a specific cost (as indicated in a spell's description).", "Component pouch" },
|
||||||
|
{ 38, 2, 3, " Using a crowbar grants advantage to Strength checks where the crowbar's leverage can be applied.", "Crowbar" },
|
||||||
|
{ 39, 1, 3, " A druidic focus might be a sprig of mistletoe or holly, a wand or scepter made of yew or another special wood, a staff drawn whole out of a living tree, or a totem object incorporating feathers, fur, bones, and teeth from sacred animals. A druid can use such an object as a spellcasting focus.", "Sprig of mistletoe" },
|
||||||
|
{ 40, 1, 3, " A druidic focus might be a sprig of mistletoe or holly, a wand or scepter made of yew or another special wood, a staff drawn whole out of a living tree, or a totem object incorporating feathers, fur, bones, and teeth from sacred animals. A druid can use such an object as a spellcasting focus.", "Totem" },
|
||||||
|
{ 42, 10, 3, " A druidic focus might be a sprig of mistletoe or holly, a wand or scepter made of yew or another special wood, a staff drawn whole out of a living tree, or a totem object incorporating feathers, fur, bones, and teeth from sacred animals. A druid can use such an object as a spellcasting focus.", "Yew wand" },
|
||||||
|
{ 41, 5, 3, " A druidic focus might be a sprig of mistletoe or holly, a wand or scepter made of yew or another special wood, a staff drawn whole out of a living tree, or a totem object incorporating feathers, fur, bones, and teeth from sacred animals. A druid can use such an object as a spellcasting focus.", "Wooden staff" },
|
||||||
|
{ 44, 1, 3, " This kit includes a wooden rod, silken line, corkwood bobbers, steel hooks, lead sinkers, velvet lures, and narrow netting.", "Fishing tackle" },
|
||||||
|
{ 45, 2, 0, "", "Flask or tankard" },
|
||||||
|
{ 46, 2, 3, "", "Grappling hook" },
|
||||||
|
{ 47, 1, 3, "", "Hammer" },
|
||||||
|
{ 48, 2, 3, "", "Hammer, sledge" },
|
||||||
|
{ 43, 5, 3, " A holy symbol is a representation of a god or pantheon. It might be an amulet depicting a symbol representing a deity, the same symbol carefully engraved or inlaid as an emblem on a shield, or a tiny box holding a fragment of a sacred relic. Appendix B lists the symbols commonly associated with many gods in the multiverse. A cleric or paladin can use a holy symbol as a spellcasting focus. To use the symbol in this way, the caster must hold it in hand, wear it visibly, or bear it on a shield.", "Emblem" }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Weapons",
|
||||||
|
columns: new[] { "Id", "Cost", "CurrencyType", "Description", "DiceCount", "DiceValue", "Name", "RangeLong", "RangeMeele", "RangeThrowLong", "RangeThrowNormal", "TwoHandDamageType", "TwoHandDiceCount", "TwoHandDiceValue", "WeaponType", "Weight" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 22, 15, 3, null, 1, 8, "Longsword", null, 5, null, null, null, 1, 10, "Martial Melee", 3 },
|
||||||
|
{ 26, 25, 3, null, 1, 8, "Rapier", null, 5, null, null, null, null, null, "Martial Melee", 2 },
|
||||||
|
{ 21, 10, 3, "You have disadvantage when you use a lance to attack a target within 5 feet of you. Also, a lance requires two hands to wield when you aren<65>t mounted.", 1, 12, "Lance", null, 5, null, null, null, null, null, "Martial Melee", 6 },
|
||||||
|
{ 23, 10, 3, null, 2, 6, "Maul", null, 5, null, null, null, null, null, "Martial Melee", 10 },
|
||||||
|
{ 24, 15, 3, null, 1, 8, "Morningstar", null, 5, null, null, null, null, null, "Martial Melee", 4 },
|
||||||
|
{ 25, 5, 3, null, 1, 10, "Pike", null, 5, null, null, null, null, null, "Martial Melee", 18 },
|
||||||
|
{ 27, 25, 3, null, 1, 6, "Scimitar", null, 5, null, null, null, null, null, "Martial Melee", 3 },
|
||||||
|
{ 34, 75, 3, null, 1, 6, "Crossbow, hand", null, 5, null, null, null, null, null, "Martial Ranged", 3 },
|
||||||
|
{ 29, 5, 3, null, 1, 6, "Trident", null, 5, 60, 20, null, null, null, "Martial Melee", 4 },
|
||||||
|
{ 30, 5, 3, null, 1, 8, "War pick", null, 5, null, null, null, null, null, "Martial Melee", 2 },
|
||||||
|
{ 31, 15, 3, null, 1, 8, "Warhammer", null, 5, null, null, null, 1, 10, "Martial Melee", 2 },
|
||||||
|
{ 32, 2, 3, null, 1, 4, "Whip", null, 5, null, null, null, null, null, "Martial Melee", 3 },
|
||||||
|
{ 33, 10, 3, null, 1, 1, "Blowgun", null, 5, null, null, null, null, null, "Martial Ranged", 1 },
|
||||||
|
{ 20, 20, 3, null, 1, 10, "Halberd", null, 5, null, null, null, null, null, "Martial Melee", 6 },
|
||||||
|
{ 35, 50, 3, null, 1, 10, "Crossbow, heavy", null, 5, null, null, null, null, null, "Martial Ranged", 18 },
|
||||||
|
{ 28, 10, 3, null, 1, 6, "Shortsword", null, 5, null, null, null, null, null, "Martial Melee", 2 },
|
||||||
|
{ 19, 50, 3, null, 2, 6, "Greatsword", null, 5, null, null, null, null, null, "Martial Melee", 6 },
|
||||||
|
{ 3, 2, 1, null, 1, 8, "Greatclub", null, 5, null, null, null, null, null, "Simple Melee", 10 },
|
||||||
|
{ 17, 20, 3, null, 1, 10, "Glaive", null, 5, null, null, null, null, null, "Martial Melee", 6 },
|
||||||
|
{ 36, 50, 3, null, 1, 8, "Longbow", null, 5, null, null, null, null, null, "Martial Ranged", 2 }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Weapons",
|
||||||
|
columns: new[] { "Id", "Cost", "CurrencyType", "Description", "DiceCount", "DiceValue", "Name", "RangeLong", "RangeMeele", "RangeThrowLong", "RangeThrowNormal", "TwoHandDamageType", "TwoHandDiceCount", "TwoHandDiceValue", "WeaponType", "Weight" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 1, 1, 1, null, 1, 4, "Club", null, 5, null, null, null, null, null, "Simple Melee", 2 },
|
||||||
|
{ 2, 2, 3, null, 1, 4, "Dagger", null, 5, 60, 20, null, null, null, "Simple Melee", 1 },
|
||||||
|
{ 4, 5, 3, null, 1, 6, "Handaxe", null, 5, 60, 20, null, null, null, "Simple Melee", 2 },
|
||||||
|
{ 5, 5, 1, null, 1, 6, "Javelin", null, 5, 120, 30, null, null, null, "Simple Melee", 2 },
|
||||||
|
{ 6, 2, 3, null, 1, 4, "Light hammer", null, 5, 60, 20, null, null, null, "Simple Melee", 2 },
|
||||||
|
{ 7, 5, 3, null, 1, 6, "Mace", null, 5, null, null, null, null, null, "Simple Melee", 4 },
|
||||||
|
{ 18, 30, 3, null, 1, 12, "Greataxe", null, 5, null, null, null, null, null, "Martial Melee", 7 },
|
||||||
|
{ 8, 2, 1, null, 1, 6, "Quarterstaff", null, 5, null, null, null, 1, 8, "Simple Melee", 4 },
|
||||||
|
{ 10, 1, 3, null, 1, 4, "Spear", null, 5, 60, 20, null, 1, 8, "Simple Melee", 3 },
|
||||||
|
{ 11, 25, 3, null, 1, 8, "Crossbow, light", null, 5, null, null, null, null, null, "Simple Ranged", 5 },
|
||||||
|
{ 12, 5, 0, null, 1, 4, "Dart", null, 5, 60, 20, null, null, null, "Simple Ranged", 0 },
|
||||||
|
{ 13, 25, 3, null, 1, 6, "Shortbow", null, 5, null, null, null, null, null, "Simple Ranged", 2 },
|
||||||
|
{ 14, 1, 1, null, 1, 4, "Sling", null, 5, null, null, null, null, null, "Simple Ranged", 0 },
|
||||||
|
{ 15, 10, 3, null, 1, 8, "Battleaxe", null, 5, null, null, null, 1, 10, "Martial Melee", 4 },
|
||||||
|
{ 16, 10, 3, null, 1, 8, "Flail", null, 5, null, null, null, null, null, "Martial Melee", 2 },
|
||||||
|
{ 9, 1, 3, null, 1, 4, "Sickle", null, 5, null, null, null, null, null, "Simple Melee", 2 },
|
||||||
|
{ 37, 1, 3, "A Large or smaller creature hit by a net is restrained until it is freed. A net has no effect on creatures that are formless, or creatures that are Huge or larger. A creature can use its action to make a DC 10 Strength check, freeing itself or another creature within its reach on a success. Dealing 5 slashing damage to the net (AC 10) also frees the creature without harming it, ending the effect and destroying the net. When you use an action, bonus action, or reaction to attack with a net, you can make only one attack regardless of the number of attacks you can normally make.", 1, 0, "Net", null, 5, 15, 5, null, null, null, "Martial Ranged", 3 }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "CharacterArmors",
|
||||||
|
columns: new[] { "Id", "ArmorId", "CharacterId", "InUse" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 1, 1, 1, true },
|
||||||
|
{ 3, 2, 2, true },
|
||||||
|
{ 6, 2, 3, false },
|
||||||
|
{ 2, 3, 1, false },
|
||||||
|
{ 4, 5, 2, false },
|
||||||
|
{ 5, 6, 3, true }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "CharacterOtherEquipment",
|
||||||
|
columns: new[] { "Id", "CharacterId", "OtherEquipmentId" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 5, 3, 6 },
|
||||||
|
{ 4, 2, 5 },
|
||||||
|
{ 2, 1, 3 },
|
||||||
|
{ 6, 3, 2 },
|
||||||
|
{ 3, 2, 2 },
|
||||||
|
{ 1, 1, 1 }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "CharacterWeapons",
|
||||||
|
columns: new[] { "Id", "CharacterId", "HoldInLeftHand", "HoldInRightHand", "InUse", "WeaponId" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 1, 1, false, false, false, 1 },
|
||||||
|
{ 3, 2, false, true, true, 2 },
|
||||||
|
{ 2, 1, true, false, true, 4 },
|
||||||
|
{ 7, 3, false, true, true, 7 },
|
||||||
|
{ 4, 2, false, false, false, 8 },
|
||||||
|
{ 5, 3, false, false, false, 9 }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_CharacterArmors_ArmorId",
|
||||||
|
table: "CharacterArmors",
|
||||||
|
column: "ArmorId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_CharacterArmors_CharacterId",
|
||||||
|
table: "CharacterArmors",
|
||||||
|
column: "CharacterId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_CharacterOtherEquipment_CharacterId",
|
||||||
|
table: "CharacterOtherEquipment",
|
||||||
|
column: "CharacterId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_CharacterOtherEquipment_OtherEquipmentId",
|
||||||
|
table: "CharacterOtherEquipment",
|
||||||
|
column: "OtherEquipmentId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_CharacterWeapons_CharacterId",
|
||||||
|
table: "CharacterWeapons",
|
||||||
|
column: "CharacterId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_CharacterWeapons_WeaponId",
|
||||||
|
table: "CharacterWeapons",
|
||||||
|
column: "WeaponId");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "CharacterArmors");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "CharacterOtherEquipment");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "CharacterWeapons");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "Armors");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "OtherEquipment");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "Weapons");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
8531
SessionCompanion/SessionCompanion.Database/Migrations/20210103152629_Seed-Spells.Designer.cs
generated
Normal file
8531
SessionCompanion/SessionCompanion.Database/Migrations/20210103152629_Seed-Spells.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,528 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Migrations
|
||||||
|
{
|
||||||
|
public partial class SeedSpells : Migration
|
||||||
|
{
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "CharacterSpellSlots",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
CharacterId = table.Column<int>(type: "int", nullable: false),
|
||||||
|
FirstLevelSlots = table.Column<int>(type: "int", nullable: false),
|
||||||
|
FirstLevelSlotsUsed = table.Column<int>(type: "int", nullable: false),
|
||||||
|
SecondLevelSlots = table.Column<int>(type: "int", nullable: false),
|
||||||
|
SecondLevelSlotsUsed = table.Column<int>(type: "int", nullable: false),
|
||||||
|
ThirdLevelSlots = table.Column<int>(type: "int", nullable: false),
|
||||||
|
ThirdLevelSlotsUsed = table.Column<int>(type: "int", nullable: false),
|
||||||
|
FourthLevelSlots = table.Column<int>(type: "int", nullable: false),
|
||||||
|
FourthLevelSlotsUsed = table.Column<int>(type: "int", nullable: false),
|
||||||
|
FifthLevelSlots = table.Column<int>(type: "int", nullable: false),
|
||||||
|
FifthLevelSlotsUsed = table.Column<int>(type: "int", nullable: false),
|
||||||
|
SixthLevelSlots = table.Column<int>(type: "int", nullable: false),
|
||||||
|
SixthLevelSlotsUsed = table.Column<int>(type: "int", nullable: false),
|
||||||
|
SeventhLevelSlots = table.Column<int>(type: "int", nullable: false),
|
||||||
|
SeventhLevelSlotsUsed = table.Column<int>(type: "int", nullable: false),
|
||||||
|
EightLevelSlots = table.Column<int>(type: "int", nullable: false),
|
||||||
|
EightLevelSlotsUsed = table.Column<int>(type: "int", nullable: false),
|
||||||
|
NinthLevelSlots = table.Column<int>(type: "int", nullable: false),
|
||||||
|
NinthLevelSlotsUsed = table.Column<int>(type: "int", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_CharacterSpellSlots", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_CharacterSpellSlots_Characters_CharacterId",
|
||||||
|
column: x => x.CharacterId,
|
||||||
|
principalTable: "Characters",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "Spells",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
Name = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||||
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||||
|
HigherLevel = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||||
|
Range = table.Column<int>(type: "int", nullable: false),
|
||||||
|
Components = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||||
|
Material = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||||
|
Ritual = table.Column<bool>(type: "bit", nullable: false),
|
||||||
|
Duration = table.Column<int>(type: "int", nullable: false),
|
||||||
|
Concentration = table.Column<bool>(type: "bit", nullable: false),
|
||||||
|
CastingTime = table.Column<int>(type: "int", nullable: false),
|
||||||
|
Level = table.Column<int>(type: "int", nullable: false),
|
||||||
|
School = table.Column<int>(type: "int", nullable: false),
|
||||||
|
Classes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||||
|
Subclasses = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_Spells", x => x.Id);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "CharacterSpells",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
CharacterId = table.Column<int>(type: "int", nullable: false),
|
||||||
|
SpellId = table.Column<int>(type: "int", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_CharacterSpells", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_CharacterSpells_Characters_CharacterId",
|
||||||
|
column: x => x.CharacterId,
|
||||||
|
principalTable: "Characters",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_CharacterSpells_Spells_SpellId",
|
||||||
|
column: x => x.SpellId,
|
||||||
|
principalTable: "Spells",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "CharacterSpellSlots",
|
||||||
|
columns: new[] { "Id", "CharacterId", "EightLevelSlots", "EightLevelSlotsUsed", "FifthLevelSlots", "FifthLevelSlotsUsed", "FirstLevelSlots", "FirstLevelSlotsUsed", "FourthLevelSlots", "FourthLevelSlotsUsed", "NinthLevelSlots", "NinthLevelSlotsUsed", "SecondLevelSlots", "SecondLevelSlotsUsed", "SeventhLevelSlots", "SeventhLevelSlotsUsed", "SixthLevelSlots", "SixthLevelSlotsUsed", "ThirdLevelSlots", "ThirdLevelSlotsUsed" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 1, 1, 0, 0, 1, 0, 4, 0, 3, 1, 0, 0, 5, 4, 0, 0, 0, 0, 2, 1 },
|
||||||
|
{ 2, 2, 0, 0, 1, 1, 6, 2, 2, 2, 0, 0, 3, 2, 0, 0, 0, 0, 3, 1 },
|
||||||
|
{ 3, 3, 0, 0, 1, 0, 2, 0, 1, 1, 0, 0, 3, 2, 0, 0, 0, 0, 2, 0 }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Spells",
|
||||||
|
columns: new[] { "Id", "CastingTime", "Classes", "Components", "Concentration", "Description", "Duration", "HigherLevel", "Level", "Material", "Name", "Range", "Ritual", "School", "Subclasses" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 217, 0, "Wizard", "V;S", false, "A Large quasi-real, horselike creature appears on the ground in an unoccupied space of your choice within range. You decide the creature's appearance, but it is equipped with a saddle, bit, and bridle. Any of the equipment created by the spell vanishes in a puff of smoke if it is carried more than 10 feet away from the steed.;For the duration, you or a creature you choose can ride the steed. The creature uses the statistics for a riding horse, except it has a speed of 100 feet and can travel 10 miles in an hour, or 13 miles at a fast pace. When the spell ends, the steed gradually fades, giving the rider 1 minute to dismount. The spell ends if you use an action to dismiss it or if the steed takes any damage.", 5, null, 3, null, "Phantom Steed", 7, true, 7, "Lore" },
|
||||||
|
{ 216, 6, "Wizard", "V;S", true, "You tap into the nightmares of a creature you can see within range and create an illusory manifestation of its deepest fears, visible only to that creature. The target must make a wisdom saving throw. On a failed save, the target becomes frightened for the duration. At the start of each of the target's turns before the spell ends, the target must succeed on a wisdom saving throw or take 4 d10 psychic damage. On a successful save, the spell ends.", 3, "When you cast this spell using a spell slot of 5th level or higher, the damage increases by 1dlO for each slot level above 4th.", 4, null, "Phantasmal Killer", 11, false, 7, null },
|
||||||
|
{ 215, 6, "Wizard", "V;S;M", false, "A passage appears at a point of your choice that you can see on a wooden, plaster, or stone surface (such as a wall, a ceiling, or a floor) within range, and lasts for the duration. You choose the opening's dimensions: up to 5 feet wide, 8 feet tall, and 20 feet deep. The passage creates no instability in a structure surrounding it.;When the opening disappears, any creatures or objects still in the passage created by the spell are safely ejected to an unoccupied space nearest to the surface on which you cast the spell.", 5, null, 5, "A pinch of sesame seeds.", "Passwall", 7, false, 3, "Land" },
|
||||||
|
{ 214, 6, "Druid;Ranger", "V;S;M", true, "A veil of shadows and silence radiates from you, masking you and your companions from detection. For the duration, each creature you choose within 30 feet of you (including you) has a +10 bonus to Dexterity (Stealth) checks and can't be tracked except by magical means. A creature that receives this bonus leaves behind no tracks or other traces of its passage.", 5, null, 2, "Ashes from a burned leaf of mistletoe and a sprig of spruce.", "Pass without Trace", 0, false, 2, "Lore;Land" },
|
||||||
|
{ 213, 6, "Bard;Ranger;Wizard", "V;S;M", false, "For the duration, you hide a target that you touch from divination magic. The target can be a willing creature or a place or an object no larger than 10 feet in any dimension. The target can't be targeted by any divination magic or perceived through magical scrying sensors.", 7, null, 3, "A pinch of diamond dust worth 25 gp sprinkled over the target, which the spell consumes.", "Nondetection", 1, false, 2, "Lore" },
|
||||||
|
{ 212, 6, "Druid;Sorcerer;Wizard", "V;S;M", true, "Choose an area of terrain no larger than 40 feet on a side within range. You can reshape dirt, sand, or clay in the area in any manner you choose for the duration. You can raise or lower the area's elevation, create or fill in a trench, erect or flatten a wall, or form a pillar. The extent of any such changes can't exceed half the area's largest dimension. So, if you affect a 40-foot square, you can create a pillar up to 20 feet high, raise or lower the square's elevation by up to 20 feet, dig a trench up to 20 feet deep, and so on. It takes 10 minutes for these changes to complete.;At the end of every 10 minutes you spend concentrating on the spell, you can choose a new area of terrain to affect.;Because the terrain's transformation occurs slowly, creatures in the area can't usually be trapped or injured by the ground's movement.;This spell can't manipulate natural stone or stone construction. Rocks and structures shift to accommodate the new terrain. If the way you shape the terrain would make a structure unstable, it might collapse.;Similarly, this spell doesn't directly affect plant growth. The moved earth carries any plants along with it.", 6, null, 6, "An iron blade and a small bag containing a mixture of soils—clay, loam, and sand.", "Move Earth", 11, false, 3, null },
|
||||||
|
{ 211, 6, "Druid", "V;S;M", true, "A silvery beam of pale light shines down in a 5-footradius, 40-foot-high cylinder centered on a point within range. Until the spell ends, dim light fills the cylinder.;When a creature enters the spell's area for the first time on a turn or starts its turn there, it is engulfed in ghostly flames that cause searing pain, and it must make a constitution saving throw. It takes 2d10 radiant damage on a failed save, or half as much damage on a successful one.;A shapechanger makes its saving throw with disadvantage. If it fails, it also instantly reverts to its original form and can't assume a different form until it leaves the spell's light.;On each of your turns after you cast this spell, you can use an action to move the beam 60 feet in any direction.", 3, "When you cast this spell using a spell slot of 3rd level or higher, the damage increases by 1dlO for each slot level above 2nd.", 2, "Several seeds of any moonseed plant and a piece of opalescent feldspar.", "Moonbeam", 11, false, 0, "Lore" },
|
||||||
|
{ 210, 6, "Bard;Wizard", "V;S", true, "You attempt to reshape another creature's memories. One creature that you can see must make a wisdom saving throw. If you are fighting the creature, it has advantage on the saving throw. On a failed save, the target becomes charmed by you for the duration. The charmed target is incapacitated and unaware of its surroundings, though it can still hear you. If it takes any damage or is targeted by another spell, this spell ends, and none of the target's memories are modified.;While this charm lasts, you can affect the target's memory of an event that it experienced within the last 24 hours and that lasted no more than 10 minutes. You can permanently eliminate all memory of the event, allow the target to recall the event with perfect clarity and exacting detail, change its memory of the details of the event, or create a memory of some other event.;You must speak to the target to describe how its memories are affected, and it must be able to understand your language for the modified memories to take root. Its mind fills in any gaps in the details of your description. If the spell ends before you have finished describing the modified memories, the creature's memory isn't altered. Otherwise, the modified memories take hold when the spell ends.;A modified memory doesn't necessarily affect how a creature behaves, particularly if the memory contradicts the creature's natural inclinations, alignment, or beliefs. An illogical modified memory, such as implanting a memory of how much the creature enjoyed dousing itself in acid, is dismissed, perhaps as a bad dream. The DM might deem a modified memory too nonsensical to affect a creature in a significant manner.;A remove curse or greater restoration spell cast on the target restores the creature's true memory.", 3, "If you cast this spell using a spell slot of 6th level or higher, you can alter the target's memories of an event that took place up to 7 days ago (6th level), 30 days ago (7th level), 1 year ago (8th level), or any time in the creature's past (9th level).", 5, null, "Modify Memory", 7, false, 4, null },
|
||||||
|
{ 209, 8, "Sorcerer;Warlock;Wizard", "V", false, "Briefly surrounded by silvery mist, you teleport up to 30 feet to an unoccupied space that you can see.", 0, null, 2, null, "Misty Step", 0, false, 1, "Lore;Land" },
|
||||||
|
{ 208, 6, "Bard;Wizard", "S", true, "You become invisible at the same time that an illusory double of you appears where you are standing. The double lasts for the duration, but the invisibility ends if you attack or cast a spell.;You can use your action to move your illusory double up to twice your speed and make it gesture, speak, and behave in whatever way you choose.;You can see through its eyes and hear through its ears as if you were located where it is. On each of your turns as a bonus action, you can switch from using its senses to using your own, or back again. While you are using its senses, you are blinded and deafened in regard to your own surroundings.", 5, null, 5, null, "Mislead", 0, false, 7, null },
|
||||||
|
{ 207, 6, "Sorcerer;Warlock;Wizard", "V;S", false, "Three illusionary duplicates of yourself appear in your space. Until the end of the spell, duplicates move with you and imitate your actions, swapping their position so that it is impossible to determine which image is real. You can use your action to dispel the illusory duplicates.;Whenever a creature is targeting you with an attack during the duration of the spell, roll 1d20 to determine if the attack does not target rather one of your duplicates.;If you have three duplicates, you need 6 or more on your throw to lead the target of the attack to a duplicate. With two duplicates, you need 8 or more. With one duplicate, you need 11 or more.;The CA of a duplicate is 10 + your Dexterity modifier. If an attack hits a duplicate, it is destroyed. A duplicate may be destroyed not just an attack on key. It ignores other damage and effects. The spell ends if the three duplicates are destroyed.;A creature is unaffected by this fate if she can not see if it relies on a different meaning as vision, such as blind vision, or if it can perceive illusions as false, as with clear vision.", 3, null, 2, null, "Mirror Image", 0, false, 7, "Lore;Land" },
|
||||||
|
{ 206, 1, "Bard;Druid;Wizard", "V;S", false, "You make terrain in an area up to 1 mile square look, sound, smell, and even feel like some other sort of terrain. The terrain's general shape remains the same, however. Open fields or a road could be made to resemble a swamp, hill, crevasse, or some other difficult or impassable terrain. A pond can be made to seem like a grassy meadow, a precipice like a gentle slope, or a rock-strewn gully like a wide and smooth road.;Similarly, you can alter the appearance of structures, or add them where none are present. The spell doesn't disguise, conceal, or add creatures.;The illusion includes audible, visual, tactile, and olfactory elements, so it can turn clear ground into difficult terrain (or vice versa) or otherwise impede movement through the area. Any piece of the illusory terrain (such as a rock or stick) that is removed from the spell's area disappears immediately.;Creatures with truesight can see through the illusion to the terrain's true form, however, all other elements of the illusion remain, so while the creature is aware of the illusion's presence, the creature can still physically interact with the illusion.", 10, null, 7, null, "Mirage Arcane", 3, false, 7, null },
|
||||||
|
{ 205, 6, "Bard;Sorcerer;Warlock;Wizard", "S;M", false, "You create a sound or an image of an object within range that lasts for the duration. The illusion also ends if you dismiss it as an action or cast this spell again.;If you create a sound, its volume can range from a whisper to a scream. It can be your voice, someone else's voice, a lion's roar, a beating of drums, or any other sound you choose. The sound continues unabated throughout the duration, or you can make discrete sounds at different times before the spell ends.;If you create an image of an object—such as a chair, muddy footprints, or a small chest—it must be no larger than a 5-foot cube. The image can't create sound, light, smell, or any other sensory effect. Physical interaction with the image reveals it to be an illusion, because things can pass through it.;If a creature uses its action to examine the sound or image, the creature can determine that it is an illusion with a successful Intelligence (Investigation) check against your spell save DC. If a creature discerns the illusion for what it is, the illusion becomes faint to the creature.", 3, null, 0, "A bit of fleece.", "Minor Illusion", 7, false, 7, "Lore" },
|
||||||
|
{ 204, 6, "Bard;Wizard", "V;S", false, "Until the spell ends, one willing creature you touch is immune to psychic damage, any effect that would sense its emotions or read its thoughts, divination spells, and the charmed condition. The spell even foils wish spells and spells or effects of similar power used to affect the target's mind or to gain information about the target.", 8, null, 8, null, "Mind Blank", 1, false, 2, null },
|
||||||
|
{ 203, 6, "Sorcerer;Wizard", "V;S", false, "Blazing orbs of fire plummet to the ground at four different points you can see within range. Each creature in a 40-foot-radius sphere centered on each point you choose must make a dexterity saving throw. The sphere spreads around corners. A creature takes 20d6 fire damage and 20d6 bludgeoning damage on a failed save, or half as much damage on a successful one. A creature in the area of more than one fiery burst is affected only once.;The spell damages objects in the area and ignites flammable objects that aren't being worn or carried.", 0, null, 9, null, "Meteor Swarm", 15, false, 0, null },
|
||||||
|
{ 202, 6, "Bard;Sorcerer;Wizard", "V;S;M", false, "You point your finger toward a creature within range and whisper a message. The target (and only the target) hears the message and can reply in a whisper that only you can hear.;You can cast this spell through solid objects if you are familiar with the target and know it is beyond the barrier. Magical silence, 1 foot of stone, 1 inch of common metal, a thin sheet of lead, or 3 feet of wood blocks the spell. The spell doesn't have to follow a straight line and can travel freely around corners or through openings.", 12, null, 0, "A short piece of copper wire.", "Message", 11, false, 3, "Lore" },
|
||||||
|
{ 218, 1, "Cleric", "V;S", false, "You beseech an otherworldly entity for aid. The being must be known to you: a god, a primordial, a demon prince, or some other being of cosmic power. That entity sends a celestial, an elemental, or a fiend loyal to it to aid you, making the creature appear in an unoccupied space within range. If you know a specific creature's name, you can speak that name when you cast this spell to request that creature, though you might get a different creature anyway (DM's choice).;When the creature appears, it is under no compulsion to behave in any particular way. You can ask the creature to perform a service in exchange for payment, but it isn't obliged to do so. The requested task could range from simple (fly us across the chasm, or help us fight a battle) to complex (spy on our enemies, or protect us during our foray into the dungeon). You must be able to communicate with the creature to bargain for its services.;Payment can take a variety of forms. A celestial might require a sizable donation of gold or magic items to an allied temple, while a fiend might demand a living sacrifice or a gift of treasure. Some creatures might exchange their service for a quest undertaken by you.;As a rule of thumb, a task that can be measured in minutes requires a payment worth 100 gp per minute. A task measured in hours requires 1,000 gp per hour. And a task measured in days (up to 10 days) requires 10,000 gp per day. The DM can adjust these payments based on the circumstances under which you cast the spell. If the task is aligned with the creature's ethos, the payment might be halved or even waived. Nonhazardous tasks typically require only half the suggested payment, while especially dangerous tasks might require a greater gift. Creatures rarely accept tasks that seem suicidal.;After the creature completes the task, or when the agreed-upon duration of service expires, the creature returns to its home plane after reporting back to you, if appropriate to the task and if possible. If you are unable to agree on a price for the creature's service, the creature immediately returns to its home plane.;A creature enlisted to join your group counts as a member of it, receiving a full share of experience points awarded.", 0, null, 6, null, "Planar Ally", 8, false, 1, null },
|
||||||
|
{ 219, 2, "Bard;Cleric;Druid;Wizard", "V;S;M", false, "With this spell, you attempt to bind a celestial, an elemental, a fey, or a fiend to your service. The creature must be within range for the entire casting of the spell. (Typically, the creature is first summoned into the center of an inverted magic circle in order to keep it trapped while this spell is cast.) At the completion of the casting, the target must make a charisma saving throw. On a failed save, it is bound to serve you for the duration. If the creature was summoned or created by another spell, that spell's duration is extended to match the duration of this spell.;A bound creature must follow your instructions to the best of its ability. You might command the creature to accompany you on an adventure, to guard a location, or to deliver a message. The creature obeys the letter of your instructions, but if the creature is hostile to you, it strives to twist your words to achieve its own objectives. If the creature carries out your instructions completely before the spell ends, it travels to you to report this fact if you are on the same plane of existence. If you are on a different plane of existence, it returns to the place where you bound it and remains there until the spell ends.", 8, "When you cast this spell using a spell slot of a higher level, the duration increases to 10 days with a 6th-level slot, to 30 days with a 7th-level slot, to 180 days with an 8th-level slot, and to a year and a day with a 9th-level spell slot.", 5, "A jewel worth at least 1,000 gp, which the spell consumes.", "Planar Binding", 8, false, 2, null },
|
||||||
|
{ 220, 6, "Cleric;Druid;Sorcerer;Warlock;Wizard", "V;S;M", false, "You and up to eight willing creatures who link hands in a circle are transported to a different plane of existence. You can specify a target destination in general terms, such as the City of Brass on the Elemental Plane of Fire or the palace of Dispater on the second level of the Nine Hells, and you appear in or near that destination. If you are trying to reach the City of Brass, for example, you might arrive in its Street of Steel, before its Gate of Ashes, or looking at the city from across the Sea of Fire, at the DM's discretion.;Alternatively, if you know the sigil sequence of a teleportation circle on another plane of existence, this spell can take you to that circle. If the teleportation circle is too small to hold all the creatures you transported, they appear in the closest unoccupied spaces next to the circle.;You can use this spell to banish an unwilling creature to another plane. Choose a creature within your reach and make a melee spell attack against it. On a hit, the creature must make a charisma saving throw. If the creature fails this save, it is transported to a random location on the plane of existence you specify. A creature so transported must find its own way back to your current plane of existence.", 0, null, 7, "A forked, metal rod worth at least 250 gp, attuned to a particular plane of existence.", "Plane Shift", 1, false, 1, null },
|
||||||
|
{ 221, 6, "Bard;Druid;Ranger", "V;S", false, "This spell channels vitality into plants within a specific area. There are two possible uses for the spell, granting either immediate or long-term benefits.;If you cast this spell using 1 action, choose a point within range. All normal plants in a 100-foot radius centered on that point become thick and overgrown. A creature moving through the area must spend 4 feet of movement for every 1 foot it moves.;You can exclude one or more areas of any size within the spell's area from being affected.;If you cast this spell over 8 hours, you enrich the land. All plants in a half-mile radius centered on a point within range become enriched for 1 year. The plants yield twice the normal amount of food when harvested.", 0, null, 3, null, "Plant Growth", 12, false, 3, "Lore;Land" },
|
||||||
|
{ 237, 6, "Cleric;Druid;Paladin", "V;S", false, "All nonmagical food and drink within a 5-foot radius sphere centered on a point of your choice within range is purified and rendered free of poison and disease.", 0, null, 1, null, "Purify Food and Drink", 6, true, 3, "Lore" },
|
||||||
|
{ 236, 6, "Cleric;Druid;Paladin;Ranger", "V;S", false, "You touch a creature. If it is poisoned, you neutralize the poison. If more than one poison afflicts the target, you neutralize one poison that you know is present, or you neutralize one at random.;For the duration, the target has advantage on saving throws against being poisoned, and it has resistance to poison damage.", 5, null, 2, null, "Protection from Poison", 1, false, 2, "Lore" },
|
||||||
|
{ 235, 6, "Cleric;Paladin;Warlock;Wizard", "V;S;M", true, "Until the spell ends, one willing creature you touch is protected against certain types of creatures: aberrations, celestials, elementals, fey, fiends, and undead.;The protection grants several benefits. Creatures of those types have disadvantage on attack rolls against the target. The target also can't be charmed, frightened, or possessed by them. If the target is already charmed, frightened, or possessed by such a creature, the target has advantage on any new saving throw against the relevant effect.", 4, null, 1, "Holy water or powdered silver and iron, which the spell consumes.", "Protection from Evil and Good", 1, false, 2, "Lore;Devotion" },
|
||||||
|
{ 234, 6, "Cleric;Druid;Ranger;Sorcerer;Wizard", "V;S", true, "For the duration, the willing creature you touch has resistance to one damage type of your choice: acid, cold, fire, lightning, or thunder.", 5, null, 3, null, "Protection from Energy", 1, false, 2, "Lore;Land" },
|
||||||
|
{ 233, 6, "Bard;Wizard", "V;S;M", true, "You create an illusory copy of yourself that lasts for the duration. The copy can appear at any location within range that you have seen before, regardless of intervening obstacles. The illusion looks and sounds like you but is intangible. If the illusion takes any damage, it disappears, and the spell ends.;You can use your action to move this illusion up to twice your speed, and make it gesture, speak, and behave in whatever way you choose. It mimics your mannerisms perfectly.;You can see through its eyes and hear through its ears as if you were in its space. On your turn as a bonus action, you can switch from using its senses to using your own, or back again. While you are using its senses, you are blinded and deafened in regard to your own surroundings.;Physical interaction with the image reveals it to be an illusion, because things can pass through it. A creature that uses its action to examine the image can determine that it is an illusion with a successful Intelligence (Investigation) check against your spell save DC. If a creature discerns the illusion for what it is, the creature can see through the image, and any noise it makes sounds hollow to the creature.", 8, null, 7, "A small replica of you made from materials worth at least 5 gp.", "Project Image", 16, false, 7, null },
|
||||||
|
{ 232, 6, "Bard;Wizard", "V;S;M", false, "You create an illusion of an object, a creature, or some other visible phenomenon within range that activates when a specific condition occurs. The illusion is imperceptible until then. It must be no larger than a 30-foot cube, and you decide when you cast the spell how the illusion behaves and what sounds it makes. This scripted performance can last up to 5 minutes.;When the condition you specify occurs, the illusion springs into existence and performs in the manner you described. Once the illusion finishes performing, it disappears and remains dormant for 10 minutes. After this time, the illusion can be activated again.;The triggering condition can be as general or as detailed as you like, though it must be based on visual or audible conditions that occur within 30 feet of the area. For example, you could create an illusion of yourself to appear and warn off others who attempt to open a trapped door, or you could set the illusion to trigger only when a creature says the correct word or phrase.;Physical interaction with the image reveals it to be an illusion, because things can pass through it. A creature that uses its action to examine the image can determine that it is an illusion with a successful Intelligence (Investigation) check against your spell save DC. If a creature discerns the illusion for what it is, the creature can see through the image, and any noise it makes sounds hollow to the creature.", 1, null, 6, "A bit of fleece and jade dust worth at least 25 gp.", "Programmed Illusion", 11, false, 7, null },
|
||||||
|
{ 231, 6, "Druid", "V;S", false, "A flickering flame appears in your hand. The flame remains there for the duration and harms neither you nor your equipment. The flame sheds bright light in a 10-foot radius and dim light for an additional 10 feet. The spell ends if you dismiss it as an action or if you cast it again.;You can also attack with the flame, although doing so ends the spell. When you cast this spell, or as an action on a later turn, you can hurl the flame at a creature within 30 feet of you. Make a ranged spell attack. On a hit, the target takes 1d8 fire damage.;This spell's damage increases by 1d8 when you reach 5th level (2d8), 11th level (3d8), and 17th level (4d8).", 4, null, 0, null, "Produce Flame", 0, false, 1, "Lore" },
|
||||||
|
{ 201, 0, "Cleric;Bard;Druid;Sorcerer;Wizard", "V;S;M", false, "This spell repairs a single break or tear in an object you touch, such as a broken key, a torn cloak, or a leaking wineskin. As long as the break or tear is no longer than 1 foot in any dimension, you mend it, leaving no trace of the former damage.;This spell can physically repair a magic item or construct, but the spell can't restore magic to such an object.", 0, null, 0, "Two lodestones.", "Mending", 1, false, 3, "Lore" },
|
||||||
|
{ 230, 1, "Wizard", "V;S;M", false, "You make an area within range magically secure. The area is a cube that can be as small as 5 feet to as large as 100 feet on each side. The spell lasts for the duration or until you use an action to dismiss it.;When you cast the spell, you decide what sort of security the spell provides, choosing any or all of the following properties:;• Sound can't pass through the barrier at the edge of the warded area.;• The barrier of the warded area appears dark and foggy, preventing vision (including darkvision) through it.;• Sensors created by divination spells can't appear inside the protected area or pass through the barrier at its perimeter.;• Creatures in the area can't be targeted by divination spells.;• Nothing can teleport into or out of the warded area.;• Planar travel is blocked within the warded area.;Casting this spell on the same spot every day for a year makes this effect permanent.", 8, "When you cast this spell using a spell slot of 5th level or higher, you can increase the size of the cube by 100 feet for each slot level beyond 4th. Thus you could protect a cube that can be up to 200 feet on one side by using a spell slot of 5th level.", 4, "A thin sheet of lead, a piece of opaque glass, a wad of cotton or cloth, and powdered chrysolite.", "Private Sanctum", 11, false, 2, null },
|
||||||
|
{ 228, 6, "Sorcerer;Wizard", "V;S", false, "Eight multicolored rays of light flash from your hand. Each ray is a different color and has a different power and purpose. Each creature in a 60-foot cone must make a dexterity saving throw. For each target, roll a d8 to determine which color ray affects it.;1. Red.; The target takes 10d6 fire damage on a failed save, or half as much damage on a successful one.;2. Orange.; The target takes 10d6 acid damage on a failed save, or half as much damage on a successful one.;3. Yellow.; The target takes 10d6 lightning damage on a failed save, or half as much damage on a successful one.;4. Green.; The target takes 10d6 poison damage on a failed save, or half as much damage on a successful one.;5. Blue.; The target takes 10d6 cold damage on a failed save, or half as much damage on a successful one.;6. Indigo.; On a failed save, the target is restrained. It must then make a constitution saving throw at the end of each of its turns. If it successfully saves three times, the spell ends. If it fails its save three times, it permanently turns to stone and is subjected to the petrified condition. The successes and failures don't need to be consecutive, keep track of both until the target collects three of a kind.;7. Violet.; On a failed save, the target is blinded. It must then make a wisdom saving throw at the start of your next turn. A successful save ends the blindness. If it fails that save, the creature is transported to another plane of existence of the DM's choosing and is no longer blinded. (Typically, a creature that is on a plane that isn't its home plane is banished home, while other creatures are usually cast into the Astral or Ethereal planes.);8. Special.; The target is struck by two rays. Roll twice more, rerolling any 8.", 0, null, 7, null, "Prismatic Spray", 0, false, 0, null },
|
||||||
|
{ 227, 6, "Bard;Sorcerer;Warlock;Wizard", "V;S", false, "This spell is a minor magical trick that novice spellcasters use for practice. You create one of the following magical effects within 'range':;You create an instantaneous, harmless sensory effect, such as a shower of sparks, a puff of wind, faint musical notes, or an odd odor.;You instantaneously light or snuff out a candle, a torch, or a small campfire.;You instantaneously clean or soil an object no larger than 1 cubic foot.;You chill, warm, or flavor up to 1 cubic foot of nonliving material for 1 hour.;You make a color, a small mark, or a symbol appear on an object or a surface for 1 hour.;You create a nonmagical trinket or an illusory image that can fit in your hand and that lasts until the end of your next turn.;If you cast this spell multiple times, you can have up to three of its non-instantaneous effects active at a time, and you can dismiss such an effect as an action.", 5, null, 0, null, "Prestidigitation", 6, false, 3, "Lore" },
|
||||||
|
{ 226, 1, "Cleric", "V", false, "Up to six creatures of your choice that you can see within range each regain hit points equal to 2d8 + your spellcasting ability modifier. This spell has no effect on undead or constructs.", 0, "When you cast this spell using a spell slot of 3rd level or higher, the healing increases by 1d8 for each slot level above 2nd.", 2, null, "Prayer of Healing", 7, false, 0, "Lore" },
|
||||||
|
{ 225, 6, "Bard;Sorcerer;Warlock;Wizard", "V", false, "You speak a word of power that can overwhelm the mind of one creature you can see within range, leaving it dumbfounded. If the target has 150 hit points or fewer, it is stunned. Otherwise, the spell has no effect.;The stunned target must make a constitution saving throw at the end of each of its turns. On a successful save, this stunning effect ends.", 0, null, 8, null, "Power Word Stun", 8, false, 4, null },
|
||||||
|
{ 224, 6, "Bard;Sorcerer;Warlock;Wizard", "V", false, "You utter a word of power that can compel one creature you can see within range to die instantly. If the creature you choose has 100 hit points or fewer, it dies. Otherwise, the spell has no effect.", 0, null, 9, null, "Power Word Kill", 8, false, 4, null },
|
||||||
|
{ 223, 6, "Bard;Druid;Sorcerer;Wizard", "V;S;M", true, "This spell transforms a creature that you can see within range into a new form. An unwilling creature must make a wisdom saving throw to avoid the effect. A shapechanger automatically succeeds on this saving throw.;The transformation lasts for the duration, or until the target drops to 0 hit points or dies. The new form can be any beast whose challenge rating is equal to or less than the target's (or the target's level, if it doesn't have a challenge rating). The target's game statistics, including mental ability scores, are replaced by the statistics of the chosen beast. It retains its alignment and personality.;The target assumes the hit points of its new form. When it reverts to its normal form, the creature returns to the number of hit points it had before it transformed. If it reverts as a result of dropping to 0 hit points, any excess damage carries over to its normal form. As long as the excess damage doesn't reduce the creature's normal form to 0 hit points, it isn't knocked unconscious.;The creature is limited in the actions it can perform by the nature of its new form, and it can't speak, cast spells, or take any other action that requires hands or speech.;The target's gear melds into the new form. The creature can't activate, use, wield, or otherwise benefit from any of its equipment.", 5, null, 4, "A caterpillar cocoon.", "Polymorph", 8, false, 3, null },
|
||||||
|
{ 222, 6, "Sorcerer;Warlock;Wizard", "V;S", false, "You extend your hand toward a creature you can see within range and project a puff of noxious gas from your palm. The creature must succeed on a constitution saving throw or take 1d12 poison damage.;This spell’s damage increases by 1d12 when you reach 5th level (2d12), 11th level (3d12), and 17th level (4d12).", 0, null, -1, null, "Poison Spray", 6, false, 1, null },
|
||||||
|
{ 229, 6, "Wizard", "V;S", false, "A shimmering, multicolored plane of light forms a vertical opaque wall—up to 90 feet long, 30 feet high, and 1 inch thick—centered on a point you can see within range. Alternatively, you can shape the wall into a sphere up to 30 feet in diameter centered on a point you choose within range. The wall remains in place for the duration. If you position the wall so that it passes through a space occupied by a creature, the spell fails, and your action and the spell slot are wasted.;The wall sheds bright light out to a range of 100 feet and dim light for an additional 100 feet. You and creatures you designate at the time you cast the spell can pass through and remain near the wall without harm. If another creature that can see the wall moves to within 20 feet of it or starts its turn there, the creature must succeed on a constitution saving throw or become blinded for 1 minute.;The wall consists of seven layers, each with a different color. When a creature attempts to reach into or pass through the wall, it does so one layer at a time through all the wall's layers. As it passes or reaches through each layer, the creature must make a dexterity saving throw or be affected by that layer's properties as described below.;The wall can be destroyed, also one layer at a time, in order from red to violet, by means specific to each layer. Once a layer is destroyed, it remains so for the duration of the spell. A rod of cancellation destroys a prismatic wall, but an antimagic field has no effect on it.;1. Red.; The creature takes 10d6 fire damage on a failed save, or half as much damage on a successful one. While this layer is in place, nonmagical ranged attacks can't pass through the wall. The layer can be destroyed by dealing at least 25 cold damage to it.;2. Orange.; The creature takes 10d6 acid damage on a failed save, or half as much damage on a successful one. While this layer is in place, magical ranged attacks can't pass through the wall. The layer is destroyed by a strong wind.;3. Yellow.; The creature takes 10d6 lightning damage on a failed save, or half as much damage on a successful one. This layer can be destroyed by dealing at least 60 force damage to it.;4. Green.; The creature takes 10d6 poison damage on a failed save, or half as much damage on a successful one. A passwall spell, or another spell of equal or greater level that can open a portal on a solid surface, destroys this layer.;5. Blue.; The creature takes 10d6 cold damage on a failed save, or half as much damage on a successful one. This layer can be destroyed by dealing at least 25 fire damage to it.;6. Indigo.; On a failed save, the creature is restrained. It must then make a constitution saving throw at the end of each of its turns. If it successfully saves three times, the spell ends. If it fails its save three times, it permanently turns to stone and is subjected to the petrified condition. The successes and failures don't need to be consecutive, keep track of both until the creature collects three of a kind.;While this layer is in place, spells can't be cast through the wall. The layer is destroyed by bright light shed by a daylight spell or a similar spell of equal or higher level.;7. Violet.; On a failed save, the creature is blinded. It must then make a wisdom saving throw at the start of your next turn. A successful save ends the blindness. If it fails that save, the creature is transported to another plane of the DM's choosing and is no longer blinded. (Typically, a creature that is on a plane that isn't its home plane is banished home, while other creatures are usually cast into the Astral or Ethereal planes.) This layer is destroyed by a dispel magic spell or a similar spell of equal or higher level that can end spells and magical effects.", 4, null, 9, null, "Prismatic Wall", 8, false, 2, null },
|
||||||
|
{ 200, 6, "Cleric", "V;S", false, "You step into a stone object or surface large enough to fully contain your body, melding yourself and all the equipment you carry with the stone for the duration. Using your movement, you step into the stone at a point you can touch. Nothing of your presence remains visible or otherwise detectable by nonmagical senses.;While merged with the stone, you can't see what occurs outside it, and any Wisdom (Perception) checks you make to hear sounds outside it are made with disadvantage. You remain aware of the passage of time and can cast spells on yourself while merged in the stone. You can use your movement to leave the stone where you entered it, which ends the spell. You otherwise can't move.;Minor physical damage to the stone doesn't harm you, but its partial destruction or a change in its shape (to the extent that you no longer fit within it) expels you and deals 6d6 bludgeoning damage to you. The stone's complete destruction (or transmutation into a different substance) expels you and deals 50 bludgeoning damage to you. If expelled, you fall prone in an unoccupied space closest to where you first entered.", 7, null, 3, null, "Meld into Stone", 1, true, 3, "Lore;Land" },
|
||||||
|
{ 199, 6, "Wizard", "V;S", true, "You banish a creature that you can see within range into a labyrinthine demiplane. The target remains there for the duration or until it escapes the maze.;The target can use its action to attempt to escape. When it does so, it makes a DC 20 Intelligence check. If it succeeds, it escapes, and the spell ends (a minotaur or goristro demon automatically succeeds).;When the spell ends, the target reappears in the space it left or, if that space is occupied, in the nearest unoccupied space.", 4, null, 8, null, "Maze", 8, false, 1, null }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Spells",
|
||||||
|
columns: new[] { "Id", "CastingTime", "Classes", "Components", "Concentration", "Description", "Duration", "HigherLevel", "Level", "Material", "Name", "Range", "Ritual", "School", "Subclasses" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 198, 6, "Bard;Sorcerer;Warlock;Wizard", "V;M", false, "You suggest a course of activity (limited to a sentence or two) and magically influence up to twelve creatures of your choice that you can see within range and that can hear and understand you. Creatures that can't be charmed are immune to this effect. The suggestion must be worded in such a manner as to make the course of action sound reasonable. Asking the creature to stab itself, throw itself onto a spear, immolate itself, or do some other obviously harmful act automatically negates the effect of the spell.;Each target must make a wisdom saving throw. On a failed save, it pursues the course of action you described to the best of its ability. The suggested course of action can continue for the entire duration. If the suggested activity can be completed in a shorter time, the spell ends when the subject finishes what it was asked to do.;You can also specify conditions that will trigger a special activity during the duration. For example, you might suggest that a group of soldiers give all their money to the first beggar they meet. If the condition isn't met before the spell ends, the activity isn't performed.;If you or any of your companions damage a creature affected by this spell, the spell ends for that creature.", 8, "When you cast this spell using a 7th-level spell slot, the duration is 10 days. When you use an 8th-level spell slot, the duration is 30 days. When you use a 9th-level spell slot, the duration is a year and a day.", 6, "A snake's tongue and either a bit of honeycomb or a drop of sweet oil.", "Mass Suggestion", 8, false, 4, null },
|
||||||
|
{ 177, 1, "Bard;Cleric;Wizard", "V;S;M", false, "Name or describe a person, place or object. The fate brings to mind a brief and summary information about the thing you named. Information can be presented as tales of forgotten history or even secret information that have never been revealed. If the thing you named is not legendary resonance, you get no information. More information you already have about the thing, more precise and detailed the information you will receive.;What you learn is accurate but can be hidden in figurative language. For example, if you have a mysterious magical ax in your hand, the spell can reveal this information: \"Woe to the wicked that affects his hands the ax because the handle decide those of malignant Only a true child of the stone magnet. and loved Moradin could awaken the true power of this ax, and only with the sacred Rudnogg word on the lips.\"", 0, null, 5, "Incense worth 250 inches that fate consumes and four sticks of ivory worth 50 gp each.", "Legend Lore", 0, false, 6, null },
|
||||||
|
{ 176, 6, "Bard;Sorcerer;Wizard", "V", false, "Choose an object that you can see within range. The object can be a door, a box, a chest, a set of manacles, a padlock, or another object that contains a mundane or magical means that prevents access.;A target that is held shut by a mundane lock or that is stuck or barred becomes unlocked, unstuck, or unbarred. If the object has multiple locks, only one of them is unlocked.;If you choose a target that is held shut with arcane lock, that spell is suppressed for 10 minutes, during which time the target can be opened and shut normally.;When you cast the spell, a loud knock, audible from as far away as 300 feet, emanates from the target object.", 0, null, 2, null, "Knock", 8, false, 3, "Lore" },
|
||||||
|
{ 175, 6, "Druid;Ranger;Sorcerer;Wizard", "V;S;M", false, "You touch a creature. The creature's jump distance is tripled until the spell ends.", 3, null, 1, "A grasshopper's hind leg.", "Jump", 1, false, 3, "Lore" },
|
||||||
|
{ 174, 6, "Bard;Wizard", "V", true, "Choose one creature that you can see within range. The target begins a comic dance in place: shuffling, tapping its feet, and capering for the duration. Creatures that can't be charmed are immune to this spell.;A dancing creature must use all its movement to dance without leaving its space and has disadvantage on dexterity saving throws and attack rolls. While the target is affected by this spell, other creatures have advantage on attack rolls against it. As an action, a dancing creature makes a wisdom saving throw to regain control of itself. On a successful save, the spell ends.", 3, null, 6, null, "Irresistible Dance", 7, false, 4, null },
|
||||||
|
{ 173, 6, "Bard;Sorcerer;Warlock;Wizard", "V;S;M", true, "A creature you touch becomes invisible until the spell ends. Anything the target is wearing or carrying is invisible as long as it is on the target's person. The spell ends for a target that attacks or casts a spell.", 5, "When you cast this spell using a spell slot of 3rd level or higher, you can target one additional creature for each slot level above 2nd.", 2, "An eyelash encased in gum arabic.", "Invisibility", 1, false, 7, "Lore;Land" },
|
||||||
|
{ 172, 0, "Wizard", "V;S;M", false, "You touch an object weighing 10 pounds or less whose longest dimension is 6 feet or less. The spell leaves an invisible mark on its surface and invisibly inscribes the name of the item on the sapphire you use as the material component. Each time you cast this spell, you must use a different sapphire.;At any time thereafter, you can use your action to speak the item's name and crush the sapphire. The item instantly appears in your hand regardless of physical or planar distances, and the spell ends.;If another creature is holding or carrying the item, crushing the sapphire doesn't transport the item to you, but instead you learn who the creature possessing the object is and roughly where that creature is located at that moment.;Dispel magic or a similar effect successfully applied to the sapphire ends this spell's effect.", 1, null, 6, "A sapphire worth 1,000 gp.", "Instant Summons", 1, true, 1, null },
|
||||||
|
{ 171, 6, "Cleric;Druid;Sorcerer", "V;S;M", true, "Swarming, biting locusts fill a 20-foot-radius sphere centered on a point you choose within range. The sphere spreads around corners. The sphere remains for the duration, and its area is lightly obscured. The sphere's area is difficult terrain.;When the area appears, each creature in it must make a constitution saving throw. A creature takes 4d10 piercing damage on a failed save, or half as much damage on a successful one. A creature must also make this saving throw when it enters the spell's area for the first time on a turn or ends its turn there.", 4, "When you cast this spell using a spell slot of 6th level or higher, the damage increases by 1d10 for each slot level above 5th.", 5, "A few grains of sugar, some kernels of grain, and a smear of fat.", "Insect Plague", 13, false, 1, "Land" },
|
||||||
|
{ 178, 6, "Bard;Cleric;Druid;Paladin;Ranger", "V;S", false, "You touch a creature and can end either one disease or one condition afflicting it. The condition can be blinded, deafened, paralyzed, or poisoned.", 0, null, 2, null, "Lesser Restoration", 1, false, 2, "Lore;Life;Devotion" },
|
||||||
|
{ 170, 6, "Cleric", "V;S", false, "Make a melee spell attack against a creature you can reach. On a hit, the target takes 3d10 necrotic damage.", 0, "When you cast this spell using a spell slot of 2nd level or higher, the damage increases by 1d10 for each slot level above 1st.", 1, null, "Inflict Wounds", 1, false, 5, "Lore" },
|
||||||
|
{ 168, 0, "Warlock;Wizard", "V;S;M", false, "You create a magical restraint to hold a creature that you can see within range. The target must succeed on a wisdom saving throw or be bound by the spell, if it succeeds, it is immune to this spell if you cast it again. While affected by this spell, the creature doesn't need to breathe, eat, or drink, and it doesn't age. Divination spells can't locate or perceive the target.;When you cast the spell, you choose one of the following forms of imprisonment.;Burial. The target is entombed far beneath the earth in a sphere of magical force that is just large enough to contain the target. Nothing can pass through the sphere, nor can any creature teleport or use planar travel to get into or out of it.;The special component for this version of the spell is a small mithral orb.;Chaining. Heavy chains, firmly rooted in the ground, hold the target in place. The target is restrained until the spell ends, and it can't move or be moved by any means until then.;The special component for this version of the spell is a fine chain of precious metal.;Hedged Prison. The spell transports the target into a tiny demiplane that is warded against teleportation and planar travel. The demiplane can be a labyrinth, a cage, a tower, or any similar confined structure or area of your choice.;The special component for this version of the spell is a miniature representation of the prison made from jade.;Minimus Containment. The target shrinks to a height of 1 inch and is imprisoned inside a gemstone or similar object. Light can pass through the gemstone normally (allowing the target to see out and other creatures to see in), but nothing else can pass through, even by means of teleportation or planar travel. The gemstone can't be cut or broken while the spell remains in effect.;The special component for this version of the spell is a large, transparent gemstone, such as a corundum, diamond, or ruby.;Slumber. The target falls asleep and can't be awoken.;The special component for this version of the spell consists of rare soporific herbs.;Ending the Spell. During the casting of the spell, in any of its versions, you can specify a condition that will cause the spell to end and release the target. The condition can be as specific or as elaborate as you choose, but the DM must agree that the condition is reasonable and has a likelihood of coming to pass. The conditions can be based on a creature's name, identity, or deity but otherwise must be based on observable actions or qualities and not based on intangibles such as level, class, or hit points.;A dispel magic spell can end the spell only if it is cast as a 9th-level spell, targeting either the prison or the special component used to create it.;You can use a particular special component to create only one prison at a time. If you cast the spell again using the same component, the target of the first casting is immediately freed from its binding.", 1, null, 9, "A vellum depiction or a carved statuette in the likeness of the target, and a special component that varies according to the version of the spell you choose, worth at least 500gp per Hit Die of the target.", "Imprisonment", 7, false, 2, null },
|
||||||
|
{ 167, 0, "Bard;Warlock;Wizard", "S;M", false, "You write on parchment, paper, or some other suitable writing material and imbue it with a potent illusion that lasts for the duration.;To you and any creatures you designate when you cast the spell, the writing appears normal, written in your hand, and conveys whatever meaning you intended when you wrote the text. To all others, the writing appears as if it were written in an unknown or magical script that is unintelligible. Alternatively, you can cause the writing to appear to be an entirely different message, written in a different hand and language, though the language must be one you know.;Should the spell be dispelled, the original script and the illusion both disappear.;A creature with truesight can read the hidden message.", 10, null, 1, "A lead-based ink worth at least 10gp, which this spell consumes.", "Illusory Script", 1, true, 7, "Lore" },
|
||||||
|
{ 166, 0, "Bard;Wizard", "V;S;M", false, "You choose one object that you must touch throughout the casting of the spell. If it is a magic item or some other magic-imbued object, you learn its properties and how to use them, whether it requires attunement to use, and how many charges it has, if any. You learn whether any spells are affecting the item and what they are. If the item was created by a spell, you learn which spell created it.;If you instead touch a creature throughout the casting, you learn what spells, if any, are currently affecting it.", 0, null, 1, "A pearl worth at least 100gp and an owl feather.", "Identify", 1, true, 6, "Lore" },
|
||||||
|
{ 165, 6, "Druid;Sorcerer;Wizard", "V;S;M", false, "A hail of rock-hard ice pounds to the ground in a 20-foot-radius, 40-foot-high cylinder centered on a point within range. Each creature in the cylinder must make a dexterity saving throw. A creature takes 2d8 bludgeoning damage and 4d6 cold damage on a failed save, or half as much damage on a successful one.;Hailstones turn the storm's area of effect into difficult terrain until the end of your next turn.", 0, "When you cast this spell using a spell slot of 5th level or higher, the bludgeoning damage increases by 1d8 for each slot level above 4th.", 4, "A pinch of dust and a few drops of water.", "Ice Storm", 13, false, 0, "Land" },
|
||||||
|
{ 164, 6, "Bard;Sorcerer;Warlock;Wizard", "S;M", true, "You create a twisting pattern of colors that weaves through the air inside a 30-foot cube within range. The pattern appears for a moment and vanishes. Each creature in the area who sees the pattern must make a wisdom saving throw. On a failed save, the creature becomes charmed for the duration. While charmed by this spell, the creature is incapacitated and has a speed of 0.;The spell ends for an affected creature if it takes any damage or if someone else uses an action to shake the creature out of its stupor.", 3, null, 3, "A glowing stick of incense or a crystal vial filled with phosphorescent material.", "Hypnotic Pattern", 11, false, 7, "Lore" },
|
||||||
|
{ 163, 8, "Paladin;Ranger", "V", true, "You choose a creature you can see within range and mystically mark it as your quarry. Until the spell ends, you deal an extra 1d6 damage to the target whenever you hit it with a weapon attack, and you have advantage on any Wisdom (Perception) or Wisdom (Survival) check you make to find it. If the target drops to 0 hit points before this spell ends, you can use a bonus action on a subsequent turn of yours to mark a new creature.", 5, null, 1, null, "Hunter's Mark", 9, false, 6, null },
|
||||||
|
{ 162, 6, "Cleric", "V;S;M", true, "Divine light washes out from you and coalesces in a soft radiance in a 30-foot radius around you. Creatures of your choice in that radius when you cast this spell shed dim light in a 5-foot radius and have advantage on all saving throws, and other creatures have disadvantage on attack rolls against them until the spell ends. In addition, when a fiend or an undead hits an affected creature with a melee attack, the aura flashes with brilliant light. The attacker must succeed on a constitution saving throw or be blinded until the spell ends.", 3, null, 8, "A tiny reliquary worth at least 1,000gp containing a sacred relic, such as a scrap of cloth from a saint's robe or a piece of parchment from a religious text.", "Holy Aura", 0, false, 2, null },
|
||||||
|
{ 169, 6, "Sorcerer;Wizard", "V;S", true, "A swirling cloud of smoke shot through with white-hot embers appears in a 20-foot-radius sphere centered on a point within range. The cloud spreads around corners and is heavily obscured. It lasts for the duration or until a wind of moderate or greater speed (at least 10 miles per hour) disperses it.;When the cloud appears, each creature in it must make a dexterity saving throw. A creature takes 10d8 fire damage on a failed save, or half as much damage on a successful one. A creature must also make this saving throw when it enters the spell's area for the first time on a turn or ends its turn there.;The cloud moves 10 feet directly away from you in a direction that you choose at the start of each of your turns.", 3, null, 8, null, "Incendiary Cloud", 12, false, 1, null },
|
||||||
|
{ 238, 2, "Bard;Cleric;Paladin", "V;S;M", false, "You return a dead creature you touch to life, provided that it has been dead no longer than 10 days. If the creature's soul is both willing and at liberty to rejoin the body, the creature returns to life with 1 hit point.;This spell also neutralizes any poisons and cures nonmagical diseases that affected the creature at the time it died. This spell doesn't, however, remove magical diseases, curses, or similar effects, if these aren't first removed prior to casting the spell, they take effect when the creature returns to life. The spell can't return an undead creature to life.;This spell closes all mortal wounds, but it doesn't restore missing body parts. If the creature is lacking body parts or organs integral for its survival—its head, for instance—the spell automatically fails.;Coming back from the dead is an ordeal. The target takes a -4 penalty to all attack rolls, saving throws, and ability checks. Every time the target finishes a long rest, the penalty is reduced by 1 until it disappears.", 0, null, 5, "A diamond worth at least 500gp, which the spell consumes.", "Raise Dead", 1, false, 5, "Life" },
|
||||||
|
{ 179, 6, "Sorcerer;Wizard", "V;S;M", true, "One creature or object of your choice that you can see within range rises vertically, up to 20 feet, and remains suspended there for the duration. The spell can levitate a target that weighs up to 500 pounds. An unwilling creature that succeeds on a constitution saving throw is unaffected.;The target can move only by pushing or pulling against a fixed object or surface within reach (such as a wall or a ceiling), which allows it to move as if it were climbing. You can change the target's altitude by up to 20 feet in either direction on your turn. If you are the target, you can move up or down as part of your move. Otherwise, you can use your action to move the target, which must remain within the spell's range.;When the spell ends, the target floats gently to the ground if it is still aloft.", 4, null, 2, "Either a small leather loop or a piece of golden wire bent into a cup shape with a long shank on one end.", "Levitate", 8, false, 3, "Lore" },
|
||||||
|
{ 181, 6, "Sorcerer;Wizard", "V;S;M", false, "A stroke of lightning forming a line 100 feet long and 5 feet wide blasts out from you in a direction you choose. Each creature in the line must make a dexterity saving throw. A creature takes 8d6 lightning damage on a failed save, or half as much damage on a successful one.;The lightning ignites flammable objects in the area that aren't being worn or carried.", 0, "When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d6 for each slot level above 3rd.", 3, "A bit of fur and a rod of amber, crystal, or glass.", "Lightning Bolt", 0, false, 0, "Lore;Land" },
|
||||||
|
{ 197, 8, "Cleric", "V", false, "As you call out words of restoration, up to six creatures of your choice that you can see within range regain hit points equal to 1d4 + your spellcasting ability modifier. This spell has no effect on undead or constructs.", 0, "When you cast this spell using a spell slot of 4th level or higher, the healing increases by 1d4 for each slot level above 3rd.", 3, null, "Mass Healing Word", 8, false, 0, "Lore" },
|
||||||
|
{ 196, 6, "Cleric", "V;S", false, "A flood of healing energy flows from you into injured creatures around you. You restore up to 700 hit points, divided as you choose among any number of creatures that you can see within range. Creatures healed by this spell are also cured of all diseases and any effect making them blinded or deafened. This spell has no effect on undead or constructs.", 0, null, 9, null, "Mass Heal", 8, false, 1, null },
|
||||||
|
{ 195, 6, "Bard;Cleric;Druid", "V;S", false, "A wave of healing energy washes out from a point of your choice within range. Choose up to six creatures in a 30-foot-radius sphere centered on that point. Each target regains hit points equal to 3d8 + your spellcasting ability modifier. This spell has no effect on undead or constructs.", 0, "When you cast this spell using a spell slot of 6th level or higher, the healing increases by 1d8 for each slot level above 5th.", 5, null, "Mass Cure Wounds", 8, false, 1, "Life" },
|
||||||
|
{ 194, 6, "Bard;Sorcerer;Warlock;Wizard", "V;S;M", true, "You create the image of an object, a creature, or some other visible phenomenon that is no larger than a 20-foot cube. The image appears at a spot that you can see within range and lasts for the duration. It seems completely real, including sounds, smells, and temperature appropriate to the thing depicted. You can't create sufficient heat or cold to cause damage, a sound loud enough to deal thunder damage or deafen a creature, or a smell that might sicken a creature (like a troglodyte's stench).;As long as you are within range of the illusion, you can use your action to cause the image to move to any other spot within range. As the image changes location, you can alter its appearance so that its movements appear natural for the image. For example, if you create an image of a creature and move it, you can alter the image so that it appears to be walking. Similarly, you can cause the illusion to make different sounds at different times, even making it carry on a conversation, for example.;Physical interaction with the image reveals it to be an illusion, because things can pass through it. A creature that uses its action to examine the image can determine that it is an illusion with a successful Intelligence (Investigation) check against your spell save DC. If a creature discerns the illusion for what it is, the creature can see through the image, and its other sensory qualities become faint to the creature.", 4, "When you cast this spell using a spell slot of 6th level or higher, the spell lasts until dispelled, without requiring your concentration.", 3, "A bit of fleece.", "Major Image", 11, false, 7, "Lore" },
|
||||||
|
{ 193, 0, "Bard;Wizard", "V;S;M", false, "You conjure an extradimensional dwelling in range that lasts for the duration. You choose where its one entrance is located. The entrance shimmers faintly and is 5 feet wide and 10 feet tall. You and any creature you designate when you cast the spell can enter the extradimensional dwelling as long as the portal remains open. You can open or close the portal if you are within 30 feet of it. While closed, the portal is invisible.;Beyond the portal is a magnificent foyer with numerous chambers beyond. The atmosphere is clean, fresh, and warm.;You can create any floor plan you like, but the space can't exceed 50 cubes, each cube being 10 feet on each side. The place is furnished and decorated as you choose. It contains sufficient food to serve a nine course banquet for up to 100 people. A staff of 100 near-transparent servants attends all who enter. You decide the visual appearance of these servants and their attire. They are completely obedient to your orders. Each servant can perform any task a normal human servant could perform, but they can't attack or take any action that would directly harm another creature. Thus the servants can fetch things, clean, mend, fold clothes, light fires, serve food, pour wine, and so on. The servants can go anywhere in the mansion but can't leave it. Furnishings and other objects created by this spell dissipate into smoke if removed from the mansion. When the spell ends, any creatures inside the extradimensional space are expelled into the open spaces nearest to the entrance.", 8, null, 7, "A miniature portal carved from ivory, a small piece of polished marble, and a tiny silver spoon, each item worth at least 5 gp.", "Magnificent Mansion", 13, false, 1, null },
|
||||||
|
{ 192, 8, "Paladin;Wizard", "V;S", true, "You touch a nonmagical weapon. Until the spell ends, that weapon becomes a magic weapon with a +1 bonus to attack rolls and damage rolls.", 5, "When you cast this spell using a spell slot of 4th level or higher, the bonus increases to +2. When you use a spell slot of 6th level or higher, the bonus increases to +3.", 2, null, "Magic Weapon", 1, false, 3, "Lore" },
|
||||||
|
{ 191, 0, "Bard;Wizard", "V;S;M", false, "You plant a message to an object in the range of the spell. The message is verbalized when the trigger conditions are met. Choose an object that you see, and that is not worn or carried by another creature. Then say the message, which should not exceed 25 words but listening can take up to 10 minutes. Finally, establish the circumstances that trigger the spell to deliver your message.;When these conditions are satisfied, a magical mouth appears on the object and it articulates the message imitating your voice, the same tone used during implantation of the message. If the selected object has a mouth or something that approaches such as the mouth of a statue, the magic mouth come alive at this point, giving the illusion that the words come from the mouth of the object.;When you cast this spell, you may decide that the spell ends when the message is delivered or it can persist and repeat the message whenever circumstances occur.;The triggering circumstance can be as general or as detailed as you like, though it must be based on visual or audible conditions that occur within 30 feet of the object. For example, you could instruct the mouth to speak when any creature moves within 30 feet of the object or when a silver bell rings within 30 feet of it.", 1, null, 2, "A honeycomb and jade dust of at least 10 inches, the spell consumes.", "Magic Mouth", 7, true, 7, "Lore" },
|
||||||
|
{ 180, 6, "Bard;Cleric;Sorcerer;Wizard", "V;M", false, "You touch one object that is no larger than 10 feet in any dimension. Until the spell ends, the object sheds bright light in a 20-foot radius and dim light for an additional 20 feet. The light can be colored as you like. Completely covering the object with something opaque blocks the light. The spell ends if you cast it again or dismiss it as an action.;If you target an object held or worn by a hostile creature, that creature must succeed on a dexterity saving throw to avoid the spell.", 5, null, 0, "A firefly or phosphorescent moss.", "Light", 1, false, 0, "Lore" },
|
||||||
|
{ 190, 6, "Sorcerer;Wizard", "V;S", false, "You create three glowing darts of magical force. Each dart hits a creature of your choice that you can see within range. A dart deals 1d4 + 1 force damage to its target. The darts all strike simultaneously, and you can direct them to hit one creature or several.", 0, "When you cast this spell using a spell slot of 2nd level or higher, the spell creates one more dart for each slot level above 1st.", 1, null, "Magic Missile", 11, false, 0, "Lore" },
|
||||||
|
{ 188, 0, "Cleric;Paladin;Warlock;Wizard", "V;S;M", false, "Choose one or more of the following types of creatures: celestials, elementals, fey, fiends, or undead. The circle affects a creature of the chosen type in the following ways:;- The creature can't willingly enter the cylinder by nonmagical means. If the creature tries to use teleportation or interplanar travel to do so, it must first succeed on a charisma saving throw.;- The creature has disadvantage on attack rolls against targets within the cylinder.;- Targets within the cylinder can't be charmed, frightened, or possessed by the creature.;When you cast this spell, you can elect to cause its magic to operate in the reverse direction, preventing a creature of the specified type from leaving the cylinder and protecting targets outside it.", 5, "When you cast this spell using a spell slot of 4th level or higher, the duration increases by 1 hour for each slot level above 3rd.", 3, "Holy water or powdered silver and iron worth at least 100 gp, which the spell consumes.", "Magic Circle", 6, false, 2, "Lore" },
|
||||||
|
{ 187, 6, "Bard;Sorcerer;Warlock;Wizard", "V;S", false, "A spectral, floating hand appears at a point you choose within range. The hand lasts for the duration or until you dismiss it as an action. The hand vanishes if it is ever more than 30 feet away from you or if you cast this spell again.;You can use your action to control the hand. You can use the hand to manipulate an object, open an unlocked door or container, stow or retrieve an item from an open container, or pour the contents out of a vial. You can move the hand up to 30 feet each time you use it.;The hand can't attack, activate magic items, or carry more than 10 pounds.", 3, null, 0, null, "Mage Hand", 7, false, 1, "Lore" },
|
||||||
|
{ 186, 6, "Sorcerer;Wizard", "V;S;M", false, "You touch a willing creature who isn't wearing armor, and a protective magical force surrounds it until the spell ends. The target's base AC becomes 13 + its Dexterity modifier. The spell ends if the target dons armor or if you dismiss the spell as an action.", 7, null, 1, "A piece of cured leather.", "Mage Armor", 1, false, 2, "Lore" },
|
||||||
|
{ 185, 6, "Bard;Druid;Ranger;Wizard", "V;S;M", false, "You touch a creature. The target's speed increases by 10 feet until the spell ends.", 5, "When you cast this spell using a spell slot of 2nd level or higher, you can target one additional creature for each spell slot above 1st.", 1, "A pinch of dirt.", "Longstrider", 1, false, 3, "Lore" },
|
||||||
|
{ 184, 6, "Bard;Cleric;Druid;Paladin;Ranger;Wizard", "V;S;M", true, "Describe or name an object that is familiar to you. You sense the direction to the object's location, as long as that object is within 1,000 feet of you. If the object is in motion, you know the direction of its movement.;The spell can locate a specific object known to you, as long as you have seen it up close—within 30 feet—at least once. Alternatively, the spell can locate the nearest object of a particular kind, such as a certain kind of apparel, jewelry, furniture, tool, or weapon.;This spell can't locate an object if any thickness of lead, even a thin sheet, blocks a direct path between you and the object.", 4, null, 2, "A forked twig.", "Locate Object", 0, false, 6, "Lore" },
|
||||||
|
{ 183, 6, "Bard;Cleric;Druid;Paladin;Ranger;Wizard", "V;S;M", true, "Describe or name a creature that is familiar to you. You sense the direction to the creature's location, as long as that creature is within 1,000 feet of you. If the creature is moving, you know the direction of its movement.;The spell can locate a specific creature known to you, or the nearest creature of a specific kind (such as a human or a unicorn), so long as you have seen such a creature up close—within 30 feet—at least once. If the creature you described or named is in a different form, such as being under the effects of a polymorph spell, this spell doesn't locate the creature.;This spell can't locate a creature if running water at least 10 feet wide blocks a direct path between you and the creature.", 5, null, 4, "A bit of fur from a bloodhound.", "Locate Creature", 0, false, 6, "Land" },
|
||||||
|
{ 182, 6, "Bard;Druid;Ranger", "V;S;M", false, "Describe or name a specific kind of beast or plant. Concentrating on the voice of nature in your surroundings, you learn the direction and distance to the closest creature or plant of that kind within 5 miles, if any are present.", 0, null, 2, "A bit of fur from a bloodhound.", "Locate Animals or Plants", 0, true, 6, "Lore" },
|
||||||
|
{ 189, 0, "Wizard", "V;S;M", false, "Your body falls into a catatonic state as your soul leaves it and enters the container you used for the spell's material component. While your soul inhabits the container, you are aware of your surroundings as if you were in the container's space. You can't move or use reactions. The only action you can take is to project your soul up to 100 feet out of the container, either returning to your living body (and ending the spell) or attempting to possess a humanoids body.;You can attempt to possess any humanoid within 100 feet of you that you can see (creatures warded by a protection from evil and good or magic circle spell can't be possessed). The target must make a charisma saving throw. On a failure, your soul moves into the target's body, and the target's soul becomes trapped in the container. On a success, the target resists your efforts to possess it, and you can't attempt to possess it again for 24 hours.;Once you possess a creature's body, you control it. Your game statistics are replaced by the statistics of the creature, though you retain your alignment and your Intelligence, Wisdom, and Charisma scores. You retain the benefit of your own class features. If the target has any class levels, you can't use any of its class features.;Meanwhile, the possessed creature's soul can perceive from the container using its own senses, but it can't move or take actions at all.;While possessing a body, you can use your action to return from the host body to the container if it is within 100 feet of you, returning the host creature's soul to its body. If the host body dies while you're in it, the creature dies, and you must make a charisma saving throw against your own spellcasting DC. On a success, you return to the container if it is within 100 feet of you. Otherwise, you die.;If the container is destroyed or the spell ends, your soul immediately returns to your body. If your body is more than 100 feet away from you or if your body is dead when you attempt to return to it, you die. If another creature's soul is in the container when it is destroyed, the creature's soul returns to its body if the body is alive and within 100 feet. Otherwise, that creature dies.;When the spell ends, the container is destroyed.", 1, null, 6, "A gem, crystal, reliquary, or some other ornamental container worth at least 500 gp.", "Magic Jar", 0, false, 5, null },
|
||||||
|
{ 239, 6, "Warlock;Wizard", "V;S", true, "A black beam of enervating energy springs from your finger toward a creature within range. Make a ranged spell attack against the target. On a hit, the target deals only half damage with weapon attacks that use Strength until the spell ends.;At the end of each of the target's turns, it can make a constitution saving throw against the spell. On a success, the spell ends.", 3, null, 2, null, "Ray of Enfeeblement", 8, false, 5, "Lore" },
|
||||||
|
{ 240, 6, "Sorcerer;Wizard", "V;S", false, "A frigid beam of blue-white light streaks toward a creature within range. Make a ranged spell attack against the target. On a hit, it takes 1d8 cold damage, and its speed is reduced by 10 feet until the start of your next turn.;The spell's damage increases by 1d8 when you reach 5th level (2d8), 11th level (3d8), and 17th level (4d8).", 0, null, 0, null, "Ray of Frost", 8, false, 0, "Lore" },
|
||||||
|
{ 241, 0, "Bard;Cleric;Druid", "V;S;M", false, "You touch a creature and stimulate its natural healing ability. The target regains 4d8 + 15 hit points. For the duration of the spell, the target regains 1 hit point at the start of each of its turns (10 hit points each minute).;The target's severed body members (fingers, legs, tails, and so on), if any, are restored after 2 minutes. If you have the severed part and hold it to the stump, the spell instantaneously causes the limb to knit to the stump.", 5, null, 7, "A prayer wheel and holy water.", "Regenerate", 1, false, 3, null },
|
||||||
|
{ 297, 6, "Druid;Ranger", "V;S", true, "You gain the ability to enter a tree and move from inside it to inside another tree of the same kind within 500 feet. Both trees must be living and at least the same size as you. You must use 5 feet of movement to enter a tree. You instantly know the location of all other trees of the same kind within 500 feet and, as part of the move used to enter the tree, can either pass into one of those trees or step out of the tree you're in. You appear in a spot of your choice within 5 feet of the destination tree, using another 5 feet of movement. If you have no movement left, you appear within 5 feet of the tree you entered.;You can use this transportation ability once per round for the duration. You must end each turn outside a tree.", 3, null, 5, null, "Tree Stride", 0, false, 1, "Land" }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Spells",
|
||||||
|
columns: new[] { "Id", "CastingTime", "Classes", "Components", "Concentration", "Description", "Duration", "HigherLevel", "Level", "Material", "Name", "Range", "Ritual", "School", "Subclasses" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 296, 6, "Druid", "V;S", false, "This spell creates a magical link between a Large or larger inanimate plant within range and another plant, at any distance, on the same plane of existence. You must have seen or touched the destination plant at least once before. For the duration, any creature can step into the target plant and exit from the destination plant by using 5 feet of movement.", 12, null, 6, null, "Transport via Plants", 6, false, 1, null },
|
||||||
|
{ 295, 6, "Bard;Cleric;Sorcerer;Warlock;Wizard", "V;M", false, "This spell grants the creature you touch the ability to understand any spoken language it hears. Moreover, when the target speaks, any creature that knows at least one language and can hear the target understands what it says.", 5, null, 3, "A small clay model of a ziggurat.", "Tongues", 1, false, 6, "Lore" },
|
||||||
|
{ 294, 0, "Bard;Wizard", "V;S;M", false, "A 10-foot-radius immobile dome of force springs into existence around and above you and remains stationary for the duration. The spell ends if you leave its area.;Nine creatures of Medium size or smaller can fit inside the dome with you. The spell fails if its area includes a larger creature or more than nine creatures. Creatures and objects within the dome when you cast this spell can move through it freely. All other creatures and objects are barred from passing through it. Spells and other magical effects can't extend through the dome or be cast through it. The atmosphere inside the space is comfortable and dry, regardless of the weather outside.;Until the spell ends, you can command the interior to become dimly lit or dark. The dome is opaque from the outside, of any color you choose, but it is transparent from the inside.", 7, null, 3, "A small crystal bead.", "Tiny Hut", 0, true, 0, "Lore" },
|
||||||
|
{ 293, 6, "Sorcerer;Wizard", "V", false, "You briefly stop the flow of time for everyone but yourself. No time passes for other creatures, while you take 1d4 + 1 turns in a row, during which you can use actions and move as normal.;This spell ends if one of the actions you use during this period, or any effects that you create during this period, affects a creature other than you or an object being worn or carried by someone other than you. In addition, the spell ends if you move to a place more than 1,000 feet from the location where you cast it.", 0, null, 9, null, "Time Stop", 0, false, 3, null },
|
||||||
|
{ 292, 6, "Bard;Druid;Sorcerer;Wizard", "V;S", false, "A wave of thunderous force sweeps out from you. Each creature in a 15-foot cube originating from you must make a constitution saving throw. On a failed save, a creature takes 2d8 thunder damage and is pushed 10 feet away from you. On a successful save, the creature takes half as much damage and isn't pushed.;In addition, unsecured objects that are completely within the area of effect are automatically pushed 10 feet away from you by the spell's effect, and the spell emits a thunderous boom audible out to 300 feet.", 0, "When you cast this spell using a spell slot of 2nd level or higher, the damage increases by 1d8 for each slot level above 1st.", 1, null, "Thunderwave", 0, false, 0, "Lore" },
|
||||||
|
{ 291, 6, "Cleric", "V", false, "You manifest a minor wonder, a sign of supernatural power, within range. You create one of the following magical effects within range.;- Your voice booms up to three times as loud as normal for 1 minute.;- You cause flames to flicker, brighten, dim, or change color for 1 minute.;- You cause harmless tremors in the ground for 1 minute.;- You create an instantaneous sound that originates from a point of your choice within range, such as a rumble of thunder, the cry of a raven, or ominous whispers.;- You instantaneously cause an unlocked door or window to fly open or slam shut.;- You alter the appearance of your eyes for 1 minute.;If you cast this spell multiple times, you can have up to three of its 1-minute effects active at a time, and you can dismiss such an effect as an action.", 3, null, 0, null, "Thaumaturgy", 7, false, 3, "Lore" },
|
||||||
|
{ 298, 6, "Bard;Warlock;Wizard", "V;S;M", true, "Choose one creature or nonmagical object that you can see within range. You transform the creature into a different creature, the creature into an object, or the object into a creature (the object must be neither worn nor carried by another creature). The transformation lasts for the duration, or until the target drops to 0 hit points or dies. If you concentrate on this spell for the full duration, the transformation becomes permanent.;Shapechangers aren't affected by this spell. An unwilling creature can make a wisdom saving throw, and if it succeeds, it isn't affected by this spell.;Creature into Creature.; If you turn a creature into another kind of creature, the new form can be any kind you choose whose challenge rating is equal to or less than the target's (or its level, if the target doesn't have a challenge rating). The target's game statistics, including mental ability scores, are replaced by the statistics of the new form. It retains its alignment and personality.;The target assumes the hit points of its new form, and when it reverts to its normal form, the creature returns to the number of hit points it had before it transformed. If it reverts as a result of dropping to 0 hit points, any excess damage carries over to its normal form. As long as the excess damage doesn't reduce the creature's normal form to 0 hit points, it isn't knocked unconscious.;The creature is limited in the actions it can perform by the nature of its new form, and it can't speak, cast spells, or take any other action that requires hands or speech unless its new form is capable of such actions.;The target's gear melds into the new form. The creature can't activate, use, wield, or otherwise benefit from any of its equipment.;Object into Creature.; You can turn an object into any kind of creature, as long as the creature's size is no larger than the object's size and the creature's challenge rating is 9 or lower. The creature is friendly to you and your companions. It acts on each of your turns. You decide what action it takes and how it moves. The DM has the creature's statistics and resolves all of its actions and movement.;If the spell becomes permanent, you no longer control the creature. It might remain friendly to you, depending on how you have treated it.;Creature into Object.; If you turn a creature into an object, it transforms along with whatever it is wearing and carrying into that form. The creature's statistics become those of the object, and the creature has no memory of time spent in this form, after the spell ends and it returns to its normal form.", 5, null, 9, "A drop of mercury, a dollop of gum arabic, and a wisp of smoke.", "True Polymorph", 7, false, 3, null },
|
||||||
|
{ 290, 0, "Bard;Sorcerer;Wizard", "V;M", false, "As you cast the spell, you draw a 10-foot-diameter circle on the ground inscribed with sigils that link your location to a permanent teleportation circle of your choice whose sigil sequence you know and that is on the same plane of existence as you. A shimmering portal opens within the circle you drew and remains open until the end of your next turn. Any creature that enters the portal instantly appears within 5 feet of the destination circle or in the nearest unoccupied space if that space is occupied.;Many major temples, guilds, and other important places have permanent teleportation circles inscribed somewhere within their confines. Each such circle includes a unique sigil sequence—a string of magical runes arranged in a particular pattern. When you first gain the ability to cast this spell, you learn the sigil sequences for two destinations on the Material Plane, determined by the DM. You can learn additional sigil sequences during your adventures. You can commit a new sigil sequence to memory after studying it for 1 minute.;You can create a permanent teleportation circle by casting this spell in the same location every day for one year. You need not use the circle to teleport when you cast the spell in this way.", 12, null, 5, "Rare chalks and inks infused with precious gems with 50 gp, which the spell consumes.", "Teleportation Circle", 6, false, 1, null },
|
||||||
|
{ 288, 6, "Wizard", "V;S;M", false, "You forge a telepathic link among up to eight willing creatures of your choice within range, psychically linking each creature to all the others for the duration. Creatures with Intelligence scores of 2 or less aren't affected by this spell.;Until the spell ends, the targets can communicate telepathically through the bond whether or not they have a common language. The communication is possible over any distance, though it can't extend to other planes of existence.", 5, null, 5, "Pieces of eggshell from two different kinds of creatures", "Telepathic Bond", 7, true, 6, null },
|
||||||
|
{ 287, 6, "Sorcerer;Wizard", "V;S", true, "You gain the ability to move or manipulate creatures or objects by thought. When you cast the spell, and as your action each round for the duration, you can exert your will on one creature or object that you can see within range, causing the appropriate effect below. You can affect the same target round after round, or choose a new one at any time. If you switch targets, the prior target is no longer affected by the spell.;Creature.; You can try to move a Huge or smaller creature. Make an ability check with your spellcasting ability contested by the creature's Strength check. If you win the contest, you move the creature up to 30 feet in any direction, including upward but not beyond the range of this spell. Until the end of your next turn, the creature is restrained in your telekinetic grip. A creature lifted upward is suspended in mid-air.;On subsequent rounds, you can use your action to attempt to maintain your telekinetic grip on the creature by repeating the contest.;Object.; You can try to move an object that weighs up to 1,000 pounds. If the object isn't being worn or carried, you automatically move it up to 30 feet in any direction, but not beyond the range of this spell.;If the object is worn or carried by a creature, you must make an ability check with your spellcasting ability contested by that creature's Strength check. If you succeed, you pull the object away from that creature and can move it up to 30 feet in any direction but not beyond the range of this spell.;You can exert fine control on objects with your telekinetic grip, such as manipulating a simple tool, opening a door or a container, stowing or retrieving an item from an open container, or pouring the contents from a vial.", 4, null, 5, null, "Telekinesis", 8, false, 3, null },
|
||||||
|
{ 286, 0, "Bard;Cleric;Wizard", "V;S;M", false, "When you cast this spell, you inscribe a harmful glyph either on a surface (such as a section of floor, a wall, or a table) or within an object that can be closed to conceal the glyph (such as a book, a scroll, or a treasure chest). If you choose a surface, the glyph can cover an area of the surface no larger than 10 feet in diameter. If you choose an object, that object must remain in its place, if the object is moved more than 10 feet from where you cast this spell, the glyph is broken, and the spell ends without being triggered.;The glyph is nearly invisible, requiring an Intelligence (Investigation) check against your spell save DC to find it.;You decide what triggers the glyph when you cast the spell. For glyphs inscribed on a surface, the most typical triggers include touching or stepping on the glyph, removing another object covering it, approaching within a certain distance of it, or manipulating the object that holds it. For glyphs inscribed within an object, the most common triggers are opening the object, approaching within a certain distance of it, or seeing or reading the glyph.;You can further refine the trigger so the spell is activated only under certain circumstances or according to a creature's physical characteristics (such as height or weight), or physical kind (for example, the ward could be set to affect hags or shapechangers). You can also specify creatures that don't trigger the glyph, such as those who say a certain password.;When you inscribe the glyph, choose one of the options below for its effect. Once triggered, the glyph glows, filling a 60-foot-radius sphere with dim light for 10 minutes, after which time the spell ends. Each creature in the sphere when the glyph activates is targeted by its effect, as is a creature that enters the sphere for the first time on a turn or ends its turn there.;Death.; Each target must make a constitution saving throw, taking 10d 10 necrotic damage on a failed save, or half as much damage on a successful save.;Discord.; Each target must make a constitution saving throw. On a failed save, a target bickers and argues with other creatures for 1 minute. During this time, it is incapable of meaningful communication and has disadvantage on attack rolls and ability checks.;Fear.; Each target must make a wisdom saving throw and becomes frightened for 1 minute on a failed save. While frightened, the target drops whatever it is holding and must move at least 30 feet away from the glyph on each of its turns, if able.;Hopelessness.; Each target must make a charisma saving throw. On a failed save, the target is overwhelmed with despair for 1 minute. During this time, it can't attack or target any creature with harmful abilities, spells, or other magical effects.;Insanity.; Each target must make an intelligence saving throw. On a failed save, the target is driven insane for 1 minute. An insane creature can't take actions, can't understand what other creatures say, can't read, and speaks only in gibberish. The DM controls its movement, which is erratic.;Pain.; Each target must make a constitution saving throw and becomes incapacitated with excruciating pain for 1 minute on a failed save.;Sleep.; Each target must make a wisdom saving throw and falls unconscious for 10 minutes on a failed save. A creature awakens if it takes damage or if someone uses an action to shake or slap it awake.;Stunning.; Each target must make a wisdom saving throw and becomes stunned for 1 minute on a failed save.", 1, null, 7, "Mercury, phosphorus, and powdered diamond and opal with a total value of at least 1,000 gp, which the spell consumes.", "Symbol", 1, false, 2, null },
|
||||||
|
{ 285, 6, "Druid;Sorcerer;Wizard", "V;S;M", false, "Brilliant sunlight flashes in a 60-foot radius centered on a point you choose within range. Each creature in that light must make a constitution saving throw. On a failed save, a creature takes 12d6 radiant damage and is blinded for 1 minute. On a successful save, it takes half as much damage and isn't blinded by this spell. Undead and oozes have disadvantage on this saving throw.;A creature blinded by this spell makes another constitution saving throw at the end of each of its turns. On a successful save, it is no longer blinded.;This spell dispels any darkness in its area that was created by a spell.", 0, null, 8, "Fire and a piece of sunstone.", "Sunburst", 12, false, 0, null },
|
||||||
|
{ 284, 6, "Druid;Sorcerer;Wizard", "V;S;M", true, "A beam of brilliant light flashes out from your hand in a 5-foot-wide, 60-foot-long line. Each creature in the line must make a constitution saving throw. On a failed save, a creature takes 6d8 radiant damage and is blinded until your next turn. On a successful save, it takes half as much damage and isn't blinded by this spell. Undead and oozes have disadvantage on this saving throw.;You can create a new line of radiance as your action on any turn until the spell ends.;For the duration, a mote of brilliant radiance shines in your hand. It sheds bright light in a 30-foot radius and dim light for an additional 30 feet. This light is sunlight.", 3, null, 6, "A magnifying glass.", "Sunbeam", 0, false, 0, null },
|
||||||
|
{ 283, 6, "Bard;Sorcerer;Warlock;Wizard", "V;M", true, "You suggest a course of activity (limited to a sentence or two) and magically influence a creature you can see within range that can hear and understand you. Creatures that can't be charmed are immune to this effect. The suggestion must be worded in such a manner as to make the course of action sound reasonable. Asking the creature to stab itself, throw itself onto a spear, immolate itself, or do some other obviously harmful act ends the spell.;The target must make a wisdom saving throw. On a failed save, it pursues the course of action you described to the best of its ability. The suggested course of action can continue for the entire duration. If the suggested activity can be completed in a shorter time, the spell ends when the subject finishes what it was asked to do.;You can also specify conditions that will trigger a special activity during the duration. For example, you might suggest that a knight give her warhorse to the first beggar she meets. If the condition isn't met before the spell expires, the activity isn't performed.;If you or any of your companions damage the target, the spell ends.", 7, null, 2, "A snake's tongue and either a bit of honeycomb or a drop of sweet oil.", "Suggestion", 7, false, 4, "Lore" },
|
||||||
|
{ 282, 6, "Druid", "V;S", true, "A churning storm cloud forms, centered on a point you can see and spreading to a radius of 360 feet. Lightning flashes in the area, thunder booms, and strong winds roar. Each creature under the cloud (no more than 5,000 feet beneath the cloud) when it appears must make a constitution saving throw. On a failed save, a creature takes 2d6 thunder damage and becomes deafened for 5 minutes.;Each round you maintain concentration on this spell, the storm produces additional effects on your turn.;Round 2.; Acidic rain falls from the cloud. Each creature and object under the cloud takes 1d6 acid damage.;Round 3.; You call six bolts of lightning from the cloud to strike six creatures or objects of your choice beneath the cloud. A given creature or object can't be struck by more than one bolt. A struck creature must make a dexterity saving throw. The creature takes 10d6 lightning damage on a failed save, or half as much damage on a successful one.;Round 4.; Hailstones rain down from the cloud. Each creature under the cloud takes 2d6 bludgeoning damage.;Round 5-10.; Gusts and freezing rain assail the area under the cloud. The area becomes difficult terrain and is heavily obscured. Each creature there takes 1d6 cold damage. Ranged weapon attacks in the area are impossible. The wind and rain count as a severe distraction for the purposes of maintaining concentration on spells. Finally, gusts of strong wind (ranging from 20 to 50 miles per hour) automatically disperse fog, mists, and similar phenomena in the area, whether mundane or magical.", 3, null, 9, null, "Storm of Vengeance", 3, false, 1, null },
|
||||||
|
{ 289, 6, "Bard;Sorcerer;Wizard", "V", false, "This spell instantly transports you and up to eight willing creatures of your choice that you can see within range, or a single object that you can see within range, to a destination you select. If you target an object, it must be able to fit entirely inside a 10-foot cube, and it can't be held or carried by an unwilling creature.;The destination you choose must be known to you, and it must be on the same plane of existence as you. Your familiarity with the destination determines whether you arrive there successfully. The DM rolls d100 and consults the table.", 0, null, 7, null, "Teleport", 6, false, 1, null },
|
||||||
|
{ 281, 6, "Druid;Ranger;Sorcerer;Wizard", "V;S;M", true, "This spell turns the flesh of a willing creature you touch as hard as stone. Until the spell ends, the target has resistance to nonmagical bludgeoning, piercing, and slashing damage.", 5, null, 4, "Diamond dust worth 100 gp, which the spell consumes.", "Stoneskin", 1, false, 2, "Land" },
|
||||||
|
{ 299, 2, "Cleric;Druid", "V;S;M", false, "You touch a creature that has been dead for no longer than 200 years and that died for any reason except old age. If the creature's soul is free and willing, the creature is restored to life with all its hit points.;This spell closes all wounds, neutralizes any poison, cures all diseases, and lifts any curses affecting the creature when it died. The spell replaces damaged or missing organs and limbs.;The spell can even provide a new body if the original no longer exists, in which case you must speak the creature's name. The creature then appears in an unoccupied space you choose within 10 feet of you.", 0, null, 9, "A sprinkle of holy water and diamonds worth at least 25,000gp, which the spell consumes.", "True Resurrection", 1, false, 5, null },
|
||||||
|
{ 301, 6, "Bard;Sorcerer;Warlock;Wizard", "S", true, "You extend your hand and point a finger at a target in range. Your magic grants you a brief insight into the target's defenses. On your next turn, you gain advantage on your first attack roll against the target, provided that this spell hasn't ended.", 12, null, 0, null, "True Strike", 7, false, 6, "Lore" },
|
||||||
|
{ 317, 6, "Sorcerer;Wizard", "V", false, "Wish is the mightiest spell a mortal creature can cast. By simply speaking aloud, you can alter the very foundations of reality in accord with your desires.;The basic use of this spell is to duplicate any other spell of 8th level or lower. You don’t need to meet any requirements in that spell, including costly components. The spell simply takes effect.;Alternatively, you can create one of the following effects of your choice:;- You create one object of up to 25,000 gp in value that isn’t a magic item. The object can be no more than 300 feet in any dimension, and it appears in an unoccupied space you can see on the ground.;- You allow up to twenty creatures that you can see to regain all hit points, and you end all effects on them described in the greater restoration spell.;- You grant up to ten creatures that you can see resistance to a damage type you choose.;- You grant up to ten creatures you can see immunity to a single spell or other magical effect for 8 hours. For instance, you could make yourself and all your companions immune to a lich’s life drain attack.;- You undo a single recent event by forcing a reroll of any roll made within the last round (including your last turn). Reality reshapes itself to accommodate the new result. For example, a wish spell could undo an opponent’s successful save, a foe’s critical hit, or a friend’s failed save. You can force the reroll to be made with advantage or disadvantage, and you can choose whether to use the reroll or the original roll.;You might be able to achieve something beyond the scope of the above examples. State your wish to the GM as precisely as possible. The GM has great latitude in ruling what occurs in such an instance, the greater the wish, the greater the likelihood that something goes wrong. This spell might simply fail, the effect you desire might only be partly achieved, or you might suffer some unforeseen consequence as a result of how you worded the wish. For example, wishing that a villain were dead might propel you forward in time to a period when that villain is no longer alive, effectively removing you from the game. Similarly, wishing for a legendary magic item or artifact might instantly transport you to the presence of the item’s current owner.;The stress of casting this spell to produce any effect other than duplicating another spell weakens you. After enduring that stress, each time you cast a spell until you finish a long rest, you take 1d10 necrotic damage per level of that spell. This damage can’t be reduced or prevented in any way. In addition, your Strength drops to 3, if it isn’t 3 or lower already, for 2d4 days. For each of those days that you spend resting and doing nothing more than light activity, your remaining recovery time decreases by 2 days. Finally, there is a 33 percent chance that you are unable to cast wish ever again if you suffer this stress.", 0, null, 9, null, "Wish", 0, false, 1, null },
|
||||||
|
{ 316, 6, "Druid;Ranger", "V;S;M", true, "A wall of strong wind rises from the ground at a point you choose within range. You can make the wall up to 50 feet long, 15 feet high, and 1 foot thick. You can shape the wall in any way you choose so long as it makes one continuous path along the ground. The wall lasts for the duration.;When the wall appears, each creature within its area must make a strength saving throw. A creature takes 3d8 bludgeoning damage on a failed save, or half as much damage on a successful one.;The strong wind keeps fog, smoke, and other gases at bay. Small or smaller flying creatures or objects can't pass through the wall. Loose, lightweight materials brought into the wall fly upward. Arrows, bolts, and other ordinary projectiles launched at targets behind the wall are deflected upward and automatically miss. (Boulders hurled by giants or siege engines, and similar projectiles, are unaffected.) Creatures in gaseous form can't pass through it.", 3, null, 3, "A tiny fan and a feather of exotic origin.", "Wind Wall", 11, false, 0, "Lore" },
|
||||||
|
{ 315, 0, "Druid", "V;S;M", false, "You and up to ten willing creatures you can see within range assume a gaseous form for the duration, appearing as wisps of cloud. While in this cloud form, a creature has a flying speed of 300 feet and has resistance to damage from nonmagical weapons. The only actions a creature can take in this form are the Dash action or to revert to its normal form. Reverting takes 1 minute, during which time a creature is incapacitated and can't move. Until the spell ends, a creature can revert to cloud form, which also requires the 1-minute transformation.;If a creature is in cloud form and flying when the effect ends, the creature descends 60 feet per round for 1 minute until it lands, which it does safely. If it can't land after 1 minute, the creature falls the remaining distance.", 7, null, 6, "Fire and holy water.", "Wind Walk", 7, false, 3, null },
|
||||||
|
{ 314, 6, "Wizard", "V;S", true, "Drawing on the deepest fears of a group of creatures, you create illusory creatures in their minds, visible only to them. Each creature in a 30-foot-radius sphere centered on a point of your choice within range must make a wisdom saving throw. On a failed save, a creature becomes frightened for the duration. The illusion calls on the creature's deepest fears, manifesting its worst nightmares as an implacable threat. At the start of each of the frightened creature's turns, it must succeed on a wisdom saving throw or take 4 d10 psychic damage. On a successful save, the spell ends for that creature.", 3, null, 9, null, "Weird", 11, false, 7, null },
|
||||||
|
{ 313, 6, "Sorcerer;Wizard", "V;S;M", true, "You conjure a mass of thick, sticky webbing at a point of your choice within range. The webs fill a 20-foot cube from that point for the duration. The webs are difficult terrain and lightly obscure their area.;If the webs aren't anchored between two solid masses (such as walls or trees) or layered across a floor, wall, or ceiling, the conjured web collapses on itself, and the spell ends at the start of your next turn. Webs layered over a flat surface have a depth of 5 feet.;Each creature that starts its turn in the webs or that enters them during its turn must make a dexterity saving throw. On a failed save, the creature is restrained as long as it remains in the webs or until it breaks free.;A creature restrained by the webs can use its action to make a Strength check against your spell save DC. If it succeeds, it is no longer restrained.;The webs are flammable. Any 5-foot cube of webs exposed to fire burns away in 1 round, dealing 2d4 fire damage to any creature that starts its turn in the fire.", 5, null, 2, "A bit of spiderweb.", "Web", 8, false, 1, "Lore;Land" },
|
||||||
|
{ 312, 6, "Cleric;Druid;Ranger;Sorcerer", "V;S;M", false, "This spell grants the ability to move across any liquid surface—such as water, acid, mud, snow, quicksand, or lava—as if it were harmless solid ground (creatures crossing molten lava can still take damage from the heat). Up to ten willing creatures you can see within range gain this ability for the duration.;If you target a creature submerged in a liquid, the spell carries the target to the surface of the liquid at a rate of 60 feet per round.", 5, null, 3, null, "Water Walk", 7, true, 3, "Lore;Land" },
|
||||||
|
{ 311, 6, "Druid;Ranger;Sorcerer;Wizard", "V;S;M", false, "This spell gives a maximum of ten willing creatures within range and you can see, the ability to breathe underwater until the end of its term. Affected creatures also retain their normal breathing pattern.", 8, null, 3, "A short piece of reed or straw.", "Water Breathing", 7, true, 3, "Lore;Land" },
|
||||||
|
{ 300, 6, "Bard;Cleric;Sorcerer;Warlock;Wizard", "V;S;M", false, "This spell gives the willing creature you touch the ability to see things as they actually are. For the duration, the creature has truesight, notices secret doors hidden by magic, and can see into the Ethereal Plane, all out to a range of 120 feet.", 5, null, 6, "An ointment for the eyes that costs 25gp, is made from mushroom powder, saffron, and fat, and is consumed by the spell.", "True Seeing", 1, false, 6, null },
|
||||||
|
{ 310, 6, "Cleric", "V;S;M", false, "This spell wards a willing creature you touch and creates a mystic connection between you and the target until the spell ends. While the target is within 60 feet of you, it gains a +1 bonus to AC and saving throws, and it has resistance to all damage. Also, each time it takes damage, you take the same amount of damage.;The spell ends if you drop to 0 hit points or if you and the target become separated by more than 60 feet.;It also ends if the spell is cast again on either of the connected creatures. You can also dismiss the spell as an action.", 5, null, 2, "A pair of platinum rings worth at least 50gp each, which you and the target must wear for the duration.", "Warding Bond", 1, false, 2, "Lore" },
|
||||||
|
{ 308, 6, "Druid;Sorcerer;Wizard", "V;S;M", true, "A nonmagical wall of solid stone springs into existence at a point you choose within range. The wall is 6 inches thick and is composed of ten 10-foot-by-10-foot panels. Each panel must be contiguous with at least one other panel. Alternatively, you can create 10-foot-by-20-foot panels that are only 3 inches thick.;If the wall cuts through a creature's space when it appears, the creature is pushed to one side of the wall (your choice). If a creature would be surrounded on all sides by the wall (or the wall and another solid surface), that creature can make a dexterity saving throw. On a success, it can use its reaction to move up to its speed so that it is no longer enclosed by the wall.;The wall can have any shape you desire, though it can't occupy the same space as a creature or object. The wall doesn't need to be vertical or rest on any firm foundation. It must, however, merge with and be solidly supported by existing stone. Thus, you can use this spell to bridge a chasm or create a ramp.;If you create a span greater than 20 feet in length, you must halve the size of each panel to create supports. You can crudely shape the wall to create crenellations, battlements, and so on.;The wall is an object made of stone that can be damaged and thus breached. Each panel has AC 15 and 30 hit points per inch of thickness. Reducing a panel to 0 hit points destroys it and might cause connected panels to collapse at the DM's discretion.;If you maintain your concentration on this spell for its whole duration, the wall becomes permanent and can't be dispelled. Otherwise, the wall disappears when the spell ends.", 4, null, 5, "A small block of granite.", "Wall of Stone", 11, false, 0, "Land" },
|
||||||
|
{ 307, 6, "Wizard", "V;S;M", true, "You create a wall of ice on a solid surface within range. You can form it into a hemispherical dome or a sphere with a radius of up to 10 feet, or you can shape a flat surface made up of ten 10-foot-square panels. Each panel must be contiguous with another panel. In any form, the wall is 1 foot thick and lasts for the duration.;If the wall cuts through a creature's space when it appears, the creature within its area is pushed to one side of the wall and must make a dexterity saving throw. On a failed save, the creature takes 10d6 cold damage, or half as much damage on a successful save.;The wall is an object that can be damaged and thus breached. It has AC 12 and 30 hit points per 10-foot section, and it is vulnerable to fire damage. Reducing a 10-foot section of wall to 0 hit points destroys it and leaves behind a sheet of frigid air in the space the wall occupied. A creature moving through the sheet of frigid air for the first time on a turn must make a constitution saving throw. That creature takes 5d6 cold damage on a failed save, or half as much damage on a successful one.", 4, "When you cast this spell using a spell slot of 7th level or higher, the damage the wall deals when it appears increases by 2d6, and the damage from passing through the sheet of frigid air increases by 1d6, for each slot level above 6th.", 6, "A small piece of quartz.", "Wall of Ice", 11, false, 0, null },
|
||||||
|
{ 306, 6, "Wizard", "V;S;M", true, "An invisible wall of force springs into existence at a point you choose within range. The wall appears in any orientation you choose, as a horizontal or vertical barrier or at an angle. It can be free floating or resting on a solid surface. You can form it into a hemispherical dome or a sphere with a radius of up to 10 feet, or you can shape a flat surface made up of ten 10-foot-by-10-foot panels. Each panel must be contiguous with another panel. In any form, the wall is 1/4 inch thick. It lasts for the duration. If the wall cuts through a creature's space when it appears, the creature is pushed to one side of the wall (your choice which side).;Nothing can physically pass through the wall. It is immune to all damage and can't be dispelled by dispel magic. A disintegrate spell destroys the wall instantly, however. The wall also extends into the Ethereal Plane, blocking ethereal travel through the wall.", 4, null, 5, "A pinch of powder made by crushing a clear gemstone.", "Wall of Force", 11, false, 0, null },
|
||||||
|
{ 305, 6, "Druid;Sorcerer;Wizard", "V;S;M", true, "You create a wall of fire on a solid surface within range. You can make the wall up to 60 feet long, 20 feet high, and 1 foot thick, or a ringed wall up to 20 feet in diameter, 20 feet high, and 1 foot thick. The wall is opaque and lasts for the duration.;When the wall appears, each creature within its area must make a Dexterity saving throw. On a failed save, a creature takes 5d8 fire damage, or half as much damage on a successful save.;One side of the wall, selected by you when you cast this spell, deals 5d8 fire damage to each creature that ends its turn within 10 feet o f that side or inside the wall. A creature takes the same damage when it enters the wall for the first time on a turn or ends its turn there. The other side o f the wall deals no damage.;The other side of the wall deals no damage.", 3, "When you cast this spell using a level spell slot 5 or more, the damage of the spell increases by 1d8 for each level of higher spell slot to 4.", 4, "A small piece of phosphorus.", "Wall of Fire", 11, false, 0, "Fiend" },
|
||||||
|
{ 304, 6, "Bard", "V", false, "You unleash a string of insults laced with subtle enchantments at a creature you can see within range. If the target can hear you (though it need not understand you), it must succeed on a wisdom saving throw or take 1d4 psychic damage and have disadvantage on the next attack roll it makes before the end of its next turn.;This spell’s damage increases by 1d4 when you reach 5th level (2d4), 11th level (3d4), and 17th level (4d4).", 0, null, -1, null, "Vicious Mockery", 8, false, 4, null },
|
||||||
|
{ 303, 6, "Warlock;Wizard", "V;S", true, "The touch of your shadow-wreathed hand can siphon life force from others to heal your wounds. Make a melee spell attack against a creature within your reach. On a hit, the target takes 3d6 necrotic damage, and you regain hit points equal to half the amount of necrotic damage dealt. Until the spell ends, you can make the attack again on each of your turns as an action.", 3, "When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d6 for each slot level above 3rd.", 3, null, "Vampiric Touch", 0, false, 5, "Lore" },
|
||||||
|
{ 302, 6, "Bard;Warlock;Wizard", "V;S;M", false, "This spell creates an invisible, mindless, shapeless force that performs simple tasks at your command until the spell ends. The servant springs into existence in an unoccupied space on the ground within range. It has AC 10, 1 hit point, and a Strength of 2, and it can't attack. If it drops to 0 hit points, the spell ends.;Once on each of your turns as a bonus action, you can mentally command the servant to move up to 15 feet and interact with an object. The servant can perform simple tasks that a human servant could do, such as fetching things, cleaning, mending, folding clothes, lighting fires, serving food, and pouring wind. Once you give the command, the servant performs the task to the best of its ability until it completes the task, then waits for your next command.;If you command the servant to perform a task that would move it more than 60 feet away from you, the spell ends.", 5, null, 1, "A piece of string and a bit of wood.", "Unseen Servant", 8, true, 1, "Lore" },
|
||||||
|
{ 309, 6, "Druid", "V;S;M", true, "You create a wall of tough, pliable, tangled brush bristling with needle-sharp thorns. The wall appears within range on a solid surface and lasts for the duration. You choose to make the wall up to 60 feet long, 10 feet high, and 5 feet thick or a circle that has a 20-foot diameter and is up to 20 feet high and 5 feet thick. The wall blocks line of sight.;When the wall appears, each creature within its area must make a dexterity saving throw. On a failed save, a creature takes 7d8 piercing damage, or half as much damage on a successful save.;A creature can move through the wall, albeit slowly and painfully. For every 1 foot a creature moves through the wall, it must spend 4 feet of movement. Furthermore, the first time a creature enters the wall on a turn or ends its turn there, the creature must make a dexterity saving throw. It takes 7d8 slashing damage on a failed save, or half as much damage on a successful one.", 4, "When you cast this spell using a spell slot of 7th level or higher, both types of damage increase by 1d8 for each slot level above 6th.", 6, "A handful of thorns.", "Wall of Thorns", 11, false, 1, null },
|
||||||
|
{ 161, 6, "Bard;Cleric;Druid;Sorcerer;Warlock;Wizard", "V;S;M", true, "Choose a humanoid that you can see within range. The target must succeed on a wisdom saving throw or be paralyzed for the duration. At the end of each of its turns, the target can make another wisdom saving throw. On a success, the spell ends on the target.", 3, "When you cast this spell using a spell slot of 3rd level or higher, you can target one additional humanoid for each slot level above 2nd. The humanoids must be within 30 feet of each other when you target them.", 2, "A small, straight piece of iron.", "Hold Person", 8, false, 4, "Lore;Land" },
|
||||||
|
{ 280, 6, "Cleric;Druid;Wizard", "V;S;M", false, "You touch a stone object of Medium size or smaller or a section of stone no more than 5 feet in any dimension and form it into any shape that suits your purpose. So, for example, you could shape a large rock into a weapon, idol, or coffer, or make a small passage through a wall, as long as the wall is less than 5 feet thick. You could also shape a stone door or its frame to seal the door shut. The object you create can have up to two hinges and a latch, but finer mechanical detail isn't possible.", 0, null, 4, "Soft clay, to be crudely worked into the desired shape for the stone object.", "Stone Shape", 1, false, 3, "Land" },
|
||||||
|
{ 278, 8, "Cleric", "V;S", false, "You create a floating, spectral weapon within range that lasts for the duration or until you cast this spell again. When you cast the spell, you can make a melee spell attack against a creature within 5 feet of the weapon. On a hit, the target takes force damage equal to 1d8 + your spellcasting ability modifier.;As a bonus action on your turn, you can move the weapon up to 20 feet and repeat the attack against a creature within 5 feet of it.;The weapon can take whatever form you choose. Clerics of deities who are associated with a particular weapon (as St. Cuthbert is known for his mace and Thor for his hammer) make this spell's effect resemble that weapon.", 3, "When you cast this spell using a spell slot of 3rd level or higher, the damage increases by 1d8 for every two slot levels above the 2nd.", 2, null, "Spiritual Weapon", 8, false, 0, "Lore;Life" },
|
||||||
|
{ 257, 6, "Bard;Cleric;Wizard", "V;S;M", false, "You send a short message of twenty-five words or less to a creature with which you are familiar. The creature hears the message in its mind, recognizes you as the sender if it knows you, and can answer in a like manner immediately. The spell enables creatures with Intelligence scores of at least 1 to understand the meaning of your message.;You can send the message across any distance and even to other planes of existence, but if the target is on a different plane than you, there is a 5 percent chance that the message doesn't arrive.", 12, null, 3, "A short piece of fine copper wire.", "Sending", 4, false, 0, "Lore" },
|
||||||
|
{ 256, 6, "Bard;Sorcerer;Wizard", "V;S", false, "This spell allows you to change the appearance of any number of creatures that you can see within range. You give each target you choose a new, illusory appearance. An unwilling target can make a charisma saving throw, and if it succeeds, it is unaffected by this spell.;The spell disguises physical appearance as well as clothing, armor, weapons, and equipment. You can make each creature seem 1 foot shorter or taller and appear thin, fat, or in between. You can't change a target's body type, so you must choose a form that has the same basic arrangement of limbs. Otherwise, the extent of the illusion is up to you. The spell lasts for the duration, unless you use your action to dismiss it sooner.;The changes wrought by this spell fail to hold up to physical inspection. For example, if you use this spell to add a hat to a creature's outfit, objects pass through the hat, and anyone who touches it would feel nothing or would feel the creature's head and hair. If you use this spell to appear thinner than you are, the hand of someone who reaches out to touch you would bump into you while it was seemingly still in midair.;A creature can use its action to inspect a target and make an Intelligence (Investigation) check against your spell save DC. If it succeeds, it becomes aware that the target is disguised.", 7, null, 5, null, "Seeming", 7, false, 7, null },
|
||||||
|
{ 255, 6, "Bard;Sorcerer;Wizard", "V;S;M", false, "For the duration of the spell, you see invisible creatures and objects as if they were visible, and you can see through Ethereal. The ethereal objects and creatures appear ghostly translucent.", 5, null, 2, "A dash of talc and a small amount of silver powder.", "See Invisibility", 0, false, 6, "Lore" }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Spells",
|
||||||
|
columns: new[] { "Id", "CastingTime", "Classes", "Components", "Concentration", "Description", "Duration", "HigherLevel", "Level", "Material", "Name", "Range", "Ritual", "School", "Subclasses" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 254, 6, "Wizard", "V;S;M", false, "You hide a chest, and all its contents, on the Ethereal Plane. You must touch the chest and the miniature replica that serves as a material component for the spell. The chest can contain up to 12 cubic feet of nonliving material (3 feet by 2 feet by 2 feet).;While the chest remains on the Ethereal Plane, you can use an action and touch the replica to recall the chest. It appears in an unoccupied space on the ground within 5 feet of you. You can send the chest back to the Ethereal Plane by using an action and touching both the chest and the replica.;After 60 days, there is a cumulative 5 percent chance per day that the spell's effect ends. This effect ends if you cast this spell again, if the smaller replica chest is destroyed, or if you choose to end the spell as an action. If the spell ends and the larger chest is on the Ethereal Plane, it is irretrievably lost.", 0, null, 4, "An exquisite chest, 3 feet by 2 feet by 2 feet, constructed from rare materials worth at least 5,000 gp, and a Tiny replica made from the same materials worth at least 50 gp.", "Secret Chest", 1, false, 1, null },
|
||||||
|
{ 253, 1, "Bard;Cleric;Druid;Warlock;Wizard", "V;S;M", true, "You can see and hear a particular creature you choose that is on the same plane of existence as you. The target must make a wisdom saving throw, which is modified by how well you know the target and the sort of physical connection you have to it. If a target knows you're casting this spell, it can fail the saving throw voluntarily if it wants to be observed.;Knowledge &, Save Modifier;;Secondhand (you have heard of the target) +5;Firsthand (you have met the target) +0;Familiar (you know the target well) -5;Connection &, Save Modifier;;Likeness or picture -2;Possession or garment -4;Body part, lock of hair, bit of nail, or the like -10;On a successful save, the target isn't affected, and you can't use this spell against it again for 24 hours.;On a failed save, the spell creates an invisible sensor within 10 feet of the target. You can see and hear through the sensor as if you were there. The sensor moves with the target, remaining within 10 feet of it for the duration. A creature that can see invisible objects sees the sensor as a luminous orb about the size of your fist.;Instead of targeting a creature, you can choose a location you have seen before as the target of this spell. When you do, the sensor appears at that location and doesn't move.", 4, null, 5, "A focus worth at least 1,000 gp, such as a crystal ball, a silver mirror, or a font filled with holy water.", "Scrying", 0, false, 6, "Land" },
|
||||||
|
{ 252, 6, "Sorcerer;Wizard", "V;S", false, "You generate three rays of fire and will throw to targets in the range of the spell. You can project them on one or more targets.;Perform a remote attack spell for each department. If it hits, the target takes 2d6 fire damage.", 0, "When you cast this spell using a 3 or higher level spell slot, you generate an additional radius for each level of higher spell slot 2.", 2, null, "Scorching Ray", 11, false, 0, "Lore;Fiend" },
|
||||||
|
{ 251, 8, "Cleric", "V;S;M", false, "You ward a creature within range against attack. Until the spell ends, any creature who targets the warded creature with an attack or a harmful spell must first make a wisdom saving throw. On a failed save, the creature must choose a new target or lose the attack or spell. This spell doesn't protect the warded creature from area effects, such as the explosion of a fireball.;If the warded creature makes an attack or casts a spell that affects an enemy creature, this spell ends.", 3, null, 1, "A small silver mirror.", "Sanctuary", 7, false, 2, "Lore;Devotion" },
|
||||||
|
{ 258, 6, "Wizard", "V;S;M", false, "By means of this spell, a willing creature or an object can be hidden away, safe from detection for the duration. When you cast the spell and touch the target, it becomes invisible and can't be targeted by divination spells or perceived through scrying sensors created by divination spells.;If the target is a creature, it falls into a state of suspended animation. Time ceases to flow for it, and it doesn't grow older.;You can set a condition for the spell to end early. The condition can be anything you choose, but it must occur or be visible within 1 mile of the target. Examples include “after 1,000 yearsâ€<C3A2> or “when the tarrasque awakens.â€<C3A2> This spell also ends if the target takes any damage.", 1, null, 7, "A powder composed of diamond, emerald, ruby, and sapphire dust worth at least 5,000 gp, which the spell consumes.", "Sequester", 1, false, 3, null },
|
||||||
|
{ 250, 6, "Cleric", "V;S", false, "Flame-like radiance descends on a creature that you can see within range. The target must succeed on a dexterity saving throw or take 1d8 radiant damage. The target gains no benefit from cover for this saving throw.;The spell's damage increases by 1d8 when you reach 5th level (2d8), 11th level (3d8), and 17th level (4d8).", 0, null, 0, null, "Sacred Flame", 8, false, 0, "Lore" },
|
||||||
|
{ 248, 6, "Cleric;Paladin", "V;S;M", false, "You touch a creature that has died within the last minute. That creature returns to life with 1 hit point. This spell can't return to life a creature that has died of old age, nor can it restore any missing body parts.", 0, null, 3, "Diamonds worth 300gp, which the spell consumes.", "Revivify", 1, false, 1, "Lore;Life" },
|
||||||
|
{ 247, 6, "Druid;Sorcerer;Wizard", "V;S;M", true, "This spell reverses gravity in a 50-foot-radius, 100-foot high cylinder centered on a point within range. All creatures and objects that aren't somehow anchored to the ground in the area fall upward and reach the top of the area when you cast this spell. A creature can make a dexterity saving throw to grab onto a fixed object it can reach, thus avoiding the fall.;If some solid object (such as a ceiling) is encountered in this fall, falling objects and creatures strike it just as they would during a normal downward fall. If an object or creature reaches the top of the area without striking anything, it remains there, oscillating slightly, for the duration.;At the end of the duration, affected objects and creatures fall back down.", 3, null, 7, "A lodestone and iron filings.", "Reverse Gravity", 10, false, 3, null },
|
||||||
|
{ 246, 2, "Bard;Cleric", "V;S;M", false, "You touch a dead creature that has been dead for no more than a century, that didn't die of old age, and that isn't undead. If its soul is free and willing, the target returns to life with all its hit points.;This spell neutralizes any poisons and cures normal diseases afflicting the creature when it died. It doesn't, however, remove magical diseases, curses, and the like, if such effects aren't removed prior to casting the spell, they afflict the target on its return to life.;This spell closes all mortal wounds and restores any missing body parts.;Coming back from the dead is an ordeal. The target takes a -4 penalty to all attack rolls, saving throws, and ability checks. Every time the target finishes a long rest, the penalty is reduced by 1 until it disappears.;Casting this spell to restore life to a creature that has been dead for one year or longer taxes you greatly. Until you finish a long rest, you can't cast spells again, and you have disadvantage on all attack rolls, ability checks, and saving throws.", 0, null, 7, "A diamond worth at least 1,000gp, which the spell consumes.", "Resurrection", 1, false, 5, null },
|
||||||
|
{ 245, 6, "Cleric;Druid", "V;S;M", true, "You touch one willing creature. Once before the spell ends, the target can roll a d4 and add the number rolled to one saving throw of its choice. It can roll the die before or after making the saving throw. The spell then ends.", 3, null, 0, "A miniature cloak.", "Resistance", 1, false, 2, "Lore" },
|
||||||
|
{ 244, 6, "Wizard", "V;S;M", true, "A sphere of shimmering force encloses a creature or object of Large size or smaller within range. An unwilling creature must make a dexterity saving throw. On a failed save, the creature is enclosed for the duration.;Nothing—not physical objects, energy, or other spell effects—can pass through the barrier, in or out, though a creature in the sphere can breathe there. The sphere is immune to all damage, and a creature or object inside can't be damaged by attacks or effects originating from outside, nor can a creature inside the sphere damage anything outside it.;The sphere is weightless and just large enough to contain the creature or object inside. An enclosed creature can use its action to push against the sphere's walls and thus roll the sphere at up to half the creature's speed. Similarly, the globe can be picked up and moved by other creatures.;A disintegrate spell targeting the globe destroys it without harming anything inside it.", 3, null, 4, "A hemispherical piece of clear crystal and a matching hemispherical piece of gum arabic.", "Resilient Sphere", 7, false, 0, null },
|
||||||
|
{ 243, 6, "Cleric;Paladin;Warlock;Wizard", "V;S", false, "At your touch, all curses affecting one creature or object end. If the object is a cursed magic item, its curse remains, but the spell breaks its owner's attunement to the object so it can be removed or discarded.", 0, null, 3, null, "Remove Curse", 1, false, 2, "Lore" },
|
||||||
|
{ 242, 2, "Druid", "V;S;M", false, "You touch a dead humanoid or a piece of a dead humanoid. Provided that the creature has been dead no longer than 10 days, the spell forms a new adult body for it and then calls the soul to enter that body. If the target's soul isn't free or willing to do so, the spell fails.;The magic fashions a new body for the creature to inhabit, which likely causes the creature's race to change. The DM rolls a d 100 and consults the following table to determine what form the creature takes when restored to life, or the DM chooses a form.;01-04; Dragonborn;05-13; Dwarf, hill;14-21; Dwarf, mountain;22-25; Elf, dark;26-34; Elf, high;35-42; Elf, wood;43-46; Gnome, forest;47-52; Gnome, rock;53-56; Half-elf;57-60; Half-orc;61-68; Halfling, lightfoot;69-76; Halfling, stout;77-96; Human;97-00; Tiefling;The reincarnated creature recalls its former life and experiences. It retains the capabilities it had in its original form, except it exchanges its original race for the new one and changes its racial traits accordingly.", 0, null, 5, "Rare oils and unguents worth at least 1,000 gp, which the spell consumes.", "Reincarnate", 1, false, 3, null },
|
||||||
|
{ 249, 6, "Wizard", "V;S;M", false, "You touch a length of rope that is up to 60 feet long. One end of the rope then rises into the air until the whole rope hangs perpendicular to the ground. At the upper end of the rope, an invisible entrance opens to an extradimensional space that lasts until the spell ends.;The extradimensional space can be reached by climbing to the top of the rope. The space can hold as many as eight Medium or smaller creatures. The rope can be pulled into the space, making the rope disappear from view outside the space.;Attacks and spells can't cross through the entrance into or out of the extradimensional space, but those inside can see out of it as if through a 3-foot-by-5-foot window centered on the rope.;Anything inside the extradimensional space drops out when the spell ends.", 5, null, 2, "Powdered corn extract and a twisted loop of parchment.", "Rope Trick", 1, false, 3, "Lore" },
|
||||||
|
{ 279, 6, "Bard;Sorcerer;Wizard", "V;S;M", true, "You create a 20-foot-radius sphere of yellow, nauseating gas centered on a point within range. The cloud spreads around corners, and its area is heavily obscured. The cloud lingers in the air for the duration.;Each creature that is completely within the cloud at the start of its turn must make a constitution saving throw against poison. On a failed save, the creature spends its action that turn retching and reeling. Creatures that don't need to breathe or are immune to poison automatically succeed on this saving throw.;A moderate wind (at least 10 miles per hour) disperses the cloud after 4 rounds. A strong wind (at least 20 miles per hour) disperses it after 1 round.", 3, null, 3, "A rotten egg or several skunk cabbage leaves.", "Stinking Cloud", 9, false, 1, "Lore;Land;Fiend" },
|
||||||
|
{ 259, 6, "Druid;Wizard", "V;S;M", true, "You assume the form of a different creature for the duration. The new form can be of any creature with a challenge rating equal to your level or lower. The creature can't be a construct or an undead, and you must have seen the sort of creature at least once. You transform into an average example of that creature, one without any class levels or the Spellcasting trait.;Your game statistics are replaced by the statistics of the chosen creature, though you retain your alignment and Intelligence, Wisdom, and Charisma scores. You also retain all of your skill and saving throw proficiencies, in addition to gaining those of the creature. If the creature has the same proficiency as you and the bonus listed in its statistics is higher than yours, use the creature's bonus in place of yours. You can't use any legendary actions or lair actions of the new form.;You assume the hit points and Hit Dice of the new form. When you revert to your normal form, you return to the number of hit points you had before you transformed. If you revert as a result of dropping to 0 hit points, any excess damage carries over to your normal form. As long as the excess damage doesn't reduce your normal form to 0 hit points, you aren't knocked unconscious.;You retain the benefit of any features from your class, race, or other source and can use them, provided that your new form is physically capable of doing so. You can't use any special senses you have (for example, darkvision) unless your new form also has that sense. You can only speak if the creature can normally speak.;When you transform, you choose whether your equipment falls to the ground, merges into the new form, or is worn by it. Worn equipment functions as normal. The DM determines whether it is practical for the new form to wear a piece of equipment, based on the creature's shape and size. Your equipment doesn't change shape or size to match the new form, and any equipment that the new form can't wear must either fall to the ground or merge into your new form. Equipment that merges has no effect in that state.;During this spell's duration, you can use your action to assume a different form following the same restrictions and rules for the original form, with one exception: if your new form has more hit points than your current one, your hit points remain at their current value.", 5, null, 9, "A jade circlet worth at least 1,500 gp, which you must place on your head before you cast the spell.", "Shapechange", 0, false, 3, null },
|
||||||
|
{ 261, 7, "Sorcerer;Wizard", "V;S", false, "An invisible barrier of magical force appears and protects you. Until the start of your next turn, you have a +5 bonus to AC, including against the triggering attack, and you take no damage from magic missile.", 12, null, 1, null, "Shield", 0, false, 2, "Lore" },
|
||||||
|
{ 277, 6, "Cleric", "V;S;M", true, "You call forth spirits to protect you. They flit around you to a distance of 15 feet for the duration. If you are good or neutral, their spectral form appears angelic or fey (your choice). If you are evil, they appear fiendish.;When you cast this spell, you can designate any number of creatures you can see to be unaffected by it. An affected creature's speed is halved in the area, and when the creature enters the area for the first time on a turn or starts its turn there, it must make a wisdom saving throw. On a failed save, the creature takes 3d8 radiant damage (if you are good or neutral) or 3d8 necrotic damage (if you are evil). On a successful save, the creature takes half as much damage.", 4, "When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d8 for each slot level above 3rd.", 3, "A holy symbol.", "Spirit Guardians", 0, false, 1, "Lore" },
|
||||||
|
{ 276, 6, "Druid;Ranger", "V;S;M", true, "The ground in a 20-foot radius centered on a point within range twists and sprouts hard spikes and thorns. The area becomes difficult terrain for the duration. When a creature moves into or within the area, it takes 2d4 piercing damage for every 5 feet it travels.;The development of land is camouflaged to look natural. Any creature that does not see the area when the spell is spell casts must make a Wisdom (Perception) opposite the DD backup your fate or it does not recognize the dangerous nature of the ground before entering.", 4, null, 2, "Seven sharp spines or seven twigs cut peak.", "Spike Growth", 12, false, 3, "Lore;Land" },
|
||||||
|
{ 275, 6, "Sorcerer;Warlock;Wizard", "V;S;M", true, "Until the spell ends, one willing creature you touch gains the ability to move up, down, and across vertical surfaces and upside down along ceilings, while leaving its hands free. The target also gains a climbing speed equal to its walking speed.", 5, null, 2, "A drop of bitumen and a spider.", "Spider Climb", 1, false, 3, "Lore;Land" },
|
||||||
|
{ 274, 6, "Bard;Druid;Ranger", "V;S", false, "You imbue plants within 30 feet of you with limited sentience and animation, giving them the ability to communicate with you and follow your simple commands. You can question plants about events in the spell's area within the past day, gaining information about creatures that have passed, weather, and other circumstances.;You can also turn difficult terrain caused by plant growth (such as thickets and undergrowth) into ordinary terrain that lasts for the duration. Or you can turn ordinary terrain where plants are present into difficult terrain that lasts for the duration, causing vines and branches to hinder pursuers, for example.;Plants might be able to perform other tasks on your behalf, at the DM's discretion. The spell doesn't enable plants to uproot themselves and move about, but they can freely move branches, tendrils, and stalks.;If a plant creature is in the area, you can communicate with it as if you shared a common language, but you gain no magical ability to influence it.;This spell can cause the plants created by the entangle spell to release a restrained creature.", 4, null, 3, null, "Speak with Plants", 0, false, 3, "Lore" },
|
||||||
|
{ 273, 6, "Bard;Cleric", "V;S;M", false, "You grant the semblance of life and intelligence to a corpse of your choice within range, allowing it to answer the questions you pose. The corpse must still have a mouth and can't be undead. The spell fails if the corpse was the target of this spell within the last 10 days.;Until the spell ends, you can ask the corpse up to five questions. The corpse knows only what it knew in life, including the languages it knew. Answers are usually brief, cryptic, or repetitive, and the corpse is under no compulsion to offer a truthful answer if you are hostile to it or it recognizes you as an enemy. This spell doesn't return the creature's soul to its body, only its animating spirit. Thus, the corpse can't learn new information, doesn't comprehend anything that has happened since it died, and can't speculate about future events.", 4, null, 3, "Burning incense.", "Speak with Dead", 6, false, 5, "Lore" },
|
||||||
|
{ 272, 6, "Bard;Druid;Ranger", "V;S", false, "You gain the ability to comprehend and verbally communicate with beasts for the duration. The knowledge and awareness of many beasts is limited by their intelligence, but at a minimum, beasts can give you information about nearby locations and monsters, including whatever they can perceive or have perceived within the past day. You might be able to persuade a beast to perform a small favor for you, at the DM's discretion.", 4, null, 1, null, "Speak with Animals", 0, true, 6, "Lore" },
|
||||||
|
{ 271, 6, "Cleric", "V;S", false, "You touch a living creature that has 0 hit points. The creature becomes stable. This spell has no effect on undead or constructs.", 0, null, -1, null, "Spare the Dying", 1, false, 5, null },
|
||||||
|
{ 260, 6, "Bard;Sorcerer;Warlock;Wizard", "V;S;M", false, "A strong resonant sound painfully intense sounds of a desired point in the range of the spell. Each creature has a sphere with a 10-foot-radius sphere centered on that point must make a constitution saving throw or it suffers 3d8 thunder damage. If successful, the damage is halved. A creature made of inorganic materials such as stone, crystal or metal, makes its saving throw with a disadvantage.;A non-magical item that is not worn or carried also suffers damage if it is in the area of ​​the spell.", 0, "When you cast this spell using a 3 or higher level spell slot, the damage of the spell increases by 1d8 for each level of higher spell slot 2.", 2, "A burst of mica.", "Shatter", 8, false, 0, "Lore" },
|
||||||
|
{ 270, 6, "Sorcerer;Wizard", "V;S;M", true, "You alter time around up to six creatures of your choice in a 40-foot cube within range. Each target must succeed on a wisdom saving throw or be affected by this spell for the duration.;An affected target's speed is halved, it takes a -2 penalty to AC and dexterity saving throws, and it can't use reactions. On its turn, it can use either an action or a bonus action, not both. Regardless of the creature's abilities or magic items, it can't make more than one melee or ranged attack during its turn.;If the creature attempts to cast a spell with a casting time of 1 action, roll a d20. On an 11 or higher, the spell doesn't take effect until the creature's next turn, and the creature must use its action on that turn to complete the spell. If it can't, the spell is wasted.;A creature affected by this spell makes another wisdom saving throw at the end of its turn. On a successful save, the effect ends for it.", 3, null, 3, "A drop of molasses.", "Slow", 11, false, 3, "Lore;Land" },
|
||||||
|
{ 268, 6, "Bard;Sorcerer;Wizard", "V;S;M", false, "This spell sends creatures into a magical slumber. Roll 5d8, the total is how many hit points of creatures this spell can affect. Creatures within 20 feet of a point you choose within range are affected in ascending order of their current hit points (ignoring unconscious creatures).;Starting with the creature that has the lowest current hit points, each creature affected by this spell falls unconscious until the spell ends, the sleeper takes damage, or someone uses an action to shake or slap the sleeper awake. Subtract each creature's hit points from the total before moving on to the creature with the next lowest hit points. A creature's hit points must be equal to or less than the remaining total for that creature to be affected.;Undead and creatures immune to being charmed aren't affected by this spell.", 3, "When you cast this spell using a spell slot of 2nd level or higher, roll an additional 2d8 for each slot level above 1st.", 1, "A pinch of fine sand, rose petals, or a cricket.", "Sleep", 9, false, 4, "Lore" },
|
||||||
|
{ 267, 4, "Wizard", "V;S;M", false, "You shape an illusory duplicate of one beast or humanoid that is within range for the entire casting time of the spell. The duplicate is a creature, partially real and formed from ice or snow, and it can take actions and otherwise be affected as a normal creature. It appears to be the same as the original, but it has half the creature's hit point maximum and is formed without any equipment. Otherwise, the illusion uses all the statistics of the creature it duplicates.;The simulacrum is friendly to you and creatures you designate. It obeys your spoken commands, moving and acting in accordance with your wishes and acting on your turn in combat. The simulacrum lacks the ability to learn or become more powerful, so it never increases its level or other abilities, nor can it regain expended spell slots.;If the simulacrum is damaged, you can repair it in an alchemical laboratory, using rare herbs and minerals worth 100 gp per hit point it regains. The simulacrum lasts until it drops to 0 hit points, at which point it reverts to snow and melts instantly.;If you cast this spell again, any currently active duplicates you created with this spell are instantly destroyed.", 1, null, 7, "Snow or ice in quantities sufficient to made a life-size copy of the duplicated creature, some hair, fingernail clippings, or other piece of that creature's body placed inside the snow or ice, and powdered ruby worth 1,500 gp, sprinkled over the duplicate and consumed by the spell.", "Simulacrum", 1, false, 7, null },
|
||||||
|
{ 266, 6, "Bard;Sorcerer;Wizard", "V;S;M", true, "You create the image of an object, a creature, or some other visible phenomenon that is no larger than a 15-foot cube. The image appears at a spot within range and lasts for the duration. The image is purely visual, it isn't accompanied by sound, smell, or other sensory effects.;You can use your action to cause the image to move to any spot within range. As the image changes location, you can alter its appearance so that its movements appear natural for the image. For example, if you create an image of a creature and move it, you can alter the image so that it appears to be walking.;Physical interaction with the image reveals it to be an illusion, because things can pass through it. A creature that uses its action to examine the image can determine that it is an illusion with a successful Intelligence (Investigation) check against your spell save DC. If a creature discerns the illusion for what it is, the creature can see through the image.", 4, null, 1, "A bit of fleece.", "Silent Image", 8, false, 7, "Lore" },
|
||||||
|
{ 265, 6, "Bard;Cleric;Ranger", "V;S", true, "For the duration, no sound can be created within or pass through a 20-foot-radius sphere centered on a point you choose within range. Any creature or object entirely inside the sphere is immune to thunder damage, and creatures are deafened while entirely inside it.;Casting a spell that includes a verbal component is impossible there.", 4, null, 2, null, "Silence", 11, true, 7, "Lore;Land" },
|
||||||
|
{ 264, 6, "Sorcerer;Wizard", "V;S", false, "Lightning springs from your hand to deliver a shock to a creature you try to touch. Make a melee spell attack against the target. You have advantage on the attack roll if the target is wearing armor made of metal. On a hit, the target takes 1d8 lightning damage, and it can't take reactions until the start of its next turn.;The spell's damage increases by 1d8 when you reach 5th level (2d8), 11th level (3d8), and 17th level (4d8).", 0, null, 0, null, "Shocking Grasp", 1, false, 0, "Lore" },
|
||||||
|
{ 263, 8, "Druid", "V;S;M", false, "The wood of a club or a quarterstaff you are holding is imbued with nature's power. For the duration, you can use your spellcasting ability instead of Strength for the attack and damage rolls of melee attacks using that weapon, and the weapon's damage die becomes a d8. The weapon also becomes magical, if it isn't already. The spell ends if you cast it again or if you let go of the weapon.", 3, null, 0, "Mistletoe, a shamrock leaf, and a club or quarterstaff.", "Shillelagh", 1, false, 3, "Lore" },
|
||||||
|
{ 262, 8, "Cleric;Paladin", "V;S;M", true, "A shimmering field appears and surrounds a creature of your choice within range, granting it a +2 bonus to AC for the duration.", 4, null, 1, "A small parchment with a bit of holy text written on it.", "Shield of Faith", 8, false, 2, "Lore" },
|
||||||
|
{ 269, 6, "Druid;Sorcerer;Wizard", "V;S;M", true, "Until the spell ends, freezing rain and sleet fall in a 20-foot-tall cylinder with a 40-foot radius centered on a point you choose within range. The area is heavily obscured, and exposed flames in the area are doused.;The ground in the area is covered with slick ice, making it difficult terrain. When a creature enters the spell's area for the first time on a turn or starts its turn there, it must make a dexterity saving throw. On a failed save, it falls prone.;If a creature is concentrating in the spell's area, the creature must make a successful constitution saving throw against your spell save DC or lose concentration.", 3, null, 3, "A pinch of dust and a few drops of water.", "Sleet Storm", 12, false, 1, "Lore;Land" },
|
||||||
|
{ 160, 6, "Bard;Sorcerer;Warlock;Wizard", "V;S;M", true, "Choose a creature you can see and reach. The target must make a saving throw of Wisdom or be paralyzed for the duration of the spell. This spell has no effect against the undead. At the end of each round, the target can make a new saving throw of Wisdom. If successful, the spell ends for the creature.", 3, "When you cast this spell using a level 6 or higher location, you can target an additional creature for each level of location beyond the fifth. The creatures must be within 30 feet o f each other when you target them.", 5, "A small piece of iron.", "Hold Monster", 9, false, 4, null },
|
||||||
|
{ 158, 6, "Bard;Paladin", "V;S", true, "A willing creature you touch is imbued with bravery. Until the spell ends, the creature is immune to being frightened and gains temporary hit points equal to your spellcasting ability modifier at the start of each of its turns. When the spell ends, the target loses any remaining temporary hit points from this spell.", 3, null, 1, null, "Heroism", 1, false, 4, "Lore" },
|
||||||
|
{ 318, 6, "Cleric", "V", false, "You and up to five willing creatures within 5 feet of you instantly teleport to a previously designated sanctuary. You and any creatures that teleport with you appear in the nearest unoccupied space to the spot you designated when you prepared your sanctuary (see below). If you cast this spell without first preparing a sanctuary, the spell has no effect.;You must designate a sanctuary by casting this spell within a location, such as a temple, dedicated to or strongly linked to your deity. If you attempt to cast the spell in this manner in an area that isn't dedicated to your deity, the spell has no effect.", 0, null, 6, null, "Word of Recall", 5, false, 1, null },
|
||||||
|
{ 56, 0, "Druid;Warlock", "V;S", true, "You summon a fey creature of challenge rating 6 or lower, or a fey spirit that takes the form of a beast of challenge rating 6 or lower. It appears in an unoccupied space that you can see within range. The fey creature disappears when it drops to 0 hit points or when the spell ends.;The fey creature is friendly to you and your companions for the duration. Roll initiative for the creature, which has its own turns. It obeys any verbal commands that you issue to it (no action required by you), as long as they don't violate its alignment. If you don't issue any commands to the fey creature, it defends itself from hostile creatures but otherwise takes no actions.;If your concentration is broken, the fey creature doesn't disappear. Instead, you lose control of the fey creature, it becomes hostile toward you and your companions, and it might attack. An uncontrolled fey creature can't be dismissed by you, and it disappears 1 hour after you summoned it.;The DM has the fey creature's statistics.", 5, "When you cast this spell using a spell slot of 7th level or higher, the challenge rating increases by 1 for each slot level above 6th.", 6, null, "Conjure Fey", 9, false, 1, null },
|
||||||
|
{ 55, 0, "Druid;Wizard", "V;S;M", true, "You call forth an elemental servant. Choose an area of air, earth, fire, or water that fills a 10-foot cube within range. An elemental of challenge rating 5 or lower appropriate to the area you chose appears in an unoccupied space within 10 feet of it. For example, a fire elemental emerges from a bonfire, and an earth elemental rises up from the ground. The elemental disappears when it drops to 0 hit points or when the spell ends.;The elemental is friendly to you and your companions for the duration. Roll initiative for the elemental, which has its own turns. It obeys any verbal commands that you issue to it (no action required by you). If you don't issue any commands to the elemental, it defends itself from hostile creatures but otherwise takes no actions.;If your concentration is broken, the elemental doesn't disappear. Instead, you lose control of the elemental, it becomes hostile toward you and your companions, and it might attack. An uncontrolled elemental can't be dismissed by you, and it disappears 1 hour after you summoned it.;The DM has the elemental's statistics.", 5, "When you cast this spell using a spell slot of 6th level or higher, the challenge rating increases by 1 for each slot level above 5th.", 5, "Burning incense for air, soft clay for earth, sulfur and phosphorus for fire, or water and sand for water.", "Conjure Elemental", 9, false, 1, "Land" },
|
||||||
|
{ 54, 0, "Cleric", "V;S", true, "You summon a celestial of challenge rating 4 or lower, which appears in an unoccupied space that you can see within range. The celestial disappears when it drops to 0 hit points or when the spell ends.;The celestial is friendly to you and your companions for the duration. Roll initiative for the celestial, which has its own turns. It obeys any verbal commands that you issue to it (no action required by you), as long as they don't violate its alignment. If you don't issue any commands to the celestial, it defends itself from hostile creatures but otherwise takes no actions.;The DM has the celestial's statistics.", 5, "When you cast this spell using a 9th-level spell slot, you summon a celestial of challenge rating 5 or lower.", 7, null, "Conjure Celestial", 9, false, 1, null },
|
||||||
|
{ 53, 6, "Druid;Ranger", "V;S", true, "You summon fey spirits that take the form of beasts and appear in unoccupied spaces that you can see within range. Choose one of the following options for what appears:;- One beast of challenge rating 2 or lower;- Two beasts of challenge rating 1 or lower;- Four beasts of challenge rating 1/2 or lower;- Eight beasts of challenge rating 1/4 or lower;- Each beast is also considered fey, and it disappears when it drops to 0 hit points or when the spell ends.;The summoned creatures are friendly to you and your companions. Roll initiative for the summoned creatures as a group, which has its own turns. They obey any verbal commands that you issue to them (no action required by you). If you don't issue any commands to them, they defend themselves from hostile creatures, but otherwise take no actions.;The DM has the creatures' statistics.", 5, "When you cast this spell using certain higher-level spell slots, you choose one of the summoning options above, and more creatures appear: twice as many with a 5th-level slot, three times as many with a 7th-level.", 3, null, "Conjure Animals", 8, false, 1, "Lore" },
|
||||||
|
{ 52, 6, "Bard;Druid;Sorcerer;Wizard", "V;S;M", true, "This spell assails and distorts the minds of creatures, generating illusions and causing uncontrolled actions. Each creature in a sphere of 10-foot-radius centered on a point chosen in the range of the spell must make a wisdom saving throw otherwise it will be affected by the spell.;An affected target can react and it must start at the beginning of 1d10 each of his game rounds to determine its behavior for that round.;At the end of each turn, an affected creature can make a saving throw of Wisdom. If successful, the effect of the spell ends for this target.", 3, "When you cast this spell using a level spell slot 5 or more, the radius of the sphere increases by 5 feet for each level of higher spell slot to 4.", 4, "Three walnut shells.", "Confusion", 9, false, 4, null }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Spells",
|
||||||
|
columns: new[] { "Id", "CastingTime", "Classes", "Components", "Concentration", "Description", "Duration", "HigherLevel", "Level", "Material", "Name", "Range", "Ritual", "School", "Subclasses" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 51, 6, "Sorcerer;Wizard", "V;S;M", false, "A blast of cold air erupts from your hands. Each creature in a 60-foot cone must make a constitution saving throw. A creature takes 8d8 cold damage on a failed save, or half as much damage on a successful one.;A creature killed by this spell becomes a frozen statue until it thaws.", 0, "When you cast this spell using a spell slot of 6th level or higher, the damage increases by 1d8 for each slot level above 5th.", 5, "A small crystal or glass cone.", "Cone of Cold", 0, false, 0, "Land" },
|
||||||
|
{ 50, 6, "Bard", "V;S", true, "Creatures of your choice that you can see within range and that can hear you must make a wisdom saving throw. A target automatically succeeds on this saving throw if it can’t be charmed. On a failed save, a target is affected by this spell. Until the spell ends, you can use a bonus action on each of your turns to designate a direction that is horizontal to you. Each affected target must use as much of its movement as possible to move in that direction on its next turn. It can take any action before it moves. After moving in this way, it can make another Wisdom save to try to end the effect.;A target isn’t compelled to move into an obviously deadly hazard, such as a fire or a pit, but it will provoke opportunity attacks to move in the designated direction.", 3, null, 4, null, "Compulsion", 7, false, 4, null },
|
||||||
|
{ 57, 0, "Druid;Wizard", "V;S", true, "You summon elementals that appear in unoccupied spaces that you can see within range. You choose one the following options for what appears:;- One elemental of challenge rating 2 or lower;- Two elementals of challenge rating 1 or lower;- Four elementals of challenge rating 1/2 or lower;- Eight elementals of challenge rating 1/4 or lower.;An elemental summoned by this spell disappears when it drops to 0 hit points or when the spell ends.;The summoned creatures are friendly to you and your companions. Roll initiative for the summoned creatures as a group, which has its own turns. They obey any verbal commands that you issue to them (no action required by you). If you don't issue any commands to them, they defend themselves from hostile creatures, but otherwise take no actions.;The DM has the creatures' statistics.", 5, "When you cast this spell using certain higher-level spell slots, you choose one of the summoning options above, and more creatures appear: twice as many with a 6th-level slot and three times as many with an 8th-level slot.", 4, null, "Conjure Minor Elementals", 9, false, 1, null },
|
||||||
|
{ 49, 6, "Bard;Sorcerer;Warlock;Wizard", "V;S;M", false, "For the duration, you understand the literal meaning of any spoken language that you hear. You also understand any written language that you see, but you must be touching the surface on which the words are written. It takes about 1 minute to read one page of text.;This spell doesn't decode secret messages in a text or a glyph, such as an arcane sigil, that isn't part of a written language.", 5, null, 1, "A pinch of soot and salt.", "Comprehend Languages", 0, true, 6, "Lore" },
|
||||||
|
{ 47, 0, "Cleric", "V;S;M", false, "You contact your deity or a divine proxy and ask up to three questions that can be answered with a yes or no. You must ask your questions before the spell ends. You receive a correct answer for each question.;Divine beings aren't necessarily omniscient, so you might receive “unclearâ€<C3A2> as an answer if a question pertains to information that lies beyond the deity's knowledge. In a case where a one-word answer could be misleading or contrary to the deity's interests, the DM might offer a short phrase as an answer instead.;If you cast the spell two or more times before finishing your next long rest, there is a cumulative 25 percent chance for each casting after the first that you get no answer. The DM makes this roll in secret.", 3, null, 5, "Incense and a vial of holy or unholy water.", "Commune", 0, true, 6, "Devotion" },
|
||||||
|
{ 46, 6, "Cleric;Paladin", "V", false, "You speak a one-word command to a creature you can see within range. The target must succeed on a wisdom saving throw or follow the command on its next turn. The spell has no effect if the target is undead, if it doesn't understand your language, or if your command is directly harmful to it.;Some typical commands and their effects follow. You might issue a command other than one described here. If you do so, the DM determines how the target behaves. If the target can't follow your command, the spell ends.;Approach.; The target moves toward you by the shortest and most direct route, ending its turn if it moves within 5 feet of you.;Drop; The target drops whatever it is holding and then ends its turn.;Flee.; The target spends its turn moving away from you by the fastest available means.;Grovel.; The target falls prone and then ends its turn.;Halt.; The target doesn't move and takes no actions. A flying creature stays aloft, provided that it is able to do so. If it must move to stay aloft, it flies the minimum distance needed to remain in the air.", 12, "When you cast this spell using a spell slot of 2nd level or higher, you can affect one additional creature for each slot level above 1st. The creatures must be within 30 feet of each other when you target them.", 1, null, "Command", 8, false, 4, "Lore;Fiend" },
|
||||||
|
{ 45, 6, "Sorcerer;Wizard", "V;S;M", false, "A dazzling array of flashing, colored light springs from your hand. Roll 6d10, the total is how many hit points of creatures this spell can effect. Creatures in a 15-foot cone originating from you are affected in ascending order of their current hit points (ignoring unconscious creatures and creatures that can't see).;Starting with the creature that has the lowest current hit points, each creature affected by this spell is blinded until the spell ends. Subtract each creature's hit points from the total before moving on to the creature with the next lowest hit points. A creature's hit points must be equal to or less than the remaining total for that creature to be affected.", 12, "When you cast this spell using a spell slot of 2nd level or higher, roll an additional 2d10 for each slot level above 1st.", 1, "A pinch of powder or sand that is colored red, yellow, and blue.", "Color Spray", 0, false, 7, "Lore" },
|
||||||
|
{ 44, 6, "Sorcerer;Wizard", "V;S", true, "You create a 20-foot-radius sphere of poisonous, yellow-green fog centered on a point you choose within range. The fog spreads around corners. It lasts for the duration or until strong wind disperses the fog, ending the spell. Its area is heavily obscured.;When a creature enters the spell's area for the first time on a turn or starts its turn there, that creature must make a constitution saving throw. The creature takes 5d8 poison damage on a failed save, or half as much damage on a successful one. Creatures are affected even if they hold their breath or don't need to breathe.;The fog moves 10 feet away from you at the start of each of your turns, rolling along the surface of the ground. The vapors, being heavier than air, sink to the lowest level of the land, even pouring down openings.", 4, "When you cast this spell using a spell slot of 6th level or higher, the damage increases by 1d8 for each slot level above 5th.", 5, null, "Cloudkill", 11, false, 1, "Land" },
|
||||||
|
{ 43, 2, "Wizard", "V;S;M", false, "This spell grows an inert duplicate of a living creature as a safeguard against death. This clone forms inside a sealed vessel and grows to full size and maturity after 120 days, you can also choose to have the clone be a younger version of the same creature. It remains inert and endures indefinitely, as long as its vessel remains undisturbed.;At any time after the clone matures, if the original creature dies, its soul transfers to the clone, provided that the soul is free and willing to return. The clone is physically identical to the original and has the same personality, memories, and abilities, but none of the original's equipment. The original creature's physical remains, if they still exist, become inert and can't thereafter be restored to life, since the creature's soul is elsewhere.", 0, null, 8, "A diamond worth at least 1,000 gp and at least 1 cubic inch of flesh of the creature that is to be cloned, which the spell consumes, and a vessel worth at least 2,000 gp that has a sealable lid and is large enough to hold a Medium creature, such as a huge urn, coffin, mud-filled cyst in the ground, or crystal container filled with salt water.", "Clone", 1, false, 5, null },
|
||||||
|
{ 42, 1, "Bard;Cleric;Sorcerer;Wizard", "V;S;M", true, "You create an invisible sensor within range in a location familiar to you (a place you have visited or seen before) or in an obvious location that is unfamiliar to you (such as behind a door, around a corner, or in a grove of trees). The sensor remains in place for the duration, and it can't be attacked or otherwise interacted with.;When you cast the spell, you choose seeing or hearing. You can use the chosen sense through the sensor as if you were in its space. As your action, you can switch between seeing and hearing.;A creature that can see the sensor (such as a creature benefiting from see invisibility or truesight) sees a luminous, intangible orb about the size of your fist.", 4, null, 3, "A focus worth at least 100gp, either a jeweled horn for hearing or a glass eye for seeing.", "Clairvoyance", 15, false, 6, "Lore" },
|
||||||
|
{ 41, 6, "Sorcerer;Warlock;Wizard", "V;S;M", false, "A sphere of negative energy ripples out in a 60-footradius sphere from a point within range. Each creature in that area must make a constitution saving throw. A target takes 8d6 necrotic damage on a failed save, or half as much damage on a successful one.", 0, "When you cast this spell using a spell slot of 7th level or higher, the damage increases by 2d6 for each slot level above 6th.", 6, "The powder of a crushed black pearl worth at least 500 gp.", "Circle of Death", 12, false, 5, null },
|
||||||
|
{ 48, 0, "Druid;Ranger", "V;S", false, "You briefly become one with nature and gain knowledge of the surrounding territory. In the outdoors, the spell gives you knowledge of the land within 3 miles of you. In caves and other natural underground settings, the radius is limited to 300 feet. The spell doesn't function where nature has been replaced by construction, such as in dungeons and towns.; You instantly gain knowledge of up to three facts of your choice about any of the following subjects as they relate to the area:;- terrain and bodies of water;- prevalent plants, minerals, animals, or peoples;- powerful celestials, fey, fiends, elementals, or undead;- influence from other planes of existence;- buildings;For example, you could determine the location of powerful undead in the area, the location of major sources of safe drinking water, and the location of any nearby towns.", 0, null, 5, null, "Commune with Nature", 0, true, 6, "Land" },
|
||||||
|
{ 40, 6, "Sorcerer;Warlock;Wizard", "V;S", false, "You create a ghostly, skeletal hand in the space of a creature within range. Make a ranged spell attack against the creature to assail it with the chill of the grave. On a hit, the target takes 1d8 necrotic damage, and it can't regain hit points until the start of your next turn. Until then, the hand clings to the target.;If you hit an undead target, it also has disadvantage on attack rolls against you until the end of your next turn.;This spell's damage increases by 1d8 when you reach 5th level (2d8), 11th level (3d8), and 17th level (4d8).", 12, null, 0, null, "Chill Touch", 11, false, 5, "Lore" },
|
||||||
|
{ 58, 6, "Druid;Ranger", "V;S;M", true, "You summon fey creatures that appear in unoccupied spaces that you can see within range. Choose one of the following options for what appears:;- One fey creature of challenge rating 2 or lower;- Two fey creatures of challenge rating 1 or lower;- Four fey creatures of challenge rating 1/2 or lower;- Eight fey creatures of challenge rating 1/4 or lower;A summoned creature disappears when it drops to 0 hit points or when the spell ends.;The summoned creatures are friendly to you and your companions. Roll initiative for the summoned creatures as a group, which have their own turns. They obey any verbal commands that you issue to them (no action required by you). If you don't issue any commands to them, they defend themselves from hostile creatures, but otherwise take no actions.;The DM has the creatures' statistics.", 5, "When you cast this spell using certain higher-level spell slots, you choose one of the summoning options above, and more creatures appear: twice as many with a 6th-level slot and three times as many with an 8th-level slot.", 4, "One holly berry per creature summoned.", "Conjure Woodland Beings", 8, false, 1, null },
|
||||||
|
{ 60, 6, "Cleric;Druid", "V;S", false, "Your touch inflicts disease. Make a melee spell attack against a creature within your reach. On a hit, you afflict the creature with a disease of your choice from any of the ones described below.;At the end of each of the target's turns, it must make a constitution saving throw. After failing three of these saving throws, the disease's effects last for the duration, and the creature stops making these saves. After succeeding on three of these saving throws, the creature recovers from the disease, and the spell ends.;Since this spell induces a natural disease in its target, any effect that removes a disease or otherwise ameliorates a disease's effects apply to it.;Blinding Sickness.; Pain grips the creature's mind, and its eyes turn milky white. The creature has disadvantage on wisdom checks and wisdom saving throws and is blinded.;Filth Fever.; A raging fever sweeps through the creature's body. The creature has disadvantage on strength checks, strength saving throws, and attack rolls that use Strength.;Flesh Rot.; The creature's flesh decays. The creature has disadvantage on Charisma checks and vulnerability to all damage.;Mindfire.; The creature's mind becomes feverish. The creature has disadvantage on intelligence checks and intelligence saving throws, and the creature behaves as if under the effects of the confusion spell during combat.;Seizure.; The creature is overcome with shaking. The creature has disadvantage on dexterity checks, dexterity saving throws, and attack rolls that use Dexterity.;Slimy Doom.; The creature begins to bleed uncontrollably. The creature has disadvantage on constitution checks and constitution saving throws. In addition, whenever the creature takes damage, it is stunned until the end of its next turn.", 9, null, 5, null, "Contagion", 1, false, 5, null },
|
||||||
|
{ 76, 6, "Sorcerer;Wizard", "V;S;M", true, "A beam of yellow light flashes from your pointing finger, then condenses to linger at a chosen point within range as a glowing bead for the duration. When the spell ends, either because your concentration is broken or because you decide to end it, the bead blossoms with a low roar into an explosion of flame that spreads around corners. Each creature in a 20-foot-radius sphere centered on that point must make a dexterity saving throw. A creature takes fire damage equal to the total accumulated damage on a failed save, or half as much damage on a successful one.;The spell's base damage is 12d6. If at the end of your turn the bead has not yet detonated, the damage increases by 1d6.;If the glowing bead is touched before the interval has expired, the creature touching it must make a dexterity saving throw. On a failed save, the spell ends immediately, causing the bead to erupt in flame. On a successful save, the creature can throw the bead up to 40 feet. When it strikes a creature or a solid object, the spell ends, and the bead explodes.;The fire damages objects in the area and ignites flammable objects that aren't being worn or carried.", 3, "When you cast this spell using a spell slot of 8th level or higher, the base damage increases by 1d6 for each slot level above 7th.", 7, "A tiny ball of bat guano and sulfur.", "Delayed Blast Fireball", 12, false, 0, null },
|
||||||
|
{ 75, 6, "Cleric;Paladin", "V;S", false, "You touch a creature and grant it a measure of protection from death.;The first time the target would drop to 0 hit points as a result of taking damage, the target instead drops to 1 hit point, and the spell ends.;If the spell is still in effect when the target is subjected to an effect that would kill it instantaneously without dealing damage, that effect is instead negated against the target, and the spell ends.", 7, null, 4, null, "Death Ward", 1, false, 2, "Life" },
|
||||||
|
{ 74, 6, "Cleric;Druid;Paladin;Ranger;Sorcerer", "V;S", false, "A 60-foot-radius sphere of light spreads out from a point you choose within range. The sphere is bright light and sheds dim light for an additional 60 feet.;If you chose a point on an object you are holding or one that isn't being worn or carried, the light shines from the object and moves with it. Completely covering the affected object with an opaque object, such as a bowl or a helm, blocks the light.;If any of this spell's area overlaps with an area of darkness created by a spell of 3rd level or lower, the spell that created the darkness is dispelled.", 5, null, 3, null, "Daylight", 8, false, 0, "Lore;Land" },
|
||||||
|
{ 73, 6, "Druid;Ranger;Sorcerer;Wizard", "V;S;M", false, "You touch a willing creature to grant it the ability to see in the dark. For the duration, that creature has darkvision out to a range of 60 feet.", 7, null, 2, "Either a pinch of dried carrot or an agate.", "Darkvision", 1, false, 3, "Lore" },
|
||||||
|
{ 72, 6, "Sorcerer;Warlock;Wizard", "V;M", true, "Magical darkness spreads from a point you choose within range to fill a 15-foot-radius sphere for the duration. The darkness spreads around corners. A creature with darkvision can't see through this darkness, and nonmagical light can't illuminate it.;If the point you choose is on an object you are holding or one that isn't being worn or carried, the darkness emanates from the object and moves with it. Completely covering the source of the darkness with an opaque object, such as a bowl or a helm, blocks the darkness.;If any of this spell's area overlaps with an area of light created by a spell of 2nd level or lower, the spell that created the light is dispelled.", 4, null, 2, "Bat fur and a drop of pitch or piece of coal.", "Darkness", 8, false, 0, "Lore;Land" },
|
||||||
|
{ 71, 6, "Bard;Sorcerer;Wizard", "V;S;M", true, "You create up to four torch-sized lights within range, making them appear as torches, lanterns, or glowing orbs that hover in the air for the duration. You can also combine the four lights into one glowing vaguely humanoid form of Medium size. Whichever form you choose, each light sheds dim light in a 10-foot radius.;As a bonus action on your turn, you can move the lights up to 60 feet to a new spot within range. A light must be within 20 feet of another light created by this spell, and a light winks out if it exceeds the spell's range.", 3, null, 0, "A bit of phosphorus or wychwood, or a glowworm.", "Dancing Lights", 11, false, 0, "Lore" },
|
||||||
|
{ 70, 6, "Bard;Cleric;Druid;Paladin;Ranger", "V;S", false, "A creature you touch regains a number of hit points equal to 1d8 + your spellcasting ability modifier. This spell has no effect on undead or constructs.", 0, "When you cast this spell using a spell slot of 2nd level or higher, the healing increases by 1d8 for each slot level above 1st.", 1, null, "Cure Wounds", 1, false, 0, "Lore;Life" },
|
||||||
|
{ 59, 0, "Warlock;Wizard", "V", false, "You mentally contact a demigod, the spirit of a long-dead sage, or some other mysterious entity from another plane. Contacting this extraplanar intelligence can strain or even break your mind. When you cast this spell, make a DC 15 intelligence saving throw. On a failure, you take 6d6 psychic damage and are insane until you finish a long rest. While insane, you can't take actions, can't understand what other creatures say, can't read, and speak only in gibberish. A greater restoration spell cast on you ends this effect.;On a successful save, you can ask the entity up to five questions. You must ask your questions before the spell ends. The DM answers each question with one word, such as “yes,â€<C3A2> “no,â€<C3A2> “maybe,â€<C3A2> “never,â€<C3A2> “irrelevant,â€<C3A2> or “unclearâ€<C3A2> (if the entity doesn't know the answer to the question). If a one-word answer would be misleading, the DM might instead offer a short phrase as an answer.", 3, null, 5, null, "Contact Other Plane", 0, true, 6, null },
|
||||||
|
{ 69, 0, "Sorcerer;Wizard", "V;S;M", false, "You pull wisps of shadow material from the Shadowfell to create a nonliving object of vegetable matter within 'range': soft goods, rope, wood, or something similar. You can also use this spell to create mineral objects such as stone, crystal, or metal. The object created must be no larger than a 5-foot cube, and the object must be of a form and material that you have seen before.;The duration depends on the object's material. If the object is composed of multiple materials, use the shortest duration.;Vegetable matter; 1 day;Stone or crystal; 12 hours;Precious metals; 1 hour;Gems; 10 minutes;Adamantine or mithral; 1 minute;Using any material created by this spell as another spell's material component causes that spell to fail.", 2, "When you cast this spell using a spell slot of 6th level or higher, the cube increases by 5 feet for each slot level above 5th.", 5, "A tiny piece of matter of the same type of the item you plan to create.", "Creation", 7, false, 7, null },
|
||||||
|
{ 67, 0, "Cleric;Warlock;Wizard", "V;S;M", false, "You can cast this spell only at night. Choose up to three corpses of Medium or Small humanoids within range. Each corpse becomes a ghoul under your control. (The DM has game statistics for these creatures.);As a bonus action on each of your turns, you can mentally command any creature you animated with this spell if the creature is within 120 feet of you (if you control multiple creatures, you can command any or all of them at the same time, issuing the same command to each one). You decide what action the creature will take and where it will move during its next turn, or you can issue a general command, such as to guard a particular chamber or corridor. If you issue no commands, the creature only defends itself against hostile creatures. Once given an order, the creature continues to follow it until its task is complete.;The creature is under your control for 24 hours, after which it stops obeying any command you have given it. To maintain control of the creature for another 24 hours, you must cast this spell on the creature before the current 24-hour period ends. This use of the spell reasserts your control over up to three creatures you have animated with this spell, rather than animating new ones.", 0, "When you cast this spell using a 7th-level spell slot, you can animate or reassert control over four ghouls. When you cast this spell using an 8th-level spell slot, you can animate or reassert control over five ghouls or two ghasts or wights. When you cast this spell using a 9th-level spell slot, you can animate or reassert control over six ghouls, three ghasts or wights, or two mummies.", 6, "One clay pot filled with grave dirt, one clay pot filled with brackish water, and one 150 gp black onyx stone for each corpse.", "Create Undead", 6, false, 5, null },
|
||||||
|
{ 66, 6, "Cleric;Druid;Paladin", "V;S", false, "You create 45 pounds of food and 30 gallons of water on the ground or in containers within range, enough to sustain up to fifteen humanoids or five steeds for 24 hours. The food is bland but nourishing, and spoils if uneaten after 24 hours. The water is clean and doesn't go bad.", 0, null, 3, null, "Create Food and Water", 7, false, 1, "Lore;Land" },
|
||||||
|
{ 65, 7, "Sorcerer;Warlock;Wizard", "S", false, "You attempt to interrupt a creature in the process of casting a spell. If the creature is casting a spell of 3rd level or lower, its spell fails and has no effect. If it is casting a spell of 4th level or higher, make an ability check using your spellcasting ability. The DC equals 10 + the spell’s level. On a success, the creature’s spell fails and has no effect.", 0, null, 3, null, "Counterspell", 8, false, 2, null },
|
||||||
|
{ 64, 1, "Cleric;Druid;Wizard", "V;S;M", true, "You take control of the weather within 5 miles of you for the duration. You must be outdoors to cast this spell. Moving to a place where you don't have a clear path to the sky ends the spell early.;When you cast the spell, you change the current weather conditions, which are determined by the DM based on the climate and season. You can change precipitation, temperature, and wind. It takes 1d4 x 10 minutes for the new conditions to take effect. Once they do so, you can change the conditions again. When the spell ends, the weather gradually returns to normal.;When you change the weather conditions, find a current condition on the following tables and change its stage by one, up or down. When changing the wind, you can change its direction.", 7, null, 8, "Burning incense and bits of earth and wood mixed in water.", "Control Weather", 0, false, 3, "Land" },
|
||||||
|
{ 63, 6, "Cleric;Druid;Wizard", "V;S;M", true, "Until the spell ends, you control any freestanding water inside an area you choose that is a cube up to 100 feet on a side. You can choose from any of the following effects when you cast this spell. As an action on your turn, you can repeat the same effect or choose a different one.;Flood.; You cause the water level of all standing water in the area to rise by as much as 20 feet. If the area includes a shore, the flooding water spills over onto dry land.;instead create a 20-foot tall wave that travels from one side of the area to the other and then crashes down. Any Huge or smaller vehicles in the wave's path are carried with it to the other side. Any Huge or smaller vehicles struck by the wave have a 25 percent chance of capsizing.;The water level remains elevated until the spell ends or you choose a different effect. If this effect produced a wave, the wave repeats on the start of your next turn while the flood effect lasts.;Part Water.; You cause water in the area to move apart and create a trench. The trench extends across the spell's area, and the separated water forms a wall to either side. The trench remains until the spell ends or you choose a different effect. The water then slowly fills in the trench over the course of the next round until the normal water level is restored.;Redirect Flow.; You cause flowing water in the area to move in a direction you choose, even if the water has to flow over obstacles, up walls, or in other unlikely directions. The water in the area moves as you direct it, but once it moves beyond the spell's area, it resumes its flow based on the terrain conditions. The water continues to move in the direction you chose until the spell ends or you choose a different effect.;Whirlpool.; This effect requires a body of water at least 50 feet square and 25 feet deep. You cause a whirlpool to form in the center of the area. The whirlpool forms a vortex that is 5 feet wide at the base, up to 50 feet wide at the top, and 25 feet tall. Any creature or object in the water and within 25 feet of the vortex is pulled 10 feet toward it. A creature can swim away from the vortex by making a Strength (Athletics) check against your spell save DC.;When a creature enters the vortex for the first time on a turn or starts its turn there, it must make a strength saving throw. On a failed save, the creature takes 2d8 bludgeoning damage and is caught in the vortex until the spell ends. On a successful save, the creature takes half damage, and isn't caught in the vortex. A creature caught in the vortex can use its action to try to swim away from the vortex as described above, but has disadvantage on the Strength (Athletics) check to do so.;The first time each turn that an object enters the vortex, the object takes 2d8 bludgeoning damage, this damage occurs each round it remains in the vortex.", 4, null, 4, "A drop of water and a pinch of dust.", "Control Water", 13, false, 3, null },
|
||||||
|
{ 62, 6, "Cleric;Wizard", "V;S;M", false, "A flame, equivalent in brightness to a torch, springs forth from an object that you touch. The effect looks like a regular flame, but it creates no heat and doesn't use oxygen. A continual flame can be covered or hidden but not smothered or quenched.", 1, null, 2, "Ruby dust worth 50 gp, which the spell consumes.", "Continual Flame", 1, false, 0, "Lore" },
|
||||||
|
{ 61, 1, "Wizard", "V;S;M", false, "Choose a spell of 5th level or lower that you can cast, that has a casting time of 1 action, and that can target you. You cast that spell—called the contingent spell—as part of casting contingency, expending spell slots for both, but the contingent spell doesn't come into effect. Instead, it takes effect when a certain circumstance occurs. You describe that circumstance when you cast the two spells. For example, a contingency cast with water breathing might stipulate that water breathing comes into effect when you are engulfed in water or a similar liquid.;The contingent spell takes effect immediately after the circumstance is met for the first time, whether or not you want it to. and then contingency ends.;The contingent spell takes effect only on you, even if it can normally target others. You can use only one contingency spell at a time. If you cast this spell again, the effect of another contingency spell on you ends. Also, contingency ends on you if its material component is ever not on your person.", 10, null, 6, "A statuette of yourself carved from ivory and decorated with gems worth at least 1,500 gp.", "Contingency", 0, false, 0, null },
|
||||||
|
{ 68, 6, "Cleric;Druid", "V;S;M", false, "You either create or destroy water.;Create Water.; You create up to 10 gallons of clean water within range in an open container. Alternatively, the water falls as rain in a 30-foot cube within range.;Destroy Water.; You destroy up to 10 gallons of water in an open container within range. Alternatively, you destroy fog in a 30-foot cube within range.", 0, "When you cast this spell using a spell slot of 2nd level or higher, you create or destroy 10 additional gallons of water, or the size of the cube increases by 5 feet, for each slot level above 1st.", 1, "A drop of water if creating water, or a few grains of sand if destroying it.", "Create or Destroy Water", 7, false, 3, "Lore" },
|
||||||
|
{ 77, 6, "Warlock;Wizard", "S", false, "You create a shadowy door on a flat solid surface that you can see within range. The door is large enough to allow Medium creatures to pass through unhindered. When opened, the door leads to a demiplane that appears to be an empty room 30 feet in each dimension, made of wood or stone. When the spell ends, the door disappears, and any creatures or objects inside the demiplane remain trapped there, as the door also disappears from the other side.;Each time you cast this spell, you can create a new demiplane, or have the shadowy door connect to a demiplane you created with a previous casting of this spell. Additionally, if you know the nature and contents of a demiplane created by a casting of this spell by another creature, you can have the shadowy door connect to its demiplane instead.", 5, null, 8, null, "Demiplane", 8, false, 1, null },
|
||||||
|
{ 39, 6, "Bard;Druid;Sorcerer;Warlock;Wizard", "V;S", false, "You attempt to charm a humanoid you can see within range. It must make a wisdom saving throw, and does so with advantage if you or your companions are fighting it. If it fails the saving throw, it is charmed by you until the spell ends or until you or your companions do anything harmful to it. The charmed creature regards you as a friendly acquaintance. When the spell ends, the creature knows it was charmed by you.", 5, "When you cast this spell using a spell slot of 2nd level or higher, you can target one additional creature for each slot level above 1st. The creatures must be within 30 feet of each other when you target them.", 1, null, "Charm Person", 7, false, 4, "Lore" },
|
||||||
|
{ 37, 6, "Bard;Cleric", "V;S", true, "You attempt to suppress strong emotions in a group of people. Each humanoid in a 20-foot-radius sphere centered on a point you choose within range must make a charisma saving throw, a creature can choose to fail this saving throw if it wishes. If a creature fails its saving throw, choose one of the following two effects. You can suppress any effect causing a target to be charmed or frightened. When this spell ends, any suppressed effect resumes, provided that its duration has not expired in the meantime.;Alternatively, you can make a target indifferent about creatures of your choice that it is hostile toward. This indifference ends if the target is attacked or harmed by a spell or if it witnesses any of its friends being harmed. When the spell ends, the creature becomes hostile again, unless the DM rules otherwise.", 3, null, 2, null, "Calm Emotions", 8, false, 4, "Lore" },
|
||||||
|
{ 16, 6, "Wizard", "V;S;M", false, "You touch a closed door, window, gate, chest, or other entryway, and it becomes locked for the duration. You and the creatures you designate when you cast this spell can open the object normally. You can also set a password that, when spoken within 5 feet of the object, suppresses this spell for 1 minute. Otherwise, it is impassable until it is broken or the spell is dispelled or suppressed. Casting knock on the object suppresses arcane lock for 10 minutes.;While affected by this spell, the object is more difficult to break or force open, the DC to break it or pick any locks on it increases by 10.", 1, null, 2, "Gold dust worth at least 25gp, which the spell consumes.", "Arcane Lock", 1, false, 2, "Lore" },
|
||||||
|
{ 15, 6, "Wizard", "V;S;M", true, "You create a Large hand of shimmering, translucent force in an unoccupied space that you can see within range. The hand lasts for the spell's duration, and it moves at your command, mimicking the movements of your own hand.;The hand is an object that has AC 20 and hit points equal to your hit point maximum. If it drops to 0 hit points, the spell ends. It has a Strength of 26 (+8) and a Dexterity of 10 (+0). The hand doesn't fill its space.;When you cast the spell and as a bonus action on your subsequent turns, you can move the hand up to 60 feet and then cause one of the following effects with it.;Clenched Fist.; The hand strikes one creature or object within 5 feet of it. Make a melee spell attack for the hand using your game statistics. On a hit, the target takes 4d8 force damage.;Forceful Hand.; The hand attempts to push a creature within 5 feet of it in a direction you choose. Make a check with the hand's Strength contested by the Strength (Athletics) check of the target. If the target is Medium or smaller, you have advantage on the check. If you succeed, the hand pushes the target up to 5 feet plus a number of feet equal to five times your spellcasting ability modifier. The hand moves with the target to remain within 5 feet of it.;Grasping Hand.; The hand attempts to grapple a Huge or smaller creature within 5 feet of it. You use the hand's Strength score to resolve the grapple. If the target is Medium or smaller, you have advantage on the check. While the hand is grappling the target, you can use a bonus action to have the hand crush it. When you do so, the target takes bludgeoning damage equal to 2d6 + your spellcasting ability modifier.;Interposing Hand.; The hand interposes itself between you and a creature you choose until you give the hand a different command. The hand moves to stay between you and the target, providing you with half cover against the target. The target can't move through the hand's space if its Strength score is less than or equal to the hand's Strength score. If its Strength score is higher than the hand's Strength score, the target can move toward you through the hand's space, but that space is difficult terrain for the target.", 3, "When you cast this spell using a spell slot of 6th level or higher, the damage from the clenched fist option increases by 2d8 and the damage from the grasping hand increases by 2d6 for each slot level above 5th.", 5, "An eggshell and a snakeskin glove.", "Arcane Hand", 11, false, 0, null },
|
||||||
|
{ 14, 6, "Cleric;Wizard", "V;S;M", true, "You create an invisible, magical eye within range that hovers in the air for the duration.;You mentally receive visual information from the eye, which has normal vision and darkvision out to 30 feet. The eye can look in every direction.;As an action, you can move the eye up to 30 feet in any direction. There is no limit to how far away from you the eye can move, but it can't enter another plane of existence. A solid barrier blocks the eye's movement, but the eye can pass through an opening as small as 1 inch in diameter.", 5, null, 4, "A bit of bat fur.", "Arcane Eye", 7, false, 6, null },
|
||||||
|
{ 13, 2, "Druid;Wizard", "V;S;M", false, "This spell attracts or repels creatures of your choice. You target something within range, either a Huge or smaller object or creature or an area that is no larger than a 200-foot cube. Then specify a kind of intelligent creature, such as red dragons, goblins, or vampires. You invest the target with an aura that either attracts or repels the specified creatures for the duration. Choose antipathy or sympathy as the aura's effect.;Antipathy.; The enchantment causes creatures of the kind you designated to feel an intense urge to leave the area and avoid the target. When such a creature can see the target or comes within 60 feet of it, the creature must succeed on a wisdom saving throw or become frightened. The creature remains frightened while it can see the target or is within 60 feet of it. While frightened by the target, the creature must use its movement to move to the nearest safe spot from which it can't see the target. If the creature moves more than 60 feet from the target and can't see it, the creature is no longer frightened, but the creature becomes frightened again if it regains sight of the target or moves within 60 feet of it.;Sympathy.; The enchantment causes the specified creatures to feel an intense urge to approach the target while within 60 feet of it or able to see it. When such a creature can see the target or comes within 60 feet of it, the creature must succeed on a wisdom saving throw or use its movement on each of its turns to enter the area or move within reach of the target. When the creature has done so, it can't willingly move away from the target. If the target damages or otherwise harms an affected creature, the affected creature can make a wisdom saving throw to end the effect, as described below.;Ending the Effect.; If an affected creature ends its turn while not within 60 feet of the target or able to see it, the creature makes a wisdom saving throw. On a successful save, the creature is no longer affected by the target and recognizes the feeling of repugnance or attraction as magical. In addition, a creature affected by the spell is allowed another wisdom saving throw every 24 hours while the spell persists.;A creature that successfully saves against this effect is immune to it for 1 minute, after which time it can be affected again.", 10, null, 8, "Either a lump of alum soaked in vinegar for the antipathy effect or a drop of honey for the sympathy effect.", "Antipathy/Sympathy", 8, false, 4, null },
|
||||||
|
{ 12, 6, "Cleric;Wizard", "V;S;M", true, "A 10-foot-radius invisible sphere of antimagic surrounds you. This area is divorced from the magical energy that suffuses the multiverse. Within the sphere, spells can't be cast, summoned creatures disappear, and even magic items become mundane. Until the spell ends, the sphere moves with you, centered on you.;Spells and other magical effects, except those created by an artifact or a deity, are suppressed in the sphere and can't protrude into it. A slot expended to cast a suppressed spell is consumed. While an effect is suppressed, it doesn't function, but the time it spends suppressed counts against its duration.;Targeted Effects. Spells and other magical effects, such as magic missile and charm person, that target a creature or an object in the sphere have no effect on that target.;Areas of Magic. The area of another spell or magical effect, such as fireball, can't extend into the sphere. If the sphere overlaps an area of magic, the part of the area that is covered by the sphere is suppressed. For example, the flames created by a wall of fire are suppressed within the sphere, creating a gap in the wall if the overlap is large enough.;Spells. Any active spell or other magical effect on a creature or an object in the sphere is suppressed while the creature or object is in it.;Magic Items. The properties and powers of magic items are suppressed in the sphere. For example, a +1 longsword in the sphere functions as a nonmagical longsword.;A magic weapon's properties and powers are suppressed if it is used against a target in the sphere or wielded by an attacker in the sphere. If a magic weapon or a piece of magic ammunition fully leaves the sphere (for example, if you fire a magic arrow or throw a magic spear at a target outside the sphere), the magic of the item ceases to be suppressed as soon as it exits.;Magical Travel. Teleportation and planar travel fail to work in the sphere, whether the sphere is the destination or the departure point for such magical travel. A portal to another location, world, or plane of existence, as well as an opening to an extradimensional space such as that created by the rope trick spell, temporarily closes while in the sphere.;Creatures and Objects. A creature or object summoned or created by magic temporarily winks out of existence in the sphere. Such a creature instantly reappears once the space the creature occupied is no longer within the sphere.;Dispel Magic. Spells and magical effects such as dispel magic have no effect on the sphere. Likewise, the spheres created by different antimagic field spells don't nullify each other.", 5, null, 8, "A pinch of powdered iron or iron filings.", "Antimagic Field", 0, false, 2, null },
|
||||||
|
{ 11, 6, "Druid", "V;S", true, "A shimmering barrier extends out from you in a 10-foot radius and moves with you, remaining centered on you and hedging out creatures other than undead and constructs. The barrier lasts for the duration.;The barrier prevents an affected creature from passing or reaching through. An affected creature can cast spells or make attacks with ranged or reach weapons through the barrier.;If you move so that an affected creature is forced to pass through the barrier, the spell ends.", 5, null, 5, null, "Antilife Shell", 0, false, 2, null },
|
||||||
|
{ 10, 6, "Bard;Sorcerer;Wizard", "V;S", true, "Objects come to life at your command. Choose up to ten nonmagical objects within range that are not being worn or carried. Medium targets count as two objects, Large targets count as four objects, Huge targets count as eight objects. You can't animate any object larger than Huge. Each target animates and becomes a creature under your control until the spell ends or until reduced to 0 hit points.;As a bonus action, you can mentally command any creature you made with this spell if the creature is within 500 feet of you (if you control multiple creatures, you can command any or all of them at the same time, issuing the same command to each one). You decide what action the creature will take and where it will move during its next turn, or you can issue a general command, such as to guard a particular chamber or corridor. If you issue no commands, the creature only defends itself against hostile creatures. Once given an order, the creature continues to follow it until its task is complete.;An animated object is a construct with AC, hit points, attacks, Strength, and Dexterity determined by its size. Its Constitution is 10 and its Intelligence and Wisdom are 3, and its Charisma is 1. Its speed is 30 feet, if the object lacks legs or other appendages it can use for locomotion, it instead has a flying speed of 30 feet and can hover. If the object is securely attached to a surface or a larger object, such as a chain bolted to a wall, its speed is 0. It has blindsight with a radius of 30 feet and is blind beyond that distance. When the animated object drops to 0 hit points, it reverts to its original object form, and any remaining damage carries over to its original object form.;If you command an object to attack, it can make a single melee attack against a creature within 5 feet of it. It makes a slam attack with an attack bonus and bludgeoning damage determined by its size. The DM might rule that a specific object inflicts slashing or piercing damage based on its form.", 3, "If you cast this spell using a spell slot of 6th level or higher, you can animate two additional objects for each slot level above 5th.", 5, null, "Animate Objects", 11, false, 3, null }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Spells",
|
||||||
|
columns: new[] { "Id", "CastingTime", "Classes", "Components", "Concentration", "Description", "Duration", "HigherLevel", "Level", "Material", "Name", "Range", "Ritual", "School", "Subclasses" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 17, 6, "Bard;Wizard", "V;S;M", true, "You create a sword-shaped plane of force that hovers within range. It lasts for the duration.;When the sword appears, you make a melee spell attack against a target of your choice within 5 feet of the sword. On a hit, the target takes 3d10 force damage. Until the spell ends, you can use a bonus action on each of your turns to move the sword up to 20 feet to a spot you can see and repeat this attack against the same target or a different one.", 3, null, 7, "A miniature platinum sword with a grip and pommel of copper and zinc, worth 250 gp.", "Arcane Sword", 8, false, 0, null },
|
||||||
|
{ 9, 0, "Cleric;Wizard", "V;S;M", false, "This spell creates an undead servant. Choose a pile of bones or a corpse of a Medium or Small humanoid within range. Your spell imbues the target with a foul mimicry of life, raising it as an undead creature. The target becomes a skeleton if you chose bones or a zombie if you chose a corpse (the DM has the creature's game statistics).;On each of your turns, you can use a bonus action to mentally command any creature you made with this spell if the creature is within 60 feet of you (if you control multiple creatures, you can command any or all of them at the same time, issuing the same command to each one). You decide what action the creature will take and where it will move during its next turn, or you can issue a general command, such as to guard a particular chamber or corridor. If you issue no commands, the creature only defends itself against hostile creatures. Once given an order, the creature continues to follow it until its task is complete.;The creature is under your control for 24 hours, after which it stops obeying any command you've given it. To maintain control of the creature for another 24 hours, you must cast this spell on the creature again before the current 24-hour period ends. This use of the spell reasserts your control over up to four creatures you have animated with this spell, rather than animating a new one.", 0, "When you cast this spell using a spell slot of 4th level or higher, you animate or reassert control over two additional undead creatures for each slot level above 3rd. Each of the creatures must come from a different corpse or pile of bones.", 3, "A drop of blood, a piece of flesh, and a pinch of bone dust.", "Animate Dead", 6, false, 5, "Lore" },
|
||||||
|
{ 7, 6, "Bard;Druid;Ranger", "V;S;M", false, "By means of this spell, you use an animal to deliver a message. Choose a Tiny beast you can see within range, such as a squirrel, a blue jay, or a bat. You specify a location, which you must have visited, and a recipient who matches a general description, such as “a man or woman dressed in the uniform of the town guardâ€<C3A2> or “a red-haired dwarf wearing a pointed hat.â€<C3A2> You also speak a message of up to twenty-five words. The target beast travels for the duration of the spell toward the specified location, covering about 50 miles per 24 hours for a flying messenger, or 25 miles for other animals.;When the messenger arrives, it delivers your message to the creature that you described, replicating the sound of your voice. The messenger speaks only to a creature matching the description you gave. If the messenger doesn't reach its destination before the spell ends, the message is lost, and the beast makes its way back to where you cast this spell.", 8, "If you cast this spell using a spell slot of 3nd level or higher, the duration of the spell increases by 48 hours for each slot level above 2nd.", 2, "A morsel of food.", "Animal Messenger", 7, true, 4, "Lore" },
|
||||||
|
{ 6, 6, "Bard;Cleric;Druid;Ranger", "V;S;M", false, "This spell lets you convince a beast that you mean it no harm. Choose a beast that you can see within range. It must see and hear you. If the beast’s Intelligence is 4 or higher, the spell fails. Otherwise, the beast must succeed on a wisdom saving throw or be charmed by you for the spell’s duration. If you or one of your companions harms the target, the spells ends.", 8, null, 1, "A morsel of food.", "Animal Friendship", 7, false, 4, null },
|
||||||
|
{ 5, 6, "Sorcerer;Wizard", "V;S", true, "You assume a different form. When you cast the spell, choose one of the following options, the effects of which last for the duration of the spell. While the spell lasts, you can end one option as an action to gain the benefits of a different one.;Aquatic Adaptation.; You adapt your body to an aquatic environment, sprouting gills and growing webbing between your fingers. You can breathe underwater and gain a swimming speed equal to your walking speed.;Change Appearance.; You transform your appearance. You decide what you look like, including your height, weight, facial features, sound of your voice, hair length, coloration, and distinguishing characteristics, if any. You can make yourself appear as a member of another race, though none of your statistics change. You also can't appear as a creature of a different size than you, and your basic shape stays the same. If you're bipedal, you can't use this spell to become quadrupedal, for instance. At any time for the duration of the spell, you can use your action to change your appearance in this way again.;Natural Weapons.; You grow claws, fangs, spines, horns, or a different natural weapon of your choice. Your unarmed strikes deal 1d6 bludgeoning, piercing, or slashing damage, as appropriate to the natural weapon you chose, and you are proficient with your unarmed strikes. Finally, the natural weapon is magic and you have a +1 bonus to the attack and damage rolls you make using it.", 5, null, 2, null, "Alter Self", 0, false, 3, "Lore" },
|
||||||
|
{ 4, 0, "Ranger;Wizard", "V;S;M", false, "You set an alarm against unwanted intrusion. Choose a door, a window, or an area within range that is no larger than a 20-foot cube. Until the spell ends, an alarm alerts you whenever a Tiny or larger creature touches or enters the warded area. When you cast the spell, you can designate creatures that won't set off the alarm. You also choose whether the alarm is mental or audible.;A mental alarm alerts you with a ping in your mind if you are within 1 mile of the warded area. This ping awakens you if you are sleeping.;An audible alarm produces the sound of a hand bell for 10 seconds within 60 feet.", 7, null, 1, "A tiny bell and a piece of fine silver wire.", "Alarm", 7, true, 2, "Lore" },
|
||||||
|
{ 3, 6, "Cleric;Paladin", "V;S;M", false, "Your spell bolsters your allies with toughness and resolve. Choose up to three creatures within range. Each target's hit point maximum and current hit points increase by 5 for the duration.", 7, "When you cast this spell using a spell slot of 3rd level or higher, a target's hit points increase by an additional 5 for each slot level above 2nd.", 2, "A tiny strip of white cloth.", "Aid", 7, false, 2, "Lore" },
|
||||||
|
{ 2, 6, "Sorcerer;Wizard", "V;S", false, "You hurl a bubble of acid. Choose one creature within range, or choose two creatures within range that are within 5 feet of each other. A target must succeed on a dexterity saving throw or take 1d6 acid damage.;This spell's damage increases by 1d6 when you reach 5th level (2d6), 11th level (3d6), and 17th level (4d6).", 0, null, 0, null, "Acid Splash", 8, false, 1, "Lore" },
|
||||||
|
{ 1, 6, "Wizard", "V;S;M", false, "A shimmering green arrow streaks toward a target within range and bursts in a spray of acid. Make a ranged spell attack against the target. On a hit, the target takes 4d4 acid damage immediately and 2d4 acid damage at the end of its next turn. On a miss, the arrow splashes the target with acid for half as much of the initial damage and no damage at the end of its next turn.", 0, "When you cast this spell using a spell slot of 3rd level or higher, the damage (both initial and later) increases by 1d4 for each slot level above 2nd.", 2, " Powdered rhubarb leaf and an adder’s stomach.", "Acid Arrow", 9, false, 0, "Lore;Land" },
|
||||||
|
{ 8, 6, "Druid", "V;S", true, "Your magic turns others into beasts. Choose any number of willing creatures that you can see within range. You transform each target into the form of a Large or smaller beast with a challenge rating of 4 or lower. On subsequent turns, you can use your action to transform affected creatures into new forms.;The transformation lasts for the duration for each target, or until the target drops to 0 hit points or dies. You can choose a different form for each target. A target's game statistics are replaced by the statistics of the chosen beast, though the target retains its alignment and Intelligence, Wisdom, and Charisma scores. The target assumes the hit points of its new form, and when it reverts to its normal form, it returns to the number of hit points it had before it transformed. If it reverts as a result of dropping to 0 hit points, any excess damage carries over to its normal form. As long as the excess damage doesn't reduce the creature's normal form to 0 hit points, it isn't knocked unconscious. The creature is limited in the actions it can perform by the nature of its new form, and it can't speak or cast spells.;The target's gear melds into the new form. The target can't activate, wield, or otherwise benefit from any of its equipment.", 8, null, 8, null, "Animal Shapes", 7, false, 3, null },
|
||||||
|
{ 38, 6, "Sorcerer;Wizard", "V;S;M", false, "You create a bolt of lightning that arcs toward a target of your choice that you can see within range. Three bolts then leap from that target to as many as three other targets, each of which must be within 30 feet of the first target. A target can be a creature or an object and can be targeted by only one of the bolts.;A target must make a dexterity saving throw. The target takes 10d8 lightning damage on a failed save, or half as much damage on a successful one.", 0, "When you cast this spell using a spell slot of 7th level or higher, one additional bolt leaps from the first target to another target for each slot level above 6th.", 6, "A bit of fur, a piece of amber, glass, or a crystal rod, and three silver pins.", "Chain Lightning", 12, false, 0, null },
|
||||||
|
{ 18, 6, "Wizard", "V;S;M", false, "You place an illusion on a creature or an object you touch so that divination spells reveal false information about it. The target can be a willing creature or an object that isn't being carried or worn by another creature.;When you cast the spell, choose one or both of the following effects. The effect lasts for the duration. If you cast this spell on the same creature or object every day for 30 days, placing the same effect on it each time, the illusion lasts until it is dispelled.;False Aura.; You change the way the target appears to spells and magical effects, such as detect magic, that detect magical auras. You can make a nonmagical object appear magical, a magical object appear nonmagical, or change the object's magical aura so that it appears to belong to a specific school of magic that you choose. When you use this effect on an object, you can make the false magic apparent to any creature that handles the item.;Mask.; You change the way the target appears to spells and magical effects that detect creature types, such as a paladin's Divine Sense or the trigger of a symbol spell. You choose a creature type and other spells and magical effects treat the target as if it were a creature of that type or of that alignment.", 8, null, 2, "A small square of silk.", "Arcanist's Magic Aura", 1, false, 7, "Lore" },
|
||||||
|
{ 20, 0, "Cleric", "V;S;M", false, "By casting gem-inlaid sticks, rolling dragon bones, laying out ornate cards, or employing some other divining tool, you receive an omen from an otherworldly entity about the results of a specific course of action that you plan to take within the next 30 minutes. The DM chooses from the following possible omens:;- Weal, for good results;- Woe, for bad results;- Weal and woe, for both good and bad results;- Nothing, for results that aren't especially good or bad;The spell doesn't take into account any possible circumstances that might change the outcome, such as the casting of additional spells or the loss or gain of a companion.;If you cast the spell two or more times before completing your next long rest, there is a cumulative 25 percent chance for each casting after the first that you get a random reading. The DM makes this roll in secret.", 0, null, 2, "Specially marked sticks, bones, or similar tokens worth at least 25gp.", "Augury", 0, true, 6, "Lore" },
|
||||||
|
{ 36, 6, "Druid", "V;S", true, "A storm cloud appears in the shape of a cylinder that is 10 feet tall with a 60-foot radius, centered on a point you can see 100 feet directly above you. The spell fails if you can't see a point in the air where the storm cloud could appear (for example, if you are in a room that can't accommodate the cloud).;When you cast the spell, choose a point you can see within range. A bolt of lightning flashes down from the cloud to that point. Each creature within 5 feet of that point must make a dexterity saving throw. A creature takes 3d10 lightning damage on a failed save, or half as much damage on a successful one. On each of your turns until the spell ends, you can use your action to call down lightning in this way again, targeting the same point or a different one.;If you are outdoors in stormy conditions when you cast this spell, the spell gives you control over the existing storm instead of creating a new one. Under such conditions, the spell's damage increases by 1d10.", 4, "When you cast this spell using a spell slot of 4th or higher level, the damage increases by 1d10 for each slot level above 3rd.", 3, null, "Call Lightning", 11, false, 1, "Lore;Land" },
|
||||||
|
{ 35, 6, "Sorcerer;Wizard", "V;S", false, "As you hold your hands with thumbs touching and fingers spread, a thin sheet of flames shoots forth from your outstretched fingertips. Each creature in a 15-foot cone must make a dexterity saving throw. A creature takes 3d6 fire damage on a failed save, or half as much damage on a successful one.;The fire ignites any flammable objects in the area that aren't being worn or carried.", 0, "When you cast this spell using a spell slot of 2nd level or higher, the damage increases by 1d6 for each slot level above 1st.", 1, null, "Burning Hands", 0, false, 0, "Lore;Fiend" },
|
||||||
|
{ 34, 8, "Paladin", "V", true, "The next time you hit a creature with a weapon attack before this spell ends, the weapon gleams with astral radiance as you strike. The attack deals an extra 2d6 radiant damage to the target, which becomes visible if it’s invisible, and the target sheds dim light in a 5-foot radius and can’t become invisible until the spell ends.", 3, null, 2, null, "Branding Smite", 0, false, 0, null },
|
||||||
|
{ 33, 6, "Sorcerer;Wizard", "V", true, "Your body becomes blurred, shifting and wavering to all who can see you. For the duration, any creature has disadvantage on attack rolls against you. An attacker is immune to this effect if it doesn't rely on sight, as with blindsight, or can see through illusions, as with truesight.", 3, null, 2, null, "Blur", 0, false, 7, "Lore;Land" },
|
||||||
|
{ 32, 6, "Sorcerer;Wizard", "V;S", false, "Roll a d20 at the end of each of your turns for the duration of the spell. On a roll of 11 or higher, you vanish from your current plane of existence and appear in the Ethereal Plane (the spell fails and the casting is wasted if you were already on that plane). At the start of your next turn, and when the spell ends if you are on the Ethereal Plane, you return to an unoccupied space of your choice that you can see within 10 feet of the space you vanished from. If no unoccupied space is available within that range, you appear in the nearest unoccupied space (chosen at random if more than one space is equally near). You can dismiss this spell as an action.;While on the Ethereal Plane, you can see and hear the plane you originated from, which is cast in shades of gray, and you can't see anything there more than 60 feet away. You can only affect and be affected by other creatures on the Ethereal Plane. Creatures that aren't there can't perceive you or interact with you, unless they have the ability to do so.", 3, null, 3, null, "Blink", 0, false, 3, "Lore" },
|
||||||
|
{ 31, 6, "Bard;Cleric;Sorcerer;Wizard", "V", false, "You can blind or deafen a foe. Choose one creature that you can see within range to make a constitution saving throw. If it fails, the target is either blinded or deafened (your choice) for the duration. At the end of each of its turns, the target can make a constitution saving throw. On a success, the spell ends.", 3, "When you cast this spell using a spell slot of 3rd level or higher, you can target one additional creature for each slot level above 2nd.", 2, null, "Blindness/Deafness", 7, false, 5, "Lore;Fiend" },
|
||||||
|
{ 30, 6, "Druid;Sorcerer;Warlock;Wizard", "V;S", false, "Necromantic energy washes over a creature of your choice that you can see within range, draining moisture and vitality from it. The target must make a constitution saving throw. The target takes 8d8 necrotic damage on a failed save, or half as much damage on a successful one. The spell has no effect on undead or constructs.;If you target a plant creature or a magical plant, it makes the saving throw with disadvantage, and the spell deals maximum damage to it.;If you target a nonmagical plant that isn't a creature, such as a tree or shrub, it doesn't make a saving throw, it simply withers and dies.", 0, "When you cast this spell using a spell slot of 5th level of higher, the damage increases by 1d8 for each slot level above 4th.", 4, null, "Blight", 7, false, 5, "Land" },
|
||||||
|
{ 19, 2, "Cleric;Warlock;Wizard", "V;S;M", false, "You and up to eight willing creatures within range project your astral bodies into the Astral Plane (the spell fails and the casting is wasted if you are already on that plane). The material body you leave behind is unconscious and in a state of suspended animation, it doesn't need food or air and doesn't age.;Your astral body resembles your mortal form in almost every way, replicating your game statistics and possessions. The principal difference is the addition of a silvery cord that extends from between your shoulder blades and trails behind you, fading to invisibility after 1 foot. This cord is your tether to your material body. As long as the tether remains intact, you can find your way home. If the cord is cut—something that can happen only when an effect specifically states that it does—your soul and body are separated, killing you instantly.;Your astral form can freely travel through the Astral Plane and can pass through portals there leading to any other plane. If you enter a new plane or return to the plane you were on when casting this spell, your body and possessions are transported along the silver cord, allowing you to re-enter your body as you enter the new plane. Your astral form is a separate incarnation. Any damage or other effects that apply to it have no effect on your physical body, nor do they persist when you return to it.;The spell ends for you and your companions when you use your action to dismiss it. When the spell ends, the affected creature returns to its physical body, and it awakens.;The spell might also end early for you or one of your companions. A successful dispel magic spell used against an astral or physical body ends the spell for that creature. If a creature's original body or its astral form drops to 0 hit points, the spell ends for that creature. If the spell ends and the silver cord is intact, the cord pulls the creature's astral form back to its body, ending its state of suspended animation.;If you are returned to your body prematurely, your companions remain in their astral forms and must find their own way back to their bodies, usually by dropping to 0 hit points.", 2, null, 9, "For each creature you affect with this spell, you must provide one jacinth worth at least 1,000gp and one ornately carved bar of silver worth at least 100gp, all of which the spell consumes.", "Astral Projection", 6, false, 5, null },
|
||||||
|
{ 29, 6, "Cleric;Paladin", "V;S;M", true, "You bless up to three creatures of your choice within range. Whenever a target makes an attack roll or a saving throw before the spell ends, the target can roll a d4 and add the number rolled to the attack roll or saving throw.", 3, "When you cast this spell using a spell slot of 2nd level or higher, you can target one additional creature for each slot level above 1st.", 1, "A sprinkling of holy water.", "Bless", 7, false, 4, "Lore;Life" },
|
||||||
|
{ 27, 6, "Wizard", "V;S;M", true, "Squirming, ebony tentacles fill a 20-foot square on ground that you can see within range. For the duration, these tentacles turn the ground in the area into difficult terrain.;When a creature enters the affected area for the first time on a turn or starts its turn there, the creature must succeed on a Dexterity saving throw or take 3d6 bludgeoning damage and be restrained by the tentacles until the spell ends. A creature that starts its turn in the area and is already restrained by the tentacles takes 3d6 bludgeoning damage.;A creature restrained by the tentacles can use its action to make a Strength or Dexterity check (its choice) against your spell save DC. On a success, it frees itself.", 3, null, 4, "A piece of tentacle from a giant octopus or a giant squid", "Black Tentacles", 9, false, 1, null },
|
||||||
|
{ 26, 6, "Bard;Cleric;Wizard", "V;S", true, "You touch a creature, and that creature must succeed on a wisdom saving throw or become cursed for the duration of the spell. When you cast this spell, choose the nature of the curse from the following options:;- Choose one ability score. While cursed, the target has disadvantage on ability checks and saving throws made with that ability score.;- While cursed, the target has disadvantage on attack rolls against you.;- While cursed, the target must make a wisdom saving throw at the start of each of its turns. If it fails, it wastes its action that turn doing nothing.;- While the target is cursed, your attacks and spells deal an extra 1d8 necrotic damage to the target.;A remove curse spell ends this effect. At the DM's option, you may choose an alternative curse effect, but it should be no more powerful than those described above. The DM has final say on such a curse's effect.", 3, "If you cast this spell using a spell slot of 4th level or higher, the duration is concentration, up to 10 minutes. If you use a spell slot of 5th level or higher, the duration is 8 hours. If you use a spell slot of 7th level or higher, the duration is 24 hours. If you use a 9th level spell slot, the spell lasts until it is dispelled. Using a spell slot of 5th level or higher grants a duration that doesn't require concentration.", 3, null, "Bestow Curse", 1, false, 5, "Lore" },
|
||||||
|
{ 25, 6, "Cleric", "V;S", true, "This spell bestows hope and vitality. Choose any number of creatures within range. For the duration, each target has advantage on wisdom saving throws and death saving throws, and regains the maximum number of hit points possible from any healing.", 3, null, 3, null, "Beacon of Hope", 7, false, 2, "Lore;Life;Devotion" },
|
||||||
|
{ 24, 6, "Druid;Ranger", "V;S;M", true, "You touch a willing creature. Until the spell ends, the target's skin has a rough, bark-like appearance, and the target's AC can't be less than 16, regardless of what kind of armor it is wearing.", 5, null, 2, "A handful of oak bark.", "Barkskin", 1, false, 3, "Lore;Land" },
|
||||||
|
{ 23, 6, "Cleric;Paladin;Sorcerer;Warlock;Wizard", "V;S;M", true, "You attempt to send one creature that you can see within range to another plane of existence. The target must succeed on a charisma saving throw or be banished.;If the target is native to the plane of existence you're on, you banish the target to a harmless demiplane. While there, the target is incapacitated. The target remains there until the spell ends, at which point the target reappears in the space it left or in the nearest unoccupied space if that space is occupied.;If the target is native to a different plane of existence than the one you're on, the target is banished with a faint popping noise, returning to its home plane. If the spell ends before 1 minute has passed, the target reappears in the space it left or in the nearest unoccupied space if that space is occupied. Otherwise, the target doesn't return.", 3, "When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th.", 4, "An item distasteful to the target.", "Banishment", 8, false, 2, null },
|
||||||
|
{ 22, 6, "Bard;Cleric", "V;S;M", true, "Up to three creatures of your choice that you can see within range must make charisma saving throws. Whenever a target that fails this saving throw makes an attack roll or a saving throw before the spell ends, the target must roll a d4 and subtract the number rolled from the attack roll or saving throw.", 3, "When you cast this spell using a spell slot of 2nd level or higher, you can target one additional creature for each slot level above 1st.", 1, "A drop of blood.", "Bane", 7, false, 4, "Lore" },
|
||||||
|
{ 21, 3, "Bard;Druid", "V;S;M", false, "After spending the casting time tracing magical pathways within a precious gemstone, you touch a Huge or smaller beast or plant. The target must have either no Intelligence score or an Intelligence of 3 or less. The target gains an Intelligence of 10. The target also gains the ability to speak one language you know. If the target is a plant, it gains the ability to move its limbs, roots, vines, creepers, and so forth, and it gains senses similar to a human's. Your DM chooses statistics appropriate for the awakened plant, such as the statistics for the awakened shrub or the awakened tree.;The awakened beast or plant is charmed by you for 30 days or until you or your companions do anything harmful to it. When the charmed condition ends, the awakened creature chooses whether to remain friendly to you, based on how you treated it while it was charmed.", 0, null, 5, "An agate worth at least 1,000 gp, which the spell consumes.", "Awaken", 1, false, 3, null },
|
||||||
|
{ 28, 6, "Cleric", "V;S", true, "You create a vertical wall of whirling, razor-sharp blades made of magical energy. The wall appears within range and lasts for the duration. You can make a straight wall up to 100 feet long, 20 feet high, and 5 feet thick, or a ringed wall up to 60 feet in diameter, 20 feet high, and 5 feet thick. The wall provides three-quarters cover to creatures behind it, and its space is difficult terrain.;When a creature enters the wall's area for the first time on a turn or starts its turn there, the creature must make a dexterity saving throw. On a failed save, the creature takes 6d10 slashing damage. On a successful save, the creature takes half as much damage.", 4, null, 6, null, "Blade Barrier", 9, false, 0, null },
|
||||||
|
{ 78, 6, "Cleric;Paladin", "V;S", true, "For the duration, you know if there is an aberration, celestial, elemental, fey, fiend, or undead within 30 feet of you, as well as where the creature is located. Similarly, you know if there is a place or object within 30 feet of you that has been magically consecrated or desecrated.;The spell can penetrate most barriers, but it is blocked by 1 foot of stone, 1 inch of common metal, a thin sheet of lead, or 3 feet of wood or dirt.", 4, null, 1, null, "Detect Evil and Good", 0, false, 6, "Lore" },
|
||||||
|
{ 79, 6, "Bard;Cleric;Druid;Paladin;Ranger;Sorcerer;Wizard", "V;S", true, "For the duration, you sense the presence of magic within 30 feet of you. If you sense magic in this way, you can use your action to see a faint aura around any visible creature or object in the area that bears magic, and you learn its school of magic, if any.;The spell can penetrate most barriers, but it is blocked by 1 foot of stone, 1 inch of common metal, a thin sheet of lead, or 3 feet of wood or dirt.", 4, null, 1, null, "Detect Magic", 0, true, 6, "Lore" },
|
||||||
|
{ 80, 6, "Cleric;Druid;Paladin;Ranger", "V;S;M", true, "For the duration, you can sense the presence and location of poisons, poisonous creatures, and diseases within 30 feet of you. You also identify the kind of poison, poisonous creature, or disease in each case.;The spell can penetrate most barriers, but it is blocked by 1 foot of stone, 1 inch of common metal, a thin sheet of lead, or 3 feet of wood or dirt.", 4, null, 1, "A yew leaf.", "Detect Poison and Disease", 0, true, 6, "Lore" },
|
||||||
|
{ 137, 6, "Bard;Warlock", "V", false, "Until the spell ends, when you make a Charisma check, you can replace the number you roll with a 15. Additionally, no matter what you say, magic that would determine if you are telling the truth indicates that you are being truthful.", 5, null, 8, null, "Glibness", 0, false, 3, null },
|
||||||
|
{ 136, 6, "Druid", "V;S", true, "You transform up to ten centipedes, three spiders, five wasps, or one scorpion within range into giant versions of their natural forms for the duration. A centipede becomes a giant centipede, a spider becomes a giant spider, a wasp becomes a giant wasp, and a scorpion becomes a giant scorpion.;Each creature obeys your verbal commands, and in combat, they act on your turn each round. The DM has the statistics for these creatures and resolves their actions and movement.;A creature remains in its giant size for the duration, until it drops to 0 hit points, or until you use an action to dismiss the effect on it.;The DM might allow you to choose different targets. For example, if you transform a bee, its giant version might have the same statistics as a giant wasp.", 4, null, 4, null, "Giant Insect", 7, false, 3, null },
|
||||||
|
{ 135, 6, "Cleric;Wizard", "V;S;M", false, "You touch a corpse or other remains. For the duration, the target is protected from decay and can't become undead.;The spell also effectively extends the time limit on raising the target from the dead, since days spent under the influence of this spell don't count against the time limit of spells such as raise dead.", 10, null, 2, "A pinch of salt and one copper piece placed on each of the corpse's eyes, which must remain there for the duration.", "Gentle Repose", 1, true, 5, "Lore" },
|
||||||
|
{ 134, 0, "Bard;Cleric;Druid;Paladin;Wizard", "V", false, "You place a magical command on a creature that you can see within range, forcing it to carry out some service or refrain from some action or course of activity as you decide. If the creature can understand you, it must succeed on a wisdom saving throw or become charmed by you for the duration. While the creature is charmed by you, it takes 5d10 psychic damage each time it acts in a manner directly counter to your instructions, but no more than once each day. A creature that can't understand you is unaffected by the spell.;You can issue any command you choose, short of an activity that would result in certain death. Should you issue a suicidal command, the spell ends.;You can end the spell early by using an action to dismiss it. A remove curse, greater restoration, or wish spell also ends it.", 11, "When you cast this spell using a spell slot of 7th or 8th level, the duration is 1 year. When you cast this spell using a spell slot of 9th level, the spell lasts until it is ended by one of the spells mentioned above.", 5, null, "Geas", 8, false, 4, null },
|
||||||
|
{ 133, 6, "Cleric;Sorcerer;Wizard", "V;S;M", true, "You conjure a portal linking an unoccupied space you can see within range to a precise location on a different plane of existence. The portal is a circular opening, which you can make 5 to 20 feet in diameter. You can orient the portal in any direction you choose. The portal lasts for the duration.;The portal has a front and a back on each plane where it appears. Travel through the portal is possible only by moving through its front. Anything that does so is instantly transported to the other plane, appearing in the unoccupied space nearest to the portal.;Deities and other planar rulers can prevent portals created by this spell from opening in their presence or anywhere within their domains.;When you cast this spell, you can speak the name of a specific creature (a pseudonym, title, or nickname doesn't work). If that creature is on a plane other than the one you are on, the portal opens in the named creature's immediate vicinity and draws the creature through it to the nearest unoccupied space on your side of the portal. You gain no special power over the creature, and it is free to act as the DM deems appropriate. It might leave, attack you, or help you.", 3, null, 9, "A diamond worth at least 5,000gp.", "Gate", 8, false, 1, null },
|
||||||
|
{ 132, 6, "Sorcerer;Warlock;Wizard", "V;S;M", true, "You transform a willing creature you touch, along with everything it's wearing and carrying, into a misty cloud for the duration. The spell ends if the creature drops to 0 hit points. An incorporeal creature isn't affected.;While in this form, the target's only method of movement is a flying speed of 10 feet. The target can enter and occupy the space of another creature. The target has resistance to nonmagical damage, and it has advantage on Strength, Dexterity, and constitution saving throws. The target can pass through small holes, narrow openings, and even mere cracks, though it treats liquids as though they were solid surfaces. The target can't fall and remains hovering in the air even when stunned or otherwise incapacitated.;While in the form of a misty cloud, the target can't talk or manipulate objects, and any objects it was carrying or holding can't be dropped, used, or otherwise interacted with. The target can't attack or cast spells.", 5, null, 3, "A bit of gauze and a wisp of smoke.", "Gaseous Form", 1, false, 3, "Lore;Land" },
|
||||||
|
{ 131, 6, "Wizard", "V;S;M", false, "A frigid globe of cold energy streaks from your fingertips to a point of your choice within range, where it explodes in a 60-foot-radius sphere. Each creature within the area must make a constitution saving throw. On a failed save, a creature takes 10d6 cold damage. On a successful save, it takes half as much damage.;If the globe strikes a body of water or a liquid that is principally water (not including water-based creatures), it freezes the liquid to a depth of 6 inches over an area 30 feet square. This ice lasts for 1 minute. Creatures that were swimming on the surface of frozen water are trapped in the ice. A trapped creature can use an action to make a Strength check against your spell save DC to break free.;You can refrain from firing the globe after completing the spell, if you wish. A small globe about the size of a sling stone, cool to the touch, appears in your hand. At any time, you or a creature you give the globe to can throw the globe (to a range of 40 feet) or hurl it with a sling (to the sling's normal range). It shatters on impact, with the same effect as the normal casting of the spell. You can also set the globe down without shattering it. After 1 minute, if the globe hasn't already shattered, it explodes.", 0, "When you cast this spell using a spell slot of 7th level or higher, the damage increases by 1d6 for each slot level above 6th.", 6, "A small crystal sphere.", "Freezing Sphere", 13, false, 0, null },
|
||||||
|
{ 138, 6, "Sorcerer;Wizard", "V;S;M", true, "An immobile, faintly shimmering barrier springs into existence in a 10-foot radius around you and remains for the duration.;Any spell of 5th level or lower cast from outside the barrier can't affect creatures or objects within it, even if the spell is cast using a higher level spell slot. Such a spell can target creatures and objects within the barrier, but the spell has no effect on them. Similarly, the area within the barrier is excluded from the areas affected by such spells.", 3, "When you cast this spell using a spell slot of 7th level or higher, the barrier blocks spells of one level higher for each slot level above 6th.", 6, "A glass or crystal bead that shatters when the spell ends.", "Globe of Invulnerability", 0, false, 2, null },
|
||||||
|
{ 130, 6, "Bard;Cleric;Druid;Ranger", "V;S;M", false, "You touch a willing creature. For the duration, the target's movement is unaffected by difficult terrain, and spells and other magical effects can neither reduce the target's speed nor cause the target to be paralyzed or restrained.;The target can also spend 5 feet of movement to automatically escape from nonmagical restraints, such as manacles or a creature that has it grappled. Finally, being underwater imposes no penalties on the target's movement or attacks.", 5, null, 4, "A leather strap, bound around the arm or a similar appendage.", "Freedom of Movement", 1, false, 2, "Land;Devotion" }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Spells",
|
||||||
|
columns: new[] { "Id", "CastingTime", "Classes", "Components", "Concentration", "Description", "Duration", "HigherLevel", "Level", "Material", "Name", "Range", "Ritual", "School", "Subclasses" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 128, 6, "Bard;Warlock;Wizard", "V;S;M", false, "An immobile, invisible, cube-shaped prison composed of magical force springs into existence around an area you choose within range. The prison can be a cage or a solid box, as you choose.;A prison in the shape of a cage can be up to 20 feet on a side and is made from 1/2-inch diameter bars spaced 1/2 inch apart.;A prison in the shape of a box can be up to 10 feet on a side, creating a solid barrier that prevents any matter from passing through it and blocking any spells cast into or out from the area.;When you cast the spell, any creature that is completely inside the cage's area is trapped. Creatures only partially within the area, or those too large to fit inside the area, are pushed away from the center of the area until they are completely outside the area.;A creature inside the cage can't leave it by nonmagical means. If the creature tries to use teleportation or interplanar travel to leave the cage, it must first make a charisma saving throw. On a success, the creature can use that magic to exit the cage. On a failure, the creature can't exit the cage and wastes the use of the spell or effect. The cage also extends into the Ethereal Plane, blocking ethereal travel.;This spell can't be dispelled by dispel magic.", 5, null, 7, "Ruby dust worth 1,500 gp.", "Forcecage", 10, false, 0, null },
|
||||||
|
{ 127, 1, "Cleric", "V;S;M", false, "You create a ward against magical travel that protects up to 40,000 square feet of floor space to a height of 30 feet above the floor. For the duration, creatures can't teleport into the area or use portals, such as those created by the gate spell, to enter the area. The spell proofs the area against planar travel, and therefore prevents creatures from accessing the area by way of the Astral Plane, Ethereal Plane, Feywild, Shadowfell, or the plane shift spell.;In addition, the spell damages types of creatures that you choose when you cast it. Choose one or more of the following: celestials, elementals, fey, fiends, and undead. When a chosen creature enters the spell's area for the first time on a turn or starts its turn there, the creature takes 5d10 radiant or necrotic damage (your choice when you cast this spell).;When you cast this spell, you can designate a password. A creature that speaks the password as it enters the area takes no damage from the spell.;The spell's area can't overlap with the area of another forbiddance spell. If you cast forbiddance every day for 30 days in the same location, the spell lasts until it is dispelled, and the material components are consumed on the last casting.", 8, null, 6, "A sprinkling of holy water, rare incense, and powdered ruby worth at least 1,000 gp.", "Forbiddance", 1, true, 2, null },
|
||||||
|
{ 126, 6, "Druid;Ranger;Sorcerer;Wizard", "V;S", true, "You create a 20-foot-radius sphere of fog centered on a point within range. The sphere spreads around corners, and its area is heavily obscured. It lasts for the duration or until a wind of moderate or greater speed (at least 10 miles per hour) disperses it.", 5, "When you cast this spell using a spell slot of 2nd level or higher, the radius of the fog increases by 20 feet for each slot level above 1st.", 1, null, "Fog Cloud", 11, false, 1, "Lore" },
|
||||||
|
{ 125, 6, "Sorcerer;Warlock;Wizard", "V;S;M", true, "You touch a willing creature. The target gains a flying speed of 60 feet for the duration. When the spell ends, the target falls if it is still aloft, unless it can stop the fall.", 4, "When you cast this spell using a spell slot of 4th level or higher, you can target one additional creature for each slot level above 3rd.", 3, "A wing feather from any bird.", "Fly", 1, false, 3, "Lore" },
|
||||||
|
{ 124, 6, "Wizard", "V;S;M", false, "This spell creates a circular, horizontal plane of force, 3 feet in diameter and 1 inch thick, that floats 3 feet above the ground in an unoccupied space of your choice that you can see within range. The disk remains for the duration, and can hold up to 500 pounds. If more weight is placed on it, the spell ends, and everything on the disk falls to the ground.;The disk is immobile while you are within 20 feet of it. If you move more than 20 feet away from it, the disk follows you so that it remains within 20 feet of you. If can move across uneven terrain, up or down stairs, slopes and the like, but it can't cross an elevation change of 10 feet or more. For example, the disk can't move across a 10-foot-deep pit, nor could it leave such a pit if it was created at the bottom.;If you move more than 100 feet away from the disk (typically because it can't move around an obstacle to follow you), the spell ends.", 5, null, 1, "A drop of mercury.", "Floating Disk", 7, true, 1, "Lore" },
|
||||||
|
{ 123, 6, "Warlock;Wizard", "V;S;M", true, "You attempt to turn one creature that you can see within range into stone. If the target's body is made of flesh, the creature must make a constitution saving throw. On a failed save, it is restrained as its flesh begins to harden. On a successful save, the creature isn't affected.;A creature restrained by this spell must make another constitution saving throw at the end of each of its turns. If it successfully saves against this spell three times, the spell ends. If it fails its saves three times, it is turned to stone and subjected to the petrified condition for the duration. The successes and failures don't need to be consecutive, keep track of both until the target collects three of a kind.;If the creature is physically broken while petrified, it suffers from similar deformities if it reverts to its original state.;If you maintain your concentration on this spell for the entire possible duration, the creature is turned to stone until the effect is removed.", 3, null, 6, "A pinch of lime, water, and earth.", "Flesh to Stone", 8, false, 3, null },
|
||||||
|
{ 122, 6, "Druid;Wizard", "V;S;M", true, "A 5-foot-diameter sphere of fire appears in an unoccupied space of your choice within range and lasts for the duration. Any creature that ends its turn within 5 feet of the sphere must make a dexterity saving throw. The creature takes 2d6 fire damage on a failed save, or half as much damage on a successful one.;As a bonus action, you can move the sphere up to 30 feet. If you ram the sphere into a creature, that creature must make the saving throw against the sphere's damage, and the sphere stops moving this turn.;When you move the sphere, you can direct it over barriers up to 5 feet tall and jump it across pits up to 10 feet wide. The sphere ignites flammable objects not being worn or carried, and it sheds bright light in a 20-foot radius and dim light for an additional 20 feet.", 3, "When you cast this spell using a spell slot of 3rd level or higher, the damage increases by 1d6 for each slot level above 2nd.", 2, "A bit of tallow, a pinch of brimstone, and a dusting of powdered iron.", "Flaming Sphere", 8, false, 1, "Lore" },
|
||||||
|
{ 129, 0, "Bard;Druid;Warlock;Wizard", "V;S;M", false, "You touch a willing creature and bestow a limited ability to see into the immediate future. For the duration, the target can't be surprised and has advantage on attack rolls, ability checks, and saving throws. Additionally, other creatures have disadvantage on attack rolls against the target for the duration.;This spell immediately ends if you cast it again before its duration ends.", 7, null, 9, "A hummingbird feather.", "Foresight", 1, false, 6, null },
|
||||||
|
{ 121, 6, "Cleric", "V;S;M", false, "A vertical column of divine fire roars down from the heavens in a location you specify. Each creature in a 10-foot-radius, 40-foot-high cylinder centered on a point within range must make a dexterity saving throw. A creature takes 4d6 fire damage and 4d6 radiant damage on a failed save, or half as much damage on a successful one.", 0, "When you cast this spell using a spell slot of 6th level or higher, the fire damage or the radiant damage (your choice) increases by 1d6 for each slot level above 5th.", 5, "Pinch of sulfur.", "Flame Strike", 8, false, 0, "Devotion;Fiend" },
|
||||||
|
{ 139, 2, "Bard;Cleric;Wizard", "V;S;M", false, "When you cast this spell, you enter a glyph that hurt other creatures, either on a surface (like a table or a portion of a floor or wall) or inside an object that can be closed (like a book a parchment or cabinet) to hide the glyph. If you opt for a surface, the glyph can cover an area of ​​10 feet or less in diameter. If you select an object, it must remain in place. If the object is moved to over 10 feet from where the spell was spell casts, the glyph breeze and the spell expires without being triggered.;The glyph is virtually invisible and roll Intelligence (Investigation) against the fate of your save DC is required to find out.;You determine the shutter glyph while casting the spell. For the glyphs inscribed on a surface, the triggers are typically hit or stand on a glyph remove an object placed on the glyph, approach at a certain distance of the glyph or manipulate an object on which is inscribed the glyph. For the glyphs inscribed in an object, triggers are typically open the object, approaching at a distance from the object, seen or read the glyph. Once the glyph is triggered, the spell ends.;You can refine the trigger conditions so that the spell will work only in certain circumstances or in physical attributes (height or weight), the creature type (eg, only aberrations or the Dark Elves trigger the glyph) or alignment. You can also determine the conditions for certain creatures do not trigger the glyph, using a password, for example.;When you sign the glyph, make a choice between the explosive runes or glyph fate.;Explosive runes.; When triggered, magical energy springs from the glyph in a 20-foot-radius sphere centered on the glyph. The sphere bypasses the corners. Each creature in the area must make a dexterity saving throw or it suffers 5d8 acid damage, lightning, fire, cold or thunder (to be determined during the creation of the glyph). If successful, the damage is halved.;Sort glyph.; You can store a level of 3 or less prepared spell in the glyph to chant during the creation of the glyph. The spell must target one creature or area. The stored spell has no immediate effect when spell casts that way. When the glyph is activated, the stored spell spell casts. If the spell is a target, it will target the creature that triggered the glyph. If the spell affects an area, the area is centered on that creature. If the spell invokes hostile creatures or creates sharp objects or traps, they also appear close as possible to the intruder and attack. If the spell requires concentration, it persists for the duration of the spell.", 1, "When you cast this spell using a 4 or higher is level, the damage explosive runes increased by 1d8 for each level of top slot 3. If you create a glyph spell, you may store a spell whose level is equivalent or less to spell slot used for the custody of the glyph.", 3, "Incense and powdered diamond worth at least 200 gp, the spell consumes.", "Glyph of Warding", 1, false, 2, "Lore" },
|
||||||
|
{ 141, 6, "Wizard", "V;S;M", false, "Slick grease covers the ground in a 10-foot square centered on a point within range and turns it into difficult terrain for the duration.;When the grease appears, each creature standing in its area must succeed on a dexterity saving throw or fall prone. A creature that enters the area or ends its turn there must also succeed on a dexterity saving throw or fall prone.", 3, null, 1, "A bit of pork rind or butter.", "Grease", 8, false, 1, "Lore" },
|
||||||
|
{ 157, 1, "Cleric;Druid", "V;S;M", false, "You bring forth a great feast, including magnificent food and drink. The feast takes 1 hour to consume and disappears at the end of that time, and the beneficial effects don't set in until this hour is over. Up to twelve other creatures can partake of the feast.;A creature that partakes of the feast gains several benefits. The creature is cured of all diseases and poison, becomes immune to poison and being frightened, and makes all wisdom saving throws with advantage. Its hit point maximum also increases by 2d10, and it gains the same number of hit points. These benefits last for 24 hours.", 0, null, 6, "A gem-encrusted bowl worth at least 1,000gp, which the spell consumes.", "Heroes' Feast", 7, false, 1, null },
|
||||||
|
{ 156, 7, "Warlock", "V;S", false, "You point your finger, and the creature that damaged you is momentarily surrounded by hellish flames. The creature must make a dexterity saving throw. It takes 2d10 fire damage on a failed save, or half as much damage on a successful one.", 0, null, 1, null, "Hellish Rebuke", 8, false, 0, null },
|
||||||
|
{ 155, 6, "Bard;Druid", "V;S;M", true, "Choose a manufactured metal object, such as a metal weapon or a suit of heavy or medium metal armor, that you can see within range. You cause the object to glow red-hot. Any creature in physical contact with the object takes 2d8 fire damage when you cast the spell. Until the spell ends, you can use a bonus action on each of your subsequent turns to cause this damage again.;If a creature is holding or wearing the object and takes the damage from it, the creature must succeed on a constitution saving throw or drop the object if it can. If it doesn't drop the object, it has disadvantage on attack rolls and ability checks until the start of your next turn.", 3, "When you cast this spell using a spell slot of 3rd level or higher, the damage increases by 1d8 for each slot level above 2nd.", 2, "A piece of iron and a flame.", "Heat Metal", 8, false, 3, "Lore" },
|
||||||
|
{ 154, 8, "Bard;Cleric;Druid", "V", false, "A creature of your choice that you can see within range regains hit points equal to 1d4 + your spellcasting ability modifier. This spell has no effect on undead or constructs.", 0, "When you cast this spell using a spell slot of 2nd level or higher, the healing increases by 1d4 for each slot level above 1st.", 1, null, "Healing Word", 8, false, 0, "Lore" },
|
||||||
|
{ 153, 6, "Cleric;Druid", "V;S", false, "Choose a creature that you can see within range. A surge of positive energy washes through the creature, causing it to regain 70 hit points. This spell also ends blindness, deafness, and any diseases affecting the target. This spell has no effect on constructs or undead.", 0, "When you cast this spell using a spell slot of 7th level or higher, the amount of healing increases by 10 for each slot level above 6th.", 6, null, "Heal", 8, false, 0, null },
|
||||||
|
{ 152, 6, "Sorcerer;Wizard", "V;S;M", true, "Choose a willing creature that you can see within range. Until the spell ends, the target's speed is doubled, it gains a +2 bonus to AC, it has advantage on dexterity saving throws, and it gains an additional action on each of its turns. That action can be used only to take the Attack (one weapon attack only), Dash, Disengage, Hide, or Use an Object action.;When the spell ends, the target can't move or take actions until after its next turn, as a wave of lethargy sweeps over it.", 3, null, 3, "A shaving of licorice root.", "Haste", 7, false, 3, "Lore;Land" },
|
||||||
|
{ 151, 6, "Cleric", "V;S", false, "You unleash a virulent disease on a creature that you can see within range. The target must make a constitution saving throw. On a failed save, it takes 14d6 necrotic damage, or half as much damage on a successful save. The damage can't reduce the target's hit points below 1. If the target fails the saving throw, its hit point maximum is reduced for 1 hour by an amount equal to the necrotic damage it took. Any effect that removes a disease allows a creature's hit point maximum to return to normal before that time passes.", 0, null, 6, null, "Harm", 8, false, 5, null },
|
||||||
|
{ 140, 6, "Druid;Ranger", "V;S;M", false, "Up to ten berries appear in your hand and are infused with magic for the duration. A creature can use its action to eat one berry. Eating a berry restores 1 hit point, and the berry provides enough nourishment to sustain a creature for a day.;The berries lose their potency if they have not been consumed within 24 hours of the casting of this spell.", 0, null, 1, "A sprig of mistletoe.", "Goodberry", 1, false, 3, null },
|
||||||
|
{ 150, 1, "Bard;Druid;Warlock;Wizard", "V;S;M", false, "You make natural terrain in a 150-foot cube in range look, sound, and smell like some other sort of natural terrain. Thus, open fields or a road can be made to resemble a swamp, hill, crevasse, or some other difficult or impassable terrain. A pond can be made to seem like a grassy meadow, a precipice like a gentle slope, or a rock-strewn gully like a wide and smooth road. Manufactured structures, equipment, and creatures within the area aren't changed in appearance.;The tactile characteristics of the terrain are unchanged, so creatures entering the area are likely to see through the illusion. If the difference isn't obvious by touch, a creature carefully examining the illusion can attempt an Intelligence (Investigation) check against your spell save DC to disbelieve it. A creature who discerns the illusion for what it is, sees it as a vague image superimposed on the terrain.", 8, null, 4, "A stone, a twig, and a bit of green plant.", "Hallucinatory Terrain", 13, false, 7, "Land" },
|
||||||
|
{ 148, 6, "Druid;Sorcerer;Wizard", "V;S;M", true, "A line of strong wind 60 feet long and 10 feet wide blasts from you in a direction you choose for the spell's duration. Each creature that starts its turn in the line must succeed on a strength saving throw or be pushed 15 feet away from you in a direction following the line.;Any creature in the line must spend 2 feet of movement for every 1 foot it moves when moving closer to you.;The gust disperses gas or vapor, and it extinguishes candles, torches, and similar unprotected flames in the area. It causes protected flames, such as those of lanterns, to dance wildly and has a 50 percent chance to extinguish them.;As a bonus action on each of your turns before the spell ends, you can change the direction in which the line blasts from you.", 3, null, 2, "A legume seed.", "Gust of Wind", 0, false, 0, "Lore" },
|
||||||
|
{ 147, 6, "Cleric", "V;S", false, "A flash of light streaks toward a creature of your choice within range. Make a ranged spell attack against the target. On a hit, the target takes 4d6 radiant damage, and the next attack roll made against this target before the end of your next turn has advantage, thanks to the mystical dim light glittering on the target until then.", 12, "When you cast this spell using a spell slot of 2nd level or higher, the damage increases by 1d6 for each slot level above 1st.", 1, null, "Guiding Bolt", 11, false, 0, "Lore" },
|
||||||
|
{ 146, 6, "Cleric;Druid", "V;S", true, "You touch one willing creature. Once before the spell ends, the target can roll a d4 and add the number rolled to one ability check of its choice. It can roll the die before or after making the ability check. The spell then ends.", 3, null, 0, null, "Guidance", 1, false, 6, "Lore" },
|
||||||
|
{ 145, 1, "Bard;Wizard", "V;S;M", false, "You create a ward that protects up to 2,500 square feet of floor space (an area 50 feet square, or one hundred 5-foot squares or twenty-five 10-foot squares). The warded area can be up to 20 feet tall, and shaped as you desire. You can ward several stories of a stronghold by dividing the area among them, as long as you can walk into each contiguous area while you are casting the spell.;When you cast this spell, you can specify individuals that are unaffected by any or all of the effects that you choose. You can also specify a password that, when spoken aloud, makes the speaker immune to these effects.;Guards and wards creates the following effects within the warded area.;Corridors.; Fog fills all the warded corridors, making them heavily obscured. In addition, at each intersection or branching passage offering a choice of direction, there is a 50 percent chance that a creature other than you will believe it is going in the opposite direction from the one it chooses.;Doors.; All doors in the warded area are magically locked, as if sealed by an arcane lock spell. In addition, you can cover up to ten doors with an illusion (equivalent to the illusory object function of the minor illusion spell) to make them appear as plain sections of wall.;Stairs.; Webs fill all stairs in the warded area from top to bottom, as the web spell. These strands regrow in 10 minutes if they are burned or torn away while guards and wards lasts.;Other Spell Effect.; You can place your choice of one of the following magical effects within the warded area of the stronghold.;- Place dancing lights in four corridors. You can design nate a simple program that the lights repeat as long as guards and wards lasts.;- Place magic mouth in two locations.;- Place stinking cloud in two locations. The vapors appear in the places you designate, they return within 10 minutes if dispersed by wind while guards and wards lasts.;- Place a constant gust of wind in one corridor or room.;- Place a suggestion in one location. You select an area of up to 5 feet square, and any creature that enters or passes through the area receives the suggestion mentally.;The whole warded area radiates magic. A dispel magic cast on a specific effect, if successful, removes only that effect.;You can create a permanently guarded and warded structure by casting this spell there every day for one year.", 8, null, 6, "Burning incense, a small measure of brimstone and oil, a knotted string, a small amount of umber hulk blood, and a small silver rod worth at least 10 gp.", "Guards and Wards", 1, false, 2, null },
|
||||||
|
{ 144, 6, "Cleric;Paladin", "V", false, "A Large spectral guardian appears and hovers for the duration in an unoccupied space of your choice that you can see within range. The guardian occupies that space and is indistinct except for a gleaming sword and shield emblazoned with the symbol of your deity.;Any creature hostile to you that moves to a space within 10 feet of the guardian for the first time on a turn must succeed on a dexterity saving throw. The creature takes 20 radiant damage on a failed save, or half as much damage on a successful one. The guardian vanishes when it has dealt a total of 60 damage.", 7, null, 4, null, "Guardian of Faith", 7, false, 1, null },
|
||||||
|
{ 143, 6, "Bard;Cleric;Druid", "V;S;M", false, "You imbue a creature you touch with positive energy to undo a debilitating effect. You can reduce the target's exhaustion level by one, or end one of the following effects on the target:;- One effect that charmed or petrified the target;- One curse, including the target's attunement to a cursed magic item;- Any reduction to one of the target's ability scores;- One effect reducing the target's hit point maximum", 0, null, 5, "Diamond dust worth at least 100gp, which the spell consumes.", "Greater Restoration", 1, false, 2, null },
|
||||||
|
{ 142, 6, "Bard;Sorcerer;Wizard", "V;S", true, "You or a creature you touch becomes invisible until the spell ends. Anything the target is wearing or carrying is invisible as long as it is on the target's person.", 3, null, 4, null, "Greater Invisibility", 1, false, 7, "Land" },
|
||||||
|
{ 149, 5, "Cleric", "V;S;M", false, "You touch a point and infuse an area around it with holy (or unholy) power. The area can have a radius up to 60 feet, and the spell fails if the radius includes an area already under the effect a hallow spell. The affected area is subject to the following effects.;First, celestials, elementals, fey, fiends, and undead can't enter the area, nor can such creatures charm, frighten, or possess creatures within it. Any creature charmed, frightened, or possessed by such a creature is no longer charmed, frightened, or possessed upon entering the area. You can exclude one or more of those types of creatures from this effect.;Second, you can bind an extra effect to the area. Choose the effect from the following list, or choose an effect offered by the DM. Some of these effects apply to creatures in the area, you can designate whether the effect applies to all creatures, creatures that follow a specific deity or leader, or creatures of a specific sort, such as ores or trolls. When a creature that would be affected enters the spell's area for the first time on a turn or starts its turn there, it can make a charisma saving throw. On a success, the creature ignores the extra effect until it leaves the area.;Courage.; Affected creatures can't be frightened while in the area.;Darkness.; Darkness fills the area. Normal light, as well as magical light created by spells of a lower level than the slot you used to cast this spell, can't illuminate the area.;Daylight.; Bright light fills the area. Magical darkness created by spells of a lower level than the slot you used to cast this spell can't extinguish the light.;Energy Protection.; Affected creatures in the area have resistance to one damage type of your choice, except for bludgeoning, piercing, or slashing.;Energy Vulnerability.; Affected creatures in the area have vulnerability to one damage type of your choice, except for bludgeoning, piercing, or slashing.;Everlasting Rest.; Dead bodies interred in the area can't be turned into undead.;Extradimensional Interference.; Affected creatures can't move or travel using teleportation or by extradimensional or interplanar means.;Fear.; Affected creatures are frightened while in the area.;Silence.; No sound can emanate from within the area, and no sound can reach into it.;Tongues.; Affected creatures can communicate with any other creature in the area, even if they don't share a common language.", 1, null, 5, "Herbs, oils, and incense worth at least 1,000 gp, which the spell consumes.", "Hallow", 1, false, 0, "Fiend" },
|
||||||
|
{ 120, 8, "Druid", "V;S;M", true, "You evoke a fiery blade in your free hand. The blade is similar in size and shape to a scimitar, and it lasts for the duration. If you let go of the blade, it disappears, but you can evoke the blade again as a bonus action.;You can use your action to make a melee spell attack with the fiery blade. On a hit, the target takes 3d6 fire damage.;The flaming blade sheds bright light in a 10-foot radius and dim light for an additional 10 feet.", 4, "When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d6 for every two slot levels above 2nd.", 2, "Leaf of sumac.", "Flame Blade", 0, false, 0, "Lore" },
|
||||||
|
{ 119, 6, "Sorcerer;Wizard", "V;S;M", false, "A bright streak flashes from your pointing finger to a point you choose within range and then blossoms with a low roar into an explosion of flame. Each creature in a 20-foot-radius sphere centered on that point must make a dexterity saving throw. A target takes 8d6 fire damage on a failed save, or half as much damage on a successful one.;The fire spreads around corners. It ignites flammable objects in the area that aren't being worn or carried.", 0, "When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d6 for each slot level above 3rd.", 3, "A tiny ball of bat guano and sulfur.", "Fireball", 12, false, 0, "Lore;Fiend" },
|
||||||
|
{ 118, 6, "Cleric;Druid;Sorcerer", "V;S", false, "A storm made up of sheets of roaring flame appears in a location you choose within range. The area of the storm consists of up to ten 10-foot cubes, which you can arrange as you wish. Each cube must have at least one face adjacent to the face of another cube. Each creature in the area must make a dexterity saving throw. It takes 7d10 fire damage on a failed save, or half as much damage on a successful one.;The fire damages objects in the area and ignites flammable objects that aren't being worn or carried. If you choose, plant life in the area is unaffected by this spell.", 0, null, 7, null, "Fire Storm", 12, false, 0, null },
|
||||||
|
{ 96, 6, "Warlock", "V;S", false, "A beam of crackling energy streaks toward a creature within range. Make a ranged spell attack against the target. On a hit, the target takes 1d10 force damage.", 0, "The spell creates more than one beam when you reach higher levels: two beams at 5th level, three beams at 11th level, and four beams at 17th level. You can direct the beams at the same target or at different ones. Make a separate attack roll for each beam.", 0, null, "Eldritch Blast", 11, false, 0, "Lore" },
|
||||||
|
{ 95, 6, "Cleric;Druid;Sorcerer", "V;S;M", true, "You create a seismic disturbance at a point on the ground that you can see within range. For the duration, an intense tremor rips through the ground in a 100-foot-radius circle centered on that point and shakes creatures and structures in contact with the ground in that area.;The ground in the area becomes difficult terrain. Each creature on the ground that is concentrating must make a constitution saving throw. On a failed save, the creature's concentration is broken.;When you cast this spell and at the end of each turn you spend concentrating on it, each creature on the ground in the area must make a dexterity saving throw. On a failed save, the creature is knocked prone.;This spell can have additional effects depending on the terrain in the area, as determined by the DM.;Fissures. Fissures open throughout the spell's area at the start of your next turn after you cast the spell. A total of 1d6 such fissures open in locations chosen by the DM. Each is 1d10 × 10 feet deep, 10 feet wide, and extends from one edge of the spell's area to the opposite side. A creature standing on a spot where a fissure opens must succeed on a dexterity saving throw or fall in. A creature that successfully saves moves with the fissure's edge as it opens.;A fissure that opens beneath a structure causes it to automatically collapse (see below).;Structures. The tremor deals 50 bludgeoning damage to any structure in contact with the ground in the area when you cast the spell and at the start of each of your turns until the spell ends. If a structure drops to 0 hit points, it collapses and potentially damages nearby creatures. A creature within half the distance of a structure's height must make a dexterity saving throw. On a failed save, the creature takes 5d6 bludgeoning damage, is knocked prone, and is buried in the rubble, requiring a DC 20 Strength (Athletics) check as an action to escape. The DM can adjust the DC higher or lower, depending on the nature of the rubble. On a successful save, the creature takes half as much damage and doesn't fall prone or become buried.", 3, null, 8, "A pinch of dirt, a piece of rock, and a lump of clay.", "Earthquake", 14, false, 0, null },
|
||||||
|
{ 94, 6, "Druid", "V;S", false, "Whispering to the spirits of nature, you create one of the following effects within 'range':;- You create a tiny, harmless sensory effect that predicts what the weather will be at your location for the next 24 hours. The effect might manifest as a golden orb for clear skies, a cloud for rain, falling snowflakes for snow, and so on. This effect persists for 1 round.;- You instantly make a flower bloom, a seed pod open, or a leaf bud bloom.;- You create an instantaneous, harmless sensory effect, such as falling leaves, a puff of wind, the sound of a small animal, or the faint order of skunk. The effect must fit in a 5-foot cube.;- You instantly light or snuff out a candle, a torch, or a small campfire.", 0, null, -1, null, "Druidcraft", 7, false, 3, null },
|
||||||
|
{ 93, 0, "Bard;Warlock;Wizard", "V;S;M", false, "This spell shapes a creature's dreams. Choose a creature known to you as the target of this spell. The target must be on the same plane of existence as you. Creatures that don't sleep, such as elves, can't be contacted by this spell. You, or a willing creature you touch, enters a trance state, acting as a messenger.;While in the trance, the messenger is aware of his or her surroundings, but can't take actions or move.;If the target is asleep, the messenger appears in the target's dreams and can converse with the target as long as it remains asleep, through the duration of the spell. The messenger can also shape the environment of the dream, creating landscapes, objects, and other images. The messenger can emerge from the trance at any time, ending the effect of the spell early. The target recalls the dream perfectly upon waking. If the target is awake when you cast the spell, the messenger knows it, and can either end the trance (and the spell) or wait for the target to fall asleep, at which point the messenger appears in the target's dreams.;You can make the messenger appear monstrous and terrifying to the target. If you do, the messenger can deliver a message of no more than ten words and then the target must make a wisdom saving throw. On a failed save, echoes of the phantasmal monstrosity spawn a nightmare that lasts the duration of the target's sleep and prevents the target from gaining any benefit from that rest. In addition, when the target wakes up, it takes 3d6 psychic damage.;If you have a body part, lock of hair, clipping from a nail, or similar portion of the target's body, the target makes its saving throw with disadvantage.", 7, null, 5, "A handful of sand, a dab of ink, and a writing quill plucked from a sleeping bird.", "Dream", 2, false, 7, "Land" },
|
||||||
|
{ 92, 6, "Bard;Sorcerer;Wizard", "V;S", true, "You attempt to beguile a humanoid that you can see within range. It must succeed on a wisdom saving throw or be charmed by you for the duration. If you or creatures that are friendly to you are fighting it, it has advantage on the saving throw.;While the target is charmed, you have a telepathic link with it as long as the two of you are on the same plane of existence. You can use this telepathic link to issue commands to the creature while you are conscious (no action required), which it does its best to obey. You can specify a simple and general course of action, such as “Attack that creature,â€<C3A2> “Run over there,â€<C3A2> or “Fetch that object.â€<C3A2> If the creature completes the order and doesn't receive further direction from you, it defends and preserves itself to the best of its ability.;You can use your action to take total and precise control of the target. Until the end of your next turn, the creature takes only the actions you choose, and doesn't do anything that you don't allow it to do. During this time you can also cause the creature to use a reaction, but this requires you to use your own reaction as well.;Each time the target takes damage, it makes a new wisdom saving throw against the spell. If the saving throw succeeds, the spell ends.", 3, "When you cast this spell using a 6th-level spell slot, the duration is concentration, up to 10 minutes. When you use a 7th-level spell slot, the duration is concentration, up to 1 hour. When you use a spell slot of 8th level or higher, the duration is concentration, up to 8 hours.", 5, null, "Dominate Person", 8, false, 4, null },
|
||||||
|
{ 91, 6, "Bard;Sorcerer;Warlock;Wizard", "V;S", true, "You attempt to beguile a creature that you can see within range. It must succeed on a wisdom saving throw or be charmed by you for the duration. If you or creatures that are friendly to you are fighting it, it has advantage on the saving throw.;While the creature is charmed, you have a telepathic link with it as long as the two of you are on the same plane of existence. You can use this telepathic link to issue commands to the creature while you are conscious (no action required), which it does its best to obey. You can specify a simple and general course of action, such as “Attack that creature,â€<C3A2> “Run over there,â€<C3A2> or “Fetch that object.â€<C3A2> If the creature completes the order and doesn't receive further direction from you, it defends and preserves itself to the best of its ability.;You can use your action to take total and precise control of the target. Until the end of your next turn, the creature takes only the actions you choose, and doesn't do anything that you don't allow it to do. During this time, you can also cause the creature to use a reaction, but this requires you to use your own reaction as well.;Each time the target takes damage, it makes a new wisdom saving throw against the spell. If the saving throw succeeds, the spell ends.", 5, "When you cast this spell with a 9th-level spell slot, the duration is concentration, up to 8 hours.", 8, null, "Dominate Monster", 8, false, 4, null },
|
||||||
|
{ 90, 6, "Druid;Sorcerer", "V;S", true, "You attempt to beguile a creature that you can see within range. It must succeed on a wisdom saving throw or be charmed by you for the duration. If you or creatures that are friendly to you are fighting it, it has advantage on the saving throw.;While the creature is charmed, you have a telepathic link with it as long as the two of you are on the same plane of existence. You can use this telepathic link to issue commands to the creature while you are conscious (no action required), which it does its best to obey. You can specify a simple and general course of action, such as \"Attack that creature,\" \"Run over there,\" or \"Fetch that object.\" If the creature completes the order and doesn't receive further direction from you, it defends and preserves itself to the best of its ability.;You can use your action to take total and precise control of the target. Until the end of your next turn, the creature takes only the actions you choose, and doesn't do anything that you don't allow it to do. During this time, you can also cause the creature to use a reaction, but this requires you to use your own reaction as well. Each time the target takes damage, it makes a new wisdom saving throw against the spell. If the saving throw succeeds, the spell ends.", 3, "When you cast this spell with a 9th level spell slot, the duration is concentration, up to 8 hours.", 4, null, "Dominate Beast", 8, false, 4, null },
|
||||||
|
{ 97, 6, "Bard;Cleric;Druid;Sorcerer", "V;S;M", true, "You touch a creature and bestow upon it a magical enhancement. Choose one of the following effects, the target gains that effect until the spell ends.;Bear's Endurance.; The target has advantage on constitution checks. It also gains 2d6 temporary hit points, which are lost when the spell ends.;Bull's Strength.; The target has advantage on strength checks, and his or her carrying capacity doubles.;Cat's Grace.; The target has advantage on dexterity checks. It also doesn't take damage from falling 20 feet or less if it isn't incapacitated.;Eagle's Splendor.; The target has advantage on Charisma checks.;Fox's Cunning.; The target has advantage on intelligence checks.;Owl's Wisdom.; The target has advantage on wisdom checks.", 5, "When you cast this spell using a spell slot of 3rd level or higher, you can target one additional creature for each slot level above 2nd.", 2, "Fur or a feather from a beast.", "Enhance Ability", 1, false, 3, "Lore" },
|
||||||
|
{ 89, 8, "Cleric", "V", false, "You speak a word of God, full of the power that has shaped the world at the dawn of creation. Choose as many creatures as you want from those you see, in the range of the spell. Every creature that hears you must make a backup Charisma, or she undergoes an effect based on the current value of his life.;- pv or less 50: muted for 1 minute;- 40 hp or less: deafened and blinded for 10 minutes;- 30 hp or less: blinded, deafened and dazed for 1 hour;- 20 hp or less: killed instantly;Regardless of its points of current life, a celestial, an elementary, a fairy or a fiend who fails his roll is returned to its original plan (if not already) and it can not go back on your plan for 24 hours, regardless of the means, with the exception of the wish spell.", 0, null, 7, null, "Divine Word", 7, false, 0, null },
|
||||||
|
{ 87, 6, "Druid", "V;S;M", false, "Your magic and an offering put you in contact with a god or a god's servants. You ask a single question concerning a specific goal, event, or activity to occur within 7 days. The DM offers a truthful reply. The reply might be a short phrase, a cryptic rhyme, or an omen.;The spell doesn't take into account any possible circumstances that might change the outcome, such as the casting of additional spells or the loss or gain of a companion.;If you cast the spell two or more times before finishing your next long rest, there is a cumulative 25 percent chance for each casting after the first that you get a random reading. The DM makes this roll in secret.", 0, null, 4, "Incense and a sacrificial offering appropriate to your religion, together worth at least 25gp, which the spell consumes.", "Divination", 0, true, 6, "Land" },
|
||||||
|
{ 86, 6, "Bard;Cleric;Druid;Paladin;Sorcerer;Warlock;Wizard", "V;S", false, "Choose one creature, object, or magical effect within range. Any spell of 3rd level or lower on the target ends. For each spell of 4th level or higher on the target, make an ability check using your spellcasting ability. The DC equals 10 + the spell's level. On a successful check, the spell ends.", 0, "When you cast this spell using a spell slot of 4th level or higher, you automatically end the effects of a spell on the target if the spell's level is equal to or less than the level of the spell slot you used.", 3, null, "Dispel Magic", 11, false, 2, "Lore;Devotion" }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Spells",
|
||||||
|
columns: new[] { "Id", "CastingTime", "Classes", "Components", "Concentration", "Description", "Duration", "HigherLevel", "Level", "Material", "Name", "Range", "Ritual", "School", "Subclasses" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 85, 6, "Cleric;Paladin", "V;S;M", true, "Shimmering energy surrounds and protects you from fey, undead, and creatures originating from beyond the Material Plane. For the duration, celestials, elementals, fey, fiends, and undead have disadvantage on attack rolls against you.;You can end the spell early by using either of the following special functions.;Break Enchantment.; As your action, you touch a creature you can reach that is charmed, frightened, or possessed by a celestial, an elemental, a fey, a fiend, or an undead. The creature you touch is no longer charmed, frightened, or possessed by such creatures.;Dismissal.; As your action, make a melee spell attack against a celestial, an elemental, a fey, a fiend, or an undead you can reach. On a hit, you attempt to drive the creature back to its home plane. The creature must succeed on a charisma saving throw or be sent back to its home plane (if it isn't there already). If they aren't on their home plane, undead are sent to the Shadowfell, and fey are sent to the Feywild.", 3, null, 5, "Holy water or powdered silver and iron.", "Dispel Evil and Good", 0, false, 2, null },
|
||||||
|
{ 84, 6, "Sorcerer;Wizard", "V;S;M", false, "A thin green ray springs from your pointing finger to a target that you can see within range. The target can be a creature, an object, or a creation of magical force, such as the wall created by wall of force.;A creature targeted by this spell must make a dexterity saving throw. On a failed save, the target takes 10d6 + 40 force damage. If this damage reduces the target to 0 hit points, it is disintegrated.;A disintegrated creature and everything it is wearing and carrying, except magic items, are reduced to a pile of fine gray dust. The creature can be restored to life only by means of a true resurrection or a wish spell.;This spell automatically disintegrates a Large or smaller nonmagical object or a creation of magical force. If the target is a Huge or larger object or creation of force, this spell disintegrates a 10-foot-cube portion of it. A magic item is unaffected by this spell.", 0, "When you cast this spell using a spell slot of 7th level or higher, the damage increases by 3d6 for each slot level above 6th.", 6, "A lodestone and a pinch of dust.", "Disintegrate", 8, false, 3, null },
|
||||||
|
{ 83, 6, "Bard;Sorcerer;Wizard", "V;S", false, "You make yourself – including your clothing, armor, weapons, and other belongings on your person – look different until the spell ends or until you use your action to dismiss it. You can seem 1 foot shorter or taller and can appear thin, fat, or in between. You can't change your body type, so you must adopt a form that has the same basic arrangement of limbs. Otherwise, the extent of the illusion is up to you.;The changes wrought by this spell fail to hold up to physical inspection. For example, if you use this spell to add a hat to your outfit, objects pass through the hat, and anyone who touches it would feel nothing or would feel your head and hair. If you use this spell to appear thinner than you are, the hand of someone who reaches out to touch you would bump into you while it was seemingly still in midair.;To discern that you are disguised, a creature can use its action to inspect your apperance and must succeed on an Intelligence (Investigation) check against your spell save DC.", 5, null, 1, null, "Disguise Self", 0, false, 7, "Lore" },
|
||||||
|
{ 82, 6, "Bard;Sorcerer;Warlock;Wizard", "V", false, "You teleport yourself from your current location to any other spot within range. You arrive at exactly the spot desired. It can be a place you can see, one you can visualize, or one you can describe by stating distance and direction, such as “200 feet straight downwardâ€<C3A2> or “upward to the northwest at a 45-degree angle, 300 feet.â€<C3A2>;You can bring along objects as long as their weight doesn't exceed what you can carry. You can also bring one willing creature of your size or smaller who is carrying gear up to its carrying capacity. The creature must be within 5 feet of you when you cast this spell.;If you would arrive in a place already occupied by an object or a creature, you and any creature traveling with you each take 4d6 force damage, and the spell fails to teleport you.", 0, null, 4, null, "Dimension Door", 14, false, 1, null },
|
||||||
|
{ 81, 6, "Bard;Sorcerer;Wizard", "V;S;M", true, "For the duration of the spell, you can read the thoughts of some creatures. While casting the spell and at your action in each round until the spell, you may focus your mind on a creature you can see 30 feet of you. If the chosen creature has an Intelligence of 3 or less, or if she does not speak any language, the creature is not affected.;You first read the surface thoughts of the creature, which occupies her mind at that moment. In an action, you can direct your attention to the thoughts of another creature or attempt to deepen your reading thoughts of the same creature. If you deepen your reading, the target must make a backup of Wisdom, otherwise you get access to his argument (if any), in his emotional state and thought that concerns his mind on a broader spectrum Such a concern, love or hate. If successful, the spell ends. In all cases, the target is aware that his mind is under your eyes. Unless you are directing your attention to the thoughts of another creature, the target can use his action turn to roll Intelligence opposite your roll Intelligence. If she has the upper hand, the spell ends.;The questions verbally directed to the target guide the train of thought. This spell is especially effective during an interrogation.;You can also use this spell to detect the presence of thinking creatures that are invisible to you. When you cast this spell, or in an action for the duration of the spell, you can find thoughts to 30 feet of you. The spell can override most obstacles but it is blocked by 2 feet stone 2 inches of precious metal, or a thin sheet of lead. You can not detect a creature with an Intelligence of 3 or less or speaking any language.;After detecting the presence of a creature in this way, you can read his thoughts for the rest of the spell's duration as described above, even if you can not see it, but only if it remains in the range of the spell.", 3, null, 2, "A copper coin.", "Detect Thoughts", 0, false, 6, "Lore" },
|
||||||
|
{ 88, 8, "Paladin", "V;S", true, "Your prayer empowers you with divine radiance. Until the spell ends, your weapon attacks deal an extra 1d4 radiant damage on a hit.", 3, null, 1, null, "Divine Favor", 0, false, 0, "Lore" },
|
||||||
|
{ 98, 6, "Sorcerer;Wizard", "V;S;M", true, "Enlarging or reducing in size a creature or object that you can see and is within range for the duration of the spell. Choose a creature or object that is not worn or carried. If the target does not consent, it can make a constitution saving throw. If successful, the spell has no effect.;If the target is a creature, everything she wears and carries with it change size. Any item dropped by the affected creature returns to its normal size.;Magnification.; The double target in all dimensions, and its weight is multiplied by eight. This increases the size of a class of M to G for example. If there is not enough space in the room for the double target size, the creature or object reaches the maximum size possible in the available space. Until the end of the spell, the target also has the advantage of its jets Force and Force saves. Weapons to the target also grow. As long as these weapons are enlarged, the target's attacks cause additional 1d4 damage.;Reduction.; The size of the target is reduced by half in all dimensions, and its weight is divided by eight. This reduction decreases the size of a class from M to P for example. Until the end of the spell, the target has a disadvantage to its jets Force and its Force saves. The weapons of the target shrink too. As long as these weapons are reduced, target attacks cause less damage 1d4 (minimum 1 point of damage).", 3, null, 2, "A pinch iron powder.", "Enlarge/Reduce", 7, false, 3, "Lore" },
|
||||||
|
{ 99, 6, "Druid", "V;S", true, "Grasping weeds and vines sprout from the ground in a 20-foot square starting form a point within range. For the duration, these plants turn the ground in the area into difficult terrain.;A creature in the area when you cast the spell must succeed on a strength saving throw or be restrained by the entangling plants until the spell ends. A creature restrained by the plants can use its action to make a Strength check against your spell save DC. On a success, it frees itself.;When the spell ends, the conjured plants wilt away.", 3, null, 1, null, "Entangle", 9, false, 1, "Lore" },
|
||||||
|
{ 100, 6, "Bard;Warlock", "V;S", false, "You weave a distracting string of words, causing creatures of your choice that you can see within range and that can hear you to make a wisdom saving throw. Any creature that can't be charmed succeeds on this saving throw automatically, and if you or your companions are fighting a creature, it has advantage on the save. On a failed save, the target has disadvantage on Wisdom (Perception) checks made to perceive any creature other than you until the spell ends or until the target can no longer hear you. The spell ends if you are incapacitated or can no longer speak.", 3, null, 2, null, "Enthrall", 8, false, 4, "Lore" },
|
||||||
|
{ 117, 6, "Wizard", "V;S;M", false, "Thin and vaporous flame surround your body for the duration of the spell, radiating a bright light bright light in a 10-foot radius and dim light for an additional 10 feet. You can end the spell using an action to make it disappear.;The flames are around you a heat shield or cold, your choice. The heat shield gives you cold damage resistance and the cold resistance to fire damage.;In addition, whenever a creature within 5 feet of you hits you with a melee attack, flames spring from the shield. The attacker then suffers 2d8 points of fire damage or cold, depending on the model.", 4, null, 4, "A little phosphorus or a firefly.", "Fire Shield", 0, false, 0, "Fiend" },
|
||||||
|
{ 116, 6, "Sorcerer;Wizard", "V;S", false, "You hurl a mote of fire at a creature or object within range. Make a ranged spell attack against the target. On a hit, the target takes 1d10 fire damage. A flammable object hit by this spell ignites if it isn’t being worn or carried.;This spell’s damage increases by 1d10 when you reach 5th level (2d10), 11th level (3d10), and 17th level (4d10).", 0, null, -1, null, "Fire Bolt", 11, false, 0, null },
|
||||||
|
{ 115, 6, "Sorcerer;Warlock;Wizard", "V;S", false, "You send negative energy coursing through a creature that you can see within range, causing it searing pain. The target must make a constitution saving throw. It takes 7d8 + 30 necrotic damage on a failed save, or half as much damage on a successful one.;A humanoid killed by this spell rises at the start of your next turn as a zombie that is permanently under your command, following your verbal orders to the best of its ability.", 0, null, 7, null, "Finger of Death", 8, false, 5, null },
|
||||||
|
{ 114, 0, "Bard;Cleric", "V;S;M", true, "This spell allows you to find the shortest, most direct physical route to a specific fixed location that you are familiar with on the same plane of existence. If you name a destination on another plane of existence, a destination that moves (such as a mobile fortress), or a destination that isn't specific (such as “a green dragon's lairâ€<C3A2>), the spell fails.;For the duration, as long as you are on the same plane of existence as the destination, you know how far it is and in what direction it lies. While you are traveling there, whenever you are presented with a choice of paths along the way, you automatically determine which path is the shortest and most direct route (but not necessarily the safest route) to the destination.", 8, null, 6, "A set of divinatory tools—such as bones, ivory sticks, cards, teeth, or carved runes—worth 100gp and an object from the location you wish to find.", "Find the Path", 0, false, 6, null },
|
||||||
|
{ 113, 6, "Cleric;Druid;Ranger", "V;S", false, "You sense the presence of any trap within range that is within line of sight. A trap, for the purpose of this spell, includes anything that would inflict a sudden or unexpected effect you consider harmful or undesirable, which was specifically intended as such by its creator. Thus, the spell would sense an area affected by the alarm spell, a glyph of warding, or a mechanical pit trap, but it would not reveal a natural weakness in the floor, an unstable ceiling, or a hidden sinkhole.;This spell merely reveals that a trap is present. You don't learn the location of each trap, but you do learn the general nature of the danger posed by a trap you sense.", 0, null, 2, null, "Find Traps", 11, false, 6, "Lore" },
|
||||||
|
{ 112, 1, "Paladin", "V;S", false, "You summon a spirit that assumes the form of an unusually intelligent, strong, and loyal steed, creating a long-lasting bond with it. Appearing in an unoccupied space within range, the steed takes on a form that you choose, such as a warhorse, a pony, a camel, an elk, or a mastiff. (Your DM might allow other animals to be summoned as steeds.) The steed has the statistics of the chosen form, though it is a celestial, fey, or fiend (your choice) instead of its normal type. Additionally, if your steed has an Intelligence of 5 or less, its Intelligence becomes 6, and it gains the ability to understand one language of your choice that you speak.;Your steed serves you as a mount, both in combat and out, and you have an instinctive bond with it that allows you to fight as a seamless unit. While mounted on your steed, you can make any spell you cast that targets only you also target your steed.;When the steed drops to 0 hit points, it disappears, leaving behind no physical form. You can also dismiss your steed at any time as an action, causing it to disappear. In either case, casting this spell again summons the same steed, restored to its hit point maximum.;While your steed is within 1 mile of you, you can communicate with it telepathically.;You can't have more than one steed bonded by this spell at a time. As an action, you can release the steed from its bond at any time, causing it to disappear.", 0, null, 2, null, "Find Steed", 7, false, 1, "Lore" },
|
||||||
|
{ 111, 2, "Wizard", "V;S;M", false, "You gain the service of a familiar, a spirit that takes an animal form you choose: bat, cat, crab, frog (toad), hawk, lizard, octopus, owl, poisonous snake, fish (quipper), rat, raven, sea horse, spider, or weasel. Appearing in an unoccupied space within range, the familiar has the statistics of the chosen form, though it is a celestial, fey, or fiend (your choice) instead of a beast.;Your familiar acts independently of you, but it always obeys your commands. In combat, it rolls its own initiative and acts on its own turn. A familiar can’t attack, but it can take other actions as normal.;When the familiar drops to 0 hit points, it disappears, leaving behind no physical form. It reappears after you cast this spell again.;While your familiar is within 100 feet of you, you can communicate with it telepathically. Additionally, as an action, you can see through your familiar’s eyes and hear what it hears until the start of your next turn, gaining the benefits of any special senses that the familiar has. During this time, you are deaf and blind with regard to your own senses.;As an action, you can temporarily dismiss your familiar. It disappears into a pocket dimension where it awaits your summons. Alternatively, you can dismiss it forever. As an action while it is temporarily dismissed, you can cause it to reappear in any unoccupied space within 30 feet of you.;You can’t have more than one familiar at a time. If you cast this spell while you already have a familiar, you instead cause it to adopt a new form. Choose one of the forms from the above list. Your familiar transforms into the chosen creature.;Finally, when you cast a spell with a range of touch, your familiar can deliver the spell as if it had cast the spell. Your familiar must be within 100 feet of you, and it must use its reaction to deliver the spell when you cast it. If the spell requires an attack roll, you use your action modifier for the roll.", 0, null, 1, "10gp worth of charcoal, incense, and herbs that must be consumed by fire in a brass brazier.", "Find Familiar", 6, true, 1, null },
|
||||||
|
{ 110, 6, "Bard;Druid;Warlock;Wizard", "V;S;M", false, "You blast the mind of a creature that you can see within range, attempting to shatter its intellect and personality. The target takes 4d6 psychic damage and must make an intelligence saving throw.;On a failed save, the creature's Intelligence and Charisma scores become 1. The creature can't cast spells, activate magic items, understand language, or communicate in any intelligible way. The creature can, however, identify its friends, follow them, and even protect them.;At the end of every 30 days, the creature can repeat its saving throw against this spell. If it succeeds on its saving throw, the spell ends.;The spell can also be ended by greater restoration, heal, or wish.", 0, null, 8, "A handful of clay, crystal, glass, or mineral spheres.", "Feeblemind", 12, false, 4, null },
|
||||||
|
{ 109, 7, "Bard;Sorcerer;Wizard", "V;M", false, "Choose up to five falling creatures within range. A falling creature's rate of descent slows to 60 feet per round until the spell ends. If the creature lands before the spell ends, it takes no falling damage and can land on its feet, and the spell ends for that creature.", 3, null, 1, "A small feather or a piece of down.", "Feather Fall", 8, false, 3, "Lore" },
|
||||||
|
{ 108, 6, "Bard;Sorcerer;Warlock;Wizard", "V;S;M", true, "You project a phantasmal image of a creature's worst fears. Each creature in a 30-foot cone must succeed on a wisdom saving throw or drop whatever it is holding and become frightened for the duration.;While frightened by this spell, a creature must take the Dash action and move away from you by the safest available route on each of its turns, unless there is nowhere to move. If the creature ends its turn in a location where it doesn't have line of sight to you, the creature can make a wisdom saving throw. On a successful save, the spell ends for that creature.", 3, null, 3, "A white feather or the heart of a hen.", "Fear", 0, false, 7, "Lore" },
|
||||||
|
{ 107, 6, "Sorcerer;Wizard", "V;S;M", false, "Bolstering yourself with a necromantic facsimile of life, you gain 1d4 + 4 temporary hit points for the duration.", 5, "When you cast this spell using a spell slot of 2nd level or higher, you gain 5 additional temporary hit points for each slot level above 1st.", 1, "A small amount of alcohol or distilled spirits.", "False Life", 0, false, 5, "Lore" },
|
||||||
|
{ 106, 6, "Wizard", "V;S;M", false, "You conjure a phantom watchdog in an unoccupied space that you can see within range, where it remains for the duration, until you dismiss it as an action, or until you move more than 100 feet away from it.;The hound is invisible to all creatures except you and can't be harmed. When a Small or larger creature comes within 30 feet of it without first speaking the password that you specify when you cast this spell, the hound starts barking loudly. The hound sees invisible creatures and can see into the Ethereal Plane. It ignores illusions.;At the start of each of your turns, the hound attempts to bite one creature within 5 feet of it that is hostile to you. The hound's attack bonus is equal to your spellcasting ability modifier + your proficiency bonus. On a hit, it deals 4d8 piercing damage.", 7, null, 4, "A tiny silver whistle, a piece of bone, and a thread", "Faithful Hound", 7, false, 1, null },
|
||||||
|
{ 105, 6, "Druid", "V", true, "Each object in a 20-foot cube within range is outlined in blue, green, or violet light (your choice). Any creature in the area when the spell is cast is also outlined in light if it fails a dexterity saving throw. For the duration, objects and affected creatures shed dim light in a 10-foot radius.;Any attack roll against an affected creature or object has advantage if the attacker can see it, and the affected creature or object can't benefit from being invisible.", 3, null, 1, null, "Faerie Fire", 8, false, 0, "Lore" },
|
||||||
|
{ 104, 1, "Wizard", "V;S", false, "You convert raw materials into products of the same material. For example, you can fabricate a wooden bridge from a clump of trees, a rope from a patch of hemp, and clothes from flax or wool.;Choose raw materials that you can see within range. You can fabricate a Large or smaller object (contained within a 10-foot cube, or eight connected 5-foot cubes), given a sufficient quantity of raw material. If you are working with metal, stone, or another mineral substance, however, the fabricated object can be no larger than Medium (contained within a single 5-foot cube). The quality of objects made by the spell is commensurate with the quality of the raw materials.;Creatures or magic items can't be created or transmuted by this spell. You also can't use it to create items that ordinarily require a high degree of craftsmanship, such as jewelry, weapons, glass, or armor, unless you have proficiency with the type of artisan's tools used to craft such objects.", 0, null, 4, null, "Fabricate", 11, false, 3, null },
|
||||||
|
{ 103, 6, "Bard;Sorcerer;Warlock;Wizard", "V;S", true, "For the spell's duration, your eyes become an inky void imbued with dread power. One creature of your choice within 60 feet of you that you can see must succeed on a wisdom saving throw or be affected by one of the following effects of your choice for the duration. On each of your turns until the spell ends, you can use your action to target another creature but can't target a creature again if it has succeeded on a saving throw against this casting of eyebite.;Asleep.; The target falls unconscious. It wakes up if it takes any damage or if another creature uses its action to shake the sleeper awake.;Panicked.; The target is frightened of you. On each of its turns, the frightened creature must take the Dash action and move away from you by the safest and shortest available route, unless there is nowhere to move. If the target moves to a place at least 60 feet away from you where it can no longer see you, this effect ends.;Sickened.; The target has disadvantage on attack rolls and ability checks. At the end of each of its turns, it can make another wisdom saving throw. If it succeeds, the effect ends.", 3, null, 6, null, "Eyebite", 0, false, 5, null },
|
||||||
|
{ 102, 8, "Sorcerer;Warlock;Wizard", "V;S", true, "This spell allows you to move at an incredible pace. When you cast this spell, and then as a bonus action on each of your turns until the spell ends, you can take the Dash action.", 4, null, 1, null, "Expeditious Retreat", 0, false, 3, "Lore" },
|
||||||
|
{ 101, 6, "Bard;Cleric;Sorcerer;Warlock;Wizard", "V;S", false, "You step into the border regions of the Ethereal Plane, in the area where it overlaps with your current plane. You remain in the Border Ethereal for the duration or until you use your action to dismiss the spell. During this time, you can move in any direction. If you move up or down, every foot of movement costs an extra foot. You can see and hear the plane you originated from, but everything there looks gray, and you can't see anything more than 60 feet away.;While on the Ethereal Plane, you can only affect and be affected by other creatures on that plane. Creatures that aren't on the Ethereal Plane can't perceive you and can't interact with you, unless a special ability or magic has given them the ability to do so.;You ignore all objects and effects that aren't on the Ethereal Plane, allowing you to move through objects you perceive on the plane you originated from.;When the spell ends, you immediately return to the plane you originated from in the spot you currently occupy. If you occupy the same spot as a solid object or creature when this happens, you are immediately shunted to the nearest unoccupied space that you can occupy and take force damage equal to twice the number of feet you are moved.;This spell has no effect if you cast it while you are on the Ethereal Plane or a plane that doesn't border it, such as one of the Outer Planes.", 7, "When you cast this spell using a spell slot of 8th level or higher, you can target up to three willing creatures (including you) for each slot level above 7th. The creatures must be within 10 feet of you when you cast the spell.", 7, null, "Etherealness", 0, false, 3, null },
|
||||||
|
{ 159, 6, "Bard;Wizard", "V;S;M", true, "A creature of your choice that you can see within range perceives everything as hilariously funny and falls into fits of laughter if this spell affects it. The target must succeed on a wisdom saving throw or fall prone, becoming incapacitated and unable to stand up for the duration. A creature with an Intelligence score of 4 or less isn't affected.;At the end of each of its turns, and each time it takes damage, the target can make another wisdom saving throw. The target had advantage on the saving throw if it's triggered by damage. On a success, the spell ends.", 3, null, 1, "Tiny tarts and a feather that is waved in the air.", "Hideous Laughter", 7, false, 4, "Lore" },
|
||||||
|
{ 319, 6, "Bard;Cleric;Paladin", "V;S", false, "You create a magical zone that guards against deception in a 15-foot-radius sphere centered on a point of your choice within range. Until the spell ends, a creature that enters the spell's area for the first time on a turn or starts its turn there must make a Charisma saving throw. On a failed save, a creature can't speak a deliberate lie while in the radius. You know whether each creature succeeds or fails on its saving throw.;An affected creature is aware of the fate and can avoid answering questions she would normally have responded with a lie. Such a creature can remain evasive in his answers as they remain within the limits of truth.", 4, null, 2, null, "Zone of Truth", 8, false, 4, "Lore;Devotion" }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "CharacterSpells",
|
||||||
|
columns: new[] { "Id", "CharacterId", "SpellId" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 1, 1, 2 },
|
||||||
|
{ 3, 1, 17 },
|
||||||
|
{ 5, 2, 43 },
|
||||||
|
{ 10, 2, 44 },
|
||||||
|
{ 2, 1, 55 },
|
||||||
|
{ 8, 2, 67 },
|
||||||
|
{ 4, 1, 78 },
|
||||||
|
{ 9, 3, 90 },
|
||||||
|
{ 7, 2, 123 },
|
||||||
|
{ 6, 2, 154 }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_CharacterSpells_CharacterId",
|
||||||
|
table: "CharacterSpells",
|
||||||
|
column: "CharacterId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_CharacterSpells_SpellId",
|
||||||
|
table: "CharacterSpells",
|
||||||
|
column: "SpellId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_CharacterSpellSlots_CharacterId",
|
||||||
|
table: "CharacterSpellSlots",
|
||||||
|
column: "CharacterId");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "CharacterSpells");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "CharacterSpellSlots");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "Spells");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
8813
SessionCompanion/SessionCompanion.Database/Migrations/20210104000353_SeedStatistics.Designer.cs
generated
Normal file
8813
SessionCompanion/SessionCompanion.Database/Migrations/20210104000353_SeedStatistics.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,163 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Migrations
|
||||||
|
{
|
||||||
|
public partial class SeedStatistics : Migration
|
||||||
|
{
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Charismas",
|
||||||
|
columns: new[] { "Id", "CanDeception", "CanIntimidation", "CanPerformance", "CanPersuasion", "CanSaveThrows", "CharacterId", "Deception", "Intimidation", "Modification", "Performance", "Persuasion", "SavingThrows", "Value" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 1, false, true, true, false, false, 1, 0, 1, 3, 2, 0, 0, 10 },
|
||||||
|
{ 2, true, true, true, false, true, 2, 1, 1, 5, 2, 0, 3, 11 },
|
||||||
|
{ 3, false, false, true, true, false, 3, 0, 4, -2, 2, 1, 0, 5 }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Constitutions",
|
||||||
|
columns: new[] { "Id", "CanSaveThrows", "CharacterId", "Modification", "SavingThrows", "Value" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 1, true, 1, 4, 2, 11 },
|
||||||
|
{ 2, true, 2, 4, 1, 9 },
|
||||||
|
{ 3, true, 3, 1, 2, 12 }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Dexterities",
|
||||||
|
columns: new[] { "Id", "Acrobatics", "CanAcrobatics", "CanSaveThrows", "CanSleightOfHand", "CanStealth", "CharacterId", "Modification", "SavingThrows", "SleightOfHand", "Stealth", "Value" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 2, 1, true, true, true, true, 2, 2, 2, 2, 2, 11 },
|
||||||
|
{ 3, 0, false, true, true, true, 3, 0, 2, 1, 2, 5 },
|
||||||
|
{ 1, 3, true, true, true, true, 1, 1, 4, 1, 2, 10 }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Intelligences",
|
||||||
|
columns: new[] { "Id", "Arcana", "CanArcana", "CanHistory", "CanInvestigation", "CanNature", "CanReligion", "CanSaveThrows", "CharacterId", "History", "Investigation", "Modification", "Nature", "Religion", "SavingThrows", "Value" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 1, 1, true, true, false, true, true, true, 1, 4, 0, -2, 1, 3, 1, 6 },
|
||||||
|
{ 2, 1, true, true, false, false, true, true, 2, 1, 0, 0, 0, 3, 1, 10 },
|
||||||
|
{ 3, 2, true, false, false, true, true, true, 3, 0, 0, 2, 2, 2, 1, 10 }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Strengths",
|
||||||
|
columns: new[] { "Id", "Athletics", "CanAthletics", "CanSaveThrows", "CharacterId", "Modification", "SavingThrows", "Value" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 1, 2, true, false, 1, 1, 0, 10 },
|
||||||
|
{ 2, 2, true, true, 2, 3, 2, 11 },
|
||||||
|
{ 3, 1, true, true, 3, 0, 2, 5 }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Wisdoms",
|
||||||
|
columns: new[] { "Id", "AnimalHandling", "CanAnimalHandling", "CanInsight", "CanMedicine", "CanPerception", "CanSaveThrows", "CanSurvival", "CharacterId", "Insight", "Medicine", "Modification", "Perception", "SavingThrows", "Survival", "Value" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 2, 2, true, true, false, true, true, true, 2, 2, 0, 2, 2, 1, 6, 9 },
|
||||||
|
{ 1, 2, true, true, false, true, true, true, 1, 1, 0, 3, 5, 1, 2, 11 },
|
||||||
|
{ 3, 0, false, true, true, true, true, true, 3, 1, 2, -3, 5, 1, 2, 6 }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Charismas",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Charismas",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Charismas",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Constitutions",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Constitutions",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Constitutions",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Dexterities",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Dexterities",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Dexterities",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Intelligences",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Intelligences",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Intelligences",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Strengths",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Strengths",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Strengths",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Wisdoms",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Wisdoms",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Wisdoms",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
29049
SessionCompanion/SessionCompanion.Database/Migrations/20210113201250_monsters-and-all.Designer.cs
generated
Normal file
29049
SessionCompanion/SessionCompanion.Database/Migrations/20210113201250_monsters-and-all.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
29294
SessionCompanion/SessionCompanion.Database/Migrations/20210120170646_shopkepe.Designer.cs
generated
Normal file
29294
SessionCompanion/SessionCompanion.Database/Migrations/20210120170646_shopkepe.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,123 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Migrations
|
||||||
|
{
|
||||||
|
public partial class shopkepe : Migration
|
||||||
|
{
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "Shopkeepers",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
Name = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||||
|
IsAvailable = table.Column<bool>(type: "bit", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_Shopkeepers", x => x.Id);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "ShopkeeperItems",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
ShopkeeperId = table.Column<int>(type: "int", nullable: false),
|
||||||
|
ArmorId = table.Column<int>(type: "int", nullable: true),
|
||||||
|
WeaponId = table.Column<int>(type: "int", nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_ShopkeeperItems", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_ShopkeeperItems_Armors_ArmorId",
|
||||||
|
column: x => x.ArmorId,
|
||||||
|
principalTable: "Armors",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Restrict);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_ShopkeeperItems_Shopkeepers_ShopkeeperId",
|
||||||
|
column: x => x.ShopkeeperId,
|
||||||
|
principalTable: "Shopkeepers",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_ShopkeeperItems_Weapons_WeaponId",
|
||||||
|
column: x => x.WeaponId,
|
||||||
|
principalTable: "Weapons",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Restrict);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Shopkeepers",
|
||||||
|
columns: new[] { "Id", "IsAvailable", "Name" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 1, true, "Swędzioch" },
|
||||||
|
{ 2, false, "Lucius Prawowity" },
|
||||||
|
{ 3, true, "Bohr Twarda Zbroja" },
|
||||||
|
{ 4, false, "Skwarczyk Podobny" },
|
||||||
|
{ 5, true, "Zielony spod Gruszkowego Lasu" },
|
||||||
|
{ 6, false, "Zmarniały" }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
columns: new[] { "Id", "ArmorId", "ShopkeeperId", "WeaponId" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 1, 2, 1, null },
|
||||||
|
{ 20, 13, 6, null },
|
||||||
|
{ 19, 2, 6, null },
|
||||||
|
{ 18, 7, 5, null },
|
||||||
|
{ 17, 9, 5, null },
|
||||||
|
{ 16, 6, 5, null },
|
||||||
|
{ 15, 11, 4, null },
|
||||||
|
{ 14, null, 4, 14 },
|
||||||
|
{ 13, null, 4, 24 },
|
||||||
|
{ 12, null, 4, 1 },
|
||||||
|
{ 11, null, 3, 7 },
|
||||||
|
{ 10, 8, 3, null },
|
||||||
|
{ 9, 1, 3, null },
|
||||||
|
{ 8, null, 2, 14 },
|
||||||
|
{ 7, null, 2, 25 },
|
||||||
|
{ 6, null, 2, 3 },
|
||||||
|
{ 5, 12, 1, null },
|
||||||
|
{ 4, null, 1, 17 },
|
||||||
|
{ 3, 10, 1, null },
|
||||||
|
{ 2, null, 1, 33 },
|
||||||
|
{ 21, 10, 6, null },
|
||||||
|
{ 22, null, 6, 37 }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_ShopkeeperItems_ArmorId",
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
column: "ArmorId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_ShopkeeperItems_ShopkeeperId",
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
column: "ShopkeeperId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_ShopkeeperItems_WeaponId",
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
column: "WeaponId");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "ShopkeeperItems");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "Shopkeepers");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
29319
SessionCompanion/SessionCompanion.Database/Migrations/20210120173104_shopkeepers-items.Designer.cs
generated
Normal file
29319
SessionCompanion/SessionCompanion.Database/Migrations/20210120173104_shopkeepers-items.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,178 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Migrations
|
||||||
|
{
|
||||||
|
public partial class shopkeepersitems : Migration
|
||||||
|
{
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AddColumn<int>(
|
||||||
|
name: "Amount",
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
type: "int",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: 0);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
column: "Amount",
|
||||||
|
value: 3);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2,
|
||||||
|
column: "Amount",
|
||||||
|
value: 5);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3,
|
||||||
|
column: "Amount",
|
||||||
|
value: 20);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 4,
|
||||||
|
column: "Amount",
|
||||||
|
value: 34);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 5,
|
||||||
|
column: "Amount",
|
||||||
|
value: 12);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 6,
|
||||||
|
column: "Amount",
|
||||||
|
value: 48);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 7,
|
||||||
|
column: "Amount",
|
||||||
|
value: 25);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 8,
|
||||||
|
column: "Amount",
|
||||||
|
value: 34);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 9,
|
||||||
|
column: "Amount",
|
||||||
|
value: 44);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 10,
|
||||||
|
column: "Amount",
|
||||||
|
value: 2);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 11,
|
||||||
|
column: "Amount",
|
||||||
|
value: 21);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 12,
|
||||||
|
column: "Amount",
|
||||||
|
value: 36);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 13,
|
||||||
|
column: "Amount",
|
||||||
|
value: 5);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 14,
|
||||||
|
column: "Amount",
|
||||||
|
value: 13);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 15,
|
||||||
|
column: "Amount",
|
||||||
|
value: 19);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 16,
|
||||||
|
column: "Amount",
|
||||||
|
value: 17);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 17,
|
||||||
|
column: "Amount",
|
||||||
|
value: 3);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 18,
|
||||||
|
column: "Amount",
|
||||||
|
value: 1);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 19,
|
||||||
|
column: "Amount",
|
||||||
|
value: 6);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 20,
|
||||||
|
column: "Amount",
|
||||||
|
value: 9);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 21,
|
||||||
|
column: "Amount",
|
||||||
|
value: 12);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ShopkeeperItems",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 22,
|
||||||
|
column: "Amount",
|
||||||
|
value: 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "Amount",
|
||||||
|
table: "ShopkeeperItems");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
29319
SessionCompanion/SessionCompanion.Database/Migrations/20210120183221_shopkeepers-update.Designer.cs
generated
Normal file
29319
SessionCompanion/SessionCompanion.Database/Migrations/20210120183221_shopkeepers-update.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,41 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Migrations
|
||||||
|
{
|
||||||
|
public partial class shopkeepersupdate : Migration
|
||||||
|
{
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Shopkeepers",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3,
|
||||||
|
column: "IsAvailable",
|
||||||
|
value: false);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Shopkeepers",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 5,
|
||||||
|
column: "IsAvailable",
|
||||||
|
value: false);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Shopkeepers",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3,
|
||||||
|
column: "IsAvailable",
|
||||||
|
value: true);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Shopkeepers",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 5,
|
||||||
|
column: "IsAvailable",
|
||||||
|
value: true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,15 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Repositories
|
||||||
|
{
|
||||||
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
|
||||||
|
public class ArmorRepository : Repository<Armor>, IRepository<Armor>
|
||||||
|
{
|
||||||
|
public ArmorRepository(ApplicationDbContext _dbContext) : base(_dbContext)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Repositories
|
||||||
|
{
|
||||||
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
|
||||||
|
public class CharacterArmorRepository : Repository<CharacterArmor>, IRepository<CharacterArmor>
|
||||||
|
{
|
||||||
|
public CharacterArmorRepository(ApplicationDbContext _dbContext) : base(_dbContext)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Repositories
|
||||||
|
{
|
||||||
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
|
||||||
|
public class CharacterOtherEquipmentRepository : Repository<CharacterOtherEquipment>, IRepository<CharacterOtherEquipment>
|
||||||
|
{
|
||||||
|
public CharacterOtherEquipmentRepository(ApplicationDbContext _dbContext) : base(_dbContext)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Repositories
|
||||||
|
{
|
||||||
|
public class CharacterSpellRepository : Repository<CharacterSpell>, IRepository<CharacterSpell>
|
||||||
|
{
|
||||||
|
public CharacterSpellRepository(ApplicationDbContext _dbContext) : base(_dbContext)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Repositories
|
||||||
|
{
|
||||||
|
public class CharacterSpellSlotsRepository: Repository<CharacterSpellSlots>, IRepository<CharacterSpellSlots>
|
||||||
|
{
|
||||||
|
public CharacterSpellSlotsRepository(ApplicationDbContext _dbContext)
|
||||||
|
: base(_dbContext)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Repositories
|
||||||
|
{
|
||||||
|
public class CharacterWeaponRepository: Repository<CharacterWeapon>, IRepository<CharacterWeapon>
|
||||||
|
{
|
||||||
|
public CharacterWeaponRepository(ApplicationDbContext _dbContext) : base(_dbContext)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Repositories
|
||||||
|
{
|
||||||
|
public class GameActionRepository : Repository<GameAction>, IRepository<GameAction>
|
||||||
|
{
|
||||||
|
public GameActionRepository(ApplicationDbContext _dbContext) : base(_dbContext)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Repositories
|
||||||
|
{
|
||||||
|
public class LegendaryActionRepository : Repository<LegendaryAction>, IRepository<LegendaryAction>
|
||||||
|
{
|
||||||
|
public LegendaryActionRepository(ApplicationDbContext _dbContext) : base(_dbContext)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Repositories
|
||||||
|
{
|
||||||
|
public class MonsterActionsRepository : Repository<MonsterAction>, IRepository<MonsterAction>
|
||||||
|
{
|
||||||
|
public MonsterActionsRepository(ApplicationDbContext _dbContext) : base(_dbContext)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Repositories
|
||||||
|
{
|
||||||
|
public class MonsterLegendaryActionsRepository : Repository<MonsterLegendaryAction>, IRepository<MonsterLegendaryAction>
|
||||||
|
{
|
||||||
|
public MonsterLegendaryActionsRepository(ApplicationDbContext _dbContext) : base(_dbContext)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Repositories
|
||||||
|
{
|
||||||
|
public class MonsterRepository : Repository<Monster>, IRepository<Monster>
|
||||||
|
{
|
||||||
|
public MonsterRepository(ApplicationDbContext _dbContext) : base(_dbContext)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Repositories
|
||||||
|
{
|
||||||
|
public class MonsterSpecialAbilitiesRepository : Repository<MonsterSpecialAbility>, IRepository<MonsterSpecialAbility>
|
||||||
|
{
|
||||||
|
public MonsterSpecialAbilitiesRepository(ApplicationDbContext _dbContext) : base(_dbContext)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Repositories
|
||||||
|
{
|
||||||
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
|
||||||
|
public class OtherEquipmentRepository : Repository<OtherEquipment>, IRepository<OtherEquipment>
|
||||||
|
{
|
||||||
|
public OtherEquipmentRepository(ApplicationDbContext _dbContext) : base(_dbContext)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Repositories
|
||||||
|
{
|
||||||
|
public class ShopkeeperItemRepository : Repository<ShopkeeperItem>, IRepository<ShopkeeperItem>
|
||||||
|
{
|
||||||
|
public ShopkeeperItemRepository(ApplicationDbContext _dbContext) : base(_dbContext)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Repositories
|
||||||
|
{
|
||||||
|
public class ShopkeeperRepository : Repository<Shopkeeper>, IRepository<Shopkeeper>
|
||||||
|
{
|
||||||
|
public ShopkeeperRepository(ApplicationDbContext _dbContext) : base(_dbContext)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Repositories
|
||||||
|
{
|
||||||
|
public class SpecialAbilityRepository : Repository<SpecialAbility>, IRepository<SpecialAbility>
|
||||||
|
{
|
||||||
|
public SpecialAbilityRepository(ApplicationDbContext _dbContext) : base(_dbContext)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Repositories
|
||||||
|
{
|
||||||
|
public class SpellRepository : Repository<Spell>, IRepository<Spell>
|
||||||
|
{
|
||||||
|
public SpellRepository(ApplicationDbContext _dbContext) : base(_dbContext)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Repositories
|
||||||
|
{
|
||||||
|
public class WeaponRepository : Repository<Weapon>, IRepository<Weapon>
|
||||||
|
{
|
||||||
|
public WeaponRepository(ApplicationDbContext _dbContext) : base(_dbContext)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
457
SessionCompanion/SessionCompanion.Database/SeedFromJsons.cs
Normal file
457
SessionCompanion/SessionCompanion.Database/SeedFromJsons.cs
Normal file
@ -0,0 +1,457 @@
|
|||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using SessionCompanion.ViewModels.Enums;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database
|
||||||
|
{
|
||||||
|
public static class SeedFromJsons
|
||||||
|
{
|
||||||
|
static public Weapon SingleWeaponSeeder(dynamic item)
|
||||||
|
{
|
||||||
|
Weapon weapon = new Weapon();
|
||||||
|
|
||||||
|
// Id
|
||||||
|
weapon.Id = item.index;
|
||||||
|
|
||||||
|
// Name
|
||||||
|
weapon.Name = item.name;
|
||||||
|
|
||||||
|
// Weapon type
|
||||||
|
weapon.WeaponType = item.category_range;
|
||||||
|
|
||||||
|
// Cost
|
||||||
|
weapon.Cost = item.cost.quantity;
|
||||||
|
|
||||||
|
// CurrnecyType
|
||||||
|
switch ((string)item.cost.unit)
|
||||||
|
{
|
||||||
|
case "sp":
|
||||||
|
weapon.CurrencyType = CurrencyType.sp;
|
||||||
|
break;
|
||||||
|
case "gp":
|
||||||
|
weapon.CurrencyType = CurrencyType.gp;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// DiceCount
|
||||||
|
weapon.DiceCount = item.damage.dice_count;
|
||||||
|
|
||||||
|
// DiceValue
|
||||||
|
weapon.DiceValue = item.damage.dice_value;
|
||||||
|
|
||||||
|
// RangeMeele
|
||||||
|
weapon.RangeMeele = item.range.normal;
|
||||||
|
|
||||||
|
// RangeLong
|
||||||
|
weapon.RangeLong = item.range._long;
|
||||||
|
|
||||||
|
// RangeThrow
|
||||||
|
if (item.throw_range != null)
|
||||||
|
{
|
||||||
|
weapon.RangeThrowNormal = item.throw_range.normal;
|
||||||
|
weapon.RangeThrowLong = item.throw_range._long;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Weight
|
||||||
|
weapon.Weight = item.weight;
|
||||||
|
|
||||||
|
|
||||||
|
// Twohand
|
||||||
|
if (item.two_hand_damage != null)
|
||||||
|
{
|
||||||
|
weapon.TwoHandDiceCount = item.two_hand_damage.dice_count;
|
||||||
|
weapon.TwoHandDiceValue = item.two_hand_damage.dice_value;
|
||||||
|
}
|
||||||
|
if (item.special != null)
|
||||||
|
weapon.Description = item.special[0];
|
||||||
|
return weapon;
|
||||||
|
}
|
||||||
|
static public Armor SingleArmorSeeder(dynamic item, int id)
|
||||||
|
{
|
||||||
|
Armor armor = new Armor();
|
||||||
|
|
||||||
|
armor.Id = id;
|
||||||
|
armor.Name = item.name;
|
||||||
|
armor.Category = item.armor_category;
|
||||||
|
armor.ArmorClassBase = item.armor_class["base"];
|
||||||
|
armor.HaveDexterityBonus = item.armor_class["dex_bonus"];
|
||||||
|
armor.MinimumStrength = item.str_minimum;
|
||||||
|
armor.HaveStealthDisadvantage = item.stealth_disadvantage;
|
||||||
|
armor.Weight = item.weight;
|
||||||
|
armor.Cost = item.cost.quantity;
|
||||||
|
switch ((string)item.cost.unit)
|
||||||
|
{
|
||||||
|
case "sp":
|
||||||
|
armor.CurrencyType = CurrencyType.sp;
|
||||||
|
break;
|
||||||
|
case "gp":
|
||||||
|
armor.CurrencyType = CurrencyType.gp;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return armor;
|
||||||
|
}
|
||||||
|
static public OtherEquipment SingleOtherEquipmentSeeder(dynamic item, int id)
|
||||||
|
{
|
||||||
|
OtherEquipment otherEq = new OtherEquipment();
|
||||||
|
|
||||||
|
otherEq.Id = id;
|
||||||
|
otherEq.Name = item.name;
|
||||||
|
if (item.desc != null)
|
||||||
|
foreach (dynamic description in item.desc)
|
||||||
|
otherEq.Description += " " + description;
|
||||||
|
else
|
||||||
|
otherEq.Description = string.Empty;
|
||||||
|
|
||||||
|
otherEq.Cost = item.cost.quantity;
|
||||||
|
switch ((string)item.cost.unit)
|
||||||
|
{
|
||||||
|
case "sp":
|
||||||
|
otherEq.CurrencyType = CurrencyType.sp;
|
||||||
|
break;
|
||||||
|
case "gp":
|
||||||
|
otherEq.CurrencyType = CurrencyType.gp;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return otherEq;
|
||||||
|
}
|
||||||
|
static public Spell SingleSpellSeeder(dynamic item)
|
||||||
|
{
|
||||||
|
Spell spell = new Spell();
|
||||||
|
|
||||||
|
// Id
|
||||||
|
spell.Id = item.index;
|
||||||
|
|
||||||
|
// Name
|
||||||
|
spell.Name = item.name;
|
||||||
|
|
||||||
|
// Description
|
||||||
|
foreach (dynamic des in item.desc)
|
||||||
|
spell.Description += des + ";";
|
||||||
|
if (spell.Description != null)
|
||||||
|
spell.Description = spell.Description.Remove(spell.Description.Length - 1);
|
||||||
|
|
||||||
|
// HigherLevel
|
||||||
|
if (item.higher_level != null)
|
||||||
|
{
|
||||||
|
foreach (dynamic hl in item.higher_level)
|
||||||
|
spell.HigherLevel += (string)hl + ";";
|
||||||
|
if (spell.HigherLevel != null)
|
||||||
|
spell.HigherLevel = spell.HigherLevel.Remove(spell.HigherLevel.Length - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Range
|
||||||
|
switch ((string)item.range)
|
||||||
|
{
|
||||||
|
case "90 feet":
|
||||||
|
spell.Range = SpellsEnums.Ranges.Feet_90;
|
||||||
|
break;
|
||||||
|
case "60 feet":
|
||||||
|
spell.Range = SpellsEnums.Ranges.Feet_60;
|
||||||
|
break;
|
||||||
|
case "30 feet":
|
||||||
|
spell.Range = SpellsEnums.Ranges.Feet_30;
|
||||||
|
break;
|
||||||
|
case "10 feet":
|
||||||
|
spell.Range = SpellsEnums.Ranges.Feet_10;
|
||||||
|
break;
|
||||||
|
case "120 feet":
|
||||||
|
spell.Range = SpellsEnums.Ranges.Feet_120;
|
||||||
|
break;
|
||||||
|
case "150 feet":
|
||||||
|
spell.Range = SpellsEnums.Ranges.Feet_150;
|
||||||
|
break;
|
||||||
|
case "1 mile":
|
||||||
|
spell.Range = SpellsEnums.Ranges.Miles_1;
|
||||||
|
break;
|
||||||
|
case "300 feet":
|
||||||
|
spell.Range = SpellsEnums.Ranges.Feet_300;
|
||||||
|
break;
|
||||||
|
case "500 feet":
|
||||||
|
spell.Range = SpellsEnums.Ranges.Feet_500;
|
||||||
|
break;
|
||||||
|
case "100 feet":
|
||||||
|
spell.Range = SpellsEnums.Ranges.Feet_100;
|
||||||
|
break;
|
||||||
|
case "500 miles":
|
||||||
|
spell.Range = SpellsEnums.Ranges.Miles_500;
|
||||||
|
break;
|
||||||
|
case "5 feet":
|
||||||
|
spell.Range = SpellsEnums.Ranges.Feet_5;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (Enum.TryParse<SpellsEnums.Ranges>((string)item.range, true, out SpellsEnums.Ranges RangeType))
|
||||||
|
if (Enum.IsDefined(typeof(SpellsEnums.Ranges), RangeType))
|
||||||
|
spell.Range = RangeType;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Components
|
||||||
|
foreach (dynamic component in item.components)
|
||||||
|
{
|
||||||
|
if (Enum.TryParse<SpellsEnums.Components>((string)component, true, out SpellsEnums.Components ComponentType))
|
||||||
|
if (Enum.IsDefined(typeof(SpellsEnums.Components), ComponentType))
|
||||||
|
spell.Components += ComponentType + ";";
|
||||||
|
}
|
||||||
|
if (spell.Components != null)
|
||||||
|
spell.Components = spell.Components.Remove(spell.Components.Length - 1);
|
||||||
|
|
||||||
|
if (item.material != null)
|
||||||
|
spell.Material = item.material;
|
||||||
|
|
||||||
|
if ((string)item.ritual == "no")
|
||||||
|
spell.Ritual = false;
|
||||||
|
else
|
||||||
|
spell.Ritual = true;
|
||||||
|
|
||||||
|
// Duration
|
||||||
|
switch ((string)item.duration)
|
||||||
|
{
|
||||||
|
case "8 hours":
|
||||||
|
spell.Duration = SpellsEnums.Durations.Hours_8;
|
||||||
|
break;
|
||||||
|
case "1 hour":
|
||||||
|
spell.Duration = SpellsEnums.Durations.Hours_1;
|
||||||
|
break;
|
||||||
|
case "24 hours":
|
||||||
|
spell.Duration = SpellsEnums.Durations.Hours_24;
|
||||||
|
break;
|
||||||
|
case "1 minute":
|
||||||
|
spell.Duration = SpellsEnums.Durations.Minutes_1;
|
||||||
|
break;
|
||||||
|
case "10 days":
|
||||||
|
spell.Duration = SpellsEnums.Durations.Days_10;
|
||||||
|
break;
|
||||||
|
case "10 minutes":
|
||||||
|
spell.Duration = SpellsEnums.Durations.Minutes_10;
|
||||||
|
break;
|
||||||
|
case "1 round":
|
||||||
|
spell.Duration = SpellsEnums.Durations.Round_1;
|
||||||
|
break;
|
||||||
|
case "7 days":
|
||||||
|
spell.Duration = SpellsEnums.Durations.Days_7;
|
||||||
|
break;
|
||||||
|
case "30 days":
|
||||||
|
spell.Duration = SpellsEnums.Durations.Days_30;
|
||||||
|
break;
|
||||||
|
case "2 hours":
|
||||||
|
spell.Duration = SpellsEnums.Durations.Hours_2;
|
||||||
|
break;
|
||||||
|
case "Until dispelled":
|
||||||
|
spell.Duration = SpellsEnums.Durations.Until_dispelled;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (Enum.TryParse<SpellsEnums.Durations>((string)item.duration, true, out SpellsEnums.Durations DurationType))
|
||||||
|
if (Enum.IsDefined(typeof(SpellsEnums.Durations), DurationType))
|
||||||
|
spell.Duration = DurationType;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Concentration
|
||||||
|
if ((string)item.concentration == "no")
|
||||||
|
spell.Concentration = false;
|
||||||
|
else
|
||||||
|
spell.Concentration = true;
|
||||||
|
|
||||||
|
// CastingTime
|
||||||
|
switch ((string)item.casting_time)
|
||||||
|
{
|
||||||
|
case "1 action":
|
||||||
|
spell.CastingTime = SpellsEnums.CastingTimes.Action_1;
|
||||||
|
break;
|
||||||
|
case "1 minute":
|
||||||
|
spell.CastingTime = SpellsEnums.CastingTimes.Minutes_1;
|
||||||
|
break;
|
||||||
|
case "1 hour":
|
||||||
|
spell.CastingTime = SpellsEnums.CastingTimes.Hours_1;
|
||||||
|
break;
|
||||||
|
case "8 hours":
|
||||||
|
spell.CastingTime = SpellsEnums.CastingTimes.Hours_8;
|
||||||
|
break;
|
||||||
|
case "1 bonus action":
|
||||||
|
spell.CastingTime = SpellsEnums.CastingTimes.Bonus_Action_1;
|
||||||
|
break;
|
||||||
|
case "10 minutes":
|
||||||
|
spell.CastingTime = SpellsEnums.CastingTimes.Minutes_10;
|
||||||
|
break;
|
||||||
|
case "1 reaction":
|
||||||
|
spell.CastingTime = SpellsEnums.CastingTimes.Reaction_1;
|
||||||
|
break;
|
||||||
|
case "24 hours":
|
||||||
|
spell.CastingTime = SpellsEnums.CastingTimes.Hours_24;
|
||||||
|
break;
|
||||||
|
case "12 hours":
|
||||||
|
spell.CastingTime = SpellsEnums.CastingTimes.Hours_12;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Level
|
||||||
|
spell.Level = (int)item.level;
|
||||||
|
|
||||||
|
// School
|
||||||
|
if (Enum.TryParse<SpellsEnums.Schools>((string)item.school.name, true, out SpellsEnums.Schools SchoolType))
|
||||||
|
if (Enum.IsDefined(typeof(SpellsEnums.Schools), SchoolType))
|
||||||
|
spell.School = SchoolType;
|
||||||
|
|
||||||
|
// Classes
|
||||||
|
foreach (dynamic c in item.classes)
|
||||||
|
{
|
||||||
|
if (Enum.TryParse<SpellsEnums.Classes>((string)c.name, true, out SpellsEnums.Classes ClassType))
|
||||||
|
if (Enum.IsDefined(typeof(SpellsEnums.Classes), ClassType))
|
||||||
|
spell.Classes += ClassType + ";";
|
||||||
|
}
|
||||||
|
if (spell.Classes != null)
|
||||||
|
spell.Classes = spell.Classes.Remove(spell.Classes.Length - 1);
|
||||||
|
|
||||||
|
// Subclasses
|
||||||
|
foreach (dynamic s in item.subclasses)
|
||||||
|
{
|
||||||
|
if (Enum.TryParse<SpellsEnums.Subclass>((string)s.name, true, out SpellsEnums.Subclass SubClassType))
|
||||||
|
if (Enum.IsDefined(typeof(SpellsEnums.Subclass), SubClassType))
|
||||||
|
spell.Subclasses += SubClassType + ";";
|
||||||
|
}
|
||||||
|
if (spell.Subclasses != null)
|
||||||
|
spell.Subclasses = spell.Subclasses.Remove(spell.Subclasses.Length - 1);
|
||||||
|
|
||||||
|
return spell;
|
||||||
|
}
|
||||||
|
static public SpecialAbility SingleSpecialAbilitySeeder(dynamic item, int id)
|
||||||
|
{
|
||||||
|
SpecialAbility monsterSpecialAbility = new SpecialAbility();
|
||||||
|
|
||||||
|
monsterSpecialAbility.Id = id;
|
||||||
|
|
||||||
|
monsterSpecialAbility.Name = item.name;
|
||||||
|
|
||||||
|
if (item.damage_dice != null)
|
||||||
|
{
|
||||||
|
var dice = SplitDice((string)item.damage_dice);
|
||||||
|
monsterSpecialAbility.DamageDiceAmount = dice.Item1;
|
||||||
|
monsterSpecialAbility.DamageDice = dice.Item2;
|
||||||
|
}
|
||||||
|
|
||||||
|
monsterSpecialAbility.Description = item.desc;
|
||||||
|
|
||||||
|
return monsterSpecialAbility;
|
||||||
|
}
|
||||||
|
static public GameAction SingleActionSeeder(dynamic item, int id)
|
||||||
|
{
|
||||||
|
GameAction monsterAction = new GameAction();
|
||||||
|
|
||||||
|
monsterAction.Id = id;
|
||||||
|
|
||||||
|
monsterAction.Name = item.name;
|
||||||
|
|
||||||
|
monsterAction.AttackBonus = item.attack_bonus;
|
||||||
|
|
||||||
|
monsterAction.DamageBonus = item.damage_bonus;
|
||||||
|
if (item.damage_dice != null)
|
||||||
|
{
|
||||||
|
var dice = SplitDice((string)item.damage_dice);
|
||||||
|
monsterAction.DamageDiceAmount = dice.Item1;
|
||||||
|
monsterAction.DamageDice = dice.Item2;
|
||||||
|
}
|
||||||
|
monsterAction.Description = item.desc;
|
||||||
|
return monsterAction;
|
||||||
|
}
|
||||||
|
static public LegendaryAction SingleLegendaryActionSeeder(dynamic item, int id)
|
||||||
|
{
|
||||||
|
LegendaryAction monsterLegendaryAction = new LegendaryAction();
|
||||||
|
|
||||||
|
monsterLegendaryAction.Id = id;
|
||||||
|
|
||||||
|
monsterLegendaryAction.Name = item.name;
|
||||||
|
|
||||||
|
monsterLegendaryAction.Description = item.desc;
|
||||||
|
|
||||||
|
return monsterLegendaryAction;
|
||||||
|
}
|
||||||
|
static public Monster SingleMonsterSeeder(dynamic item)
|
||||||
|
{
|
||||||
|
Monster monster = new Monster();
|
||||||
|
|
||||||
|
monster.Id = item.index;
|
||||||
|
|
||||||
|
monster.Name = item.name;
|
||||||
|
|
||||||
|
monster.Size = item.size;
|
||||||
|
|
||||||
|
monster.Type = item.type;
|
||||||
|
|
||||||
|
monster.Subtype = item.subtype;
|
||||||
|
|
||||||
|
monster.Alignment = item.alignment;
|
||||||
|
|
||||||
|
monster.ArmorClass = item.armor_class;
|
||||||
|
|
||||||
|
monster.HitPoints = item.hit_points;
|
||||||
|
|
||||||
|
var dice = SplitDice((string)item.hit_dice);
|
||||||
|
monster.HitDiceAmount = dice.Item1;
|
||||||
|
monster.HitDiceType = dice.Item2;
|
||||||
|
|
||||||
|
monster.WalkSpeed = item.speed.walk;
|
||||||
|
monster.FlySpeed = item.speed.fly;
|
||||||
|
monster.SwimSpeed = item.speed.swim;
|
||||||
|
|
||||||
|
monster.Strength = item.strength;
|
||||||
|
monster.StrengthSave = item.strength_save;
|
||||||
|
|
||||||
|
monster.Dexterity = item.dexterity;
|
||||||
|
monster.DexteritySave = item.dexterity_save;
|
||||||
|
|
||||||
|
monster.Constitution = item.constitution;
|
||||||
|
monster.ConstitutionSave = item.constitution_save;
|
||||||
|
|
||||||
|
monster.Wisdom = item.wisdom;
|
||||||
|
monster.WisdomSave = item.wisdom_save;
|
||||||
|
|
||||||
|
monster.Charisma = item.charisma;
|
||||||
|
monster.CharismaSave = item.charsisma_save;
|
||||||
|
|
||||||
|
monster.Intelligence = item.intelligence;
|
||||||
|
monster.IntelligenceSave = item.intelligence_save;
|
||||||
|
|
||||||
|
foreach (dynamic dv in item.damage_vulnerabilities)
|
||||||
|
monster.MonsterDamageVulnerabilities += dv + ";";
|
||||||
|
if (monster.MonsterDamageVulnerabilities != null)
|
||||||
|
monster.MonsterDamageVulnerabilities = monster.MonsterDamageVulnerabilities.Remove(monster.MonsterDamageVulnerabilities.Length - 1);
|
||||||
|
|
||||||
|
foreach (dynamic dr in item.damage_resistances)
|
||||||
|
monster.MonsterDamageResistances += dr + ";";
|
||||||
|
if (monster.MonsterDamageResistances != null)
|
||||||
|
monster.MonsterDamageResistances = monster.MonsterDamageResistances.Remove(monster.MonsterDamageResistances.Length - 1);
|
||||||
|
|
||||||
|
foreach (dynamic di in item.damage_immunities)
|
||||||
|
monster.MonsterDamageImmunities += di + ";";
|
||||||
|
if (monster.MonsterDamageImmunities != null)
|
||||||
|
monster.MonsterDamageImmunities = monster.MonsterDamageImmunities.Remove(monster.MonsterDamageImmunities.Length - 1);
|
||||||
|
|
||||||
|
foreach (dynamic ci in item.condition_immunities)
|
||||||
|
monster.MonsterConditionImmunities += ci + ";";
|
||||||
|
if (monster.MonsterConditionImmunities != null)
|
||||||
|
monster.MonsterConditionImmunities = monster.MonsterConditionImmunities.Remove(monster.MonsterConditionImmunities.Length - 1);
|
||||||
|
|
||||||
|
monster.MonsterSenses = item.senses;
|
||||||
|
|
||||||
|
monster.MonsterLanguages = item.languages;
|
||||||
|
|
||||||
|
monster.ChallengeRating = item.challenge_rating;
|
||||||
|
|
||||||
|
return monster;
|
||||||
|
}
|
||||||
|
static public Tuple<int, int> SplitDice(string dice)
|
||||||
|
{
|
||||||
|
int stop = dice.IndexOf('d');
|
||||||
|
var amount = int.Parse(dice.Substring(0, stop));
|
||||||
|
stop++;
|
||||||
|
var value = int.Parse(dice.Substring(stop, dice.Length - stop));
|
||||||
|
return new Tuple<int, int>(amount, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -17,4 +17,8 @@
|
|||||||
</PackageReference>
|
</PackageReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\SessionCompanion.ViewModels\SessionCompanion.ViewModels.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
21
SessionCompanion/SessionCompanion.Database/Tables/Armor.cs
Normal file
21
SessionCompanion/SessionCompanion.Database/Tables/Armor.cs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
using SessionCompanion.ViewModels.Enums;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Tables
|
||||||
|
{
|
||||||
|
|
||||||
|
public class Armor : BaseEntity
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
public string Category { get; set; }
|
||||||
|
public string ArmorClassBase {get; set; }
|
||||||
|
public bool HaveDexterityBonus { get; set; }
|
||||||
|
public int? MinimumStrength { get; set; }
|
||||||
|
public bool HaveStealthDisadvantage { get; set; }
|
||||||
|
public int Weight { get; set; }
|
||||||
|
public int Cost { get; set; }
|
||||||
|
public CurrencyType CurrencyType { get; set; }
|
||||||
|
|
||||||
|
public virtual ICollection<CharacterArmor> CharacterArmors { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
namespace SessionCompanion.Database.Tables
|
||||||
|
{
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
public class CharacterArmor : BaseEntity
|
||||||
|
{
|
||||||
|
[ForeignKey(nameof(Character))]
|
||||||
|
public int CharacterId { get; set; }
|
||||||
|
public virtual Character Character { get; set; }
|
||||||
|
|
||||||
|
[ForeignKey(nameof(Armor))]
|
||||||
|
public int ArmorId { get; set; }
|
||||||
|
public virtual Armor Armor { get; set; }
|
||||||
|
|
||||||
|
public bool InUse { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
namespace SessionCompanion.Database.Tables
|
||||||
|
{
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
public class CharacterOtherEquipment : BaseEntity
|
||||||
|
{
|
||||||
|
[ForeignKey(nameof(Character))]
|
||||||
|
public int CharacterId { get; set; }
|
||||||
|
public virtual Character Character { get; set; }
|
||||||
|
|
||||||
|
[ForeignKey(nameof(OtherEquipment))]
|
||||||
|
public int OtherEquipmentId { get; set; }
|
||||||
|
public virtual OtherEquipment OtherEquipment { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Tables
|
||||||
|
{
|
||||||
|
public class CharacterSpell : BaseEntity
|
||||||
|
{
|
||||||
|
[ForeignKey(nameof(Character))]
|
||||||
|
public int CharacterId { get; set; }
|
||||||
|
public virtual Character Character { get; set; }
|
||||||
|
|
||||||
|
[ForeignKey(nameof(Spell))]
|
||||||
|
public int SpellId { get; set; }
|
||||||
|
public virtual Spell Spell { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,48 @@
|
|||||||
|
|
||||||
|
namespace SessionCompanion.Database.Tables
|
||||||
|
{
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
public class CharacterSpellSlots : BaseEntity
|
||||||
|
{
|
||||||
|
[ForeignKey(nameof(Character))]
|
||||||
|
public int CharacterId { get; set; }
|
||||||
|
public virtual Character Character { get; set; }
|
||||||
|
|
||||||
|
public int FirstLevelSlots { get; set; }
|
||||||
|
|
||||||
|
public int FirstLevelSlotsUsed { get; set; }
|
||||||
|
|
||||||
|
public int SecondLevelSlots { get; set; }
|
||||||
|
|
||||||
|
public int SecondLevelSlotsUsed { get; set; }
|
||||||
|
|
||||||
|
public int ThirdLevelSlots { get; set; }
|
||||||
|
|
||||||
|
public int ThirdLevelSlotsUsed { get; set; }
|
||||||
|
|
||||||
|
public int FourthLevelSlots { get; set; }
|
||||||
|
|
||||||
|
public int FourthLevelSlotsUsed { get; set; }
|
||||||
|
|
||||||
|
public int FifthLevelSlots { get; set; }
|
||||||
|
|
||||||
|
public int FifthLevelSlotsUsed { get; set; }
|
||||||
|
|
||||||
|
public int SixthLevelSlots { get; set; }
|
||||||
|
|
||||||
|
public int SixthLevelSlotsUsed { get; set; }
|
||||||
|
|
||||||
|
public int SeventhLevelSlots { get; set; }
|
||||||
|
|
||||||
|
public int SeventhLevelSlotsUsed { get; set; }
|
||||||
|
|
||||||
|
public int EightLevelSlots { get; set; }
|
||||||
|
|
||||||
|
public int EightLevelSlotsUsed { get; set; }
|
||||||
|
|
||||||
|
public int NinthLevelSlots { get; set; }
|
||||||
|
|
||||||
|
public int NinthLevelSlotsUsed { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Tables
|
||||||
|
{
|
||||||
|
public class CharacterWeapon : BaseEntity
|
||||||
|
{
|
||||||
|
[ForeignKey(nameof(Character))]
|
||||||
|
public int CharacterId { get; set; }
|
||||||
|
public virtual Character Character { get; set; }
|
||||||
|
|
||||||
|
[ForeignKey(nameof(Weapon))]
|
||||||
|
public int WeaponId { get; set; }
|
||||||
|
public virtual Weapon Weapon { get; set; }
|
||||||
|
|
||||||
|
public bool InUse { get; set; }
|
||||||
|
|
||||||
|
public bool HoldInRightHand { get; set; }
|
||||||
|
public bool HoldInLeftHand { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Tables
|
||||||
|
{
|
||||||
|
public class GameAction : BaseEntity
|
||||||
|
{
|
||||||
|
// <summary>
|
||||||
|
/// Nazwa akcji
|
||||||
|
/// </summary>
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Opis akcji
|
||||||
|
/// </summary>
|
||||||
|
public string Description { get; set; }
|
||||||
|
|
||||||
|
public int AttackBonus { get; set; }
|
||||||
|
|
||||||
|
public int? DamageDice { get; set; }
|
||||||
|
public int? DamageDiceAmount { get; set; }
|
||||||
|
|
||||||
|
public int? DamageBonus { get; set; }
|
||||||
|
|
||||||
|
public virtual ICollection<MonsterAction> MonsterActions { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Tables
|
||||||
|
{
|
||||||
|
public class LegendaryAction : BaseEntity
|
||||||
|
{
|
||||||
|
// <summary>
|
||||||
|
/// Nazwa legendarnej akcji
|
||||||
|
/// </summary>
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Opis akcji
|
||||||
|
/// </summary>
|
||||||
|
public string Description { get; set; }
|
||||||
|
|
||||||
|
public virtual ICollection<MonsterLegendaryAction> MonsterLegendaryActions { get; set; }
|
||||||
|
}
|
||||||
|
}
|
162
SessionCompanion/SessionCompanion.Database/Tables/Monster.cs
Normal file
162
SessionCompanion/SessionCompanion.Database/Tables/Monster.cs
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Tables
|
||||||
|
{
|
||||||
|
public class Monster : BaseEntity
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Nazwa potwora
|
||||||
|
/// </summary>
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Rozmiar potwora
|
||||||
|
/// </summary>
|
||||||
|
public string Size { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Rodzaj potwora
|
||||||
|
/// </summary>
|
||||||
|
public string Type { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Podtyp potwora
|
||||||
|
/// </summary>
|
||||||
|
public string Subtype { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Charakter potwora
|
||||||
|
/// </summary>
|
||||||
|
public string Alignment { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Poziom pancerza potwora
|
||||||
|
/// </summary>
|
||||||
|
public int ArmorClass { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Iloś punktów zycia potwora
|
||||||
|
/// </summary>
|
||||||
|
public int HitPoints { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Ilość kości określajacych punkty życia potwora
|
||||||
|
/// </summary>
|
||||||
|
public int HitDiceAmount { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Kość którą rzucamy aby określić punkty życia potwora
|
||||||
|
/// </summary>
|
||||||
|
public int HitDiceType { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Szybkość chodzenia potwora
|
||||||
|
/// </summary>
|
||||||
|
public string WalkSpeed { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Szybkość pływania potwora
|
||||||
|
/// </summary>
|
||||||
|
public string SwimSpeed { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Szybkość latania potwora
|
||||||
|
/// </summary>
|
||||||
|
public string FlySpeed { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty zręczności potwora
|
||||||
|
/// </summary>
|
||||||
|
public int Dexterity { get; set; }
|
||||||
|
public int? DexteritySave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty siły potwora
|
||||||
|
/// </summary>
|
||||||
|
public int Strength { get; set; }
|
||||||
|
public int? StrengthSave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty kondycji potwora
|
||||||
|
/// </summary>
|
||||||
|
public int Constitution { get; set; }
|
||||||
|
public int? ConstitutionSave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty inteligencji potwora
|
||||||
|
/// </summary>
|
||||||
|
public int Intelligence { get; set; }
|
||||||
|
public int? IntelligenceSave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty mądrości potwora
|
||||||
|
/// </summary>
|
||||||
|
public int Wisdom { get; set; }
|
||||||
|
public int? WisdomSave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty charyzmy potwora
|
||||||
|
/// </summary>
|
||||||
|
public int Charisma { get; set; }
|
||||||
|
public int? CharismaSave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Poziom trudności potwora
|
||||||
|
/// </summary>
|
||||||
|
public int ChallengeRating { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty doświadczenia za zabicie potwora
|
||||||
|
/// </summary>
|
||||||
|
public int ExperiencePoints { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Połączenie z tabelą MonsterActions
|
||||||
|
/// </summary>
|
||||||
|
public virtual ICollection<MonsterAction> MonsterAction { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Na jakie stany odporny jest potwor
|
||||||
|
/// </summary>
|
||||||
|
public string MonsterConditionImmunities { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Na jakie obrazenia odporny jest potwor
|
||||||
|
/// </summary>
|
||||||
|
public string MonsterDamageImmunities { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Na jakie obrazenia potwor ma zmniejszoną słabosc
|
||||||
|
/// </summary>
|
||||||
|
public string MonsterDamageResistances { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Na co potwor jest wrazliwy
|
||||||
|
/// </summary>
|
||||||
|
public string MonsterDamageVulnerabilities { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Jezyki jakimi wlada potwor
|
||||||
|
/// </summary>
|
||||||
|
public string MonsterLanguages { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Połączenie z tabelą MonsterLegendaryActions
|
||||||
|
/// </summary>
|
||||||
|
public virtual ICollection<MonsterLegendaryAction> MonsterLegendaryAction { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Połączenie z tabelą MonsterSenses
|
||||||
|
/// </summary>
|
||||||
|
public string MonsterSenses { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Połączenie z tabelą MonsterSpecialAbilities
|
||||||
|
/// </summary>
|
||||||
|
public virtual ICollection<MonsterSpecialAbility> MonsterSpecialAbility { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Tables
|
||||||
|
{
|
||||||
|
public class MonsterAction : BaseEntity
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Id potwora
|
||||||
|
/// </summary>
|
||||||
|
public int MonsterId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Połączenie z tabelą Monsters
|
||||||
|
/// </summary>
|
||||||
|
public virtual Monster Monster { get; set; }
|
||||||
|
|
||||||
|
public int GameActionId { get; set; }
|
||||||
|
public virtual GameAction GameAction { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Tables
|
||||||
|
{
|
||||||
|
public class MonsterLegendaryAction : BaseEntity
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Id potwora
|
||||||
|
/// </summary>
|
||||||
|
public int MonsterId { get; set; }
|
||||||
|
public int LegendaryActionId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Połączenie z tabelą Monster
|
||||||
|
/// </summary>
|
||||||
|
public virtual Monster Monster { get; set; }
|
||||||
|
|
||||||
|
public virtual LegendaryAction LegendaryActions { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Tables
|
||||||
|
{
|
||||||
|
public class MonsterSpecialAbility : BaseEntity
|
||||||
|
{
|
||||||
|
public int SpecialAbilityId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public int? DamageDice { get; set; }
|
||||||
|
|
||||||
|
public int? DamageDiceAmount { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Id potwora
|
||||||
|
/// </summary>
|
||||||
|
public int? MonsterId { get; set; }
|
||||||
|
|
||||||
|
public virtual SpecialAbility SpecialAbility { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Połączenie z tabelą Monster
|
||||||
|
/// </summary>
|
||||||
|
public virtual Monster Monster { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
using SessionCompanion.ViewModels.Enums;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Tables
|
||||||
|
{
|
||||||
|
|
||||||
|
public class OtherEquipment : BaseEntity
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
public string Description { get; set; }
|
||||||
|
public int Cost { get; set; }
|
||||||
|
public CurrencyType CurrencyType { get; set; }
|
||||||
|
|
||||||
|
public virtual ICollection<CharacterOtherEquipment> CharacterOtherEquipments { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Tables
|
||||||
|
{
|
||||||
|
public class Shopkeeper : BaseEntity
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
public bool IsAvailable { get; set; }
|
||||||
|
|
||||||
|
public virtual ICollection<ShopkeeperItem> ShopkeeperItems { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Tables
|
||||||
|
{
|
||||||
|
public class ShopkeeperItem : BaseEntity
|
||||||
|
{
|
||||||
|
[ForeignKey(nameof(Shopkeeper))]
|
||||||
|
public int ShopkeeperId { get; set; }
|
||||||
|
public virtual Shopkeeper Shopkeeper { get; set; }
|
||||||
|
|
||||||
|
[ForeignKey(nameof(Armor))]
|
||||||
|
public int? ArmorId { get; set; }
|
||||||
|
public virtual Armor Armor { get; set; }
|
||||||
|
|
||||||
|
[ForeignKey(nameof(Weapon))]
|
||||||
|
public int? WeaponId { get; set; }
|
||||||
|
public virtual Weapon Weapon { get; set; }
|
||||||
|
|
||||||
|
public int Amount { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Tables
|
||||||
|
{
|
||||||
|
public class SpecialAbility : BaseEntity
|
||||||
|
{
|
||||||
|
// <summary>
|
||||||
|
/// Nazwa umiejętności
|
||||||
|
/// </summary>
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Opis umiejętności
|
||||||
|
/// </summary>
|
||||||
|
public string Description { get; set; }
|
||||||
|
|
||||||
|
public int? DamageDice { get; set; }
|
||||||
|
|
||||||
|
public int? DamageDiceAmount { get; set; }
|
||||||
|
|
||||||
|
public virtual ICollection<MonsterSpecialAbility> MonsterSpecialAbilities { get; set; }
|
||||||
|
}
|
||||||
|
}
|
25
SessionCompanion/SessionCompanion.Database/Tables/Spell.cs
Normal file
25
SessionCompanion/SessionCompanion.Database/Tables/Spell.cs
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using static SessionCompanion.ViewModels.Enums.SpellsEnums;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Tables
|
||||||
|
{
|
||||||
|
public class Spell : BaseEntity
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
public string Description { get; set; }
|
||||||
|
public string HigherLevel { get; set; }
|
||||||
|
public Ranges Range { get; set; }
|
||||||
|
public string Components { get; set; }
|
||||||
|
public string Material { get; set; }
|
||||||
|
public bool Ritual { get; set; }
|
||||||
|
public Durations Duration { get; set; }
|
||||||
|
public bool Concentration { get; set; }
|
||||||
|
public CastingTimes CastingTime { get; set; }
|
||||||
|
public int Level { get; set; }
|
||||||
|
public Schools School { get; set; }
|
||||||
|
public string Classes { get; set; }
|
||||||
|
public string Subclasses { get; set; }
|
||||||
|
|
||||||
|
public virtual ICollection<CharacterSpell> CharacterSpells { get; set; }
|
||||||
|
}
|
||||||
|
}
|
29
SessionCompanion/SessionCompanion.Database/Tables/Weapon.cs
Normal file
29
SessionCompanion/SessionCompanion.Database/Tables/Weapon.cs
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
using SessionCompanion.ViewModels.Enums;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Tables
|
||||||
|
{
|
||||||
|
public class Weapon : BaseEntity
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
public int Cost { get; set; }
|
||||||
|
public int Weight { get; set; }
|
||||||
|
|
||||||
|
public CurrencyType CurrencyType { get; set; }
|
||||||
|
public int DiceCount { get; set; }
|
||||||
|
public int DiceValue { get; set; }
|
||||||
|
public int? TwoHandDiceCount { get; set; }
|
||||||
|
public int? TwoHandDiceValue { get; set; }
|
||||||
|
public string TwoHandDamageType { get; set; }
|
||||||
|
|
||||||
|
public string Description { get; set; }
|
||||||
|
|
||||||
|
public string WeaponType { get; set; }
|
||||||
|
public int RangeMeele { get; set; }
|
||||||
|
public int? RangeThrowNormal { get; set; }
|
||||||
|
public int? RangeThrowLong { get; set; }
|
||||||
|
public int? RangeLong { get; set; }
|
||||||
|
|
||||||
|
public virtual ICollection<CharacterWeapon> CharacterWeapons { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,216 @@
|
|||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using SessionCompanion.ViewModels.UniversalModels;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Services.Helpers
|
||||||
|
{
|
||||||
|
public static class CustomMappings
|
||||||
|
{
|
||||||
|
public static UniversalStatisticViewModel MapCharisma(Charisma charisma)
|
||||||
|
{
|
||||||
|
UniversalStatisticViewModel universalStatisticViewModel = new UniversalStatisticViewModel
|
||||||
|
{
|
||||||
|
Id = charisma.Id,
|
||||||
|
Name = "Charisma",
|
||||||
|
Value = charisma.Value,
|
||||||
|
Modification = charisma.Modification,
|
||||||
|
SavingThrows = charisma.SavingThrows,
|
||||||
|
CanSaveThrows = charisma.CanSaveThrows,
|
||||||
|
Skills = new List<UniversalSkillViewModel>
|
||||||
|
{
|
||||||
|
new UniversalSkillViewModel
|
||||||
|
{
|
||||||
|
Name = "Deception",
|
||||||
|
Value = charisma.Deception,
|
||||||
|
Can = charisma.CanDeception
|
||||||
|
},
|
||||||
|
new UniversalSkillViewModel
|
||||||
|
{
|
||||||
|
Name = "Intimidation",
|
||||||
|
Value = charisma.Intimidation,
|
||||||
|
Can = charisma.CanIntimidation
|
||||||
|
},
|
||||||
|
new UniversalSkillViewModel
|
||||||
|
{
|
||||||
|
Name = "Performance",
|
||||||
|
Value = charisma.Performance,
|
||||||
|
Can = charisma.CanPerformance
|
||||||
|
},
|
||||||
|
new UniversalSkillViewModel
|
||||||
|
{
|
||||||
|
Name = "Persuasion",
|
||||||
|
Value = charisma.Persuasion,
|
||||||
|
Can = charisma.CanPersuasion
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return universalStatisticViewModel;
|
||||||
|
}
|
||||||
|
public static UniversalStatisticViewModel MapConstitution(Constitution constitution)
|
||||||
|
{
|
||||||
|
UniversalStatisticViewModel universalStatisticViewModel = new UniversalStatisticViewModel
|
||||||
|
{
|
||||||
|
Id = constitution.Id,
|
||||||
|
Name = "Constitution",
|
||||||
|
Value = constitution.Value,
|
||||||
|
Modification = constitution.Modification,
|
||||||
|
SavingThrows = constitution.SavingThrows,
|
||||||
|
CanSaveThrows = constitution.CanSaveThrows,
|
||||||
|
Skills = null
|
||||||
|
};
|
||||||
|
return universalStatisticViewModel;
|
||||||
|
}
|
||||||
|
public static UniversalStatisticViewModel MapDexterity(Dexterity dexterity)
|
||||||
|
{
|
||||||
|
UniversalStatisticViewModel universalStatisticViewModel = new UniversalStatisticViewModel
|
||||||
|
{
|
||||||
|
Id = dexterity.Id,
|
||||||
|
Name = "Dexterity",
|
||||||
|
Value = dexterity.Value,
|
||||||
|
Modification = dexterity.Modification,
|
||||||
|
SavingThrows = dexterity.SavingThrows,
|
||||||
|
CanSaveThrows = dexterity.CanSaveThrows,
|
||||||
|
Skills = new List<UniversalSkillViewModel>
|
||||||
|
{
|
||||||
|
new UniversalSkillViewModel
|
||||||
|
{
|
||||||
|
Name = "Acrobatics",
|
||||||
|
Value = dexterity.Acrobatics,
|
||||||
|
Can = dexterity.CanAcrobatics
|
||||||
|
},
|
||||||
|
new UniversalSkillViewModel
|
||||||
|
{
|
||||||
|
Name = "SleightOfHand",
|
||||||
|
Value = dexterity.SleightOfHand,
|
||||||
|
Can = dexterity.CanSleightOfHand
|
||||||
|
},
|
||||||
|
new UniversalSkillViewModel
|
||||||
|
{
|
||||||
|
Name = "Stealth",
|
||||||
|
Value = dexterity.Stealth,
|
||||||
|
Can = dexterity.CanStealth
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return universalStatisticViewModel;
|
||||||
|
}
|
||||||
|
public static UniversalStatisticViewModel MapIntelligence(Intelligence intelligence)
|
||||||
|
{
|
||||||
|
UniversalStatisticViewModel universalStatisticViewModel = new UniversalStatisticViewModel
|
||||||
|
{
|
||||||
|
Id = intelligence.Id,
|
||||||
|
Name = "Intelligence",
|
||||||
|
Value = intelligence.Value,
|
||||||
|
Modification = intelligence.Modification,
|
||||||
|
SavingThrows = intelligence.SavingThrows,
|
||||||
|
CanSaveThrows = intelligence.CanSaveThrows,
|
||||||
|
Skills = new List<UniversalSkillViewModel>
|
||||||
|
{
|
||||||
|
new UniversalSkillViewModel
|
||||||
|
{
|
||||||
|
Name = "Arcana",
|
||||||
|
Value = intelligence.Arcana,
|
||||||
|
Can = intelligence.CanArcana
|
||||||
|
},
|
||||||
|
new UniversalSkillViewModel
|
||||||
|
{
|
||||||
|
Name = "History",
|
||||||
|
Value = intelligence.History,
|
||||||
|
Can = intelligence.CanHistory
|
||||||
|
},
|
||||||
|
new UniversalSkillViewModel
|
||||||
|
{
|
||||||
|
Name = "Investigation",
|
||||||
|
Value = intelligence.Investigation,
|
||||||
|
Can = intelligence.CanInvestigation
|
||||||
|
},
|
||||||
|
new UniversalSkillViewModel
|
||||||
|
{
|
||||||
|
Name = "Nature",
|
||||||
|
Value = intelligence.Nature,
|
||||||
|
Can = intelligence.CanNature
|
||||||
|
},
|
||||||
|
new UniversalSkillViewModel
|
||||||
|
{
|
||||||
|
Name = "Religion",
|
||||||
|
Value = intelligence.Religion,
|
||||||
|
Can = intelligence.CanReligion
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return universalStatisticViewModel;
|
||||||
|
}
|
||||||
|
public static UniversalStatisticViewModel MapStrength(Strength strength)
|
||||||
|
{
|
||||||
|
UniversalStatisticViewModel universalStatisticViewModel = new UniversalStatisticViewModel
|
||||||
|
{
|
||||||
|
Id = strength.Id,
|
||||||
|
Name = "Strength",
|
||||||
|
Value = strength.Value,
|
||||||
|
Modification = strength.Modification,
|
||||||
|
SavingThrows = strength.SavingThrows,
|
||||||
|
CanSaveThrows = strength.CanSaveThrows,
|
||||||
|
Skills = new List<UniversalSkillViewModel>
|
||||||
|
{
|
||||||
|
new UniversalSkillViewModel
|
||||||
|
{
|
||||||
|
Name = "Athletics",
|
||||||
|
Value = strength.Athletics,
|
||||||
|
Can = strength.CanAthletics
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return universalStatisticViewModel;
|
||||||
|
}
|
||||||
|
public static UniversalStatisticViewModel MapWisdom(Wisdom wisdom)
|
||||||
|
{
|
||||||
|
UniversalStatisticViewModel universalStatisticViewModel = new UniversalStatisticViewModel
|
||||||
|
{
|
||||||
|
Id = wisdom.Id,
|
||||||
|
Name = "Wisdom",
|
||||||
|
Value = wisdom.Value,
|
||||||
|
Modification = wisdom.Modification,
|
||||||
|
SavingThrows = wisdom.SavingThrows,
|
||||||
|
CanSaveThrows = wisdom.CanSaveThrows,
|
||||||
|
Skills = new List<UniversalSkillViewModel>
|
||||||
|
{
|
||||||
|
new UniversalSkillViewModel
|
||||||
|
{
|
||||||
|
Name = "AnimalHandling",
|
||||||
|
Value = wisdom.AnimalHandling,
|
||||||
|
Can = wisdom.CanAnimalHandling
|
||||||
|
},
|
||||||
|
new UniversalSkillViewModel
|
||||||
|
{
|
||||||
|
Name = "Insight",
|
||||||
|
Value = wisdom.Insight,
|
||||||
|
Can = wisdom.CanInsight
|
||||||
|
},
|
||||||
|
new UniversalSkillViewModel
|
||||||
|
{
|
||||||
|
Name = "Medicine",
|
||||||
|
Value = wisdom.Medicine,
|
||||||
|
Can = wisdom.CanMedicine
|
||||||
|
},
|
||||||
|
new UniversalSkillViewModel
|
||||||
|
{
|
||||||
|
Name = "Perception",
|
||||||
|
Value = wisdom.Perception,
|
||||||
|
Can = wisdom.CanPerception
|
||||||
|
},
|
||||||
|
new UniversalSkillViewModel
|
||||||
|
{
|
||||||
|
Name = "Survival",
|
||||||
|
Value = wisdom.Survival,
|
||||||
|
Can = wisdom.CanSurvival
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return universalStatisticViewModel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Services.Interfaces
|
||||||
|
{
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using SessionCompanion.Services.Base;
|
||||||
|
using SessionCompanion.ViewModels.ArmorViewModels;
|
||||||
|
|
||||||
|
public interface IArmorService : IServiceBase<ArmorViewModel, Armor>
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Services.Interfaces
|
||||||
|
{
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using SessionCompanion.Extensions.EitherType;
|
||||||
|
using SessionCompanion.Services.Base;
|
||||||
|
using SessionCompanion.ViewModels.ApiResponses;
|
||||||
|
using SessionCompanion.ViewModels.CharacterArmorViewModels;
|
||||||
|
|
||||||
|
public interface ICharacterArmorService : IServiceBase<CharacterArmorViewModel, CharacterArmor>
|
||||||
|
{
|
||||||
|
Task<Either<SuccessResponse, ErrorResponse>> ChangeCharacterArmor(int characterId, int newArmorId);
|
||||||
|
Task<List<CharacterArmorViewModelDetails>> GetCharacterArmorsTaskList(int characterId);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Services.Interfaces
|
||||||
|
{
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using SessionCompanion.Services.Base;
|
||||||
|
using SessionCompanion.ViewModels.CharacterOtherEquipmentViewModels;
|
||||||
|
|
||||||
|
public interface ICharacterOtherEquipmentService : IServiceBase<CharacterOtherEquipmentViewModel, CharacterOtherEquipment>
|
||||||
|
{
|
||||||
|
Task<List<CharacterOtherEquipmentWithDetailsViewModel>> GetCharacterOtherEquipmentList(int characterId);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using SessionCompanion.Services.Base;
|
||||||
|
using SessionCompanion.ViewModels.CharacterViewModels;
|
||||||
|
using SessionCompanion.ViewModels.ClassViewModels;
|
||||||
|
using SessionCompanion.ViewModels.RaceViewModels;
|
||||||
|
using SessionCompanion.ViewModels.UniversalModels;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Services.Interfaces
|
||||||
|
{
|
||||||
|
public interface ICharacterService : IServiceBase<CharacterViewModel, Character>
|
||||||
|
{
|
||||||
|
Task<IEnumerable<CharacterBasicStatsViewModel>> GetBasicCharactersData(List<int> charactersId);
|
||||||
|
Task<IEnumerable<CharacterForLoginViewModel>> GetUserLoginCharacters(int userId);
|
||||||
|
Task<List<UniversalStatisticViewModel>> GetCharacterStatistics(int characterId);
|
||||||
|
Task<CharacterBasicInfoViewModel> GetBasicCharacterbasicInfo(int characterId);
|
||||||
|
Task<IEnumerable<CharacterFromTemplatesSimpleViewModel>> GetCharactersFromTemplate(List<RaceViewModel> raceViewModels, List<ClassViewModel> classViewModels);
|
||||||
|
Task CreateCharactersFromTemplate(int characterId, int userId, string newName);
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
using SessionCompanion.Database.Tables;
|
using SessionCompanion.Database.Tables;
|
||||||
using SessionCompanion.Services.Base;
|
using SessionCompanion.Services.Base;
|
||||||
using SessionCompanion.ViewModels.CharacterViewModels;
|
using SessionCompanion.ViewModels.CharacterSpellViewModels;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
@ -8,7 +8,7 @@ using System.Threading.Tasks;
|
|||||||
|
|
||||||
namespace SessionCompanion.Services.Interfaces
|
namespace SessionCompanion.Services.Interfaces
|
||||||
{
|
{
|
||||||
public interface ICharacterService : IServiceBase<CharacterViewModel, Character>
|
public interface ICharacterSpellService : IServiceBase<CharacterSpellViewModel, CharacterSpell>
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using SessionCompanion.Services.Base;
|
||||||
|
using SessionCompanion.ViewModels.CharacterSpellSlotsViewModels;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Services.Interfaces
|
||||||
|
{
|
||||||
|
public interface ICharacterSpellSlotsService : IServiceBase<CharacterSpellSlotsViewModel,CharacterSpellSlots>
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using SessionCompanion.Services.Base;
|
||||||
|
using SessionCompanion.ViewModels.CharacterWeaponViewModels;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Services.Interfaces
|
||||||
|
{
|
||||||
|
using SessionCompanion.Extensions.EitherType;
|
||||||
|
using SessionCompanion.ViewModels.ApiResponses;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
public interface ICharacterWeaponService : IServiceBase<CharacterWeaponViewModel, CharacterWeapon>
|
||||||
|
{
|
||||||
|
Task<List<CharacterWeaponWithWeaponDetailsViewModel>> GetCharacterWeaponsList(int characterId);
|
||||||
|
Task<Either<SuccessResponse, ErrorResponse>> ChangeCharacterWeapon(CharacterWeaponViewModel model);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using SessionCompanion.Services.Base;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Services.Interfaces
|
||||||
|
{
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
using SessionCompanion.ViewModels.MonsterViewModels;
|
||||||
|
|
||||||
|
public interface IMonsterService : IServiceBase<MonsterViewModel, Monster>
|
||||||
|
{
|
||||||
|
List<MonsterViewModel> GetAllMonstersList();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Services.Interfaces
|
||||||
|
{
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using SessionCompanion.Services.Base;
|
||||||
|
using SessionCompanion.ViewModels.OtherEquipmentViewModels;
|
||||||
|
|
||||||
|
public interface IOtherEquipmentService : IServiceBase<OtherEquipmentViewModel, OtherEquipment>
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using SessionCompanion.Services.Base;
|
||||||
|
using SessionCompanion.ViewModels.ShopkeeperItemsViewModels;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Services.Interfaces
|
||||||
|
{
|
||||||
|
using SessionCompanion.Extensions.EitherType;
|
||||||
|
using SessionCompanion.ViewModels.ApiResponses;
|
||||||
|
|
||||||
|
public interface IShopkeeperItemService : IServiceBase<ShopkeeperItemViewModel, ShopkeeperItem>
|
||||||
|
{
|
||||||
|
Task<Either<SuccessResponse, ErrorResponse>> GetActiveShkopkeeperWithItems(int shopkeeperId, int amount, int? weaponId, int? armorId);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using SessionCompanion.Extensions.EitherType;
|
||||||
|
using SessionCompanion.Services.Base;
|
||||||
|
using SessionCompanion.ViewModels.ApiResponses;
|
||||||
|
using SessionCompanion.ViewModels.ShopkeeperViewModels;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Services.Interfaces
|
||||||
|
{
|
||||||
|
public interface IShopkeeperService : IServiceBase<ShopkeeperViewModel, Shopkeeper>
|
||||||
|
{
|
||||||
|
Task<Either<SuccessResponse, ErrorResponse>> CreateNewShopKeeper(ShopkeeperWithItemsViewModel shopkeeperWithItemsViewModel);
|
||||||
|
Task<Either<SuccessResponse, ErrorResponse>> ChangeShopkeeperStatus(int shopkeeperId, bool availability);
|
||||||
|
Task<Either<ShopkeeperWithItemsDetailsViewModel, ErrorResponse>> GetActiveShkopkeeperWithItems();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using SessionCompanion.Services.Base;
|
||||||
|
using SessionCompanion.ViewModels.SpellViewModels;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Services.Interfaces
|
||||||
|
{
|
||||||
|
public interface ISpellService : IServiceBase<SpellViewModel, Spell>
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
@ -10,5 +10,6 @@ namespace SessionCompanion.Services.Interfaces
|
|||||||
{
|
{
|
||||||
public interface IStatisticsService : IServiceBase<StatisticsViewModel, Statistics>
|
public interface IStatisticsService : IServiceBase<StatisticsViewModel, Statistics>
|
||||||
{
|
{
|
||||||
|
Task SubtractHp(int characterId, int hpToSubtract);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using SessionCompanion.Services.Base;
|
||||||
|
using SessionCompanion.ViewModels.WeaponViewModels;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Services.Interfaces
|
||||||
|
{
|
||||||
|
public interface IWeaponService : IServiceBase<WeaponViewModel, Weapon>
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using AutoMapper;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using SessionCompanion.ViewModels.ArmorViewModels;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Services.Profiles
|
||||||
|
{
|
||||||
|
public class ArmorProfile : Profile
|
||||||
|
{
|
||||||
|
public ArmorProfile()
|
||||||
|
{
|
||||||
|
CreateMap<Armor, ArmorViewModel>().ReverseMap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Services.Profiles
|
||||||
|
{
|
||||||
|
using AutoMapper;
|
||||||
|
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using SessionCompanion.ViewModels.CharacterArmorViewModels;
|
||||||
|
|
||||||
|
public class CharacterArmorsProfile : Profile
|
||||||
|
{
|
||||||
|
public CharacterArmorsProfile()
|
||||||
|
{
|
||||||
|
CreateMap<CharacterArmorViewModel, CharacterArmor>().ReverseMap();
|
||||||
|
|
||||||
|
CreateMap<CharacterArmor, CharacterArmorViewModelDetails>()
|
||||||
|
.ForMember(vm => vm.Name, conf => conf.MapFrom(armor => armor.Armor.Name.ToString()))
|
||||||
|
.ForMember(vm => vm.Category, conf => conf.MapFrom(armor => armor.Armor.Category.ToString()))
|
||||||
|
.ForMember(
|
||||||
|
vm => vm.ArmorClassBase,
|
||||||
|
conf => conf.MapFrom(armor => armor.Armor.ArmorClassBase.ToString()))
|
||||||
|
.ForMember(vm => vm.HaveDexterityBonus, conf => conf.MapFrom(armor => armor.Armor.HaveDexterityBonus))
|
||||||
|
.ForMember(vm => vm.MinimumStrength, conf => conf.MapFrom(armor => armor.Armor.MinimumStrength))
|
||||||
|
.ForMember(
|
||||||
|
vm => vm.HaveStealthDisadvantage,
|
||||||
|
conf => conf.MapFrom(armor => armor.Armor.HaveStealthDisadvantage))
|
||||||
|
.ForMember(vm => vm.Weight, conf => conf.MapFrom(armor => armor.Armor.Weight))
|
||||||
|
.ForMember(vm => vm.Cost, conf => conf.MapFrom(armor => armor.Armor.Cost))
|
||||||
|
.ForMember(vm => vm.CurrencyType, conf => conf.MapFrom(armor => armor.Armor.CurrencyType)).ReverseMap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Services.Profiles
|
||||||
|
{
|
||||||
|
using AutoMapper;
|
||||||
|
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using SessionCompanion.ViewModels.CharacterOtherEquipmentViewModels;
|
||||||
|
|
||||||
|
public class CharacterOtherEquipmentsProfile : Profile
|
||||||
|
{
|
||||||
|
public CharacterOtherEquipmentsProfile()
|
||||||
|
{
|
||||||
|
CreateMap<CharacterOtherEquipmentViewModel, CharacterOtherEquipment>().ReverseMap();
|
||||||
|
|
||||||
|
CreateMap<CharacterOtherEquipment, CharacterOtherEquipmentWithDetailsViewModel>()
|
||||||
|
.ForMember(vm => vm.Name, conf => conf.MapFrom(otherEquipment => otherEquipment.OtherEquipment.Name.ToString()))
|
||||||
|
.ForMember(
|
||||||
|
vm => vm.Description,
|
||||||
|
conf => conf.MapFrom(otherEquipment => otherEquipment.OtherEquipment.Description.ToString()))
|
||||||
|
.ForMember(
|
||||||
|
vm => vm.Cost,
|
||||||
|
conf => conf.MapFrom(otherEquipment => otherEquipment.OtherEquipment.Cost))
|
||||||
|
.ForMember(
|
||||||
|
vm => vm.CurrencyType,
|
||||||
|
conf => conf.MapFrom(otherEquipment => otherEquipment.OtherEquipment.CurrencyType)).ReverseMap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -23,7 +23,83 @@ namespace SessionCompanion.Services.Profiles
|
|||||||
CreateMap<Character, CharacterBasicStatsViewModel>()
|
CreateMap<Character, CharacterBasicStatsViewModel>()
|
||||||
.ForMember(vm => vm.Name, conf => conf.MapFrom(charact => charact.Biography.Name))
|
.ForMember(vm => vm.Name, conf => conf.MapFrom(charact => charact.Biography.Name))
|
||||||
.ForMember(vm => vm.Level, conf => conf.MapFrom(charact => charact.Statistics.Level))
|
.ForMember(vm => vm.Level, conf => conf.MapFrom(charact => charact.Statistics.Level))
|
||||||
.ForMember(vm => vm.CurrentHealthPoints, conf => conf.MapFrom(charact => charact.Statistics.CurrentHealthPoints)).ReverseMap();
|
.ForMember(vm => vm.CurrentHealthPoints, conf => conf.MapFrom(charact => charact.Statistics.CurrentHealthPoints))
|
||||||
|
.ForMember(vm => vm.Class, conf => conf.MapFrom(charact => charact.Biography.Class.Name)).ReverseMap();
|
||||||
|
|
||||||
|
CreateMap<Character, CharacterBasicInfoViewModel>()
|
||||||
|
.ForMember(vm => vm.Name, conf => conf.MapFrom(charact => charact.Biography.Name))
|
||||||
|
.ForMember(vm => vm.Level, conf => conf.MapFrom(charact => charact.Statistics.Level))
|
||||||
|
.ForMember(vm => vm.CurrentHealthPoints, conf => conf.MapFrom(charact => charact.Statistics.CurrentHealthPoints))
|
||||||
|
.ForMember(vm => vm.MaxHealthPoints, conf => conf.MapFrom(charact => charact.Statistics.HealthPoints))
|
||||||
|
.ForMember(vm => vm.Race, conf => conf.MapFrom(charact => charact.Biography.Race.Name))
|
||||||
|
.ForMember(vm => vm.Class, conf => conf.MapFrom(charact => charact.Biography.Class.Name)).ReverseMap();
|
||||||
|
|
||||||
|
CreateMap<Character, CharacterEveryStatViewModel>()
|
||||||
|
.ForMember(vm => vm.CanDeception, conf => conf.MapFrom(charact => charact.Charisma.CanDeception))
|
||||||
|
.ForMember(vm => vm.CanIntimidation, conf => conf.MapFrom(charact => charact.Charisma.CanIntimidation))
|
||||||
|
.ForMember(vm => vm.CanPerformance, conf => conf.MapFrom(charact => charact.Charisma.CanPerformance))
|
||||||
|
.ForMember(vm => vm.CanPersuasion, conf => conf.MapFrom(charact => charact.Charisma.CanPersuasion))
|
||||||
|
.ForMember(vm => vm.CharismaCanSaveThrows, conf => conf.MapFrom(charact => charact.Charisma.CanSaveThrows))
|
||||||
|
.ForMember(vm => vm.Deception, conf => conf.MapFrom(charact => charact.Charisma.Deception))
|
||||||
|
.ForMember(vm => vm.Intimidation, conf => conf.MapFrom(charact => charact.Charisma.Intimidation))
|
||||||
|
.ForMember(vm => vm.CharismaModification, conf => conf.MapFrom(charact => charact.Charisma.Modification))
|
||||||
|
.ForMember(vm => vm.Performance, conf => conf.MapFrom(charact => charact.Charisma.Performance))
|
||||||
|
.ForMember(vm => vm.Persuasion, conf => conf.MapFrom(charact => charact.Charisma.Persuasion))
|
||||||
|
.ForMember(vm => vm.CharismaSavingThrows, conf => conf.MapFrom(charact => charact.Charisma.SavingThrows))
|
||||||
|
.ForMember(vm => vm.CharismaValue, conf => conf.MapFrom(charact => charact.Charisma.Value))
|
||||||
|
// Dexterity
|
||||||
|
.ForMember(vm => vm.DexterityValue, conf => conf.MapFrom(charact => charact.Dexterity.Value))
|
||||||
|
.ForMember(vm => vm.DexterityModification, conf => conf.MapFrom(charact => charact.Dexterity.Modification))
|
||||||
|
.ForMember(vm => vm.DexteritySavingThrows, conf => conf.MapFrom(charact => charact.Dexterity.SavingThrows))
|
||||||
|
.ForMember(vm => vm.DexterityCanSaveThrows, conf => conf.MapFrom(charact => charact.Dexterity.CanSaveThrows))
|
||||||
|
.ForMember(vm => vm.CanAcrobatics, conf => conf.MapFrom(charact => charact.Dexterity.CanAcrobatics))
|
||||||
|
.ForMember(vm => vm.Acrobatics, conf => conf.MapFrom(charact => charact.Dexterity.Acrobatics))
|
||||||
|
.ForMember(vm => vm.SleightOfHand, conf => conf.MapFrom(charact => charact.Dexterity.SleightOfHand))
|
||||||
|
.ForMember(vm => vm.CanSleightOfHand, conf => conf.MapFrom(charact => charact.Dexterity.CanSleightOfHand))
|
||||||
|
.ForMember(vm => vm.CanStealth, conf => conf.MapFrom(charact => charact.Dexterity.CanStealth))
|
||||||
|
.ForMember(vm => vm.Stealth, conf => conf.MapFrom(charact => charact.Dexterity.Stealth))
|
||||||
|
// Strength
|
||||||
|
.ForMember(vm => vm.Athletics, conf => conf.MapFrom(charact => charact.Strength.Athletics))
|
||||||
|
.ForMember(vm => vm.CanAthletics, conf => conf.MapFrom(charact => charact.Strength.CanAthletics))
|
||||||
|
.ForMember(vm => vm.StrengthCanSaveThrows, conf => conf.MapFrom(charact => charact.Strength.CanSaveThrows))
|
||||||
|
.ForMember(vm => vm.StrengthModification, conf => conf.MapFrom(charact => charact.Strength.Modification))
|
||||||
|
.ForMember(vm => vm.StrengthSavingThrows, conf => conf.MapFrom(charact => charact.Strength.SavingThrows))
|
||||||
|
.ForMember(vm => vm.StrengthValue, conf => conf.MapFrom(charact => charact.Strength.Value))
|
||||||
|
// Wisdom
|
||||||
|
.ForMember(vm => vm.AnimalHandling, conf => conf.MapFrom(charact => charact.Wisdom.AnimalHandling))
|
||||||
|
.ForMember(vm => vm.CanAnimalHandling, conf => conf.MapFrom(charact => charact.Wisdom.CanAnimalHandling))
|
||||||
|
.ForMember(vm => vm.CanInsight, conf => conf.MapFrom(charact => charact.Wisdom.CanInsight))
|
||||||
|
.ForMember(vm => vm.CanMedicine, conf => conf.MapFrom(charact => charact.Wisdom.CanMedicine))
|
||||||
|
.ForMember(vm => vm.CanPerception, conf => conf.MapFrom(charact => charact.Wisdom.CanPerception))
|
||||||
|
.ForMember(vm => vm.WisdomCanSaveThrows, conf => conf.MapFrom(charact => charact.Wisdom.CanSaveThrows))
|
||||||
|
.ForMember(vm => vm.CanSurvival, conf => conf.MapFrom(charact => charact.Wisdom.CanSurvival))
|
||||||
|
.ForMember(vm => vm.Insight, conf => conf.MapFrom(charact => charact.Wisdom.Insight))
|
||||||
|
.ForMember(vm => vm.Medicine, conf => conf.MapFrom(charact => charact.Wisdom.Medicine))
|
||||||
|
.ForMember(vm => vm.WisdomModification, conf => conf.MapFrom(charact => charact.Wisdom.Modification))
|
||||||
|
.ForMember(vm => vm.Perception, conf => conf.MapFrom(charact => charact.Wisdom.Perception))
|
||||||
|
.ForMember(vm => vm.WisdomSavingThrows, conf => conf.MapFrom(charact => charact.Wisdom.SavingThrows))
|
||||||
|
.ForMember(vm => vm.Survival, conf => conf.MapFrom(charact => charact.Wisdom.Survival))
|
||||||
|
.ForMember(vm => vm.WisdomValue, conf => conf.MapFrom(charact => charact.Wisdom.Value))
|
||||||
|
// Intelligence
|
||||||
|
.ForMember(vm => vm.Arcana, conf => conf.MapFrom(charact => charact.Intelligence.Arcana))
|
||||||
|
.ForMember(vm => vm.CanArcana, conf => conf.MapFrom(charact => charact.Intelligence.CanArcana))
|
||||||
|
.ForMember(vm => vm.CanHistory, conf => conf.MapFrom(charact => charact.Intelligence.CanHistory))
|
||||||
|
.ForMember(vm => vm.CanInvestigation, conf => conf.MapFrom(charact => charact.Intelligence.CanInvestigation))
|
||||||
|
.ForMember(vm => vm.CanNature, conf => conf.MapFrom(charact => charact.Intelligence.CanNature))
|
||||||
|
.ForMember(vm => vm.CanReligion, conf => conf.MapFrom(charact => charact.Intelligence.CanReligion))
|
||||||
|
.ForMember(vm => vm.IntelligenceCanSaveThrows, conf => conf.MapFrom(charact => charact.Intelligence.CanSaveThrows))
|
||||||
|
.ForMember(vm => vm.History, conf => conf.MapFrom(charact => charact.Intelligence.History))
|
||||||
|
.ForMember(vm => vm.Investigation, conf => conf.MapFrom(charact => charact.Intelligence.Investigation))
|
||||||
|
.ForMember(vm => vm.IntelligenceModification, conf => conf.MapFrom(charact => charact.Intelligence.Modification))
|
||||||
|
.ForMember(vm => vm.Nature, conf => conf.MapFrom(charact => charact.Intelligence.Nature))
|
||||||
|
.ForMember(vm => vm.Religion, conf => conf.MapFrom(charact => charact.Intelligence.Religion))
|
||||||
|
.ForMember(vm => vm.IntelligenceSavingThrows, conf => conf.MapFrom(charact => charact.Intelligence.SavingThrows))
|
||||||
|
.ForMember(vm => vm.IntelligenceValue, conf => conf.MapFrom(charact => charact.Intelligence.Value))
|
||||||
|
// Constitution
|
||||||
|
.ForMember(vm => vm.ConstitutionCanSaveThrows, conf => conf.MapFrom(charact => charact.Constitution.CanSaveThrows))
|
||||||
|
.ForMember(vm => vm.ConstitutionModification, conf => conf.MapFrom(charact => charact.Constitution.Modification))
|
||||||
|
.ForMember(vm => vm.ConstitutionSavingThrows, conf => conf.MapFrom(charact => charact.Constitution.SavingThrows))
|
||||||
|
.ForMember(vm => vm.ConstitutionValue, conf => conf.MapFrom(charact => charact.Constitution.Value)).ReverseMap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,33 @@
|
|||||||
|
using AutoMapper;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using SessionCompanion.ViewModels.CharacterSpellViewModels;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Services.Profiles
|
||||||
|
{
|
||||||
|
public class CharacterSpellProfile : Profile
|
||||||
|
{
|
||||||
|
public CharacterSpellProfile()
|
||||||
|
{
|
||||||
|
CreateMap<CharacterSpellViewModel, CharacterSpell>().ReverseMap();
|
||||||
|
|
||||||
|
CreateMap<CharacterSpellWithSpellDetailsViewModel, CharacterSpell>();
|
||||||
|
CreateMap<CharacterSpell, CharacterSpellWithSpellDetailsViewModel>()
|
||||||
|
|
||||||
|
.ForMember(vm => vm.Level, conf => conf.MapFrom(spell => spell.Spell.Level))
|
||||||
|
.ForMember(vm => vm.Concentration, conf => conf.MapFrom(spell => spell.Spell.Concentration))
|
||||||
|
.ForMember(vm => vm.Ritual, conf => conf.MapFrom(spell => spell.Spell.Ritual))
|
||||||
|
.ForMember(vm => vm.Name, conf => conf.MapFrom(spell => spell.Spell.Name.ToString()))
|
||||||
|
.ForMember(vm => vm.Material, conf => conf.MapFrom(spell => spell.Spell.Material.ToString()))
|
||||||
|
.ForMember(vm => vm.Range, conf => conf.MapFrom(spell => spell.Spell.Range.ToString()))
|
||||||
|
.ForMember(vm => vm.Duration, conf => conf.MapFrom(spell => spell.Spell.Duration.ToString()))
|
||||||
|
.ForMember(vm => vm.CastingTime, conf => conf.MapFrom(spell => spell.Spell.CastingTime.ToString()))
|
||||||
|
.ForMember(vm => vm.School, conf => conf.MapFrom(spell => spell.Spell.School.ToString()))
|
||||||
|
.ForMember(vm => vm.Descriptions, conf => conf.MapFrom(spell => spell.Spell.Description.Split(new char[] { ';' }).ToList()))
|
||||||
|
.ForMember(vm => vm.Components, conf => conf.MapFrom(spell => spell.Spell.Components.Split(new char[] { ';' }).ToList()))
|
||||||
|
.ForMember(vm => vm.HigherLevel, conf => conf.MapFrom(spell => spell.Spell.HigherLevel.Split(new char[] { ';' }).ToList()))
|
||||||
|
.ForMember(vm => vm.Classes, conf => conf.MapFrom(spell => spell.Spell.Classes.Split(new char[] { ';' }).ToList()))
|
||||||
|
.ForMember(vm => vm.Subclasses, conf => conf.MapFrom(spell => spell.Spell.Subclasses.Split(new char[] { ';' }).ToList()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using AutoMapper;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using SessionCompanion.ViewModels.CharacterSpellSlotsViewModels;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Services.Profiles
|
||||||
|
{
|
||||||
|
public class CharacterSpellSlotsProfile : Profile
|
||||||
|
{
|
||||||
|
public CharacterSpellSlotsProfile()
|
||||||
|
{
|
||||||
|
CreateMap<CharacterSpellSlotsViewModel, CharacterSpellSlots>().ReverseMap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,32 @@
|
|||||||
|
using AutoMapper;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using SessionCompanion.ViewModels.CharacterWeaponViewModels;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Services.Profiles
|
||||||
|
{
|
||||||
|
public class CharacterWeaponsProfile : Profile
|
||||||
|
{
|
||||||
|
public CharacterWeaponsProfile()
|
||||||
|
{
|
||||||
|
CreateMap<CharacterWeaponViewModel, CharacterWeapon>().ReverseMap();
|
||||||
|
|
||||||
|
CreateMap<CharacterWeapon, CharacterWeaponWithWeaponDetailsViewModel>()
|
||||||
|
.ForMember(vm => vm.Name, conf => conf.MapFrom(weapon => weapon.Weapon.Name.ToString()))
|
||||||
|
.ForMember(vm => vm.Weight, conf => conf.MapFrom(weapon => weapon.Weapon.Weight.ToString()))
|
||||||
|
.ForMember(vm => vm.HoldInRightHand, conf => conf.MapFrom(weapon => weapon.HoldInRightHand))
|
||||||
|
.ForMember(vm => vm.HoldInLeftHand, conf => conf.MapFrom(weapon => weapon.HoldInLeftHand))
|
||||||
|
.ForMember(vm => vm.Cost, conf => conf.MapFrom(weapon => weapon.Weapon.Cost.ToString()))
|
||||||
|
.ForMember(vm => vm.RangeMeele, conf => conf.MapFrom(weapon => weapon.Weapon.RangeMeele))
|
||||||
|
.ForMember(vm => vm.RangeLong, conf => conf.MapFrom(weapon => weapon.Weapon.RangeLong))
|
||||||
|
.ForMember(vm => vm.RangeThrowNormal, conf => conf.MapFrom(weapon => weapon.Weapon.RangeThrowNormal))
|
||||||
|
.ForMember(vm => vm.RangeThrowLong, conf => conf.MapFrom(weapon => weapon.Weapon.RangeThrowLong))
|
||||||
|
.ForMember(vm => vm.CurrencyType, conf => conf.MapFrom(weapon => weapon.Weapon.CurrencyType.ToString()))
|
||||||
|
.ForMember(vm => vm.WeaponType, conf => conf.MapFrom(weapon => weapon.Weapon.WeaponType.ToString()))
|
||||||
|
.ForMember(vm => vm.Description, conf => conf.MapFrom(weapon => weapon.Weapon.Description))
|
||||||
|
.ForMember(vm => vm.DiceValue, conf => conf.MapFrom(weapon => weapon.Weapon.DiceValue))
|
||||||
|
.ForMember(vm => vm.DiceCount, conf => conf.MapFrom(weapon => weapon.Weapon.DiceCount))
|
||||||
|
.ForMember(vm => vm.TwoHandDiceValue, conf => conf.MapFrom(weapon => weapon.Weapon.TwoHandDiceValue))
|
||||||
|
.ForMember(vm => vm.TwoHandDamageType, conf => conf.MapFrom(weapon => weapon.Weapon.TwoHandDamageType.ToString())).ReverseMap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user