public static void Add(Item item) { Item i = item.ShallowClone(); i.readied = false; i.hidden_names_flag = 0; i.name = i.GenerateName(0); if (library.Contains(i) == false) { library.Add(i); Write(); } }
internal static void halve_items(Item item) { int half_number = item.count / 2; if (half_number > 0) { int half_and_remander = item.count - half_number; Item new_item = item.ShallowClone(); item.count = half_and_remander; new_item.count = half_number; new_item.readied = false; gbl.SelectedPlayer.items.Add(new_item); } else { ovr025.string_print01("Can't halve that"); } }
/*was overloaded */ internal static bool PlayerAddItem(Item item) { bool wouldOverload; if (ovr020.canCarry(item, gbl.SelectedPlayer) == true) { ovr025.string_print01("Overloaded"); wouldOverload = true; } else { wouldOverload = false; gbl.SelectedPlayer.items.Add(item.ShallowClone()); ovr025.reclac_player_values(gbl.SelectedPlayer); } return wouldOverload; }
// sub_3F9DB internal static bool AttackTarget(Item rangedWeapon, int attackType, Player target, Player attacker) { int dir = 0; gbl.focusCombatAreaOnPlayer = true; gbl.display_hitpoints_ac = true; gbl.combat_round_no_action_limit = gbl.combat_round + gbl.combat_round_no_action_value; if (target.actions.AttacksReceived < 2 && attackType == 0) { dir = getTargetDirection(attacker, target); target.actions.direction = (dir + 4) % 8; } else if (ovr033.PlayerOnScreen(false, target) == true) { dir = target.actions.direction; if (attackType == 0) { target.actions.direction = (dir + 4) % 8; } } if (ovr033.PlayerOnScreen(false, target) == true) { ovr033.draw_74B3F(false, Icon.Normal, dir, target); } dir = getTargetDirection(target, attacker); ovr025.CombatDisplayPlayerSummary(attacker); ovr033.draw_74B3F(false, Icon.Attack, dir, attacker); attacker.actions.target = target; seg049.SysDelay(100); if (rangedWeapon != null) { DrawRangedAttack(rangedWeapon, target, attacker); } if (attacker.activeItems.primaryWeapon != null && (attacker.activeItems.primaryWeapon.type == ItemType.Sling || attacker.activeItems.primaryWeapon.type == ItemType.StaffSling)) { DrawRangedAttack(attacker.activeItems.primaryWeapon, target, attacker); } bool turnComplete = true; if (attacker.attack1_AttacksLeft > 0 || attacker.attack2_AttacksLeft > 0) { Player player_bkup = gbl.SelectedPlayer; gbl.SelectedPlayer = attacker; turnComplete = AttackTarget01(rangedWeapon, attackType, target, attacker); if (rangedWeapon != null) { if (rangedWeapon.count > 0) { rangedWeapon.count = gbl.bytes_1D900[1]; } if (rangedWeapon.count == 0) { if (ovr025.is_weapon_ranged_melee(attacker) == true && rangedWeapon.affect_3 != Affects.affect_89) { Item new_item = rangedWeapon.ShallowClone(); new_item.readied = false; gbl.items_pointer.Add(new_item); ovr025.lose_item(rangedWeapon, attacker); gbl.item_ptr = new_item; } else { ovr025.lose_item(rangedWeapon, attacker); } } } ovr025.reclac_player_values(attacker); gbl.SelectedPlayer = player_bkup; } if (turnComplete == true) { ovr025.clear_actions(attacker); } if (ovr033.PlayerOnScreen(false, attacker) == true) { ovr033.draw_74B3F(true, Icon.Attack, attacker.actions.direction, attacker); ovr033.draw_74B3F(false, Icon.Normal, attacker.actions.direction, attacker); } return turnComplete; }