123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- /*
- * @Author: your name
- * @Date: 2021-09-14 22:30:31
- * @LastEditTime: 2021-09-20 16:46:18
- * @LastEditors: Please set LastEditors
- * @Description: In User Settings Edit
- * @FilePath: \zombiefood\assets\script\gameLogic\gameObject\zombie\zombieProp.ts
- */
- import npcDtManager from "../../../dataManager/npcDtManager";
- import npcHelper from "../../../dataManager/npcHelper";
- import { ROLE_STATE } from "../../utrl/gameEnum";
- import PlayerObject from "../player/playerObject";
- import PlayerProp from "../player/playerProp";
- /**玩家逻辑属性 */
- export default class ZombieProp {
- //僵尸经验值
- exp = 1;
- /**空手攻击力 */
- base_damage = 5;
- /**空手攻击范围 */
- hand_range = 80;
- /**攻击间隔 */
- attack_dur = 1;
- /**攻击计时器 */
- attack_timer = Number.MAX_VALUE;
- /**索敌范围 */
- search_range = 300;
- /**玩家等级 */
- level = 0;
- /**基础血量 */
- base_hp = 100;
- /**当前血量 */
- cur_hp = 100;
- /**僵尸状态 */
- cur_state = ROLE_STATE.idle;
- /** 僵尸ID */
- zombie_ID = 0;
- /**初始化 */
- init(id) {
- let modelDt = npcHelper.getModelAttrByID(id);
- this.zombie_ID = id;
- this.base_damage = modelDt.att;
- this.base_hp = modelDt.hp;
- this.cur_hp = this.base_hp * (this.level + 1);
- // if(npcHelper.isBoss(id)){
- // this.hand_range = 80
- // }
- this.initBossProp();
- }
- //boss属性特殊处理
- initBossProp() {
- if (this.zombie_ID == 56) {
- this.attack_dur = 5;
- this.search_range = 1000;
- this.hand_range = 300;
- } else if (this.zombie_ID == 53) {
- this.attack_dur = 3;
- this.search_range = 1000;
- this.hand_range = 300;
- } else if(this.zombie_ID == 46){
- this.attack_dur = 2;
- this.search_range = 300;
- this.hand_range = 100;
- }
- }
- /**受伤
- * @param damage 伤害
- * @returns 目标剩余血量
- */
- beHurt(damage: number): number {
- this.cur_hp -= damage;
- if (this.cur_hp <= 0) {
- this.cur_state = ROLE_STATE.die;
- this.cur_hp = 0;
- }
- return this.cur_hp;
- }
- /**攻击间隔
- * @param dt 每帧时间
- * @param cbk 攻击回调
- */
- attackRun(dt: number, cbk: Function) {
- this.attack_timer += dt;
- if (this.attack_timer > this.attack_dur) {
- this.attack_timer = 0;
- cbk();
- }
- }
- /**攻击
- * @param target 目标
- * @param damage 伤害
- * @returns 如果目标已死,返回目标等级,否则返回-1
- */
- attack(target: PlayerObject, damage: number): boolean {
- let hp = target.player_prop.beHurt(damage);
- if (hp <= 0) {
- this.cur_state = ROLE_STATE.idle;
- return true
- }
- return false;
- }
- }
|