コード例 #1
0
ファイル: ObjectManagement.cs プロジェクト: DJuttmann/SM3E
        public void DeleteRoom()
        {
            if (AreaIndex == IndexNone)
            {
                return;
            }
            var a = new ActiveItems(this);

            if (ForceDeleteRoom())
            {
                HandlingSelection = true;
                ForceSelectRoom(Math.Min(RoomIndex, Rooms [AreaIndex].Count - 1));
                RoomListChanged?.Invoke(this, new ListLoadEventArgs(RoomIndex));
                RaiseChangeEvents(a);
                HandlingSelection = false;
            }
        }
コード例 #2
0
ファイル: ObjectManagement.cs プロジェクト: DJuttmann/SM3E
        public void AddFxData(int doorIndex)
        {
            if (ActiveFx == null)
            {
                return;
            }
            var a = new ActiveItems(this);

            if (ForceAddFxData(doorIndex))
            {
                HandlingSelection = true;
                ForceSelectFxData(0);
                FxDataListChanged?.Invoke(this, new ListLoadEventArgs(FxDataIndex));
                RaiseChangeEvents(a);
                HandlingSelection = false;
            }
        }
コード例 #3
0
ファイル: ObjectManagement.cs プロジェクト: DJuttmann/SM3E
        public void DeleteDoor()
        {
            if (ActiveRoom?.MyDoorSet == null || ActiveDoor == null)
            {
                return;
            }
            var a = new ActiveItems(this);

            if (ForceRemoveDoor())
            {
                HandlingSelection = true;
                ForceSelectDoor(Math.Max(DoorIndex, ActiveRoom.MyDoorSet.DoorCount - 1));
                DoorListChanged?.Invoke(this, new ListLoadEventArgs(DoorIndex));
                RaiseChangeEvents(a);
                HandlingSelection = false;
            }
        }
コード例 #4
0
ファイル: Akali.cs プロジェクト: 568123745/CN-1
        private float GetComboDamage(Obj_AI_Base target)
        {
            var rStacks     = GetRStacks();
            var comboDamage = 0d;
            int mode        = menu.Item("Combo_mode", true).GetValue <StringList>().SelectedIndex;

            if (mode == 0)
            {
                if (Q.IsReady())
                {
                    comboDamage += (Player.GetSpellDamage(target, SpellSlot.Q) +
                                    Player.CalcDamage(target, Damage.DamageType.Magical,
                                                      (45 + 35 * Q.Level + 0.5 * Player.FlatMagicDamageMod)));
                }
            }
            else if (Q.IsReady())
            {
                comboDamage += (Player.GetSpellDamage(target, SpellSlot.Q) + Player.CalcDamage(target, Damage.DamageType.Magical, (45 + 35 * Q.Level + 0.5 * Player.FlatMagicDamageMod))) * 2;
            }

            if (E.IsReady())
            {
                comboDamage += Player.GetSpellDamage(target, SpellSlot.E);
            }

            if (HasBuff(target, "AkaliMota"))
            {
                comboDamage += Player.CalcDamage(target, Damage.DamageType.Magical, (45 + 35 * Q.Level + 0.5 * Player.FlatMagicDamageMod));
            }

            comboDamage += Player.CalcDamage(target, Damage.DamageType.Magical, CalcPassiveDmg());

            if (rStacks > 0)
            {
                comboDamage += Player.GetSpellDamage(target, SpellSlot.R) * rStacks;
            }

            if (Ignite_Ready())
            {
                comboDamage += Player.GetSummonerSpellDamage(target, Damage.SummonerSpell.Ignite);
            }

            comboDamage = ActiveItems.CalcDamage(target, comboDamage);

            return((float)(comboDamage + Player.GetAutoAttackDamage(target)));
        }
コード例 #5
0
ファイル: ObjectManagement.cs プロジェクト: DJuttmann/SM3E
//========================================================================================
// Object management - exposed methods.


        public void AddRoom()
        {
            if (AreaIndex == IndexNone)
            {
                return;
            }
            var a = new ActiveItems(this);

            if (ForceAddRoom(1, 1, 1, 1, "(new room)"))
            {
                HandlingSelection = true;
                ForceSelectRoom(Rooms [AreaIndex].Count - 1);
                RoomListChanged?.Invoke(this, new ListLoadEventArgs(RoomIndex));
                //RoomStateListChanged?.Invoke (this, new ListLoadEventArgs (RoomStateIndex));
                RaiseChangeEvents(a);
                HandlingSelection = false;
            }
        }
コード例 #6
0
ファイル: ObjectManagement.cs プロジェクト: DJuttmann/SM3E
        public void DeleteFxData()
        {
            if (ActiveFx == null || FxDataIndex == IndexNone)
            {
                return;
            }
            var a = new ActiveItems(this);

            if (ForceDeleteFxData())
            {
                HandlingSelection = true;
                int newIndex = Math.Min(FxDataIndex, ActiveFx.FxDataCount - 1);
                ForceSelectFxData(newIndex);
                FxDataListChanged?.Invoke(this, new ListLoadEventArgs(FxDataIndex));
                RaiseChangeEvents(a);
                HandlingSelection = false;
            }
        }
コード例 #7
0
        public void SelectFxData(int index)
        {
            if (HandlingSelection)
            {
                return;
            }
            if (ActiveFx == null || index == FxDataIndex || index < -1 ||
                index >= ActiveFx.FxDataCount)
            {
                return;
            }
            HandlingSelection = true;
            var a = new ActiveItems(this);

            ForceSelectFxData(index);
            RaiseChangeEvents(a);
            HandlingSelection = false;
        }
コード例 #8
0
        public void SelectEnemyGfx(int index)
        {
            if (HandlingSelection)
            {
                return;
            }
            if (ActiveRoomState == null || index == EnemyGfxIndex || index < -1 ||
                index >= ActiveRoomState.MyEnemyGfx.EnemyGfxCount)
            {
                return;
            }
            HandlingSelection = true;
            var a = new ActiveItems(this);

            ForceSelectEnemyGfx(index);
            RaiseChangeEvents(a);
            HandlingSelection = false;
        }
コード例 #9
0
        public void SelectRoomState(int index)
        {
            if (HandlingSelection)
            {
                return;
            }
            if (ActiveRoom == null || index == RoomStateIndex || index < -1 ||
                index >= ActiveRoom.RoomStates.Count)
            {
                return;
            }
            HandlingSelection = true;
            var a = new ActiveItems(this);

            ForceSelectRoomState(index);
            RaiseChangeEvents(a);
            HandlingSelection = false;
        }
コード例 #10
0
        public void SelectDoor(int index)
        {
            if (HandlingSelection)
            {
                return;
            }
            if (ActiveRoom == null || index == DoorIndex || index < -1 ||
                index >= ActiveRoom.MyDoorSet.DoorCount)
            {
                return;
            }
            HandlingSelection = true;
            var a = new ActiveItems(this);

            ForceSelectDoor(index);
            RaiseChangeEvents(a);
            HandlingSelection = false;
        }
コード例 #11
0
        public void SelectRoom(int index)
        {
            if (HandlingSelection)
            {
                return;
            }
            if (AreaIndex == IndexNone || index == RoomIndex || index < -1 ||
                index >= Rooms [AreaIndex].Count)
            {
                return;
            }
            HandlingSelection = true;
            var a = new ActiveItems(this);

            ForceSelectRoom(index);
            RaiseChangeEvents(a);
            HandlingSelection = false;
        }
コード例 #12
0
ファイル: Ahri.cs プロジェクト: yunnnn1/Yunnnn
        private float GetComboDamage(Obj_AI_Base enemy)
        {
            if (enemy == null)
            {
                return(0);
            }

            double damage = 0d;

            if (Q.IsReady())
            {
                damage += Player.GetSpellDamage(enemy, SpellSlot.Q);
                damage += Player.GetSpellDamage(enemy, SpellSlot.Q, 1);
            }

            if (Dfg.IsReady())
            {
                damage += Player.GetItemDamage(enemy, Damage.DamageItems.Dfg) / 1.2;
            }

            if (W.IsReady())
            {
                damage += Player.GetSpellDamage(enemy, SpellSlot.W);
            }

            if (_rOn)
            {
                damage += Player.GetSpellDamage(enemy, SpellSlot.R) * RCount();
            }
            else if (R.IsReady())
            {
                damage += Player.GetSpellDamage(enemy, SpellSlot.R) * 3;
            }

            damage = ActiveItems.CalcDamage(enemy, damage);

            if (E.IsReady())
            {
                damage += Player.GetSpellDamage(enemy, SpellSlot.E);
            }

            return((float)damage);
        }
コード例 #13
0
ファイル: ObjectManagement.cs プロジェクト: DJuttmann/SM3E
        public void DeleteEnemyGfx()
        {
            if (ActiveRoomState?.MyEnemyGfx == null || EnemyGfxIndex == IndexNone)
            {
                return;
            }
            var a = new ActiveItems(this);

            if (ForceDeleteEnemyGfx())
            {
                HandlingSelection = true;
                int newIndex = Math.Min(EnemyGfxIndex,
                                        ActiveRoomState.MyEnemyGfx.EnemyGfxCount - 1);
                ForceSelectEnemyGfx(newIndex);
                EnemyGfxListChanged?.Invoke(this, new ListLoadEventArgs(EnemyGfxIndex));
                RaiseChangeEvents(a);
                HandlingSelection = false;
            }
        }
コード例 #14
0
        public void DeactivateItem(object item, bool close)
        {
            var guard = item as IGuardClose;

            if (guard != null)
            {
                guard.CanClose(result =>
                {
                    if (result)
                    {
                        CloseActiveItem(ActiveItems.Single(x => x == (IScreenWithClose)item));
                    }
                });
            }

            else
            {
                CloseActiveItem(ActiveItems.Single(x => x == (IScreenWithClose)item));
            }
        }
コード例 #15
0
ファイル: Link.cs プロジェクト: jwbrowning/ZeldaProject3902
 public void ShootArrow()
 {
     if (ActiveItems.FindAll((IUsableItem item) => item is UsableArrow).Count > 0)
     {
         return;
     }
     if (ItemCounts[ItemType.Bow] == 0)
     {
         return;
     }
     if (ItemCounts[ItemType.Arrow] <= 0)
     {
         return;
     }
     if (ItemCounts[ItemType.Rupee] <= 0)
     {
         return;
     }
     State.ShootArrow();
 }
コード例 #16
0
ファイル: Zed.cs プロジェクト: wangsiqi211/Ergou
        private float GetComboDamage(Obj_AI_Base target)
        {
            double comboDamage = 0;

            if (Q.IsReady())
                comboDamage += Player.GetSpellDamage(target, SpellSlot.Q) * 2;

            if (W.IsReady())
                comboDamage += Player.GetSpellDamage(target, SpellSlot.W);

            if (E.IsReady())
                comboDamage += Player.GetSpellDamage(target, SpellSlot.E) * 2;

            if ((target.Health / target.MaxHealth * 100) <= 50)
                comboDamage += CalcPassive(target);

            if (HasBuff(target, "zedulttargetmark"))
            {
                if (R.Level == 1)
                    comboDamage += comboDamage * 1.2;
                else if(R.Level == 2)
                    comboDamage += comboDamage * 1.35;
                else if(R.Level == 3)
                    comboDamage += comboDamage * 1.5;
            }
            if (R.IsReady())
            {
                comboDamage += Player.GetSpellDamage(target, SpellSlot.R);

                if (R.Level == 1)
                    comboDamage += comboDamage * 1.2;
                else if (R.Level == 2)
                    comboDamage += comboDamage * 1.35;
                else if (R.Level == 3)
                    comboDamage += comboDamage * 1.5;
            }

            comboDamage = ActiveItems.CalcDamage(target, comboDamage);

            return (float)(comboDamage + Player.GetAutoAttackDamage(target) * 2);
        }
コード例 #17
0
        /*
        public override void ObjAiHeroOnOnIssueOrder(Obj_AI_Base sender, GameObjectIssueOrderEventArgs args)
        {
            if (!sender.IsEnemy || !menu.Item("qAA", true).GetValue<KeyBind>().Active || (args.Target is Obj_AI_Minion))
                return;

            if (sender.IsValidTarget(Q.Range))
                Q.Cast(sender.ServerPosition, packets());
        }*/

        /*static void Game_OnGameProcessPacket(GamePacketEventArgs args)
        {
            GamePacket g = new GamePacket(args.PacketData);
            if (g.Header != 0xFE)
                return;

            if (menu.Item("qAA", true).GetValue<KeyBind>().Active)
            {
                if (Packet.MultiPacket.OnAttack.Decoded(args.PacketData).Type == Packet.AttackTypePacket.TargetedAA)
                {
                    g.Position = 1;
                    var k = ObjectManager.GetUnitByNetworkId<Obj_AI_Base>(g.ReadInteger());
                    if (k is Obj_AI_Hero && k.IsEnemy)
                    {
                        if (Vector3.Distance(k.Position, Player.Position) <= Q.Range)
                        {
                            Q.Cast(k.Position, packets());
                        }
                    }
                }
            }
        }*/

        private float GetComboDamage(Obj_AI_Base enemy)
        {
            double damage = 0d;


            if (Q.IsReady())
                damage += Player.GetSpellDamage(enemy, SpellSlot.Q);

            if (W.IsReady())
                damage += Player.GetSpellDamage(enemy, SpellSlot.W);

            if (E.IsReady())
                damage += Player.GetSpellDamage(enemy, SpellSlot.E) * 2;

            if (R.IsReady())
                damage += GetUltDmg((Obj_AI_Hero)enemy);

            damage = ActiveItems.CalcDamage(enemy, damage);

            return (float)damage;
        }
コード例 #18
0
//----------------------------------------------------------------------------------------

        // Check if tile in room is door tile; if it is, select the destination room.
        public bool NavigateThroughDoor(int row, int col, out int screenX, out int screenY)
        {
            screenX = 0;
            screenY = 0;
            if (ActiveRoom?.MyDoorSet == null || ActiveLevelData == null)
            {
                return(false);
            }
            List <Door> doors = ActiveRoom.MyDoorSet.MyDoors;

            if (GetBtsType(row, col) != 0x9) // return if not door
            {
                return(false);
            }
            int index = GetBtsValue(row, col);

            if (index >= doors.Count)
            {
                return(false);
            }
            Room targetRoom = doors [index].MyTargetRoom;

            if (targetRoom == null)
            {
                return(false);
            }
            int targetArea = targetRoom.Area;

            screenX = doors [index].ScreenX;
            screenY = doors [index].ScreenY;

            HandlingSelection = true;
            var a = new ActiveItems(this);

            ForceSelectArea(targetArea);
            ForceSelectRoom(Rooms [targetArea].FindIndex(x => x == targetRoom));
            RaiseChangeEvents(a);
            HandlingSelection = false;
            return(true);
        }
コード例 #19
0
//----------------------------------------------------------------------------------------


        // Renders a screen from a room.
        public void RenderScreen(int areaIndex, int roomIndex, BlitImage screenImage,
                                 int x, int y)
        {
            if (areaIndex >= 0 && areaIndex < AreaCount &&
                roomIndex >= 0 && roomIndex < Rooms [areaIndex].Count)
            {
                ActiveItems a = new ActiveItems(this);
                ActiveRoom      = (Room)Rooms [areaIndex] [roomIndex];
                ActiveRoomState = ActiveRoom.RoomStates.Last();
                LoadRoomTiles(ActiveRoomState.TileSet);
                LoadBackground();
                RenderScreen(screenImage, x, y);
                ActiveRoom      = a.ActiveRoom;
                ActiveRoomState = a.ActiveRoomState;
                LoadRoomTiles(ActiveRoomState.TileSet);
                LoadBackground();
            }
            else
            {
                screenImage.Black();
            }
        }
コード例 #20
0
        public void ChangeMemberStatus(IEMember member, int newStatus)
        {
            switch (member.Status)
            {
            case IEMember.MEMBER_NEW:
                NewItems.Remove(member);
                break;

            case IEMember.MEMBER_REJECTED:
                RejectedItems.Remove(member);
                break;

            default:
                ActiveItems.Remove(member);
                break;
            }
            member.Status = newStatus;

            switch (member.Status)
            {
            case IEMember.MEMBER_NEW:
                NewItems.Add(member);
                break;

            case IEMember.MEMBER_REJECTED:
                RejectedItems.Add(member);
                break;

            default:
                ActiveItems.Add(member);
                break;
            }

            NewItems.Sort();
            RejectedItems.Sort();
            ActiveItems.Sort();

            SaveMember(member);
        }
コード例 #21
0
        public void TryCloseActiveItem()
        {
            if (_isClosing)
            {
                return;
            }

            lock (_closeLock)
            {
                _isClosing = true;

                if (ActiveItems.None())
                {
                    return;
                }

                var item   = ActiveItems.Last();
                var screen = item;

                var busyScreen = screen as IGetBusy;
                if (busyScreen != null && busyScreen.IsBusy)
                {
                    Task.Run(async() => await CloseWaitingItem(new WaitingToClose(item)));
                    _isClosing = false;
                    return;
                }

                screen.TryClose();

                var disposable = screen as IDisposable;
                if (disposable != null)
                {
                    disposable.Dispose();
                }

                _isClosing = false;
            }
        }
コード例 #22
0
        private float GetComboDamage(Obj_AI_Base enemy)
        {
            if (enemy == null)
            {
                return(0);
            }

            var damage = 0d;

            if (_canQcd == 0 && _canEcd == 0 && Q.Level > 0 && E.Level > 0)
            {
                damage += Player.GetSpellDamage(enemy, SpellSlot.Q) * 1.4;
            }
            else if (_canQcd == 0 && Q.Level > 0)
            {
                damage += Player.GetSpellDamage(enemy, SpellSlot.Q);
            }

            if (_hamQcd == 0 && Q.Level > 0)
            {
                damage += Player.GetSpellDamage(enemy, SpellSlot.Q, 1);
            }

            if (_hamWcd == 0 && W.Level > 0)
            {
                damage += Player.GetSpellDamage(enemy, SpellSlot.W);
            }

            if (_hamEcd == 0 && E.Level > 0)
            {
                damage += Player.GetSpellDamage(enemy, SpellSlot.E);
            }

            damage = ActiveItems.CalcDamage(enemy, damage);

            damage += Player.GetAutoAttackDamage(enemy) * 3;
            return((float)damage);
        }
コード例 #23
0
        private float GetComboDamage(Obj_AI_Base enemy)
        {
            var damage = 0d;

            if (Q.IsReady())
            {
                damage += Player.GetSpellDamage(enemy, SpellSlot.Q);
            }

            if (E.IsReady())
            {
                damage += Player.GetSpellDamage(enemy, SpellSlot.E);
            }

            if (R.IsReady())
            {
                damage += Player.GetSpellDamage(enemy, SpellSlot.R);
            }

            damage += Player.GetAutoAttackDamage(enemy);
            damage  = ActiveItems.CalcDamage(enemy, damage);
            return((float)damage);
        }
コード例 #24
0
ファイル: Lucian.cs プロジェクト: xioa123/CN
        private float GetComboDamage(Obj_AI_Base target)
        {
            double comboDamage = 0;

            if (Q.IsReady())
            {
                comboDamage += Player.GetSpellDamage(target, SpellSlot.Q) * 2;
            }

            if (W.IsReady())
            {
                comboDamage += Player.GetSpellDamage(target, SpellSlot.W);
            }

            if (R.IsReady())
            {
                comboDamage += Player.GetSpellDamage(target, SpellSlot.R) * GetShots();
            }

            comboDamage = ActiveItems.CalcDamage(target, comboDamage);

            return((float)(comboDamage + Player.GetAutoAttackDamage(target) * 2));
        }
コード例 #25
0
ファイル: Fiora.cs プロジェクト: jsjdxy/Ergou-Best-Champion
        private float GetComboDamage(Obj_AI_Base target)
        {
            double comboDamage = 0;

            if (Q.IsReady())
            {
                comboDamage += Player.GetSpellDamage(target, SpellSlot.Q) * 2;
            }

            if (W.IsReady())
            {
                comboDamage += Player.GetSpellDamage(target, SpellSlot.W);
            }

            if (R.IsReady())
            {
                comboDamage += Player.GetSpellDamage(target, SpellSlot.R) / countEnemiesNearPosition(target.ServerPosition, R.Range);
            }

            comboDamage = ActiveItems.CalcDamage(target, comboDamage);

            return((float)(comboDamage + Player.GetAutoAttackDamage(target) * 3));
        }
コード例 #26
0
        private float GetComboDamage(Obj_AI_Base target)
        {
            double comboDamage = 0;

            if (Q.IsReady())
            {
                comboDamage += GetCurrentHeat() > 50 ? Player.GetSpellDamage(target, SpellSlot.Q) * 2 : Player.GetSpellDamage(target, SpellSlot.Q);
            }

            if (E.IsReady())
            {
                comboDamage += GetCurrentHeat() > 50 ? Player.GetSpellDamage(target, SpellSlot.E) * 1.5: Player.GetSpellDamage(target, SpellSlot.E);
            }

            if (R.IsReady())
            {
                comboDamage += Player.GetSpellDamage(target, SpellSlot.R) * 3;
            }

            comboDamage = ActiveItems.CalcDamage(target, comboDamage);

            return((float)(comboDamage + Player.GetAutoAttackDamage(target)));
        }
コード例 #27
0
ファイル: ObjectManagement.cs プロジェクト: DJuttmann/SM3E
 // Add a new PLM.
 public void AddPlm(int col, int row)
 {
     if (ActivePlmSet == null || ActivePlmType == null)
     {
         return;
     }
     if (ForceAddPlm(col, row))
     {
         HandlingSelection = true;
         var a = new ActiveItems(this);
         ForceSelectPlm(ActivePlmSet.PlmCount - 1);
         PlmListChanged?.Invoke(this, new ListLoadEventArgs(PlmIndex));
         var e = new LevelDataEventArgs()
         {
             ScreenXmin = 0,
             ScreenXmax = RoomWidthInScreens - 1,
             ScreenYmin = 0,
             ScreenYmax = RoomHeightInScreens - 1
         };
         LevelDataModified?.Invoke(this, e);
         RaiseChangeEvents(a);
         HandlingSelection = false;
     }
 }
コード例 #28
0
 // Select PLM at given tile position (col, row), updates row, col, width & height to
 // exact position and size of PLM.
 public bool SelectPlmAt(int col, int row)
 {
     if (ActivePlmSet == null)
     {
         return(false);
     }
     for (int index = 0; index < ActivePlmSet.PlmCount; index++)
     {
         Plm p      = ActivePlmSet.Plms [index];
         int width  = p.MyPlmType?.Graphics.Width / 16 ?? 0;
         int height = p.MyPlmType?.Graphics.Height / 16 ?? 0;
         if (col >= p.PosX && col < p.PosX + width &&
             row >= p.PosY && row < p.PosY + height)
         {
             HandlingSelection = true;
             var a = new ActiveItems(this);
             ForceSelectPlm(index);
             RaiseChangeEvents(a);
             HandlingSelection = false;
             return(true);
         }
     }
     return(false);
 }
コード例 #29
0
        private float GetComboDamage(Obj_AI_Base enemy)
        {
            if (enemy == null)
            {
                return(0);
            }

            double damage = 0d;

            if (Q.IsReady())
            {
                damage += Player.GetSpellDamage(enemy, SpellSlot.Q);
            }

            if (W.IsReady())
            {
                damage += Player.GetSpellDamage(enemy, SpellSlot.W) * 3;
            }

            if (E.IsReady())
            {
                damage += Player.GetSpellDamage(enemy, SpellSlot.E);
            }

            if (R.IsReady())
            {
                damage += damage * 1.2;
                damage += Player.GetSpellDamage(enemy, SpellSlot.R);
            }

            damage += Player.GetAutoAttackDamage(enemy) * 3;

            damage = ActiveItems.CalcDamage(enemy, damage);

            return((float)damage);
        }
コード例 #30
0
 // Select enemy at given pixel position (x, y), updates x, y, width & height to
 // exact position and size of enemy.
 public bool SelectEnemyAt(double x, double y)
 {
     if (ActiveEnemySet == null)
     {
         return(false);
     }
     for (int index = 0; index < ActiveEnemySet.EnemyCount; index++)
     {
         Enemy  e      = ActiveEnemySet.Enemies [index];
         double width  = e.MyEnemyType?.Graphics.Width ?? 1.0;
         double height = e.MyEnemyType?.Graphics.Height ?? 1.0;
         if (x >= e.PosX - width / 2 && x < e.PosX + width / 2 &&
             y >= e.PosY - height / 2 && y < e.PosY + height / 2)
         {
             HandlingSelection = true;
             var a = new ActiveItems(this);
             ForceSelectEnemy(index);
             RaiseChangeEvents(a);
             HandlingSelection = false;
             return(true);
         }
     }
     return(false);
 }