diff --git a/bard-whistle.lic b/bard-whistle.lic new file mode 100644 index 0000000000..55b489ee3b --- /dev/null +++ b/bard-whistle.lic @@ -0,0 +1,27 @@ +custom_require.call(%w(common drinfomon)) + +no_kill_all + +class Whistle + def initialize + @combat_scripts = ['hunting-buddy', 'combat-trainer'] + exit unless DRStats.guild == 'Bard' && DRSkill.getrank('Bardic Lore') < 1750 && DRStats.circle >= 18 + passive_loop + end + + def do_whistle + return if @combat_scripts.any? { |name| Script.running?(name) } + return unless DRSkill.getxp('Bardic Lore') < 32 + + fput('WHISTLE PIERCING') + end + + def passive_loop + loop do + do_whistle + pause 30 + end + end +end + +Whistle.new diff --git a/bootstrap.lic b/bootstrap.lic index b97ad75e6f..8d8be595ec 100644 --- a/bootstrap.lic +++ b/bootstrap.lic @@ -3,8 +3,9 @@ Documentation: https://elanthipedia.play.net/Lich_script_development#bootstrap =end -$BOOTSTRAP_VERSION = '1.0.2' +$BOOTSTRAP_VERSION = '1.0.3' DRINFOMON_IN_CORE_LICH ||= false +DRINFOMON_CORE_LICH_DEFINES ||= [] class_defs = { 'drinfomon' => :DRINFOMON, @@ -54,7 +55,7 @@ $MODERN_LICH = lich_version >= if Regexp.last_match(1) Gem::Version.new('4.6.49') end -if args.wipe_constants +if args.wipe_constants && !DRINFOMON_IN_CORE_LICH class_defs.each_value { |symb| remove_constant(symb) if constant_defined?(symb) } exit end @@ -62,9 +63,9 @@ end scripts_to_run = args.flex || [] echo scripts_to_run.to_s if UserVars.bootstrap_debug -if scripts_to_run.include?("drinfomon") && DRINFOMON_IN_CORE_LICH - scripts_to_run -= ['drinfomon'] - echo("Removing drinfomon from scripts_to_run") if UserVars.bootstrap_debug +if (scripts_to_run & DRINFOMON_CORE_LICH_DEFINES).any? + scripts_to_run -= DRINFOMON_CORE_LICH_DEFINES + echo("Removing core lich defines from scripts_to_run") if UserVars.bootstrap_debug end until scripts_to_run.empty? diff --git a/dependency.lic b/dependency.lic index c60737e984..551277bb8e 100644 --- a/dependency.lic +++ b/dependency.lic @@ -10,9 +10,10 @@ require 'ostruct' require 'digest/sha1' require 'monitor' -$DEPENDENCY_VERSION = '1.7.6' +$DEPENDENCY_VERSION = '1.7.10' $MIN_RUBY_VERSION = '3.2.2' DRINFOMON_IN_CORE_LICH ||= false +DRINFOMON_CORE_LICH_DEFINES ||= [] no_pause_all no_kill_all @@ -206,7 +207,7 @@ class ScriptManager @paste_bin_url = 'https://pastebin.com/api/api_post.php' @firebase_url = 'https://dr-scripts.firebaseio.com/' @status_repo = Settings['status_repo'] || 'rpherbig/dr-scripts' - @status_branch = Settings['status_branch'] || 'master' + @status_branch = Settings['status_branch'] || 'main' update_status_url # Gating setting lich_url on lich version @@ -244,14 +245,14 @@ class ScriptManager def update_status_url defaulturl = 'https://api.github.com/repos/' + @status_repo + '/git/trees/' + @status_branch mainurl = 'https://api.github.com/repos/rpherbig/dr-scripts/git/trees/main' - fallbackurl = 'https://api.github.com/repos/rpherbig/dr-scripts/git/trees/master' eo_drscripts = 'https://api.github.com/repos/elanthia-online/dr-scripts/git/trees/main' unless url_exist?(defaulturl) - _respond Lich::Messaging.monsterbold("Default URL #{defaulturl} not responding. Using an alternate repo+branch combindation.") + _respond Lich::Messaging.monsterbold("Default URL #{defaulturl} not responding. Using an alternate repo+branch combination.") _respond Lich::Messaging.monsterbold("Unsetting custom repo settings, if any.") Settings['status_repo'] = nil if Settings['status_repo'] Settings['status_branch'] = nil if Settings['status_branch'] + Settings.save end if url_exist?(defaulturl) @@ -260,9 +261,6 @@ class ScriptManager elsif url_exist?(mainurl) _respond Lich::Messaging.monsterbold("Using alternate Status URL. #{mainurl}") @status_url = mainurl - elsif url_exist?(fallbackurl) - _respond Lich::Messaging.monsterbold("Using fallback Status URL. #{fallbackurl}") - @status_url = fallbackurl elsif url_exist?(eo_drscripts) _respond Lich::Messaging.monsterbold("Using Elanthia Online Status URL. #{eo_drscripts}") @status_url = eo_drscripts @@ -272,7 +270,7 @@ class ScriptManager end def url_exist?(url_string) - url = URI.parse(url_string) + url = URI.parse(URI::Parser.new.escape(url_string)) req = Net::HTTP.new(url.host, url.port) req.use_ssl = (url.scheme == 'https') path = url.path @@ -295,7 +293,7 @@ class ScriptManager def unset_custom_status @status_repo = 'rpherbig/dr-scripts' - @status_branch = 'master' + @status_branch = 'main' update_status_url end @@ -1606,8 +1604,8 @@ def custom_require script_names = [script_names] unless script_names.is_a?(Array) respond("CR:starting:#{script_names}") if UserVars.bootstrap_debug if DRINFOMON_IN_CORE_LICH - echo("DRInfomon in core lich detected. Skipping loading drinfomon.lic") if UserVars.bootstrap_debug - script_names -= ['drinfomon'] + echo("DRInfomon in core lich detected. Skipping loading drinfomon and commons") if UserVars.bootstrap_debug + script_names -= DRINFOMON_CORE_LICH_DEFINES end bootstrapper = force_start_script('bootstrap', script_names) pause 0.05 @@ -1713,7 +1711,7 @@ def stop_autostart(script_names) end end -def set_custom_status_repo(repo, branch = 'master') +def set_custom_status_repo(repo, branch = 'main') $manager.set_custom_status_repo(repo, branch) end @@ -1734,6 +1732,7 @@ def setup_profiles end def setup_data + echo("Force checking scripts/data files.") $manager.setup_data end @@ -1783,7 +1782,7 @@ end def update_d echo('Restarting Dependency in 2 seconds...') - force_start_script('bootstrap', ['wipe_constants']) + force_start_script('bootstrap', ['wipe_constants']) unless DRINFOMON_IN_CORE_LICH before_dying do sleep 2 force_start_script('dependency') @@ -1833,7 +1832,7 @@ end full_install if install -force_start_script('bootstrap', ['wipe_constants']) +force_start_script('bootstrap', ['wipe_constants']) unless DRINFOMON_IN_CORE_LICH # Proactively starting DRinfomon as script zero to prevent # race conditions involving this script which so many other @@ -1849,7 +1848,7 @@ end if DRINFOMON_IN_CORE_LICH Lich::Util.issue_command("exp all 0", /^Circle: \d+/, /^Rested EXP Stored|Unlock Rested Experience|type: AWAKEN/, quiet: true) Lich::Util.issue_command("info", /^Name/, /^