public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        base.OnStateEnter(animator, stateInfo, layerIndex);

        movementHash = Animator.StringToHash("AradisMovement");

        facingRight = (agentGFX.localRotation.y < 0) ? true : false;
        attackCheck = animator.GetComponent <AttackCheck>();
    }
Exemple #2
0
 public override void OnStateEnter(Animator animator, AnimatorStateInfo animatorStateInfo, int layerIndex)
 {
     base.OnStateEnter(animator, animatorStateInfo, layerIndex);
     attackTriggerHash         = Animator.StringToHash("AgentAttack");
     cooldown                  = maxCooldown;
     attackCheck               = animator.GetComponent <AttackCheck>();
     attackCheck.isAttacking   = false;
     attackCheck.canDealDamage = true;
 }
Exemple #3
0
 // Use this for initialization
 void Start()
 {
     // player = GameObject.FindGameObjectWithTag("Player");
     attack      = transform.GetChild(0).gameObject.GetComponent <AttackCheck>();
     animplayer  = GetComponent <Animator>();
     playerCtro  = GetComponent <PLCL.PlayerController> ();
     isground    = transform.GetChild(1).gameObject.GetComponent <isGround> ();
     rigi2d      = gameObject.GetComponent <Rigidbody2D>();
     c2d_player  = GetComponent <CapsuleCollider2D>();
     dirX        = Vector2.zero;
     Attackforce = Vector2.zero;
 }
    public Attack PerformMainHandAttack(int targetArmorClass)
    {
        //Отметим, что действие в этот ход уже совершалось
        actionAvailable = false;

        DamageDieRoll   damageDice                = null;
        DamageType      damageType                = DamageType.Bludgeoning; // Если оружия в руках нет - тип урона рукопашной атаки по умолчанию дробящий
        List <DieRoll>  additionalDamageRolls     = null;
        List <Modifier> additionalDamageModifiers = null;

        if (onMainHand != null)
        {
            damageDice = new DamageDieRoll(onMainHand.DamageDice, onMainHand.DamageType);
        }
        else
        {
            //Рукопашная атака наносит 1 повреждение + бонус Силы
            damageDice = new DamageDieRoll(DiceSet.GetByName("none"), damageType);

            additionalDamageModifiers = new List <Modifier>
            {
                new DamageModifier("Unarmed strike", 1, damageType),
                new DamageModifier(Ability.Strenght.Shortcut, Ability.GetAbilityModifier(currentStrenght), damageType)
            };
        }

        AttackCheckBuilder attackBuilder = new AttackCheckBuilder(
            Ability.Strenght,
            currentStrenght,
            targetArmorClass,
            masteryBonus,
            new RollWithCriticals());

        ValueDefinitionDirector.ConstructValueDefinition(attackBuilder);
        AttackCheck attackCheck = attackBuilder.GetResult() as AttackCheck;

        DamageValueBuilder damageValueBuilder = new DamageValueBuilder(
            damageDice,
            Ability.Strenght,
            currentStrenght,
            false,
            additionalDamageRolls,
            additionalDamageModifiers);

        ValueDefinitionDirector.ConstructValueDefinition(damageValueBuilder);
        DamageValueDefinition damageValueDefinition = damageValueBuilder.GetResult() as DamageValueDefinition;

        return(new Attack(attackCheck, damageValueDefinition));
    }
Exemple #5
0
 public Attack(AttackCheck attackCheck, DamageValueDefinition damageDefinition)
 {
     this.attackCheck      = attackCheck;
     this.damageDefinition = damageDefinition;
 }