public void OnEnable()
    {
        triggerUtility = GetComponent <TriggerUtility>();

        triggerUtility.TriggerEntered += Enter;
        triggerUtility.TriggerExited  += Exit;
    }
示例#2
0
        public override void Initialize(Actor data)
        {
            base.Initialize(data);
            Modules.Abilitiable.TryGetAbility(out _blackRose);

            _nurtureAura = TriggerUtility.GetOrCreateTrigger <SphereCollider>(data, "Nurture Aura");
            _nurtureAura.Collider.radius = _nurtureRange;
            _nurtureAura.Trigger.Enter  += Nurture_Enter;
            _nurtureAura.Trigger.Exit   += Nurture_Exit;

            _neglectAura = TriggerUtility.GetOrCreateTrigger <SphereCollider>(data, "Neglect Aura");
            _neglectAura.Collider.radius = _neglectRange;
            _neglectAura.Trigger.Enter  += Neglect_Enter;
            _neglectAura.Trigger.Exit   += Neglect_Exit;

            _neglectAura.Collider.enabled = false;
            _nurtureAura.Collider.enabled = true;

            _nurtureTargets = new List <IHealable>();
            _neglectTargets = new List <IHealable>();

            _rrTeamChecker = TeamableChecker.AllyOnly(Modules.Teamable);
            _brTeamChecker = TeamableChecker.NonAllyOnly(Modules.Teamable);
            CheckBuilder   = new AbilityPredicateBuilder(data)
            {
                AllowSelf = false
            };
            View = new SimpleAbilityView()
            {
                Icon     = _rrIcon,
                Cooldown = CheckBuilder.Cooldown,
                StatCost = CheckBuilder.MagicCost,
            };
            CheckBuilder.RebuildChecks();
        }
示例#3
0
 private void SetTriggerUtility()
 {
     if (tu == null)
     {
         tu = GetComponent <TriggerUtility>();
     }
 }
示例#4
0
    public void OnEnable()
    {
        triggerUtility = GetComponent <TriggerUtility>();

        triggerUtility.TriggerEnter += Enter;
        triggerUtility.TriggerStay  += Stay;
        triggerUtility.TriggerExit  += Exit;
    }
示例#5
0
        public Attackerable(Actor actor, ITeamable teamable = default) : base(actor)
        {
            _teamable = teamable;

            var helper = TriggerUtility.CreateTrigger <SphereCollider>(Actor, AttackerableTrigger);

            _trigger            = new AttackTargetTrigger <SphereCollider>(Actor, helper, _teamable);
            _attackCooldown     = new DurationTimer(0f, true);
            _damage             = new ModifiedValueBoilerplate <IAttackDamageModifier>(modifier => modifier.AttackDamage);
            _range              = new ModifiedValueBoilerplate <IAttackRangeModifier>(modifier => modifier.AttackRange);
            _attacksPerInterval =
                new ModifiedValueBoilerplate <IAttacksPerIntervalModifier>(modifier => modifier.AttacksPerInterval);
            _interval = new ModifiedValueBoilerplate <IAttackIntervalModifier>(modifier => modifier.AttackInterval);
        }
示例#6
0
 public override void Initialize(Actor data)
 {
     base.Initialize(data);
     _sphereCollider = TriggerUtility.CreateTrigger <SphereCollider>(Self, "MagicalBacklash Trigger");
     _sphereCollider.Trigger.Enter += OnActorEnter;
     _sphereCollider.Trigger.Exit  += OnActorExit;
     _targetBuffer = new List <IAbilitiable>();
     Checker       = new AbilityPredicateBuilder(data)
     {
         AllowSelf = false,
         Teamable  = TeamableChecker.NonAllyOnly(Modules.Teamable)
     };
     View = new SimpleAbilityView()
     {
         Icon = _icon
     };
     Register(data);
     if (data.TryGetModule <IKillable>(out var killable))
     {
         killable.Died += SelfDied;
     }
 }
示例#7
0
        public Aggroable(Actor actor, ITeamable teamable = default) : base(actor)
        {
            var helper = TriggerUtility.CreateTrigger <SphereCollider>(actor, TriggerName);

            _triggerLogic = new AttackTargetTrigger <SphereCollider>(Actor, helper, teamable);
        }