<Object type="0x2f95" id="Puppet Master Treasure">
<Enemy />
<Class>Character</Class>
<Group>Puppets</Group>
<RemoteTexture>
<Id>948727721</Id>
<Instance>draw</Instance>
</RemoteTexture>
<HitSound>monster/ents_hit</HitSound>
<DeathSound>monster/ents_death</DeathSound>
<Size>150</Size>
<MaxHitPoints>10000</MaxHitPoints>
<Defense>0</Defense>
</Object>
<Object type="0x2f8a" id="Wizard Puppet">
<Enemy />
<Group>Puppets</Group>
<Class>Character</Class>
<RemoteTexture>
<Id>715119126</Id>
<Instance>draw</Instance>
</RemoteTexture>
<HitSound>monster/ents_hit</HitSound>
<DeathSound>monster/ents_death</DeathSound>
<Size>100</Size>
<MaxHitPoints>2200</MaxHitPoints>
<Defense>35</Defense>
<Projectile>
<ObjectId>Fire Missile</ObjectId>
<Speed>180</Speed>
<MinDamage>50</MinDamage>
<MaxDamage>65</MaxDamage>
<LifetimeMS>475</LifetimeMS>
<Amplitude>0.5</Amplitude>
<Frequency>2</Frequency>
</Projectile>
</Object>
<Object type="0x2f8b" id="Wizard Puppet Spell">
<Enemy />
<Group>Puppets</Group>
<Class>Character</Class>
<RemoteTexture>
<Id>715093716</Id>
<Instance>draw</Instance>
</RemoteTexture>
<HitSound>monster/ents_hit</HitSound>
<DeathSound>monster/ents_death</DeathSound>
<Size>0</Size>
<Projectile>
<ObjectId>Purple Bolt</ObjectId>
<Speed>160</Speed>
<MinDamage>40</MinDamage>
<MaxDamage>55</MaxDamage>
<LifetimeMS>1000</LifetimeMS>
<Size>100</Size>
</Projectile>
<MaxHitPoints>1</MaxHitPoints>
<Defense>0</Defense>
</Object>
<Object type="0x2f86" id="Rogue Puppet">
<Enemy />
<Group>Puppets</Group>
<Class>Character</Class>
<RemoteTexture>
<Id>715093716</Id>
<Instance>draw</Instance>
</RemoteTexture>
<HitSound>monster/ents_hit</HitSound>
<DeathSound>monster/ents_death</DeathSound>
<Size>100</Size>
<MaxHitPoints>2500</MaxHitPoints>
<Defense>35</Defense>
<Projectile id="0">
<ObjectId>Purple Magic</ObjectId>
<Speed>90</Speed>
<Damage>95</Damage>
<LifetimeMS>480</LifetimeMS>
</Projectile>
</Object>
<Object type="0x2f8c" id="Priest Puppet">
<Enemy />
<Group>Puppets</Group>
<Class>Character</Class>
<RemoteTexture>
<Id>21083050</Id>
<Instance>draw</Instance>
</RemoteTexture>
<HitSound>monster/ents_hit</HitSound>
<DeathSound>monster/ents_death</DeathSound>
<Size>100</Size>
<MaxHitPoints>2000</MaxHitPoints>
<Defense>35</Defense>
<Projectile>
<ObjectId>Blue Magic</ObjectId>
<Speed>130</Speed>
<MinDamage>60</MinDamage>
<MaxDamage>75</MaxDamage>
<LifetimeMS>770</LifetimeMS>
</Projectile>
</Object>
<Object type="0x2f8d" id="Assasin Puppet">
<Enemy />
<Group>Puppets</Group>
<Class>Character</Class>
<RemoteTexture>
<Id>715118552</Id>
<Instance>draw</Instance>
</RemoteTexture>
<HitSound>monster/ents_hit</HitSound>
<DeathSound>monster/ents_death</DeathSound>
<Size>100</Size>
<MaxHitPoints>2500</MaxHitPoints>
<Defense>35</Defense>
<Projectile id="0">
<ObjectId>Purple Magic</ObjectId>
<Speed>90</Speed>
<Damage>95</Damage>
<LifetimeMS>480</LifetimeMS>
</Projectile>
</Object>
<Object type="0x2f8e" id="Archer Puppet">
<Enemy />
<Group>Puppets</Group>
<Class>Character</Class>
<RemoteTexture>
<Id>21144059</Id>
<Instance>draw</Instance>
</RemoteTexture>
<HitSound>monster/ents_hit</HitSound>
<DeathSound>monster/ents_death</DeathSound>
<Size>100</Size>
<MaxHitPoints>2500</MaxHitPoints>
<Defense>35</Defense>
<Projectile id="0">
<ObjectId>Blue Arrow</ObjectId>
<Speed>160</Speed>
<MinDamage>70</MinDamage>
<MaxDamage>70</MaxDamage>
<LifetimeMS>440</LifetimeMS>
<MultiHit />
</Projectile>
<Projectile id="1">
<ObjectId>Blue Arrow</ObjectId>
<Speed>150</Speed>
<MinDamage>80</MinDamage>
<MaxDamage>80</MaxDamage>
<LifetimeMS>1000</LifetimeMS>
<Size>150</Size>
<ConditionEffect duration="1">Paralyzed</ConditionEffect>
<MultiHit />
<PassesCover />
<ParticleTrail />
</Projectile>
</Object>
<Object type="0x2f8f" id="Puppet Master">
<Enemy />
<Class>Character</Class>
<Group>Puppets</Group>
<RemoteTexture>
<Id>21062017</Id>
<Instance>draw</Instance>
</RemoteTexture>
<HitSound>monster/ents_hit</HitSound>
<DeathSound>monster/ents_death</DeathSound>
<Size>150</Size>
<MaxHitPoints>100000</MaxHitPoints>
<Defense>30</Defense>
<Projectile id="0">
<ObjectId>Green Jinx</ObjectId>
<Speed>90</Speed>
<Damage>80</Damage>
<LifetimeMS>4500</LifetimeMS>
</Projectile>
<Projectile id="1">
<ObjectId>Purple Jinx</ObjectId>
<Speed>40</Speed>
<Damage>105</Damage>
<LifetimeMS>4000</LifetimeMS>
<Size>140</Size>
<ConditionEffect duration="2.25">Slowed</ConditionEffect>
<ArmorPiercing />
</Projectile>
<Projectile id="2">
<ObjectId>Blue Bolt</ObjectId>
<Speed>50</Speed>
<Damage>90</Damage>
<LifetimeMS>4000</LifetimeMS>
<Size>140</Size>
</Projectile>
<God/>
</Object>
<Object type="0x2f92" id="Puppet Master Clone">
<Enemy />
<Class>Character</Class>
<Group>Puppets</Group>
<RemoteTexture>
<Id>21062017</Id>
<Instance>draw</Instance>
</RemoteTexture>
<HitSound>monster/ents_hit</HitSound>
<DeathSound>monster/ents_death</DeathSound>
<Size>100</Size>
<MaxHitPoints>6500</MaxHitPoints>
<Defense>10</Defense>
<Projectile id="0">
<ObjectId>Green Jinx</ObjectId>
<Speed>90</Speed>
<Damage>80</Damage>
<LifetimeMS>2500</LifetimeMS>
</Projectile>
<Projectile id="1">
<ObjectId>Purple Jinx</ObjectId>
<Speed>60</Speed>
<Damage>105</Damage>
<LifetimeMS>4000</LifetimeMS>
<Size>140</Size>
<ArmorPiercing />
<ConditionEffect duration="2.25">Slowed</ConditionEffect>
</Projectile>
<Projectile id="2">
<ObjectId>Blue Bolt</ObjectId>
<Speed>50</Speed>
<Damage>90</Damage>
<LifetimeMS>800</LifetimeMS>
<Size>140</Size>
</Projectile>
<God/>
</Object>
<Object type="0x2f87" id="Knight Puppet">
<Enemy />
<Class>Character</Class>
<Group>Puppets</Group>
<RemoteTexture>
<Id>715113323</Id>
<Instance>draw</Instance>
</RemoteTexture>
<HitSound>monster/ents_hit</HitSound>
<DeathSound>monster/ents_death</DeathSound>
<Size>100</Size>
<MaxHitPoints>3500</MaxHitPoints>
<Defense>35</Defense>
<Projectile id="0">
<ObjectId>Purple Bolt</ObjectId>
<Speed>90</Speed>
<Damage>70</Damage>
<LifetimeMS>390</LifetimeMS>
</Projectile>
<Projectile id="1">
<ObjectId>Silver Shield</ObjectId>
<Speed>120</Speed>
<Damage>110</Damage>
<LifetimeMS>190</LifetimeMS>
<Size>140</Size>
<ConditionEffect duration="1">Stunned</ConditionEffect>
<MultiHit />
<PassesCover />
<ParticleTrail />
</Projectile>
</Object>
<Object type="0x2f90" id="Green Jinx">
<Class>Projectile</Class>
<RemoteTexture>
<Id>5213252494557184</Id>
<Instance>draw</Instance>
</RemoteTexture>
<AngleCorrection>1</AngleCorrection>
</Object>
<Object type="0x2f91" id="Purple Jinx">
<Class>Projectile</Class>
<RemoteTexture>
<Id>6671831978213376</Id>
<Instance>draw</Instance>
</RemoteTexture>
<Rotation>100</Rotation>
</Object>
using System;
using System.Collections.Generic;
using System.Linq;
using System;
using wServer.logic.attack;
using wServer.logic.loot;
using wServer.logic.movement;
using wServer.logic.taunt;
using System.Text;
using wServer.logic.cond;
namespace wServer.logic
{
partial class BehaviorDb
{
private static _ Puppets = Behav()
.Init(0x2f86, Behaves("Rogue Puppet",
new RunBehaviors(
Once.Instance(new SetKey(-1, 1)),
Once.Instance(new SetKey(-3, 1)),
IfEqual.Instance(-3, 1, SmoothWandering.Instance(3, 2)),
IfEqual.Instance(-3, 2, SmoothWandering.Instance(4, 4)),
IfEqual.Instance(-1, 1,
new RunBehaviors(
CooldownExact.Instance(400, SimpleAttack.Instance(6, projectileIndex: 0)),
CooldownExact.Instance(4500, new RandomDo(25, new SetKey(-1, 2))
)
),
IfEqual.Instance(-1, 2,
new RunBehaviors(
new QueuedBehavior(
new SetKey(-3, 2),
SetSize.Instance(0),
CooldownExact.Instance(3500),
SetSize.Instance(100),
new SetKey(-3, 1),
CooldownExact.Instance(3400),
new SetKey(-1, 1)
),
new RunBehaviors(
CooldownExact.Instance(400, SimpleAttack.Instance(6, projectileIndex: 0))
)
)
)
)
)))
.Init(0x2f87, Behaves("Knight Puppet",
new RunBehaviors(
Once.Instance(new SetKey(-1 ,1)),
IfEqual.Instance(-1,1, SmoothWandering.Instance(3, 2)),
IfEqual.Instance(-1,1,
new RunBehaviors(
CooldownExact.Instance(550, SimpleAttack.Instance(6)),
CooldownExact.Instance(4500, new SetKey(-1 ,2))
)),
IfEqual.Instance(-1,2, Chasing.Instance(9, 7, 0, null)),
IfEqual.Instance(-1,2,
new RunBehaviors(
If.Instance(IsEntityPresent.Instance(1, null), new SetKey(-1,3))
)),
IfEqual.Instance(-1,3,
new RunBehaviors(
CooldownExact.Instance(550, SimpleAttack.Instance(6)),
new QueuedBehavior(
CooldownExact.Instance(300),
MultiAttack.Instance(3, 15* (float) Math.PI/180, 4, 0* (float) Math.PI/180, projectileIndex: 1),
CooldownExact.Instance(250),
SimpleAttack.Instance(6),
CooldownExact.Instance(250),
new SetKey(-1,4)
)
)),
IfEqual.Instance(-1,4, ReturnSpawn.Instance(8)),
IfEqual.Instance(-1,4,
new QueuedBehavior(
CooldownExact.Instance(1000),
new SetKey(-1,1)
))
)
))
.Init(0x2f8a, Behaves("Wizard Puppet",
new RunBehaviors(
Once.Instance(new SetKey(-2,1)),
IfEqual.Instance(-2,1,
new RunBehaviors(
CooldownExact.Instance(250, MultiAttack.Instance(7,5*(float) Math.PI/180,2,0)),
CooldownExact.Instance(2500, new SetKey(-1,1)),
SmoothWandering.Instance(3,2)
)),
IfEqual.Instance(-1,1,
new QueuedBehavior(
SpawnMinionImmediate.Instance(0x2f8b,1f,1,1),
CooldownExact.Instance(50),
new SetKey(-1,2)
)),
IfEqual.Instance(-1,2,
new QueuedBehavior(
OrderAllEntity.Instance(5,0x2f8b, new SetKey(-1,1)),
CooldownExact.Instance(10),
new SetKey(-1,3)
))
)))
.Init(0x2f8b, Behaves("Wizard Puppet Spell",
new RunBehaviors(
Chasing.Instance(10, 30, 1, null),
SetSize.Instance(0),
SetConditionEffect.Instance(ConditionEffectIndex.Invincible),
IfEqual.Instance(-1,1,
new QueuedBehavior(
CooldownExact.Instance(1500),
RingAttack.Instance(20,2,0),
CooldownExact.Instance(10),
Die.Instance
))
))
)
.Init(0x2f8c, Behaves("Priest Puppet",
new RunBehaviors(
SmoothWandering.Instance(3,2),
CooldownExact.Instance(350, SimpleAttack.Instance(7)),
CooldownExact.Instance(2500, HealGroup.Instance(8,250,"Puppets")),
CooldownExact.Instance(2500, Heal.Instance(1, 250, 0x2f8c))
))
)
.Init(0x2f8d, Behaves("Assasin Puppet",
new RunBehaviors(
SmoothWandering.Instance(3,2),
CooldownExact.Instance(400, SimpleAttack.Instance(6, projectileIndex: 0)),
Cooldown.Instance(2500, ThrowAttack.Instance(3, 10, 80))
))
)
.Init(0x2f8e, Behaves("Archer Puppet",
new RunBehaviors(
SmoothWandering.Instance(3,2),
CooldownExact.Instance(400, MultiAttack.Instance(8, 15*(float) Math.PI/180,3,0,projectileIndex:0)),
CooldownExact.Instance(3000, SimpleAttack.Instance(12,projectileIndex:1))
))
)
.Init(0x2f8f, Behaves("Puppet Master",
new RunBehaviors(
HpLesser.Instance(5000, new SetKey(-1,7)),
Once.Instance(new SetKey(-1,0)),
IfEqual.Instance(-1,0,
new RunBehaviors(
If.Instance(IsEntityPresent.Instance(8, null), new SetKey(-1,1))
)),
IfEqual.Instance(-1,1,
new QueuedBehavior(
SetConditionEffect.Instance(ConditionEffectIndex.Invulnerable),
new SimpleTaunt("Welcome to the Final Act, my friends. My Puppets require life essence in order to continue performing..."),
CooldownExact.Instance(3500),
new SimpleTaunt("Its not much, but your lives will have to do for now !"),
CooldownExact.Instance(2000),
new SetKey(-1,2)
)),
IfEqual.Instance(-1,2,
new RunBehaviors(
UnsetConditionEffect.Instance(ConditionEffectIndex.Invulnerable),
SetConditionEffect.Instance(ConditionEffectIndex.Armored),
InfiniteSpiralAttack.Instance(300, 5, -7.5f, projectileIndex: 1),
InfiniteSpiralAttack.Instance(301, 5, 7.5f, projectileIndex: 1),
new QueuedBehavior(
SpawnMinionImmediate.Instance(0x2f8c,3,2,3),
SpawnMinionImmediate.Instance(0x2f87,3,2,3),
CooldownExact.Instance(7000),
new SetKey(-1, 3)
)
)
),
IfEqual.Instance(-1,4,
new RunBehaviors(
UnsetConditionEffect.Instance(ConditionEffectIndex.Invulnerable),
InfiniteSpiralAttack.Instance(150, 5, 7, projectileIndex:1),
new QueuedBehavior(
new SimpleTaunt("Watch them dance, hero , as they drain your life away !"),
SpawnMinionImmediate.Instance(0x2f8c,3,0,1),
SpawnMinionImmediate.Instance(0x2f87,3,0,1),
CooldownExact.Instance(7000),
new SetKey(-1, 5)
)
)),
IfEqual.Instance(-1,3,
new RunBehaviors(
SmoothWandering.Instance(2, 3),
SetConditionEffect.Instance(ConditionEffectIndex.Invulnerable),
UnsetConditionEffect.Instance(ConditionEffectIndex.Armored),
Flashing.Instance(100, 0xff0000ff),
new QueuedBehavior(
CooldownExact.Instance(1800),
new SetKey(-1, 4)
)
)
),
IfEqual.Instance(-1,5,
new RunBehaviors(
SmoothWandering.Instance(2f, 4f),
UnsetConditionEffect.Instance(ConditionEffectIndex.Invulnerable),
CooldownExact.Instance(1000, RingAttack.Instance(7,4,0,2)),
CooldownExact.Instance(1500, MultiAttack.Instance(5, 15*(float) Math.PI/180, 3, 0)),
new QueuedBehavior(
new SimpleTaunt("Find me if you can hero ! Or die trying !"),
SpawnMinionImmediate.Instance(0x2f92,5,3,5),
CooldownExact.Instance(12000),
OrderAllEntity.Instance(50, 0x2f92 , new SetKey(-1,0)),
CooldownExact.Instance(100),
new SetKey(-1,6)
))),
IfEqual.Instance(-1,6,
new RunBehaviors(
SmoothWandering.Instance(2, 3),
SetConditionEffect.Instance(ConditionEffectIndex.Invulnerable),
UnsetConditionEffect.Instance(ConditionEffectIndex.Armored),
Flashing.Instance(100, 0xff0000ff),
new QueuedBehavior(
CooldownExact.Instance(1800),
new SetKey(-1, 2)
)
)
),
IfEqual.Instance(-1,7,
new QueuedBehavior(
SetConditionEffect.Instance(ConditionEffectIndex.Invincible),
UnsetConditionEffect.Instance(ConditionEffectIndex.Armored),
new SimpleTaunt("NO!!! This cannot be how my story ends !! I WILL HAVE MY ENCORE, HERO !"),
CooldownExact.Instance(5000),
SpawnMinionImmediate.Instance(0x2f95,1,1,1),
Cooldown.Instance(1),
Die.Instance
)
))
))
.Init(0x2f92, Behaves("Puppet Master Clone",
new RunBehaviors(
Once.Instance(new SimpleTaunt("Find me if you can hero ! Or die trying !")),
SetSize.Instance(150),
CooldownExact.Instance(1000, RingAttack.Instance(7,4,0,2)),
CooldownExact.Instance(1500, MultiAttack.Instance(5, 15*(float) Math.PI/180, 3, 0)),
Circling.Instance(7, 20, 3, 0x2f8f),
IfEqual.Instance(-1,0, Die.Instance)
))
)
.Init(0x2f95, Behaves("Puppet Master Treasure",
new RunBehaviors(
Once.Instance(SetConditionEffect.Instance(ConditionEffectIndex.Invulnerable)),
Once.Instance(new SetKey(-1,0)),
IfEqual.Instance(-1,0,
new QueuedBehavior(
CooldownExact.Instance(2500),
UnsetConditionEffect.Instance(ConditionEffectIndex.Invulnerable),
new SetKey(-1,1)
))
),
loot: new LootBehavior(LootDef.Empty,
Tuple.Create(100, new LootDef(1, 3, 1, 4,
Tuple.Create(0.025, (ILoot)new TierLoot(11, ItemType.Weapon)),
Tuple.Create(0.025, (ILoot)new TierLoot(12, ItemType.Armor)),
Tuple.Create(0.03, (ILoot)new TierLoot(11, ItemType.Armor)),
Tuple.Create(0.02, (ILoot)new TierLoot(5, ItemType.Ring)),
Tuple.Create(0.035, (ILoot)new TierLoot(10, ItemType.Weapon)),
Tuple.Create(0.035, (ILoot)new TierLoot(10, ItemType.Armor)),
Tuple.Create(0.055, (ILoot)new TierLoot(5, ItemType.Ability)),
Tuple.Create(1.0, (ILoot)new StatPotionLoot(StatPotion.Att))
))
)
)
);
//0x2f8f
// loot: new LootBehavior(LootDef.Empty,
// Tuple.Create(100, new LootDef(1, 3, 1, 4,
// Tuple.Create(0.015, (ILoot)new ItemLoot("Poop Sword")),
// Tuple.Create(0.025, (ILoot)new TierLoot(11, ItemType.Weapon)),
// Tuple.Create(0.025, (ILoot)new TierLoot(12, ItemType.Armor)),
// Tuple.Create(0.03, (ILoot)new TierLoot(11, ItemType.Armor)),
// Tuple.Create(0.02, (ILoot)new TierLoot(5, ItemType.Ring)),
// Tuple.Create(0.035, (ILoot)new TierLoot(10, ItemType.Weapon)),
// Tuple.Create(0.035, (ILoot)new TierLoot(10, ItemType.Armor)),
// Tuple.Create(0.055, (ILoot)new TierLoot(5, ItemType.Ability)),
// Tuple.Create(1.0, (ILoot)new StatPotionLoot(StatPotion.Att))
// ))
// )
}
}

