if( settings == nil ) then include("settings.lua"); end -- 1 warrior -- 2 scout -- 3 rogue -- 4 mage -- 5 priest -- 6 knight -- 7 warden -- 8 druid -- minxx = value ( 1-8 ) // player.Class number to identify class, listed above -- minlvl = value ( 1-62 ) // required level before you can use skill -- primxx = value ( 1 or 2 )// (Used by all classes = 1) or (class only skill = 2) -- armor = value ( 1-3 ) // (1 = cloth, 2 = leather, 3 = mail) values for lvl 1 skillsdb = { ["WARRIOR_PROBING_ATTACK"] = {minlvl=2, minxx=1, primxx=2, id=491133, armor =2 }, ["WARRIOR_SLASH"] = {minlvl=1, minxx=1, primxx=1, id=490053, armor =2 }, ["WARRIOR_ENRAGED"] = {minlvl=4, minxx=1, primxx=1, id=490492, armor =2 }, ["WARRIOR_OPEN_FLANK"] = {minlvl=2, minxx=1, primxx=2, id=491136, armor =2 }, ["SCOUT_AUTOSHOT"] = {minlvl=1, minxx=2, primxx=2, id=492589, armor =2 }, ["SCOUT_WIND_ARROWS"] = {minlvl=2, minxx=2, primxx=2, id=491128, armor =2 }, ["SCOUT_VAMPIRE_ARROWS"] = {minlvl=4, minxx=2, primxx=1, id=491292, armor =2 }, ["SCOUT_SHOT"] = {minlvl=1, minxx=2, primxx=1, id=490423, armor =2 }, ["ROGUE_SHADOWSTAB"] = {minlvl=1, minxx=3, primxx=1, id=490306, armor =2 }, ["ROGUE_LOW_BLOW"] = {minlvl=2, minxx=3, primxx=2, id=490323, armor =2 }, ["ROGUE_ASSASSINS_RAGE"] = {minlvl=1, minxx=3, primxx=2, id=490506, armor =2 }, ["ROGUE_WOUND_ATTACK"] = {minlvl=6, minxx=3, primxx=2, id=490313, armor =2 }, ["MAGE_FLAME"] = {minlvl=1, minxx=4, primxx=2, id=491150, armor =1 }, ["MAGE_ELEMENTAL_CATALYST"] = {minlvl=1, minxx=4, primxx=2, id=490238, armor =1 }, ["MAGE_FIREBALL"] = {minlvl=4, minxx=4, primxx=1, id=490204, armor =1 }, ["MAGE_LIGHTNING"] = {minlvl=8, minxx=4, primxx=1, id=490212, armor =1 }, ["PRIEST_RISING_TIDE"] = {minlvl=1, minxx=5, primxx=1, id=490256, armor =1 }, ["PRIEST_URGENT_HEAL"] = {minlvl=1, minxx=5, primxx=1, id=491147, armor =1 }, ["PRIEST_REGENERATE"] = {minlvl=1, minxx=5, primxx=1, id=490269, armor =1 }, ["PRIEST_HOLY_AURA"] = {minlvl=8, minxx=5, primxx=1, id=490300, armor =1 }, ["KNIGHT_HOLY_SEAL"] = {minlvl=2, minxx=6, primxx=2, id=491368, armor =3 }, ["KNIGHT_MANA_RETURN"] = {minlvl=2, minxx=6, primxx=2, id=491446, armor =3 }, ["KNIGHT_HOLY_STRIKE"] = {minlvl=1, minxx=6, primxx=1, id=490496, armor =3 }, ["KNIGHT_PUNISHMENT"] = {minlvl=1, minxx=6, primxx=1, id=490164, armor =3 }, } function checkskilllvl() for k,v in pairs(settings.profile.skills) do skilldata1 = skillsdb[v.Name] if skilldata1.minxx == player.Class1 and player.Level >= skilldata1.minlvl then settings.profile.skills[k].AutoUse = true else settings.profile.skills[k].AutoUse = false end if skilldata1.minxx == player.Class2 and player.Level >= skilldata1.minlvl then settings.profile.skills[k].AutoUse = true end if skilldata1.minxx == player.Class2 and skilldata1.primxx == 2 then settings.profile.skills[k].AutoUse = false end if player.Class2 == CLASS_KNIGHT and skilldata1.minxx == 6 then settings.profile.skills[k].AutoUse = false end end end function setactionbar() for k,v in pairs(settings.profile.skills) do skilldata = skillsdb[v.Name] setActionKeyToId(settings.profile.skills[k].hotkey - 48, skilldata.id) end end function setranged() if player.Class1 == CLASS_SCOUT then changeProfileOption("COMBAT_RANGED_PULL", true); end if player.Class1 == CLASS_MAGE then changeProfileOption("COMBAT_RANGED_PULL", true); end if player.Class1 == CLASS_PRIEST then changeProfileOption("COMBAT_RANGED_PULL", true); end end function secondclasswp() for k,v in pairs(settings.profile.skills) do skilldata2 = skillsdb[v.Name] if settings.profile.skills[k].hotkey == 57 and skilldata2.minxx == 1 then loadPaths("1-10human/secondwarrior"); end if settings.profile.skills[k].hotkey == 57 and skilldata2.minxx == 2 then loadPaths("1-10human/secondscout"); end if settings.profile.skills[k].hotkey == 57 and skilldata2.minxx == 3 then loadPaths("1-10human/secondrogue"); end if settings.profile.skills[k].hotkey == 57 and skilldata2.minxx == 4 then loadPaths("1-10human/secondmage"); end if settings.profile.skills[k].hotkey == 57 and skilldata2.minxx == 5 then loadPaths("1-10human/secondpriest"); end if settings.profile.skills[k].hotkey == 57 and skilldata2.minxx == 6 then loadPaths("1-10human/secondknight"); end end end function myskillup(_loadonly) -- level up the skill by using an internal leveling table -- load the skills for using into the profile skill table -- e.g. 4 = third skill tab, 2 = second skill on the tab -- CAUTION: addressing a invalid skill will crash the RoM client local skillLevelupMap = { [CLASS_WARRIOR] = { [1] = { aslevel = 1, skillname="WARRIOR_SLASH" }, [2] = { aslevel = 2, skillname="WARRIOR_OPEN_FLANK" }, [3] = { aslevel = 2, skillname="WARRIOR_PROBING_ATTACK" }, [4] = { aslevel = 4, skillname="WARRIOR_TACTICAL_ATTACK" }, [5] = { aslevel = 4, skillname="WARRIOR_ENRAGED" }, }, [CLASS_SCOUT] = { [1] = { aslevel = 1, skillname="SCOUT_SHOT" }, [2] = { aslevel = 2, skillname="SCOUT_WIND_ARROWS" }, [3] = { aslevel = 4, skillname="SCOUT_VAMPIRE_ARROWS" },}, [CLASS_ROGUE] = { [1] = { aslevel = 1, skillname="ROGUE_SHADOWSTAB" }, [2] = { aslevel = 2, skillname="ROGUE_LOW_BLOW" }, [3] = { aslevel = 6, skillname="ROGUE_WOUND_ATTACK" }, }, [CLASS_MAGE] = { [1] = { aslevel = 1, skillname="MAGE_FLAME" }, [2] = { aslevel = 4, skillname="MAGE_FIREBALL" }, }, [CLASS_PRIEST] = { [1] = { aslevel = 1, skillname="PRIEST_RISING_TIDE" }, [2] = { aslevel = 1, skillname="PRIEST_URGENT_HEAL" }, [3] = { aslevel = 4, skillname="PRIEST_REGENERATE" }, }, [CLASS_KNIGHT] = { [1] = { aslevel = 1, skillname="KNIGHT_PUNISHMENT" }, [2] = { aslevel = 1, skillname="KNIGHT_HOLY_STRIKE" }, [3] = { aslevel = 1, skillname="KNIGHT_MANA_RETURN" }, }, [CLASS_WARDEN] = { [1] = { aslevel = 1, skillname="WARDEN_CHARGED_CHOP" }, [2] = { aslevel = 1, skillname="WARDEN_ENERGY_ABSORB" }, [3] = { aslevel = 2, skillname="WARDEN_THORNY_VINE" }, [4] = { aslevel = 4, skillname="WARDEN_BRIAR_SHIELD" }, [5] = { aslevel = 8, skillname="WARDEN_POWER_OF_THE_WOOD_SPIRIT" } }, [CLASS_DRUID] = { [1] = { aslevel = 1, skillname="DRUID_RECOVER" }, [2] = { aslevel = 1, skillname="DRUID_EARTH_ARROW" }, [3] = { aslevel = 2, skillname="DRUID_BRIAR_ENTWINEMENT" }, [4] = { aslevel = 6, skillname="DRUID_RESTORE_LIFE" } }, }; local leveluptable = skillLevelupMap[player.Class1]; for i,v in pairs(leveluptable) do if (_loadonly ~= "loadonly") then -- levelup the skill ingame -- TODO: maxlevel skills vs. new skill with only one level if( player.Level == v.aslevel ) then -- maxlevel the new skill levelupSkill(v.skillname, v.aslevel); elseif( player.Level == 2 and v.aslevel == 1) then -- 2x aft level 2 levelupSkill(v.skillname, 2); elseif( player.Level > v.aslevel ) then -- levelup 1 level levelupSkill(v.skillname); end end; -- sort the skill table local skillSort = function(tab1, tab2) if( tab2.priority < tab1.priority ) then return true; end; return false; end table.sort(settings.profile.skills, skillSort); end -- special skill for SCOUT / not usable, just level it --[[if(_loadonly ~= "loadonly") then if(player.Class1 == CLASS_SCOUT and player.Level == 6 ) then levelupSkill("SCOUT_RANGED_WEAPON_MASTERY", 6) elseif(player.Class1 == CLASS_SCOUT and player.Level > 6 ) then levelupSkill("SCOUT_RANGED_WEAPON_MASTERY") end end--]] end function openbags1To10(_player_level) if player.Level == 2 then inventory:useItem(201843); yrest(2000); end if player.Class2 ~= 8 and player.Class2 ~= 7 and player.Class2 ~= 6 and player.Class2 ~= 5 and player.Class2 ~= 4 and player.Class2 ~= 3 and player.Class2 ~= 2 and player.Class2 ~= 1 then if( not _player_level) then _player_level = player.Level; end cprintf(cli.lightblue, language[170], _player_level ); -- Open and equipt giftbag for level -- open giftbag and equipt content -- yrest(2000); -- time for cooldowns to phase-out for i,v in pairs(database.giftbags) do if( _player_level == v.level) then if( v.armor == armorMap[player.Class1] or -- only if items have the right armor v.armor == nil ) then -- or is armor independent local hf_return, hf_itemid, hf_name = inventory:useItem( v.itemid ); -- open bag or equipt item if ( hf_return ) then cprintf(cli.lightblue, language[171], hf_name ); -- Open/eqipt item: else cprintf(cli.yellow, language[174], v.name ); -- item not found end yrest(2000); -- wait for using that item if( v.type == "bag" ) then -- after opening bag update inventory yrest(4000); -- some more time to open the bag inventory:update(); -- update slots end; end; end; end end end function changeclass() sendMacro("ExchangeClass(EXCHANGECLASS_SUBCLASS, EXCHANGECLASS_MAINCLASS)"); yrest(2000); player:update(); yrest(1000); setupMacros() yrest(1000); sendMacro("SwapEquipmentItem();"); yrest(1000); setactionbar() setranged() player = CPlayer.new() player.level_detect_levelup = player.Level; yrest(1000); checkskilllvl() yrest(1000); end function knightskills() if player.Class1 == CLASS_KNIGHT then local targetPawn = CPawn(player.TargetPtr); if( arg1.Name == "KNIGHT_MANA_RETURN" ) then if( targetPawn ~= nill and targetPawn ~= 0 and targetPawn ~= player.Address ) then local bool, count = targetPawn:hasDebuff("Holy Seals (3)"); if( bool == true ) then return true; else return false; end else return true; end else return true; end end end