2013-05-06 06:34:45 +03:00
|
|
|
|
#!/bin/env ruby
|
|
|
|
|
# encoding: utf-8
|
2013-04-30 06:30:48 +03:00
|
|
|
|
module Jekyll
|
2013-04-30 06:54:23 +03:00
|
|
|
|
class WeightTag < Liquid::Tag
|
2013-04-30 06:30:48 +03:00
|
|
|
|
def initialize(tag_name, text, tokens)
|
|
|
|
|
super
|
2013-04-30 06:54:23 +03:00
|
|
|
|
@weight = text.to_f
|
2013-04-30 06:30:48 +03:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def render(context)
|
2013-04-30 06:54:23 +03:00
|
|
|
|
strength = (@weight / 1.1).round
|
2013-04-30 06:30:48 +03:00
|
|
|
|
if (strength < 1) then strength = 1 end
|
2013-04-30 06:54:23 +03:00
|
|
|
|
return "Вес | #{@weight}\nМинимальная Сила | #{strength}"
|
2013-04-30 06:30:48 +03:00
|
|
|
|
end
|
|
|
|
|
end
|
2013-04-30 06:41:49 +03:00
|
|
|
|
class WeaponTag < Liquid::Tag
|
2013-04-30 06:30:48 +03:00
|
|
|
|
def dmg_min(dmg)
|
|
|
|
|
dmg.sub!(/(\d)d\d+/, '\1') #2d62 -> 2
|
|
|
|
|
dmg.sub!(/Рукопашный Урон|РУ/, '1')
|
|
|
|
|
if dmg.index('-') then
|
|
|
|
|
values = dmg.split('-')
|
|
|
|
|
if (values.at(0).to_i > values.at(1).to_i) then
|
|
|
|
|
return dmg.split('-').at(0).to_i
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
return eval(dmg).to_i
|
|
|
|
|
end
|
|
|
|
|
def dmg_max(dmg)
|
2013-04-30 06:41:49 +03:00
|
|
|
|
dmg.sub!(/(\d)d(\d+)/, '\1 * \2') #2d62 -> 62*2
|
2013-04-30 06:30:48 +03:00
|
|
|
|
dmg.sub!(/Рукопашный Урон|РУ/, '5')
|
|
|
|
|
if dmg.index('-') then
|
|
|
|
|
if (values.at(0).to_i > values.at(1).to_i) then
|
|
|
|
|
return dmg.split('-').at(1).to_i
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
return eval(dmg).to_i
|
|
|
|
|
end
|
2013-04-30 06:41:49 +03:00
|
|
|
|
end
|
|
|
|
|
class MeleeWeaponTag < WeaponTag
|
|
|
|
|
def initialize(tag_name, text, tokens)
|
|
|
|
|
super
|
|
|
|
|
values = text.split(',')
|
|
|
|
|
@AP_hit = values[0].to_i
|
|
|
|
|
@AP_aim = values[1].to_i
|
|
|
|
|
@dmg = values[2]
|
|
|
|
|
end
|
2013-04-30 06:30:48 +03:00
|
|
|
|
def render(context)
|
2013-04-30 06:56:38 +03:00
|
|
|
|
value = "ОД на удар | #{@AP_hit}\nОД на прицельный удар | #{@AP_aim}\nПовреждения | #{@dmg}\nДальность | 1\n"
|
2013-04-30 06:30:48 +03:00
|
|
|
|
fic_min = (10 / @AP_aim).round * dmg_min(@dmg.clone)
|
|
|
|
|
fic_max = (10 / @AP_hit).round * dmg_max(@dmg.clone)
|
|
|
|
|
value = value + "НЁХ (удар) | #{fic_min}-#{fic_max}"
|
2013-04-30 06:41:49 +03:00
|
|
|
|
return value
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
class ThrowingWeaponTag < WeaponTag
|
|
|
|
|
def initialize(tag_name, text, tokens)
|
|
|
|
|
super
|
|
|
|
|
values = text.split(',')
|
|
|
|
|
@AP_hit = values[0].to_i
|
|
|
|
|
@AP_aim = values[1].to_i
|
|
|
|
|
@dmg = values[2]
|
|
|
|
|
@distance = values[3]
|
|
|
|
|
end
|
|
|
|
|
def render(context)
|
|
|
|
|
value = "ОД на бросок | #{@AP_hit}\nОД на прицельный бросок | #{@AP_aim}\nПовреждения (бросок) | #{@dmg}\n"
|
|
|
|
|
if (@distance) then value = value + "Эффективная дальность (бросок) | #{@distance}\n" end
|
|
|
|
|
fic_min = (10 / @AP_aim).round * dmg_min(@dmg.clone)
|
|
|
|
|
fic_max = (10 / @AP_hit).round * dmg_max(@dmg.clone)
|
|
|
|
|
value = value + "НЁХ (бросок) | #{fic_min}-#{fic_max}"
|
|
|
|
|
return value
|
2013-04-30 06:30:48 +03:00
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2013-04-30 06:54:23 +03:00
|
|
|
|
Liquid::Template.register_tag('weight', Jekyll::WeightTag)
|
2013-04-30 06:30:48 +03:00
|
|
|
|
Liquid::Template.register_tag('melee', Jekyll::MeleeWeaponTag)
|
2013-04-30 06:41:49 +03:00
|
|
|
|
Liquid::Template.register_tag('throwing', Jekyll::ThrowingWeaponTag)
|