public Creature() { displayname = "Unknown"; image = null; skin = null; itemdrops = new List<ItemDrop>(); }
private static Creature createCreature(SQLiteDataReader reader) { SQLiteCommand command; if (!reader.Read()) { return null; } Creature cr = new Creature(); cr.permanent = true; cr.id = reader.GetInt32(0); cr.displayname = reader["name"].ToString(); cr.health = reader.IsDBNull(2) ? DATABASE_NULL : reader.GetInt32(2); cr.experience = reader.IsDBNull(3) ? DATABASE_NULL : reader.GetInt32(3); cr.maxdamage = reader.IsDBNull(4) ? DATABASE_NULL : reader.GetInt32(4); cr.summoncost = reader.IsDBNull(5) ? DATABASE_NULL : reader.GetInt32(5); cr.illusionable = reader.GetBoolean(6); cr.pushable = reader.GetBoolean(7); cr.pushes = reader.GetBoolean(8); cr.res_phys = reader.IsDBNull(9) ? 100 : reader.GetInt32(9); cr.res_holy = reader.IsDBNull(10) ? 100 : reader.GetInt32(10); cr.res_death = reader.IsDBNull(11) ? 100 : reader.GetInt32(11); cr.res_fire = reader.IsDBNull(12) ? 100 : reader.GetInt32(12); cr.res_energy = reader.IsDBNull(13) ? 100 : reader.GetInt32(13); cr.res_ice = reader.IsDBNull(14) ? 100 : reader.GetInt32(14); cr.res_earth = reader.IsDBNull(15) ? 100 : reader.GetInt32(15); cr.res_drown = reader.IsDBNull(16) ? 100 : reader.GetInt32(16); cr.res_lifedrain = reader.IsDBNull(17) ? 100 : reader.GetInt32(17); cr.paralysable = reader.GetBoolean(18); cr.senseinvis = reader.GetBoolean(19); cr.abilities = reader.IsDBNull(20) ? DATABASE_STRING_NULL : reader["abilities"].ToString(); cr.title = reader[21].ToString(); cr.speed = reader.IsDBNull(22) ? DATABASE_NULL : reader.GetInt32(22); cr.armor = reader.IsDBNull(23) ? DATABASE_NULL : reader.GetInt32(23); cr.boss = reader.GetInt32(24) > 0; if (reader.IsDBNull(25)) { return null; } cr.image = Image.FromStream(reader.GetStream(25)); command = new SQLiteCommand(String.Format("SELECT skinitemid, knifeitemid, percentage FROM Skins WHERE creatureid={0}", cr.id), mainForm.conn); reader = command.ExecuteReader(); while (reader.Read()) { Skin skin = new Skin(); skin.dropitemid = reader.GetInt32(0); skin.skinitemid = reader.GetInt32(1); skin.percentage = reader.IsDBNull(2) ? DATABASE_NULL : reader.GetFloat(2); cr.skin = skin; } command = new SQLiteCommand(String.Format("SELECT itemid, percentage, min, max FROM CreatureDrops WHERE creatureid={0}", cr.id), mainForm.conn); reader = command.ExecuteReader(); while (reader.Read()) { ItemDrop itemDrop = new ItemDrop(); itemDrop.creatureid = cr.id; itemDrop.itemid = reader.GetInt32(0); itemDrop.percentage = reader.IsDBNull(1) ? DATABASE_NULL : reader.GetFloat(1); if (itemDrop.percentage > 100) { itemDrop.min = 1; itemDrop.max = (int)(itemDrop.percentage / 100.0 * 2.0); itemDrop.percentage = 100; } else { itemDrop.min = Math.Max(reader.GetInt32(2), 1); itemDrop.max = Math.Max(reader.GetInt32(3), itemDrop.min); } cr.itemdrops.Add(itemDrop); } return cr; }