Beispiel #1
0
 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();
     }
 }
Beispiel #2
0
        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");
            }
        }
Beispiel #3
0
        /*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;
        }
Beispiel #4
0
        // 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;
        }