Re: Баг при осадах креп и артефактов
Код:
Index: main/java/com/aionemu/gameserver/controllers/MonsterController.java
===================================================================
--- main/java/com/aionemu/gameserver/controllers/MonsterController.java (revision 267)
+++ main/java/com/aionemu/gameserver/controllers/MonsterController.java (working copy)
@@ -16,19 +16,8 @@
*/
package com.aionemu.gameserver.controllers;
-import com.aionemu.gameserver.model.alliance.PlayerAlliance;
-import com.aionemu.gameserver.model.gameobjects.AionObject;
import com.aionemu.gameserver.model.gameobjects.Monster;
-import com.aionemu.gameserver.model.gameobjects.player.Player;
-import com.aionemu.gameserver.model.group.PlayerGroup;
-import com.aionemu.gameserver.questEngine.QuestEngine;
-import com.aionemu.gameserver.questEngine.model.QuestEnv;
-import com.aionemu.gameserver.services.AllianceService;
import com.aionemu.gameserver.services.DropService;
-import com.aionemu.gameserver.services.GroupService;
-import com.aionemu.gameserver.utils.stats.StatFunctions;
-import com.aionemu.gameserver.world.World;
-import com.aionemu.gameserver.world.WorldType;
/**
* @author ATracer, Sarynth
@@ -36,58 +25,6 @@
public class MonsterController extends NpcController
{
@Override
- public void doReward()
- {
- AionObject winner = getOwner().getAggroList().getMostDamage();
-
- if(winner == null)
- return;
-
- // TODO: Split the EXP based on overall damage.
-
- if (winner instanceof PlayerAlliance)
- {
- AllianceService.getInstance().doReward((PlayerAlliance)winner, getOwner());
- }
- else if (winner instanceof PlayerGroup)
- {
- GroupService.getInstance().doReward((PlayerGroup)winner, getOwner());
- }
- else if (((Player)winner).isInGroup())
- {
- GroupService.getInstance().doReward(((Player)winner).getPlayerGroup(), getOwner());
- }
- else
- {
- super.doReward();
-
- Player player = (Player)winner;
-
- // Exp reward
- long expReward = StatFunctions.calculateSoloExperienceReward(player, getOwner());
- player.getCommonData().addExp(expReward);
-
- // DP reward
- int currentDp = player.getCommonData().getDp();
- int dpReward = StatFunctions.calculateSoloDPReward(player, getOwner());
- player.getCommonData().setDp(dpReward + currentDp);
-
- // AP reward
- WorldType worldType = World.getInstance().getWorldMap(player.getWorldId()).getWorldType();
- if(worldType == WorldType.ABYSS)
- {
- int apReward = StatFunctions.calculateSoloAPReward(player, getOwner());
- player.getCommonData().addAp(apReward);
- }
-
- QuestEngine.getInstance().onKill(new QuestEnv(getOwner(), player, 0 , 0));
-
- // Give Drop
- DropService.getInstance().registerDrop(getOwner() , player, player.getLevel());
- }
- }
-
- @Override
public void onRespawn()
{
super.onRespawn();
Index: main/java/com/aionemu/gameserver/controllers/NpcController.java
===================================================================
--- main/java/com/aionemu/gameserver/controllers/NpcController.java (revision 267)
+++ main/java/com/aionemu/gameserver/controllers/NpcController.java (working copy)
@@ -30,6 +30,8 @@
import com.aionemu.gameserver.model.ChatType;
import com.aionemu.gameserver.model.EmotionType;
import com.aionemu.gameserver.model.TaskId;
+import com.aionemu.gameserver.model.alliance.PlayerAlliance;
+import com.aionemu.gameserver.model.gameobjects.AionObject;
import com.aionemu.gameserver.model.gameobjects.Creature;
import com.aionemu.gameserver.model.gameobjects.Npc;
import com.aionemu.gameserver.model.gameobjects.Summon;
@@ -38,6 +40,7 @@
import com.aionemu.gameserver.model.gameobjects.player.RequestResponseHandler;
import com.aionemu.gameserver.model.gameobjects.state.CreatureState;
import com.aionemu.gameserver.model.gameobjects.stats.NpcGameStats;
+import com.aionemu.gameserver.model.group.PlayerGroup;
import com.aionemu.gameserver.model.templates.TradeListTemplate;
import com.aionemu.gameserver.network.aion.serverpackets.SM_ATTACK;
import com.aionemu.gameserver.network.aion.serverpackets.SM_ATTACK_STATUS;
@@ -53,8 +56,11 @@
import com.aionemu.gameserver.questEngine.QuestEngine;
import com.aionemu.gameserver.questEngine.model.QuestEnv;
import com.aionemu.gameserver.restrictions.RestrictionsManager;
+import com.aionemu.gameserver.services.AllianceService;
import com.aionemu.gameserver.services.CraftSkillUpdateService;
import com.aionemu.gameserver.services.CubeExpandService;
+import com.aionemu.gameserver.services.DropService;
+import com.aionemu.gameserver.services.GroupService;
import com.aionemu.gameserver.services.ItemService;
import com.aionemu.gameserver.services.LegionService;
import com.aionemu.gameserver.services.RespawnService;
@@ -63,7 +69,9 @@
import com.aionemu.gameserver.services.WarehouseService;
import com.aionemu.gameserver.utils.MathUtil;
import com.aionemu.gameserver.utils.PacketSendUtility;
+import com.aionemu.gameserver.utils.stats.StatFunctions;
import com.aionemu.gameserver.world.World;
+import com.aionemu.gameserver.world.WorldType;
/**
* This class is for controlling Npc's
@@ -103,6 +111,58 @@
}
@Override
+ public void doReward()
+ {
+ AionObject winner = getOwner().getAggroList().getMostDamage();
+
+ if(winner == null)
+ return;
+
+ // TODO: Split the EXP based on overall damage.
+
+ if (winner instanceof PlayerAlliance)
+ {
+ AllianceService.getInstance().doReward((PlayerAlliance)winner, getOwner());
+ }
+ else if (winner instanceof PlayerGroup)
+ {
+ GroupService.getInstance().doReward((PlayerGroup)winner, getOwner());
+ }
+ else if (((Player)winner).isInGroup())
+ {
+ GroupService.getInstance().doReward(((Player)winner).getPlayerGroup(), getOwner());
+ }
+ else
+ {
+ super.doReward();
+
+ Player player = (Player)winner;
+
+ // Exp reward
+ long expReward = StatFunctions.calculateSoloExperienceReward(player, getOwner());
+ player.getCommonData().addExp(expReward);
+
+ // DP reward
+ int currentDp = player.getCommonData().getDp();
+ int dpReward = StatFunctions.calculateSoloDPReward(player, getOwner());
+ player.getCommonData().setDp(dpReward + currentDp);
+
+ // AP reward
+ WorldType worldType = World.getInstance().getWorldMap(player.getWorldId()).getWorldType();
+ if(worldType == WorldType.ABYSS)
+ {
+ int apReward = StatFunctions.calculateSoloAPReward(player, getOwner());
+ player.getCommonData().addAp(apReward);
+ }
+
+ QuestEngine.getInstance().onKill(new QuestEnv(getOwner(), player, 0 , 0));
+
+ // Give Drop
+ DropService.getInstance().registerDrop(getOwner() , player, player.getLevel());
+ }
+ }
+
+ @Override
public void onRespawn()
{
super.onRespawn();
Index: main/java/com/aionemu/gameserver/services/AllianceService.java
===================================================================
--- main/java/com/aionemu/gameserver/services/AllianceService.java (revision 267)
+++ main/java/com/aionemu/gameserver/services/AllianceService.java (working copy)
@@ -29,7 +29,7 @@
import com.aionemu.gameserver.model.alliance.PlayerAllianceEvent;
import com.aionemu.gameserver.model.alliance.PlayerAllianceMember;
import com.aionemu.gameserver.model.gameobjects.Creature;
-import com.aionemu.gameserver.model.gameobjects.Monster;
+import com.aionemu.gameserver.model.gameobjects.Npc;
import com.aionemu.gameserver.model.gameobjects.player.Player;
import com.aionemu.gameserver.model.gameobjects.player.RequestResponseHandler;
import com.aionemu.gameserver.model.group.PlayerGroup;
@@ -580,7 +580,7 @@
* @param winner
* @param owner
*/
- public void doReward(PlayerAlliance alliance, Monster owner)
+ public void doReward(PlayerAlliance alliance, Npc owner)
{
// TODO: Merge with group type do-reward. (Near identical to GroupService doReward code.)
// Plus complete rewrite of drop system and exp system.
Index: main/java/com/aionemu/gameserver/services/GroupService.java
===================================================================
--- main/java/com/aionemu/gameserver/services/GroupService.java (revision 267)
+++ main/java/com/aionemu/gameserver/services/GroupService.java (working copy)
@@ -259,7 +259,7 @@
*
* @param player
*/
- public void doReward(PlayerGroup group, Monster owner)
+ public void doReward(PlayerGroup group, Npc owner)
{
// Find Group Members and Determine Highest Level
List<Player> players = new ArrayList<Player>();
Index: main/java/com/aionemu/gameserver/world/WorldMapType.java
===================================================================
--- main/java/com/aionemu/gameserver/world/WorldMapType.java (revision 267)
+++ main/java/com/aionemu/gameserver/world/WorldMapType.java (working copy)
@@ -20,6 +20,7 @@
{
// Asmodea
PANDAEMONIUM(120010000),
+ MARCHUTAN(120020000),
ISHALGEN(220010000),
MORHEIM(220020000),
ALTGARD(220030000),
@@ -28,14 +29,21 @@
// Elysia
SANCTUM(110010000),
+ KAISINEL(110020000),
POETA(210010000),
VERTERON(210030000),
ELTNEN(210020000),
HEIRON(210040000),
THEOMOBOS(210060000),
+
+ // Balaurea
+ INGGISON(210050000),
+ GELKMAROS(220070000),
+ SILENTERA_CANYON(600010000),
// Prison
PRISON(510010000),
+ DF_PRISON(520010000),
RESHANTA(400010000),
@@ -60,7 +68,27 @@
DRAUPNIR_CAVE(320080000),
FIRE_TEMPLE(320100000),
ALQUIMIA(320110000),
- ADMA_STRONGHOLD(320130000);
+ ADMA_STRONGHOLD(320130000),
+ TEMPLE_UP(300150000),
+ TEMPLE_LOW (300160000),
+ CATACOMBS(300170000),
+ ELIM (300190000),
+ NOVICE(300200000),
+ DREDGION_02(300210000),
+ DEBRIS_OF_ABYSS(300220000),
+ CROMEDE(300230000),
+ ABPROD3(320140000),
+ DF1B(320060000),
+ SPACE(320070000),
+ DC1_ARENA(320090000),
+ DC1_ARENA_3F(320120000),
+
+ //Test Map
+ TEST_BASIC(900020000),
+ TEST_SERVER(900030000),
+ TEST_GIANTMONSTER(900100000),
+ HOUSING_BARRACK(900110000);
+
private final int worldId;
Index: main/java/com/aionemu/gameserver/world/WorldType.java
===================================================================
--- main/java/com/aionemu/gameserver/world/WorldType.java (revision 267)
+++ main/java/com/aionemu/gameserver/world/WorldType.java (working copy)
@@ -24,6 +24,7 @@
{
ASMODAE,
ELYSEA,
+ BALAUREA,
ABYSS,
PRISON,
NONE
Вот капайте, объясню взять и применить нельзя, патч не для этой сборки..
Но разобрать можно
|