Index: java/com/l2jserver/Config.java
===================================================================
--- java/com/l2jserver/Config.java (revision 4626)
+++ java/com/l2jserver/Config.java (working copy)
@@ -656,6 +656,9 @@
public static int TVT_EVENT_START_LEAVE_TELEPORT_DELAY;
public static String TVT_EVENT_TEAM_1_NAME;
public static int[] TVT_EVENT_TEAM_1_COORDINATES = new int[3];
+ public static boolean TVT_ENABLE_RANDOM_RESPAWN;
+ public static int[][] TVT_RANDOM_LOCATIONS_TEAM_1;
+ public static int[][] TVT_RANDOM_LOCATIONS_TEAM_2;
public static String TVT_EVENT_TEAM_2_NAME;
public static int[] TVT_EVENT_TEAM_2_COORDINATES = new int[3];
public static List<int[]> TVT_EVENT_REWARDS;
@@ -2407,6 +2410,48 @@
}
}
}
+
+ TVT_ENABLE_RANDOM_RESPAWN = Boolean.parseBoolean(L2JModSettings.getProperty("EnableRandomRespawn", "true"));
+
+ if(TVT_ENABLE_RANDOM_RESPAWN) {
+ propertySplit = L2JModSettings.getProperty("RaspawnLocationsTeam1", "0,0,0").split(";");
+ if(!propertySplit[0].isEmpty()) {
+ TVT_RANDOM_LOCATIONS_TEAM_1 = new int[propertySplit.length][3];
+ int index = 0;
+ for(String location : propertySplit) {
+ String[] coordinates = location.split(",");
+ if(coordinates.length == 3) {
+ TVT_RANDOM_LOCATIONS_TEAM_1[index][0] = Integer.parseInt(coordinates[0]);
+ TVT_RANDOM_LOCATIONS_TEAM_1[index][1] = Integer.parseInt(coordinates[1]);
+ TVT_RANDOM_LOCATIONS_TEAM_1[index][2] = Integer.parseInt(coordinates[2]);
+ index++;
+ } else {
+ TVT_ENABLE_RANDOM_RESPAWN = false;
+ }
+ }
+ } else {
+ TVT_ENABLE_RANDOM_RESPAWN = false;
+ }
+
+ propertySplit = L2JModSettings.getProperty("RaspawnLocationsTeam2", "0,0,0").split(";");
+ if(!propertySplit[0].isEmpty()) {
+ TVT_RANDOM_LOCATIONS_TEAM_2 = new int[propertySplit.length][3];
+ int index = 0;
+ for(String location : propertySplit) {
+ String[] coordinates = location.split(",");
+ if(coordinates.length == 3) {
+ TVT_RANDOM_LOCATIONS_TEAM_2[index][0] = Integer.parseInt(coordinates[0]);
+ TVT_RANDOM_LOCATIONS_TEAM_2[index][1] = Integer.parseInt(coordinates[1]);
+ TVT_RANDOM_LOCATIONS_TEAM_2[index][2] = Integer.parseInt(coordinates[2]);
+ index++;
+ } else {
+ TVT_ENABLE_RANDOM_RESPAWN = false;
+ }
+ }
+ } else {
+ TVT_ENABLE_RANDOM_RESPAWN = false;
+ }
+ }
}
}
}
Index: java/com/l2jserver/gameserver/model/entity/TvTEvent.java
===================================================================
--- java/com/l2jserver/gameserver/model/entity/TvTEvent.java (revision 4626)
+++ java/com/l2jserver/gameserver/model/entity/TvTEvent.java (working copy)
@@ -97,6 +97,11 @@
AntiFeedManager.getInstance().registerEvent(AntiFeedManager.TVT_ID);
_teams[0] = new TvTEventTeam(Config.TVT_EVENT_TEAM_1_NAME, Config.TVT_EVENT_TEAM_1_COORDINATES);
_teams[1] = new TvTEventTeam(Config.TVT_EVENT_TEAM_2_NAME, Config.TVT_EVENT_TEAM_2_COORDINATES);
+
+ if(Config.TVT_ENABLE_RANDOM_RESPAWN) {
+ _teams[0].setRandomCoordinates(Config.TVT_RANDOM_LOCATIONS_TEAM_1);
+ _teams[1].setRandomCoordinates(Config.TVT_RANDOM_LOCATIONS_TEAM_2);
+ }
}
/**
@@ -855,7 +860,11 @@
return;
}
- new TvTEventTeleporter(killedPlayerInstance, _teams[killedTeamId].getCoordinates(), false, false);
+ if(Config.TVT_ENABLE_RANDOM_RESPAWN) {
+ new TvTEventTeleporter(killedPlayerInstance, _teams[killedTeamId].getRandomLocation(), false, false);
+ } else {
+ new TvTEventTeleporter(killedPlayerInstance, _teams[killedTeamId].getCoordinates(), false, false);
+ }
if (killerCharacter == null)
{
Index: java/com/l2jserver/gameserver/model/entity/TvTEventTeam.java
===================================================================
--- java/com/l2jserver/gameserver/model/entity/TvTEventTeam.java (revision 4626)
+++ java/com/l2jserver/gameserver/model/entity/TvTEventTeam.java (working copy)
@@ -19,6 +19,7 @@
import javolution.util.FastMap;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.util.Rnd;
/**
* @author FBIagent
@@ -33,6 +34,8 @@
private short _points;
/** Name and instance of all participated players in FastMap<br> */
private Map<Integer, L2PcInstance> _participatedPlayers = new FastMap<Integer, L2PcInstance>();
+ /** Posible team spawn coordinates */
+ private int[][] _randomCoordinates;
/**
* C'tor initialize the team<br><br>
@@ -180,4 +183,12 @@
return participatedPlayerCount;
}
+
+ public void setRandomCoordinates(int[][] randomCoordinates) {
+ this._randomCoordinates = randomCoordinates;
+ }
+
+ public int[] getRandomLocation() {
+ return _randomCoordinates[Rnd.get(_randomCoordinates.length - 1)];
+ }
}
Index: java/config/l2jmods.properties
===================================================================
--- java/config/l2jmods.properties (revision 4626)
+++ java/config/l2jmods.properties (working copy)
@@ -175,6 +175,17 @@
TvTEventTeam2Name = Team2
TvTEventTeam2Coordinates = 149999,46728,-3414
+# Enable random respawn when player is killed
+EnableRandomRespawn = True
+
+# Locations for random respawn for team 1 x,z,y;x,z,y;....
+# EnableRandomRespawn should set to True
+RaspawnLocationsTeam1 = 148695,46725,-3414;148585,46930,-3414;148584,46555,-3414;148431,46706,-3413;148404,47077,-3414;148372,46382,-3414;148313,46723,-3413
+
+# Locations for random respawn for team 2 x,z,y;x,z,y;....
+# EnableRandomRespawn should set to True
+RaspawnLocationsTeam2 = 149999,46728,-3414;150586,46743,-3414;150546,47097,-3414;150557,46395,-3414;150373,46516,-3414;150348,46981,-3414;149980,47249,-3414
+
# Reward for winning team.
# Example: TvTEventReward = itemId,amount;itemId,amount;itemId,amount
TvTEventReward = 57,100000
By goncafa