diff --git a/data/template/com/l2jserver/model/template/TestWeaponTemplate.java b/data/template/com/l2jserver/model/template/TestWeaponTemplate.java
deleted file mode 100644
index fdf191d9b..000000000
--- a/data/template/com/l2jserver/model/template/TestWeaponTemplate.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.l2jserver.model.template;
-
-import com.l2jserver.model.world.capability.Attackable;
-import com.l2jserver.model.world.capability.Attacker;
-import com.l2jserver.model.world.capability.Enchantable;
-
-public class TestWeaponTemplate extends WeaponTemplate {
- private static final int DAMAGE = 10;
- private static final int MAX_ENCHANT_LEVEL = 10;
-
- public TestWeaponTemplate() {
- super(null);
- }
-
- @Override
- public void attack(Attacker source, Attackable target) {
- // TODO deal damage!
- }
-
- @Override
- public void enchant(Enchantable target) {
- if (target.getEnchantLevel() == MAX_ENCHANT_LEVEL)
- return;
- // TODO do enchant
- }
-
- @Override
- public int getDamage() {
- return DAMAGE;
- }
-}
diff --git a/data/template/com/l2jserver/model/template/armor/AbstractGradeAArmorTemplate.java b/data/template/com/l2jserver/model/template/armor/AbstractGradeAArmorTemplate.java
new file mode 100644
index 000000000..bd9ddd956
--- /dev/null
+++ b/data/template/com/l2jserver/model/template/armor/AbstractGradeAArmorTemplate.java
@@ -0,0 +1,32 @@
+package com.l2jserver.model.template.armor;
+
+import com.l2jserver.model.id.TemplateID;
+import com.l2jserver.model.template.ArmorTemplate;
+import com.l2jserver.model.template.capability.Enchantable;
+import com.l2jserver.model.template.capability.Penalty;
+import com.l2jserver.model.world.capability.Castable;
+import com.l2jserver.model.world.capability.Equiper;
+import com.l2jserver.model.world.capability.Levelable;
+
+public abstract class AbstractGradeAArmorTemplate extends ArmorTemplate
+ implements Enchantable, Penalty {
+ public AbstractGradeAArmorTemplate(TemplateID id) {
+ super(id);
+ }
+
+ @Override
+ public void enchant(com.l2jserver.model.world.capability.Enchantable target) {
+ target.setEnchantLevel(target.getEnchantLevel() + 1);
+ }
+
+ @Override
+ public void penalty(Equiper user) {
+ if (!(user instanceof Levelable) && !(user instanceof Castable) && !(user instanceof Equiper))
+ return;
+ final Levelable levelable = (Levelable) user;
+ final Castable castable = (Castable) user;
+ if (levelable.getLevel() < 20) {
+
+ }
+ }
+}
diff --git a/data/template/com/l2jserver/model/template/armor/AbstractNoGradeArmorTemplate.java b/data/template/com/l2jserver/model/template/armor/AbstractNoGradeArmorTemplate.java
new file mode 100644
index 000000000..f1605eade
--- /dev/null
+++ b/data/template/com/l2jserver/model/template/armor/AbstractNoGradeArmorTemplate.java
@@ -0,0 +1,10 @@
+package com.l2jserver.model.template.armor;
+
+import com.l2jserver.model.id.TemplateID;
+import com.l2jserver.model.template.ArmorTemplate;
+
+public abstract class AbstractNoGradeArmorTemplate extends ArmorTemplate {
+ public AbstractNoGradeArmorTemplate(TemplateID id) {
+ super(id);
+ }
+}
diff --git a/data/template/com/l2jserver/model/template/armor/Dummy2ArmorTemplate.java b/data/template/com/l2jserver/model/template/armor/Dummy2ArmorTemplate.java
new file mode 100644
index 000000000..fa9cd703b
--- /dev/null
+++ b/data/template/com/l2jserver/model/template/armor/Dummy2ArmorTemplate.java
@@ -0,0 +1,41 @@
+package com.l2jserver.model.template.armor;
+
+import com.l2jserver.model.world.capability.Attackable;
+import com.l2jserver.model.world.capability.Attacker;
+import com.l2jserver.model.world.capability.Damagable;
+import com.l2jserver.model.world.capability.Enchantable;
+
+public class Dummy2ArmorTemplate extends AbstractGradeAArmorTemplate {
+ private static final int REDUCED_DAMAGE_PHYSICAL = 10;
+ private static final int REDUCED_DAMAGE_MAGICAL = 10;
+ private static final int MAX_ENCHANT = 10;
+
+ public Dummy2ArmorTemplate() {
+ super(null);
+ }
+
+ @Override
+ public void defend(Attacker source, Attackable target) {
+ }
+
+ @Override
+ public void interceptIncomingDamage(Damagable target) {
+ }
+
+ @Override
+ public void enchant(Enchantable target) {
+ if (target.getEnchantLevel() >= MAX_ENCHANT)
+ return;
+ super.enchant(target);
+ }
+
+ @Override
+ public int getPhysicalDefense() {
+ return REDUCED_DAMAGE_PHYSICAL;
+ }
+
+ @Override
+ public int getMagicalDefense() {
+ return REDUCED_DAMAGE_MAGICAL;
+ }
+}
diff --git a/data/template/com/l2jserver/model/template/armor/DummyArmorTemplate.java b/data/template/com/l2jserver/model/template/armor/DummyArmorTemplate.java
new file mode 100644
index 000000000..c51625e7a
--- /dev/null
+++ b/data/template/com/l2jserver/model/template/armor/DummyArmorTemplate.java
@@ -0,0 +1,32 @@
+package com.l2jserver.model.template.armor;
+
+import com.l2jserver.model.world.capability.Attackable;
+import com.l2jserver.model.world.capability.Attacker;
+import com.l2jserver.model.world.capability.Damagable;
+
+public class DummyArmorTemplate extends AbstractNoGradeArmorTemplate {
+ private static final int REDUCED_DAMAGE_PHYSICAL = 10;
+ private static final int REDUCED_DAMAGE_MAGICAL = 10;
+
+ public DummyArmorTemplate() {
+ super(null);
+ }
+
+ @Override
+ public void defend(Attacker source, Attackable target) {
+ }
+
+ @Override
+ public void interceptIncomingDamage(Damagable target) {
+ }
+
+ @Override
+ public int getPhysicalDefense() {
+ return REDUCED_DAMAGE_PHYSICAL;
+ }
+
+ @Override
+ public int getMagicalDefense() {
+ return REDUCED_DAMAGE_MAGICAL;
+ }
+}
diff --git a/data/template/com/l2jserver/model/template/TestPotionTemplate.java b/data/template/com/l2jserver/model/template/item/TestPotionTemplate.java
similarity index 76%
rename from data/template/com/l2jserver/model/template/TestPotionTemplate.java
rename to data/template/com/l2jserver/model/template/item/TestPotionTemplate.java
index 54429a488..7c4760e22 100644
--- a/data/template/com/l2jserver/model/template/TestPotionTemplate.java
+++ b/data/template/com/l2jserver/model/template/item/TestPotionTemplate.java
@@ -1,5 +1,6 @@
-package com.l2jserver.model.template;
+package com.l2jserver.model.template.item;
+import com.l2jserver.model.template.PotionTemplate;
import com.l2jserver.model.world.capability.Attackable;
import com.l2jserver.model.world.capability.Attacker;
diff --git a/data/template/com/l2jserver/model/template/TestSkillTemplate.java b/data/template/com/l2jserver/model/template/skill/TestSkillTemplate.java
similarity index 76%
rename from data/template/com/l2jserver/model/template/TestSkillTemplate.java
rename to data/template/com/l2jserver/model/template/skill/TestSkillTemplate.java
index ec96e0377..414846e0b 100644
--- a/data/template/com/l2jserver/model/template/TestSkillTemplate.java
+++ b/data/template/com/l2jserver/model/template/skill/TestSkillTemplate.java
@@ -1,5 +1,6 @@
-package com.l2jserver.model.template;
+package com.l2jserver.model.template.skill;
+import com.l2jserver.model.template.SkillTemplate;
import com.l2jserver.model.world.capability.Castable;
import com.l2jserver.model.world.capability.Caster;
diff --git a/data/template/com/l2jserver/model/template/weapon/TestWeaponTemplate.java b/data/template/com/l2jserver/model/template/weapon/TestWeaponTemplate.java
new file mode 100644
index 000000000..a2c3f8115
--- /dev/null
+++ b/data/template/com/l2jserver/model/template/weapon/TestWeaponTemplate.java
@@ -0,0 +1,31 @@
+package com.l2jserver.model.template.weapon;
+
+import com.l2jserver.model.template.WeaponTemplate;
+import com.l2jserver.model.world.capability.Attackable;
+import com.l2jserver.model.world.capability.Attacker;
+
+public class TestWeaponTemplate extends WeaponTemplate {
+ private static final int DAMAGE_PHYSICAL = 10;
+ private static final int DAMAGE_MAGICAL = 10;
+ private static final int MAX_ENCHANT_LEVEL = 10;
+
+ public TestWeaponTemplate() {
+ super(null);
+ }
+
+ @Override
+ public void attack(Attacker source, Attackable target) {
+ source.attack(target, this);
+ target.receiveAttack(source, this);
+ }
+
+ @Override
+ public int getPhysicalDamage() {
+ return DAMAGE_PHYSICAL;
+ }
+
+ @Override
+ public int getMagicalDamage() {
+ return DAMAGE_MAGICAL;
+ }
+}
diff --git a/src/main/java/com/l2jserver/game/net/Lineage2PipelineFactory.java b/src/main/java/com/l2jserver/game/net/Lineage2PipelineFactory.java
index 87063e564..854f88e86 100644
--- a/src/main/java/com/l2jserver/game/net/Lineage2PipelineFactory.java
+++ b/src/main/java/com/l2jserver/game/net/Lineage2PipelineFactory.java
@@ -5,6 +5,7 @@ import static org.jboss.netty.channel.Channels.pipeline;
import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.ChannelPipelineFactory;
+import com.google.inject.Inject;
import com.google.inject.Injector;
import com.l2jserver.game.net.codec.Lineage2Decoder;
import com.l2jserver.game.net.codec.Lineage2Decrypter;
@@ -18,6 +19,7 @@ import com.l2jserver.service.logging.LoggingService;
public class Lineage2PipelineFactory implements ChannelPipelineFactory {
private final Injector injector;
+ @Inject
public Lineage2PipelineFactory(Injector injector) {
this.injector = injector;
}
diff --git a/src/main/java/com/l2jserver/model/template/ArmorTemplate.java b/src/main/java/com/l2jserver/model/template/ArmorTemplate.java
new file mode 100644
index 000000000..3dae57155
--- /dev/null
+++ b/src/main/java/com/l2jserver/model/template/ArmorTemplate.java
@@ -0,0 +1,12 @@
+package com.l2jserver.model.template;
+
+import com.l2jserver.model.id.TemplateID;
+import com.l2jserver.model.template.capability.Defendable;
+import com.l2jserver.model.template.capability.IncomingDamageIntercept;
+
+public abstract class ArmorTemplate extends ItemTemplate implements Defendable,
+ IncomingDamageIntercept {
+ public ArmorTemplate(TemplateID id) {
+ super(id);
+ }
+}
diff --git a/src/main/java/com/l2jserver/model/template/WeaponTemplate.java b/src/main/java/com/l2jserver/model/template/WeaponTemplate.java
index f1ff61097..da7e34a7d 100644
--- a/src/main/java/com/l2jserver/model/template/WeaponTemplate.java
+++ b/src/main/java/com/l2jserver/model/template/WeaponTemplate.java
@@ -2,10 +2,8 @@ package com.l2jserver.model.template;
import com.l2jserver.model.id.TemplateID;
import com.l2jserver.model.template.capability.Attackable;
-import com.l2jserver.model.template.capability.Enchantable;
-public abstract class WeaponTemplate extends ItemTemplate implements
- Attackable, Enchantable {
+public abstract class WeaponTemplate extends ItemTemplate implements Attackable {
public WeaponTemplate(TemplateID id) {
super(id);
}
diff --git a/src/main/java/com/l2jserver/model/template/capability/Attackable.java b/src/main/java/com/l2jserver/model/template/capability/Attackable.java
index 43725bc2a..36c381ec3 100644
--- a/src/main/java/com/l2jserver/model/template/capability/Attackable.java
+++ b/src/main/java/com/l2jserver/model/template/capability/Attackable.java
@@ -6,5 +6,6 @@ public interface Attackable extends TemplateCapability {
void attack(Attacker source,
com.l2jserver.model.world.capability.Attackable target);
- public int getDamage();
+ public int getPhysicalDamage();
+ public int getMagicalDamage();
}
diff --git a/src/main/java/com/l2jserver/model/template/capability/Defendable.java b/src/main/java/com/l2jserver/model/template/capability/Defendable.java
new file mode 100644
index 000000000..8ab0ac43c
--- /dev/null
+++ b/src/main/java/com/l2jserver/model/template/capability/Defendable.java
@@ -0,0 +1,11 @@
+package com.l2jserver.model.template.capability;
+
+import com.l2jserver.model.world.capability.Attacker;
+
+public interface Defendable extends TemplateCapability {
+ void defend(Attacker source,
+ com.l2jserver.model.world.capability.Attackable target);
+
+ public int getPhysicalDefense();
+ public int getMagicalDefense();
+}
diff --git a/src/main/java/com/l2jserver/model/template/capability/Equipable.java b/src/main/java/com/l2jserver/model/template/capability/Equipable.java
new file mode 100644
index 000000000..5285044a2
--- /dev/null
+++ b/src/main/java/com/l2jserver/model/template/capability/Equipable.java
@@ -0,0 +1,7 @@
+package com.l2jserver.model.template.capability;
+
+import com.l2jserver.model.world.capability.Equiper;
+
+public interface Equipable extends TemplateCapability {
+ void equip(Equiper equiper);
+}
diff --git a/src/main/java/com/l2jserver/model/template/capability/IncomingDamageIntercept.java b/src/main/java/com/l2jserver/model/template/capability/IncomingDamageIntercept.java
new file mode 100644
index 000000000..1c2eff5bb
--- /dev/null
+++ b/src/main/java/com/l2jserver/model/template/capability/IncomingDamageIntercept.java
@@ -0,0 +1,13 @@
+package com.l2jserver.model.template.capability;
+
+import com.l2jserver.model.world.capability.Damagable;
+
+/**
+ * Indicates that an template has the ability to intercept incoming damage.
+ *
+ * @author Rogiel
+ *
+ */
+public interface IncomingDamageIntercept extends TemplateCapability {
+ void interceptIncomingDamage(Damagable target);
+}
diff --git a/src/main/java/com/l2jserver/model/template/capability/OutgoingDamageIntercept.java b/src/main/java/com/l2jserver/model/template/capability/OutgoingDamageIntercept.java
new file mode 100644
index 000000000..04b21eb38
--- /dev/null
+++ b/src/main/java/com/l2jserver/model/template/capability/OutgoingDamageIntercept.java
@@ -0,0 +1,12 @@
+package com.l2jserver.model.template.capability;
+
+import com.l2jserver.model.world.capability.Damagable;
+
+/**
+ * Indicates that an template has the ability to intercept outgoing damage.
+ *
+ * @author Rogiel
+ */
+public interface OutgoingDamageIntercept extends TemplateCapability {
+ void interceptOutgoingDamage(Damagable target);
+}
diff --git a/src/main/java/com/l2jserver/model/template/capability/Penalty.java b/src/main/java/com/l2jserver/model/template/capability/Penalty.java
new file mode 100644
index 000000000..069abeb2f
--- /dev/null
+++ b/src/main/java/com/l2jserver/model/template/capability/Penalty.java
@@ -0,0 +1,14 @@
+package com.l2jserver.model.template.capability;
+
+import com.l2jserver.model.template.AbstractTemplate;
+import com.l2jserver.model.world.capability.Equiper;
+
+/**
+ * Indicated than an {@link AbstractTemplate} can add penalties to an given
+ * user.
+ *
+ * @author Rogiel
+ */
+public interface Penalty extends TemplateCapability {
+ void penalty(Equiper user);
+}
diff --git a/src/main/java/com/l2jserver/model/world/Item.java b/src/main/java/com/l2jserver/model/world/Item.java
index a4059ab54..e9766fa98 100644
--- a/src/main/java/com/l2jserver/model/world/Item.java
+++ b/src/main/java/com/l2jserver/model/world/Item.java
@@ -2,8 +2,6 @@ package com.l2jserver.model.world;
import java.util.List;
-import com.l2jserver.model.world.capability.Attackable;
-import com.l2jserver.model.world.capability.Attacker;
import com.l2jserver.model.world.capability.Child;
import com.l2jserver.model.world.capability.Listenable;
import com.l2jserver.model.world.capability.Playable;
@@ -14,8 +12,7 @@ import com.l2jserver.util.Coordinate;
import com.l2jserver.util.factory.CollectionFactory;
public class Item extends AbstractObject implements Playable, Spawnable,
- Attacker, Attackable, Child,
- Listenable {
+ Child, Listenable {
private final List listeners = CollectionFactory
.newList(ItemListener.class);
@@ -24,18 +21,6 @@ public class Item extends AbstractObject implements Playable, Spawnable,
}
- @Override
- public void receiveAttack(Attacker attacker) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void attack(Attackable target) {
- // TODO Auto-generated method stub
-
- }
-
@Override
public void addListener(ItemListener listener) {
listeners.add(listener);
diff --git a/src/main/java/com/l2jserver/model/world/Player.java b/src/main/java/com/l2jserver/model/world/Player.java
index 7592bb620..776dd9bf0 100644
--- a/src/main/java/com/l2jserver/model/world/Player.java
+++ b/src/main/java/com/l2jserver/model/world/Player.java
@@ -7,6 +7,7 @@ import com.l2jserver.model.world.capability.Attackable;
import com.l2jserver.model.world.capability.Attacker;
import com.l2jserver.model.world.capability.Castable;
import com.l2jserver.model.world.capability.Caster;
+import com.l2jserver.model.world.capability.Levelable;
import com.l2jserver.model.world.capability.Listenable;
import com.l2jserver.model.world.capability.Parent;
import com.l2jserver.model.world.capability.Playable;
@@ -24,7 +25,7 @@ import com.l2jserver.util.factory.CollectionFactory;
*/
public abstract class Player extends AbstractObject implements Playable,
Spawnable, Attacker, Attackable,
- Listenable, Caster, Parent {
+ Listenable, Caster, Parent, Levelable {
private final List listeners = CollectionFactory
.newList(PlayerListener.class);
@@ -34,14 +35,14 @@ public abstract class Player extends AbstractObject implements Playable,
}
@Override
- public void receiveAttack(Attacker attacker) {
- // TODO Auto-generated method stub
+ public void attack(Attackable target,
+ com.l2jserver.model.template.capability.Attackable weapon) {
}
@Override
- public void attack(Attackable target) {
- // TODO Auto-generated method stub
+ public void receiveAttack(Attacker attacker,
+ com.l2jserver.model.template.capability.Attackable weapon) {
}
@@ -79,4 +80,15 @@ public abstract class Player extends AbstractObject implements Playable,
// TODO Auto-generated method stub
return false;
}
+
+ @Override
+ public int getLevel() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public void setLevel(int level) {
+ // TODO Auto-generated method stub
+ }
}
diff --git a/src/main/java/com/l2jserver/model/world/capability/Attackable.java b/src/main/java/com/l2jserver/model/world/capability/Attackable.java
index 7cdf410eb..fd3f2d6e9 100644
--- a/src/main/java/com/l2jserver/model/world/capability/Attackable.java
+++ b/src/main/java/com/l2jserver/model/world/capability/Attackable.java
@@ -9,5 +9,6 @@ import com.l2jserver.model.world.AbstractObject;
* @author Rogiel
*/
public interface Attackable extends ObjectCapability {
- void receiveAttack(Attacker attacker);
+ void receiveAttack(Attacker attacker,
+ com.l2jserver.model.template.capability.Attackable weapon);
}
diff --git a/src/main/java/com/l2jserver/model/world/capability/Attacker.java b/src/main/java/com/l2jserver/model/world/capability/Attacker.java
index 4e797926d..99cdfe243 100644
--- a/src/main/java/com/l2jserver/model/world/capability/Attacker.java
+++ b/src/main/java/com/l2jserver/model/world/capability/Attacker.java
@@ -8,5 +8,6 @@ import com.l2jserver.model.world.AbstractObject;
* @author Rogiel
*/
public interface Attacker extends ObjectCapability {
- void attack(Attackable target);
+ void attack(Attackable target,
+ com.l2jserver.model.template.capability.Attackable weapon);
}
diff --git a/src/main/java/com/l2jserver/model/world/capability/Damagable.java b/src/main/java/com/l2jserver/model/world/capability/Damagable.java
new file mode 100644
index 000000000..0bd937d4c
--- /dev/null
+++ b/src/main/java/com/l2jserver/model/world/capability/Damagable.java
@@ -0,0 +1,16 @@
+package com.l2jserver.model.world.capability;
+
+import com.l2jserver.model.world.AbstractObject;
+
+/**
+ * Defines an {@link AbstractObject} that can be damaged (HP)
+ *
+ * @author Rogiel
+ */
+public interface Damagable extends ObjectCapability {
+ void receiveDamage(int damage);
+
+ int getHP();
+
+ void setHP(int hp);
+}
diff --git a/src/main/java/com/l2jserver/model/world/capability/Enchantable.java b/src/main/java/com/l2jserver/model/world/capability/Enchantable.java
index ef91ac4d1..bc9884ee1 100644
--- a/src/main/java/com/l2jserver/model/world/capability/Enchantable.java
+++ b/src/main/java/com/l2jserver/model/world/capability/Enchantable.java
@@ -8,7 +8,18 @@ import com.l2jserver.model.world.AbstractObject;
* @author Rogiel
*/
public interface Enchantable extends ObjectCapability {
- public int getEnchantLevel();
+ /**
+ * Get the current enchant level in the object
+ *
+ * @return the enchant level
+ */
+ int getEnchantLevel();
- public int setEnchantLevel();
+ /**
+ * Set the new enchant level in the object
+ *
+ * @param level
+ * the enchant level
+ */
+ void setEnchantLevel(int level);
}
diff --git a/src/main/java/com/l2jserver/model/world/capability/Equiper.java b/src/main/java/com/l2jserver/model/world/capability/Equiper.java
index 8edfff24a..5bd1a6e41 100644
--- a/src/main/java/com/l2jserver/model/world/capability/Equiper.java
+++ b/src/main/java/com/l2jserver/model/world/capability/Equiper.java
@@ -10,6 +10,9 @@ import com.l2jserver.model.world.AbstractObject;
*/
public interface Equiper extends ObjectCapability {
void equip(Equipable equipable);
+
+ boolean isEquiped(Equipable equipment);
+ boolean isEquiped(com.l2jserver.model.template.capability.Equipable equipable);
void setEquipment(Object slot, Equipable equipment);
diff --git a/src/main/java/com/l2jserver/model/world/capability/Killable.java b/src/main/java/com/l2jserver/model/world/capability/Killable.java
new file mode 100644
index 000000000..e3d0556d1
--- /dev/null
+++ b/src/main/java/com/l2jserver/model/world/capability/Killable.java
@@ -0,0 +1,20 @@
+package com.l2jserver.model.world.capability;
+
+import com.l2jserver.model.world.AbstractObject;
+import com.l2jserver.model.world.WorldObject;
+
+/**
+ * Defines an {@link AbstractObject} that can be killed.
+ *
+ * @author Rogiel
+ */
+public interface Killable extends ObjectCapability {
+ /**
+ * Process the dying routines. Note that if the object killed himself,
+ * killer must be his instance.
+ *
+ * @param killer
+ * the killer. Can be null if unknown.
+ */
+ void die(WorldObject killer);
+}
diff --git a/src/main/java/com/l2jserver/model/world/capability/Levelable.java b/src/main/java/com/l2jserver/model/world/capability/Levelable.java
new file mode 100644
index 000000000..d048be74a
--- /dev/null
+++ b/src/main/java/com/l2jserver/model/world/capability/Levelable.java
@@ -0,0 +1,24 @@
+package com.l2jserver.model.world.capability;
+
+import com.l2jserver.model.world.AbstractObject;
+
+/**
+ * Defines an {@link AbstractObject} that has levels.
+ *
+ * @author Rogiel
+ */
+public interface Levelable extends ObjectCapability {
+ /**
+ * Get this object`s level
+ *
+ * @return the level
+ */
+ int getLevel();
+
+ /**
+ * Set this object's level
+ *
+ * @param level
+ */
+ void setLevel(int level);
+}
diff --git a/src/main/java/com/l2jserver/model/world/capability/Mana.java b/src/main/java/com/l2jserver/model/world/capability/Mana.java
new file mode 100644
index 000000000..3ba077235
--- /dev/null
+++ b/src/main/java/com/l2jserver/model/world/capability/Mana.java
@@ -0,0 +1,16 @@
+package com.l2jserver.model.world.capability;
+
+import com.l2jserver.model.world.AbstractObject;
+
+/**
+ * Defines an {@link AbstractObject} that can be damaged (HP)
+ *
+ * @author Rogiel
+ */
+public interface Mana extends ObjectCapability {
+ void consumeMana(int amount);
+
+ int getMP();
+
+ void setMP(int mana);
+}
diff --git a/src/main/java/com/l2jserver/routines/InitializationRoutine.java b/src/main/java/com/l2jserver/routines/InitializationRoutine.java
new file mode 100644
index 000000000..d2a24f555
--- /dev/null
+++ b/src/main/java/com/l2jserver/routines/InitializationRoutine.java
@@ -0,0 +1,9 @@
+package com.l2jserver.routines;
+
+public class InitializationRoutine implements Routine {
+ @Override
+ public void run() {
+ // TODO Auto-generated method stub
+
+ }
+}
diff --git a/src/main/java/com/l2jserver/routines/Routine.java b/src/main/java/com/l2jserver/routines/Routine.java
new file mode 100644
index 000000000..3848d3115
--- /dev/null
+++ b/src/main/java/com/l2jserver/routines/Routine.java
@@ -0,0 +1,4 @@
+package com.l2jserver.routines;
+
+public interface Routine extends Runnable {
+}
diff --git a/src/main/java/com/l2jserver/service/network/NetworkConfiguration.java b/src/main/java/com/l2jserver/service/network/NetworkConfiguration.java
index 921a5f7dd..02f5659c9 100644
--- a/src/main/java/com/l2jserver/service/network/NetworkConfiguration.java
+++ b/src/main/java/com/l2jserver/service/network/NetworkConfiguration.java
@@ -4,10 +4,8 @@ import java.net.InetSocketAddress;
import com.l2jserver.service.configuration.Configuration;
import com.l2jserver.service.configuration.Configuration.ConfigurationName;
-import com.l2jserver.service.configuration.Configuration.ConfigurationPrefix;
@ConfigurationName("network")
-@ConfigurationPrefix("net")
public interface NetworkConfiguration extends Configuration {
// TODO set default value
/**