Merge pull request #1 from Juliaria08/percentage
ducks-fine is now a percentage of the total
This commit is contained in:
commit
9ab96e7eb0
20
ducks.py
20
ducks.py
|
@ -3,6 +3,7 @@
|
||||||
#--depends-on coins
|
#--depends-on coins
|
||||||
|
|
||||||
import random, re, time
|
import random, re, time
|
||||||
|
import decimal
|
||||||
from src import EventManager, ModuleManager, utils
|
from src import EventManager, ModuleManager, utils
|
||||||
|
|
||||||
DUCK = "・゜゜・。。・゜゜\_o< QUACK!"
|
DUCK = "・゜゜・。。・゜゜\_o< QUACK!"
|
||||||
|
@ -17,7 +18,7 @@ DEFAULT_MIN_MESSAGES = 50
|
||||||
"Whether or not to kick someone talking to non-existent ducks"))
|
"Whether or not to kick someone talking to non-existent ducks"))
|
||||||
@utils.export("channelset", utils.BoolSetting("ducks-prevent-highlight",
|
@utils.export("channelset", utils.BoolSetting("ducks-prevent-highlight",
|
||||||
"Whether or not to prevent highlighting users with !friends/!enemies"))
|
"Whether or not to prevent highlighting users with !friends/!enemies"))
|
||||||
@utils.export("channelset", utils.IntRangeSetting(0, 100000, "ducks-fine", "The fine amount the users get fined when you shoot a duck"))
|
@utils.export("channelset", utils.IntRangeSetting(0, 100, "ducks-fine-percentage", "The fine amount the users get fined when you shoot a duck"))
|
||||||
|
|
||||||
class Module(ModuleManager.BaseModule):
|
class Module(ModuleManager.BaseModule):
|
||||||
@utils.hook("new.channel")
|
@utils.hook("new.channel")
|
||||||
|
@ -72,13 +73,16 @@ class Module(ModuleManager.BaseModule):
|
||||||
channel.duck_lines = 0
|
channel.duck_lines = 0
|
||||||
channel.send_message(DUCK)
|
channel.send_message(DUCK)
|
||||||
|
|
||||||
def _duck_action(self, channel, user, action, setting, fine_enabled=False):
|
def _duck_action(self, channel, user, action, setting, event, fine_enabled=False):
|
||||||
if channel.get_setting("ducks-fine", 0) != 0 and fine_enabled:
|
if channel.get_setting("ducks-fine-percentage", 0) != 0 and fine_enabled:
|
||||||
coins = self.bot.modules.modules['coins'].module
|
coins = self.bot.modules.modules['coins'].module
|
||||||
fine_amount = channel.get_setting("ducks-fine",1)
|
interest_percentage = channel.get_setting("ducks-fine-percentage",1)
|
||||||
|
total_coins = decimal.Decimal(sum(coins._all_coins(event['server']).values()))
|
||||||
|
fine_amount = total_coins*(decimal.Decimal(0.01)*interest_percentage)
|
||||||
|
fine_amount = fine_amount.quantize(decimal.Decimal('.01'), rounding=decimal.ROUND_05UP) # Round number to appropriate units
|
||||||
user_coins = coins._get_user_coins(user)
|
user_coins = coins._get_user_coins(user)
|
||||||
if user_coins < fine_amount:
|
if user_coins < fine_amount:
|
||||||
return f"There was a duck, but you didn't have coins to pay the fine of {fine_amount-user_coins} so you can't shoot the duck."
|
return f"There was a duck, but you didn't have coins to pay the fine of {fine_amount} coins so you can't shoot the duck."
|
||||||
else:
|
else:
|
||||||
new_user_coins = user_coins - fine_amount
|
new_user_coins = user_coins - fine_amount
|
||||||
coins._set_user_coins(user, new_user_coins)
|
coins._set_user_coins(user, new_user_coins)
|
||||||
|
@ -119,7 +123,7 @@ class Module(ModuleManager.BaseModule):
|
||||||
def befriend(self, event):
|
def befriend(self, event):
|
||||||
if event["target"].duck_active:
|
if event["target"].duck_active:
|
||||||
action = self._duck_action(event["target"], event["user"],
|
action = self._duck_action(event["target"], event["user"],
|
||||||
"befriended", "ducks-befriended")
|
"befriended", event, "ducks-befriended")
|
||||||
event["stdout"].write(action)
|
event["stdout"].write(action)
|
||||||
else:
|
else:
|
||||||
self._no_duck(event["target"], event["user"], event["stderr"])
|
self._no_duck(event["target"], event["user"], event["stderr"])
|
||||||
|
@ -130,7 +134,7 @@ class Module(ModuleManager.BaseModule):
|
||||||
def trap(self, event):
|
def trap(self, event):
|
||||||
if event["target"].duck_active:
|
if event["target"].duck_active:
|
||||||
action = self._duck_action(event["target"], event["user"],
|
action = self._duck_action(event["target"], event["user"],
|
||||||
"trapped", "ducks-shot", fine_enabled=True)
|
"trapped", "ducks-shot", event, fine_enabled=True)
|
||||||
event["stdout"].write(action)
|
event["stdout"].write(action)
|
||||||
else:
|
else:
|
||||||
self._no_duck(event["target"], event["user"], event["stderr"])
|
self._no_duck(event["target"], event["user"], event["stderr"])
|
||||||
|
@ -141,7 +145,7 @@ class Module(ModuleManager.BaseModule):
|
||||||
def bang(self, event):
|
def bang(self, event):
|
||||||
if event["target"].duck_active:
|
if event["target"].duck_active:
|
||||||
action = self._duck_action(event["target"], event["user"],
|
action = self._duck_action(event["target"], event["user"],
|
||||||
"shot", "ducks-shot", fine_enabled=True)
|
"shot", "ducks-shot", event, fine_enabled=True)
|
||||||
event["stdout"].write(action)
|
event["stdout"].write(action)
|
||||||
else:
|
else:
|
||||||
self._no_duck(event["target"], event["user"], event["stderr"])
|
self._no_duck(event["target"], event["user"], event["stderr"])
|
||||||
|
|
Loading…
Reference in New Issue