diff --git a/Config/Localization.csv b/Config/Localization.csv index 146794a..5214f7f 100644 --- a/Config/Localization.csv +++ b/Config/Localization.csv @@ -15,7 +15,7 @@ thrownStoneSpiritDesc,items,Item,,,,"A stone glowing with necromantic energy. Th thrownBookGrimoireDeviation,items,Item,,,,Scroll of Deviation,,Schriftrolle der Abweichung,Pergamino de desviación,Parchemin de déviation,Pergamena della deviazione,逸脱の巻物,일탈의 두루마리,Zwój dewiacji,Pergaminho do Desvio,Свиток девиации,Sapma Tomarı,悖逆卷轴,悖逆卷軸 thrownBookGrimoireDeviationDesc,items,Item,,,,"A necromantic scroll glowing with the same energy as the Spirit Stone, but far more potent. Thrown, it turns every zombie caught in the blast to your side at once, making them attack each other instead of you. Consumed on use.",,"Eine nekromantische Schriftrolle, die von derselben Energie glüht wie der Geisterstein, nur weit stärker. Geworfen zieht sie jeden Zombie in der Druckwelle auf einen Schlag auf deine Seite, sodass sie einander angreifen statt dich. Wird beim Gebrauch verbraucht.","Un pergamino nigromántico que brilla con la misma energía que la Piedra de espíritus, pero mucho más potente. Al lanzarlo, pone de tu lado a todos los zombis alcanzados por la explosión a la vez, haciendo que se ataquen entre sí en vez de a ti. Se consume al usarlo.","Un parchemin nécromantique qui rougeoie de la même énergie que la Pierre des esprits, mais bien plus puissante. Lancé, il fait passer de ton côté tous les zombies pris dans le souffle d'un seul coup : ils s'attaquent alors entre eux au lieu de toi. Consommé à l'usage.","Una pergamena negromantica che brilla della stessa energia della Pietra degli spiriti, ma molto più potente. Lanciata, porta dalla tua parte tutti gli zombie colpiti dall'esplosione in una sola volta, facendoli attaccare tra loro invece che te. Si consuma con l'uso.",精霊の石と同じエネルギーで輝く降霊術の巻物。ただし、その力ははるかに強い。投げると、爆発に巻き込まれたゾンビをすべて一度に味方に変え、あなたではなく互いを襲わせる。使用すると失われる。,"영혼의 돌과 같은 기운으로 빛나지만 훨씬 강력한 강령술 두루마리. 던지면 폭발에 휘말린 모든 좀비가 한 번에 당신 편이 되어, 당신 대신 서로를 공격합니다. 사용하면 소모됩니다.","Nekromancki zwój jarzący się tą samą energią co Kamień duchów, tyle że o wiele potężniejszą. Rzucony, jednym razem przeciąga na twoją stronę każde zombie objęte wybuchem, przez co atakują siebie nawzajem zamiast ciebie. Zużywa się przy użyciu.","Um pergaminho necromântico que brilha com a mesma energia da Pedra dos espíritos, mas muito mais potente. Arremessado, coloca do seu lado todos os zumbis atingidos pela explosão de uma só vez, fazendo com que ataquem uns aos outros em vez de você. Consumido ao usar.","Некромантский свиток, светящийся той же энергией, что и Камень духов, но гораздо мощнее. При броске переманивает на вашу сторону сразу всех зомби в области взрыва: они начинают атаковать друг друга вместо вас. Расходуется при использовании.","Ruh Taşı ile aynı enerjiyle parlayan, ama ondan çok daha güçlü bir nekromansi tomarı. Atıldığında patlamaya yakalanan her zombiyi bir anda senin tarafına geçirir; artık sana değil, birbirlerine saldırırlar. Kullanıldığında tükenir.",一卷亡灵法术卷轴,闪耀着与灵魂之石相同的能量,却强大得多。掷出后,爆炸范围内的每一只僵尸都会立刻倒向你这边,转而互相攻击而不是攻击你。使用后消耗。,一卷亡靈法術卷軸,閃耀著與靈魂之石相同的能量,卻強大得多。擲出後,爆炸範圍內的每一隻殭屍都會立刻倒向你這邊,轉而互相攻擊而不是攻擊你。使用後消耗。 bookSummonZombieDog,items,Item,,,,Summon Zombie Dog,,Zombiehund beschwören,Invocar Perro Zombi,Invoquer un Chien Zombie,Evoca Cane Zombie,ゾンビ犬召喚,좀비 개 소환,Przyzwanie: Pies Zombie,Invocar Cão Zumbi,Призыв зомбособаки,Zombi Köpek Çağırma,召唤僵尸犬,召喚殭屍犬 -bookSummonZombieDogDesc,items,Item,,,,A necromantic tome that raises a zombie dog bound to your will. It fights alongside you against other zombies until it dies. You can only have one bound at a time. Power attack to recall it back into the book.,,"Ein nekromantisches Buch, das einen Zombiehund erweckt, der deinem Willen unterworfen ist. Er kämpft an deiner Seite gegen andere Zombies, bis er stirbt. Du kannst immer nur einen gebunden haben. Mit dem Powerangriff rufst du ihn ins Buch zurück.",Un tomo nigromántico que alza un Perro Zombi sometido a tu voluntad. Lucha a tu lado contra otros zombis hasta morir. Solo puedes tener uno vinculado a la vez. Usa el ataque potente para devolverlo al libro.,Un ouvrage nécromantique qui relève un Chien Zombie soumis à ta volonté. Il combat à tes côtés contre les autres zombies jusqu'à sa mort. Tu ne peux en lier qu'un seul à la fois. L'attaque puissante le rappelle dans le livre.,Un tomo negromantico che rialza un Cane Zombie soggetto alla tua volontà. Combatte al tuo fianco contro gli altri zombie finché non muore. Puoi averne vincolato solo uno alla volta. L'attacco potente lo richiama nel libro.,あなたの意志に縛られたゾンビ犬を起こす降霊術の書。死ぬまで、あなたの側で他のゾンビと戦う。同時に縛っておけるのは一体だけ。強攻撃で書物へ呼び戻せる。,당신의 의지에 묶인 좀비 개을(를) 일으키는 강령술 서적. 죽을 때까지 당신 곁에서 다른 좀비와 싸운다. 한 번에 하나만 묶어 둘 수 있다. 강공격으로 책 속에 불러들인다.,"Nekromancki tom, który wskrzesza Psa Zombie związanego twoją wolą. Walczy u twojego boku z innymi zombie, aż zginie. Naraz możesz mieć związanego tylko jednego. Atak specjalny odwołuje go z powrotem do księgi.",Um tomo necromântico que ergue um Cão Zumbi preso à sua vontade. Luta ao seu lado contra outros zumbis até morrer. Você só pode ter um vinculado por vez. O ataque forte o chama de volta para o livro.,"Некромантский фолиант, поднимающий зомбособаку, подчинённую вашей воле. Она сражается на вашей стороне против других зомби, пока не погибнет. Одновременно можно держать только одну. Силовая атака отзывает её обратно в книгу.",İradene bağlı bir Zombi Köpek dirilten bir nekromansi kitabı. Ölene kadar yanında diğer zombilere karşı savaşır. Aynı anda yalnızca bir tanesini bağlı tutabilirsin. Güçlü saldırı onu kitaba geri çağırır.,一本亡灵法术典籍,唤起一只受你意志束缚的僵尸犬。它会在你身边与其他僵尸战斗,直到死亡。同时只能束缚一只。使用强力攻击可将其召回书中。,一本亡靈法術典籍,喚起一隻受你意志束縛的殭屍犬。牠會在你身邊與其他殭屍戰鬥,直到死亡。同時只能束縛一隻。使用強力攻擊可將其召回書中。 +bookSummonZombieDogDesc,items,Item,,,,A necromantic tome that raises a zombie dog bound to your will. It fights alongside you against other zombies until it dies. Your servant guards you on its own: any hostile that comes within 20 meters of you gets attacked. Only one servant can be out at a time - summoning another sends the current one back. Power attack to recall it back into the book.,,"Ein nekromantisches Buch, das einen Zombiehund erweckt, der deinem Willen unterworfen ist. Er kämpft an deiner Seite gegen andere Zombies, bis er stirbt. Dein Diener bewacht dich von selbst: Jeder Feind, der dir näher als 20 Meter kommt, wird angegriffen. Es kann immer nur ein Diener draußen sein - beschwörst du einen anderen, kehrt der bisherige zurück. Mit dem Powerangriff rufst du ihn ins Buch zurück.",Un tomo nigromántico que alza un Perro Zombi sometido a tu voluntad. Lucha a tu lado contra otros zombis hasta morir. Tu sirviente te protege por su cuenta: ataca a todo enemigo que se acerque a menos de 20 metros de ti. Solo puede haber un sirviente fuera a la vez: invocar otro hace volver al actual. Usa el ataque potente para devolverlo al libro.,Un ouvrage nécromantique qui relève un Chien Zombie soumis à ta volonté. Il combat à tes côtés contre les autres zombies jusqu'à sa mort. Ton serviteur te protège de lui-même : tout ennemi qui s'approche à moins de 20 mètres de toi est attaqué. Un seul serviteur peut être dehors à la fois : en invoquer un autre renvoie l'actuel. L'attaque puissante le rappelle dans le livre.,Un tomo negromantico che rialza un Cane Zombie soggetto alla tua volontà. Combatte al tuo fianco contro gli altri zombie finché non muore. Il tuo servitore ti protegge da solo: ogni nemico che si avvicina a meno di 20 metri da te viene attaccato. Può essere fuori un solo servitore alla volta: evocarne un altro richiama quello attuale. L'attacco potente lo richiama nel libro.,あなたの意志に縛られたゾンビ犬を起こす降霊術の書。死ぬまで、あなたの側で他のゾンビと戦う。僕は自らあなたを守り、20メートル以内に近づいた敵に襲いかかる。同時に出しておける僕は一体だけで、別の僕を呼ぶと今の僕は戻る。強攻撃で書物へ呼び戻せる。,당신의 의지에 묶인 좀비 개을(를) 일으키는 강령술 서적. 죽을 때까지 당신 곁에서 다른 좀비와 싸운다. 종복은 스스로 당신을 지키며 20미터 안으로 다가온 적을 공격한다. 종복은 한 번에 하나만 불러낼 수 있고 다른 종복을 소환하면 지금의 종복은 돌아간다. 강공격으로 책 속에 불러들인다.,"Nekromancki tom, który wskrzesza Psa Zombie związanego twoją wolą. Walczy u twojego boku z innymi zombie, aż zginie. Twój sługa sam cię strzeże: atakuje każdego wroga, który zbliży się do ciebie na mniej niż 20 metrów. Naraz może być przywołany tylko jeden sługa - przywołanie innego odsyła obecnego. Atak specjalny odwołuje go z powrotem do księgi.",Um tomo necromântico que ergue um Cão Zumbi preso à sua vontade. Luta ao seu lado contra outros zumbis até morrer. Seu servo protege você por conta própria: ataca todo inimigo que chegar a menos de 20 metros de você. Só pode haver um servo fora por vez - invocar outro manda o atual de volta. O ataque forte o chama de volta para o livro.,"Некромантский фолиант, поднимающий зомбособаку, подчинённую вашей воле. Она сражается на вашей стороне против других зомби, пока не погибнет. Слуга сам охраняет вас: нападает на любого врага, подошедшего к вам ближе 20 метров. Одновременно можно держать только одного слугу - призыв другого отзывает нынешнего. Силовая атака отзывает её обратно в книгу.",İradene bağlı bir Zombi Köpek dirilten bir nekromansi kitabı. Ölene kadar yanında diğer zombilere karşı savaşır. Hizmetkârın seni kendiliğinden korur: sana 20 metreden fazla yaklaşan her düşmana saldırır. Aynı anda yalnızca bir hizmetkâr dışarıda olabilir - bir başkasını çağırmak mevcut olanı geri gönderir. Güçlü saldırı onu kitaba geri çağırır.,一本亡灵法术典籍,唤起一只受你意志束缚的僵尸犬。它会在你身边与其他僵尸战斗,直到死亡。仆从会主动护卫你:任何靠近你20米以内的敌人都会遭到攻击。同时只能有一个仆从在外——召唤另一个会让当前的仆从返回。使用强力攻击可将其召回书中。,一本亡靈法術典籍,喚起一隻受你意志束縛的殭屍犬。牠會在你身邊與其他殭屍戰鬥,直到死亡。僕從會主動護衛你:任何靠近你20公尺以內的敵人都會遭到攻擊。同時只能有一個僕從在外——召喚另一個會讓目前的僕從返回。使用強力攻擊可將其召回書中。 necroZombieDogAlreadyActive,items,Item,,,,You already have a Zombie Dog - use the power attack to recall it,,Du hast bereits einen Zombiehund – rufe ihn mit dem Powerangriff zurück,Ya tienes un Perro Zombi: usa el ataque potente para devolverlo,Tu as déjà un Chien Zombie – utilise l'attaque puissante pour le rappeler,Hai già un Cane Zombie: usa l'attacco potente per richiamarlo,すでにゾンビ犬がいます – 強攻撃で呼び戻してください,이미 좀비 개이(가) 있습니다 - 강공격으로 불러들이세요,Masz już Psa Zombie – odwołaj go atakiem specjalnym,Você já tem um Cão Zumbi - use o ataque forte para chamá-lo de volta,У вас уже есть зомбособака - отзовите её силовой атакой,Zaten bir Zombi Köpek var - geri çağırmak için güçlü saldırıyı kullan,你已经有一只僵尸犬了——用强力攻击将其召回,你已經有一隻殭屍犬了——用強力攻擊將其召回 necroInsectSwarmAlreadyActive,items,Item,,,,A swarm is already out - wait for it to be destroyed,,"Ein Schwarm ist bereits unterwegs - warte, bis er vernichtet ist",Ya hay un enjambre fuera: espera a que sea destruido,Un essaim est déjà dehors - attends qu’il soit détruit,Uno sciame è già fuori: aspetta che venga distrutto,すでに群れが出ています - 消え去るのを待ってください,이미 무리가 나가 있습니다 - 사라질 때까지 기다리세요,"Rój już krąży - poczekaj, aż zostanie zniszczony",Um enxame já está solto - espere até que seja destruído,"Рой уже выпущен - дождитесь, пока он будет уничтожен",Bir sürü zaten dışarıda - yok olmasını bekle,已经有一群在外了——等它被消灭,已經有一群在外了——等牠被消滅 necroZombieDogRecalled,items,Item,,,,Zombie Dog recalled,,Zombiehund zurückgerufen,Perro Zombi devuelto,Chien Zombie rappelé,Cane Zombie richiamato,ゾンビ犬を呼び戻しました,좀비 개을(를) 불러들였습니다,Odwołano: Pies Zombie,Cão Zumbi chamado de volta,Зомбособака отозвана,Zombi Köpek geri çağrıldı,已召回僵尸犬,已召回殭屍犬 @@ -44,17 +44,17 @@ resourceBloodStone,items,Item,,,,Blood Stone,,Blutstein,Piedra de sangre,Pierre resourceBloodStoneDesc,items,Item,,,,Necromancer's blood hardened into stone. An inexhaustible charge for the Spatial Bracelet: pulling blocks costs it nothing at all.,,Zu Stein erstarrtes Nekromantenblut. Eine unerschöpfliche Ladung für das Raumarmband: das Einziehen von Blöcken kostet sie überhaupt nichts.,Sangre del nigromante endurecida hasta volverse piedra. Una carga inagotable para el Brazalete espacial: absorber bloques no le cuesta nada.,Du sang de nécromancien durci en pierre. Une charge inépuisable pour le Bracelet spatial : aspirer des blocs ne lui coûte rien.,Sangue del negromante indurito in pietra. Una carica inesauribile per il Bracciale spaziale: assorbire blocchi non le costa nulla.,ネクロマンサーの血が固まり石となったもの。「空間の腕輪」の尽きることのない充填であり、ブロックの吸収では何も消耗しない。,"강령술사의 피가 굳어 돌이 된 것. '공간의 팔찌'의 마르지 않는 충전체로, 블록을 흡수해도 전혀 소모되지 않습니다.",Krew nekromanty zastygła w kamień. Niewyczerpany ładunek do Bransolety przestrzennej: wciąganie bloków nic go nie kosztuje.,Sangue do necromante endurecido em pedra. Uma carga inesgotável para o Bracelete espacial: absorver blocos não lhe custa nada.,"Кровь некроманта, затвердевшая камнем. Неиссякаемый заряд для Пространственного браслета: поглощение блоков не тратит его вовсе.",Taşa dönüşmüş nekromant kanı. Uzam Bileziği için tükenmez bir yük: blok çekmek onu hiç eksiltmez.,亡灵法师之血凝固成石。空间手环永不枯竭的充能:吸收方块不会消耗它分毫。,亡靈法師之血凝固成石。空間手環永不枯竭的充能:吸收方塊不會消耗它分毫。 resourceNecromancerBloodNeedsKnife,items,Item,,,,You need a knife to perform this ritual,,Für dieses Ritual brauchst du ein Messer,Necesitas un cuchillo para realizar este ritual,Il te faut un couteau pour accomplir ce rituel,Ti serve un coltello per compiere questo rituale,この儀式にはナイフが必要です,이 의식을 치르려면 칼이 필요합니다,Do tego rytuału potrzebujesz noża,Você precisa de uma faca para realizar este ritual,Для этого ритуала нужен нож,Bu ritüeli gerçekleştirmek için bir bıçağa ihtiyacın var,进行此仪式需要一把刀,進行此儀式需要一把刀 bookSummonZombieGriffin,items,Item,,,,Summon Grave Vulture,,Grabgeier beschwören,Invocar buitre sepulcral,Invoquer le vautour des tombes,Evoca avvoltoio sepolcrale,墓場のハゲワシの召喚,무덤 독수리 소환,Przyzwanie grobowego sępa,Invocar abutre sepulcral,Призыв могильного стервятника,Mezar Akbabası Çağırma,召唤墓地秃鹫,召喚墓地禿鷲 -bookSummonZombieGriffinDesc,items,Item,,,,A necromantic tome that raises a grave vulture bound to your will. It fights alongside you against other zombies until it dies. You can only have one bound at a time. Power attack to recall it back into the book.,,"Ein nekromantisches Buch, das einen Grabgeier erweckt, der deinem Willen unterworfen ist. Er kämpft an deiner Seite gegen andere Zombies, bis er stirbt. Du kannst immer nur einen gebunden haben. Mit dem Powerangriff rufst du ihn ins Buch zurück.",Un tomo nigromántico que alza un Buitre Sepulcral sometido a tu voluntad. Lucha a tu lado contra otros zombis hasta morir. Solo puedes tener uno vinculado a la vez. Usa el ataque potente para devolverlo al libro.,Un ouvrage nécromantique qui relève un Vautour des Tombes soumis à ta volonté. Il combat à tes côtés contre les autres zombies jusqu'à sa mort. Tu ne peux en lier qu'un seul à la fois. L'attaque puissante le rappelle dans le livre.,Un tomo negromantico che rialza un Avvoltoio Sepolcrale soggetto alla tua volontà. Combatte al tuo fianco contro gli altri zombie finché non muore. Puoi averne vincolato solo uno alla volta. L'attacco potente lo richiama nel libro.,あなたの意志に縛られた墓場のハゲワシを起こす降霊術の書。死ぬまで、あなたの側で他のゾンビと戦う。同時に縛っておけるのは一体だけ。強攻撃で書物へ呼び戻せる。,당신의 의지에 묶인 무덤 독수리을(를) 일으키는 강령술 서적. 죽을 때까지 당신 곁에서 다른 좀비와 싸운다. 한 번에 하나만 묶어 둘 수 있다. 강공격으로 책 속에 불러들인다.,"Nekromancki tom, który wskrzesza Grobowego Sępa związanego twoją wolą. Walczy u twojego boku z innymi zombie, aż zginie. Naraz możesz mieć związanego tylko jednego. Atak specjalny odwołuje go z powrotem do księgi.",Um tomo necromântico que ergue um Abutre Sepulcral preso à sua vontade. Luta ao seu lado contra outros zumbis até morrer. Você só pode ter um vinculado por vez. O ataque forte o chama de volta para o livro.,"Некромантский фолиант, поднимающий могильного стервятника, подчинённого вашей воле. Он сражается на вашей стороне против других зомби, пока не погибнет. Одновременно можно держать только одного. Силовая атака отзывает его обратно в книгу.",İradene bağlı bir Mezar Akbabası dirilten bir nekromansi kitabı. Ölene kadar yanında diğer zombilere karşı savaşır. Aynı anda yalnızca bir tanesini bağlı tutabilirsin. Güçlü saldırı onu kitaba geri çağırır.,一本亡灵法术典籍,唤起一只受你意志束缚的墓地秃鹫。它会在你身边与其他僵尸战斗,直到死亡。同时只能束缚一只。使用强力攻击可将其召回书中。,一本亡靈法術典籍,喚起一隻受你意志束縛的墓地禿鷲。牠會在你身邊與其他殭屍戰鬥,直到死亡。同時只能束縛一隻。使用強力攻擊可將其召回書中。 +bookSummonZombieGriffinDesc,items,Item,,,,A necromantic tome that raises a grave vulture bound to your will. It fights alongside you against other zombies until it dies. Your servant guards you on its own: any hostile that comes within 20 meters of you gets attacked. Only one servant can be out at a time - summoning another sends the current one back. Power attack to recall it back into the book.,,"Ein nekromantisches Buch, das einen Grabgeier erweckt, der deinem Willen unterworfen ist. Er kämpft an deiner Seite gegen andere Zombies, bis er stirbt. Dein Diener bewacht dich von selbst: Jeder Feind, der dir näher als 20 Meter kommt, wird angegriffen. Es kann immer nur ein Diener draußen sein - beschwörst du einen anderen, kehrt der bisherige zurück. Mit dem Powerangriff rufst du ihn ins Buch zurück.",Un tomo nigromántico que alza un Buitre Sepulcral sometido a tu voluntad. Lucha a tu lado contra otros zombis hasta morir. Tu sirviente te protege por su cuenta: ataca a todo enemigo que se acerque a menos de 20 metros de ti. Solo puede haber un sirviente fuera a la vez: invocar otro hace volver al actual. Usa el ataque potente para devolverlo al libro.,Un ouvrage nécromantique qui relève un Vautour des Tombes soumis à ta volonté. Il combat à tes côtés contre les autres zombies jusqu'à sa mort. Ton serviteur te protège de lui-même : tout ennemi qui s'approche à moins de 20 mètres de toi est attaqué. Un seul serviteur peut être dehors à la fois : en invoquer un autre renvoie l'actuel. L'attaque puissante le rappelle dans le livre.,Un tomo negromantico che rialza un Avvoltoio Sepolcrale soggetto alla tua volontà. Combatte al tuo fianco contro gli altri zombie finché non muore. Il tuo servitore ti protegge da solo: ogni nemico che si avvicina a meno di 20 metri da te viene attaccato. Può essere fuori un solo servitore alla volta: evocarne un altro richiama quello attuale. L'attacco potente lo richiama nel libro.,あなたの意志に縛られた墓場のハゲワシを起こす降霊術の書。死ぬまで、あなたの側で他のゾンビと戦う。僕は自らあなたを守り、20メートル以内に近づいた敵に襲いかかる。同時に出しておける僕は一体だけで、別の僕を呼ぶと今の僕は戻る。強攻撃で書物へ呼び戻せる。,당신의 의지에 묶인 무덤 독수리을(를) 일으키는 강령술 서적. 죽을 때까지 당신 곁에서 다른 좀비와 싸운다. 종복은 스스로 당신을 지키며 20미터 안으로 다가온 적을 공격한다. 종복은 한 번에 하나만 불러낼 수 있고 다른 종복을 소환하면 지금의 종복은 돌아간다. 강공격으로 책 속에 불러들인다.,"Nekromancki tom, który wskrzesza Grobowego Sępa związanego twoją wolą. Walczy u twojego boku z innymi zombie, aż zginie. Twój sługa sam cię strzeże: atakuje każdego wroga, który zbliży się do ciebie na mniej niż 20 metrów. Naraz może być przywołany tylko jeden sługa - przywołanie innego odsyła obecnego. Atak specjalny odwołuje go z powrotem do księgi.",Um tomo necromântico que ergue um Abutre Sepulcral preso à sua vontade. Luta ao seu lado contra outros zumbis até morrer. Seu servo protege você por conta própria: ataca todo inimigo que chegar a menos de 20 metros de você. Só pode haver um servo fora por vez - invocar outro manda o atual de volta. O ataque forte o chama de volta para o livro.,"Некромантский фолиант, поднимающий могильного стервятника, подчинённого вашей воле. Он сражается на вашей стороне против других зомби, пока не погибнет. Слуга сам охраняет вас: нападает на любого врага, подошедшего к вам ближе 20 метров. Одновременно можно держать только одного слугу - призыв другого отзывает нынешнего. Силовая атака отзывает его обратно в книгу.",İradene bağlı bir Mezar Akbabası dirilten bir nekromansi kitabı. Ölene kadar yanında diğer zombilere karşı savaşır. Hizmetkârın seni kendiliğinden korur: sana 20 metreden fazla yaklaşan her düşmana saldırır. Aynı anda yalnızca bir hizmetkâr dışarıda olabilir - bir başkasını çağırmak mevcut olanı geri gönderir. Güçlü saldırı onu kitaba geri çağırır.,一本亡灵法术典籍,唤起一只受你意志束缚的墓地秃鹫。它会在你身边与其他僵尸战斗,直到死亡。仆从会主动护卫你:任何靠近你20米以内的敌人都会遭到攻击。同时只能有一个仆从在外——召唤另一个会让当前的仆从返回。使用强力攻击可将其召回书中。,一本亡靈法術典籍,喚起一隻受你意志束縛的墓地禿鷲。牠會在你身邊與其他殭屍戰鬥,直到死亡。僕從會主動護衛你:任何靠近你20公尺以內的敵人都會遭到攻擊。同時只能有一個僕從在外——召喚另一個會讓目前的僕從返回。使用強力攻擊可將其召回書中。 necroZombieGriffinAlreadyActive,items,Item,,,,You already have a Grave Vulture - use the power attack to recall it,,Du hast bereits einen Grabgeier - ruf ihn mit dem Machtangriff zurück,Ya tienes un buitre sepulcral: usa el ataque fuerte para devolverlo,Tu as déjà un vautour des tombes - rappelle-le avec l’attaque puissante,Hai già un avvoltoio sepolcrale: richiamalo con l’attacco potente,すでに墓場のハゲワシがいます - パワーアタックで呼び戻してください,이미 무덤 독수리가 있습니다 - 강공격으로 불러들이세요,Masz już grobowego sępa - odwołaj go silnym atakiem,Você já tem um abutre sepulcral - use o ataque forte para chamá-lo de volta,У вас уже есть могильный стервятник - отзовите его силовой атакой,Zaten bir Mezar Akbabası var - güçlü saldırıyla geri çağır,你已经有一只墓地秃鹫了——用重击将它收回,你已經有一隻墓地禿鷲了——用重擊將牠收回 necroZombieGriffinRecalled,items,Item,,,,Grave Vulture recalled,,Grabgeier zurückgerufen,Buitre sepulcral devuelto,Vautour des tombes rappelé,Avvoltoio sepolcrale richiamato,墓場のハゲワシを呼び戻しました,무덤 독수리를 불러들였습니다,Odwołano: Grobowy sęp,Abutre sepulcral chamado de volta,Могильный стервятник отозван,Mezar Akbabası geri çağrıldı,已召回墓地秃鹫,已召回墓地禿鷲 necroZombieGriffinNothingToRecall,items,Item,,,,No Grave Vulture to recall,,Kein Grabgeier zum Zurückrufen,No hay buitre sepulcral que devolver,Aucun vautour des tombes à rappeler,Nessun avvoltoio sepolcrale da richiamare,呼び戻す墓場のハゲワシがいません,불러들일 무덤 독수리가 없습니다,Nie ma grobowego sępa do odwołania,Não há abutre sepulcral para chamar de volta,Нет могильного стервятника для отзыва,Geri çağrılacak Mezar Akbabası yok,没有可召回的墓地秃鹫,沒有可召回的墓地禿鷲 bookSummonZombieBear,items,Item,,,,Summon Zombie Bear,,Zombiebär beschwören,Invocar Oso Zombi,Invoquer un Ours Zombie,Evoca Orso Zombie,ゾンビ熊召喚,좀비 곰 소환,Przyzwanie: Niedźwiedź Zombie,Invocar Urso Zumbi,Призыв зомбомедведя,Zombi Ayı Çağırma,召唤僵尸熊,召喚殭屍熊 -bookSummonZombieBearDesc,items,Item,,,,A necromantic tome that raises a zombie bear bound to your will. It fights alongside you against other zombies until it dies. You can only have one bound at a time. Power attack to recall it back into the book.,,"Ein nekromantisches Buch, das einen Zombiebären erweckt, der deinem Willen unterworfen ist. Er kämpft an deiner Seite gegen andere Zombies, bis er stirbt. Du kannst immer nur einen gebunden haben. Mit dem Powerangriff rufst du ihn ins Buch zurück.",Un tomo nigromántico que alza un Oso Zombi sometido a tu voluntad. Lucha a tu lado contra otros zombis hasta morir. Solo puedes tener uno vinculado a la vez. Usa el ataque potente para devolverlo al libro.,Un ouvrage nécromantique qui relève un Ours Zombie soumis à ta volonté. Il combat à tes côtés contre les autres zombies jusqu'à sa mort. Tu ne peux en lier qu'un seul à la fois. L'attaque puissante le rappelle dans le livre.,Un tomo negromantico che rialza un Orso Zombie soggetto alla tua volontà. Combatte al tuo fianco contro gli altri zombie finché non muore. Puoi averne vincolato solo uno alla volta. L'attacco potente lo richiama nel libro.,あなたの意志に縛られたゾンビ熊を起こす降霊術の書。死ぬまで、あなたの側で他のゾンビと戦う。同時に縛っておけるのは一体だけ。強攻撃で書物へ呼び戻せる。,당신의 의지에 묶인 좀비 곰을(를) 일으키는 강령술 서적. 죽을 때까지 당신 곁에서 다른 좀비와 싸운다. 한 번에 하나만 묶어 둘 수 있다. 강공격으로 책 속에 불러들인다.,"Nekromancki tom, który wskrzesza Niedźwiedzia Zombie związanego twoją wolą. Walczy u twojego boku z innymi zombie, aż zginie. Naraz możesz mieć związanego tylko jednego. Atak specjalny odwołuje go z powrotem do księgi.",Um tomo necromântico que ergue um Urso Zumbi preso à sua vontade. Luta ao seu lado contra outros zumbis até morrer. Você só pode ter um vinculado por vez. O ataque forte o chama de volta para o livro.,"Некромантский фолиант, поднимающий зомбомедведя, подчинённого вашей воле. Он сражается на вашей стороне против других зомби, пока не погибнет. Одновременно можно держать только одного. Силовая атака отзывает его обратно в книгу.",İradene bağlı bir Zombi Ayı dirilten bir nekromansi kitabı. Ölene kadar yanında diğer zombilere karşı savaşır. Aynı anda yalnızca bir tanesini bağlı tutabilirsin. Güçlü saldırı onu kitaba geri çağırır.,一本亡灵法术典籍,唤起一只受你意志束缚的僵尸熊。它会在你身边与其他僵尸战斗,直到死亡。同时只能束缚一只。使用强力攻击可将其召回书中。,一本亡靈法術典籍,喚起一隻受你意志束縛的殭屍熊。牠會在你身邊與其他殭屍戰鬥,直到死亡。同時只能束縛一隻。使用強力攻擊可將其召回書中。 +bookSummonZombieBearDesc,items,Item,,,,A necromantic tome that raises a zombie bear bound to your will. It fights alongside you against other zombies until it dies. Your servant guards you on its own: any hostile that comes within 20 meters of you gets attacked. Only one servant can be out at a time - summoning another sends the current one back. Power attack to recall it back into the book.,,"Ein nekromantisches Buch, das einen Zombiebären erweckt, der deinem Willen unterworfen ist. Er kämpft an deiner Seite gegen andere Zombies, bis er stirbt. Dein Diener bewacht dich von selbst: Jeder Feind, der dir näher als 20 Meter kommt, wird angegriffen. Es kann immer nur ein Diener draußen sein - beschwörst du einen anderen, kehrt der bisherige zurück. Mit dem Powerangriff rufst du ihn ins Buch zurück.",Un tomo nigromántico que alza un Oso Zombi sometido a tu voluntad. Lucha a tu lado contra otros zombis hasta morir. Tu sirviente te protege por su cuenta: ataca a todo enemigo que se acerque a menos de 20 metros de ti. Solo puede haber un sirviente fuera a la vez: invocar otro hace volver al actual. Usa el ataque potente para devolverlo al libro.,Un ouvrage nécromantique qui relève un Ours Zombie soumis à ta volonté. Il combat à tes côtés contre les autres zombies jusqu'à sa mort. Ton serviteur te protège de lui-même : tout ennemi qui s'approche à moins de 20 mètres de toi est attaqué. Un seul serviteur peut être dehors à la fois : en invoquer un autre renvoie l'actuel. L'attaque puissante le rappelle dans le livre.,Un tomo negromantico che rialza un Orso Zombie soggetto alla tua volontà. Combatte al tuo fianco contro gli altri zombie finché non muore. Il tuo servitore ti protegge da solo: ogni nemico che si avvicina a meno di 20 metri da te viene attaccato. Può essere fuori un solo servitore alla volta: evocarne un altro richiama quello attuale. L'attacco potente lo richiama nel libro.,あなたの意志に縛られたゾンビ熊を起こす降霊術の書。死ぬまで、あなたの側で他のゾンビと戦う。僕は自らあなたを守り、20メートル以内に近づいた敵に襲いかかる。同時に出しておける僕は一体だけで、別の僕を呼ぶと今の僕は戻る。強攻撃で書物へ呼び戻せる。,당신의 의지에 묶인 좀비 곰을(를) 일으키는 강령술 서적. 죽을 때까지 당신 곁에서 다른 좀비와 싸운다. 종복은 스스로 당신을 지키며 20미터 안으로 다가온 적을 공격한다. 종복은 한 번에 하나만 불러낼 수 있고 다른 종복을 소환하면 지금의 종복은 돌아간다. 강공격으로 책 속에 불러들인다.,"Nekromancki tom, który wskrzesza Niedźwiedzia Zombie związanego twoją wolą. Walczy u twojego boku z innymi zombie, aż zginie. Twój sługa sam cię strzeże: atakuje każdego wroga, który zbliży się do ciebie na mniej niż 20 metrów. Naraz może być przywołany tylko jeden sługa - przywołanie innego odsyła obecnego. Atak specjalny odwołuje go z powrotem do księgi.",Um tomo necromântico que ergue um Urso Zumbi preso à sua vontade. Luta ao seu lado contra outros zumbis até morrer. Seu servo protege você por conta própria: ataca todo inimigo que chegar a menos de 20 metros de você. Só pode haver um servo fora por vez - invocar outro manda o atual de volta. O ataque forte o chama de volta para o livro.,"Некромантский фолиант, поднимающий зомбомедведя, подчинённого вашей воле. Он сражается на вашей стороне против других зомби, пока не погибнет. Слуга сам охраняет вас: нападает на любого врага, подошедшего к вам ближе 20 метров. Одновременно можно держать только одного слугу - призыв другого отзывает нынешнего. Силовая атака отзывает его обратно в книгу.",İradene bağlı bir Zombi Ayı dirilten bir nekromansi kitabı. Ölene kadar yanında diğer zombilere karşı savaşır. Hizmetkârın seni kendiliğinden korur: sana 20 metreden fazla yaklaşan her düşmana saldırır. Aynı anda yalnızca bir hizmetkâr dışarıda olabilir - bir başkasını çağırmak mevcut olanı geri gönderir. Güçlü saldırı onu kitaba geri çağırır.,一本亡灵法术典籍,唤起一只受你意志束缚的僵尸熊。它会在你身边与其他僵尸战斗,直到死亡。仆从会主动护卫你:任何靠近你20米以内的敌人都会遭到攻击。同时只能有一个仆从在外——召唤另一个会让当前的仆从返回。使用强力攻击可将其召回书中。,一本亡靈法術典籍,喚起一隻受你意志束縛的殭屍熊。牠會在你身邊與其他殭屍戰鬥,直到死亡。僕從會主動護衛你:任何靠近你20公尺以內的敵人都會遭到攻擊。同時只能有一個僕從在外——召喚另一個會讓目前的僕從返回。使用強力攻擊可將其召回書中。 necroZombieBearAlreadyActive,items,Item,,,,You already have a Zombie Bear - use the power attack to recall it,,Du hast bereits einen Zombiebären – rufe ihn mit dem Powerangriff zurück,Ya tienes un Oso Zombi: usa el ataque potente para devolverlo,Tu as déjà un Ours Zombie – utilise l'attaque puissante pour le rappeler,Hai già un Orso Zombie: usa l'attacco potente per richiamarlo,すでにゾンビ熊がいます – 強攻撃で呼び戻してください,이미 좀비 곰이(가) 있습니다 - 강공격으로 불러들이세요,Masz już Niedźwiedzia Zombie – odwołaj go atakiem specjalnym,Você já tem um Urso Zumbi - use o ataque forte para chamá-lo de volta,У вас уже есть зомбомедведь - отзовите его силовой атакой,Zaten bir Zombi Ayı var - geri çağırmak için güçlü saldırıyı kullan,你已经有一只僵尸熊了——用强力攻击将其召回,你已經有一隻殭屍熊了——用強力攻擊將其召回 necroZombieBearRecalled,items,Item,,,,Zombie Bear recalled,,Zombiebär zurückgerufen,Oso Zombi devuelto,Ours Zombie rappelé,Orso Zombie richiamato,ゾンビ熊を呼び戻しました,좀비 곰을(를) 불러들였습니다,Odwołano: Niedźwiedź Zombie,Urso Zumbi chamado de volta,Зомбомедведь отозван,Zombi Ayı geri çağrıldı,已召回僵尸熊,已召回殭屍熊 necroZombieBearNothingToRecall,items,Item,,,,No Zombie Bear to recall,,Kein Zombiebär zum Zurückrufen vorhanden,No hay ningún Oso Zombi que devolver,Aucun Ours Zombie à rappeler,Nessun Orso Zombie da richiamare,呼び戻せるゾンビ熊がいません,불러들일 좀비 곰이(가) 없습니다,Brak Niedźwiedzia Zombie do odwołania,Não há nenhum Urso Zumbi para chamar de volta,Нет зомбомедведя для отзыва,Geri çağrılacak bir Zombi Ayı yok,没有可召回的僵尸熊,沒有可召回的殭屍熊 bookSummonZombieWolf,items,Item,,,,Summon Zombie Wolf,,Zombiewolf beschwören,Invocar Lobo Zombi,Invoquer un Loup Zombie,Evoca Lupo Zombie,ゾンビ狼召喚,좀비 늑대 소환,Przyzwanie: Wilk Zombie,Invocar Lobo Zumbi,Призыв зомбоволка,Zombi Kurt Çağırma,召唤僵尸狼,召喚殭屍狼 -bookSummonZombieWolfDesc,items,Item,,,,A necromantic tome that raises a zombie wolf bound to your will. It fights alongside you against other zombies until it dies. You can only have one bound at a time. Power attack to recall it back into the book.,,"Ein nekromantisches Buch, das einen Zombiewolf erweckt, der deinem Willen unterworfen ist. Er kämpft an deiner Seite gegen andere Zombies, bis er stirbt. Du kannst immer nur einen gebunden haben. Mit dem Powerangriff rufst du ihn ins Buch zurück.",Un tomo nigromántico que alza un Lobo Zombi sometido a tu voluntad. Lucha a tu lado contra otros zombis hasta morir. Solo puedes tener uno vinculado a la vez. Usa el ataque potente para devolverlo al libro.,Un ouvrage nécromantique qui relève un Loup Zombie soumis à ta volonté. Il combat à tes côtés contre les autres zombies jusqu'à sa mort. Tu ne peux en lier qu'un seul à la fois. L'attaque puissante le rappelle dans le livre.,Un tomo negromantico che rialza un Lupo Zombie soggetto alla tua volontà. Combatte al tuo fianco contro gli altri zombie finché non muore. Puoi averne vincolato solo uno alla volta. L'attacco potente lo richiama nel libro.,あなたの意志に縛られたゾンビ狼を起こす降霊術の書。死ぬまで、あなたの側で他のゾンビと戦う。同時に縛っておけるのは一体だけ。強攻撃で書物へ呼び戻せる。,당신의 의지에 묶인 좀비 늑대을(를) 일으키는 강령술 서적. 죽을 때까지 당신 곁에서 다른 좀비와 싸운다. 한 번에 하나만 묶어 둘 수 있다. 강공격으로 책 속에 불러들인다.,"Nekromancki tom, który wskrzesza Wilka Zombie związanego twoją wolą. Walczy u twojego boku z innymi zombie, aż zginie. Naraz możesz mieć związanego tylko jednego. Atak specjalny odwołuje go z powrotem do księgi.",Um tomo necromântico que ergue um Lobo Zumbi preso à sua vontade. Luta ao seu lado contra outros zumbis até morrer. Você só pode ter um vinculado por vez. O ataque forte o chama de volta para o livro.,"Некромантский фолиант, поднимающий зомбоволка, подчинённого вашей воле. Он сражается на вашей стороне против других зомби, пока не погибнет. Одновременно можно держать только одного. Силовая атака отзывает его обратно в книгу.",İradene bağlı bir Zombi Kurt dirilten bir nekromansi kitabı. Ölene kadar yanında diğer zombilere karşı savaşır. Aynı anda yalnızca bir tanesini bağlı tutabilirsin. Güçlü saldırı onu kitaba geri çağırır.,一本亡灵法术典籍,唤起一只受你意志束缚的僵尸狼。它会在你身边与其他僵尸战斗,直到死亡。同时只能束缚一只。使用强力攻击可将其召回书中。,一本亡靈法術典籍,喚起一隻受你意志束縛的殭屍狼。牠會在你身邊與其他殭屍戰鬥,直到死亡。同時只能束縛一隻。使用強力攻擊可將其召回書中。 +bookSummonZombieWolfDesc,items,Item,,,,A necromantic tome that raises a zombie wolf bound to your will. It fights alongside you against other zombies until it dies. Your servant guards you on its own: any hostile that comes within 20 meters of you gets attacked. Only one servant can be out at a time - summoning another sends the current one back. Power attack to recall it back into the book.,,"Ein nekromantisches Buch, das einen Zombiewolf erweckt, der deinem Willen unterworfen ist. Er kämpft an deiner Seite gegen andere Zombies, bis er stirbt. Dein Diener bewacht dich von selbst: Jeder Feind, der dir näher als 20 Meter kommt, wird angegriffen. Es kann immer nur ein Diener draußen sein - beschwörst du einen anderen, kehrt der bisherige zurück. Mit dem Powerangriff rufst du ihn ins Buch zurück.",Un tomo nigromántico que alza un Lobo Zombi sometido a tu voluntad. Lucha a tu lado contra otros zombis hasta morir. Tu sirviente te protege por su cuenta: ataca a todo enemigo que se acerque a menos de 20 metros de ti. Solo puede haber un sirviente fuera a la vez: invocar otro hace volver al actual. Usa el ataque potente para devolverlo al libro.,Un ouvrage nécromantique qui relève un Loup Zombie soumis à ta volonté. Il combat à tes côtés contre les autres zombies jusqu'à sa mort. Ton serviteur te protège de lui-même : tout ennemi qui s'approche à moins de 20 mètres de toi est attaqué. Un seul serviteur peut être dehors à la fois : en invoquer un autre renvoie l'actuel. L'attaque puissante le rappelle dans le livre.,Un tomo negromantico che rialza un Lupo Zombie soggetto alla tua volontà. Combatte al tuo fianco contro gli altri zombie finché non muore. Il tuo servitore ti protegge da solo: ogni nemico che si avvicina a meno di 20 metri da te viene attaccato. Può essere fuori un solo servitore alla volta: evocarne un altro richiama quello attuale. L'attacco potente lo richiama nel libro.,あなたの意志に縛られたゾンビ狼を起こす降霊術の書。死ぬまで、あなたの側で他のゾンビと戦う。僕は自らあなたを守り、20メートル以内に近づいた敵に襲いかかる。同時に出しておける僕は一体だけで、別の僕を呼ぶと今の僕は戻る。強攻撃で書物へ呼び戻せる。,당신의 의지에 묶인 좀비 늑대을(를) 일으키는 강령술 서적. 죽을 때까지 당신 곁에서 다른 좀비와 싸운다. 종복은 스스로 당신을 지키며 20미터 안으로 다가온 적을 공격한다. 종복은 한 번에 하나만 불러낼 수 있고 다른 종복을 소환하면 지금의 종복은 돌아간다. 강공격으로 책 속에 불러들인다.,"Nekromancki tom, który wskrzesza Wilka Zombie związanego twoją wolą. Walczy u twojego boku z innymi zombie, aż zginie. Twój sługa sam cię strzeże: atakuje każdego wroga, który zbliży się do ciebie na mniej niż 20 metrów. Naraz może być przywołany tylko jeden sługa - przywołanie innego odsyła obecnego. Atak specjalny odwołuje go z powrotem do księgi.",Um tomo necromântico que ergue um Lobo Zumbi preso à sua vontade. Luta ao seu lado contra outros zumbis até morrer. Seu servo protege você por conta própria: ataca todo inimigo que chegar a menos de 20 metros de você. Só pode haver um servo fora por vez - invocar outro manda o atual de volta. O ataque forte o chama de volta para o livro.,"Некромантский фолиант, поднимающий зомбоволка, подчинённого вашей воле. Он сражается на вашей стороне против других зомби, пока не погибнет. Слуга сам охраняет вас: нападает на любого врага, подошедшего к вам ближе 20 метров. Одновременно можно держать только одного слугу - призыв другого отзывает нынешнего. Силовая атака отзывает его обратно в книгу.",İradene bağlı bir Zombi Kurt dirilten bir nekromansi kitabı. Ölene kadar yanında diğer zombilere karşı savaşır. Hizmetkârın seni kendiliğinden korur: sana 20 metreden fazla yaklaşan her düşmana saldırır. Aynı anda yalnızca bir hizmetkâr dışarıda olabilir - bir başkasını çağırmak mevcut olanı geri gönderir. Güçlü saldırı onu kitaba geri çağırır.,一本亡灵法术典籍,唤起一只受你意志束缚的僵尸狼。它会在你身边与其他僵尸战斗,直到死亡。仆从会主动护卫你:任何靠近你20米以内的敌人都会遭到攻击。同时只能有一个仆从在外——召唤另一个会让当前的仆从返回。使用强力攻击可将其召回书中。,一本亡靈法術典籍,喚起一隻受你意志束縛的殭屍狼。牠會在你身邊與其他殭屍戰鬥,直到死亡。僕從會主動護衛你:任何靠近你20公尺以內的敵人都會遭到攻擊。同時只能有一個僕從在外——召喚另一個會讓目前的僕從返回。使用強力攻擊可將其召回書中。 necroZombieWolfAlreadyActive,items,Item,,,,You already have a Zombie Wolf - use the power attack to recall it,,Du hast bereits einen Zombiewolf – rufe ihn mit dem Powerangriff zurück,Ya tienes un Lobo Zombi: usa el ataque potente para devolverlo,Tu as déjà un Loup Zombie – utilise l'attaque puissante pour le rappeler,Hai già un Lupo Zombie: usa l'attacco potente per richiamarlo,すでにゾンビ狼がいます – 強攻撃で呼び戻してください,이미 좀비 늑대이(가) 있습니다 - 강공격으로 불러들이세요,Masz już Wilka Zombie – odwołaj go atakiem specjalnym,Você já tem um Lobo Zumbi - use o ataque forte para chamá-lo de volta,У вас уже есть зомбоволк - отзовите его силовой атакой,Zaten bir Zombi Kurt var - geri çağırmak için güçlü saldırıyı kullan,你已经有一只僵尸狼了——用强力攻击将其召回,你已經有一隻殭屍狼了——用強力攻擊將其召回 necroZombieWolfRecalled,items,Item,,,,Zombie Wolf recalled,,Zombiewolf zurückgerufen,Lobo Zombi devuelto,Loup Zombie rappelé,Lupo Zombie richiamato,ゾンビ狼を呼び戻しました,좀비 늑대을(를) 불러들였습니다,Odwołano: Wilk Zombie,Lobo Zumbi chamado de volta,Зомбоволк отозван,Zombi Kurt geri çağrıldı,已召回僵尸狼,已召回殭屍狼 necroZombieWolfNothingToRecall,items,Item,,,,No Zombie Wolf to recall,,Kein Zombiewolf zum Zurückrufen vorhanden,No hay ningún Lobo Zombi que devolver,Aucun Loup Zombie à rappeler,Nessun Lupo Zombie da richiamare,呼び戻せるゾンビ狼がいません,불러들일 좀비 늑대이(가) 없습니다,Brak Wilka Zombie do odwołania,Não há nenhum Lobo Zumbi para chamar de volta,Нет зомбоволка для отзыва,Geri çağrılacak bir Zombi Kurt yok,没有可召回的僵尸狼,沒有可召回的殭屍狼 @@ -150,7 +150,7 @@ challengeNecroPortalBlueShort,challenges,,,,,Craft the Blue Portal Stone,,Stelle challengeNecroPortalBlueDesc,challenges,,,,,"A hundred and fifty measures of ash, and every one of them was a zombie you marked and put down. That is the price of never having to walk home again.",,"Hundertfünfzig Maß Asche, und jedes davon war ein Zombie, den du gezeichnet und niedergestreckt hast. Das ist der Preis dafür, nie wieder nach Hause laufen zu müssen.","Ciento cincuenta medidas de ceniza, y cada una fue un zombi que marcaste y abatiste. Ese es el precio de no volver a caminar a casa.","Cent cinquante mesures de cendre, et chacune fut un zombie que vous avez marqué et abattu. C'est le prix pour ne plus jamais rentrer à pied.","Centocinquanta misure di cenere, e ognuna era uno zombi che hai marchiato e abbattuto. Questo è il prezzo per non tornare mai più a casa a piedi.",灰は百五十。その一つ一つが、お前が印を刻んで沈めたゾンビだ。二度と歩いて帰らずに済むための代価である。,재 백오십. 그 하나하나가 당신이 표식을 남기고 쓰러뜨린 좀비입니다. 다시는 걸어서 돌아가지 않기 위한 대가입니다.,"Sto pięćdziesiąt miar prochu, a każda z nich była zombie, które oznaczyłeś i położyłeś. Taka jest cena tego, by nigdy więcej nie wracać do domu piechotą.","Cento e cinquenta medidas de cinzas, e cada uma foi um zumbi que você marcou e derrubou. Esse é o preço de nunca mais voltar a pé para casa.","Сто пятьдесят мер праха, и каждая была зомби, которого вы пометили и упокоили. Такова цена того, чтобы больше никогда не идти домой пешком.","Yüz elli ölçek kül ve her biri, işaretleyip yere serdiğin bir zombiydi. Bir daha asla eve yürümek zorunda kalmamanın bedeli budur.",一百五十份骨灰,每一份都是你标记并放倒的行尸。这便是此后再不必徒步归家的代价。,一百五十份骨灰,每一份都是你標記並放倒的行屍。這便是此後再不必徒步歸家的代價。 necroRatSpirit,entityclasses,Entity,,,,Rat Spirit,,Rattengeist,Espíritu de rata,Esprit de rat,Spirito di ratto,ネズミの霊,쥐의 영혼,Duch szczura,Espírito de rato,Дух крысы,Sıçan Ruhu,鼠灵,鼠靈 bookSummonRatSpirit,items,Item,,,,Scroll of the Rat Spirit,,Schriftrolle des Rattengeistes,Pergamino del espíritu de rata,Parchemin de l’esprit de rat,Pergamena dello spirito di ratto,ネズミの霊の巻物,쥐의 영혼 두루마리,Zwój ducha szczura,Pergaminho do espírito de rato,Свиток духа крысы,Sıçan Ruhu Tomarı,鼠灵卷轴,鼠靈卷軸 -bookSummonRatSpiritDesc,items,Item,,,,"The first servant a necromancer can hold: a small grey shade that never attacks on its own. It keeps to your right and just behind you, and where a wall stands in its way it passes straight through rather than gnawing - it breaks nothing. Use the scroll again while it is out and the rat goes for whatever your crosshair rests on. Its bite is almost harmless, but it pins the bitten down for a few seconds and leaves them bleeding. Power attack recalls it. The scroll is never used up.",,"Der erste Diener, den ein Nekromant halten kann: ein kleiner grauer Schatten, der von sich aus niemals angreift. Er hält sich rechts hinter dir, und wo eine Wand im Weg steht, geht er einfach hindurch, statt zu nagen - er zerstört nichts. Benutze die Schriftrolle erneut, während er draußen ist, und die Ratte stürzt sich auf das, worauf dein Fadenkreuz ruht. Ihr Biss ist fast harmlos, wirft den Gebissenen aber für einige Sekunden zu Boden und lässt ihn bluten. Der Machtangriff ruft sie zurück. Die Schriftrolle wird nie verbraucht.","El primer sirviente que un nigromante puede tener: una pequeña sombra gris que nunca ataca por su cuenta. Se mantiene a tu derecha y algo por detrás, y donde hay un muro simplemente lo atraviesa en vez de roerlo: no rompe nada. Usa el pergamino otra vez mientras está fuera y la rata se lanzará sobre aquello a lo que apuntes. Su mordisco es casi inofensivo, pero derriba al mordido durante unos segundos y lo deja sangrando. El ataque fuerte la hace volver. El pergamino nunca se consume.","Le premier serviteur qu’un nécromancien puisse tenir : une petite ombre grise qui n’attaque jamais d’elle-même. Elle se tient à ta droite, un peu en arrière, et là où un mur se dresse elle le traverse au lieu de le ronger - elle ne casse rien. Utilise le parchemin à nouveau pendant qu’elle est là et le rat fonce sur ce que vise ton réticule. Sa morsure est presque inoffensive, mais elle cloue au sol pendant quelques secondes et fait saigner. L’attaque puissante le rappelle. Le parchemin ne se consomme jamais.","Il primo servitore che un negromante possa avere: una piccola ombra grigia che non attacca mai di sua iniziativa. Resta alla tua destra e poco dietro di te, e dove c’è un muro lo attraversa invece di rosicchiarlo: non rompe nulla. Usa di nuovo la pergamena mentre è fuori e il ratto si avventa su ciò che inquadri col mirino. Il suo morso è quasi innocuo, ma inchioda a terra per qualche secondo e lascia sanguinare. L’attacco potente lo richiama. La pergamena non si consuma mai.",降霊術師が最初に従えられる僕。自分からは決して襲わない、小さな灰色の影だ。あなたの右斜め後ろに付き従い、壁が立ちふさがればかじらずにそのまま抜ける - 何も壊さない。出ているあいだにもう一度巻物を使えば、ネズミは照準の先にいるものへ飛びかかる。その噛みつきはほとんど無害だが、噛まれた者を数秒のあいだ組み伏せ、出血させる。パワーアタックで呼び戻せる。巻物は消費されない。,"강령술사가 처음으로 거느릴 수 있는 종복입니다. 스스로는 결코 공격하지 않는 작고 잿빛인 그림자로, 당신의 오른쪽 뒤에 붙어 다니며, 벽이 앞을 막으면 갉는 대신 그대로 통과합니다 - 아무것도 부수지 않습니다. 밖에 나와 있을 때 두루마리를 다시 쓰면 쥐는 조준선이 가리키는 대상에게 달려듭니다. 물린 상대는 거의 다치지 않지만 몇 초 동안 쓰러져 있고 출혈합니다. 강공격으로 불러들입니다. 두루마리는 소모되지 않습니다.","Pierwszy sługa, jakiego nekromanta może utrzymać: mały szary cień, który nigdy nie atakuje z własnej woli. Trzyma się po twojej prawej i nieco z tyłu, a gdy na drodze staje ściana, przechodzi przez nią zamiast ją gryźć - niczego nie niszczy. Użyj zwoju ponownie, gdy szczur jest na zewnątrz, a rzuci się na to, na czym spoczywa twój celownik. Jego ugryzienie jest niemal nieszkodliwe, ale przygważdża ugryzionego na kilka sekund i wywołuje krwawienie. Silny atak go odwołuje. Zwój nigdy się nie zużywa.","O primeiro servo que um necromante consegue manter: uma pequena sombra cinzenta que nunca ataca por conta própria. Fica à sua direita e um pouco atrás, e onde há uma parede ele simplesmente a atravessa em vez de roê-la - não quebra nada. Use o pergaminho de novo enquanto ele estiver fora e o rato avança sobre aquilo que sua mira aponta. A mordida é quase inofensiva, mas prende o mordido por alguns segundos e o deixa sangrando. O ataque forte o chama de volta. O pergaminho nunca se gasta.","Первый слуга, которого может держать некромант: маленькая серая тень, которая никогда не нападает сама. Она держится справа и чуть позади вас, а там, где на пути стена, проходит сквозь неё, а не грызёт - она не ломает ничего. Примените свиток ещё раз, пока крыса призвана, и она бросится на того, на ком стоит ваш прицел. Укус её почти безвреден, но укушенный на несколько секунд валится с ног и начинает истекать кровью. Силовая атака отзывает её. Свиток не расходуется.","Bir nekromantın tutabileceği ilk hizmetkâr: kendiliğinden asla saldırmayan, küçük gri bir gölge. Sağında ve biraz arkanda durur; yolunda bir duvar varsa kemirmek yerine içinden geçer - hiçbir şeyi kırmaz. O dışarıdayken tomarı tekrar kullan, sıçan nişangâhının üzerinde durduğu şeyin üstüne atılır. Isırığı neredeyse zararsızdır ama ısırdığını birkaç saniye yere serer ve kanatır. Güçlü saldırı onu geri çağırır. Tomar asla tükenmez.",亡灵法师能驾驭的第一个仆从:一道小小的灰影,从不主动攻击。它跟在你右后方,遇到墙壁便径直穿过,而不去啃咬——它什么也不会破坏。它在外时再次使用卷轴,鼠灵便会扑向你准星所指之物。它的撕咬几乎无害,却能将被咬者按在地上数秒并使其流血。重击可将其收回。卷轴永不消耗。,亡靈法師能駕馭的第一個僕從:一道小小的灰影,從不主動攻擊。牠跟在你右後方,遇到牆壁便逕直穿過,而不去啃咬——牠什麼也不會破壞。牠在外時再次使用卷軸,鼠靈便會撲向你準星所指之物。牠的撕咬幾乎無害,卻能將被咬者按在地上數秒並使其流血。重擊可將其收回。卷軸永不消耗。 +bookSummonRatSpiritDesc,items,Item,,,,"The first servant a necromancer can hold: a small grey shade that never attacks on its own. It keeps to your right and just behind you, and where a wall stands in its way it passes straight through rather than gnawing - it breaks nothing. Use the scroll again while it is out and the rat goes for whatever your crosshair rests on. Its bite is almost harmless, but it pins the bitten down for a few seconds and leaves them bleeding. Power attack recalls it. The scroll is never used up. Only one servant can be out at a time - summoning another sends the current one back.",,"Der erste Diener, den ein Nekromant halten kann: ein kleiner grauer Schatten, der von sich aus niemals angreift. Er hält sich rechts hinter dir, und wo eine Wand im Weg steht, geht er einfach hindurch, statt zu nagen - er zerstört nichts. Benutze die Schriftrolle erneut, während er draußen ist, und die Ratte stürzt sich auf das, worauf dein Fadenkreuz ruht. Ihr Biss ist fast harmlos, wirft den Gebissenen aber für einige Sekunden zu Boden und lässt ihn bluten. Der Machtangriff ruft sie zurück. Die Schriftrolle wird nie verbraucht. Es kann immer nur ein Diener draußen sein - beschwörst du einen anderen, kehrt der bisherige zurück.","El primer sirviente que un nigromante puede tener: una pequeña sombra gris que nunca ataca por su cuenta. Se mantiene a tu derecha y algo por detrás, y donde hay un muro simplemente lo atraviesa en vez de roerlo: no rompe nada. Usa el pergamino otra vez mientras está fuera y la rata se lanzará sobre aquello a lo que apuntes. Su mordisco es casi inofensivo, pero derriba al mordido durante unos segundos y lo deja sangrando. El ataque fuerte la hace volver. El pergamino nunca se consume. Solo puede haber un sirviente fuera a la vez: invocar otro hace volver al actual.","Le premier serviteur qu’un nécromancien puisse tenir : une petite ombre grise qui n’attaque jamais d’elle-même. Elle se tient à ta droite, un peu en arrière, et là où un mur se dresse elle le traverse au lieu de le ronger - elle ne casse rien. Utilise le parchemin à nouveau pendant qu’elle est là et le rat fonce sur ce que vise ton réticule. Sa morsure est presque inoffensive, mais elle cloue au sol pendant quelques secondes et fait saigner. L’attaque puissante le rappelle. Le parchemin ne se consomme jamais. Un seul serviteur peut être dehors à la fois : en invoquer un autre renvoie l'actuel.","Il primo servitore che un negromante possa avere: una piccola ombra grigia che non attacca mai di sua iniziativa. Resta alla tua destra e poco dietro di te, e dove c’è un muro lo attraversa invece di rosicchiarlo: non rompe nulla. Usa di nuovo la pergamena mentre è fuori e il ratto si avventa su ciò che inquadri col mirino. Il suo morso è quasi innocuo, ma inchioda a terra per qualche secondo e lascia sanguinare. L’attacco potente lo richiama. La pergamena non si consuma mai. Può essere fuori un solo servitore alla volta: evocarne un altro richiama quello attuale.",降霊術師が最初に従えられる僕。自分からは決して襲わない、小さな灰色の影だ。あなたの右斜め後ろに付き従い、壁が立ちふさがればかじらずにそのまま抜ける - 何も壊さない。出ているあいだにもう一度巻物を使えば、ネズミは照準の先にいるものへ飛びかかる。その噛みつきはほとんど無害だが、噛まれた者を数秒のあいだ組み伏せ、出血させる。パワーアタックで呼び戻せる。巻物は消費されない。同時に出しておける僕は一体だけで、別の僕を呼ぶと今の僕は戻る。,"강령술사가 처음으로 거느릴 수 있는 종복입니다. 스스로는 결코 공격하지 않는 작고 잿빛인 그림자로, 당신의 오른쪽 뒤에 붙어 다니며, 벽이 앞을 막으면 갉는 대신 그대로 통과합니다 - 아무것도 부수지 않습니다. 밖에 나와 있을 때 두루마리를 다시 쓰면 쥐는 조준선이 가리키는 대상에게 달려듭니다. 물린 상대는 거의 다치지 않지만 몇 초 동안 쓰러져 있고 출혈합니다. 강공격으로 불러들입니다. 두루마리는 소모되지 않습니다. 종복은 한 번에 하나만 불러낼 수 있고 다른 종복을 소환하면 지금의 종복은 돌아갑니다.","Pierwszy sługa, jakiego nekromanta może utrzymać: mały szary cień, który nigdy nie atakuje z własnej woli. Trzyma się po twojej prawej i nieco z tyłu, a gdy na drodze staje ściana, przechodzi przez nią zamiast ją gryźć - niczego nie niszczy. Użyj zwoju ponownie, gdy szczur jest na zewnątrz, a rzuci się na to, na czym spoczywa twój celownik. Jego ugryzienie jest niemal nieszkodliwe, ale przygważdża ugryzionego na kilka sekund i wywołuje krwawienie. Silny atak go odwołuje. Zwój nigdy się nie zużywa. Naraz może być przywołany tylko jeden sługa - przywołanie innego odsyła obecnego.","O primeiro servo que um necromante consegue manter: uma pequena sombra cinzenta que nunca ataca por conta própria. Fica à sua direita e um pouco atrás, e onde há uma parede ele simplesmente a atravessa em vez de roê-la - não quebra nada. Use o pergaminho de novo enquanto ele estiver fora e o rato avança sobre aquilo que sua mira aponta. A mordida é quase inofensiva, mas prende o mordido por alguns segundos e o deixa sangrando. O ataque forte o chama de volta. O pergaminho nunca se gasta. Só pode haver um servo fora por vez - invocar outro manda o atual de volta.","Первый слуга, которого может держать некромант: маленькая серая тень, которая никогда не нападает сама. Она держится справа и чуть позади вас, а там, где на пути стена, проходит сквозь неё, а не грызёт - она не ломает ничего. Примените свиток ещё раз, пока крыса призвана, и она бросится на того, на ком стоит ваш прицел. Укус её почти безвреден, но укушенный на несколько секунд валится с ног и начинает истекать кровью. Силовая атака отзывает её. Свиток не расходуется. Одновременно можно держать только одного слугу - призыв другого отзывает нынешнего.","Bir nekromantın tutabileceği ilk hizmetkâr: kendiliğinden asla saldırmayan, küçük gri bir gölge. Sağında ve biraz arkanda durur; yolunda bir duvar varsa kemirmek yerine içinden geçer - hiçbir şeyi kırmaz. O dışarıdayken tomarı tekrar kullan, sıçan nişangâhının üzerinde durduğu şeyin üstüne atılır. Isırığı neredeyse zararsızdır ama ısırdığını birkaç saniye yere serer ve kanatır. Güçlü saldırı onu geri çağırır. Tomar asla tükenmez. Aynı anda yalnızca bir hizmetkâr dışarıda olabilir - bir başkasını çağırmak mevcut olanı geri gönderir.",亡灵法师能驾驭的第一个仆从:一道小小的灰影,从不主动攻击。它跟在你右后方,遇到墙壁便径直穿过,而不去啃咬——它什么也不会破坏。它在外时再次使用卷轴,鼠灵便会扑向你准星所指之物。它的撕咬几乎无害,却能将被咬者按在地上数秒并使其流血。重击可将其收回。卷轴永不消耗。同时只能有一个仆从在外——召唤另一个会让当前的仆从返回。,亡靈法師能駕馭的第一個僕從:一道小小的灰影,從不主動攻擊。牠跟在你右後方,遇到牆壁便逕直穿過,而不去啃咬——牠什麼也不會破壞。牠在外時再次使用卷軸,鼠靈便會撲向你準星所指之物。牠的撕咬幾乎無害,卻能將被咬者按在地上數秒並使其流血。重擊可將其收回。卷軸永不消耗。同時只能有一個僕從在外——召喚另一個會讓目前的僕從返回。 necroRatSpiritRecalled,items,Item,,,,Rat Spirit recalled,,Rattengeist zurückgerufen,Espíritu de rata devuelto,Esprit de rat rappelé,Spirito di ratto richiamato,ネズミの霊を呼び戻しました,쥐의 영혼을 불러들였습니다,Odwołano: Duch szczura,Espírito de rato chamado de volta,Дух крысы отозван,Sıçan Ruhu geri çağrıldı,已召回鼠灵,已召回鼠靈 necroRatSpiritNothingToRecall,items,Item,,,,No Rat Spirit to recall,,Kein Rattengeist zum Zurückrufen,No hay espíritu de rata que devolver,Aucun esprit de rat à rappeler,Nessuno spirito di ratto da richiamare,呼び戻すネズミの霊がいません,불러들일 쥐의 영혼이 없습니다,Nie ma ducha szczura do odwołania,Não há espírito de rato para chamar de volta,Дух крысы не призван,Geri çağrılacak Sıçan Ruhu yok,没有可召回的鼠灵,沒有可召回的鼠靈 necroPetNoTarget,items,Item,,,,No target to attack,,Kein Ziel zum Angreifen,No hay objetivo que atacar,Aucune cible à attaquer,Nessun bersaglio da attaccare,攻撃する対象がありません,공격할 대상이 없습니다,Brak celu do ataku,Nenhum alvo para atacar,Нет цели для атаки,Saldırılacak hedef yok,没有可攻击的目标,沒有可攻擊的目標 @@ -169,3 +169,61 @@ necroSnakeModeSnake,items,Item,,,,Snake,,Schlange,Serpiente,Serpent,Serpente,蛇 necroSnakeBodyDanger,UI,Label,,,,Enemy approaching your body,,Ein Feind nähert sich deinem Körper,Un enemigo se acerca a tu cuerpo,Un ennemi approche de ton corps,Un nemico si avvicina al tuo corpo,敵が体に近づいている,적이 몸에 다가오고 있다,Wróg zbliża się do twojego ciała,Um inimigo se aproxima do seu corpo,Враг приближается к телу,Bir düşman bedenine yaklaşıyor,敌人正在接近你的身体,敵人正在接近你的身體 necroSnakeModeDay,items,Item,,,,It is daytime,,Es ist Tag,Es de día,Il fait jour,È giorno,今は昼だ,지금은 낮이다,Jest dzień,Agora é dia,Сейчас день,Şu an gündüz,现在是白天,現在是白天 necroSnakeSpirit,entityclasses,Entity,,,,Snake Spirit,,Schlangengeist,Espíritu de serpiente,Esprit du serpent,Spirito del serpente,蛇の霊,뱀의 영혼,Duch węża,Espírito da serpente,Дух змеи,Yılan Ruhu,蛇灵,蛇靈 +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. +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.","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 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 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.","骨と頭蓋骨でできた納骨堂。血を糧に、地の底から石と鉱石を引き上げる。 +MODスロットに資源を3つまで入れる:石、石炭、硝石、鉄、オイルシェール。資源はスロットに残り、対応する出力マスで何を生み出すかを決める。 +燃料スロットの血の球1つが、5~8時間ごとに資源1スタック分に変わる。 +どこでも動く。地下でも。 +骨で修理する。","뼈와 해골로 만든 납골당. 피를 먹고 땅속 깊은 곳에서 돌과 광석을 끌어올린다. +모드 슬롯에 자원을 최대 세 개까지 넣는다: 돌, 석탄, 질산염, 철, 오일 셰일. 자원은 슬롯에 남아 대응하는 출력 칸에서 무엇을 만들지 정한다. +연료 칸의 피의 구슬 하나가 5~8시간마다 자원 한 묶음으로 바뀐다. +어디서든 작동한다. 땅속에서도. +뼈로 수리한다.","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.","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.","Оссуарий из костей и черепов: питается кровью и вытягивает из недр камень и руду. +В ячейки модификаций положите до трёх ресурсов: камень, уголь, селитру, железо или сланец. Ресурс остаётся в ячейке и задаёт, что производит соответствующая ячейка продукции. +Каждая кровавая сфера в отсеке топлива раз в 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.","由骨头与头骨筑成的骨堂,以血为食,从地底深处汲取石头与矿石。 +在模组槽中放入最多三种资源:石头、煤、硝石、铁或油页岩。资源会留在槽中,并决定对应产出格产出什么。 +燃料格中的每颗血之球每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]資源[-]) diff --git a/Config/blocks.xml b/Config/blocks.xml index 710f08e..f7af3db 100644 --- a/Config/blocks.xml +++ b/Config/blocks.xml @@ -179,5 +179,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Config/progression.xml b/Config/progression.xml index e9c19d8..668c188 100644 --- a/Config/progression.xml +++ b/Config/progression.xml @@ -235,7 +235,7 @@ ОБЯЗАНЫ совпадать. display_entry рисует замок сам по себе, по unlock_tier, и про теги не знает - разойдутся, и на панели будет замок на доступном рецепте. --> - + + + + + + + + + + diff --git a/HarmonySrc/GeoOssuaryPatch.cs b/HarmonySrc/GeoOssuaryPatch.cs new file mode 100644 index 0000000..99dd25e --- /dev/null +++ b/HarmonySrc/GeoOssuaryPatch.cs @@ -0,0 +1,202 @@ +using HarmonyLib; +using UnityEngine; + +namespace NecromancerTome +{ + /// + /// Гео-оссуарий (1.7.0, 2026-09-30): станция добычи ресурсов на кровавой сфере. Блок - + /// necroGeoOssuary в blocks.xml, наследник ванильного коллектора росы; всё, что коллектор + /// умеет сам (окно, топливо, таймеры, работа без игрока рядом), остаётся его. Здесь только то, + /// чего ваниль не умеет, - разобрано по декомпилятору 3.3: + /// + /// - ЯЧЕЙКА МОДИФИКАЦИИ ПРИНИМАЕТ ОДИН ПРЕДМЕТ. XUiC_DewCollectorModGrid.SetTileEntity + /// зовёт SetAllowedItemClassSingle(RequiredMods[i]). У оссуария в любую из трёх ячеек идёт + /// любой из пяти ресурсов, по одной штуке (OverrideStackCount = 1). Окно у всех + /// коллекторов одно и то же, поэтому для чужих коллекторов предел штук сбрасывается + /// обратно - иначе коллектор росы после оссуария тоже брал бы по одной. + /// - ВАНИЛЬ НЕ СМОТРИТ, ЧТО ЛЕЖИТ В ЯЧЕЙКЕ. ModTypes=Type - просто флаг HasModConvert + /// (OutputItem -> OutputItemModded), одна замена на весь блок. У оссуария три OutputType + /// os1..os3, по одному на ячейку продукции; os(i+1) выдаёт полный стак ресурса из ячейки + /// модификации i. Пустая или чужая модификация - этот OutputType выключен (isDisabled), + /// значит таймер стоит и сферу он не ест. + /// - ПРОВЕРКА НЕБА. HandleSkyCheck (7 блоков вверх) у ванили безусловна для всех + /// коллекторов; оссуарий работает где угодно, в том числе под землёй (решение 30.09). + /// + public static class GeoOssuary + { + public const string BlockName = "necroGeoOssuary"; + + /// Камень, уголь, селитра, железо (его дают железные жилы), сланец. + public static readonly string[] ResourceNames = + { + "resourceRockSmall", "resourceCoal", "resourcePotassiumNitratePowder", + "resourceScrapIron", "resourceOilShale", + }; + + static ItemClass[] resourceClasses; + + public static ItemClass[] ResourceClasses + { + get + { + if (resourceClasses == null) + { + resourceClasses = new ItemClass[ResourceNames.Length]; + for (int i = 0; i < ResourceNames.Length; i++) + resourceClasses[i] = ItemClass.GetItemClass(ResourceNames[i]); + } + return resourceClasses; + } + } + + public static bool Is(Block block) => block != null && block.GetBlockName() == BlockName; + + public static bool Is(TileEntityCollector te) => te != null && Is(te.blockValue.Block); + + /// os1 -> 0, os2 -> 1, os3 -> 2; иначе -1. + public static int ModSlotOf(BlockCollector.OutputType outputType) + { + string name = outputType?.Name; + if (name == null || name.Length != 3 || !name.StartsWith("os")) + return -1; + return name[2] - '1'; + } + + /// Ресурс в ячейке модификации, если он из списка; иначе null. + public static ItemClass ResourceIn(TileEntityCollector te, int modSlot) + { + ItemStack[] mods = te.ModSlots; + if (modSlot < 0 || mods == null || modSlot >= mods.Length) + return null; + ItemStack stack = mods[modSlot]; + if (stack == null || stack.IsEmpty()) + return null; + ItemClass cls = stack.itemValue.ItemClass; + return cls != null && System.Array.IndexOf(ResourceNames, cls.Name) >= 0 ? cls : null; + } + } + + [HarmonyPatch(typeof(XUiC_DewCollectorModGrid), nameof(XUiC_DewCollectorModGrid.SetTileEntity))] + public static class Patch_XUiC_DewCollectorModGrid_SetTileEntity_GeoOssuary + { + public static void Postfix(XUiC_DewCollectorModGrid __instance, TileEntityCollector te) + { + bool ossuary = GeoOssuary.Is(te); + foreach (XUiC_ItemStack slot in __instance.itemControllers) + { + if (!(slot is XUiC_RequiredItemStack required)) + continue; + required.OverrideStackCount = ossuary ? 1 : -1; + if (ossuary) + { + required.SetAllowedItemClasses(GeoOssuary.ResourceClasses); + required.RequiredItemOnly = true; + } + } + } + } + + [HarmonyPatch(typeof(TileEntityCollector), nameof(TileEntityCollector.isDisabled))] + public static class Patch_TileEntityCollector_isDisabled_GeoOssuary + { + public static void Postfix(TileEntityCollector __instance, BlockCollector.OutputType _outputType, ref bool __result) + { + if (__result || !GeoOssuary.Is(__instance)) + return; + if (GeoOssuary.ResourceIn(__instance, GeoOssuary.ModSlotOf(_outputType)) == null) + __result = true; + } + } + + [HarmonyPatch(typeof(TileEntityCollector), nameof(TileEntityCollector.newItem))] + public static class Patch_TileEntityCollector_newItem_GeoOssuary + { + public static void Postfix(TileEntityCollector __instance, BlockCollector.OutputType outputType, ref ItemStack __result) + { + if (__result == null || !GeoOssuary.Is(__instance)) + return; + ItemClass resource = GeoOssuary.ResourceIn(__instance, GeoOssuary.ModSlotOf(outputType)); + if (resource == null) + { + // isDisabled не пускает сюда без ресурса; если всё же дошло - сфера уже списана, + // и отдать хотя бы заглушку честнее, чем молча съесть топливо. + Debug.LogWarning("[NecromancerTome] GeoOssuary: " + outputType.Name + " сработал без ресурса в ячейке модификации"); + return; + } + __result = new ItemStack(new ItemValue(resource.Id), resource.MaxCount); + Debug.Log("[NecromancerTome] GeoOssuary: " + outputType.Name + " -> " + resource.Name + " x" + resource.MaxCount + " в " + __instance.ToWorldPos()); + } + } + + /// + /// Шейдер модели. Своя модель оссуария лежит в нашем бандле с запасным шейдером + /// NecromancerTome/OssuaryProxy (Standard-поверхность), а у пирамиды 10.09 именно + /// Standard из бандла на расстоянии рисовался маджентой. Поэтому при первой загрузке модели + /// материалу ставится тот шейдер, которым игра рисует ванильный коллектор росы: имена текстур + /// у них общие (_MainTex, _Normal, _RMOM, _Emissive), модель выросла из его префаба. Префаб из + /// бандла - общий ассет, так что правка одна на все экземпляры. + /// + [HarmonyPatch(typeof(BlockShapeModelEntity), nameof(BlockShapeModelEntity.getPrefab))] + public static class Patch_BlockShapeModelEntity_getPrefab_GeoOssuaryShader + { + const string ModelName = "necroOssuaryPrefab"; + const string VanillaModel = "@:Entities/Furniture/collectorDewPrefab.prefab"; + static bool done; + + public static void Postfix(Transform __result) + { + if (done || __result == null || __result.name != ModelName) + return; + done = true; + Transform vanilla = DataLoader.LoadAsset(VanillaModel); + Renderer src = vanilla != null ? vanilla.GetComponentInChildren(true) : null; + Shader shader = src != null && src.sharedMaterial != null ? src.sharedMaterial.shader : null; + if (shader == null) + { + Debug.LogWarning("[NecromancerTome] GeoOssuary: шейдер коллектора росы не найден - остаётся запасной"); + return; + } + int n = 0; + foreach (Renderer r in __result.GetComponentsInChildren(true)) + foreach (Material m in r.sharedMaterials) + if (m != null && m.shader != shader) { m.shader = shader; m.enableInstancing = true; n++; } + Debug.Log("[NecromancerTome] GeoOssuary: материалам модели (" + n + ") поставлен шейдер '" + shader.name + "'"); + CopyTags(vanilla, __result); + } + + /// Теги коллайдера. У ванильного префаба корень и объект collision помечены + /// игровым тегом (AssetRipper записал его как unknown_20004 - имени он не знал), и именно + /// по тегу игра понимает, что луч попал в блок, с которым можно взаимодействовать. В нашем + /// Unity-проекте такого тега нет, при сборке он стал Untagged - и оссуарий не реагировал + /// на наведение (тест 30.09). Берём теги у ванильного коллектора по именам объектов. + static void CopyTags(Transform vanilla, Transform ours) + { + var byName = new System.Collections.Generic.Dictionary(); + foreach (Transform t in vanilla.GetComponentsInChildren(true)) + byName[t == vanilla ? "" : t.name] = t; + foreach (Transform t in ours.GetComponentsInChildren(true)) + { + Transform src; + if (!byName.TryGetValue(t == ours ? "" : t.name, out src)) + continue; + if (t.tag != src.tag || t.gameObject.layer != src.gameObject.layer) + { + Debug.Log("[NecromancerTome] GeoOssuary: '" + t.name + "' тег " + t.tag + " -> " + src.tag + + ", слой " + t.gameObject.layer + " -> " + src.gameObject.layer); + t.tag = src.tag; + t.gameObject.layer = src.gameObject.layer; + } + } + } + } + + [HarmonyPatch(typeof(TileEntityCollector), nameof(TileEntityCollector.HandleSkyCheck))] + public static class Patch_TileEntityCollector_HandleSkyCheck_GeoOssuary + { + public static void Postfix(TileEntityCollector __instance, ref bool __result) + { + if (__result && GeoOssuary.Is(__instance)) + __result = false; + } + } +} diff --git a/HarmonySrc/NecromancerHarmony.csproj b/HarmonySrc/NecromancerHarmony.csproj index 3bc3d27..56cdd2a 100644 --- a/HarmonySrc/NecromancerHarmony.csproj +++ b/HarmonySrc/NecromancerHarmony.csproj @@ -23,6 +23,11 @@ ..\..\..\7DaysToDie_Data\Managed\Assembly-CSharp.dll false + + + ..\..\..\7DaysToDie_Data\Managed\Unity.Addressables.dll + false + ..\..\..\7DaysToDie_Data\Managed\UnityEngine.CoreModule.dll false diff --git a/HarmonySrc/PetCommandPatch.cs b/HarmonySrc/PetCommandPatch.cs index ac81802..b4d46a0 100644 --- a/HarmonySrc/PetCommandPatch.cs +++ b/HarmonySrc/PetCommandPatch.cs @@ -42,6 +42,32 @@ namespace NecromancerTome /// смысл не в таймере, а в том, чтобы приказ не висел вечно, если цель уйдёт из мира. public const int OrderTicks = 6000; + /// Кого игрок сейчас держит в прицеле и кого можно назначить целью. null - некого. + /// Общее для приказа и для покраснения прицела (PetCrosshair): прицел краснеет ровно тогда, + /// когда приказ будет принят. Свои питомцы целью не бывают. + public static EntityAlive TargetUnderCrosshair(EntityPlayerLocal _local) + { + WorldRayHitInfo hit = _local.HitInfo; + if (hit == null || !hit.bHitValid || hit.transform == null) + { + return null; + } + EntityAlive target = ItemActionAttack.GetEntityFromHit(hit) as EntityAlive; + if (target == null || target.IsDead() || target == _local) + { + return null; + } + if (target is EntityPlayer || target is EntityTrader) + { + return null; + } + if (PetFollowPatch.FindOwnerOfPet(target.entityId) != null) + { + return null; + } + return target; + } + /// Отдаёт питомцу приказ атаковать то, на что смотрит игрок. false - приказа не /// вышло, и вызывающая сторона показывает "Нет цели для атаки". public static bool TryOrderAttack(EntityAlive _owner, EntityAlive _pet) @@ -59,23 +85,8 @@ namespace NecromancerTome return false; } - WorldRayHitInfo hit = local.HitInfo; - if (hit == null || !hit.bHitValid || hit.transform == null) - { - return false; - } - - Entity hitEntity = ItemActionAttack.GetEntityFromHit(hit); - EntityAlive target = hitEntity as EntityAlive; - if (target == null || target.IsDead()) - { - return false; - } - if (target == _pet || target == _owner) - { - return false; - } - if (target is EntityPlayer || target is EntityTrader) + EntityAlive target = TargetUnderCrosshair(local); + if (target == null || target == _pet) { return false; } @@ -84,9 +95,110 @@ namespace NecromancerTome // следующем тике перебить наш приказ тем, кто ударил крысу последним. _pet.SetRevengeTarget(null); _pet.SetAttackTarget(target, OrderTicks); + // Охрана (PetFollowPatch.Guard) сама раздаёт цели; приказ игрока она перебивать не должна. + PetFollowPatch.NoteOrder(_pet.entityId, target.entityId); Debug.Log("[NecromancerTome] PetAttackCommand: pet " + _pet.entityId + " ordered to attack " + target.entityId + " (" + target.EntityClass.entityClassName + ")"); return true; } } + + /// + /// ПРИЦЕЛ КНИГ И СВИТКОВ ПРИЗЫВА - указание 30.09.2026: «сделать другой прицел (более явный, из + /// уже имеющихся в игре) и чтобы он краснел при попадании в него врага. Как у змеи краснеет». + /// + /// У ItemActionSpawnEntity своего прицела нет, он получал общий маленький «плюс». Игра рисует + /// прицел одним методом, EntityPlayerLocal.guiDrawCrosshair, и цвет там берётся из настроек, + /// так что подменить один лишь ВИД прицела мало - покраснеть он не сможет. Поэтому для наших + /// книг метод заменяется целиком: те же условия показа, тот же размер и та же готовая + /// прицел арбалета (DrawDynamicCrosshair, 4 штриха), а цвет - наш. + /// + /// Красный = приказ будет принят: питомец этой книги призван и под прицелом годная цель + /// (PetAttackCommand.TargetUnderCrosshair - тот же разбор, что у самого приказа). Пока питомец + /// не призван, основное действие - это призыв, и красить прицел незачем. + /// + /// Только у книг с приказом (PetInfo.CommandsAttack). Свиток Роя оставлен как был. + /// + [HarmonyLib.HarmonyPatch(typeof(EntityPlayerLocal), "guiDrawCrosshair")] + public static class Patch_EntityPlayerLocal_guiDrawCrosshair_PetCrosshair + { + /// Тот же красный, что у прицела змеи (SnakeCrosshair.OnTarget). + static readonly Color OnTarget = new Color(1f, 0.15f, 0.1f, 1f); + + public static bool Prefix(EntityPlayerLocal __instance, NGuiWdwInGameHUD _guiInGame, bool bModalWindowOpen) + { + if (__instance.inventory == null) + { + return true; + } + ItemClass holding = __instance.inventory.holdingItem; + ItemActionSpawnEntity action = holding != null && holding.Actions != null && holding.Actions.Length > 0 + ? holding.Actions[0] as ItemActionSpawnEntity + : null; + if (action == null || + !Patch_ItemActionSpawnEntity_Spawn_PetLimit.LimitedPets.TryGetValue(action.entityToSpawn, + out Patch_ItemActionSpawnEntity_Spawn_PetLimit.PetInfo petInfo) || + !petInfo.CommandsAttack) + { + return true; + } + // Дальше - условия показа из самого guiDrawCrosshair, в том же порядке. + if (!_guiInGame.showCrosshair || Event.current.type != EventType.Repaint || __instance.IsDead() || + __instance.emodel.IsRagdollActive || __instance.AttachedToEntity != null || + !GamePrefs.GetBool(EnumGamePrefs.OptionsCrosshairEnabled) || bModalWindowOpen || + _guiInGame.CrosshairSquare == null) + { + return false; + } + + float opacity = GamePrefs.GetFloat(EnumGamePrefs.OptionsCrosshairOpacity); + int colorIndex = GamePrefs.GetInt(EnumGamePrefs.OptionsCrosshairColor); + if (colorIndex < 0 || colorIndex >= EntityPlayerLocal.crosshairColors.Count) + { + colorIndex = 0; + } + Color color = EntityPlayerLocal.crosshairColors[colorIndex]; + color.a = opacity; + if (PetIsOut(__instance, action.entityToSpawn) && PetAttackCommand.TargetUnderCrosshair(__instance) != null) + { + color = OnTarget; + } + + Vector2 center = __instance.GetCrosshairPosition2D(); + center.y = Screen.height - center.y; + float size = Screen.height * 0.059f * GamePrefs.GetFloat(EnumGamePrefs.OptionsCrosshairScale); + // Прицел арбалета (тест 30.09: CrosshairDamage выглядел «кружком со стрелкой вниз»): + // четыре штриха игрового DrawDynamicCrosshair, длина та же, что у стрелкового оружия + // (size / 3); разброс у книги не меняется, поэтому зазор постоянный. + EntityPlayerLocal.DrawDynamicCrosshair(center.x, center.y, size * 0.22f, size * 0.22f, size / 3f, + GamePrefs.GetFloat(EnumGamePrefs.OptionsCrosshairThickness), color.a, color); + return false; + } + + /// Призван ли сейчас питомец этой книги у этого игрока. По списку PetFollowPatch, а не + /// GetOwnedEntities: тот на каждый вызов заводит новый список, а мы здесь каждый кадр. + static bool PetIsOut(EntityPlayerLocal _player, string _entityClassName) + { + int classId = EntityClass.GetId(_entityClassName); + World world = _player.world; + if (classId == -1 || world == null) + { + return false; + } + for (int i = 0; i < PetFollowPatch.TrackedPets.Count; i++) + { + PetFollowPatch.TrackedPet tracked = PetFollowPatch.TrackedPets[i]; + if (tracked.OwnerEntityId != _player.entityId) + { + continue; + } + Entity pet = world.GetEntity(tracked.PetEntityId); + if (pet != null && pet.entityClass == classId && !pet.IsDead()) + { + return true; + } + } + return false; + } + } } diff --git a/HarmonySrc/PetFollowPatch.cs b/HarmonySrc/PetFollowPatch.cs index c52116b..7ff3a68 100644 --- a/HarmonySrc/PetFollowPatch.cs +++ b/HarmonySrc/PetFollowPatch.cs @@ -74,6 +74,17 @@ namespace NecromancerTome /// Радиус "дома" для летающих (см. PetInfo.FlyingHomeRadius). Ноль - /// питомец не летающий, дом ему не переставляем. public int FlyingHomeRadius; + + /// Охраняет ли хозяина сам - копия PetInfo.Guards. + public bool Guards; + + /// На кого игрок указал прицелом (PetAttackCommand). Пока эта цель жива и питомец + /// занят именно ею, охрана его не перенацеливает. -1 - приказа нет. + public int OrderedTargetId = -1; + + /// Питомец ушёл дальше GuardLeash и возвращается: пока он не подойдёт к хозяину + /// на GuardRange, любые цели с него снимаются - иначе укус в спину разворачивал бы его. + public bool Returning; } public static readonly List TrackedPets = new List(); @@ -106,7 +117,7 @@ namespace NecromancerTome /// Called from SummonPatch.cs right after a pet is created and owned. public static void Register(EntityAlive owner, Entity pet, bool ownFollowTask, bool collisionIgnored, - bool wantsLitEyes, int flyingHomeRadius) + bool wantsLitEyes, int flyingHomeRadius, bool guards) { TrackedPets.Add(new TrackedPet { @@ -116,6 +127,7 @@ namespace NecromancerTome CollisionIgnored = collisionIgnored, WantsLitEyes = wantsLitEyes, FlyingHomeRadius = flyingHomeRadius, + Guards = guards, }); } @@ -190,6 +202,121 @@ namespace NecromancerTome } } + /// ОХРАНА ХОЗЯИНА - указание 30.09.2026. Образ: «ночь, мы в виде змеи ползаем на + /// другом конце карты, а тело охраняет стервятник». До этого питомец дрался только по приказу + /// (PetAttackCommand) - отзыв sanovskiy 23.09: «приказ нужен на каждую цель». + /// + /// Решения пользователя по пунктам: + /// - радиус охраны 20 м от хозяина (GuardRange); в режиме змеи хозяин - это лежащее тело, + /// позиция игрока там и остаётся; + /// - охраняют все, кроме крысы (PetInfo.Guards); + /// - отходить можно до 40 м (GuardLeash), дальше - возвращается; + /// - бить ближайшего к телу, если не было приказа атаковать конкретного. + /// + /// Враг - тот же, что для тревоги у тела в режиме змеи (SnakeControl.IsFoe): живой EntityEnemy, + /// не питомец и не девиант. СПЯЩИЕ НЕ В СЧЁТ: иначе питомец, проходящий сквозь стены, будил бы + /// всё здание, пока игрок крадётся, - к спящему слово «приближается» не относится. + /// + /// Уже начатую цель охрана не бросает, пока та в радиусе: выбор «ближайшего» заново каждую + /// секунду заставил бы питомца метаться между двумя зомби и не добить ни одного. + public const float GuardRange = 20f; + public const float GuardLeash = 40f; + + public static void NoteOrder(int petEntityId, int targetEntityId) + { + for (int i = 0; i < TrackedPets.Count; i++) + { + if (TrackedPets[i].PetEntityId == petEntityId) + { + TrackedPets[i].OrderedTargetId = targetEntityId; + TrackedPets[i].Returning = false; + } + } + } + + public static EntityAlive NearestFoe(World world, Vector3 center, float range) + { + EntityAlive nearest = null; + float best = range * range; + for (int i = 0; i < world.EntityAlives.Count; i++) + { + EntityAlive e = world.EntityAlives[i]; + if (!SnakeControl.IsFoe(e, null) || e.IsSleeping) + { + continue; + } + float distSq = (e.position - center).sqrMagnitude; + if (distSq < best) + { + best = distSq; + nearest = e; + } + } + return nearest; + } + + public static void Guard(TrackedPet tracked, EntityAlive pet, EntityAlive owner, World world) + { + if (owner.IsDead()) + { + return; + } + float fromOwnerSq = (pet.position - owner.position).sqrMagnitude; + EntityAlive target = pet.GetAttackTarget(); + + // Поводок 40 м - для всех спутников, и для приказа игрока тоже. + if (tracked.Returning) + { + if (fromOwnerSq > GuardRange * GuardRange) + { + if (target != null) + { + pet.SetRevengeTarget(null); + pet.SetAttackTarget(null, 0); + } + return; + } + tracked.Returning = false; + Debug.Log("[NecromancerTome] PetFollowPatch: pet " + pet.entityId + " вернулся к хозяину"); + } + else if (fromOwnerSq > GuardLeash * GuardLeash) + { + tracked.Returning = true; + tracked.OrderedTargetId = -1; + pet.SetRevengeTarget(null); + pet.SetAttackTarget(null, 0); + Debug.Log("[NecromancerTome] PetFollowPatch: pet " + pet.entityId + " ушёл на " + + Mathf.Sqrt(fromOwnerSq).ToCultureInvariantString("0") + " м от хозяина - цель снята, возвращается"); + return; + } + + if (!tracked.Guards) + { + return; + } + bool live = target != null && !target.IsDead(); + if (live && target.entityId == tracked.OrderedTargetId) + { + return; + } + tracked.OrderedTargetId = -1; + if (live && SnakeControl.IsFoe(target, null) && + (target.position - owner.position).sqrMagnitude <= GuardRange * GuardRange) + { + return; + } + EntityAlive foe = NearestFoe(world, owner.position, GuardRange); + if (foe == null || foe == target) + { + return; + } + pet.SetRevengeTarget(null); + pet.SetAttackTarget(foe, PetAttackCommand.OrderTicks); + Debug.Log("[NecromancerTome] PetFollowPatch: охрана - pet " + pet.entityId + " идёт на " + foe.entityId + + " (" + foe.EntityClass.entityClassName + "), до хозяина " + + (foe.position - owner.position).magnitude.ToCultureInvariantString("0.0") + " м"); + } + /// ПИТАНИЕ ПАДАЛЬЮ, 2026-09-18. Наблюдение пользователя: "Дух крысы после того как /// зомби погибает, начинает есть труп. Пусть тогда этот процесс восстанавливает ей здоровье". /// @@ -392,6 +519,13 @@ namespace NecromancerTome tracked.CollisionIgnored = TryIgnoreCollisionWithOwner(owner, pet); } + // Охрана и поводок 40 м - до блока про «дом» летающих: тот в этом же тике должен + // увидеть уже назначенную или снятую цель. Рой (не спутник) сюда не попадает. + if (tracked.Guards || tracked.OwnFollowTask || tracked.FlyingHomeRadius > 0) + { + Guard(tracked, pet, owner, world); + } + // СЛЕДОВАНИЕ ДЛЯ ЛЕТАЮЩИХ, 2026-09-18. Дом переставляется на хозяина каждую // секунду, а возвращается питомец САМ, своим полётом: у EntityVulture проверка // "не ушёл ли из дома" встроена и работает каждые 60 тиков. Ни телепорта, ни diff --git a/HarmonySrc/SnakeControl.cs b/HarmonySrc/SnakeControl.cs index 78e4c97..4718fcf 100644 --- a/HarmonySrc/SnakeControl.cs +++ b/HarmonySrc/SnakeControl.cs @@ -495,12 +495,23 @@ namespace NecromancerTome /// Враг для змеи: живой EntityEnemy, не питомец (призрачный) и не девиант - зомби под /// баффом Девиатора на стороне некроманта (указание 28.09: «если под бафом девианта, то это /// не враг»). Общее для тревоги у тела и для прицела. - static bool IsFoe(EntityAlive _e, EntityAlive _snake) + public static bool IsFoe(EntityAlive _e, EntityAlive _snake) { return _e != null && _e != _snake && _e is EntityEnemy && !_e.IsDead() && + !IsNecroEntity(_e) && !GhostTraderPatch.ShouldBeGhost(_e) && !NecroCharmSide.IsCharmed(_e); } + /// Питомцы и змея мода - тоже EntityEnemy (зомби-основа), и без этой проверки + /// охрана выбирала целью самого питомца: он ближе всех к хозяину (тест 30.09, лог + /// «pet 3838 идёт на 3838»). Все наши классы сущностей начинаются с necro. + public static bool IsNecroEntity(EntityAlive _e) + { + EntityClass cls; + return EntityClass.list.TryGetValue(_e.entityClass, out cls) && cls != null && + cls.entityClassName != null && cls.entityClassName.StartsWith("necro"); + } + /// Раз в полсекунды: есть ли живой враг ближе BodyDangerRange к телу игрока. static void CheckBody(World _world, EntityPlayerLocal _player, EntityAlive _snake, float _dt) { diff --git a/HarmonySrc/SummonPatch.cs b/HarmonySrc/SummonPatch.cs index d5b97c5..ac690b1 100644 --- a/HarmonySrc/SummonPatch.cs +++ b/HarmonySrc/SummonPatch.cs @@ -133,6 +133,11 @@ namespace NecromancerTome /// таких питомцев выключается - две системы на одно и то же дёргали бы питомца в /// разные стороны. public bool UsesFollowTask; + + /// Охраняет ли питомец хозяина сам (PetFollowPatch.Guard) - указание 30.09.2026: + /// «охраняют все, кроме крысы». Рой сюда не входит: он не спутник, а разовое заклинание + /// со своим поиском целей. + public bool Guards; } public static readonly Dictionary LimitedPets = new Dictionary @@ -153,6 +158,7 @@ namespace NecromancerTome // AlreadyActiveKey у всех четверых теперь не читается никогда. CommandsAttack = true, NoTargetKey = "necroPetNoTarget", + Guards = true, UsesFollowTask = true, } }, @@ -199,6 +205,7 @@ namespace NecromancerTome // AlreadyActiveKey у всех четверых теперь не читается никогда. CommandsAttack = true, NoTargetKey = "necroPetNoTarget", + Guards = true, } }, { @@ -217,6 +224,7 @@ namespace NecromancerTome // AlreadyActiveKey у всех четверых теперь не читается никогда. CommandsAttack = true, NoTargetKey = "necroPetNoTarget", + Guards = true, UsesFollowTask = true, } }, @@ -236,6 +244,7 @@ namespace NecromancerTome // AlreadyActiveKey у всех четверых теперь не читается никогда. CommandsAttack = true, NoTargetKey = "necroPetNoTarget", + Guards = true, UsesFollowTask = true, } }, @@ -340,10 +349,48 @@ namespace NecromancerTome } return false; } + RecallOtherCompanions(holdingEntity, __instance.entityToSpawn, tooltips); summonAllowedThisCall = true; return true; } + /// ОДИН ПИТОМЕЦ ЗА РАЗ - указание 30.09.2026: «за один раз можно было призвать только + /// одного питомца. А то слишком жирно сразу и собаку, и крысу, и стервятника, и медведя». + /// Раньше предел был по одному НА ВИД, и все пятеро могли ходить вместе. + /// + /// Сделано заменой, а не отказом: призыв нового сам отзывает прежнего. Игроку не надо + /// искать в поясе другую книгу, чтобы отозвать, и новых строк перевода не нужно - о прежнем + /// сообщает его же готовая надпись «… отозван». + /// + /// Спутник - это вид с отзывом (RecalledKey). Рой Жуков не спутник: он разовое заклинание + /// без отзыва, сам никого не вытесняет, и его не вытесняют. + public static void RecallOtherCompanions(EntityAlive _owner, string _summoned, PetInfo _summonedInfo) + { + if (_summonedInfo.RecalledKey == null) + { + return; + } + foreach (KeyValuePair entry in LimitedPets) + { + if (entry.Key == _summoned || entry.Value.RecalledKey == null) + { + continue; + } + int classId = EntityClass.GetId(entry.Key); + if (classId == -1) + { + continue; + } + List others = _owner.GetOwnedEntities(classId); + for (int i = others.Count - 1; i >= 0; i--) + { + Debug.Log("[NecromancerTome] SummonPatch: один питомец за раз - " + entry.Key + " " + others[i].Id + + " отозван ради " + _summoned); + RecallPet(_owner, others[i].Id, entry.Value.RecalledKey, null); + } + } + } + /// ДОБАВЛЕНО 2026-09-18, после чтения ItemActionSpawnEntity.Spawn целиком. /// Последней строкой ваниль делает вот что: /// @@ -634,7 +681,7 @@ namespace NecromancerTome // Поэтому результат передаётся в Register, и тик повторяет попытку до успеха. bool collisionIgnored = PetFollowPatch.TryIgnoreCollisionWithOwner(owner, __result); PetFollowPatch.Register(owner, __result, petInfo.UsesFollowTask, collisionIgnored, petInfo.LitEyes, - petInfo.FlyingHomeRadius); + petInfo.FlyingHomeRadius, petInfo.Guards); AttachFollowTask(owner, __result, petInfo); // Полупрозрачность больше НЕ делается здесь. Бывший ApplyGhostlyTransparency ставил // альфу в material.color и не работал ни разу: шейдеры моделей мобов альфу не diff --git a/NecromancerHarmony.dll b/NecromancerHarmony.dll index 31a916e..dd5994a 100644 Binary files a/NecromancerHarmony.dll and b/NecromancerHarmony.dll differ diff --git a/NecromancerHarmony.pdb b/NecromancerHarmony.pdb index 3af563d..2304f7f 100644 Binary files a/NecromancerHarmony.pdb and b/NecromancerHarmony.pdb differ diff --git a/Resources/necroossuary b/Resources/necroossuary new file mode 100644 index 0000000..b1da359 Binary files /dev/null and b/Resources/necroossuary differ diff --git a/UIAtlases/ItemIconAtlas/necroGeoOssuary.png b/UIAtlases/ItemIconAtlas/necroGeoOssuary.png new file mode 100644 index 0000000..43a58c3 Binary files /dev/null and b/UIAtlases/ItemIconAtlas/necroGeoOssuary.png differ diff --git a/UIAtlases/ItemIconAtlasGreyscale/necroGeoOssuary.png b/UIAtlases/ItemIconAtlasGreyscale/necroGeoOssuary.png new file mode 100644 index 0000000..672b555 Binary files /dev/null and b/UIAtlases/ItemIconAtlasGreyscale/necroGeoOssuary.png differ