📄 px_ls_monster.h
字号:
#pragma once
/* must been first include begin */
#include "..\ProjectX_Common\ProjectX_Copyright.h"
#include "..\ProjectX_Common\ProjectX_Common.h"
/* must been first include end */
/* std and common include */
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include "px_ls_discharge_skill.h"
#include "px_ls_passive_effect.h"
/************************************************************************
约定:
普通级别怪物可以具有2种攻击技能
普通boss级怪物可以具有2+1种技能
地图级boss可以具有2+2种技能
精英级怪物可以具有2+3种技能
每一种怪物最多可以同时为4个不同的组队或者类似主体开放经验获得
************************************************************************/
/* common macro define */
#define MAX_MONSTER_NAME_LEN 12 /* 怪物名称 */
//以下为定义怪物的种类
#define MONSTER_TYPE_NORMAL 1 //普通怪物
#define MONSTER_TYPE_DEFENCE_COUNTRY 2 //在攻城战中,被守城一方购买的佣兵
#define MONSTER_TYPE_ATTACK_COUNTRY 3 //在攻城战中,被攻城一方购买的佣兵
#define MONSTER_TYPE_SPECIFY 4 //特别的怪物
#define MONSTER_TYPE_REVENGE 5 //复仇怪物,用来平衡服务器内玩家而设
#define MONSTER_TYPE_REVENGE_BOSS 6 //复仇怪物头目
#define MONSTER_TYPE_TASK_ONLY 7 //任务怪物
#define MONSTER_TYPE_DEFENCE_COUNTRY_BOSS 8 //守城boss级佣兵
#define MONSTER_TYPE_ATTACK_COUNTRY_BOSS 9 //攻城boss级佣兵
#define MONSTER_TYPE_NORMAL_BOSS 10 //普通boss级怪物
#define MONSTER_TYPE_MAPAREA_BOSS 11 //地图区域级boss怪物
#define MONSTER_TYPE_ELIT_BOSS 12 //超级精英类怪物
/*
* 怪物的各种状态,没有实现
*/
#define MONSTER_STATE_NORMAL 1 //普通
#define MONSTER_STATE_ENRAGE 2 //激怒
/*
* 怪物技能
*/
typedef struct tagMonster_Skill {
int skill_id; /* 技能基id */
byte ratio; /* 此技能施放的几率,0~100 之间 */
}MONSTER_SKILL, * LPMONSTER_SKILL;
/*
* 怪物基础
*/
typedef struct tagMonster_Base {
int baseid; /* 序号或者基id */
char name[MAX_MONSTER_NAME_LEN]; /* 名称 */
int level; /* 等级 */
float drop_ratio_money; /* 金钱掉落几率 */
float drop_ratio_otheritem; /* 其他道具掉落几率 */
byte max_num_drop_item; /* 最大掉落道具数目 */
byte monster_type; // 怪物种类
BOOL active_attack; /* 是否主动攻击型怪物 */
WORD hp; /* hp */
WORD mana; /* mana */
WORD damage_min; /* 最小攻击力 */
WORD damage_max; /* 最大攻击力 */
WORD defence; /* 防御 */
WORD attack_veracity; /* 攻击准确性 */
byte move_range; /* 活动范围 */
int exp_give; /* 经验 */
int item_task; /* 任务道具 */
float ratio_item_task; /* 任务道具掉落几率 */
/* resist */
byte physic_resist; /* 物理抵抗 */
byte magic_resist; /* 魔法抵抗 */
byte cold_resist; /* 冰系抵抗 */
byte poison_resist; /* 毒系抵抗 */
byte ligthing_resist; /* 电系抵抗 */
byte fire_resist; /* 火系抵抗 */
/* fast recovery and protect */
byte fbs; /* 快速格挡速度 fbs(fast block speed) */
byte fce; /* 快速施法速度 - 元素 fce(fast cast element skill) */
byte fcm; /* 快速施法速度 - 魔法 fcm(fast cast magic skill) */
byte fcp; /* 快速施法速度 - 物理 fcp(fast cast physic skill) */
byte fcr; /* 快速冰冻恢复 fcr(fast colden recovery) */
byte fhr; /* 快速打击恢复 fhr(fast hit recovery) */
byte flr; /* 快速撕裂伤口恢复 flr(fast lancaster damage recovery) */
byte fmr; /* 快速魔法伤害恢复 fmr(fast magic damage recvovery) */
byte fms; /* 快速移动速度 fms(fast move speed) */
byte fpr; /* 快速中毒恢复 fpr(fast poison recovery) */
byte fsr; /* 快速打晕恢复 fsr(fast stun recovery) */
byte fss; /* 快速召唤速度 fss(fast summon speed) */
/* skill */
MONSTER_SKILL monster_skill[5]; /* 怪物技能 */
}MONSTER_BASE, * LPMONSTER_BASE;
/*
* 怪物复仇事件
* 仅发生在服务器支持,且复仇条件满足的情况下
* 发生此事件时,怪物的各种属性等都相应提升15~30%,但各种frame影响数做相应下调
* 同时怪物掉落顶级道具的几率提升30~50%或者配置
* revenge
*/
typedef struct tagEvent_Revenge {
float property_enhance_ratio; /* 怪物或者类似主体属性增强? */
float item_toplevel_drop_level_add; /* 顶级道具掉落率提升? */
int start_frame;
int persist_frame;
}EVENT_REVENGE, * LPEVENT_REVENGE;
/*
* 复仇怪物刷新
*/
typedef struct tagRevenge_Monster_Refresh {
int baseid; /* 此刷新怪物基id */
int mapid; /* 刷新地图id */
byte mapx; /* 坐标x */
byte mapy; /* 坐标y */
byte num_refresh; /* 刷新数量 */
int session_start; /* 会话开始id */
int interval_seconds; /* 刷新间隔时间,以秒计 */
}REVENGE_MONSTER_REFRESH, * LPREVENGE_MONSTER_REFRESH;
/*
* 怪物刷新结构
*/
typedef struct tagMonster_Refresh {
int baseid; /* 此刷新怪物基id */
int mapid; /* 刷新地图id */
byte mapx; /* 坐标x */
byte mapy; /* 坐标y */
byte num_refresh; /* 刷新数量 */
int session_start; /* 会话开始id */
int interval_seconds; /* 刷新间隔时间,以秒计 */
}MONSTER_REFRESH, * LPMONSTER_REFRESH;
/*
* 怪物
*/
typedef struct tagMonster {
int session_id; /* 会话id */
int baseid; /* 怪物的基础id */
int state; /* 当前状态 */
int level; /* 怪物等级 */
byte check_code; //校验码
int mapid; /* 所在地图id */
byte mapx; /* 坐标x */
byte mapy; /* 坐标y */
byte mapz; /* 坐标z */
byte direction; /* 当前面向方向 */
WORD move_range; /* 活动范围 */
float move_speed; /* 移动速度,为一帧移动距离 */
byte move_state; /* 移动状态,走动?加速至跑动状态?跑动?飞行?飞行停止过程中?跑动停止过程中? */
float hp_increase_frame; /* hp每帧恢复数值 */
float mana_increast_frame; /* mana每帧恢复数值 */
float sp_increase_frame; /* sp每帧恢复数值 */
int base_frame; /* 帧数基值 */
WORD last_handled_frame; /* 最后一次处理帧数 */
byte physic_resist; /* 物理抵抗 */
byte magic_resist; /* 魔法抵抗 */
byte cold_resist; /* 冰系抵抗 */
byte poison_resist; /* 毒系抵抗 */
byte ligthing_resist; /* 电系抵抗 */
byte fire_resist; /* 火系抵抗 */
byte curr_skill_type; /* 当前技能类型 */
int curr_skill_id; /* 当前技能id */
BOOL active_attack; /* 是否主动攻击型怪物 */
WORD attack_veracity; /* 攻击准确性 */
WORD damage_min; /* 最小攻击力 */
WORD damage_max; /* 最大攻击力 */
byte damage_resist_base; /* 与攻击相关的施加抵抗基值 */
WORD hp_curr; /* 当前hp */
WORD mana_curr; /* 当前mana */
WORD sp_curr; /* 当前sp */
WORD defence_curr; /* 当前防御 */
byte block_ratio; /* 格挡率 */
byte attack_ratio; /* 攻击成功率 */
byte physics_damage_decrease_ratio; /* 物理伤害减免率 */
byte magic_damage_decrease_ratio; /* 魔法伤害减免率 */
byte element_damage_decrease_ratio; /* 元素伤害减免率 */
byte block_frame; /* 快速格挡帧数 */
byte start_cast_frame; /* 技能启动帧数 */
byte cast_frame; /* 技能释放帧数 */
byte cold_frame; /* 技能冷却帧数 */
byte delay_frame; /* 技能延迟帧数 */
byte cold_recovery_frame; /* 冰冻恢复帧数 */
byte hit_recovery_frame; /* 打击恢复帧数 */
byte lancinate_recovery_frame; /* 撕裂伤口恢复帧数 */
byte magic_damage_recovery_frame; /* 魔法伤害恢复帧数 */
byte poison_recovery_frame; /* 中毒恢复帧数 */
byte stun_recovery_frame; /* 打晕恢复帧数 */
byte curse_recovery_frame; /* 诅咒恢复帧数 */
WORD last_block_frame; /* 最后一次格挡帧数 */
WORD last_cast_frame; /* 最后一次释放帧数 */
WORD last_hit_recovery_frame; /* 最后一次打击恢复帧数 */
WORD last_lancinate_recovery_frame; /* 最后一次撕裂伤口恢复帧数 */
WORD last_magic_damage_recovery_frame;/* 最后一次魔法上海恢复帧数 */
WORD last_stun_recovery_frame; /* 最后一次打晕恢复帧数 */
byte lancinate_surplus_frame; /* 撕裂伤口剩余帧数 */
byte magic_damage_surplus_frame; /* 魔法伤害剩余帧数 */
DISCHARGE_SKILL * pdischarge_skill;
PASSIVE_EFFECT * ppassive_effect;
}MONSTER, * LPMONSTER;
/*
* 怪物搜索键
*/
typedef struct tagMonster_Key {
byte state; /* 状态 */
MONSTER * pmonster; /* 指向怪物 */
}MONSTER_KEY, * LPMONSTER_KEY;
void handle_all_monster_staff(void);
void handle_all_monster_ai(void);
void refresh_monster(void);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -