Кровавый прилив: в ночь кровавой луны дух не выходит из тела
Нет змеи, чертогов, одержимости зомби и питомцев; кто вне тела - выброшен в тело; «коза» без эффекта. Подмешивание Стирателей в орду отключено. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
555d9c9b48
commit
8541c7abdf
@@ -97,6 +97,10 @@ namespace NecromancerTome
|
||||
}
|
||||
}
|
||||
|
||||
// ОТКЛЮЧЕНО 10.10 (новая концепция кровавой луны - «кровавый прилив», SnakeMode.IsBloodTide): в эту ночь
|
||||
// дух не выходит из тела, а кто был змеёй - выброшен в тело. Игрока-змеи в орде больше не бывает, и
|
||||
// античит не нужен. Сущность и её вид (выше и ниже) оставлены - вернуть подмешивание можно, сняв комментарий.
|
||||
/*
|
||||
/// <summary>
|
||||
/// Подмешивание в орду. Ванильный образец - AIDirectorBloodMoonParty.SpawnZombie: игрок в
|
||||
/// транспорте получает в орду стервятников с шансом 0.5. Класс зомби там берётся из
|
||||
@@ -139,6 +143,7 @@ namespace NecromancerTome
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
/// <summary>
|
||||
/// Вид Стирателя (02.10): тело - ванильная модель толстого гавайца (скелет, физика, теги,
|
||||
|
||||
@@ -157,6 +157,12 @@ namespace NecromancerTome
|
||||
HandPose.Jab(); // толчок к прицелу, как у «пиф-пафа» (05.10)
|
||||
_player.PlayOneShot(DenySound);
|
||||
World world = _player.world;
|
||||
if (SnakeMode.IsBloodTide())
|
||||
{
|
||||
// Кровавый прилив (10.10): леденящий ужас тонет в насыщенном воздухе - жест и звук есть, бегства нет.
|
||||
SnakeMode.BloodTideHint(_player);
|
||||
return;
|
||||
}
|
||||
if (world.IsRemote())
|
||||
{
|
||||
return; // ИИ живёт на сервере; клиент в мультиплеере - решать отдельно
|
||||
|
||||
@@ -808,6 +808,12 @@ namespace NecromancerTome
|
||||
Debug.Log("[NecromancerTome] MindPalace: днём чертоги недоступны");
|
||||
return;
|
||||
}
|
||||
if (SnakeMode.IsBloodTide())
|
||||
{
|
||||
SnakeMode.BloodTideHint(_player);
|
||||
Debug.Log("[NecromancerTome] MindPalace: кровавый прилив - дух не покидает тело");
|
||||
return;
|
||||
}
|
||||
World world = GameManager.Instance.World;
|
||||
if (world.IsRemote())
|
||||
{
|
||||
@@ -903,6 +909,13 @@ namespace NecromancerTome
|
||||
Exit(player);
|
||||
return;
|
||||
}
|
||||
if (SnakeMode.IsBloodTide())
|
||||
{
|
||||
SnakeMode.BloodTideHint(player);
|
||||
Debug.Log("[NecromancerTome] MindPalace: кровавый прилив - дух выброшен в тело");
|
||||
Exit(player);
|
||||
return;
|
||||
}
|
||||
Body(player);
|
||||
switch (_stage)
|
||||
{
|
||||
|
||||
@@ -260,6 +260,13 @@ namespace NecromancerTome
|
||||
{
|
||||
return false;
|
||||
}
|
||||
// Кровавый прилив (указание 10.10): дух не выходит из тела - ни в зомби, ни в своего питомца.
|
||||
if (SnakeMode.IsBloodTide())
|
||||
{
|
||||
SnakeMode.BloodTideHint(_player0);
|
||||
Debug.Log("[NecromancerTome] Possession: кровавый прилив - дух не покидает тело");
|
||||
return false;
|
||||
}
|
||||
Active = true;
|
||||
IsPet = _pet;
|
||||
Flying = _zombie is EntityVulture;
|
||||
@@ -398,7 +405,8 @@ namespace NecromancerTome
|
||||
return;
|
||||
}
|
||||
// Сам зомби в ужасе бежит от тела игрока (решение 03.10: «пугается и убегает как при отрицании»).
|
||||
if (!z.IsDead() && player != null)
|
||||
// В кровавый прилив леденящий ужас не действует (10.10) - выброшенный дух зомби не пугает.
|
||||
if (!z.IsDead() && player != null && !SnakeMode.IsBloodTide())
|
||||
{
|
||||
z.SetMoveForwardWithModifiers(0f, 0f, 0f, false);
|
||||
NecroFleeSnakeTask.ScareFrom(z, player, HandHolds.DenyMaxSeconds, HandHolds.DenySpeed, HandHolds.DenyFarDistance);
|
||||
@@ -496,6 +504,12 @@ namespace NecromancerTome
|
||||
Exit("одержимый погиб");
|
||||
return;
|
||||
}
|
||||
if (SnakeMode.IsBloodTide())
|
||||
{
|
||||
SnakeMode.BloodTideHint(_player);
|
||||
Exit("кровавый прилив - дух выброшен в тело");
|
||||
return;
|
||||
}
|
||||
if (Flying)
|
||||
{
|
||||
RevealMap(world, z); // разведка - только стервятник (указание 08.10)
|
||||
|
||||
@@ -65,6 +65,37 @@ namespace NecromancerTome
|
||||
return world != null && world.IsDark();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// «Кровавый прилив» (указание 10.10, новая концепция ночи кровавой луны). Луна в этой фазе тянет из
|
||||
/// земли некротлен - прах умерших за годы эпидемии, - и плотность некроэнергии в воздухе скачком
|
||||
/// сравнивается с плотностью в теле некроманта. Дух выходит из тела по перепаду плотностей; перепада
|
||||
/// нет - выйти нечем. Поэтому до утра: нет духа змеи, чертогов разума, одержимости (и зомби, и своих
|
||||
/// питомцев), а кто был вне тела к началу - выброшен в тело. «Коза» (леденящий ужас) тонет в
|
||||
/// насыщенном воздухе: жест есть, эффекта нет.
|
||||
/// Время - ванильное GameUtils.IsBloodMoonTime (от заката дня луны до рассвета), оно считается по часам
|
||||
/// мира и одинаково у хоста и клиента; AIDirector с его BloodMoonActive есть только у сервера.
|
||||
/// </summary>
|
||||
public static bool IsBloodTide()
|
||||
{
|
||||
World world = GameManager.Instance?.World;
|
||||
return world != null && GameUtils.IsBloodMoonTime(world.worldTime, (world.DuskHour, world.DawnHour),
|
||||
GameStats.GetInt(EnumGameStats.BloodMoonDay));
|
||||
}
|
||||
|
||||
/// <summary>Надпись «кровавого прилива» - не чаще раза в BloodTideHintPeriod с.</summary>
|
||||
public const float BloodTideHintPeriod = 2f;
|
||||
static float _bloodTideHintAt = -100f;
|
||||
|
||||
public static void BloodTideHint(EntityPlayerLocal _player)
|
||||
{
|
||||
if (_player == null || Time.time - _bloodTideHintAt < BloodTideHintPeriod)
|
||||
{
|
||||
return;
|
||||
}
|
||||
_bloodTideHintAt = Time.time;
|
||||
GameManager.ShowTooltip(_player, Localization.Get("necroBloodTide"));
|
||||
}
|
||||
|
||||
public static bool IsKnife(ItemClass _item)
|
||||
{
|
||||
return _item != null && _item.Name == KnifeName;
|
||||
@@ -81,6 +112,12 @@ namespace NecromancerTome
|
||||
Debug.Log("[NecromancerTome] SnakeMode: днём дух змеи недоступен");
|
||||
return;
|
||||
}
|
||||
if (IsBloodTide())
|
||||
{
|
||||
BloodTideHint(_player);
|
||||
Debug.Log("[NecromancerTome] SnakeMode: кровавый прилив - дух не покидает тело");
|
||||
return;
|
||||
}
|
||||
World world = GameManager.Instance.World;
|
||||
EntityClass snakeClass = EntityClass.list[EntityClass.FromString(SnakeClassName)];
|
||||
if (snakeClass == null)
|
||||
@@ -247,6 +284,13 @@ namespace NecromancerTome
|
||||
Exit(player);
|
||||
return;
|
||||
}
|
||||
if (IsBloodTide())
|
||||
{
|
||||
BloodTideHint(player);
|
||||
Debug.Log("[NecromancerTome] SnakeMode: кровавый прилив - дух выброшен в тело");
|
||||
Exit(player);
|
||||
return;
|
||||
}
|
||||
if (_placeSnake && PlaceSnake(player, snake))
|
||||
{
|
||||
_placeSnake = false;
|
||||
|
||||
Reference in New Issue
Block a user