HasParam() public méthode

public HasParam ( string pname ) : bool
pname string
Résultat bool
Exemple #1
0
    public bool CanLookup(
		string fname, LookupType type,
		SkillDef scontext=null,
		Character ccontext=null,
		Character tcontext=null,
		Equipment econtext=null,
		Item icontext=null,
		Formula f=null
	)
    {
        switch(type) {
            case LookupType.Auto:
                return (icontext != null && icontext.HasParam(fname)) ||
                             (econtext != null && econtext.HasParam(fname)) ||
                             (scontext != null && scontext.HasParam(fname)) ||
                             (ccontext != null && ccontext.HasStat(fname)) ||
         							 (tcontext != null && tcontext.HasStat(fname));
            case LookupType.SkillParam:
                return scontext.HasParam(fname);
            case LookupType.ItemParam: {
                if(icontext == null && scontext != null) {
                    icontext = scontext.InvolvedItem;
                }
                if(icontext == null && econtext != null) {
                    icontext = econtext.baseItem;
                }
                return icontext != null && icontext.HasParam(fname);
            }
            case LookupType.ReactedItemParam: {
                icontext = scontext.currentReactedSkill.InvolvedItem;
                return icontext != null && icontext.HasParam(fname);
            }
            case LookupType.ActorStat:
                if(scontext != null) { return scontext.character.HasStat(fname); }
                if(econtext != null) { return econtext.wielder.HasStat(fname); }
                if(ccontext != null) { return ccontext.HasStat(fname); }
                return false;
            case LookupType.ActorMountStat: {
                Character m = null;
                if(scontext != null) { m = scontext.currentTargetCharacter.mountedCharacter; }
                if(econtext != null) { m = econtext.wielder.mountedCharacter; }
                if(tcontext != null) { m = tcontext.mountedCharacter; }
                if(m != null) { return m.HasStat(fname); }
                // Debug.Log("can lookup "+fname+" on mount "+m+" ? "+(m != null && m.HasStat(fname)));
                return false;
            }
            case LookupType.ActorMounterStat: {
                Character m = null;
                if(scontext != null) { m = scontext.currentTargetCharacter.mountingCharacter; }
                if(econtext != null) { m = econtext.wielder.mountingCharacter; }
                if(tcontext != null) { m = tcontext.mountingCharacter; }
                if(m != null) { return m.HasStat(fname); }
                return false;
            }
            case LookupType.ActorEquipmentParam:
                if(scontext != null) {
                    ccontext = scontext.character;
                } else if(ccontext == null && econtext != null) {
                    if(econtext.Matches(f.equipmentSlots, f.equipmentCategories)) {
                        return econtext.HasParam(fname);
                    } else {
                        ccontext = econtext.wielder;
                    }
                }
                return CanLookupEquipmentParamOn(fname, type, ccontext, f);
            case LookupType.ActorMountEquipmentParam:
                if(scontext != null) {
                    ccontext = scontext.character.mountedCharacter;
                } else if(ccontext == null && econtext != null) {
                    if(econtext.Matches(f.equipmentSlots, f.equipmentCategories)) {
                        return econtext.HasParam(fname);
                    } else {
                        ccontext = econtext.wielder.mountedCharacter;
                    }
                }
                return CanLookupEquipmentParamOn(fname, type, ccontext, f);
            case LookupType.ActorMounterEquipmentParam:
                if(scontext != null) {
                    ccontext = scontext.character.mountingCharacter;
                } else if(ccontext == null && econtext != null) {
                    if(econtext.Matches(f.equipmentSlots, f.equipmentCategories)) {
                        return econtext.HasParam(fname);
                    } else {
                        ccontext = econtext.wielder.mountingCharacter;
                    }
                }
                return CanLookupEquipmentParamOn(fname, type, ccontext, f);
            case LookupType.ActorSkillParam:
                if(scontext != null) { return scontext.HasParam(fname); }
                return false;
            case LookupType.ActorStatusEffect:
                if(scontext != null) { return scontext.character.HasStatusEffect(fname); }
                if(econtext != null) { return econtext.wielder.HasStatusEffect(fname); }
                if(ccontext != null) { return ccontext.HasStatusEffect(fname); }
                return false;
            case LookupType.ActorMountStatusEffect: {
                Character m = null;
                if(scontext != null) { m = scontext.character.mountedCharacter; }
                if(econtext != null) { m = econtext.wielder.mountedCharacter; }
                if(ccontext != null) { m = ccontext.mountedCharacter; }
                return m != null && m.HasStatusEffect(fname);
            }
            case LookupType.ActorMounterStatusEffect: {
                Character m = null;
                if(scontext != null) { m = scontext.character.mountingCharacter; }
                if(econtext != null) { m = econtext.wielder.mountingCharacter; }
                if(ccontext != null) { m = ccontext.mountingCharacter; }
                return m != null && m.HasStatusEffect(fname);
            }
            case LookupType.TargetStat:
                if(scontext != null) { return scontext.currentTargetCharacter.HasStat(fname); }
                if(tcontext != null) { return tcontext.HasStat(fname); }
                return false;
            case LookupType.TargetMountStat: {
                Character m = null;
                if(scontext != null) { m = scontext.currentTargetCharacter.mountedCharacter; }
                if(tcontext != null) { m = tcontext.mountedCharacter; }
                if(m != null) { return m.HasStat(fname); }
                return false;
            }
            case LookupType.TargetMounterStat: {
                Character m = null;
                if(scontext != null) { m = scontext.currentTargetCharacter.mountingCharacter; }
                if(tcontext != null) { m = tcontext.mountingCharacter; }
                if(m != null) { return m.HasStat(fname); }
                return false;
            }
            case LookupType.TargetStatusEffect:
                if(scontext != null) { return scontext.currentTargetCharacter.HasStatusEffect(fname); }
                if(tcontext != null) { return tcontext.HasStatusEffect(fname); }
                return false;
            case LookupType.TargetMountStatusEffect: {
                Character m = null;
                if(scontext != null) { m = scontext.currentTargetCharacter.mountedCharacter; }
                if(tcontext != null) { m = tcontext.mountedCharacter; }
                return m != null && m.HasStatusEffect(fname);
            }
            case LookupType.TargetMounterStatusEffect: {
                Character m = null;
                if(scontext != null) { m = scontext.currentTargetCharacter.mountingCharacter; }
                if(tcontext != null) { m = tcontext.mountingCharacter; }
                return m != null && m.HasStatusEffect(fname);
            }
            case LookupType.TargetEquipmentParam:
                if(scontext != null) {
                    ccontext = scontext.currentTargetCharacter;
                } else if(tcontext != null) {
                    ccontext = tcontext;
                } else {
                    ccontext = null;
                }
                return CanLookupEquipmentParamOn(fname, type, ccontext, f);
            case LookupType.TargetMountEquipmentParam:
                if(scontext != null) {
                    ccontext = scontext.currentTargetCharacter.mountedCharacter;
                } else if(tcontext != null) {
                    ccontext = tcontext.mountedCharacter;
                } else {
                    ccontext = null;
                }
                return CanLookupEquipmentParamOn(fname, type, ccontext, f);
            case LookupType.TargetMounterEquipmentParam:
                if(scontext != null) {
                    ccontext = scontext.currentTargetCharacter.mountingCharacter;
                } else if(tcontext != null) {
                    ccontext = tcontext.mountingCharacter;
                } else {
                    ccontext = null;
                }
                return CanLookupEquipmentParamOn(fname, type, ccontext, f);
            case LookupType.TargetSkillParam:
            case LookupType.ActorMountSkillParam:
            case LookupType.ActorMounterSkillParam:
            case LookupType.TargetMountSkillParam:
            case LookupType.TargetMounterSkillParam:
                return false;
            case LookupType.NamedFormula:
                return HasFormula(fname);
            case LookupType.ReactedSkillParam:
                if(scontext != null) {
                    return true;
                }
                return false;
            case LookupType.ReactedEffectType:
                if(scontext != null) {
                    string[] fnames = f.searchReactedStatNames;
                    return scontext.currentReactedSkill.lastEffects.
                        Where(fx => fx.Matches(fnames, f.searchReactedStatChanges, f.searchReactedEffectCategories)).
                        Count() > 0;
                }
                return false;
            case LookupType.SkillEffectType:
                if(scontext != null) {
                    string[] fnames = f.searchReactedStatNames;
                    return scontext.lastEffects.
                        Where(fx => fx.Matches(fnames, f.searchReactedStatChanges, f.searchReactedEffectCategories)).
                        Count() > 0;
                }
                return false;
        }
        return false;
    }
Exemple #2
0
    public bool CanLookup(
        string fname, LookupType type,
        SkillDef scontext  = null,
        Character ccontext = null,
        Character tcontext = null,
        Equipment econtext = null,
        Item icontext      = null,
        Formula f          = null
        )
    {
        switch (type)
        {
        case LookupType.Auto:
            return((icontext != null && icontext.HasParam(fname)) ||
                   (econtext != null && econtext.HasParam(fname)) ||
                   (scontext != null && scontext.HasParam(fname)) ||
                   (ccontext != null && ccontext.HasStat(fname)) ||
                   (tcontext != null && tcontext.HasStat(fname)));

        case LookupType.SkillParam:
            return(scontext.HasParam(fname));

        case LookupType.ItemParam: {
            if (icontext == null && scontext != null)
            {
                icontext = scontext.InvolvedItem;
            }
            if (icontext == null && econtext != null)
            {
                icontext = econtext.baseItem;
            }
            return(icontext != null && icontext.HasParam(fname));
        }

        case LookupType.ReactedItemParam: {
            icontext = scontext.currentReactedSkill.InvolvedItem;
            return(icontext != null && icontext.HasParam(fname));
        }

        case LookupType.ActorStat:
            if (scontext != null)
            {
                return(scontext.character.HasStat(fname));
            }
            if (econtext != null)
            {
                return(econtext.wielder.HasStat(fname));
            }
            if (ccontext != null)
            {
                return(ccontext.HasStat(fname));
            }
            return(false);

        case LookupType.ActorMountStat: {
            Character m = null;
            if (scontext != null)
            {
                m = scontext.currentTargetCharacter.mountedCharacter;
            }
            if (econtext != null)
            {
                m = econtext.wielder.mountedCharacter;
            }
            if (tcontext != null)
            {
                m = tcontext.mountedCharacter;
            }
            if (m != null)
            {
                return(m.HasStat(fname));
            }
            // Debug.Log("can lookup "+fname+" on mount "+m+" ? "+(m != null && m.HasStat(fname)));
            return(false);
        }

        case LookupType.ActorMounterStat: {
            Character m = null;
            if (scontext != null)
            {
                m = scontext.currentTargetCharacter.mountingCharacter;
            }
            if (econtext != null)
            {
                m = econtext.wielder.mountingCharacter;
            }
            if (tcontext != null)
            {
                m = tcontext.mountingCharacter;
            }
            if (m != null)
            {
                return(m.HasStat(fname));
            }
            return(false);
        }

        case LookupType.ActorEquipmentParam:
            if (scontext != null)
            {
                ccontext = scontext.character;
            }
            else if (ccontext == null && econtext != null)
            {
                if (econtext.Matches(f.equipmentSlots, f.equipmentCategories))
                {
                    return(econtext.HasParam(fname));
                }
                else
                {
                    ccontext = econtext.wielder;
                }
            }
            return(CanLookupEquipmentParamOn(fname, type, ccontext, f));

        case LookupType.ActorMountEquipmentParam:
            if (scontext != null)
            {
                ccontext = scontext.character.mountedCharacter;
            }
            else if (ccontext == null && econtext != null)
            {
                if (econtext.Matches(f.equipmentSlots, f.equipmentCategories))
                {
                    return(econtext.HasParam(fname));
                }
                else
                {
                    ccontext = econtext.wielder.mountedCharacter;
                }
            }
            return(CanLookupEquipmentParamOn(fname, type, ccontext, f));

        case LookupType.ActorMounterEquipmentParam:
            if (scontext != null)
            {
                ccontext = scontext.character.mountingCharacter;
            }
            else if (ccontext == null && econtext != null)
            {
                if (econtext.Matches(f.equipmentSlots, f.equipmentCategories))
                {
                    return(econtext.HasParam(fname));
                }
                else
                {
                    ccontext = econtext.wielder.mountingCharacter;
                }
            }
            return(CanLookupEquipmentParamOn(fname, type, ccontext, f));

        case LookupType.ActorSkillParam:
            if (scontext != null)
            {
                return(scontext.HasParam(fname));
            }
            return(false);

        case LookupType.ActorStatusEffect:
            if (scontext != null)
            {
                return(scontext.character.HasStatusEffect(fname));
            }
            if (econtext != null)
            {
                return(econtext.wielder.HasStatusEffect(fname));
            }
            if (ccontext != null)
            {
                return(ccontext.HasStatusEffect(fname));
            }
            return(false);

        case LookupType.ActorMountStatusEffect: {
            Character m = null;
            if (scontext != null)
            {
                m = scontext.character.mountedCharacter;
            }
            if (econtext != null)
            {
                m = econtext.wielder.mountedCharacter;
            }
            if (ccontext != null)
            {
                m = ccontext.mountedCharacter;
            }
            return(m != null && m.HasStatusEffect(fname));
        }

        case LookupType.ActorMounterStatusEffect: {
            Character m = null;
            if (scontext != null)
            {
                m = scontext.character.mountingCharacter;
            }
            if (econtext != null)
            {
                m = econtext.wielder.mountingCharacter;
            }
            if (ccontext != null)
            {
                m = ccontext.mountingCharacter;
            }
            return(m != null && m.HasStatusEffect(fname));
        }

        case LookupType.TargetStat:
            if (scontext != null)
            {
                return(scontext.currentTargetCharacter.HasStat(fname));
            }
            if (tcontext != null)
            {
                return(tcontext.HasStat(fname));
            }
            return(false);

        case LookupType.TargetMountStat: {
            Character m = null;
            if (scontext != null)
            {
                m = scontext.currentTargetCharacter.mountedCharacter;
            }
            if (tcontext != null)
            {
                m = tcontext.mountedCharacter;
            }
            if (m != null)
            {
                return(m.HasStat(fname));
            }
            return(false);
        }

        case LookupType.TargetMounterStat: {
            Character m = null;
            if (scontext != null)
            {
                m = scontext.currentTargetCharacter.mountingCharacter;
            }
            if (tcontext != null)
            {
                m = tcontext.mountingCharacter;
            }
            if (m != null)
            {
                return(m.HasStat(fname));
            }
            return(false);
        }

        case LookupType.TargetStatusEffect:
            if (scontext != null)
            {
                return(scontext.currentTargetCharacter.HasStatusEffect(fname));
            }
            if (tcontext != null)
            {
                return(tcontext.HasStatusEffect(fname));
            }
            return(false);

        case LookupType.TargetMountStatusEffect: {
            Character m = null;
            if (scontext != null)
            {
                m = scontext.currentTargetCharacter.mountedCharacter;
            }
            if (tcontext != null)
            {
                m = tcontext.mountedCharacter;
            }
            return(m != null && m.HasStatusEffect(fname));
        }

        case LookupType.TargetMounterStatusEffect: {
            Character m = null;
            if (scontext != null)
            {
                m = scontext.currentTargetCharacter.mountingCharacter;
            }
            if (tcontext != null)
            {
                m = tcontext.mountingCharacter;
            }
            return(m != null && m.HasStatusEffect(fname));
        }

        case LookupType.TargetEquipmentParam:
            if (scontext != null)
            {
                ccontext = scontext.currentTargetCharacter;
            }
            else if (tcontext != null)
            {
                ccontext = tcontext;
            }
            else
            {
                ccontext = null;
            }
            return(CanLookupEquipmentParamOn(fname, type, ccontext, f));

        case LookupType.TargetMountEquipmentParam:
            if (scontext != null)
            {
                ccontext = scontext.currentTargetCharacter.mountedCharacter;
            }
            else if (tcontext != null)
            {
                ccontext = tcontext.mountedCharacter;
            }
            else
            {
                ccontext = null;
            }
            return(CanLookupEquipmentParamOn(fname, type, ccontext, f));

        case LookupType.TargetMounterEquipmentParam:
            if (scontext != null)
            {
                ccontext = scontext.currentTargetCharacter.mountingCharacter;
            }
            else if (tcontext != null)
            {
                ccontext = tcontext.mountingCharacter;
            }
            else
            {
                ccontext = null;
            }
            return(CanLookupEquipmentParamOn(fname, type, ccontext, f));

        case LookupType.TargetSkillParam:
        case LookupType.ActorMountSkillParam:
        case LookupType.ActorMounterSkillParam:
        case LookupType.TargetMountSkillParam:
        case LookupType.TargetMounterSkillParam:
            return(false);

        case LookupType.NamedFormula:
            return(HasFormula(fname));

        case LookupType.ReactedSkillParam:
            if (scontext != null)
            {
                return(true);
            }
            return(false);

        case LookupType.ReactedEffectType:
            if (scontext != null)
            {
                string[] fnames = f.searchReactedStatNames;
                return(scontext.currentReactedSkill.lastEffects.
                       Where(fx => fx.Matches(fnames, f.searchReactedStatChanges, f.searchReactedEffectCategories)).
                       Count() > 0);
            }
            return(false);

        case LookupType.SkillEffectType:
            if (scontext != null)
            {
                string[] fnames = f.searchReactedStatNames;
                return(scontext.lastEffects.
                       Where(fx => fx.Matches(fnames, f.searchReactedStatChanges, f.searchReactedEffectCategories)).
                       Count() > 0);
            }
            return(false);
        }
        return(false);
    }