parent
8219ebcc54
commit
9def2a15ba
@ -0,0 +1 @@ |
||||
.DS_Store |
@ -0,0 +1,22 @@ |
||||
FROM ruby:2.6.3 |
||||
|
||||
EXPOSE 7878 |
||||
|
||||
ENV HOST=0.0.0.0 PORT=7878 RACK_ENV=development |
||||
|
||||
# throw errors if Gemfile has been modified since Gemfile.lock |
||||
RUN bundle config --global frozen 1 |
||||
|
||||
WORKDIR /app |
||||
|
||||
# to generate Gemfile.lock, run this in service dir: |
||||
# $ docker run --rm -v "$PWD":/app -w /app ruby:2.6.3 bundle install |
||||
COPY Gemfile Gemfile.lock /app/ |
||||
RUN bundle install |
||||
|
||||
COPY . /app |
||||
|
||||
WORKDIR /app/src |
||||
|
||||
CMD ["rerun", "-b", "--", "ruby", "./app.rb"] |
||||
#CMD ["ruby", "./app.rb"] |
@ -0,0 +1,11 @@ |
||||
source 'https://rubygems.org' |
||||
|
||||
gem 'thin' |
||||
gem 'sinatra' |
||||
gem 'sinatra-contrib' |
||||
gem 'prawn', '2.2.2' |
||||
gem 'prawn-templates', '0.1.1' |
||||
|
||||
group :development do |
||||
gem 'rerun' |
||||
end |
@ -0,0 +1,71 @@ |
||||
GEM |
||||
remote: https://rubygems.org/ |
||||
specs: |
||||
Ascii85 (1.0.3) |
||||
afm (0.2.2) |
||||
backports (3.15.0) |
||||
daemons (1.3.1) |
||||
eventmachine (1.2.7) |
||||
ffi (1.11.1) |
||||
hashery (2.1.2) |
||||
listen (3.1.5) |
||||
rb-fsevent (~> 0.9, >= 0.9.4) |
||||
rb-inotify (~> 0.9, >= 0.9.7) |
||||
ruby_dep (~> 1.2) |
||||
multi_json (1.13.1) |
||||
mustermann (1.0.3) |
||||
pdf-core (0.7.0) |
||||
pdf-reader (2.2.0) |
||||
Ascii85 (~> 1.0.0) |
||||
afm (~> 0.2.1) |
||||
hashery (~> 2.0) |
||||
ruby-rc4 |
||||
ttfunk |
||||
prawn (2.2.2) |
||||
pdf-core (~> 0.7.0) |
||||
ttfunk (~> 1.5) |
||||
prawn-templates (0.1.1) |
||||
pdf-reader (~> 2.0) |
||||
prawn (~> 2.2) |
||||
rack (2.0.7) |
||||
rack-protection (2.0.5) |
||||
rack |
||||
rb-fsevent (0.10.3) |
||||
rb-inotify (0.10.0) |
||||
ffi (~> 1.0) |
||||
rerun (0.13.0) |
||||
listen (~> 3.0) |
||||
ruby-rc4 (0.1.5) |
||||
ruby_dep (1.5.0) |
||||
sinatra (2.0.5) |
||||
mustermann (~> 1.0) |
||||
rack (~> 2.0) |
||||
rack-protection (= 2.0.5) |
||||
tilt (~> 2.0) |
||||
sinatra-contrib (2.0.5) |
||||
backports (>= 2.8.2) |
||||
multi_json |
||||
mustermann (~> 1.0) |
||||
rack-protection (= 2.0.5) |
||||
sinatra (= 2.0.5) |
||||
tilt (>= 1.3, < 3) |
||||
thin (1.7.2) |
||||
daemons (~> 1.0, >= 1.0.9) |
||||
eventmachine (~> 1.0, >= 1.0.4) |
||||
rack (>= 1, < 3) |
||||
tilt (2.0.9) |
||||
ttfunk (1.5.1) |
||||
|
||||
PLATFORMS |
||||
ruby |
||||
|
||||
DEPENDENCIES |
||||
prawn (= 2.2.2) |
||||
prawn-templates (= 0.1.1) |
||||
rerun |
||||
sinatra |
||||
sinatra-contrib |
||||
thin |
||||
|
||||
BUNDLED WITH |
||||
1.17.2 |
@ -0,0 +1,111 @@ |
||||
require 'sinatra' |
||||
require 'sinatra/json' |
||||
require 'json' |
||||
|
||||
require_relative 'lib/cache' |
||||
require_relative 'lib/pdf' |
||||
require_relative 'lib/data' |
||||
|
||||
use Rack::Logger |
||||
set :bind, ENV['HOST'] |
||||
set :port, ENV['PORT'] |
||||
|
||||
CACHE = Mu::Cache.new :max_size => 128, :max_time => 30.0 |
||||
DATA = CharredData.load_data |
||||
|
||||
helpers do |
||||
def logger |
||||
request.logger |
||||
end |
||||
end |
||||
|
||||
get '/' do |
||||
erb :index |
||||
end |
||||
|
||||
get /\/([\w]+)_partial/ do |
||||
partial = params['captures'].first |
||||
erb "partials/#{partial}".to_sym |
||||
end |
||||
|
||||
get '/namegen/:gender' do |
||||
if params['gender'] == 'female' |
||||
['Ada', 'Belle', 'Carmen', 'Desdemona', 'Edie'].sample |
||||
elsif params['gender'] == 'male' |
||||
['Agamemnon', 'Beren', 'Cadwalader', 'Dro', 'Edgar'].sample |
||||
end |
||||
end |
||||
|
||||
get '/skills' do |
||||
json DATA[:skills] |
||||
end |
||||
|
||||
get '/traits' do |
||||
json DATA[:traits] |
||||
end |
||||
|
||||
get '/lifepaths/:stock' do |
||||
if DATA[:stocks].include? params['stock'] |
||||
json DATA[:lifepaths][params['stock']] |
||||
else |
||||
404 |
||||
end |
||||
end |
||||
|
||||
get '/starting_stat_pts/:stock' do |
||||
if DATA[:stocks].include? params['stock'] |
||||
json DATA[:stat_pts][params['stock']] |
||||
else |
||||
404 |
||||
end |
||||
end |
||||
|
||||
get '/resources/:stock' do |
||||
if DATA[:stocks].include? params['stock'] |
||||
json DATA[:resources][params['stock']] |
||||
else |
||||
404 |
||||
end |
||||
end |
||||
|
||||
post '/charsheet' do |
||||
request.body.rewind |
||||
raw = request.body.readpartial(16 * 1024) |
||||
data = JSON.parse(raw) |
||||
key = "char-#{Time.now.strftime('%Y%m%d%H%M%S%L')}-#{rand(1...10000)}" |
||||
CACHE.store key, data |
||||
|
||||
"/get_file?file=#{key}&download_name=#{data['name']} Character Sheet.pdf" |
||||
end |
||||
|
||||
post '/upload_charfile' do |
||||
data = params['charfile']['tempfile'].read |
||||
erb '<html><body><pre><%= char %></pre></body></html>', :locals => {:char => data} |
||||
end |
||||
|
||||
post '/download_charfile' do |
||||
request.body.rewind # in case someone already read it |
||||
raw = request.body.readpartial(16 * 1024) |
||||
data = JSON.parse(raw) |
||||
key = "char-#{Time.now.strftime('%Y%m%d%H%M%S%L')}-#{rand(1...10000)}" |
||||
CACHE.store key, data |
||||
|
||||
"/get_file?file=#{key}&download_name=#{data['name']} Character Sheet.char" |
||||
end |
||||
|
||||
get '/get_file' do |
||||
data = nil |
||||
if params['download_name'].match(/\.pdf$/) |
||||
content_type 'application/pdf' |
||||
data = CACHE.delete(params['file']) |
||||
if data |
||||
cs = CharSheet.new(data) |
||||
data = cs.render(logger) |
||||
end |
||||
else |
||||
content_type 'application/octet-stream' |
||||
data = JSON.dump CACHE.delete(params['file']) |
||||
end |
||||
attachment params['download_name'] |
||||
data |
||||
end |
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,971 @@ |
||||
{ |
||||
"Wild Pack Setting": { |
||||
"Born To The Pack": { |
||||
"time": 1, |
||||
"res": 0, |
||||
"leads": [ |
||||
"Captive" |
||||
], |
||||
"skills": [ |
||||
[ |
||||
2, |
||||
"Howling" |
||||
], |
||||
[ |
||||
2, |
||||
"General" |
||||
] |
||||
], |
||||
"traits": [ |
||||
2 |
||||
], |
||||
"common_traits": [ |
||||
"Crushing Jaws", |
||||
"Deep Fur", |
||||
"Great Lupine Form", |
||||
"Lupine Intellect", |
||||
"Long-legged", |
||||
"Wolf's Eyes", |
||||
"Wolf's Snout", |
||||
"Woodland Ear" |
||||
], |
||||
"key_leads": [ |
||||
"Captive Subsetting" |
||||
] |
||||
}, |
||||
"Yearling": { |
||||
"time": 1, |
||||
"res": 3, |
||||
"stat": [ |
||||
[ |
||||
1, |
||||
"p" |
||||
] |
||||
], |
||||
"leads": [ |
||||
"Captive", |
||||
"Outcast" |
||||
], |
||||
"skills": [ |
||||
[ |
||||
8, |
||||
"Pack Etiquette", |
||||
"Stealthy", |
||||
"Wolfish Hunting", |
||||
"Tracking", |
||||
"Foraging", |
||||
"Brawling" |
||||
] |
||||
], |
||||
"traits": [ |
||||
1 |
||||
], |
||||
"requires": "Wolves taking this lifepath must be 1 year old.", |
||||
"requires_expr": [ |
||||
"+and", |
||||
[ |
||||
"+age_less_than", |
||||
1.5 |
||||
], |
||||
[ |
||||
"born to the pack", |
||||
"last wolf" |
||||
] |
||||
], |
||||
"key_leads": [ |
||||
"Captive Subsetting", |
||||
"Outcast Subsetting" |
||||
] |
||||
}, |
||||
"Hunter": { |
||||
"time": 1, |
||||
"res": 3, |
||||
"stat": [ |
||||
[ |
||||
1, |
||||
"p" |
||||
] |
||||
], |
||||
"leads": [ |
||||
"Captive", |
||||
"Outcast" |
||||
], |
||||
"skills": [ |
||||
[ |
||||
7, |
||||
"Wolfish Hunting", |
||||
"Hoof-wise", |
||||
"Intimidation", |
||||
"Brawling", |
||||
"Begging", |
||||
"Scent-wise" |
||||
] |
||||
], |
||||
"traits": [ |
||||
1, |
||||
"Submissive" |
||||
], |
||||
"requires_expr": [ |
||||
"born to the pack", |
||||
"last wolf" |
||||
], |
||||
"key_leads": [ |
||||
"Captive Subsetting", |
||||
"Outcast Subsetting" |
||||
] |
||||
}, |
||||
"Dominant": { |
||||
"time": 1, |
||||
"res": 6, |
||||
"stat": [ |
||||
[ |
||||
1, |
||||
"m" |
||||
], |
||||
[ |
||||
1, |
||||
"p" |
||||
] |
||||
], |
||||
"leads": [ |
||||
"Captive", |
||||
"Outcast" |
||||
], |
||||
"skills": [ |
||||
[ |
||||
5, |
||||
"Intimidation", |
||||
"Command", |
||||
"Nursing", |
||||
"Brawling" |
||||
] |
||||
], |
||||
"traits": [ |
||||
1, |
||||
"Dominant" |
||||
], |
||||
"requires": "Yearling, Aunt, Unce, or Last Wolf.", |
||||
"note": "Only female dominants of 3 years or older may take the Nursing skill.", |
||||
"requires_expr": [ |
||||
"yearling", |
||||
"aunt", |
||||
"uncle", |
||||
"last wolf" |
||||
], |
||||
"key_leads": [ |
||||
"Captive Subsetting", |
||||
"Outcast Subsetting" |
||||
] |
||||
}, |
||||
"Aunt": { |
||||
"time": 0.5, |
||||
"res": 3, |
||||
"stat": [ |
||||
[ |
||||
1, |
||||
"pm" |
||||
] |
||||
], |
||||
"leads": [ |
||||
"Captive", |
||||
"Outcast" |
||||
], |
||||
"skills": [ |
||||
[ |
||||
4, |
||||
"Nursing", |
||||
"Pup-wise", |
||||
"Scavenging", |
||||
"Begging" |
||||
] |
||||
], |
||||
"traits": [ |
||||
1, |
||||
"Submissive" |
||||
], |
||||
"requires_expr": [ |
||||
"+and", |
||||
[ |
||||
"born to the pack", |
||||
"last wolf" |
||||
], |
||||
[ |
||||
"+sex", |
||||
"female" |
||||
] |
||||
], |
||||
"key_leads": [ |
||||
"Captive Subsetting", |
||||
"Outcast Subsetting" |
||||
] |
||||
}, |
||||
"Uncle": { |
||||
"time": 0.5, |
||||
"res": 3, |
||||
"stat": [ |
||||
[ |
||||
1, |
||||
"pm" |
||||
] |
||||
], |
||||
"leads": [ |
||||
"Captive", |
||||
"Outcast" |
||||
], |
||||
"skills": [ |
||||
[ |
||||
4, |
||||
"Rearing", |
||||
"Pup-wise", |
||||
"Scavenging", |
||||
"Begging" |
||||
] |
||||
], |
||||
"traits": [ |
||||
1, |
||||
"Submissive" |
||||
], |
||||
"requires_expr": [ |
||||
"+and", |
||||
[ |
||||
"born to the pack", |
||||
"last wolf" |
||||
], |
||||
[ |
||||
"+sex", |
||||
"male" |
||||
] |
||||
], |
||||
"key_leads": [ |
||||
"Captive Subsetting", |
||||
"Outcast Subsetting" |
||||
] |
||||
}, |
||||
"Elder": { |
||||
"time": 2, |
||||
"res": 3, |
||||
"stat": [ |
||||
[ |
||||
1, |
||||
"m" |
||||
] |
||||
], |
||||
"leads": [ |
||||
"Outcast" |
||||
], |
||||
"skills": [ |
||||
[ |
||||
7, |
||||
"Begging", |
||||
"Man-wise", |
||||
"Orc-wise", |
||||
"Elf-wise", |
||||
"Forest-wise" |
||||
] |
||||
], |
||||
"traits": [ |
||||
1, |
||||
"Submissive" |
||||
], |
||||
"requires_expr": [ |
||||
"+and", |
||||
[ |
||||
"born to the pack", |
||||
"last wolf" |
||||
], |
||||
[ |
||||
"+age_greater_than", |
||||
8.5 |
||||
] |
||||
], |
||||
"key_leads": [ |
||||
"Outcast Subsetting" |
||||
] |
||||
}, |
||||
"Last Wolf": { |
||||
"time": 0.5, |
||||
"res": 2, |
||||
"stat": [ |
||||
[ |
||||
1, |
||||
"m" |
||||
] |
||||
], |
||||
"leads": [ |
||||
"Captive", |
||||
"Outcast" |
||||
], |
||||
"skills": [ |
||||
[ |
||||
2, |
||||
"Begging", |
||||
"Pack Etiquette" |
||||
] |
||||
], |
||||
"traits": [ |
||||
2, |
||||
"Submissive", |
||||
"Stained" |
||||
], |
||||
"key_leads": [ |
||||
"Captive Subsetting", |
||||
"Outcast Subsetting" |
||||
] |
||||
} |
||||
}, |
||||
"Slave To The Legion Setting": { |
||||
"Born To The Legion": { |
||||
"time": 1, |
||||
"res": 0, |
||||
"leads": [ |
||||
"Captive" |
||||
], |
||||
"skills": [ |
||||
[ |
||||
2, |
||||
"Howling" |
||||
], |
||||
[ |
||||
2, |
||||
"General" |
||||
] |
||||
], |
||||
"traits": [ |
||||
1, |
||||
"Vile Language", |
||||
"Demented" |
||||
], |
||||
"common_traits": [ |
||||
"Crushing Jaws", |
||||
"Deep Fur", |
||||
"Great Lupine Form", |
||||
"Lupine Intellect", |
||||
"Long-legged", |
||||
"Wolf's Eyes", |
||||
"Wolf's Snout", |
||||
"Woodland Ear" |
||||
], |
||||
"key_leads": [ |
||||
"Captive Subsetting" |
||||
] |
||||
}, |
||||
"Caged And Beaten": { |
||||
"time": 0.5, |
||||
"res": 0, |
||||
"leads": [ |
||||
"Captive" |
||||
], |
||||
"skills": [ |
||||
[ |
||||
3, |
||||
"Pack Etiquette", |
||||
"Begging", |
||||
"Cage-wise" |
||||
] |
||||
], |
||||
"traits": [ |
||||
2, |
||||
"Submissive", |
||||
"Tasting The Lash", |
||||
"Deranged" |
||||
], |
||||
"key_leads": [ |
||||
"Captive Subsetting" |
||||
] |
||||
}, |
||||
"Shadow-chaser": { |
||||
"time": 1, |
||||
"res": 2, |
||||
"stat": [ |
||||
[ |
||||
1, |
||||
"p" |
||||
] |
||||
], |
||||
"skills": [ |
||||
[ |
||||
8, |
||||
"Stealthy", |
||||
"Tracking", |
||||
"Trail-wise", |
||||
"Orc-wise", |
||||
"Scavenging", |
||||
"Intimidation", |
||||
"Rider Training", |
||||
"Begging" |
||||
] |
||||
], |
||||
"traits": [ |
||||
1, |
||||
"Submissive", |
||||
"Tasting The Lash" |
||||
] |
||||
}, |
||||
"Wayward": { |
||||
"time": 0.5, |
||||
"res": 2, |
||||
"stat": [ |
||||
[ |
||||
1, |
||||
"m" |
||||
] |
||||
], |
||||
"leads": [ |
||||
"Outcast" |
||||
], |
||||
"skills": [ |
||||
[ |
||||
6, |
||||
"Wolfish Hunting", |
||||
"Foraging", |
||||
"Brawling", |
||||
"Stealthy", |
||||
"Howling", |
||||
"Escape Artist" |
||||
] |
||||
], |
||||
"traits": [ |
||||
1 |
||||
], |
||||
"requires": "Shadow-Chaser", |
||||
"requires_expr": [ |
||||
"shadow-chaser" |
||||
], |
||||
"key_leads": [ |
||||
"Outcast Subsetting" |
||||
] |
||||
}, |
||||
"Bitch": { |
||||
"time": 1, |
||||
"res": 4, |
||||
"skills": [ |
||||
[ |
||||
5, |
||||
"Nursing", |
||||
"Rearing", |
||||
"Pup-wise", |
||||
"Scavenging", |
||||
"Begging" |
||||
] |
||||
], |
||||
"traits": [ |
||||
1, |
||||
"Submissive" |
||||
], |
||||
"requires": "Must be at least 3 years old.", |
||||
"requires_expr": [ |
||||
"+and", |
||||
[ |
||||
"+age_greater_than", |
||||
2.5 |
||||
], |
||||
[ |
||||
"+sex", |
||||
"female" |
||||
] |
||||
] |
||||
}, |
||||
"Howling Beast": { |
||||
"time": 1, |
||||
"res": 1, |
||||
"stat": [ |
||||
[ |
||||
1, |
||||
"p" |
||||
] |
||||
], |
||||
"skills": [ |
||||
[ |
||||
7, |
||||
"Rider Training", |
||||
"Mounted Combat", |
||||
"Savage Attack", |
||||
"Intimidation" |
||||
] |
||||
], |
||||
"traits": [ |
||||
1, |
||||
"Howl Of Doom" |
||||
], |
||||
"requires": "Shadow-Chaser", |
||||
"requires_expr": [ |
||||
"shadow-chaser" |
||||
] |
||||
}, |
||||
"Black Destroyer": { |
||||
"time": 2, |
||||
"res": 2, |
||||
"stat": [ |
||||
[ |
||||
1, |
||||
"m" |
||||
], |
||||
[ |
||||
1, |
||||
"p" |
||||
] |
||||
], |
||||
"skills": [ |
||||
[ |
||||
4, |
||||
"Rider Training", |
||||
"Mounted Combat", |
||||
"Savage Attack" |
||||
] |
||||
], |
||||
"traits": [ |
||||
2, |
||||
"Intense Hatred", |
||||
"Great Cunning", |
||||
"Fearless", |
||||
"Cold-blooded", |
||||
"Brutality", |
||||
"Dominant", |
||||
"Submissive" |
||||
], |
||||
"requires": "Howling Beast or Ebon Tyrant", |
||||
"requires_expr": [ |
||||
"howling beast", |
||||
"ebon tyrant" |
||||
] |
||||
}, |
||||
"Ebon Tyrant": { |
||||
"time": 2, |
||||
"res": 6, |
||||
"stat": [ |
||||
[ |
||||
1, |
||||
"m" |
||||
], |
||||
[ |
||||
1, |
||||
"p" |
||||
] |
||||
], |
||||
"skills": [ |
||||
[ |
||||
5, |
||||
"Conspicuous", |
||||
"Command", |
||||
"Skirmish Tactics", |
||||
"Strategy" |
||||
] |
||||
], |
||||
"traits": [ |
||||
2, |
||||
"Dominant" |
||||
], |
||||
"requires": "Shadow-Chaser or Black Destroyer", |
||||
"requires_expr": [ |
||||
"shadow-chaser", |
||||
"black destroyer" |
||||
] |
||||
}, |
||||
"Dark Friend": { |
||||
"time": 3, |
||||
"res": 4, |
||||
"stat": [ |
||||
[ |
||||
1, |
||||
"m" |
||||
] |
||||
], |
||||
"leads": [ |
||||
"Outcast" |
||||
], |
||||
"skills": [ |
||||
[ |
||||
5, |
||||
"Stealthy", |
||||
"Tracking", |
||||
"Brawling", |
||||
"Rituals-wise", |
||||
"Poisons-wise" |
||||
] |
||||
], |
||||
"traits": [ |
||||
1, |
||||
"Obedient", |
||||
"Loyal", |
||||
"Fearless" |
||||
], |
||||
"requires": "Caged and Beaten", |
||||
"requires_expr": [ |
||||
"caged and beaten" |
||||
], |
||||
"key_leads": [ |
||||
"Outcast Subsetting" |
||||
] |
||||
} |
||||
}, |
||||
"Outcast Subsetting": { |
||||
"Lone Wolf": { |
||||
"time": 1, |
||||
"res": 3, |
||||
"stat": [ |
||||
[ |
||||
1, |
||||
"m" |
||||
] |
||||
], |
||||
"leads": [ |
||||
"Wild Pack", |
||||
"Captive", |
||||
"Spirit Hunter", |
||||
"Ghost Of The Deeping Wood" |
||||
], |
||||
"skills": [ |
||||
[ |
||||
4, |
||||
"Territory-wise", |
||||
"Pack-wise", |
||||
"Scavenging" |
||||
] |
||||
], |
||||
"traits": [ |
||||
1, |
||||
"Wanderlust" |
||||
], |
||||
"requires": "Yearling, Last Wolf, Captured, Wandering Lost, Ancient Journeyer, Wayward, or Dark Friend.", |
||||
"requires_expr": [ |
||||
"yearling", |
||||
"last wolf", |
||||
"captured and broken", |
||||
"wandering lost", |
||||
"ancient journeyer", |
||||
"wayward", |
||||
"dark friend" |
||||
], |
||||
"key_leads": [ |
||||
"Wild Pack Setting", |
||||
"Captive Subsetting", |
||||
"Spirit Hunter Subsetting", |
||||
"Ghost Of The Deeping Wood Subsetting" |
||||
] |
||||
}, |
||||
"Scavenger": { |
||||
"time": 1, |
||||
"res": 3, |
||||
"leads": [ |
||||
"Legion", |
||||
"Wild Pack", |
||||
"Captive" |
||||
], |
||||
"skills": [ |
||||
[ |
||||
5, |
||||
"Scent-wise", |
||||
"Village-wise", |
||||
"Dog-wise", |
||||
"Scavenging" |
||||
] |
||||
], |
||||
"traits": [ |
||||
1, |
||||
"Wolfish Scavenger" |
||||
], |
||||
"requires": "Lone Wolf, Captured and Broken, or Captured and Beaten", |
||||
"requires_expr": [ |
||||
"lone wolf", |
||||
"captured and broken", |
||||
"captured and broken" |
||||
], |
||||
"key_leads": [ |
||||
"Slave To The Legion Setting", |
||||
"Wild Pack Setting", |
||||
"Captive Subsetting" |
||||
] |
||||
} |
||||
}, |
||||
"Captive Subsetting": { |
||||
"Captured And Broken": { |
||||
"time": 0.5, |
||||
"res": 3, |
||||
"leads": [ |
||||
"Legion", |
||||
"Outcast" |
||||
], |
||||
"skills": [ |
||||
[ |
||||
3, |
||||
"Begging", |
||||
"Cage-wise", |
||||
"Man-wise" |
||||
] |
||||
], |
||||
"traits": [ |
||||
3, |
||||
"Broken Wolf", |
||||
"Submissive" |
||||
], |
||||
"key_leads": [ |
||||
"Slave To The Legion Setting", |
||||
"Outcast Subsetting" |
||||
] |
||||
} |
||||
}, |
||||
"Spirit Hunter Subsetting": { |
||||
"Spirit-chaser": { |
||||
"time": 1, |
||||
"res": 3, |
||||
"stat": [ |
||||
[ |
||||
1, |
||||
"p" |
||||
] |
||||
], |
||||
"leads": [ |
||||
"Outcast", |
||||
"Captive" |
||||
], |
||||
"skills": [ |
||||
[ |
||||
5, |
||||
"Primal Bark", |
||||
"Wolfish Hunting", |
||||
"The Way Of The First Hunter" |
||||
] |
||||
], |
||||
"traits": [ |
||||
1 |
||||
], |
||||
"requires": "Lone Wolf and the Chosen Wolf trait", |
||||
"requires_expr": [ |
||||
"+and", |
||||
[ |
||||
"lone wolf" |
||||
], |
||||
[ |
||||
"+trait", |
||||
"chosen wolf" |
||||
] |
||||
], |
||||
"key_leads": [ |
||||
"Outcast Subsetting", |
||||
"Captive Subsetting" |
||||
] |
||||
}, |
||||
"Spirit-howler": { |
||||
"time": 1, |
||||
"res": 4, |
||||
"stat": [ |
||||
[ |
||||
1, |
||||
"pm" |
||||
] |
||||
], |
||||
"skills": [ |
||||
[ |
||||
3, |
||||
"Ancestral Jaw" |
||||
] |
||||
], |
||||
"traits": [ |
||||
1 |
||||
], |
||||
"requires": "Spirit-Chaser", |
||||
"requires_expr": [ |
||||
"spirit-chaser" |
||||
] |
||||
}, |
||||
"Spirit-hunter": { |
||||
"time": 2, |
||||
"res": 6, |
||||
"stat": [ |
||||
[ |
||||
1, |
||||
"m" |
||||
], |
||||
[ |
||||
1, |
||||
"p" |
||||
] |
||||
], |
||||
"leads": [ |
||||
"Ghost Of The Deeping Wood" |
||||
], |
||||
"skills": [ |
||||
[ |
||||
3, |
||||
"Grandfather's Song" |
||||
] |
||||
], |
||||
"traits": [ |
||||
1, |
||||
"Spirit Nose" |
||||
], |
||||
"requires": "Spirit-Howler", |
||||
"requires_expr": [ |
||||
"spirit-howler" |
||||
], |
||||
"key_leads": [ |
||||
"Ghost Of The Deeping Wood Subsetting" |
||||
] |
||||
} |
||||
}, |
||||
"Ghost Of The Deeping Wood Subsetting": { |
||||
"Wandering Lost": { |
||||
"time": 0.5, |
||||
"res": 0, |
||||
"stat": [ |
||||
[ |
||||
1, |
||||
"m" |
||||
] |
||||
], |
||||
"leads": [ |
||||
"Spirit Hunter", |
||||
"Outcast" |
||||
], |
||||
"skills": [ |
||||
[ |
||||
2, |
||||
"Nature Of All Things" |
||||
] |
||||
], |
||||
"traits": [ |
||||
1 |
||||
], |
||||
"requires": "Last Wolf and Lone Wolf", |
||||
"requires_expr": [ |
||||
"+and", |
||||
[ |
||||
"last wolf" |
||||
], |
||||
[ |
||||
"lone wolf" |
||||
] |
||||
], |
||||
"key_leads": [ |
||||
"Spirit Hunter Subsetting", |
||||
"Outcast Subsetting" |
||||
] |
||||
}, |
||||
"Dire Haunt": { |
||||
"time": 1, |
||||
"res": 20, |
||||
"stat": [ |
||||
[ |
||||
1, |
||||
"m" |
||||
], |
||||
[ |
||||
1, |
||||
"p" |
||||
] |
||||
], |
||||
"skills": [ |
||||
[ |
||||
3, |
||||
"Tongue Of The Ancient One" |
||||
] |
||||
], |
||||
"traits": [ |
||||
2 |
||||
], |
||||
"requires": "Wandering Lost", |
||||
"requires_expr": [ |
||||
"wandering lost" |
||||
] |
||||
}, |
||||
"Ancient Journeyer": { |
||||
"time": 0.5, |
||||
"res": 0, |
||||
"stat": [ |
||||
[ |
||||
1, |
||||
"m" |
||||
] |
||||
], |
||||
"leads": [ |
||||
"Spirit Hunter", |
||||
"Outcast" |
||||
], |
||||
"skills": [ |
||||
[ |
||||
3, |
||||
"Ancient Ways" |
||||
] |
||||
], |
||||
"traits": [ |
||||
1 |
||||
], |
||||
"requires": "Last Wolf and Lone Wolf", |
||||
"requires_expr": [ |
||||
"+and", |
||||
[ |
||||
"last wolf" |
||||
], |
||||
[ |
||||
"lone wolf" |
||||
] |
||||
], |
||||
"key_leads": [ |
||||
"Spirit Hunter Subsetting", |
||||
"Outcast Subsetting" |
||||
] |
||||
}, |
||||
"Fell Ancient": { |
||||
"time": 2, |
||||
"res": 15, |
||||
"stat": [ |
||||
[ |
||||
1, |
||||
"m" |
||||
], |
||||
[ |
||||
1, |
||||
"p" |
||||
] |
||||
], |
||||
"skills": [ |
||||
[ |
||||
3, |
||||
"Ancient Ways" |
||||
] |
||||
], |
||||
"traits": [ |
||||
2, |
||||
"Reclusive", |
||||
"Calmly Paranoid", |
||||
"Odor Of Spirits" |
||||
], |
||||
"requires": "Ancient Journeyer", |
||||
"requires_expr": [ |
||||
"ancient journeyer" |
||||
] |
||||
}, |
||||
"Ghost Of The Wood": { |
||||
"time": 2, |
||||
"res": 10, |
||||
"stat": [ |
||||
[ |
||||
2, |
||||
"m" |
||||
] |
||||
], |
||||
"skills": [ |
||||
[ |
||||
6, |
||||
"Wolf-wise", |
||||
"Spirit-hunter-wise", |
||||
"Legion-wise", |
||||
"Path-wise", |
||||
"River-wise", |
||||
"Pack-wise" |
||||
], |
||||
[ |
||||
1, |
||||
"General" |
||||
] |
||||
], |
||||
"traits": [ |
||||
2, |
||||
"Preternaturally Calm", |
||||
"Watchful", |
||||
"Piercing Gaze", |
||||
"Stink Of The Ancient" |
||||
] |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,152 @@ |
||||
[ |
||||
{ |
||||
"name": "Shoddy Arms", |
||||
"rp": 5, |
||||
"type": "gear" |
||||
}, |
||||
{ |
||||
"name": "Dwarven Arms", |
||||
"rp": 20, |
||||
"type": "gear" |
||||
}, |
||||
{ |
||||
"name": "Shoddy Crossbow", |
||||
"rp": 6, |
||||
"type": "gear" |
||||
}, |
||||
{ |
||||
"name": "Dwarven Arbalest", |
||||
"rp": 20, |
||||
"type": "gear" |
||||
}, |
||||
{ |
||||
"name": "Dwarven-made Light Mail", |
||||
"rp": 9, |
||||
"type": "gear" |
||||
}, |
||||
{ |
||||
"name": "Dwarven-made Heavy Mail", |
||||
"rp": 10, |
||||
"type": "gear" |
||||
}, |
||||
{ |
||||
"name": "Dwarven-made Plated Mail", |
||||
"rp": 20, |
||||
"type": "gear" |
||||
}, |
||||
{ |
||||
"name": "Dwarven Mail", |
||||
"rp": 100, |
||||
"type": "gear" |
||||
}, |
||||
{ |
||||
"name": "Forge Mask", |
||||
"rp": 40, |
||||
"type": "gear" |
||||
}, |
||||
{ |
||||
"name": "Dwarven Shield", |
||||
"rp": 20, |
||||
"type": "gear" |
||||
}, |
||||
{ |
||||
"name": "Riding Mount Or Pack Animal", |
||||
"rp": 8, |
||||
"type": "gear" |
||||
}, |
||||
{ |
||||
"name": "Clothes", |
||||
"rp": 1, |
||||
"type": "gear" |
||||
}, |
||||
{ |
||||
"name": "Traveling Gear", |
||||
"rp": 1, |
||||
"type": "gear" |
||||
}, |
||||
{ |
||||
"name": "Sturdy Shoes", |
||||
"rp": 1, |
||||
"type": "gear" |
||||
}, |
||||
{ |
||||
"name": "Finery", |
||||
"rp": 5, |
||||
"type": "gear" |
||||
}, |
||||
{ |
||||
"name": "Chronicles", |
||||
"rp": 15, |
||||
"type": "gear" |
||||
}, |
||||
{ |
||||
"name": "Keg O' Nog", |
||||
"rp": 20, |
||||
"type": "gear" |
||||
}, |
||||
{ |
||||
"name": "Small Dwarven House", |
||||
"rp": 10, |
||||
"type": "property" |
||||
}, |
||||
{ |
||||
"name": "Large Dwarven House", |
||||
"rp": 15, |
||||
"type": "property" |
||||
}, |
||||
{ |
||||
"name": "A Dwarven Hall", |
||||
"rp": 30, |
||||
"type": "property" |
||||
}, |
||||
{ |
||||
"name": "A Graybeard's Hold", |
||||
"rp": 40, |
||||
"type": "property" |
||||
}, |
||||
{ |
||||
"name": "An Engineer's Hold", |
||||
"rp": 45, |
||||
"type": "property" |
||||
}, |
||||
{ |
||||
"name": "A Master Artificer's Hold", |
||||
"rp": 60, |
||||
"type": "property" |
||||
}, |
||||
{ |
||||
"name": "A Warden's Hold", |
||||
"rp": 75, |
||||
"type": "property" |
||||
}, |
||||
{ |
||||
"name": "A High Captain's Hold", |
||||
"rp": 90, |
||||
"type": "property" |
||||
}, |
||||
{ |
||||
"name": "A Prince's Hold", |
||||
"rp": 105, |
||||
"type": "property" |
||||
}, |
||||
{ |
||||
"name": "A Workshop", |
||||
"rp": 60, |
||||
"type": "property" |
||||
}, |
||||
{ |
||||
"name": "Dwarven Tools", |
||||
"rp": 10, |
||||
"type": "gear" |
||||
}, |
||||
{ |
||||
"name": "Shoddy Tools", |
||||
"rp": 5, |
||||
"type": "gear" |
||||
}, |
||||
{ |
||||
"name": "Carts And Baggage", |
||||
"rp": 15, |
||||
"type": "gear" |
||||
} |
||||
] |
@ -0,0 +1,176 @@ |
||||
[ |
||||
{ |
||||
"name": "Run Of The Mill Bow", |
||||
"type": "gear", |
||||
"rp": 5 |
||||
}, |
||||
{ |
||||
"name": "Run Of The Mill Arms", |
||||
"type": "gear", |
||||
"rp": 5 |
||||
}, |
||||
{ |
||||
"name": "Reinforced Leather", |
||||
"type": "gear", |
||||
"rp": 3 |
||||
}, |
||||
{ |
||||
"name": "Light Mail", |
||||
"type": "gear", |
||||
"rp": 6 |
||||
}, |
||||
{ |
||||
"name": "Heavy Mail", |
||||
"type": "gear", |
||||
"rp": 10 |
||||
}, |
||||
{ |
||||
"name": "Plated Mail", |
||||
"type": "gear", |
||||
"rp": 20 |
||||
}, |
||||
{ |
||||
"name": "Elven Armor", |
||||
"type": "gear", |
||||
"resources": [ |
||||
{ |
||||
"name": "Gambeson", |
||||
"rp": 9 |
||||
}, |
||||
{ |
||||
"name": "Reinforced Leather", |
||||
"resources": null, |
||||
"rp": 20 |
||||
}, |
||||
{ |
||||
"name": "Light Mail", |
||||
"resources": null, |
||||
"rp": 30 |
||||
}, |
||||
{ |
||||
"name": "Heavy Mail", |
||||
"rp": 40 |
||||
}, |
||||
{ |
||||
"name": "Plated Mail", |
||||
"rp": 75 |
||||
} |
||||
] |
||||
}, |
||||
{ |
||||
"name": "Elven Arms", |
||||
"type": "gear", |
||||
"rp": 15 |
||||
}, |
||||
{ |
||||
"name": "Elven Bow", |
||||
"type": "gear", |
||||
"rp": 25 |
||||
}, |
||||
{ |
||||
"name": "Elven Cloak", |
||||
"type": "gear", |
||||
"rp": 30 |
||||
}, |
||||
{ |
||||
"name": "Elven Steed", |
||||
"type": "gear", |
||||
"rp": 8 |
||||
}, |
||||
{ |
||||
"name": "Elven Clothes", |
||||
"type": "gear", |
||||
"rp": 2 |
||||
}, |
||||
{ |
||||
"name": "Elven Shoes", |
||||
"type": "gear", |
||||
"rp": 1 |
||||
}, |
||||
{ |
||||
"name": "Elven Finery", |
||||
"type": "gear", |
||||
"rp": 5 |
||||
}, |
||||
{ |
||||
"name": "Elven Rope", |
||||
"type": "gear", |
||||
"rp": 12 |
||||
}, |
||||
{ |
||||
"name": "Elven Bread", |
||||
"type": "gear", |
||||
"rp": 10 |
||||
}, |
||||
{ |
||||
"name": "Elven Mirrorwine", |
||||
"type": "gear", |
||||
"rp": 8 |
||||
}, |
||||
{ |
||||
"name": "Starlight", |
||||
"type": "gear", |
||||
"rp": 50 |
||||
}, |
||||
{ |
||||
"name": "Tome Of Lore", |
||||
"type": "gear", |
||||
"rp": 20 |
||||
}, |
||||
{ |
||||
"name": "Elven Instrument", |
||||
"type": "gear", |
||||
"rp": 6 |
||||
}, |
||||
{ |
||||
"name": "Personal Effects", |
||||
"type": "gear", |
||||
"rp": 1 |
||||
}, |
||||
{ |
||||
"name": "Elven Smithy", |
||||
"type": "property", |
||||
"rp": 50 |
||||
}, |
||||
{ |
||||
"name": "Artisan's Shop", |
||||
"type": "property", |
||||
"rp": 60 |
||||
}, |
||||
{ |
||||
"name": "Skill Tools", |
||||
"type": "gear", |
||||
"rp": 9 |
||||
}, |
||||
{ |
||||
"name": "Elven Ship", |
||||
"type": "gear", |
||||
"rp": 80 |
||||
}, |
||||
{ |
||||
"name": "Elven Land", |
||||
"type": "property", |
||||
"resources": [ |
||||
{ |
||||
"name": "Pastoral", |
||||
"rp": 20 |
||||
}, |
||||
{ |
||||