Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - dub

Страницы: [1] 2 3 ... 14
1
Моддинг / Re: Раса роботов
« : 28 Декабря 2012, 17:46:26 »
Цитировать
Электронный газ можно ко всему прочему сделать токсичным
Есть идеи как ещё сделать субстанцию, выливающуюся из проводов-вен роботов, опасной для живых существ? Токсичность - по-моему оптимальна (приходят же мегачудовища со всякими токсичными плевками). Или я не правильно понял и всё это реализуется через синдромы?

Токсичность реализуется через Syndrome как раз. Синдром же, суть, список операций (потерять сознание, модифицировать существо, вызвать кровотечение или некроз и т.п.) применяемых к существу. Синдром можно заполучить через Interaction (взаимодействия), которые могут быть как через дыхание, прикосновение, заражение, так и всякими некромантскими способами (люое тело в рамках видимости и тп)

2
Моддинг / Re: Раса роботов
« : 27 Декабря 2012, 11:41:05 »
ибо сердечник можно достать и вставить в нового робота (т.е. таким способом они могут размножатся)

тут одна из двух ключевых проблем:
1) питание
2) размноженеи

Я не знаю как научить роботов есть ТОЛЬКО определенный вид пищи (топливо, атомные ячейки и пр.). Могу только отучить их есть. Тогда любой алкоголь будем считать топливом (он же огнеопасен).

Я не знаю, как создавать новых существ при помощи реакций. Доступны только размножение или миграция.

p.s. вообще, есть мысли по поводу киборгизации захваченных существ, но там хоть как-то можно выкрутиться синдромами: заменить материал костей на металл, части тел вообще убрать/добавить (окуляры, манипуляторы).

3
Моддинг / Re: Раса роботов
« : 24 Декабря 2012, 18:32:08 »
Продолжаю оставлять заметки. В определении "слоя" тела (TISSUE) есть несколько интересных тегов (http://dwarffortresswiki.org/index.php/DF2012:Tissue_definition_token):

1) тег отвечающий за скорость излечения HEALING_RATE. Известные значения:
1 - все составные части гидры
100 - стандартное время лечения кожи, жира, мускулов и прочих "гибких" субстанций
1000 - стандартное время лечения костей, чешуи, панциря и пр.

если этот тег не задавать, то часть тела из такого материала лечиться не будет вообще (например мозг)

2) VASCULAR отвечает за "силу" кровотечения, если повредить часть тела состоящую из такого материала. Известные значения:
1 - хитин, кожа, чешуя
3 - кости, жир, глаза, нервы, мозг, кишки, желудок, губка
5 - мышцы, селезенка
8 - легкие, печень, почки
10 - сердце

Т.е. 1 - самое слабое кровотечение, 10 - самое сильное. Теоретически можно попробовать поставить и больше и захлестать все кровью (проверить значения большие 10). Этот токен можно использовать для, например, гидравлических или смазочных шлангов.

Так же есть связанный тег VASCULAR_ONLY для взаимодействий (яды, болезни и пр.), означающий, что они могут подействовать только при попадании в слои с тегом VASCULAR. Конечно, классами реакций такое можно перекрыть, но так же можно создать и специальные "болезни", например "засорение маслопровода" или "течь гидравлического шланга".

Есть еще токен MAJOR_ARTERIES, который работает независимо от предыдущих органов. Указывает на то, что в данной части тела есть "главные артерии" и если эту часть тела повредить, вызывает кровотечение. Судя по тому, что этот токен добавляется сердцу и горлу, повреждение этой части тела вызывает такие кровотечения, которые очень трудно остановить и которые могут привести к смерти от кровотечения.

3) слои с пометкой THICKENS_ON_STRENGTH или THICKENS_ON_ENERGY_STORAGE увеличивают свою толщину, когда создание становится сильнее или много жрет. Т.е. отвечают за нарастание мышечной или жировой массы.

В случае роботов можно использовать, например, для увеличения толщины брони или каркаса, когда робот (в результате тренировок и пр.) становится сильнее.

4) токен ARTERIES помечает части тела, которые при режущей атаке могут быть повреждены и повысят кровотечение.

Однозначно для гидравлических шлангов!

5) токен SCARS разрешает появление в описании существа шрамов, остающихся после исцеления. Сойдет для оптики и брони.

6) токен CONNECTIVE_TISSUE_ANCHOR помечает материал связок и сухожилий. Повреждение ведет к отключению конечностей.

Годно для шарниров и гидравлики.

7) токены SETTABLE и SPLINTABLE помечают материалы, части тела из которых должны быть вылечены либо путем вправления суставов, либо путем наложения гипса/шины.

Последнее, однозначно для роботов НЕ подходит. Ну где вы видели робота в гипсе? А вот вправление... Скажем, тот же шарнир повредили, что привело к отключению конечности. А в ремонтном цехе (больнице), этот шарнир просто вправили обратно.

8) если пометить материал органа токеном FUNCTIONAL, то он перестанет работать, если этому органу нанести достаточно много повреждений (глаза, легкие, сердце и т.п.) Если НЕ помечать, то орган можно вывести из строя только полным его разрушением.

9) токен MUSCULAR помечает мышцы. Если их повредить, то можно нарушить работу конечности.

10) INSULATION задает силу теплоизоляции. Всюду применяется для волосяного покрова, который, по идее защищает от холода. Чем выше значение, тем лучше сохраняется тепло. Стандартные значения:
10 - волосяной покров трубкозуба (очень теплолюбивое животное)
100 - стандартная кожа, жир и волосяной покров
200 - значения для шерсти животных (кролики, медведи и пр.)
300 - зимние животные (йети, ледяные волки и пр.)

По идее, роботам должно быть плевать на холод, но можно, например, имитировать проблемы с загустением жидкости в гидравлике.

11) токеном STYLEABLE можно пометить те материалы, которые могут влиять на внешность. В оригинале это касается частей лица и волос: длинные, короткие, круглые, разного цвета и формы и т.п.

У роботов это может быть что-то в духе "хромированное шасси", "скрежещущие шарниры", "мутные окуляры" и т.п. Обязательно использовать!

12) токен TISSUE_MAT_STATE указывает на агрегатное состояние слоя по умолчанию (твердое, жидкое или газообразное). Жидкой кровью заполнен Bloodman(кровавик) или Cave Blob(пещерный мешок) и газом Cave Floater (пещерный плавун).

Т.е. можно наполнить какой-нибудь баллон газом или жидкостью и при его повреждении все вокруг загадить (todo: проверить!)

Использовать необходимо совместно с токеном TISSUE_LEAKS, который вызывает утечки данного материала, если рассечены вышележащие слои.

Еще вариант использования: научить роботов взрываться. В самый центр тела поместить плазменный реактор и если тот оказывается пробит, то выпустить наружу очень горячую плазму.

4
Моддинг / Re: Раса роботов
« : 14 Сентября 2012, 13:23:37 »
Мастер ворк тебе в помощь там и турельки и масло и мины там все что тебе нужно есть и оружейная и химия и огнестрельное оружие и порох все что для твоей идеи нужно.

мастер-ворк знаю. но!

турели там - существа с тегом IMMOBILE, которые, тем не менее, ползают по земле
мины - точно такие же существа, просто с тонкой шкурой и взрывоопасными внутренностями
огнестрельное оружие - да есть. но таких модов и так хватает

а так- и оттуда тоже смотреть буду, конечно =)

5
Моддинг / Re: Идея: Мод Мейкер
« : 10 Сентября 2012, 12:38:23 »
вещь, похожая на то, что описывается:
http://www.bay12forums.com/smf/index.php?topic=103360.0

6
Моддинг / Re: Туториал: реакции
« : 18 Августа 2012, 08:43:03 »
Ага. Спасибо за уточнение: где-нибудь в примерах реакций уточню про это.

7
Моддинг / Re: Туториал: реакции
« : 18 Августа 2012, 00:55:02 »
Примеры реакций:

Тренировка навыков
зарезервировано

Изготовление еды
зарезервировано

Создание каменных кроватей
зарезервировано

Кремация ненужных вещей
зарезервировано

Разборка деревянных и каменных предметов обратно
зарезервировано

Работа с частями тел
Пример взят с офф форума. Две реакции, которые позволяют создавать строительные блоки из частей тел и случайное оружие из костей.
Тут, так же показано, как добавить новую мастерскую, но подробно я на ней останавливаться не буду. Разберу только реакции.

Мастерская (файл building_graveforge.txt):
building_graveforge
[OBJECT:BUILDING]

[BUILDING_WORKSHOP:GRAVEFORGE]
   [NAME:Graveforge]
   [WORK_LOCATION:2:2]
   [BUILD_LABOR:ARCHITECT]
   [BUILD_KEY:CUSTOM_ALT_G]
   [BLOCK:1:0:1:0]
   [BLOCK:2:0:0:0]
   [BLOCK:3:1:1:1]
   [DIM:3:3]
   [TILE:0:1:32:32:32]
   [TILE:0:2:32:233:32]
   [TILE:0:3:32:32:32]
   [COLOR:0:1:0:0:0:0:0:0:0:0:0]
   [COLOR:0:2:0:0:0:7:0:0:0:0:0]
   [COLOR:0:3:0:0:0:0:0:0:0:0:0]
   [TILE:1:1:32:32:32]
   [TILE:1:2:32:233:239]
   [TILE:1:3:32:233:32]
   [COLOR:1:1:0:0:0:0:0:0:0:0:0]
   [COLOR:1:2:0:0:0:7:0:0:7:0:0]
   [COLOR:1:3:0:0:0:7:0:0:0:0:0]
   [TILE:2:1:32:239:32]
   [TILE:2:2:32:233:233]
   [TILE:2:3:32:32:233]
   [COLOR:2:1:0:0:0:7:0:0:0:0:0]
   [COLOR:2:2:0:0:0:7:0:0:7:0:0]
   [COLOR:2:3:0:0:0:0:0:0:7:0:0]
   [TILE:3:1:32:239:32]
   [TILE:3:2:32:32:32]
   [TILE:3:3:233:233:233]
   [COLOR:3:1:0:0:0:7:0:0:0:0:0]
   [COLOR:3:2:0:0:0:0:0:0:0:0:0]
   [COLOR:3:3:7:0:0:7:0:0:7:0:0]
   [BUILD_ITEM:3:COFFIN:NONE:NONE:NONE]
   [BUILD_ITEM:1:SLAB:NONE:NONE:NONE]

Разрешить новую постройку и реакции (файл entity_default.txt):
[PERMITTED_BUILDING:GRAVEFORGE]
[PERMITTED_REACTION:CORPSEBLOCK]
[PERMITTED_REACTION:BONEWEAPON]

Сами реакции (файл reaction_graveforge.txt):
reaction_graveforge
[OBJECT:REACTION]

[REACTION:CORPSEBLOCK]
   [NAME:Turn Corpse to Blocks]
   [BUILDING:GRAVEFORGE:CUSTOM_C]
   [REAGENT:A:1:CORPSE:NONE:NONE:NONE][USE_BODY_COMPONENT]
   [PRODUCT:100:1:BLOCKS:NONE:GET_MATERIAL_FROM_REAGENT:A:NONE]
   [PRODUCT:50:1:BLOCKS:NONE:GET_MATERIAL_FROM_REAGENT:A:NONE]
   [PRODUCT:50:1:BLOCKS:NONE:GET_MATERIAL_FROM_REAGENT:A:NONE]
   [PRODUCT:50:1:BLOCKS:NONE:GET_MATERIAL_FROM_REAGENT:A:NONE]
   [SKILL:BUTCHER]

[REACTION:BONEWEAPON]
   [NAME:Turn Bones into a Weapon]
   [BUILDING:GRAVEFORGE:CUSTOM_W]
   [REAGENT:A:1:CORPSE:NONE:NONE:NONE][ANY_BONE_MATERIAL]
   [PRODUCT:100:1:WEAPON:NONE:GET_MATERIAL_FROM_REAGENT:A:NONE]
   [SKILL:BONECARVE]


[BUILDING:GRAVEFORGE:CUSTOM_C] - реакция проходит в мастерской GRAVEFORGE и для нее назначена горячая кнопка 'c'.

[REAGENT:A:1:CORPSE:NONE:NONE:NONE] - реагент называется A, подходят останки любого подтипа (CORPSE:NONE) и из любого материала (NONE:NONE).

[USE_BODY_COMPONENT] - реагент должен обязательно являться частью тела.

[ANY_BONE_MATERIAL] - реагент должен обязательно быть костью.

[PRODUCT:100:1:BLOCKS:NONE:GET_MATERIAL_FROM_REAGENT:A:NONE] - с вероятностью 100% получится 1 блок из материала, взятого у реагента A (GET_MATERIAL_FROM_REAGENT:A:NONE).

[PRODUCT:100:1:WEAPON:NONE:GET_MATERIAL_FROM_REAGENT:A:NONE] - с вероятностью 100% получится 1 случайное оружие (WEAPON:NONE) из материала, взятого у реагента A.

[SKILL:BUTCHER] - для этой реакции нужно обладать навыком мясника (BUTCHER), который в процессе реакции тренируется.

Скрины:



8
Моддинг / Re: Туториал: реакции
« : 18 Августа 2012, 00:52:07 »
Помещение в контейнер:
Для того, чтобы поместить продукт в контейнер необходимо:
1) Упомянуть в реагентах контейнер (который НЕ уничтожается в ходе реакции)
2) Указать продукту, в какой контейнер его надо поместить

Предположим, мы придумали реакцию, которая берет в качестве исходных реагентов 1 кость и пустую сумку, а в результате создает несколько костяных поделок и помещает их в сумку. Опишем такую реакцию:
[REACTION:BONE_CRAFTS_REACTION]
  [NAME:Make several bone crafts]
  [BUILDING:CRAFTSMAN:NONE]
  [REAGENT:A:1:CORPSE:NONE:NONE:NONE][ANY_BONE_MATERIAL]
  [REAGENT:B:1:BOX:NONE:NONE:NONE][BAG][PRESERVE_REAGENT]
  [PRODUCT:100:1:CRAFTS:NONE:GET_MATERIAL_FROM_REAGENT:A:NONE][PRODUCT_TO_CONTAINER:B]
  [PRODUCT:100:1:CRAFTS:NONE:GET_MATERIAL_FROM_REAGENT:A:NONE][PRODUCT_TO_CONTAINER:B]
  [PRODUCT:50:1:CRAFTS:NONE:GET_MATERIAL_FROM_REAGENT:A:NONE][PRODUCT_TO_CONTAINER:B]
  [PRODUCT:50:1:CRAFTS:NONE:GET_MATERIAL_FROM_REAGENT:A:NONE][PRODUCT_TO_CONTAINER:B]
  [PRODUCT:50:1:CRAFTS:NONE:GET_MATERIAL_FROM_REAGENT:A:NONE][PRODUCT_TO_CONTAINER:B]

А теперь разберем, что тут написано:

[REAGENT:A:1:CORPSE:NONE:NONE:NONE][ANY_BONE_MATERIAL] - реагент с именем A (это имя мы используем, чтобы указать какой материал должны скопировать продукты) должен быть частью тела (CORPSE:NONE), материал которого в самом реагенте не уточняется (NONE:NONE), но в дальнейшем идет пометка, что материал должен относиться к костям ([ANY_BONE_MATERIAL]).

[REAGENT:B:1:BOX:NONE:NONE:NONE][BAG][PRESERVE_REAGENT] - реагент с именем B (это имя мы используем, чтобы указать, в какой контейнер поместить продукты) имеющий общий тип контейнера (BOX:NONE), который конкретизируется до сумок ([BAG]) и НЕ должен уничтожаться в ходе реакции ([PRESERVE_REAGENT]). Последнее важно, потому что в противном случае контейнер будет уничтожен и изделия складывать будет некуда.

[PRODUCT:100:1:CRAFTS:NONE:GET_MATERIAL_FROM_REAGENT:A:NONE][PRODUCT_TO_CONTAINER:B] - с вероятностью 100% создается случайная поделка (CRAFTS:NONE), из материала унаследованного от реагента с именем A (GET_MATERIAL_FROM_REAGENT:A:NONE) и помещается в контейнер с именем B ([PRODUCT_TO_CONTAINER:B]).

Проделав обычные операции по добавлению реакции в игру (см. выше), получим следующую операцию в меню мастерской:


И такое содержимое сумки по завершению реакции:


Если нас не устраивает то, что была взята сумка с уже существующими предметами, то реагенту "сумка" надо добавить дополнительный токен [EMPTY].

Наследование материала:
Само наследование материала описано в предыдущем пункте про помещение продукта в контейнер. Однако там используется только одна из двух возможных форм наследования материала:
1) GET_MATERIAL_FROM_REAGENT:REAGENT_NAME:NONE
2) GET_MATERIAL_FROM_REAGENT:REAGENT_NAME:OPERATION_NAME

В первом случае материал наследуется у реагента с именем REAGENT_NAME и именно этот пример рассмотрен выше.

Второй вариант интереснее: он позволяет унаследовать не сам материал реагента, а производный от него материал. Поясню на примере: предположим мы взяли исходный жир оленя, обработали его и хотим получить уже не жир, а сало, но из того же оленя. Т.е. хотим у продукта получить не исходный материал "жир оленя", а производный материал "сало оленя". Похожие реакции в игре используются для выделки кож. Чтобы это заработало, необходимо:

* В исходном материале (жир, необработанная кожа и т.п.) указать токен с именем операции и идентификатором производного материала:

[MATERIAL_REACTION_PRODUCT:X:Y]
X - операция (например RENDER_MAT)
Y - токен материала (например LOCAL_CREATURE_MAT:TALLOW)

Итого, токен для получения сала из жира выглядит так:
[MATERIAL_REACTION_PRODUCT:RENDER_MAT:LOCAL_CREATURE_MAT:TALLOW]

* В самой реакции надо пометить реагент токеном [HAS_MATERIAL_REACTION_PRODUCT:RENDER_MAT], который укажет для какой операции (в нашем случае RENDER_MAT) в материале посмотреть токен производного материала (это и будет как раз тот самый LOCAL_CREATURE_MAT:TALLOW).

* Наконец, у продукта надо указать не только имя реагента, у которого брать материал, но и имя операции:
GET_MATERIAL_FROM_REAGENT:A:RENDER_MAT

Сама стандартная реакция по превращению жира в сало выглядит так:
[REACTION:RENDER_FAT]
   [NAME:render fat]
   [BUILDING:KITCHEN:CUSTOM_R]
   [REAGENT:A:1:GLOB:NONE:NONE:NONE][REACTION_CLASS:FAT][UNROTTEN][HAS_MATERIAL_REACTION_PRODUCT:RENDER_MAT]
   [PRODUCT:100:1:GLOB:NONE:GET_MATERIAL_FROM_REAGENT:A:RENDER_MAT]
   [SKILL:COOK]
   [AUTOMATIC]

В этой реакции так же используются интересные теги [REACTION_CLASS:FAT], [UNROTTEN], [SKILL:COOK] и [AUTOMATIC], которые рассмотрим позже.

Класс реакции:
Другая интересная возможность связана с использованием классов реакций. Допустим, мы хотим научиться изготавливать костяные гарпуны из костей животных. Но не из каких попало, а только из особо крупных и прочных костей: клыки саблезубых тигров, бивни мамонтов и т.п. В этом случае, мы можем пометить материал таких клыков/бивней/прочего тегом  [REACTION_CLASS:BIG_BONE]. Благодаря этому, в любой реакции, мы можем ограничить материал реагента только "крупными костями" если укажем после реагента токен REACTION_CLASS с точно таким же значением.

Собственно, в примере выше именно этот механизм и использовался, чтобы ограничить все органические материалы, только классом жиров ([REACTION_CLASS:FAT]) для реакции превращения жира в сало.

Вы можете этот тег использовать, например, чтобы пометить "эпические металлы, сплавы, кости мега тварей и т.п." и создать реакцию "Создать убер-оружие из эпического материала". То есть, по-сути, токен REACTION_CLASS позволяет создавать произвольные подмножества материалов для дальнейшего фильтрования материала реагентов по этим подмножествам.

Украшение:
Украшение/улучшение - еще один токен который может быть добавлен в реакцию наряду с реагентами и продуктами. Он имеет следующий вид:
[IMPROVEMENT:<probability>:<reagent name>:<improvement type>:<material token>]
<probability> - Вероятность улучшения в процентах (100 - гарантированно сработает). Для каждого из улучшений вероятность вычисляется независимо от остальных.

<reagent name> - Имя реагента, к которому должно быть применено улучшение. Очевидно, что такой реагент должен быть помечен тегом [PRESERVE_REAGENT], чтобы защитить реагент от уничтожения в ходе реакции. Сам реагент можно дополнительно пометить тегом [NOT_IMPROVED], если вы хотите украсить реагент, которые ранее вообще был без украшений.

<improvement type> - Тип улучшения. Допускаются следующие значения: COVERED (инкрустирован/усеян/декорирован), GLAZED (покрыт), RINGS_HANGING (украшен цепочками), BANDS (обмотан полосами), SPIKES (усеян шипами).

<material token> - Токен материала. Тут действуют точно такие же правила, что и для продуктов (см. выше): можно указать конкретный материал, а можно скопировать материал из другого реагента.

Предположим, мы хотим научиться покрывать кровати костяными шипами (отыгрываем дварфов-йогов или дфварфов-мазохистов). Тогда реакция может выглядеть так:
[REACTION:SPIKE_BED_REACTION]
   [NAME:Spike a bed]
   [BUILDING:CRAFTSMAN:NONE]
   [REAGENT:A:1:BED:NONE:NONE:NONE][PRESERVE_REAGENT][NOT_IMPROVED]
   [REAGENT:B:1:CORPSE:NONE:NONE:NONE][ANY_BONE_MATERIAL]
   [IMPROVEMENT:100:A:SPIKES:GET_MATERIAL_FROM_REAGENT:B:NONE]

[REAGENT:A:1:BED:NONE:NONE:NONE][PRESERVE_REAGENT][NOT_IMPROVED] - нужна НЕ украшенная ([NOT_IMPROVED]) кровать (в том числе любое другое украшение будет блокировать эту реакцию). Кровать в ходе работы сохраняется ([PRESERVE_REAGENT]).

[IMPROVEMENT:100:A:SPIKES:GET_MATERIAL_FROM_REAGENT:B:NONE] - гарантированно украшается реагент A шипами из материала реагента B.

В итоге получили такую кровать:


Следует отметить, что операция выполняется над ВСЕМ стеком костей, что печально.

Прочие токены:

[UNROTTEN] - указывается после имени реагента и говорит о том, что материал реагента не должен быть гнилым (касается органических материалов).

[FUEL] - для проведения реакции дополнительно требуется одна единица топлива (каменный или древесный уголь), либо не требуется, если реакция идет в постройке, работающей от магмы.

[SKILL:NAME] - для проведения реакции требуется включенный навык с именем NAME. В процессе реакции этот навык тренируется. Можно указать несколько навыков, но использоваться/тренироваться будет только один.

[AUTOMATIC] - реакция добавляется в очередь мастерской автоматически, как только становятся доступны все реагенты.

[ADVENTURE_MODE_ENABLED] - реакция доступна только в режиме приключения через x->create. Реагенты должны или находиться в руках, или лежать под ногами (в рюкзаке реагенты не воспринимаются).

9
Моддинг / Re: Туториал: реакции
« : 18 Августа 2012, 00:42:34 »
Добавляем продукты:

Продукты, это то, что остается после реакции. Их можно задать сколько угодно, поместить в контейнер и унаследовать материал исходного реагента. Так же у продуктов можно задать вероятность их образования.

Продукт описывается в общем виде следующим образом:
[PRODUCT:<probability>:<quantity>:<item token>:<material token>][...modifiers...]
<probability> - вероятность образования продукта в процентах, число от 1 до 100. 100 - продукт будет образовываться всегда. Вероятность каждого продукта считается независимо от остальных.

<quantity> - Количество продукта (обычно в штуках).

<item token> - Описание типа предмета, полный список которых доступен тут.

<material token> - Материал, из которого изготовлен продукт. Можно указать, как показано тут, или унаследовать материал от реагента. Наследование материала рассмотрим ниже.

[...modifiers...] - Несколько токенов, список которых можно посмотреть тут. Из них интерес представляют только два:

[PRODUCT_TO_CONTAINER:<id>] - помещает продукт в контейнер. В реагентах должен быть прописан контейнер с именем id и токеном [PRESERVE_REAGENT], чтобы этот контейнер не был уничтожен реакцией.

[PRODUCT_DIMENSION:<size>] - задать размер продукта. Применяется для "измеряемых" предметов: слитки, порошки, жидкости (150), ткани (10000) или нити (15000). В скобочках указан типичный размер. Этот тег нужен, когда из исходных реагентов может получиться больше или меньше материала, чем нужно.

Собираем все вместе:
[REACTION:STONE_WEAPON_REACTION]
  [NAME:Make stone weapon]
  [BUILDING:CRAFTSMAN:NONE]
  [REAGENT:A:1:BOULDER:NONE:INORGANIC:OBSIDIAN]
  [PRODUCT:50:1:WEAPON:ITEM_WEAPON_AXE_BATTLE:INORGANIC:OBSIDIAN]
  [PRODUCT:50:1:WEAPON:ITEM_WEAPON_MACE:INORGANIC:OBSIDIAN]

Здесь на вход идет одна глыба обсидиана, а на выходе может получиться 0-2 каменных орудия.

В итоге файл reaction_mymod.txt принимает вид:
reaction_mymod
[OBJECT:REACTION]

[REACTION:DUMMY_REACTION]
  [NAME:Play the ass]
  [BUILDING:SMELTER:NONE]

[REACTION:PEACE_REACTION]
  [NAME:Make peace not war]
  [BUILDING:SMELTER:NONE]
  [REAGENT:A:1:WEAPON:NONE:NONE:NONE]

[REACTION:STONE_WEAPON_REACTION]
  [NAME:Make stone weapon]
  [BUILDING:CRAFTSMAN:NONE]
  [REAGENT:A:1:BOULDER:NONE:INORGANIC:OBSIDIAN]
  [PRODUCT:50:1:WEAPON:ITEM_WEAPON_AXE_BATTLE:INORGANIC:OBSIDIAN]
  [PRODUCT:50:1:WEAPON:ITEM_WEAPON_MACE:INORGANIC:OBSIDIAN]

А в файле entity_default.txt появляются три строчки:
[PERMITTED_REACTION:DUMMY_REACTION]
[PERMITTED_REACTION:PEACE_REACTION]
[PERMITTED_REACTION:STONE_WEAPON_REACTION]

А в игре это выглядит так:

10
Моддинг / Re: Туториал: реакции
« : 17 Августа 2012, 15:31:29 »
Отступление:

Небольшой момент, подсмотренный в реакциях Генезис-мода. Время реакции, похоже, зависит от количества уничтожаемых реагентов / создаваемых продуктов. Именно поэтому в реакциях, которые созданы только для тренировки навыков (создается книжка, которая потом типа "читается" в библиотеке + сама "реакция" чтения требует определенный навык, который в итоге тренируется) реализован следующий механизм:

* реагент - книга по, скажем, столярному делу.
* продукт - такая же книга.

То есть исходная книга уничтожается и создается новая. Если бы мы просто поставили книге флаг "не уничтожается", то сама реакция происходила бы мгновенно. И, возможно, даже не тренировала бы навык.

11
Моддинг / Re: Туториал: реакции
« : 17 Августа 2012, 14:09:24 »
Добавляем реагенты:

Реагенты, это то, что необходимо для проведения реакции и необратимо уничтожается, после ее завершения. Уничтожение реагентов - поведение по умолчанию, но его можно отменить, пометив реагент специальным тегом (об этом ниже). Реагентов может быть сколько угодно.

Реагент описывается в общем виде следующим образом:
[REAGENT:<name>:<quantity>:<item token>:<material token>][...modifiers...]
<name> - Имя реагента, используемое внутри реакции. Оно может быть любым и уникальность имен реагентов требуется только в рамках одной реакции. Имя вам может понадобиться, чтобы указать, например, у какого реагента скопировать материал для продукта или в какой реагент (который является контейнером) поместить произведенный продукт.

<quantity> - Необходимое количество. Вообще говоря, разные виды реагентов, измеряются в разных единицах измерения (нити, жидкости, предметы и пр.), но для простейших случаев количество измеряется в штуках.

<item token> - Тип предмета реагента. Состоит из двух частей ITEM_TYPE:ITEM_SUBTYPE и позволяет нам выбрать, что же используется в качестве реагента. Если вас интересует общий класс предметов, то во второй части пишите NONE. Например WEAPON:NONE описывает вообще любое оружие. Полный список типов предметов смотрите тут

<material token> - Из какого материала изготовлен реагент. Тут можно подсмотреть, как описываются материалы. Если коротко, то у вас на выбор три способа:
* указать встроенный тип (WATER, MUD и т.п.)
* указать тип и подтип (INORGANIC:NAME, COAL:COKE и т.п.)
* указать категорию, тип и подтип (PLANT_MAT:PLANT_ID:MATERIAL_NAME и т.п.)
Разумеется, можно написать NONE, если вы не хотите конкретизировать тип или подтип. Например NONE:NONE - означает что реагент может быть вообще из чего угодно.

[...modifiers...] - Набор токенов, которые уточняют информацию о реагенте. Их список достаточно большой. Здесь упомяну только модификатор [PRESERVE_REAGENT] который сообщает, что этот реагент НЕ должен исчезать после реакции. Используется, например, для того, чтобы в мастерскую принесли бочку (как реагент) и поместили в нее продукт реакции. Естественно, такая бочка не должна исчезать.

Собираем все вместе:

[REACTION:PEACE_REACTION]
  [NAME:Make peace not war]
  [BUILDING:SMELTER:NONE]
  [REAGENT:A:1:WEAPON:NONE:NONE:NONE]
Эта реакция берет любое оружие WEAPON:NONE из любого материала NONE:NONE и... уничтожает его.

В итоге файл reaction_mymod.txt принимает вид:
reaction_mymod
[OBJECT:REACTION]

[REACTION:DUMMY_REACTION]
  [NAME:Play the ass]
  [BUILDING:SMELTER:NONE]

[REACTION:PEACE_REACTION]
  [NAME:Make peace not war]
  [BUILDING:SMELTER:NONE]
  [REAGENT:A:1:WEAPON:NONE:NONE:NONE]

А в файле entity_default.txt появляются уже две строчки:
[PERMITTED_REACTION:DUMMY_REACTION]
[PERMITTED_REACTION:PEACE_REACTION]


Сохраняем изменения, создаем новый мир, высаживаемся и наслаждаемся крайне миролюбивой реакцией "Миру мир":


p.s. Эта реакция может показаться крайне бестолковой (ничего не производится), но на самом деле, даже такая реакция может оказаться крайне полезной. Например для создания операции кремирования ненужных частей тел, что захламляют свалку, или для уничтожения одежды, оставшейся от очередного нашествия гоблинов.

12
Моддинг / Re: Раса роботов
« : 16 Августа 2012, 23:29:26 »
А как насчет газа в контейнере? Вот можно создавать любую жидкость в бочке, а газы? да еще и легко воспламеняюшие
 ;D

С производством жидкостей и газов есть определенные запарки. Разве что создать что-то очень быстро испаряющееся, взрывающееся.

13
Моддинг / Re: Раса роботов
« : 16 Августа 2012, 17:07:02 »
(смеясь) Кстати, идея, да: делать модули памяти из неважно чего (пусть это будут кремниевые  пластинки с напылением из меди, золота и платины) и... черепа :) Ну или просто трупа :) В самом деле, ну где брать свежие данные, если не из голов поверженных врагов :) Причём РАЗУМНЫХ врагов :) Тех, у кого при жизни были мозги :)
Роботы-канибаллы, ха! :))

Ага. Цепочка производства:
* make brain-memory cell (провода + стеклянный цилиндр + топливная ячейка + МОЗГ) -> empty brain memory-cell
* write metalcraft's upgrade program (empty brain memory-cell) -> metalcraft's upgrade brain memory-cell

А потом где-нить в описании прочитать, что эта самая brain-memory cell изготовлена из мозга какого-нибудь Deer (оленя) =)

14
Моддинг / Re: Раса роботов
« : 16 Августа 2012, 16:07:19 »
Мысль про разборку робота на кристаллы интересная и можно это обыграть, так, что сам кристалл многоразовый, но создается он из "мозга" робота. Т.е. если ты хочешь получить халявный кристалл для прокачки навыков, то будь добр для этого сначала пустить кого-то в расход =)

А перфокарты упоминаются лишь в том контексте, что у нас как-бы паропанк. Это может быть платиновая пластинка, стеклянный фото-лист и т.п.

15
Моддинг / Re: Раса роботов
« : 16 Августа 2012, 15:22:08 »
Подсмотрено из генезиса:

Парные реакции: написание тома-чтение тома. Создано два строения: скрипториум и либрариум. В первом пишутся тома по разным дисциплинам, а во втором эти тома читаются, повышая соответствующие навыки.

В случае расы роботов вместо книг могут быть некие диски или перфоленты, а сами операции могут называться "Загрузка данных о ...".

Здесь интересен момент ограничения прокачки навыков. В генезисе если есть книжка, то ее можно читать до посинения. Никакого расходования реагентов нет (не треплются книги). А вот для роботов можно добавить потребляемый дополнительный реагент: диск с данными и энергетическая ячейка, например. Есть топливо - качай навыки сколько хочешь.

Страницы: [1] 2 3 ... 14