Reactor drops & Looting & Mob HP overhaul + TreasurePQ

Modified coupon rates buff icon to not show up as expirable.
Reactor drops now also drops quest items at the border of the dropped items.
Added themed drop data for the Cake boss.
Reworked the Balrog expedition.
Added quest script for the Assassinate skill.
Fixed looting system blocking the killer's party from retrieving a loot until the FFA timeout.
Fixed a deadlock with the MapleMap class.
Refactored damage/heal contabilization on mobs.
Fixed issues with HT and status-based damage, providing weird issues with mob HP.
New PQ: TreasurePQ, for level 140+.
This commit is contained in:
ronancpl
2018-03-05 21:23:50 -03:00
parent f40a7fa2f8
commit bbd2debc08
78 changed files with 24220 additions and 21963 deletions
+31 -6
View File
@@ -33,7 +33,7 @@ public class MapleMapItem extends AbstractMapleMapObject {
protected MapleClient ownerClient;
protected Item item;
protected MapleMapObject dropper;
protected int character_ownerid, meso, questid = -1;
protected int character_ownerid, party_ownerid, meso, questid = -1;
protected byte type;
protected boolean pickedUp = false, playerDrop;
protected long dropTime;
@@ -43,7 +43,8 @@ public class MapleMapItem extends AbstractMapleMapObject {
setPosition(position);
this.item = item;
this.dropper = dropper;
this.character_ownerid = owner.getId();
this.character_ownerid = owner.getId();
this.party_ownerid = owner.getPartyId();
this.ownerClient = owner.getClient();
this.meso = 0;
this.type = type;
@@ -54,7 +55,8 @@ public class MapleMapItem extends AbstractMapleMapObject {
setPosition(position);
this.item = item;
this.dropper = dropper;
this.character_ownerid = owner.getParty() == null ? owner.getId() : owner.getPartyId();
this.character_ownerid = owner.getId();
this.party_ownerid = owner.getPartyId();
this.ownerClient = owner.getClient();
this.meso = 0;
this.type = type;
@@ -66,8 +68,9 @@ public class MapleMapItem extends AbstractMapleMapObject {
setPosition(position);
this.item = null;
this.dropper = dropper;
this.character_ownerid = owner.getParty() == null ? owner.getId() : owner.getPartyId();
this.ownerClient = owner.getClient();
this.character_ownerid = owner.getId();
this.party_ownerid = owner.getPartyId();
this.ownerClient = owner.getClient();
this.meso = meso;
this.type = type;
this.playerDrop = playerDrop;
@@ -90,10 +93,32 @@ public class MapleMapItem extends AbstractMapleMapObject {
return dropper;
}
public final int getOwner() {
public final int getOwnerId() {
return character_ownerid;
}
public final boolean canBePickedBy(MapleCharacter chr) {
if (character_ownerid <= 0) return true;
if (party_ownerid == -1) {
if (chr.getId() == character_ownerid) {
return true;
} else if (chr.isPartyMember(character_ownerid)) {
party_ownerid = chr.getPartyId();
return true;
}
} else {
if (chr.getPartyId() == party_ownerid) {
return true;
} else if (chr.getId() == character_ownerid) {
party_ownerid = chr.getPartyId();
return true;
}
}
return System.currentTimeMillis() - dropTime >= 15 * 1000;
}
public final MapleClient getOwnerClient() {
return (ownerClient.isLoggedIn() && !ownerClient.getPlayer().isAwayFromWorld()) ? ownerClient : null;
}