<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE muclient>
<!-- Saved on Thursday, October 11, 2018, 7:12 PM -->
<!-- MuClient version 5.05 -->

<!-- Plugin "CosmicRage" generated by Plugin Wizard -->

<muclient>
<plugin
   name="CosmicRage"
   author="The Cosmic Rage hosting team"
   id="57139deb42b490952946f9e4"
   language="Lua"
   purpose="Main plugin for Cosmic Rage, which holds the main triggers, keystrokes, and functions."
   date_written="2004-08-26 19:06:10"
   requires="4.82"
   version="1.0"
sequence="10000"
   >

</plugin>

<script>
<![CDATA[
for i = 1, 9 do
Accelerator("alt + " .. i, "@buffer " .. i)
end
Accelerator("alt + 0", "@buffer 10") -- 10 is a special case
Accelerator("alt + right", "@buffer forward")
Accelerator("alt + left", "@buffer backward")
Accelerator("alt + down", "@buffer down")
Accelerator("alt + up", "@buffer up")
Accelerator("alt + pagedown", "@buffer scrolldown")
Accelerator("alt + pageup", "@buffer scrollup")
Accelerator("alt + end", "@buffer bottom")
Accelerator("alt + home", "@buffer top")
Accelerator("alt+shift+delete", "@buffer clear")
Accelerator("alt+shift+right", "@buffer add")
Accelerator("alt+shift+left", "@buffer delete")
Accelerator("f4", "@sp-settings master volume")
 Accelerator("f5", "@sp-settings General volume")
 Accelerator("f6", "@sp-settings ambiance volume")
 Accelerator("f7", "@sp-settings in and out of character communications volume")
 Accelerator("f8", "@sp-settings planetary music volume")
 Accelerator("ctrl+f5", "@sp-settings clocks volume")
 Accelerator("ctrl+f6", "@sp-settings Combat music volume")
 Accelerator("ctrl+f7", "@sp-settings IC social volume")
 Accelerator("ctrl+f8", "@sp-settings OOC social volume")
 Accelerator("alt+f5", "@sp-settings Ground Combat volume")
 Accelerator("alt+f6", "@sp-settings harvesting activity volume")
 Accelerator("alt+f7", "@sp-settings Salvage activity volume")
 Accelerator("alt+f8", "@sp-settings volume for games such as Pilot's Parody")
 Accelerator("shift+f5", "@sp-settings starship combat volume")
 Accelerator("shift+f6", "@sp-settings ship volume")
 Accelerator("shift+f7", "@sp-settings ship movement volume")
 Accelerator("shift+f8", "@sp-settings vehicle volume")
 Accelerator("f9", "@sp-settings IC social sounds")
 Accelerator("f10", "@sp-settings OOC social sounds")
 Accelerator("alt+f9", "@sp-settings panning of sounds")
 Accelerator("alt+f10", "@sp-settings pitch-shifting sounds")
 Accelerator("alt+f11", "@sp-settings ambiance")
 Accelerator("ctrl+f9", "@sp-settings planetary music")
 Accelerator("ctrl+f10", "@sp-settings space combat music")
 Accelerator("ctrl+f11", "@sp-settings weather sounds")
 Accelerator("alt+f12", "@sp-restart")
 Accelerator("shift+alt+f9", "@sp-settings Interrupt OOC Social sounds when the next one plays")
 Accelerator("f2", "@sp-settings")

Accelerator("shift+f1", "@sp-toggle")
Accelerator("Ctrl+shift+enter", "@sp-settings buffer sounds")
Accelerator("ctrl+shift+v", "@sp-version")


function RegisterMushClient(name, line, wildcards)
  DoAfter(1, '@sp-register mush')
end

-- Define the latest soundpack version here
CURRENT_SP_VERSION = 3

function CheckSoundpackVersion(name, line, wildcards, styles)
  local user_version = tonumber(wildcards.user_version)
  if not user_version then
    ColourNote("red", "", "Error: Could not read your soundpack version.")
    return
  end

Note("You are currently running version " .. tostring(CURRENT_SP_VERSION).." of the Cosmic Rage Mush Immersion.")

  local version_diff = user_version - CURRENT_SP_VERSION

  if version_diff > 0 then
    ColourNote("yellow", "", "Warning: Your soundpack is " .. version_diff .. " version(s) out of date. We are now on version " .. user_version .. " of the soundpack.")
    ColourNote("yellow", "", "Run Updater.bat to pull the latest version.")
  else
    ColourNote("green", "", "Your soundpack is up to date!")
  end
end

function url_encode(str)
  return (str:gsub("([^%w%-%_%.%~%/])", function(c)
    return string.format("%%%02X", string.byte(c))
  end))
end
]]>


dir=world.GetInfo(67)
require "socket.http"
require "ltn12"
PPI = require("ppi")
ppi = PPI.Load("aedf0cb0be5bf045860d54b7")
if not ppi then
  error("Dependency plugin not installed!")
end
</script>

<!--  Get our standard constants -->

<include name="constants.lua"/>

<!--  Triggers  -->
<triggers>
  <trigger
   enabled="y"
   group="hook"
   keep_evaluating="y"
   match = "Welcome to: Cosmic Rage!"
   send_to="12"
   sequence="100"
  >
  <send>
local intro = tonumber(GetVariable("intro") or "")
if not intro or ppi.isPlaying(intro) == 0 then
  temp = ppi.play(dir.."sounds/ogg/music/IntroMusic/DefaultIntro.ogg", 1, 0, 40)
  SetVariable("intro", temp)
end
</send>
</trigger>
  <trigger
   enabled="y"
   group="hook"
   keep_evaluating="y"
   match = "synaptic signal verified. Sleep mode disengaged. Welcome back to Cosmic Rage!"
   send_to="12"
   sequence="100"
script="RegisterMushClient"
  >
  <send>
  temp=GetVariable("intro")
  ppi.stop(temp)
</send>
</trigger>

  <trigger
   enabled="y"
   group="hook"
   keep_evaluating="y"
   match = "Your synaptic signal wavers for a moment, then returns with a snap!"
   send_to="12"
   sequence="100"
script="RegisterMushClient"
  >
  <send>
  temp=GetVariable("intro")
  ppi.stop(temp)
</send>
</trigger>

<trigger
   enabled="y"
   group="hook"
   omit_from_output="y"
   match="^\$soundpack mush last version: (?P<user_version>\d+)"
   regexp="y"
   script="CheckSoundpackVersion"
   sequence="100"
/>


  <trigger
   enabled="y"
   group="hook"
   omit_from_output="y"
   keep_evaluating="n"
match="^\$sphook\s+(?P<action>[\w]+):(?P<path>[\w./\\\s]+):(?P<volume>[\w]+):(?P<pitch>[\w-]+):(?P<pan>[\w-]+):(?P<id>[\w]+)$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>
  action="%1"
  path="%2"
  volume="%3"
  pitch="%4"
  pan="%5"
  id="%6"
  volume=tonumber(volume)
if (path == "na") then
else
  sound_path = dir .. "sounds/ogg/" .. path .. ".ogg"
  directory_path = sound_path:match("(.*/)")
if directory_path then
  test_file = io.open(directory_path .. "tester.txt", "w")
  if test_file then
    test_file:close()
    os.remove(directory_path .. "checker.txt")  -- Clean up
  else
    os.execute('mkdir "' .. directory_path .. '" 2>nul')
  end
end
  file = io.open(sound_path, "r")
if file then
  file:close()
else
local encoded_path = url_encode(path)
local download_url = "http://nathantech.net:3000/CosmicRage/CosmicRageSounds/raw/branch/main/ogg/" .. encoded_path .. ".ogg"
  body = {}
  result, status_code, headers, status = socket.http.request{
    url = download_url,    sink = ltn12.sink.table(body)
  }
  if result and status_code == 200 then
    save_file = io.open(sound_path, "wb")
    if save_file then
      save_file:write(table.concat(body))
      save_file:close()
    end
else
  Note("Download of "..path.." failed with status code: " .. tostring(status_code))
  end
end
end

if (pitch == "na") then
  pitch = -10000
else
  pitch = tonumber(pitch)
  pitch = (pitch - 44100) / 98
end

if (pan == "na") then
  pan = -10000
else
  pan = tonumber(pan)
end

if (action == "play") then
  temp = ppi.play(dir.."sounds/ogg/"..path..".ogg", 0, pan, volume)
  if (pitch > -10000) then
    ppi.setPitch(pitch, temp)
  end
  if (pan > -10000) then
    ppi.setPan(pan, temp)
  end
  end
  if (action=="playrec") then
  temp=ppi.play(dir.."sounds/ogg/"..path..".ogg", 0, pan, volume)
  SetVariable(id, temp)
  if(pitch>-10000) then
  ppi.setPitch(pitch,temp)
  end
  if(pan>-10000) then
  ppi.setPan(pan,temp)
  end
  end
  if (action=="loop") then
  temp=ppi.play(dir.."sounds/ogg/"..path..".ogg", 1, pan, volume)
  SetVariable(id, temp)
  if(pitch>-10000) then
  ppi.setPitch(pitch,temp)
  end
  if(pan>-10000) then
  ppi.setPan(pan,temp)
  end
  end
  if (action=="adjustsound") then
  temp=GetVariable		(id)
if(volume>-1) then
  ppi.setVol(volume,temp)
  end
  if(pitch>-10000) then
  ppi.setPitch(pitch,temp)
  end
  if(pan>-10000) then
  ppi.setPan(pan,temp)
  end
  end
  if (action=="stop") then
  temp=GetVariable(id)
  ppi.stop(temp)
  end
  </send>
  </trigger>
    </triggers>

<!--  Aliases  -->

<aliases>
  </aliases>

</muclient>