public void FairyEnchancementThead() { IsRun = true; ItemFairy FFE = SelectFairyForEnchance(); if (FFE.id == 0) { return; } Thread.Sleep(1000); ItemFairy F1 = GetEquiped(); while (LevelUpForSpirit()) { Thread.Sleep(2200); ItemFairy F2 = GetEquiped(); if (F2.P1 > F1.P1) { RAS.Add(F2.P1 - F1.P1); break; } } Thread.Sleep(2000); ItemFairy FF = GetEquiped(); if (!FF.IsGood() && FF.lvl < 100) { Detach(); } FairyEnchancementThead(); THH.SelfStop("FET:" + CHR.Name); IsRun = false; }
public static ItemFairy LoadEquipedFairy(Character CHR) { ItemFairy NFI = new ItemFairy(CHR); NFI.id = Memory.RD(CHR.HNDL, "BA+GA_OFS+PlayerStruct+Player_EqFairy_Arr+Player_EqFairy_Id"); NFI.lvl = Memory.RD(CHR.HNDL, "BA+GA_OFS+PlayerStruct+Player_EqFairy_Arr+Player_EqFairy_Lvl"); NFI.fsc = Memory.RD(CHR.HNDL, "BA+GA_OFS+PlayerStruct+Player_EqFairy_Arr+Player_EqFairy_FSC"); NFI.P1 = NFI.lvl < 10 ? 0 : NFI.fsc - NFI.lvl + 1; NFI.P2 = NFI.lvl < 10 ? 0 : (NFI.lvl / 10) * 10; NFI.place = 0x17; return(NFI); }
public void LoadFairiesFromInventory() { CHR.GetClass <Inventory>().Load(); FL.Clear(); foreach (ItemInventory i in CHR.GetClass <Inventory>().IL) { if (i.id == 0 || i.ptr == 0 || i.type != 41) { continue; } FL.Add(ItemFairy.LoadInvFairy(i)); } }
public static ItemFairy LoadInvFairy(ItemInventory i) { int FIA = Memory.RD(i.CHR.HNDL, i.ptr + OFS.GetInt("Inventory_Item_Fairy_INF")); ItemFairy NFI = new ItemFairy(i.CHR); NFI.id = i.id; NFI.place = i.place; NFI.lvl = FIA & 0xFF; NFI.fsc = (FIA >> 16) & 0xFF; NFI.P1 = NFI.lvl < 10 ? 0 : NFI.fsc - NFI.lvl + 1; NFI.P2 = NFI.lvl < 10 ? 0 : (NFI.lvl / 10) * 10; return(NFI); }
public Boolean LevelUpForSpirit() { ItemFairy FI = GetEquiped(); if (!FI.IsGood()) { return(false); } int DSU = (int)((double)Level.EXP[FI.lvl] * 0.4 / (FI.lvl < 11 ? 0.5 : Math.Round((double)FI.lvl / (double)CHR.GetVar("LVL"), 2) * 5)); Packet P = new Packet(CHR.HNDL, "71-00-00-00-00-00-01"); P.Copy(DSU, 2, 4); P.Send(); return(true); }
public ItemFairy SelectFairyForEnchance() { if (GetEquiped().id > 0) { int IP = CHR.GetClass <Inventory>().GetFirstFreePlace(); if (IP > 0) { ItemInventory.Equip(CHR.HNDL, IP, 0x17); } } Thread.Sleep(2000); LoadFairiesFromInventory(); ItemFairy BEST = new ItemFairy(CHR); ItemFairy WORST = new ItemFairy(CHR); BEST.P1 = 0; BEST.P2 = 1; WORST.P1 = 1; WORST.P2 = 1; int count = 0; foreach (ItemFairy FI in FL) { if (FI.IsGood()) { if (FI.lvl < 10) { ItemInventory.Equip(CHR.HNDL, FI.place, 0x17); return(FI); } BEST = ((double)FI.P1 / (double)FI.P2 >= (double)BEST.P1 / (double)BEST.P2) ? FI : BEST; WORST = ((double)FI.P1 / (double)FI.P2 < (double)WORST.P1 / (double)WORST.P2) ? FI : WORST; count++; } } if (count == 0) { return(new ItemFairy(CHR)); } BEST = BEST.id == 0 ? WORST : BEST; Boolean RA = RAS.Analize(); (RA ? WORST : BEST).Equip(0x17); return(RA ? WORST : BEST); }
public ItemFairy GetEquiped() { return(ItemFairy.LoadEquipedFairy(CHR)); }