Ejemplo n.º 1
0
 public virtual void ShootAtTarget(GuardJobInstance instance, ref NPCBase.NPCState state)
 {
     if (state.Inventory.TryRemove(GuardSettings.ShootItem))
     {
         if (GuardSettings.OnShootAudio != null)
         {
             AudioManager.SendAudio(instance.Position.Vector, GuardSettings.OnShootAudio);
         }
         if (GuardSettings.OnHitAudio != null)
         {
             AudioManager.SendAudio(instance.Target.PositionToAimFor, GuardSettings.OnHitAudio);
         }
         UnityEngine.Vector3 start         = instance.Position.Add(0, 1, 0).Vector;
         UnityEngine.Vector3 end           = instance.Target.PositionToAimFor;
         UnityEngine.Vector3 dirNormalized = (end - start).normalized;
         ServerManager.SendParticleTrail(start + dirNormalized * 0.15f, end - dirNormalized * 0.15f, Pipliz.Random.NextFloat(1.5f, 2.5f));
         instance.Target.OnHit(GuardSettings.Damage, instance.NPC, ModLoader.OnHitData.EHitSourceType.NPC);
         state.SetIndicator(new IndicatorState(GuardSettings.CooldownShot, GuardSettings.ShootItem[0].Type));
         if (GuardSettings.OnShootResultItem.item.Type > 0 && Pipliz.Random.NextDouble(0.0, 1.0) <= (double)GuardSettings.OnShootResultItem.chance)
         {
             instance.Owner.Stockpile.Add(GuardSettings.OnShootResultItem.item);
         }
     }
     else
     {
         var items             = GuardSettings.ShootItem.Select(i => new StoredItem(i.Type, i.Amount * 50)).ToArray();
         var getitemsfromCrate = new GetItemsFromCrateGoal(instance, JobSettings, this, items);
         JobSettings.SetGoal(instance, new PutItemsInCrateGoal(Job, JobSettings, getitemsfromCrate, state.Inventory.Inventory), ref state);
         state.Inventory.Add(items);
     }
 }
Ejemplo n.º 2
0
 public void SetAsGoal()
 {
     if (!Job.NPC.Inventory.Contains(GuardSettings.ShootItem))
     {
         var items             = GuardSettings.ShootItem.Select(i => new StoredItem(i.Type, i.Amount * 50)).ToArray();
         var getitemsfromCrate = new GetItemsFromCrateGoal(Job, JobSettings, this, items);
         JobSettings.SetGoal(Job, getitemsfromCrate, ref Job.NPC.state);
     }
 }
Ejemplo n.º 3
0
        private void Shop(IJob instance, ref NPCBase.NPCState state)
        {
            var items             = GuardSettings.ShootItem.Select(i => new StoredItem(i.Type, i.Amount * 50)).ToArray();
            var getitemsfromCrate = new GetItemsFromCrateGoal(instance, GuardJob.Position, this, items, this);

            PandaJobFactory.SetActiveGoal(instance, new PutItemsInCrateGoal(Job, GuardJob.Position, getitemsfromCrate, state.Inventory.Inventory, this), ref state);
            state.Inventory.Inventory.Clear();
            state.Inventory.Add(items);
        }