Пример #1
0
        public bool TestCharacterTriggerEffect(CharacterTriggerRelicEffectParams relicEffectParams)
        {
            CharacterState characterState = relicEffectParams.characterState;

            if (characterState.IsDestroyed)
            {
                return(false);
            }
            if (characterState.GetTeamType() != targetTeam || characterState.HasStatusEffect("immune"))
            {
                return(false);
            }
            if (relicEffectParams.combatManager.GetCombatPhase() == CombatManager.Phase.HeroTurn || relicEffectParams.combatManager.GetCombatPhase() == CombatManager.Phase.PreCombat || relicEffectParams.combatManager.GetCombatPhase() == CombatManager.Phase.BossActionPreCombat)
            {
                return(false);
            }
            if (relicEffectParams.trigger != OnRelocate.OnRelocateCharTrigger.GetEnum())
            {
                return(false);
            }
            if (relicEffectParams.paramInt <= 0)
            {
                return(false);
            }
            return(true);
        }
Пример #2
0
        public bool TestCharacterTriggerEffect(CharacterTriggerRelicEffectParams relicEffectParams)
        {
            CharacterState characterState = relicEffectParams.characterState;

            if (characterState.IsDestroyed)
            {
                return(false);
            }
            if (relicEffectParams.trigger != CharacterTriggerData.Trigger.OnAttacking)
            {
                return(false);
            }
            if (relicEffectParams.combatManager.GetCombatPhase() == CombatManager.Phase.HeroTurn || relicEffectParams.combatManager.GetCombatPhase() == CombatManager.Phase.PreCombat || relicEffectParams.combatManager.GetCombatPhase() == CombatManager.Phase.BossActionPreCombat)
            {
                return(false);
            }
            if (characterState.GetStatusEffectStacks("ambush") <= 0)
            {
                return(false);
            }

            TargetMode targetMode = TargetMode.LastAttackedCharacter;

            if (characterState.GetStatusEffectStacks("sweep") > 0)
            {
                targetMode = TargetMode.Room;
            }

            try
            {
                TargetHelper.CollectTargetsData collectTargetsData = default(TargetHelper.CollectTargetsData);
                collectTargetsData.targetMode = targetMode;
                collectTargetsData.targetModeStatusEffectsFilter = new List <string>();
                collectTargetsData.targetModeHealthFilter        = CardEffectData.HealthFilter.Both;
                collectTargetsData.targetTeamType = Team.Type.Heroes;
                collectTargetsData.roomIndex      = characterState.GetSpawnPoint().GetRoomOwner().GetRoomIndex();
                collectTargetsData.heroManager    = relicEffectParams.heroManager;
                collectTargetsData.monsterManager = relicEffectParams.monsterManager;
                collectTargetsData.roomManager    = relicEffectParams.roomManager;
                collectTargetsData.inCombat       = false;
                collectTargetsData.isTesting      = true;
                collectTargetsData.selfTarget     = characterState;

                _targets.Clear();
                TargetHelper.CollectTargets(collectTargetsData, ref _targets);

                return(_targets.Count > 0);
            }
            catch (System.Exception)
            {
                return(false);
            }
        }
Пример #3
0
        public IEnumerator ApplyCharacterTriggerEffect(CharacterTriggerRelicEffectParams relicEffectParams)
        {
            CharacterState characterState = relicEffectParams.characterState;
            int            num            = RandomManager.Range(0, statusEffects.Length, RngId.Battle);
            int            numStacks      = (statusEffects[num].count <= 0) ? 1 : statusEffects[num].count;

            CharacterState.AddStatusEffectParams addStatusEffectParams = default(CharacterState.AddStatusEffectParams);
            addStatusEffectParams.sourceRelicState = _srcRelicState;
            CharacterState.AddStatusEffectParams addStatusEffectParams2 = addStatusEffectParams;
            characterState.AddStatusEffect(statusEffects[num].statusId, numStacks, addStatusEffectParams2);
            string activatedDescription = GetActivatedDescription();

            activatedDescription = string.Format(activatedDescription, statusEffects[num]);
            if (_srcRelicData.CanShowNotifications)
            {
                relicEffectParams.relicManager.ShowRelicActivated(_srcRelicState.GetIcon(), activatedDescription, characterState.GetCharacterUI());
            }
            yield break;
        }
Пример #4
0
        public IEnumerator ApplyCharacterTriggerEffect(CharacterTriggerRelicEffectParams relicEffectParams)
        {
            CharacterState characterState = relicEffectParams.characterState;

            if (alreadyGone.Contains(characterState))
            {
                yield break;
            }

            foreach (var target in _targets)
            {
                target.AddStatusEffect(statusEffects[0].statusId, 1);
                string activatedDescription = GetActivatedDescription();
                activatedDescription = string.Format(activatedDescription, statusEffects[0]);
                if (_srcRelicData.CanShowNotifications)
                {
                    relicEffectParams.relicManager.ShowRelicActivated(_srcRelicState.GetIcon(), activatedDescription, target.GetCharacterUI());
                }
            }

            alreadyGone.Add(characterState);
            yield break;
        }