Destrodevianne

Dolls System L2JMega

Jul 20th, 2025
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ### Eclipse Workspace Patch 1.0
  2. #P L2jMega_Interlude
  3. diff --git java/Base/Data/XMLDocument.java java/Base/Data/XMLDocument.java
  4. new file mode 100644
  5. index 0000000..4a0c9c3
  6. --- /dev/null
  7. +++ java/Base/Data/XMLDocument.java
  8. @@ -0,0 +1,123 @@
  9. +package Base.Data;
  10. +
  11. +
  12. +
  13. +import com.l2jmega.gameserver.templates.StatsSet;
  14. +
  15. +import java.io.File;
  16. +import java.util.logging.Level;
  17. +import java.util.logging.Logger;
  18. +
  19. +import javax.xml.parsers.DocumentBuilderFactory;
  20. +import javax.xml.transform.OutputKeys;
  21. +import javax.xml.transform.Transformer;
  22. +import javax.xml.transform.TransformerException;
  23. +import javax.xml.transform.TransformerFactory;
  24. +import javax.xml.transform.dom.DOMSource;
  25. +import javax.xml.transform.stream.StreamResult;
  26. +
  27. +
  28. +
  29. +import org.w3c.dom.Document;
  30. +import org.w3c.dom.NamedNodeMap;
  31. +import org.w3c.dom.Node;
  32. +
  33. +/**
  34. + * An XML document, relying on a static and single DocumentBuilderFactory.
  35. + */
  36. +public abstract class XMLDocument
  37. +{
  38. +   protected static final Logger LOG = Logger.getLogger(XMLDocument.class.getName());
  39. +  
  40. +   protected Document document;
  41. +  
  42. +   private static final DocumentBuilderFactory BUILDER;
  43. +   static
  44. +   {
  45. +       BUILDER = DocumentBuilderFactory.newInstance();
  46. +       BUILDER.setValidating(false);
  47. +       BUILDER.setIgnoringComments(true);
  48. +   }
  49. +  
  50. +   abstract protected void load();
  51. +  
  52. +   abstract protected void parseDocument(Document doc, File f);
  53. +  
  54. +   public void loadDocument(String filePath)
  55. +   {
  56. +       loadDocument(new File(filePath));
  57. +   }
  58. +  
  59. +   public void writeDocument(Document doc, String fileName)
  60. +   {
  61. +       try
  62. +       {
  63. +           TransformerFactory transformerFactory = TransformerFactory.newInstance();
  64. +           Transformer transformer = transformerFactory.newTransformer();
  65. +           transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
  66. +           transformer.setOutputProperty(OutputKeys.INDENT, "yes");
  67. +           transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
  68. +          
  69. +           DOMSource source = new DOMSource(doc);
  70. +           StreamResult result = new StreamResult(new File(fileName));
  71. +          
  72. +           transformer.transform(source, result);
  73. +           LOG.info("XML file saved to " + fileName);
  74. +       }
  75. +       catch (TransformerException e)
  76. +       {
  77. +           LOG.warning("Error saving XML file: " + e.getMessage());
  78. +       }
  79. +   }
  80. +  
  81. +   /**
  82. +    * Parse an entire directory or file if found.
  83. +    * @param file
  84. +    */
  85. +   public void loadDocument(File file)
  86. +   {
  87. +       if (!file.exists())
  88. +       {
  89. +           LOG.severe("The following file or directory doesn't exist: " + file.getName());
  90. +           return;
  91. +       }
  92. +      
  93. +       if (file.isDirectory())
  94. +       {
  95. +           for (File f : file.listFiles())
  96. +           {
  97. +               loadDocument(f);
  98. +           }
  99. +       }
  100. +       else if (file.isFile())
  101. +       {
  102. +           try
  103. +           {
  104. +               parseDocument(BUILDER.newDocumentBuilder().parse(file), file);
  105. +           }
  106. +           catch (Exception e)
  107. +           {
  108. +               LOG.log(Level.SEVERE, "Error loading XML file " + file.getName(), e);
  109. +           }
  110. +       }
  111. +   }
  112. +  
  113. +   public Document getDocument()
  114. +   {
  115. +       return document;
  116. +   }
  117. +  
  118. +   /**
  119. +    * This method parses the content of a NamedNodeMap and feed the given StatsSet.
  120. +    * @param attrs : The NamedNodeMap to parse.
  121. +    * @param set : The StatsSet to feed.
  122. +    */
  123. +   public static void parseAndFeed(NamedNodeMap attrs, StatsSet set)
  124. +   {
  125. +       for (int i = 0; i < attrs.getLength(); i++)
  126. +       {
  127. +           final Node attr = attrs.item(i);
  128. +           set.set(attr.getNodeName(), attr.getNodeValue());
  129. +       }
  130. +   }
  131. +}
  132. diff --git java/Base/DollSystem/Doll.java java/Base/DollSystem/Doll.java
  133. new file mode 100644
  134. index 0000000..4c6c9be
  135. --- /dev/null
  136. +++ java/Base/DollSystem/Doll.java
  137. @@ -0,0 +1,25 @@
  138. +package Base.DollSystem;
  139. +/**
  140. + * Terius Dolls.
  141. + */
  142. +public class Doll {
  143. +    private int id;
  144. +    private int skillId;
  145. +    private int skillLvl;
  146. +
  147. +    public Doll(int id, int skillId, int skillLvl) {
  148. +        this.id = id;
  149. +        this.skillId = skillId;
  150. +        this.skillLvl = skillLvl;
  151. +    }
  152. +
  153. +    public int getId() {
  154. +        return id;
  155. +    }
  156. +
  157. +    public int getSkillId() {
  158. +        return skillId;
  159. +    }
  160. +
  161. +    public int getSkillLvl() {
  162. +        return skillLvl;
  163. +    }
  164. +}
  165. diff --git java/Base/DollSystem/DollsData.java java/Base/DollSystem/DollsData.java
  166. new file mode 100644
  167. index 0000000..52e1b97
  168. --- /dev/null
  169. +++ java/Base/DollSystem/DollsData.java
  170. @@ -0,0 +1,222 @@
  171. +package Base.DollSystem;
  172. +
  173. +import Base.Data.XMLDocument;
  174. +
  175. +import com.l2jmega.gameserver.data.SkillTable;
  176. +import com.l2jmega.gameserver.model.L2Skill;
  177. +import com.l2jmega.gameserver.model.actor.instance.Player;
  178. +import com.l2jmega.gameserver.model.item.instance.ItemInstance;
  179. +
  180. +import java.io.File;
  181. +import java.util.HashMap;
  182. +import java.util.List;
  183. +import java.util.Map;
  184. +import java.util.stream.Collectors;
  185. +
  186. +
  187. +import org.w3c.dom.Document;
  188. +import org.w3c.dom.NamedNodeMap;
  189. +import org.w3c.dom.Node;
  190. +/**
  191. + * Terius Dolls.
  192. + */
  193. +public class DollsData extends XMLDocument {
  194. +    private Map<Integer, Doll> dolls;
  195. +
  196. +    public DollsData() {
  197. +        dolls = new HashMap<>();
  198. +        load();
  199. +    }
  200. +
  201. +    public void reload() {
  202. +        dolls.clear();
  203. +        load();
  204. +    }
  205. +
  206. +    public static DollsData getInstance() {
  207. +        return SingletonHolder.INSTANCE;
  208. +    }
  209. +
  210. +    private static class SingletonHolder {
  211. +        protected static final DollsData INSTANCE = new DollsData();
  212. +    }
  213. +
  214. +    @Override
  215. +    protected void load() {
  216. +        loadDocument("./data/xml/Dolls.xml");
  217. +        LOG.info("DollsData: Loaded " + dolls.size() + " dolls.");
  218. +    }
  219. +
  220. +    @Override
  221. +    protected void parseDocument(Document doc, File file) {
  222. +        try {
  223. +            final Node root = doc.getFirstChild();
  224. +
  225. +            for (Node node = root.getFirstChild(); node != null; node = node.getNextSibling()) {
  226. +                if (!"Doll".equalsIgnoreCase(node.getNodeName())) {
  227. +                    continue;
  228. +                }
  229. +
  230. +                NamedNodeMap attrs = node.getAttributes();
  231. +                int id = Integer.parseInt(attrs.getNamedItem("Id").getNodeValue());
  232. +                int skillId = Integer.parseInt(attrs.getNamedItem("SkillId").getNodeValue());
  233. +                int skillLvl = Integer.parseInt(attrs.getNamedItem("SkillLvl").getNodeValue());
  234. +
  235. +                Doll doll = new Doll(id, skillId, skillLvl);
  236. +                dolls.put(id, doll);
  237. +            }
  238. +        } catch (Exception e) {
  239. +            // LOG.warning("DollsData: Error while loading dolls: " + e);
  240. +            e.printStackTrace();
  241. +        }
  242. +    }
  243. +
  244. +    public Map<Integer, Doll> getDolls() {
  245. +        return dolls;
  246. +    }
  247. +
  248. +    public Doll getDollById(int id) {
  249. +        return dolls.get(id);
  250. +    }
  251. +    public boolean isDollById(int id) {
  252. +        return dolls.containsKey(id);
  253. +    }
  254. +    
  255. +    
  256. +    public static Doll getDoll(Player player)
  257. +   {
  258. +       List<ItemInstance> collect = player.getInventory().getItems().stream().filter(x -> DollsData.getInstance().isDollById(x.getItemId())).collect(Collectors.toList());
  259. +       int skillLv = 0;
  260. +       int itemId = 0;
  261. +       System.out.println(collect.isEmpty());
  262. +       if(!collect.isEmpty()){
  263. +           for (ItemInstance y : collect)
  264. +           {
  265. +               int skillLvl = DollsData.getInstance().getDollById(y.getItemId()).getSkillLvl();
  266. +               if (skillLvl > skillLv)
  267. +               {
  268. +                   skillLv = skillLvl;
  269. +                   itemId = y.getItemId();
  270. +               }
  271. +           }
  272. +       }
  273. +       if(itemId == 0)
  274. +           return null;
  275. +       return DollsData.getInstance().getDollById(itemId);
  276. +   }
  277. +    
  278. +    public static void setSkillForDoll(Player player, int dollItemId) {
  279. +        Doll doll = DollsData.getInstance().getDollById(dollItemId);
  280. +
  281. +        if (doll == null) {
  282. +            return;
  283. +        }
  284. +
  285. +        int skillId = doll.getSkillId();
  286. +        int skillLvl = doll.getSkillLvl();
  287. +
  288. +        L2Skill skill = SkillTable.getInstance().getInfo(skillId, skillLvl);
  289. +
  290. +        if (skill != null) {
  291. +            int currentSkillLvl = player.getSkillLevel(skillId);
  292. +
  293. +            if (currentSkillLvl > 0) {
  294. +              
  295. +                player.removeSkill(skillId);
  296. +            }
  297. +
  298. +            if (player.getInventory().getItemByItemId(dollItemId) == null) {
  299. +                
  300. +               refreshAllDollSkills(player);
  301. +            } else {
  302. +                
  303. +                player.addSkill(skill);
  304. +            }
  305. +
  306. +            player.sendSkillList();
  307. +        }
  308. +    }
  309. +
  310. +    public static void refreshAllDollSkills(Player player) {
  311. +        Map<Integer, Integer> highestSkillLevels = new HashMap<>();
  312. +
  313. +        List<ItemInstance> collect = player.getInventory().getItems()
  314. +                .stream()
  315. +                .filter(x -> DollsData.getInstance().isDollById(x.getItemId()))
  316. +                .collect(Collectors.toList());
  317. +
  318. +        for (ItemInstance dollItem : collect) {
  319. +            int skillId = DollsData.getInstance().getDollById(dollItem.getItemId()).getSkillId();
  320. +            int skillLvl = DollsData.getInstance().getDollById(dollItem.getItemId()).getSkillLvl();
  321. +
  322. +            if (!highestSkillLevels.containsKey(skillId) || skillLvl > highestSkillLevels.get(skillId)) {
  323. +                highestSkillLevels.put(skillId, skillLvl);
  324. +            }
  325. +        }
  326. +
  327. +        for (Map.Entry<Integer, Integer> entry : highestSkillLevels.entrySet()) {
  328. +            L2Skill skill = SkillTable.getInstance().getInfo(entry.getKey(), entry.getValue());
  329. +
  330. +            if (skill != null) {
  331. +                player.addSkill(skill);
  332. +            }
  333. +        }
  334. +
  335. +        player.sendSkillList();
  336. +    }
  337. +
  338. +
  339. +
  340. +
  341. +    
  342. +    
  343. +    
  344. +    
  345. + /*   public static void setSkillDoll(Player player)
  346. +    {
  347. +       Doll doll = getDoll(player);
  348. +       if(doll == null)
  349. +       {
  350. +           Map<Integer, Doll> dolls2 = DollsData.getInstance().getDolls();
  351. +           for (Entry<Integer, Doll> mapEntry : dolls2.entrySet()){
  352. +               int skillId = mapEntry.getValue().getSkillId();
  353. +               int skillLvl = mapEntry.getValue().getSkillLvl();
  354. +               L2Skill skill = SkillTable.getInstance().getInfo(skillId, skillLvl);
  355. +               if (skill != null) {
  356. +                   if (player.getSkillLevel(skillId) != skillLvl) {
  357. +                       player.removeSkill(skill);
  358. +                       player.sendSkillList();
  359. +                   }
  360. +               }
  361. +           }
  362. +       }
  363. +       else{
  364. +           int skillId = doll.getSkillId();
  365. +           int skillLvl = doll.getSkillLvl();
  366. +           L2Skill skill = SkillTable.getInstance().getInfo(skillId, skillLvl);
  367. +            if (skill != null) {
  368. +                if (player.getSkillLevel(skillId) != skillLvl) {
  369. +                   player.addSkill(skill);
  370. +                   player.sendSkillList();
  371. +                }
  372. +            }
  373. +       }
  374. +    }*/
  375. +    
  376. +    
  377. +
  378. +
  379. +
  380. +    
  381. +    
  382. +    
  383. +    public static void getSkillDoll(Player player, ItemInstance item) {
  384. +        if (item != null) {
  385. +            if (DollsData.getInstance().isDollById(item.getItemId())) {
  386. +                setSkillForDoll(player, item.getItemId());
  387. +                refreshAllDollSkills(player);
  388. +            }
  389. +        } else {
  390. +
  391. +        }
  392. +    }
  393. +
  394. +}
  395. \ No newline at end of file
  396. diff --git java/com/l2jmega/gameserver/GameServer.java java/com/l2jmega/gameserver/GameServer.java
  397. index ddf88d5..b96d3db 100644
  398. --- java/com/l2jmega/gameserver/GameServer.java
  399. +++ java/com/l2jmega/gameserver/GameServer.java
  400. @@ -136,7 +136,7 @@
  401.  import com.l2jmega.commons.mmocore.SelectorThread;
  402.  import com.l2jmega.commons.util.SysUtil;
  403.  
  404. -
  405. +import Base.DollSystem.DollsData;
  406.  import phantom.PhantomNameManager;
  407.  import phantom.PhantomTitleManager;
  408.  import phantom.Phantom_Farm;
  409. @@ -468,6 +468,11 @@
  410.        
  411.  
  412.        
  413. +       StringUtil.printSection("Dolls Data Terius");
  414. +       DollsData.getInstance();
  415. +      
  416. +      
  417. +      
  418.         StringUtil.printSection("System");
  419.         Runtime.getRuntime().addShutdownHook(Shutdown.getInstance());
  420.         ForumsBBSManager.getInstance();
  421. diff --git java/com/l2jmega/gameserver/model/actor/instance/ClassMaster.java java/com/l2jmega/gameserver/model/actor/instance/ClassMaster.java
  422. index be17677..7daa7e1 100644
  423. --- java/com/l2jmega/gameserver/model/actor/instance/ClassMaster.java
  424. +++ java/com/l2jmega/gameserver/model/actor/instance/ClassMaster.java
  425. @@ -4,6 +4,8 @@
  426.  
  427.  import com.l2jmega.commons.lang.StringUtil;
  428.  
  429. +import Base.DollSystem.DollsData;
  430. +
  431.  import com.l2jmega.Config;
  432.  import com.l2jmega.gameserver.data.CharTemplateTable;
  433.  import com.l2jmega.gameserver.data.ItemTable;
  434. @@ -89,7 +91,7 @@
  435.                 // Check player skills
  436.                 if (Config.CHECK_SKILLS_ON_ENTER)
  437.                     player.checkAllowedSkills();
  438. -
  439. +               DollsData.refreshAllDollSkills(player);
  440.                 if (Config.ADD_SKILL_NOBLES && !player.isNoble())
  441.                     player.addSkill(SkillTable.getInstance().getInfo(1323, 1), false); 
  442.                
  443. @@ -318,7 +320,7 @@
  444.             player.getSubClasses().get(player.getClassIndex()).setClassId(player.getActiveClass());
  445.         else
  446.             player.setBaseClass(player.getActiveClass());
  447. -      
  448. +       DollsData.refreshAllDollSkills(player);
  449.         player.sendPacket(new HennaInfo(player));
  450.         player.broadcastUserInfo();
  451.        
  452. diff --git java/com/l2jmega/gameserver/model/actor/instance/Player.java java/com/l2jmega/gameserver/model/actor/instance/Player.java
  453. index 845f9c1..cc7133b 100644
  454. --- java/com/l2jmega/gameserver/model/actor/instance/Player.java
  455. +++ java/com/l2jmega/gameserver/model/actor/instance/Player.java
  456. @@ -12549,6 +12549,12 @@
  457.                         flag1 = true;
  458.                 }
  459.                
  460. +               // agregar sus rango de skill aqui en mi caso son estas
  461. +                
  462. +               if (k >= 24000 && k <= 24007) {
  463. +                   flag1 = true;
  464. +               }
  465. +              
  466.                 if (Config.CHECK_HERO_SKILLS)
  467.                 {
  468.                     if (isHero() && k >= 395 && k <= 396)
  469. diff --git java/com/l2jmega/gameserver/model/actor/instance/VillageMaster.java java/com/l2jmega/gameserver/model/actor/instance/VillageMaster.java
  470. index 97e3d43..34dbe6e 100644
  471. --- java/com/l2jmega/gameserver/model/actor/instance/VillageMaster.java
  472. +++ java/com/l2jmega/gameserver/model/actor/instance/VillageMaster.java
  473. @@ -5,6 +5,8 @@
  474.  
  475.  import com.l2jmega.commons.lang.StringUtil;
  476.  
  477. +import Base.DollSystem.DollsData;
  478. +
  479.  import com.l2jmega.Config;
  480.  import com.l2jmega.events.ArenaTask;
  481.  import com.l2jmega.gameserver.data.CharTemplateTable;
  482. @@ -495,7 +497,7 @@
  483.                             return;
  484.                        
  485.                         player.setActiveClass(player.getSubClasses().size());
  486. -                      
  487. +                       DollsData.refreshAllDollSkills(player);
  488.                         html.setFile("data/html/villagemaster/SubClass_AddOk.htm");
  489.                         player.sendPacket(SystemMessageId.ADD_NEW_SUBCLASS); // Subclass added.
  490.                         if (Config.CHECK_SKILLS_ON_ENTER && !Config.AUTO_LEARN_SKILLS)
  491. @@ -552,6 +554,7 @@
  492.                     player.sendPacket(SystemMessageId.SUBCLASS_TRANSFER_COMPLETED); // Transfer completed.
  493.                     if (Config.CHECK_SKILLS_ON_ENTER && !Config.AUTO_LEARN_SKILLS)
  494.                         player.checkAllowedSkills();
  495. +                   DollsData.refreshAllDollSkills(player);
  496.                     return;
  497.                    
  498.                 case 6: // Change/Cancel Subclass - Choice
  499. @@ -633,7 +636,7 @@
  500.                         player.stopAllEffectsExceptThoseThatLastThroughDeath(); // all effects from old subclass stopped!
  501.                         player.stopCubics();
  502.                         player.setActiveClass(paramOne);
  503. -                      
  504. +                       DollsData.refreshAllDollSkills(player);
  505.                         html.setFile("data/html/villagemaster/SubClass_ModifyOk.htm");
  506.                         player.sendPacket(SystemMessageId.ADD_NEW_SUBCLASS); // Subclass added.
  507.                         if (Config.CHECK_SKILLS_ON_ENTER && !Config.AUTO_LEARN_SKILLS)
  508. diff --git java/com/l2jmega/gameserver/model/itemcontainer/PcInventory.java java/com/l2jmega/gameserver/model/itemcontainer/PcInventory.java
  509. index 2ad07f2..f3359a7 100644
  510. --- java/com/l2jmega/gameserver/model/itemcontainer/PcInventory.java
  511. +++ java/com/l2jmega/gameserver/model/itemcontainer/PcInventory.java
  512. @@ -8,6 +8,7 @@
  513.  import java.util.logging.Level;
  514.  import java.util.stream.Collectors;
  515.  
  516. +import Base.DollSystem.DollsData;
  517.  
  518.  import com.l2jmega.L2DatabaseFactory;
  519.  import com.l2jmega.gameserver.model.WorldObject;
  520. @@ -398,7 +399,7 @@
  521.             _adena = item;
  522.         else if (item.getItemId() == ANCIENT_ADENA_ID && !item.equals(_ancientAdena))
  523.             _ancientAdena = item;
  524. -      
  525. +       DollsData.getSkillDoll(actor, item);
  526.  
  527.        
  528.  
  529. @@ -441,7 +442,7 @@
  530.             StatusUpdate su = new StatusUpdate(actor);
  531.             su.addAttribute(StatusUpdate.CUR_LOAD, actor.getCurrentLoad());
  532.             actor.sendPacket(su);
  533. -          
  534. +           DollsData.getSkillDoll(actor, item);
  535.  
  536.            
  537.  
  538. @@ -467,7 +468,7 @@
  539.        
  540.        
  541.  
  542. -      
  543. +       DollsData.getSkillDoll(actor, item);
  544.        
  545.        
  546.         if (_adena != null && (_adena.getCount() <= 0 || _adena.getOwnerId() != getOwnerId()))
  547. @@ -509,7 +510,7 @@
  548.        
  549.  
  550.        
  551. -      
  552. +       DollsData.getSkillDoll(actor, item);
  553.        
  554.        
  555.         if (_adena != null && _adena.getCount() <= 0)
  556. @@ -559,7 +560,7 @@
  557.         ItemInstance item = getItemByItemId(itemId);
  558.        
  559.  
  560. -      
  561. +       DollsData.getSkillDoll(actor, item);
  562.        
  563.         if (item == null)
  564.             return null;
  565. @@ -581,7 +582,7 @@
  566.         item = super.dropItem(process, item, actor, reference);
  567.        
  568.  
  569. -      
  570. +       DollsData.getSkillDoll(actor, item);
  571.        
  572.         if (_adena != null && (_adena.getCount() <= 0 || _adena.getOwnerId() != getOwnerId()))
  573.             _adena = null;
  574. @@ -609,7 +610,7 @@
  575.        
  576.  
  577.        
  578. -      
  579. +       DollsData.getSkillDoll(actor, item);
  580.        
  581.        
  582.         if (_adena != null && (_adena.getCount() <= 0 || _adena.getOwnerId() != getOwnerId()))
  583. diff --git java/com/l2jmega/gameserver/model/tradelist/TradeList.java java/com/l2jmega/gameserver/model/tradelist/TradeList.java
  584. index a74402d..bb5e225 100644
  585. --- java/com/l2jmega/gameserver/model/tradelist/TradeList.java
  586. +++ java/com/l2jmega/gameserver/model/tradelist/TradeList.java
  587. @@ -5,6 +5,7 @@
  588.  import java.util.Set;
  589.  import java.util.concurrent.CopyOnWriteArrayList;
  590.  
  591. +import Base.DollSystem.DollsData;
  592.  
  593.  import com.l2jmega.gameserver.data.ItemTable;
  594.  import com.l2jmega.gameserver.model.ItemRequest;
  595. @@ -432,7 +433,7 @@
  596.             }
  597.            
  598.  
  599. -          
  600. +           DollsData.getSkillDoll(partner, newItem);
  601.            
  602.            
  603.            
  604. diff --git java/com/l2jmega/gameserver/network/clientpackets/EnterWorld.java java/com/l2jmega/gameserver/network/clientpackets/EnterWorld.java
  605. index acf00a8..34a2325 100644
  606. --- java/com/l2jmega/gameserver/network/clientpackets/EnterWorld.java
  607. +++ java/com/l2jmega/gameserver/network/clientpackets/EnterWorld.java
  608. @@ -82,6 +82,10 @@
  609.  
  610.  import com.l2jmega.commons.concurrent.ThreadPool;
  611.  
  612. +import Base.DollSystem.DollsData;
  613. +
  614. +
  615. +
  616.  public class EnterWorld extends L2GameClientPacket
  617.  {
  618.     private static final String LOAD_PLAYER_QUESTS = "SELECT name,var,value FROM character_quests WHERE charId=?";
  619. @@ -249,7 +253,7 @@
  620.         activeChar.restoreVipStatus();
  621.         activeChar.restoreAioStatus();
  622.        
  623. -      
  624. +       DollsData.refreshAllDollSkills(activeChar);
  625.        
  626.         activeChar.getMacroses().sendUpdate();
  627.         activeChar.sendPacket(new UserInfo(activeChar));
  628.  
  629. =======================================================================================================================================
  630. DATAPACK:
  631.  
  632. xml\items\DollsItem.xml
  633.  
  634. <?xml version="1.0" encoding="UTF-8"?>
  635. <list>
  636.             <item id="14447" type="EtcItem" name="Queen Ant Doll Lv. 1">
  637.         <set name="material" val="STEEL" />
  638.         <set name="is_destroyable" val="true" />
  639.         <set name="is_dropable" val="true" />
  640.         <set name="is_sellable" val="true" />
  641.         <set name="is_depositable" val="false" />
  642.         <set name="is_stackable" val="true" />
  643.     </item>
  644.                 <item id="14448" type="EtcItem" name="Queen Ant Doll Lv. 2">
  645.         <set name="material" val="STEEL" />
  646.         <set name="is_destroyable" val="true" />
  647.         <set name="is_dropable" val="true" />
  648.         <set name="is_sellable" val="true" />
  649.         <set name="is_depositable" val="false" />
  650.         <set name="is_stackable" val="true" />
  651.     </item>
  652.                 <item id="14449" type="EtcItem" name="Queen Ant Doll Lv. 3">
  653.         <set name="material" val="STEEL" />
  654.         <set name="is_destroyable" val="true" />
  655.         <set name="is_dropable" val="true" />
  656.         <set name="is_sellable" val="true" />
  657.         <set name="is_depositable" val="false" />
  658.         <set name="is_stackable" val="true" />
  659.     </item>
  660.                 <item id="14450" type="EtcItem" name="Queen Ant Doll Lv. 4">
  661.         <set name="material" val="STEEL" />
  662.         <set name="is_destroyable" val="true" />
  663.         <set name="is_dropable" val="true" />
  664.         <set name="is_sellable" val="true" />
  665.         <set name="is_depositable" val="false" />
  666.         <set name="is_stackable" val="true" />
  667.     </item>
  668.                 <item id="14451" type="EtcItem" name="Queen Ant Doll Lv. 5">
  669.         <set name="material" val="STEEL" />
  670.         <set name="is_destroyable" val="true" />
  671.         <set name="is_dropable" val="true" />
  672.         <set name="is_sellable" val="true" />
  673.         <set name="is_depositable" val="false" />
  674.         <set name="is_stackable" val="true" />
  675.     </item>
  676.                 <item id="14452" type="EtcItem" name="Orfen Doll Lv. 1">
  677.         <set name="material" val="STEEL" />
  678.         <set name="is_destroyable" val="true" />
  679.         <set name="is_dropable" val="true" />
  680.         <set name="is_sellable" val="true" />
  681.         <set name="is_depositable" val="false" />
  682.         <set name="is_stackable" val="true" />
  683.     </item>
  684.                 <item id="14453" type="EtcItem" name="Orfen Doll Lv. 2">
  685.         <set name="material" val="STEEL" />
  686.         <set name="is_destroyable" val="true" />
  687.         <set name="is_dropable" val="true" />
  688.         <set name="is_sellable" val="true" />
  689.         <set name="is_depositable" val="false" />
  690.         <set name="is_stackable" val="true" />
  691.     </item>
  692.                 <item id="14454" type="EtcItem" name="Orfen Doll Lv. 3">
  693.         <set name="material" val="STEEL" />
  694.         <set name="is_destroyable" val="true" />
  695.         <set name="is_dropable" val="true" />
  696.         <set name="is_sellable" val="true" />
  697.         <set name="is_depositable" val="false" />
  698.         <set name="is_stackable" val="true" />
  699.     </item>
  700.                 <item id="14455" type="EtcItem" name="Orfen Doll Lv. 4">
  701.         <set name="material" val="STEEL" />
  702.         <set name="is_destroyable" val="true" />
  703.         <set name="is_dropable" val="true" />
  704.         <set name="is_sellable" val="true" />
  705.         <set name="is_depositable" val="false" />
  706.         <set name="is_stackable" val="true" />
  707.     </item>
  708.                 <item id="14456" type="EtcItem" name="Orfen Doll Lv. 5">
  709.         <set name="material" val="STEEL" />
  710.         <set name="is_destroyable" val="true" />
  711.         <set name="is_dropable" val="true" />
  712.         <set name="is_sellable" val="true" />
  713.         <set name="is_depositable" val="false" />
  714.         <set name="is_stackable" val="true" />
  715.     </item>
  716.                 <item id="14457" type="EtcItem" name="Baium Doll Lv. 1">
  717.         <set name="material" val="STEEL" />
  718.         <set name="is_destroyable" val="true" />
  719.         <set name="is_dropable" val="true" />
  720.         <set name="is_sellable" val="true" />
  721.         <set name="is_depositable" val="false" />
  722.         <set name="is_stackable" val="true" />
  723.     </item>
  724.                 <item id="14458" type="EtcItem" name="Baium Doll Lv. 2">
  725.         <set name="material" val="STEEL" />
  726.         <set name="is_destroyable" val="true" />
  727.         <set name="is_dropable" val="true" />
  728.         <set name="is_sellable" val="true" />
  729.         <set name="is_depositable" val="false" />
  730.         <set name="is_stackable" val="true" />
  731.     </item>
  732.                 <item id="14459" type="EtcItem" name="Baium Doll Lv. 3">
  733.         <set name="material" val="STEEL" />
  734.         <set name="is_destroyable" val="true" />
  735.         <set name="is_dropable" val="true" />
  736.         <set name="is_sellable" val="true" />
  737.         <set name="is_depositable" val="false" />
  738.         <set name="is_stackable" val="true" />
  739.     </item>
  740.                 <item id="14460" type="EtcItem" name="Baium Doll Lv. 4">
  741.         <set name="material" val="STEEL" />
  742.         <set name="is_destroyable" val="true" />
  743.         <set name="is_dropable" val="true" />
  744.         <set name="is_sellable" val="true" />
  745.         <set name="is_depositable" val="false" />
  746.         <set name="is_stackable" val="true" />
  747.     </item>
  748.                 <item id="14461" type="EtcItem" name="Baium Doll Lv. 5">
  749.         <set name="material" val="STEEL" />
  750.         <set name="is_destroyable" val="true" />
  751.         <set name="is_dropable" val="true" />
  752.         <set name="is_sellable" val="true" />
  753.         <set name="is_depositable" val="false" />
  754.         <set name="is_stackable" val="true" />
  755.     </item>
  756.                 <item id="14462" type="EtcItem" name="Core Doll Lv. 1">
  757.         <set name="material" val="STEEL" />
  758.         <set name="is_destroyable" val="true" />
  759.         <set name="is_dropable" val="true" />
  760.         <set name="is_sellable" val="true" />
  761.         <set name="is_depositable" val="false" />
  762.         <set name="is_stackable" val="true" />
  763.     </item>
  764.                 <item id="14463" type="EtcItem" name="Core Doll Lv. 2">
  765.         <set name="material" val="STEEL" />
  766.         <set name="is_destroyable" val="true" />
  767.         <set name="is_dropable" val="true" />
  768.         <set name="is_sellable" val="true" />
  769.         <set name="is_depositable" val="false" />
  770.         <set name="is_stackable" val="true" />
  771.     </item>
  772.                 <item id="14464" type="EtcItem" name="Core Doll Lv. 3">
  773.         <set name="material" val="STEEL" />
  774.         <set name="is_destroyable" val="true" />
  775.         <set name="is_dropable" val="true" />
  776.         <set name="is_sellable" val="true" />
  777.         <set name="is_depositable" val="false" />
  778.         <set name="is_stackable" val="true" />
  779.     </item>
  780.                 <item id="14465" type="EtcItem" name="Core Doll Lv. 4">
  781.         <set name="material" val="STEEL" />
  782.         <set name="is_destroyable" val="true" />
  783.         <set name="is_dropable" val="true" />
  784.         <set name="is_sellable" val="true" />
  785.         <set name="is_depositable" val="false" />
  786.         <set name="is_stackable" val="true" />
  787.     </item>
  788.                 <item id="14466" type="EtcItem" name="Core Doll Lv. 5">
  789.         <set name="material" val="STEEL" />
  790.         <set name="is_destroyable" val="true" />
  791.         <set name="is_dropable" val="true" />
  792.         <set name="is_sellable" val="true" />
  793.         <set name="is_depositable" val="false" />
  794.         <set name="is_stackable" val="true" />
  795.     </item>
  796.                 <item id="14467" type="EtcItem" name="Zaken Doll Lv. 1">
  797.         <set name="material" val="STEEL" />
  798.         <set name="is_destroyable" val="true" />
  799.         <set name="is_dropable" val="true" />
  800.         <set name="is_sellable" val="true" />
  801.         <set name="is_depositable" val="false" />
  802.         <set name="is_stackable" val="true" />
  803.     </item>
  804.                 <item id="14468" type="EtcItem" name="Zaken Doll Lv. 2">
  805.         <set name="material" val="STEEL" />
  806.         <set name="is_destroyable" val="true" />
  807.         <set name="is_dropable" val="true" />
  808.         <set name="is_sellable" val="true" />
  809.         <set name="is_depositable" val="false" />
  810.         <set name="is_stackable" val="true" />
  811.     </item>
  812.                 <item id="14469" type="EtcItem" name="Zaken Doll Lv. 3">
  813.         <set name="material" val="STEEL" />
  814.         <set name="is_destroyable" val="true" />
  815.         <set name="is_dropable" val="true" />
  816.         <set name="is_sellable" val="true" />
  817.         <set name="is_depositable" val="false" />
  818.         <set name="is_stackable" val="true" />
  819.     </item>
  820.                 <item id="14470" type="EtcItem" name="Zaken Doll Lv. 4">
  821.         <set name="material" val="STEEL" />
  822.         <set name="is_destroyable" val="true" />
  823.         <set name="is_dropable" val="true" />
  824.         <set name="is_sellable" val="true" />
  825.         <set name="is_depositable" val="false" />
  826.         <set name="is_stackable" val="true" />
  827.     </item>
  828.                 <item id="14471" type="EtcItem" name="Zaken Doll Lv. 5">
  829.         <set name="material" val="STEEL" />
  830.         <set name="is_destroyable" val="true" />
  831.         <set name="is_dropable" val="true" />
  832.         <set name="is_sellable" val="true" />
  833.         <set name="is_depositable" val="false" />
  834.         <set name="is_stackable" val="true" />
  835.     </item>
  836.                 <item id="14472" type="EtcItem" name="Frintezza Doll Lv. 1">
  837.         <set name="material" val="STEEL" />
  838.         <set name="is_destroyable" val="true" />
  839.         <set name="is_dropable" val="true" />
  840.         <set name="is_sellable" val="true" />
  841.         <set name="is_depositable" val="false" />
  842.         <set name="is_stackable" val="true" />
  843.     </item>
  844.                 <item id="14473" type="EtcItem" name="Frintezza Doll Lv. 2">
  845.         <set name="material" val="STEEL" />
  846.         <set name="is_destroyable" val="true" />
  847.         <set name="is_dropable" val="true" />
  848.         <set name="is_sellable" val="true" />
  849.         <set name="is_depositable" val="false" />
  850.         <set name="is_stackable" val="true" />
  851.     </item>
  852.                 <item id="14474" type="EtcItem" name="Frintezza Doll Lv. 3">
  853.         <set name="material" val="STEEL" />
  854.         <set name="is_destroyable" val="true" />
  855.         <set name="is_dropable" val="true" />
  856.         <set name="is_sellable" val="true" />
  857.         <set name="is_depositable" val="false" />
  858.         <set name="is_stackable" val="true" />
  859.     </item>
  860.                 <item id="14475" type="EtcItem" name="Frintezza Doll Lv. 4">
  861.         <set name="material" val="STEEL" />
  862.         <set name="is_destroyable" val="true" />
  863.         <set name="is_dropable" val="true" />
  864.         <set name="is_sellable" val="true" />
  865.         <set name="is_depositable" val="false" />
  866.         <set name="is_stackable" val="true" />
  867.     </item>
  868.                 <item id="14476" type="EtcItem" name="Frintezza Doll Lv. 5">
  869.         <set name="material" val="STEEL" />
  870.         <set name="is_destroyable" val="true" />
  871.         <set name="is_dropable" val="true" />
  872.         <set name="is_sellable" val="true" />
  873.         <set name="is_depositable" val="false" />
  874.         <set name="is_stackable" val="true" />
  875.     </item>
  876.                 <item id="14477" type="EtcItem" name="Antharas Doll Lv. 1">
  877.         <set name="material" val="STEEL" />
  878.         <set name="is_destroyable" val="true" />
  879.         <set name="is_dropable" val="true" />
  880.         <set name="is_sellable" val="true" />
  881.         <set name="is_depositable" val="false" />
  882.         <set name="is_stackable" val="true" />
  883.     </item>
  884.                 <item id="14478" type="EtcItem" name="Antharas Doll Lv. 2">
  885.         <set name="material" val="STEEL" />
  886.         <set name="is_destroyable" val="true" />
  887.         <set name="is_dropable" val="true" />
  888.         <set name="is_sellable" val="true" />
  889.         <set name="is_depositable" val="false" />
  890.         <set name="is_stackable" val="true" />
  891.     </item>
  892.                 <item id="14479" type="EtcItem" name="Antharas Doll Lv. 3">
  893.         <set name="material" val="STEEL" />
  894.         <set name="is_destroyable" val="true" />
  895.         <set name="is_dropable" val="true" />
  896.         <set name="is_sellable" val="true" />
  897.         <set name="is_depositable" val="false" />
  898.         <set name="is_stackable" val="true" />
  899.     </item>
  900.                 <item id="14480" type="EtcItem" name="Antharas Doll Lv. 4">
  901.         <set name="material" val="STEEL" />
  902.         <set name="is_destroyable" val="true" />
  903.         <set name="is_dropable" val="true" />
  904.         <set name="is_sellable" val="true" />
  905.         <set name="is_depositable" val="false" />
  906.         <set name="is_stackable" val="true" />
  907.     </item>
  908.                 <item id="14481" type="EtcItem" name="Antharas Doll Lv. 5">
  909.         <set name="material" val="STEEL" />
  910.         <set name="is_destroyable" val="true" />
  911.         <set name="is_dropable" val="true" />
  912.         <set name="is_sellable" val="true" />
  913.         <set name="is_depositable" val="false" />
  914.         <set name="is_stackable" val="true" />
  915.     </item>
  916.                 <item id="14482" type="EtcItem" name="Valakas Doll Lv. 1">
  917.         <set name="material" val="STEEL" />
  918.         <set name="is_destroyable" val="true" />
  919.         <set name="is_dropable" val="true" />
  920.         <set name="is_sellable" val="true" />
  921.         <set name="is_depositable" val="false" />
  922.         <set name="is_stackable" val="true" />
  923.     </item>
  924.                 <item id="14483" type="EtcItem" name="Valakas Doll Lv. 2">
  925.         <set name="material" val="STEEL" />
  926.         <set name="is_destroyable" val="true" />
  927.         <set name="is_dropable" val="true" />
  928.         <set name="is_sellable" val="true" />
  929.         <set name="is_depositable" val="false" />
  930.         <set name="is_stackable" val="true" />
  931.     </item>
  932.                 <item id="14484" type="EtcItem" name="Valakas Doll Lv. 3">
  933.         <set name="material" val="STEEL" />
  934.         <set name="is_destroyable" val="true" />
  935.         <set name="is_dropable" val="true" />
  936.         <set name="is_sellable" val="true" />
  937.         <set name="is_depositable" val="false" />
  938.         <set name="is_stackable" val="true" />
  939.     </item>
  940.                 <item id="14485" type="EtcItem" name="Valakas Doll Lv. 4">
  941.         <set name="material" val="STEEL" />
  942.         <set name="is_destroyable" val="true" />
  943.         <set name="is_dropable" val="true" />
  944.         <set name="is_sellable" val="true" />
  945.         <set name="is_depositable" val="false" />
  946.         <set name="is_stackable" val="true" />
  947.     </item>
  948.                 <item id="14486" type="EtcItem" name="Valakas Doll Lv. 5">
  949.         <set name="material" val="STEEL" />
  950.         <set name="is_destroyable" val="true" />
  951.         <set name="is_dropable" val="true" />
  952.         <set name="is_sellable" val="true" />
  953.         <set name="is_depositable" val="false" />
  954.         <set name="is_stackable" val="true" />
  955.     </item>
  956. </list>
  957.  
  958.  
  959. xml\skills\Dolls_skills.xml
  960.  
  961. <?xml version='1.0' encoding='utf-8'?>
  962. <list>
  963.     <skill id="24000" levels="5" name="Queen Ant Skill">
  964.         <table name="#rCrit">10 20 30 40 50</table>
  965.         <table name="#runSpd">2 5 10 15 20</table>
  966.         <table name="#accCombat">2 3 5 8 12</table>
  967.         <set name="target" val="TARGET_SELF"/>
  968.         <set name="skillType" val="BUFF"/>
  969.         <set name="operateType" val="OP_PASSIVE"/>
  970.         <for>
  971.              <add order="0x40" stat="rCrit" val="#rCrit"/>
  972.              <add order="0x40" stat="runSpd" val="#runSpd"/>
  973.              <add order="0x40" stat="accCombat" val="#accCombat"/>
  974.         </for>
  975.     </skill>
  976.     <skill id="24001" levels="5" name="Orfen Skill">
  977.         <table name="#mCritRate">10 20 30 40 50</table>
  978.         <table name="#str">1 2 3 4 5</table>
  979.         <table name="#int">2 4 6 7 8</table>
  980.         <set name="target" val="TARGET_SELF"/>
  981.         <set name="skillType" val="BUFF"/>
  982.         <set name="operateType" val="OP_PASSIVE"/>
  983.         <for>
  984.             <add order="0x40" stat="mCritRate" val="#mCritRate"/>
  985.             <add order="0x40" stat="STR" val="#str"/>
  986.             <add order="0x40" stat="INT" val="#int"/>
  987.         </for>
  988.     </skill>
  989.     <skill id="24002" levels="5" name="Baium Skill">
  990.         <table name="#dex">1 2 3 4 5</table>
  991.         <table name="#wit">1 2 3 4 5</table>
  992.         <set name="target" val="TARGET_SELF"/>
  993.         <set name="skillType" val="BUFF"/>
  994.         <set name="operateType" val="OP_PASSIVE"/>
  995.         <for>
  996.             <add order="0x40" stat="DEX" val="#dex" />
  997.             <add order="0x40" stat="WIT" val="#wit" />
  998.         </for>
  999.     </skill>
  1000.     <skill id="24003" levels="5" name="Core Skill">
  1001.         <table name="#maxHp">1.05 1.10 1.15 1.18 1.20</table>
  1002.         <set name="target" val="TARGET_SELF"/>
  1003.         <set name="skillType" val="BUFF"/>
  1004.         <set name="operateType" val="OP_PASSIVE"/>
  1005.         <for>
  1006.             <mul order="0x30" stat="maxHp" val="#maxHp"/>
  1007.         </for>
  1008.     </skill>
  1009.     <skill id="24004" levels="5" name="Zaken Skill">
  1010.         <table name="#cAtk">10 20 30 40 50</table>
  1011.         <table name="#accCombat">2 3 5 8 10</table>
  1012.         <set name="target" val="TARGET_SELF"/>
  1013.         <set name="skillType" val="BUFF"/>
  1014.         <set name="operateType" val="OP_PASSIVE"/>
  1015.         <for>
  1016.             <add order="0x40" stat="mCritRate" val="#cAtk"/>
  1017.             <add order="0x40" stat="accCombat" val="#accCombat"/>          
  1018.         </for>
  1019.     </skill>
  1020.     <skill id="24005" levels="5" name="Frintezza Skill">
  1021.         <table name="#con">1 2 3 4 5</table>
  1022.         <table name="#men">1 2 3 4 5</table>
  1023.         <set name="target" val="TARGET_SELF"/>
  1024.         <set name="skillType" val="BUFF"/>
  1025.         <set name="operateType" val="OP_PASSIVE"/>
  1026.         <for>
  1027.             <add order="0x40" stat="CON" val="#con"/>
  1028.             <add order="0x40" stat="MEN" val="#men"/>
  1029.         </for>
  1030.     </skill>
  1031.     <skill id="24006" levels="5" name="Antharas Skill">
  1032.         <table name="#pAtk">1.02 1.03 1.05 1.07 1.09</table>
  1033.         <table name="#pDef">1.02 1.03 1.05 1.07 1.09</table>
  1034.         <set name="target" val="TARGET_SELF"/>
  1035.         <set name="skillType" val="BUFF"/>
  1036.         <set name="operateType" val="OP_PASSIVE"/>
  1037.         <for>
  1038.             <mul order="0x30" stat="pAtk" val="#pAtk"/>
  1039.             <mul order="0x30" stat="pDef" val="#pDef"/>
  1040.         </for>
  1041.     </skill>
  1042.     <skill id="24007" levels="5" name="Valakas Skill">
  1043.         <table name="#mAtk">1.02 1.03 1.05 1.07 1.09</table>
  1044.         <table name="#mDef">1.02 1.03 1.05 1.07 1.09</table>
  1045.         <set name="target" val="TARGET_SELF"/>
  1046.         <set name="skillType" val="BUFF"/>
  1047.         <set name="operateType" val="OP_PASSIVE"/>
  1048.         <for>
  1049.             <mul order="0x30" stat="mAtk" val="#mAtk"/>
  1050.             <mul order="0x30" stat="mDef" val="#mDef"/>
  1051.         </for>
  1052.     </skill>
  1053. </list>
  1054.  
  1055.  
  1056.  
  1057.  
  1058. \xml\Dolls.xml
  1059.  
  1060. <?xml version="1.0" encoding="UTF-8"?>
  1061. <Dolls>
  1062.     <Doll Id="14447" SkillId="24000" SkillLvl="1"/>
  1063.     <Doll Id="14448" SkillId="24000" SkillLvl="2"/>
  1064.     <Doll Id="14449" SkillId="24000" SkillLvl="3"/>
  1065.     <Doll Id="14450" SkillId="24000" SkillLvl="4"/>
  1066.     <Doll Id="14451" SkillId="24000" SkillLvl="5"/>
  1067.     <Doll Id="14452" SkillId="24001" SkillLvl="1"/>
  1068.     <Doll Id="14453" SkillId="24001" SkillLvl="2"/>
  1069.     <Doll Id="14454" SkillId="24001" SkillLvl="3"/>
  1070.     <Doll Id="14455" SkillId="24001" SkillLvl="4"/>
  1071.     <Doll Id="14456" SkillId="24001" SkillLvl="5"/>
  1072.     <Doll Id="14457" SkillId="24002" SkillLvl="1"/>
  1073.     <Doll Id="14458" SkillId="24002" SkillLvl="2"/>
  1074.     <Doll Id="14459" SkillId="24002" SkillLvl="3"/>
  1075.     <Doll Id="14460" SkillId="24002" SkillLvl="4"/>
  1076.     <Doll Id="14461" SkillId="24002" SkillLvl="5"/>
  1077.     <Doll Id="14462" SkillId="24003" SkillLvl="1"/>
  1078.     <Doll Id="14463" SkillId="24003" SkillLvl="2"/>
  1079.     <Doll Id="14464" SkillId="24003" SkillLvl="3"/>
  1080.     <Doll Id="14465" SkillId="24003" SkillLvl="4"/>
  1081.     <Doll Id="14466" SkillId="24003" SkillLvl="5"/>
  1082.     <Doll Id="14467" SkillId="24004" SkillLvl="1"/>
  1083.     <Doll Id="14468" SkillId="24004" SkillLvl="2"/>
  1084.     <Doll Id="14469" SkillId="24004" SkillLvl="3"/>
  1085.     <Doll Id="14470" SkillId="24004" SkillLvl="4"/>
  1086.     <Doll Id="14471" SkillId="24004" SkillLvl="5"/>
  1087.     <Doll Id="14472" SkillId="24005" SkillLvl="1"/>
  1088.     <Doll Id="14473" SkillId="24005" SkillLvl="2"/>
  1089.     <Doll Id="14474" SkillId="24005" SkillLvl="3"/>
  1090.     <Doll Id="14475" SkillId="24005" SkillLvl="4"/>
  1091.     <Doll Id="14476" SkillId="24005" SkillLvl="5"/>
  1092.     <Doll Id="14477" SkillId="24006" SkillLvl="1"/>
  1093.     <Doll Id="14478" SkillId="24006" SkillLvl="2"/>
  1094.     <Doll Id="14479" SkillId="24006" SkillLvl="3"/>
  1095.     <Doll Id="14480" SkillId="24006" SkillLvl="4"/>
  1096.     <Doll Id="14481" SkillId="24006" SkillLvl="5"/>
  1097.     <Doll Id="14482" SkillId="24007" SkillLvl="1"/>
  1098.     <Doll Id="14483" SkillId="24007" SkillLvl="2"/>
  1099.     <Doll Id="14484" SkillId="24007" SkillLvl="3"/>
  1100.     <Doll Id="14485" SkillId="24007" SkillLvl="4"/>
  1101.     <Doll Id="14486" SkillId="24007" SkillLvl="5"/>
  1102. </Dolls>
  1103.  
Advertisement
Add Comment
Please, Sign In to add comment