Пое ошаби как найти

Oshabi, Avatar of the Grove

Oshabi, Avatar of the Grove

Location(s) The Sacred Grove

Oshabi, Avatar of the Grove is the final boss of the Harvest mechanic .

To encounter this boss, players must use a Sacred Blossom in the map device. These items are dropped randomly by T4 Harvest monsters: Ersi, Mother of Thorns, Janaar, the Omen, and Namharim, Born of Night.

When she spawns within The Grove, there will be an interactable tree in the middle of The Grove,[confirmation needed because of 3.14 change], and players must click the tree to begin the encounter.

Defeating her adds five additional slots to the Horticrafting Station.

Abilities[]

Items found from this monster

Item Lvl.
Abhorrent InterrogationQuality: +20%
Evasion: (178-218)
Energy Shield: (35-43)
Requires Level 45, 35 Dex, 35 Int(100-150)% increased Evasion and Energy Shield
(5-7)% increased Attack and Cast Speed
(20-25)% chance to inflict Withered for 2 seconds on Hit
Enemies take 4% increased Elemental Damage from your Hits for
each Withered you have inflicted on them
Your Hits cannot Penetrate or ignore Elemental Resistances
“We have methods of interrogation the Inquisitors only dream of.”
– Marcus, Brotherhood Liaison
45
Witchhunter’s JudgmentStaff
Quality: +20%
Physical Damage: 57.6-174
Critical Strike Chance: 6.50%
Attacks per Second: 1.15
Weapon Range: 13
Requires Level 68, 89 Str, 89 Int+18% Chance to Block Attack Damage while wielding a StaffGrants Level 20 Brandsurge Skill
Brand Skills have (50-100)% increased Duration
The pyre is never wasted on just one heretic.
68
Forbidden ShakoQuality: +20%
Armour: 171
Energy Shield: 33
Requires Level 68, 59 Str, 59 IntSocketed Gems are Supported by Level (15-25) <random Support Gem>
Socketed Gems are Supported by Level (15-25) <random Support Gem>
+(25-30) to all Attributes
The Azmeri must never touch the Tears of Maji, lest Viridi weep.
68
Law of the WildsClaw
Quality: +20%
Physical Damage: 34.8-66
Critical Strike Chance: (7.32%-7.68%)
Attacks per Second: (1.84-1.92)
Weapon Range: 11
Requires Level 62, 131 Dex, 95 Int1.6% of Physical Attack Damage Leeched as Life20% chance to Trigger Level 25 Summon Spectral Wolf on Critical Strike with this Weapon
(15-20)% increased Attack Speed
(22-28)% increased Critical Strike Chance
+(15-25)% to Global Critical Strike Multiplier
The strong survive. The strongest thrive.
62

Previous Iterations[]

During the Harvest league, Oshabi would transform into her tree avatar – Heart of the Grove – after harvesting the first T4 seed. The Heart had a counter that went up to 100 and ticked up after each ‘growth cycle’ (seed cache being clicked) in a red (level 78+) map. When the counter reached 100, the tree she transformed into became interactable to start the boss fight.

Harvest did not go core after the Harvest league and was only reintroduced in Version 3.13.0 with major changes. In that version, the Heart of the Grove would sometimes replace normal Harvest encounters with a low probability.

As of Version 3.14.0, T4 Harvest monsters can drop a Sacred Blossom which creates a portal to the boss fight when used in the map device.

Version history[]

Version Changes
3.14.0
  • The Heart of the Grove encounter will no longer appear in place of a normal Harvest encounter. Instead, it can now be accessed through a Sacred Blossom map fragment that sometimes drops from Tier 4 Harvest bosses.
3.13.0
  • Harvest has been added to the core game and has been vastly reworked. It no longer contains a garden-building component, nor a permanent garden of your own. Instead, you now have a chance to discover a portal to an established Sacred Grove in maps, which contains several different harvestable plots.
  • On very rare occasions, you’ll be able to harvest the Heart of the Grove and fight the Avatar of the Grove.
3.11.1d
  • Fixed a bug where the Sacred Ashes degeneration could persist after the Avatar of the Grove encounter was completed.
3.11.1b
  • Fixed additional bugs that could cause the Avatar of the Grove to fail to transition to another phase of the encounter.
3.11.0
  • Introduced to the game.

Чтобы узнать о неигровом персонаже, см. Ошаби.

Ошаби, Воплощение Рощи

Ошаби, Воплощение Рощи

Расположение Священная роща (область)

Ошаби, Воплощение Рощи — это последний босс механики Жатва.

Предметы, выпадаемые с этого монстра

Предмет Ур.
Омерзительный допросУклонение: (162-227)
Энерг. щит: (34-47)
Требуется Уровень 45, 35 Ловк, 35 Инт(100-150)% увеличение уклонения и энергетического щита
(5-7)% повышение скорости атаки и сотворения чар
(20-25)% шанс наложить Истощение на 2 секунды при нанесении удара
Враги получают увеличенный на 4% урон от стихий от ваших ударов за
каждый наложенный вами на них эффект Истощения
Ваши удары не могут пробивать или игнорировать сопротивления стихиям
“У нас есть методы допроса, о которых инквизиторы только мечтают”.
– Маркус, связной Братства
45
Запрещённый киверБроня: (143-161)
Энерг. щит: (29-33)
Требуется Уровень 68, 59 Сила, 59 ИнтРазмещённые камни усилены <случайным камнем поддержки> (1-10) уровня
Размещённые камни усилены <случайным камнем поддержки> (25-35) уровня
+(25-30) ко всем характеристикам
Чтобы Вириди не плакала, азмири никогда не должны прикасаться к Слезам Маджи.
68
Правосудие охотника на ведьмПосох
Физический урон: 48-145
Шанс критического удара: 6.50%
Атак в секунду: 1.15
Дальность оружия: 13
Требуется Уровень 68, 89 Сила, 89 Инт+18% шанс блокировать урон от атак с посохом в рукахДарует умение Перегрузка клейм 20 уровня
(50-100)% увеличение длительности умений клейма
Костёр никогда не тратят только на одного еретика.
68
Закон дикой природыКогти
Физический урон: 29-55
Шанс критического удара: (7.32%-7.68%)
Атак в секунду: (1.84-1.92)
Дальность оружия: 11
Требуется Уровень 62, 131 Ловк, 95 Инт1.6% физического урона от атак похищается в виде здоровья20% шанс вызвать срабатывание Призыва призрачного волка 25 уровня при нанесении критического удара этим оружием
(15-20)% повышение скорости атаки
(22-28)% повышение шанса критического удара
+(15-25)% к глобальному множителю критического удара
62
metadata id monster type id
Metadata/Monsters/LeagueHarvest/Oshabi/OshabiBoss HarvestOshabiBoss

История изменений[]

Версия Изменения
3.11.2b
  • Священная роща и её содержимое были убраны.
3.11.0
  • Добавлено в игру.

Oshabi, Avatar of the Grove

Oshabi, Avatar of the Grove

Location(s) The Sacred Grove

Oshabi, Avatar of the Grove is the final boss of the Harvest mechanic .

To encounter this boss, players must use a Sacred Blossom in the map device. These items are dropped randomly by T4 Harvest monsters: Ersi, Mother of Thorns, Janaar, the Omen, and Namharim, Born of Night. Upon entering The Sacred Grove this way, there will be an interactable tree in the middle of The Grove, and players must click the tree to begin the encounter.

Abilities

  • Default Projectile spell: Physical Damage converted to Fire, 50% chance to Ignite.
  • Projectile Cascade: Fires several projectiles in a row, tracking the player.
  • Vine Cascade: causes several Vines to fall and slam the player.
  • Teleport: disappears and reappears along the vines linked to the central tree.
  • Summon Groveguard Vine: creates a sentient vine that can slam or swipe. Applies Bleeding on hit.
  • Summon Harvest monsters

Orange (Sacred)

  • Vine Barrier: Creates a cage of Root Walls. The player must destroy one of these vines to escape. A patch of Sacred Suffering ground degen grows inside the cage continuously until the cage is broken. This patch of Sacred Suffering persists through the entire fight.
    • Sacred Suffering – stacks up to 10 while player is on the ground effect, and persists for a duration
    • Sacred Ashes – applies only while the player is on the ground effect.

Purple (Wild)

Blue (Primal)

  • Projectiles and Vine Cascade: Physical Damage converted to Cold and Lightning, and 33% chance to Shock/Freeze on Hit.
  • Volatile Orchard: creates several blue Volatiles that chase the player and explode.

Green (Vivid)

  • Projectiles and Vine Cascade: Physical Damage partially converted to Chaos, and Poisons on Hit.
  • Vine Hammer: Charges up a bulbous root before slamming, repeating two larger pulsating shockwave in an area, and applies Poison on Hit.

Drops

Items found from this monster

Item Drop
Level
Required level
Abhorrent InterrogationEvasion: (162-227)
Energy Shield: (34-47)
Requires Level 45, 35 Dex, 35 Int(100-150)% increased Evasion and Energy Shield
(5-7)% increased Attack and Cast Speed
(20-25)% chance to inflict Withered for 2 seconds on Hit
Enemies take 4% increased Elemental Damage from your Hits for
each Withered you have inflicted on them
Your Hits cannot Penetrate or ignore Elemental Resistances
“We have methods of interrogation the Inquisitors only dream of.”
– Marcus, Brotherhood Liaison
N/A 45
Forbidden ShakoArmour: (143-161)
Energy Shield: (29-33)
Requires Level 68, 59 Str, 59 IntSocketed Gems are Supported by Level (1-10) <random Support Gem>
Socketed Gems are Supported by Level (25-35) <random Support Gem>
+(25-30) to all Attributes
The Azmeri must never touch the Tears of Maji, lest Viridi weep.
N/A 68
Law of the WildsClaw
Physical Damage: 29-55
Critical Strike Chance: (7.32%-7.68%)
Attacks per Second: (1.84-1.92)
Weapon Range: 11
Requires Level 62, 131 Dex, 95 Int1.6% of Physical Attack Damage Leeched as Life20% chance to Trigger Level 25 Summon Spectral Wolf on Critical Strike with this Weapon
(15-20)% increased Attack Speed
(22-28)% increased Critical Strike Chance
+(15-25)% to Global Critical Strike Multiplier
The strong survive. The strongest thrive.
N/A 62
The Bitter BlossomThe Bitter Blossom card art.png3Level 21 Chaos Gem
Quality: +23%
Corrupted
The pain you feel is of no consequence, it is evolution, to be made whole within something greater.
72 1
Witchhunter’s JudgmentStaff
Physical Damage: 48-145
Critical Strike Chance: 6.50%
Attacks per Second: 1.15
Weapon Range: 13
Requires Level 68, 89 Str, 89 Int+18% Chance to Block Attack Damage while wielding a StaffGrants Level 20 Brandsurge Skill
Brand Skills have (50-100)% increased Duration
The pyre is never wasted on just one heretic.
N/A 68
The AspirantThe Aspirant card art.png5Item
Elevated Item
Influenced Item
Those Exiles that survive Wraeclast
dream not of home, but of power.
81 1
Sacred Crystallised LifeforceStack Size: 10Can be used at the Horticrafting bench in your hideout.
Shift click to unstack.
1 1

Previous Iterations

During the Harvest league, Oshabi would transform into her tree avatar – Heart of the Grove – after harvesting the first T4 seed. The Heart had a counter that went up to 100 and ticked up after each ‘growth cycle’ (seed cache being clicked) in a red (level 78+) map. When the counter reached 100, the tree she transformed into became interactable to start the boss fight.

Harvest did not go core after the Harvest league and was only reintroduced in Version 3.13.0 with major changes. In that version, the Heart of the Grove would sometimes replace normal Harvest encounters with a low probability.

As of Version 3.14.0, T4 Harvest monsters can drop a Sacred Blossom which creates a portal to the boss fight when used in the map device. This encounter can no longer have map modifiers or Delirium layers as a result of this change.

Version history

Version Changes
3.15.1
  • Completing the Heart of the Grove Harvest encounter for the first time now unlocks 5 extra Horticrafting Station crafting slots for those in the area at both the start and end of the fight, instead of just the instance owner.
3.14.0
  • The Heart of the Grove encounter will no longer appear in place of a normal Harvest encounter. Instead, it can now be accessed through a Sacred Blossom map fragment that sometimes drops from Tier 4 Harvest bosses.
  • Completing the Heart of the Grove encounter for the first time now unlocks 5 extra Horticrafting StationHideout ItemCreates an object in your hideout crafting slots, allowing you to store up to a maximum of 15 crafting options.
3.13.0
  • Harvest has been added to the core game and has been vastly reworked. It no longer contains a garden-building component, nor a permanent garden of your own. Instead, you now have a chance to discover a portal to an established Sacred Grove in maps, which contains several different harvestable plots.
  • On very rare occasions, you’ll be able to harvest the Heart of the Grove and fight the Avatar of the Grove.
3.11.1d
  • Fixed a bug where the Sacred Ashes degeneration could persist after the Avatar of the Grove encounter was completed.
3.11.1b
  • Fixed additional bugs that could cause the Avatar of the Grove to fail to transition to another phase of the encounter.
3.11.0
  • Introduced to the game.

ru:Ошаби, Воплощение Рощи

# root travel
conditions Generic1IsInState=0 IgnoresTaunt
{
# pick destination
conditions_per_skill ForceTargetOshabiRoot TargetInSector=(sector::allow_root_travel) TargetCurrentColourIsAtOrAboveState=1 !TargetOnCrownOfThornsGround
{
# pick while any colour
EmptyActionSpell5 OshabiPickDestinationEAS5NoLineOfSight 1000 IAmOnCrownOfThornsGround FightIsInState=0 TargetNotInRange=85
EmptyActionSpell5 OshabiPickDestinationEAS5NoLineOfSight 100 FightIsInState=0 TargetNotInRange=85 TargetInRange=135
# pick while any colour not orange
conditions FightIsInState=0 CurrentColourIsNotInState=1
{
EmptyActionSpell5 OshabiPickDestinationEAS5NoLineOfSight 1500 TargetIsBelowState=(state::destination_bias, 1) TargetNotInRange=85 TargetInRange=135
EmptyActionSpell5 OshabiPickDestinationEAS5NoLineOfSight 200 TargetIsBelowState=(state::destination_bias, 2) TargetNotInRange=85 TargetInRange=135
EmptyActionSpell5 OshabiPickDestinationEAS5NoLineOfSight 200 TargetIsBelowState=(state::destination_bias, 3) TargetNotInRange=85 TargetInRange=135
}
}
# submerge/emerge
EmptyActionSpell OshabiSubmergeEAS -1 FightIsInState=1 ForceTargetSelf
EmptyActionSpell2 OshabiEmergeEAS2 -1 FightIsInState=3 ForceTargetSelf
}
# fight start with cascade
EmptyActionSpell4 HarvestOshabiEASVineCrossCascade -1 IHaveNotUsedSkill ForceTargetEnemy TargetIsPlayer TargetInRange=90
# spammables/medium cooldowns
conditions FightIsInState=0 IgnoresTaunt
{
EmptyActionSpell4 HarvestOshabiEASProjSpam 200 ForceTargetEnemy TargetNotNear TargetInRange=90
EmptyActionSpell4 HarvestOshabiEASProjSpam 300 ForceTargetEnemy TargetNotNear TargetIsPlayer TargetInRange=90
EmptyActionSpell4 HarvestOshabiEASProjSpamBarrage 600 OnLessThanPercentLife=90 ForceTargetEnemy TargetIsPlayer TargetInRange=90
EmptyActionSpell4 HarvestOshabiEASSummonDouble 150 NotOnFullLife ForceTargetEnemy TargetInRange=80
EmptyActionSpell4 HarvestOshabiEASSummonDouble 100 NotOnFullLife ForceTargetEnemy TargetInRange=80 TargetIsPlayer
EmptyActionSpell4 HarvestOshabiEASSummonTriple 155 NotOnFullLife ForceTargetEnemy TargetInRange=80
EmptyActionSpell4 HarvestOshabiEASSummonTriple 100 NotOnFullLife ForceTargetEnemy TargetInRange=80 TargetIsPlayer
GeometryTrigger HarvestOshabiCombatVinesGTLeftNear 100 OnLessThanPercentLife=95 ForceTargetEnemy TargetIsPlayer TargetIsLeftOfMe TargetInRange=45
GeometryTrigger HarvestOshabiCombatVinesGTRightNear 100 OnLessThanPercentLife=95 ForceTargetEnemy TargetIsPlayer TargetIsRightOfMe TargetInRange=45
GeometryTrigger HarvestOshabiCombatVinesGTLeftFar 100 OnLessThanPercentLife=95 ForceTargetEnemy TargetIsPlayer TargetIsLeftOfMe TargetNotInRange=45 TargetInRange=70
GeometryTrigger HarvestOshabiCombatVinesGTRightFar 100 OnLessThanPercentLife=95 ForceTargetEnemy TargetIsPlayer TargetIsRightOfMe TargetNotInRange=45 TargetInRange=70
EmptyActionSpell4 HarvestOshabiEASVineCrossCascade 400 ForceTargetEnemy TargetIsPlayer TargetNotInRange=30 TargetInRange=80
}
# ultimates
conditions FightIsInState=0 OnLessThanPercentLife=90 IgnoresTaunt
{
ChangeToStance2Immediate HarvestOshabiCTS2I 3000 IHaveNotUsedSkill CurrentColourIsInState=1 ForceTargetEnemy TargetInRange=60 CatarinaGraveyardIsInState=0
GeometryTrigger HarvestOshabiCyanBloomGT 3000 IHaveNotUsedSkill CurrentColourIsInState=2 ForceTargetEnemy TargetIsPlayer TargetInRange=70
SummonSpecificMonsters HarvestOshabiSSMHammerVineInFront 1500 IHaveNotUsedSkill CurrentColourIsInState=3 ForceTargetEnemy TargetIsPlayer TargetNotInRange=40 TargetInRange=80
SummonSpecificMonsters HarvestOshabiSSMHammerVineBehind 1500 IHaveNotUsedSkill CurrentColourIsInState=3 ForceTargetEnemy TargetIsPlayer TargetInRange=40
OshabiOrbProjectile OshabiOrbProjectile 3000 IHaveNotUsedSkill CurrentColourIsInState=4 ForceTargetEnemy TargetIsPlayer TargetInRange=85
ChangeToStance2Immediate HarvestOshabiCTS2I 1500 CurrentColourIsInState=1 ForceTargetEnemy TargetInRange=60 CatarinaGraveyardIsInState=0
GeometryTrigger HarvestOshabiCyanBloomGT 1500 CurrentColourIsInState=2 ForceTargetEnemy TargetIsPlayer TargetInRange=70
SummonSpecificMonsters HarvestOshabiSSMHammerVineInFront 1500 CurrentColourIsInState=3 ForceTargetEnemy TargetIsPlayer TargetNotInRange=30 TargetInRange=80
SummonSpecificMonsters HarvestOshabiSSMHammerVineBehind 1500 CurrentColourIsInState=3 ForceTargetEnemy TargetIsPlayer TargetInRange=30
OshabiOrbProjectile OshabiOrbProjectile 1500 CurrentColourIsInState=4 ForceTargetEnemy TargetIsPlayer TargetInRange=75
}
# teleport slam
conditions FightIsInState=0 OnLessThanPercentLife=33 IgnoresTaunt
{
#Teleport OshabiTeleportSlam 2000 ForceTargetEnemy TargetIsPlayer TargetNotInSector=(sector::no_teleport_slam) TargetNotInRange=70 TargetInRange=110 !TargetOnCrownOfThornsGround
}
stance stance2
# crown of thorns stance
DoNothing 100 OnlyLastTarget ForceTargetEnemy IgnoresTaunt
ChangeToStance1Immediate HarvestOshabiCTS1I -1 ForceTargetSelf Generic4IsAtOrAboveState=2 IgnoresTaunt
ChangeToStance1Immediate HarvestOshabiCTS1I 100 ForceTargetSelf IgnoresTaunt CurrentColourIsNotInState=1

Object Type

version 2
extends "Metadata/Monsters/Monster"

Pathfinding
{
	immobile = true
}

Actor
{
	basic_action = "Emerge"
}

Positioned
{
	force_placement = true
}

StateMachine
{
	define_shared_state =
	"
		visible;
		emerge;
		travelling;
		current_colour;
		minimap_icon;
		repeat_fight;
		in_channel_state;
	"
	// colour - 0:none, 1:orange, 2:blue, 3:green, 4:red 
	// repeat_fight: 0: first time fight, 1: second time fight+
	
}

MinimapIcon
{
	icon = "HarvestOshabiBoss" 
}

Stats
{
	map_hidden_monster_life_+%_final = 2000
}

Life
{
	corpse_usable = false
}

Preload
{
	preload_object = "Metadata/MiscellaneousObjects/Harvest/RootPath/RootPathOshabi"
}

Object Type Codes

version 2
extends "Metadata/Monsters/Monster"

Functions
{
	DispatchEmergeTextAudio =
	"
		IfState( repeat_fight, 0, { PlayTextAudio( HarvestBossIntroTwo , Metadata/Monsters/LeagueHarvest/Oshabi/OshabiBoss, 0); },
		{
			DoRandom( { PlayTextAudio( HarvestReBossIntroOne , Metadata/Monsters/LeagueHarvest/Oshabi/OshabiBoss, 0); }, { PlayTextAudio( HarvestReBossIntroTwo , Metadata/Monsters/LeagueHarvest/Oshabi/OshabiBoss, 0); }, { PlayTextAudio( HarvestReBossIntroThree , Metadata/Monsters/LeagueHarvest/Oshabi/OshabiBoss, 0); }, { PlayTextAudio( HarvestReBossIntroFour , Metadata/Monsters/LeagueHarvest/Oshabi/OshabiBoss, 0); } );
		} );
	"

	DispatchDeathTextAudio =
	"
		IfState( repeat_fight, 0,
		{
			DoRandom( { PlayTextAudio( HarvestBossDeathOne , Metadata/Monsters/LeagueHarvest/Oshabi/OshabiBoss, 0); }, { PlayTextAudio( HarvestBossDeathTwo , Metadata/Monsters/LeagueHarvest/Oshabi/OshabiBoss, 0); } );
		},
		{
			DoRandom( { PlayTextAudio( HarvestReBossDeathOne , Metadata/Monsters/LeagueHarvest/Oshabi/OshabiBoss, 0); }, { PlayTextAudio( HarvestReBossDeathTwo , Metadata/Monsters/LeagueHarvest/Oshabi/OshabiBoss, 0); }, { PlayTextAudio( HarvestReBossDeathThree , Metadata/Monsters/LeagueHarvest/Oshabi/OshabiBoss, 0); }, { PlayTextAudio( HarvestReBossDeathFour , Metadata/Monsters/LeagueHarvest/Oshabi/OshabiBoss, 0); } );
		} );
	"

	DoEmergeEffects =
	"
		AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_anger.epk );
		Delay( 1.0,
		{
			RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_anger.epk );
			AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_anger_idle.epk );
		} );
	"

	AddCascadeVines =
	"
		IfState( current_colour, 1,
		{
			AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/vine_cascade/anger_cascade_start.ao, cascade_left );
			PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/vine_cascade/anger_cascade_start.ao, oshabi_cascade_intro_01 );
			AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/vine_cascade/anger_cascade_start_flip.ao, cascade_right );
			PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/vine_cascade/anger_cascade_start_flip.ao, oshabi_cascade_intro_01 );
		} );
		IfState( current_colour, 2,
		{
			AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/vine_cascade/bulb_cascade_start.ao, cascade_left );
			PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/vine_cascade/bulb_cascade_start.ao, oshabi_cascade_intro_01 );
			AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/vine_cascade/bulb_cascade_start_flip.ao, cascade_right );
			PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/vine_cascade/bulb_cascade_start_flip.ao, oshabi_cascade_intro_01 );
		} );
		IfState( current_colour, 3,
		{
			AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/vine_cascade/scale_cascade_start.ao, cascade_left );
			PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/vine_cascade/scale_cascade_start.ao, oshabi_cascade_intro_01 );
			AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/vine_cascade/scale_cascade_start_flip.ao, cascade_right );
			PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/vine_cascade/scale_cascade_start_flip.ao, oshabi_cascade_intro_01 );
		} );
		IfState( current_colour, 4,
		{
			AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/vine_cascade/thorn_cascade_start.ao, cascade_left );
			PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/vine_cascade/thorn_cascade_start.ao, oshabi_cascade_intro_01 );
			AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/vine_cascade/thorn_cascade_start_flip.ao, cascade_right );
			PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/vine_cascade/thorn_cascade_start_flip.ao, oshabi_cascade_intro_01 );
		} );
	"

	ActivateLight =
	"
		IfState( current_colour, 1, { PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/boss_light.ao, idle_anger ); } );
		IfState( current_colour, 2, { PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/boss_light.ao, idle_bulb ); } );
		IfState( current_colour, 3, { PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/boss_light.ao, idle_scale ); } );
		IfState( current_colour, 4, { PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/boss_light.ao, idle_thorn ); } );
	"

	AttachCastParticles_L =
	"
		IfState( current_colour, 1,
		{
			AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/cast_FX_L.epk );
			Delay( 1.0, { RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/cast_FX_L.epk ); } );
		} );
		IfState( current_colour, 2,
		{
			AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/cast_FX_L_blue.epk );
			Delay( 1.0, { RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/cast_FX_L_blue.epk ); } );
		} );
		IfState( current_colour, 3,
		{
			AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/cast_FX_L_green.epk );
			Delay( 1.0, { RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/cast_FX_L_green.epk ); } );
		} );
		IfState( current_colour, 4,
		{
			AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/cast_FX_L_red.epk );
			Delay( 1.0, { RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/cast_FX_L_red.epk ); } );
		} );
	"

	AttachCastParticles_R =
	"
		IfState( current_colour, 1,
		{
			AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/cast_FX_R.epk );
			Delay( 1.0, { RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/cast_FX_R.epk ); } );
		} );
		IfState( current_colour, 2,
		{
			AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/cast_FX_R_blue.epk );
			Delay( 1.0, { RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/cast_FX_R_blue.epk ); } );
		} );
		IfState( current_colour, 3,
		{
			AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/cast_FX_R_green.epk );
			Delay( 1.0, { RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/cast_FX_R_green.epk ); } );
		} );
		IfState( current_colour, 4,
		{
			AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/cast_FX_R_red.epk );
			Delay( 1.0, { RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/cast_FX_R_red.epk ); } );
		} );
	"

	AttachCastParticles_LR =
	"
		IfState( current_colour, 1,
		{
			AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/cast_FX_LR.epk );
			Delay( 1.0, { RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/cast_FX_LR.epk ); } );
		} );
		IfState( current_colour, 2,
		{
			AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/cast_FX_LR_blue.epk );
			Delay( 1.0, { RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/cast_FX_LR_blue.epk ); } );
		} );
		IfState( current_colour, 3,
		{
			AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/cast_FX_LR_green.epk );
			Delay( 1.0, { RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/cast_FX_LR_green.epk ); } );
		} );
		IfState( current_colour, 4,
		{
			AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/cast_FX_LR_red.epk );
			Delay( 1.0, { RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/cast_FX_LR_red.epk ); } );
		} );
	"
}

Render
{
	selection_size_override = "100, 100, 160"
	oshabi_colour_lerp_sec = 3.0
}

StateMachine
{
	create_state_minimap_icon_0 = "HideMinimapIcon();"
	on_or_create_state_minimap_icon_1 = "ShowMinimapIcon();"
	on_or_create_state_minimap_icon_2 = "HideMinimapIcon();"

	//create_state_emerge_0 =
	//"
	//	PlayAnimation( emerge_tree_01 );
	//	PauseAnimation();
	//"
	on_or_create_state_emerge_1 =
	"
		Delay( 4.5,
		{
			SetCustomCameraSpeed( 3.0 );
			ClearCameraZoomNodes();
		} );
		Delay( 5.5, { RemoveCustomCameraSpeed(); } );
	"

	on_or_create_state_travelling_0 = "EnableRendering();"
	on_or_create_state_travelling_1 = "DisableRendering();"
	on_change_state_current_colour = "Call( ActivateLight );"

	on_state_current_colour_1 =
	"
		IfState( emerge, 1, { Call( DoEmergeEffects ); } );
	"

	create_state_current_colour_0 = "AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/boss_light.ao, aux_light_attach );"

	create_state_current_colour_1 =
	"
		AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_anger_idle.epk );
		AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/boss_light.ao, aux_light_attach );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/boss_light.ao, idle_anger );
	"

	create_state_current_colour_2 =
	"
		AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_anger_idle.epk );
		AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/boss_light.ao, aux_light_attach );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/boss_light.ao, idle_bulb );
	"

	create_state_current_colour_3 =
	"
		AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_anger_idle.epk );
		AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/boss_light.ao, aux_light_attach );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/boss_light.ao, idle_scale );
	"

	create_state_current_colour_4 =
	"
		AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_anger_idle.epk );
		AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/boss_light.ao, aux_light_attach );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/boss_light.ao, idle_thorn );
	"

	on_state_in_channel_state_0 = "DetachAllContainingText( /on_act/crown_of_thorns/ );"

	on_or_create_state_in_channel_state_1 =
	"
		AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/build_up_start.ao,  );
		AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/loop_body_vines.ao,  );
		AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/loop_vines.ao,  );
		AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/start_vines_02.ao,  );
		AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/start_vines_03.ao,  );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/build_up_start.ao, animate_start );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/loop_body_vines.ao, charge_range_start_v01_01 );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/loop_vines.ao, charge_range_start_v02_01 );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/start_vines_02.ao, charge_range_start_v03_01 );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/start_vines_03.ao, charge_range_start_v04_01 );
	"

	on_state_in_channel_state_2 =
	"
		DetachAllOfType( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/build_up_start.ao );
		AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/build_up_loop.ao,  );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/build_up_loop.ao, animate_idle );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/loop_body_vines.ao, charge_range_loop_v01_01 );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/loop_vines.ao, charge_range_loop_v02_01 );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/start_vines_03.ao, charge_range_loop_v03_01 );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/start_vines_03.ao, charge_range_loop_v04_01 );
	"

	create_state_in_channel_state_2 =
	"
		AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/build_up_loop.ao,  );
		AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/loop_body_vines.ao,  );
		AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/loop_vines.ao,  );
		AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/start_vines_02.ao,  );
		AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/start_vines_03.ao,  );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/build_up_loop.ao, animate_idle );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/loop_body_vines.ao, charge_range_loop_v01_01 );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/loop_vines.ao, charge_range_loop_v02_01 );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/start_vines_03.ao, charge_range_loop_v03_01 );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/start_vines_03.ao, charge_range_loop_v04_01 );
	"

	on_or_create_state_in_channel_state_3 =
	"
		DetachAllOfType( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/build_up_loop.ao );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/loop_body_vines.ao, charge_range_end_v01_01 );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/loop_vines.ao, charge_range_end_v02_01 );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/start_vines_03.ao, charge_range_end_v03_01 );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/start_vines_03.ao, charge_range_end_v04_01 );
	"

	create_state_in_channel_state_3 =
	"
		AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/loop_vines.ao,  );
		AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/loop_body_vines.ao,  );
		AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/start_vines_02.ao,  );
		AddAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/start_vines_03.ao,  );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/loop_body_vines.ao, charge_range_end_v01_01 );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/loop_vines.ao, charge_range_end_v02_01 );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/start_vines_03.ao, charge_range_end_v03_01 );
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/crown_of_thorns/start_vines_03.ao, charge_range_end_v04_01 );
	"
}

Life
{
	on_death =
	"
		Call( DispatchDeathTextAudio );
		DetachAllOfType( Metadata/Monsters/LeagueHarvest/Oshabi/attachments/OshabiFeathers_Boss.ao );
		DetachAllOfType( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/boss_light.ao );
		HideMeshSegments( arm_stringShape, bodyShape, cloth_lowerShape, clothShape, flowers_02Shape, hair_coinsShape, ropeShape, skullhatShape, wood_tabletsShape, Hair_baseShape, hairbackShape, L_hairShape, R_HairShape, flowers_01Shape, seatShape );
	"

	on_spawned_dead =
	"
		DetachAllOfType( Metadata/Monsters/LeagueHarvest/Oshabi/attachments/OshabiFeathers_Boss.ao );
		DetachAllOfType( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/boss_light.ao );
		HideMeshSegments( arm_stringShape, bodyShape, cloth_lowerShape, clothShape, flowers_02Shape, hair_coinsShape, ropeShape, skullhatShape, wood_tabletsShape, Hair_baseShape, hairbackShape, L_hairShape, R_HairShape, flowers_01Shape, seatShape );
	"
}

Actor
{
	on_start_Emerge = "Call( DispatchEmergeTextAudio );"
	on_start_OshabiOrbProjectile = "PlayTextAudio( HarvestBossCombatFour , Metadata/Monsters/LeagueHarvest/Oshabi/OshabiBoss, 0);"
	on_start_SummonSpecificMonsters = "PlayTextAudio( HarvestBossCombatOne , Metadata/Monsters/LeagueHarvest/Oshabi/OshabiBoss, 0);"
	on_start_ChangeToStance2Immediate = "PlayTextAudio( HarvestBossCombatTwo , Metadata/Monsters/LeagueHarvest/Oshabi/OshabiBoss, 0);"
}

Preload
{
	preload_animated_object = "Metadata/Effects/Spells/monsters_effects/LeagueHarvest/environment_fx/harvest_spores.ao"
	preload_animated_object = "Metadata/Effects/Spells/monsters_effects/LeagueHarvest/environment_fx/harvest_spores_anger.ao"
	preload_animated_object = "Metadata/Effects/Spells/monsters_effects/LeagueHarvest/environment_fx/harvest_spores_green.ao"
	preload_animated_object = "Metadata/Effects/Spells/monsters_effects/LeagueHarvest/environment_fx/harvest_spores_red.ao"
}

Animated
{
	on_summon_both_01 = "PlayTextAudio( HarvestBossCombatSix , Metadata/Monsters/LeagueHarvest/Oshabi/OshabiBoss, 0);"
	on_special_multiple_cast_01 = "PlayTextAudio( HarvestBossCombatFive , Metadata/Monsters/LeagueHarvest/Oshabi/OshabiBoss, 0);"

	// cast L/R epks
	on_cast_left_01 =
	"
		AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_cast_L.epk );
		Call( AttachCastParticles_L );
	"

	on_event_contact_for_cast_left_01 =
	"
		RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_cast_L.epk );
		AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_cast_L_fade.epk );
	"

	on_end_cast_left_01 = "RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_cast_L_fade.epk );"

	on_cast_right_01 =
	"
		AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_cast_R.epk );
		Call( AttachCastParticles_R );
	"

	on_event_contact_for_cast_right_01 =
	"
		RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_cast_R.epk );
		AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_cast_R_fade.epk );
	"

	on_end_cast_right_01 = "RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_cast_R_fade.epk );"

	on_event_fade_cast_in_LR =
	"
		AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_cast_LR.epk );
		Call( AttachCastParticles_LR );
	"

	on_event_fade_cast_out_LR =
	"
		RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_cast_LR.epk );
		AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_cast_LR_fade.epk );
		Delay( 1.0, { RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_cast_LR_fade.epk ); } );
	"

	on_event_fade_cast_in_L =
	"
		AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_cast_L.epk );
		Call( AttachCastParticles_L );
	"

	on_event_fade_cast_out_L =
	"
		RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_cast_L.epk );
		AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_cast_L_fade.epk );
		Delay( 1.0, { RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_cast_L_fade.epk ); } );
	"

	on_event_fade_cast_in_R =
	"
		AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_cast_R.epk );
		Call( AttachCastParticles_R );
	"

	on_event_fade_cast_out_R =
	"
		RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_cast_R.epk );
		AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_cast_R_fade.epk );
		Delay( 1.0, { RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_cast_R_fade.epk ); } );
	"

	// emerge and submerge
	on_emerge_roots_01 =
	"
		Call( ActivateLight );
		AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_emerge.epk );
		RemoveEffectPackAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/attachment_fade.epk, Metadata/Monsters/LeagueHarvest/Oshabi/attachments/OshabiFeathers_Boss.ao );
	"

	on_end_emerge_roots_01 = "RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_emerge.epk );"

	on_submerge_roots_01 =
	"
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/boss_light.ao, fade_out );
		AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_submerge.epk );
		AddEffectPackAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/attachment_fade.epk, Metadata/Monsters/LeagueHarvest/Oshabi/attachments/OshabiFeathers_Boss.ao );
	"

	on_end_submerge_roots_01 = "RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_submerge.epk );"

	// teleport
	on_submerge_emerge_roots_01 =
	"
		PlayAnimationAttached( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/on_act/boss_light.ao, fade_out );
		AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_submerge.epk );
	"

	on_event_remove_submerge_fx_for_submerge_emerge_roots_01 = "RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_submerge.epk );"

	on_event_contact_for_submerge_emerge_roots_01 =
	"
		Call( ActivateLight );
		AddEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_emerge.epk );
	"

	on_end_submerge_emerge_roots_01 = "RemoveEffectPack( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/EPKs/oshabi_emerge.epk );"
	// cascade vines
	on_event_rootfx_for_special_cast_02 = "Call( AddCascadeVines );"

	on_end_special_cast_02 =
	"
		DetachAllOfType( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/vine_cascade/anger_cascade_start.ao );
		DetachAllOfType( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/vine_cascade/bulb_cascade_start.ao );
		DetachAllOfType( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/vine_cascade/scale_cascade_start.ao );
		DetachAllOfType( Metadata/Effects/Spells/monsters_effects/LeagueHarvest/harvest_boss/final/vine_cascade/thorn_cascade_start.ao );
	"
}

-- srcDataSpectres.lua
minions["Metadata/Monsters/LeagueHarvest/Oshabi/OshabiBoss"] = {
    name = "Oshabi, Avatar of the Grove",
    life = 36,
    energyShield = 0.5,
    fireResist = 50,
    coldResist = 50,
    lightningResist = 50,
    chaosResist = 30,
    damage = 3,
    damageSpread = 0.2,
    attackTime = 1.995,
    attackRange = 10,
    accuracy = 1,
    skillList = {
        "OshabiSubmergeEAS",
        "OshabiEmergeEAS2",
        "OshabiPickDestinationEAS3",
        "HarvestOshabiEASProjSpam",
        "HarvestOshabiCyanBloomGT",
        "HarvestOshabiCyanBattleVineGT",
        "HarvestOshabiEASVineCrossCascade",
        "HarvestOshabiSSMHammerVineInFront",
        "HarvestOshabiSSMHammerVineBehind",
        "HarvestOshabiEASProjSpamBarrage",
        "HarvestOshabiEASSummonBoth",
        "HarvestOshabiEASSummonLeft",
        "HarvestOshabiEASSummonRight",
        "HarvestOshabiEASSummonDouble",
        "HarvestOshabiEASSummonTriple",
        "HarvestOshabiSSMCombatVineLeft",
        "HarvestOshabiSSMCombatVineRight",
        "HarvestOshabiSSMBattleVine",
        "HarvestOshabiSSMBattleVineTarget",
        "HarvestOshabiSSMCyanBattleVineTarget",
        "HarvestOshabiProjSpamOrange",
        "HarvestOshabiProjSpamRed",
        "HarvestOshabiProjSpamBlue",
        "HarvestOshabiProjSpamGreen",
        "HarvestOshabiCyanBloomSSM",
        "HarvestOshabiVineBarrierGT",
        "HarvestOshabiVineBarrierSSM",
        "HarvestOshabiCrownOfThornsSummonerDaemonSSM",
        "HarvestOshabiCombatVinesGTLeftNear",
        "HarvestOshabiCombatVinesGTLeftFar",
        "HarvestOshabiCombatVinesGTRightNear",
        "HarvestOshabiCombatVinesGTRightFar",
        "HarvestOshabiVineCascadeGS",
        "HarvestOshabiVineCascadeGS2",
        "HarvestOshabiVineCascadeGS3",
        "HarvestOshabiVineCascadeGS4",
        "HarvestOshabiVineCascadeGT1",
        "HarvestOshabiVineCascadeGT2",
        "HarvestOshabiVineCascadeGT3",
        "HarvestOshabiVineCascadeGT4",
        "OshabiOrbProjectile",
        "OshabiOrbProjectileMPSTrigger",
        "HarvestOshabiCrownOfThornsCentreMarkerSO",
        "HarvestOshabiCTS1I",
        "HarvestOshabiCTS2I",
        "OshabiPickDestinationEAS5NoLineOfSight",
        "OshabiTeleportSlam",
        "OshabiTeleportSlamGA",
        "OshabiTeleportSlamBloomEG",
    },
    modList = {
    },
}
-- srcDataSkillsspectre.lua
skills["OshabiSubmergeEAS"] = {
    name = "OshabiSubmergeEAS",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["OshabiEmergeEAS2"] = {
    name = "OshabiEmergeEAS2",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["OshabiPickDestinationEAS3"] = {
    name = "OshabiPickDestinationEAS3",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiEASProjSpam"] = {
    name = "HarvestOshabiEASProjSpam",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1.5,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiCyanBloomGT"] = {
    name = "HarvestOshabiCyanBloomGT",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 2.67,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiCyanBattleVineGT"] = {
    name = "HarvestOshabiCyanBattleVineGT",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiEASVineCrossCascade"] = {
    name = "HarvestOshabiEASVineCrossCascade",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 2.67,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiSSMHammerVineInFront"] = {
    name = "HarvestOshabiSSMHammerVineInFront",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Multicastable] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 2.5,
    baseFlags = {
        spell = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiSSMHammerVineBehind"] = {
    name = "HarvestOshabiSSMHammerVineBehind",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Multicastable] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 2.5,
    baseFlags = {
        spell = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiEASProjSpamBarrage"] = {
    name = "HarvestOshabiEASProjSpamBarrage",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 5,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiEASSummonBoth"] = {
    name = "HarvestOshabiEASSummonBoth",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 2.67,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiEASSummonLeft"] = {
    name = "HarvestOshabiEASSummonLeft",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 2.67,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiEASSummonRight"] = {
    name = "HarvestOshabiEASSummonRight",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 2.67,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiEASSummonDouble"] = {
    name = "HarvestOshabiEASSummonDouble",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1.67,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiEASSummonTriple"] = {
    name = "HarvestOshabiEASSummonTriple",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 2.17,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiSSMCombatVineLeft"] = {
    name = "HarvestOshabiSSMCombatVineLeft",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Multicastable] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        spell = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiSSMCombatVineRight"] = {
    name = "HarvestOshabiSSMCombatVineRight",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Multicastable] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        spell = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiSSMBattleVine"] = {
    name = "HarvestOshabiSSMBattleVine",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Multicastable] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        spell = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiSSMBattleVineTarget"] = {
    name = "HarvestOshabiSSMBattleVineTarget",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Multicastable] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        spell = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiSSMCyanBattleVineTarget"] = {
    name = "HarvestOshabiSSMCyanBattleVineTarget",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Multicastable] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        spell = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiProjSpamOrange"] = {
    name = "HarvestOshabiProjSpamOrange",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Projectile] = true,
        [SkillType.ProjectilesFromUser] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        spell = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 83, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiProjSpamRed"] = {
    name = "HarvestOshabiProjSpamRed",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Projectile] = true,
        [SkillType.ProjectilesFromUser] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        spell = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 83, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiProjSpamBlue"] = {
    name = "HarvestOshabiProjSpamBlue",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Projectile] = true,
        [SkillType.ProjectilesFromUser] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        spell = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 83, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiProjSpamGreen"] = {
    name = "HarvestOshabiProjSpamGreen",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Projectile] = true,
        [SkillType.ProjectilesFromUser] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        spell = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 83, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiCyanBloomSSM"] = {
    name = "HarvestOshabiCyanBloomSSM",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Multicastable] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        spell = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiVineBarrierGT"] = {
    name = "HarvestOshabiVineBarrierGT",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiVineBarrierSSM"] = {
    name = "HarvestOshabiVineBarrierSSM",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Multicastable] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        spell = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiCrownOfThornsSummonerDaemonSSM"] = {
    name = "HarvestOshabiCrownOfThornsSummonerDaemonSSM",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Multicastable] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        spell = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiCombatVinesGTLeftNear"] = {
    name = "HarvestOshabiCombatVinesGTLeftNear",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 2.67,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiCombatVinesGTLeftFar"] = {
    name = "HarvestOshabiCombatVinesGTLeftFar",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 2.67,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiCombatVinesGTRightNear"] = {
    name = "HarvestOshabiCombatVinesGTRightNear",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 2.67,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiCombatVinesGTRightFar"] = {
    name = "HarvestOshabiCombatVinesGTRightFar",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 2.67,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiVineCascadeGS"] = {
    name = "HarvestOshabiVineCascadeGS",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Attack] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 83, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiVineCascadeGS2"] = {
    name = "HarvestOshabiVineCascadeGS2",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Attack] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 83, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiVineCascadeGS3"] = {
    name = "HarvestOshabiVineCascadeGS3",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Attack] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 83, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiVineCascadeGS4"] = {
    name = "HarvestOshabiVineCascadeGS4",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Attack] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 83, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiVineCascadeGT1"] = {
    name = "HarvestOshabiVineCascadeGT1",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 2.67,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiVineCascadeGT2"] = {
    name = "HarvestOshabiVineCascadeGT2",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 2.67,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiVineCascadeGT3"] = {
    name = "HarvestOshabiVineCascadeGT3",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 2.67,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiVineCascadeGT4"] = {
    name = "HarvestOshabiVineCascadeGT4",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 2.67,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["OshabiOrbProjectile"] = {
    name = "OshabiOrbProjectile",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 2.2,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 83, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["OshabiOrbProjectileMPSTrigger"] = {
    name = "OshabiOrbProjectileMPSTrigger",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Projectile] = true,
        [SkillType.ProjectilesFromUser] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        spell = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 83, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiCrownOfThornsCentreMarkerSO"] = {
    name = "HarvestOshabiCrownOfThornsCentreMarkerSO",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiCTS1I"] = {
    name = "HarvestOshabiCTS1I",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["HarvestOshabiCTS2I"] = {
    name = "HarvestOshabiCTS2I",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["OshabiPickDestinationEAS5NoLineOfSight"] = {
    name = "OshabiPickDestinationEAS5NoLineOfSight",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["OshabiTeleportSlam"] = {
    name = "OshabiTeleportSlam",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Movement] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 2,
    baseFlags = {
        spell = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 83, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["OshabiTeleportSlamGA"] = {
    name = "OshabiTeleportSlamGA",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Attack] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 83, statInterpolation = ,  cost = { }, },
    },
}
-- srcDataSkillsspectre.lua
skills["OshabiTeleportSlamBloomEG"] = {
    name = "OshabiTeleportSlamBloomEG",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 0, statInterpolation = ,  cost = { }, },
    },
}

В Path of Exile: Жатва мы представили нового персонажа – Ошаби – стража Священной рощи. Сегодня мы поговорим о её разработке, её месте в мире Path of Exile и о повествовании в целом.

Прежде чем мы перейдём к сути того, как и почему возникла Ошаби, удостоверьтесь, что вас не пугает перспектива раскрытия некоторых деталей, потому что в статье мы затронем кое-какие подробности сюжета!

Когда мы разрабатываем лигу и возникает необходимость добавить в игру персонажа, то зачастую сначала появляется его эскиз. Так было и с Ошаби. Мы нередко делаем наброски персонажей, которые могут увидеть, а могут в итоге и не увидеть, свет. Если концепция персонажа выглядит уместной в тематике лиги, то мы создаём модель и начинаем разбираться, кем будет этот герой. В случае Ошаби её облик родился из концепт-арта, созданного нами для микротранзакции призрака.



Создавая предысторию и характер Ошаби, мы перебрали множество сценариев того, кто она такая, откуда появилась и какова её роль в механике игры и в рамках сюжета Жатвы. В ранней версии она была “этичным” каннибалом и хотела выращивать монстров в качестве источника пищи, чтобы не чувствовать за собой вину в том, каким способом добывается еда. У идеи было продолжение: вкус монстров Жатвы оказывался настолько прекрасным, что она уже не могла употреблять в пищу ничего другого, и многократно предупреждала игрока никогда их не пробовать. Мне по-прежнему нравится идея “этичного” героя-каннибала, и я уже пытался “пропихнуть” такого персонажа ещё хоть в одну лигу! Может, когда-нибудь…

Те из вас, кто добрался до финала повествования Жатвы, знают, что произойдёт. Остальных мы предупредили!

Ошаби, будучи стражем Священной рощи, присматривает за садом, в котором и проходит большая часть игрового процесса Жатвы. Она утверждает, что сад говорит с ней, возвращая ей давно утерянный дар. Она пользуется садом, чтобы взращивать и пускать себе на службу энергию, которую она называет жизненной силой. Проблема в том, что жизненная сила может быть просто Порчей под новым именем.

С каждой новой лигой сложность игры, даже сюжетная, возрастает. В Path of Exile присутствуют несколько мистических сил – Порча, Божественность, преображающие и зовущие силы Атласа и так далее… И важно сохранять различие между ними. Нам, игрокам, могут быть знакомы все эти составляющие, но у персонажей куда более ограниченный взгляд. Единение жизненной силы с Порчей решило проблему создания ещё одной загадочной энергии. В то же время в их единстве подчёркивается то, на что, как нам известно, способна Порча: сотворение и мутация монстров, превращение предметов и людей, гибельное искушение.

Сегодня вполне закономерно полагать, что каждая лига нуждается в какой-либо финальной схватке – такой, к которой предстоит идти на протяжении всей лиги и в которой будет самый сложный контент этой лиги и добываются самые ценные награды. Я точно не помню, когда именно мы решили, что Ошаби станет финальным боссом, зато помню, что мы долго придумывали, как превратить НИП в злодея.

Вообще-то мы уже проделывали такое в прошлых лигах (Синтез!), и тогда мы справились с задачей, переложив основные тяготы взаимодействия с игроком с Каваса на Зану. На этот раз такой роскоши у нас не было, и пришлось удостовериться, что все свои функции в плане механики лиги Ошаби выполняет до того, как стать высокоуровневым боссом. И мы решили, что, как только этот момент достигнут, она исчезает. Не на время, а навсегда.

В Синтезе Кавас задумывался как злодей. Мы хотели, чтобы вы чувствовали себя обманутыми; хотели, чтобы вы поняли, что, хотя у Каваса были свои причины, дело его было неправедным. К Ошаби нам хотелось вызвать жалость. В прошлом она совершила кое-какие морально сомнительные дела, но, в конце концов, она пала жертвой соблазна и Порчи. Была обманута, прельстилась её сладкой песней, и в результате испытывает бесконечные страдания.

В приветственной речи Ошаби выражает надежду, что после её смерти земля позволит ей остаться мёртвой. К несчастью, ничто в Рэкласте не остаётся мёртвым надолго.

Добавить комментарий