Exemplo n.º 1
0
    public float EngagementRange()
    {
        AttackEntity attackEntity = GetHeldEntity() as AttackEntity;

        if ((bool)attackEntity)
        {
            return(attackEntity.effectiveRange);
        }
        return(sightRange);
    }
Exemplo n.º 2
0
    public float EngagementRange()
    {
        AttackEntity attackEntity = GetAttackEntity();

        if ((bool)attackEntity)
        {
            return(attackEntity.effectiveRange * (attackEntity.aiOnlyInRange ? 1f : 2f) * Brain.AttackRangeMultiplier);
        }
        return(Brain.SenseRange);
    }
Exemplo n.º 3
0
    public float EngagementRange()
    {
        AttackEntity heldEntity = this.GetHeldEntity() as AttackEntity;

        if (Object.op_Implicit((Object)heldEntity))
        {
            return(heldEntity.effectiveRange);
        }
        return(this.sightRange);
    }
Exemplo n.º 4
0
    public float EngagementRange()
    {
        AttackEntity heldEntity = base.GetHeldEntity() as AttackEntity;

        if (heldEntity)
        {
            return(heldEntity.effectiveRange);
        }
        return(this.sightRange);
    }
Exemplo n.º 5
0
 public void initialize(int index, SmashEntity smash, AttackEntity nextAttack, bool interruptable, float buildUp, float attackDuration, float cooldown, Personnage personnage)
 {
     _comboIndex = index;
     _smash = smash;
     _nextAttack = nextAttack;
     _interruptable = interruptable;
     _buildUpDuration = buildUp;
     _attackDuration = attackDuration;
     _cooldownDuration = cooldown;
     _personnage = personnage;
 }
Exemplo n.º 6
0
    void OnCollisionStay2D(Collision2D coll)
    {
        AttackEntity enemy = coll.gameObject.GetComponent <AttackEntity> ();

        if (enemy && attack > 0 && enemy.alliance != alliance && atckT >= atckI)
        {
            atckT            = 0.0f;
            enemy.hitPoints -= attack;
            Debug.Log(enemy.nameOfUnity + " [" + enemy.hitPoints + "/" + enemy.hP + "] has been attacked.");
        }
    }
Exemplo n.º 7
0
 void SetAnimationAndTargeting()
 {
     this.new_target   = false;
     this.entityTarget = null;
     this.attackTarget = false;
     this.asset.soundsAction("Acknowledge");
     this.asset.animatorPlay("Walking");
     this.asset.animatorTrigger("Walk");
     this.asset.animatorSetSpeed(1);
     this.moving = true;
 }
Exemplo n.º 8
0
 public void initialize(int index, SmashEntity smash, AttackEntity nextAttack, bool interruptable, float buildUp, float attackDuration, float cooldown, Personnage personnage)
 {
     _comboIndex       = index;
     _smash            = smash;
     _nextAttack       = nextAttack;
     _interruptable    = interruptable;
     _buildUpDuration  = buildUp;
     _attackDuration   = attackDuration;
     _cooldownDuration = cooldown;
     _personnage       = personnage;
 }
 public override bool OverrideOwnership(Item item, AttackEntity weapon)
 {
     if (item.info.shortname == "skull.human")
     {
         PlayerCorpse component = base.GetComponent <PlayerCorpse>();
         if (component)
         {
             item.name = string.Concat("Skull of \"", component.playerName, "\"");
             return(true);
         }
     }
     return(false);
 }
 public override bool OverrideOwnership(Item item, AttackEntity weapon)
 {
     if (item.info.shortname == "skull.human")
     {
         PlayerCorpse component = GetComponent <PlayerCorpse>();
         if ((bool)component)
         {
             item.name = CreateSkullName(component.playerName);
             return(true);
         }
     }
     return(false);
 }
Exemplo n.º 11
0
 public override bool OverrideOwnership(Item item, AttackEntity weapon)
 {
     if (item.info.shortname == "skull.human")
     {
         PlayerCorpse component = (PlayerCorpse)((Component)this).GetComponent <PlayerCorpse>();
         if (Object.op_Implicit((Object)component))
         {
             item.name = "Skull of \"" + component.playerName + "\"";
             return(true);
         }
     }
     return(false);
 }
Exemplo n.º 12
0
    public virtual void AttemptReload()
    {
        AttackEntity attackEntity = this.GetAttackEntity();

        if (attackEntity == null)
        {
            return;
        }
        if (attackEntity.CanReload())
        {
            attackEntity.ServerReload();
        }
    }
Exemplo n.º 13
0
    public virtual bool ShotTest()
    {
        AttackEntity heldEntity = base.GetHeldEntity() as AttackEntity;

        if (heldEntity == null)
        {
            return(false);
        }
        BaseProjectile baseProjectile = heldEntity as BaseProjectile;

        if (baseProjectile)
        {
            if (baseProjectile.primaryMagazine.contents <= 0)
            {
                baseProjectile.ServerReload();
                NPCPlayerApex nPCPlayerApex = this as NPCPlayerApex;
                if (nPCPlayerApex && nPCPlayerApex.OnReload != null)
                {
                    nPCPlayerApex.OnReload();
                }
                return(false);
            }
            if (baseProjectile.NextAttackTime > Time.time)
            {
                return(false);
            }
        }
        if (Mathf.Approximately(heldEntity.attackLengthMin, -1f))
        {
            heldEntity.ServerUse(this.damageScale);
            this.lastGunShotTime = Time.time;
            return(true);
        }
        NPCPlayer nPCPlayer = this;

        if (base.IsInvoking(new Action(nPCPlayer.TriggerDown)))
        {
            return(true);
        }
        if (Time.time < this.nextTriggerTime)
        {
            return(true);
        }
        NPCPlayer nPCPlayer1 = this;

        base.InvokeRepeating(new Action(nPCPlayer1.TriggerDown), 0f, 0.01f);
        this.triggerEndTime = Time.time + UnityEngine.Random.Range(heldEntity.attackLengthMin, heldEntity.attackLengthMax);
        this.TriggerDown();
        return(true);
    }
Exemplo n.º 14
0
 // Use this for initialization
 void Start()
 {
     dead         = false;
     new_target   = false;
     moving       = false;
     entityTarget = null;
     attackTarget = false;
     asset.animatorFloat("Direction", -1);
     if (orc)
     {
         ;
         ManagerOrcs.instance.Add(this);
     }
 }
Exemplo n.º 15
0
    void OnCollisionEnter2D(Collision2D coll)
    {
        AttackEntity    enemy = coll.gameObject.GetComponent <AttackEntity> ();
        HumanController human = GetComponent <HumanController> ();
        OrcController   orc   = GetComponent <OrcController> ();

        if (human && enemy && enemy.alliance != alliance)
        {
            human.entitySelect = enemy;
        }
        if (orc && enemy && enemy.alliance != alliance)
        {
            orc.entityTarget = enemy;
        }
    }
Exemplo n.º 16
0
 void Start()
 {
     this.moving = false;
     this.asset.animatorSetSpeed(0);
     this.asset.animatorFloat("Direction", -1);
     this.new_target     = false;
     this.entityIsTarget = false;
     this.entitySelect   = null;
     this.entityIsTarget = false;
     if (human)
     {
         ManagerHumans.instance.Add(this);
         ManagerOrcs.instance.AddToFightList(this);
     }
 }
        public void Tick(IHTNAgent npc, float deltaTime, float time)
        {
            ScientistJunkpileContext npcContext = npc.AiDomain.NpcContext as ScientistJunkpileContext;

            if (npcContext == null)
            {
                return;
            }
            HTNPlayer hTNPlayer = npc as HTNPlayer;

            if (hTNPlayer == null)
            {
                return;
            }
            FireTactic   fireTactic = FireTactic.Single;
            AttackEntity heldEntity = hTNPlayer.GetHeldEntity() as AttackEntity;

            if (heldEntity)
            {
                BaseProjectile baseProjectile = heldEntity as BaseProjectile;
                float          sqrDistance    = Single.MaxValue;
                if (npcContext.PrimaryEnemyPlayerInLineOfSight.Player != null)
                {
                    sqrDistance = npcContext.PrimaryEnemyPlayerInLineOfSight.SqrDistance;
                    if (Mathf.Approximately(sqrDistance, 0f))
                    {
                        sqrDistance = Single.MaxValue;
                    }
                }
                else if (npcContext.Memory.PrimaryKnownAnimal.Animal != null)
                {
                    sqrDistance = npcContext.Memory.PrimaryKnownAnimal.SqrDistance;
                    if (Mathf.Approximately(sqrDistance, 0f))
                    {
                        sqrDistance = Single.MaxValue;
                    }
                }
                if (heldEntity.attackLengthMin < 0f || sqrDistance > npcContext.Body.AiDefinition.Engagement.SqrCloseRangeFirearm(baseProjectile))
                {
                    fireTactic = (heldEntity.attackLengthMin <0f || sqrDistance> npcContext.Body.AiDefinition.Engagement.SqrMediumRangeFirearm(baseProjectile) ? FireTactic.Single : FireTactic.Burst);
                }
                else
                {
                    fireTactic = FireTactic.FullAuto;
                }
            }
            npcContext.SetFact(Facts.FireTactic, fireTactic, true, true, true);
        }
Exemplo n.º 18
0
        public void Tick(IHTNAgent npc, float deltaTime, float time)
        {
            ScientistContext npcContext = npc.AiDomain.NpcContext as ScientistContext;

            if (npcContext == null)
            {
                return;
            }
            HTNPlayer htnPlayer = npc as HTNPlayer;

            if (Object.op_Equality((Object)htnPlayer, (Object)null))
            {
                return;
            }
            AttackEntity heldEntity = htnPlayer.GetHeldEntity() as AttackEntity;

            if (Object.op_Implicit((Object)heldEntity))
            {
                BaseProjectile baseProjectile = heldEntity as BaseProjectile;
                if (Object.op_Inequality((Object)baseProjectile, (Object)null))
                {
                    float num = (float)baseProjectile.primaryMagazine.contents / (float)baseProjectile.primaryMagazine.capacity;
                    if ((double)num > 0.899999976158142)
                    {
                        npcContext.SetFact(Rust.Ai.HTN.Scientist.Facts.AmmoState, AmmoState.FullClip, true, true, true);
                        return;
                    }
                    if ((double)num > 0.600000023841858)
                    {
                        npcContext.SetFact(Rust.Ai.HTN.Scientist.Facts.AmmoState, AmmoState.HighClip, true, true, true);
                        return;
                    }
                    if ((double)num > 0.170000001788139)
                    {
                        npcContext.SetFact(Rust.Ai.HTN.Scientist.Facts.AmmoState, AmmoState.MediumClip, true, true, true);
                        return;
                    }
                    if ((double)num > 0.0)
                    {
                        npcContext.SetFact(Rust.Ai.HTN.Scientist.Facts.AmmoState, AmmoState.LowAmmo, true, true, true);
                        return;
                    }
                    npcContext.SetFact(Rust.Ai.HTN.Scientist.Facts.AmmoState, AmmoState.EmptyClip, true, true, true);
                    return;
                }
            }
            npcContext.SetFact(Rust.Ai.HTN.Scientist.Facts.AmmoState, AmmoState.DontRequireAmmo, true, true, true);
        }
Exemplo n.º 19
0
        public void Tick(IHTNAgent npc, float deltaTime, float time)
        {
            ScientistContext npcContext = npc.AiDomain.NpcContext as ScientistContext;

            if (npcContext == null)
            {
                return;
            }
            HTNPlayer hTNPlayer = npc as HTNPlayer;

            if (hTNPlayer == null)
            {
                return;
            }
            AttackEntity heldEntity = hTNPlayer.GetHeldEntity() as AttackEntity;

            if (heldEntity)
            {
                BaseProjectile baseProjectile = heldEntity as BaseProjectile;
                if (baseProjectile != null)
                {
                    float single = (float)baseProjectile.primaryMagazine.contents / (float)baseProjectile.primaryMagazine.capacity;
                    if (single > 0.9f)
                    {
                        npcContext.SetFact(Facts.AmmoState, AmmoState.FullClip, true, true, true);
                        return;
                    }
                    if (single > 0.6f)
                    {
                        npcContext.SetFact(Facts.AmmoState, AmmoState.HighClip, true, true, true);
                        return;
                    }
                    if (single > 0.17f)
                    {
                        npcContext.SetFact(Facts.AmmoState, AmmoState.MediumClip, true, true, true);
                        return;
                    }
                    if (single > 0f)
                    {
                        npcContext.SetFact(Facts.AmmoState, AmmoState.LowAmmo, true, true, true);
                        return;
                    }
                    npcContext.SetFact(Facts.AmmoState, AmmoState.EmptyClip, true, true, true);
                    return;
                }
            }
            npcContext.SetFact(Facts.AmmoState, AmmoState.DontRequireAmmo, true, true, true);
        }
Exemplo n.º 20
0
    public virtual void TriggerDown()
    {
        AttackEntity heldEntity = base.GetHeldEntity() as AttackEntity;

        if (heldEntity != null)
        {
            heldEntity.ServerUse(this.damageScale);
        }
        this.lastGunShotTime = Time.time;
        if (Time.time > this.triggerEndTime)
        {
            NPCPlayer nPCPlayer = this;
            base.CancelInvoke(new Action(nPCPlayer.TriggerDown));
            this.nextTriggerTime = Time.time + (heldEntity != null ? heldEntity.attackSpacing : 1f);
        }
    }
Exemplo n.º 21
0
    public virtual void TriggerDown()
    {
        AttackEntity heldEntity = this.GetHeldEntity() as AttackEntity;

        if (Object.op_Inequality((Object)heldEntity, (Object)null))
        {
            heldEntity.ServerUse(this.damageScale);
        }
        this.lastGunShotTime = Time.get_time();
        if ((double)Time.get_time() <= (double)this.triggerEndTime)
        {
            return;
        }
        this.CancelInvoke(new Action(this.TriggerDown));
        this.nextTriggerTime = Time.get_time() + (Object.op_Inequality((Object)heldEntity, (Object)null) ? heldEntity.attackSpacing : 1f);
    }
Exemplo n.º 22
0
    public BaseProjectile GetGun()
    {
        AttackEntity heldEntity = this.GetHeldEntity() as AttackEntity;

        if (Object.op_Equality((Object)heldEntity, (Object)null))
        {
            return((BaseProjectile)null);
        }
        BaseProjectile baseProjectile = heldEntity as BaseProjectile;

        if (Object.op_Implicit((Object)baseProjectile))
        {
            return(baseProjectile);
        }
        return((BaseProjectile)null);
    }
Exemplo n.º 23
0
    public virtual void SetAimDirection(Vector3 newAim)
    {
        if (newAim == Vector3.zero)
        {
            return;
        }
        AttackEntity attackEntity = this.GetAttackEntity();

        if (attackEntity)
        {
            newAim = attackEntity.ModifyAIAim(newAim, 1f);
        }
        this.eyes.rotation  = Quaternion.LookRotation(newAim, Vector3.up);
        this.viewAngles     = this.eyes.rotation.eulerAngles;
        this.ServerRotation = this.eyes.rotation;
    }
Exemplo n.º 24
0
    public BaseProjectile GetGun()
    {
        AttackEntity heldEntity = base.GetHeldEntity() as AttackEntity;

        if (heldEntity == null)
        {
            return(null);
        }
        BaseProjectile baseProjectile = heldEntity as BaseProjectile;

        if (baseProjectile)
        {
            return(baseProjectile);
        }
        return(null);
    }
Exemplo n.º 25
0
    public bool MeleeAttack()
    {
        AttackEntity heldEntity = this.GetHeldEntity() as AttackEntity;

        if (Object.op_Equality((Object)heldEntity, (Object)null))
        {
            return(false);
        }
        BaseMelee baseMelee = heldEntity as BaseMelee;

        if (Object.op_Equality((Object)baseMelee, (Object)null))
        {
            return(false);
        }
        baseMelee.ServerUse(this.damageScale);
        return(true);
    }
Exemplo n.º 26
0
    private void GiveResourceFromItem(
        BaseEntity entity,
        ItemAmount itemAmt,
        float gatherDamage,
        float destroyFraction,
        AttackEntity attackWeapon)
    {
        if ((double)itemAmt.amount == 0.0)
        {
            return;
        }
        float num1 = Mathf.Min(gatherDamage, this.baseEntity.Health()) / this.baseEntity.MaxHealth();
        float num2 = itemAmt.startAmount / this.startingItemCounts;
        float num3 = Mathf.Clamp(itemAmt.startAmount * num1 / num2, 0.0f, itemAmt.amount);
        float num4 = (float)((double)num3 * (double)destroyFraction * 2.0);

        if ((double)itemAmt.amount <= (double)num3 + (double)num4)
        {
            float num5 = (num3 + num4) / itemAmt.amount;
            num3 /= num5;
            num4 /= num5;
        }
        itemAmt.amount -= Mathf.Floor(num3);
        itemAmt.amount -= Mathf.Floor(num4);
        if ((double)num3 < 1.0)
        {
            num3           = (double)Random.Range(0.0f, 1f) <= (double)num3 ? 1f : 0.0f;
            itemAmt.amount = 0.0f;
        }
        if ((double)itemAmt.amount < 0.0)
        {
            itemAmt.amount = 0.0f;
        }
        if ((double)num3 < 1.0)
        {
            return;
        }
        Item byItemId = ItemManager.CreateByItemID(itemAmt.itemid, Mathf.FloorToInt(num3), 0UL);

        if (byItemId == null || Interface.CallHook("OnDispenserGather", (object)this, (object)entity, (object)byItemId) != null)
        {
            return;
        }
        this.OverrideOwnership(byItemId, attackWeapon);
        entity.GiveItem(byItemId, BaseEntity.GiveItemReason.ResourceHarvested);
    }
Exemplo n.º 27
0
    public bool MeleeAttack()
    {
        AttackEntity heldEntity = base.GetHeldEntity() as AttackEntity;

        if (heldEntity == null)
        {
            return(false);
        }
        BaseMelee baseMelee = heldEntity as BaseMelee;

        if (baseMelee == null)
        {
            return(false);
        }
        baseMelee.ServerUse(this.damageScale);
        return(true);
    }
Exemplo n.º 28
0
        public override void DoExecute(BaseContext c)
        {
            BasePlayer aIAgent = c.AIAgent as BasePlayer;

            if (aIAgent != null)
            {
                AttackEntity heldEntity = aIAgent.GetHeldEntity() as AttackEntity;
                if (heldEntity != null)
                {
                    BaseProjectile baseProjectile = heldEntity as BaseProjectile;
                    if (baseProjectile)
                    {
                        baseProjectile.ServerReload();
                    }
                }
            }
        }
Exemplo n.º 29
0
    public virtual void SetAimDirection(Vector3 newAim)
    {
        if (Vector3.op_Equality(newAim, Vector3.get_zero()))
        {
            return;
        }
        AttackEntity attackEntity = this.GetAttackEntity();

        if (Object.op_Implicit((Object)attackEntity))
        {
            newAim = attackEntity.ModifyAIAim(newAim, 1f);
        }
        this.eyes.rotation = Quaternion.LookRotation(newAim, Vector3.get_up());
        Quaternion rotation = this.eyes.rotation;

        this.viewAngles     = ((Quaternion) ref rotation).get_eulerAngles();
        this.ServerRotation = this.eyes.rotation;
    }
Exemplo n.º 30
0
    public virtual void EquipWeapon()
    {
        Item slot = this.inventory.containerBelt.GetSlot(0);

        if (slot != null)
        {
            base.UpdateActiveItem(this.inventory.containerBelt.GetSlot(0).uid);
            BaseEntity heldEntity = slot.GetHeldEntity();
            if (heldEntity != null)
            {
                AttackEntity component = heldEntity.GetComponent <AttackEntity>();
                if (component != null)
                {
                    component.TopUpAmmo();
                }
            }
        }
    }
Exemplo n.º 31
0
    public void Log(AttackEntity weapon, Projectile projectile, string description = null)
    {
        Event val = default(Event);

        val.time        = UnityEngine.Time.realtimeSinceStartup;
        val.attacker_id = (((bool)player && player.net != null) ? player.net.ID : 0u);
        val.target_id   = 0u;
        val.attacker    = "you";
        val.target      = "N/A";
        val.weapon      = (weapon ? weapon.name : "N/A");
        val.ammo        = (projectile ? projectile.name : "N/A");
        val.bone        = "N/A";
        val.area        = (HitArea)0;
        val.distance    = 0f;
        val.health_old  = 0f;
        val.health_new  = 0f;
        val.info        = ((description != null) ? description : string.Empty);
        Log(val);
    }