diff --git a/assets/resources/game/skill/buff/gold.prefab b/assets/resources/game/skill/buff/gold.prefab new file mode 100644 index 00000000..3e157cfa --- /dev/null +++ b/assets/resources/game/skill/buff/gold.prefab @@ -0,0 +1,289 @@ +[ + { + "__type__": "cc.Prefab", + "_name": "gold", + "_objFlags": 0, + "__editorExtras__": {}, + "_native": "", + "data": { + "__id__": 1 + }, + "optimizationPolicy": 0, + "persistent": false + }, + { + "__type__": "cc.Node", + "_name": "gold", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": null, + "_children": [ + { + "__id__": 2 + } + ], + "_active": true, + "_components": [ + { + "__id__": 8 + }, + { + "__id__": 10 + }, + { + "__id__": 12 + } + ], + "_prefab": { + "__id__": 14 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": 6.112, + "y": 45.573, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 1, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "Node", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": { + "__id__": 1 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 3 + }, + { + "__id__": 5 + } + ], + "_prefab": { + "__id__": 7 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 1, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 2 + }, + "_enabled": true, + "__prefab": { + "__id__": 4 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 127, + "height": 127 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "ddhDbko4FLmKZGY46brX7z" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 2 + }, + "_enabled": true, + "__prefab": { + "__id__": 6 + }, + "_customMaterial": null, + "_srcBlendFactor": 2, + "_dstBlendFactor": 4, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_spriteFrame": null, + "_type": 0, + "_fillType": 0, + "_sizeMode": 1, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_useGrayscale": false, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "c3vPZUzCRINL3sICnCZKIr" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "feOW1uSctLKYCw3esMiuox", + "instance": null, + "targetOverrides": null, + "nestedPrefabInstanceRoots": null + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 1 + }, + "_enabled": true, + "__prefab": { + "__id__": 9 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 104, + "height": 75 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "a7pn5tzA1BSI1AfdpVsHh7" + }, + { + "__type__": "cc.Animation", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 1 + }, + "_enabled": true, + "__prefab": { + "__id__": 11 + }, + "playOnLoad": true, + "_clips": [ + { + "__uuid__": "a2e59563-ef5b-4535-a9b3-1b19c5253489", + "__expectedType__": "cc.AnimationClip" + } + ], + "_defaultClip": { + "__uuid__": "a2e59563-ef5b-4535-a9b3-1b19c5253489", + "__expectedType__": "cc.AnimationClip" + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "63z5ZyjTNKYbn+kEVB1s3W" + }, + { + "__type__": "0f3c4JhFbFO2rEFqBJJ7hFv", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 1 + }, + "_enabled": true, + "__prefab": { + "__id__": 13 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "32SLcINL1JHZ+vIyextzaC" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "cfqCWnxbFLNoQMedQXsav3", + "instance": null, + "targetOverrides": null + } +] \ No newline at end of file diff --git a/assets/resources/game/skill/buff/gold.prefab.meta b/assets/resources/game/skill/buff/gold.prefab.meta new file mode 100644 index 00000000..2eee120f --- /dev/null +++ b/assets/resources/game/skill/buff/gold.prefab.meta @@ -0,0 +1 @@ +{"ver":"1.1.50","importer":"prefab","imported":true,"uuid":"e8d41546-4291-4505-8d72-fec141f76309","files":[".json"],"subMetas":{},"userData":{"syncNodeName":"gold"}} diff --git a/assets/script/game/common/config/SkillSet.ts b/assets/script/game/common/config/SkillSet.ts index dc29872c..20748b7a 100644 --- a/assets/script/game/common/config/SkillSet.ts +++ b/assets/script/game/common/config/SkillSet.ts @@ -24,7 +24,8 @@ export enum SkillKind { Damage = 0, Heal = 1, Shield = 2, - Support = 3 + Support = 3, + Gold = 4 } @@ -133,6 +134,7 @@ export interface SkillConfig { act:string, // 角色执行的动画 DTType:DTType, // 伤害类型(单体/范围) ap:number, // 伤害/治疗技能为攻击百分比,护盾技能为免疫次数 + gold?:number, // 获取金币技能的金币值 hit_count:number, // 可命中次数 hitcd:number, // 持续伤害的伤害间隔(秒) speed:number, // 移动速度 @@ -161,6 +163,7 @@ export interface SkillConfig { export interface SkillOverrides { TGroup?: TGroup; ap?: number; + gold?: number; hit_count?: number; hitcd?: number; crt?: number; @@ -296,6 +299,11 @@ export const SkillSet: Record = { DTType:DTType.single,kind:SkillKind.Heal,ap:300,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.support, RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"治疗伙伴/自己", }, + 6303: { + uuid:6303,name:"获取金币",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Self,readyAnm:"up_blue",endAnm:"gold",act:"atk", + DTType:DTType.single,kind:SkillKind.Gold,ap:0,gold:10,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.support, + RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"增加一定数量的金币", + }, //==========================buff 技能===================== 6401:{ uuid:6401,name:"攻击强化",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"up_ap",endAnm:"",act:"atk", @@ -307,11 +315,6 @@ export const SkillSet: Record = { DTType:DTType.single,kind:SkillKind.Support,ap:0,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.support, RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.hp_max,value:20}],info:"全体友方最大生命值提升20点,持续1次", }, - 6403:{ - uuid:6403,name:"超能强化",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"up_hp",endAnm:"",act:"atk", - DTType:DTType.single,kind:SkillKind.Support,ap:0,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.support, - RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.ap,value:5},{buff:Attrs.hp_max,value:20}],info:"全体友方攻击力提升5点,最大生命值提升20点,持续1次", - }, 6501:{ uuid:6501,name:"复活",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Self,readyAnm:"up_ap",endAnm:"",act:"atk", DTType:DTType.single,kind:SkillKind.Support,ap:50,hit_count:3,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.support, diff --git a/assets/script/game/hero/SCastSystem.ts b/assets/script/game/hero/SCastSystem.ts index 4229f4b1..3c1117b5 100644 --- a/assets/script/game/hero/SCastSystem.ts +++ b/assets/script/game/hero/SCastSystem.ts @@ -11,6 +11,7 @@ import { BoxSet, FacSet, FightSet } from "../common/config/GameSet"; import { oops } from "db://oops-framework/core/Oops"; import { GameEvent, SkillTriggerType } from "../common/config/GameEvent"; import { SkillTriggerHelper } from "./SkillTriggerHelper"; +import { MissionEconomy } from "../map/MissionEconomy"; /** * ==================== 自动施法系统 ==================== @@ -421,6 +422,11 @@ export class SCastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate if (!target.ent) return; const model = target.ent.get(HeroAttrsComp); if (!model || model.is_dead) return; + + if (config.endAnm && config.endAnm !== "") { + target.playEnd(config.endAnm); + } + if (kind === SkillKind.Heal && sAp !== 0) { const addHp = Math.floor(sAp*_cAttrsComp.ap/100); model.add_hp(addHp); @@ -432,6 +438,12 @@ export class SCastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate } else if (kind === SkillKind.Shield && sAp !== 0) { const addShield = Math.max(0, Math.floor(sAp)); model.add_shield(addShield); + } else if (kind === SkillKind.Gold) { + const baseGold = config.gold ?? config.ap; + const addGold = baseGold + (sUp.ap); + if (addGold > 0) { + MissionEconomy.addCoin(addGold); + } } if (!config.buffs || config.buffs.length === 0) return; for (const buffConf of config.buffs) {