Merge branch 'second' of http://git.kingsome.cn/node/card_svr into second
This commit is contained in:
commit
cf31b56e3b
@ -46,7 +46,6 @@ export class Robot {
|
|||||||
addListeners() {
|
addListeners() {
|
||||||
let self = this;
|
let self = this;
|
||||||
this.room.onMessage("*", (type, data) => {
|
this.room.onMessage("*", (type, data) => {
|
||||||
debug("[ROBOT] received message:", type, "=>", data);
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'draw_card_s2c':
|
case 'draw_card_s2c':
|
||||||
// if (data.player == self.sessionId) {
|
// if (data.player == self.sessionId) {
|
||||||
@ -57,6 +56,7 @@ export class Robot {
|
|||||||
break;
|
break;
|
||||||
case 'eat_card_s2c':
|
case 'eat_card_s2c':
|
||||||
if (data.errcode == 0 && data.player == self.sessionId) {
|
if (data.errcode == 0 && data.player == self.sessionId) {
|
||||||
|
debug(`eat_success: ${self.sessionId}`);
|
||||||
self.selectPet();
|
self.selectPet();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -64,7 +64,7 @@ export class Robot {
|
|||||||
});
|
});
|
||||||
|
|
||||||
this.room.onLeave(function () {
|
this.room.onLeave(function () {
|
||||||
debug("[ROBOT] LEFT ROOM", arguments);
|
debug("LEFT ROOM", arguments);
|
||||||
self.room.removeAllListeners();
|
self.room.removeAllListeners();
|
||||||
self.room.leave();
|
self.room.leave();
|
||||||
});
|
});
|
||||||
@ -165,6 +165,7 @@ export class Robot {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let cardIds = cards.map(o => o.id);
|
let cardIds = cards.map(o => o.id);
|
||||||
|
log(`discard: ${self.sessionId} ${cardIds}`);
|
||||||
self.reply('discard_card_c2s', {
|
self.reply('discard_card_c2s', {
|
||||||
cards: cardIds
|
cards: cardIds
|
||||||
});
|
});
|
||||||
@ -200,7 +201,7 @@ export class Robot {
|
|||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
private eatCard(cardIds: number[], target: number) {
|
private eatCard(cardIds: number[], target: number) {
|
||||||
log(`${this.sessionId} 吃牌 ${cardIds} -> ${target}`);
|
log(`eta_card: ${this.sessionId} ${cardIds} -> ${target}`);
|
||||||
this.reply('eat_card_c2s', {
|
this.reply('eat_card_c2s', {
|
||||||
cards: cardIds,
|
cards: cardIds,
|
||||||
target
|
target
|
||||||
|
@ -100,7 +100,7 @@ export class RobotClient implements Client {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public send(messageOrType: any, messageOrOptions?: any | ISendOptions, options?: ISendOptions) {
|
public send(messageOrType: any, messageOrOptions?: any | ISendOptions, options?: ISendOptions) {
|
||||||
log(`receive server msg: ${messageOrType}, ${messageOrOptions}`);
|
// log(`receive server msg: ${messageOrType}, ${messageOrOptions}`);
|
||||||
let self = this;
|
let self = this;
|
||||||
if (!this.active) {
|
if (!this.active) {
|
||||||
return;
|
return;
|
||||||
@ -142,6 +142,7 @@ export class RobotClient implements Client {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let cardIds = cards.map(o => o.id);
|
let cardIds = cards.map(o => o.id);
|
||||||
|
log(`discard: ${self.sessionId} ${cardIds}`);
|
||||||
self.reply('discard_card_c2s', {
|
self.reply('discard_card_c2s', {
|
||||||
cards: cardIds
|
cards: cardIds
|
||||||
});
|
});
|
||||||
|
@ -113,6 +113,7 @@ Object.defineProperties(Room.prototype, {
|
|||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
let dstHp = player.hp + (hp | 0);
|
let dstHp = player.hp + (hp | 0);
|
||||||
|
debugRoom(`更新血量: ${player.id} ${player.hp} -> ${hp}`);
|
||||||
if (dstHp <= 0) {
|
if (dstHp <= 0) {
|
||||||
dstHp = 0;
|
dstHp = 0;
|
||||||
this.dispatcher.dispatch(new PlayDeadCommand(), {player: player});
|
this.dispatcher.dispatch(new PlayDeadCommand(), {player: player});
|
||||||
|
@ -20,7 +20,7 @@ export class BeginGameCommand extends Command<CardGameState, {}> {
|
|||||||
let cardAll = card0.concat(card1);
|
let cardAll = card0.concat(card1);
|
||||||
cardAll.randomSort();
|
cardAll.randomSort();
|
||||||
this.state.cardQueue = cardAll;
|
this.state.cardQueue = cardAll;
|
||||||
let i = 1;
|
let i = 0;
|
||||||
for (let [id] of this.state.players) {
|
for (let [id] of this.state.players) {
|
||||||
this.room.addCard(id, new GameEnv().playerInitNums[i++], 0);
|
this.room.addCard(id, new GameEnv().playerInitNums[i++], 0);
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ import {HeroCfg} from "../cfg/parsers/HeroCfg";
|
|||||||
import {EffectType} from "../cfg/enums/EffectType";
|
import {EffectType} from "../cfg/enums/EffectType";
|
||||||
import {CardType} from "../cfg/enums/CardType";
|
import {CardType} from "../cfg/enums/CardType";
|
||||||
import {GameEnv} from "../cfg/GameEnv";
|
import {GameEnv} from "../cfg/GameEnv";
|
||||||
|
import {error, robotLog} from "../common/Debug";
|
||||||
|
|
||||||
let assistantUtil = {
|
let assistantUtil = {
|
||||||
|
|
||||||
@ -151,28 +152,44 @@ let assistantUtil = {
|
|||||||
let result: Card;
|
let result: Card;
|
||||||
let effectMap: Map<number, EffectCardCfg> = global.$cfg.get(BaseConst.EFFECTCARD);
|
let effectMap: Map<number, EffectCardCfg> = global.$cfg.get(BaseConst.EFFECTCARD);
|
||||||
let spellCards: Card[] = [];
|
let spellCards: Card[] = [];
|
||||||
|
let petCards: Card[] = [];
|
||||||
|
|
||||||
// 优先取随从
|
// 优先取随从
|
||||||
let petCount = 1;
|
let petCount = 0;
|
||||||
for (let [,pet] of dstPlayer.pets) {
|
for (let [,pet] of dstPlayer.pets) {
|
||||||
if (pet.state == 1) petCount ++;
|
if (pet.state == 1 && !pet.isHero) petCount ++;
|
||||||
}
|
}
|
||||||
let noMorePet = petCount >= new GameEnv().maxPlayerPetCount;
|
let noMorePet = petCount >= new GameEnv().maxPlayerPetCount;
|
||||||
|
|
||||||
|
let noPet = Math.random2(0, 100) > 70;
|
||||||
|
|
||||||
for (let card of cards) {
|
for (let card of cards) {
|
||||||
let effect = effectMap.get(card.effect);
|
if (card.type == CardType.variable_unit) {
|
||||||
// if (effect.type_id == EffectType.unit && dstPlayer.unitCfgs.has(card.effect + '')) {
|
petCards.push(card);
|
||||||
if (effect.type_id == EffectType.unit && !noMorePet) {
|
} else if (card.type == CardType.general) {
|
||||||
result = card;
|
|
||||||
break;
|
|
||||||
} else if (effect.type_id == EffectType.skill) {
|
|
||||||
spellCards.push(card);
|
spellCards.push(card);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!result) {
|
if (!noMorePet && !noPet && petCards.length > 0) {
|
||||||
|
result = petCards.randomOne();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!result && spellCards.length > 0) {
|
||||||
result = spellCards.randomOne();
|
result = spellCards.randomOne();
|
||||||
}
|
}
|
||||||
|
let oldpos = -1;
|
||||||
|
if (!result && petCards.length > 0) {
|
||||||
|
result = petCards.randomOne();
|
||||||
|
if (noMorePet) {
|
||||||
|
oldpos = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!result) {
|
if (!result) {
|
||||||
|
error(`无法选择随从或法术, 随从数: ${petCount}, 法术牌数量: ${spellCards.length}`);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
robotLog(`select_pet ${dstPlayer.id}: ${result.effect} 类型: ${effectMap.get(result.effect).type_id == EffectType.skill ? '法术' : '随从'}`)
|
||||||
let targetType: SkillTargetType = CfgMan.getTargetByCard(result.effect);
|
let targetType: SkillTargetType = CfgMan.getTargetByCard(result.effect);
|
||||||
let targetPlayer;
|
let targetPlayer;
|
||||||
let targetPos;
|
let targetPos;
|
||||||
@ -224,7 +241,8 @@ let assistantUtil = {
|
|||||||
card: result.id,
|
card: result.id,
|
||||||
player: targetPlayer?.id,
|
player: targetPlayer?.id,
|
||||||
pos: targetPos,
|
pos: targetPos,
|
||||||
effCards
|
effCards,
|
||||||
|
oldpos
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user