%% ---------------------------------------------------------
%% Author:  xyj
%% Email:   156702030@qq.com
%% Created: 2012-3-19
%% Description: 物品掉落ets
%% --------------------------------------------------------
-define(BROAD_NONE,     0).       %% 不广播，掉落只展示给玩家自己看
-define(BROAD_SCENE,    1).       %% 场景广播

%% 分配方式
-define(ALLOC_ONESELF,  1).       %% 分配方式：个人独占
-define(ALLOC_RAND,     2).       %% 分配方式：随机分配
-define(ALLOC_EQUAL,    3).       %% 分配方式：均等分配
-define(ALLOC_HANDSPEED,4).       %% 分配方式：先到先得

%% 归属类型
-define(DROP_HURT_MAX,  0).       %% 归属类型：伤害最高获得
-define(DROP_FIRST_ATT, 1).       %% 归属类型：第一击获得
-define(DROP_LAST_ATT,  2).       %% 归属类型：最后一击获得
-define(DROP_NO_ONE,    3).       %% 归属类型：无归属

-define(DROP_TYPE_RAND,   0).     %% 随机权重掉落
-define(DROP_TYPE_FIXED,  1).     %% 固定掉落
-define(DROP_TYPE_TASK,   2).     %% 任务物品

%% 掉落限制计算
-define(DROP_LIMIT_GOODID,    0). %% 单个物品ID玩家限制
-define(DROP_LIMIT_ID_SERVER, 1). %% 单个物品ID全服限制

-define(DROP_ALIVE_TIME,    300). %% 掉落包存活时间
-define(DROP_PROTECT_TIME,  120). %% 掉落包拾取保护时间

-define(DROP_BLOG_CALC_TIME,  5). %% 掉落归属广播时间

%% 掉落来源
-define(DROP_ORIGIN_REWARD_BOSS,                1).     %% 赏金BOSS
-define(DROP_ORIGIN_DESERTED_BOSS,              2).     %% 星域BOSS
-define(DROP_ORIGIN_REWARD_BOSS_UNSHARED,       3).     %% 赏金BOSS独享
-define(DROP_ORIGIN_DESERTED_BOSS_UNSHARED,     4).     %% 星域BOSS独享
-define(DROP_ORIGIN_PERSONAL_BOSS,              5).     %% 个人BOSS
-define(DROP_ORIGIN_CRUSADE_BOSS,               6).     %% 讨伐副本BOSS
-define(DROP_ORIGIN_HOME_BOSS,                  7).     %% BOSS之家

%% 掉落总来源分类
-define(DROP_CRUSADE_BOSS,   1).        %% 讨伐副本
-define(DROP_REWARD_BOSS,    2).        %% 赏金BOSS：包括独享BOSS
-define(DROP_PERSONAL_BOSS,  3).        %% 个人BOSS
-define(DROP_DESERTED_BOSS,  4).        %% 星域BOSS：包括独享BOSS

%% 表明是合并次数掉落的key
-define(DROP_MERGE_MULTI_COUNT,  drop_merge_multi_count).

%% 掉落组别定义
-record(drop, {
     list = [],                   %% 掉落包列表 [{掉落包ID, 掉落个数}]
     weight = 0                   %% 掉落权重
}).

%% 掉落规则
-record(ets_drop_rule, {
          mon_id=0,               %% 怪物编号
          alloc = 4,              %% 分配方式：1队长独占,2队伍随机,3队伍均等,4归属拾取
          min_lv = 0,             %% 最小等级
          max_lv = 0,             %% 最大等级
          bltype = 0,             %% 归属类型：分配方式4：启作用 0：伤害最高获得 1：第一击获得 2：最后一击获得 3：无归属；配置“无归属”后所有玩家都可以拾取列表中的道具
          task=0,                 %% 是否有任务物品，0为无，1为有
          broad=0,                %% 广播场景，0不广播，1队伍广播，2场景广播
          % drop_list=[],         %% 掉落列表[1和2对应的所有掉落物品id]  注:本字段已删
          task_drop_list=[],      %% 任务掉落列表 [1和2对应的任务掉落物品id]
          drop_rule=[],           %% 掉落规则1:1+2:1=250; 3:1=750 = [ {[{1,1}, {2, 1}], 250}, {[{3,1}], 750} ] %% 默认概率是1000：(权重和随机结合)
          drop_range={0,0}        %% 掉落范围 {x轴像素, y轴像素}; 注:{0,0}表示不做范围限制
         }).

%% 物品掉落规则
-record(ets_drop_goods, {
          id=0,                   %% 编号
          type = 0,               %% 类型:0随机权重掉落;1固定掉落;2 任务物品
          drop_thing_type = 0,    %% 掉落物品类型(?TYPE_GOODS ?TYPE_COIN)
          list_id=0,              %% 列表ID
          goods_id=0,             %% 物品类型ID
          ratio=0,                %% 概率
          career_ratio_list = [], %% 职业概率列表 [{职业, 概率}]
          origin_ratio = 0,       %% 初始概率
          min_num=0,              %% 最低掉落数
          num=0,                  %% 最大数量
          cond_list = [],         %% 条件列表 [{lv, 最小等级, 最大等级}, {turn, [转生数1,转生数2]} ]
          get_way = 0,            %% 获得方式：0入背包，1放入拍卖行
          repeat = 1,             %% 是否循环利用(放回随机)
          bind=0,                 %% 绑定状态
          notice=[],              %% 传闻，频道列表如[世界(1),家族(2)...]
          hour_start=0,           %% 时间段限制，0为无
          hour_end=0,             %% 时间段限制，0为无
          time_start=0,           %% 日期限制，0为无
          time_end=0,             %% 日期限制，0为无
          replace_list = [],      %% 职业替换列表 [{职业, 物品类型ID}]
          drop_icon = "",         %% 掉落在地上显示的图标
          drop_leff = ""          %% 掉落在地上显示的光效
         }).

%% 掉落上限
-record(base_drop_limit, {
          goods_id = 0,          %% 掉落物品id
          drop_thing_type = 0,   %% 掉落类型
          limit_type = 0,        %% 限制类型：0：玩家单个物品Id限制；1：全服单个物品Id限制
          limit_day = 0,         %% 掉落周期
          limit_num = 0          %% 限制数量品
          }).

%% 怪物类型活动动额外掉落
-record(base_mon_type_drop, {
          act_id = 0,             %% 活动主id
          sub_id = 0,             %% 主动子id
          mon_type = 0,           %% 怪物类型
          slv = 0,                %% 开始等级
          elv = 0,                %% 结束等级
          drop_list=[],           %% 掉落列表[1和2对应的所有掉落物品id]
          drop_rule=[]            %% 掉落规则1:1+2:1=250; 3:1=750 = [ {[{1,1}, {2, 1}], 250}, {[{3,1}], 750} ] %% 默认概率是1000：(权重和随机结合)
         }).

%% 物品掉落生成表
-record(ets_drop, {
          id=0,                   %% 编号
          player_id=0,            %% 角色ID
          team_id=0,              %% 组队ID
          copy_id=0,              %% 副本ID
          scene=0,                %% 场景ID
          scene_pool_id=0,        %% 场景进程id
          drop_thing_type = 0,    %% 掉落物品类型(?TYPE_GOODS，?TYPE_COIN)
          drop_goods=[],          %% 掉落物品[[物品类型ID,物品类型,物品数量,物品品质]...]
          goods_id=0,             %% 掉落物品 - 物品类型ID
          min_num=0,              %% 最低数量
          num=0,                  %% 最大数量
          get_way = 0,            %% 获得方式：0入背包，1放入拍卖行
          bind=0,                 %% 绑定状态
          notice=[],              %% 传闻，频道列表如[世界(1),家族(2)...]
          broad=0,                %% 广播场景，0不广播，1队伍广播，2场景广播
          expire_time=0,          %% 过期时间
          mon_id = 0,             %% 怪物类型ID
          mon_name = <<>>,        %% BOSS怪物名字
          x = 0,                  %% 掉落坐标
          y = 0,
          drop_icon = "",         %% 掉落图标
          drop_leff = "",         %% 掉落光效 0:没有光效 >0:光效id
          hurt_id_list = [],      %% 造成伤害玩家ID列表
          alloc = 0,              %% 掉落类型
          bltype = 0              %% 归属类型
          , origin = 0            %% 掉落来源
         }).

%% 怪物参数
-record(mon_args, {
          id = 0,                 %% 怪物唯一id
          mid = 0,                %% 怪物配置id
          kind = 0,               %% 怪物类型
          boss = 0 ,              %% BOSS类型
          lv = 0,                 %% 等级
          scene = 0,              %% 场景
          scene_pool_id = 0,      %% 场景进程池id
          copy_id = 0,            %% copy_id
          x = 0,                  %% x坐标
          y = 0,                  %% y坐标
          ctime = 0,              %% 怪物创建时间
          name = "",              %% 怪物名字
          exp = 0,                %% 怪物经验
          origin = 0              %% 怪物来源
         }).

%% 玩家参数
-record(ps_args, {
          role_id = 0,
          name = "",
          lv = 0,
          cell_num = [],          %% 背包格子列表[{背包位置, 空格子数}]
          scene = 0,
          pool_id = 0,
          copy_id = 0,
          x = 0,
          y = 0,
          hp = 0,
          team_id = 0,
          extra_data = #{}
         }).

%% 掉落条件参数
-record(cond_args, {
          lv = 0,                 %% 等级
          career = 0,             %% 职业
          turn = 0,               %% 转生数
          turn_task_id = 0        %% 当前转生任务id
     }).
