public override void Event(Player obj) { if (server != null) server.ChangePlayerMap(obj, targetMapID, targetPos); else if(_map.ObjectManager.Server!=null) _map.ObjectManager.Server.ChangePlayerMap(obj, targetMapID, targetPos); }
public override void Event(Player obj) { //Trigger should only be set one frame when someone steps on it. if (!obj.OnGround) return; _touched = true; if (_touchAgain) { if (_global) GlobalTriggers.SetTriggerValue(_triggerName, 1); else _map.SetTrigger(_triggerName, true); _touchAgain = false; UpdateState(); } else { if (_global) GlobalTriggers.SetTriggerValue(_triggerName, 0); else _map.SetTrigger(_triggerName, false); _touchAgain = false; } }
public override void Event(Player obj) { if (obj!=null && !obj.Invincible) { obj.GetDamage(20); } }
public override void Interact(Player player, string sinfo, int info) { if (!interacts) return; LuaVM.SetValue("me", this); LuaVM.SetValue("player", player); LuaVM.DoString(_script_file + ".interact(\"" + sinfo + "\"," + info.ToString() + ")\n"); }
public override Attack GetAttack(Player owner,Vector2 dir, int DmgBonus, int info) { Attack att = null; att = new Attack(owner.map, 17, new Rectangle((int)owner.MidPosition.X, (int)owner.Position.Y + owner.Rect.Height - 16, 10, 16), new Vector2(200, 0), 500, owner.ID, owner.GroupID, 5004, owner.map.ObjectManager.getID()); att.HitOnce = true; att.Knockback = new Vector2(200, -50); return att; }
public override void Event(Player obj) { if (obj!=null && !obj.Invincible) { obj.GetDamage(-_healAmount); _map.ObjectManager.Remove(this); _parent.RemoveChild(); } }
public override void Move(Player player, float dir, float yDir) { if (player.OnWall) { Vector2 speed = player.Speed; speed.Y += yDir*speedBonus; player.Speed = speed; } }
public override void Jump(Player player, float strength) { if (player.OnGround) { Vector2 currentSpeed = player.Speed; currentSpeed.Y -= 100; player.Speed = currentSpeed; } }
public override void Event(Player obj) { if (obj.GroupID == 2) return; obj.SetTeam(3); if (server != null) server.ChangePlayerMap(obj, targetMapID, targetPos); else if(_map.ObjectManager.Server!=null) _map.ObjectManager.Server.ChangePlayerMap(obj, targetMapID, targetPos); }
public override Attack GetAttack(Player owner,Vector2 dir, int DmgBonus, int info) { Attack att = null; Rectangle startRect = owner.Rect; startRect.Height -= 4; startRect.Y += 3; startRect.X += (int)(dir.X*8); att = new Attack(owner.map, 15, startRect, new Vector2(owner.LastSpeed.X, 0) + 200 * dir, 100, owner.ID, owner.GroupID, 1, owner.map.ObjectManager.getID()); att.HitOnce = true; owner.Attack(0.3f); return att; }
public override void Event(Player obj) { if (_global && GlobalTriggers.GetTriggerValue(_triggerName) >= 1) { obj.Knockback(new Vector2(120, -160)); DoEffect(5, new Point((int)MidPosition.X, (int)MidPosition.Y), new Vector2(120, -160), ""); } else if (_map.GetTrigger(_triggerName)) { obj.Knockback(new Vector2(1, -160)); DoEffect(5, new Point((int)MidPosition.X, (int)MidPosition.Y), new Vector2(120, -160), ""); } }
public override void Event(Player obj) { if (_touchAgain) { if (_global) GlobalTriggers.SetTriggerValue(_triggerName, 1); else _map.SetTrigger(_triggerName, true); _touched = true; _touchAgain = false; } }
public override void Event(Player obj) { if (obj != null) { if (!active) { IGORR.Protocol.Messages.PlayMessage pm = (IGORR.Protocol.Messages.PlayMessage)map.ObjectManager.Server.ProtocolHelper.NewMessage(IGORR.Protocol.MessageTypes.Play); pm.SongName = ""; pm.Encode(); server.SendAllMap(_map, pm, true); } active = true; countdown = 2; } }
public override Attack GetAttack(Player owner,Vector2 dir,int DmgBonus, int info) { Attack att = null; Rectangle startRect; startRect = owner.Rect; startRect.Height = 6; startRect.Width = 6; startRect.X += 5; startRect.Y += 3; //startRect.X += (int)(dir.X); att = new SlimeShot(owner.map, 0, startRect, dir, 1500, owner.ID, owner.GroupID, owner.map.ObjectManager.getID()); att.HitOnce = true; att.Penetrates = false; owner.Attack(1f); return att; }
public override void Update(Player player, float ms) { if (player.OnGround) { currentHoverTime = 0; } else { Vector2 playerMovement = player.Speed; if (playerMovement.Y > 0 && currentHoverTime < maxHoverTime) { currentHoverTime += ms; playerMovement.Y = 0; player.Speed = playerMovement; } } }
public override void Event(Player plr) { if (plr.HasPart(_bodyPart)) return; if (!plr.GivePart(_bodyPart)) return; _parent.RemoveChild(); if (_respawn) _map.TimeSpawn(_bodyPart.GetID(), _position, _bodyPart.GetSpawnTime()); PickupMessage pum = (PickupMessage)map.ObjectManager.Server.ProtocolHelper.NewMessage(MessageTypes.Pickup); pum.id = _bodyPart.GetID(); pum.PlayerID = plr.ID; pum.Encode(); _map.ObjectManager.Server.SendAllMapReliable(map, pum, true); Console.WriteLine("Player " + plr.ID.ToString() + " picked up " + _bodyPart.GetName()); _map.ObjectManager.Remove(this); }
public int CheckPlayer(Player player) { int damage = 0; for (int x = 0; x < _attacks.Count; x++) { if (player.Collides(_attacks[x]) && player.ID != _attacks[x].parentID &&(_attacks[x].groupID==0 || _attacks[x].groupID!= player.GroupID) && !player.Invincible) { _attacks[x].Hit(); damage += _attacks[x].Damage; player.GetDamage(_attacks[x].Damage, _attacks[x].parentID); if (_attacks[x].Knockback != Vector2.Zero) player.Knockback(_attacks[x].Knockback); if (_attacks[x].HitOnce) { Remove(x); x--; } } } return damage; }
public override void Event(Player obj) { if (_touchAgain) { if (setsTrigger) { if (_global) GlobalTriggers.SetTriggerValue(_triggerName, 1); else _map.SetTrigger(_triggerName, true); } _touched = true; _touchAgain = false; } if (setsInfo && obj != lastToucher) { _map.SetInfo(obj.Name, _playerInfoName, _playerInfoValue); Protocol.Messages.DeSpawnMessage dsm = (Protocol.Messages.DeSpawnMessage)_map.ObjectManager.Server.ProtocolHelper.NewMessage(Protocol.MessageTypes.DeSpawn); dsm.id = _id; dsm.Encode(); _map.ObjectManager.Server.SendClient(obj, dsm); lastToucher = obj; } }
public void Add(Vector2 position, int id, string Name) { Player player = new Player(_map, new Rectangle((int)position.X, (int)position.Y, 16, 15), id); player.Name = Name; Add(player); }
public void KillPlayer(Player player) { if (player == null) return; if (!(player is NPC)) { Point spawnPoint = _map.getRandomSpawn(); Player newPlayer = new Player(_map, new Rectangle(spawnPoint.X, spawnPoint.Y, 16, 15), getID()); newPlayer.Name = player.Name; newPlayer.SetTeam(player.GroupID); //Send client their new playerID AssignPlayerMessage apm = (AssignPlayerMessage)Server.ProtocolHelper.NewMessage(MessageTypes.AssignPlayer); apm.objectID = newPlayer.ID; apm.Encode(); _server.SendClient(player, apm); //Add the new player to the game objects Add(newPlayer); newPlayer.Body = player.Body; newPlayer.Inventory = player.Inventory; for (int x = 0; x < player.Inventory.Count; x++) { Body.BodyPart part = player.Inventory[x] as Body.BodyPart; if(part==null) continue; PickupMessage pum = (PickupMessage)Server.ProtocolHelper.NewMessage(MessageTypes.Pickup); pum.id = part.GetID(); pum.autoEquip = false; pum.Encode(); _map.ObjectManager.Server.SendClient(player, pum); } //newPlayer.GetExp(player.TotalXP, Vector2.Zero); newPlayer.GetExp(0, Vector2.Zero); //Change the local clients stored playerid Client client = _server.getClient(player); if (client == null) return; client.PlayerID = newPlayer.ID; newPlayer.Body.SetOwner(newPlayer); newPlayer.Body.SendBody(null); KillMessage km = (KillMessage)Server.ProtocolHelper.NewMessage(MessageTypes.Kill); km.killerID = player.Attacker; km.deadID = player.ID; km.Encode(); player.Die(); _server.SendAllMapReliable(_map, km, true); RemoveQuiet(player); } else { Remove(player); Player killer = GetPlayer(player.Attacker); if (killer != null) { killer.GetExp((player as NPC).XPBonus, player.MidPosition); Console.WriteLine("Giving " + (player as NPC).XPBonus.ToString() + " XP to " + killer.Name); } } }
public override void Event(Player obj) { blocked = true; }
public override void Jump(Player player, float strength) { }
void HandleJoin(IgorrMessage message) { JoinMessage jm = (JoinMessage)(message); if (Management.LoginData.CheckLogin(jm.Name, jm.Password)) { Map targetMap = MapManager.GetMapByID(0); int id = targetMap.ObjectManager.getID(); Player player = new Player(null, new Rectangle(0, 0, 16, 15), id); player.Name = jm.Name; Management.PlayerInfo pinfo = Management.ClientInfoInterface.GetInfo(player); targetMap = MapManager.GetMapByID(pinfo.Map); if(targetMap==null) targetMap = MapManager.GetMapByID(0); Client client = new Client(message.SenderConnection, jm.Name, _protocolHelper); client.PlayerID = id; _clientids.Add(client.Connection.RemoteUniqueIdentifier, client.ID); _clients.Add(client.ID, client); _connections.Add(client.Connection); client.SetMap(targetMap, new Vector2(pinfo.PosX, pinfo.PosY)); Point spawnPoint; if (pinfo.PosX == 0 && pinfo.PosY == 0) spawnPoint = targetMap.getRandomSpawn(); else spawnPoint = new Point(pinfo.PosX, pinfo.PosY); player = new Player(targetMap, new Rectangle((int)spawnPoint.X, (int)spawnPoint.Y, 16, 15), id); player.Name = jm.Name; targetMap.ObjectManager.Add(player); AssignPlayerMessage apm = (AssignPlayerMessage)ProtocolHelper.NewMessage(MessageTypes.AssignPlayer); apm.objectID = id; apm.Encode(); SendClient(client, apm); if (pinfo.Parts != null) for (int x = 0; x < pinfo.Parts.Count; x++) { GameObject obj = Modules.ModuleManager.SpawnByIdServer(null, pinfo.Parts[x], -1, Point.Zero, null); Logic.Body.IPartContainer cont = obj as Logic.Body.IPartContainer; if (cont == null) continue; player.GivePart(cont.Part); PickupMessage pum = (PickupMessage)ProtocolHelper.NewMessage(MessageTypes.Pickup); pum.PlayerID = player.ID; pum.id = cont.Part.GetID(); pum.Encode(); SendAllMapReliable(client.CurrentMap, pum, true); } for (int x = 0; x < targetMap.ObjectManager.Objects.Count; x++) { Player play = targetMap.ObjectManager.Objects[x] as Player; if (play != null && play!=player) { play.Body.SendBody(player); } } Console.WriteLine(client.Name + " joined"); } else Console.WriteLine("Invalid Login: Name: " + jm.Name + " Password: " + jm.Password); }
public void SendClient(Player player, IgorrMessage message) { if (!message.Encoded) { Console.WriteLine("WARNING: Message not encoded: " + message.MessageType.ToString()); message.Encode(); } foreach (Client client in _clients.Values) if (client.PlayerID == player.ID) connection.SendMessage(message.GetMessage(), client.Connection, NetDeliveryMethod.ReliableOrdered,currentChannel); }
public void SendAllExcept(IMap map, Player player, IgorrMessage message, bool Reliable) { Client client = getClient(player); if (_connections.Count > 1) { List<NetConnection> recipients = new List<NetConnection>(); recipients.AddRange(_connections); if (client != null) recipients.Remove(client.Connection); for (int x = 0; x < recipients.Count; x++) { if (_clients[_clientids[recipients[x].RemoteUniqueIdentifier]].CurrentMap != map) { recipients.RemoveAt(x); x--; } } if (!message.Encoded) { Console.WriteLine("WARNING: Message not encoded: " + message.MessageType.ToString()); message.Encode(); } if (recipients.Count > 0 && Reliable) connection.SendMessage(message.GetMessage(), recipients, NetDeliveryMethod.ReliableOrdered, currentChannel); else if (recipients.Count > 0 && !Reliable && !_enableSend) connection.SendMessage(message.GetMessage(), recipients, NetDeliveryMethod.Unreliable, currentChannel); } }
public Client getClient(Player player) { if (player == null) return null; foreach (Client client in _clients.Values) if (client.PlayerID == player.ID) return client; return null; }
public void ChangePlayerMap(Player player, int mapID, Vector2 position) { Client client = getClient(player); Map map = MapManager.GetMapByID(mapID); if (map != null && client != null) client.SetMap(map, position); }
public virtual void Event(Player obj) { }
public override void Event(Player obj) { obj.ShadowsOn = true; }
/* public EventObject GetEvent(GameObject obj) { if (obj is NPC) return null; int posX=(int)(obj.MidPosition.X/tileSize); int posY=(int)(obj.MidPosition.Y/tileSize); for (int x = -1; x <= 1; x++) for (int y = -1; y <= 1; y++) if (isValid(posX + x, posY + y)) if (_layers[3][posX + x, posY + y].EventObject!=null && _layers[3][posX + x, posY + y].EventObject.Collides(obj)) return _layers[3][posX + x, posY + y].EventObject; return null; } */ public void DoPlayerEvents(Player player) { /* if (player is NPC) return ; */ int posX = (int)(player.MidPosition.X / tileSize); int posY = (int)(player.MidPosition.Y / tileSize); for (int x = -1; x <= 1; x++) for (int y = -1; y <= 1; y++) if (isValid(posX + x, posY + y)) if (_layers[3][posX + x, posY + y].EventObject != null && _layers[3][posX + x, posY + y].EventObject.Collides(player)) _layers[3][posX + x, posY + y].EventObject.Event(player); }