예제 #1
0
    public void OnPointerDown(PointerEventData eventData)
    {
        var mouseItem = PlayerController.instance.mouseItem;

        if (mouseItem != null && !CanAccept(mouseItem))
        {
            return;
        }
        Item[] unequipped = PlayerController.instance.equip.Equip(mouseItem, bodyLoc);

        if (mouseItem != null)
        {
            AudioManager.instance.Play(mouseItem.useSound);
        }
        else if (unequipped[0] != null)
        {
            AudioManager.instance.Play(SoundInfo.itemPickup);
        }

        PlayerController.instance.mouseItem = unequipped[0];
        if (unequipped[1] != null)
        {
            if (!PlayerController.instance.inventory.Put(unequipped[1]))
            {
                Pickup.Create(PlayerController.instance.character.transform.position, unequipped[1]);
            }
        }
    }
예제 #2
0
    public void OnPointerDown(PointerEventData eventData)
    {
        var mouseItem = PlayerController.instance.mouseItem;

        if (mouseItem != null && !CanEquip(mouseItem))
        {
            string charClass = PlayerController.instance.charStat.info.classNameLower;
            AudioManager.instance.Play(charClass + "_impossible_1");
            return;
        }

        Item[] unequipped = PlayerController.instance.equip.Equip(mouseItem, bodyLoc);

        if (mouseItem != null)
        {
            AudioManager.instance.Play(mouseItem.useSound);
        }
        else if (unequipped[0] != null)
        {
            AudioManager.instance.Play(SoundInfo.itemPickup);
        }

        PlayerController.instance.mouseItem = unequipped[0];
        if (unequipped[1] != null)
        {
            if (!PlayerController.instance.inventory.Put(unequipped[1]))
            {
                Pickup.Create(PlayerController.instance.character.transform.position, unequipped[1]);
            }
        }
    }
예제 #3
0
 public GasStation(Vector3 position)
 {
     Position   = position;
     _pickup    = Pickup.Create(ObjectModel.Petrolpump, PickupType.ScriptedActionsOnlyEveryFewSeconds, position);
     _textLabel = new TextLabel("Honk the horn\nto refuel your vehicle", Color.Teal, position, 30.0f);
     _mapIcon   = new DynamicMapIcon(position, 56);
 }
예제 #4
0
    static void Drop(string code, Vector3 pos, int itemLevel, QualityFactors qualityFactors = new QualityFactors())
    {
        var treasureClass = TreasureClass.Find(code);

        if (treasureClass == null)
        {
            var item = Item.Create(code);
            if (item == null)
            {
                Debug.LogWarning("Item wasn't spawned: " + code);
                return;
            }
            item.level = itemLevel;
            SelectItemQuality(item, qualityFactors, mf: 1000);
            if (item.quality != Item.Quality.HiQuality &&
                item.quality != Item.Quality.Normal &&
                item.quality != Item.Quality.LowQuality)
            {
                item.identified = false;
            }
            GenerateItemProperties(item);
            GenerateItemQuantity(item);
            Pickup.Create(pos, item);
        }
        else
        {
            Drop(treasureClass, pos, itemLevel, qualityFactors);
        }
    }
예제 #5
0
        public void OnPointerDown(PointerEventData eventData)
        {
            if (_player.HandsItem != null && !CanEquip(_player.HandsItem))
            {
                string charClass = _player.charStatInfo.classNameLower;
                AudioManager.instance.Play(charClass + "_impossible_1");
                return;
            }

            Item[] unequipped = _player.equip.Equip(_player.HandsItem, bodyLoc);

            if (_player.HandsItem != null)
            {
                AudioManager.instance.Play(_player.HandsItem.useSound);
            }
            else if (unequipped[0] != null)
            {
                AudioManager.instance.Play(SoundInfo.itemPickup);
            }

            _player.HandsItem = unequipped[0];
            if (unequipped[1] != null)
            {
                if (!_player.inventory.Put(unequipped[1]))
                {
                    Pickup.Create(_player.transform.position, unequipped[1]);
                }
            }
        }
예제 #6
0
        public static void Drop(SetItem setItem, Vector3 pos)
        {
            var item = Item.Create(setItem.itemCode);

            item.quality    = Item.Quality.Set;
            item.level      = setItem.level;
            item.identified = false;
            GenerateSetItem(item, setItem);
            Pickup.Create(pos, item);
        }
예제 #7
0
        public void TestBuyAndCancel()
        {
            Pickup pickup = Pickup.Create(parameters);

            pickup.Buy("UPS", pickup.pickup_rates[0].service);
            Assert.IsNotNull(pickup.confirmation);

            pickup.Cancel();
            Assert.AreEqual(pickup.status, "canceled");
        }
예제 #8
0
 public void OnGoldButton()
 {
     if (PlayerController.instance.inventory.gold > 0)
     {
         var item = Item.Create("gld");
         item.quantity = PlayerController.instance.inventory.gold;
         Pickup.Create(PlayerController.instance.character.transform.position, item);
         PlayerController.instance.inventory.gold = 0;
     }
 }
예제 #9
0
 public void OnGoldButton()
 {
     if (_player.inventory.gold > 0)
     {
         var item = Item.Create("gld");
         item.quantity = _player.inventory.gold;
         Pickup.Create(_player.transform.position, item);
         _player.inventory.gold = 0;
     }
 }
예제 #10
0
        public static void Drop(UniqueItem uniqueItem, Vector3 pos)
        {
            var item = Item.Create(uniqueItem.code);

            item.quality    = Item.Quality.Unique;
            item.level      = uniqueItem.level;
            item.identified = false;
            GenerateUnique(item, uniqueItem);
            Pickup.Create(pos, item);
        }
예제 #11
0
        public void TestCreateAndRetrieve()
        {
            Pickup pickup = Pickup.Create(parameters);

            Assert.IsNotNull(pickup.id);
            Assert.AreEqual(pickup.address.street1, "164 Townsend Street");

            Pickup retrieved = Pickup.Retrieve(pickup.id);

            Assert.AreEqual(pickup.id, retrieved.id);
        }
예제 #12
0
        public void TestBuyAndCancel()
        {
            Pickup pickup = Pickup.Create(parameters);

            pickup.Buy(pickup.pickup_rates[0].carrier, pickup.pickup_rates[0].service);
            Assert.IsNotNull(pickup.confirmation);

            // XXX: This isn't working.
            //pickup.Cancel();
            //Assert.AreEqual(pickup.status, "canceled");
        }
예제 #13
0
 public void Captured(Player player, bool takeInPosBase = true)
 {
     Flag.IsPositionBase = false;
     Flag.AttachedObject(player);
     Flag.PlayerCaptured = player;
     player.JumpTime     = 0;
     if (player.IsEnableSpeed())
     {
         player.SpeedTime = 0;
         player.ClearAnimations();
     }
     if (player.IsEnableInvisible())
     {
         player.InvisibleTime = 0;
         player.DisableInvisibility();
     }
     if (player.IsInvisible)
     {
         player.DisableInvisibility();
         player.IsInvisible = false;
     }
     if (takeInPosBase)
     {
         PickupInfo         = Pickup.Create(1239, 1, Flag.PositionBase);
         PickupInfo.PickUp += OnPickUp;
         BasePlayer.SendClientMessageToAll($"{OtherColor}[Team {NameTeam}]: {player.Name} capturó la bandera {NameColor} del equipo {NameTeam}.");
         player.SendClientMessage($"{Color.Pink}[!]: {Color.White}Capturaste la bandera, debes llevarla a tu base.");
         player.UpdateAdrenaline(4, "capturar la bandera");
         BasePlayer.GameTextForAll($"~n~~n~~n~{ColorGameText}la bandera {NameColor} fue capturada!", 5000, 3);
     }
     else
     {
         BasePlayer.SendClientMessageToAll($"{OtherColor}[Team {NameTeam}]: {player.Name} tomó la bandera {NameColor} del equipo {NameTeam}.");
         player.SendClientMessage($"{Color.Pink}[!]: {Color.White}Debes llevar esa bandera a tu base.");
         BasePlayer.GameTextForAll($"~n~~n~~n~{ColorGameText}la bandera {NameColor} fue tomada!", 5000, 3);
         Timer.Stop();
     }
     player.GameText($"~n~~n~~n~{ColorGameText}lleva la bandera {NameColor} a tu base!", 5000, 3);
 }
예제 #14
0
        void ControlCharacter()
        {
            if (player == null)
            {
                return;
            }

            DrawDebugPath();

            if (player.HandsItem != null)
            {
                if (Input.GetMouseButtonDown(0))
                {
                    Pickup.Create(player.transform.position, player.HandsItem);
                    FlushInput();
                    player.HandsItem = null;
                }
                return;
            }

            usingSkills = false;
            for (int i = 0; i < hotSkills.Count; ++i)
            {
                SkillInfo skill = hotSkills[i];
                KeyCode   key   = hotSkillsBindings[i];
                if (skill == null || !Input.GetKey(key))
                {
                    continue;
                }

                usingSkills = true;
                if (MouseSelection.instance.HotEntity != null)
                {
                    var targetCharacter = MouseSelection.instance.HotEntity.GetComponent <Character>();
                    if (targetCharacter != null)
                    {
                        player.character.UseSkill(skill, targetCharacter);
                    }
                    else
                    {
                        player.character.UseSkill(skill, Iso.MapToIso(MouseSelection.instance.HotEntity.transform.position));
                    }
                }
                else
                {
                    player.character.UseSkill(skill, IsoInput.mousePosition);
                }
            }

            if (!usingSkills)
            {
                if (Input.GetMouseButton(1) || (Input.GetKey(KeyCode.LeftShift) && Input.GetMouseButton(0)))
                {
                    player.character.UseSkill(rightSkill, IsoInput.mousePosition);
                }
                else if (Input.GetMouseButton(0))
                {
                    if (MouseSelection.instance.HotEntity != null)
                    {
                        var targetCharacter = MouseSelection.instance.HotEntity.GetComponent <Character>();
                        if (targetCharacter != null)
                        {
                            if (targetCharacter.monStat != null && targetCharacter.monStat.npc)
                            {
                                // todo interact with npc
                            }
                            else
                            {
                                player.character.UseSkill(leftSkill, targetCharacter);
                            }
                        }
                        else
                        {
                            player.character.Use(MouseSelection.instance.HotEntity);
                        }
                    }
                    else
                    {
                        player.character.GoTo(IsoInput.mousePosition);
                    }
                }
            }

            player.character.run = run;
        }
예제 #15
0
        void Execute(string input)
        {
            if (input == "")
            {
                return;
            }

            if (history.Count == 0 || history[history.Count - 1] != input)
            {
                history.Add(input);
            }

            string[] parts = input.Split(' ');
            if (parts.Length >= 2 && parts[0] == "/spawn")
            {
                var pos = Iso.MapToWorld(IsoInput.mouseTile);
                if (parts[1] == "pickup")
                {
                    string flippyFile = @"data\global\items\flp" + parts[2] + ".dc6";
                    Pickup.Create(pos, flippyFile, flippyFile);
                    return;
                }

                if (parts[1] == "item")
                {
                    string subname    = parts[2].ToLower();
                    var    uniqueItem = UniqueItem.sheet.Find(s => s.nameStr.ToLower().Contains(subname));
                    if (uniqueItem != null)
                    {
                        ItemDrop.Drop(uniqueItem, pos);
                    }
                    else
                    {
                        string code = parts[2];
                        ItemDrop.Drop(code, pos, 100);
                    }

                    return;
                }

                if (parts[1] == "itemset")
                {
                    string subname = parts[2].ToLower();
                    var    set     = ItemSet.sheet.Find(s => s.id.ToLower().Contains(subname));
                    if (set != null)
                    {
                        foreach (var setItem in set.items)
                        {
                            ItemDrop.Drop(setItem, pos);
                        }
                    }
                    return;
                }

                var id = parts[1];

                var objectInfo = ObjectInfo.Find(id);
                if (objectInfo != null)
                {
                    var obj = WorldBuilder.SpawnObject(objectInfo, pos, fit: true);
                    if (obj != null && parts.Length > 2)
                    {
                        obj.modeName = parts[2];
                    }
                }
                else
                {
                    int monsterCount = parts.Length > 2 ? int.Parse(parts[2]) : 1;
                    for (int i = 0; i < monsterCount; ++i)
                    {
                        WorldBuilder.SpawnMonster(id, pos);
                    }
                }
            }
            else if (parts.Length == 2 && parts[0] == "/act")
            {
                if (int.TryParse(parts[1], out int actNumber))
                {
                    WorldBuilder.GoToAct(actNumber);
                }
            }
            else if (parts.Length == 2 && parts[0] == "/addstate")
            {
                string stateCode = parts[1];
                var    stateInfo = StateInfo.FindByCode(stateCode);
                if (stateInfo != null)
                {
                    var player = WorldState.instance.Player.gameObject;
                    Overlay.Create(player, stateInfo.castoverlay, loop: false);
                    Overlay.Create(player, stateInfo.overlay1, loop: true);
                    Overlay.Create(player, stateInfo.overlay2, loop: true);
                    Overlay.Create(player, stateInfo.overlay3, loop: true);
                    Overlay.Create(player, stateInfo.overlay4, loop: true);
                }
            }
            else
            {
                Debug.LogWarning(input);
            }
        }
예제 #16
0
    void ControlCharacter()
    {
        if (character == null)
        {
            return;
        }

        DrawDebugPath();

        if (_mouseItem != null)
        {
            if (Input.GetMouseButtonDown(0))
            {
                Pickup.Create(character.transform.position, _mouseItem);
                FlushInput();
                mouseItem = null;
            }
            return;
        }

        usingSkills = false;
        for (int i = 0; i < hotSkills.Count; ++i)
        {
            SkillInfo skill = hotSkills[i];
            KeyCode   key   = hotSkillsBindings[i];
            if (skill == null || !Input.GetKey(key))
            {
                continue;
            }

            usingSkills = true;
            if (MouseSelection.current != null)
            {
                var targetCharacter = MouseSelection.current.GetComponent <Character>();
                if (targetCharacter != null)
                {
                    character.UseSkill(skill, targetCharacter);
                }
                else
                {
                    character.UseSkill(skill, Iso.MapToIso(MouseSelection.current.transform.position));
                }
            }
            else
            {
                character.UseSkill(skill, IsoInput.mousePosition);
            }
        }

        // move to PlayerController members once Datasheets loading done not in static section
        SkillInfo leftSkill  = SkillInfo.Attack;
        SkillInfo rightSkill = SkillInfo.Attack;

        if (!usingSkills)
        {
            if (Input.GetMouseButton(1) || (Input.GetKey(KeyCode.LeftShift) && Input.GetMouseButton(0)))
            {
                character.UseSkill(rightSkill, IsoInput.mousePosition);
            }
            else if (Input.GetMouseButton(0) && !EventSystem.current.IsPointerOverGameObject())
            {
                if (MouseSelection.current != null)
                {
                    var targetCharacter = MouseSelection.current.GetComponent <Character>();
                    if (targetCharacter != null)
                    {
                        if (targetCharacter.monStat != null && targetCharacter.monStat.npc)
                        {
                            // todo interact with npc
                        }
                        else
                        {
                            character.UseSkill(leftSkill, targetCharacter);
                        }
                    }
                    else
                    {
                        character.Use(MouseSelection.current);
                    }
                }
                else
                {
                    character.GoTo(IsoInput.mousePosition);
                }
            }
            else
            {
                character.LookAt(IsoInput.mousePosition);
            }
        }

        character.run = run;
    }
예제 #17
0
    void Process(string input)
    {
        if (input == "")
        {
            return;
        }

        if (history.Count == 0 || history[history.Count - 1] != input)
        {
            history.Add(input);
        }

        string[] parts = input.Split(' ');
        if (parts.Length >= 2 && parts[0] == "/spawn")
        {
            var pos = Iso.MapToWorld(IsoInput.mouseTile);
            if (parts[1] == "pickup")
            {
                string flippyFile = @"data\global\items\flp" + parts[2] + ".dc6";
                Pickup.Create(pos, flippyFile, flippyFile);
                return;
            }

            if (parts[1] == "item")
            {
                string code = parts[2];
                ItemDrop.Drop(code, pos, 100);
                return;
            }

            if (parts[1] == "itemset")
            {
                string subname = parts[2];
                var    set     = ItemSet.sheet.Find(s => s.id.ToLower().Contains(subname));
                if (set != null)
                {
                    foreach (var setItem in set.items)
                    {
                        var item = Item.Create(setItem.itemCode);
                        item.quality    = Item.Quality.Set;
                        item.level      = setItem.level;
                        item.identified = false;
                        ItemDrop.GenerateSetItem(item);
                        Pickup.Create(pos, item);
                    }
                }
                return;
            }

            var id = parts[1];

            var objectInfo = ObjectInfo.Find(id);
            if (objectInfo != null)
            {
                var obj = World.SpawnObject(objectInfo, pos, fit: true);
                if (obj != null && parts.Length > 2)
                {
                    obj.modeName = parts[2];
                }
                return;
            }

            World.SpawnMonster(id, pos);
        }
        else
        {
            Debug.LogWarning(input);
        }
    }