mirror of
https://github.com/solero/houdini.git
synced 2024-12-04 12:43:40 +00:00
Implement CJSnow handlers
This commit is contained in:
parent
a5f5c3f18d
commit
4f57df545f
@ -562,9 +562,14 @@ CREATE TABLE penguin (
|
|||||||
fire_ninja_progress SMALLINT NOT NULL DEFAULT 0,
|
fire_ninja_progress SMALLINT NOT NULL DEFAULT 0,
|
||||||
water_ninja_rank SMALLINT NOT NULL DEFAULT 0,
|
water_ninja_rank SMALLINT NOT NULL DEFAULT 0,
|
||||||
water_ninja_progress SMALLINT NOT NULL DEFAULT 0,
|
water_ninja_progress SMALLINT NOT NULL DEFAULT 0,
|
||||||
|
snow_ninja_rank SMALLINT NOT NULL DEFAULT 0,
|
||||||
|
snow_ninja_progress SMALLINT NOT NULL DEFAULT 0,
|
||||||
ninja_matches_won INT NOT NULL DEFAULT 0,
|
ninja_matches_won INT NOT NULL DEFAULT 0,
|
||||||
fire_matches_won INT NOT NULL DEFAULT 0,
|
fire_matches_won INT NOT NULL DEFAULT 0,
|
||||||
water_matches_won INT NOT NULL DEFAULT 0,
|
water_matches_won INT NOT NULL DEFAULT 0,
|
||||||
|
snow_progress_fire_wins INT NOT NULL DEFAULT 0,
|
||||||
|
snow_progress_water_wins INT NOT NULL DEFAULT 0,
|
||||||
|
snow_progress_snow_wins INT NOT NULL DEFAULT 0,
|
||||||
rainbow_adoptability BOOLEAN NOT NULL DEFAULT FALSE,
|
rainbow_adoptability BOOLEAN NOT NULL DEFAULT FALSE,
|
||||||
has_dug BOOLEAN NOT NULL DEFAULT FALSE,
|
has_dug BOOLEAN NOT NULL DEFAULT FALSE,
|
||||||
puffle_handler BOOLEAN NOT NULL DEFAULT FALSE,
|
puffle_handler BOOLEAN NOT NULL DEFAULT FALSE,
|
||||||
|
@ -49,6 +49,8 @@ class Penguin(db.Model):
|
|||||||
fire_ninja_progress = db.Column(db.SmallInteger, nullable=False, server_default=db.text("0"))
|
fire_ninja_progress = db.Column(db.SmallInteger, nullable=False, server_default=db.text("0"))
|
||||||
water_ninja_rank = db.Column(db.SmallInteger, nullable=False, server_default=db.text("0"))
|
water_ninja_rank = db.Column(db.SmallInteger, nullable=False, server_default=db.text("0"))
|
||||||
water_ninja_progress = db.Column(db.SmallInteger, nullable=False, server_default=db.text("0"))
|
water_ninja_progress = db.Column(db.SmallInteger, nullable=False, server_default=db.text("0"))
|
||||||
|
snow_ninja_progress = db.Column(db.SmallInteger, nullable=False, server_default=db.text("0"))
|
||||||
|
snow_ninja_rank = db.Column(db.SmallInteger, nullable=False, server_default=db.text("0"))
|
||||||
ninja_matches_won = db.Column(db.Integer, nullable=False, server_default=db.text("0"))
|
ninja_matches_won = db.Column(db.Integer, nullable=False, server_default=db.text("0"))
|
||||||
fire_matches_won = db.Column(db.Integer, nullable=False, server_default=db.text("0"))
|
fire_matches_won = db.Column(db.Integer, nullable=False, server_default=db.text("0"))
|
||||||
water_matches_won = db.Column(db.Integer, nullable=False, server_default=db.text("0"))
|
water_matches_won = db.Column(db.Integer, nullable=False, server_default=db.text("0"))
|
||||||
@ -81,6 +83,7 @@ class Penguin(db.Model):
|
|||||||
rejection_de = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
|
rejection_de = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
|
||||||
rejection_ru = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
|
rejection_ru = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
|
||||||
|
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
self.inventory = None
|
self.inventory = None
|
||||||
self.permissions = None
|
self.permissions = None
|
||||||
|
@ -72,6 +72,10 @@ async def handle_get_puck(p):
|
|||||||
@handlers.handler(XTPacket('zo', ext='z'))
|
@handlers.handler(XTPacket('zo', ext='z'))
|
||||||
@handlers.cooldown(10, callback=game_over_cooling)
|
@handlers.cooldown(10, callback=game_over_cooling)
|
||||||
async def handle_get_game_over(p, score: int):
|
async def handle_get_game_over(p, score: int):
|
||||||
|
# If the room is Card Jitsu Snow, it this should do nothing
|
||||||
|
if p.room.id == 996:
|
||||||
|
return
|
||||||
|
|
||||||
if p.room.game and not p.waddle and not p.table:
|
if p.room.game and not p.waddle and not p.table:
|
||||||
coins_earned = determine_coins_earned(p, score)
|
coins_earned = determine_coins_earned(p, score)
|
||||||
if await determine_coins_overdose(p, coins_earned):
|
if await determine_coins_overdose(p, coins_earned):
|
||||||
|
17
houdini/handlers/games/ninja/snow.py
Normal file
17
houdini/handlers/games/ninja/snow.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
from houdini.handlers import XTPacket
|
||||||
|
from houdini import handlers
|
||||||
|
from houdini.data.item import PenguinItemCollection
|
||||||
|
from houdini.data.stamp import PenguinStampCollection
|
||||||
|
from houdini.handlers.play.stampbook import get_player_stamps_string
|
||||||
|
|
||||||
|
@handlers.handler(XTPacket('i#ngi'))
|
||||||
|
@handlers.cooldown(5)
|
||||||
|
async def ninja_get_inventory(self, p):
|
||||||
|
p.inventory = await PenguinItemCollection.get_collection(p.id)
|
||||||
|
await p.send_xt('gi', *p.inventory.keys())
|
||||||
|
|
||||||
|
@handlers.handler(XTPacket('st#ngps'))
|
||||||
|
@handlers.cooldown(5)
|
||||||
|
async def ninja_get_penguin_stamps(self, p):
|
||||||
|
p.stamps = await PenguinStampCollection.get_collection(p.id)
|
||||||
|
await p.send_xt('gps', p.id, await get_player_stamps_string(p, p.id))
|
@ -4,17 +4,12 @@ from houdini.data.penguin import Penguin
|
|||||||
|
|
||||||
|
|
||||||
@handlers.handler(XTPacket('ni', 'gnr'))
|
@handlers.handler(XTPacket('ni', 'gnr'))
|
||||||
|
@handlers.cooldown(2)
|
||||||
async def handle_get_ninja_ranks(p, penguin_id: int):
|
async def handle_get_ninja_ranks(p, penguin_id: int):
|
||||||
if penguin_id in p.server.penguins_by_id:
|
ninja_rank, fire_ninja_rank, water_ninja_rank, snow_ninja_rank = await Penguin.select(
|
||||||
penguin = p.server.penguins_by_id[penguin_id]
|
'ninja_rank', 'fire_ninja_rank', 'water_ninja_rank', 'snow_ninja_rank'
|
||||||
ninja_rank, fire_ninja_rank, water_ninja_rank = \
|
).where(Penguin.id == penguin_id).gino.first()
|
||||||
penguin.ninja_rank, penguin.fire_ninja_rank, penguin.water_ninja_rank
|
await p.send_xt('gnr', p.id, ninja_rank, fire_ninja_rank, water_ninja_rank, snow_ninja_rank)
|
||||||
else:
|
|
||||||
ninja_rank, fire_ninja_rank, water_ninja_rank = await Penguin.select(
|
|
||||||
'ninja_rank', 'fire_ninja_rank', 'water_ninja_rank'
|
|
||||||
).where(Penguin.id == penguin_id).gino.first()
|
|
||||||
await p.send_xt('gnr', p.id, ninja_rank, fire_ninja_rank, water_ninja_rank, 0)
|
|
||||||
|
|
||||||
|
|
||||||
@handlers.handler(XTPacket('ni', 'gnl'))
|
@handlers.handler(XTPacket('ni', 'gnl'))
|
||||||
async def handle_get_ninja_level(p):
|
async def handle_get_ninja_level(p):
|
||||||
@ -32,8 +27,13 @@ async def handle_get_water_level(p):
|
|||||||
|
|
||||||
|
|
||||||
@handlers.handler(XTPacket('ni', 'gsl'))
|
@handlers.handler(XTPacket('ni', 'gsl'))
|
||||||
|
@handlers.cooldown(1)
|
||||||
async def handle_get_snow_level(p):
|
async def handle_get_snow_level(p):
|
||||||
await p.send_xt('gsl', 0, 0, 24)
|
# Snow ninja data should be taken from the database, not memory
|
||||||
|
snow_ninja_rank, snow_ninja_progress = await Penguin.select(
|
||||||
|
'snow_ninja_rank', 'snow_ninja_progress'
|
||||||
|
).where(Penguin.id == p.id).gino.first()
|
||||||
|
await p.send_xt('gsl', snow_ninja_rank, snow_ninja_progress, 24)
|
||||||
|
|
||||||
|
|
||||||
@handlers.handler(XTPacket('ni', 'gcd'))
|
@handlers.handler(XTPacket('ni', 'gcd'))
|
||||||
|
@ -12,3 +12,11 @@ async def handle_get_coin_reward(p):
|
|||||||
coins = random.choice([1, 2, 5, 10, 20, 50, 100])
|
coins = random.choice([1, 2, 5, 10, 20, 50, 100])
|
||||||
await p.update(coins=Penguin.coins + coins).apply()
|
await p.update(coins=Penguin.coins + coins).apply()
|
||||||
await p.send_xt('cdu', coins, p.coins)
|
await p.send_xt('cdu', coins, p.coins)
|
||||||
|
|
||||||
|
@handlers.handler(XTPacket('r', 'gtc'))
|
||||||
|
@handlers.cooldown(1)
|
||||||
|
async def handle_get_coins(p):
|
||||||
|
# Fetch coins from the database
|
||||||
|
p.coins, = await Penguin.select('coins').where(Penguin.id == p.id).gino.first()
|
||||||
|
await p.send_xt("gtc", p.coins)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user