Крафт
Материал из Мир Неронис
Содержание |
Общая концепция
Ремесла позволяют персонажам создавать вещи из составных частей. Делается это на основе так называемых рецептов, где описывается сама вещь и необходимые для нее компоненты. Каким образом это делается, описано ниже.
У персонажа может быть 2 крафта: основной (большой набор умешек) и дополнительный (набор меньше + штрафы при крафтинге). Крафт-скиллы персонаж получает за квест. Рецепт может требовать 1 или 2 крафт-скилла.
Рецепты при использовании запоминаются (на 1%), по мере работы с ним персонаж обучается этому рецепту. Наличие инструкции - бонус к шансу.
Уровни сложности рецепта: при минимальной сложности шанс удачной обработки достаточно большой и не требует особых навыков.
Компоненты для крафта задаются по имени, указываемом в рецепте. При этом компоненты обрабатываются по очереди, и необязательно присутствуют все целиком (но компоненту можно поставить флаг must_exist - тогда при начале крафта он обязательно должен быть).
По команде "выковать/сшить/смешать/сделать/etc список" показываются все запомненные рецепты соответствующего типа. Использовать их можно по номеру: "выковать #1". Незапомненные - по имени обжа с рецептом.
В качестве компонентов могут быть использованы:
- материал (любой обж с соответствующим полем, например, слитки)
- объект (только один внум)
- рецепт (только один внум)
- крафт-группа объектов, куда могут входить как нормальные объекты, так и сделанные по рецептам (каждому объекту и рецепту можно присвоить список условных крафт-групп, редактор для создания крафт-групп - CraftEdit)
- навык (персонажем используется автоматически, просто он должен быть)
ReEdit
Редактор рецептов - reedit. Создание, редактирование, удаление - всё аналогично oedit'у. К примеру, reedit create 2222 - создает рецепт с внумом 2222. Многие параметры рецепта схожи с параметром обжей (oedit), к примеру, тип объекта, v0-v4, уровень, и соответственно их задание аналогично oedit'у.
Команды ReEdit'а и поля рецептов
- name/имя - имя объекта после крафта (может включать в себя компоненты, например, "меч sword $R1_10", где 1ый компонент - металл)
- recipe/рецепт - английское наименование рецепта (пока не используется, но будет в списке рецептов для англо-предпочитающих). Компоненты НЕ
используются
- rusrecipe/русрецепт - русское наименование рецепта (отображается в списке по командам вроде "выковать список")
- short/шорт - падежи объетка после крафта (может включать компоненты)
- long/лонг - длинное описание (может включать компоненты)
- desc/описание - очень длинное описание Smile. Также с компонентами
- beginself - эха персонажу при начале крафта (компоненты + инструменты)
- beginothers - эха остальным при начале крафта
- echoself - эха персонажу после создания объекта (компоненты + инструменты + $P - скрафченный объект)
- echoothers - эха остальным в комнате после создания объекта (компоненты + инструменты + $P - скрафченный объект)
- material/материал - номер компонента, материал которого будет проставляться объекту
- maindecl/оснсклонение - номер компонента, род которого будет проставляться объекту. Если равно -1, то используется поле decl.
- decl/склонение - род объекта, если maindecl = -1
- difficulty/сложность - сложность использования рецепта. Таблица шансов:
сложность 1% 100% (процент владения навыком) ************************ * 0 | 75% 150% * * 1 | 50% 140% * * 2 | 25% 130% * * 3 | 20% 120% * * 4 | 10% 110% * * 5 | 1% 100% * * 6 | 1% 80% * * 7 | 1% 60% * * 8 | 1% 40% * * 9 | 1% 20% * * 10 | 1% 10% * * 15 | 1% 10% * ************************
- level/уровень - уровень рецепта - если персонаж ниже уровнем, он не сможет его использовать. Также уровень рецепта влияет на итоговый уровень скрафченного объекта.
- factor/коэффициент - коэффициент влияния (от 0 до 1) уровня рецепта на итоговый уровень (см. также компоненты)
- craftgroup - крафт-группа результирующего объекта (если он в дальнейшем тоже будет использоваться, как компонент, аналогично oedit'у)
- mattype - тип материала объекта (аналогично oedit'у)
- amount/количество - сколько объектов будет получаться за раз
- extra/экстра - аналогично oedit'у
- wear/слоты - аналогично oedit'у
- improvechance - аналогично oedit'у (шанс усилить объект, будет использоваться крафт-умениями)
- canwear/ограничения - аналогично oedit'у
- cancreate - похожее на canwear: кто может крафтить этот объект
- ed/экстрадеск, type/тип, аффекты/умения - все аналогично oedit'у
- instrument/инструмент - основной инструмент для крафта (должен быть в руке)
- additional/дополнительный - дополнительный инструмент (должен быть в комнате)
- inventory/инвентарный - флаговое поле инвентарных инструментов, которые должны быть у персонажа при крафте в инвентаре
- action/действие - то действие, которое персонаж должен выполнить для крафта объекта: выковать, сшить, смешать, сварить, etc.
- v0-v4 - аналогично oedit'у, за исключением того, что некоторые поля задаются формулами (см. ниже)
- component/компонент - расписано ниже, махинации с компонентами
- property/свойство - расписано ниже, махинации со свойствами объекта
- addoprog/добавить_опрог, deloprog/удалить_опрог - аналогично oedit'у - привязка obj-скриптов к скрафченным объектам.
Компоненты и команда component
Компоненты для крафта задаются командой component. Всего их может быть 10 штук - по номерам от 0 до 9
- component show - список компонентов
- component create <vnum> - создать компонент соответствующего номера
- component <vnum> delete - удалить компонент
- component <vnum> (show) - показать информацию о компоненте (show - необязательный параметр)
- component <vnum> name <engname> - английское имя компонента - используется при задании списка компонентов персонажем
- component <vnum> rusname <rusname> - русское имя компонента - аналогично
- component <vnum> type <type> - тип компонента: материал, объект, рецепт, крафт-группа, навык
- component <vnum> item <vnum|sn|material|group> - внум объекта/рецепта, навык, тип материала (слиток, пластина, доска, etc), название крафт-группы
- component <vnum> flags <flags> - флаги компонента:
- waste - компонент расходуется при крафте
- shpereaffect - компонент влияет на сферу заклинаний (набор заклинаний, разрешенных/запрещенных на объекте в зависимости от материала объекта)
- break_part - для материалов "по весу" - при неудачной обработке часть объекта теряется. Если флага нет - теряется весь объект
- condition - влияет на итоговый condition вещи
- addictive - для материалов "по весу" - если материала в объекте не хватает, можно использовать второй аналогичный объект
- echo_each - для материалов "поштучно" - эха при обработке очередных N объектов. Для "весовых" - по окончанию обработки всего объекта
- echo_part - для материалов "по весу" - при обработке части объекта
- difficulty - сложность обработки. Чем выше, тем больше нужен навык
- must_exist - при начале крафта этот компонент обязательно должен присутствовать
- component <vnum> quantity <count> - количество объектов этого типа. При quantity = 0 используется поле weight
- component <vnum> weight <weight> - минимальный вес компонента
- component <vnum> factor <factor> - коэффициент значимости (от 0 до 1) компонента при определении итогового уровня объекта.
Формула: obj_lvl = (k1*lvl1 + k2*lvl2 + ... + kn*lvln + k_рецепта*lvl_рецепта) / (k1 + k2 + ... + kn + k_рецепта). Если все коэффициенты - нули, то они все считаются за единицу. Помио этого на итоговый уровень влияет процент умения и параметр эффективность инструмента.
- component <vnum> ticks <ticks> - количество баттл-тиков (3 секунды), требуемых на обработку части этого компонента
- component <vnum> itempertick <items> - количество, обрабатываемое за один раз (за время, указанное в предыдущем поле)
Комполненты-материалы
У всех материалов (эт те обжи, у которых параметр mattype чему-нить равен, т.е. может использоваться как слиток, бревно, доска, etc.) есть параметр quality, что есть качество. Пока функциональности несет мало :).
Кроме этого у материалов есть размеры. Их пока 6 - высота, толщина, ширина, длина, размер, площадь. У каждого материала - свои' (один, два, или вообще никаких). Задаются в oedit/reedit соответственными командами. Там же написано, у каких материалов что есть.
В компонентах reedit-а, которые типа материал, можно задавать границы для применимых тут материалов.
> component 1 Компонент [1] - материал Имя: [ingot] Рус. имя: [слиток] Количество: [ 1] Вес: [ 10] Коэффициент: [ 1] Тип материала: [бревно] Высота: [ 15-39 ] (1.5-3.9 футов, 45-118 см.) Ширина: нет ограничений. Тиков: [ 1] Вес за раз: [ 0] Флаги: [waste break_part addictive echo_each difficulty must_exist] Эха персонажу: Ты обрабатываешь большой кусок $p1_1. Эха вокруг: нет (на адекватность примера не смотреть, это в стиле деревянного золота :)) > component 1 height 12 42 Границы установлены. > component 1 Компонент [1] - материал Имя: [ingot] Рус. имя: [слиток] Количество: [ 1] Вес: [ 10] Коэффициент: [ 1] Тип материала: [бревно] Высота: [ 12-42 ] (1.2-4.2 футов, 36-128 см.) Ширина: нет ограничений. Тиков: [ 1] Вес за раз: [ 0] Флаги: [waste break_part addictive echo_each difficulty must_exist] Эха персонажу: Ты обрабатываешь большой кусок $p1_1. Эха вокруг: нет
! Если обе границы нулевые, то подходит любой материал. Также материал с нулевым размером подходит под любой рецепт.
Параметры объекта и команда property
Некоторые значения объекта указываются посредством скриптовых формул. Сие есть:
- pierce, bash, slash, exotic: для брони (для объектов типа armor)
- hitroll, damroll, damage: для оружия. damage = средний урон, по которому высчитываются потом дайсы
- instrument - эффективность инструмента
- value0:
- LIGHT: v2 (длительность света)
- STAFF/WAND: v0 (уровень закла)
- FURNITURE: v3 (реген жизни)
- PILL/SCROLL/POTION: v0 (уровень закла)
- FOOD: v0 (наполнение желудка)
- value1:
- STAFF/WAND: v1-v2 (кол-во зарядов)
- FURNITURE: v4 (реген маны) (или наоборот Smile)
- FOOD: v1 (утоление голода)
- saves, saves_fortitude, saves_reflex, saves_will, weight и cost - как и было
Параметры, используемые в формулах: @level, @weight[N], @cost[N], @durable[N], @ac[N], @skill[N]
- @level: уровень объекта, который определяется по уровням компонента, исходя из их коэффициентов, а также - навыка крафта
- @weight[N] - вес первого объекта соответствующего компонента N
- @cost[N] - цена первого объекта компонента N
- @matcost[N] - цена материала, из которого сделан первый объект компонента N (из MatEdit)
- @durable[N] - прочность компонента N.
типовые значения: алмаз 100
адамантит 80
гранит 60
дуб 38
тисс 30
кипарис 18
- @ac[N] - могут быть использованы только в свойствах брони. В соответствующем свойстве - соответствующее значение поля материала.
среднее значение - 100, наибольшее - ~230
типовые значения: материал bash slash pierce exotic
адамантит 175 175 175 180
булат 130 175 180 135
алмаз 125 200 200 105
толстая кожа 70 90 20 105
кожа 65 85 60 105
- @skill[N] - процент владения навыком в компоненте N (соответственно этот компонент должен быть навыком)
Эхи и компоненты эх
При начале крафтинга персонажу показывается эха beginself, окружающим - beginothers. При завершении - echoself, echoothers. Также каждому компоненту можно задать эху echoself и echoothers, которая будет показываться по окончанию обработки этого компонента. В эхах можно указывать объекты, используемые в качестве компонентов (убедитесь, что у такого компонента есть флаг must_exist), материал, из которого состоят эти объекты (как существительное, так и прилагательное), инструменты (основной - в руке, дополнительный - в комнате, и инвентарные).
Для материала компонента (существительное): $rN_C, N - номер компонента, C - падеж
Для прилагательного: $RN_DC, N - номер, D - род (0 - средний, 1 - мужской, 2 - женский, 3 - множественное число), C - падеж
Вместо склонения также можно использовать символы 'p' и 'n' - это предыдущий и следующий род, соответственно. Например, нам нужно описать "мифрильную палку", палка - 1ый объект, мифрил - второй. Тогда это будет выглядеть, как "$R2_n3 $p1_3"
Для short-имени объекта-компонента: $pN_C, N - номер, C - падеж
Для инструментов:
- основное: $tmC, C - падеж
- дополнительное: $tsC
- инвентарное: $ti<название>$C - соответствующий инструмент указывается после $ti: hammer copper anvil rolling-pin brazier needle bellows nippers pliers cutter axe plane planer pincers ladle knife scissors saw tongs pick fishingpole forge
К примеру, $tihammer$5 - при наличии в инвентаре объекта "кузнечный молот" будет звучать как "кузнечном молоте"
Описания объекта и их компоненты
Описания задаются аналогично эхам, за исключением того, что в них не используются инструменты.
Приложения
Типы инструментов
- hammer - молот
- copper - котел
- anvil - наковальня
- rolling-pin - скалка
- brazier - жаровня
- needle - иголка
- bellows - меха
- nippers - кусачки
- pliers - плоскогубцы
- cutter - резец
- axe - топор
- plane - рубанок
- planer - станок
- pincers - щипцы
- ladle - половник
- knife - нож
- scissors - ножницы
- saw - пила
- tongs - клещи
- pick - кирка
- fishingpole - удочка
- forge - горн
Типы материалов
- ingot - слиток
- board - доска
- sewing - нитки
- log - бревно
- nail - гвоздь
- staple - скоба
- rope - веревка
- bolt - болт
- nut - гайка
- gem - самоцвет
- linen - полотно
- plate - пластина
- powder - порошок
- liquid - жидкость
- ore - руда
Пример рецепта
Имя: [$R0_10 кинжал с $p1_4 dagger gem]
Зона: [ 45] Конд
Номер: [ 4666]
Тип объекта: [weapon]
Уровень: [ 10]
Одежные слоты: [take wield]
Тип инструмента: [нет]
Эффективность: [0]
Тип материала: [нет]
Крафт-группы:
нет
Может одеть:
нет
Экстра флаги: [none]
Может создать:
нет
Основной компонент (материал): [0]
Основной компонент (склонение): [-1]
Сложность: [0]
Коэффициент: [0]
Действие: [выковать]
Инструмент: [молот]
Доп. инструмент: [наковальня]
Инвентарные инструменты: [клещи]
Навыки: [кузнечное_дело]
Основной компонент (склонение): [-1]
Вес: [@weight[0] + @weight[1]]
Цена: [100 + @cost[1] + (@cost[0] / 3)]
Шанс усиления: [ 100%]
Количество: [ 1]
Род: [male]
Название рецепта (eng):
dagger with gem
Название рецепта (rus):
кинжал с камнем
Короткое описание: $R0_10 кинжал с $p1_4
Nime: $R0_10 кинжал с $p1_4 Nrod: $R0_11 кинжала с $p1_4 Ndat: $R0_12 кинжалу с $p1_4
Nvin: $R0_13 кинжал с $p1_4 Ntvo: $R0_14 кинжалом с $p1_4 Npre: $R0_15 кинжале с $p1_4
Длинное описание:
Кинжал с клинком из $r0_1 и $p1_4 лежит неподалеку.
Описание:
Перед тобой неплохо сделанный $R0_10 кинжал с клинком длиной чуть меньше
фута. В его рукоятке сверкает $p1_0, вылавливая даже самые тусклые лучики
света. Рукоятка с причудливым изгибом так же, как и клинок, сделана из
$r0_1 и тщательно отполирована.
Эха персонажу (начало):
Ты берешь $p0_3 и начинаешь выковывать с помощью $tm1 кинжал.
Эха вокруг (начало):
$n берет $p0_3 и начинает выковывать с помощью $tm1 кинжал.
Эха персонажу (завершение):
Ты вставляешь в выкованную заготовку $p1_3 и получаешь $P3!
Эха вокруг (завершение):
$n вставляет в выкованную заготовку $p1_3 и получает $P3!
[v0] Тип оружия: dagger
Средний урон: 20
[v3] Тип повреждения: bite
[v4] Спецтип: sharp
Список компонентов:
vnum название тип штук вес коэффициент
[ 0] металл материал 1 20 1
[ 1] камень группа 1 0 1
OBJProg-сы:
Номер Vnum Триггер Аргумент
----- ----- ------- --------
[ 0] 4666 WEAR 100 ()
Компоненты
> comp show Список компонентов: vnum название тип штук вес коэффициент [ 0] металл материал 1 20 1 [ 1] камень группа 1 0 1
> comp 0 show Компонент [0] - материал. Имя: [metal]. Рус. имя: [металл]. Количество: [ 1]. Коэффициент: [ 1]. Тип материала: [слиток]. Тиков: [ 3]. Объектов за раз: [ 20]. Флаги: [waste break_part addictive must_exist]. Эха персонажу: нет Эха вокруг: нет
> comp 1 show Компонент [1] - группа. Имя: [gem]. Рус. имя: [камень]. Количество: [ 1]. Коэффициент: [ 1]. Группа: [драгоценный камень]. Тиков: [ 1]. Объектов за раз: [ 1]. Флаги: [waste must_exist]. Эха персонажу: нет Эха вокруг: нет
