Exemple #1
0
 /// <summary>
 /// Called when a pet has been unsummoned
 /// </summary>
 /// <param name="uniqueID"></param>
 public void OnPetUnsummoned(SRCoService CoS)
 {
     if (CoS.isAttackPet())
     {
         tUsingHGP.Stop();
     }
 }
Exemple #2
0
 /// <summary>
 /// Called when a pet has been summoned
 /// </summary>
 /// <param name="uniqueID"></param>
 public void OnPetSummoned(SRCoService CoS)
 {
     if (CoS.isAttackPet())
     {
         CheckUsingHGP();
     }
 }
        private void CheckUsingAbnormalPill(object sender, ElapsedEventArgs e)
        {
            Window w = Window.Get;

            if (w.Character_cbxUsePetsPill.Checked)
            {
                // Checking pet bad status for using abnormal
                SRCoService pet = null;
                // As priority pet transport
                pet = InfoManager.MyPets.Find(p => (p.isHorse() || p.isTransport()) && p.BadStatusFlags != SRModel.BadStatus.None);
                if (pet == null)
                {
                    pet = InfoManager.MyPets.Find(p => p.isAttackPet() && p.BadStatusFlags != SRModel.BadStatus.None);
                }
                // At least one pet has bad status
                if (pet != null)
                {
                    byte slot = 0;                     // dummy
                    if (FindItem(3, 2, 7, ref slot))
                    {
                        PacketBuilder.UseItem(InfoManager.Character.Inventory[slot], slot, pet.UniqueID);
                        tUsingAbnormalPill.Start();
                    }
                }
            }
        }
        private void CheckUsingHGP(object sender, ElapsedEventArgs e)
        {
            Window w = Window.Get;

            if (w.Character_cbxUsePetHGP.Checked)
            {
                SRCoService pet = InfoManager.MyPets.Find(p => p.isAttackPet());
                if (pet != null)
                {
                    SRAttackPet atkPet = (SRAttackPet)pet;

                    byte usePercent = 0;
                    w.Character_tbxUsePetHGP.InvokeIfRequired(() => {
                        usePercent = byte.Parse(w.Character_tbxUsePetHGP.Text);
                    });
                    // Check hgp %
                    int HGPPercent = (int)(atkPet.HGP * 0.01);                   // 10000 = 100%
                    if (HGPPercent <= usePercent)
                    {
                        byte slot = 0;
                        if (FindItem(3, 1, 9, ref slot))
                        {
                            PacketBuilder.UseItem(InfoManager.Character.Inventory[slot], slot, pet.UniqueID);
                            tUsingHGP.ResetTimer(1000);
                            return;
                        }
                    }
                    tUsingHGP.ResetTimer(300000);                     // 1% decrease : -100 HGP every 5min
                }
            }
        }
        private void CheckUsingRecoveryKit(object sender, ElapsedEventArgs e)
        {
            // Checking pet using recovery kit by priority
            Window w = Window.Get;

            // Vehicle or Transport
            if (w.Character_cbxUseTransportHP.Checked)
            {
                SRCoService pet = InfoManager.MyPets.Find(p => p.isHorse() || p.isTransport());
                // Check % if there is at least one pet
                if (pet != null)
                {
                    byte useHP = 0;                     // dummy
                    w.Character_tbxUseTransportHP.InvokeIfRequired(() => {
                        useHP = byte.Parse(w.Character_tbxUseTransportHP.Text);
                    });
                    if (pet.GetHPPercent() <= useHP)
                    {
                        byte slot = 0;
                        if (FindItem(3, 1, 4, ref slot))
                        {
                            PacketBuilder.UseItem(InfoManager.Character.Inventory[slot], slot, pet.UniqueID);
                            tUsingRecoveryKit.Start();
                        }
                        return;                         // Avoid checking other pets
                    }
                }
            }

            // Attacking pet
            if (w.Character_cbxUsePetHP.Checked)
            {
                SRCoService pet = InfoManager.MyPets.Find(p => p.isAttackPet());
                // Check % if there is at least one pet
                if (pet != null)
                {
                    byte useHP = 0;                     // dummy
                    w.Character_tbxUsePetHP.InvokeIfRequired(() => {
                        useHP = byte.Parse(w.Character_tbxUsePetHP.Text);
                    });
                    if (pet.GetHPPercent() <= useHP)
                    {
                        byte slot = 0;
                        if (FindItem(3, 1, 4, ref slot))
                        {
                            PacketBuilder.UseItem(InfoManager.Character.Inventory[slot], slot, pet.UniqueID);
                            tUsingRecoveryKit.Start();
                        }
                        return;                         // Avoid checking other pets
                    }
                }
            }
        }