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); }
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); }
public FightParticipantsPacket(CPlayerInstance player, bool onlyTarget) : base(ClientEventCode.ServerPacket, MessageSubCode.FightParticipants) { _instance = player; AddParameter(player.Target.ObjectId, ClientParameterCode.ObjectId); if (!onlyTarget) { AddInfo(player); } }
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); } }
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); // } }
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>()); } }
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); }
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); }
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); }
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); }
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); }
public QueuePlayers(CPlayerInstance player, Fight fight) : base(ClientEventCode.ServerPacket, MessageSubCode.FightParticipants) { AddParameter(player.ObjectId, ClientParameterCode.ObjectId); AddPlayersInfo(fight); }
public UserFightInfoUpdatePacket(CPlayerInstance instance) : base(ClientEventCode.ServerPacket, MessageSubCode.UserFightInfo) { AddParameter(instance.ObjectId, ClientParameterCode.ObjectId); AddUserInfo(instance); }
public CharInfoUpdatePacket(CPlayerInstance player) : base(ClientEventCode.ServerPacket, MessageSubCode.CharInfo, false) { AddParameter(player.ObjectId, ClientParameterCode.ObjectId); AddCharInfo(player); }
public PlayerRestoreAccess(CPlayerInstance playerInstance) { player = playerInstance; }
public FightUpdatePacket(CPlayerInstance instance, Dictionary <int, ExchangeProfile> result) : base(ClientEventCode.ServerPacket, MessageSubCode.FightUpdate) { AddHealthLevelOnly(instance, result); }