From 683e652c96cbe50f1fd893a72601075e01630e99 Mon Sep 17 00:00:00 2001 From: realtradam Date: Mon, 14 Nov 2022 03:28:15 -0500 Subject: lots of progress --- .gitignore | 1 + cards/alchemical_recipes.rb | 21 + cards/beginner_spells.html | 420 ++++++++++++++++ cards/card.html | 107 +++- cards/card.rb | 45 +- cards/common_weapons.html | 861 +++++++++++++++++++++++++++++++ cards/common_weapons.rb | 70 ++- cards/spells.rb | 161 +++--- cards/weapon_example.svg | 864 ++++++++++++++++++++++++++++++++ src/.obsidian/app.json | 5 +- src/SUMMARY.md | 16 +- src/checks.md | 21 - src/combat.md | 32 -- src/fate-deck.md | 14 - src/running-the-game/abilities.md | 32 ++ src/running-the-game/checks.md | 21 + src/running-the-game/club_symbol.png | Bin 0 -> 1523 bytes src/running-the-game/combat.md | 32 ++ src/running-the-game/diamond_symbol.png | Bin 0 -> 1303 bytes src/running-the-game/fate-deck.md | 14 + src/running-the-game/heart_symbol.png | Bin 0 -> 1374 bytes src/running-the-game/joker_symbol.png | Bin 0 -> 2102 bytes src/running-the-game/social.md | 74 +++ src/running-the-game/spade_symbol.png | Bin 0 -> 1436 bytes src/running-the-game/spellcasting.md | 19 + src/running-the-game/tap_symbol.png | Bin 0 -> 1755 bytes src/running-the-game/travel.md | 3 + src/running-the-game/weapon_example.png | Bin 0 -> 287024 bytes src/running-the-game/weapons.md | 20 + src/social.md | 74 --- src/travel.md | 3 - tap_symbol.xcf | Bin 0 -> 7642 bytes 32 files changed, 2671 insertions(+), 259 deletions(-) create mode 100644 cards/alchemical_recipes.rb create mode 100644 cards/beginner_spells.html create mode 100644 cards/common_weapons.html create mode 100644 cards/weapon_example.svg delete mode 100644 src/checks.md delete mode 100644 src/combat.md delete mode 100644 src/fate-deck.md create mode 100644 src/running-the-game/abilities.md create mode 100644 src/running-the-game/checks.md create mode 100644 src/running-the-game/club_symbol.png create mode 100644 src/running-the-game/combat.md create mode 100644 src/running-the-game/diamond_symbol.png create mode 100644 src/running-the-game/fate-deck.md create mode 100644 src/running-the-game/heart_symbol.png create mode 100644 src/running-the-game/joker_symbol.png create mode 100644 src/running-the-game/social.md create mode 100644 src/running-the-game/spade_symbol.png create mode 100644 src/running-the-game/spellcasting.md create mode 100644 src/running-the-game/tap_symbol.png create mode 100644 src/running-the-game/travel.md create mode 100644 src/running-the-game/weapon_example.png create mode 100644 src/running-the-game/weapons.md delete mode 100644 src/social.md delete mode 100644 src/travel.md create mode 100644 tap_symbol.xcf diff --git a/.gitignore b/.gitignore index 1b590ce..b0da299 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ new-site src/.obsidian/appearance.json src/.obsidian/workspace.json src/.obsidian/workspace +.trash diff --git a/cards/alchemical_recipes.rb b/cards/alchemical_recipes.rb new file mode 100644 index 0000000..4e96dfb --- /dev/null +++ b/cards/alchemical_recipes.rb @@ -0,0 +1,21 @@ +load 'card.rb' + +alchemical_recipes = {} + +beginner_spells[:crystal_encasement] = Card.new( + title: "Crystal Encasement Recipe", + #damage: 3, + #blood: 2, + #reposte: 'Prc', + actions: [ + Card::Action.new( + content: 'A potion which when applied to a surface quickly grows strong blue crystals. Can also be thrown.', + symbol: [:diamonds, :blood] + ), + ], + color: 'firebrick', + flavour: '"You arent making a bomb, are you?"', + type: 'Blood Magic (Eldritch)' +) + +File.write('beginner_spells.html', Card.build(beginner_spells.values)) diff --git a/cards/beginner_spells.html b/cards/beginner_spells.html new file mode 100644 index 0000000..7de8bd0 --- /dev/null +++ b/cards/beginner_spells.html @@ -0,0 +1,420 @@ + + + + + + +
+
+
+
+
+ 1 🩸 +
+

+ Wispy Flame +

+
+ ⚔️ d4 +
+
+
+
+
+
+ + ♣️ + + + 🩸 + +
+
+

(even) Engulf your hand in flames for short while. You need to maintain concentration.

+
+
+
+
+
+
+
+ + ↪️ + +
+
+

(while concentrating) Deal melee damage. If it is a small object set it on fire.

+
+
+
+
+
+
+

“Portable Candle”

+
+
+
+
+ Blood Magic (Igneous) +
+
+
+
+
+
+
+ 1 🩸 +
+

+ Summon Flesh +

+
+
+
+
+
+ + ♥️ + + + 🩸 + +
+
+

(5 or less) Heal a target within arms reach equal to the card played.

+
+
+
+
+
+

If this spell heals for more then half of the target’s max health then they get flesh mass disease.

+
+
+
+
+

“Writhing flesh mass that assimilates”

+
+
+
+
+ Blood Magic (Eldritch) +
+
+
+
+
+
+
+ 1 🩸 +
+

+ Lightning Fork +

+
+ ⚔️ 2d4 +
+
+
+
+
+
+ + ♣️ + + + 🩸 + +
+
+

(even) Deal 1d4 damage to one target and 1d4 to another.

+
+
+
+
+
+
+

“Double the static, double the fun!”

+
+
+
+
+ Blood Magic (Storm) +
+
+
+
+
+
+
+ 2 🩸 +
+

+ Summon Alchemicals +

+
+
+
+
+
+ + ♦️ + + + 🩸 + +
+
+

(odd) Summon a random amount of a random alchemical depending on the card played and the number rolled for blood.

+
+
+
+
+
+
+

“You arent making a bomb, are you?”

+
+
+
+
+ Blood Magic (Eldritch) +
+
+
+
+ + + diff --git a/cards/card.html b/cards/card.html index 41b1267..764fe1d 100644 --- a/cards/card.html +++ b/cards/card.html @@ -20,6 +20,8 @@ } .symbol_wrapper_inner { display: flex; + flex-direction: column; + gap: 5px; } .symbol_wrapper_outer { display: flex; @@ -79,6 +81,10 @@ font-size: 60px; line-height: 40px; } + .joker_icon { + background-color: black; + padding: 6px 3px 2px 5px; + } .tap_icon { background-color: black; } @@ -267,10 +273,10 @@

- Spear + Polearm

- ⚔️ 2 + ⚔️ 3
Str 🎲 @@ -291,7 +297,7 @@

-

Reach: When making an attack, you ignore repostes from your target.

+

Reach: When making an attack, you ignore repostes from your target unless they also have Reach.

@@ -301,7 +307,7 @@
- Spear Weapon + Polearm Weapon
@@ -744,6 +750,99 @@ +
+
+
+

+ Test Weapon +

+
+ ⚔️ 3 +
+
+ Prc 🎲 +
+
+
+
+
+
+ + ♠️ + +
+
+

🎲 d6 + Prc to hit.

+
+
+
+
+
+
+
+ + ♣️ + +
+
+

🎲 d6 + Prc to hit.

+
+
+
+
+
+
+
+ + ♦️ + +
+
+

🎲 d6 + Prc to hit.

+
+
+
+
+
+
+
+ + 🃏 + +
+
+

🎲 d6 + Prc to hit.

+
+
+
+
+
+
+
+ + ↪️ + + + ♥️ + +
+
+

🎲 d6 + Prc to hit.

+
+
+
+
+
+
+

“Arrrgh”

+
+
+
+
+ Curved Sword Weapon +
+
+
diff --git a/cards/card.rb b/cards/card.rb index f40cdf5..2a9af5b 100644 --- a/cards/card.rb +++ b/cards/card.rb @@ -25,7 +25,7 @@ class Card attrib_top_left: nil, attrib_top_left_icon: '🛡️', attrib_bottom_right: nil, - attrib_bottom_right_icon: '🎲', + attrib_bottom_right_icon: '🛡️', reposte: nil, attrib_bottom_left: nil, attrib_bottom_left_icon: '⚔️', @@ -57,9 +57,14 @@ class Card def initialize(content:, symbol: nil, seperator: false) self.content = content - self.symbol = symbol + self.symbol = Array(symbol) self.seperator = seperator end + + def symbol + @symbol ||= [] + end + end class << self @@ -192,6 +197,14 @@ class Card rule '.tap_icon' do background color: :black end + rule '.joker_icon' do + background color: :black + padding '6px 3px 2px 5px' + end + rule '.blood_icon' do + background color: :black + padding '6px 3px 2px 5px' + end rule '.suit_icon' do background color: :black text align: :center @@ -246,6 +259,8 @@ class Card end rule '.symbol_wrapper_inner' do display 'flex' + flex direction: 'column' + gap 5.px end rule '.action_detail' do padding top: 0.px @@ -299,31 +314,45 @@ class Card card.actions.each do |action| _.div.action do _.hr if action.seperator - if action.symbol + if !action.symbol.empty? _.div.symbol_wrapper_outer do _.div.symbol_wrapper_inner do #build_symbol - if action.symbol == :tap + if action.symbol.include? :tap _.span.icon.tap_icon do "↪️" end - elsif action.symbol == :spades + end + if action.symbol.include? :spades _.span.icon.suit_icon.spades_icon do "♠️" end - elsif action.symbol == :clubs + end + if action.symbol.include? :clubs _.span.icon.suit_icon.clubs_icon do "♣️" end - elsif action.symbol == :diamonds + end + if action.symbol.include? :diamonds _.span.icon.suit_icon.diamonds_icon do "♦️" end - elsif action.symbol == :hearts + end + if action.symbol.include? :hearts _.span.icon.suit_icon.hearts_icon do "♥️" end end + if action.symbol.include? :joker + _.span.icon.joker_icon do + "🃏" + end + end + if action.symbol.include? :blood + _.span.icon.blood_icon do + "🩸" + end + end end _.div.action_detail do _.markdown <<-MD diff --git a/cards/common_weapons.html b/cards/common_weapons.html new file mode 100644 index 0000000..5cc46d1 --- /dev/null +++ b/cards/common_weapons.html @@ -0,0 +1,861 @@ + + + + + + +
+
+
+
+

+ Thrusting Sword +

+
+ ⚔️ 3 +
+
+ Prc 🛡️ +
+
+
+
+
+
+ + ↪️ + +
+
+

🎲 d8 + Prc to hit.

+
+
+
+
+
+

Opportune Strike: When targeting an enemy with this weapon, mark them until the end of their turn. While marked if they attack somone other then you then you can perform a reposte on them.

+
+
+
+
+

“World Famous Iron Toothpick”

+
+
+
+
+ Thrusting Sword Weapon +
+
+
+
+
+
+

+ Polearm +

+
+ ⚔️ 3 +
+
+ Str 🛡️ +
+
+
+
+
+
+ + ↪️ + +
+
+

🎲 d6 + Str to hit.

+
+
+
+
+
+

Reach: When making an attack, you ignore repostes from your target unless they also have Reach.

+
+
+
+
+

“Getting up close and personal while staying far away”

+
+
+
+
+ Polearm Weapon +
+
+
+
+
+
+

+ Dagger +

+
+ ⚔️ 2 +
+
+ Prc 🛡️ +
+
+
+
+
+
+ + ↪️ + +
+
+

🎲 d6 + Prc to hit.

+
+
+
+
+
+
+
+ + ♠️ + +
+
+

(even) Swift Attack: Refresh this card.

+
+
+
+
+
+
+

“A quick and convinient way to turn a spleen into a sheath”

+
+
+
+
+ Dagger Weapon +
+
+
+
+
+
+

+ Bow +

+
+ ⚔️ 3 +
+
+ 1 🛡️ +
+
+
+
+
+
+ + ↪️ + +
+
+

🎲 d4 + (2·Prc) to hit.

+
+
+
+
+
+

Ranged: When making an attack, you ignore repostes from your target. You can’t deal a reposte either.

+
+
+
+
+

“One stringed instrument that got repurposed as a weapon.”

+
+
+
+
+ Bow Weapon +
+
+
+
+
+
+

+ Crossbow +

+
+ ⚔️ 4 +
+
+ 1 🛡️ +
+
+
+
+
+
+ + ↪️ + +
+
+

(must be loaded) 🎲 d6 + Prc to hit.

+
+
+
+
+
+
+
+ + ↪️ + +
+
+

Reload: Load this weapon.

+
+
+
+
+
+

Ranged: When making an attack, you ignore repostes from your target. You can’t deal a reposte either.

+
+
+
+
+

“No one will cross you with this weapon”

+
+
+
+
+ Crossbow Weapon +
+
+
+
+
+
+

+ Hammer +

+
+ ⚔️ 3 +
+
+ Str 🛡️ +
+
+
+
+
+
+ + ↪️ + +
+
+

🎲 d6 + Str to hit.

+
+
+
+
+
+
+
+ + ↪️ + +
+
+

Power Swing: 🎲 d4 + Str to hit. Deal Str + 2 damage.

+
+
+
+
+
+
+

“If you can pick it up, then you are worthy enough to use it.”

+
+
+
+
+ Hammer Weapon +
+
+
+
+
+
+

+ Straight Sword +

+
+ ⚔️ 3 +
+
+ Str 🛡️ +
+
+
+
+
+
+ + ↪️ + +
+
+

🎲 d6 + Str to hit.

+
+
+
+
+
+
+
+ + ↪️ + +
+
+

(Two Handed) 🎲 d6 + Str to hit. Deal Str damage.

+
+
+
+
+
+
+

“El Classico”

+
+
+
+
+ Straight Sword Weapon +
+
+
+
+
+
+

+ Axe +

+
+ ⚔️ 3 +
+
+ Str 🛡️ +
+
+
+
+
+
+ + ↪️ + +
+
+

🎲 d8 + Str to hit.

+
+
+
+
+
+
+
+ + ↪️ + +
+
+

Throw: 🎲 d6 + Str to hit. This attack is Ranged and thus you ignore repostes from your target. You lose this weapon by using this attack.

+
+
+
+
+
+
+

“Looks great with a flannel shirt.”

+
+
+
+
+ Axe Weapon +
+
+
+
+
+
+

+ Staff +

+
+ ⚔️ 2 +
+
+ Str 🛡️ +
+
+
+
+
+
+ + ↪️ + +
+
+

🎲 d6 + Str to hit.

+
+
+
+
+
+
+
+ + ↪️ + +
+
+

(Two Handed) 🎲 d8 + Str to hit.

+
+
+
+
+
+
+
+ + ♠️ + +
+
+

(odd) Swift Attack: Refresh this card.

+
+
+
+
+
+
+

“Says ‘Made by the Ninja Custodial Group’ on the handle”

+
+
+
+
+ Staff Weapon +
+
+
+
+
+
+

+ Curved Sword +

+
+ ⚔️ 3 +
+
+ Prc 🛡️ +
+
+
+
+
+
+ + ↪️ + +
+
+

🎲 d6 + Prc to hit.

+
+
+
+
+
+
+
+ + ♠️ + +
+
+

(odd, recieving a reposte) Close Quarters: Deal damage equal to your reposte.

+
+
+
+
+
+
+

“Arrrgh”

+
+
+
+
+ Curved Sword Weapon +
+
+
+
+
+
+

+ Caestus +

+
+
+
+

While equipped: Unarmed Strikes deal Str additional damage.

+
+
+
+
+

“Weapon of choice for a fit bronze statue”

+
+
+
+
+ Weapon Equipment +
+
+
+
+
+
+

+ Test Weapon +

+
+ ⚔️ 3 +
+
+ Prc 🛡️ +
+
+
+
+
+
+ + ♠️ + +
+
+

🎲 d6 + Prc to hit.

+
+
+
+
+
+
+
+ + ♣️ + +
+
+

🎲 d6 + Prc to hit.

+
+
+
+
+
+
+
+ + ♦️ + +
+
+

🎲 d6 + Prc to hit.

+
+
+
+
+
+
+
+ + 🃏 + +
+
+

🎲 d6 + Prc to hit.

+
+
+
+
+
+
+
+ + ↪️ + + + ♥️ + +
+
+

🎲 d6 + Prc to hit.

+
+
+
+
+
+
+

“Arrr”

+
+
+
+
+ Curved Sword Weapon +
+
+
+
+ + + diff --git a/cards/common_weapons.rb b/cards/common_weapons.rb index 6a7d40b..3526c05 100644 --- a/cards/common_weapons.rb +++ b/cards/common_weapons.rb @@ -1,8 +1,8 @@ load 'card.rb' -cards = [] +common_weapons = {} -cards.push Card.new( +common_weapons[:thrusting_sword] = Card.new( title: "Thrusting Sword", color: 'rebeccapurple', reposte: 'Prc', @@ -22,11 +22,11 @@ cards.push Card.new( ) -cards.push Card.new( - title: "Spear", +common_weapons[:polearm] = Card.new( + title: "Polearm", color: 'rebeccapurple', reposte: 'Str', - damage: '2', + damage: '3', actions: [ Card::Action.new( content: '🎲 **d6 + Str** to hit.', @@ -34,17 +34,16 @@ cards.push Card.new( ), Card::Action.new( seperator: true, - content: '**Reach**: When making an attack, you ignore repostes from your target.', + content: '**Reach**: When making an attack, you ignore repostes from your target unless they also have Reach.', # TODO: this is the same as the bow making it superiour #symbol: :spades, ), ], flavour: '"Getting up close and personal while staying far away"', - type: 'Spear Weapon' + type: 'Polearm Weapon' ) - -cards.push Card.new( +common_weapons[:dagger] = Card.new( title: "Dagger", color: 'rebeccapurple', reposte: 'Prc', @@ -64,7 +63,7 @@ cards.push Card.new( type: 'Dagger Weapon' ) -cards.push Card.new( +common_weapons[:bow] = Card.new( title: "Bow", color: 'rebeccapurple', damage: '3', @@ -83,7 +82,7 @@ cards.push Card.new( type: 'Bow Weapon' ) -cards.push Card.new( +common_weapons[:crossbow] = Card.new( title: "Crossbow", color: 'rebeccapurple', damage: '4', @@ -107,7 +106,7 @@ cards.push Card.new( type: 'Crossbow Weapon' ) -cards.push Card.new( +common_weapons[:hammer] = Card.new( title: "Hammer", reposte: 'Str', damage: 3, @@ -127,7 +126,7 @@ cards.push Card.new( type: 'Hammer Weapon' ) -cards.push Card.new( +common_weapons[:straight_sword] = Card.new( title: "Straight Sword", damage: 3, reposte: 'Str', @@ -147,7 +146,7 @@ cards.push Card.new( type: 'Straight Sword Weapon' ) -cards.push Card.new( +common_weapons[:axe] = Card.new( title: "Axe", damage: 3, reposte: 'Str', @@ -167,7 +166,7 @@ cards.push Card.new( type: 'Axe Weapon', ) -cards.push Card.new( +common_weapons[:staff] = Card.new( title: "Staff", damage: 2, reposte: 'Str', @@ -192,7 +191,7 @@ cards.push Card.new( type: 'Staff Weapon', ) -cards.push Card.new( +common_weapons[:curved_sword] = Card.new( title: "Curved Sword", damage: 3, reposte: 'Prc', @@ -212,7 +211,7 @@ cards.push Card.new( type: 'Curved Sword Weapon', ) -cards.push Card.new( +common_weapons[:caestus] = Card.new( title: "Caestus", color: 'DarkBlue', actions: [ @@ -224,4 +223,39 @@ cards.push Card.new( type: 'Weapon Equipment' ) -File.write('card.html', Card.build(cards)) +common_weapons[:test_weapon] = Card.new( + title: "Test Weapon", + damage: 3, + reposte: 'Prc', + actions: [ + Card::Action.new( + content: '🎲 **d6 + Prc** to hit.', + symbol: :spades, + ), + Card::Action.new( + seperator: true, + content: '🎲 **d6 + Prc** to hit.', + symbol: :clubs, + ), + Card::Action.new( + seperator: true, + content: '🎲 **d6 + Prc** to hit.', + symbol: :diamonds, + ), + Card::Action.new( + seperator: true, + content: '🎲 **d6 + Prc** to hit.', + symbol: :joker, + ), + Card::Action.new( + seperator: true, + content: '🎲 **d6 + Prc** to hit.', + symbol: [:tap, :hearts] + ), + ], + color: 'rebeccapurple', + flavour: '"Arrr"', + type: 'Curved Sword Weapon', +) + +File.write('common_weapons.html', Card.build(common_weapons.values)) diff --git a/cards/spells.rb b/cards/spells.rb index 2161458..64986b2 100644 --- a/cards/spells.rb +++ b/cards/spells.rb @@ -1,89 +1,96 @@ load 'card.rb' -cards = [] - -card = Card.new -card.title = "Wispy Flame" -card.color = 'firebrick' - -card.attrib_top_right = '1' -card.attrib_top_right_icon = '🩸' - -#card.attrib_top_right = '2' -#card.attrib_top_right_icon = '🛡️' - -#card.attrib_bottom_right = '1' -#card.attrib_bottom_right_icon = '🎲' - -#card.attrib_bottom_left = '1' -#card.attrib_bottom_left_icon = '⚔️' - -card.actions.push Card::Action.new( - content: '(**even**) Deal melee 🎲 **d4 damage**. If it is a small object set it on fire.', - symbol: :spades, +beginner_spells = {} + +beginner_spells[:wispy_flame] = Card.new( + title: "Wispy Flame", + damage: 'd4', + blood: 1, + #reposte: 'Prc', + actions: [ + Card::Action.new( + content: '(**even**) Engulf your hand in flames for short while. You need to maintain concentration.', + symbol: [:clubs, :blood] + ), + Card::Action.new( + seperator: true, + content: '(**while concentrating**) Deal melee damage to a target with your flame engulfed hand. If the target is a small object set it on fire.', + symbol: [:tap] + ), + ], + color: 'firebrick', + flavour: '"Portable Candle"', + type: 'Blood Magic (Igneous)' ) -card.flavour = '"Portable Candle"' -card.type = 'Blood Magic' - -cards.push card - -card = Card.new -card.title = "Summon Flesh" -card.color = 'firebrick' - -card.attrib_top_right = '1' -card.attrib_top_right_icon = '🩸' - -#card.attrib_top_right = '2' -#card.attrib_top_right_icon = '🛡️' -#card.attrib_bottom_right = '2' -#card.attrib_bottom_right_icon = '🎲' -#card.attrib_bottom_left = '1' -#card.attrib_bottom_left_icon = '⚔️' - -card.actions.push Card::Action.new( - content: '(**5 or less**) Heal a target within arms reach equal to the card played.', - symbol: :hearts, -) -card.actions.push Card::Action.new( - content: 'If this spell heals for more then half of the target\'s max health then they get flesh mass disease.', - seperator: true, +beginner_spells[:summon_flesh] = Card.new( + title: "Summon Flesh", + #damage: 3, + blood: 1, + #reposte: 'Prc', + actions: [ + Card::Action.new( + content: '(**5 or less**) Heal a target within arms reach equal to the card played.', + symbol: [:hearts, :blood] + ), + Card::Action.new( + content: 'If this spell heals for more then half of the target\'s max health then they get flesh mass disease.', + seperator: true, + ), + ], + color: 'firebrick', + flavour: '"Writhing flesh mass that assimilates"', + type: 'Blood Magic (Eldritch)' ) -card.flavour = '"Writhing flesh mass that assimilates"' -card.type = 'Blood Magic' - -cards.push card - -card = Card.new -card.title = "Slingshot" -card.color = 'rebeccapurple' - -#card.attrib_top_left = '14' -#card.attrib_top_left_icon = '🩸' -#card.attrib_top_right = '2' -#card.attrib_top_right_icon = '🛡️' - -#card.attrib_bottom_right = '2' -#card.attrib_bottom_right_icon = '🎲' - -#card.attrib_bottom_left = '1' -#card.attrib_bottom_left_icon = '⚔️' - -card.actions.push Card::Action.new( - content: 'Attack with a 🎲 **d6** roll. On success deal ⚔️ **Prescision damage**.', - symbol: :tap, +beginner_spells[:lighting_fork] = Card.new( + title: "Lightning Fork", + damage: '2d4', + blood: 1, + #reposte: 'Prc', + actions: [ + Card::Action.new( + content: '(**even**) Deal 1d4 damage to one target and 1d4 to another. Both targets need to be within 10 meters if you', + symbol: [:clubs, :blood] + ), + ], + color: 'firebrick', + flavour: '"Double the static, double the fun!"', + type: 'Blood Magic (Storm)' ) -card.actions.push Card::Action.new( - content: 'Ranged: This weapon avoids melee reposte attacks.', - seperator: true, + +beginner_spells[:summon_alchemicals] = Card.new( + title: "Summon Alchemicals", + #damage: 3, + blood: 2, + #reposte: 'Prc', + actions: [ + Card::Action.new( + content: '(**odd**) Summon a random amount of a random alchemical depending on various hidden factors.', + symbol: [:diamonds, :blood] + ), + ], + color: 'firebrick', + flavour: '"You arent making a bomb, are you?"', + type: 'Blood Magic (Eldritch)' ) -card.flavour = '"Only a troublemaker would use this."' -card.type = 'Weapon' -cards.push card +beginner_spells[:summon_alchemicals] = Card.new( + title: "Summon Alchemicals", + #damage: 3, + blood: 2, + #reposte: 'Prc', + actions: [ + Card::Action.new( + content: '(**odd**) Summon a random amount of a random alchemical depending on various hidden factors.', + symbol: [:diamonds, :blood] + ), + ], + color: 'firebrick', + flavour: '"You arent making a bomb, are you?"', + type: 'Blood Magic (Eldritch)' +) -File.write('card.html', Card.build(cards)) +File.write('beginner_spells.html', Card.build(beginner_spells.values)) diff --git a/cards/weapon_example.svg b/cards/weapon_example.svg new file mode 100644 index 0000000..ef9e910 --- /dev/null +++ b/cards/weapon_example.svg @@ -0,0 +1,864 @@ + + + +123568734 diff --git a/src/.obsidian/app.json b/src/.obsidian/app.json index 930ef51..df8ec96 100644 --- a/src/.obsidian/app.json +++ b/src/.obsidian/app.json @@ -1,3 +1,6 @@ { - "fileSortOrder": "byModifiedTime" + "fileSortOrder": "byModifiedTime", + "alwaysUpdateLinks": false, + "trashOption": "local", + "useMarkdownLinks": true } \ No newline at end of file diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 8be9d04..e2373a6 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -1,4 +1,5 @@ # Summary + [Intro](./intro.md) - [Build Your Character](character-builder.md) @@ -14,14 +15,15 @@ - [Armour](armour.md) - [Weapons](weapons.md) -- [Spellcasting](Spellcasting.md) - - [Running The Game]() - - [Combat](./combat.md) - - [Social](social.md) - - [Checks](checks.md) - - [Fate Deck](fate-deck.md) - - [Travel](travel.md) + - [Checks](running-the-game/checks.md) + - [Abilities](running-the-game/abilities.md) + - [Attacking](running-the-game/weapons.md) + - [Spellcasting](running-the-game/spellcasting.md) + - [Combat](running-the-game/combat.md) + - [Social](running-the-game/social.md) + - [Fate Deck](running-the-game/fate-deck.md) + - [Travel](running-the-game/travel.md) - [Indices]() - [Weapons](./weapons.md) diff --git a/src/checks.md b/src/checks.md deleted file mode 100644 index f8c553a..0000000 --- a/src/checks.md +++ /dev/null @@ -1,21 +0,0 @@ -# Resolving Checks -When the player attempts to do an action and the GM has determined it is not trivial(e.g failure is possible and not insignificant) the GM should give the player a check which will determine the fate of their action. - -Here is an explanation of each step of a check. - ---- - -### 1. Action Request -Player asks to do an action or ability, naming a relevant discipline and/or object if applicable which would assist them(players are **NOT** to state they are 'using' or 'intending to use' a stat) - -### 2. Determine Difficulties and Advantages -GM determines how difficult a check is and what the relevant skill is. -| Medium | Hard | Extreme | Borderline Impossible | -| --- | --- | --- | --- | -| 3-4 | 5-7 | 8-10 | 11-12 | - -Subtract the player's relevant skill from the difficulty. If they are using a relevant skill then subtract 2 more. - -### 3. Resolve the Check -The player resolves the check by rolling. If the result is higher or equal to the difficulty then they succeed. Otherwise they fail. - diff --git a/src/combat.md b/src/combat.md deleted file mode 100644 index ca026b9..0000000 --- a/src/combat.md +++ /dev/null @@ -1,32 +0,0 @@ -# Combat - -## Start of Combat - -GM places enemies on board, draws from environment deck and places them in play as well. - -Turn order will be determined by some way in the future(not yet sure) - -All enemy turns are interlaced between player turns - -All abilities are tapped or "deactivated" - -## Player Turn - -At the start of the player turn abilities that are applicable are refreshed. Now the player can use their abilities or tap. - -## Other Player's or Enemy's Turns - -Only tappable abilities are allowed to be used, in reaction to another player or enemy declaring an action. - ---- - -Magic always hits but damage is unpredictable(roll for damage) -Physical can sometimes miss(roll for hit) but has consistant damage - ---- - -A combat game will be structured in a way inspired by binding of issac board game - -Player card vs enemy cards. - -The location the players are in will determine what doodads are availible (doodads are things like furniture) diff --git a/src/fate-deck.md b/src/fate-deck.md deleted file mode 100644 index c285013..0000000 --- a/src/fate-deck.md +++ /dev/null @@ -1,14 +0,0 @@ -# Fate Deck - -The fate deck is a single playing card deck which is used by all the players of the game to build their respective deck. The cards from this deck are used by players to do actions or abilities of their characters. The players individual decks are rebuilt every once in a while.[TODO: how often?] - -## Building the Fate Decks - -The GM separates the face cards from the fate deck(kings, queens, jacks and aces). These face cards are then shuffled and one is dealt out to each player. The remaining numbered cards are then selected according to each players respective character's rules for selecting fate cards. Once selected the remaining numbered cards are shuffled and dealt out evenly among the players. Finally any relevant character abilities for further modifying the player Fate Decks are put into play. Once this is done the player Fate Decks are ready for play. - --- new idea -- - -- Whenever the players long rest, reset all cards into a single deck. Each player pick 5 cards from the deck, then distribute the remaining cards randomly. Players have X amount of cards in their hand and draw more whenever it goes below that limit. Players get some kind of punishment/detriment for having an empty deck(this is the in game mechanic representing exaustion) - -- When players use an action or ability they roll a d10. The resulting roll value can be used in place of a card. The suit of the roll depends on the class of the roller. Some classes can use an extra d4 which they can use the result of the roll to add or subtract any of their cards or rolls once that action. - diff --git a/src/running-the-game/abilities.md b/src/running-the-game/abilities.md new file mode 100644 index 0000000..08e09ad --- /dev/null +++ b/src/running-the-game/abilities.md @@ -0,0 +1,32 @@ +# Abilities + +Abilities are represented as cards which your character can learn, equip, and/or use. Spells, weapons, and racial feats are just some of the things which are represented as ability cards. Many of these cards follow shorthand for mechanics which are common throught the game. Here they are: + +## Symbols + +### Tap +![tap_symbol](tap_symbol.png) +This symbol represents an ability which can be used once before requiring to be recharged. When a card is "tapped" place it sideways to signify this state. Once the card becomes [refreshed](/running-the-game/abilities.md#refresh) place it regularly. Unless otherwise stated, these cards [refresh](/running-the-game/abilities.md#refresh) at the start of your turn, or within a couple of in game seconds. If there is a set of brackets immediatly after the symbol they denotes the restrictions that must be met to use the ability. + +These abilities can be used in reactions on other's turns. + +### Suit Card Cost +![heart_symbol](heart_symbol.png) ![spade_symbol](spade_symbol.png) ![diamond_symbol](diamond_symbol.png) ![club_symbol](club_symbol.png) +Each of these 4 symbols represent an ability where you must play a matching card to use it. If there is a set of brackets immediatly after the symbol it denotes an additional restrictions the card played must meet. for example if the symbol is a heart followed by the word "even" in brackets then to activate the ability you must play heart card that has an even number to activate the ability. + +These abilities **can not** be used in reactions on other's turns unless otherwise stated. + +### Any Card Cost +![joker_symbol](joker_symbol.png) +This symbol represents an ability where you can play a card of any suit. Like the previous explanation, a set of brackets afterwards will denote any additional restrictions. + +These abilities **can not** be used in reactions on other's turns unless otherwise stated. + +### Blood Cost + +This symbol represents an ability where you must use a blood spellcasting tool(unless otherwise specified) and pay for the cost to cast the spell. + +## Key Words + +### Refresh +To refresh a card means to undo its [tapped state](/running-the-game/abilities.md#tap) state into untapped. This means the card can once again be tapped. \ No newline at end of file diff --git a/src/running-the-game/checks.md b/src/running-the-game/checks.md new file mode 100644 index 0000000..f8c553a --- /dev/null +++ b/src/running-the-game/checks.md @@ -0,0 +1,21 @@ +# Resolving Checks +When the player attempts to do an action and the GM has determined it is not trivial(e.g failure is possible and not insignificant) the GM should give the player a check which will determine the fate of their action. + +Here is an explanation of each step of a check. + +--- + +### 1. Action Request +Player asks to do an action or ability, naming a relevant discipline and/or object if applicable which would assist them(players are **NOT** to state they are 'using' or 'intending to use' a stat) + +### 2. Determine Difficulties and Advantages +GM determines how difficult a check is and what the relevant skill is. +| Medium | Hard | Extreme | Borderline Impossible | +| --- | --- | --- | --- | +| 3-4 | 5-7 | 8-10 | 11-12 | + +Subtract the player's relevant skill from the difficulty. If they are using a relevant skill then subtract 2 more. + +### 3. Resolve the Check +The player resolves the check by rolling. If the result is higher or equal to the difficulty then they succeed. Otherwise they fail. + diff --git a/src/running-the-game/club_symbol.png b/src/running-the-game/club_symbol.png new file mode 100644 index 0000000..8198c2c Binary files /dev/null and b/src/running-the-game/club_symbol.png differ diff --git a/src/running-the-game/combat.md b/src/running-the-game/combat.md new file mode 100644 index 0000000..ca026b9 --- /dev/null +++ b/src/running-the-game/combat.md @@ -0,0 +1,32 @@ +# Combat + +## Start of Combat + +GM places enemies on board, draws from environment deck and places them in play as well. + +Turn order will be determined by some way in the future(not yet sure) + +All enemy turns are interlaced between player turns + +All abilities are tapped or "deactivated" + +## Player Turn + +At the start of the player turn abilities that are applicable are refreshed. Now the player can use their abilities or tap. + +## Other Player's or Enemy's Turns + +Only tappable abilities are allowed to be used, in reaction to another player or enemy declaring an action. + +--- + +Magic always hits but damage is unpredictable(roll for damage) +Physical can sometimes miss(roll for hit) but has consistant damage + +--- + +A combat game will be structured in a way inspired by binding of issac board game + +Player card vs enemy cards. + +The location the players are in will determine what doodads are availible (doodads are things like furniture) diff --git a/src/running-the-game/diamond_symbol.png b/src/running-the-game/diamond_symbol.png new file mode 100644 index 0000000..c75e267 Binary files /dev/null and b/src/running-the-game/diamond_symbol.png differ diff --git a/src/running-the-game/fate-deck.md b/src/running-the-game/fate-deck.md new file mode 100644 index 0000000..c285013 --- /dev/null +++ b/src/running-the-game/fate-deck.md @@ -0,0 +1,14 @@ +# Fate Deck + +The fate deck is a single playing card deck which is used by all the players of the game to build their respective deck. The cards from this deck are used by players to do actions or abilities of their characters. The players individual decks are rebuilt every once in a while.[TODO: how often?] + +## Building the Fate Decks + +The GM separates the face cards from the fate deck(kings, queens, jacks and aces). These face cards are then shuffled and one is dealt out to each player. The remaining numbered cards are then selected according to each players respective character's rules for selecting fate cards. Once selected the remaining numbered cards are shuffled and dealt out evenly among the players. Finally any relevant character abilities for further modifying the player Fate Decks are put into play. Once this is done the player Fate Decks are ready for play. + +-- new idea -- + +- Whenever the players long rest, reset all cards into a single deck. Each player pick 5 cards from the deck, then distribute the remaining cards randomly. Players have X amount of cards in their hand and draw more whenever it goes below that limit. Players get some kind of punishment/detriment for having an empty deck(this is the in game mechanic representing exaustion) + +- When players use an action or ability they roll a d10. The resulting roll value can be used in place of a card. The suit of the roll depends on the class of the roller. Some classes can use an extra d4 which they can use the result of the roll to add or subtract any of their cards or rolls once that action. + diff --git a/src/running-the-game/heart_symbol.png b/src/running-the-game/heart_symbol.png new file mode 100644 index 0000000..5f79390 Binary files /dev/null and b/src/running-the-game/heart_symbol.png differ diff --git a/src/running-the-game/joker_symbol.png b/src/running-the-game/joker_symbol.png new file mode 100644 index 0000000..24ec635 Binary files /dev/null and b/src/running-the-game/joker_symbol.png differ diff --git a/src/running-the-game/social.md b/src/running-the-game/social.md new file mode 100644 index 0000000..cb7ae20 --- /dev/null +++ b/src/running-the-game/social.md @@ -0,0 +1,74 @@ +# Social + +Social checks take into account 3 different factors in addition to the regular ones. + +## Factors + +### Difficulty +How difficult the given persuasion attempt is. + +#### Resilience +How resilient the person you are talking to is to persuasion of the given thing. + +#### Reputation +This is how you are viewed in the community. It is determine by the actions you commit toward those in the community. Harassing people increases the negative view while helping people increases the positive view. It is tracked by the GM by using a 4x4 grid where one axis is "good" and the other axis is "evil". Staying between makes you considered as "chaotic". Generally not possible to revert the good or evil status, they only increase the more respective actions you do towards the community. + +### Persuasion +Your persuasion stat is dependant on some of the following factors. + +#### Bargain Chips/Favours +Things you learn about characters can be used to your advantage. Not necessarily something negative, could be for example doing a task for someone as a favour. + + +#### Apparel, Presentation, Relevant Skill +The way you dress, as well as the race you play also has an effect on how receptive others are toward your social attempts. As a possible example: wearing expensive fancy attire may make you more trustworthy to rich socialites but could make you less convincing to those less fortunate. Wearing armour may make your appear like a "dumb brute" which can incentivize characters to take it off. Some settlements also could be predisposed to trusting or distrusting certain races, factors that affect your odds of success. + +## Resolution + +The difficulty of a given social combat is decided by the GM by weighing several factors. Factors that matter are reputation in the community, appearance(how you dress and your race) The GM then lays out 1-3+ cards(more is higher difficulty) face down and only reveals one. The next card is only revealed when the current card is "overcome". + +To "overcome" a card one of the players must give a convincing argument/plea/threat/etc correlating to one of their stats. When they do they can play a card matching the number or the suit and thus the card is overcome, causing the next card to be revealed. + +Each individual stat can only be used once in a social encounter. + + + \ No newline at end of file diff --git a/src/running-the-game/spade_symbol.png b/src/running-the-game/spade_symbol.png new file mode 100644 index 0000000..a23eb9b Binary files /dev/null and b/src/running-the-game/spade_symbol.png differ diff --git a/src/running-the-game/spellcasting.md b/src/running-the-game/spellcasting.md new file mode 100644 index 0000000..19064e5 --- /dev/null +++ b/src/running-the-game/spellcasting.md @@ -0,0 +1,19 @@ +# Spellcasting + +## Types of Spells + +### Blood Spells +Blood spells are the most common and accessable type of magic. These are spells that require blood to power them. + +To cast a blood spell a "spell casting" medium may be needed. A given spellcasting medium will have a dice associated with it. When casting a spell this dice is rolled. If the result is greater then the blood cost of a spell then you dont pay anything. However if the number rolled is equal to or less then the value then you pay 1 blood. If the spell cost is higher then the dice of your casting medium then the medium is too weak to cast the spell. Using no casting medium is possible, instead of rolling a dice the result is always 1 and you cannot cast spells higher then this cost. + +### Divine Spells +Divine spells use magic that originates from a god. The rules of these spells vary wildly and can depend on various different factors. These are forbidden in most places so if you somehow get access to one, be careful with how you use it. + +### Alchemy +Alchemy is a form of magic which involves the preparation of various ingredients which form compounds that perform spell effects. + +## Spell Keywords + +### Concentration +When you get damaged while concentrating, you need to reroll the blood die. If you fail the roll you pay the cost and your concentration ends. \ No newline at end of file diff --git a/src/running-the-game/tap_symbol.png b/src/running-the-game/tap_symbol.png new file mode 100644 index 0000000..0a9fd87 Binary files /dev/null and b/src/running-the-game/tap_symbol.png differ diff --git a/src/running-the-game/travel.md b/src/running-the-game/travel.md new file mode 100644 index 0000000..e4a3efb --- /dev/null +++ b/src/running-the-game/travel.md @@ -0,0 +1,3 @@ +# Travel + +When travelling, each day spent in travel is resolved by the GM drawing event cards that are put in play and need to be resolved before proceeding. If the GM draws an enemy then they draw again until they draw an event. The players must fight the group of enemies and then after the combat they must resolve the event. diff --git a/src/running-the-game/weapon_example.png b/src/running-the-game/weapon_example.png new file mode 100644 index 0000000..061a621 Binary files /dev/null and b/src/running-the-game/weapon_example.png differ diff --git a/src/running-the-game/weapons.md b/src/running-the-game/weapons.md new file mode 100644 index 0000000..d008695 --- /dev/null +++ b/src/running-the-game/weapons.md @@ -0,0 +1,20 @@ +# Weapons + +## Example + +![weapon](weapon_example.png) + + +1. The top box which contains the name of the weapon as well as possibly a few stats. +2. This is the damage stat. The weapon will deal this much damage in an attack(unless otherwise stated) and will deal half of this(rounded down) in a reposte. +3. This is how much this weapon raises your defensive roll target for repostes. If it is unlisted then the weapon does not have a reposte. +4. This is the ability box, which lists out all the active and passive abilities this weapon has seperated by a bold line. This example weapon has 2 abilities. +5. The [symbol means you need to tap](running-the-game/abilities.md#Tap) to use this ability. The ["to hit" wording signifies it is an attack](running-the-game/weapons.md#To%20Hit) +7. The [symbol](running-the-game/abilities.md#Suit%20Card%20Cost) in front of this ability signifies that you must play a specific card to play it. [Refresh](running-the-game/abilities.md#Refresh) is a specific keyword. +9. This text states what type of card this is. Note that the colour of the card corresponds with the type of card. In this example the card is a Weapon, or a Dagger Weapon to be specific and the card is a purple colour. +10. This faded text is flavour. + +## Key Words + +### To Hit +These words are used in conjunction with a dice roll. It signifies that this ability is an attack and that this is how the attack roll is determined for it. If damage is unlisted then it is equal to the damage stat listed in the top box of the card. \ No newline at end of file diff --git a/src/social.md b/src/social.md deleted file mode 100644 index 825234a..0000000 --- a/src/social.md +++ /dev/null @@ -1,74 +0,0 @@ -# Social - -Social checks take into account 3 different factors in addition to the regular ones. - -## Factors - -### Difficulty -How difficult the given persuasion attempt is. - -#### Resilience -How resilient the person you are talking to is to persuasion of the given thing. - -#### Reputation -This is how you are viewed in the community. It is determine by the actions you commit toward those in the community. Harassing people increases the negative view while helping people increases the positive view. It is tracked by the GM by using a 4x4 grid where one axis is "good" and the other axis is "evil". Staying between makes you considered as "chaotic". Generally not possible to revert the good or evil status, they only increase the more respective actions you do towards the community. - -### Persuasion -Your persuasion stat is dependant on some of the following factors. - -#### Bargain Chips/Favours -Things you learn about characters can be used to your advantage. Not necessarily something negative, could be for example doing a task for someone as a favour. - - -#### Apparel, Presentation, Relevant Skill -The way you dress, as well as the race you play also has an effect on how receptive others are toward your social attempts. As a possible example: wearing expensive fancy attire may make you more trustworthy to rich socialites but could make you less convincing to those less fortunate. Wearing armour may make your appear like a "dumb brute" which can incentivize characters to take it off. Some settlements also could be predisposed to trusting or distrusting certain races, factors that affect your odds of success. - -## Resolution - -The difficulty of a given social combat is decided by the GM by weighing several factors. Factors that matter are reputation in the community, appearance(how you dress and your race) The GM then lays out 1-3+ cards(more is higher difficulty) face down and only reveals one. The next card is only revealed when the current card is "overcome". - -To "overcome" a card one of the players must give a convincing argument/plea/threat/etc correlating to one of their stats. When they do they can play a card matching the number or the suit and thus the card is overcome, causing the next card to be revealed. - -Each individual stat can only be used once in a social encounter. - - - \ No newline at end of file diff --git a/src/travel.md b/src/travel.md deleted file mode 100644 index e4a3efb..0000000 --- a/src/travel.md +++ /dev/null @@ -1,3 +0,0 @@ -# Travel - -When travelling, each day spent in travel is resolved by the GM drawing event cards that are put in play and need to be resolved before proceeding. If the GM draws an enemy then they draw again until they draw an event. The players must fight the group of enemies and then after the combat they must resolve the event. diff --git a/tap_symbol.xcf b/tap_symbol.xcf new file mode 100644 index 0000000..5232fb1 Binary files /dev/null and b/tap_symbol.xcf differ -- cgit v1.2.3