/* sub_5A007 */ internal static Item create_item(ItemType item_type) { byte var_5 = 0; /* Simeon */ int var_4 = -1; Item item = new Item(0, 0, 0, 0, 0, 0, false, 6, false, 0, 0, 0, 0, 0, item_type, false); var type = item.type; if ((type >= ItemType.BattleAxe && type <= ItemType.Shield) || type == ItemType.Arrow || type == ItemType.Bracers || type == ItemType.RingOfProt) { item.plus = randomBonus(); if (item.type == ItemType.Javelin) { int var_1 = ovr024.roll_dice(5, 1); if (var_1 == 5) { var_4 = 6; } item.namenum3 = 0x15; item.namenum2 = item.plus + 0xA1; } else if (item.type == ItemType.Quarrel) { item.namenum3 = 0x1C; item.namenum2 = item.plus + 0xA1; } else if (item.type == ItemType.LeatherArmor || item.type == ItemType.PaddedArmor) { item.namenum3 = (int)item.type; item.namenum2 = 0x31; item.namenum1 = item.plus + 0xA1; item.hidden_names_flag = 4; } else if (item.type == ItemType.StuddedLeather) { item.namenum3 = (int)item.type; item.namenum2 = 0x32; item.namenum1 = item.plus + 0xA1; item.hidden_names_flag = 4; } else if (item.type >= ItemType.RingMail && item.type <= ItemType.PlateMail) { item.namenum3 = (int)item.type; item.namenum2 = 0x30; item.namenum1 = item.plus + 0xA1; item.hidden_names_flag = 4; } else if (item.type == ItemType.Arrow) { item.namenum3 = 0x3D; item.namenum2 = item.plus + 0xA1; } else if (item.type == ItemType.Bracers) { item.namenum3 = 0x4F; item.namenum2 = 0xA7; item.plus = (item.plus << 1) + 2; if (item.plus == 4) { item.namenum1 = 0xdd; } else if (item.plus == 6) { item.namenum1 = 0xde; } } else if (item.type == ItemType.RingOfProt) { item.namenum3 = 0x42; item.namenum2 = 0xE0; item.namenum1 = item.plus + 0xA1; } else { item.namenum3 = (int)item.type; item.namenum2 = item.plus + 0xA1; } item.plus_save = 0; item.count = 0; switch (item.type) { case ItemType.BattleAxe: case ItemType.MilitaryFork: case ItemType.Glaive: case ItemType.BroadSword: item.weight = 75; break; case ItemType.HandAxe: // HandAxe case ItemType.Hammer: case ItemType.Ranseur: case ItemType.Spear: case ItemType.Spetum: case ItemType.QuarterStaff: case ItemType.Trident: case ItemType.CompositeShortBow: case ItemType.ShortBow: case ItemType.LightCrossbow: case ItemType.Shield: item.weight = 50; break; case ItemType.Bardiche: case ItemType.MorningStar: case ItemType.Voulge: item.weight = 0x7D; break; case ItemType.BecDeCorbin: case ItemType.GlaiveGuisarme: case ItemType.Mace: case ItemType.BastardSword: case ItemType.LongBow: case ItemType.HeavyCrossbow: case ItemType.PaddedArmor: item.weight = 100; break; case ItemType.BillGuisarme: case ItemType.Flail: case ItemType.GuisarmeVoulge: case ItemType.LucernHammer: case ItemType.LeatherArmor: item.weight = 0x96; break; case ItemType.BoStick: item.weight = 15; break; case ItemType.Club: item.weight = 0x1E; break; case ItemType.Dagger: case ItemType.Bracers: item.weight = 10; break; case ItemType.Dart: item.weight = 0x19; item.count = 5; break; case ItemType.Fauchard: case ItemType.MilitaryPick: case ItemType.LongSword: item.weight = 0x3C; break; case ItemType.FauchardFork: case ItemType.Guisarme: case ItemType.Partisan: case ItemType.AwlPike: case ItemType.CompositeLongBow: case ItemType.Sling: item.weight = 80; break; case ItemType.Halberd: item.weight = 175; break; case ItemType.Javelin: item.weight = 20; break; case ItemType.JoStick: case ItemType.Scimitar: item.weight = 40; break; case ItemType.ShortSword: item.weight = 35; break; case ItemType.TwoHandedSword: case ItemType.RingMail: item.weight = 250; break; case ItemType.StuddedLeather: item.weight = 0x0C8; break; case ItemType.ScaleMail: case ItemType.SplintMail: item.weight = 400; break; case ItemType.ChainMail: item.weight = 0x12C; break; case ItemType.BandedMail: item.weight = 0x15E; break; case ItemType.PlateMail: item.weight = 450; break; //case 0x2f: //wonder if this should have been 0x3f case ItemType.RingOfProt: item.weight = 1; break; default: item.weight = 40; item.count = 10; break; } if (item.type == ItemType.Shield) { item._value = (short)(item.plus * 2500); } else if (item.type == ItemType.Arrow || item.type == ItemType.Quarrel) { item._value = (short)(item.plus * 150); } else if (item.type == ItemType.RingMail || item.type == ItemType.ScaleMail) { item._value = (short)(item.plus * 3000); } else if (item.type == ItemType.ChainMail || item.type == ItemType.SplintMail) { item._value = (short)(item.plus * 3500); } else if (item.type == ItemType.BandedMail) { item._value = (short)(item.plus * 4000); } else if (item.type == ItemType.PlateMail) { item._value = (short)(item.plus * 5000); } else if (item.type == ItemType.Bracers) { item._value = (short)(item.plus * 3000); } else { item._value = (short)(item.plus * 2000); } } else if (type == ItemType.MUScroll || type == ItemType.ClrcScroll) { byte spellsCount = ovr024.roll_dice(3, 1); if (item.type == ItemType.MUScroll) { item.namenum3 = 0xD1; } else { item.namenum3 = 0xD0; } item.namenum2 = spellsCount + 0xd1; item.namenum1 = 0; item.plus = 1; item.weight = 0x19; item.count = 0; item._value = 0; for (int var_3 = 1; var_3 <= spellsCount; var_3++) { int var_1 = ovr024.roll_dice(5, 1); if (item.type == ItemType.MUScroll) { switch (var_1) { case 1: var_5 = (byte)(ovr024.roll_dice(13, 1) + 8); break; case 2: var_5 = (byte)(ovr024.roll_dice(7, 1) + 28); break; case 3: var_5 = (byte)(ovr024.roll_dice(0x0B, 1) + 44); break; case 4: var_5 = (byte)(ovr024.roll_dice(9, 1) + 80); break; case 5: var_5 = (byte)(ovr024.roll_dice(4, 1) + 90); break; } } else { switch (var_1) { case 1: var_5 = ovr024.roll_dice(8, 1); break; case 2: var_5 = (byte)(ovr024.roll_dice(7, 1) + 0x15); break; case 3: var_5 = (byte)(ovr024.roll_dice(8, 1) + 0x24); break; case 4: var_5 = (byte)(ovr024.roll_dice(5, 1) + 0x41); break; case 5: var_5 = (byte)(ovr024.roll_dice(6, 1) + 0x46); break; } } item.setAffect(var_3, (Affects)var_5); item._value += (short)(var_1 * 300); } } else if (type == ItemType.Gauntlets || type == ItemType.Type_67) { var_4 = 5; } else if (type == ItemType.WandA || type == ItemType.WandB) { var_4 = 4; } else if (type == ItemType.Type_89 || type == ItemType.Cloak) { var_4 = 1; } else if (type == ItemType.Potion) { int var_1 = ovr024.roll_dice(8, 1); if (var_1 >= 1 && var_1 <= 5) { var_4 = 2; } else if (var_1 >= 6 && var_1 <= 8) { var_4 = 0; } } if (var_4 > -1) { item.namenum1 = preconfiiguredItems[var_4, 0]; item.namenum2 = preconfiiguredItems[var_4, 1]; item.namenum3 = preconfiiguredItems[var_4, 2]; item.plus = 1; item.plus_save = 1; item.weight = preconfiiguredItems[var_4, 3]; item.count = 0; item._value = preconfiiguredItems[var_4, 4]; for (int var_3 = 1; var_3 <= 3; var_3++) { item.setAffect(var_3, (Affects)(byte)preconfiiguredItems[var_4, 4 + var_3]); } } ItemLibrary.Add(item); return item; }
/* sub_623FF */ internal static void remove_spell_from_scroll(int affect, Item item, Player player) { int affect_index = 0; for (int index = 1; index <= 3; index++) { if (((int)item.getAffect(index) & 0x7F) == affect) { affect_index = index; } } if (affect_index != 0) { item.setAffect(affect_index, 0); item.namenum2 -= 1; if (item.namenum2 < 0xd2) { ovr025.lose_item(item, player); } } }