Перейти к содержанию

Улучшенный скрипт вампира


Рекомендуемые сообщения

Приветствую, товарищи!

 

Эта тема раньше называлась по-другому, и таков ее оригинальный текст:

 

Нынче я засел-таки за подковыривание Облявского способа вампиризации населения, и возник у меня следующий вопрос. В стандартном Oblivion, когда вампир подходит к спящему NPC и активирует его, появляется диалог - поговорить или укусить. Вопрос в следующем: где находится данное окно в TES? Я посмотрел VampireScript и, насколько я понимаю, это окно прописано не там (хотя я очень слаб в скриптовании, воистину, десу). Итак, где же прописываются все эти окошки? В скриптах? Или в конфигурационных файлах? Как можно поменять эти окна, если это возможно?

 

Для уточнения приведу суть плагина... Я хочу сделать 3 возможных "вампирских карьеры" для игры. В зависимости от своего поведения игрок либо преодолеет свою вампирскую сущность и получит признание и любовь, либо позволит вампиру пересилить человека и превратится в ходячую мясорубку с вытекающей оттуда ненавистью со стороны рода людского, либо найдет средний путь и останется вампиром, способным кушать кровушку без потери больших человеческих жертв. Соответственно, игрок может игнорировать жажду крови, борясь за свою человечность (для этого нужно никого не кусать). Игрок может убивать ради крови (для этого нужно помечать своих жертв заклинанием). И игрок может пойти на компромисс и пить кровь, но не убивая - то есть мирно посасывая спящих граждан. Последнее и делается через этот злокозненный диалог, и к нему нужно прикрутить нечто, что позволило бы оповещать управляющий скрипт, что игрок насытился именно "мирным" способом... И где же это окошко кроется?

 

Теперь вопрос другой. Я написал-таки новый вампир-скрипт и был бы признателен, если бы кто-нибудь проверил в нем синтаксис...

 

--

S.

Изменено пользователем Dr.Sinc
Ссылка на комментарий
Поделиться на другие сайты

Между прочим, в проблеме темы я разобрался и в помощи по данному конкретному вопросу более не нуждаюсь... Меню создается самим движком Oblivion; при активации спящего NPC и выборе опции "кормиться" вызывается функция Player.VampireFeed, устанавливающая флаг игрока HasVampireFeed в 1, и ничего с этим боле не поделаешь... Зато есть обходной путь! Теперь мне нужно, чтобы кто-нибудь проверил мой скрипт...

 

Хоть я тоже в скриптах Морровинда почти ни бум бум, <...>

 

Нет, Вы не поняли... Я в них совсем ни бум бум. Если я могу бегло писать на Java всяких консольных математических автоматов, то здесь все совсем плохо. То есть, моя степень умения писать на TES Script выражается отрицательным числом. Все настолько плохо, что поначалу я эти скрипты пишу на аналоге школьного алгоритмического языка образца 72-го года ^_^

 

но все равно выложи текст етого вампирского скрипта

 

В общем, совершенно без понятия, будет ли оно работать или нет... Ибо переводил с алгоритмического языка ^_^ Итак, в чем суть. Имеются три глобальных переменных - Saint, Pacific и Killer, хранящие "вампирский" рейтинг игрока как Святого, Мирного и Убийцы соответственно. Первый возрастает каждые n дней голодания (отслеживается самим скриптом), второй - за каждую глотку, укушенную без гибели жертвы (тот самый HasVampireFed), третий - за каждого убитого ради крови (отслеживается через глобальную перменную HasVampireFedForcibly, которая изменяется с помощью скрипта, навешенного на спелл "убийства ради крови"). Поначалу (сразу после вампиризации) игрок является "нейтральным вампиром" со всеми 3-мя переменными, равными 0. С превышением одного из рейтингов над другими игрок получает новые статусы в каждой из трех ветвей развития (а с ними и новые способности), вплоть до трех высших "чинов" - Темного Святого (Святой, Saint = 50), Повелителя Ночи (Мирный, Pacific = 50) и Кровавого Лорда (Убийца, Killer = 50). После достижения одного из 3-х этих статусов "развитие" заканчивается и переменные больше не меняются - игрок добился высшего уровня. Собственно скрипт:

 

ScriptName VampireScript

global short Saint
global short Pacific
global short Saint
global short HasVampireFedForcibly
global short LastActionPerformed

short doOnce
short PCVampStatus
short hasDisease
short currentDay
short dayCount
short hungryDays
short growthComplete

float vampHours

begin GameMode

; Блок системных настроек
If ( doOnce == 1 )
	Set fQuestDelayTime To 0.5
	Set doOnce To 1
endif

; Если игрок излечился (т.е. PCVampire и PCVampStatus == -1), то ничего не делаем
If ( PCVampire == -1 )
	Return
endif

; Если PCVampStatus == -1 (т.е. игрок излечился), то устанавливаем и PCVampire в -1
If ( PCVampStatus == -1 )
	Set PCVampire To -1
endif

; Если PCVampStatus != -1 (т.е. игрок - вампир), то устанавливаем и PCVampire в 1
If ( PCVampStatus != -1 && PCVampire != 1 )
	Set PCVampire To 1
endif

; ----------------------------- БЛОК ПОЛУЧЕНИЯ ВАМПИРИЗМА ----------------------------------

; Коррекция статуса инфицирования по наличию заклинания болячки
If ( hasDisease == 0 )
	If ( Player.IsSpellTarget VampDisease == 1 )
		Set hasDisease To 1
	endif
endif

If ( hasDisease == 1 )
	If ( Player.IsSpellTarget VampDisease == 0 )
		Set hasDisease To 0
	endif
endif

; Собственно блок на превращение порфириновой гемофилии в настоящий вампиризм
If ( PCVampStatus == 0 )
	If ( hasDisease == 1 )
		If ( GetPCIsSex Male == 1 )
			MessageBox "Вступительный текст для мужчины"
		else
			MessageBox "Вступительный текст для женщины"
		endif
		Set hasDisease To 0

		Player.RemoveSpell VampDisease
		Player.AddSpell "_DA_Vampirism_lv0_f"
		Player.AddSpell "_DA_Vampire_lv0_f_Skills"
		Player.AddSpell "_DA_Vampire_lv0_f_Attrs"
		Player.AddSpell "_DA_Vampire_lv0_f_Spells"

		Player.SetFactionRank PlayerVampireFaction 0
		AddTopic CureforVampirism
		StartQuest MS40
		Set vampDay To GameDay
		Set vampHour To GameHour
	endif
endif

; ------------------- БЛОК ОТСЛЕЖИВАНИЯ ДЕЙСТВИЙ, ИЗМЕНЯЮЩИХ СТАТУСЫ -----------------------

; Блок, отслеживающий "покусывания без жертв" и изменяющий статус "Мирного"
If ( Player.HasVampireFed == 1 )
	Set hungryDays To 0

	Set Pacific To ( Pacific + 1 )
	Set Saint To ( Saint - 1 )
	Set Killer To ( Killer - 1 )
endif

; Блок, отслеживающий убийства ради крови и изменяющий статус "Убийцы"
If ( HasVampireFedForcibly == 1 )
	Set hungryDays To 0
	Set HasVampireFedForcibly To 0

	Set Killer To ( Killer + 1 )
	Set Saint To ( Saint - 1 )
	Set Pacific To ( Pacific - 1 )
endif

; ----------------- БЛОК, ИЗМЕНЯЮЩИЙ УРОВНИ В СООТВЕТСТВИИ СО СТАТУСАМИ --------------------

If ( growthComplete != 1 )
	; Условия для "Святого"
	If ( Saint > Pacific && Saint > Killer && Saint == 5 )
		Set PCVampStatus To 1
	elseif ( Saint > Pacific && Saint > Killer && Saint == 10 )
		Set PCVampStatus To 2
	elseif ( Saint > Pacific && Saint > Killer && Saint == 20 )
		Set PCVampStatus To 3
	elseif ( Saint > Pacific && Saint > Killer && Saint == 35 )
		Set PCVampStatus To 4
	elseif ( Saint > Pacific && Saint > Killer && Saint == 55 )
		Set PCVampStatus To 5
		Set growthComplete To 1
	endif

	; Условия для "Мирного"
	If ( Pacific > Saint && Pacific > Killer && Pacific == 5 )
		Set PCVampStatus To 11
	elseif ( Pacific > Saint && Pacific > Killer && Pacific == 10 )
		Set PCVampStatus To 12
	elseif ( Pacific > Saint && Pacific > Killer && Pacific == 20 )
		Set PCVampStatus To 13
	elseif ( Pacific > Saint && Pacific > Killer && Pacific == 35 )
		Set PCVampStatus To 14
	elseif ( Pacific > Saint && Pacific > Killer && Pacific == 55 )
		Set PCVampStatus To 15
		Set growthComplete To 1
	endif

	; Условия для "Убийцы"
	If ( Killer > Saint && Killer > Pacific && Killer == 5 )
		Set PCVampStatus To 21
	elseif ( Killer > Saint && Killer > Pacific && Killer == 10 )
		Set PCVampStatus To 22
	elseif ( Killer > Saint && Killer > Pacific && Killer == 20 )
		Set PCVampStatus To 23
	elseif ( Killer > Saint && Killer > Pacific && Killer == 35 )
		Set PCVampStatus To 24
	elseif ( Killer > Saint && Killer > Pacific && Killer == 55 )
		Set PCVampStatus To 25
		Set growthComplete To 1
	endif
endif

; ----------- БЛОК, ИЗМЕНЯЮЩИЙ СПОСОБНОСТИ В СООТВЕТСТВИИ СО СТАТУСАМИ --------------------

If ( PCVampStatus == 0 )
; "Нейтральный" ("начальный") вампир
	If ( daysHungry >= 3 )
	; Если голодает более 3-х дней, то слабеет...
		Player.RemoveSpell "_DA_Vampirism_lv0_f"
		Player.RemoveSpell "_DA_Vampire_lv0_f_Skills"
		Player.RemoveSpell "_DA_Vampire_lv0_f_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv0_f_Spells"

		Player.AddSpell "_DA_Vampirism_lv0_h"
		Player.AddSpell "_DA_Vampire_lv0_h_Skills"
		Player.AddSpell "_DA_Vampire_lv0_h_Attrs"
		Player.AddSpell "_DA_Vampire_lv0_h_Spells"
		Set vampHour To GameHour
	else
		Player.RemoveSpell "_DA_Vampirism_lv0_h"
		Player.RemoveSpell "_DA_Vampire_lv0_h_Skills"
		Player.RemoveSpell "_DA_Vampire_lv0_h_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv0_h_Spells"

		Player.AddSpell "_DA_Vampirism_lv0_f"
		Player.AddSpell "_DA_Vampire_lv0_f_Skills"
		Player.AddSpell "_DA_Vampire_lv0_f_Attrs"
		Player.AddSpell "_DA_Vampire_lv0_f_Spells"
		Set vampHour To GameHour
	endif
elseif ( PCVampStatus == 1 )
	If ( daysHungry >= 3 )
	; Если голодает более 3-х дней, то слабеет...
		Player.RemoveSpell "_DA_Vampirism_lv1_f"
		Player.RemoveSpell "_DA_Vampire_lv1_f_Skills"
		Player.RemoveSpell "_DA_Vampire_lv1_f_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv1_f_Spells"

		Player.AddSpell "_DA_Vampirism_lv1_h"
		Player.AddSpell "_DA_Vampire_lv1_h_Skills"
		Player.AddSpell "_DA_Vampire_lv1_h_Attrs"
		Player.AddSpell "_DA_Vampire_lv1_h_Spells"
		Set vampHour To GameHour
	else
		Player.RemoveSpell "_DA_Vampirism_lv1_h"
		Player.RemoveSpell "_DA_Vampire_lv1_h_Skills"
		Player.RemoveSpell "_DA_Vampire_lv1_h_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv1_h_Spells"

		Player.AddSpell "_DA_Vampirism_lv1_f"
		Player.AddSpell "_DA_Vampire_lv1_f_Skills"
		Player.AddSpell "_DA_Vampire_lv1_f_Attrs"
		Player.AddSpell "_DA_Vampire_lv1_f_Spells"
		Set vampHour To GameHour
	endif
elseif ( PCVampStatus == 2 )
	If ( daysHungry >= 3 )
	; Если голодает более 3-х дней, то слабеет...
		Player.RemoveSpell "_DA_Vampirism_lv2_f"
		Player.RemoveSpell "_DA_Vampire_lv2_f_Skills"
		Player.RemoveSpell "_DA_Vampire_lv2_f_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv2_f_Spells"

		Player.AddSpell "_DA_Vampirism_lv2_h"
		Player.AddSpell "_DA_Vampire_lv2_h_Skills"
		Player.AddSpell "_DA_Vampire_lv2_h_Attrs"
		Player.AddSpell "_DA_Vampire_lv2_h_Spells"
		Set vampHour To GameHour
	else
		Player.RemoveSpell "_DA_Vampirism_lv2_h"
		Player.RemoveSpell "_DA_Vampire_lv2_h_Skills"
		Player.RemoveSpell "_DA_Vampire_lv2_h_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv2_h_Spells"

		Player.AddSpell "_DA_Vampirism_lv2_f"
		Player.AddSpell "_DA_Vampire_lv2_f_Skills"
		Player.AddSpell "_DA_Vampire_lv2_f_Attrs"
		Player.AddSpell "_DA_Vampire_lv2_f_Spells"
		Set vampHour To GameHour
	endif
elseif ( PCVampStatus == 3 )
	If ( daysHungry >= 3 )
	; Если голодает более 3-х дней, то слабеет...
		Player.RemoveSpell "_DA_Vampirism_lv3_f"
		Player.RemoveSpell "_DA_Vampire_lv3_f_Skills"
		Player.RemoveSpell "_DA_Vampire_lv3_f_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv3_f_Spells"

		Player.AddSpell "_DA_Vampirism_lv3_h"
		Player.AddSpell "_DA_Vampire_lv3_h_Skills"
		Player.AddSpell "_DA_Vampire_lv3_h_Attrs"
		Player.AddSpell "_DA_Vampire_lv3_h_Spells"
		Set vampHour To GameHour
	else
		Player.RemoveSpell "_DA_Vampirism_lv3_h"
		Player.RemoveSpell "_DA_Vampire_lv3_h_Skills"
		Player.RemoveSpell "_DA_Vampire_lv3_h_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv3_h_Spells"

		Player.AddSpell "_DA_Vampirism_lv3_f"
		Player.AddSpell "_DA_Vampire_lv3_f_Skills"
		Player.AddSpell "_DA_Vampire_lv3_f_Attrs"
		Player.AddSpell "_DA_Vampire_lv3_f_Spells"
		Set vampHour To GameHour
	endif
elseif ( PCVampStatus == 4 )
	If ( daysHungry >= 3 )
	; Если голодает более 3-х дней, то слабеет...
		Player.RemoveSpell "_DA_Vampirism_lv4_f"
		Player.RemoveSpell "_DA_Vampire_lv4_f_Skills"
		Player.RemoveSpell "_DA_Vampire_lv4_f_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv4_f_Spells"

		Player.AddSpell "_DA_Vampirism_lv4_h"
		Player.AddSpell "_DA_Vampire_lv4_h_Skills"
		Player.AddSpell "_DA_Vampire_lv4_h_Attrs"
		Player.AddSpell "_DA_Vampire_lv4_h_Spells"
		Set vampHour To GameHour
	else
		Player.RemoveSpell "_DA_Vampirism_lv4_h"
		Player.RemoveSpell "_DA_Vampire_lv4_h_Skills"
		Player.RemoveSpell "_DA_Vampire_lv4_h_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv4_h_Spells"

		Player.AddSpell "_DA_Vampirism_lv4_f"
		Player.AddSpell "_DA_Vampire_lv4_f_Skills"
		Player.AddSpell "_DA_Vampire_lv4_f_Attrs"
		Player.AddSpell "_DA_Vampire_lv4_f_Spells"
		Set vampHour To GameHour
	endif
elseif ( PCVampStatus == 5 )
; "Темный Святой"; он не голодает ^_^
	Player.AddSpell "_DA_Vampirism_lv5_h"
	Player.AddSpell "_DA_Vampire_lv5_h_Skills"
	Player.AddSpell "_DA_Vampire_lv5_h_Attrs"
	Player.AddSpell "_DA_Vampire_lv5_h_Spells"
elseif ( PCVampStatus == 11 )
	If ( daysHungry >= 3 )
	; Если голодает более 3-х дней, то слабеет...
		Player.RemoveSpell "_DA_Vampirism_lv11_f"
		Player.RemoveSpell "_DA_Vampire_lv11_f_Skills"
		Player.RemoveSpell "_DA_Vampire_lv11_f_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv11_f_Spells"

		Player.AddSpell "_DA_Vampirism_lv11_h"
		Player.AddSpell "_DA_Vampire_lv11_h_Skills"
		Player.AddSpell "_DA_Vampire_lv11_h_Attrs"
		Player.AddSpell "_DA_Vampire_lv11_h_Spells"
		Set vampHour To GameHour
	else
		Player.RemoveSpell "_DA_Vampirism_lv11_h"
		Player.RemoveSpell "_DA_Vampire_lv11_h_Skills"
		Player.RemoveSpell "_DA_Vampire_lv11_h_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv11_h_Spells"

		Player.AddSpell "_DA_Vampirism_lv11_f"
		Player.AddSpell "_DA_Vampire_lv11_f_Skills"
		Player.AddSpell "_DA_Vampire_lv11_f_Attrs"
		Player.AddSpell "_DA_Vampire_lv11_f_Spells"
		Set vampHour To GameHour
	endif
elseif ( PCVampStatus == 12 )
	If ( daysHungry >= 3 )
	; Если голодает более 3-х дней, то слабеет...
		Player.RemoveSpell "_DA_Vampirism_lv12_f"
		Player.RemoveSpell "_DA_Vampire_lv12_f_Skills"
		Player.RemoveSpell "_DA_Vampire_lv12_f_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv12_f_Spells"

		Player.AddSpell "_DA_Vampirism_lv12_h"
		Player.AddSpell "_DA_Vampire_lv12_h_Skills"
		Player.AddSpell "_DA_Vampire_lv12_h_Attrs"
		Player.AddSpell "_DA_Vampire_lv12_h_Spells"
		Set vampHour To GameHour
	else
		Player.RemoveSpell "_DA_Vampirism_lv12_h"
		Player.RemoveSpell "_DA_Vampire_lv12_h_Skills"
		Player.RemoveSpell "_DA_Vampire_lv12_h_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv12_h_Spells"

		Player.AddSpell "_DA_Vampirism_lv12_f"
		Player.AddSpell "_DA_Vampire_lv12_f_Skills"
		Player.AddSpell "_DA_Vampire_lv12_f_Attrs"
		Player.AddSpell "_DA_Vampire_lv12_f_Spells"
		Set vampHour To GameHour
	endif
elseif ( PCVampStatus == 13 )
	If ( daysHungry >= 3 )
	; Если голодает более 3-х дней, то слабеет...
		Player.RemoveSpell "_DA_Vampirism_lv13_f"
		Player.RemoveSpell "_DA_Vampire_lv13_f_Skills"
		Player.RemoveSpell "_DA_Vampire_lv13_f_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv13_f_Spells"

		Player.AddSpell "_DA_Vampirism_lv13_h"
		Player.AddSpell "_DA_Vampire_lv3_h_Skills"
		Player.AddSpell "_DA_Vampire_lv3_h_Attrs"
		Player.AddSpell "_DA_Vampire_lv13_h_Spells"
		Set vampHour To GameHour
	else
		Player.RemoveSpell "_DA_Vampirism_lv13_h"
		Player.RemoveSpell "_DA_Vampire_lv13_h_Skills"
		Player.RemoveSpell "_DA_Vampire_lv13_h_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv13_h_Spells"

		Player.AddSpell "_DA_Vampirism_lv13_f"
		Player.AddSpell "_DA_Vampire_lv13_f_Skills"
		Player.AddSpell "_DA_Vampire_lv13_f_Attrs"
		Player.AddSpell "_DA_Vampire_lv13_f_Spells"
		Set vampHour To GameHour
	endif
elseif ( PCVampStatus == 14 )
	If ( daysHungry >= 3 )
	; Если голодает более 3-х дней, то слабеет...
		Player.RemoveSpell "_DA_Vampirism_lv14_f"
		Player.RemoveSpell "_DA_Vampire_lv14_f_Skills"
		Player.RemoveSpell "_DA_Vampire_lv14_f_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv14_f_Spells"

		Player.AddSpell "_DA_Vampirism_lv14_h"
		Player.AddSpell "_DA_Vampire_lv14_h_Skills"
		Player.AddSpell "_DA_Vampire_lv14_h_Attrs"
		Player.AddSpell "_DA_Vampire_lv14_h_Spells"
		Set vampHour To GameHour
	else
		Player.RemoveSpell "_DA_Vampirism_lv14_h"
		Player.RemoveSpell "_DA_Vampire_lv14_h_Skills"
		Player.RemoveSpell "_DA_Vampire_lv14_h_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv14_h_Spells"

		Player.AddSpell "_DA_Vampirism_lv14_f"
		Player.AddSpell "_DA_Vampire_lv14_f_Skills"
		Player.AddSpell "_DA_Vampire_lv14_f_Attrs"
		Player.AddSpell "_DA_Vampire_lv14_f_Spells"
		Set vampHour To GameHour
	endif
elseif ( PCVampStatus == 15 )
; "Владыка Ночи"
	If ( daysHungry >= 2 )
	; Если голодает более 2-х дней, то слабеет...
		Player.RemoveSpell "_DA_Vampirism_lv15_f"
		Player.RemoveSpell "_DA_Vampire_lv15_f_Skills"
		Player.RemoveSpell "_DA_Vampire_lv15_f_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv15_f_Spells"

		Player.AddSpell "_DA_Vampirism_lv15_h"
		Player.AddSpell "_DA_Vampire_lv15_h_Skills"
		Player.AddSpell "_DA_Vampire_lv15_h_Attrs"
		Player.AddSpell "_DA_Vampire_lv15_h_Spells"
		Set vampHour To GameHour
	else
		Player.RemoveSpell "_DA_Vampirism_lv15_h"
		Player.RemoveSpell "_DA_Vampire_lv15_h_Skills"
		Player.RemoveSpell "_DA_Vampire_lv15_h_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv15_h_Spells"

		Player.AddSpell "_DA_Vampirism_lv15_f"
		Player.AddSpell "_DA_Vampire_lv15_f_Skills"
		Player.AddSpell "_DA_Vampire_lv15_f_Attrs"
		Player.AddSpell "_DA_Vampire_lv15_f_Spells"
		Set vampHour To GameHour
	endif
elseif ( PCVampStatus == 21 )
	If ( daysHungry >= 3 )
	; Если голодает более 3-х дней, то слабеет...
		Player.RemoveSpell "_DA_Vampirism_lv21_f"
		Player.RemoveSpell "_DA_Vampire_lv21_f_Skills"
		Player.RemoveSpell "_DA_Vampire_lv21_f_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv21_f_Spells"

		Player.AddSpell "_DA_Vampirism_lv21_h"
		Player.AddSpell "_DA_Vampire_lv21_h_Skills"
		Player.AddSpell "_DA_Vampire_lv21_h_Attrs"
		Player.AddSpell "_DA_Vampire_lv21_h_Spells"
		Set vampHour To GameHour
	else
		Player.RemoveSpell "_DA_Vampirism_lv21_h"
		Player.RemoveSpell "_DA_Vampire_lv21_h_Skills"
		Player.RemoveSpell "_DA_Vampire_lv21_h_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv21_h_Spells"

		Player.AddSpell "_DA_Vampirism_lv21_f"
		Player.AddSpell "_DA_Vampire_lv21_f_Skills"
		Player.AddSpell "_DA_Vampire_lv21_f_Attrs"
		Player.AddSpell "_DA_Vampire_lv21_f_Spells"
		Set vampHour To GameHour
	endif
elseif ( PCVampStatus == 22 )
	If ( daysHungry >= 3 )
	; Если голодает более 3-х дней, то слабеет...
		Player.RemoveSpell "_DA_Vampirism_lv22_f"
		Player.RemoveSpell "_DA_Vampire_lv22_f_Skills"
		Player.RemoveSpell "_DA_Vampire_lv22_f_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv22_f_Spells"

		Player.AddSpell "_DA_Vampirism_lv22_h"
		Player.AddSpell "_DA_Vampire_lv22_h_Skills"
		Player.AddSpell "_DA_Vampire_lv22_h_Attrs"
		Player.AddSpell "_DA_Vampire_lv22_h_Spells"
		Set vampHour To GameHour
	else
		Player.RemoveSpell "_DA_Vampirism_lv22_h"
		Player.RemoveSpell "_DA_Vampire_lv22_h_Skills"
		Player.RemoveSpell "_DA_Vampire_lv22_h_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv22_h_Spells"

		Player.AddSpell "_DA_Vampirism_lv22_f"
		Player.AddSpell "_DA_Vampire_lv22_f_Skills"
		Player.AddSpell "_DA_Vampire_lv22_f_Attrs"
		Player.AddSpell "_DA_Vampire_lv22_f_Spells"
		Set vampHour To GameHour
	endif
elseif ( PCVampStatus == 23 )
	If ( daysHungry >= 3 )
	; Если голодает более 3-х дней, то слабеет...
		Player.RemoveSpell "_DA_Vampirism_lv23_f"
		Player.RemoveSpell "_DA_Vampire_lv23_f_Skills"
		Player.RemoveSpell "_DA_Vampire_lv23_f_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv23_f_Spells"

		Player.AddSpell "_DA_Vampirism_lv23_h"
		Player.AddSpell "_DA_Vampire_lv23_h_Skills"
		Player.AddSpell "_DA_Vampire_lv23_h_Attrs"
		Player.AddSpell "_DA_Vampire_lv23_h_Spells"
		Set vampHour To GameHour
	else
		Player.RemoveSpell "_DA_Vampirism_lv23_h"
		Player.RemoveSpell "_DA_Vampire_lv23_h_Skills"
		Player.RemoveSpell "_DA_Vampire_lv23_h_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv23_h_Spells"

		Player.AddSpell "_DA_Vampirism_lv23_f"
		Player.AddSpell "_DA_Vampire_lv23_f_Skills"
		Player.AddSpell "_DA_Vampire_lv23_f_Attrs"
		Player.AddSpell "_DA_Vampire_lv23_f_Spells"
		Set vampHour To GameHour
	endif
elseif ( PCVampStatus == 24 )
	If ( daysHungry >= 3 )
	; Если голодает более 3-х дней, то слабеет...
		Player.RemoveSpell "_DA_Vampirism_lv24_f"
		Player.RemoveSpell "_DA_Vampire_lv24_f_Skills"
		Player.RemoveSpell "_DA_Vampire_lv24_f_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv24_f_Spells"

		Player.AddSpell "_DA_Vampirism_lv24_h"
		Player.AddSpell "_DA_Vampire_lv24_h_Skills"
		Player.AddSpell "_DA_Vampire_lv24_h_Attrs"
		Player.AddSpell "_DA_Vampire_lv24_h_Spells"
		Set vampHour To GameHour
	else
		Player.RemoveSpell "_DA_Vampirism_lv24_h"
		Player.RemoveSpell "_DA_Vampire_lv24_h_Skills"
		Player.RemoveSpell "_DA_Vampire_lv24_h_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv24_h_Spells"

		Player.AddSpell "_DA_Vampirism_lv24_f"
		Player.AddSpell "_DA_Vampire_lv24_f_Skills"
		Player.AddSpell "_DA_Vampire_lv24_f_Attrs"
		Player.AddSpell "_DA_Vampire_lv24_f_Spells"
		Set vampHour To GameHour
	endif
elseif ( PCVampStatus == 25 )
; "Кровавый Лорд"
	If ( daysHungry >= 1 )
	; Если голодает более 1-го дня, то слабеет...
		Player.RemoveSpell "_DA_Vampirism_lv25_f"
		Player.RemoveSpell "_DA_Vampire_lv25_f_Skills"
		Player.RemoveSpell "_DA_Vampire_lv25_f_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv25_f_Spells"

		Player.AddSpell "_DA_Vampirism_lv25_h"
		Player.AddSpell "_DA_Vampire_lv25_h_Skills"
		Player.AddSpell "_DA_Vampire_lv25_h_Attrs"
		Player.AddSpell "_DA_Vampire_lv25_h_Spells"
		Set vampHour To GameHour
	else
		Player.RemoveSpell "_DA_Vampirism_lv25_h"
		Player.RemoveSpell "_DA_Vampire_lv25_h_Skills"
		Player.RemoveSpell "_DA_Vampire_lv25_h_Attrs"
		Player.RemoveSpell "_DA_Vampire_lv25_h_Spells"

		Player.AddSpell "_DA_Vampirism_lv25_f"
		Player.AddSpell "_DA_Vampire_lv25_f_Skills"
		Player.AddSpell "_DA_Vampire_lv25_f_Attrs"
		Player.AddSpell "_DA_Vampire_lv25_f_Spells"
		Set vampHour To GameHour
	endif
endif
end

begin MenuMode


; Отсчитываем дни, которые игрок был заражен порфириновой гемофилией
If ( hasDisease == 1 )
	If ( currentDay == 0 )
		Set currentDay To GameDay
	else
		If ( currentDay != GameDay )
			Set dayCount To ( dayCount + 1 )
			Set currentDay To GameDay
		endif
	endif
endif

; Если прошло 3 или более дня с заболевания порфириновой гемофилией, изменяем уровень на 0
If ( hasDisease == 1 )
	If ( dayCount >= 3)
		If ( IsPCSleeping )
			WakeUpPC
			Set PCVampStatus To 0
		endif
	endif
endif

; Блок, отслеживающий голодные дни и изменяющий статус Святого
If ( PCVampStatus != -1 )
	If ( IsTimePassing )
		If ( vampHours >= 22 )
			Set hungryDays To ( hungryDays + 1 )
			Set vampHours To 0

			If ( growthComplete != 1 )
				Set lastActionPerformed To 1
				Set Saint To ( Saint + 1 )
				Set Pacific To ( Pacific - 1 )
				Set Killer To ( Killer - 1 )
			endif
		endif
	endif
endif

end

End

Изменено пользователем Dr.Sinc
Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Как там, создание плага не заглохло? Идея очень хорошая.

 

P.S. Скрипт на первый взгляд вполне рабочий. Но надо потестить в "натуре", а не на первый взгляд ))

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...