Kate Posted April 2, 2009 Share Posted April 2, 2009 How i can make sub class acumulative on l2jfree gracia part 2 ?? Link to comment Share on other sites More sharing options...
0 Intrepid Posted April 2, 2009 Share Posted April 2, 2009 Thats the base code: Index: /Trunk/L2_GameServer/java/config/intrepid.properties =================================================================== --- /Trunk/L2_GameServer/java/config/intrepid.properties (revision 30) +++ /Trunk/L2_GameServer/java/config/intrepid.properties (revision 49) @@ -30,2 +30,5 @@ #--------------------------------------------- AllowedNPCTypes = L2Boss,L2Chest,L2FestivalMonster,L2Minion,L2Monster,L2Pet,L2RaidBoss,L2SiegeGuard,L2SiegeNpc,L2ControlTower,L2GrandBoss,L2Artefact,L2FortManager,L2FortSiegeNpc,L2FortSiegeGuard,L2FortCommander,L2FortBallista + +# Sub stuck +SubStucking = False Index: /Trunk/L2_GameServer/java/net/sf/l2j/Config.java =================================================================== --- /Trunk/L2_GameServer/java/net/sf/l2j/Config.java (revision 30) +++ /Trunk/L2_GameServer/java/net/sf/l2j/Config.java (revision 49) @@ -652,4 +652,6 @@ /** List of NPC types that won't allow casting */ public static FastList<String> LIST_ALLOWED_NPC_TYPES = new FastList<String>(); + /** stuck sub **/ + public static boolean ACUMULATIVE_SUBCLASS_SKILLS; /** ************************************************** **/ @@ -1552,4 +1554,5 @@ LIST_ALLOWED_NPC_TYPES.add(npc_type); } + ACUMULATIVE_SUBCLASS_SKILLS = Boolean.parseBoolean(intrepidSettings.getProperty("SubStucking", "False")); } catch (Exception e) Index: /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2VillageMasterInstance.java =================================================================== --- /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2VillageMasterInstance.java (revision 8) +++ /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2VillageMasterInstance.java (revision 49) @@ -816,6 +816,6 @@ - final Race npcRace = getVillageMasterRace(); - final ClassType npcTeachType = getVillageMasterTeachType(); + getVillageMasterRace(); + getVillageMasterTeachType(); PlayerClass currClass = PlayerClass.values()[charClassId]; @@ -862,22 +862,4 @@ availSubs.remove(availSub); } - - if (npcRace == Race.Human || npcRace == Race.Elf) - { - // If the master is human or light elf, ensure that fighter-type - // masters only teach fighter classes, and priest-type masters - // only teach priest classes etc. - if (!availSub.isOfType(npcTeachType)) availSubs.remove(availSub); - - // Remove any non-human or light elf classes. - else if (!availSub.isOfRace(Race.Human) - && !availSub.isOfRace(Race.Elf)) availSubs.remove(availSub); - } - else - { - // If the master is not human and not light elf, - // then remove any classes not of the same race as the master. - if (!availSub.isOfRace(npcRace)) availSubs.remove(availSub); - } } } Index: /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java =================================================================== --- /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 48) +++ /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 49) @@ -231,4 +231,5 @@ // Character Skill SQL String Definitions: private static final String RESTORE_SKILLS_FOR_CHAR = "SELECT skill_id,skill_level FROM character_skills WHERE charId=? AND class_index=?"; + private static final String ACUMULATE_SKILLS_FOR_CHAR_SUB = "SELECT skill_id,skill_level FROM character_skills WHERE charId=? ORDER BY skill_id , skill_level ASC"; private static final String ADD_NEW_SKILL = "INSERT INTO character_skills (charId,skill_id,skill_level,skill_name,class_index) VALUES (?,?,?,?,?)"; private static final String UPDATE_CHARACTER_SKILL_LEVEL = "UPDATE character_skills SET skill_level=? WHERE skill_id=? AND charId=? AND class_index=?"; @@ -7557,10 +7558,14 @@ try { + // L2 Emu Addon + boolean isAcumulative = Config.ACUMULATIVE_SUBCLASS_SKILLS; + // Retrieve all skills of this L2PcInstance from the database con = L2DatabaseFactory.getInstance().getConnection(); - PreparedStatement statement = con.prepareStatement(RESTORE_SKILLS_FOR_CHAR); - + PreparedStatement statement = con.prepareStatement(isAcumulative ? ACUMULATE_SKILLS_FOR_CHAR_SUB : RESTORE_SKILLS_FOR_CHAR); statement.setInt(1, getObjectId()); - statement.setInt(2, getClassIndex()); + if (!isAcumulative) + // L2 Emu Addon + statement.setInt(2, getClassIndex()); ResultSet rset = statement.executeQuery(); Index: /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/model/base/PlayerClass.java =================================================================== --- /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/model/base/PlayerClass.java (revision 6) +++ /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/model/base/PlayerClass.java (revision 49) @@ -209,5 +209,4 @@ private static final Set<PlayerClass> mainSubclassSet; - private static final Set<PlayerClass> neverSubclassed = EnumSet.of(Overlord, Warsmith); private static final Set<PlayerClass> subclasseSet1 = EnumSet.of(DarkAvenger, Paladin, TempleKnight, ShillienKnight); @@ -222,5 +221,4 @@ { Set<PlayerClass> subclasses = getSet(null, Third); - subclasses.removeAll(neverSubclassed); mainSubclassSet = subclasses; @@ -269,9 +267,38 @@ switch (_race) { + case Human: + subclasses.removeAll(getSet(DarkElf, Third)); + subclasses.removeAll(getSet(Elf, Third)); + subclasses.removeAll(getSet(Orc, Third)); + subclasses.removeAll(getSet(Dwarf, Third)); + subclasses.removeAll(getSet(Kamael, Third)); + break; + case DarkElf: + subclasses.removeAll(getSet(Human, Third)); + subclasses.removeAll(getSet(Elf, Third)); + subclasses.removeAll(getSet(Orc, Third)); + subclasses.removeAll(getSet(Dwarf, Third)); + subclasses.removeAll(getSet(Kamael, Third)); + break; case Elf: + subclasses.removeAll(getSet(Human, Third)); subclasses.removeAll(getSet(DarkElf, Third)); - break; - case DarkElf: + subclasses.removeAll(getSet(Orc, Third)); + subclasses.removeAll(getSet(Dwarf, Third)); + subclasses.removeAll(getSet(Kamael, Third)); + break; + case Orc: + subclasses.removeAll(getSet(Human, Third)); + subclasses.removeAll(getSet(DarkElf, Third)); subclasses.removeAll(getSet(Elf, Third)); + subclasses.removeAll(getSet(Dwarf, Third)); + subclasses.removeAll(getSet(Kamael, Third)); + break; + case Dwarf: + subclasses.removeAll(getSet(Human, Third)); + subclasses.removeAll(getSet(DarkElf, Third)); + subclasses.removeAll(getSet(Orc, Third)); + subclasses.removeAll(getSet(Elf, Third)); + subclasses.removeAll(getSet(Kamael, Third)); break; } @@ -294,6 +321,4 @@ else subclasses.removeAll(EnumSet.of(femaleSoulbreaker)); - if (player.getTotalSubClasses() < 2) - subclasses.removeAll(EnumSet.of(inspector)); } } And add that too to avoid the mastery duplicates: Index: /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java =================================================================== --- /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 49) +++ /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 50) @@ -7575,12 +7575,20 @@ int id = rset.getInt("skill_id"); int level = rset.getInt("skill_level"); + int chclass = rset.getInt("class_index"); if (id > 9000 && id < 9007) continue; // fake skills for base stats - + if(chclass != getClassIndex()) + + { + // Remove armor mastery from other classes + if(id == 118 || id == 163 || id == 236 || id == 249 || id == 252 || id == 253 || id == 258 || id == 259) continue; + } + // Create a L2Skill object for each record L2Skill skill = SkillTable.getInstance().getInfo(id, level); - - // Add the L2Skill object to the L2Character _skills and its Func objects to the calculator set of the L2Character + + // Add the L2Skill object to the L2Character _skills and its + // Func objects to the calculator set of the L2Character super.addSkill(skill); if (Config.CHECK_SKILLS && Config.CHECK_SKILLS_ACCESS_LEVEL_LIST.contains(getAccessLevel().getLevel())) @@ -7594,5 +7602,5 @@ removeSkill(skill); } - } + } rset.close(); Link to comment Share on other sites More sharing options...
0 Kate Posted April 2, 2009 Author Share Posted April 2, 2009 where i must add this ?? Link to comment Share on other sites More sharing options...
0 pinkcore Posted July 14, 2009 Share Posted July 14, 2009 Can i make it for L2J IL?? :) Link to comment Share on other sites More sharing options...
0 Łighto™ Posted July 14, 2009 Share Posted July 14, 2009 With some modifications yeah you can. Link to comment Share on other sites More sharing options...
0 nikospep Posted June 29, 2010 Share Posted June 29, 2010 intrepid.properties doesnt exist at l2j final pack, can u make it work please? tnx ^^ Link to comment Share on other sites More sharing options...
0 xAddytzu Posted June 29, 2010 Share Posted June 29, 2010 intrepid.properties doesnt exist at l2j final pack, can u make it work please? tnx ^^ You can change the name :\ Link to comment Share on other sites More sharing options...
0 Matim Posted June 29, 2010 Share Posted June 29, 2010 intrepid.properties doesnt exist at l2j final pack, can u make it work please? tnx ^^ Pff, think a bit, it was just an example.. You can put it for example in l2jmods.properties Check out this Thread - there is explanation about Config. And next time do not bump old threads, locked. Link to comment Share on other sites More sharing options...
Question
Kate
How i can make sub class acumulative on l2jfree gracia part 2 ??
Link to comment
Share on other sites
7 answers to this question
Recommended Posts