def handleSendPuffleBackToTheWoods(client, data): puffle = int(data[2][0]) puffleById = {i.id: i for i in client['data'].puffles} puffle = puffleById[puffle] if puffle in puffleById else None if puffle is None: returnValue(0) pMonths = int((time() - puffle.adopt())/60/60/24/30.5) dcoins = 500 + 10 * pMonths if int(client['coins']) < dcoins: dcoins = int(client['coins']) yield Coin(penguin_id=client['id'], transaction=-dcoins, comment="Penalized for abandoning adopted puffle. Puffle: {}, ID: {}".format(puffle.type, puffle.id)) client['coins'] -= dcoins handlePuffleWalk(client, int(puffle.id), False) post_id = 100 + int(puffle.type) if puffle.type == 7: post_id = 169 elif puffle.type == 8: post_id += 1 yield Mail(penguin_id=client['id'], from_user=0, type=post_id, description=str(puffle.name)).save() yield puffle.delete() client['RefreshHandler'].forceRefresh()
def handleAdopt(client, _type, name, sub_type, sendPuffleAdopt=True): if not handleCheckPuffleName(client, [0, 0, [name]]): returnValue(None) if not client['id'] in PENDING: PENDING[client['id']] = [] PENDING[client['id']].append(name) puffle = client.engine.puffleCrumbs[sub_type] if puffle is None or (_type == 10 and not client['canAdoptRainbow']) or ( _type == 11 and not client['canAdoptGold']): PENDING[client['id']].remove(name) returnValue(None) cost = 800 if sub_type in client.engine.puffleCrumbs.defautPuffles: cost = 400 if puffle.member and not client['member']: PENDING[client['id']].remove(name) client.send('e', 999) returnValue(None) if client['coins'] < cost: returnValue(client.send('e', 401)) now = int(time()) care = '{"food" : {now},"play" : {now},"bath" : {now}}'.replace( '{now}', str(now)) puffle_db = yield Puffle(penguin_id=client['id'], name=name, type=_type, subtype=sub_type, food=puffle.hunger, play=100, rest=puffle.rest, clean=puffle.health, lastcare=care).save() yield Coin( penguin_id=client['id'], transaction=-cost, comment="Pet Puffle Adoption. Puffle: {}".format(sub_type)).save() client['coins'] -= cost yield Mail(penguin_id=client['id'], from_user=0, type=111, description=name).save() client['RefreshHandler'].forceRefresh() PENDING[client['id']].remove(name) returnValue(puffle_db)
def sendMail(self, to, mail): postcard = self.penguin.engine.postcardHandler[mail] if postcard is None: self.penguin.send('ms', self.penguin['coins'], 0) returnValue(None) if not (int(self.penguin['coins']) > 10): self.penguin.send('ms', self.penguin['coins'], 2) returnValue(None) yield Mail(penguin_id=to, from_user=self.penguin['id'], type=mail, description=str(postcard)).save() yield Coin(penguin_id=self.penguin['id'], transaction=-10, comment="Postal Stamp charges. Mail sent: {}, to {}".format(mail, to)).save() self.penguin['coins'] -= 10 self.penguin.send('ms', self.penguin['coins'], 1)