新武将活动:修改字段以及ur武将处理

This commit is contained in:
luying
2022-10-12 10:35:14 +08:00
parent eccd9f0051
commit 9f5771e923
16 changed files with 79 additions and 69 deletions
@@ -119,10 +119,9 @@ export class GachaHandler {
const roleId: string = session.get('roleId');
for (let { hid } of hope) {
let dicHero = gameData.hero.get(hid);
if (hid != 0) {
if (!dicHero) return resResult(STATUS.DIC_DATA_NOT_FOUND);
if (hid != 0 && dicHero.quality != HERO_QUALITY_TYPE.GOLD) {
let dicRecruit = gameData.recruit.get(hid);
if (!dicRecruit || !dicRecruit.canHope) {
return resResult(STATUS.GACHA_HOPE_NOT_GOLD);
}
}
@@ -274,8 +273,8 @@ export class GachaHandler {
let dicHero = gameData.hero.get(hid);
if (!dicHero) return resResult(STATUS.DIC_DATA_NOT_FOUND);
let index = gameData.recruit.findIndex(cur => cur.actorId == hid);
if (index == -1) return resResult(STATUS.GACHA_CAN_NOT_PICK);
let dicRecruit = gameData.recruit.get(hid);
if (!dicRecruit || !dicRecruit.canVisit) return resResult(STATUS.GACHA_CAN_NOT_PICK);
let { pieceId } = dicHero;
let gachaId = getNormalGachaId();
@@ -52,7 +52,7 @@ export class HeroHandler {
// 根据dic_hero 获得 1. 碎片id 2. 碎片数量 3. 初始武将星级 4. 初始品质
let dicHero = gameData.hero.get(hid);
if (!dicHero) return resResult(STATUS.DIC_DATA_NOT_FOUND);
let { pieceId, quality, pieceCount } = dicHero;
let { pieceId, pieceCount } = dicHero;
// 碎片数量是否足够
let costResult = await handleCost(roleId, sid, [{ id: pieceId, count: pieceCount }], ITEM_CHANGE_REASON.COMPOSE_HERO);
if (!costResult) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
@@ -587,7 +587,7 @@ export class HeroHandler {
let dicJob = getJobByGradeAndClass(dicHero.jobClass, 0);
let newSkins = initSkinTalent(skins);
let dicHeroScroll = getScollByStar(dicHero.quality, dicHero.initialStars, dicHero.quality, 0);
let dicHeroScroll = getScollByStar(dicHero.quality, dicHero.initialStar, dicHero.quality, dicHero.initialColorStar);
let initInfo = HeroModel.getInitInfo(hid, {
job: dicJob.jobid, skins: newSkins, skinId, ce,
scrollActive: scrollActive,
@@ -741,7 +741,7 @@ export class HeroHandler {
await RoleModel.updateRoleInfo(roleId, { jewelCount: 0 });
let heroInfos = [];
for(let { actorId } of gameData.recruit) {
for(let [actorId] of gameData.recruit) {
let dicHero = gameData.hero.get(actorId);
if(!dicHero) continue;
let { jobid, grade } = gameData.jobClassMaxGrades.get(dicHero.jobClass);
@@ -302,9 +302,9 @@ export class RoleHandler {
};
if (!scrollActive) { // 初次激活
update.scrollActive = true;
update.scrollStar = dicHero.initialStars;
update.scrollStar = dicHero.initialStar;
update.scrollQuality = dicHero.quality;
update.scrollColorStar = 0;
update.scrollColorStar = dicHero.initialColorStar;
} else {
if (star > scrollStar) { // 可以升星
update.scrollStar++;
@@ -483,7 +483,7 @@ export class GachaPull {
export function getAllHeroByQuality(quality: number) {
let allHero: number[] = [];
let allQuality: number[] = [];
for (let { actorId } of gameData.recruit) {
for (let [actorId] of gameData.recruit) {
let dicHero = gameData.hero.get(actorId);
if (dicHero.quality == quality) {
allHero.push(actorId);
@@ -27,6 +27,9 @@ import { refreshGacha } from './gachaService';
let userGacha: UserGachaType = await UserGachaModel.findByRole(roleId, playerData.gachaId, activityId);
let dicGacha = gameData.gacha.get(playerData.gachaId);
userGacha = await refreshGacha(dicGacha, userGacha);
if(!userGacha.pickHero) {
userGacha = await UserGachaModel.updateInfo(roleId, playerData.gachaId, activityId, { pickHero: playerData.getDefaultHero() })
}
playerData.setPlayerRecords(userGacha, dicGacha);
return playerData;
@@ -94,6 +97,15 @@ export async function challengeNewHeroGK(serverId: number, roleId: string, activ
*
*/
export async function newHeroGiftPoint(serverId: number, activityId: number, roleId: string, addPoint: number) {
let result = await ActivityNewHeroGiftModel.addPoint(serverId, activityId, roleId, addPoint);
return result.totalPoint;
let activityData = await getActivityById(activityId);
let createTime = await getRoleCreateTime(roleId);
let serverTime = await getServerCreateTime(serverId);
let playerData = new NewHeroGiftData(activityData, createTime, serverTime);
if(playerData.canRecordTaskPoint()) {
let result = await ActivityNewHeroGiftModel.addPoint(serverId, activityId, roleId, addPoint);
return result.totalPoint;
}
return 0
}
+2 -2
View File
@@ -621,8 +621,8 @@ export function getRandRobot(cnt = 1, withAttr = false) {
heroes.push(new ComRoleStatusHero({
hid: hero.actorId,
skinId: hero.actorId,
star: hero.star||dicHero.initialStars,
colorStar: 0,
star: hero.star? hero.star: dicHero.initialStar,
colorStar: hero.star? 0: dicHero.initialColorStar,
lv: hero.lv,
quality: dicHero.quality
}));
+1 -1
View File
@@ -1102,7 +1102,7 @@ export async function setRankRedisFromDb(type: string, args?: { serverId?: numbe
} else if (type == REDIS_KEY.HERO_RANK) {
let serverId = args.serverId;
for (let { actorId: hid } of gameData.recruit) {
for (let [hid] of gameData.recruit) {
let ranks = await HeroModel.getRank(hid, serverId, HERO_SELECT.RANK_LINEUP);
let r = new Rank(type, { serverId, hid });
r.setIsInit(true);