123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- os := import("os")
- json := import("json")
- fmt := import("fmt")
- //fpaths := import("fpaths")
- //objects := import("objects")
- html := import("html").Renderer()
- enum := import("enum")
- // DND5 specification for the RU.
- spec := {
- ru: {
- names : {
- system : "Подземелья и Драконы 5E",
- str: "Сила",
- dex: "Ловкость",
- con: "Телосложение",
- int: "Интеллект",
- wis: "Мудрость",
- cha: "Харизма",
- prof_bonus : "Бонус мастерства",
- prof: "Владение",
- modifier: "Модификатор"
- }
- }
- }
- calc_mod := func(x) {
- return int(x-10)/2
- }
- new_char_stat := func(stat){
- self := stat
- self.get_attr_mod = func(name){
- return int(self.attr[name]-10)/2
- }
- self.get_prof_bonus = func() {
- return int(self.level-1)/4 + 2
- }
- self.make_attr_table = func(){
- lang_name := "ru"
- lang_names := spec[lang_name].names
- trow := html.tr()
- for _, v in ["Атрибут", "Значение", "Модификатор"] {
- trow.add(html.td().body(v))
- }
- thead := html.thead().body(trow)
- lang_map := {}
- for k, v in self.attr {
- lang_name := lang_names[k]
- if lang_name {
- lang_map[lang_name] = v
- } else {
- lang_map[format("undefined(%q)", k)] = v
- }
- }
- lang := enum.sort(enum.keys(lang_map))
- tbody := html.tbody()
- for _, attr_lang_name in lang {
- v := lang_map[attr_lang_name]
- tr := html.tr().body(
- html.td().body(
- attr_lang_name
- ),
- html.td().body(
- v
- ),
- html.td().body(
- calc_mod(v)
- )
- )
- tbody.add(tr)
- }
- return html.table().body(
- thead,
- tbody
- )
- }
-
- self.make_base_table = func() {
- hrow := html.tr()
- for _, v in ["Название", "Значение"] {
- hrow.add(html.td().body(v))
- }
- thead := html.thead().body(hrow)
- values := {
- "Уровень": 1,
- "": 2
- }
- tbody := html.tbody().body()
- }
- return self
- }
- new := func(c) {
- self := {}
- self.context = c
- self.get_char_stat = func(name){
- stat_data := os.read_file(format(
- "%s/char/%s/stat.json",
- self.context.source_path, name
- ))
- if is_error(stat_data) {
- return stat_data
- }
- stat := json.decode(stat_data)
- return new_char_stat(stat.dnd5)
- }
- self.spec = spec
- return self
- }
- export new
|