1.7.0: костяной скакун, книга Духа крысы, турели, расход сфер в оссуарии

- Костяной скакун (necroBoneSteed): мотоцикл из костей, сухожилий и сосудов
  с черепом-циклопом вместо фары; своя модель (бандл necrobonesteed),
  ванильная система предмета-транспорта (necroBoneSteedPlaceable, предпросмотр
  при установке); топливо - кровавая сфера, одна сфера = полный бак; теги
  коллайдеров и шейдер копируются с ванильного мотоцикла; рецепт на верстаке,
  Подмастерье
- Книга Духа крысы: своя модель (бандл necrobooks) - чёрная кожа, светящийся
  узор со скелетом крысы и семиконечной звездой, ржавые уголки, ремешок
- Турели не стреляют по существам мода (питомцы, рой, змея)
- Гео-оссуарий тратит 1/10 прочности сферы на стак вместо целой сферы

В игре не проверено.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
AlexCube
2026-10-01 01:58:18 +03:00
co-authored by Claude Opus 5.5
parent f2dfeed126
commit 11db1116b0
15 changed files with 448 additions and 16 deletions
+29 -13
View File
@@ -172,58 +172,74 @@ necroSnakeSpirit,entityclasses,Entity,,,,Snake Spirit,,Schlangengeist,Espíritu
necroGeoOssuary,blocks,Block,,,,Geo-Ossuary,,Geo-Ossarium,Geo-osario,Géo-ossuaire,Geo-ossario,ジオ納骨堂,지오 납골당,Geo-ossuarium,Geo-ossário,Гео-оссуарий,Jeo-Kemiklik,地脉骨堂,地脈骨堂
necroGeoOssuaryDesc,blocks,Block,,,,"An ossuary of bones and skulls that draws stone and ore up from the depths and feeds on blood.
Put up to three resources into the mod slots: stone, coal, nitrate, iron or oil shale. The resource stays in its slot and decides what the matching output cell produces.
Every Blood Sphere in the fuel compartment turns into a full stack of one resource every 5-8 hours.
Every 5-8 hours each output cell yields a full stack of its resource and drains a tenth of a Blood Sphere's durability: one sphere lasts ten stacks.
Works anywhere, even underground.
Repair with bones.",,"Ein Beinhaus aus Knochen und Schädeln, das Stein und Erz aus der Tiefe holt und sich von Blut nährt.
Lege bis zu drei Ressourcen in die Mod-Plätze: Stein, Kohle, Salpeter, Eisen oder Ölschiefer. Die Ressource bleibt im Platz und bestimmt, was die zugehörige Ausgabezelle herstellt.
Jede Blutsphäre im Brennstofffach wird alle 5-8 Stunden zu einem vollen Stapel einer Ressource.
Alle 5-8 Stunden liefert jede Ausgabezelle einen vollen Stapel ihrer Ressource und verbraucht ein Zehntel der Haltbarkeit einer Blutsphäre: eine Sphäre reicht für zehn Stapel.
Funktioniert überall, auch unter der Erde.
Mit Knochen reparieren.","Un osario de huesos y calaveras que extrae piedra y mineral de las profundidades y se alimenta de sangre.
Coloca hasta tres recursos en las ranuras de mods: piedra, carbón, nitrato, hierro o esquisto bituminoso. El recurso permanece en su ranura y decide qué produce la celda de salida correspondiente.
Cada esfera de sangre del compartimento de combustible se convierte en una pila completa de un recurso cada 5-8 horas.
Cada 5-8 horas cada celda de salida produce una pila completa de su recurso y consume una décima parte de la durabilidad de una esfera de sangre: una esfera rinde diez pilas.
Funciona en cualquier lugar, incluso bajo tierra.
Se repara con huesos.","Un ossuaire d'os et de crânes qui tire la pierre et le minerai des profondeurs et se nourrit de sang.
Placez jusqu'à trois ressources dans les emplacements de mods : pierre, charbon, nitrate, fer ou schiste bitumineux. La ressource reste dans son emplacement et détermine ce que produit la case de sortie correspondante.
Chaque sphère de sang dans le compartiment à combustible devient une pile complète d'une ressource toutes les 5 à 8 heures.
Toutes les 5 à 8 heures, chaque case de sortie produit une pile complète de sa ressource et consomme un dixième de la durabilité d'une sphère de sang : une sphère suffit pour dix piles.
Fonctionne partout, même sous terre.
Se répare avec des os.","Un ossario di ossa e teschi che estrae pietra e minerale dalle profondità e si nutre di sangue.
Inserisci fino a tre risorse negli slot dei mod: pietra, carbone, nitrato, ferro o scisto bituminoso. La risorsa resta nel suo slot e decide cosa produce la casella di uscita corrispondente.
Ogni sfera di sangue nel vano del combustibile diventa una pila completa di una risorsa ogni 5-8 ore.
Ogni 5-8 ore ogni casella di uscita produce una pila completa della sua risorsa e consuma un decimo della durabilità di una sfera di sangue: una sfera basta per dieci pile.
Funziona ovunque, anche sottoterra.
Si ripara con le ossa.","骨と頭蓋骨でできた納骨堂。血を糧に、地の底から石と鉱石を引き上げる。
MODスロットに資源を3つまで入れる:石、石炭、硝石、鉄、オイルシェール。資源はスロットに残り、対応する出力マスで何を生み出すかを決める。
燃料スロットの血の球1つが、5~8時間ごとに資源1スタック分に変わる。
5~8時間ごとに各出力マスが資源1スタックを生み出し、血の球の耐久度を10分の1消費する。球1つで10スタック分。
どこでも動く。地下でも。
骨で修理する。","뼈와 해골로 만든 납골당. 피를 먹고 땅속 깊은 곳에서 돌과 광석을 끌어올린다.
모드 슬롯에 자원을 최대 세 개까지 넣는다: 돌, 석탄, 질산염, 철, 오일 셰일. 자원은 슬롯에 남아 대응하는 출력 칸에서 무엇을 만들지 정한다.
연료 칸의 피의 구슬 하나가 5~8시간마다 자원 한 묶음으로 바뀐다.
5~8시간마다 각 출력 칸이 자원 한 묶음을 만들고 피의 구슬 내구도의 10분의 1을 소모한다. 구슬 하나로 열 묶음.
어디서든 작동한다. 땅속에서도.
뼈로 수리한다.","Ossuarium z kości i czaszek, które wyciąga kamień i rudę z głębin i żywi się krwią.
Włóż do trzech surowców w sloty modów: kamień, węgiel, saletrę, żelazo lub łupek bitumiczny. Surowiec zostaje w slocie i decyduje, co wytwarza odpowiadające mu pole wyjściowe.
Każda krwawa sfera w przegródce na paliwo zamienia się w pełny stos jednego surowca co 5-8 godzin.
Co 5-8 godzin każde pole wyjściowe daje pełny stos swojego surowca i zużywa jedną dziesiątą wytrzymałości krwawej sfery: jedna sfera starcza na dziesięć stosów.
Działa wszędzie, nawet pod ziemią.
Naprawiane kośćmi.","Um ossário de ossos e crânios que extrai pedra e minério das profundezas e se alimenta de sangue.
Coloque até três recursos nos espaços de mods: pedra, carvão, nitrato, ferro ou xisto betuminoso. O recurso fica no espaço e decide o que a célula de saída correspondente produz.
Cada esfera de sangue no compartimento de combustível vira uma pilha completa de um recurso a cada 5-8 horas.
A cada 5-8 horas cada célula de saída produz uma pilha completa do seu recurso e gasta um décimo da durabilidade de uma esfera de sangue: uma esfera rende dez pilhas.
Funciona em qualquer lugar, até debaixo da terra.
Repara-se com ossos.","Оссуарий из костей и черепов: питается кровью и вытягивает из недр камень и руду.
В ячейки модификаций положите до трёх ресурсов: камень, уголь, селитру, железо или сланец. Ресурс остаётся в ячейке и задаёт, что производит соответствующая ячейка продукции.
Каждая кровавая сфера в отсеке топлива раз в 5-8 часов превращается в полный стак одного ресурса.
Раз в 5-8 часов каждая ячейка продукции выдаёт полный стак своего ресурса и тратит десятую часть прочности кровавой сферы: одной сферы хватает на десять стаков.
Работает где угодно, даже под землёй.
Чинится костями.","Kemik ve kafataslarından yapılmış, kanla beslenen ve derinlerden taş ile cevher çeken bir kemiklik.
Mod yuvalarına en fazla üç kaynak koy: taş, kömür, nitrat, demir veya bitümlü şist. Kaynak yuvasında kalır ve karşılık gelen çıktı hücresinin ne üreteceğini belirler.
Yakıt bölmesindeki her Kan Küresi 5-8 saatte bir, bir kaynağın tam yığınına dönüşür.
Her 5-8 saatte bir her çıktı hücresi kendi kaynağından tam bir yığın üretir ve bir Kan Küresi'nin dayanıklılığının onda birini harcar: bir küre on yığın yeter.
Her yerde çalışır, yer altında bile.
Kemikle onarılır.","由骨头与头骨筑成的骨堂,以血为食,从地底深处汲取石头与矿石。
在模组槽中放入最多三种资源:石头、煤、硝石、铁或油页岩。资源会留在槽中,并决定对应产出格产出什么。
燃料格中的每颗血之球每5-8小时变为一整组对应资源。
每5-8小时,每个产出格产出一整组对应资源,并消耗血之球十分之一的耐久:一颗血之球可产出十组。
可在任何地方运作,包括地下。
用骨头修理。","由骨頭與頭骨築成的骨堂,以血為食,從地底深處汲取石頭與礦石。
在模組槽中放入最多三種資源:石頭、煤、硝石、鐵或油頁岩。資源會留在槽中,並決定對應產出格產出什麼。
燃料格中的每顆血之球每5-8小時變為一整組對應資源。
每5-8小時,每個產出格產出一整組對應資源,並消耗血之球十分之一的耐久:一顆血之球可產出十組。
可在任何地方運作,包括地下。
用骨頭修理。"
xuiNecroGeoOssuary,UI,XUI,,,,Geo-Ossuary,,Geo-Ossarium,Geo-osario,Géo-ossuaire,Geo-ossario,ジオ納骨堂,지오 납골당,Geo-ossuarium,Geo-ossário,Гео-оссуарий,Jeo-Kemiklik,地脉骨堂,地脈骨堂
necroGeoOssuaryFuel,UI,XUI,,,,Blood Spheres,,Blutsphären,Esferas de sangre,Sphères de sang,Sfere di sangue,血の球,피의 구슬,Krwawe sfery,Esferas de sangue,Кровавые сферы,Kan Küreleri,血之球,血之球
necroGeoOssuaryEmpty,UI,Use Prompt,,,,{0} Open {1} ([DECEA3]Empty[-]),,{0} Öffnen {1} ([DECEA3]Leer[-]),{0} Abrir {1} ([DECEA3]Vacío[-]),{0} Ouvrir {1} ([DECEA3]Vide[-]),{0} Apri {1} ([DECEA3]Vuoto[-]),{0} 開く {1} ([DECEA3]空[-]),{0} 열기 {1} ([DECEA3]비어 있음[-]),{0} Otwórz {1} ([DECEA3]Pusto[-]),{0} Abrir {1} ([DECEA3]Vazio[-]),{0}: открыть ({1}) ([DECEA3]пусто[-]),{0} Aç {1} ([DECEA3]Boş[-]),{0} 打开 {1} ([DECEA3]空[-]),{0} 打開 {1} ([DECEA3]空[-])
necroGeoOssuaryHasItems,UI,Use Prompt,,,,{0} Open {1} ([D04040]Resources[-]),,{0} Öffnen {1} ([D04040]Ressourcen[-]),{0} Abrir {1} ([D04040]Recursos[-]),{0} Ouvrir {1} ([D04040]Ressources[-]),{0} Apri {1} ([D04040]Risorse[-]),{0} 開く {1} ([D04040]資源[-]),{0} 열기 {1} ([D04040]자원[-]),{0} Otwórz {1} ([D04040]Surowce[-]),{0} Abrir {1} ([D04040]Recursos[-]),{0}: открыть ({1}) ([D04040]Ресурсы[-]),{0} Aç {1} ([D04040]Kaynaklar[-]),{0} 打开 {1} ([D04040]资源[-]),{0} 打開 {1} ([D04040]資源[-])
necroBoneSteedPlaceable,items,Item,,,,Bone Steed,,Knochenross,Corcel de hueso,Destrier d'os,Destriero d'ossa,骨の駿馬,뼈 군마,Kościany rumak,Corcel de osso,Костяной скакун,Kemik At,骨骸坐骑,骨骸坐騎
necroBoneSteedPlaceableDesc,items,Item,,,,"A motorcycle grown from bones, sinew and veins, with a cyclops skull for a headlight. Place it to ride, pick it up to carry it.
Runs on Blood Spheres: one sphere fills the whole tank. Without blood it stalls like any other vehicle.",,"Ein Motorrad aus Knochen, Sehnen und Adern mit einem Zyklopenschädel als Scheinwerfer. Aufstellen zum Fahren, aufheben zum Mitnehmen.
Fährt mit Blutsphären: eine Sphäre füllt den ganzen Tank. Ohne Blut bleibt es stehen wie jedes andere Fahrzeug.","Una moto crecida de huesos, tendones y venas, con un cráneo cíclope como faro. Colócala para montar, recógela para llevarla.
Funciona con esferas de sangre: una esfera llena todo el depósito. Sin sangre se cala como cualquier otro vehículo.","Une moto faite d'os, de tendons et de veines, avec un crâne de cyclope en guise de phare. Posez-la pour rouler, ramassez-la pour l'emporter.
Fonctionne aux sphères de sang : une sphère remplit tout le réservoir. Sans sang, elle cale comme n'importe quel véhicule.","Una moto cresciuta da ossa, tendini e vene, con un teschio di ciclope come faro. Posizionala per guidarla, raccoglila per portarla con te.
Funziona a sfere di sangue: una sfera riempie tutto il serbatoio. Senza sangue si spegne come qualsiasi altro veicolo.","骨と腱と血管から育ったバイクで、ヘッドライトは単眼の頭蓋骨。置けば乗れ、拾えば持ち運べる。
燃料は血の球。球1つで満タンになる。血が尽きると他の乗り物と同じく止まる。","뼈와 힘줄과 혈관으로 자라난 오토바이로, 전조등은 외눈 해골이다. 놓으면 탈 수 있고, 주우면 들고 다닐 수 있다.
피의 구슬로 달린다. 구슬 하나로 연료통이 가득 찬다. 피가 떨어지면 다른 탈것처럼 멈춘다.","Motocykl wyrosły z kości, ścięgien i żył, z czaszką cyklopa zamiast reflektora. Postaw go, by jechać, podnieś, by zabrać ze sobą.
Jeździ na krwawych sferach: jedna sfera napełnia cały bak. Bez krwi gaśnie jak każdy inny pojazd.","Uma moto crescida de ossos, tendões e veias, com um crânio de ciclope como farol. Coloque-a para pilotar, pegue-a para levá-la.
Funciona com esferas de sangue: uma esfera enche o tanque inteiro. Sem sangue ela morre como qualquer outro veículo.","Мотоцикл, выросший из костей, сухожилий и сосудов, с черепом-циклопом вместо фары. Поставьте, чтобы ехать, подберите, чтобы нести с собой.
Ездит на кровавых сферах: одна сфера заполняет весь бак. Без крови глохнет, как любой транспорт.","Kemik, kiriş ve damarlardan büyümüş, farı tek gözlü bir kafatası olan bir motosiklet. Binmek için yerleştir, taşımak için al.
Kan Küreleriyle çalışır: bir küre bütün depoyu doldurur. Kan bitince her araç gibi stop eder.","一辆由骨头、肌腱与血管生长而成的摩托,车灯是一颗独眼头骨。放置即可骑乘,拾起即可携带。
以血之球为燃料:一颗血之球加满整个油箱。没有血就会像其他载具一样熄火。","一輛由骨頭、肌腱與血管生長而成的機車,車燈是一顆獨眼頭骨。放置即可騎乘,拾起即可攜帶。
以血之球為燃料:一顆血之球加滿整個油箱。沒有血就會像其他載具一樣熄火。"
necroBoneSteed,entityclasses,Entity,,,,Bone Steed,,Knochenross,Corcel de hueso,Destrier d'os,Destriero d'ossa,骨の駿馬,뼈 군마,Kościany rumak,Corcel de osso,Костяной скакун,Kemik At,骨骸坐骑,骨骸坐騎
1 Key File Type UsedInMainMenu NoTranslate KeepLoaded english Context / Alternate Text german spanish french italian japanese koreana polish brazilian russian turkish schinese tchinese
172 necroGeoOssuary blocks Block Geo-Ossuary Geo-Ossarium Geo-osario Géo-ossuaire Geo-ossario ジオ納骨堂 지오 납골당 Geo-ossuarium Geo-ossário Гео-оссуарий Jeo-Kemiklik 地脉骨堂 地脈骨堂
173 necroGeoOssuaryDesc blocks Block An ossuary of bones and skulls that draws stone and ore up from the depths and feeds on blood. Put up to three resources into the mod slots: stone, coal, nitrate, iron or oil shale. The resource stays in its slot and decides what the matching output cell produces. Every Blood Sphere in the fuel compartment turns into a full stack of one resource every 5-8 hours. Works anywhere, even underground. Repair with bones. An ossuary of bones and skulls that draws stone and ore up from the depths and feeds on blood. Put up to three resources into the mod slots: stone, coal, nitrate, iron or oil shale. The resource stays in its slot and decides what the matching output cell produces. Every 5-8 hours each output cell yields a full stack of its resource and drains a tenth of a Blood Sphere's durability: one sphere lasts ten stacks. Works anywhere, even underground. Repair with bones. Ein Beinhaus aus Knochen und Schädeln, das Stein und Erz aus der Tiefe holt und sich von Blut nährt. Lege bis zu drei Ressourcen in die Mod-Plätze: Stein, Kohle, Salpeter, Eisen oder Ölschiefer. Die Ressource bleibt im Platz und bestimmt, was die zugehörige Ausgabezelle herstellt. Jede Blutsphäre im Brennstofffach wird alle 5-8 Stunden zu einem vollen Stapel einer Ressource. Funktioniert überall, auch unter der Erde. Mit Knochen reparieren. Ein Beinhaus aus Knochen und Schädeln, das Stein und Erz aus der Tiefe holt und sich von Blut nährt. Lege bis zu drei Ressourcen in die Mod-Plätze: Stein, Kohle, Salpeter, Eisen oder Ölschiefer. Die Ressource bleibt im Platz und bestimmt, was die zugehörige Ausgabezelle herstellt. Alle 5-8 Stunden liefert jede Ausgabezelle einen vollen Stapel ihrer Ressource und verbraucht ein Zehntel der Haltbarkeit einer Blutsphäre: eine Sphäre reicht für zehn Stapel. Funktioniert überall, auch unter der Erde. Mit Knochen reparieren. Un osario de huesos y calaveras que extrae piedra y mineral de las profundidades y se alimenta de sangre. Coloca hasta tres recursos en las ranuras de mods: piedra, carbón, nitrato, hierro o esquisto bituminoso. El recurso permanece en su ranura y decide qué produce la celda de salida correspondiente. Cada esfera de sangre del compartimento de combustible se convierte en una pila completa de un recurso cada 5-8 horas. Funciona en cualquier lugar, incluso bajo tierra. Se repara con huesos. Un osario de huesos y calaveras que extrae piedra y mineral de las profundidades y se alimenta de sangre. Coloca hasta tres recursos en las ranuras de mods: piedra, carbón, nitrato, hierro o esquisto bituminoso. El recurso permanece en su ranura y decide qué produce la celda de salida correspondiente. Cada 5-8 horas cada celda de salida produce una pila completa de su recurso y consume una décima parte de la durabilidad de una esfera de sangre: una esfera rinde diez pilas. Funciona en cualquier lugar, incluso bajo tierra. Se repara con huesos. Un ossuaire d'os et de crânes qui tire la pierre et le minerai des profondeurs et se nourrit de sang. Placez jusqu'à trois ressources dans les emplacements de mods : pierre, charbon, nitrate, fer ou schiste bitumineux. La ressource reste dans son emplacement et détermine ce que produit la case de sortie correspondante. Chaque sphère de sang dans le compartiment à combustible devient une pile complète d'une ressource toutes les 5 à 8 heures. Fonctionne partout, même sous terre. Se répare avec des os. Un ossuaire d'os et de crânes qui tire la pierre et le minerai des profondeurs et se nourrit de sang. Placez jusqu'à trois ressources dans les emplacements de mods : pierre, charbon, nitrate, fer ou schiste bitumineux. La ressource reste dans son emplacement et détermine ce que produit la case de sortie correspondante. Toutes les 5 à 8 heures, chaque case de sortie produit une pile complète de sa ressource et consomme un dixième de la durabilité d'une sphère de sang : une sphère suffit pour dix piles. Fonctionne partout, même sous terre. Se répare avec des os. Un ossario di ossa e teschi che estrae pietra e minerale dalle profondità e si nutre di sangue. Inserisci fino a tre risorse negli slot dei mod: pietra, carbone, nitrato, ferro o scisto bituminoso. La risorsa resta nel suo slot e decide cosa produce la casella di uscita corrispondente. Ogni sfera di sangue nel vano del combustibile diventa una pila completa di una risorsa ogni 5-8 ore. Funziona ovunque, anche sottoterra. Si ripara con le ossa. Un ossario di ossa e teschi che estrae pietra e minerale dalle profondità e si nutre di sangue. Inserisci fino a tre risorse negli slot dei mod: pietra, carbone, nitrato, ferro o scisto bituminoso. La risorsa resta nel suo slot e decide cosa produce la casella di uscita corrispondente. Ogni 5-8 ore ogni casella di uscita produce una pila completa della sua risorsa e consuma un decimo della durabilità di una sfera di sangue: una sfera basta per dieci pile. Funziona ovunque, anche sottoterra. Si ripara con le ossa. 骨と頭蓋骨でできた納骨堂。血を糧に、地の底から石と鉱石を引き上げる。 MODスロットに資源を3つまで入れる:石、石炭、硝石、鉄、オイルシェール。資源はスロットに残り、対応する出力マスで何を生み出すかを決める。 燃料スロットの血の球1つが、5~8時間ごとに資源1スタック分に変わる。 どこでも動く。地下でも。 骨で修理する。 骨と頭蓋骨でできた納骨堂。血を糧に、地の底から石と鉱石を引き上げる。 MODスロットに資源を3つまで入れる:石、石炭、硝石、鉄、オイルシェール。資源はスロットに残り、対応する出力マスで何を生み出すかを決める。 5~8時間ごとに各出力マスが資源1スタックを生み出し、血の球の耐久度を10分の1消費する。球1つで10スタック分。 どこでも動く。地下でも。 骨で修理する。 뼈와 해골로 만든 납골당. 피를 먹고 땅속 깊은 곳에서 돌과 광석을 끌어올린다. 모드 슬롯에 자원을 최대 세 개까지 넣는다: 돌, 석탄, 질산염, 철, 오일 셰일. 자원은 슬롯에 남아 대응하는 출력 칸에서 무엇을 만들지 정한다. 연료 칸의 피의 구슬 하나가 5~8시간마다 자원 한 묶음으로 바뀐다. 어디서든 작동한다. 땅속에서도. 뼈로 수리한다. 뼈와 해골로 만든 납골당. 피를 먹고 땅속 깊은 곳에서 돌과 광석을 끌어올린다. 모드 슬롯에 자원을 최대 세 개까지 넣는다: 돌, 석탄, 질산염, 철, 오일 셰일. 자원은 슬롯에 남아 대응하는 출력 칸에서 무엇을 만들지 정한다. 5~8시간마다 각 출력 칸이 자원 한 묶음을 만들고 피의 구슬 내구도의 10분의 1을 소모한다. 구슬 하나로 열 묶음. 어디서든 작동한다. 땅속에서도. 뼈로 수리한다. Ossuarium z kości i czaszek, które wyciąga kamień i rudę z głębin i żywi się krwią. Włóż do trzech surowców w sloty modów: kamień, węgiel, saletrę, żelazo lub łupek bitumiczny. Surowiec zostaje w slocie i decyduje, co wytwarza odpowiadające mu pole wyjściowe. Każda krwawa sfera w przegródce na paliwo zamienia się w pełny stos jednego surowca co 5-8 godzin. Działa wszędzie, nawet pod ziemią. Naprawiane kośćmi. Ossuarium z kości i czaszek, które wyciąga kamień i rudę z głębin i żywi się krwią. Włóż do trzech surowców w sloty modów: kamień, węgiel, saletrę, żelazo lub łupek bitumiczny. Surowiec zostaje w slocie i decyduje, co wytwarza odpowiadające mu pole wyjściowe. Co 5-8 godzin każde pole wyjściowe daje pełny stos swojego surowca i zużywa jedną dziesiątą wytrzymałości krwawej sfery: jedna sfera starcza na dziesięć stosów. Działa wszędzie, nawet pod ziemią. Naprawiane kośćmi. Um ossário de ossos e crânios que extrai pedra e minério das profundezas e se alimenta de sangue. Coloque até três recursos nos espaços de mods: pedra, carvão, nitrato, ferro ou xisto betuminoso. O recurso fica no espaço e decide o que a célula de saída correspondente produz. Cada esfera de sangue no compartimento de combustível vira uma pilha completa de um recurso a cada 5-8 horas. Funciona em qualquer lugar, até debaixo da terra. Repara-se com ossos. Um ossário de ossos e crânios que extrai pedra e minério das profundezas e se alimenta de sangue. Coloque até três recursos nos espaços de mods: pedra, carvão, nitrato, ferro ou xisto betuminoso. O recurso fica no espaço e decide o que a célula de saída correspondente produz. A cada 5-8 horas cada célula de saída produz uma pilha completa do seu recurso e gasta um décimo da durabilidade de uma esfera de sangue: uma esfera rende dez pilhas. Funciona em qualquer lugar, até debaixo da terra. Repara-se com ossos. Оссуарий из костей и черепов: питается кровью и вытягивает из недр камень и руду. В ячейки модификаций положите до трёх ресурсов: камень, уголь, селитру, железо или сланец. Ресурс остаётся в ячейке и задаёт, что производит соответствующая ячейка продукции. Каждая кровавая сфера в отсеке топлива раз в 5-8 часов превращается в полный стак одного ресурса. Работает где угодно, даже под землёй. Чинится костями. Оссуарий из костей и черепов: питается кровью и вытягивает из недр камень и руду. В ячейки модификаций положите до трёх ресурсов: камень, уголь, селитру, железо или сланец. Ресурс остаётся в ячейке и задаёт, что производит соответствующая ячейка продукции. Раз в 5-8 часов каждая ячейка продукции выдаёт полный стак своего ресурса и тратит десятую часть прочности кровавой сферы: одной сферы хватает на десять стаков. Работает где угодно, даже под землёй. Чинится костями. Kemik ve kafataslarından yapılmış, kanla beslenen ve derinlerden taş ile cevher çeken bir kemiklik. Mod yuvalarına en fazla üç kaynak koy: taş, kömür, nitrat, demir veya bitümlü şist. Kaynak yuvasında kalır ve karşılık gelen çıktı hücresinin ne üreteceğini belirler. Yakıt bölmesindeki her Kan Küresi 5-8 saatte bir, bir kaynağın tam yığınına dönüşür. Her yerde çalışır, yer altında bile. Kemikle onarılır. Kemik ve kafataslarından yapılmış, kanla beslenen ve derinlerden taş ile cevher çeken bir kemiklik. Mod yuvalarına en fazla üç kaynak koy: taş, kömür, nitrat, demir veya bitümlü şist. Kaynak yuvasında kalır ve karşılık gelen çıktı hücresinin ne üreteceğini belirler. Her 5-8 saatte bir her çıktı hücresi kendi kaynağından tam bir yığın üretir ve bir Kan Küresi'nin dayanıklılığının onda birini harcar: bir küre on yığın yeter. Her yerde çalışır, yer altında bile. Kemikle onarılır. 由骨头与头骨筑成的骨堂,以血为食,从地底深处汲取石头与矿石。 在模组槽中放入最多三种资源:石头、煤、硝石、铁或油页岩。资源会留在槽中,并决定对应产出格产出什么。 燃料格中的每颗血之球每5-8小时变为一整组对应资源。 可在任何地方运作,包括地下。 用骨头修理。 由骨头与头骨筑成的骨堂,以血为食,从地底深处汲取石头与矿石。 在模组槽中放入最多三种资源:石头、煤、硝石、铁或油页岩。资源会留在槽中,并决定对应产出格产出什么。 每5-8小时,每个产出格产出一整组对应资源,并消耗血之球十分之一的耐久:一颗血之球可产出十组。 可在任何地方运作,包括地下。 用骨头修理。 由骨頭與頭骨築成的骨堂,以血為食,從地底深處汲取石頭與礦石。 在模組槽中放入最多三種資源:石頭、煤、硝石、鐵或油頁岩。資源會留在槽中,並決定對應產出格產出什麼。 燃料格中的每顆血之球每5-8小時變為一整組對應資源。 可在任何地方運作,包括地下。 用骨頭修理。 由骨頭與頭骨築成的骨堂,以血為食,從地底深處汲取石頭與礦石。 在模組槽中放入最多三種資源:石頭、煤、硝石、鐵或油頁岩。資源會留在槽中,並決定對應產出格產出什麼。 每5-8小時,每個產出格產出一整組對應資源,並消耗血之球十分之一的耐久:一顆血之球可產出十組。 可在任何地方運作,包括地下。 用骨頭修理。
174 xuiNecroGeoOssuary UI XUI Geo-Ossuary Geo-Ossarium Geo-osario Géo-ossuaire Geo-ossario ジオ納骨堂 지오 납골당 Geo-ossuarium Geo-ossário Гео-оссуарий Jeo-Kemiklik 地脉骨堂 地脈骨堂
175 necroGeoOssuaryFuel UI XUI Blood Spheres Blutsphären Esferas de sangre Sphères de sang Sfere di sangue 血の球 피의 구슬 Krwawe sfery Esferas de sangue Кровавые сферы Kan Küreleri 血之球 血之球
176 necroGeoOssuaryEmpty UI Use Prompt {0} Open {1} ([DECEA3]Empty[-]) {0} Öffnen {1} ([DECEA3]Leer[-]) {0} Abrir {1} ([DECEA3]Vacío[-]) {0} Ouvrir {1} ([DECEA3]Vide[-]) {0} Apri {1} ([DECEA3]Vuoto[-]) {0} 開く {1} ([DECEA3]空[-]) {0} 열기 {1} ([DECEA3]비어 있음[-]) {0} Otwórz {1} ([DECEA3]Pusto[-]) {0} Abrir {1} ([DECEA3]Vazio[-]) {0}: открыть ({1}) ([DECEA3]пусто[-]) {0} Aç {1} ([DECEA3]Boş[-]) {0} 打开 {1} ([DECEA3]空[-]) {0} 打開 {1} ([DECEA3]空[-])
177 necroGeoOssuaryHasItems UI Use Prompt {0} Open {1} ([D04040]Resources[-]) {0} Öffnen {1} ([D04040]Ressourcen[-]) {0} Abrir {1} ([D04040]Recursos[-]) {0} Ouvrir {1} ([D04040]Ressources[-]) {0} Apri {1} ([D04040]Risorse[-]) {0} 開く {1} ([D04040]資源[-]) {0} 열기 {1} ([D04040]자원[-]) {0} Otwórz {1} ([D04040]Surowce[-]) {0} Abrir {1} ([D04040]Recursos[-]) {0}: открыть ({1}) ([D04040]Ресурсы[-]) {0} Aç {1} ([D04040]Kaynaklar[-]) {0} 打开 {1} ([D04040]资源[-]) {0} 打開 {1} ([D04040]資源[-])
178 necroBoneSteedPlaceable items Item Bone Steed Knochenross Corcel de hueso Destrier d'os Destriero d'ossa 骨の駿馬 뼈 군마 Kościany rumak Corcel de osso Костяной скакун Kemik At 骨骸坐骑 骨骸坐騎
179 necroBoneSteedPlaceableDesc items Item A motorcycle grown from bones, sinew and veins, with a cyclops skull for a headlight. Place it to ride, pick it up to carry it. Runs on Blood Spheres: one sphere fills the whole tank. Without blood it stalls like any other vehicle. Ein Motorrad aus Knochen, Sehnen und Adern mit einem Zyklopenschädel als Scheinwerfer. Aufstellen zum Fahren, aufheben zum Mitnehmen. Fährt mit Blutsphären: eine Sphäre füllt den ganzen Tank. Ohne Blut bleibt es stehen wie jedes andere Fahrzeug. Una moto crecida de huesos, tendones y venas, con un cráneo cíclope como faro. Colócala para montar, recógela para llevarla. Funciona con esferas de sangre: una esfera llena todo el depósito. Sin sangre se cala como cualquier otro vehículo. Une moto faite d'os, de tendons et de veines, avec un crâne de cyclope en guise de phare. Posez-la pour rouler, ramassez-la pour l'emporter. Fonctionne aux sphères de sang : une sphère remplit tout le réservoir. Sans sang, elle cale comme n'importe quel véhicule. Una moto cresciuta da ossa, tendini e vene, con un teschio di ciclope come faro. Posizionala per guidarla, raccoglila per portarla con te. Funziona a sfere di sangue: una sfera riempie tutto il serbatoio. Senza sangue si spegne come qualsiasi altro veicolo. 骨と腱と血管から育ったバイクで、ヘッドライトは単眼の頭蓋骨。置けば乗れ、拾えば持ち運べる。 燃料は血の球。球1つで満タンになる。血が尽きると他の乗り物と同じく止まる。 뼈와 힘줄과 혈관으로 자라난 오토바이로, 전조등은 외눈 해골이다. 놓으면 탈 수 있고, 주우면 들고 다닐 수 있다. 피의 구슬로 달린다. 구슬 하나로 연료통이 가득 찬다. 피가 떨어지면 다른 탈것처럼 멈춘다. Motocykl wyrosły z kości, ścięgien i żył, z czaszką cyklopa zamiast reflektora. Postaw go, by jechać, podnieś, by zabrać ze sobą. Jeździ na krwawych sferach: jedna sfera napełnia cały bak. Bez krwi gaśnie jak każdy inny pojazd. Uma moto crescida de ossos, tendões e veias, com um crânio de ciclope como farol. Coloque-a para pilotar, pegue-a para levá-la. Funciona com esferas de sangue: uma esfera enche o tanque inteiro. Sem sangue ela morre como qualquer outro veículo. Мотоцикл, выросший из костей, сухожилий и сосудов, с черепом-циклопом вместо фары. Поставьте, чтобы ехать, подберите, чтобы нести с собой. Ездит на кровавых сферах: одна сфера заполняет весь бак. Без крови глохнет, как любой транспорт. Kemik, kiriş ve damarlardan büyümüş, farı tek gözlü bir kafatası olan bir motosiklet. Binmek için yerleştir, taşımak için al. Kan Küreleriyle çalışır: bir küre bütün depoyu doldurur. Kan bitince her araç gibi stop eder. 一辆由骨头、肌腱与血管生长而成的摩托,车灯是一颗独眼头骨。放置即可骑乘,拾起即可携带。 以血之球为燃料:一颗血之球加满整个油箱。没有血就会像其他载具一样熄火。 一輛由骨頭、肌腱與血管生長而成的機車,車燈是一顆獨眼頭骨。放置即可騎乘,拾起即可攜帶。 以血之球為燃料:一顆血之球加滿整個油箱。沒有血就會像其他載具一樣熄火。
180 necroBoneSteed entityclasses Entity Bone Steed Knochenross Corcel de hueso Destrier d'os Destriero d'ossa 骨の駿馬 뼈 군마 Kościany rumak Corcel de osso Костяной скакун Kemik At 骨骸坐骑 骨骸坐騎
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
+12
View File
@@ -430,4 +430,16 @@
<property name="ExperienceGain" value="0"/>
</entity_class>
</append>
<!-- Костяной скакун (1.7.0, 01.10.2026): мотоцикл из костей. Модель - бандл necrobonesteed
(копия ванильного VMotorcycleP, переделанная в Blender); теги коллайдеров и шейдер
ставит BoneSteedPatch с ванильного мотоцикла, топливо - кровавая сфера (там же). -->
<append xpath="/entity_classes">
<entity_class name="necroBoneSteed" extends="vehicleMotorcycle">
<property name="Prefab" value="#@modfolder(NecromancerTome):Resources/necrobonesteed?necroBoneSteedP.prefab"/>
<property name="Tags" value="vehicle,bikerSetBonus,necroSteed"/>
<property name="SurfaceCategory" value="bone"/>
<property name="LootList" value="vehicleMotorcycle"/>
</entity_class>
</append>
</config>
+23 -2
View File
@@ -1067,9 +1067,11 @@
<property name="DescriptionKey" value="bookSummonRatSpiritDesc"/>
<property name="DisplayType" value="ammoGrenadeFire"/>
<property name="HoldType" value="21"/>
<property name="Meshfile" value="@:Other/Items/Misc/bookPrefab.prefab"/>
<!-- Своя модель книги (01.10.2026, по иконке RatBook): чёрная кожа, фиолетовый светящийся
узор со скелетом крысы и семиконечной звездой, ржавые уголки, кожаный ремешок.
Бандл necrobooks, основа - копия ванильного bookPrefab (тот же размер и хват). -->
<property name="Meshfile" value="#@modfolder(NecromancerTome):Resources/necrobooks?necroBookRatPrefab.prefab"/>
<property name="Material" value="Mpaper"/>
<property name="TintColor" value="120, 135, 120"/>
<property name="Weight" value="0"/>
<property name="Stacknumber" value="10"/>
<property name="EconomicValue" value="0"/>
@@ -1889,4 +1891,23 @@
</effect_group>
</item>
</append>
<!-- Костяной скакун - предмет-транспорт (1.7.0), ванильная система: в руке призрачный
предпросмотр (ItemActionSpawnVehicle грузит его из Meshfile - поэтому Meshfile = модель
скакуна), применение ставит, подбор возвращает предмет с прочностью и модами. Решение
01.10: «не книга призыва, а та же система, что у ванильного транспорта». -->
<append xpath="/items">
<item name="necroBoneSteedPlaceable">
<property name="Extends" value="vehicleMotorcyclePlaceable"/>
<property name="Meshfile" value="#@modfolder(NecromancerTome):Resources/necrobonesteed?necroBoneSteedP.prefab"/>
<property name="CustomIcon" value="necroBoneSteedPlaceable"/>
<property name="DescriptionKey" value="necroBoneSteedPlaceableDesc"/>
<property name="EconomicValue" value="0"/>
<property name="SellableToTrader" value="false"/>
<property name="TraderStageTemplate" value=""/>
<property class="Action1">
<property name="Vehicle" value="necroBoneSteed"/>
</property>
</item>
</append>
</config>
+1 -1
View File
@@ -235,7 +235,7 @@
ОБЯЗАНЫ совпадать. display_entry рисует замок сам по себе, по unlock_tier, и про
теги не знает - разойдутся, и на панели будет замок на доступном рецепте. -->
<display_entry icon="ScrollOfDeviation" name_key="craftingNecroNecromancyTier2Name" has_quality="false" unlock_level="25,65,70,85">
<unlock_entry item="thrownBookGrimoireDeviation,bookSummonZombieGriffin,necroGeoOssuary" unlock_tier="1"/>
<unlock_entry item="thrownBookGrimoireDeviation,bookSummonZombieGriffin,necroGeoOssuary,necroBoneSteedPlaceable" unlock_tier="1"/>
<!-- Зомбогриф, 18.09: "гриф пусть тоже будет на подмастерье, но 1300 (65 уровень
некромантии)". 65 вставлен в unlock_level МЕЖДУ 25 и 70, поэтому unlock_tier
у двух модов ножа ниже сдвинулись на единицу (были 2 и 3, стали 3 и 4).
+13
View File
@@ -488,4 +488,17 @@
<ingredient name="resourceYuccaFibers" count="50"/>
</recipe>
</append>
<!-- Костяной скакун (1.7.0, 01.10.2026). Порог - «Подмастерье» (уровень 25), как у
гео-оссуария: транспорт нужен, когда карта уже велика для пеших ходок. Состав - по
указанию пользователя: кости, гнилое мясо, прах, кожа жертвы, два флакона крови. -->
<append xpath="/recipes">
<recipe name="necroBoneSteedPlaceable" count="1" craft_area="workbench" tags="learnable,workbenchCrafting,necroNecromancyJourneyman">
<ingredient name="resourceBone" count="300"/>
<ingredient name="foodRottingFlesh" count="30"/>
<ingredient name="resourceZombieAsh" count="150"/>
<ingredient name="resourceVictimSkin" count="3"/>
<ingredient name="resourceNecromancerBlood" count="2"/>
</recipe>
</append>
</config>
+146
View File
@@ -0,0 +1,146 @@
<config>
<!-- Костяной скакун (1.7.0, 01.10.2026). vehicles.xml наследования не знает - это копия
ванильного vehicleMotorcycle (игра 3.3) под именем сущности necroBoneSteed. Отличия:
recipeName -> предмет necroBoneSteedPlaceable (его и возвращает подбор скакуна), без
honkEvent (гудок открывает двери торговца - скакуну незачем). Топливо в XML не задаётся
вовсе (Vehicle.GetFuelItem = "ammoGasCan" в коде) - его меняет BoneSteedPatch. -->
<append xpath="/vehicles">
<vehicle name="necroBoneSteed">
<property name="cameraDistance" value="3.5, 5"/>
<property name="cameraTurnRate" value=".2, .35"/>
<property name="upAngleMax" value="70"/>
<property name="upForce" value="1"/>
<property name="steerRate" value="130"/>
<property name="steerCenteringRate" value="90"/>
<property name="tiltAngleMax" value="20"/>
<property name="tiltThreshold" value="3"/>
<property name="tiltDampening" value=".22"/>
<property name="tiltDampenThreshold" value="8"/>
<property name="tiltUpForce" value="5"/>
<property name="motorTorque_turbo" value="1400, 500, 2100, 650"/>
<property name="velocityMax_turbo" value="9.8, 6, 14, 8"/>
<property name="brakeTorque" value="3000"/>
<property name="hopForce" value="1, .8"/>
<property name="unstickForce" value="1"/>
<property name="waterDrag_y_velScale_velMaxScale" value="1.7, .9, .1"/>
<property name="wheelPtlScale" value="1"/>
<property name="hornSound" value="motorbike_horn"/>
<property name="recipeName" value="necroBoneSteedPlaceable" />
<property class="chassis">
<property name="class" value="Chassis"/>
<property name="paint" value="M"/>
</property>
<property class="engine">
<property name="class" value="Engine"/>
<property name="particleOn" value="Particles/p_on"/>
<property name="particleDamaged" value="Particles/p_damaged"/>
<property name="particleBroken" value="Particles/p_broken"/>
<property name="fuelKmPerL" value=".2"/>
<property name="foodDrain" value=".002,.0101"/><!-- driving/turbo, motorcycle -->
<property name="gear1" value="
500,2500, -1400,800,0, 700,2000,900,
Vehicles/Motorbike/motorbike_accel_1,
,
0, .7, 1, .1, -9, .15, .1, Vehicles/Motorbike/motorbike_idle_lp,
-.3, .1, .1, .4, -.05, 9, .2, Vehicles/Motorbike/motorbike_run_lp
"/>
<property name="gear2" value="
500,2500, -2000,1000,2000, 620,2200,800,
Vehicles/Motorbike/motorbike_accel_2,
Vehicles/Motorbike/motorbike_decel,
-.2, -.02, .1, .2, -1, 1, .1, Vehicles/Motorbike/motorbike_run_lp
"/>
<property name="gear3" value="
500,2500, -2000,1000,2000, 570,2200,1000,
Vehicles/Motorbike/motorbike_accel_3,
Vehicles/Motorbike/motorbike_decel,
-.21, -.05, .1, .2, -1, 1, .1, Vehicles/Motorbike/motorbike_run_lp
"/>
<property name="gear4" value="
500,2500, -2000,1000,2000, 500,9999,9999,
,
Vehicles/Motorbike/motorbike_decel,
-.25, -.08, .55, .55, -1, 1, .1, Vehicles/Motorbike/motorbike_run_lp
"/>
<property name="sound_start" value="Vehicles/Motorbike/minibike_start_"/>
<property name="sound_shut_off" value="Vehicles/Motorbike/minibike_shutoff_"/>
<property name="sound_no_fuel_shut_off" value="Vehicles/Motorbike/motorbike_empty"/>
</property>
<property class="fuelTank">
<property name="class" value="FuelTank"/>
<property name="capacity" value="120"/>
<property name="mod" value="fueltank"/>
<property name="modT" value="M/Fuel"/>
</property>
<property class="handlebars">
<property name="class" value="Steering"/>
<property name="transform" value="M/Forks"/>
<property name="steerAngle" value="0, 30, 0"/>
<property name="IKHandLPosition" value="-.3362, .4901, -.1789"/>
<property name="IKHandLRotation" value="-7.2919, 77.3004, 29.6909"/>
<property name="IKHandRPosition" value=".3353, .4747, -.1735"/>
<property name="IKHandRRotation" value="4.1479, 105.6533, -158.7339"/>
<property name="paint" value="handlebar"/>
</property>
<property class="seat0">
<property name="class" value="Seat"/>
<property name="pose" value="30"/>
<property name="position" value="0, 0, 0"/>
<property name="rotation" value="0, 0, 0"/>
<property name="exit" value="-.9,0,0 ~ .9,0,0 ~ 0,0,-1.5 ~ 0,0,1.6 ~ 0,1.5,0"/>
</property>
<property class="seat1">
<property name="class" value="Seat"/>
<property name="pose" value="31"/>
<property name="position" value="0, 0, 0"/>
<property name="rotation" value="0, 0, 0"/>
<property name="exit" value="-.9,0,-.7 ~ .9,0,-.7 ~ -.6,0,-1.5 ~ -.6,0,1.6 ~ 0,1.5,-.6"/>
<property name="mod" value="seat"/>
<property name="modT" value="M/Seat"/>
</property>
<property class="wheel0">
<property name="tireTransform" value="M/Forks/Wheel0"/>
<property name="torqueScale_motor_brake" value=".15, .5"/>
</property>
<property class="wheel1">
<property name="tireTransform" value="Wheel1"/>
<property name="torqueScale_motor_brake" value="1, 1"/>
</property>
<property class="headlight">
<property name="class" value="Headlight"/>
<property name="bright" value=".9"/>
<property name="transform" value="M/Forks/HeadLights/Lights"/>
<property name="matT" value="M/Forks/HeadLights"/>
<property name="matEmissive" value="808080"/>
<property name="mod" value="light"/>
<property name="modT" value="M/Forks/LightMod"/>
<property name="modOnT" value="M/Forks/LightMod/Lights"/>
<property name="modMatEmissive" value="909090"/>
<property name="tailEmissive" value="c0c0c0"/>
</property>
<property class="armor">
<property name="class" value="VehiclePart"/>
<property name="mod" value="armor"/>
<property name="modT" value="M/Forks/Armor"/>
<property name="modRBT" value="Armor"/>
</property>
<property class="storage">
<property name="class" value="Storage"/>
<property name="mod" value="storage"/>
<property name="modT" value="M/Storage"/>
</property>
</vehicle>
</append>
</config>
+148
View File
@@ -0,0 +1,148 @@
using System.Collections.Generic;
using HarmonyLib;
using UnityEngine;
namespace NecromancerTome
{
/// <summary>
/// Костяной скакун (1.7.0, 01.10.2026): мотоцикл из костей, призывается книгой, ездит на
/// кровавых сферах. Сущность necroBoneSteed в entityclasses.xml - наследник vehicleMotorcycle
/// со своей моделью (бандл necrobonesteed, собран из копии ванильного VMotorcycleP.prefab).
///
/// Топливо у транспорта игры в XML не задаётся: Vehicle.GetFuelItem() возвращает "ammoGasCan"
/// строкой в коде. Отсюда два патча: предмет топлива - сфера, и заправка - одна сфера на полный
/// бак (ваниль берёт по канистре на 1/25 единицы бака - 120 сфер на бак было бы абсурдом).
/// Без сфер скакун глохнет как обычный транспорт (решение 01.10) - это ваниль, кода не нужно.
///
/// Модель выросла из рипнутого префаба, и у неё те же две беды, что у оссуария: игровые теги
/// коллайдеров потеряны (без них на скакуна не сесть и по нему не попасть) и шейдер-заглушка.
/// Оба лечатся с ванильного мотоцикла - теги по путям объектов, шейдер у его материала.
/// </summary>
public static class BoneSteed
{
public const string EntityClassName = "necroBoneSteed";
public const string FuelItem = "resourceBloodSphere";
const string VanillaPrefab = "@:Entities/Vehicles/VMotorcycle/VMotorcycleP.prefab";
public static bool Is(Entity e)
{
return e != null && EntityClass.list.TryGetValue(e.entityClass, out EntityClass cls) &&
cls != null && cls.entityClassName == EntityClassName;
}
static Transform vanilla;
static Shader vanillaShader;
public static void FixModel(EntityVehicle ev)
{
if (vanilla == null)
{
vanilla = DataLoader.LoadAsset<Transform>(VanillaPrefab);
if (vanilla == null)
{
Debug.LogWarning("[NecromancerTome] BoneSteed: ванильный мотоцикл не найден - теги и шейдер не поправлены");
return;
}
foreach (Renderer r in vanilla.GetComponentsInChildren<Renderer>(true))
{
if (r.sharedMaterial != null && r.sharedMaterial.HasProperty("_RMOM"))
{
vanillaShader = r.sharedMaterial.shader;
break;
}
}
}
var byPath = new Dictionary<string, Transform>();
foreach (Transform t in vanilla.GetComponentsInChildren<Transform>(true))
byPath[PathOf(t, vanilla)] = t;
int tags = 0, mats = 0;
foreach (Transform t in ev.transform.GetComponentsInChildren<Transform>(true))
{
if (!byPath.TryGetValue(PathOf(t, ev.transform), out Transform src))
continue;
if (t.tag != src.tag || t.gameObject.layer != src.gameObject.layer)
{
t.tag = src.tag;
t.gameObject.layer = src.gameObject.layer;
tags++;
}
}
if (vanillaShader != null)
{
foreach (Renderer r in ev.transform.GetComponentsInChildren<Renderer>(true))
{
foreach (Material m in r.sharedMaterials)
{
if (m != null && m.HasProperty("_RMOM") && m.shader != vanillaShader)
{
m.shader = vanillaShader;
m.enableInstancing = true;
mats++;
}
}
}
}
Debug.Log("[NecromancerTome] BoneSteed: теги поправлены у " + tags + " объектов, шейдер '" +
(vanillaShader != null ? vanillaShader.name : "-") + "' поставлен " + mats + " материалам");
}
/// <summary>Путь объекта от корня префаба. Корень - пустая строка: у экземпляра корень
/// называется иначе (necroBoneSteedP(Clone)), чем у ванильного префаба.</summary>
static string PathOf(Transform t, Transform root)
{
if (t == root)
return "";
string p = t.name;
for (Transform x = t.parent; x != null && x != root; x = x.parent)
p = x.name + "/" + p;
return p;
}
}
[HarmonyPatch(typeof(EntityVehicle), nameof(EntityVehicle.PostInit))]
public static class Patch_EntityVehicle_PostInit_BoneSteed
{
public static void Postfix(EntityVehicle __instance)
{
if (BoneSteed.Is(__instance))
BoneSteed.FixModel(__instance);
}
}
[HarmonyPatch(typeof(Vehicle), nameof(Vehicle.GetFuelItem))]
public static class Patch_Vehicle_GetFuelItem_BoneSteed
{
public static void Postfix(Vehicle __instance, ref string __result)
{
if (__result != "" && BoneSteed.Is(__instance.entity))
__result = BoneSteed.FuelItem;
}
}
/// <summary>Одна сфера - полный бак.</summary>
[HarmonyPatch(typeof(EntityVehicle), nameof(EntityVehicle.AddFuelFromInventory))]
public static class Patch_EntityVehicle_AddFuelFromInventory_BoneSteed
{
public static bool Prefix(EntityVehicle __instance, EntityAlive entity, ref bool __result)
{
if (!BoneSteed.Is(__instance))
return true;
__result = false;
Vehicle v = __instance.GetVehicle();
if (v.GetFuelPercent() >= 1f || !(entity is EntityPlayer player))
return false;
ItemValue sphere = ItemClass.GetItem(BoneSteed.FuelItem);
int taken = player.inventory.DecItem(sphere, 1);
if (taken == 0)
taken = player.bag.DecItem(sphere, 1);
if (taken == 0)
return false;
v.AddFuel(v.GetMaxFuelLevel() - v.GetFuelLevel());
__instance.PlayOneShot("useactions/gas_refill");
Debug.Log("[NecromancerTome] BoneSteed: сфера залита - полный бак");
__result = true;
return false;
}
}
}
+44
View File
@@ -190,6 +190,50 @@ namespace NecromancerTome
}
}
/// <summary>
/// Расход сферы - по прочности, как в пространственном хранилище (указание 01.10: «одна
/// сфера на стак - это жирно; 1/10 прочности на стак»). Ваниль в removeFuel вычитает ШТУКИ
/// топлива, то есть съедала бы сферу целиком за каждый стак. Здесь вместо этого у первой
/// сферы в отсеке списывается ChargePerStack прочности (DegradationMax сферы 500 -> 10 стаков
/// со сферы); выработанная до нуля сфера исчезает из ячейки, как из браслета. Наличие топлива
/// ваниль по-прежнему считает штуками (getFuelCount) - любая сфера с остатком годится.
/// </summary>
[HarmonyPatch(typeof(TileEntityCollector), nameof(TileEntityCollector.removeFuel))]
public static class Patch_TileEntityCollector_removeFuel_GeoOssuary
{
public const int ChargePerStack = 50;
public static bool Prefix(TileEntityCollector __instance)
{
if (!GeoOssuary.Is(__instance))
return true;
ItemStack[] fuel = __instance.FuelSlots;
for (int i = 0; i < fuel.Length; i++)
{
ItemStack stack = fuel[i];
if (stack == null || stack.IsEmpty() || stack.itemValue.ItemClass == null ||
stack.itemValue.ItemClass.Name != SpatialVaultPickup.ChargeItemName)
continue;
int max = stack.itemValue.MaxUseTimes;
if (max <= 0)
{
// Прочность не задалась (DegradationMax) - ведём себя как ваниль: сфера за стак.
fuel[i] = ItemStack.Empty;
Debug.LogWarning("[NecromancerTome] GeoOssuary: у сферы MaxUseTimes 0 - списана целиком");
return false;
}
stack.itemValue.UseTimes += ChargePerStack;
if (stack.itemValue.UseTimes >= max)
{
fuel[i] = ItemStack.Empty;
Debug.Log("[NecromancerTome] GeoOssuary: сфера в ячейке " + i + " выработана и исчезла");
}
return false;
}
return false;
}
}
[HarmonyPatch(typeof(TileEntityCollector), nameof(TileEntityCollector.HandleSkyCheck))]
public static class Patch_TileEntityCollector_HandleSkyCheck_GeoOssuary
{
+32
View File
@@ -0,0 +1,32 @@
using HarmonyLib;
namespace NecromancerTome
{
/// <summary>
/// Турели не стреляют по существам мода. Жалоба 01.10: «мои питомцы враги, их атакуют
/// турели». Питомцы, рой и змея сделаны на зомби-основе и для игры остаются EntityEnemy, а
/// обе турели (стационарная AutoTurretFireController и переносная MiniTurretFireController)
/// решают в shouldIgnoreTarget: EntityEnemy - стрелять, если включено «по зомби». Здесь
/// ответ «пропустить» для всех necro*-сущностей (SnakeControl.IsNecroEntity) - тот же признак,
/// по которому их не выбирает целью охрана.
/// </summary>
[HarmonyPatch(typeof(AutoTurretFireController), nameof(AutoTurretFireController.shouldIgnoreTarget))]
public static class Patch_AutoTurretFireController_shouldIgnoreTarget_Pets
{
public static void Postfix(Entity _target, ref bool __result)
{
if (!__result && _target is EntityAlive alive && SnakeControl.IsNecroEntity(alive))
__result = true;
}
}
[HarmonyPatch(typeof(MiniTurretFireController), nameof(MiniTurretFireController.shouldIgnoreTarget))]
public static class Patch_MiniTurretFireController_shouldIgnoreTarget_Pets
{
public static void Postfix(Entity _target, ref bool __result)
{
if (!__result && _target is EntityAlive alive && SnakeControl.IsNecroEntity(alive))
__result = true;
}
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB