SHOW:
|
|
- or go back to the newest paste.
1 | ### Eclipse Workspace Patch 1.0 | |
2 | #P L2UFS | |
3 | Index: dist/config/players.properties | |
4 | =================================================================== | |
5 | --- dist/config/players.properties (revision 174) | |
6 | +++ dist/config/players.properties (working copy) | |
7 | @@ -75,6 +75,22 @@ | |
8 | # Default : False | |
9 | AnnounceKillPLayers = true | |
10 | ||
11 | +#================================================== | |
12 | +# L2ChaoticZone | |
13 | +#================================================== | |
14 | +# If set to false, zone will be no-restart zone | |
15 | +NoRestartZone = True | |
16 | +# If set to false, zone will be no-logout zone | |
17 | +NoLogoutZone = True | |
18 | +# If set to false, zone will be no-store zone | |
19 | +NoStoreZone = True | |
20 | +# Give noblesse after revive? | |
21 | +ReviveNoblesse = True | |
22 | +# Heal after revive? | |
23 | +ReviveHeal = True | |
24 | +# If set to true, players will take noblesse blessing when entering | |
25 | +GiveNoblesse = True | |
26 | + | |
27 | #============================================================= | |
28 | # Misc | |
29 | #============================================================= | |
30 | Index: java/net/sf/l2j/gameserver/network/serverpackets/ExSetCompassZoneCode.java | |
31 | =================================================================== | |
32 | --- java/net/sf/l2j/gameserver/network/serverpackets/ExSetCompassZoneCode.java (revision 173) | |
33 | +++ java/net/sf/l2j/gameserver/network/serverpackets/ExSetCompassZoneCode.java (working copy) | |
34 | @@ -20,12 +20,13 @@ | |
35 | */ | |
36 | public class ExSetCompassZoneCode extends L2GameServerPacket | |
37 | { | |
38 | - public static final int SIEGEWARZONE1 = 0x0A; | |
39 | - public static final int SIEGEWARZONE2 = 0x0B; | |
40 | - public static final int PEACEZONE = 0x0C; | |
41 | - public static final int SEVENSIGNSZONE = 0x0D; | |
42 | - public static final int PVPZONE = 0x0E; | |
43 | - public static final int GENERALZONE = 0x0F; | |
44 | + public static final int SIEGEWARZONE1 = 10; | |
45 | + public static final int SIEGEWARZONE2 = 11; | |
46 | + public static final int PEACEZONE = 12; | |
47 | + public static final int SEVENSIGNSZONE = 13; | |
48 | + public static final int PVPZONE = 14; | |
49 | + public static final int GENERALZONE = 15; | |
50 | + public static final int CHAOTIC = 16; | |
51 | ||
52 | private final int _zoneType; | |
53 | ||
54 | @@ -37,8 +38,8 @@ | |
55 | @Override | |
56 | protected void writeImpl() | |
57 | { | |
58 | - writeC(0xFE); | |
59 | - writeH(0x32); | |
60 | + writeC(254); | |
61 | + writeH(50); | |
62 | writeD(_zoneType); | |
63 | } | |
64 | } | |
65 | \ No newline at end of file | |
66 | Index: java/net/sf/l2j/gameserver/model/actor/L2Character.java | |
67 | =================================================================== | |
68 | --- java/net/sf/l2j/gameserver/model/actor/L2Character.java (revision 173) | |
69 | +++ java/net/sf/l2j/gameserver/model/actor/L2Character.java (working copy) | |
70 | @@ -1587,8 +1587,17 @@ | |
71 | ||
72 | setIsDead(false); | |
73 | ||
74 | + if (isInsideZone(ZoneId.CHAOTIC)) | |
75 | + { | |
76 | + _status.setCurrentCp(getMaxCp()); | |
77 | + _status.setCurrentHp(getMaxHp()); | |
78 | + _status.setCurrentMp(getMaxMp()); | |
79 | + } | |
80 | + else | |
81 | + { | |
82 | _status.setCurrentHp(getMaxHp() * Config.RESPAWN_RESTORE_HP); | |
83 | - | |
84 | + } | |
85 | + | |
86 | // Start broadcast status | |
87 | broadcastPacket(new Revive(this)); | |
88 | ||
89 | Index: java/net/sf/l2j/gameserver/network/clientpackets/SetPrivateStoreListSell.java | |
90 | =================================================================== | |
91 | --- java/net/sf/l2j/gameserver/network/clientpackets/SetPrivateStoreListSell.java (revision 173) | |
92 | +++ java/net/sf/l2j/gameserver/network/clientpackets/SetPrivateStoreListSell.java (working copy) | |
93 | @@ -84,6 +84,15 @@ | |
94 | return; | |
95 | } | |
96 | ||
97 | + if (Config.NOSTORE_ZONE) | |
98 | + { | |
99 | + if (player.isInsideZone(ZoneId.CHAOTIC)) | |
100 | + { | |
101 | + player.sendMessage("You cannot craft while inside Chaotic zone."); | |
102 | + return; | |
103 | + } | |
104 | + } | |
105 | + | |
106 | if (player.isInsideZone(ZoneId.NO_STORE)) | |
107 | { | |
108 | player.sendPacket(SystemMessageId.NO_PRIVATE_STORE_HERE); | |
109 | Index: java/net/sf/l2j/gameserver/model/zone/type/L2ChaoticZone.java | |
110 | =================================================================== | |
111 | --- java/net/sf/l2j/gameserver/model/zone/type/L2ChaoticZone.java (nonexistent) | |
112 | +++ java/net/sf/l2j/gameserver/model/zone/type/L2ChaoticZone.java (working copy) | |
113 | @@ -0,0 +1,88 @@ | |
114 | +package net.sf.l2j.gameserver.model.zone.type; | |
115 | + | |
116 | +import net.sf.l2j.Config; | |
117 | +import net.sf.l2j.gameserver.datatables.SkillTable; | |
118 | +import net.sf.l2j.gameserver.model.L2Skill; | |
119 | +import net.sf.l2j.gameserver.model.actor.L2Character; | |
120 | +import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; | |
121 | +import net.sf.l2j.gameserver.model.zone.L2SpawnZone; | |
122 | +import net.sf.l2j.gameserver.model.zone.ZoneId; | |
123 | +import net.sf.l2j.gameserver.network.serverpackets.ExShowScreenMessage; | |
124 | + | |
125 | +/** | |
126 | + * by : Wallister | |
127 | + */ | |
128 | + | |
129 | +public class L2ChaoticZone extends L2SpawnZone | |
130 | +{ | |
131 | + private static final boolean give_noblesse = Config.GIVE_NOBLESSE; | |
132 | + private static final boolean revive_noblesse = Config.REVIVE_NOBLESSE; | |
133 | + private static final boolean revive_heal = Config.REVIVE_HEAL; | |
134 | + | |
135 | + public L2ChaoticZone(int id) | |
136 | + { | |
137 | + super(id); | |
138 | + } | |
139 | + | |
140 | + L2Skill noblesse = SkillTable.getInstance().getInfo(1323, 1); | |
141 | + | |
142 | + @Override | |
143 | + protected void onEnter(L2Character character) | |
144 | + { | |
145 | + character.setInsideZone(ZoneId.CHAOTIC, true); | |
146 | + character.setInsideZone(ZoneId.DANGER_AREA, true); | |
147 | + | |
148 | + if ((character instanceof L2PcInstance)) | |
149 | + { | |
150 | + if (((L2PcInstance) character).getPvpFlag() == 0) | |
151 | + ((L2PcInstance) character).updatePvPFlag(1); | |
152 | + | |
153 | + L2PcInstance activeChar = ((L2PcInstance) character); | |
154 | + if (give_noblesse) | |
155 | + noblesse.getEffects(activeChar, activeChar); | |
156 | + | |
157 | + ((L2PcInstance) character).sendPacket(new ExShowScreenMessage("You entered a Chaotic Zone", 10000)); | |
158 | + ((L2PcInstance) character).sendMessage("You entered a Chaotic Zone"); | |
159 | + } | |
160 | + } | |
161 | + | |
162 | + @Override | |
163 | + protected void onExit(L2Character character) | |
164 | + { | |
165 | + character.setInsideZone(ZoneId.CHAOTIC, false); | |
166 | + character.setInsideZone(ZoneId.DANGER_AREA, false); | |
167 | + | |
168 | + if ((character instanceof L2PcInstance)) | |
169 | + { | |
170 | + if (((L2PcInstance) character).getPvpFlag() == 1) | |
171 | + ((L2PcInstance) character).updatePvPFlag(0); | |
172 | + ((L2PcInstance) character).sendPacket(new ExShowScreenMessage("You left a Chaotic Zone", 10000)); | |
173 | + ((L2PcInstance) character).sendMessage("You left a Chaotic Zone"); | |
174 | + } | |
175 | + } | |
176 | + | |
177 | + @Override | |
178 | + public void onDieInside(L2Character character) | |
179 | + { | |
180 | + } | |
181 | + | |
182 | + @Override | |
183 | + public void onReviveInside(L2Character character) | |
184 | + { | |
185 | + if (character instanceof L2PcInstance) | |
186 | + { | |
187 | + L2PcInstance activeChar = ((L2PcInstance) character); | |
188 | + if (revive_noblesse) | |
189 | + noblesse.getEffects(activeChar, activeChar); | |
190 | + if (revive_heal) | |
191 | + heal(activeChar); | |
192 | + } | |
193 | + } | |
194 | + | |
195 | + static void heal(L2PcInstance activeChar) | |
196 | + { | |
197 | + activeChar.setCurrentHp(activeChar.getMaxHp()); | |
198 | + activeChar.setCurrentCp(activeChar.getMaxCp()); | |
199 | + activeChar.setCurrentMp(activeChar.getMaxMp()); | |
200 | + } | |
201 | +} | |
202 | Index: java/net/sf/l2j/gameserver/network/clientpackets/RequestRestart.java | |
203 | =================================================================== | |
204 | --- java/net/sf/l2j/gameserver/network/clientpackets/RequestRestart.java (revision 173) | |
205 | +++ java/net/sf/l2j/gameserver/network/clientpackets/RequestRestart.java (working copy) | |
206 | @@ -14,6 +14,7 @@ | |
207 | */ | |
208 | package net.sf.l2j.gameserver.network.clientpackets; | |
209 | ||
210 | +import net.sf.l2j.Config; | |
211 | import net.sf.l2j.gameserver.instancemanager.SevenSignsFestival; | |
212 | import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; | |
213 | import net.sf.l2j.gameserver.model.zone.ZoneId; | |
214 | @@ -47,7 +48,15 @@ | |
215 | sendPacket(RestartResponse.valueOf(false)); | |
216 | return; | |
217 | } | |
218 | - | |
219 | + if (Config.NORESTART_ZONE) | |
220 | + { | |
221 | + if (player.isInsideZone(ZoneId.CHAOTIC)) | |
222 | + { | |
223 | + player.sendMessage("You cannot restart while inside a Chaotic zone."); | |
224 | + sendPacket(RestartResponse.valueOf(false)); | |
225 | + return; | |
226 | + } | |
227 | + } | |
228 | if (player.isInsideZone(ZoneId.NO_RESTART)) | |
229 | { | |
230 | player.sendPacket(SystemMessageId.NO_RESTART_HERE); | |
231 | @@ -64,7 +73,7 @@ | |
232 | return; | |
233 | } | |
234 | ||
235 | - if(NexusEvents.isInEvent(player)) | |
236 | + if (NexusEvents.isInEvent(player)) | |
237 | { | |
238 | player.sendMessage("A superior power doesn't allow you to leave the event"); | |
239 | player.sendPacket(ActionFailed.STATIC_PACKET); | |
240 | Index: java/net/sf/l2j/Config.java | |
241 | =================================================================== | |
242 | --- java/net/sf/l2j/Config.java (revision 175) | |
243 | +++ java/net/sf/l2j/Config.java (working copy) | |
244 | @@ -419,6 +419,12 @@ | |
245 | public static boolean ENABLE_MODIFY_SKILL_DURATION; | |
246 | public static Map<Integer, Integer> SKILL_DURATION_LIST; | |
247 | public static boolean ANNOUNCE_KILL; | |
248 | + public static boolean NORESTART_ZONE; | |
249 | + public static boolean NOSTORE_ZONE; | |
250 | + public static boolean NOLOGOUT_ZONE; | |
251 | + public static boolean GIVE_NOBLESSE; | |
252 | + public static boolean REVIVE_NOBLESSE; | |
253 | + public static boolean REVIVE_HEAL; | |
254 | public static boolean EFFECT_CANCELING; | |
255 | public static double HP_REGEN_MULTIPLIER; | |
256 | public static double MP_REGEN_MULTIPLIER; | |
257 | @@ -1211,6 +1217,12 @@ | |
258 | } | |
259 | } | |
260 | ANNOUNCE_KILL = players.getProperty("AnnounceKillPLayers", false); | |
261 | + NORESTART_ZONE = players.getProperty("NoRestartZone", false); | |
262 | + NOSTORE_ZONE = players.getProperty("NoStoreZone", false); | |
263 | + NOLOGOUT_ZONE = players.getProperty("NoLogoutZone", false); | |
264 | + GIVE_NOBLESSE = players.getProperty("GiveNoblesse", false); | |
265 | + REVIVE_NOBLESSE = players.getProperty("ReviveNoblesse", false); | |
266 | + REVIVE_HEAL = players.getProperty("ReviveHeal", false); | |
267 | ||
268 | EFFECT_CANCELING = players.getProperty("CancelLesserEffect", true); | |
269 | HP_REGEN_MULTIPLIER = players.getProperty("HpRegenMultiplier", 1.); | |
270 | Index: java/net/sf/l2j/gameserver/network/clientpackets/SetPrivateStoreListBuy.java | |
271 | =================================================================== | |
272 | --- java/net/sf/l2j/gameserver/network/clientpackets/SetPrivateStoreListBuy.java (revision 173) | |
273 | +++ java/net/sf/l2j/gameserver/network/clientpackets/SetPrivateStoreListBuy.java (working copy) | |
274 | @@ -83,6 +83,15 @@ | |
275 | return; | |
276 | } | |
277 | ||
278 | + if (Config.NOSTORE_ZONE) | |
279 | + { | |
280 | + if (player.isInsideZone(ZoneId.CHAOTIC)) | |
281 | + { | |
282 | + player.sendMessage("You cannot craft while inside Chaotic zone."); | |
283 | + return; | |
284 | + } | |
285 | + } | |
286 | + | |
287 | if (player.isInsideZone(ZoneId.NO_STORE)) | |
288 | { | |
289 | player.sendPacket(SystemMessageId.NO_PRIVATE_STORE_HERE); | |
290 | Index: java/net/sf/l2j/gameserver/network/clientpackets/Logout.java | |
291 | =================================================================== | |
292 | --- java/net/sf/l2j/gameserver/network/clientpackets/Logout.java (revision 173) | |
293 | +++ java/net/sf/l2j/gameserver/network/clientpackets/Logout.java (working copy) | |
294 | @@ -14,6 +14,7 @@ | |
295 | */ | |
296 | package net.sf.l2j.gameserver.network.clientpackets; | |
297 | ||
298 | +import net.sf.l2j.Config; | |
299 | import net.sf.l2j.gameserver.instancemanager.SevenSignsFestival; | |
300 | import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; | |
301 | import net.sf.l2j.gameserver.model.zone.ZoneId; | |
302 | @@ -51,6 +52,15 @@ | |
303 | return; | |
304 | } | |
305 | ||
306 | + if (Config.NOLOGOUT_ZONE) | |
307 | + { | |
308 | + if (player.isInsideZone(ZoneId.CHAOTIC)) | |
309 | + { | |
310 | + player.sendMessage("You cannot logout while inside a Chaotic zone."); | |
311 | + player.sendPacket(ActionFailed.STATIC_PACKET); | |
312 | + return; | |
313 | + } | |
314 | + } | |
315 | if (!player.isGM()) | |
316 | { | |
317 | if (AttackStanceTaskManager.getInstance().isInAttackStance(player)) | |
318 | @@ -67,7 +77,7 @@ | |
319 | return; | |
320 | } | |
321 | ||
322 | - if(NexusEvents.isInEvent(player)) | |
323 | + if (NexusEvents.isInEvent(player)) | |
324 | { | |
325 | player.sendMessage("A superior power doesn't allow you to leave the event"); | |
326 | sendPacket(ActionFailed.STATIC_PACKET); | |
327 | Index: java/net/sf/l2j/gameserver/model/zone/ZoneId.java | |
328 | =================================================================== | |
329 | --- java/net/sf/l2j/gameserver/model/zone/ZoneId.java (revision 173) | |
330 | +++ java/net/sf/l2j/gameserver/model/zone/ZoneId.java (working copy) | |
331 | @@ -38,7 +38,8 @@ | |
332 | DANGER_AREA(15), | |
333 | CAST_ON_ARTIFACT(16), | |
334 | NO_RESTART(17), | |
335 | - SCRIPT(18); | |
336 | + SCRIPT(18), | |
337 | + CHAOTIC(19); | |
338 | ||
339 | private final int _id; | |
340 | ||
341 | Index: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java | |
342 | =================================================================== | |
343 | --- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 174) | |
344 | +++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy) | |
345 | @@ -1285,6 +1285,14 @@ | |
346 | _lastCompassZone = ExSetCompassZoneCode.PEACEZONE; | |
347 | sendPacket(new ExSetCompassZoneCode(ExSetCompassZoneCode.PEACEZONE)); | |
348 | } | |
349 | + else if (isInsideZone(ZoneId.CHAOTIC)) | |
350 | + { | |
351 | + if (_lastCompassZone == ExSetCompassZoneCode.CHAOTIC) | |
352 | + return; | |
353 | + | |
354 | + _lastCompassZone = ExSetCompassZoneCode.CHAOTIC; | |
355 | + sendPacket(new ExSetCompassZoneCode(ExSetCompassZoneCode.CHAOTIC)); | |
356 | + } | |
357 | else | |
358 | { | |
359 | if (_lastCompassZone == ExSetCompassZoneCode.GENERALZONE) | |
360 | @@ -3975,7 +3983,7 @@ | |
361 | } | |
362 | ||
363 | // Reduce player's xp and karma. | |
364 | - if (Config.ALT_GAME_DELEVEL && (getSkillLevel(L2Skill.SKILL_LUCKY) < 0 || getStat().getLevel() > 9)) | |
365 | + if (Config.ALT_GAME_DELEVEL && (!isInsideZone(ZoneId.CHAOTIC)) && (getSkillLevel(L2Skill.SKILL_LUCKY) < 0 || getStat().getLevel() > 9)) | |
366 | deathPenalty(pk != null && getClan() != null && pk.getClan() != null && (getClan().isAtWarWith(pk.getClanId()) || pk.getClan().isAtWarWith(getClanId())), pk != null, killer instanceof L2SiegeGuardInstance); | |
367 | } | |
368 | } | |
369 | @@ -4026,7 +4034,7 @@ | |
370 | if (getKarma() <= 0 && pk != null && pk.getClan() != null && getClan() != null && pk.getClan().isAtWarWith(getClanId())) | |
371 | return; | |
372 | ||
373 | - if ((!isInsideZone(ZoneId.PVP) || pk == null) && (!isGM() || Config.KARMA_DROP_GM)) | |
374 | + if ((!isInsideZone(ZoneId.CHAOTIC)) && (!isInsideZone(ZoneId.PVP) || pk == null) && (!isGM() || Config.KARMA_DROP_GM)) | |
375 | { | |
376 | boolean isKillerNpc = (killer instanceof L2Npc); | |
377 | int pkLimit = Config.KARMA_PK_LIMIT; | |
378 | @@ -4231,6 +4239,9 @@ | |
379 | if (isInsideZone(ZoneId.PVP)) | |
380 | return; | |
381 | ||
382 | + if (isInsideZone(ZoneId.CHAOTIC)) | |
383 | + return; | |
384 | + | |
385 | PvpFlagTaskManager.getInstance().add(this, Config.PVP_NORMAL_TIME); | |
386 | ||
387 | if (getPvpFlag() == 0) | |
388 | @@ -4246,7 +4257,7 @@ | |
389 | if (isInDuel() && player.getDuelId() == getDuelId()) | |
390 | return; | |
391 | ||
392 | - if ((!isInsideZone(ZoneId.PVP) || !target.isInsideZone(ZoneId.PVP)) && player.getKarma() == 0) | |
393 | + if ((!isInsideZone(ZoneId.PVP) || !target.isInsideZone(ZoneId.PVP)) && (!isInsideZone(ZoneId.CHAOTIC) || !target.isInsideZone(ZoneId.CHAOTIC)) && player.getKarma() == 0) | |
394 | { | |
395 | PvpFlagTaskManager.getInstance().add(this, checkIfPvP(player) ? Config.PVP_PVP_TIME : Config.PVP_NORMAL_TIME); | |
396 | ||
397 | @@ -6633,6 +6644,9 @@ | |
398 | if (getClan() != null && getClan().isMember(cha.getObjectId())) | |
399 | return false; | |
400 | ||
401 | + if ((isInsideZone(ZoneId.CHAOTIC)) && (((L2PcInstance) attacker).isInsideZone(ZoneId.CHAOTIC))) | |
402 | + return true; | |
403 | + | |
404 | // Now check again if the L2PcInstance is in pvp zone (as arenas check was made before, it ends with sieges). | |
405 | if (isInsideZone(ZoneId.PVP) && attacker.isInsideZone(ZoneId.PVP)) | |
406 | return true; | |
407 | @@ -9936,7 +9950,7 @@ | |
408 | if (_deathPenaltyBuffLevel >= 15) // maximum level reached | |
409 | return; | |
410 | ||
411 | - if ((getKarma() > 0 || Rnd.get(1, 100) <= Config.DEATH_PENALTY_CHANCE) && !(killer instanceof L2PcInstance) && !isGM() && !(getCharmOfLuck() && (killer == null || killer.isRaid())) && !isPhoenixBlessed() && !(isInsideZone(ZoneId.PVP) || isInsideZone(ZoneId.SIEGE))) | |
412 | + if ((getKarma() > 0 || Rnd.get(1, 100) <= Config.DEATH_PENALTY_CHANCE) && !(killer instanceof L2PcInstance) && !isGM() && !(getCharmOfLuck() && (killer == null || killer.isRaid())) && !isPhoenixBlessed() && !(isInsideZone(ZoneId.PVP) && (!isInsideZone(ZoneId.CHAOTIC)) || isInsideZone(ZoneId.SIEGE))) | |
413 | { | |
414 | if (_deathPenaltyBuffLevel != 0) | |
415 | { | |
416 | Index: java/net/sf/l2j/gameserver/network/clientpackets/RequestRecipeShopListSet.java | |
417 | =================================================================== | |
418 | --- java/net/sf/l2j/gameserver/network/clientpackets/RequestRecipeShopListSet.java (revision 173) | |
419 | +++ java/net/sf/l2j/gameserver/network/clientpackets/RequestRecipeShopListSet.java (working copy) | |
420 | @@ -69,6 +69,14 @@ | |
421 | return; | |
422 | } | |
423 | ||
424 | + if (Config.NOSTORE_ZONE) | |
425 | + { | |
426 | + if (player.isInsideZone(ZoneId.CHAOTIC)) | |
427 | + { | |
428 | + player.sendMessage("You cannot craft while inside Chaotic zone."); | |
429 | + return; | |
430 | + } | |
431 | + } | |
432 | if (_count == 0) | |
433 | player.forceStandUp(); | |
434 | else |