%%%------------------------------------------------------------------- %%% @author liushl %%% @doc %%% 狂战领域 %%% @end %%%------------------------------------------------------------------- -author("liushl"). %%%------------------------------------------------------------------- %%% @doc %%% 常量配置 %%% @end %%%------------------------------------------------------------------- %% 活动场景 -define(MADNESS_LAND_SCENE_ROUND_1, 7800). %% 第一轮场景id -define(MADNESS_LAND_SCENE_ROUND_2_NODE, 7810). %% 第二轮本服场景 -define(MADNESS_LAND_SCENE_ROUND_2_CENTER, 7820). %% 第二轮跨服场景 -define(MADNESS_LAND_SCENE(Round, ClsType), case {Round, ClsType} of {1, _} -> ?MADNESS_LAND_SCENE_ROUND_1; %% 第一轮 {2, 0} -> ?MADNESS_LAND_SCENE_ROUND_2_NODE; %% 第二轮本服 {2, 1} -> ?MADNESS_LAND_SCENE_ROUND_2_CENTER %% 第二轮跨服 end ). %% 狂战领域BOSS -define(MADNESS_LAND_ROUND_1_BOSS, 83000001). %% 第一轮BOSS -define(MADNESS_LAND_ROUND_2_BOSS, 83000003). %% 第二轮BOSS -define(MADNESS_LAND_BOSS_ID(Round), case Round of 1 -> ?MADNESS_LAND_ROUND_1_BOSS; 2 -> ?MADNESS_LAND_ROUND_2_BOSS end). %% 狂战领域第一轮持续时间 -define(MADNESS_LAND_ROUND_1_TIME, data_madness_land:get_madness_land_kv(round_1_time)). %% 狂战领域第一轮休息间 -define(MADNESS_LAND_ROUND_REST_TIME, data_madness_land:get_madness_land_kv(rest_time)). %% 狂战领域第二轮持续时间 -define(MADNESS_LAND_ROUND_2_TIME, data_madness_land:get_madness_land_kv(round_2_time)). %% 狂战领域第一轮小怪出生时间 -define(MADNESS_LAND_ROUND_1_MON_BORN, data_madness_land:get_madness_land_kv(round_1_monster_time)). %% 狂战领域第二轮小怪出生时间 -define(MADNESS_LAND_ROUND_2_MON_BORN, data_madness_land:get_madness_land_kv(round_2_monster_time)). %% 狂战领域循环加积分-循环时间 -define(MADNESS_LAND_CYCLE_SCORE_TIME, data_madness_land:get_madness_land_kv(cycle_time_interval)). %% 狂战领域循环加积分-积分数 -define(MADNESS_LAND_CYCLE_SCORE, data_madness_land:get_madness_land_kv(cycle_time_score)). %% 狂战领域杀人基础分 -define(MADNESS_LAND_KILL_BASE_SCORE, data_madness_land:get_madness_land_kv(kill_integral)). %% 狂战领域BOSS首刀奖励 -define(MADNESS_LAND_FIRST_ATTACK_AWARD, data_madness_land:get_madness_land_kv(first_kill_one)). %% 狂战领域第一轮小怪 -define(MADNESS_LAND_ROUND_1_MONS, data_madness_land:get_madness_land_kv(monster_refresh_one)). %% 狂战领域第二轮小怪 -define(MADNESS_LAND_ROUND_2_MONS, data_madness_land:get_madness_land_kv(monster_refresh_two)). %% 狂战领域BOSS刀分 -define(MADNESS_LAND_BOSS_ATTACK_SCORE, data_madness_land:get_madness_land_kv(hurt_integral)). %% 狂战领域小怪刀分 -define(MADNESS_LAND_MONS_ATTACK_SCORE, data_madness_land:get_madness_land_kv(refresh_hurt)). %% 狂战领域个人榜单长度 -define(MADNESS_LAND_RANK_LENGTH, 20). %% 狂战领域公会榜单长度 -define(MADNESS_LAND_GUILD_RANK_LENGTH, 10). %% 狂战领域全服邮件奖励 -define(MADNESS_LAND_SERVER_REWARD, data_madness_land:get_madness_land_kv(service_rewards)). %% 活动阶段定义 -define(MADNESS_LAND_STAGE_IDLE, 0). %% 活动未开始 -define(MADNESS_LAND_STAGE_ROUND_1, 1). %% 第一阶段 -define(MADNESS_LAND_STAGE_RESET, 2). %% 第一阶段结束阶段,准备进入第二阶段 -define(MADNESS_LAND_STAGE_ROUND_2, 3). %% 第二阶段 -define(MADNESS_LAND_STAGE_END, 4). %% 第二阶段结束阶段,活动即将结束 %% 活动数据 -record(madness_land_act, { zone_id = 0 %% 分区id:本服玩法,分区为0 , role_grade = dict:new() %% 本服跨服均有效:所有玩家成绩 , guild_grade = [] %% 公会成绩 , top = 0 %% 最高成绩者:公会id , boss_first_attack_time = 0 %% 第一次攻击BOSS时间 , boss_first_attack_role = 0 %% 首刀玩家 , refresh_flag = false %% 是否有成绩变化 , alive_mons_info = #{} %% 存活的分身 #{分线 => 数量} , invincible_time = 0 %% 进入无敌时间 , relieve_invincible_time = 0 %% 解除无敌时间 }). %% 活动管理结构:本服/跨服 -record(madness_land, { cls_type = 0 %% 节点类型:1跨服/0本服 , stage = 0 %% 当前阶段 , end_time = 0 %% 当前阶段结束时间 , round = 0 %% 活动轮次:两轮 , ref_stage_switch = undefined %% 阶段切换定时器 , ref_cycle_add_score = undefined %% 循环加分定时器 , ref_mon_born = undefined %% 小怪出生定时器 , ref_refresh_rank = undefined %% 排行榜刷新定时器 , round_1_first_attack= 0 %% 本服有效:第一轮首刀玩家。临时数据,活动结束会清理 , round_1_role_grade = dict:new() %% 本服有效:第一轮个人成绩,第一轮结束的时候写入。临时数据,活动结束会清理 , round_1_guild_grade = [] %% 本服有效:第一轮公会成绩,第一轮结束的时候写入。临时数据,活动结束会清理 , round_2_type = 0 %% 本服有效:第二轮活动位置:1跨服/0本服 , local_data = undefined %% 本服有效:活动数据 #madness_land_act{} , zone_data = #{} %% 跨服有效:分区数据:#{分区id => #madness_land_act{}} , role_rank = #{} %% 个人排名#{分区id => [#madness_land_role{}]}, 本服 分区id为0 , guild_rank = #{} %% 公会排名#{分区id => [#madness_land_guild{}]}, 本服 分区id为0 , check_host_pid }). %% 服务器数据 -record(madness_land_server, { server_id = 0 , server_num = 0 , server_name = "" , score = 0 , time = 0 %% 刷新时间 , rank = 0 %% 排名 }). %% 公会数据 -record(madness_land_guild, { guild_id = 0 , server_id = 0 , server_num = 0 , guild_name = "" , guild_flag = 0 , score = 0 , time = 0 %% 刷新时间 , rank = 0 %% 排名 }). %% 玩家数据 -record(madness_land_role, { role_id = 0 %% 玩家id , node = undefined , server_id = 0 %% 服务器id , server_num = 0 %% 服务器num , picture = undefined , guild_id = 0 %% 社团id , guild_name = 0 %% 社团名字 , score = 0 %% 积分 , time = 0 %% 刷新时间 , continue_kill = 0 %% 当前连杀数 , zone_id = 0 %% 分区id , rank = 0 %% 排名 %% 统计用 , leave = false %% 是否离场 , enter_time = 0 %% 当次进入时间 , die_count = 0 %% 当次死亡次数 }).