Exemplo n.º 1
0
        public bool LeaveQueue(CPlayerInstance instance)
        {
            var targetFight = instance.CurrentFight;

            if (targetFight != null)
            {
                switch (targetFight.fightState)
                {
                case (FightState.QUEUE):
                    targetFight.RemovePlayer(instance);
                    TrySetNewCreatorOrRemoveFight(targetFight);
                    break;

                case (FightState.ENGAGED):                //action on other players upon ones leave from engaged fight
                    //will send 'load lobby scene event' for now
                    foreach (var p in targetFight.getPlayers.Values)
                    {
                        p.CurrentFight = null;
                        p.SendPacket(new LoadIngameScenePacket());
                    }
                    targetFight.RemovePlayer(instance);
                    break;

                default:
                    break;
                }
            }
            return(true);
        }
Exemplo n.º 2
0
        private void AddHealthLevelOnly(CPlayerInstance instance, Dictionary <int, ExchangeProfile> result)
        {
            var fight = instance.CurrentFight;

            charsInfo = new Dictionary <int, CharFightInfo>();
            var allChars = fight.getAllParticipants();

            foreach (var player in allChars)
            {
                var info = new CharFightInfo()
                {
                    Team  = player.CurrentFight.CharFightData[player].Team,
                    stats = player.Stats.GetHealthLevel(),
                };
                charsInfo.Add(player.ObjectId, info);
            }

            var fightInfo = new FightInitInfo()
            {
                allChars = charsInfo,
                moveLog  = result
            };

            AddSerializedParameter(fightInfo, ClientParameterCode.Object, false);
        }
Exemplo n.º 3
0
 public FightParticipantsPacket(CPlayerInstance player, bool onlyTarget) : base(ClientEventCode.ServerPacket, MessageSubCode.FightParticipants)
 {
     _instance = player;
     AddParameter(player.Target.ObjectId, ClientParameterCode.ObjectId);
     if (!onlyTarget)
     {
         AddInfo(player);
     }
 }
Exemplo n.º 4
0
 public void SendUpdate(CPlayerInstance instance)
 {
     if (instance != null /* && instance.Stats.AnyNewValues? */)
     {
         instance.Store();
         //instance.stored = true
         //Log.DebugFormat("Backing info for {0} to the Database", instance.Name);
     }
 }
Exemplo n.º 5
0
        public void SendUpdate(CPlayerInstance instance)
        {
//			if( instance != null && instance.Physics.Dirty)
//			{
//				instance.BroadcastMessage(new MoveToLocationPacket(instance));
//				instance.Physics.Dirty = false;
//				//Log.DebugFormat("Sending MoveToLocationPacket to {0}", instance.Name);
//			}
        }
Exemplo n.º 6
0
 public void SendUpdate(CPlayerInstance instance)
 {
     if (instance != null)                              //Stats.Dirty becomes true when current health is below maximum health
     {
         var newHealth = instance.Stats.HP5Regen();     //adds HP5Packet value to players current health
         instance.SendPacket(new HP5Packet(newHealth)); //sends new health values to client
         Log.DebugFormat("Sending HP5Packet update to {0} ({1}/{2})", instance.Name, instance.Stats.GetStat <CurrHealth>(), instance.Stats.GetStat <MaxHealth>());
     }
 }
Exemplo n.º 7
0
        private void AddInfo(CPlayerInstance player)
        {
            AddCharInfo(player.CurrentFight);
            var fightInfo = new FightInitInfo()
            {
                fightType  = player.CurrentFight.Type,
                sanguinary = player.CurrentFight.Sanguinary,
                allChars   = charsInfo,
            };

            AddSerializedParameter(fightInfo, ClientParameterCode.Object, false);
        }
Exemplo n.º 8
0
        void AddUserInfo(CPlayerInstance player)
        {
            UserFightInfo info = new UserFightInfo()
            {
                Name      = player.Name,
                ObjectId  = player.ObjectId,
                TargetId  = player.Target.ObjectId,
                Team      = player.CurrentFight.CharFightData[player].Team,
                stats     = player.Stats.GetHealthLevel(),                                                                                     //add more later
                equipment = player.Items.Equipment.ToDictionary(k => k.Key, v => (ItemData)(Item)v.Value)
            };

            AddSerializedParameter(info, ClientParameterCode.Object, false);
        }
Exemplo n.º 9
0
        private Rewards calculateRewards(CPlayerInstance instance)
        {
            var reward = new Rewards();

            if (DEBUG)
            {
                Log.DebugFormat("{0} has ended the fight with a {1}", instance.Name, instance.CurrentFight.CharFightData[instance].WLT);
            }
            switch (getPlayerFightWLT(instance))
            {
            case (FightWinLossTie.Win):
                reward.Experience = (int)(CharFightData[instance].TotalDamage * (instance.Stats.GetStat <Level>() * 0.15f));

                reward.Gold        = (int)(new Random().Next(0, 2) < 1 ? (new Random().Next(1, 14) * instance.Stats.GetStat <Level>()) : 0);
                reward.WLT         = FightWinLossTie.Win;
                reward.TotalDamage = CharFightData[instance].TotalDamage;
                if (CharFightData[instance].Injuried)
                {
                    /*instance.ApplyInjury(time);*/
                    reward.Injury = true;
                }
                if (DEBUG)
                {
                    Log.DebugFormat("WON: Reward:{0} exp:{1}, gold:{2}, win:{3}, dmg:{4}", instance.ObjectId, reward.Experience, reward.Gold, reward.WLT, reward.TotalDamage);
                }
                break;

            case (FightWinLossTie.Loss):                    //no rewards
            case (FightWinLossTie.Tie):
                reward.Experience = (int)(CharFightData[instance].TotalDamage * 0.5f);

                reward.Gold        = (int)(new Random().Next(0, 1000) < 1 ? (3 * instance.Stats.GetStat <Level>()) : 0);
                reward.WLT         = (instance.CurrentFight.CharFightData[instance].WLT == FightWinLossTie.Loss) ? FightWinLossTie.Loss : FightWinLossTie.Tie;
                reward.TotalDamage = CharFightData[instance].TotalDamage;
                if (CharFightData[instance].Injuried)
                {
                    /*instance.ApplyInjury(time);*/
                    reward.Injury = true;
                }
                if (false)
                {
                    Log.DebugFormat("{0}: Reward:{1} exp:{2}, gold:{3}, win:{4}, dmg:{5}", instance.CurrentFight.CharFightData[instance].WLT, instance.ObjectId, reward.Experience, reward.Gold, reward.WLT, reward.TotalDamage);
                }
                break;
            }
            return(reward);
        }
Exemplo n.º 10
0
        protected override bool OnHandleMessage(IMessage message, PhotonServerPeer serverPeer)
        {
            _instance     = Util.GetCPlayerInstance(Server, message);
            _currentFight = _instance.CurrentFight;

            var newMove = SerializeUtil.Deserialize <FightMove>(message.Parameters[(byte)ClientParameterCode.Object]);

            newMove.PeerObjectId   = _instance.ObjectId;
            newMove.TargetObjectId = _instance.Target.ObjectId;

            _currentFight.AddMoveSendPkg(_instance, newMove);

//			var para = new Dictionary<byte, object>()
//			{
//				{(byte)ClientParameterCode.PeerId, message.Parameters[(byte)ClientParameterCode.PeerId]},
//				{(byte)ClientParameterCode.SubOperationCode, MessageSubCode.SwitchTarget},
//				{(byte)ClientParameterCode.ObjectId, _instance.TargetId}
//			};
//			serverPeer.SendOperationResponse(new OperationResponse(message.Code) {Parameters = para}, new SendParameters());
//			Server.Log.DebugFormat("Sending SwitchTarget response for {0} targetting ({1}){2}", _instance.Name, _instance.TargetId, _instance.Target.Name);
            return(true);
        }
Exemplo n.º 11
0
        public void AddCharInfo(CPlayerInstance player)
        {
            CharInfo info = new CharInfo()
            {
                Position = player.Position,
                Name     = player.Name,

                //stats
                GenStats  = player.GetCharData <GeneralStats>(),
                Stats     = player.Stats.GetMainStatsForEnemy(),
                Equipment = player.Items.Equipment.ToDictionary(item => (int)item.Key, item => (ItemData)(Item)item.Value),

                //race, sex, class, title, guild
                //effects - pvp flag, debuffs, buffs
                //movement speed for smoothing/calculation
                //action/emote walk, run, sit
            };

            info.GenStats.Gold           = -1;
            info.GenStats.Skulls         = -1;
            info.GenStats.InventorySlots = -1;
            AddSerializedParameter(info, ClientParameterCode.Object, false);
        }
Exemplo n.º 12
0
 public QueuePlayers(CPlayerInstance player, Fight fight) : base(ClientEventCode.ServerPacket, MessageSubCode.FightParticipants)
 {
     AddParameter(player.ObjectId, ClientParameterCode.ObjectId);
     AddPlayersInfo(fight);
 }
Exemplo n.º 13
0
 public UserFightInfoUpdatePacket(CPlayerInstance instance) : base(ClientEventCode.ServerPacket, MessageSubCode.UserFightInfo)
 {
     AddParameter(instance.ObjectId, ClientParameterCode.ObjectId);
     AddUserInfo(instance);
 }
Exemplo n.º 14
0
 public CharInfoUpdatePacket(CPlayerInstance player) : base(ClientEventCode.ServerPacket, MessageSubCode.CharInfo, false)
 {
     AddParameter(player.ObjectId, ClientParameterCode.ObjectId);
     AddCharInfo(player);
 }
Exemplo n.º 15
0
 public PlayerRestoreAccess(CPlayerInstance playerInstance)
 {
     player = playerInstance;
 }
Exemplo n.º 16
0
 public FightUpdatePacket(CPlayerInstance instance, Dictionary <int, ExchangeProfile> result) : base(ClientEventCode.ServerPacket, MessageSubCode.FightUpdate)
 {
     AddHealthLevelOnly(instance, result);
 }