add Goblin race

This commit adds Goblin race and it's features.
Source: Guildmaster's Guide to Ravnica
This commit is contained in:
Robert Kubosz
2020-01-16 19:35:23 +01:00
parent 9a49e7cb14
commit 4dd998501a
2 changed files with 53 additions and 20 deletions
+32 -12
View File
@@ -32,7 +32,7 @@ class PowerfulBuild(Feature):
name = "Powerful Build" name = "Powerful Build"
source = "Race" source = "Race"
class Amphibious(Feature): class Amphibious(Feature):
""" """
You can breath air and water You can breath air and water
@@ -41,7 +41,7 @@ class Amphibious(Feature):
name = "Amphibious" name = "Amphibious"
source = "Race" source = "Race"
# Dwarves # Dwarves
class DwarvenResilience(Feature): class DwarvenResilience(Feature):
"""You have advantage on saving throws against poison, and you have resistance """You have advantage on saving throws against poison, and you have resistance
@@ -62,7 +62,7 @@ class Stonecunning(Feature):
name = "Stonecunning" name = "Stonecunning"
source = "Race (Dwarf)" source = "Race (Dwarf)"
class DwarvenToughness(Feature): class DwarvenToughness(Feature):
""" """
Your hit point maximum Your hit point maximum
@@ -73,7 +73,7 @@ class DwarvenToughness(Feature):
source = "Race (Hill Dwarf)" source = "Race (Hill Dwarf)"
needs_implementation = True needs_implementation = True
# Elves # Elves
class FeyAncestry(Feature): class FeyAncestry(Feature):
"""You have advantage on saving throws against being charmed, and magic cant """You have advantage on saving throws against being charmed, and magic cant
@@ -163,7 +163,7 @@ class HalflingNimbleness(Feature):
name = "Halfling Nimbleness" name = "Halfling Nimbleness"
source = "Race (Halfling)" source = "Race (Halfling)"
class NaturallyStealthy(Feature): class NaturallyStealthy(Feature):
"""You can attempt to hide even when you are obscured only by a creature that """You can attempt to hide even when you are obscured only by a creature that
is at least one size larger than you. is at least one size larger than you.
@@ -283,7 +283,7 @@ class ArtificersLore(Feature):
name = "Artificer's Lore" name = "Artificer's Lore"
source = "Race (Rock Gnome)" source = "Race (Rock Gnome)"
class Tinker(Feature): class Tinker(Feature):
"""You have proficiency with artisans tools (tinkers tools). Using those """You have proficiency with artisans tools (tinkers tools). Using those
tools, you can spend 1 hour and 10 gp worth of materials to construct a tools, you can spend 1 hour and 10 gp worth of materials to construct a
@@ -316,8 +316,28 @@ class StoneCamouflage(Feature):
source = "Race (Deep Gnome)" source = "Race (Deep Gnome)"
# Goblins
class FuryOfTheSmall(Feature):
"""
When you damage a creature with an attack or a spell and the creature's
size is larger than yours, you can cause the attack or spell to deal extra
damage to the creature. The extra damage equals your level. Once you use
this trait, you can't use it again until you finish a short or long rest.
"""
name = "Fury of the Small"
source = "Race (Goblin)"
class NimbleEscape(Feature):
"""
You can take the Disengage or Hide action as a bonus action on each of your
turns.
"""
name = "Nimble Escape"
source "Race (Goblin)"
# Half-Elves # Half-Elves
# Half-Orcs # Half-Orcs
class RelentlessEndurance(Feature): class RelentlessEndurance(Feature):
"""When you are reduced to 0 hit points but not killed outright, you can drop """When you are reduced to 0 hit points but not killed outright, you can drop
@@ -353,7 +373,7 @@ class InfernalLegacy(Feature):
the hellish rebuke spell once per day as a 2nd-level spell. Once you reach the hellish rebuke spell once per day as a 2nd-level spell. Once you reach
5th level, you can also cast the darkness spell once per day. Charisma is 5th level, you can also cast the darkness spell once per day. Charisma is
your spellcasting ability for these spells. your spellcasting ability for these spells.
""" """
name = "Infernal Legacy" name = "Infernal Legacy"
source = "Race (Tiefling)" source = "Race (Tiefling)"
@@ -422,7 +442,7 @@ class RadiantConsumption(Feature):
Once you use this trait, you can't use it again until you finish a long Once you use this trait, you can't use it again until you finish a long
rest. rest.
""" """
name = "Radiant Consumption" name = "Radiant Consumption"
source = "Race (Scourge Aasimar)" source = "Race (Scourge Aasimar)"
@@ -519,7 +539,7 @@ class ExpertForgery(Feature):
name = "Expert Forgery" name = "Expert Forgery"
source = "Race (Kenku)" source = "Race (Kenku)"
class Mimicry(Feature): class Mimicry(Feature):
"""You can mimic sounds you have heard, including voices. A creature that """You can mimic sounds you have heard, including voices. A creature that
hears the sounds you make can tell they are imitations with a successful hears the sounds you make can tell they are imitations with a successful
@@ -529,7 +549,7 @@ class Mimicry(Feature):
name = "Mimicry" name = "Mimicry"
source = "Race (Kenku)" source = "Race (Kenku)"
# Lizardfolk # Lizardfolk
class CunningArtisan(Feature): class CunningArtisan(Feature):
"""As part of a short rest, you can harvest bone and hide from a slain """As part of a short rest, you can harvest bone and hide from a slain
@@ -695,7 +715,7 @@ class ReachToTheBlaze(Feature):
class AcidResistance(Feature): class AcidResistance(Feature):
""" """
You have resistance to acid damage. You have resistance to acid damage.
""" """
name = "Acid Resistance" name = "Acid Resistance"
source = "Race (Water Genasi)" source = "Race (Water Genasi)"
+21 -8
View File
@@ -39,10 +39,10 @@ class Race():
@property @property
def spells_prepared(self): def spells_prepared(self):
return self.spells_known return self.spells_known
def __str__(self): def __str__(self):
return self.name return self.name
def __repr__(self): def __repr__(self):
return "\"{:s}\"".format(self.name) return "\"{:s}\"".format(self.name)
@@ -129,7 +129,7 @@ class LightfootHalfling(_Halfling):
name = "Lightfoot Halfling" name = "Lightfoot Halfling"
charisma_bonus = 1 charisma_bonus = 1
features = _Halfling.features + (feats.NaturallyStealthy,) features = _Halfling.features + (feats.NaturallyStealthy,)
class StoutHalfling(_Halfling): class StoutHalfling(_Halfling):
name = "Stout Halfling" name = "Stout Halfling"
@@ -179,7 +179,7 @@ class ForestGnome(_Gnome):
features = _Gnome.features + (feats.NaturalIllusionist, features = _Gnome.features + (feats.NaturalIllusionist,
feats.SpeakWithSmallBeasts) feats.SpeakWithSmallBeasts)
spells_known = (spells.MinorIllusion,) spells_known = (spells.MinorIllusion,)
class RockGnome(_Gnome): class RockGnome(_Gnome):
name = "Rock Gnome" name = "Rock Gnome"
@@ -248,7 +248,7 @@ class _Aasimar(Race):
feats.HealingHands, feats.LightBearer) feats.HealingHands, feats.LightBearer)
spells_known = (spells.Light,) spells_known = (spells.Light,)
# Protector Aasimar # Protector Aasimar
class ProtectorAasimar(_Aasimar): class ProtectorAasimar(_Aasimar):
name = "Protector Aasimar" name = "Protector Aasimar"
@@ -393,7 +393,7 @@ class AirGenasi(_Genasi):
features = (feats.UnendingBreath, features = (feats.UnendingBreath,
feats.MingleWithTheWind) feats.MingleWithTheWind)
class EarthGenasi(_Genasi): class EarthGenasi(_Genasi):
name = "Earth Genasi" name = "Earth Genasi"
strength_bonus = 1 strength_bonus = 1
@@ -415,6 +415,16 @@ class WaterGenasi(_Genasi):
feats.CallToTheWave) feats.CallToTheWave)
class Goblin(Race):
name = "Goblin"
size = "small"
dexterity_bonus = 2
constitution_bonus = 1
speed = 30
languages = ("Common", "Goblin")
features = (feats.Darkvision, feats.FuryOfTheSmall, feats.NimbleEscape)
PHB_races = [HillDwarf, MountainDwarf, HighElf, WoodElf, DarkElf, PHB_races = [HillDwarf, MountainDwarf, HighElf, WoodElf, DarkElf,
LightfootHalfling, StoutHalfling, Human, Dragonborn, LightfootHalfling, StoutHalfling, Human, Dragonborn,
ForestGnome, RockGnome, HalfElf, HalfOrc, Tiefling] ForestGnome, RockGnome, HalfElf, HalfOrc, Tiefling]
@@ -425,7 +435,10 @@ VOLO_races = [ProtectorAasimar, ScourgeAasimar, FallenAasimar,
EE_races = [Aarakocra, DeepGnome, AirGenasi, FireGenasi, EarthGenasi, EE_races = [Aarakocra, DeepGnome, AirGenasi, FireGenasi, EarthGenasi,
WaterGenasi] WaterGenasi]
available_races = PHB_races + VOLO_races + EE_races #Guildmaster's Guide to Ravnica
GGTR_races = [Goblin]
available_races = PHB_races + VOLO_races + EE_races + GGTR_races
__all__ = tuple([r.name for r in available_races]) + ( __all__ = tuple([r.name for r in available_races]) + (
'available_races', 'PHB_races', 'VOLO_races', 'EE_races') 'available_races', 'PHB_races', 'VOLO_races', 'EE_races', 'GGTR_races')