970 lines
29 KiB
TypeScript
970 lines
29 KiB
TypeScript
import BattleRole from "../battle/BattleRole"
|
||
import GameUtil from "../core/GameUtil"
|
||
import SKDataUtil from "../gear/SKDataUtil"
|
||
import { EMagicType, ESkillType } from "../role/EEnum"
|
||
import SkillUtil from "../skill/core/SkillUtil"
|
||
import GTimer from "../common/GTimer";
|
||
|
||
class Attr {
|
||
name = "" //姓名
|
||
sex = 0 // 性别 0女 1男
|
||
battle = false //是否参战
|
||
|
||
qualitites = 0 //气质
|
||
fame = 0 //名气
|
||
endurance = 0 //耐力
|
||
moral = 0 //道德
|
||
intelligence = 0 //智力
|
||
rebel = 0 //叛逆
|
||
internalForce = 0 //内力
|
||
|
||
bosom = 0 //亲密
|
||
filial = 0 // 孝心
|
||
foodFull = 0 //温饱
|
||
busy = 0 //疲劳值
|
||
}
|
||
|
||
class Skill {
|
||
name: string
|
||
desp: string
|
||
grade: string
|
||
class: string
|
||
type: string
|
||
mod: string
|
||
id: number
|
||
level: number
|
||
pos: number //处于命盘中的位置 1-13 1-6:纯阳 7-12: 太阴 13:合体 0表示未占据位置
|
||
}
|
||
|
||
|
||
export default class Baby {
|
||
ID = 0 //todo:宝宝唯一识别ID
|
||
RoundSkill: Skill
|
||
|
||
BattleSkillList: number[] = [] //天地人 012
|
||
PannelSkillList: number[] = [] //命盘技能
|
||
BlessSkillList: Skill[] = [] //已经许愿的技能库, 只在许愿中保持技能副本,其它一律使用技能ID
|
||
Attr = new Attr()
|
||
CareTimeList:any = {}
|
||
|
||
UpdateData(data: any) {
|
||
this.Attr = data.attr
|
||
this.BattleSkillList = data.battleSkillList
|
||
this.PannelSkillList = data.pannelSkillList
|
||
this.BlessSkillList = data.blessSkillList
|
||
this.ID = data.id
|
||
this.CareTimeList = data.careTimeList || {}
|
||
}
|
||
|
||
GetObject(): any {
|
||
return {
|
||
id: this.ID,
|
||
attr: this.Attr,
|
||
battleSkillList: this.BattleSkillList,
|
||
pannelSkillList: this.PannelSkillList,
|
||
blessSkillList: this.BlessSkillList,
|
||
careTimeList: this.CareTimeList,
|
||
}
|
||
}
|
||
|
||
GetSkillByID(id: number): Skill {
|
||
for (let index = 0; index < this.BlessSkillList.length; index++) {
|
||
let skill = this.BlessSkillList[index];
|
||
if (skill.id == id) {
|
||
return skill
|
||
}
|
||
}
|
||
return null;
|
||
}
|
||
|
||
RemoveSkillByID(id: number) {
|
||
for (let index = 0; index < this.BlessSkillList.length; index++) {
|
||
let skill = this.BlessSkillList[index];
|
||
if (skill.id == id) {
|
||
this.BlessSkillList.splice(index, 1)
|
||
return
|
||
}
|
||
}
|
||
}
|
||
|
||
GetTypeCount(type: string): number {
|
||
let cnt = 0
|
||
for (let index = 0; index < this.PannelSkillList.length; index++) {
|
||
let id = this.PannelSkillList[index]
|
||
let skill = this.GetSkillByID(id);
|
||
if (skill && skill.type == type) {
|
||
cnt++
|
||
}
|
||
}
|
||
return cnt
|
||
}
|
||
|
||
ToJson(): string {
|
||
let obj = this.GetObject()
|
||
return SKDataUtil.toJson(obj, "{}")
|
||
}
|
||
|
||
GetPos(skill: Skill) {
|
||
let unUsePosList = []
|
||
for (let index = 1; index <= 13; index++) {
|
||
let use = false
|
||
for (let i = 0; i < this.PannelSkillList.length; i++) {
|
||
let id = this.PannelSkillList[i]
|
||
let _skill = this.GetSkillByID(id);
|
||
if (_skill.pos == index) {
|
||
use = true
|
||
}
|
||
}
|
||
if (!use) {
|
||
unUsePosList.push(index)
|
||
}
|
||
}
|
||
|
||
if (unUsePosList.length == 0) {
|
||
//顶替
|
||
if (skill.type == "纯阳") {
|
||
return SKDataUtil.random(1, 6)
|
||
}
|
||
|
||
if (skill.type == "太阴") {
|
||
return SKDataUtil.random(7, 12)
|
||
}
|
||
return 13
|
||
} else {
|
||
let unuse_yang = []
|
||
let unuse_ying = []
|
||
let unuse_ht = []
|
||
for (let index = 0; index < unUsePosList.length; index++) {
|
||
if (unUsePosList[index] <= 6) {
|
||
unuse_yang.push(unUsePosList[index])
|
||
continue
|
||
}
|
||
|
||
if (unUsePosList[index] <= 12) {
|
||
unuse_ying.push(unUsePosList[index])
|
||
continue
|
||
}
|
||
unuse_ht.push(unUsePosList[index])
|
||
}
|
||
|
||
if (skill.type == "纯阳") {
|
||
return unuse_yang[0]
|
||
}
|
||
|
||
if (skill.type == "太阴") {
|
||
return unuse_ying[0]
|
||
}
|
||
|
||
return unuse_ht[0]
|
||
}
|
||
}
|
||
|
||
AttachSkillPannnel(skill: Skill) {
|
||
for (let index = 0; index < this.PannelSkillList.length; index++) {
|
||
let id = this.PannelSkillList[index]
|
||
let _skill = this.GetSkillByID(id);
|
||
if (skill.pos == _skill.pos) {
|
||
_skill.pos = 0
|
||
this.PannelSkillList.splice(index, 1)
|
||
break
|
||
}
|
||
}
|
||
|
||
this.RemoveSkillByID(skill.id)
|
||
this.BlessSkillList.push(skill)
|
||
this.PannelSkillList.push(skill.id)
|
||
}
|
||
|
||
//许愿
|
||
Bless(): Skill {
|
||
let data = GameUtil.require_ex("../../conf/prop_data/prop_baby_skill.json")
|
||
let skill_list = []
|
||
for (const key in data) {
|
||
if (Object.prototype.hasOwnProperty.call(data, key)) {
|
||
let origin_skill = data[key]
|
||
let skill = this.GetSkillByID(origin_skill.id)
|
||
if (skill == null) {
|
||
skill = new Skill()
|
||
skill.name = origin_skill.name
|
||
skill.desp = origin_skill.desp
|
||
skill.grade = origin_skill.grade
|
||
skill.class = origin_skill.class
|
||
skill.type = origin_skill.type
|
||
skill.mod = origin_skill.mod
|
||
skill.id = origin_skill.id
|
||
skill.level = 1
|
||
skill.pos = 0
|
||
}
|
||
|
||
if (skill.pos != 0) {
|
||
continue
|
||
}
|
||
skill_list.push(skill)
|
||
}
|
||
}
|
||
|
||
let yang_list = []
|
||
let yin_list = []
|
||
let ht_list = []
|
||
for (let index = 0; index < skill_list.length; index++) {
|
||
let skill = skill_list[index];
|
||
if (skill.type == "纯阳") {
|
||
yang_list.push(skill)
|
||
}
|
||
|
||
if (skill.type == "太阴") {
|
||
yin_list.push(skill)
|
||
}
|
||
|
||
if (skill.type == "合体") {
|
||
ht_list.push(skill)
|
||
}
|
||
}
|
||
|
||
let yangCnt = this.GetTypeCount("纯阳")
|
||
let yinCnt = this.GetTypeCount("太阴")
|
||
let htCnt = this.GetTypeCount("合体")
|
||
|
||
let random_list = []
|
||
if (yangCnt < 6) {
|
||
random_list.push(...yang_list)
|
||
}
|
||
|
||
if (yinCnt < 6) {
|
||
random_list.push(...yin_list)
|
||
}
|
||
|
||
if (htCnt < 1) {
|
||
random_list.push(...ht_list)
|
||
}
|
||
|
||
if (random_list.length == 0) {
|
||
random_list = skill_list
|
||
}
|
||
|
||
let skill = random_list[SKDataUtil.random(0, random_list.length - 1)]
|
||
skill.pos = this.GetPos(skill)
|
||
this.AttachSkillPannnel(skill)
|
||
|
||
return skill
|
||
}
|
||
|
||
Upgrade(id: number): number {
|
||
let skill = this.GetSkillByID(id)
|
||
if (skill == null) {
|
||
//该技能未许愿
|
||
return 2
|
||
}
|
||
if (skill.level >= 100) {
|
||
return 3
|
||
}
|
||
|
||
skill.level++
|
||
return 0
|
||
}
|
||
|
||
SkillBattle(id: number): Skill {
|
||
let skill = this.GetSkillByID(id)
|
||
if (skill == null) {
|
||
//该技能未许愿
|
||
return null
|
||
}
|
||
|
||
for (let index = 0; index < this.BattleSkillList.length; index++) {
|
||
let battle_id = this.BattleSkillList[index];
|
||
let battle_skill = this.GetSkillByID(battle_id)
|
||
if (skill.type == battle_skill.type) {
|
||
this.BattleSkillList.splice(index, 1)
|
||
break
|
||
}
|
||
}
|
||
this.BattleSkillList.push(skill.id)
|
||
return skill
|
||
}
|
||
|
||
EatCandy(): boolean {
|
||
if (this.Attr.bosom >= 1200 && this.Attr.filial >= 1200) {
|
||
return false
|
||
}
|
||
|
||
let addType = 0
|
||
if (this.Attr.bosom >= 1200) {
|
||
addType = 1
|
||
}
|
||
if (this.Attr.filial >= 1200) {
|
||
addType = 2
|
||
}
|
||
|
||
if (addType == 0) {
|
||
addType = 1
|
||
let rand = SKDataUtil.random(0, 100)
|
||
if (rand > 50) {
|
||
addType = 2
|
||
}
|
||
}
|
||
|
||
if (addType == 1) {
|
||
this.Attr.filial += 5
|
||
if (this.Attr.filial > 1200) {
|
||
this.Attr.filial = 1200
|
||
}
|
||
}
|
||
|
||
if (addType == 2) {
|
||
this.Attr.bosom += 5
|
||
if (this.Attr.bosom > 1200) {
|
||
this.Attr.bosom = 1200
|
||
}
|
||
}
|
||
|
||
return true
|
||
}
|
||
|
||
ReadingBook(): boolean {
|
||
if (this.Attr.rebel <= 0) {
|
||
return false
|
||
}
|
||
|
||
this.Attr.rebel -= 10
|
||
if (this.Attr.rebel <= 0) {
|
||
this.Attr.rebel = 0
|
||
}
|
||
return true
|
||
}
|
||
|
||
//培养
|
||
Practice(type: number, index: number): number {
|
||
let now = GTimer.getYearMonthDay()
|
||
let key = (type * 10 + index).toString()
|
||
if(Object.prototype.hasOwnProperty.call(this.CareTimeList, key)){
|
||
let caretime = this.CareTimeList[key]
|
||
if (now == caretime) {
|
||
return 4
|
||
}
|
||
}
|
||
this.CareTimeList[key] = now
|
||
|
||
if (type != 2 && this.Attr.busy >= 700) {
|
||
return 2
|
||
}
|
||
|
||
let config = GameUtil.require_ex("../../conf/prop_data/prop_baby_practice.json")
|
||
let data = null
|
||
|
||
if (type == 0) {
|
||
data = config["Learning"]
|
||
}
|
||
|
||
if (type == 1) {
|
||
data = config["Practice"]
|
||
}
|
||
|
||
if (type == 2) {
|
||
data = config["Enjoy"]
|
||
}
|
||
|
||
if (data == null) {
|
||
return 1
|
||
}
|
||
|
||
if (index < 0 || index >= data.length) {
|
||
return 1
|
||
}
|
||
|
||
let attr = data[index]
|
||
if (Object.prototype.hasOwnProperty.call(attr, "qizhi")) {
|
||
if (this.Attr.qualitites >= 1200) {
|
||
return 3
|
||
}
|
||
this.Attr.qualitites += attr["qizhi"]
|
||
if (this.Attr.qualitites < 0) {
|
||
this.Attr.qualitites = 0
|
||
}
|
||
if (this.Attr.endurance > 1200) {
|
||
this.Attr.endurance = 1200
|
||
}
|
||
}
|
||
if (Object.prototype.hasOwnProperty.call(attr, "naili")) {
|
||
if (this.Attr.endurance >= 1200) {
|
||
return 3
|
||
}
|
||
this.Attr.endurance += attr["naili"]
|
||
if (this.Attr.endurance < 0) {
|
||
this.Attr.endurance = 0
|
||
}
|
||
|
||
if (this.Attr.endurance > 1200) {
|
||
this.Attr.endurance = 1200
|
||
}
|
||
}
|
||
if (Object.prototype.hasOwnProperty.call(attr, "neili")) {
|
||
if (this.Attr.internalForce >= 1200) {
|
||
return 3
|
||
}
|
||
this.Attr.internalForce += attr["neili"]
|
||
if (this.Attr.internalForce < 0) {
|
||
this.Attr.internalForce = 0
|
||
}
|
||
if (this.Attr.endurance > 1200) {
|
||
this.Attr.endurance = 1200
|
||
}
|
||
}
|
||
if (Object.prototype.hasOwnProperty.call(attr, "zhili")) {
|
||
if (this.Attr.intelligence >= 1200) {
|
||
return 3
|
||
}
|
||
this.Attr.intelligence += attr["zhili"]
|
||
if (this.Attr.intelligence < 0) {
|
||
this.Attr.intelligence = 0
|
||
}
|
||
if (this.Attr.endurance > 1200) {
|
||
this.Attr.endurance = 1200
|
||
}
|
||
}
|
||
|
||
if (Object.prototype.hasOwnProperty.call(attr, "mingqi")) {
|
||
if (this.Attr.fame >= 1200) {
|
||
return 3
|
||
}
|
||
this.Attr.fame += attr["mingqi"]
|
||
if (this.Attr.fame < 0) {
|
||
this.Attr.fame = 0
|
||
}
|
||
if (this.Attr.endurance > 1200) {
|
||
this.Attr.endurance = 1200
|
||
}
|
||
}
|
||
|
||
if (Object.prototype.hasOwnProperty.call(attr, "daode")) {
|
||
if (this.Attr.moral >= 1200) {
|
||
return 3
|
||
}
|
||
this.Attr.moral += attr["daode"]
|
||
if (this.Attr.moral < 0) {
|
||
this.Attr.moral = 0
|
||
}
|
||
if (this.Attr.endurance > 1200) {
|
||
this.Attr.endurance = 1200
|
||
}
|
||
}
|
||
|
||
if (Object.prototype.hasOwnProperty.call(attr, "pani")) {
|
||
if (this.Attr.rebel >= 1200) {
|
||
return 3
|
||
}
|
||
this.Attr.rebel += attr["pani"]
|
||
if (this.Attr.rebel < 0) {
|
||
this.Attr.rebel = 0
|
||
}
|
||
if (this.Attr.rebel > 1200) {
|
||
this.Attr.rebel = 1200
|
||
}
|
||
}
|
||
|
||
if (Object.prototype.hasOwnProperty.call(attr, "pilao")) {
|
||
if (this.Attr.busy == 0 && attr["pilao"] < 0) {
|
||
return 3
|
||
}
|
||
this.Attr.busy += attr["pilao"]
|
||
if (this.Attr.busy < 0) {
|
||
this.Attr.busy = 0
|
||
}
|
||
|
||
if (this.Attr.busy > 700) {
|
||
this.Attr.busy = 700
|
||
}
|
||
}
|
||
return 0
|
||
}
|
||
|
||
|
||
|
||
/////////战斗功能
|
||
//清空当前技能
|
||
ResetSkill() {
|
||
this.RoundSkill = null
|
||
}
|
||
|
||
HasPlaySkill(): boolean {
|
||
return this.RoundSkill != null
|
||
}
|
||
|
||
GetPlaySkillName(): string {
|
||
if (this.RoundSkill == null) return ""
|
||
return this.RoundSkill.name
|
||
}
|
||
|
||
//0-未释放技能 1 进攻性被动 2 防御型被动
|
||
GetPlaySkillType(): number {
|
||
if (this.RoundSkill == null) return 0
|
||
|
||
if (this.RoundSkill.id >= 35500 &&
|
||
this.RoundSkill.id <= 35513) {
|
||
return 2
|
||
}
|
||
|
||
if (this.RoundSkill.id >= 35514 &&
|
||
this.RoundSkill.id <= 35537) {
|
||
return 1
|
||
}
|
||
|
||
if (this.RoundSkill.id == 35538 ||
|
||
this.RoundSkill.id == 35539 ||
|
||
this.RoundSkill.id == 35542) {
|
||
return 2
|
||
}
|
||
if (this.RoundSkill.id == 35540 ||
|
||
this.RoundSkill.id == 35541) {
|
||
return 1
|
||
}
|
||
return 0
|
||
}
|
||
|
||
HasAttrLessDst(dst: number): boolean {
|
||
if (this.Attr.qualitites < dst) {
|
||
return true
|
||
}
|
||
if (this.Attr.fame < dst) {
|
||
return true
|
||
}
|
||
if (this.Attr.moral < dst) {
|
||
return true
|
||
}
|
||
if (this.Attr.intelligence < dst) {
|
||
return true
|
||
}
|
||
if (this.Attr.internalForce < dst) {
|
||
return true
|
||
}
|
||
if (this.Attr.bosom < dst) {
|
||
return true
|
||
}
|
||
if (this.Attr.filial < dst) {
|
||
return true
|
||
}
|
||
return false
|
||
}
|
||
|
||
//计算技能触发几率
|
||
GetScore(): number {
|
||
if (this.HasAttrLessDst(300)) {
|
||
return 0
|
||
}
|
||
if (this.HasAttrLessDst(600)) {
|
||
return 3000
|
||
}
|
||
if (this.HasAttrLessDst(900)) {
|
||
return 4000
|
||
}
|
||
return 5000
|
||
}
|
||
|
||
GetSkillBuff(skillid: number): number {
|
||
let skill = this.GetSkillByID(skillid)
|
||
if (skill == null) return 0
|
||
|
||
let buffer = 0
|
||
let level = skill.level
|
||
if (level > 100) {
|
||
level = 100
|
||
let score = this.GetScore()
|
||
|
||
if (score == 0) {
|
||
buffer = 0.05
|
||
}
|
||
|
||
if (score == 3000) {
|
||
buffer = 0.1
|
||
}
|
||
|
||
if (score == 4000) {
|
||
buffer = 0.15
|
||
}
|
||
buffer = 0.2
|
||
}
|
||
|
||
buffer += level * 0.6 / 100
|
||
|
||
return buffer
|
||
}
|
||
|
||
GetSkillDefence(skillid: number): number {
|
||
let skill = this.GetSkillByID(skillid)
|
||
if (skill == null) return 0
|
||
|
||
let base = 500
|
||
if (skill.grade == "超凡") {
|
||
base = 1000
|
||
}
|
||
|
||
let level = skill.level
|
||
if (level > 100) {
|
||
level = 100
|
||
}
|
||
|
||
return base * level
|
||
}
|
||
|
||
IsTriggerSkill(skillid: number): boolean {
|
||
let rand = this.GetSkillBuff(skillid)
|
||
if (Math.random() <= rand) {
|
||
return true
|
||
}
|
||
return false
|
||
}
|
||
|
||
|
||
IsAddTarget(skillId: number, role: BattleRole): boolean {
|
||
if (this.RoundSkill != null) return false
|
||
if (this.BattleSkillList.length == 0) return false
|
||
|
||
for (let index = 0; index < this.BattleSkillList.length; index++) {
|
||
let _skillid = this.BattleSkillList[index];
|
||
if (_skillid == 35514 &&
|
||
skillId == ESkillType.ZhenTianDongDi &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
if (_skillid == 35515 &&
|
||
skillId == ESkillType.CangHaiHengLiu &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
if (_skillid == 35516 &&
|
||
skillId == ESkillType.ZeBeiWanWu &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
if (_skillid == 35517 &&
|
||
skillId == ESkillType.FeiJvJiuTian &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
if (_skillid == 35518 &&
|
||
skillId == ESkillType.SiMianChuGe &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
if (_skillid == 35519 &&
|
||
skillId == ESkillType.ShiXinKuangLuan &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
if (_skillid == 35520 &&
|
||
skillId == ESkillType.WanDuGongXin &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
if (_skillid == 35521 &&
|
||
skillId == ESkillType.BaiRiMian &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
|
||
if (_skillid == 35522 &&
|
||
skillId == ESkillType.YanLuoZhuiMing &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
if (_skillid == 35523 &&
|
||
skillId == ESkillType.QianKunJieSu &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
if (_skillid == 35524 &&
|
||
skillId == ESkillType.HanQingMoMo &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
if (_skillid == 35525 &&
|
||
skillId == ESkillType.MoShenFuShen &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
if (_skillid == 35526 &&
|
||
skillId == ESkillType.TianZhuDiMie &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
if (_skillid == 35527 &&
|
||
skillId == ESkillType.XiuLiQianKun &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
if (_skillid == 35528 &&
|
||
skillId == ESkillType.JiuYinChunHuo &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
if (_skillid == 35529 &&
|
||
skillId == ESkillType.JiuLongBingFeng &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
if (_skillid == 35530 &&
|
||
skillId == ESkillType.XueHaiShenChou &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
if (_skillid == 35531 &&
|
||
skillId == ESkillType.XiXingDaFa &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
if (_skillid == 35532 &&
|
||
skillId == ESkillType.QianNvYouHun &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
if (_skillid == 35533 &&
|
||
skillId == ESkillType.MengPoTang &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
|
||
//test
|
||
// if (_skillid == 35527 &&
|
||
// skillId == ESkillType.XiuLiQianKun) {
|
||
// this.RoundSkill = this.GetSkillByID(_skillid)
|
||
// return true
|
||
// }
|
||
}
|
||
return false
|
||
}
|
||
|
||
IsHitTwice(skillId: number, role: BattleRole): boolean {
|
||
if (this.RoundSkill != null) return false
|
||
if (this.BattleSkillList.length == 0) return false
|
||
|
||
for (let index = 0; index < this.BattleSkillList.length; index++) {
|
||
let _skillid = this.BattleSkillList[index];
|
||
if (_skillid == 35534 &&
|
||
skillId == ESkillType.YanLuoZhuiMing &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
if (_skillid == 35535 &&
|
||
skillId == ESkillType.FeiJvJiuTian &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
if (_skillid == 35536 &&
|
||
skillId == ESkillType.ZhenTianDongDi &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
if (_skillid == 35537 &&
|
||
skillId == ESkillType.CangHaiHengLiu &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
}
|
||
return false
|
||
}
|
||
|
||
Defence(skillId: number, role: BattleRole): number {
|
||
if (this.RoundSkill != null) return 0
|
||
if (this.BattleSkillList.length == 0) return 0
|
||
|
||
let skill = SkillUtil.getSkill(skillId)
|
||
if (skill == null) return 0
|
||
|
||
for (let index = 0; index < this.BattleSkillList.length; index++) {
|
||
let _skillid = this.BattleSkillList[index];
|
||
|
||
if (_skillid == 35500 &&
|
||
skill.skill_type == EMagicType.GHOST_FIRE &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return this.GetSkillDefence(_skillid)
|
||
}
|
||
|
||
if (_skillid == 35501 &&
|
||
skill.skill_type == EMagicType.WATER &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return this.GetSkillDefence(_skillid)
|
||
}
|
||
if (_skillid == 35502 &&
|
||
skill.skill_type == EMagicType.THREE_CORPSE &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return this.GetSkillDefence(_skillid)
|
||
}
|
||
if (_skillid == 35503 &&
|
||
skill.skill_type == EMagicType.THUNDER &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return this.GetSkillDefence(_skillid)
|
||
}
|
||
if (_skillid == 35504 &&
|
||
skill.skill_type == EMagicType.FIRE &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return this.GetSkillDefence(_skillid)
|
||
}
|
||
if (_skillid == 35505 &&
|
||
skill.skill_type == EMagicType.TOXIN &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return this.GetSkillDefence(_skillid)
|
||
}
|
||
if (_skillid == 35506 &&
|
||
skill.skill_type == EMagicType.WIND &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return this.GetSkillDefence(_skillid)
|
||
}
|
||
if (_skillid == 35507 &&
|
||
skill.skill_type == EMagicType.WIND &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return this.GetSkillDefence(_skillid)
|
||
}
|
||
if (_skillid == 35508 &&
|
||
skill.skill_type == EMagicType.WATER &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return this.GetSkillDefence(_skillid)
|
||
}
|
||
if (_skillid == 35509 &&
|
||
skill.skill_type == EMagicType.THUNDER &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return this.GetSkillDefence(_skillid)
|
||
}
|
||
if (_skillid == 35510 &&
|
||
skill.skill_type == EMagicType.THREE_CORPSE &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return this.GetSkillDefence(_skillid)
|
||
}
|
||
if (_skillid == 35511 &&
|
||
skill.skill_type == EMagicType.GHOST_FIRE &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return this.GetSkillDefence(_skillid)
|
||
}
|
||
if (_skillid == 35512 &&
|
||
skill.skill_type == EMagicType.TOXIN &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return this.GetSkillDefence(_skillid)
|
||
}
|
||
if (_skillid == 35513 &&
|
||
skill.skill_type == EMagicType.FIRE &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return this.GetSkillDefence(_skillid)
|
||
}
|
||
}
|
||
return 0
|
||
}
|
||
|
||
|
||
IsTriggerJinGang(): boolean {
|
||
if (this.RoundSkill != null) return false
|
||
if (this.BattleSkillList.length == 0) return false
|
||
|
||
for (let index = 0; index < this.BattleSkillList.length; index++) {
|
||
let _skillid = this.BattleSkillList[index];
|
||
if (_skillid == 35538 &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
}
|
||
|
||
return false
|
||
}
|
||
|
||
IsTriggerLongShen(skillid: number): boolean {
|
||
if (this.RoundSkill != null) return false
|
||
if (this.BattleSkillList.length == 0) return false
|
||
|
||
for (let index = 0; index < this.BattleSkillList.length; index++) {
|
||
let _skillid = this.BattleSkillList[index];
|
||
if (_skillid == 35539 &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
}
|
||
|
||
return false
|
||
}
|
||
|
||
|
||
IsTriggerLingJi(): boolean {
|
||
if (this.RoundSkill != null) return false
|
||
if (this.BattleSkillList.length == 0) return false
|
||
|
||
for (let index = 0; index < this.BattleSkillList.length; index++) {
|
||
let _skillid = this.BattleSkillList[index];
|
||
if (_skillid == 35540 &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
}
|
||
|
||
return false
|
||
}
|
||
|
||
IsTriggerSpeed(): boolean {
|
||
if (this.RoundSkill != null) return false
|
||
if (this.BattleSkillList.length == 0) return false
|
||
|
||
for (let index = 0; index < this.BattleSkillList.length; index++) {
|
||
let _skillid = this.BattleSkillList[index];
|
||
if (_skillid == 35541 &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
}
|
||
|
||
return false
|
||
}
|
||
|
||
IsTriggerRelive(): boolean {
|
||
if (this.RoundSkill != null) return false
|
||
if (this.BattleSkillList.length == 0) return false
|
||
|
||
for (let index = 0; index < this.BattleSkillList.length; index++) {
|
||
let _skillid = this.BattleSkillList[index];
|
||
if (_skillid == 35542 &&
|
||
this.IsTriggerSkill(_skillid)) {
|
||
this.RoundSkill = this.GetSkillByID(_skillid)
|
||
return true
|
||
}
|
||
}
|
||
|
||
return false
|
||
}
|
||
}
|