Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using wServer.realm;
using wServer.logic.attack;
using wServer.logic.movement;
using wServer.logic.loot;
using wServer.logic.taunt;
using wServer.logic.cond;
namespace wServer.logic
{
partial class BehaviorDb
{
static _ Janus = Behav()
.Init(0x221a, Behaves("Janus",
new RunBehaviors(
Cooldown.Instance(5000, ReturnSpawn.Instance(3)),
Once.Instance(SetConditionEffect.Instance(ConditionEffectIndex.Invulnerable)),
If.Instance(IsEntityPresent.Instance(10, null), Once.Instance(new SetKey(-1, 1))),
IfEqual.Instance(-1, 1,
new RunBehaviors(
new QueuedBehavior(
new SimpleTaunt("You bare witness to Janus, Doorwarden of Oryx. You will soon regret your decisions, your soul sealed away -- forever"),
CooldownExact.Instance(500),
Timed.Instance(2000, Flashing.Instance(500, 0xff0000)),
CooldownExact.Instance(5500),
new SetKey(-1, 2)
)
)),
IfEqual.Instance(-1, 2,
new RunBehaviors(
UnsetConditionEffect.Instance(ConditionEffectIndex.Invulnerable),
Once.Instance(SetConditionEffect.Instance(ConditionEffectIndex.Armored)),
StateOnce.Instance(new SimpleTaunt("Keys, protect your master.")),
Once.Instance(TossEnemy.Instance(0 * (float)Math.PI / 180, 7, 0x221c)),
Once.Instance(TossEnemy.Instance(90 * (float)Math.PI / 180, 7, 0x221c)),
Once.Instance(TossEnemy.Instance(180 * (float)Math.PI / 180, 7, 0x221c)),
Once.Instance(TossEnemy.Instance(270 * (float)Math.PI / 180, 7, 0x221c)),
Once.Instance(TossEnemy.Instance(45 * (float)Math.PI / 180, 10, 0x221b)),
Once.Instance(TossEnemy.Instance(135 * (float)Math.PI / 180, 10, 0x221b)),
Once.Instance(TossEnemy.Instance(225 * (float)Math.PI / 180, 10, 0x221b)),
Once.Instance(TossEnemy.Instance(315 * (float)Math.PI / 180, 10, 0x221b)),
CooldownExact.Instance(4000),
new SetKey(-1, 3)
)),
IfEqual.Instance(-1, 3,
new RunBehaviors(
new QueuedBehavior(
#region Phase 1
Cooldown.Instance(4000),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(700),
new SetKey(-1, 4)
#endregion
))),
IfEqual.Instance(-1, 4,
new RunBehaviors(
OrderGroup.Instance(60, "Keys", Chasing.Instance(20, 50, 2, 0x221a)),
If.Instance(IsEntityPresent.Instance(5, 0x221b), new SetKey(-1, 5))
)),
#region Entity is present or not?
IfEqual.Instance(-1, 5,
new RunBehaviors(
If.Instance(IsEntityPresent.Instance(5, 0x221c), new SetKey(-1, 6))
)),
IfEqual.Instance(-1, 6,
new RunBehaviors(
If.Instance(IsEntityNotPresent.Instance(5, 0x221c), new SetKey(-1, 7))
)),
IfEqual.Instance(-1, 7,
new RunBehaviors(
If.Instance(IsEntityNotPresent.Instance(5, 0x221c), new SetKey(-1, 8))
)),
#endregion
IfEqual.Instance(-1, 8,
new QueuedBehavior(
#region Left and Right 1
StateOnce.Instance(new SimpleTaunt("Left and Right.")),
UnsetConditionEffect.Instance(ConditionEffectIndex.Armored),
Cooldown.Instance(3500),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
StateOnce.Instance(new SimpleTaunt("I shall never open to the likes of you!")),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
StateOnce.Instance(new SimpleTaunt("Up and Down.")),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(3500),
new SetKey(-1, 9)
)),
#endregion
IfEqual.Instance(-1, 9,
new QueuedBehavior(
#region Up and Down 1
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
StateOnce.Instance(new SimpleTaunt("Left and Right.")),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(3500),
new SetKey(-1, 10)
)),
#endregion
IfEqual.Instance(-1, 10,
new QueuedBehavior(
#region Left and Right 2
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(900),
new SetKey(-1, 11)
)),
#endregion
IfEqual.Instance(-1, 11,
new RunBehaviors(
Once.Instance(SetConditionEffect.Instance(ConditionEffectIndex.Armored)),
StateOnce.Instance(new SimpleTaunt("Keys, protect your master.")),
TossEnemy.Instance(0 * (float)Math.PI / 180, 7, 0x221c),
TossEnemy.Instance(90 * (float)Math.PI / 180, 7, 0x221c),
TossEnemy.Instance(180 * (float)Math.PI / 180, 7, 0x221c),
TossEnemy.Instance(270 * (float)Math.PI / 180, 7, 0x221c),
TossEnemy.Instance(45 * (float)Math.PI / 180, 10, 0x221b),
TossEnemy.Instance(135 * (float)Math.PI / 180, 10, 0x221b),
TossEnemy.Instance(225 * (float)Math.PI / 180, 10, 0x221b),
TossEnemy.Instance(315 * (float)Math.PI / 180, 10, 0x221b),
Once.Instance(new SetKey(-1, 12))
)),
IfEqual.Instance(-1, 12,
new RunBehaviors(
new QueuedBehavior(
#region Phase 2
Cooldown.Instance(2000),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(400),
RingAttack.Instance(10, projectileIndex: 0),
Cooldown.Instance(700),
new SetKey(-1, 13)
#endregion
))),
IfEqual.Instance(-1, 13,
new RunBehaviors(
OrderGroup.Instance(60, "Keys", Chasing.Instance(20, 50, 2, 0x221a)),
If.Instance(IsEntityPresent.Instance(5, 0x221b), new SetKey(-1, 14))
)),
IfEqual.Instance(-1, 14,
new RunBehaviors(
If.Instance(IsEntityPresent.Instance(5, 0x221c), new SetKey(-1, 15))
)),
IfEqual.Instance(-1, 15,
new RunBehaviors(
If.Instance(IsEntityNotPresent.Instance(5, 0x221c), new SetKey(-1, 16))
)),
IfEqual.Instance(-1, 16,
new QueuedBehavior(
#region Up and Down 2
StateOnce.Instance(new SimpleTaunt("Up and Down.")),
Cooldown.Instance(3500),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
StateOnce.Instance(new SimpleTaunt("Laughable attempt. I will erase you from this world.")),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
StateOnce.Instance(new SimpleTaunt("Left and Right.")),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(3500),
new SetKey(-1, 17)
)),
#endregion
IfEqual.Instance(-1, 17,
new RunBehaviors(
new QueuedBehavior(
#region Left and Right 3
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
StateOnce.Instance(new SimpleTaunt("Up and Down.")),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(180 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(360 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(3500),
new SetKey(-1, 19)
))),
#endregion
IfEqual.Instance(-1, 19,
new RunBehaviors(
new QueuedBehavior(
#region Up and Down 3
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(200),
AngleMultiAttack.Instance(90 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
AngleMultiAttack.Instance(270 * (float)Math.PI / 180, 10 * (float)Math.PI / 180, 8, projectileIndex: 1),
Cooldown.Instance(3500),
new SetKey(-1, 20)
))),
#endregion
IfEqual.Instance(-1, 20,
new RunBehaviors(
StateOnce.Instance(new SimpleTaunt("I AM THE DOORWARDEN! YOU SHALL NOT ENTER!")),
SimpleWandering.Instance(5, 1f),
Cooldown.Instance(400, RingAttack.Instance(10, projectileIndex: 0)),
HpLesserPercent.Instance(0.1f, ReturnSpawn.Instance(40))
))
),
condBehaviors: new ConditionalBehavior[] {
new OnDeath(
Once.Instance(
new RunBehaviors(
Cooldown.Instance(1000),
new SimpleTaunt("I...I am dying. I...I have failed....."),
Cooldown.Instance(1000),
TossEnemy.Instance(270 *(float)Math.PI/180, 5, 0x222a)
)))
}
))
.Init(0x221b, Behaves("Key of Darkness",
new RunBehaviors(
SetConditionEffect.Instance(ConditionEffectIndex.Invincible),
Cooldown.Instance(1000, RingAttack.Instance(16, projectileIndex: 0)),
/*RingAttack.Instance(16, projectileIndex: 0),
Cooldown.Instance(1000),
RingAttack.Instance(16, projectileIndex: 0),
Cooldown.Instance(1000),
RingAttack.Instance(16, projectileIndex: 0),
Cooldown.Instance(1000),
RingAttack.Instance(16, projectileIndex: 0),
Cooldown.Instance(1000),
RingAttack.Instance(16, projectileIndex: 0),
Cooldown.Instance(1000),
RingAttack.Instance(16, projectileIndex: 0),
Cooldown.Instance(1000),
RingAttack.Instance(16, projectileIndex: 0),
Cooldown.Instance(1000),
RingAttack.Instance(16, projectileIndex: 0),
Cooldown.Instance(1000),
RingAttack.Instance(16, projectileIndex: 0),
Cooldown.Instance(1000),
RingAttack.Instance(16, projectileIndex: 0),
Cooldown.Instance(1000),
RingAttack.Instance(16, projectileIndex: 0),
Cooldown.Instance(1000),*/
NullBehavior.Instance,
If.Instance(IsEntityNotPresent.Instance(80, 0x221a), Despawn.Instance),
If.Instance(IsEntityPresent.Instance(6, 0x221a), Once.Instance(new SetKey(-1, 1)))
),
IfEqual.Instance(-1, 1,
new RunBehaviors(
UnsetConditionEffect.Instance(ConditionEffectIndex.Invincible),
Chasing.Instance(10, 50, 2, 0x221a),
Cooldown.Instance(8000, Heal.Instance(3, 2000, 0x221a)),
Cooldown.Instance(5000, RingAttack.Instance(5, projectileIndex: 1)),
If.Instance(IsEntityNotPresent.Instance(80, 0x221a), Despawn.Instance)
))))
.Init(0x221c, Behaves("Key of Light",
new RunBehaviors(
SetConditionEffect.Instance(ConditionEffectIndex.Invincible),
Cooldown.Instance(1000, RingAttack.Instance(16, projectileIndex: 0)),
/*RingAttack.Instance(16, projectileIndex: 0),
Cooldown.Instance(1000),
RingAttack.Instance(16, projectileIndex: 0),
Cooldown.Instance(1000),
RingAttack.Instance(16, projectileIndex: 0),
Cooldown.Instance(1000),
RingAttack.Instance(16, projectileIndex: 0),
Cooldown.Instance(1000),
RingAttack.Instance(16, projectileIndex: 0),
Cooldown.Instance(1000),
RingAttack.Instance(16, projectileIndex: 0),
Cooldown.Instance(1000),
RingAttack.Instance(16, projectileIndex: 0),
Cooldown.Instance(1000),
RingAttack.Instance(16, projectileIndex: 0),
Cooldown.Instance(1000),
RingAttack.Instance(16, projectileIndex: 0),
Cooldown.Instance(1000),
RingAttack.Instance(16, projectileIndex: 0),
Cooldown.Instance(1000),
RingAttack.Instance(16, projectileIndex: 0),
Cooldown.Instance(1000),*/
If.Instance(IsEntityNotPresent.Instance(80, 0x221a), Despawn.Instance),
If.Instance(IsEntityPresent.Instance(6, 0x221a), Once.Instance(new SetKey(-1, 1)))
),
IfEqual.Instance(-1, 1,
new RunBehaviors(
UnsetConditionEffect.Instance(ConditionEffectIndex.Invincible),
Chasing.Instance(10, 50, 2, 0x221a),
Cooldown.Instance(8000, Heal.Instance(3, 2000, 0x221a)),
Cooldown.Instance(5000, RingAttack.Instance(5, projectileIndex: 1)),
If.Instance(IsEntityNotPresent.Instance(80, 0x221a), Despawn.Instance)
))))
.Init(0x222a, Behaves("Janus Chest",
new QueuedBehavior(
SetConditionEffect.Instance(ConditionEffectIndex.Invulnerable),
Cooldown.Instance(3000),
new SetKey(-1, 1)
),
IfEqual.Instance(-1, 1,
UnsetConditionEffect.Instance(ConditionEffectIndex.Invulnerable)
),
loot: new LootBehavior(LootDef.Empty,
Tuple.Create(100, new LootDef(0, 2, 0, 2,
Tuple.Create(0.01, (ILoot)new ItemLoot("Wine Cellar Incantation")),
Tuple.Create(0.20, (ILoot)new TierLoot(7, ItemType.Weapon)),
Tuple.Create(0.10, (ILoot)new TierLoot(8, ItemType.Weapon)),
Tuple.Create(0.10, (ILoot)new TierLoot(9, ItemType.Weapon)),
Tuple.Create(0.05, (ILoot)new TierLoot(10, ItemType.Weapon)),
Tuple.Create(0.20, (ILoot)new TierLoot(4, ItemType.Ability)),
Tuple.Create(0.25, (ILoot)new TierLoot(3, ItemType.Ability)),
Tuple.Create(0.10, (ILoot)new TierLoot(7, ItemType.Armor)),
Tuple.Create(0.15, (ILoot)new TierLoot(4, ItemType.Ring)),
Tuple.Create(0.8, (ILoot)new StatPotionLoot(StatPotion.Vit))
)))));
}
}
To spawn it is /spawn Janus. You don't have to put the full name.