code:
# искусственный_идиот
!BATTLE AI (ARTIFICIAL IDIOT) FOR ENEMIES
def = 0
atk = i

!change defensive stance
случай = 1 + ((48271 * (i + master_energy + master_half_energy + дух_врага[i])) mod 65537)/(65537/3) &! pseudo-rand(1,3) using current spirit value of this enemy as offset - ImperatorAugustus
if случай = 1: $защита[i] = 'блок'
if случай = 2: $защита[i] = 'уклонение'
if случай = 3: $защита[i] = 'контратака'

вред_на_рассчет = базовый_вред[$враг[i]]

!determine the action
if $класс_моба[$враг[i]] = "пешка":
	ам = 1
end

if $класс_моба[$враг[i]] = "рядовой":
	ам = 1 + ((48271 * (i + master_energy + master_half_energy + дух_игрока + дух_врага[i])) mod 65537)/(65537/2) &! pseudo-rand(1,2) using current spirit value of defender (player) plus this enemy as offset - ImperatorAugustus
end

a = 0
:loop
a += 1
if $класс_моба[$враг[i]] = "элитный":
	ам = 1 + ((48271 * (a + master_energy + master_half_energy + дух_игрока + дух_врага[i])) mod 65537)/(65537/iif(game_difficulty = 1, 3, 6)) &! pseudo-rand(1,3 or 6) - 6 enables enemy special attacks - using current spirit value of defender (player) plus this enemy as offset - ImperatorAugustus
end

if ам = 1:
	$атака[i] = '<<$атака_1_тип[$враг[i]]>>'
	$рассчетный_тип_вреда = '<<$атака_1_тип_вреда[$враг[i]]>>'
end

if ам = 2:
	$атака[i] = '<<$атака_2_тип[$враг[i]]>>'
	$рассчетный_тип_вреда = '<<$атака_2_тип_вреда[$враг[i]]>>'
end

if ам = 3:
	$атака[i] = '<<$атака_3_тип[$враг[i]]>>'
	$рассчетный_тип_вреда = '<<$атака_3_тип_вреда[$враг[i]]>>'
end

if ам = 4:
	if суператака_истрачена[1] = 1 or базовый_вред_суператаки_1[$враг[i]] = 0: jump 'loop'
	$атака[i] = '<<$суператака_1_тип[$враг[i]]>>'
	$рассчетный_тип_вреда = '<<$суператака_1_тип_вреда[$враг[i]]>>'
	вред_на_рассчет = базовый_вред_суператаки_1[$враг[i]]
	dynamic $спецэффект_суператаки_1[$враг[i]]
	$эффект_суператаки = $суператака_1_кратко[$враг[i]]
	$наложение[i] = ''
	суператака_истрачена[1] = 1
end

if ам = 5:
	if суператака_истрачена[2] = 1 or базовый_вред_суператаки_2[$враг[i]] = 0: jump 'loop'
	$атака[i] = '<<$суператака_2_тип[$враг[i]]>>'
	$рассчетный_тип_вреда = '<<$суператака_2_тип_вреда[$враг[i]]>>'
	вред_на_рассчет = базовый_вред_суператаки_2[$враг[i]]
	dynamic $спецэффект_суператаки_2[$враг[i]]
	$эффект_суператаки = $суператака_2_кратко[$враг[i]]
	$наложение[i] = ''
	суператака_истрачена[2] = 1
end

if ам = 6:
	if суператака_истрачена[3] = 1 or базовый_вред_суператаки_3[$враг[i]] = 0: jump 'loop'
	$атака[i] = '<<$суператака_3_тип[$враг[i]]>>'
	$рассчетный_тип_вреда = '<<$суператака_3_тип_вреда[$враг[i]]>>'
	вред_на_рассчет = базовый_вред_суператаки_3[$враг[i]]
	dynamic $спецэффект_суператаки_3[$враг[i]]
	$эффект_суператаки = $суператака_3_кратко[$враг[i]]
	$наложение[i] = ''
	суператака_истрачена[3] = 1
end

gs 'рассчет_вреда'

$действия_врага[i] = ''
if  ам = 1: $действия_врага[i] += "<<$атака_1_текст[$враг[i]]>>"
if  ам = 2: $действия_врага[i] += "<<$атака_2_текст[$враг[i]]>>"
if  ам = 3: $действия_врага[i] += "<<$атака_3_текст[$враг[i]]>>"
if  ам = 4: $действия_врага[i] += "<<$суператака_1_текст[$враг[i]]>>"
if  ам = 5: $действия_врага[i] += "<<$суператака_2_текст[$враг[i]]>>"
if  ам = 6: $действия_врага[i] += "<<$суператака_3_текст[$враг[i]]>>"

$действия_врага[i] += " [<<нанесенный_вред[atk]>>] "

if $эффект = 'удвоение':
	наложение[i] = 0
	$наложение[i] = 'удвоение вреда'
end

$действия_врага[i] += "<<$эффект_суператаки>>"
$эффект_суператаки = ''

if ам > 3:
	jump 'loop1'
end

if $эффект = 'бонус':
	наложение[i] = 1
	if ам = 1:
		$наложение[i] = '<<$атака_1_бонус[$враг[i]]>>'
		длительность[i] = атака_1_длительность[$враг[i]]
	end
	if ам = 2:
		$наложение[i] = '<<$атака_2_бонус[$враг[i]]>>'
		длительность[i] = атака_2_длительность[$враг[i]]
	end
	if ам = 3:
		$наложение[i] = '<<$атака_3_бонус[$враг[i]]>>'
		длительность[i] = атака_3_длительность[$враг[i]]
	end
end
if $эффект = 'штраф':
	наложение[i] = 2
	if ам = 1:
		$наложение[i] = '<<$атака_1_штраф[$враг[i]]>>'
		длительность[i] = атака_1_длительность[$враг[i]]
	end
	if ам = 2:
		$наложение[i] = '<<$атака_2_штраф[$враг[i]]>>'
		длительность[i] = атака_2_длительность[$враг[i]]
	end
	if ам = 3:
		$наложение[i] = '<<$атака_3_штраф[$враг[i]]>>'
		длительность[i] = атака_3_длительность[$враг[i]]
	end
end

if $наложение[i] = 'удвоение вреда':
	$действия_врага[i] += "[doubled]
"
end

!status inflict translation
if $наложение[i] = 'слабость': $действия_врага[i] += "[weakness]
"
if $наложение[i] = 'шаткость': $действия_врага[i] += "[unsteadiness]
"
if $наложение[i] = 'бешенство': $действия_врага[i] += "[fury]
"
if $наложение[i] = 'адреналин': $действия_врага[i] += "[adrenaline]
"

if $наложение[i] = 'скованность': $действия_врага[i] += "[stiffness]
"
if $наложение[i] = 'ошеломление': $действия_врага[i] += "[stunned]
"
if $наложение[i] = 'разгон': $действия_врага[i] += "[acceleration]
"
if $наложение[i] = 'верткость': $действия_врага[i] += "[evasion]
"

if $наложение[i] = 'боль': $действия_врага[i] += "[pain]
"
if $наложение[i] = 'рассеянность': $действия_врага[i] += "[distraction]
"
if $наложение[i] = 'меткость': $действия_врага[i] += "[precision]
"
if $наложение[i] = 'внимание': $действия_врага[i] += "[attention]
"

:loop1

--- искусственный_идиот ---------------------------------


code:
# конец_боя
!WHEN FIGHT IS FINISHED WE WILL BE HERE
arena_mode = 0
killvar 'суперудар_сделан'

dynamic $броня_снять[$броня]

!Information about the latest actions of the player and opponents
$информация_о_бое = ''
if $боевая_обстановка ! '': $информация_о_бое += '<<$боевая_обстановка>>

'
$информация_о_бое += '<<$действия_игрока>>

'
$информация_о_бое += '<<$действия_врага[1]>>
'
$информация_о_бое += '<<$действия_врага[2]>>
'
$информация_о_бое += '<<$действия_врага[3]>>
'
$информация_о_бое += '<<$действия_врага[4]>>
'
$информация_о_бое += '<<$действия_врага[5]>>
'

if $place = 'edge_patrol':
	*p '
<img src = "content/pic/bg/<<$bg["edge_patrol"]>>.png">
'
elseif ui_style = 2:
	*p '

'
else
	*p '

'
end

*p '
<<$информация_о_бое>>
'

!control menu
if $extra_special_used = '': $extra_special_used = 'content/pic/buttons/shield_used.png'
if $extra_special_used = 'content/pic/buttons/dual_used.png': $extra_special_used = 'content/pic/buttons/shield_used.png'
if $extra_special_used = 'content/pic/buttons/net_used.png': $extra_special_used = 'content/pic/buttons/shield_used.png'
if $extra_special_used = 'content/pic/buttons/whip_used.png': $extra_special_used = 'content/pic/buttons/shield_used.png'
if $extra_special_used = 'content/pic/buttons/heavy_used.png': $extra_special_used = 'content/pic/buttons/shield_used.png'

if $итог_боя = 'победа':
	if ui_style = 2:
		$боевое_меню = "
"
	else
		$боевое_меню = "
"
	end
	if ui_style = 2:
		*p "
<img src = '<<$extra_special_used>>'>
"
	else
		*p "
<img src = '<<$extra_special_used>>'>
"
	end
end
if $итог_боя = 'бегство':
	if ui_style = 2:
		$боевое_меню = "
"
	else
		$боевое_меню = "
"
	end
	if ui_style = 2:
		*p "
<img src = '<<$extra_special_used>>'>
"
	else
		*p "
<img src = '<<$extra_special_used>>'>
"
	end
end
if $итог_боя = 'вырубился':
	if ui_style = 2:
		$боевое_меню = "
"
	else
		$боевое_меню = "
"
	end
	if ui_style = 2:
		*p "
<img src = '<<$extra_special_used>>'>
"
	else
		*p "
<img src = '<<$extra_special_used>>'>
"
	end
end
if $итог_боя = 'убит':
	if ui_style = 2:
		$боевое_меню = "
"
	else
		$боевое_меню = "
"
	end
	if ui_style = 2:
		*p "
<img src = '<<$extra_special_used>>'>
"
	else
		*p "
<img src = '<<$extra_special_used>>'>
"
	end
end

*p '
<<$боевое_меню>>
'

*p '
'
	*p '
<img src = "<<$combatant_ava>>">
'
	*p '
<<$combatant_name>>
'
	*p '
<<$защита_описание[$защита[0]]>>
'
	*p '

'
	*p '

'
	*p '
<<здоровье_игрока>>
'
	*p '

'
	*p '
<<выносливость_игрока>>
'
	*p '

'
	*p '
<<дух_игрока>>
'
*p '
'

*p '
'
	*p '
<img src = "<<$аватара_моба[$враг[текущий]]>>">
'
	*p '
<<$имя_врага[текущий]>>
'
	*p '
Doesn’t defend
'
	*p '

'
	*p '
<<здоровье_врага[текущий]>>
'
	*p '

'
	*p '
<<выносливость_врага[текущий]>>
'
	*p '

'
	*p '
<<дух_врага[текущий]>>
'
*p '
'

--- конец_боя ---------------------------------

repo_name: zaksynack/game

license: unknown


code:
# конец_раунда
!The round ends, and all caused effects has been calculated

!gradually pass all current good and bad effects
i = -1
:loop
if i < количество_врагов:
	i += 1
	if слабость[i] > 0: слабость[i] -= 1
	if скованность[i] > 0:скованность[i] -= 1
	if боль[i] > 0:боль[i] -= 1
	if шаткость[i] > 0:шаткость[i] -= 1
	if ошеломление[i] > 0:ошеломление[i] -= 1
	if рассеянность[i] > 0:рассеянность[i] -= 1
	if бешенство[i] > 0:бешенство[i] -= 1
	if разгон[i] > 0:разгон[i] -= 1
	if меткость[i] > 0:меткость[i] -= 1
	if адреналин[i] > 0:адреналин[i] -= 1
	if верткость[i] > 0:верткость[i] -= 1
	if внимание[i] > 0:внимание[i] -= 1
	jump 'loop'
end

!make damage and create status effect
if $класс_врага[текущий] ! 'пешка':
	if $тип_нанесенного_вреда = 'психический':
		if тонкое_тело[$враг[текущий]] = 1: здоровье_врага[текущий] -= нанесенный_вред
		if бесстрашный[$враг[текущий]] = 0: дух_врага[текущий] -= нанесенный_вред
		дух_игрока += нанесенный_вред/2
	elseif $тип_нанесенного_вреда = 'дробящий':
		if хрупкий[$враг[текущий]] = 1: здоровье_врага[текущий] -= нанесенный_вред
		if безустали[$враг[текущий]] = 0: выносливость_врага[текущий] -= нанесенный_вред
		if бесстрашный[$враг[текущий]] = 0: дух_врага[текущий] -= нанесенный_вред
		дух_игрока += нанесенный_вред/2
	else
		if бессмертный[$враг[текущий]] = 0: здоровье_врага[текущий] -= нанесенный_вред
		if безустали[$враг[текущий]] = 0: выносливость_врага[текущий] -= нанесенный_вред
		if бесстрашный[$враг[текущий]] = 0: дух_врага[текущий] -= нанесенный_вред
		дух_игрока += нанесенный_вред/2
	end
end

if $наложение = 'слабость':
	if слабость[текущий] <= длительность: слабость[текущий] = длительность
	if слабость[текущий] > длительность: слабость[текущий] += 1
end
if $наложение = 'скованность':
	if скованность[текущий] <= длительность: скованность[текущий] = длительность
	if скованность[текущий] > длительность: скованность[текущий] += 1
end
if $наложение = 'боль':
	if боль[текущий] <= длительность[i]: боль[текущий] = длительность
	if боль[текущий] > длительность[i]: боль[текущий] += 1
end
if $наложение = 'шаткость':
	if шаткость[текущий] <= длительность: шаткость[текущий] = длительность
	if шаткость[текущий] > длительность: шаткость[текущий] += 1
end
if $наложение = 'ошеломление':
	if ошеломление[текущий] <= длительность: ошеломление[текущий] = длительность
	if ошеломление[текущий] > длительность: ошеломление[текущий] += 1
end
if $наложение = 'рассеянность':
	if рассеянность[текущий] <= длительность: рассеянность[текущий] = длительность
	if рассеянность[текущий] > длительность: рассеянность[текущий] += 1
end
if $наложение = 'бешенство':
	if бешенство <= длительность: бешенство = длительность
	if бешенство > длительность: бешенство += 1
end
if $наложение = 'разгон':
	if разгон <= длительность: разгон = длительность
	if разгон > длительность: разгон += 1
end
if $наложение = 'меткость':
	if меткость <= длительность: меткость = длительность
	if меткость > длительность: меткость += 1
end
if $наложение = 'адреналин':
	if адреналин <= длительность: адреналин = длительность
	if адреналин > длительность: адреналин += 1
end
if $наложение = 'верткость':
	if верткость <= длительность: верткость = длительность
	if верткость > длительность: верткость += 1
end
if $наложение = 'внимание':
	if внимание <= длительность: внимание = длительность
	if внимание > длительность: внимание += 1
end

if это_суперудар = 1: dynamic $спецэффект_суперудара[$суперудар[супер]]
это_суперудар = 0

i = 0
:loop1
if i < количество_врагов:
	i += 1
	!Вред
	if враг[i] = 1:
		if $тип_нанесенного_вреда[i] = 'психический':
			дух_игрока -= cheat_fight_dif * нанесенный_вред[i]
			дух_врага[i] += нанесенный_вред[i]/2
			jump 'loop2'
		end
		if $тип_нанесенного_вреда[i] = 'дробящий':
			выносливость_игрока -= cheat_fight_dif * нанесенный_вред[i]
			дух_игрока -= cheat_fight_dif * нанесенный_вред[i]
			дух_врага[i] += нанесенный_вред[i]/2
			jump 'loop2'
		end
		!Vatican Champion damage bug fix/hack - crushboss (disabled by ImperatorAugustus)
		!if challenge_type = 1 and $ge = 'champion_vatican' and нанесенный_вред[i] > 36:
		!	нанесенный_вред[i] = rand(10,24)
		!end
		здоровье_игрока -= cheat_fight_dif * нанесенный_вред[i]
		&! master wearing chimera gem recovers 3-16 health after every hit (amount derived from master_supermacy, excluding allure, charisma and slave-specific factors)
		if chimera_gem_on = 1: здоровье_игрока = min(макс_здоровье_игрока, здоровье_игрока + min(нанесенный_вред[i], master_domination + master_str + magna_magnifika + item_supermacy_bonus)) &! healing is capped by max health and by amount of damage received
		выносливость_игрока -= cheat_fight_dif * нанесенный_вред[i]
		дух_игрока -= cheat_fight_dif * нанесенный_вред[i]
		дух_врага[i] += нанесенный_вред[i]/2
		:loop2
		!statuses
		if $наложение[i] = 'слабость':
			if слабость[0] <= длительность[i]: слабость[0] = длительность[i]
			if слабость[0] > длительность[i]: слабость[0] += 1
		end
		if $наложение[i] = 'скованность':
			if скованность[0] <= длительность[i]: скованность[0] = длительность[i]
			if скованность[0] > длительность[i]: скованность[0] += 1
		end
		if $наложение[i] = 'боль':
			if боль[0] <= длительность[i]: боль[0] = длительность[i]
			if боль[0] > длительность[i]: боль[0] += 1
		end
		if $наложение[i] = 'шаткость':
			if шаткость[0] <= длительность[i]: шаткость[0] = длительность[i]
			if шаткость[0] > длительность[i]: шаткость[0] += 1
		end
		if $наложение[i] = 'ошеломление':
			if ошеломление[0] <= длительность[i]: ошеломление[0] = длительность[i]
			if ошеломление[0] > длительность[i]: ошеломление[0] += 1
		end
		if $наложение[i] = 'рассеянность':
			if рассеянность[0] <= длительность[i]: рассеянность[0] = длительность[i]
			if рассеянность[0] > длительность[i]: рассеянность[0] += 1
		end
		if $наложение[i] = 'бешенство':
			if бешенство[i] <= длительность[i]: бешенство[i] = длительность[i]
			if бешенство[i] > длительность[i]: бешенство[i] += 1
		end
		if $наложение[i] = 'разгон':
			if разгон[i] <= длительность[i]: разгон[i] = длительность[i]
			if разгон[i] > длительность[i]: разгон[i] += 1
		end
		if $наложение[i] = 'меткость':
			if меткость[i] <= длительность[i]: меткость[i] = длительность[i]
			if меткость[i] > длительность[i]: меткость[i] += 1
		end
		if $наложение[i] = 'адреналин':
			if адреналин[i] <= длительность[i]: адреналин[i] = длительность[i]
			if адреналин[i] > длительность[i]: адреналин[i] += 1
		end
		if $наложение[i] = 'верткость':
			if верткость[i] <= длительность[i]: верткость[i] = длительность[i]
			if верткость[i] > длительность[i]: верткость[i] += 1
		end
		if $наложение[i] = 'внимание':
			if внимание[i] <= длительность[i]: внимание[i] = длительность[i]
			if внимание[i] > длительность[i]: внимание[i] += 1
		end
	end
	jump "loop1"
end

!check for enemy death
i = 0
:loop5
if i < количество_врагов:
	i += 1
	if враг[i] = 1:
		if здоровье_врага[i] <= 0 and $класс_врага[i]!'пешка':
			враг[i] = 0
			поверженные_враги += 1
			$трофей[тр] = $труп_моба_в_локацию[$враг[i]]
			труп[$враг[i]] += 1
			тр += 1
			$действия_врага[i] += '<<$труп_врага[i]>>
' &! append defeat text to last combat round text to show the final action - ImperatorAugustus
			jump 'loop5'
		end
		if выносливость_врага[i] <= 0 and $класс_врага[i]!'пешка':
			враг[i] = 0
			поверженные_враги += 1
			$трофей[тр] = $вырубленный_моб_в_локацию[$враг[i]]
			в_отключке[$враг[i]] += 1
			тр += 1
			$действия_врага[i] += '<<$тело_врага[i]>>
' &! append defeat text to last combat round text to show the final action - ImperatorAugustus
			jump 'loop5'
		end
		if дух_врага[i] <= 0 and $класс_врага[i]!'пешка':
			враг[i] = 0
			поверженные_враги += 1
			$действия_врага[i] += '<<$беглец[i]>>
' &! append defeat text to last combat round text to show the final action - ImperatorAugustus
			jump 'loop5'
		end
		if $состояние[i] = 'повержен':
			враг[i] = 0
			поверженные_враги += 1
			$трофей[тр] = $труп_моба_в_локацию[$враг[i]]
			труп[$враг[i]] += 1
			тр += 1
			$действия_врага[i] += '<<$труп_врага[i]>>
' &! append defeat text to last combat round text to show the final action - ImperatorAugustus
		end
	end
	jump 'loop5'
end

killvar 'нанесенный_вред'

!check for fight end
if поверженные_враги = количество_врагов:
	$итог_боя = 'победа'
	!fixed, otherwise after a battle with one opponent the final spirit will always be equal to 5
	if количество_врагов > 2: дух_игрока = 5*количество_врагов
	gt 'конец_боя'
end
if здоровье_игрока <= 0:
	$итог_боя = 'убит'
	gt 'конец_боя'
end
if выносливость_игрока <= 0:
	$итог_боя = 'вырубился'
	gt 'конец_боя'
end
if дух_игрока <= 0:
	$итог_боя = 'бегство'
	gt 'конец_боя'
end

gs 'боевое_меню'
gt 'боевой_интерфейс'

--- конец_раунда ---------------------------------


code:
# начать_бой
!BATTLE BEGINS IN THIS LOCATION
!Overhauled by crushboss
!expects combatant to be set to 0, 1 or 2 before calling this to select the defender (master, slave, assistant respectively)

!TAKE OUT THE WEAPONS

if get_weapon = 0:
	$memplace = $place
	get_weapon = 1
	memcf = colosseum_fight
	colosseum_fight = 0
	$оружие = ''
	$вторичный = ''
	interaction_city = 901
	if surprise_attack = 1: interaction_city = 902
	if slave_attack = 1: interaction_city = 903
	gt 'interaction_city'
else
	!Assign primary and secondary weapons - crushboss
	dynamic $primary_weapon
	dynamic $secondary_weapon
	if a = 1: dynamic $previous_weapon
	colosseum_fight = memcf
	get_weapon = 2
	surprise_attack = 0
	$toplay = 'fight'
end

!Fix blank screen bug - crushboss
if slave_state ! CONST_INT['no_slave'] and combatant = 1:
	if $slave['wpn'] = '': $slave['wpn'] = 'безоружный'
	if $slave['armor'] = '': $slave['armor'] = 'без_брони'
	if $slave['cloth'] = '': $slave['cloth'] = 'голая'
end

!Fix blank screen bug - crushboss
if assistant_state ! CONST_INT['no_slave'] and combatant = 2:
	if $assistant['wpn'] = '': $assistant['wpn'] = 'безоружный'
	if $assistant['armor'] = '': $assistant['armor'] = 'без_брони'
	if $assistant['cloth'] = '': $assistant['cloth'] = 'голая'
end

!resetting vars
a = 0
nogoto = 0
поверженные_враги = 0

killvar 'no_wpn'
killvar '$состояние'

killvar 'слабость'
killvar 'скованность'
killvar 'боль'
killvar 'шаткость'
killvar 'ошеломление'
killvar 'рассеянность'
killvar 'бешенство'
killvar 'разгон'
killvar 'меткость'
killvar 'адреналин'
killvar 'верткость'
killvar 'внимание'

killvar 'суперудар'
killvar 'наложение'
killvar '$боевая_обстановка'
killvar '$действия_игрока'
killvar '$действия_врага'

!ui
gs 'раскладка_бой'

!Set master/slaver stats - start
base_str = master_str
base_flagelation = master_flagelation
сила = master_fighter
ловкость = master_fighter
восприятие = master_fighter

!Load Combat Databases
gs '#тексты_движка'
gs '#противники'
gs '#суперудары'
gs '#боевые_предметы'
gs '#dynamic'

$combatant_ava = $master_ava_color
$combatant_name = $master_name
$броня = $master_armor

if slave_attack = 1:
	$за_спиной = ''
	$слева = ''
	$справа = ''
	$предплечье = ''
	$в_сапоге = ''
	$броня = 'без_брони'
end

&! S+ health: loli = 40, young = 50, mature = 60, master = 70
&! master wearing chimera gem recovers 3-16 health after every hit (amount derived from master_supermacy, excluding allure, charisma and slave-specific factors)

макс_здоровье_игрока = master_str * 14 - master_wounds_rate
if макс_здоровье_игрока < 1: макс_здоровье_игрока = 1
здоровье_игрока = макс_здоровье_игрока
макс_выносливость_игрока = 50 + (master_energy*5)
if bull_ring_on = 1: макс_выносливость_игрока *= 2
выносливость_игрока = макс_выносливость_игрока
норм_дух_игрока = master_cha*5 + master_domination*5 + master_fighter*10
if snake_amulet_on = 1: норм_дух_игрока *= 2
дух_игрока = норм_дух_игрока
сила_передышки = 10

copyarr '$суперудар', '$master_spm'
!End of master/slaver stats

if combatant = 1:
	$combatant_ava = '<<$slave[''ava'']>>.png'
	$combatant_name = $slave_name
	$броня = $slave['armor']

	макс_здоровье_игрока = slave['stamina'] * 10 - slave_rate['wounds']
	if slave['gladiatrix_affinity'] > 0: макс_здоровье_игрока = slave['stamina']*10
	if slave['age'] = CONST_INT['loli_age']: макс_здоровье_игрока -= макс_здоровье_игрока/5
	if slave['age'] = CONST_INT['milf_age']: макс_здоровье_игрока += slave['stamina']*2
	if макс_здоровье_игрока < 1: макс_здоровье_игрока = 1
	здоровье_игрока = макс_здоровье_игрока
	макс_выносливость_игрока = 50 + (slave['energy']*5)
	if slave['gladiatrix_affinity'] > 0: макс_выносливость_игрока = 75 + (slave['energy']*5)
	if slave['age'] = CONST_INT['loli_age']: макс_выносливость_игрока -= макс_выносливость_игрока/3
	выносливость_игрока = макс_выносливость_игрока
	норм_дух_игрока = slave['ego']*10 + slave['gladiatrix']*10
	if slave['gladiatrix_affinity'] > 0: норм_дух_игрока += slave['ego']*10
	дух_игрока = норм_дух_игрока
	сила_передышки = 10
	slave['calories'] -= 5
	slave_rate['hygiene'] += 40
	slave_rate['sensitivity'] -= 5

	base_str = slave['stamina'] + slave['gladiatrix_affinity']
	if slave['age'] = CONST_INT['loli_age']: base_str = (2*base_str)/3 + slave['gladiatrix_affinity']
	if slave['age'] = CONST_INT['milf_age']: base_str += 1
	base_flagelation = slave['gladiatrix'] + slave['gladiatrix_affinity']
	сила = slave['gladiatrix'] + slave['gladiatrix_affinity']
	ловкость = slave['gladiatrix'] + slave['gladiatrix_affinity']
	восприятие = slave['gladiatrix'] + slave['gladiatrix_affinity']
	if slave['gladiatrix_affinity_revealed'] = 0: slave['gladiatrix_affinity_revealed'] = 1
	killvar '$суперудар'
end

if combatant = 2:
	$combatant_ava = '<<$assistant[''ava'']>>.png'
	$combatant_name = $assistant_name
	$броня = $assistant['armor']

	макс_здоровье_игрока = assistant['stamina'] * 10 - assistant_rate['wounds']
	if assistant['gladiatrix_affinity'] > 0: макс_здоровье_игрока = assistant['stamina']*10
	if assistant['age'] = CONST_INT['loli_age']: макс_здоровье_игрока -= макс_здоровье_игрока/5
	if assistant['age'] = CONST_INT['milf_age']: макс_здоровье_игрока += assistant['stamina']*2
	if макс_здоровье_игрока < 1: макс_здоровье_игрока = 1
	здоровье_игрока = макс_здоровье_игрока
	макс_выносливость_игрока = 50 + (assistant['energy']*5)
	if assistant['gladiatrix_affinity'] > 0: макс_выносливость_игрока = 75 + (assistant['energy']*5)
	if assistant['age'] = CONST_INT['loli_age']: макс_выносливость_игрока -= макс_выносливость_игрока/3
	выносливость_игрока = макс_выносливость_игрока
	норм_дух_игрока = assistant['ego']*10 + assistant['gladiatrix']*10
	if assistant['gladiatrix_affinity'] > 0: норм_дух_игрока += assistant['ego']*10
	дух_игрока = норм_дух_игрока
	сила_передышки = 10
	assistant['calories'] -= 5
	assistant_rate['hygiene'] += 40
	assistant_rate['sensitivity'] -= 5

	base_str = assistant['stamina'] + assistant['gladiatrix_affinity']
	if assistant['age'] = CONST_INT['loli_age']: base_str = (2*base_str)/3 + assistant['gladiatrix_affinity']
	if assistant['age'] = CONST_INT['milf_age']: base_str += 1
	base_flagelation = assistant['gladiatrix'] + assistant['gladiatrix_affinity']
	сила = assistant['gladiatrix'] + assistant['gladiatrix_affinity']
	ловкость = assistant['gladiatrix'] + assistant['gladiatrix_affinity']
	восприятие = assistant['gladiatrix'] + assistant['gladiatrix_affinity']
	killvar '$суперудар'
end

!Added bonuses for normal and easy game difficulty (+15 on easy, +10 on normal) - ImperatorAugustus
if game_difficulty < 2:
	макс_здоровье_игрока += (1 + game_difficulty)*5
	макс_выносливость_игрока += (1 + game_difficulty)*5
	норм_дух_игрока += (1 + game_difficulty)*5
end

$ключевые_условия = 'нет'
$ключевые_условия += $ключевое_слово_1[$оружие]
$ключевые_условия += $ключевое_слово_2[$оружие]
$ключевые_условия += $ключевое_слово_3[$оружие]
$ключевые_условия += $ключевое_слово_4[$оружие]
$ключевые_условия += $ключевое_слово_5[$оружие]
$ключевые_условия += $ключевое_слово_1[$броня]
$ключевые_условия += $ключевое_слово_2[$броня]
$ключевые_условия += $ключевое_слово_3[$броня]
$ключевые_условия += $ключевое_слово_4[$броня]
$ключевые_условия += $ключевое_слово_5[$броня]
$ключевые_условия += $ключевое_слово_1[$вторичный]
$ключевые_условия += $ключевое_слово_2[$вторичный]
$ключевые_условия += $ключевое_слово_3[$вторичный]
$ключевые_условия += $ключевое_слово_4[$вторичный]
$ключевые_условия += $ключевое_слово_5[$вторичный]

dynamic $броня_надеть[$броня]
dynamic $броня_эффект[$броня]

if $враг[1] = 'воспитуемая':

	slave_base_dmg = slave['gladiatrix']
	$slave_dmg_type = 'дробящий'

	if $slave['left_wpn'] = 'глушилка' or $slave['right_wpn'] = 'глушилка': slave_base_dmg = 1+slave['gladiatrix'] & $slave_dmg_type = 'дробящий'
	if $slave['left_wpn'] = 'кастет' or $slave['right_wpn'] = 'кастет': slave_base_dmg = 1+slave['gladiatrix'] & $slave_dmg_type = 'дробящий'
	if $slave['left_wpn'] = 'кинжал' or $slave['right_wpn'] = 'кинжал': slave_base_dmg = 1+slave['gladiatrix'] & $slave_dmg_type = 'колющий'
	if $slave['left_wpn'] = 'стилет' or $slave['right_wpn'] = 'стилет': slave_base_dmg = 1+slave['gladiatrix'] & $slave_dmg_type = 'колющий'
	if $slave['left_wpn'] = 'нагайка' or $slave['right_wpn'] = 'нагайка': slave_base_dmg = 1+slave['gladiatrix'] & $slave_dmg_type = 'психический'
	if $slave['left_wpn'] = 'тесак' or $slave['right_wpn'] = 'тесак': slave_base_dmg = 1+slave['gladiatrix'] & $slave_dmg_type = 'рубящий'

	if $slave['back_wpn'] = 'кнут' or $slave['left_wpn'] = 'кнут' or $slave['right_wpn'] = 'кнут': slave_base_dmg = 3+slave['gladiatrix'] & $slave_dmg_type = 'психический'
	if $slave['back_wpn'] = 'демократизатор' or $slave['left_wpn'] = 'демократизатор' or $slave['right_wpn'] = 'демократизатор': slave_base_dmg = 3+slave['gladiatrix'] & $slave_dmg_type = 'дробящий'
	if $slave['back_wpn'] = 'мулава' or $slave['left_wpn'] = 'мулава' or $slave['right_wpn'] = 'мулава': slave_base_dmg = 4+slave['gladiatrix'] & $slave_dmg_type = 'дробящий'
	if $slave['back_wpn'] = 'шпага' or $slave['left_wpn'] = 'шпага' or $slave['right_wpn'] = 'шпага': slave_base_dmg = 3+slave['gladiatrix'] & $slave_dmg_type = 'колющий'
	if $slave['back_wpn'] = 'рапира' or $slave['left_wpn'] = 'рапира' or $slave['right_wpn'] = 'рапира': slave_base_dmg = 3+slave['gladiatrix'] & $slave_dmg_type = 'колющий'
	if $slave['back_wpn'] = 'кончар' or $slave['left_wpn'] = 'кончар' or $slave['right_wpn'] = 'кончар': slave_base_dmg = 3+slave['gladiatrix'] & $slave_dmg_type = 'колющий'
	if $slave['back_wpn'] = 'гладиус' or $slave['left_wpn'] = 'гладиус' or $slave['right_wpn'] = 'гладиус': slave_base_dmg = 3+slave['gladiatrix'] & $slave_dmg_type = 'колющий'
	if $slave['back_wpn'] = 'трезубец' or $slave['left_wpn'] = 'трезубец' or $slave['right_wpn'] = 'трезубец': slave_base_dmg = 3+slave['gladiatrix'] & $slave_dmg_type = 'колющий'
	if $slave['back_wpn'] = 'бастард' or $slave['left_wpn'] = 'бастард' or $slave['right_wpn'] = 'бастард': slave_base_dmg = 3+slave['gladiatrix'] & $slave_dmg_type = 'рубящий'
	if $slave['back_wpn'] = 'мачете' or $slave['left_wpn'] = 'мачете' or $slave['right_wpn'] = 'мачете': slave_base_dmg = 3+slave['gladiatrix'] & $slave_dmg_type = 'рубящий'
	if $slave['back_wpn'] = 'катана' or $slave['left_wpn'] = 'катана' or $slave['right_wpn'] = 'катана': slave_base_dmg = 3+slave['gladiatrix'] & $slave_dmg_type = 'рубящий'

	if $slave['back_wpn'] = 'бита': slave_base_dmg = 5+slave['gladiatrix'] & $slave_dmg_type = 'дробящий'
	if $slave['back_wpn'] = 'скотобой': slave_base_dmg = 5+slave['gladiatrix'] & $slave_dmg_type = 'психический'
	if $slave['back_wpn'] = 'фламберг': slave_base_dmg = 5+slave['gladiatrix'] & $slave_dmg_type = 'рубящий'
	if $slave['back_wpn'] = 'нагината': slave_base_dmg = 5+slave['gladiatrix'] & $slave_dmg_type = 'колющий'
	if $slave['back_wpn'] = 'моргенштерн': slave_base_dmg = 5+slave['gladiatrix'] & $slave_dmg_type = 'дробящий'
	if $slave['back_wpn'] = 'грейтекс': slave_base_dmg = 5+slave['gladiatrix'] & $slave_dmg_type = 'рубящий'

	if slave_attack = 1:
		slave_base_dmg = 1+slave['gladiatrix'] & $slave_dmg_type = 'колющий'
		slave_attack = 0
	end

	$название_моба['воспитуемая'] = 'Slave'
	$аватара_моба['воспитуемая'] = '<<$seed_ava_clear[slave_type]>>.png'
	$описание_моба['воспитуемая'] = 'This is your slave.'
	$склонение_моб['воспитуемая'] = 'a slave'
	$склонение_моба['воспитуемая'] = 'a slave'
	$склонение_мобу['воспитуемая'] = 'a slave'
	$класс_моба['воспитуемая'] = 'элитный'
	базовое_здоровье['воспитуемая'] = slave['stamina'] * 10 - slave_rate['wounds']
	if базовое_здоровье['воспитуемая'] < 1: базовое_здоровье['воспитуемая'] = 1
	базовая_выносливость['воспитуемая'] = 50 + (slave['energy']*5)
	чек = базовое_здоровье['воспитуемая'] * 2
	if базовая_выносливость['воспитуемая'] > чек: базовая_выносливость['воспитуемая'] = чек
	базовый_дух['воспитуемая'] = slave['ego'] * 10
	$интеллект['воспитуемая'] = 'искусственный_идиот'

	базовый_вред['воспитуемая'] = slave_base_dmg
	$атака_1_тип['воспитуемая'] = 'точная'
	$атака_1_тип_вреда['воспитуемая'] = $slave_dmg_type
	$атака_1_штраф['воспитуемая'] = 'боль'
	$атака_1_бонус['воспитуемая'] = 'верткость'
	атака_1_длительность['воспитуемая'] = 1 + slave['gladiatrix']
	$атака_1_текст['воспитуемая'] = '<<$slave_name>> hits you right in the groin' + iif(slave_base_dmg > slave['gladiatrix'], ' with her weapon', '')
	$атака_2_тип['воспитуемая'] = 'быстрая'
	$атака_2_тип_вреда['воспитуемая'] = $slave_dmg_type
	$атака_2_штраф['воспитуемая'] = 'боль'
	$атака_2_бонус['воспитуемая'] = 'бешенство'
	атака_2_длительность['воспитуемая'] = 1 + slave['gladiatrix']
	$атака_2_текст['воспитуемая'] = '<<$slave_name>> frenziedly showers you with strikes' + iif(slave_base_dmg > slave['gladiatrix'], ' with her weapon', '')
	$атака_3_тип['воспитуемая'] = 'сильная'
	$атака_3_тип_вреда['воспитуемая'] = $slave_dmg_type
	$атака_3_штраф['воспитуемая'] = 'боль'
	$атака_3_бонус['воспитуемая'] = 'адреналин'
	атака_3_длительность['воспитуемая'] =  1 + slave['gladiatrix']
	$атака_3_текст['воспитуемая'] = '<<$slave_name>> hits you with all of her strength' + iif(slave_base_dmg > slave['gladiatrix'], ' with her weapon', '')

	$смерть['воспитуемая'] = '<<$slave_name>> lying on the floor lifeless. Last blow was fatal for her.'
	$отключка['воспитуемая'] = '<<$slave_name>> lying unconscious.'
	$бегство['воспитуемая'] = '<<$slave_name>> is not ready to continue the fight. She gives up…'

	хрупкий['воспитуемая'] = 0
	тонкое_тело['воспитуемая'] = 0
	бессмертный['воспитуемая'] = 0
	безустали['воспитуемая'] = 0
	бесстрашный['воспитуемая'] = 0

	модификатор_колющий['воспитуемая'] = 0
	модификатор_рубящий['воспитуемая'] = 0
	модификатор_дробящий['воспитуемая'] = 0
	модификатор_огонь['воспитуемая'] = 0
	модификатор_холод['воспитуемая'] = 0
	модификатор_молния['воспитуемая'] = 0
	модификатор_свет['воспитуемая'] = 0
	модификатор_тьма['воспитуемая'] = 0
	модификатор_серебро['воспитуемая'] = 0
	модификатор_холодное_железо['воспитуемая'] = 0
	модификатор_психический['воспитуемая'] = 0

	if $slave['armor'] = 'комбез':
		модификатор_колющий['воспитуемая'] -= 1
		модификатор_рубящий['воспитуемая'] -= 1
		модификатор_дробящий['воспитуемая'] -= 1
		модификатор_холод['воспитуемая'] -= 1
		модификатор_молния['воспитуемая'] -= 1
		модификатор_огонь['воспитуемая'] -= 1
	end

	if $slave['armor'] = 'кожан':
		модификатор_колющий['воспитуемая'] -= 3
		модификатор_рубящий['воспитуемая'] -= 2
		модификатор_дробящий['воспитуемая'] -= 2
		модификатор_холод['воспитуемая'] -= 3
		модификатор_молния['воспитуемая'] -= 4
		модификатор_огонь['воспитуемая'] -= 5
	end

	if $slave['armor'] = 'эльчуга':
		модификатор_колющий['воспитуемая'] -= 2
		модификатор_рубящий['воспитуемая'] -= 4
		модификатор_холод['воспитуемая'] += 2
		модификатор_молния['воспитуемая'] += 2
		модификатор_огонь['воспитуемая'] += 2
	end

	if $slave['armor'] = 'ячуга':
		модификатор_колющий['воспитуемая'] -= 4
		модификатор_рубящий['воспитуемая'] -= 5
		модификатор_дробящий['воспитуемая'] -= 1
		модификатор_холод['воспитуемая'] += 1
		модификатор_огонь['воспитуемая'] += 2
		модификатор_молния['воспитуемая'] += 1
	end

	if $slave['armor'] = 'полудоспех':
		модификатор_колющий['воспитуемая'] -= 4
		модификатор_рубящий['воспитуемая'] -= 4
		модификатор_дробящий['воспитуемая'] -= 3
		модификатор_холод['воспитуемая'] += 1
		модификатор_огонь['воспитуемая'] += 1
		модификатор_молния['воспитуемая'] += 1
	end

	if $slave['armor'] = 'плейт':
		модификатор_колющий['воспитуемая'] -= 5
		модификатор_рубящий['воспитуемая'] -= 5
		модификатор_дробящий['воспитуемая'] -= 5
		модификатор_холод['воспитуемая'] += 5
		модификатор_огонь['воспитуемая'] += 5
		модификатор_молния['воспитуемая'] += 5
	end

	if $slave['armor'] = 'кольчуга':
		модификатор_колющий['воспитуемая'] -= 10
		модификатор_рубящий['воспитуемая'] -= 10
		модификатор_дробящий['воспитуемая'] -= 10
		модификатор_холод['воспитуемая'] -= 10
		модификатор_огонь['воспитуемая'] -= 10
		модификатор_молния['воспитуемая'] -= 10
		модификатор_свет['воспитуемая'] -= 10
		модификатор_тьма['воспитуемая'] -= 10
		модификатор_серебро['воспитуемая'] -= 10
		модификатор_холодное_железо['воспитуемая'] -= 10
	end
end

!Getting information about mobs/enemies with a cycle
i = 0
:loop
if i < количество_врагов:
	i += 1
	$имя_врага[i] = $название_моба[$враг[i]]
	$склонение_врага[i] = $склонение_моба[$враг[i]]
	$класс_врага[i] = $класс_моба[$враг[i]]
	$труп_врага[i] = $смерть[$враг[i]]
	$тело_врага[i] = $отключка[$враг[i]]
	$беглец[i] = $бегство[$враг[i]]

	макс_здоровье_врага[i] = базовое_здоровье[$враг[i]]
	здоровье_врага[i] = базовое_здоровье[$враг[i]]
	выносливость_врага[i] = базовая_выносливость[$враг[i]]
	дух_врага[i] = базовый_дух[$враг[i]]
	вред_врага[i] = базовый_вред[$враг[i]]
	случай = 1 + ((48271 * (day + master_energy + sparks)) mod 65537)/(65537/3) &! pseudo-rand(1,3)
	if случай = 1: $защита[i] = 'блок'
	if случай = 2: $защита[i] = 'контратака'
	if случай = 3: $защита[i] = 'уклонение'
	враг[i] = 1
	jump 'loop'
end

текущий = 1

gs 'боевое_меню'
gt 'боевой_интерфейс'

--- начать_бой ---------------------------------


code:
# передышка
!GOTO HERE IF PLAYER CHOOSES "DEFEND" OPTION

!Player gets rid of all the harmful conditions (changed from complete removal to reduction proportional to combat skill - ImperatorAugustus)
слабость = max(0, слабость - master_fighter)
скованность = max(0, скованность - master_fighter)
боль = max(0, боль - master_fighter)
шаткость = max(0, шаткость - master_fighter)
ошеломление = max(0, ошеломление - master_fighter)
рассеянность = max(0, рассеянность - master_fighter)

!Player restores some stamina
выносливость_игрока += сила_передышки
if выносливость_игрока > макс_выносливость_игрока: выносливость_игрока = макс_выносливость_игрока

$действия_игрока = 'You go on the defensive [harmful status reduced] [stamina +<<сила_передышки>>]'

gt 'ход_противников'

--- передышка ---------------------------------


code:
# раскладка_бой
!FIGHT UI
if ui_style = 1:$backimage = 'content/pic/ui/old/bg_fight_old.png'
if ui_style = 2:$backimage = 'content/pic/ui/grimdark/bg_fight.png'
if ui_style = 0:$backimage = 'content/pic/ui/classic/bg_fight.png'

MSG_X = 350
--- раскладка_бой ---------------------------------


code:
# рассчет_вреда
!CALCULATION OF DAMAGE FROM ALL MODIFIERS
модификатор = 0

!Interaction of the type of protection and attack
$эффект = 'удвоение'
if $защита[def] = 'блок' and $атака[atk] = 'сильная': модификатор += 1
if $защита[def] = 'уклонение' and $атака[atk] = 'быстрая': модификатор += 1
if $защита[def] = 'контратака' and $атака[atk] = 'точная': модификатор += 1

if $защита[def] = 'блок' and $атака[atk] = 'точная': $эффект = 'бонус'
if $защита[def] = 'уклонение' and $атака[atk] = 'сильная': $эффект = 'бонус'
if $защита[def] = 'контратака' and $атака[atk] = 'быстрая': $эффект = 'бонус'

if $защита[def] = 'блок' and $атака[atk] = 'быстрая': $эффект = 'штраф'
if $защита[def] = 'уклонение' and $атака[atk] = 'точная': $эффект = 'штраф'
if $защита[def] = 'контратака' and $атака[atk] = 'сильная': $эффект = 'штраф'

!taking statuses into account
if $атака[atk] = 'сильная':
	if бешенство[atk] > 0: модификатор += 1
	if шаткость[def] > 0: модификатор += 1
	if слабость[atk] > 0: модификатор -= 1
	if адреналин[def] > 0: модификатор -= 1
end

if $атака[atk] = 'быстрая':
	if разгон[atk] > 0: модификатор += 1
	if ошеломление[def] > 0: модификатор += 1
	if скованность[atk] > 0: модификатор -= 1
	if верткость[def] > 0: модификатор -= 1
end

if $атака[atk] = 'точная':
	if меткость[atk] > 0: модификатор += 1
	if рассеянность[def] > 0: модификатор += 1
	if боль[atk] > 0: модификатор -= 1
	if внимание[def] > 0: модификатор -= 1
end

!damage calculation itself
if модификатор < -2: нанесенный_вред[atk] = вред_на_рассчет/6
if модификатор = -2: нанесенный_вред[atk] = вред_на_рассчет/4
if модификатор = -1: нанесенный_вред[atk] = вред_на_рассчет/2
if модификатор = 0: нанесенный_вред[atk] = вред_на_рассчет
if модификатор = 1: нанесенный_вред[atk] = вред_на_рассчет*2
if модификатор = 2: нанесенный_вред[atk] = вред_на_рассчет*4
if модификатор > 2: нанесенный_вред[atk] = вред_на_рассчет*6

модифер = 0

if def = 0: dynamic 'модифер = модификатор_<<$рассчетный_тип_вреда>>'
if def > 0: dynamic 'модифер = модификатор_<<$рассчетный_тип_вреда>>[$враг[def]]'
нанесенный_вред[atk] += модифер

if нанесенный_вред[atk] < 1:
	нанесенный_вред[atk] = 1
	a = 1 + ((48271 * (day + master_energy + master_half_energy + sparks)) mod 65537)/(65537/10) &! pseudo-rand(1,10) using multiple factors as offset - ImperatorAugustus
	if a = 1: нанесенный_вред[atk] += 1
	if a = 2: нанесенный_вред[atk] += 2
	if a = 3: нанесенный_вред[atk] += 3
	a = 0
end

$тип_нанесенного_вреда[atk] = $рассчетный_тип_вреда

--- рассчет_вреда ---------------------------------


code:
# сменить_оружие
!CHANGING WEAPONS

!creating menu
$боевое_меню = ''
$боевое_меню += "Change primary
"
$боевое_меню += "Change secondary
"
$боевое_меню += "Remove primary
"
$боевое_меню += "Remove secondary
"
$боевое_меню += "
"
$боевое_меню += "Back
"

gt 'боевой_интерфейс'
--- сменить_оружие ---------------------------------


code:
# сменить_оружие_вторичное
!creating menu - secondary weapon change
$боевое_меню = ''
if $за_спиной!'':$боевое_меню += "Shoulder Holster:<<$item_name[$за_спиной]>>
"
if $слева!'':$боевое_меню += "Left Hand:<<$item_name[$слева]>>
"
if $справа!'':$боевое_меню += "Right Hand:<<$item_name[$справа]>>
"
if $предплечье!'' and combatant = 0:$боевое_меню += "Sleeve Holster:<<$item_name[$предплечье]>>
"
if $в_сапоге!'' and combatant = 0:$боевое_меню += "Boot Holster:<<$item_name[$в_сапоге]>>
"
$боевое_меню += "
"
$боевое_меню += "Back
"

gt 'боевой_интерфейс'
--- сменить_оружие_вторичное ---------------------------------

path: game/locations/сменить_оружие_вторичное.qsrc


code:
# сменить_оружие_основное
!creating menu - primary weapon change
$боевое_меню = ''
if $за_спиной!'':$боевое_меню += "Shoulder Holster:<<$item_name[$за_спиной]>>
"
if $слева!'':$боевое_меню += "Left Hand:<<$item_name[$слева]>>
"
if $справа!'':$боевое_меню += "Right Hand:<<$item_name[$справа]>>
"
if $предплечье!'' and combatant = 0:$боевое_меню += "Sleeve Holster:<<$item_name[$предплечье]>>
"
if $в_сапоге!'' and combatant = 0:$боевое_меню += "Boot Holster:<<$item_name[$в_сапоге]>>
"
$боевое_меню += "
"
$боевое_меню += "Back
"

gt 'боевой_интерфейс'

--- сменить_оружие_основное ---------------------------------

path: game/locations/сменить_оружие_основное.qsrc


code:
# суперудары
!SUPERB SELECTION MENU
!Overhauled by crushboss

!Reset vars - crushboss
killvar '$меню_суперудар'
killvar '$боевое_меню'
killvar 'вред_оружия_игрока'
killvar '$тип_вреда_оружия'

$меню_суперудар[1] = ''
$меню_суперудар[2] = ''
$меню_суперудар[3] = ''
$меню_суперудар[4] = ''
$меню_суперудар[5] = ''
$меню_суперудар[6] = ''
$меню_суперудар[7] = ''
$меню_суперудар[8] = ''
$боевое_меню = ''
вред_оружия_игрока = 0
$тип_вреда_оружия = ''

!Obtain information about the player’s current weapon
вред_оружия_игрока = базовый_вред[$оружие]
$тип_вреда_оружия = $тип_вреда[$оружие]

!Build list of learned special techniques that match the weapon type - crushboss

!Roundhouse Kick - ALL
if spm_learned['удар_с_разворота'] = 1 and суперудар_сделан[11] = 0:
	$суперудар_название[$суперудар[1]] = "Roundhouse Kick"
	$меню_суперудар[1] = $суперудар_название[$суперудар[1]]
	! $меню_суперудар[1] = 'Roundhouse Kick'
else
	$меню_суперудар[1] = ''
end

!Swift Blow - Slashing weapons - рубящий
if spm_learned['рассечение'] = 1 and суперудар_сделан[12] = 0 and $тип_вреда_оружия = 'рубящий':
	$суперудар_название[$суперудар[2]] = "Swift Blow"
	$меню_суперудар[2] = $суперудар_название[$суперудар[2]]
	! $меню_суперудар[2] = 'Swift Blow'
else
	$меню_суперудар[2] = ''
end

!Battle Cry - ALL
if spm_learned['воинственный_клич'] = 1 and суперудар_сделан[13] = 0:
	$суперудар_название[$суперудар[3]] = "Battle Cry"
	$меню_суперудар[3] = $суперудар_название[$суперудар[3]]
	! $меню_суперудар[3] = 'Battle Cry'
else
	$меню_суперудар[3] = ''
end

!Heavy Blow - Blunt weapons - дробящий
if spm_learned['оглушение'] = 1 and суперудар_сделан[14] = 0 and $тип_вреда_оружия = 'дробящий':
	$суперудар_название[$суперудар[4]] = "Heavy Blow"
	$меню_суперудар[4] = $суперудар_название[$суперудар[4]]
	! $меню_суперудар[4] = 'Heavy Blow'
else
	$меню_суперудар[4] = ''
end

!Precise Hit - Piercing weapons - колющий
if spm_learned['ослепление'] = 1 and суперудар_сделан[15] = 0 and $тип_вреда_оружия = 'колющий':
	$суперудар_название[$суперудар[5]] = "Precise Hit"
	$меню_суперудар[5] = $суперудар_название[$суперудар[5]]
	! $меню_суперудар[5] = 'Precise Hit'
else
	$меню_суперудар[5] = ''
end

!Dashing Blow - Slashing weapons - рубящий
if spm_learned['подрезка'] = 1 and суперудар_сделан[16] = 0 and $тип_вреда_оружия = 'рубящий':
	$суперудар_название[$суперудар[6]] = "Dashing Blow"
	$меню_суперудар[6] = $суперудар_название[$суперудар[6]]
	! $меню_суперудар[6] = 'Dashing Blow'
else
	$меню_суперудар[6] = ''
end

!Riposte - piercing weapons - колющий
if spm_learned['ответный_удар'] = 1 and суперудар_сделан[17] = 0 and $тип_вреда_оружия = 'колющий':
	$суперудар_название[$суперудар[7]] = "Riposte"
	$меню_суперудар[7] = $суперудар_название[$суперудар[7]]
	! $меню_суперудар[7] = 'Riposte'
else
	$меню_суперудар[7] = ''
end

!Face Bash - Blunt weapons - дробящий
if spm_learned['лицо_прикладом'] = 1 and суперудар_сделан[18] = 0 and $тип_вреда_оружия = 'дробящий':
	$суперудар_название[$суперудар[8]] = "Face Bash"
	$меню_суперудар[8] = $суперудар_название[$суперудар[8]]
	! $меню_суперудар[8] = 'Face Bash'
else
	$меню_суперудар[8] = ''
end

!creating menu
killvar '$боевое_меню'
$боевое_меню = "
"
if $меню_суперудар[1] ! '': $боевое_меню += "<<$меню_суперудар[1]>>
"
if $меню_суперудар[2] ! '': $боевое_меню += "<<$меню_суперудар[2]>>
"
if $меню_суперудар[3] ! '': $боевое_меню += "<<$меню_суперудар[3]>>
"
if $меню_суперудар[4] ! '': $боевое_меню += "<<$меню_суперудар[4]>>
"
if $меню_суперудар[5] ! '': $боевое_меню += "<<$меню_суперудар[5]>>
"
if $меню_суперудар[6] ! '': $боевое_меню += "<<$меню_суперудар[6]>>
"
if $меню_суперудар[7] ! '': $боевое_меню += "<<$меню_суперудар[7]>>
"
if $меню_суперудар[8] ! '': $боевое_меню += "<<$меню_суперудар[8]>>
"

$боевое_меню += "
Back
"

gt 'боевой_интерфейс'

--- суперудары ---------------------------------


code:
# ход_противников
!CALCULATE THE ACTIONS QUEUE OF THE OPPONENTS
i = 0
:loop
if i < количество_врагов:
	i += 1
 	if враг[i] = 1:
  		gs '<<$интеллект[$враг[i]]>>'
	end
	jump 'loop'
end

gt 'конец_раунда'

--- ход_противников ---------------------------------


code:
import os

# folders currently supported by the engine, don't add more, it won't work this way
img_dir = ["girls/normal_scenes", "girls/sex_scenes", "girls/torture_scenes", "scene", "scene/service", "scene/gangbang"]

settings = {
	"rename_only": False
}

settings_file = open("settings.txt", "r")
for setting in settings_file:
	separator_index = setting.find('=')
	value = setting[separator_index+1:].strip()
	setting = setting[:separator_index].strip()

	settings[setting.lower()] = value.lower()

settings_file.close()

path = __file__[0:__file__.find(os.path.basename(__file__))]
game_path = path[:path.find("picture_modding")]
game_pic_path = game_path + "content/pic/"

pic_max = {}
pic_max_value = {}

# counting all the pictures.
for current_dir in img_dir:
	current_path = game_pic_path + current_dir

	for file in os.listdir(current_path):
		if file[-4:] == ".png" and "item" not in file:
			separator_index = file.rfind('_')
			if '0' <= file[separator_index + 1] <= '9':
				nr = int(file[separator_index+1:file.find(".png")])
				file = file[:separator_index]

				if nr == 1:
					pic_max_value[file] = 1

				elif pic_max_value[file] < nr:
					pic_max_value[file] = nr

			else:
				file = file[:-4]

			if file in pic_max:
				pic_max[file] += 1
			else:
				pic_max[file] = 1
				pic_max_value[file] = 1

bad_files = []

# checking indexing
for pic in pic_max:
	if pic_max[pic] != pic_max_value[pic]:
		bad_files.append(pic)

# attempting to fix indenting if there were any errors
if len(bad_files) > 0:
	ordered_files = {}
	for file in bad_files:
		ordered_files[file] = []
		for i in range(pic_max_value[file]+1):
			ordered_files[file].append(None)

	for current_dir in img_dir:
		current_path = game_pic_path + current_dir

		for file in os.listdir(current_path):
			if file[-4:] == ".png" and "item" not in file:
				separator_index = file.rfind('_')
				if '0' <= file[separator_index + 1] <= '9':
					nr = int(file[separator_index+1:file.find(".png")])
					file = file[:separator_index]
				else:
					nr = 1
					file = file[:-4]

				if file in bad_files:
					if ordered_files[file][0] == None:
						ordered_files[file][0] = current_path

					ordered_files[file][nr] = True

	for file in ordered_files:
		gap_index = None
		for i in range(2, len(ordered_files[file])-1):
			if ordered_files[file][i] is None:
				gap_index = i
				break

		for i in range(gap_index+1, len(ordered_files[file])):
			old_file = file + "_" + str(i)   + ".png"
			new_file = file + "_" + str(i-1) + ".png"

			os.rename(ordered_files[file][0] + '/' + old_file, ordered_files[file][0] + '/' + new_file)

# going through all new pictures, renaming and moving them
for current_dir in img_dir:
	current_path = path + "pic/" + current_dir
	relative_game_path = game_pic_path + current_dir

	for file in os.listdir(current_path):
		if file[-4:] == ".png":
			new_file = file[:-4]
			separator_index = new_file.rfind('(')
			if separator_index != -1:
				new_file = new_file[:separator_index].strip()

			separator_index = file.rfind('_')
			if '0' <= file[separator_index + 1] <= '9':
				new_file = new_file[:separator_index]

			if settings["rename_only"] == 'false':
				if new_file in pic_max:
					os.rename(current_path + '/' + file, relative_game_path + '/' + new_file + '_' + str(pic_max[new_file]+1) + ".png")
					pic_max[new_file] += 1

				else:
					os.rename(current_path + '/' + file, relative_game_path + '/' + new_file + ".png")
					pic_max[new_file] = 1

			else:
				if new_file in pic_max:
					os.rename(current_path + '/' + file, path + "renamed/" + current_dir + '/' + new_file + '_' + str(pic_max[new_file] + 1) + ".png")
					pic_max[new_file] += 1

				else:
					os.rename(current_path + '/' + file, path + "renamed/" + current_dir + '/' + new_file + ".png")
					pic_max[new_file] = 1

# doing one last check to make sure all multiple girl pics are named properly
for current_dir in img_dir:
	current_path = game_pic_path + current_dir

	for file in os.listdir(current_path):
		if file[-4:] == ".png" and "item" not in file:
			separator_index = file.rfind('_')
			if '~' in file:
				if '0' <= file[separator_index + 1] <= '9':
					multiple_girl_separator = file.find('~')
					fg = file[file.find("_")+1:multiple_girl_separator]
					sg = file[multiple_girl_separator+1:separator_index]
					if fg > sg and (("general" in fg and "general" in sg) or ("general" not in fg and "general" not in sg)):
						print(fg, sg)
						print(file + " --- Wrong girl order")

				else:
					multiple_girl_separator = file.find('~')
					fg = file[file.find("_")+1:multiple_girl_separator]
					sg = file[multiple_girl_separator+1:-4]
					if fg > sg and (("general" in fg and "general" in sg) or ("general" not in fg and "general" not in sg)):
						print(fg, sg)
						print(file + " --- Wrong girl order\n")


code:
Make sure the images are named properly: "*act*_*hair_color*_*hair_length*.png"
	-- numbering doesn't matter, just can let windows number them for you
	  	("*act*_*hair_color*_*hair_length*(*nr*).png")

Put the images you want to add into the folders above as if you were adding them to the game files yourself.

Run "add_pictures.py"
	-- Requires Python.

Done :D


code: rename_only = false


seed_name: Isabella

seed_world_description: [Isabella]<br>- Not so very long ago we realized how huge the world is. When the ocean opened new rich land, everything changed. Power of the state is now measured by the force of his sailing fleet.

seed_family_description: [Isabella]<br>- I was born in the family of a simple fisherman, and since childhood I helped father to catch fish on the boat. I was always a tomboy. Then my parents died of smallpox, and I had to become a port whore.

seed_occupation_description: [Isabella]<br>- I certainly like to fuck, but I hate to earn money by this. I managed to get on a pirate ship, and a woman on a ship can get in trouble. But the pirates valued strength and savvy, and it does not matter who you are - black, crippled or woman.

fullimage: girls/full/isabela

seed_psy_basic: optimistic


code: start "" "game/engine/jack.exe" game/jack.qsp


code:
901_isabella.json is an improved Isabella who is mostly trained.  Copy this file into the game/json/slaves folder and replace.  This is considered a cheat provided by crushboss.

Jack_alternate_game_launch.bat is for those who have difficulty launching the game through the normal executable.
Copy this file into the Jack-o-nine-tails folder (the same folder containing Jack-o-nine-tails.exe) and double click on it to launch the game.


code:
<?xml version="1.0" encoding="utf-8"?>
<QGen-keywords>
  <Statements>
    <Keyword name="pl" desc="PL [выражение] / *PL [выражение] - вывод текста в дополнительное / основное окно описания, затем переход на новую строку"/>
    <Keyword name="clear" desc="CLEAR / *CLEAR - очистка дополнительного / основного окна описания"/>
    <Keyword name="clr" desc="CLR / *CLR - очистка дополнительного / основного окна описания"/>
    <Keyword name="p" desc="P [выражение] / *P [выражение] - вывод текста в дополнительное / основное окно описания"/>
    <Keyword name="nl" desc="NL [выражение] / *NL [выражение] - переход на новую строку, затем вывод текста в дополнительное / основное окно описания"/>
    <Keyword name="msg" desc="MSG [выражение] - вывод сообщения в информационном окне"/>
    <Keyword name="wait" desc="WAIT [#выражение] - остановка выполнения программы на заданное количество миллисекунд"/>
    <Keyword name="act" desc="ACT [$название],[$путь к изображению]:[оператор] & [оператор] & ... - добавление действия"/>
    <Keyword name="delact" desc="DELACT [$название] / DEL ACT [$название] - удаление действия"/>
    <Keyword name="cla" desc="CLA - очистка списка действий"/>
    <Keyword name="cmdclear" desc="CMDCLEAR - очистка строки ввода"/>
    <Keyword name="cmdclr" desc="CMDCLEAR - очистка строки ввода"/>
    <Keyword name="cls" desc="CLS - очищает экран, оставляя только список предметов"/>
    <Keyword name="menu" desc="MENU [$выражение] - показ меню с заданным названием"/>
    <Keyword name="settimer" desc="SETTIMER [#выражение] - задает интервал таймера для локации-счетчика"/>
    <Keyword name="dynamic" desc="DYNAMIC [$строка кода],[параметр 1],[параметр 2], ... - динамическое выполнение кода"/>
    <Keyword name="set" desc="SET [название переменной]=[выражение] - установка значения переменной"/>
    <Keyword name="let" desc="LET [название переменной]=[выражение] - установка значения переменной"/>
    <Keyword name="killvar" desc="KILLVAR [$название],[#индекс] - удаление всех переменных / указанной переменной"/>
    <Keyword name="copyarr" desc="COPYARR [$массив-приемник],[$массив-источник] - копирование содержимого массива в другой массив"/>
    <Keyword name="addobj" desc="ADDOBJ [$название],[$путь к изображению],[#позиция] / ADD OBJ [$название],[$путь к изображению],[#позиция] - добавление предмета"/>
    <Keyword name="delobj" desc="DELOBJ [$название] / DEL OBJ [$название] - удаление предмета"/>
    <Keyword name="killobj" desc="KILLOBJ [#позиция] - удаление всех предметов / предмета в заданной позиции"/>
    <Keyword name="unselect" desc="UNSELECT - отмена выбора предмета"/>
    <Keyword name="unsel" desc="UNSEL - отмена выбора предмета"/>
    <Keyword name="killall" desc="KILLALL - удаление всех переменных и предметов"/>
    <Keyword name="opengame" desc="OPENGAME [$выражение] - загрузка состояния игры"/>
    <Keyword name="openqst" desc="OPENQST [$выражение] - открытие и запуск файла игры"/>
    <Keyword name="addqst" desc="ADDQST [$выражение] - добавление локаций из указанного файла"/>
    <Keyword name="killqst" desc="KILLQST - удаление всех добавленных через ADDQST локаций"/>
    <Keyword name="savegame" desc="SAVEGAME [$выражение] - сохранение состояния игры"/>
    <Keyword name="refint" desc="REFINT - обновление интерфейса"/>
    <Keyword name="showacts" desc="SHOWACTS [#выражение] - показ / скрытие списка действий"/>
    <Keyword name="showinput" desc="SHOWINPUT [#выражение] - показ / скрытие строки ввода"/>
    <Keyword name="showobjs" desc="SHOWOBJS [#выражение] - показ / скрытие списка предметов"/>
    <Keyword name="showstat" desc="SHOWSTAT [#выражение] - показ / скрытие дополнительного окна описания"/>
    <Keyword name="if" desc="IF [#выражение]:[оператор1] & [оператор2] & ... ELSE [оператор3] & [оператор4] & ... - условие"/>
    <Keyword name="else" desc="IF [#выражение]:[оператор1] & [оператор2] & ... ELSE [оператор3] & [оператор4] & ... - условие"/>
    <Keyword name="elseif" desc="ELSEIF [#выражение]:[оператор1] & [оператор2] & ... - альтернативное условие"/>
    <Keyword name="exit" desc="EXIT - завершение выполнения текущего кода"/>
    <Keyword name="end" desc="END - завершение многострочной формы IF / ACT"/>
    <Keyword name="jump" desc="JUMP [$выражение] - переход на указанную метку"/>
    <Keyword name="gosub" desc="GOSUB [$выражение],[параметр 1],[параметр 2], ... - обработка указанной локации"/>
    <Keyword name="gs" desc="GS [$выражение],[параметр 1],[параметр 2], ... - обработка указанной локации"/>
    <Keyword name="goto" desc="GOTO [$выражение],[параметр 1],[параметр 2], ... - переход на указанную локацию"/>
    <Keyword name="gt" desc="GT [$выражение],[параметр 1],[параметр 2], ... - переход на указанную локацию"/>
    <Keyword name="xgoto" desc="XGOTO [$выражение],[параметр 1],[параметр 2], ... - переход на указанную локацию без очистки основного окна описания"/>
    <Keyword name="xgt" desc="XGT [$выражение],[параметр 1],[параметр 2], ... - переход на указанную локацию без очистки основного окна описания"/>
    <Keyword name="play" desc="PLAY [$путь к звуковому файлу],[#громкость] - воспроизведение звукового файла с заданной громкостью"/>
    <Keyword name="close" desc="CLOSE [$путь к звуковому файлу] / CLOSE ALL - остановка проигрывания звукового файла / всех звуковых файлов"/>
    <Keyword name="view" desc="VIEW [$путь к графическому файлу] - просмотр изображения"/>
  </Statements>
  <Expressions>
    <Keyword name="and" desc="[#выражение 1] AND [#выражение 2] - логическое "и=""/>
    <Keyword name="or" desc="[#выражение 1] OR [#выражение 2] - логическое "или""/>
    <Keyword name="obj" desc="OBJ [$предмет] - проверка наличия предмета в рюкзаке"/>
    <Keyword name="loc" desc="LOC [$локация] - проверка существования локации"/>
    <Keyword name="no" desc="NO [#выражение] - отрицание"/>
    <Keyword name="mod" desc="[#выражение 1] MOD [#выражение 2] - вычисление остатка от деления"/>
    <Keyword name="desc" desc="DESC([$выражение]) - возвращает текст базового описания локации"/>
    <Keyword name="$desc" desc="$DESC([$выражение]) - возвращает текст базового описания локации"/>
    <Keyword name="iif" desc="IIF([#выражение],[выражение_да],[выражение_нет]) - возвращает одно из выражений по условию"/>
    <Keyword name="$iif" desc="$IIF([#выражение],[выражение_да],[выражение_нет]) - возвращает одно из выражений по условию"/>
    <Keyword name="input" desc="INPUT([выражение]) - показывает окно ввода текста и возвращает введенное значение"/>
    <Keyword name="$input" desc="$INPUT([выражение]) - показывает окно ввода текста и возвращает введенное значение"/>
    <Keyword name="isplay" desc="ISPLAY([$выражение]) - проверяет, проигрывается ли в текущий момент указанный файл"/>
    <Keyword name="max" desc="MAX([выражение 1],[выражение 2], ...) - возвращает максимальное из значений аргументов"/>
    <Keyword name="$max" desc="$MAX([выражение 1],[выражение 2], ...) - возвращает максимальное из значений аргументов"/>
    <Keyword name="min" desc="MIN([выражение 1],[выражение 2], ...) - возвращает минимальное из значений аргументов"/>
    <Keyword name="$min" desc="$MIN([выражение 1],[выражение 2], ...) - возвращает минимальное из значений аргументов"/>
    <Keyword name="rand" desc="RAND([#выражение 1],[#выражение 2]) - возвращает случайное число между заданными"/>
    <Keyword name="rgb" desc="RGB([#красный],[#зеленый],[#синий]) - возвращает код цвета на основе 3-х составляющих"/>
    <Keyword name="getobj" desc="GETOBJ([#позиция]) - возвращает название предмета, расположенного в заданной позиции"/>
    <Keyword name="$getobj" desc="$GETOBJ([#позиция]) - возвращает название предмета, расположенного в заданной позиции"/>
    <Keyword name="dyneval" desc="DYNEVAL([$выражение],[параметр 1],[параметр 2], ...) - возвращает значение динамически вычисленного выражения"/>
    <Keyword name="$dyneval" desc="$DYNEVAL([$выражение],[параметр 1],[параметр 2], ...) - возвращает значение динамически вычисленного выражения"/>
    <Keyword name="func" desc="FUNC([$выражение],[параметр 1],[параметр 2], ...) - обработка указанной локации как функции"/>
    <Keyword name="$func" desc="$FUNC([$выражение],[параметр 1],[параметр 2], ...) - обработка указанной локации как функции"/>
    <Keyword name="arrsize" desc="ARRSIZE([$выражение]) - возвращает число элементов в указанном массиве"/>
    <Keyword name="arrpos" desc="ARRPOS([#начальный индекс],[$имя массива],[значение]) - поиск в массиве элемента с заданным значением"/>
    <Keyword name="instr" desc="INSTR([#начальная позиция],[$текст],[$искомый текст]) - поиск вхождения текста"/>
    <Keyword name="isnum" desc="ISNUM([$выражение]) - проверяет, является ли указанная строка числом"/>
    <Keyword name="trim" desc="TRIM([$выражение]) - удаляет из текста прилегающие пробелы и символы табуляции"/>
    <Keyword name="$trim" desc="$TRIM([$выражение]) - удаляет из текста прилегающие пробелы и символы табуляции"/>
    <Keyword name="ucase" desc="UCASE([$выражение]) - преобразует маленькие буквы текста в большие"/>
    <Keyword name="$ucase" desc="$UCASE([$выражение]) - преобразует маленькие буквы текста в большие"/>
    <Keyword name="lcase" desc="LCASE([$выражение]) - преобразует большие буквы текста в маленькие"/>
    <Keyword name="$lcase" desc="$LCASE([$выражение]) - преобразует большие буквы текста в маленькие"/>
    <Keyword name="len" desc="LEN([$выражение]) - возвращает длину указанной строки"/>
    <Keyword name="mid" desc="MID([$текст],[#начало],[#длина]) - вырезает из текста строку указанной длины начиная с заданной позиции"/>
    <Keyword name="$mid" desc="$MID([$текст],[#начало],[#длина]) - вырезает из текста строку указанной длины начиная с заданной позиции"/>
    <Keyword name="replace" desc="REPLACE([$текст],[$искомый текст],[$текст для замены]) - заменяет в тексте заданную строку"/>
    <Keyword name="$replace" desc="$REPLACE([$текст],[$искомый текст],[$текст для замены]) - заменяет в тексте заданную строку"/>
    <Keyword name="str" desc="STR([#выражение]) - переводит число в строку"/>
    <Keyword name="$str" desc="$STR([#выражение]) - переводит число в строку"/>
    <Keyword name="val" desc="VAL([$выражение]) - переводит строку в число"/>
    <Keyword name="arrcomp" desc="ARRCOMP([#начальный индекс],[$имя массива],[$шаблон]) - поиск в массиве элемента, соответствующего регулярному выражению"/>
    <Keyword name="strcomp" desc="STRCOMP([$выражение],[$шаблон]) - проверяет заданный текст на соответствие регулярному выражению"/>
    <Keyword name="strfind" desc="STRFIND([$выражение],[$шаблон],[#номер]) - возвращает подстроку, соответствующую группе с номером [#номер] регулярного выражения"/>
    <Keyword name="$strfind" desc="$STRFIND([$выражение],[$шаблон],[#номер]) - возвращает подстроку, соответствующую группе с номером [#номер] регулярного выражения"/>
    <Keyword name="strpos" desc="STRPOS([$выражение],[$шаблон],[#номер]) - возвращает позицию подстроки, соответствующей группе с номером [#номер] регулярного выражения"/>
    <Keyword name="countobj" desc="COUNTOBJ - возвращает текущее число предметов"/>
    <Keyword name="msecscount" desc="MSECSCOUNT - возвращает количество миллисекунд, прошедших с момента начала игры"/>
    <Keyword name="rnd" desc="RND - возвращает случайное значение от 1 до 1000"/>
    <Keyword name="curloc" desc="CURLOC - возвращает название текущей локации"/>
    <Keyword name="$curloc" desc="$CURLOC - возвращает название текущей локации"/>
    <Keyword name="qspver" desc="QSPVER - возвращает версию интерпретатора"/>
    <Keyword name="$qspver" desc="$QSPVER - возвращает версию интерпретатора"/>
    <Keyword name="selobj" desc="SELOBJ - возвращает название выделенного предмета"/>
    <Keyword name="$selobj" desc="$SELOBJ - возвращает название выделенного предмета"/>
    <Keyword name="selact" desc="SELACT - возвращает название выделенного действия"/>
    <Keyword name="$selact" desc="$SELACT - возвращает название выделенного действия"/>
    <Keyword name="curacts" desc="CURACTS - возвращает в виде кода все текущие действия"/>
    <Keyword name="$curacts" desc="$CURACTS - возвращает в виде кода все текущие действия"/>
    <Keyword name="user_text" desc="USER_TEXT - возвращает текст в строке ввода"/>
    <Keyword name="$user_text" desc="$USER_TEXT - возвращает текст в строке ввода"/>
    <Keyword name="usrtxt" desc="USRTXT - возвращает текст в строке ввода"/>
    <Keyword name="$usrtxt" desc="$USRTXT - возвращает текст в строке ввода"/>
    <Keyword name="maintxt" desc="MAINTXT - возвращает текст в основном окне описания"/>
    <Keyword name="$maintxt" desc="$MAINTXT - возвращает текст в основном окне описания"/>
    <Keyword name="stattxt" desc="STATTXT - возвращает текст в дополнительном окне описания"/>
    <Keyword name="$stattxt" desc="$STATTXT - возвращает текст в дополнительном окне описания"/>
  </Expressions>
  <Variables>
    <Keyword name="args" desc="ARGS - массив с параметрами процедуры / функции"/>
    <Keyword name="$args" desc="$ARGS - массив с параметрами процедуры / функции"/>
    <Keyword name="result" desc="RESULT - переменная содержит результат, возвращаемый текущей функцией"/>
    <Keyword name="$result" desc="$RESULT - переменная содержит результат, возвращаемый текущей функцией"/>
    <Keyword name="disablescroll" desc="DISABLESCROLL - если переменная не равна 0, то запрещает автопрокрутку текста при выводе"/>
    <Keyword name="disablesubex" desc="DISABLESUBEX - если переменная не равна 0, то запрещает использование "подвыражений" в тексте"/>
    <Keyword name="nosave" desc="NOSAVE - если переменная не равна 0, то сохранение состояния игры пользователем невозможно"/>
    <Keyword name="debug" desc="DEBUG - если переменная не равна 0, то отключается проверка идентификатора игры при загрузке состояния"/>
    <Keyword name="$counter" desc="$COUNTER - переменная содержит название локации-счётчика"/>
    <Keyword name="$ongload" desc="$ONGLOAD - переменная содержит название локации-обработчика загрузки состояния"/>
    <Keyword name="$ongsave" desc="$ONGSAVE - переменная содержит название локации-обработчика сохранения состояния"/>
    <Keyword name="$onnewloc" desc="$ONNEWLOC - переменная содержит название локации-обработчика перехода на новую локацию"/>
    <Keyword name="$onactsel" desc="$ONACTSEL - переменная содержит название локации-обработчика выбора действия"/>
    <Keyword name="$onobjsel" desc="$ONOBJSEL - переменная содержит название локации-обработчика выбора предмета"/>
    <Keyword name="$onobjadd" desc="$ONOBJADD - переменная содержит название локации-обработчика добавления предмета"/>
    <Keyword name="$onobjdel" desc="$ONOBJDEL - переменная содержит название локации-обработчика удаления предмета"/>
    <Keyword name="$usercom" desc="$USERCOM - переменная содержит название локации-обработчика строки ввода"/>
    <Keyword name="usehtml" desc="USEHTML - если переменная не равна 0, то включает возможность использования HTML"/>
    <Keyword name="bcolor" desc="BCOLOR - переменная содержит цвет фона"/>
    <Keyword name="fcolor" desc="FCOLOR - переменная содержит основной цвет шрифта"/>
    <Keyword name="lcolor" desc="LCOLOR - переменная содержит основной цвет ссылок"/>
    <Keyword name="fsize" desc="FSIZE - переменная содержит основной размер шрифта"/>
    <Keyword name="$fname" desc="$FNAME - переменная содержит название основного шрифта"/>
    <Keyword name="$backimage" desc="$BACKIMAGE - переменная содержит путь к фоновому изображению"/>
  </Variables>
</QGen-keywords>


code:
# Ignore all files
*.*

# Except
!*.json
!*.js
!*.zip
!*.7z
!*.csv
!*.ain
!*.fnl
!*.ks
!*.tjs
!*.yaml
!Data/*
!*.rb
!.gitignore
!README.md
!game.ini

# Images
!a-158i01.rpgmvp
!a-158i02.rpgmvp
!a-158i03.rpgmvp
!a-158i04.rpgmvp
!a-158i05.rpgmvp
!a-158i06.rpgmvp
!a-158i07.rpgmvp
!a-158i08.rpgmvp
!a-158i09.rpgmvp
!a-158i10.rpgmvp
!a-158i10a.rpgmvp
!a-158i11.rpgmvp
!a-158i12.rpgmvp
!a-158i14.rpgmvp
!a-158i15.rpgmvp
!a-158i16.rpgmvp
!a-190.rpgmvp
!a-190a01.rpgmvp
!a-190a01a.rpgmvp
!a-190a02.rpgmvp
!a-190a03.rpgmvp
!a-190a05.rpgmvp
!a-190a08.rpgmvp
!a-190a10.rpgmvp
!a-190a11.rpgmvp!
!a-190a12.rpgmvp!
!a-190a13.rpgmvp!
!et-04-2.rpgmvp
!es-21.rpgmvp
!ae-001.rpgmvp
!ae-002.rpgmvp
!ae-003.rpgmvp
!ae-004.rpgmvp
!ae-005.rpgmvp
!ae-006.rpgmvp
!ae-007.rpgmvp
!ae-008.rpgmvp
!ae-009.rpgmvp
!ae-011.rpgmvp
!ae-012.rpgmvp
!ae-013.rpgmvp
!ae-014.rpgmvp
!ae-015.rpgmvp
!ae-016.rpgmvp
!ae-021.rpgmvp
!ae-022.rpgmvp
!ae-023.rpgmvp
!ae-024.rpgmvp
!ae-025.rpgmvp
!ae-027.rpgmvp
!ae-028.rpgmvp
!ae-031.rpgmvp
!ae-032.rpgmvp
!ae-033.rpgmvp
!ae-034.rpgmvp
!ae-035.rpgmvp
!ae-040.rpgmvp
!ae-041.rpgmvp
!ae-042.rpgmvp
!ae-043.rpgmvp
!ae-044.rpgmvp
!ae-045.rpgmvp
!ae-046.rpgmvp
!ae-047.rpgmvp
!ae-048.rpgmvp
!ae-051.rpgmvp
!ae-052.rpgmvp
!ae-053.rpgmvp
!ae-054.rpgmvp
!ae-055.rpgmvp
!ae-062.rpgmvp
!ae-063.rpgmvp
!ae-064.rpgmvp
!ae-065.rpgmvp
!ae-072.rpgmvp
!ae-073.rpgmvp
!ae-074.rpgmvp
!ae-075.rpgmvp
!ae-076.rpgmvp
!ae-082.rpgmvp
!ae-083.rpgmvp
!ae-084.rpgmvp
!ae-085.rpgmvp
!ae-086.rpgmvp
!ae-087.rpgmvp
!ae-088.rpgmvp
!ae-092.rpgmvp
!ae-093.rpgmvp
!ae-094.rpgmvp
!ae-095.rpgmvp
!ae-096.rpgmvp
!ae-097.rpgmvp
!ae-102.rpgmvp
!ae-103.rpgmvp
!ae-104.rpgmvp
!ae-105.rpgmvp
!ae-106.rpgmvp
!ae-107.rpgmvp
!ae-113.rpgmvp
!ae-114.rpgmvp
!ae-115.rpgmvp
!ae-116.rpgmvp
!ae-117.rpgmvp
!ae-121.rpgmvp
!ae-122.rpgmvp
!ae-123.rpgmvp
!ae-124.rpgmvp
!ae-125.rpgmvp
!ae-130.rpgmvp
!ae-131.rpgmvp
!ae-132.rpgmvp
!ae-133.rpgmvp
!ae-134.rpgmvp
!ae-135.rpgmvp
!ae-136.rpgmvp
!ae-137.rpgmvp
!ae-138.rpgmvp
!ae-139.rpgmvp
!ae-140.rpgmvp
!ae-141.rpgmvp
!ae-142.rpgmvp
!ae-143.rpgmvp
!ae-171.rpgmvp
!ae-172.rpgmvp
!ae-173.rpgmvp
!ae-174.rpgmvp
!ae-175.rpgmvp
!ae-176.rpgmvp
!ae-177.rpgmvp
!ae-178.rpgmvp
!ae-179.rpgmvp
!ae-180.rpgmvp
!ae-181.rpgmvp
!ae-182.rpgmvp
!ae-183.rpgmvp
!ae-184.rpgmvp
!ae-185.rpgmvp
!ae-186.rpgmvp
!ae-187.rpgmvp
!ae-188.rpgmvp

repo_name: dazed/translations

path: .gitignore


code:
# Apply Patch
1. Click Code
2. Click Download ZIP
3. Extract to game folder and Replace All.

# How To Contribute
TLDR 3 steps.

    Fork the repository.
    Make the changes.
    Submit a pull request to the project owner.

If everything looks good and doesn't break things I'll merge it in.

Longer Version:

Things that are needed:
* [VSCode](https://code.visualstudio.com/) Make sure you check all the boxes for context menus. ![image](https://github.com/DazedMTL/Dungeon-With-Girl/assets/96628874/7a84b624-32fe-4845-a0f6-2b9f39795070)
* The Game
* [Git](https://git-scm.com/downloads) (Use the default for everything. Just keep clicking Next)
* Motivation to learn

Installation:
1. Fork the repo using the fork button at the top. Click Code > HTTPS > Copy URL.
2. Right click on the game folder and click 'Open with VSCode' (Shift+Right_Click if you are on Windows 11)
3. Click on the Source Control Button and click initialize repository.

![image](https://github.com/DazedMTL/Dungeon-With-Girl/assets/96628874/61e818e6-11f9-450d-9d7d-263d109dbf56)

4. At the top click on Terminal > New Terminal. Enter the following: `git clone [URL_YOU_COPIED_ABOVE]`.
5. Copy the contents of the new folder created with git clone into the game folder and replace all.
6. Your source control menu should be good to go and look like this.

![image](https://github.com/DazedMTL/Dungeon-With-Girl/assets/96628874/c19787a0-172d-4a08-a37a-e3b56e70e86a)

Now you are all setup, all you need to do is play the game and look for any changes that need to be made. Stuff like spelling errors, wrong names, inconsistencies, spacing issues, etc.

7. Use the FIND functionality to search for what you are trying to fix. For example if a character's name is wrong, type that into the search menu and start looking, then make the change. Try not to mess with any scripts or variables you might see.

![image](https://github.com/DazedMTL/Dungeon-With-Girl/assets/96628874/589eccaf-7f86-43f7-a917-7e6e477b381a)

8. After you are satisfied with your changes it's time to put in a PR. Go to source control to see all your changes. Add a message and click the `Commit` button to save them all.

![image](https://github.com/DazedMTL/Dungeon-With-Girl/assets/96628874/a9a8973b-bc01-4184-bea9-63a925d961a2)

8. Click Sync to push your changes to your fork. Now all that's left is to put in a pull request.
9. Go to Pull Requests > New Pull Requests. Look at the arrow, your fork should be pointing to the original repo (mine). Add in details on what you fixed and Submit. If everything looks good I'll merge it in and you would have successfully contributed.

Got questions? Just shoot me a message, more than happy to walk you through any of the tools.


Karin

nickname: Mouse Komachi

note:
<SBI画像:av-019>

<xxx:cutin_testA1>
<yyy:cutin_testA1a>

<equipSlotEx:1 3 4 5 5>

<PE拡張:\n Favorite Food:　\V[82]>

<SACスキル封印スイッチ:293>

<stand_picture:au-001>
<stand_picture2:au-001a>
<stand_picture3:au-001b>

<Speech/Turn: I'm going in full of energy! , I won't lose! , Haaa—! >
<Speech/Dead: This can't be... , in a place like this... , Kyaaah!! >
<Speech/Recovery: Thank you! >
<Speech/Damage: Ouch! , Eek! , It hurts...! >
<Speech/Victory: We did it! , We won! , A great victory~! >

<Speech/Skill[9]: ——You should take this! >
<Speech/Skill[11]: ——Burn up! >
<Speech/Skill[12]: ——Take thisss!! >
<Speech/Skill[13]: ——With all my body and soul!! >

profile:
The person behind Phantom Thief Mouse Komachi, has a
strong sense of justice. \V[20] Chapter \V[60] Day \V[31]
\V[19]

Yugiri

nickname: 伊賀忍組頭

note:
<stand_picture:au-002>

<SBI画像:at-002>
<xx02:cutin_testA2>

<equipSlotEx:1 3 4 5 5>

<Speech/Turn: Cut down! , Come at me! , Taste my sword! >
<Speech/Dead: Impossible... , I can still...fight... , Ugh...! >
<Speech/Recovery: I'm sorry! >
<Speech/Damage: Ugh! , Gah! , ---! >
<Speech/Victory: No defeat for the Iga ninja, It was good to win, Let's move forward >

<Speech/Skill[25]: ---You won't escape! >
<Speech/Skill[26]: ---I'll slash you to pieces!! >
<Speech/Skill[27]: ---Witness my secret sword technique! >

profile:
An elite Iga ninja serving the shogunate, a master of the
kodachi dual-wielding style, who became an official secret
agent to avenge a grudge against demons

Momiji

nickname: 芸子

note:
<stand_picture:au-003>

<SBI画像:at-003>
<xx03:cutin_testA3>
<yy01:cutin_testA31>

<equipSlotEx:1 3 4 5 5>

<Speech/Turn: I'm going all out, I won't hold back, Let's give it our best >
<Speech/Dead: My body…can't... , Too strong… , I'm sorry… >
<Speech/Recovery: I am grateful >
<Speech/Damage: Ah! , Yah! , Kuh...! >
<Speech/Victory: Let's move ahead, Let's win the next one too, Impressive indeed >

<Speech/Skill[15]: Please, the power to heal―― >
<Speech/Skill[19]: Everyone, get well―― >
<Speech/Skill[20]: ――I'll fight to my limits! >

profile:
A geisha living in the pleasure district, with a strong grip
who also serves as a bodyguard, a demon with a human heart,
seems to have lived in the same village as the infant Karin

Masaki

nickname: 空狐

note:
<stand_picture:au-004>

<SBI画像:at-004>
<xx04:cutin_testA4>

<equipSlotEx:1 3 4 5 5>

<Speech/Turn: Let's go――! , Nyahaha, here I come! , Come on! >
<Speech/Dead: What's this?! , Gufu! Can this be a lie? , Unbelievable…… >
<Speech/Recovery: Good, very good! >
<Speech/Damage: Nuwah! , Gununu! , Ouch! >
<Speech/Victory: I won't be defeated! , You're no match for me! , Umu, I've won♪ >

<Speech/Skill[30]: Burn to ashes! >
<Speech/Skill[31]: Take my deadly lightning strike! >
<Speech/Skill[32]: Everyone, do your best! >

profile:
A sky fox who runs a teahouse near the pond in Ueno,
claiming to be the king of specters and is very powerful


Leather Gauntlets

description: Defense +5

Iron Gauntlets

description: Defense +10

Tamahagane Gauntlets

description: Defense +15

Silver Gauntlets

description: Defense +20

Diamond Gauntlets

description: Defense +25, HP increases by 10%, Paralysis nullified

Sea God's Gauntlets

description: Defense +30, Skill power increases by 10%, Burns nullified

Nighthawk Gauntlets

description: Defense +20, Speed +30

Hood

description: Defense +5

Sandogasa

description: Defense +10

Headband

description: Defense +15

Jeweled Hairpin

description: Defense +20

Tropical Hairpin

description: Defense +20, HP +150

Flower God Hairpin

description: Defense +25, Skill power increases by 10%, Darkness nullified

Beast God Hairpin

description: Defense +30, Skill power increases by 20%

Amulet of Vitality

description: Accessory, HP +50

Amulet of Skill

description: Accessory, Skill power +50

Amulet of Offense

description: Accessory, Attack power +5

Amulet of Defense

description: Accessory, Defense +5

Windmill

description: Accessory, Speed +10

Lucky Charm

description: Accessory, Luck +10

Ring of Vigor

description: Accessory, HP +200

Ring of Mastery

description: Accessory, Skill power +100

Ring of Wrath

description: Accessory, Attack power +8

Ring of Fortitude

description: Accessory, Defense +15

Star Ring

description: Accessory, Defense +5, Speed +30

Ancient Demon-Breaking Arrow

description: Accessory, Defense +5, Luck +30

Phoenix Earrings

description: Accessory, HP +300, Speed +10

Azure Dragon Earrings

description: Accessory, Skill power +150, Speed +10

White Tiger Earrings

description: Accessory, Attack power +20, Speed +10

Black Tortoise Earrings

description: Accessory, Defense +20, Speed +10

Idaten's Windmill

description: Accessory, Defense +5, Speed +50, Evasion rate increased

Lucky Beckoning Cat

description: Accessory, Defense +5, Luck +50, Evasion rate increased

Tengu Mask

description: Accessory, Defense +5, Exorcism power +30, Halves lightning damage, Paralysis nullified

Kappa's Plate

description: Accessory, Defense +5, Exorcism power +30, Halves enemy water attacks

Demon-Repelling Bell

description: Accessory, Attack power +5, Defense +5, Exorcism power +30, Enemy poison attacks nullified

Sea Dragon Bone

description: Accessory, Attack power +5, Defense +5, HP +30, Defense increases by 20%

Amulet of Awakening

description: Accessory, Attack power +5, Defense +5, HP +30, Sleep nullified

Bracelet of Sanity

description: Accessory, Attack power +10, Defense +10, HP +50, Confusion nullified

Bracelet of Exorcism

description: Accessory, Attack power +10, Defense +10, HP +50, Darkness nullified

Champion's Inro

description:
Accessory, Attack power +15, Defense +15, HP +100, Occasionally counterattacks when
attacked by an enemy

War God's Necklace

description: Accessory: Attack +20 Defense +20 HP +150 Nullifies Burn

Heaven's Blessing Necklace

description: Accessory: Skill Power +200 Defense +20 Automatically recovers Skill Power during battle

Fuma's Guard Sword

description:
Accessory: Attack +25 Defense +20 HP +300 [Karin Exclusive Accessory] Automatically
recovers HP during battle


Grudge Deity

note:
<MultiAction1:2,4>
<MultiAction2:2,4>
<MultiAction3:2,4>
<LastAction:4>
<LastAction:5>


Dumplings

description: Restores 100 HP

Rice Ball

description: Restores 200 HP

Healing Medicine

description: Restores 500 HP

Gold Elixir

description: Restores 1000 HP

Divine Medicine

description: Restores full HP

Incense Burner of Divine Medicine

description: Restores full HP (for all allies)

Smoke Ball

description: Increases an ally's Evasion for 2 turns (consumable)

Gold Nugget

description: Sellable item (can be sold at the tool shop for a high price)

Technique Sake

description: Restores 300 TP

Super Technique Sake

description: Restores full TP

description:
Ueno (north of the pond) Fukagawa (along the river by the sumo ring) Yotsuya (beside the
shrine) Red-light district (next to the pond in the back of the first floor)

name: Scroll of the Hidden Room (Upper Volume)

note: <数量表記なし>

description:
Sunamura Village (north of the pond in the upper right) Atami (along the beach in the
upper right) Edo Castle Entrance (along the river on the right side of the central bridge)

name: Scroll of the Hidden Room (Lower Volume)

Antidote Herb

description: Cures Poison status

All-Purpose Herb

description: Heals one ally's status ailments

Resurrection Bell

formula: b.mhp / 2

description: Revives an incapacitated ally, can only be used during battle

Drum of Full Revival

description: Revives all incapacitated allies, can only be used during battle

Fruit of Vitality

description: Increases max HP by 10

Fruit of Technique

description: Increases max TP by 5

Fruit of Attack Power

description: Increases max Attack by 2

Fruit of Defense Power

description: Increases max Defense by 2

Fruit of Speed

description: Increases max Speed by 2

Fruit of Mystical Power

description: Increases max Mystic Power by 2

Fruit of Exorcism Power

description: Increases max Exorcism Power by 2

Fruit of Fate

description: Increases max Luck by 2

Pear of Offense

description: User's Attack increases for 3 turns, can only be used during battle (no stacking upon use)

Pear of Defense

description:
User's Defense increases for 3 turns, can only be used during battle (no stacking upon
use)

Pear of Swiftness

description: User's Speed increases for 3 turns, can only be used during battle (no stacking upon use)

Scroll of Offense

description:
All allies' Attack increases for 3 turns, can only be used during battle (no stacking upon
use)

Scroll of Defense

description:
All allies' Defense increases for 3 turns, can only be used during battle (no stacking
upon use)

Scroll of Swiftness

description:
All allies' Speed increases for 3 turns, can only be used during battle (no stacking upon
use)

White Orb

description: One of the seven jewels. Grants EXP in the basement of the Recollection Shack.

Public Bath Entry Ticket

description:
Becomes able to bathe and stay overnight at Asakusa's public bath as many times as you
want.

Hot Spring Entry Ticket

description: Becomes able to bathe at Atami's hot springs as many times as you want.

Koi Fish

description: Eating it restores 1000 HP (can be sold at the tool shop for a high price)

Straw

description: Straw obtained in Shinjuku [Straw Millionaire Event] → Asakusa

Amulet

description: Charm obtained in Asakusa [Straw Millionaire Event] → Nihonbashi

Mandarin Orange

description: Mikan obtained in Nihonbashi [Straw Millionaire Event] → Fukagawa

Bolt of Cloth

description: Bolt of cloth obtained in Fukagawa [Straw Millionaire Event] → Tsukiji

Lottery Ticket

description: Lottery ticket obtained in Tsukiji [Straw Millionaire Event] → Ueno

Horse

description: Horse obtained in Ueno [Straw Millionaire Event] → Castle Town

Rare Goods

description:
Strange currency: If you take it to the mansion of the wealthy hobbyist in Hibiya, you can
exchange it for a valuable ornament

Killifish

description: Eating it restores 10 HP (can be sold)

Loach

description: Eating it restores 50 HP (can be sold)

Crucian Carp

description: Eating it restores 100 HP (can be sold)

Carp

description: Eating it restores 200 HP (can be sold)

Softshell Turtle

description: Eating it restores 700 HP (can be sold)

Sardine

description: Eating it restores 50 HP (can be sold)

Flounder

description: Eating it restores 100 HP (can be sold)

Sea Bream

description: Eating it restores 300 HP (can be sold)

Tuna

description: Eating it restores 500 HP (can be sold)

Shark

description: Eating it restores 150 Technique Power (can be sold)

Fishing Bait

description: One is needed when fishing (consumable)

Virgin

description: Proof of a virgin: A very important item

Aphrodisiac

description:
Consumable: Increases lewdness by +100 for one day (effect ends upon sleeping) (cannot
stack effects when used)

note:
<スイッチ条件:336がOFF>
<disableSwitch:336>

Ovulation Drug

description:
Consumable: Increases pregnancy chance by 70% for one day (effect ends upon sleeping)
(cannot stack effects when used)

Burdoc

description: Sex toy: Shaped like a kokeshi doll (can be used at home any number of times)

Miko Attire

description: For dancing: Used for dance performances at the sideshow tent

Night Hawk's Mat

description: Becomes able to prostitute at night in Edo

Oei's Letter of Introduction

description: Allows entry into the pleasure quarters

Boar Meat

description: Eating it restores 150 HP (can be sold)

Bear Meat

description: Eating it restores 350 HP (can be sold)

Courtesan's Kimono

description: Becomes able to pick up clients in the pleasure quarters

Pass Permit

description: Necessary to pass through checkpoints

Pig

description: Can be sold if taken to the zoo in Ueno

Raccoon Dog

description: Can be sold if taken to the zoo in Ueno

Goat

description: Can be sold if taken to the zoo in Ueno

Red Boar

description: Can be sold for a high price if taken to the zoo in Ueno

Fishing Rod

description:
Necessary item for fishing: Fishing possible locations (Mujou Island's southern beach,
Ueno, Tsukiji)

Poison

description: Using it during battle will result in defeat (includes allies)

note: <condition class:1>

Lucky Mallet

description: A hidden item that can make you grow larger or smaller.

Rusty Treasure Sword

description:
A rusted treasure sword obtained in the Forest of Spirits. It might shine if
polished...

Title: Fishing Master

description: Catch 30 fish successfully. Technique power increases by 30.

note:
<itemCategory:Title>
<数量表記なし>

Title: Master of Surprise Attacks

description: Defeat 30 enemies from behind. Attack power increases by 10.

Title: Queen of the Night Hawks

description: Entertain 50 clients as a night owl. Stamina increases by 100.

Title: Courtesan of Ruin

description: Entertain 50 clients in the pleasure district. Stamina increases by 200.

Title: Mother of One Child

description: Give birth to a child. Defense power increases by 10.

Title: Mother of Ten Children

description: Give birth to 10 children. Defense power increases by 30.

Title: Lewd Daughter

description: Lewdness level achieved over 100.

Title: Greatly Lewd Daughter

description: Lewdness level achieved over 300. (Transforms into Super Lewd Mode)

Title: Handjob Expert

description: Achieve giving 30 or more handjobs.

Title: Footjob Expert

description: Achieve giving 30 or more footjobs.

Title: Fellatio Expert

description: Achieve performing fellatio 30 times or more.

Title: Titjob Expert

description: Achieve giving 30 or more titjobs.

Title: Intercrural Sex Master

description: Achieve performing intercrural sex 30 times or more.

Title: Master of Seeing Through

description: Achieve performing 30 or more peep shows.

Title: Masturbation Enthusiast

description: Achieve masturbating (including mutual masturbation) 30 times or more.

Title: Captive of Molesters

description: Achieve committing molestation 30 times or more.

Title: Always Semen in the Womb

description: Achieve vaginal ejaculation 30 times or more.

Title: Servant of the Anal

description: Achieve anal ejaculation 30 times or more.

Title: Semen Lover

description: Achieve oral ejaculation 30 times or more.

Title: Semen-Covered Daughter

description: Achieve external ejaculation 30 times or more.

Title: Succubus of Edo

description: Achieve prostituting oneself over 100 times.

Title: Chief Prostitute

description: Achieve earning over 300,000 through prostitution.

Title: Fully Developed Body

description: Achieve full development of the body's potential.

description: Achieve breastfeeding 10 times or more.

name: Title: Mother Who Climaxes from Breastfeeding

Seed Massage

description: Seed rice received from a farmer in Odawara.

Karin's Ukiyo-e

description: A ukiyo-e of Karin drawn by an artist. Let's decorate the house with it.

Basara Costume

description: For dancing. Used for dance performances at the sideshow.

Chapter Substitution

description: Current chapter number \V[60]


displayName: Edo Vicinity

note:
<fgName:kumo_01>
<fgLoopX:1>
<fgLoopY:1>
<fgSx:1>
<fgSy:1>

selfSwitchCh: A

parameters:
What's the matter, Karin? That's not the way to Edo! If you
keep dawdling, Edo will burn to the ground!

parameters:
Warning: You cannot return once you proceed. Will you
advance to Mount Fuji?

parameters: Fully prepared! Let's head to Mount Fuji now

parameters: 準備万端！　このまま富士山へ進む

parameters:
The Sea of Trees... is that what it's called? It's my first
time here, but it's full of nature with rocks and tall
trees...

parameters:
The Forest of Spirits also had many trees, but this
place is even more densely overgrown. Perhaps due to the
eruption, there are pockets of lava here and there.

parameters:
We should still expect many more demons ahead. If we're to
proceed, we must do so with caution.

parameters:
It seems they've already shown themselves, haven't they? We
might not be able to return. Let's brace ourselves and
defeat these creatures.

parameters:
By Lord Gyoun's command, you shall not pass any further!
Die, intruders!!

parameters:
Hmph! They may be sturdier than the demons that attacked
Edo, but they are no match for us! Clear the way,
scoundrels--!

parameters:
...These demons were once humans, handpicked by Gyoun.
Indeed, they feel like much stronger adversaries than
before.

parameters: Handpicked...? What do you mean by that?

parameters:
When humans become demons, they are imbued with demonic
power, which is proportional to their original abilities and
strength--in other words, if an ordinary villager becomes a
demon, it's one thing, but if a master swordsman or expert
becomes a demon, then...

parameters:
They become demons of unparalleled strength, far surpassing
ordinary ones.

parameters:
The demons protecting this Mount Fuji were once strong
individuals when they were human. They seem to be like an
elite guard for Gyoun.

parameters:
To turn humans into demonkin, he uses a demon seed. However,
since they are made to follow orders as demons, they
surprisingly lack the ability to adapt in battle. They're
like living puppets.

parameters:
Is that why he has Kotaro and the other elite of the Fuma
ninjas under his command?

parameters:
We survivors of the Fuma are exceptional beings who ate the
flesh of demons ourselves. Therefore, we have far greater
abilities and judgment than the demonkin who were implanted
with demon seeds and became Gyoun's minions. That's why we
were called the Eight Grudge War Demons and were highly
valued by Gyoun.

parameters:
I see. But it's thanks to the strong remnants of your egos
that you were able to defy Gyoun and part ways with him.

parameters:
If that story is true... then all the demons we've defeated
so far were once humans like Momiji-san...? I thought I was
slaying demons that harm people, but unknowingly, I was
actually taking the lives of people who were once human with
these hands...

parameters:
(I've tried not to think about it until now... but the
demons were indeed once human. If I had been turned into
one... by now I would be...)

parameters:
Both of you, I understand how you feel, but there's no need
to be deeply troubled. If they retained a human heart like
Momiji, it would be one thing, but once fully transformed
into demonkin, they are no longer human but demons
themselves--

parameters:
The ones turned into demons had their human lives destroyed
by Gyoun's hand and were forced into a fate of living as
demons against their will... Do not think of it as killing
people. Think of it as saving them from the evil path of
demons... It's easier on the conscience that way.

parameters:
...Yeah, I'll try to think of it that way. Thank you,
Masaki-chan.

parameters:
I can't forgive Gyoun even more now. I will make sure he
pays for his crimes.

parameters: The ground has started shaking again!? We must hurry...!

parameters: Let's go put an end to this cursed ritual started by Gyoun!

parameters: --Karin and the four others have stormed into Mount Fuji!

parameters:
The bridge over the river is under repair. You cannot
proceed further, so it would be best to return to Edo.

parameters: (Oh dear, what a shame... I'll try again next time.)

parameters:
(It looks like we can climb Mount Fuji from here. But it
seems to be off-limits.)

parameters:
(It seems I can't go any deeper into the forest because a
large tree is blocking the way...)

parameters:
Yugiri: "...You're late, Karin! I've been waiting here for
\V[137] days, you know?"

parameters:
Karin: "I... I'm so sorry, Yugiri-chan! I really apologize
for making you wait!"

parameters:
Yugiri: "...Before we head to Suranamu Village, there's a
place I'd like to stop by. Is that okay?"

parameters: Karin: "Yes... (Is this... the shogunate's garrison?)"

parameters:
Karin: "Whose grave is this that you're offering flowers
to...?"

parameters:
Yugiri: "It's the grave of my master—the former head of the
Iga ninja and his comrades. They fought demons here at this
garrison half a year ago and were... killed by the demons.
Nearly 40 of our comrades as well."

parameters:
Karin: "Is that so? I remember hearing that many of the Iga
ninja were decimated by demons... So this was where that
battle took place?"

parameters:
Yugiri: "He was a skilled man, but the enemy was a
malevolent demon. He was killed and never returned. Since
then... it's been since then that the shogunate recognized
the existence of demons and we Iga ninja were tasked with
searching for and defeating them—"

parameters:
Karin: "So, the reason why only the magistrate's office has
been chasing me until now is..."

parameters:
Yugiri: "Because we, the elite Iga ninja, were preoccupied
with dealing with demons. In a way, the fact that Karin was
left at large is also related to the demons. If the Iga
ninja had been in charge of the Mouse Komachi from the start,
we might have captured you quite quickly."

parameters:
Karin: "Right... I managed to escape because it was only the
magistrate's office, but if from the beginning it had been
Yugiri-chan and the other ninja in charge of security, I
might have been caught right away... Let me also pay my
respects."

parameters:
--Karin and Yugiri joined their hands in prayer before the
grave in silence.

parameters:
Yugiri: "Now that we've paid our respects at the grave,
let's hurry to Suranamu Village."

parameters:
Yugiri: "Alright, let's go, Karin--Suranamu Village is just
ahead."

parameters: --Yugiri and Momiji have joined the party!

parameters: ...What? Are you planning to return to Edo, Karin?

parameters:
We'll be waiting here. Please come back after you've
finished your business in Edo.

parameters:
...Honestly, I'm not fond of this village. If you're going
in, I'll wait here. I'll only join the fight when it's time
to face the enemy.

parameters:
Are you taking a detour again...? Isn't there anything else
to do? I'll be waiting here, so hurry back.

parameters:
Karin! Now is not the time for detours! We must hurry to
Edo!

parameters:
...Hmm? Are we making a detour to such a remote village?
We'll be waiting outside.


displayName: Weapon Shop

parameters: This is the armory. Is there anything you desire?

characterName: !Chest


displayName: Tool Shop

parameters: \c[27]Number of times had sex +1, Creampie +1, Lewdness +3\c[0]


displayName: Karin's Home

parameters:
(Hmm... I should take care of my needs before heading
out...)

parameters:
--Karin lifted the hem of her kimono and straddled the
toilet.

parameters: (...Phew. That's refreshing. Alright, time to head out.)

parameters:
No... The semen he came inside is dripping out... I have to
wipe it off...

parameters:
--Karin scooped out the semen with her finger and wiped it
off with a tissue.

parameters: (...I haven't had my period since then... Could it be...)

parameters:
Masturbate (Lewdness +5)
Do nothing

parameters: 自慰をする（淫乱度＋５）

parameters:
Masturbate (Lewdness +5)
Use a zucchini (Lewdness +10)
Do nothing

parameters: 自慰をする（淫乱度＋５）

parameters: ずいき使用（淫乱度＋１０）

parameters:
If you are a virgin, you will lose your virginity. Is that
okay?

parameters: Yes No

parameters:
My pussy... it's throbbing and hurts... Maybe my hymen has
been torn...

parameters: \c[2]--Karin lost her virginity through masturbation...\c[0]

parameters: \c[27]Masturbation +1, Lewdness +10\c[0]

parameters:
Masturbate (Lewdness +5)
Use Zucchini (Lewdness +10)
Do nothing

parameters: 自慰をする（淫乱度＋５）

parameters: ずいき使用（淫乱度＋１０）

parameters: ...I've soiled the futon again. I need to dry it out.

parameters:
Today is day \V[31]. Night hawk extension count × \V[161]
Pleasure quarter extension count × \V[162]

characterName: !Flame

parameters:
--Shall we take a day off? (Recover stamina. One day will
pass.)

parameters:
Rest
Not resting yet

parameters:
--Shall we take a day off today? (Recover stamina. One day
will pass.)

parameters:
Fish Caught \V[58]x, Ambush Count \V[55]x, Nightcrawl Clients \V[51]x,
Brothel Clients \V[42]x, Children \V[18]x

parameters:
Would you like to change the heart display while walking?
(Currently Displayed)

parameters: Show Hide

parameters:
Would you like to change the heart display while walking?
(Currently hidden)

parameters:
[Note: Lewd titles are trophy-like and do not affect any
ability scores.]

parameters:
--Would you like to change the player-sama's name? Currently
\c[17]【\V[181]】\c[0]

parameters:
Change it
Do not change

parameters: Your name has been changed to\c[17]【\V[181]】\c[0]sama!

parameters:
On her futon at home... Karin was unable to sleep, lost in
oblivion as she repeatedly masturbated.

parameters: Noo... Why am I comforting myself like this...?

parameters:
The futon was soaked with love juices after a whole night of
continuous masturbation.

parameters: No! Again? I'm coming...! I'm gonna cum!!

parameters:
Stirring her petals with her fingers, Karin quickened her
heartbeat. Her entire body convulsed as she reached climax--

parameters: Hooahh! I'm cumming!? Uhh, aahhh~~~n!!\I[15]

parameters:
Karin reached climax, squirting from her secret place. Her
body shook violently as she gasped for breath.

parameters:
Karin looked on with an empty expression at the love juices
dripping from her crotch.

parameters:
(This isn't right... My own fingers aren't enough to satisfy
me...)

parameters:
Even after climaxing, her body craved sexual pleasure again.
Her mind, having forgotten even to eat or sleep, had no
rationality left.

parameters:
The love juices overflowing from Karin's crotch--she felt as
if her entire body was boiling from head to toe.

parameters:
I want a dick...\I[15]Right now... I want it stirring inside
my vagina...\I[15]

parameters: Be swept away by lust \c[10]【Lewd End】\c[0]

parameters: 性欲に流される\c[10]【淫乱エンド】\c[0]

parameters: --! Huh!? What am I thinking right now...!?

parameters: --Karin snapped back to her senses just in time!

parameters:
Ugh! No, I mustn't...! Pull yourself together, Karin! If I
go outside like this, I'll really lose my mind!

parameters:
Karin slapped her cheeks hard to bring herself back to
reality--

parameters:
(This is bad, very bad... I was about to walk out naked into
the streets. I should take a cold water bath to cool down
this heat.)

parameters:
Brrr! It's cold this season--! But it feels like I've woken
up a bit...

parameters:
--Karin took a bath to cool down her body and forced herself
to go to bed.

parameters:
I wonder if I should display the ukiyo-e painting I had
made?

parameters:
Decorate
Do not decorate

parameters:
\c[17]Click on the ukiyo-e painting on the wall to enlarge
it.\c[0]

parameters:
--\c[17]Gained 【100 mon】!\c[0] \c[17]【You can obtain money
and items by examining the sake barrels.】\c[0]