From 1eb2de17e380c47b8415e6b501ed5d7eeb80e840 Mon Sep 17 00:00:00 2001 From: James Miller Date: Thu, 14 Nov 2019 22:48:42 -0600 Subject: [PATCH] triggers data and YAML->SQL working --- data/yaml/gendb.py | 28 +++++++++++++++++++++ data/yaml/triggers.yaml | 55 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 data/yaml/triggers.yaml diff --git a/data/yaml/gendb.py b/data/yaml/gendb.py index 9a0b912..b42089e 100644 --- a/data/yaml/gendb.py +++ b/data/yaml/gendb.py @@ -82,6 +82,34 @@ def main(): data = yaml.full_load(yl) do_requirements(data, conn) + # move on to triggers + with open('triggers.yaml') as yl: + data = yaml.full_load(yl) + do_triggers(data, conn) + +def do_triggers(data, conn): + table = """ +CREATE TABLE trigger ( + trigger_id INTEGER PRIMARY KEY, + descr TEXT NOT NULL UNIQUE +); + """ + + c = conn.cursor() + c.execute(table) + + inp_data = [] + for i in data['trigger']: + inp_data.append((i, )) + + stmt = "INSERT INTO trigger (descr) VALUES (?)" + try: + conn.executemany(stmt, inp_data) + except Exception as e: + print("Error creating trigger: {}".format(e)) + else: + conn.commit() + def do_requirements(data, conn): table = """ CREATE TABLE requirement ( diff --git a/data/yaml/triggers.yaml b/data/yaml/triggers.yaml new file mode 100644 index 0000000..3549e5c --- /dev/null +++ b/data/yaml/triggers.yaml @@ -0,0 +1,55 @@ +trigger: + - An ally ends a move action adjacent to you. + - You fail a skill check or saving throw. + - You attempt a check using a skill you’re untrained in. + - You would be reduced to 0 Hit Points but not immediately killed. + - You attempt a saving throw against a spell or magical effect, before rolling. + - You bring a foe to 0 Hit Points. + - You use Quick Alchemy to craft an alchemical bomb with a level at least 1 lower than your advanced alchemy level. + - You use Quick Alchemy to craft an alchemical item that has the elixer trait and is at least 2 levels lower than your advanced alchemy level. + - You use Quick Alchemy to craft an alchemical bomb that is at least 2 levels lower than your advanced alchemy level. + - You craft an elixer of life using Quick Alchemy, and that elixir is at least 2 levels lower than your advanced alchemy level. + - You craft an alchemical bomb using Quick Alchemy that’s at least 2 levels lower than your advanced alchemy level. + - A foe within reach attempts to move away from you. + - You take damage and are capable of entering a rage. + - A creature within your reach uses a manipulate action or a move action, makes a ranged attack, or leaves a square during a move action it’s using. + - Your melee Strike kills a creature or knocks it unconscious, and another foe is adjacent to that creature. + - A creature within your reach succeeds or critically succeeds at an attack against you. + - Your turn begins, and you are at half or fewer Hit Points. + - You fail or critically fail an attack roll or Will save. + - You attempt a save against a spell, before you roll. + - "A foe's attack against an ally matches the trigger for both your Shield Block reaction and your champion's reaction." + - You finish Casting a Spell using one of your divine spell slots on your turn. + - You critically hit a creature that is not on its home plane. + - An opponent adjacent to you critically hits you with a melee weapon or melee unarmed attack. + - An enemy hits you with a melee Strike. + - You use the Shield Block reaction, and the opponent that triggered Shield Block is adjacent to you and is your size or smaller. + - An ally within your melee reach is hit by an attack, you can see the attacker, and the ally gaining a +2 circumstance bonus to AC would turn the critical hit into a hit or the hit into a miss. + - A creature within your reach critically fails a Strike against you. + - An opponent casting a spell that targets you critically fails a speel attack roll against your AC. + - You complete the last action on your turn, and your turn has not ended yet. + - You roll initiative. + - You are the target of a physical ranged attack. + - "A creature within your reach uses a move action or leaves a square during a move action it's using." + - You are targeted with a melee attack by an attacker you can see. + - Your turn ends and you have a status penalty to your Speed or are immobilized or slowed. + - "An enemy's attack hits you or you fail a saving throw against an enemy’s ability." + - "Your hunted prey is within your reach, and it uses a manipulate action, uses a move action, or leaves a square during a move action it's using." + - You are about to roll a Perception or Survival check for initiative. + - You fail a check to Seek. + - A creature targets you with an attack and you can see the attacker. + - You reduce an enemy to 0 hit points. + - An adjacent foe moves away from you, and you can reach at least one space adjacent to the foe with a Stride action. + - A trap within your reach is triggered. + - A creature within your melee reach is hit by a melee attack from one of your allies. + - The attack roll for a Strike targeting you fails or critically fails. + - An adjacent enemy begins to use a reaction. + - A physical attack would reduce you to 0 Hit Points. + - Your turn ends. + - You specify the trigger when your daily preparations(see Requirements). + - You successfully use Stealth to Hide and become hidden from all of your current foes, or use Stealth to Sneak and become undetected to all your current foes. + - "You would be hit by an attack or targeted by an effect, or you are within an effect's area." + - A creature casts a spell that you have in your repertoire. + - A creature Casts a Spell that you have prepared. + - A creature within line of sight casts a spell that you don’t have prepared or in your spell repertoire, or a trap or similar object casts such a spell. You must be aware of the casting. + - While you have your shield raised, you would take damage from a physical attack.