How the title say's i will release the 80% complete thessal code ( Why 80%? Because the "It lives and reings and conquers the world" isn't complete and because she's aiming you.
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 _ Trench = Behav()
.Init(0x1706, Behaves("Thessal the Mermaid Goddess",
new RunBehaviors(
Cooldown.Instance(2500, RingAttack.Instance(8,45,45,0)),
Cooldown.Instance(5000, TossEnemy.Instance(90,5,0x1702)),
Cooldown.Instance(6000, TossEnemy.Instance(270,5,0x1702))
),
SmoothWandering.Instance(.1f, .1f),
If.Instance(HpGreaterEqual.Instance(40000, NullBehavior.Instance),
new QueuedBehavior(
Cooldown.Instance(500),
MultiAttack.Instance(15, 10 * (float)Math.PI / 180, 2, 90 * (float)Math.PI / 180, projectileIndex: 2),
MultiAttack.Instance(15, 10 * (float)Math.PI / 180, 2, 180 * (float)Math.PI / 180, projectileIndex: 2),
MultiAttack.Instance(15, 10 * (float)Math.PI / 180, 2, 360 * (float)Math.PI / 180, projectileIndex: 2),
MultiAttack.Instance(15, 10 * (float)Math.PI / 180, 2, 270 * (float)Math.PI / 180, projectileIndex: 2)
),
If.Instance(HpLesser.Instance(40000, NullBehavior.Instance),
And.Instance(
new QueuedBehavior(
SetConditionEffect.Instance(ConditionEffectIndex.Invulnerable),
Timed.Instance(2500, False.Instance(Flashing.Instance(200, 0xff00ff00))),
UnsetConditionEffect.Instance(ConditionEffectIndex.Invulnerable),
MultiAttack.Instance(15, 10 * (float)Math.PI / 180, 2, 90 * (float)Math.PI / 180, projectileIndex: 2),
MultiAttack.Instance(15, 10 * (float)Math.PI / 180, 2, 180 * (float)Math.PI / 180, projectileIndex: 2),
MultiAttack.Instance(15, 10 * (float)Math.PI / 180, 2, 360 * (float)Math.PI / 180, projectileIndex: 2),
MultiAttack.Instance(15, 10 * (float)Math.PI / 180, 2, 270 * (float)Math.PI / 180, projectileIndex: 2),
CooldownExact.Instance(1000),
MultiAttack.Instance(15, 10 * (float)Math.PI / 180, 2, 90 * (float)Math.PI / 180, projectileIndex: 2),
MultiAttack.Instance(15, 10 * (float)Math.PI / 180, 2, 180 * (float)Math.PI / 180, projectileIndex: 2),
MultiAttack.Instance(15, 10 * (float)Math.PI / 180, 2, 360 * (float)Math.PI / 180, projectileIndex: 2),
MultiAttack.Instance(15, 10 * (float)Math.PI / 180, 2, 270 * (float)Math.PI / 180, projectileIndex: 2),
CooldownExact.Instance(1000),
MultiAttack.Instance(15, 10 * (float)Math.PI / 180, 2, 90 * (float)Math.PI / 180, projectileIndex: 2),
MultiAttack.Instance(15, 10 * (float)Math.PI / 180, 2, 180 * (float)Math.PI / 180, projectileIndex: 2),
MultiAttack.Instance(15, 10 * (float)Math.PI / 180, 2, 360 * (float)Math.PI / 180, projectileIndex: 2),
MultiAttack.Instance(15, 10 * (float)Math.PI / 180, 2, 270 * (float)Math.PI / 180, projectileIndex: 2),
CooldownExact.Instance(1000),
MultiAttack.Instance(15, 10 * (float)Math.PI / 180, 2, 90 * (float)Math.PI / 180, projectileIndex: 2),
MultiAttack.Instance(15, 10 * (float)Math.PI / 180, 2, 180 * (float)Math.PI / 180, projectileIndex: 2),
MultiAttack.Instance(15, 10 * (float)Math.PI / 180, 2, 360 * (float)Math.PI / 180, projectileIndex: 2),
MultiAttack.Instance(15, 10 * (float)Math.PI / 180, 2, 270 * (float)Math.PI / 180, projectileIndex: 2),
CooldownExact.Instance(1000),
MultiAttack.Instance(15, 10 * (float)Math.PI / 180, 2, 90 * (float)Math.PI / 180, projectileIndex: 2),
MultiAttack.Instance(15, 10 * (float)Math.PI / 180, 2, 180 * (float)Math.PI / 180, projectileIndex: 2),
MultiAttack.Instance(15, 10 * (float)Math.PI / 180, 2, 360 * (float)Math.PI / 180, projectileIndex: 2),
MultiAttack.Instance(15, 10 * (float)Math.PI / 180, 2, 270 * (float)Math.PI / 180, projectileIndex: 2),
CooldownExact.Instance(1000),
SetConditionEffect.Instance(ConditionEffectIndex.Invulnerable),
Timed.Instance(2500, False.Instance(Flashing.Instance(200, 0xff00ff00))),
UnsetConditionEffect.Instance(ConditionEffectIndex.Invulnerable),
RingAttack.Instance(30, 75, 75, projectileIndex: 3),
CooldownExact.Instance(500),
RingAttack.Instance(30, 75, 75, projectileIndex: 3),
CooldownExact.Instance(500),
RingAttack.Instance(30, 75, 75, projectileIndex: 3),
CooldownExact.Instance(500)
),
new RunBehaviors(
Cooldown.Instance(2500, RingAttack.Instance(8,45,45,0)),
Cooldown.Instance(5000, TossEnemy.Instance(90,5,0x1702)),
Cooldown.Instance(4600, TossEnemy.Instance(270,5,0x1702))
)))),
loot: new LootBehavior(LootDef.Empty,
Tuple.Create(360, new LootDef(0, 2, 0, 2,
Tuple.Create(0.05, (ILoot)new ItemLoot("Coral Bow")),
Tuple.Create(0.08, (ILoot)new ItemLoot("Coral Silk Armor")),
Tuple.Create(0.08, (ILoot)new ItemLoot("Coral Venom Trap")),
Tuple.Create(0.08, (ILoot)new ItemLoot("Coral Ring")),
Tuple.Create(0.5, (ILoot)new ItemLoot("Potion of Mana")),
Tuple.Create(0.05, (ILoot)new ItemLoot("Wine Cellar Incantation")),
)))
))
.Init(0x1708, Behaves("Fishman",
IfNot.Instance(
Chasing.Instance(12, 9, 6, 0x1700),
IfNot.Instance(
Circling.Instance(3, 10, 6, null),
SimpleWandering.Instance(4)
)
),
Cooldown.Instance(800, MultiAttack.Instance(10, 1 * (float)Math.PI / 30, 3, 0, projectileIndex: 0)),
Cooldown.Instance(1000, SimpleAttack.Instance(10, projectileIndex: 1))
))
.Init(0x1700, Behaves("Fishman Warrior",
IfNot.Instance(
Chasing.Instance(5, 9, 3, null),
IfNot.Instance(
Circling.Instance(3, 10, 6, null),
SimpleWandering.Instance(4)
)
),
new RunBehaviors(
Cooldown.Instance(800, MultiAttack.Instance(10, 1 * (float)Math.PI / 30, 3, 0, projectileIndex: 0)),
Cooldown.Instance(1000, SimpleAttack.Instance(3, projectileIndex: 1)),
Cooldown.Instance(2000, RingAttack.Instance(5, 10, 0, projectileIndex: 2))
)
))
.Init(0x170a, Behaves("Sea Mare",
IfNot.Instance(
Charge.Instance(5, 5, null),
SimpleWandering.Instance(4)
),
Cooldown.Instance(500, MultiAttack.Instance(10, 10 * (float)Math.PI / 180, 5, 0, projectileIndex: 0)),
Cooldown.Instance(1500, SimpleAttack.Instance(3, projectileIndex: 1))
))
.Init(0x170c, Behaves("Giant Squid",
IfNot.Instance(
Chasing.Instance(4, 5, 6, null),
IfNot.Instance(
Cooldown.Instance(500, TossEnemy.Instance(0, 0, 0x170b)),
SimpleWandering.Instance(4)
)
),
Cooldown.Instance(100, SimpleAttack.Instance(10, projectileIndex: 0)),
Cooldown.Instance(500, MultiAttack.Instance(25, 10 * (float)Math.PI / 180, 5, 0, projectileIndex: 1))
))
.Init(0x170b, Behaves("Ink Bubble",
new QueuedBehavior(
RingAttack.Instance(1, 1, 0, projectileIndex: 0)),
CooldownExact.Instance(500),
Despawn.Instance
))
.Init(0x1707, Behaves("Deep Sea Beast",
new QueuedBehavior(
Cooldown.Instance(50, SimpleAttack.Instance(3, projectileIndex: 0)),
Cooldown.Instance(100, SimpleAttack.Instance(3, projectileIndex: 1)),
Cooldown.Instance(150, SimpleAttack.Instance(3, projectileIndex: 2)),
Cooldown.Instance(200, SimpleAttack.Instance(3, projectileIndex: 3)),
CooldownExact.Instance(300)
)
))
.Init(0x1709, Behaves("Sea Horse",
IfNot.Instance(
Chasing.Instance(5, 5, 1, 0x170a),
SimpleWandering.Instance(4)
),
Cooldown.Instance(1400, MultiAttack.Instance(10, 10 * (float)Math.PI / 180, 5, 0, projectileIndex: 0))
))
.Init(0x170e, Behaves("Grey Sea Slurp",
IfNot.Instance(
Chasing.Instance(5, 5, 2, 0x170d),
SimpleWandering.Instance(4)
),
Cooldown.Instance(500, SimpleAttack.Instance(8, projectileIndex: 0)),
Cooldown.Instance(500, RingAttack.Instance(8, 4, 0, projectileIndex: 1))
))
.Init(0x170d, Behaves("Sea Slurp Home",
new QueuedBehavior(
Cooldown.Instance(500, RingAttack.Instance(8, 4, 0, projectileIndex: 0)),
Cooldown.Instance(500, RingAttack.Instance(8, 2, 0, projectileIndex: 1))
)))
.Init(0x1702, Behaves("Coral Bomb Big",
new QueuedBehavior(
RingAttack.Instance(10, 50, 50, 0),
CooldownExact.Instance(100),
TossEnemy.Instance(0 * (float)Math.PI / 180, 2, 0x1703),
CooldownExact.Instance(100),
TossEnemy.Instance(45 * (float)Math.PI / 180, 2, 0x1703),
CooldownExact.Instance(100),
TossEnemy.Instance(90 * (float)Math.PI / 180, 2, 0x1703),
CooldownExact.Instance(100),
TossEnemy.Instance(135 * (float)Math.PI / 180, 2, 0x1703),
CooldownExact.Instance(100),
TossEnemy.Instance(180 * (float)Math.PI / 180, 2, 0x1703),
CooldownExact.Instance(100),
TossEnemy.Instance(225 * (float)Math.PI / 180, 2, 0x1703),
CooldownExact.Instance(100),
TossEnemy.Instance(270 * (float)Math.PI / 180, 2, 0x1703),
CooldownExact.Instance(100),
TossEnemy.Instance(315 * (float)Math.PI / 180, 2, 0x1703),
CooldownExact.Instance(100),
RingAttack.Instance(10, 50, 50, 0),
CooldownExact.Instance(500),
Despawn.Instance
)))
.Init(0x1703, Behaves("Coral Bomb Small",
new QueuedBehavior(
RingAttack.Instance(8, 50, 50, 0),
CooldownExact.Instance(500),
RingAttack.Instance(8, 50, 50, 0),
CooldownExact.Instance(1500),
Despawn.Instance
)));
}
}