public void FireWeapon(Action _action) { new Effect(_muzzleFlash, GunTrans.position, GunTrans.rotation); CombatState _target = _action.Combat; if (_target != null) { float _coverAmount; if (_target.CoverAmount(GunTrans.position, out _coverAmount)) { float _weaponAccuracy = _inventory.SelectedWeapon.Accuracy - _inventory.SelectedWeapon.AccuracyLoss(Vector3.Distance(transform.position, _target.transform.position)); float _dc = Math.Max(5f, _accuracy + _weaponAccuracy - _coverAmount - _target.Dodge); if (SRand.Roll(ref _rollI) <= _dc) { _target.SetAction(new WeaponAction(ActionType.ShotBy, _inventory.SelectedWeapon, true), true); } else { } } else { } } }
void OnTriggerEnter(Collider _coll) { if (Util.LayerMaskContainsLayer(_collMask, _coll.gameObject.layer)) { CombatState _combat = Util.GetComponentInHierarchy <CombatState>(_coll.gameObject); if (_combat != null && _canDamage) { if (_damageOnce) { _canDamage = false; } _combat.SetAction(new WeaponAction(ActionType.ShotBy, _damage, true), true); } } }