Exemplo n.º 1
0
class ScoutMaster(BaseMasterWithThumbnail):
    """スカウトのマスターデータ.
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False

    id = models.PositiveIntegerField(primary_key=True, verbose_name=u'ID')
    area = models.PositiveIntegerField(db_index=True, verbose_name=u'エリア')
    opencondition = models.PositiveIntegerField(
        db_index=True, default=0, verbose_name=u'開放条件(スカウトクリア) 0で常時開放')
    execution = models.PositiveSmallIntegerField(default=1,
                                                 verbose_name=u'クリアまでのポチポチ回数')
    apcost = models.PositiveSmallIntegerField(default=0, verbose_name=u'消費体力')
    exp = models.PositiveIntegerField(default=0, verbose_name=u'獲得経験値')
    goldmin = models.PositiveIntegerField(default=0,
                                          verbose_name=u'獲得ポケットマネー最小値')
    goldmax = models.PositiveIntegerField(default=0,
                                          verbose_name=u'獲得ポケットマネー最大値')

    eventrate_drop = models.PositiveSmallIntegerField(default=0,
                                                      verbose_name=u'カード発見発生率')
    eventrate_happening = models.PositiveSmallIntegerField(
        default=0, verbose_name=u'ハプニング発生率')
    eventrate_treasure = models.PositiveSmallIntegerField(
        default=0, verbose_name=u'宝箱発見発生率')

    dropitems = JsonCharField(default=list, verbose_name=u'カード出現テーブル')
    happenings = JsonCharField(default=list, verbose_name=u'発生するハプニング')
    treasuregold = models.PositiveSmallIntegerField(default=0,
                                                    verbose_name=u'金の宝箱出現率')
    treasuresilver = models.PositiveSmallIntegerField(default=0,
                                                      verbose_name=u'銀の宝箱出現率')
    treasurebronze = models.PositiveSmallIntegerField(default=0,
                                                      verbose_name=u'銅の宝箱出現率')
Exemplo n.º 2
0
class CurrentRaidEventConfig(Singleton):
    """開催中または開催予定のレイド.
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False
    
    mid = models.PositiveIntegerField(default=0, verbose_name=u'イベントのマスターID')
    starttime = AppDateTimeField(default=OSAUtil.get_now, verbose_name=u'開始時間')
    endtime = AppDateTimeField(default=OSAUtil.get_now, verbose_name=u'終了時間')
    prize_flag = models.PositiveIntegerField(default=0, verbose_name=u'ランキング報酬配布フラグ')
    bigtime = AppDateTimeField(default=OSAUtil.get_datetime_max, verbose_name=u'大ボス出現時間')
    ticket_endtime = AppDateTimeField(default=OSAUtil.get_now, verbose_name=u'秘宝交換とガチャ公開終了時間')
    timebonus_time = JsonCharField(default=list, verbose_name=u'タイムボーナス時間')
    combobonus_opentime = JsonCharField(default=list, verbose_name=u'コンボボーナス公開開始時間')
    feverchance_opentime = JsonCharField(default=list, verbose_name=u'フィーバーチャンス公開開始時間')
    fastbonus_opentime = JsonCharField(default=list, verbose_name=u'秘宝ボーナス公開開始時間')
    epilogue_endtime = AppDateTimeField(default=OSAUtil.get_now, verbose_name=u'エピローグ終了時間')
    beginer_prize_flag = models.PositiveIntegerField(default=0, verbose_name=u'新店舗ランキング報酬配布フラグ')
    stageschedule = JsonCharField(default=list, verbose_name=u'途中追加されるステージのスケジュール')
    
    def get_stage_max(self, now=None):
        """現在の最大ステージ数.
        無制限の場合はNone.
        """
        stage_max = None
        if self.stageschedule:
            now = now or OSAUtil.get_now()
            self.stageschedule.sort(key=lambda x:x['time'])
            for data in self.stageschedule:
                if data['time'] <= now:
                    continue
                stage_max = data['stage'] - 1
                break
        return stage_max
Exemplo n.º 3
0
class DefaultCardMaster(BaseMaster):
    """デフォルト所持カードのマスターデータ.
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False
    ctype = models.PositiveSmallIntegerField(primary_key=True, verbose_name=u'タイプ', choices=dict_to_choices(Defines.CharacterType.NAMES))
    leader = models.PositiveIntegerField(db_index=True, verbose_name=u'リーダー')
    members = JsonCharField(default=list, verbose_name=u'メンバー', help_text=u'ユーザー登録時にデッキに設定します')
    box = JsonCharField(default=list, verbose_name=u'BOX', help_text=u'ユーザー登録時にBOXに設定します')
Exemplo n.º 4
0
class RaidMaster(BaseMaster):
    """レイドのマスターデータ.
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False

    id = models.PositiveIntegerField(primary_key=True, verbose_name=u'ID')
    name = models.CharField(default='', max_length=48, verbose_name=u'名前')
    commentappear = models.TextField(default='', verbose_name=u'出現時(挑発)コメント')
    commentwin = models.TextField(default='', verbose_name=u'勝利(ユーザが勝利)時コメント')
    commentwin_full = models.TextField(default='', verbose_name=u'大成功時コメント')
    commentlose = models.TextField(default='', verbose_name=u'敗北(ユーザが敗北)時コメント')
    thumb = models.CharField(default='', max_length=96, verbose_name=u'サムネイル')
    hprate_min = models.PositiveIntegerField(default=100,
                                             verbose_name=u'HPの変動幅の下限[%]')
    hprate_max = models.PositiveIntegerField(default=100,
                                             verbose_name=u'HPの変動幅の上限値[%]')
    hpbase = models.PositiveIntegerField(default=0, verbose_name=u'HP基本値')
    hpgrowth = models.PositiveIntegerField(default=0, verbose_name=u'HP成長度')
    defensebase = models.PositiveIntegerField(default=0,
                                              verbose_name=u'防御力基本値')
    defensegrowth = models.PositiveIntegerField(default=0,
                                                verbose_name=u'防御力成長度')
    bpcost = models.PositiveSmallIntegerField(default=20,
                                              verbose_name=u'気力消費量')
    bpcost_strong = models.PositiveSmallIntegerField(
        default=50, verbose_name=u'気力消費量(強攻撃)')
    bpcost_first = models.SmallIntegerField(default=-1,
                                            verbose_name=u'気力消費量(初回)',
                                            help_text=u'0より小さい場合は無効')
    bpcost_first_other = models.SmallIntegerField(
        default=-1, verbose_name=u'気力消費量(発見者以外の初回)', help_text=u'0より小さい場合は無効')
    prizes = JsonCharField(default=list, verbose_name=u'発見者の報酬')
    helpprizes = JsonCharField(default=list, verbose_name=u'救援の報酬')
    cabaretkingbase = models.PositiveIntegerField(default=0,
                                                  verbose_name=u'キャバ王の秘宝基本値')
    cabaretkinggrowth = models.PositiveIntegerField(default=0,
                                                    verbose_name=u'キャバ王の秘宝成長度')
    demiworldbase = models.PositiveIntegerField(default=0,
                                                verbose_name=u'キャバ王の秘宝(救援)基本値')
    demiworldgrowth = models.PositiveIntegerField(
        default=0, verbose_name=u'キャバ王の秘宝(救援)成長度')
    max_level = models.PositiveIntegerField(default=100,
                                            verbose_name=u'ボスの最大レベル')
    ctype = models.PositiveSmallIntegerField(
        verbose_name=u'ボスの属性',
        default=Defines.CharacterType.NONE,
        choices=dict_to_choices(Defines.CharacterType.BOSS_NAMES))
    weakbonus = JsonCharField(verbose_name=u'属性ボーナス',
                              default=list,
                              help_text=u'[[属性,倍率%],..]')
    items = JsonCharField(default=list, verbose_name=u'アイテム出現テーブル')
Exemplo n.º 5
0
class RaidEventScoutStageMaster(EventScoutStageMaster):
    """イベントスカウトのステージマスターデータ.
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False

    happenings_timebonus = JsonCharField(default=list,
                                         verbose_name=u'レイド出現テーブル(タイムボーナス)')
    happenings_big = JsonCharField(default=list,
                                   verbose_name=u'大ボス出現後レイド出現テーブル')
    happenings_timebonus_big = JsonCharField(
        default=list, verbose_name=u'大ボス出現後レイド出現テーブル(タイムボーナス)')
Exemplo n.º 6
0
class AreaMaster(BaseMasterWithThumbnail):
    """エリアのマスターデータ.
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False

    id = models.PositiveIntegerField(primary_key=True, verbose_name=u'ID')
    opencondition = models.PositiveIntegerField(default=0,
                                                verbose_name=u'開放条件(エリアクリア)')
    schedule = models.PositiveIntegerField(default=0, verbose_name=u'開放期間')
    boss = models.PositiveIntegerField(verbose_name=u'ボスID')
    prizes = JsonCharField(default=list, verbose_name=u'クリア報酬')
    girls = JsonCharField(default=list, verbose_name=u'出現する女性')
Exemplo n.º 7
0
class PresentEveryoneLoginBonusMaster(PresentEveryoneBase):
    """ログインボーナス時に配付する全プレ.
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False

    prizes_daily = JsonCharField(default=dict,
                                 verbose_name=u'日別に配付するもの',
                                 help_text=u'{"日数":[報酬ID,...],...}という形式で')
    s_date = models.DateField(default=datetime.date.today,
                              verbose_name=u'配布開始日')
    e_date = models.DateField(default=datetime.date.today,
                              verbose_name=u'配布終了日',
                              db_index=True)
    everyday = models.BooleanField(default=False,
                                   verbose_name=u'期間中毎日配布フラグ',
                                   help_text=u'フラグが立っているときは毎日配布します')

    @property
    def s_time(self):
        return DateTimeUtil.toLoginTime(
            DateTimeUtil.dateToDateTime(self.s_date))

    @property
    def e_time(self):
        return DateTimeUtil.toLoginTime(
            DateTimeUtil.dateToDateTime(self.e_date))
Exemplo n.º 8
0
class ScoutEventHappeningTableMaster(BaseMaster):
    """スカウトイベントの曜日別ハプニング発生テーブルマスターデータ.
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False

    id = PositiveBigIntegerField(primary_key=True, verbose_name=u'ID')
    eventid = models.PositiveIntegerField(db_index=True,
                                          verbose_name=u'イベントマスターID')
    wday = models.PositiveSmallIntegerField(
        default=0,
        verbose_name=u'曜日',
        choices=[(w, u'{}:{}'.format(w, Defines.WeekDay.NAMES[w]))
                 for w in Defines.WeekDay.LIST])
    happenings = JsonCharField(default=list, verbose_name=u'発生するハプニング')

    @staticmethod
    def makeID(eventid, wday):
        return (eventid << 32) + wday

    @staticmethod
    def makeInstance(key):
        ins = ScoutEventHappeningTableMaster()
        ins.id = key
        ins.eventid = int(key >> 32)
        ins.wday = int(key & 0xffffffff)
        return ins
Exemplo n.º 9
0
class GachaBoxGachaDetailMaster(BaseMaster):
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False

    id = models.PositiveIntegerField(primary_key=True, verbose_name=u'ガチャID')
    allowreset_rarity = models.PositiveIntegerField(
        default=0,
        verbose_name=u'リセット許可レアリティ',
        choices=dict_to_choices(Defines.Rarity.NAMES))
    allowreset_cardidlist = JsonCharField(default=list,
                                          verbose_name=u'リセット許可カードIDリスト')
    limit_resettime = models.PositiveIntegerField(default=0,
                                                  verbose_name=u'リセット可能回数')
    prizelist = JsonCharField(default=list, verbose_name=u'BOX引き切り報酬')
    textid = models.PositiveIntegerField(default=0, verbose_name=u'報酬文言')
Exemplo n.º 10
0
class PanelMissionMissionMaster(BaseMaster):
    """パネルミッションのミッション.
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False
    
    id = models.PositiveIntegerField(primary_key=True, verbose_name=u'ID')
    name = models.CharField(max_length=64, verbose_name=u'名前')
    panel = models.PositiveSmallIntegerField(db_index=True, verbose_name=u'パネルID')
    number = models.PositiveSmallIntegerField(verbose_name=u'ミッション番号')
    image_pre = models.CharField(default='', max_length=96, verbose_name=u'達成前のパネル画像')
    image_post = models.CharField(default='', max_length=96, verbose_name=u'達成後のパネル画像')
    prizes = JsonCharField(default=list, verbose_name=u'達成報酬')
    prize_text = models.PositiveIntegerField(default=0, verbose_name=u'達成報酬テキスト')
    condition_type = models.PositiveSmallIntegerField(default=0, verbose_name=u'達成条件種別', choices=dict_to_choices(Defines.PanelMissionCondition.NAMES))
    condition_value1 = models.PositiveSmallIntegerField(default=0, verbose_name=u'達成条件の値1')
    condition_value2 = models.PositiveSmallIntegerField(default=0, verbose_name=u'達成条件の値2')
    condition_text = models.TextField(default='', verbose_name=u'達成条件の説明', blank=True)
    
    @classmethod
    def makeID(cls, panel, number):
        return (panel << 16) + number
    
    @classmethod
    def makeInstance(cls, key):
        model = cls()
        primary_key_column = cls.get_primarykey_column()
        setattr(model, primary_key_column, key)
        model.panel = (key >> 16)
        model.number = key & 0xffff
        return model
Exemplo n.º 11
0
class ScheduleMaster(BaseMaster):
    """スケジュール.
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False

    id = models.PositiveIntegerField(primary_key=True, verbose_name=u'ID')
    stime = AppDateTimeField(default=OSAUtil.get_now, verbose_name=u'公開開始時間')
    etime = AppDateTimeField(db_index=True,
                             default=OSAUtil.get_now,
                             verbose_name=u'公開終了時間')
    wday = models.PositiveSmallIntegerField(default=Defines.WeekDay.ALL,
                                            verbose_name=u'曜日指定',
                                            choices=dict_to_choices(
                                                Defines.WeekDay.NAMES))
    shour = models.PositiveSmallIntegerField(default=0,
                                             verbose_name=u'日毎の開始時間(時)',
                                             choices=numberitems(0, 24))
    sminute = models.PositiveSmallIntegerField(default=0,
                                               verbose_name=u'日毎の開始時間(分)',
                                               choices=numberitems(0, 60))
    timelimit = models.PositiveSmallIntegerField(default=0,
                                                 verbose_name=u'日毎の制限時間(分)')
    target = JsonCharField(default=list, verbose_name=u'対象のユーザID下一桁')
Exemplo n.º 12
0
class CardMaster(BaseMasterWithThumbnail):
    """カードマスターデータ.
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False
    id = models.PositiveIntegerField(primary_key=True, verbose_name=u'ID')
    ckind = models.PositiveSmallIntegerField(default=Defines.CardKind.NORMAL, choices=dict_to_choices(Defines.CardKind.NAMES), verbose_name=u'カードの種類(通常or教育or進化)')
    gtype = models.PositiveSmallIntegerField(default=Defines.CardGrowthType.BALANCE, choices=dict_to_choices(Defines.CardGrowthType.NAMES), verbose_name=u'成長タイプ(早熟orバランスor晩成)')
    cost = models.PositiveSmallIntegerField(default=0, verbose_name=u'コスト')
    basepower = models.PositiveIntegerField(default=1, verbose_name=u'接客力(基礎値)')
    maxpower = models.PositiveIntegerField(default=1, verbose_name=u'接客力(最大値)')
    maxlevel = models.PositiveIntegerField(default=1, verbose_name=u'最大レベル')
    skill = models.PositiveIntegerField(verbose_name=u'サービス(スキル)')
    albumhklevel = PositiveBigIntegerField(unique=True, verbose_name=u'(アルバム番号<<32)+ハメ管理レベル')
    basematerialexp = models.PositiveIntegerField(verbose_name=u'強化素材経験値(基礎)')
    maxmaterialexp = models.PositiveIntegerField(verbose_name=u'強化素材経験値(最大)')
    baseprice = models.PositiveIntegerField(verbose_name=u'売値(基礎)')
    maxprice = models.PositiveIntegerField(verbose_name=u'売値(最大)')
    evolcost = models.PositiveIntegerField(verbose_name=u'進化費用')
    dmmurl = JsonCharField(verbose_name=u'DMMの動画ページのURL', default=list, blank=True)
    
    @classmethod
    def makeAlbumHklevel(cls, album, hklevel):
        return (album << 32) + hklevel
    
    @property
    def album(self):
        return int(self.albumhklevel >> 32)
    @property
    def hklevel(self):
        return int(self.albumhklevel & 0xffffffff)
Exemplo n.º 13
0
class RaidEventRaidMaster(BaseMaster):
    """イベント用レイドデータ.
    RaidMasterのイベント用拡張.
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False
    
    id = PositiveBigIntegerField(primary_key=True, verbose_name=u'ID')
    eventid = models.PositiveIntegerField(db_index=True, verbose_name=u'レイドイベントマスターID')
    mid = models.PositiveIntegerField(db_index=True, verbose_name=u'レイドマスターID')
    specialcard = JsonCharField(default=list, verbose_name=u'特効キャスト')
    specialcard_treasure = JsonCharField(default=list, verbose_name=u'特攻ボーナス秘宝獲得率UP')
    ownerpoint = models.PositiveIntegerField(default=0, verbose_name=u'発見者報酬ポイント基本値')
    ownerpoint_growth = models.PositiveIntegerField(default=0, verbose_name=u'発見者報酬ポイント成長度')
    mvppoint = models.PositiveIntegerField(default=0, verbose_name=u'MVP報酬ポイント基本値')
    mvppoint_growth = models.PositiveIntegerField(default=0, verbose_name=u'MVP報酬ポイント成長度')
    ownerpoint_timebonus = models.PositiveIntegerField(default=0, verbose_name=u'発見者報酬ポイント(タイムボーナス)基本値')
    ownerpoint_timebonus_growth = models.PositiveIntegerField(default=0, verbose_name=u'発見者報酬ポイント(タイムボーナス)成長度')
    mvppoint_timebonus = models.PositiveIntegerField(default=0, verbose_name=u'MVP報酬ポイント(タイムボーナス)基本値')
    mvppoint_timebonus_growth = models.PositiveIntegerField(default=0, verbose_name=u'MVP報酬ポイント(タイムボーナス)成長度')
    big = models.BooleanField(default=False, verbose_name=u'大ボスフラグ')
    pointrandmin = models.PositiveSmallIntegerField(default=100, verbose_name=u'報酬ポイント乱数下限(%)')
    pointrandmax = models.PositiveSmallIntegerField(default=100, verbose_name=u'報酬ポイント乱数上限(%)')
    
    # エイプリルフール.
    champagne = TinyIntField(default=0, verbose_name=u'獲得できるシャンパンの数')
    material = TinyIntField(default=0, verbose_name=u'発見者の材料番号(0〜2)', choices=[(i, i) for i in xrange(Defines.RAIDEVENT_MATERIAL_KIND_MAX)])
    material_droprate = models.PositiveSmallIntegerField(default=0, verbose_name=u'発見者の材料ドロップ率(0〜1000)')
    material_num_min = models.PositiveSmallIntegerField(default=0, verbose_name=u'発見者の材料個数の最小')
    material_num_max = models.PositiveSmallIntegerField(default=0, verbose_name=u'発見者の材料個数の最大')
    material_help = TinyIntField(default=0, verbose_name=u'救援者の材料番号(0〜2)', choices=[(i, i) for i in xrange(Defines.RAIDEVENT_MATERIAL_KIND_MAX)])
    material_droprate_help = models.PositiveSmallIntegerField(default=0, verbose_name=u'救援者の材料ドロップ率(0〜1000)')
    material_num_min_help = models.PositiveSmallIntegerField(default=0, verbose_name=u'救援者の材料個数の最小')
    material_num_max_help = models.PositiveSmallIntegerField(default=0, verbose_name=u'救援者の材料個数の最大')
    
    @staticmethod
    def makeID(eventid, mid):
        return (eventid << 32) + mid
    
    @staticmethod
    def makeInstance(key):
        ins = RaidEventRaidMaster()
        ins.id = key
        ins.eventid = int(key>>32)
        ins.mid = int(key&0xffffffff)
        return ins
Exemplo n.º 14
0
class HappeningMaster(BaseMasterWithThumbnail):
    """ハプニングのマスターデータ.
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False

    id = models.PositiveIntegerField(primary_key=True, verbose_name=u'ID')
    execution = models.PositiveSmallIntegerField(verbose_name=u'クリアまでのポチポチ回数')
    apcost = models.PositiveSmallIntegerField(verbose_name=u'消費体力')
    exp = models.PositiveIntegerField(verbose_name=u'獲得経験値')
    goldmin = models.PositiveIntegerField(verbose_name=u'獲得ポケットマネー最小値')
    goldmax = models.PositiveIntegerField(verbose_name=u'獲得ポケットマネー最大値')
    items = JsonCharField(default=list, verbose_name=u'アイテム出現テーブル')
    timelimit = models.PositiveIntegerField(verbose_name=u'制限時間[sec]')
    boss = models.PositiveIntegerField(verbose_name=u'レイドボス')
    girls = JsonCharField(default=list, verbose_name=u'出現する女性')
Exemplo n.º 15
0
class ProduceEventMaster(BaseMaster):
    """プロデュースイベントのマスターデータです
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False

    id = models.PositiveIntegerField(primary_key=True, verbose_name=u'ID')
    name = models.CharField(verbose_name=u'名前', max_length=48)
    subname = models.CharField(verbose_name=u'イベントサブタイトル',
                               max_length=64,
                               blank=True,
                               default='')
    htmlname = models.CharField(verbose_name=u'HTML演出ディレクトリ名', max_length=48)
    rankingprizes = JsonCharField(verbose_name=u'ランキング報酬')
    rankingprize_text = models.PositiveIntegerField(verbose_name=u'ランキング報酬文言')
    pointprizes = JsonCharField(verbose_name=u'ポイント達成報酬')
    pointprize_text = models.PositiveIntegerField(verbose_name=u'ポイント達成報酬文言')
    raidtable = JsonCharField(verbose_name=u'レイド出現テーブル')
    raidtable_big = JsonCharField(verbose_name=u'大ボス出現後レイド出現テーブル')
    raidtable_full = JsonCharField(verbose_name=u'レイド出現テーブル(全力探索)')
    raidtable_big_full = JsonCharField(verbose_name=u'大ボス出現後レイド出現テーブル(全力探索)')
    useitem = models.PositiveSmallIntegerField(verbose_name=u'超接客で使用するアイテムID')
    changeitem = models.PositiveSmallIntegerField(
        verbose_name=u'専用アイテムと交換するためのアイテムID')
    op = models.PositiveIntegerField(default=0, verbose_name=u'オープニング演出ID')
    ed = models.PositiveIntegerField(default=0, verbose_name=u'エンディング演出ID')
    specialcard = JsonCharField(default=list,
                                verbose_name=u'特効カード',
                                help_text=u'[[カードID,倍率],[カードID,倍率],...]')
    img_appeal = JsonCharField(default=list,
                               verbose_name=u'訴求画像リスト',
                               blank=True)

    @property
    def codename(self):
        return self.htmlname.split('/')[-1]

    def get_produce_castmasters(self,
                                filters=None,
                                order_by=None,
                                using=settings.DB_DEFAULT):
        filter_dict = {'event_id': self.id}
        if isinstance(filters, dict):
            filter_dict.update(filters)
        masters = ProduceCastMaster.fetchValues(filters=filter_dict,
                                                order_by=order_by,
                                                using=using)
        if not masters:
            raise CabaretError(u'プロデュースキャストが設定されていません',
                               code=CabaretError.Code.INVALID_MASTERDATA)
        return masters

    def get_pointprizes(self, point_min=1, point_max=None):
        return get_pointprizes(self.pointprizes, point_min, point_max)
Exemplo n.º 16
0
class GachaHeaderMaster(BaseMaster):
    """一枚絵をスライド表示する画像設定.
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False

    id = models.PositiveIntegerField(primary_key=True, verbose_name=u'ガチャID')
    header = JsonCharField(default=list, verbose_name=u'表示する画像')
Exemplo n.º 17
0
class GachaSlideCastMaster(BaseMaster):
    """スライド表示するキャスト設定.
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False

    id = models.PositiveIntegerField(primary_key=True, verbose_name=u'ガチャID')
    castlist = JsonCharField(default=list, verbose_name=u'表示するキャスト')
Exemplo n.º 18
0
class ScoutEventTanzakuCastMaster(BaseMaster):
    """スカウトイベント逢引システムキャストマスターデータ.
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False

    id = PositiveBigIntegerField(primary_key=True, verbose_name=u'ID')
    eventid = models.PositiveIntegerField(db_index=True,
                                          verbose_name=u'イベントマスターID')
    number = models.PositiveSmallIntegerField(default=0,
                                              verbose_name=u'イベント別通し番号',
                                              choices=[(i, i)
                                                       for i in xrange(5)])
    castname = models.CharField(max_length=64, verbose_name=u'キャストの名前')
    castthumb = models.CharField(max_length=128,
                                 verbose_name=u'キャスト画像(.png)',
                                 blank=True)
    castbg = models.CharField(max_length=128,
                              verbose_name=u'キャスト背景画像(.png)',
                              blank=True)
    castthumb_small = models.CharField(max_length=128,
                                       verbose_name=u'キャスト画像小(.png)',
                                       blank=True)
    tanzakuname = models.CharField(max_length=48,
                                   default=u'短冊',
                                   blank=True,
                                   verbose_name=u'短冊の名前')
    tanzakuunit = models.CharField(max_length=48,
                                   default=u'枚',
                                   blank=True,
                                   verbose_name=u'短冊の単位')
    tanzakuthumb = models.CharField(max_length=128,
                                    verbose_name=u'短冊画像(.png)',
                                    blank=True)
    prizes = JsonCharField(default=list, verbose_name=u'業績報酬テーブル')
    prize_text = models.PositiveIntegerField(default=0,
                                             verbose_name=u'業績報酬テキスト')
    tanzaku = models.PositiveSmallIntegerField(default=0,
                                               verbose_name=u'指名に必要な短冊数')
    tip_rate = models.PositiveSmallIntegerField(default=0,
                                                verbose_name=u'短冊1枚のチップ交換レート')
    tip_quota = models.PositiveSmallIntegerField(default=0,
                                                 verbose_name=u'業績報酬のチップ規定数')

    @staticmethod
    def makeID(eventid, number):
        return (eventid << 32) + number

    @staticmethod
    def makeInstance(key):
        ins = ScoutEventTanzakuCastMaster()
        ins.id = key
        ins.eventid = int(key >> 32)
        ins.number = int(key & 0xffffffff)
        return ins
Exemplo n.º 19
0
class BaseTreasureTable(BaseMaster):
    """宝箱テーブル.
    """
    class Meta:
        abstract = True
    id = models.PositiveIntegerField(primary_key=True, verbose_name=u'ID')
    name = models.CharField(max_length=48, verbose_name=u'テーブル名', help_text=u'アプリでは使用しません')
    thumb = models.CharField(max_length=48, verbose_name=u'宝箱Top画像')
    schedule = models.PositiveIntegerField(default=0, verbose_name=u'期間')
    table = JsonCharField(default=list, verbose_name=u'出現する宝箱')
Exemplo n.º 20
0
class CabaClubMaster(BaseMaster):
    """キャバクラシステムの設定.
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False

    id = models.PositiveIntegerField(primary_key=True, verbose_name=u'ID')
    week = models.PositiveIntegerField(
        default=0,
        unique=True,
        verbose_name=u'年と週',
        help_text=u'2015年5週目は201505,2015年10週目は201510')
    name = models.CharField(max_length=48, verbose_name=u'名前')
    customer_prizes = JsonCharField(default=list,
                                    verbose_name=u'集客数達成報酬',
                                    help_text=u'[[報酬ID,出現率(1-10000)],...]')
    customer_prize_text = models.PositiveIntegerField(
        default=0, verbose_name=u'集客数達成報酬文言ID')
    customer_prize_interval = models.PositiveIntegerField(
        default=0, verbose_name=u'集客数報酬獲得抽選の間隔')
    cr_correction = JsonCharField(default=dict, verbose_name=u'キャストレアリティ補正(%)')
    ctype_customer_correction = JsonCharField(default=dict,
                                              verbose_name=u'キャスト属性集客補正(%)')
    ctype_proceeds_correction = JsonCharField(default=dict,
                                              verbose_name=u'キャスト属性売上補正(%)')

    for attr in ('cr_correction', ):
        for rare in Defines.Rarity.LIST:
            exec """def get_{attr}_{name}(self):
    return self.{attr}.get('{rare}', 100)""".format(
                attr=attr, rare=rare, name=Defines.Rarity.NAMES[rare].lower())
            exec """def set_{attr}_{name}(self, v):
    self.{attr}['{rare}']=v""".format(attr=attr,
                                      rare=rare,
                                      name=Defines.Rarity.NAMES[rare].lower())

    for attr in ('ctype_customer_correction', 'ctype_proceeds_correction'):
        for ctype in Defines.CharacterType.LIST:
            exec """def get_{attr}_{ctype}(self):
    return self.{attr}.get('{ctype}', 100)""".format(attr=attr, ctype=ctype)
            exec """def set_{attr}_{ctype}(self, v):
    self.{attr}['{ctype}']=v""".format(attr=attr, ctype=ctype)
Exemplo n.º 21
0
class BattleEventPresentContentMaster(BaseMasterWithThumbnail):
    """バトルイベントのポイントプレゼントの中身マスターデータ.
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False

    id = models.PositiveIntegerField(primary_key=True, verbose_name=u'ID')
    prizes = JsonCharField(default=list, verbose_name=u'報酬IDのリスト')
    prize_text = models.PositiveIntegerField(default=0, verbose_name=u'報酬の文言')
    pri = models.PositiveSmallIntegerField(default=0, verbose_name=u'一覧表示の優先度')
Exemplo n.º 22
0
class PresentEveryoneRecord(BaseMaster):
    """実際に配付する全プレレコード.
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False

    date = models.DateField(primary_key=True, verbose_name=u'配布日')
    mid_loginbonus = JsonCharField(default=list, verbose_name=u'全プレ(LB)のIDリスト')
    mid_mypage = JsonCharField(default=list, verbose_name=u'全プレ(マイページ)のIDリスト')

    @classmethod
    def pkey_to_str(cls, pkey):
        return pkey.strftime("%Y-%m-%d")

    @classmethod
    def str_to_pkey(cls, st):
        return DateTimeUtil.datetimeToDate(DateTimeUtil.strToDateTime(
            st, dtformat="%Y-%m-%d"),
                                           logintime=False)
Exemplo n.º 23
0
class AccessBonusMaster(BaseMaster):
    """アクセス日数ボーナス.
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False

    day = models.PositiveSmallIntegerField(primary_key=True,
                                           verbose_name=u'日数(0は毎日)')
    thumb = models.CharField(max_length=48, verbose_name=u'サムネイル')
    prizes = JsonCharField(default=list, verbose_name=u'報酬')
Exemplo n.º 24
0
class PresentEveryoneBase(BaseMaster):
    """全プレのベース.
    """
    class Meta:
        abstract = True

    id = models.PositiveIntegerField(primary_key=True, verbose_name=u'ID')
    name = models.CharField(max_length=48,
                            verbose_name=u'名前',
                            help_text=u'アプリでは使用しません')
    prizes = JsonCharField(default=list, verbose_name=u'配付するもの')
    textid = models.PositiveIntegerField(verbose_name=u'プレゼントの文言')
Exemplo n.º 25
0
class RankingGachaWholePrizeQueue(BaseModel):
    """ランキングガチャ総計pt報酬配布キュー.
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False

    id = PositiveAutoField(primary_key=True, verbose_name=u'ID')
    boxid = models.PositiveIntegerField(verbose_name=u'BoxID')
    point = PositiveBigIntegerField(verbose_name=u'総計pt')
    prizes = JsonCharField(default=list, verbose_name=u'総計pt報酬')
    ctime = AppDateTimeField(default=OSAUtil.get_now, verbose_name=u'作成時間')
Exemplo n.º 26
0
class PromotionPrizeMasterBase(BaseMasterWithName):
    """クロスプロモーション報酬マスターデータ.
    """
    class Meta:
        abstract = True
        app_label = settings_sub.APP_NAME

    id = models.PositiveIntegerField(primary_key=True, verbose_name=u'ID')
    rid = models.PositiveIntegerField(default=0, verbose_name=u'条件ID')
    schedule = models.PositiveIntegerField(default=0, verbose_name=u'スケジュール')
    prizes = JsonCharField(default=list, verbose_name=u'報酬')
    prize_text = models.PositiveIntegerField(default=0,
                                             verbose_name=u'報酬テキストID')
Exemplo n.º 27
0
class LoginBonusSugorokuMapMaster(BaseMaster):
    """すごろくログインボーナスのマップ.
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False

    id = models.PositiveIntegerField(primary_key=True, verbose_name=u'ID')
    name = models.CharField(max_length=48, verbose_name=u'名前')
    effectname = models.CharField(max_length=64, verbose_name=u'演出名')
    prize = JsonCharField(default=list, verbose_name=u'達成済み報酬')
    prize_text = models.PositiveIntegerField(default=0,
                                             verbose_name=u'達成済み報酬テキストID')
Exemplo n.º 28
0
class LoginBonusSugorokuMaster(BaseMaster):
    """すごろくログインボーナス.
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False

    id = models.PositiveIntegerField(primary_key=True, verbose_name=u'ID')
    name = models.CharField(max_length=48, verbose_name=u'名前')
    maps = JsonCharField(default=list, verbose_name=u'使用するマップID')

    def getMapIDByLap(self, lap):
        return self.maps[lap % len(self.maps)]
Exemplo n.º 29
0
class LevelUpBonusMaster(BaseMaster):
    """アイテムのマスターデータ.
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False

    id = models.PositiveSmallIntegerField(primary_key=True, verbose_name=u'ID')
    version = models.PositiveSmallIntegerField(default=0,
                                               verbose_name=u'バージョン番号')
    level = models.PositiveSmallIntegerField(default=0, verbose_name=u'到達レベル')
    prize_id = JsonCharField(default=list, verbose_name=u'プライズIDのリスト')
    levelupbonus_text = models.PositiveIntegerField(
        default=0, verbose_name=u'レベルアップ達成ボーナス報酬文言')
Exemplo n.º 30
0
class LoginBonusTimeLimitedDaysMaster(BaseMaster):
    """期限付きログインボーナス.
    """
    class Meta:
        app_label = settings_sub.APP_NAME
        abstract = False

    id = PositiveBigIntegerField(primary_key=True, verbose_name=u'ID')
    mid = models.PositiveIntegerField(verbose_name=u'マスターID')
    day = models.PositiveSmallIntegerField(verbose_name=u'日数')
    thumb = models.CharField(default='', max_length=128, verbose_name=u'サムネイル')
    prizes = JsonCharField(default=list, verbose_name=u'報酬')

    # 演出用パラメータ.
    bg = models.CharField(max_length=96, verbose_name=u'背景画像', blank=True)
    text_logo = models.CharField(max_length=128,
                                 verbose_name=u'演出文言(ロゴ表示時)',
                                 blank=True)
    text_start = models.CharField(max_length=128,
                                  verbose_name=u'演出文言(開始)',
                                  blank=True)
    text_itemlist = models.CharField(max_length=128,
                                     verbose_name=u'演出文言(報酬一覧)',
                                     blank=True)
    text_itemget = models.CharField(max_length=128,
                                    verbose_name=u'演出文言(アイテム獲得)',
                                    blank=True)
    text_itemnext = models.CharField(max_length=128,
                                     verbose_name=u'演出文言(明日のアイテム)',
                                     blank=True)
    text_end = models.CharField(max_length=128,
                                verbose_name=u'演出文言(終了,タッチ待ち)',
                                blank=True)

    item_x = models.PositiveSmallIntegerField(verbose_name=u'アイテムの表示位置(x)',
                                              default=80)
    item_y = models.PositiveSmallIntegerField(verbose_name=u'アイテムの表示位置(y)',
                                              default=200)

    @staticmethod
    def makeID(mid, day):
        return (mid << 32) + day

    @classmethod
    def makeInstance(cls, key):
        model = cls()
        model.id = key
        model.mid = int(key >> 32)
        model.day = int(key & 0xffffffff)
        return model