怪物根据怪物等级 掉落石头和经验

This commit is contained in:
2025-07-11 16:20:05 +08:00
parent a302bbd65f
commit 43c2dbcfa2
12 changed files with 295 additions and 85 deletions

View File

@@ -1,16 +1,4 @@
export const MonsetList = {
1:{
1:[5001],
}
}
export const BossList = {
1:{
1:[5001],
}
}
import { HQuality } from "./heroSet";
// 波次配置表 - 根据Design.md中的怪物波次系统设计
export const WaveConfig = {
@@ -226,22 +214,37 @@ export const getInfiniteWaveConfig = (waveNumber: number) => {
};
};
// 获取怪物等级
export const getMonsterLevel = (waveNumber: number): number => {
return 1 + Math.floor(waveNumber / 1);
};
// 获取装备石掉落数量
export const getEquipStoneDrops = (monsterType: string, level: number = 1): number => {
export const getStoneDrops = (monsterType: number, level: number = 1): {type: string, count: number} => {
const baseDrops = {
"warrior": 2, // 普通怪物
"remote": 3, // 远程怪物
"mage": 4 // 法师怪物
[HQuality.GREEN]: 2, // 普通怪物
[HQuality.BLUE]: 4, // 精英怪物
[HQuality.PURPLE]: 8 // Boss怪物
};
return Math.floor(baseDrops[monsterType] * (1 + (level - 1) * 0.2));
// 50%概率掉落装备石,50%概率掉落技能石
const dropType = Math.random() < 0.5 ? "equip" : "skill";
const dropCount = Math.floor(baseDrops[monsterType] * (1 + (level - 1) * 0.2));
return {
type: dropType,
count: dropCount
};
};
export const getExpDrops = (monsterType: number, level: number = 1): number => {
const baseDrops = {
[HQuality.GREEN]: 10, // 普通怪物
[HQuality.BLUE]: 20, // 精英怪物
[HQuality.PURPLE]: 40 // Boss怪物
};
return Math.floor(baseDrops[monsterType] * (1 + (level - 1) * 0.2));
}
// 获取装备升级成本
export const getEquipUpgradeCost = (equipLevel: number, quality: number): number => {
const baseCosts = {

View File

@@ -1,5 +1,4 @@
import { v3 } from "cc"
import { Quality } from "./CardSet"
import { BuffAttr } from "./SkillSet"
/**
@@ -29,10 +28,7 @@ export enum HType {
remote = 1,
mage = 2,
}
export enum HeroFac {
hero = 0,
enemy = 1,
}
export const getHeroList = (is_master:number=0)=>{
if(is_master==1){
return Masters
@@ -44,10 +40,6 @@ export const HeroList = [5021,5022,5023,5024,5025,5026,5027,5028]
export const MonList = [5201,5202,5203,5204,5205,5206,5216,5217,5218,5219,5220,5221,5222,5223,5224,5225,5226,5227]
export const Masters = [5001,5002,5003,5004]
export const HeroSet = {
Start_x:[-200,-260,-320],
Start_y:[70,0,-70]
}
export const HeroPos={
0:{pos:v3(-290,10,0)},
1:{pos:v3(-200,0,0)},
@@ -328,110 +320,110 @@ export const HeroInfo = {
//怪物
5201:{uuid:5201,name:"兽人战士",path:"mor1", quality:HQuality.BLUE,lv:1,kind:1,
type:HType.warrior,hp:25,ap:8,dis:300,cd:1.5,speed:45,skills:[6007],
5201:{uuid:5201,name:"兽人战士",path:"mor1", quality:HQuality.GREEN,lv:1,kind:1,
type:HType.warrior,hp:25,ap:8,dis:200,cd:1.5,speed:45,skills:[6007],
buff:[
],info:"普通怪物-战士型"},
5202:{uuid:5202,name:"兽人刺客",path:"mor2", quality:HQuality.BLUE,lv:1,kind:1,
type:HType.warrior,hp:25,ap:8,dis:300,cd:1.5,speed:45,skills:[6007],
5202:{uuid:5202,name:"兽人刺客",path:"mor2", quality:HQuality.GREEN,lv:1,kind:1,
type:HType.warrior,hp:25,ap:8,dis:200,cd:1.5,speed:45,skills:[6007],
buff:[
],info:"普通怪物-战士型"},
5203:{uuid:5203,name:"兽人护卫",path:"mor3", quality:HQuality.BLUE,lv:1,kind:1,
type:HType.remote,hp:20,ap:12,dis:500,cd:1.5,speed:50,skills:[6007],
5203:{uuid:5203,name:"兽人护卫",path:"mor3", quality:HQuality.GREEN,lv:1,kind:1,
type:HType.remote,hp:20,ap:12,dis:200,cd:1.5,speed:50,skills:[6007],
buff:[
],info:"远程怪物-高伤害"},
5204:{uuid:5204,name:"石卫", path:"mgem1",quality:HQuality.BLUE,lv:1,kind:1,
type:HType.warrior,hp:25,ap:8,dis:300,cd:1.5,speed:45,skills:[6007],
5204:{uuid:5204,name:"石卫", path:"mgem1",quality:HQuality.GREEN,lv:1,kind:1,
type:HType.warrior,hp:25,ap:8,dis:200,cd:1.5,speed:45,skills:[6007],
buff:[
],info:"普通怪物-战士型"},
5205:{uuid:5205,name:"土卫", path:"mgem2",quality:HQuality.BLUE,lv:1,kind:1,
type:HType.warrior,hp:25,ap:8,dis:300,cd:1.5,speed:45,skills:[6007],
5205:{uuid:5205,name:"土卫", path:"mgem2",quality:HQuality.GREEN,lv:1,kind:1,
type:HType.warrior,hp:25,ap:8,dis:200,cd:1.5,speed:45,skills:[6007],
buff:[
],info:"普通怪物-战士型"},
5206:{uuid:5206,name:"树人", path:"mgem3",quality:HQuality.BLUE,lv:1,kind:1,
type:HType.warrior,hp:25,ap:8,dis:300,cd:1.5,speed:45,skills:[6007],
5206:{uuid:5206,name:"树人", path:"mgem3",quality:HQuality.GREEN,lv:1,kind:1,
type:HType.warrior,hp:25,ap:8,dis:200,cd:1.5,speed:45,skills:[6007],
buff:[
],info:"普通怪物-战士型"},
5216:{uuid:5216,name:"元素1", path:"my1", quality:HQuality.BLUE,lv:2,kind:1,
type:HType.mage,hp:18,ap:15,dis:600,cd:1.2,speed:40,skills:[6007],
5216:{uuid:5216,name:"元素1", path:"my1", quality:HQuality.GREEN,lv:2,kind:1,
type:HType.mage,hp:18,ap:15,dis:350,cd:1.2,speed:40,skills:[6007],
buff:[
],info:"法师怪物-高伤害脆弱"},
5217:{uuid:5217,name:"元素2", path:"my2", quality:HQuality.BLUE,lv:2,kind:1,
type:HType.mage,hp:18,ap:15,dis:600,cd:1.2,speed:40,skills:[6007],
5217:{uuid:5217,name:"元素2", path:"my2", quality:HQuality.GREEN,lv:2,kind:1,
type:HType.mage,hp:18,ap:15,dis:350,cd:1.2,speed:40,skills:[6007],
buff:[
],info:"法师怪物-高伤害脆弱"},
5218:{uuid:5218,name:"元素3", path:"my3", quality:HQuality.BLUE,lv:2,kind:1,
type:HType.mage,hp:18,ap:15,dis:600,cd:1.2,speed:40,skills:[6007],
5218:{uuid:5218,name:"元素3", path:"my3", quality:HQuality.GREEN,lv:2,kind:1,
type:HType.mage,hp:18,ap:15,dis:350,cd:1.2,speed:40,skills:[6007],
buff:[
],info:"法师怪物-高伤害脆弱"},
5219:{uuid:5219,name:"牛头战士",path:"mn1", quality:HQuality.BLUE,lv:2,kind:1,
type:HType.warrior,hp:25,ap:8,dis:300,cd:1.5,speed:45,skills:[6007],
5219:{uuid:5219,name:"牛头战士",path:"mn1", quality:HQuality.GREEN,lv:2,kind:1,
type:HType.warrior,hp:25,ap:8,dis:200,cd:1.5,speed:45,skills:[6007],
buff:[
],info:"普通怪物-战士型"},
5220:{uuid:5220,name:"牛头战士",path:"mn2", quality:HQuality.BLUE,lv:1,kind:1,
type:HType.remote,hp:20,ap:12,dis:500,cd:1.5,speed:50,skills:[6007],
5220:{uuid:5220,name:"牛头战士",path:"mn2", quality:HQuality.GREEN,lv:1,kind:1,
type:HType.remote,hp:20,ap:12,dis:200,cd:1.5,speed:50,skills:[6007],
buff:[
],info:"远程怪物-高伤害"},
5221:{uuid:5221,name:"牛头战士",path:"mn3", quality:HQuality.BLUE,lv:1,kind:1,
type:HType.warrior,hp:25,ap:8,dis:300,cd:1.5,speed:45,skills:[6007],
5221:{uuid:5221,name:"牛头战士",path:"mn3", quality:HQuality.GREEN,lv:1,kind:1,
type:HType.warrior,hp:25,ap:8,dis:200,cd:1.5,speed:45,skills:[6007],
buff:[
],info:"普通怪物-战士型"},
5222:{uuid:5222,name:"独眼巨人",path:"md1", quality:HQuality.BLUE,lv:1,kind:1,
type:HType.warrior,hp:25,ap:8,dis:300,cd:1.5,speed:45,skills:[6007],
5222:{uuid:5222,name:"独眼巨人",path:"md1", quality:HQuality.GREEN,lv:1,kind:1,
type:HType.warrior,hp:25,ap:8,dis:200,cd:1.5,speed:45,skills:[6007],
buff:[
],info:"普通怪物-战士型"},
5223:{uuid:5223,name:"独眼巨人",path:"md2", quality:HQuality.BLUE,lv:1,kind:1,
type:HType.warrior,hp:25,ap:8,dis:300,cd:1.5,speed:45,skills:[6007],
5223:{uuid:5223,name:"独眼巨人",path:"md2", quality:HQuality.GREEN,lv:1,kind:1,
type:HType.warrior,hp:25,ap:8,dis:200,cd:1.5,speed:45,skills:[6007],
buff:[
],info:"普通怪物-战士型"},
5224:{uuid:5224,name:"独眼巨人",path:"md3", quality:HQuality.BLUE,lv:1,kind:1,
type:HType.remote,hp:20,ap:12,dis:500,cd:1.5,speed:50,skills:[6007],
5224:{uuid:5224,name:"独眼巨人",path:"md3", quality:HQuality.GREEN,lv:1,kind:1,
type:HType.remote,hp:20,ap:12,dis:200,cd:1.5,speed:50,skills:[6007],
buff:[
],info:"远程怪物-高伤害"},
5225:{uuid:5225,name:"精英独眼",path:"md4", quality:HQuality.BLUE,lv:1,kind:1,
type:HType.mage,hp:18,ap:15,dis:600,cd:1.2,speed:40,skills:[6007],
type:HType.mage,hp:18,ap:15,dis:400,cd:1.2,speed:40,skills:[6007],
buff:[
],info:"法师怪物-高伤害脆弱"},
5226:{uuid:5226,name:"精英牛头",path:"mn4", quality:HQuality.BLUE,lv:1,kind:1,
type:HType.mage,hp:18,ap:15,dis:600,cd:1.2,speed:40,skills:[6007],
type:HType.mage,hp:18,ap:15,dis:400,cd:1.2,speed:40,skills:[6007],
buff:[
],info:"法师怪物-高伤害脆弱"},
5227:{uuid:5227,name:"精英兽人",path:"mor4", quality:HQuality.BLUE,lv:1,kind:1,
type:HType.mage,hp:18,ap:15,dis:600,cd:1.2,speed:40,skills:[6007],
type:HType.mage,hp:18,ap:15,dis:400,cd:1.2,speed:40,skills:[6007],
buff:[
],info:"法师怪物-高伤害脆弱"}

View File

@@ -4,7 +4,7 @@ import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/modu
import { smc } from "../common/SingletonModuleComp";
import { HeroModelComp } from "./HeroModelComp";
import { HeroViewComp } from "./HeroViewComp";
import { HeroInfo, HeroPos, HeroSet } from "../common/config/heroSet";
import { HeroInfo, HeroPos } from "../common/config/heroSet";
const { ccclass, property } = _decorator;

View File

@@ -11,8 +11,8 @@ import { oops } from "db://oops-framework/core/Oops";
import { GameEvent } from "../common/config/GameEvent";
import { FightConComp } from "../map/FightConComp";
import { EquipSpecialAttr } from "../common/config/Equips";
import { FightSet, TooltipTypes } from "../common/config/Mission";
import { getApIncrease, getHpIncrease, getUpExp, HeroPos } from "../common/config/heroSet";
import { FightSet, getExpDrops, getStoneDrops, TooltipTypes } from "../common/config/Mission";
import { getApIncrease, getHpIncrease, getUpExp, HeroInfo, HeroPos } from "../common/config/heroSet";
import { FriendModelComp } from "./FriendModel";
import { MasterModelComp } from "./MasterModel";
import { RandomManager } from "db://oops-framework/core/common/random/RandomManager";
@@ -339,16 +339,18 @@ export class HeroViewComp extends CCComp {
this.do_dead_trigger()
this.Friend_alive_cd=new Timer(this.FIGHTCON.friend_alive_cd)
console.log("[HeroViewComp]:角色死亡",this.hero_uuid)
if(this.is_kalami){
oops.message.dispatchEvent(GameEvent.EXPUP,{exp:50})
oops.message.dispatchEvent(GameEvent.SKILL_STONE_UP,10)
oops.message.dispatchEvent(GameEvent.EQUIP_STONE_UP,10)
}
if(this.is_boss){
oops.message.dispatchEvent(GameEvent.EXPUP,{exp:100})
if(this.fac==FacSet.MON){
let exp=getExpDrops(HeroInfo[this.hero_uuid].quality,this.lv)
let stone=getStoneDrops(HeroInfo[this.hero_uuid].quality,this.lv)
oops.message.dispatchEvent(GameEvent.EXPUP,{exp:exp})
if(stone.type=="equip"){
oops.message.dispatchEvent(GameEvent.EQUIP_STONE_UP,stone.count)
}else{
oops.message.dispatchEvent(GameEvent.SKILL_STONE_UP,stone.count)
}
}
if(this.is_master){
console.log("[HeroViewComp]:英雄死亡")
oops.message.dispatchEvent(GameEvent.FightEnd,{victory:false})

View File

@@ -1,5 +1,4 @@
import { _decorator, Component, Label, Node, resources, Sprite, SpriteAtlas } from 'cc';
import { HeroInfo } from '../common/config/heroSet';
import { SkillSet } from '../common/config/SkillSet';
import { oops } from '../../../../extensions/oops-plugin-framework/assets/core/Oops';
import { UIID } from '../common/config/GameUIConfig';

View File

@@ -2,7 +2,7 @@ import { _decorator, Animation, Label, resources, SpriteAtlas,Sprite } from "cc"
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp";
import { GameEvent } from "../common/config/GameEvent";
import { HeroInfo, HeroList } from "../common/config/heroSet";
import { HeroInfo} from "../common/config/heroSet";
import { RandomManager } from "db://oops-framework/core/common/random/RandomManager";
import { oops } from "db://oops-framework/core/Oops";
import { HeroModelComp } from "../hero/HeroModelComp";

View File

@@ -5,7 +5,7 @@ import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/O
import { UIID } from "../common/config/GameUIConfig";
import { Items } from "../common/config/Items";
import { SkillSet } from "../common/config/SkillSet";
import { HeroInfo, HeroSet } from "../common/config/heroSet";
import { HeroInfo } from "../common/config/heroSet";
import { Hero } from "../hero/Hero";
import { HChipComp } from "../hero/HChipComp";
import { ItemComp } from "./ItemComp";

View File

@@ -2,8 +2,6 @@ import { instantiate, Label, Prefab, resources, Sprite, SpriteAtlas } from "cc";
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops";
import { MSCardComp } from "./MSCardComp";
import { smc } from "../common/SingletonModuleComp";
import { HeroInfo } from "../common/config/heroSet";
import { SkillSet } from "../common/config/SkillSet";
/** MSCard 模块 */

View File

@@ -3,7 +3,7 @@ import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ec
import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp";
import { Monster } from "../hero/Mon";
import { BoxSet } from "../common/config/BoxSet";
import { HeroSet, MonSet } from "../common/config/heroSet";
import { MonSet } from "../common/config/heroSet";
import { FightSet, Missions, MonNum, WaveConfig, getInfiniteWaveConfig, getMonsterLevel } from "../common/config/Mission";
import { RandomManager } from "db://oops-framework/core/common/random/RandomManager";
import { Timer } from "db://oops-framework/core/common/timer/Timer";

View File

@@ -6,7 +6,6 @@ import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/O
import { GameEvent } from "../common/config/GameEvent";
import { AType, DTType, EType, RType, SkillSet, SType, TGroup } from "../common/config/SkillSet";
import { BoxSet, FacSet } from "../common/config/BoxSet";
import { HeroFac, HeroSet } from "../common/config/heroSet";
import { HeroViewComp } from "../hero/HeroViewComp";
import { BezierMove } from "../BezierMove/BezierMove";
import { FightConComp } from "../map/FightConComp";

View File

@@ -2,12 +2,12 @@ import { _decorator, Component, instantiate, Node, Prefab } from 'cc';
import { SkillCom } from './SkillCom';
import { ecs } from 'db://oops-framework/libs/ecs/ECS';
import { Hero } from '../hero/Hero';
import { BoxSet } from '../common/config/BoxSet';
import { BoxSet, FacSet } from '../common/config/BoxSet';
import { Monster } from '../hero/Mon';
import { HeroViewComp } from '../hero/HeroViewComp';
import { smc } from '../common/SingletonModuleComp';
import { HeroInfo } from '../common/config/heroSet';
import { oops } from 'db://oops-framework/core/Oops';
import { HeroInfo } from '../common/config/heroSet';
const { ccclass, property } = _decorator;
//这是召唤技能
@ccclass('ZhanCom')
@@ -23,12 +23,12 @@ export class ZhanCom extends Component {
var node = instantiate(prefab);
node.parent = this.node.parent;
node.setPosition(pos);
if(this.base.box_group==BoxSet.HERO) {
if(this.base.fac==FacSet.HERO) {
hero = ecs.getEntity<Hero>(Hero);
let scale = 1
hero.load(pos,scale,this.base.hero,true,this.base.lv);
hero.load(pos,scale,this.base.hero,true,HeroInfo[this.base.hero].lv);
}
if(this.base.box_group==BoxSet.MONSTER) {
if(this.base.fac==FacSet.MON) {
hero = ecs.getEntity<Monster>(Monster);
}
}