Example #1
0
p = None
s = ScriptState()

class _AllActions(object):
    pass
all_actions = _AllActions()

def _append_to_all_actions(dir, prefix, name):
    module = __import__(prefix + name, globals(), locals(), [''])
    for action in Action.iter(module):
        if hasattr(all_actions, action.__name__):
            raise RuntimeError("Duplicate actions with the name '%s'." % action.__name__)
        setattr(all_actions, action.__name__, action)

traverse_scripts(os.path.dirname(__file__),
                 'mudwyrm_users.admin.achaea.scripts.actions.',
                 _append_to_all_actions)

def init(processor):
    assert processor is not None
    global p
    p = processor
  
    
@OnEvent('ActionFinished')
def test_action_finished(finished_action):
    pass #p.debug('Action finished: %s' % finished_action)
    

Example #2
0
def _add_area(dir, prefix, name):
    module = __import__(prefix + name, globals(), locals(), [''])
    assert hasattr(module, 'name'), \
        "An area module must have a name: %s" % (prefix + name)
    assert module.name not in areas, "Duplicate area: %s" % module.name
    area = Area()
    area.name = module.name
    area.trigger_packs = [p for p in module.__dict__.itervalues()
                          if isinstance(p, type)
                             and not p.__name__.startswith('_')
                             and issubclass(p, TriggerPack)
                             and p != TriggerPack]
    areas[area.name] = area

traverse_scripts(os.path.dirname(__file__),
                 'mudwyrm_users.admin.achaea.scripts.areas.',
                 _add_area)

@OnEvent('RoomUpdated')
def on_room_updated():
    if s.previous_area:
        if char.room.area == s.previous_area.name:
            return
        for pack in s.previous_area.trigger_packs:
            p.remove_trigger_pack(pack)
    if char.room.area not in areas:
        s.previous_area = None
        return
    area = areas[char.room.area]
    for pack in area.trigger_packs:
        p.add_trigger_pack(pack)