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)
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)