fallout.ru

Новые функции, появившиеся в Бладмуне

Новое дополнение к игре, Bloodmoon, добавляет несколько функций. Учтите, что и у Вас, и у игрока должно быть установлено это адд-он. Иначе Ваш мод работать не будет.

Список новых функций

GetPCTravelin
GetPCInJail PlaceAtMe
SetWerewolfAcrobatics
TurnMoonWhite
TurnMoonRed
GetWerewolfKills
IsWerewolf
UndoWerewolf
BecomeWerewolf
AllowWereWolfForceGreeting
PCKnownWerewolf

GetPCTraveling и GetPCInJail

GetPCTraveling
GetPCInJail

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

if ( PCWerewolf != 1 ) ; НЕ ВЫПОЛНЯТЬ, ЕСЛИ ИГРОК НЕ ОБОРОТЕНЬ
            return
endif

if ( GetPCinJail == 1 )
            return
endif

if ( GetPCTraveling == 1 )
            return
endif

Разрешить спровоцированный диалог с оборотнем

Эту переменную необходимо объявить, чтобы появилась возможность начать функцией ForceGreeting диалог с оборотнем.

Пример:

Begin dulkScript

short doOnce
short playerwolf
short AllowWerewolfForceGreeting
if ( GetJournalIndex BM_FrostGiant2 == 10 )
            if ( doOnce == 0 )
                        if ( GetDistance Player <= 512 )
                                    if ( Player->IsWerewolf == 1 )
                                                ForceGreeting
                                                set doOnce to 1
                                    endif
                        endif
            endif
elseif ( GetJournalIndex BM_FrostGiant2 == 70 )
            if ( doOnce == 1 )
                        if ( GetDistance Player <= 512 )
                                    ;if ( Player->IsWerewolf == 1 )
                                                ForceGreeting
                                                set doOnce to 2
                                    ;endif
                        endif
            endif
endif

End dulkScript

Поместить один объект возле другого

Object->PlaceAtMe ‘ID_предмета’ рассчитать расстояние

Функция позволяет помещать один объект, возле какого-либо другого. Например, в Бладмуне она расставляет оппонентов в зависимости от расстояния до игрока. Таким образом, создаётся впечатление, что враги всё появляются и появляются.

;ЭТО ПОМЕЩАЕТ ОХОТНИКА В НЕОБХОДИМОМ МЕСТЕ, УВЕЛИЧИВАЕТ СЧЁТЧИК И СБРАСЫВАЕТ ТАЙМЕР НА 0
if ( popA == 1 )
            "active_BM_hunter1"->PlaceAtMe skaal_hunter 1 1 1
            set huntercount to ( huntercount + 1 )
            set timer to 0
elseif ( popB == 1 )
            "active_BM_hunter2"->PlaceAtMe skaal_hunter 1 1 1
            set huntercount to ( huntercount + 1 )
            set timer to 0
elseif ( popC == 1 )
            "active_BM_hunter3"->PlaceAtMe skaal_hunter 1 1 1
            set huntercount to ( huntercount + 1 )
            set timer to 0
endif

Установить атрибуты волка

Object->SetWerewolfAcrobatics

Функция устанавливает значение какого-либо атрибута, как у оборотня. Список таких атрибутов, которые фактически являются игровыми настройками, смотрите в Приложении.

Player->AddSpell "werewolf vision"
Player->AddSpell "werewolf regeneration"
Player->SetWereWolfAcrobatics

Изменение цвета Секунды

TurnMoonWhite
TurnMoonRed

Эти две функции меняют цвет меньшей Луны на белый или красный соответственно. Это никак непосредственно не влияет на саму игру – просто небо выглядит по-другому.

if ( doOnce == 0 )
            TurnMoonRed
            set doOnce to 1
endif

Как много людей убил оборотень

GetWerewolfKills

Функция возвращает значение счётчика, который содержит число жертв, убитых оборотнем за ночь. Этот счётчик сбрасывается на 0, как только игрок вновь превращается в человека.

if ( GetWerewolfKills > 0 )
            ; Код, избавляющий игрока от волчьего голода
endif

Проверка состояния

Object->IsWerewolf

Эта «переменная» определяет, является ли NPC или любое другое существо оборотнем.

if ( Player->IsWerewolf != 1 ) ;НЕ ВЫПОЛНЯТЬ, ЕСЛИ ИГРОК НЕ ОБОРОТЕНЬ
            return
endif

Превращение в оборотня

Object->BecomeWerewolf
Object->UndoWerewolf

Эти переменные превращают существо в волка или обратно в человека соответственно. Учтите, что эти функции участвуют в большом количество проверок, поэтому использование их просто ради забавы может привести к тому, что игра «вылетит»!

if ( OnPCEquip == 1 )
            Player->BecomeWereWolf
            Set OnPCEquip to 0
Endif

Set timer to ( timer + GetSecondsPassed )

If ( timer > 10 )
            Player->UndoWereWolf
Endif

Специальные глобальные переменные для оборотней

PCknownWerewolf (глобальная переменная типа short)

Эта глобальная переменная отображает, знают ли простые обыватели, что игрок – оборотень.

PCWerewolf (глобальная переменная типа short)

Принимает значение 1, когда игрок становится оборотнем. Участвует в бессчётном множестве проверок и скриптов.

WerewolfClawMult (глобальная переменная типа short)

Вероятно, множитель для урона от удара когтями. Неясно.