Skip to content

Commit

Permalink
Added nopvp regions. added command to get region flags /rf flags. Rem…
Browse files Browse the repository at this point in the history
…oved debug print at end of /rf.
  • Loading branch information
Zack Piispanen committed Oct 24, 2013
1 parent 07c05e1 commit 46e774d
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 7 deletions.
4 changes: 4 additions & 0 deletions FlaggedRegion.cs
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,10 @@ public List<Flags> getFlags()
{
f.Add(Flags.HEAL);
}
if ((flags & (int)Flags.NOPVP) == (int)Flags.NOPVP)
{
f.Add(Flags.NOPVP);
}
return f;
}

Expand Down
1 change: 1 addition & 0 deletions Flags.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,6 @@ public enum Flags
HEALONDAMAGE = 128,
GODMOB = 256,
HEAL = 512,
NOPVP = 1024,
}
}
8 changes: 7 additions & 1 deletion RegionFlags.cs
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,12 @@ private void OnUpdate(EventArgs args)

private void SetFlags( CommandArgs args )
{
if (args.Parameters.Count == 1 && args.Parameters[0] == "flags")
{
string flags = string.Join(", ", Enum.GetNames(typeof (Flags)));
args.Player.SendInfoMessage("Available flags: {0}", flags);
return;
}
if( args.Parameters.Count < 3 )
{
args.Player.SendMessage("Invalid usage: /rflags(/rf) set|rem [region name] [flag]", Color.Red);
Expand All @@ -244,6 +250,7 @@ private void SetFlags( CommandArgs args )
switch( args.Parameters[0] )
{
case "set":
case "add":
{

Flags enumval;
Expand Down Expand Up @@ -282,7 +289,6 @@ private void SetFlags( CommandArgs args )
break;
}
}
Console.WriteLine(String.Join(", ", reg.getFlags()));
}

private void DefineRegion( CommandArgs args )
Expand Down
38 changes: 32 additions & 6 deletions RegionPlayer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@ namespace RegionFlags
class RegionPlayer
{
private TSPlayer player;
private bool previousPVPMode = false;
private bool forcedPVP = false;
private bool removedPVP = false;
private PositionQueue positions;
private FlaggedRegionManager regionManager;
private DateTime lastWarned = DateTime.Now;
Expand All @@ -33,7 +35,8 @@ public void Update()

Region r = TShock.Regions.GetTopRegion( TShock.Regions.InAreaRegion(player.TileX, player.TileY) );

bool inzone = false;
bool inPVPZone = false;
bool inNoPVPZone = false;

bool warning = ((now - lastWarned).TotalSeconds > 5);

Expand Down Expand Up @@ -65,15 +68,29 @@ public void Update()
}
if (flags.Contains(Flags.PVP))
{
if (!player.TPlayer.hostile)
{
player.SendMessage("PVP arena entered, pvp enabled.", Color.Green);
}

player.TPlayer.hostile = true;
player.SendData(PacketTypes.TogglePvp);
NetMessage.SendData((int) PacketTypes.TogglePvp, -1, -1, "", player.Index);
inzone = true;
if (!forcedPVP)
inPVPZone = true;
forcedPVP = true;
}
if (flags.Contains(Flags.NOPVP))
{
if (player.TPlayer.hostile)
{
forcedPVP = true;
player.SendMessage("PVP arena entered, pvp enabled.", Color.Green);
player.SendMessage("PVP free area entered, pvp disabled.", Color.Green);
}

player.TPlayer.hostile = false;
player.SendData(PacketTypes.TogglePvp);
NetMessage.SendData((int)PacketTypes.TogglePvp, -1, -1, "", player.Index);
inNoPVPZone = true;
removedPVP = true;
}
if (flags.Contains(Flags.HURT))
{
Expand Down Expand Up @@ -102,7 +119,7 @@ public void Update()
}
}

if( !inzone && forcedPVP )
if (!inPVPZone && forcedPVP)
{
forcedPVP = false;
player.TPlayer.hostile = false;
Expand All @@ -111,6 +128,15 @@ public void Update()
player.SendMessage("PVP arena left, pvp disabled.", Color.Green);
}

if (!inNoPVPZone && removedPVP)
{
removedPVP = false;
player.TPlayer.hostile = false;
player.SendData(PacketTypes.TogglePvp);
NetMessage.SendData((int)PacketTypes.TogglePvp, -1, -1, "", player.Index);
player.SendMessage("PVP free area left, pvp disabled.", Color.Green);
}

if ((now - lastUpdate).TotalSeconds > 1)
{
positions.enqueue(player.TPlayer.position);
Expand Down
1 change: 1 addition & 0 deletions Utilities.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public static void GiveItem(string name, int X, int Y, int width, int height, in
Main.item[itemid].owner = id;
Main.item[itemid].prefix = (byte)prefix;
Main.item[itemid].velocity = velocity;
Main.item[itemid].noGrabDelay = 1;
NetMessage.SendData((int)PacketTypes.ItemDrop, -1, -1, "", itemid, 0f, 0f, 0f);
NetMessage.SendData((int)PacketTypes.ItemOwner, -1, -1, "", itemid, 0f, 0f, 0f);
}
Expand Down

0 comments on commit 46e774d

Please sign in to comment.