parent
29aa8c8329
commit
e0e4b869e7
@ -0,0 +1,296 @@ |
|||||||
|
{ |
||||||
|
"Path Of Spite Subsetting": { |
||||||
|
"Griever": { |
||||||
|
"time": 3, |
||||||
|
"res": 0, |
||||||
|
"skills": [ |
||||||
|
[ |
||||||
|
3, |
||||||
|
"Sorrow Of Truth", |
||||||
|
"Dark Elf-wise" |
||||||
|
] |
||||||
|
], |
||||||
|
"traits": [ |
||||||
|
1, |
||||||
|
"Spite" |
||||||
|
] |
||||||
|
}, |
||||||
|
"Wastrel": { |
||||||
|
"time": 25, |
||||||
|
"res": 3, |
||||||
|
"skills": [ |
||||||
|
[ |
||||||
|
6, |
||||||
|
"Scavenging", |
||||||
|
"Brawling", |
||||||
|
"Forest-wise", |
||||||
|
"Wasteland-wise", |
||||||
|
"Animal-wise" |
||||||
|
] |
||||||
|
], |
||||||
|
"traits": [ |
||||||
|
2, |
||||||
|
"Filthy", |
||||||
|
"Feral" |
||||||
|
], |
||||||
|
"requires": "Griever", |
||||||
|
"requires_expr": [ |
||||||
|
"griever" |
||||||
|
] |
||||||
|
}, |
||||||
|
"Thief": { |
||||||
|
"time": 18, |
||||||
|
"res": 6, |
||||||
|
"stat": [ |
||||||
|
[ |
||||||
|
1, |
||||||
|
"pm" |
||||||
|
] |
||||||
|
], |
||||||
|
"skills": [ |
||||||
|
[ |
||||||
|
6, |
||||||
|
"Lock Pick", |
||||||
|
"Stealthy", |
||||||
|
"Climbing", |
||||||
|
"Sleight Of Hand", |
||||||
|
"Dirge Of Night" |
||||||
|
] |
||||||
|
], |
||||||
|
"traits": [ |
||||||
|
1, |
||||||
|
"Thief" |
||||||
|
], |
||||||
|
"requires": "Griever", |
||||||
|
"requires_expr": [ |
||||||
|
"griever" |
||||||
|
] |
||||||
|
}, |
||||||
|
"Assassin": { |
||||||
|
"time": 15, |
||||||
|
"res": 6, |
||||||
|
"stat": [ |
||||||
|
[ |
||||||
|
1, |
||||||
|
"p" |
||||||
|
] |
||||||
|
], |
||||||
|
"skills": [ |
||||||
|
[ |
||||||
|
7, |
||||||
|
"Intimidation", |
||||||
|
"Poisons", |
||||||
|
"Escape Artist", |
||||||
|
"Knives", |
||||||
|
"Garotte", |
||||||
|
"Keen Of Terror" |
||||||
|
] |
||||||
|
], |
||||||
|
"traits": [ |
||||||
|
1, |
||||||
|
"Murderous", |
||||||
|
"Callous", |
||||||
|
"Cold Blooded" |
||||||
|
], |
||||||
|
"requires": "Griever", |
||||||
|
"requires_expr": [ |
||||||
|
"griever" |
||||||
|
] |
||||||
|
}, |
||||||
|
"Stalker": { |
||||||
|
"time": 20, |
||||||
|
"res": 8, |
||||||
|
"skills": [ |
||||||
|
[ |
||||||
|
8, |
||||||
|
"Hunting", |
||||||
|
"Elf-wise", |
||||||
|
"Tracking", |
||||||
|
"Trapper", |
||||||
|
"Observation", |
||||||
|
"Stealthy", |
||||||
|
"Throwing", |
||||||
|
"Javelin", |
||||||
|
"Supplication To Shadows" |
||||||
|
] |
||||||
|
], |
||||||
|
"traits": [ |
||||||
|
1, |
||||||
|
"Saturnine" |
||||||
|
], |
||||||
|
"requires": "Griever", |
||||||
|
"requires_expr": [ |
||||||
|
"griever" |
||||||
|
] |
||||||
|
}, |
||||||
|
"Deceiver": { |
||||||
|
"time": 35, |
||||||
|
"res": 10, |
||||||
|
"stat": [ |
||||||
|
[ |
||||||
|
1, |
||||||
|
"m" |
||||||
|
] |
||||||
|
], |
||||||
|
"skills": [ |
||||||
|
[ |
||||||
|
7, |
||||||
|
"Sleight Of Hand", |
||||||
|
"Disguise", |
||||||
|
"Inconspicuous", |
||||||
|
"Rhyme Of The Unraveller" |
||||||
|
] |
||||||
|
], |
||||||
|
"traits": [ |
||||||
|
1, |
||||||
|
"Deceptive" |
||||||
|
], |
||||||
|
"requires": "Griever", |
||||||
|
"requires_expr": [ |
||||||
|
"griever" |
||||||
|
] |
||||||
|
}, |
||||||
|
"Liar": { |
||||||
|
"time": 25, |
||||||
|
"res": 8, |
||||||
|
"stat": [ |
||||||
|
[ |
||||||
|
1, |
||||||
|
"m" |
||||||
|
] |
||||||
|
], |
||||||
|
"skills": [ |
||||||
|
[ |
||||||
|
6, |
||||||
|
"Falsehood", |
||||||
|
"Soothing Platitudes", |
||||||
|
"Persuasion", |
||||||
|
"Twisted Tongue" |
||||||
|
] |
||||||
|
], |
||||||
|
"traits": [ |
||||||
|
1, |
||||||
|
"Compulsive Liar" |
||||||
|
], |
||||||
|
"requires": "Griever", |
||||||
|
"requires_expr": [ |
||||||
|
"griever" |
||||||
|
] |
||||||
|
}, |
||||||
|
"Siren": { |
||||||
|
"time": 55, |
||||||
|
"res": 20, |
||||||
|
"stat": [ |
||||||
|
[ |
||||||
|
1, |
||||||
|
"pm" |
||||||
|
] |
||||||
|
], |
||||||
|
"skills": [ |
||||||
|
[ |
||||||
|
9, |
||||||
|
"Seduction", |
||||||
|
"Etiquette", |
||||||
|
"Persuasion", |
||||||
|
"Soothing Platitudes", |
||||||
|
"Gossip-wise", |
||||||
|
"Fugue Of Discord", |
||||||
|
"Litany Of Fools" |
||||||
|
] |
||||||
|
], |
||||||
|
"traits": [ |
||||||
|
2, |
||||||
|
"Charismatic", |
||||||
|
"Femme Fatale/Homme Fatale" |
||||||
|
], |
||||||
|
"requires": "Assassin, Deceiver or Liar", |
||||||
|
"requires_expr": [ |
||||||
|
"assassin", |
||||||
|
"deceiver", |
||||||
|
"liar" |
||||||
|
] |
||||||
|
}, |
||||||
|
"Eremite": { |
||||||
|
"time": 150, |
||||||
|
"res": 15, |
||||||
|
"stat": [ |
||||||
|
[ |
||||||
|
1, |
||||||
|
"m" |
||||||
|
] |
||||||
|
], |
||||||
|
"skills": [ |
||||||
|
[ |
||||||
|
12, |
||||||
|
"Philosophy", |
||||||
|
"Ugly Truth", |
||||||
|
"Obscure History", |
||||||
|
"Symbology", |
||||||
|
"Strategy", |
||||||
|
"Elf-wise", |
||||||
|
"Orc-wise", |
||||||
|
"Dwarf-wise", |
||||||
|
"Man-wise", |
||||||
|
"Paean To The Dark Fire" |
||||||
|
] |
||||||
|
], |
||||||
|
"traits": [ |
||||||
|
2, |
||||||
|
"Remote", |
||||||
|
"Cold" |
||||||
|
], |
||||||
|
"requires": "Siren, Wastrel or Stalker", |
||||||
|
"requires_expr": [ |
||||||
|
"siren", |
||||||
|
"wastrel", |
||||||
|
"stalker" |
||||||
|
] |
||||||
|
}, |
||||||
|
"Recluse": { |
||||||
|
"time": 225, |
||||||
|
"res": 25, |
||||||
|
"stat": [ |
||||||
|
[ |
||||||
|
1, |
||||||
|
"p" |
||||||
|
] |
||||||
|
], |
||||||
|
"skills": [ |
||||||
|
[ |
||||||
|
2, |
||||||
|
"Ancient History", |
||||||
|
"Dwarf-wise", |
||||||
|
"Elven Politics-wise", |
||||||
|
"Cut Of The Quickened Mind" |
||||||
|
], |
||||||
|
[ |
||||||
|
5, |
||||||
|
"General" |
||||||
|
] |
||||||
|
], |
||||||
|
"traits": [ |
||||||
|
1, |
||||||
|
"Vengeful" |
||||||
|
], |
||||||
|
"requires": "Eremite or any three Dark Elf lifepaths", |
||||||
|
"requires_expr": [ |
||||||
|
"+or", |
||||||
|
[ |
||||||
|
"eremite" |
||||||
|
], |
||||||
|
[ |
||||||
|
"+has_n_lifepaths_in", |
||||||
|
3, |
||||||
|
"path of spite subsetting:griever", |
||||||
|
"path of spite subsetting:wastrel", |
||||||
|
"path of spite subsetting:thief", |
||||||
|
"path of spite subsetting:assassin", |
||||||
|
"path of spite subsetting:stalker", |
||||||
|
"path of spite subsetting:deceiver", |
||||||
|
"path of spite subsetting:liar", |
||||||
|
"path of spite subsetting:siren" |
||||||
|
] |
||||||
|
] |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1 @@ |
|||||||
|
{} |
@ -0,0 +1,46 @@ |
|||||||
|
{ |
||||||
|
"Callous": { |
||||||
|
"cost": 1, |
||||||
|
"type": "character" |
||||||
|
}, |
||||||
|
"Cold": { |
||||||
|
"cost": 1, |
||||||
|
"type": "character" |
||||||
|
}, |
||||||
|
"Compulsive Liar": { |
||||||
|
"cost": 1, |
||||||
|
"type": "character" |
||||||
|
}, |
||||||
|
"Deceptive": { |
||||||
|
"cost": 1, |
||||||
|
"type": "character" |
||||||
|
}, |
||||||
|
"Femme Fatale/Homme Fatale": { |
||||||
|
"cost": 1, |
||||||
|
"type": "character" |
||||||
|
}, |
||||||
|
"Feral": { |
||||||
|
"cost": 1, |
||||||
|
"type": "character" |
||||||
|
}, |
||||||
|
"Filthy": { |
||||||
|
"cost": 1, |
||||||
|
"type": "character" |
||||||
|
}, |
||||||
|
"Murderous": { |
||||||
|
"cost": 1, |
||||||
|
"type": "character" |
||||||
|
}, |
||||||
|
"Remote": { |
||||||
|
"cost": 1, |
||||||
|
"type": "character" |
||||||
|
}, |
||||||
|
"Saturnine": { |
||||||
|
"cost": 1, |
||||||
|
"type": "character" |
||||||
|
}, |
||||||
|
"Spite": { |
||||||
|
"cost": 1, |
||||||
|
"type": "character" |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,15 @@ |
|||||||
|
require 'json' |
||||||
|
|
||||||
|
module Charred |
||||||
|
module DarkElf |
||||||
|
def load_dark_elf(data) |
||||||
|
file = File.read('data/dark_elf/skills.json') |
||||||
|
skills = JSON.parse(file) |
||||||
|
data[:skills].merge! skills |
||||||
|
|
||||||
|
file = File.read('data/dark_elf/traits.json') |
||||||
|
traits = JSON.parse(file) |
||||||
|
data[:traits].merge! traits |
||||||
|
end |
||||||
|
end |
||||||
|
end |
@ -0,0 +1,39 @@ |
|||||||
|
require 'json' |
||||||
|
|
||||||
|
module Charred |
||||||
|
module Gold |
||||||
|
def load_gold(data) |
||||||
|
file = File.read('data/gold/skills.json') |
||||||
|
skills = JSON.parse(file) |
||||||
|
|
||||||
|
file = File.read('data/gold/traits.json') |
||||||
|
traits = JSON.parse(file) |
||||||
|
|
||||||
|
lifepaths = {} |
||||||
|
resources = {} |
||||||
|
stat_pts = {} |
||||||
|
|
||||||
|
stocks = ['dwarf', 'elf', 'man', 'orc', 'roden', 'wolf'] |
||||||
|
|
||||||
|
stocks.each do |stock| |
||||||
|
file = File.read("data/gold/lifepaths/#{stock}.json") |
||||||
|
lifepaths[stock] = JSON.parse(file) |
||||||
|
|
||||||
|
file = File.read("data/gold/resources/#{stock}.json") |
||||||
|
resources[stock] = JSON.parse(file) |
||||||
|
|
||||||
|
file = File.read("data/gold/starting_stat_pts/#{stock}.json") |
||||||
|
stat_pts[stock] = JSON.parse(file) |
||||||
|
end |
||||||
|
|
||||||
|
data.merge!({ |
||||||
|
:stocks => stocks, |
||||||
|
:skills => skills, |
||||||
|
:traits => traits, |
||||||
|
:lifepaths => lifepaths, |
||||||
|
:resources => resources, |
||||||
|
:stat_pts => stat_pts |
||||||
|
}) |
||||||
|
end |
||||||
|
end |
||||||
|
end |
@ -0,0 +1,118 @@ |
|||||||
|
require 'json' |
||||||
|
|
||||||
|
module Charred |
||||||
|
module Wizard |
||||||
|
def load_wizard(data) |
||||||
|
puts 'Loading wizard burner' |
||||||
|
file = File.read('data/wizard/lifepaths.json') |
||||||
|
wizard_data = JSON.parse(file) |
||||||
|
|
||||||
|
file = File.read('data/wizard/skills.json') |
||||||
|
wizard_skills = JSON.parse(file) |
||||||
|
data[:skills].merge! wizard_skills |
||||||
|
|
||||||
|
file = File.read('data/wizard/traits.json') |
||||||
|
wizard_traits = JSON.parse(file) |
||||||
|
data[:traits].merge! wizard_traits |
||||||
|
|
||||||
|
man = data[:lifepaths]['man'] |
||||||
|
|
||||||
|
man['College of Magic Setting'] = wizard_data['College of Magic Setting'] |
||||||
|
man['Death Cult Setting'] = wizard_data['Death Cult Setting'] |
||||||
|
|
||||||
|
data[:lifepaths]['orc']['Servant Of The Dark Blood Subsetting'].merge!(wizard_data['Servant Of The Dark Blood Subsetting']) |
||||||
|
|
||||||
|
[ |
||||||
|
'Peasant Setting', |
||||||
|
'Villager Setting', |
||||||
|
'City Dweller Setting', |
||||||
|
'Noble Court Subsetting', |
||||||
|
'Outcast Subsetting' |
||||||
|
].each do |setting| |
||||||
|
man[setting].merge!(wizard_data[setting]) |
||||||
|
end |
||||||
|
|
||||||
|
[ |
||||||
|
'Peasant Setting', |
||||||
|
'Villager Setting', |
||||||
|
'City Dweller Setting', |
||||||
|
'Seafaring Setting', |
||||||
|
'Servitude And Captive Setting' |
||||||
|
].each do |setting| |
||||||
|
man[setting].merge!({ |
||||||
|
'Gifted Child' => wizard_data['Special Gifted Lifepaths']['Gifted Child'] |
||||||
|
}) |
||||||
|
end |
||||||
|
|
||||||
|
[ |
||||||
|
'Noble Court Subsetting', |
||||||
|
'Religious Subsetting', |
||||||
|
'Outcast Subsetting', |
||||||
|
'Professional Soldier Subsetting' |
||||||
|
].each do |setting| |
||||||
|
man[setting].merge!({ |
||||||
|
'Apt Pupil' => wizard_data['Special Gifted Lifepaths']['Apt Pupil'] |
||||||
|
}) |
||||||
|
end |
||||||
|
|
||||||
|
leads_short = { |
||||||
|
'College of Magic Setting' => 'College', |
||||||
|
'Death Cult Setting' => 'Death', |
||||||
|
} |
||||||
|
|
||||||
|
# backfill leads |
||||||
|
leads_short.keys.each do |wiz_set| |
||||||
|
wizard_data[wiz_set].keys.each do |wiz_lp| |
||||||
|
lifepath = wizard_data[wiz_set][wiz_lp] |
||||||
|
next if !lifepath['requires_expr'] |
||||||
|
|
||||||
|
requirements = self.lifepath_requirements(lifepath['requires_expr']) |
||||||
|
|
||||||
|
requirements.each do |req| |
||||||
|
setting = nil |
||||||
|
req_lp = req |
||||||
|
setting, req_lp = req.split(':') if req.include? ':' |
||||||
|
|
||||||
|
man.keys.each do |man_set| |
||||||
|
next if wiz_set.downcase == man_set.downcase |
||||||
|
next if setting && setting != man_set.downcase |
||||||
|
man[man_set].keys.each do |man_lp| |
||||||
|
next if req_lp != man_lp.downcase |
||||||
|
|
||||||
|
#puts "adding #{wiz_set}:#{wiz_lp} lead to #{man_set}:#{man_lp}" |
||||||
|
|
||||||
|
man[man_set][man_lp]['key_leads'] |= [wiz_set] |
||||||
|
man[man_set][man_lp]['leads'] |= [leads_short[wiz_set]] |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
# backfill Apt Pupil == Neophyte Sorcerer connection |
||||||
|
man.keys.each do |man_set| |
||||||
|
man[man_set].keys.each do |man_lp| |
||||||
|
requirements = self.lifepath_requirements(man[man_set][man_lp]['requires_expr']) |
||||||
|
next if requirements.include? 'apt pupil' |
||||||
|
requirements.each do |req| |
||||||
|
setting = nil |
||||||
|
req_lp = req |
||||||
|
setting, req_lp = req.split(':') if req.include? ':' |
||||||
|
|
||||||
|
next unless req_lp.downcase == 'neophyte sorcerer' |
||||||
|
|
||||||
|
if man[man_set][man_lp]['requires_expr'].include? 'neophyte sorcerer' |
||||||
|
man[man_set][man_lp]['requires_expr'] |= ['apt pupil'] |
||||||
|
else |
||||||
|
puts "warning, could not add apt pupil to deep requirements array at #{man_set}:#{man_lp}" |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
data[:lifepaths]['man'] = man |
||||||
|
puts 'loaded!' |
||||||
|
data |
||||||
|
end |
||||||
|
end |
||||||
|
end |
Loading…
Reference in new issue