db.close() smap = SkillMap() def shutdown(**kwargs): smap.save() skill_info.connect(smap.show_skill_info) skills.connect(smap.skills_update) pre_shutdown.connect(shutdown) skill_triggers = triggers.create_group('skill', app='skills') skill_aliases = aliases.create_group('skill', app='skills') track_shortnames = False @skill_aliases.exact(pattern="skillsup", intercept=True) def updateskills(alias): gmcp.get_skills() @skill_aliases.exact(pattern="skills load", intercept=True) def loadstuff(alias): smap.load() @skill_aliases.exact(pattern="skills save", intercept=True) def savestuff(alias):
import time from sage.signals.gmcp import room from sage.signals import pre_shutdown import meta from maplib import Map from sage import echo, ansi, send, aliases, triggers, player, delay, loopdelay import sage mapper_aliases = aliases.create_group('mapper', app='mapper') mapper_triggers = triggers.create_group('mapper', app='mapper') mapdata = Map(meta.path + '/mapdata.json.gz') def room_info(**kwargs): new = False room = kwargs['room'] room.name = room.name.replace("Flying above ","").replace("In the trees above ","") if room.id not in mapdata.rooms: new = True mapdata.add( room.id, room.name, room.area, room.environment, {int(v):k for k, v in room.exits.items()}, room.coords, room.details, room.map, new )
if tracker.confirm_cure('anorexia', trigger.line): trigger.gag_prompt=True trigger.line.gag() def echo_aff(signal,affliction): sage.echo(ansi.bold_red("ADDED AFFLICTION: %s"%affliction)) def echo_aff_rem(signal,affliction): sage.echo(ansi.bold_green("REMOVED AFFLICTION: %s"%affliction).encode('utf-8')) ### chatter chatter_trigs = triggers.create_group('chatter', app='combat') chatter_aliases = aliases.create_group('chatteral', app='combat') @chatter_aliases.exact('chatteron', enabled=True) def chatteron(alias): sage.echo("Enabling filter for combat chatter") chatter_trigs.enable() @chatter_aliases.exact('chatteroff', enabled=True) def chatteroff(alias): sage.echo("Disabling filter for combat chatter") chatter_trigs.disable() @chatter_trigs.regex(pattern="^([A-Z][a-z]+) takes a drink from .*.$", enabled=True) def drinkstuff(trigger): trigger.gag_prompt=True trigger.line.gag()
trigger.gag_prompt = True trigger.line.gag() def echo_aff(signal, affliction): sage.echo(ansi.bold_red("ADDED AFFLICTION: %s" % affliction)) def echo_aff_rem(signal, affliction): sage.echo( ansi.bold_green("REMOVED AFFLICTION: %s" % affliction).encode('utf-8')) ### chatter chatter_trigs = triggers.create_group('chatter', app='combat') chatter_aliases = aliases.create_group('chatteral', app='combat') @chatter_aliases.exact('chatteron', enabled=True) def chatteron(alias): sage.echo("Enabling filter for combat chatter") chatter_trigs.enable() @chatter_aliases.exact('chatteroff', enabled=True) def chatteroff(alias): sage.echo("Disabling filter for combat chatter") chatter_trigs.disable() @chatter_trigs.regex(pattern="^([A-Z][a-z]+) takes a drink from .*.$",
smap = SkillMap() def shutdown(**kwargs): smap.save() skill_info.connect(smap.show_skill_info) skills.connect(smap.skills_update) pre_shutdown.connect(shutdown) skill_triggers = triggers.create_group('skill', app='skills') skill_aliases = aliases.create_group('skill', app='skills') track_shortnames = False @skill_aliases.exact(pattern="skillsup", intercept=True) def updateskills(alias): gmcp.get_skills() @skill_aliases.exact(pattern="skills load", intercept=True) def loadstuff(alias): smap.load() @skill_aliases.exact(pattern="skills save", intercept=True) def savestuff(alias): smap.save()
def ql_info(room, new): for line in sage.buffer: if line[:-1] == room.name: line.output += ansi.grey(' (%s) (%s)' % (room.area, room.id)) if new: line.output += ansi.grey(' [new]') sage.defer_to_prompt(ql_info, room, new) room_triggers = triggers.create_group('room', app='mapper') room_aliases = aliases.create_group('room', app='mapper') track_shortnames = False @room_aliases.exact(pattern="imap shorton", intercept=True) def short_on(alias): global track_shortnames track_shortnames = True @room_aliases.exact(pattern="imap save", intercept=True) def isave(alias): itemdata.write_to_db() mapdata.write_to_db() @room_aliases.exact(pattern="imap load", intercept=True) def iload(alias): itemdata.load()
import sage from sage.signals.gmcp import room as room_signal from sage import player, aliases # Create an alias group for whodat who_aliases = aliases.create_group('whodat', app='whodat') # store in the app what our last room id was so we know when we change rooms last_room = None def write_players(): if len(player.room.players) > 0: # if there are players in the room players = ', '.join(player.room.players) # format players into CSV sage.buffer.insert(len(sage.buffer) - 1, 'Who: ' + players) # Insert line above exits in QL def on_room_update(signal, room): def update_players(): # use of global isn't encouraged, but in this case it was a simple solution global last_room # we get room events even if we don't change rooms. eg: squinting. if player.room.id == last_room: return last_room = player.room.id write_players() # Why defer to prompt? Because GMCP data and the actual lines from Achaea don't always come
for k, v in room.exits.items()}, room.coords, room.details, room.map, new) add_items(**kwargs) def ql_info(room, new): for line in sage.buffer: if line[:-1] == room.name: line.output += ansi.grey(' (%s) (%s)' % (room.area, room.id)) if new: line.output += ansi.grey(' [new]') sage.defer_to_prompt(ql_info, room, new) room_triggers = triggers.create_group('room', app='mapper') room_aliases = aliases.create_group('room', app='mapper') track_shortnames = False @room_aliases.exact(pattern="imap shorton", intercept=True) def short_on(alias): global track_shortnames track_shortnames = True @room_aliases.exact(pattern="imap save", intercept=True) def isave(alias): itemdata.write_to_db() mapdata.write_to_db()
""" http://spicerack.github.io/sage/html/quickstart.html """ from sage import triggers, aliases, ansi, send from sage.signals.gmcp import room as room_signal room_triggers = triggers.create_group('room', app='quickstart') room_aliases = aliases.create_group('room', app='quickstart') # interception to False means the original command passes through @room_aliases.exact(pattern="ql", intercept=False) def ql(alias): # enable the exits trigger room_triggers('exits').enable() # send to Achaea #send('ql') @room_triggers.regex( "^You see (a single exit leading|exits leading) ([a-z, \(\)]+)\.$", enabled=False) def exits(trigger): exit_str = trigger.groups[1] exit_str = exit_str.replace('and', '') exits = [ansi.bold_white(e.strip()) for e in exit_str.split(',')] new_str = ', '.join(exits)
import sage from sage.signals.gmcp import room as room_signal from sage import player, aliases # Create an alias group for whodat who_aliases = aliases.create_group('whodat', app='whodat') # store in the app what our last room id was so we know when we change rooms last_room = None def write_players(): if len(player.room.players) > 0: # if there are players in the room players = ', '.join(player.room.players) # format players into CSV sage.buffer.insert(len(sage.buffer) - 1, 'Who: ' + players) # Insert line above exits in QL def on_room_update(signal, room): def update_players(): # use of global isn't encouraged, but in this case it was a simple solution global last_room # we get room events even if we don't change rooms. eg: squinting. if player.room.id == last_room: return last_room = player.room.id write_players() # Why defer to prompt? Because GMCP data and the actual lines from Achaea don't always come # at the same time. To make sure we don't get out of sync, we defer to the prompt when
global do_loop if player.health.value == 0: sage.send('qq') return if do_loop: explr.on_begin() explr.scope_it_out() explr.room_actions() explr.quest_actions() explr.attacks() explr.other() #explr.on_end() sage.delay(0.1, action_loop) xplr_triggers = triggers.create_group('xplr', app='explorer') xplr_aliases = aliases.create_group('xplr', app='explorer') vial_triggers = triggers.create_group('vials', app='explorer') @xplr_triggers.regex('^You determine that there is a ([a-z]+) lode of ([a-z ]+) here. Approximately ([0-9]+)% has been mined.$', enabled=True) def xplr_lode_partial(trigger): #entry=(type, size, percent, location, area, owner) entry=[trigger.groups[1].lower(), trigger.groups[0].lower(), trigger.groups[2], player.room.id, player.room.area, time.time(), "NONE"] explr.all_mines.append(entry) print player.room.id print trigger.line @xplr_triggers.regex('^You determine that there is a ([a-z]+) lode of ([a-z ]+) here.$', enabled=True) def xplr_lode(trigger): #entry=(type, size, percent, location, area, owner)
sage.echo(talker) sage.echo(channel) response = response + ' ' + val['bot'].ask(text) last_response = max(time.time(), last_response) time_to_type = len(response) / 5.0 last_response = last_response + time_to_type sage.delay(last_response - time.time(), sage.send, response) comms.connect(echo_comms) comms.connect(chatstuff) pull_comms() comm_triggers = triggers.create_group('comm', app='communication') comm_aliases = aliases.create_group('comm', app='communication') @comm_aliases.startswith(pattern="talkon", intercept=True) def talkon(alias): global talkon talkon = True sage.echo("Enabling chatter") @comm_aliases.startswith(pattern="talkoff", intercept=True) def talkoff(alias): global talkon talkon = False sage.echo("Disabling chatter")
sage.echo(re.sub('"','',re.sub('.*, "','',text))) sage.echo(talker) sage.echo(channel) response = response + ' ' + val['bot'].ask(text) last_response = max(time.time(), last_response) time_to_type = len(response)/5.0 last_response = last_response + time_to_type sage.delay(last_response-time.time(), sage.send, response) comms.connect(echo_comms) comms.connect(chatstuff) pull_comms() comm_triggers = triggers.create_group('comm', app='communication') comm_aliases = aliases.create_group('comm', app='communication') @comm_aliases.startswith (pattern="talkon", intercept=True) def talkon(alias): global talkon talkon = True sage.echo("Enabling chatter") @comm_aliases.startswith (pattern="talkoff", intercept=True) def talkoff(alias): global talkon talkon = False sage.echo("Disabling chatter") @comm_aliases.startswith (pattern="comm do ", intercept=True) def comm_do(alias):
from __future__ import division import sage from sage import player, triggers, echo, aliases from sage.signals import post_prompt overwatch = sage.apps.overwatch_utilities.Sipping() osys = sage.apps.overwatch_utilities overwatch.balance = player.Balance() player.sip = player.Balance() """ Aliases """ sipper_aliases = aliases.create_group('sipper', app='overwatch_sipper', enabled=True) @sipper_aliases.regex("^oconfig sip(\w+) (\d+)$", enabled=True) def changeSipPercentage(alias): prioset = alias.groups[0] priocent = alias.groups[1] if prioset == "health": overwatch.health_sipat = int(priocent) osys.system_echo("Health sipping percentage set to " + str(overwatch.health_sipat)) elif prioset == "mana": overwatch.mana_sipat = int(priocent) osys.system_echo("Mana sipping percentage set to " + str(overwatch.mana_sipat)) else: osys.system_echo("Invalid sipping type! Health and mana are both valid.") @sipper_aliases.regex("^hh$", enabled=True) def toggleSipPriority(alias):
def connect(**kwargs): ic.channel = channel ic.nickname = player.name reactor.connectTCP(server, port, factory) def got_names(nicklist): nicklist.sort() echo('%s members:' % channel) echo('-' * 10) for nick in nicklist: echo(nick) alias = aliases.create_group('irc', app='irc') @alias.startswith('it ') def it(alias): ic.say(channel, alias.suffix) @alias.startswith('itme ') def itme(alias): ic.describe(channel, alias.suffix) @alias.regex('^pm (\w+) (.*)') def privmsg(alias): target = alias.groups[0]
class Sipping: priority = "health" health_sipat = 85 mana_sipat = 65 use_moss = False moss_health_eatat = 65 moss_mana_eatat = 65 balance = None currently_sipping = False last_siptype = "health" class Statistics: latency = 0 """ Global Aliases """ global_aliases = aliases.create_group('global', app='overwatch_utilities', enabled=True) @global_aliases.regex('^pp$', enabled=True) def system_pause(alias): if Control.paused is True: system_echo('System unpaused!') Control.paused = False else: system_echo('System paused!') Control.paused = True @global_aliases.regex('^ostats$', enabled=True) def system_stats(alias): for key, value in Sipping.__dict__.items(): if not key.startswith("__"): system_echo(str(key) + ': ' + str(value))
if player.health.value == 0: sage.send('qq') return if do_loop: explr.on_begin() explr.scope_it_out() explr.room_actions() explr.quest_actions() explr.attacks() explr.other() #explr.on_end() sage.delay(0.1, action_loop) xplr_triggers = triggers.create_group('xplr', app='explorer') xplr_aliases = aliases.create_group('xplr', app='explorer') vial_triggers = triggers.create_group('vials', app='explorer') @xplr_triggers.regex( '^You determine that there is a ([a-z]+) lode of ([a-z ]+) here. Approximately ([0-9]+)% has been mined.$', enabled=True) def xplr_lode_partial(trigger): #entry=(type, size, percent, location, area, owner) entry = [ trigger.groups[1].lower(), trigger.groups[0].lower(), trigger.groups[2], player.room.id, player.room.area, time.time(), "NONE" ] explr.all_mines.append(entry) print player.room.id
""" http://spicerack.github.io/sage/html/quickstart.html """ from sage import triggers, aliases, ansi, send from sage.signals.gmcp import room as room_signal room_triggers = triggers.create_group('room', app='quickstart') room_aliases = aliases.create_group('room', app='quickstart') # interception to False means the original command passes through @room_aliases.exact(pattern="ql", intercept=False) def ql(alias): # enable the exits trigger room_triggers('exits').enable() # send to Achaea #send('ql') @room_triggers.regex("^You see (a single exit leading|exits leading) ([a-z, \(\)]+)\.$", enabled=False) def exits(trigger): exit_str = trigger.groups[1] exit_str = exit_str.replace('and', '') exits = [ansi.bold_white(e.strip()) for e in exit_str.split(',')] new_str = ', '.join(exits) trigger.line.output = "Exits: " + new_str