源战役
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

152 lines
7.3 KiB

%%%-------------------------------------------------------------------
%%% @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 %% 当次死亡次数
}).