Beispiel #1
0
    protected override void ApplyEffect()
    {
        effectElapsed = Stats.EffectDuration;
        base.ApplyEffect();

        effect = Instantiate(ShieldEffect, transform.position, transform.rotation).GetComponent <ShieldEffect>();
        effect.Attach(this.transform);
    }
Beispiel #2
0
 public void Start()
 {
     shield = GetComponent <ShieldEffect>();
     SetTrailPosition();
     curPos       = new Vector2(transform.position.x, transform.position.y);
     targetCurPos = new Vector2(trailPosition.x, trailPosition.y);
     velocity     = new Vector2(0f, 0f);
     targetOffset = new Vector2(0f, 0f);
 }
Beispiel #3
0
 private void ClearWeaponEffect()   // 무기 Effect 지우기
 {
     BowEffect.SetActive(false);
     ArrowEffect.SetActive(false);
     SpearEffect.SetActive(false);
     ShieldEffect.SetActive(false);
     CoBowEffect.SetActive(false);
     CoArrowEffect.SetActive(false);
     CoSpearEffect.SetActive(false);
     CoShieldEffect.SetActive(false);
 }
Beispiel #4
0
 protected virtual void OnTriggerExit(Collider other)
 {
     if (other.gameObject.tag == "Barrier")
     {
         spawnState = new PushedStateS(spawn, false);
         ShieldEffect se = other.gameObject.GetComponent <ShieldEffect>();
         if (se)
         {
             se.ContactEffect(transform.position);
         }
         return;
     }
 }
Beispiel #5
0
 public void OnTriggerEnter2D(Collider2D collision)
 {
     if (collision.tag == "Player")
     {
         ShieldEffect se = PlayerCharacter.instance.GetComponentInChildren <ShieldEffect>();
         if (se)
         {
             se.timer = 0;
             DestroyObject(gameObject);
             return;
         }
         GameObject shield = GameObject.Instantiate(shieldEffect);
         shield.transform.position = PlayerCharacter.instance.GetPosition();
         shield.transform.parent   = PlayerCharacter.instance.tr;
         DestroyObject(gameObject);
     }
 }
        public void TestShieldEffect()
        {
            ShieldEffect NewEffect = (ShieldEffect)DummyMap.DicEffect[ShieldEffect.Name].Copy();

            BaseAutomaticSkill DummySkill = CreateDummySkill(DummyMap.DicRequirement[PassiveRequirement.Name].Copy(),
                                                             DummyMap.DicAutomaticSkillTarget[EffectActivationSelf.Name].Copy(),
                                                             NewEffect);

            Squad DummySquad = CreateDummySquad();

            GlobalDeathmatchContext.SetContext(DummySquad, DummySquad.CurrentLeader, DummySquad.CurrentLeader.Pilot, DummySquad, DummySquad.CurrentLeader, DummySquad.CurrentLeader.Pilot, null);

            Assert.IsFalse(GlobalDeathmatchContext.EffectOwnerUnit.Boosts.ShieldModifier);

            DummySkill.AddSkillEffectsToTarget(string.Empty);

            Assert.IsTrue(GlobalDeathmatchContext.EffectOwnerUnit.Boosts.ShieldModifier);
        }
Beispiel #7
0
 //
 private void Start()
 {
     tf   = GetComponent <Transform>();
     sr   = GetComponent <SpriteRenderer>();
     anim = GetComponent <Animator>();
     rb   = GetComponent <Rigidbody2D>();
     col  = GetComponent <BoxCollider2D>();
     //
     colOffset[0] = new Vector2(0, 0);
     colOffset[1] = new Vector2(0, -1.5f);
     colSize[0]   = new Vector2(13.0f, 28.0f);
     colSize[1]   = new Vector2(13.0f, 25.0f);
     //
     eye       = tf.GetChild(0).GetComponent <Eye>();
     eye.dummy = this;
     //
     arm       = tf.GetChild(1).GetComponent <Arm>();
     arm.dummy = this;
     //
     shieldEffect       = tf.GetChild(2).GetComponent <ShieldEffect>();
     shieldEffect.dummy = this;
     //
     UIManager.instance.AddRSC(beginRSC);
 }
 void Awake()
 {
     shieldEffect = transform.FindChild ("ShieldEffect").GetComponent<ShieldEffect>();
     parentHole = transform.parent.GetComponent<ZombieHole> ();
 }
Beispiel #9
0
    void Update()
    {
        // 좌클릭하면 회전시작
        if (isPlay)
        {
            if (Input.GetKeyDown(KeyCode.Mouse0))
            {
                isRotating = true;
                RotateInit();
            }

            // 변, 각, 무기 Effect
            ClearWeaponEffect();
            if (!isRotating)
            {
                ClearTri();
                switch (Tstate)
                {
                case 0:
                    if (onHypo)
                    {
                        HypoEffect.SetActive(true);
                    }
                    else if (onHeight && isCo)
                    {
                        HeightEffect.SetActive(true);
                    }
                    else if (onBase && !isCo)
                    {
                        BaseEffect.SetActive(true);
                    }
                    break;

                case 1:
                    if (onHypo)
                    {
                        HypoDeleteEffect.SetActive(true);
                    }
                    else if (onHeight && !isCo)
                    {
                        BowEffect.SetActive(true);
                        ArrowEffect.SetActive(true);
                        BaseLineEffect.SetActive(true);
                    }
                    else if (onBase && isCo)
                    {
                        CoBowEffect.SetActive(true);
                        CoArrowEffect.SetActive(true);
                        HeightLineEffect.SetActive(true);
                    }
                    break;

                case 2:
                    if (onHeight)
                    {
                        HeightDeleteEffect.SetActive(true);
                    }
                    else if (onHypo && isCo)
                    {
                        CoSpearEffect.SetActive(true);
                        HypoCoLineEffect.SetActive(true);
                    }
                    else if (onBase && isCo)
                    {
                        CoShieldEffect.SetActive(true);
                    }
                    break;

                case 3:
                    if (onBase)
                    {
                        BaseDeleteEffect.SetActive(true);
                    }
                    else if (onHypo && !isCo)
                    {
                        SpearEffect.SetActive(true);
                        HypoIdleLineEffect.SetActive(true);
                    }
                    else if (onHeight && !isCo)
                    {
                        ShieldEffect.SetActive(true);
                    }
                    break;
                }
                if (onCoAngle)
                {
                    if (isCo)
                    {
                        CoAngleDeleteEffect.SetActive(true);
                    }
                    else if (!isCo)
                    {
                        CoAngleEffect.SetActive(true);
                    }
                }
                if (onIdleAngle && isCo)
                {
                    CoAngleDeleteEffect.SetActive(true);
                    IdleAngleEffect.SetActive(true);
                }
            }

            // 키보드'space' or CoAngle 클릭시
            if (Input.GetKeyDown(KeyCode.Space) || (Input.GetKeyDown(KeyCode.Mouse0) && onCoAngle))
            {
                isCo = !isCo;
            }

            // Co상태에서 IdleAngle 클릭시
            if (isCo && Input.GetKeyDown(KeyCode.Mouse0) && onIdleAngle)
            {
                isCo = false;
            }

            if (isCo)
            {
                CoAngle.SetActive(true);
            }
            else
            {
                CoAngle.SetActive(false);
            }

            // 키보드'w' or Hypo 클릭시
            if (Input.GetKeyDown(KeyCode.W) || (Input.GetKeyDown(KeyCode.Mouse0) && onHypo))
            {
                switch (Tstate)
                {
                case 0:
                    Tstate = 1;
                    if (!isCo)
                    {
                        MakeCircle(HypoIdleCircle);
                    }
                    else
                    {
                        MakeCircle(HypoCoCircle);
                    }
                    break;

                case 1:
                    Tstate = 0;
                    HypoIdleCircle.SetActive(false);
                    HypoCoCircle.SetActive(false);
                    break;

                case 2:
                    if (isCo)
                    {
                        if (Input.GetKeyDown(KeyCode.W))
                        {
                            SetAnimationParameters(0, 1);
                            StartCoroutine("Cosec");
                            RotateFinish();
                        }
                        else
                        {
                            CoSpear.SetActive(true);
                            isLaunching = 5;
                        }
                    }
                    break;

                case 3:
                    if (!isCo)
                    {
                        if (Input.GetKeyDown(KeyCode.W))
                        {
                            SetAnimationParameters(0, 1);
                            StartCoroutine("Sec");
                            RotateFinish();
                        }
                        else
                        {
                            Spear.SetActive(true);
                            isLaunching = 2;
                        }
                    }
                    break;
                }
            }

            // 키보드'd' or Height 클릭시
            if (Input.GetKeyDown(KeyCode.D) || (Input.GetKeyDown(KeyCode.Mouse0) && onHeight))
            {
                switch (Tstate)
                {
                case 0:
                    MakeCircle(HeightCircle);
                    Tstate = 2;
                    break;

                case 1:
                    if (!isCo)
                    {
                        if (Input.GetKeyDown(KeyCode.D))
                        {
                            SetAnimationParameters(0, 1);
                            StartCoroutine("Sin");
                            RotateFinish();
                        }
                        else
                        {
                            Bow.SetActive(true);
                            Arrow.SetActive(true);
                            isLaunching = 1;
                        }
                    }
                    break;

                case 2:
                    Tstate = 0;
                    HeightCircle.SetActive(false);
                    break;

                case 3:
                    if (!isCo)
                    {
                        if (Input.GetKeyDown(KeyCode.D))
                        {
                            SetAnimationParameters(0, 1);
                            StartCoroutine("Tan");
                            RotateFinish();
                        }
                        else
                        {
                            Shield.SetActive(true);
                            isLaunching = 3;
                        }
                    }
                    break;
                }
            }

            // 키보드'a' or Base 클릭시
            if (Input.GetKeyDown(KeyCode.A) || (Input.GetKeyDown(KeyCode.Mouse0) && onBase))
            {
                switch (Tstate)
                {
                case 0:
                    MakeCircle(BaseCircle);
                    Tstate = 3;
                    break;

                case 1:
                    if (isCo)
                    {
                        if (Input.GetKeyDown(KeyCode.A))
                        {
                            SetAnimationParameters(0, 1);
                            StartCoroutine("Cos");
                            RotateFinish();
                        }
                        else
                        {
                            CoBow.SetActive(true);
                            CoArrow.SetActive(true);
                            isLaunching = 4;
                        }
                    }
                    break;

                case 2:
                    if (isCo)
                    {
                        if (Input.GetKeyDown(KeyCode.A))
                        {
                            SetAnimationParameters(0, 1);
                            StartCoroutine("Cotan");
                            RotateFinish();
                        }
                        else
                        {
                            CoShield.SetActive(true);
                            isLaunching = 6;
                        }
                    }
                    break;

                case 3:
                    Tstate = 0;
                    BaseCircle.SetActive(false);
                    break;
                }
            }

            ClearEdgeActivated();
            switch (Tstate)
            {
            case 0:
                Tri.transform.localScale = StandardScale;
                break;

            case 1:
                HypoActivated.SetActive(true);
                HypoLength.SetActive(true);
                Tri.transform.localScale = StandardScale * 0.807f;
                break;

            case 2:
                HeightActivated.SetActive(true);
                HeightLength.SetActive(true);
                Tri.transform.localScale = StandardScale * 1.365f;
                break;

            case 3:
                BaseActivated.SetActive(true);
                BaseLength.SetActive(true);
                Tri.transform.localScale = StandardScale;
                break;
            }

            // 마우스 떼면 회전종료
            if (Input.GetKeyUp(KeyCode.Mouse0))
            {
                isRotating = false;
                if (isLaunching != 0)
                {
                    switch (isLaunching)
                    {
                    case 1:
                        StartCoroutine("Sin");
                        break;

                    case 2:
                        StartCoroutine("Sec");
                        break;

                    case 3:
                        StartCoroutine("Tan");
                        break;

                    case 4:
                        StartCoroutine("Cos");
                        break;

                    case 5:
                        StartCoroutine("Cosec");
                        break;

                    case 6:
                        StartCoroutine("Cotan");
                        break;
                    }
                    RotateFinish();
                }
            }

            if (isRotating)
            {
                MousePresentPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition) - CoR;   // 마우스 현재위치는 깨다 기준 상대적 위치
                RotateAngle          = Vector2.Angle(MouseStartPosition, MousePresentPosition);     // RotateAngle 계산
                                                                                                    // Vertor2.Angle은 항상 0<=Angle<180이므로 외적을 이용해서 반환
                if (Vector3.Cross(MouseStartPosition, MousePresentPosition).z < 0)
                {
                    RotateAngle = 360f - RotateAngle;
                }
                // 회전 및 삼각형 중심 - 회전 중심 위치 조정
                Tri.transform.rotation = TriStartRotation * Quaternion.Euler(Vector3.forward * RotateAngle);
                // Hypo, Height, Base Length 같이 회전 (역방향)
                HypoLength.transform.rotation   = Quaternion.Euler(-(Tri.transform.rotation * Vector3.forward));
                HeightLength.transform.rotation = Quaternion.Euler(-(Tri.transform.rotation * Vector3.forward));
                BaseLength.transform.rotation   = Quaternion.Euler(-(Tri.transform.rotation * Vector3.forward));

                Tri.transform.position = Quaternion.Euler(Vector3.forward * RotateAngle) * TriStartPosition + CoR;
            }

            if (Input.GetKeyDown(KeyCode.Mouse1))
            {
                Reset();
            }                                                  // 우클릭 시 초기화
        }
    }
Beispiel #10
0
    private void LoadPredefinedSkills()
    {
        {
            SkillDefinition skill = new SkillDefinition();
            skill.InternalName     = "Slash_1";
            skill.DisplayedName    = "Slash I";
            skill.BaseUsage        = 8;
            skill.AllowedPositions = PartyPositionFlag.Attack;
            skill.PerformedPhase   = CombatPhase.AttackPhase;
            skill.SetTag(SkillTag.Melee, true);
            skill.SetTag(SkillTag.Attack, true);

            AttackEffect effect = new AttackEffect();
            effect.DamageType       = DamageType.Physical;
            effect.BaseDamage       = 10;
            effect.CharacterScaling = 1.0f;
            effect.ItemScaling      = 1.0f;
            skill.Effect            = effect;

            StandardSingleTargeting targeting = new StandardSingleTargeting();
            skill.Targeting = targeting;

            skill.LogTextFormat = "Generic_Attack_EffectLogText";

            AddSkillTemplate(skill);
        }

        {
            SkillDefinition skill = new SkillDefinition();
            skill.InternalName     = "FirstAid_1";
            skill.DisplayedName    = "First Aid";
            skill.BaseUsage        = 8;
            skill.AllowedPositions = PartyPositionFlag.Defense | PartyPositionFlag.Support;
            skill.PerformedPhase   = CombatPhase.RecoveryPhase;

            RecoverEffect effect = new RecoverEffect();
            effect.BaseRecover      = 4;
            effect.CharacterScaling = 1.0f;
            effect.ItemScaling      = 0.0f;
            skill.Effect            = effect;

            LowestHealthTargeting targeting = new LowestHealthTargeting();
            targeting.ByPercentage    = true;
            targeting.TargetAllyParty = true;
            skill.Targeting           = targeting;

            skill.LogTextFormat = "Generic_Heal_EffectLogText";

            AddSkillTemplate(skill);
        }

        {
            SkillDefinition skill = new SkillDefinition();
            skill.InternalName     = "ShieldUp_1";
            skill.DisplayedName    = "Shield Up";
            skill.BaseUsage        = 8;
            skill.AllowedPositions = PartyPositionFlag.Defense;
            skill.PerformedPhase   = CombatPhase.PreparationPhase;

            ShieldEffect effect = new ShieldEffect();
            effect.Type             = ShieldEffect.ShieldType.GrantArmor;
            effect.BaseShield       = 6;
            effect.CharacterScaling = 0.5f;
            effect.ItemScaling      = 1.0f;
            skill.Effect            = effect;

            PositionTargeting targeting = new PositionTargeting();
            targeting.TargetAlly = true;
            targeting.Position   = PartyPosition.Defense;
            skill.Targeting      = targeting;

            skill.LogTextFormat = "Generic_Armor_EffectLogText";

            AddSkillTemplate(skill);
        }

        {
            SkillDefinition skill = new SkillDefinition();
            skill.InternalName     = "ManaBolt_1";
            skill.DisplayedName    = "Mana Bolt I";
            skill.BaseUsage        = 8;
            skill.AllowedPositions = PartyPositionFlag.Support | PartyPositionFlag.Attack;
            skill.PerformedPhase   = CombatPhase.ChannelPhase;
            skill.SetTag(SkillTag.Cast, true);
            skill.SetTag(SkillTag.Ranged, true);

            AttackEffect effect = new AttackEffect();
            effect.DamageType       = DamageType.Magic;
            effect.BaseDamage       = 6;
            effect.CharacterScaling = 1.0f;
            effect.ItemScaling      = 0.5f;
            skill.Effect            = effect;

            StandardSingleTargeting targeting = new StandardSingleTargeting();
            skill.Targeting = targeting;

            skill.LogTextFormat = "Generic_Attack_EffectLogText";

            AddSkillTemplate(skill);
        }

        {
            SkillDefinition skill = new SkillDefinition();
            skill.InternalName     = "Counterspell_1";
            skill.DisplayedName    = "Counterspell I";
            skill.BaseUsage        = 6;
            skill.AllowedPositions = PartyPositionFlag.Support;
            skill.PerformedPhase   = CombatPhase.ReactionPhase;
            skill.SetTag(SkillTag.Cast, true);
            skill.SetTag(SkillTag.Ranged, true);

            AttackEffect effect = new AttackEffect();
            effect.DamageType       = DamageType.Magic;
            effect.BaseDamage       = 6;
            effect.CharacterScaling = 1.0f;
            effect.ItemScaling      = 0.5f;
            skill.Effect            = effect;

            StandardSingleTargeting targeting = new StandardSingleTargeting();
            skill.Targeting = targeting;

            InterruptCastingTrigger triggering = new InterruptCastingTrigger();
            skill.Triggering = triggering;

            skill.LogTextFormat = "Generic_Attack_EffectLogText";

            AddSkillTemplate(skill);
        }
    }