From 95712e552001701291c70e10cfefab378bcdab30 Mon Sep 17 00:00:00 2001 From: dngfx <294904+dngfx@users.noreply.github.com> Date: Sat, 8 Sep 2018 11:51:43 +0100 Subject: [PATCH] Ducks new progress --- modules/ducks.py | 12 ++--- modules/ducks_new.py | 114 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 120 insertions(+), 6 deletions(-) create mode 100644 modules/ducks_new.py diff --git a/modules/ducks.py b/modules/ducks.py index 4bcef982..9b2d78f2 100644 --- a/modules/ducks.py +++ b/modules/ducks.py @@ -33,15 +33,15 @@ class Module(object): "stats!") - exports.add("channelset", {"setting": "ducks-enabled", - "help": "Toggle ducks!", "validate": Utils.bool_or_none}) + #exports.add("channelset", {"setting": "ducks-enabled", + # "help": "Toggle ducks!", "validate": Utils.bool_or_none}) - events.on("received.numeric.366").hook(self.bootstrap) + #events.on("received.numeric.366").hook(self.bootstrap) - events.on("raw").on("376").hook(self.duck_loop_entry) + #events.on("raw").on("376").hook(self.duck_loop_entry) - events.on("timer").on("duck-decoy").hook(self.duck_decoy) - events.on("timer").on("show-duck").hook(self.show_duck) + #events.on("timer").on("duck-decoy").hook(self.duck_decoy) + #events.on("timer").on("show-duck").hook(self.show_duck) def duck_loop_entry(self, event): wait = self.get_random_duck_time() diff --git a/modules/ducks_new.py b/modules/ducks_new.py new file mode 100644 index 00000000..261bb24b --- /dev/null +++ b/modules/ducks_new.py @@ -0,0 +1,114 @@ +from operator import itemgetter +import Utils +import random + +DUCK_TAIL = "・゜゜・。。・゜゜" +DUCK_HEAD = ["\_o< ", "\_O< ", "\_0< ", "\_\u00f6< ", "\_\u00f8< ", + "\_\u00f3< "] +DUCK_MESSAGE = ["QUACK!", "FLAP FLAP!", "quack!", "squawk!"] +DUCK_MESSAGE_RARE = ["beep boop!", "QUACK QUACK QUACK QUACK QUACK!!", "HONK!"] + +DELAY_REDUCE_UNIQUE = 1 +DELAY_REDUCE = 0.5 + +CHANNELS_ENABLED = [] + + +class Module(object): + def __init__(self, bot, events, exports): + self.bot = bot + self.events = events + + # events.on("received").on("command").on("bef").hook(self.duck_action, + # help="Befriend a duck!") + # events.on("received").on("command").on("bang").hook(self.duck_bang, + # help="Shoot a duck! Meanie.") + # events.on("received").on("command").on("decoy").hook(self.set_decoy, + # help="Be a sneaky fellow + ## and make a decoy duck.") + # events.on("received").on("command").on("friends").hook( + # self.duck_friends, + # help="See who the + # friendliest people to ducks are!") + # events.on("received").on("command").on("killers").hook( + # self.duck_enemies, + # help="See who shoots the + # most amount of ducks.") + # events.on("received").on("command").on("duckstats").hook( + # self.duck_stats, + # help="Shows your duck " + # "stats!") + + exports.add("channelset", {"setting": "ducks-enabled", + "help": "Toggle ducks!", + "validate": Utils.bool_or_none}) + + events.on("new.channel").hook(self.bootstrap) + + events.on("received").on("message").on("channel").hook( + self.channel_message) + + def bootstrap(self, event): + channel = event["channel"] + print("Init for " + channel.name) + self.init_game_var(channel) + # getset + ducks_enabled = channel.get_setting("ducks-enabled", False) + + print("Ducks enabled for " + channel.name + " -- " + str( + ducks_enabled)) + if ducks_enabled == True: + print("Starting game for " + channel.name) + self.start_game(channel) + + def init_game_var(self, event): + channel = event + + + if hasattr(channel, 'games') == False: + channel.games = {} + + + def start_game(self, event): + # event is immediately the IRCChannel.Channel() event for the current + # channel + + channel = event + + print("Starting duck game for channel: " + channel.name) + + if "ducks" not in channel.games.keys(): + channel.games["ducks"] = { + 'current_active_delay': 10, + 'current_unique_nicks': 3, + 'duck_spawned': 0, + 'unique_nicks': [] + } + + print(channel.games) + + + def channel_message(self, event): + channel = event["channel"] + channel_name = channel.name + + if "ducks" not in channel.games.keys(): + return + + user = event["user"] + hostname = user.hostname + game = channel.games["ducks"] + + if hostname not in game["unique_nicks"]: + game["unique_nicks"].append(hostname) + + if game["current_unique_nicks"] > 0: + game["current_unique_nicks"] = game["current_unique_nicks"] - 1 + + if game["current_active_delay"] > 0: + game["current_active_delay"] = game["current_active_delay"] \ + - DELAY_REDUCE_UNIQUE + else: + if game["current_active_delay"] > 0: + game["current_active_delay"] = game["current_active_delay"] \ + - DELAY_REDUCE