I don't want to give you the FULL one, cuz' I'm going to keep that for myself (for now) but I'll happily give you the first phase.
Super basic, but it's enough to look sexy.
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 _ GhostShip = Behav()
.Init(0x0e37, Behaves("Ghost Ship",
new RunBehaviors(
Once.Instance(new SetKey(-1, 1)),
IfEqual.Instance(-1, 1,
new RunBehaviors(
SimpleWandering.Instance(1, 1f),
HpLesser.Instance(50000, new SetKey(-1, 2)))),
IfEqual.Instance(-1, 2,
new RunBehaviors(
new QueuedBehavior(
SetConditionEffect.Instance(ConditionEffectIndex.Invulnerable), //Made by DaBoss Channel, more behaviors on there.
Cooldown.Instance(1000),
UnsetConditionEffect.Instance(ConditionEffectIndex.Invulnerable),
Cooldown.Instance(3500),
SetConditionEffect.Instance(ConditionEffectIndex.Invulnerable),
Cooldown.Instance(1500),
UnsetConditionEffect.Instance(ConditionEffectIndex.Invulnerable),
Cooldown.Instance(2000),
SetConditionEffect.Instance(ConditionEffectIndex.Invulnerable),
Cooldown.Instance(3500)),
new RunBehaviors(
SimpleWandering.Instance(1, 1f),
Cooldown.Instance(1000, PredictiveMultiAttack.Instance(12, 10 * (float)Math.PI / 180, 2, 1, projectileIndex: 0)),
Cooldown.Instance(250, PredictiveMultiAttack.Instance(12, 10 * (float)Math.PI / 180, 1, 1, projectileIndex: 0)),
Cooldown.Instance(1500, TossEnemyAtPlayer.Instance(10, 0x0e4f)))))),
loot: new LootBehavior(LootDef.Empty, Tuple.Create(100, new LootDef(0, 3, 0, 3,
Tuple.Create(0.80, (ILoot)new StatPotionLoot(StatPotion.Wis)),
Tuple.Create(0.70, (ILoot)new ItemLoot("Ghost Pirate Rum")),
Tuple.Create(0.0015, (ILoot)new ItemLoot("Wine Cellar Incantation")),
Tuple.Create(0.05, (ILoot)new TierLoot(11, ItemType.Weapon)),
Tuple.Create(0.10, (ILoot)new TierLoot(10, ItemType.Weapon)),
Tuple.Create(0.25, (ILoot)new TierLoot(9, ItemType.Weapon)),
Tuple.Create(0.05, (ILoot)new TierLoot(12, ItemType.Armor)),
Tuple.Create(0.10, (ILoot)new TierLoot(11, ItemType.Armor)),
Tuple.Create(0.25, (ILoot)new TierLoot(10, ItemType.Armor)),
Tuple.Create(0.05, (ILoot)new TierLoot(5, ItemType.Ring)),
Tuple.Create(0.10, (ILoot)new TierLoot(4, ItemType.Ring)) //Drops are just estimated, I don't know the real drop rates :P
)))
))
.Init(0x0e3d, Behaves("Beach Spectre",
IfNot.Instance(
Chasing.Instance(1, 7, 4, null),
SimpleWandering.Instance(4)
),
Cooldown.Instance(800, PredictiveMultiAttack.Instance(12, 10 * (float)Math.PI / 180, 3, 1)),
loot: new LootBehavior(
new LootDef(0, 2, 0, 8,
Tuple.Create(0.50, (ILoot)HpPotionLoot.Instance)
))
)
)
.Init(0x0e4f, Behaves("Water Mine",
new RunBehaviors(
Charge.Instance(5, 15, null)),
condBehaviors: new ConditionalBehavior[]
{
new GrayBlob()
}
))
.Init(0x0e39, Behaves("Vengeful Spirit",
new RunBehaviors(
Chasing.Instance(7, 25, 1, null),
SimpleWandering.Instance(4)
),
Cooldown.Instance(910, PredictiveMultiAttack.Instance(12, 10 * (float)Math.PI / 180, 3, 1))
));
}
}