'use strict'; function Mask (source,target,prop,value,forced) { this.source = source; this.target = target; this.prop = prop; this.value = value; this.forced = forced; if ((prop === 'onBurst') && this.value) { this.value.isBurst = true; } } Mask.prototype.set = function (reset) { var target = this.target; var item = target[this.prop]; if (item === undefined) { debugger; console.warn('Mask.set(): target.pid:%s,this.prop:%s,this.value:%s',target.pid,this.prop,this.value); } else if (isObj(item) && (item.constructor === Timming)) { // item.effects.length = 0; if (reset) { item.effects.length = 0; return; } var timming = item; var effect = this.value; var source = effect.source; // 不能获得新能力 if (!source.canGainAbility(this.source)) { return; } effect.disabled = false; timming.effects.push(effect); effect.source.registeredEffects.push(effect); return; } else if (isArr(item)) { target[this.prop] = this.value.slice(); } else if (this.prop === 'abilityLost') { target.abilityLost = this.value; if (!target.abilityLost) return; Card.abilityProps.forEach(function (prop) { target[prop] = false; },this); target.registeredEffects.forEach(function (effect) { effect.disabled = true; },this); } else { if (!reset && target.player && inArr(this.prop,Card.abilityProps)) { // 不能获得新能力 if (!target.canGainAbility(this.source)) { return; } } target[this.prop] = this.value; } }; Mask.prototype.add = function (reset) { var item = this.target[this.prop]; if (isArr(item)) { var arr = item; arr.push(this.value); return; } if (isObj(item) && (item.constructor === Timming)) { return; } this.target[this.prop] += this.value; }; Mask.prototype.checkFilter = function (source) { if (this.forced) return true; var target = this.target; if (!target.isEffectFiltered) return true; return !target.isEffectFiltered(source); }; global.Mask = Mask;