%% ---------------------------------------------------------------------------
%% @doc task.hrl
%% @author ming_up@foxmail.com
%% @since  2016-12-03
%% @deprecated  任务相关定义
%% ---------------------------------------------------------------------------

-define(SQL_ROLE_DAILY_GET,<<"SELECT `dailys`,`time` FROM `task_daily` WHERE `rid`=~p">>).
-define(SQL_ROLE_TASK_DAILY_INS, <<"REPLACE  INTO `task_daily` (`rid`,`dailys`,`time`)VALUES (~p,'~ts',~p)">>).
-define(SQL_ROLE_TASK_BAG_BATCH,"REPLACE INTO `task_bag`(`role_id`, `task_id`, `trigger_time`, `state`,`end_state`, `mark`, `type`, `lv`) VALUES ~ts").

%% 任务类型type
-define(TASK_TYPE_MAIN,         1). %% 主线任务(不能重复接)
-define(TASK_TYPE_SIDE,         2). %% 支线任务(不能重复接)
-define(TASK_TYPE_TURN,         3). %% 转生任务(不能重复接)
-define(TASK_TYPE_CHAPTER,      4). %% 章节任务(不能重复接)
-define(TASK_TYPE_NUCLEON,      5). %% 灵能任务(不能重复接)

-define(TASK_TYPE_GUILD,        6). %% 公会周任务
-define(TASK_TYPE_DAILY,        7). %% 日常支线任务(悬赏任务)

-define(TASK_TYPE_FOUR,         8). %% 四点清理 每日循环

%% 任务种类kind
-define(TASK_KIND_TALK,         0). %% 对话任务
-define(TASK_KIND_KILL,         1). %% 杀怪任务
-define(TASK_KIND_ITEM,         2). %% 收集任务
-define(TASK_KIND_COLLECT,      3). %% 采集任务
-define(TASK_KIND_ESCORT,       4). %% 护送任务
-define(TASK_KIND_ENTER_SCENE,  5). %% 探索任务
-define(TASK_KIND_DUN,          6). %% 副本任务
-define(TASK_KIND_ITEM_BACK,    7). %% 收集回收任务
-define(TASK_KIND_STREN,        8). %% 装备强化任务
-define(TASK_KIND_RUNE_DUN,     9). %% 符文副本任务
-define(TASK_KIND_EXP_DUN,     10). %% 发条密室任务

%% 任务内容类型定义，参考后台任务配置-任务内容配置
-define(TASK_CONTENT_KILL,              1).    %% 杀怪
-define(TASK_CONTENT_KILL_BOSS,         2).    %% 杀boss：具体到boss类型
-define(TASK_CONTENT_ITEM,              3).    %% 收集物品：杀怪
-define(TASK_CONTENT_COLLECT,           4).    %% 怪物采集
-define(TASK_CONTENT_TALK,              5).    %% npc对话
-define(TASK_CONTENT_START_TALK,        6).    %% 开始npc对话
-define(TASK_CONTENT_END_TALK,          7).    %% 结束npc对话
-define(TASK_CONTENT_STREN,             8).    %% 装备强化
-define(TASK_CONTENT_DUNGEON_TYPE,      9).    %% 完成某类副本
-define(TASK_CONTENT_DUNGEON_EXP,      10).    %% 发条密室经验
-define(TASK_CONTENT_DUNGEON,          11).    %% 某个副本
-define(TASK_CONTENT_ENTER_SCENE,      12).    %% 进入场景
-define(TASK_CONTENT_ADD_FRIEND,       13).    %% 添加好友
-define(TASK_CONTENT_JOIN_GUILD,       14).    %% 加入社团
-define(TASK_CONTENT_GUILD_EQ_RECYCLE, 15).    %% 社团装备回收
-define(TASK_CONTENT_GUILD_ACTIVITY,   16).    %% 社团活动
-define(TASK_CONTENT_GUILD_EQ_DONATE,  17).    %% 社团装备捐献
-define(TASK_CONTENT_BUY_FROM_TRADING, 19).    %% 从市场购买
-define(TASK_CONTENT_TRADING_PUTAWAY,  20).    %% 物品上架市场
-define(TASK_CONTENT_DUNGEON_RUNE,     21).    %% 符文之塔层数
-define(TASK_CONTENT_TIME_TASK,        22).    %% 主线触发限时任务
-define(TASK_CONTENT_GOODS_COMPOSE,    23).    %% 物品合成
-define(TASK_CONTENT_DAY_ACTIVITY,     24).    %% 日常活跃达到xxx点(历史取最大值)
-define(TASK_CONTENT_MATE,             25).    %% 羁绊缔结
-define(TASK_CONTENT_DEVOUR,           26).    %% 吞噬装备
-define(TASK_CONTENT_KILL_BOSS_ID,     27).    %% 击杀boss：具体bossid
-define(TASK_CONTENT_FISH,             28).    %% 钓鱼
-define(TASK_CONTENT_DUNGEON_ID_ENTER, 29).    %% 进入完成某个副本
-define(TASK_CONTENT_ARENA_TIMES,      31).    %% 竞技场次数
-define(TASK_CONTENT_DUNGEON_TYPE_ENTER,34).   %% 进入完成某类副本
-define(TASK_CONTENT_CHOOSE_TALK,      35).    %% 选项对话
-define(TASK_CONTENT_EMPOWER,          36).    %% 装备器灵
-define(TASK_CONTENT_DUN_WAVE,         37).    %% 副本进度
-define(TASK_CONTENT_MAILER_RUN,       38).    %% 送信任务 其实就是对话击鼓传花
-define(TASK_CONTENT_ERISE,            39).    %% 装备进化
-define(TASK_CONTENT_SCORE_BUY,        40).    %% 动态积分购买道具
-define(TASK_CONTENT_FRIEND_GIFT,      41).    %% 好友送礼
-define(TASK_CONTENT_FRIEND_EXP,       42).    %% 好友亲密度
-define(TASK_CONTENT_FOSTER_LV,        43).    %% 进阶系统升级
-define(TASK_CONTENT_ROLL,             44).    %% 器灵之路
-define(TASK_CONTENT_GOD_LV,           45).    %% 唤神升级
-define(TASK_CONTENT_GALAXY_LV,        46).    %% 星辰升级
-define(TASK_CONTENT_PET_LV,           47).    %% 宠物升级
-define(TASK_CONTENT_SHOW_BABY,        48).    %% 晒娃
-define(TASK_CONTENT_NUCLEON_EQUIP,    49).    %% 装备灵能
-define(TASK_CONTENT_NUCLEON_SHOP,     50).    %% 灵能寻宝
-define(TASK_CONTENT_NEWER,            51).    %% 新手引导
-define(TASK_CONTENT_TURN,             52).    %% 转生完成
-define(TASK_CONTENT_CAPSULE,          53).    %% 龙神抽奖
-define(TASK_CONTENT_EQUIP_SUIT,       54).    %% 装备套装
-define(TASK_CONTENT_WAR_SOUL_LV,      55).    %% 战魂升级
-define(TASK_CONTENT_FOSTER_GRADE,     56).    %% 进阶目标
-define(TASK_CONTENT_EXPECT_TASK,      57).    %% 完成目标任务
-define(TASK_CONTENT_CHILD_HEART,      58).    %% 宝宝同心值
-define(TASK_CONTENT_COMBAT,           59).    %% 玩家战力值
-define(TASK_CONTENT_ACTIVE_SKILL_LV_TIMES, 60). %% 任意主动技能升级N次
-define(TASK_CONTENT_SOME_SHOP_BUY_BOOK, 61). %% 指定商定购买技能书
-define(TASK_CONTENT_ANY_SHOP_BUY_BOOK, 62). %% 任意商定购买技能书


-define(DOUBLE_TYPE,  1).         %% 双倍奖励标志

-define(DAILY_SPECIAL_LV,  [55]).       %% 日常任务特殊处理等级

%% ================================= 配置记录 =================================
%% 任务数据
-record(task, {
    id = 0                     %% 任务id
    ,role_id=0
    ,name = ""                 %% 任务名称
    % ,desc = ""                 %% 描述
    ,class = 0                 %% 任务分类，0普通任务，1运镖任务，2帮会任务
    ,type = 0                  %% 类型(1主线，2支线，3转生，4章节限时，6公会周，7日常...)
    ,kind = 0                  %% 种类(0对话，1打怪，2采集，3收集，4护送，5探索，6副本，7采集回收(悬赏和公会任务动态采用)，8装备强化任务，9符文副本任务，10发条密室任务)
    ,level = 1                 %% 可接的最低等级
    ,level_max = 0             %% 可接的最大等级
    ,repeat = 0                %% 重复次数
    ,realm = 0                 %% 阵营限制
    ,career = 0                %% 职业限制
    ,turn = 0                  %% 转生限制
    ,prev = 0                  %% 上一个必须完成的任务id
    ,next = 0                  %% 下一个任务id
    ,dun_id = 0                %% 副本id|采集怪物id
    ,start_item = []           %% 开始获得物品{ItemId, Number}
    ,end_item = []             %% 结束回收物品
    ,start_npc = 0             %% 开始npcid
    ,end_npc = 0               %% 结束npcid
    ,start_talk = 0            %% 开始对话
    ,end_talk = 0              %% 结束对话
    ,unfinished_talk = 0       %% 未完成对话
    ,trigger_pathfind = 0      %% 是否需要寻路触发
    ,finish_pathfind = 0       %% 是否需要寻路完成
    ,condition = []            %% 条件内容 [{task, 任务id}, {item, 物品id, 物品数量}]
    ,content = []              %% 任务内容 [State, ContentType, Id, Num, SceneId, X, Y, PathFind]
    ,state = 0                 %% 完成任务需要的状态值 state = length(content)
    ,award_list=[]             %% 奖励列表
    ,special_goods_list=[]     %% 特殊职业性别物品[{Career, Sex, GoodsId, Num}]=[{职业,性别,物品id,数量}]:当职业不区分的时候=0;当性别不区分的时候=0;
    ,guild_exp = 0
    ,next_cue = 0
    ,npc_show = []             %% NPC 动态信息[{任务状态(0领取,1可完成,2完成),[{NpcId,Npc状态(0不显示，1显示),场景Id,X,Y}]}]
    ,chapter = 0               %% 主线章节 主线任务才会有值
    ,double_cost = 0           %% 双倍奖励消耗, 默认为0:没有双倍奖励; >0:则是有双倍,为消耗的绑钻数
    ,qcost = 0                 %% 快速完成消耗
}).

%% 任务条件数据
-record(task_condition, {
    id
    ,type = 0
    ,kind = 0
    ,level = 1                  %% 可接的最低等级
    ,level_max = 0              %% 可接的最大等级
    ,repeat = 0                 %% 可否重复
    ,realm = 0                  %% 阵营
    ,career = 0                 %% 职业限制
    ,turn = 0                   %% 转生限制
    ,prev = 0                   %% 上一个必须完成的任务id
    ,condition = []             %% 扩充条件	TODO 具体描述日后再加
}).

%% 任务类型配置
-record(task_type, {
    type = 0,
    count = 0,
    module_id = 0,
    counter_id = 0,
    finish_cost = []
}).

%% 等级动态任务id
-record(task_lv_dynamic_id, {
    type = 0,            %% 任务类型
    cls_state = 1,       %%是否跨服
    slv = 0,                  %% 开始等级
    elv = 0,                  %% 结束等级
    task_ids = []             %% 任务id,纯随机[id1,id2, ...]
}).

%% 动态等级任务内容
-record(task_lv_dynamic_content, {
    task_id = 0,              %% 任务id
    slv = 0,                  %% 开始等级
    elv = 0,                  %% 结束等级
    start_npc = 0,            %% 开始npc
    end_npc = 0,              %% 结束npc
    scene = 0,                %% 场景id
    x = 0,                    %% X
    y = 0,                    %% Y
    content_type = 0,         %% 任务内容类型
    id = 0,                   %% id(MonId|DunId|GoodId), 怪物id|副本id|物品id
    num = 0,                  %% 完成次数|采集数|收集数
    extra_reward = []         %% 额外奖励：[{环数,奖励内容}]
}).

%% ================================= 功能记录 =================================
%% 角色任务记录
-record(role_task, {
    role_id = 0,
    lv = 0,                     %% 接任务时候玩家的等级
    task_id = 0,
    type = 0,
    kind = 0,
    write_db = 0,               %% 是否需要写数据库
    trigger_time = 0,
    state = 0,
    end_state = 0,
    mark = []                   %% 任务记录器格式[State=int(),Finish=bool(), Type=atom((), ...]
}).

%% 角色任务历史记录
-record(role_task_log, {
    type = 0,
    count = 1                   %% 完成的次数
}).

-record(task_args, {
    id=0,                       %% 玩家id
    scene = 0,                  %% 场景id
    sid=undefined,              %% 玩家广播进程
    figure=undefined,           %% 基本形象参数
    npc_info=[],                %% 玩家npc信息
    gs_dict = undefined,        %% 物品数据
    guild_build_lv = 0,         %% 公会建筑场等级
    source = ""                 %% 玩家渠道来源
}).

%%跑环任务领取情况
-record(task_daily, {
    dailys = [], %%领取进度 [{Type,Pro}]
    time = 0 %%上次操作时间
}).

-record(base_task_daily, {
    type = 0, %%任务类
    grade = 0, %%进度
    counts = 0, %%要求完成环数
    awards = []
}).