mirror of
https://github.com/solero/houdini.git
synced 2024-11-13 22:28:21 +00:00
Separate system mail generation code from mail handlers
This commit is contained in:
parent
2712aad24e
commit
a05f22d2b3
@ -1,9 +1,55 @@
|
|||||||
from houdini import handlers
|
from houdini import handlers
|
||||||
from houdini.handlers import XTPacket
|
from houdini.handlers import XTPacket
|
||||||
|
from houdini.handlers.play.mail import handle_start_mail_engine
|
||||||
|
|
||||||
from houdini.data.item import Item
|
from houdini.data.item import Item
|
||||||
|
from houdini.data.mail import PenguinPostcard
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
|
import random
|
||||||
|
|
||||||
|
|
||||||
|
@handlers.handler(XTPacket('l', 'mst'), before=handle_start_mail_engine)
|
||||||
|
async def handle_send_job_mail(p):
|
||||||
|
postcards = []
|
||||||
|
if not p.data.agent_status and random.random() < 0.4:
|
||||||
|
epf_invited = await PenguinPostcard.query.where(
|
||||||
|
(PenguinPostcard.penguin_id == p.data.id) & ((PenguinPostcard.postcard_id == 112)
|
||||||
|
| (PenguinPostcard.postcard_id == 47))).gino.scalar()
|
||||||
|
if not epf_invited:
|
||||||
|
postcards.append({
|
||||||
|
'penguin_id': p.data.id,
|
||||||
|
'postcard_id': 112
|
||||||
|
})
|
||||||
|
|
||||||
|
last_paycheck = p.data.last_paycheck.date()
|
||||||
|
today = datetime.date.today()
|
||||||
|
first_day_of_month = today.replace(day=1)
|
||||||
|
last_paycheck = last_paycheck.replace(day=1)
|
||||||
|
|
||||||
|
player_data = p.data
|
||||||
|
while last_paycheck < first_day_of_month:
|
||||||
|
last_paycheck = last_paycheck + datetime.timedelta(days=32)
|
||||||
|
last_paycheck = last_paycheck.replace(day=1)
|
||||||
|
send_date = last_paycheck + datetime.timedelta(days=1)
|
||||||
|
if 428 in p.data.inventory:
|
||||||
|
postcards.append({
|
||||||
|
'penguin_id': p.data.id,
|
||||||
|
'postcard_id': 172,
|
||||||
|
'send_date': send_date
|
||||||
|
})
|
||||||
|
player_data.update(coins=p.data.coins + 250)
|
||||||
|
if p.data.agent_status:
|
||||||
|
postcards.append({
|
||||||
|
'penguin_id': p.data.id,
|
||||||
|
'postcard_id': 184,
|
||||||
|
'send_date': send_date
|
||||||
|
})
|
||||||
|
player_data.update(coins=p.data.coins + 350)
|
||||||
|
|
||||||
|
await player_data.update(last_paycheck=last_paycheck).apply()
|
||||||
|
if postcards:
|
||||||
|
await PenguinPostcard.insert().values(postcards).gino.status()
|
||||||
|
|
||||||
|
|
||||||
@handlers.handler(XTPacket('f', 'epfga'))
|
@handlers.handler(XTPacket('f', 'epfga'))
|
||||||
|
@ -7,53 +7,11 @@ from houdini.data.buddy import IgnoreList
|
|||||||
from houdini.data.mail import PenguinPostcard
|
from houdini.data.mail import PenguinPostcard
|
||||||
|
|
||||||
import time
|
import time
|
||||||
import random
|
|
||||||
import datetime
|
|
||||||
|
|
||||||
|
|
||||||
@handlers.handler(XTPacket('l', 'mst'))
|
@handlers.handler(XTPacket('l', 'mst'))
|
||||||
@handlers.allow_once
|
@handlers.allow_once
|
||||||
async def handle_start_mail_engine(p):
|
async def handle_start_mail_engine(p):
|
||||||
postcards = []
|
|
||||||
if not p.data.agent_status and random.random() < 0.4:
|
|
||||||
epf_invited = await PenguinPostcard.query.where(
|
|
||||||
(PenguinPostcard.penguin_id == p.data.id) & ((PenguinPostcard.postcard_id == 112)
|
|
||||||
| (PenguinPostcard.postcard_id == 47))).gino.scalar()
|
|
||||||
if not epf_invited:
|
|
||||||
postcards.append({
|
|
||||||
'penguin_id': p.data.id,
|
|
||||||
'postcard_id': 112
|
|
||||||
})
|
|
||||||
|
|
||||||
last_paycheck = p.data.last_paycheck.date()
|
|
||||||
today = datetime.date.today()
|
|
||||||
first_day_of_month = today.replace(day=1)
|
|
||||||
last_paycheck = last_paycheck.replace(day=1)
|
|
||||||
|
|
||||||
player_data = p.data
|
|
||||||
while last_paycheck < first_day_of_month:
|
|
||||||
last_paycheck = last_paycheck + datetime.timedelta(days=32)
|
|
||||||
last_paycheck = last_paycheck.replace(day=1)
|
|
||||||
send_date = last_paycheck + datetime.timedelta(days=1)
|
|
||||||
if 428 in p.data.inventory:
|
|
||||||
postcards.append({
|
|
||||||
'penguin_id': p.data.id,
|
|
||||||
'postcard_id': 172,
|
|
||||||
'send_date': send_date
|
|
||||||
})
|
|
||||||
player_data.update(coins=p.data.coins + 250)
|
|
||||||
if p.data.agent_status:
|
|
||||||
postcards.append({
|
|
||||||
'penguin_id': p.data.id,
|
|
||||||
'postcard_id': 184,
|
|
||||||
'send_date': send_date
|
|
||||||
})
|
|
||||||
player_data.update(coins=p.data.coins + 350)
|
|
||||||
|
|
||||||
await player_data.update(last_paycheck=last_paycheck).apply()
|
|
||||||
if postcards:
|
|
||||||
await PenguinPostcard.insert().values(postcards).gino.status()
|
|
||||||
|
|
||||||
mail_count = await db.select([db.func.count(PenguinPostcard.id)]).where(
|
mail_count = await db.select([db.func.count(PenguinPostcard.id)]).where(
|
||||||
PenguinPostcard.penguin_id == p.data.id).gino.scalar()
|
PenguinPostcard.penguin_id == p.data.id).gino.scalar()
|
||||||
unread_mail_count = await db.select([db.func.count(PenguinPostcard.id)]).where(
|
unread_mail_count = await db.select([db.func.count(PenguinPostcard.id)]).where(
|
||||||
|
Loading…
Reference in New Issue
Block a user