public void CreateInitTable() { try { foreach (BoltModel tmp in Bolts.ToList()) { string zeroTableName = "t_zero_" + tmp.Bolt_id; // 零应力表 string sql1 = "CREATE TABLE IF NOT EXISTS " + zeroTableName + "(Id INTEGER PRIMARY KEY AUTOINCREMENT, " + "Bolt_id VARCHAR NOT NULL, " + "Position INT NOT NULL, " + "Data FLOAT NOT NULL);"; string logTableName = "t_log_" + tmp.Bolt_id; // 测量结果记录表 string sql2 = "CREATE TABLE IF NOT EXISTS " + logTableName + "(Id INTEGER PRIMARY KEY AUTOINCREMENT, " + "Bolt_id VARCHAR NOT NULL, " + "axialForce FLOAT NOT NULL, " + "timeDelay FLOAT NOT NULL, " + "MaxXcorr FLOAT NOT NULL, " + "CurrentTime VARCHAR NOT NULL);"; Execute(sql1); Execute(sql2); } Commit(); } catch (Exception e) { Console.WriteLine("exception:", e.ToString()); Rollback(); } }
private static void AddAmmo(Agent agent, MissionWeapon missionWeapon) { if (missionWeapon.PrimaryItem.ItemType == ItemObject.ItemTypeEnum.Bow) { Mod.Log("Adding arrows"); var ammo = new MissionWeapon(Arrows.GetRandomElement(), Hero.MainHero.ClanBanner); Traverse.Create(agent.Equipment).Field <MissionWeapon[]>("_weaponSlots").Value[3] = ammo; } else { Mod.Log("Adding bolts"); var ammo = new MissionWeapon(Bolts.GetRandomElement(), Hero.MainHero.ClanBanner); Traverse.Create(agent.Equipment).Field <MissionWeapon[]>("_weaponSlots").Value[3] = ammo; } }
// builds a set of 4 weapons that won't include more than 1 bow or shield, nor any lack of ammo internal static Equipment BuildViableEquipmentSet() { //T.Restart(); var gear = new Equipment(); var haveShield = false; var haveBow = false; try { for (var slot = 0; slot < 4; slot++) { EquipmentElement randomElement = default; switch (slot) { case 0: case 1: randomElement = EquipmentItems.GetRandomElement(); break; case 2 when !gear[3].IsEmpty: randomElement = EquipmentItems.Where(x => x.Item.ItemType != ItemObject.ItemTypeEnum.Bow && x.Item.ItemType != ItemObject.ItemTypeEnum.Crossbow).ToList().GetRandomElement(); break; case 2: case 3: randomElement = EquipmentItems.GetRandomElement(); break; } // matches here by obtaining a bow, which then stuffed ammo into [3] if (slot == 3 && !gear[3].IsEmpty) { break; } if (randomElement.Item.ItemType == ItemObject.ItemTypeEnum.Bow || randomElement.Item.ItemType == ItemObject.ItemTypeEnum.Crossbow) { if (slot < 3) { // try again, try harder if (haveBow) { slot--; continue; } haveBow = true; gear[slot] = randomElement; if (randomElement.Item.ItemType == ItemObject.ItemTypeEnum.Bow) { gear[3] = new EquipmentElement(Arrows.ToList()[Rng.Next(0, Arrows.Count)]); } else if (randomElement.Item.ItemType == ItemObject.ItemTypeEnum.Crossbow) { gear[3] = new EquipmentElement(Bolts.ToList()[Rng.Next(0, Bolts.Count)]); } continue; } randomElement = EquipmentItems.Where(x => x.Item.ItemType != ItemObject.ItemTypeEnum.Bow && x.Item.ItemType != ItemObject.ItemTypeEnum.Crossbow).ToList().GetRandomElement(); } if (randomElement.Item.ItemType == ItemObject.ItemTypeEnum.Shield) { // try again, try harder if (haveShield) { slot--; continue; } haveShield = true; } gear[slot] = randomElement; } gear[5] = new EquipmentElement(ItemTypes[ItemObject.ItemTypeEnum.HeadArmor].GetRandomElement()); gear[6] = new EquipmentElement(ItemTypes[ItemObject.ItemTypeEnum.BodyArmor].GetRandomElement()); gear[7] = new EquipmentElement(ItemTypes[ItemObject.ItemTypeEnum.LegArmor].GetRandomElement()); gear[8] = new EquipmentElement(ItemTypes[ItemObject.ItemTypeEnum.HandArmor].GetRandomElement()); gear[9] = new EquipmentElement(ItemTypes[ItemObject.ItemTypeEnum.Cape].GetRandomElement()); //Mod.Log("-----"); //for (var i = 0; i < 10; i++) //{ // Mod.Log(gear[i].Item?.Name); //} } catch (Exception ex) { Mod.Log(ex); } //Mod.Log($"GEAR ==> {T.ElapsedTicks / 10000F:F3}ms"); return(gear.Clone()); }