Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 28836a7a4f | |||
| 5511dc7899 | |||
| e5b2247204 | |||
| 0404ca1a94 | |||
| 9ad5f239b0 | |||
| 3db8ee7afd | |||
| f07974f673 | |||
| 0d5cef1652 | |||
| 04203c092a | |||
| 78feee482b | |||
| 8c35844e08 | |||
| 0fbb43e021 | |||
| 145449f26d |
@@ -197,8 +197,6 @@ public enum CombatManager {
|
||||
}
|
||||
}
|
||||
|
||||
checkForProc(attacker,target,weapon);
|
||||
|
||||
//get delay for the auto attack job
|
||||
long delay = 5000;
|
||||
|
||||
@@ -223,6 +221,16 @@ public enum CombatManager {
|
||||
|
||||
if (inRange) {
|
||||
|
||||
if(attacker.getObjectType().equals(mbEnums.GameObjectType.PlayerCharacter)){
|
||||
if(!attacker.getTimestamps().contains(slot.name()+"Attack")){
|
||||
attacker.getTimestamps().put(slot.name()+"Attack", System.currentTimeMillis() - 1000);
|
||||
} else if(System.currentTimeMillis() < attacker.getTimestamps().get(slot.name()+"Attack") + delay){
|
||||
setAutoAttackJob(attacker,slot,delay);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//handle retaliate
|
||||
if (AbstractCharacter.IsAbstractCharacter(target)) {
|
||||
if (((AbstractCharacter) target).combatTarget == null || !((AbstractCharacter) target).combatTarget.isAlive()) {
|
||||
@@ -359,6 +367,9 @@ public enum CombatManager {
|
||||
}
|
||||
}
|
||||
|
||||
//check for proccing
|
||||
checkForProc(attacker,target,weapon);
|
||||
|
||||
//calculate the base damage
|
||||
int damage = ThreadLocalRandom.current().nextInt(min, max + 1);
|
||||
if (damage == 0) {
|
||||
|
||||
@@ -265,12 +265,12 @@ public enum ForgeManager implements Runnable {
|
||||
|
||||
// Assign a prefix and suffix to this item if random rolled
|
||||
|
||||
if (workOrder.prefixToken == 0)
|
||||
if (workOrder.prefixToken == 0 && workOrder.vendor.getItemModTable().contains((template.modTable)))
|
||||
forgedItem.prefixToken = calcRandomMod(workOrder.vendor, mbEnums.ItemModType.PREFIX, template.modTable);
|
||||
else
|
||||
forgedItem.prefixToken = workOrder.prefixToken;
|
||||
|
||||
if (workOrder.suffixToken == 0)
|
||||
if (workOrder.suffixToken == 0 && workOrder.vendor.getItemModTable().contains((template.modTable)))
|
||||
forgedItem.suffixToken = calcRandomMod(workOrder.vendor, mbEnums.ItemModType.SUFFIX, template.modTable);
|
||||
else
|
||||
forgedItem.suffixToken = workOrder.suffixToken;
|
||||
|
||||
@@ -102,7 +102,7 @@ public enum ItemManager {
|
||||
if (characterSkill == null)
|
||||
return false;
|
||||
|
||||
if (characterSkill.getModifiedAmountBeforeMods() > required_value)
|
||||
if (characterSkill.getModifiedAmountBeforeMods() >= required_value)
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@@ -135,7 +135,8 @@ public class WorkOrder implements Delayed {
|
||||
if (!workOrder.vendor.charItemManager.hasRoomInventory(template.item_wt))
|
||||
return 30; //30: That person cannot carry that item
|
||||
|
||||
if (!workOrder.vendor.getItemModTable().contains((template.modTable)))
|
||||
if ((workOrder.prefixToken != 0 || workOrder.suffixToken != 0) &&
|
||||
!workOrder.vendor.getItemModTable().contains((template.modTable)))
|
||||
return 59; //59: This hireling does not have this formula
|
||||
|
||||
if (!Warehouse.calcCostOverrun(workOrder).isEmpty())
|
||||
|
||||
@@ -2727,12 +2727,12 @@ public class mbEnums {
|
||||
ANTIMONY(1580014, 1256147265, 452320058, 1000, 10),
|
||||
AZOTH(1580012, -1205326951, 78329697, 2000, 20),
|
||||
BLOODSTONE(1580020, -1912381716, -1569826353, 500, 5),
|
||||
BRONZEWOOD(1580006, -519681813, 1334770447, 500, 10),
|
||||
BRONZEWOOD(1580006, -519681813, 1334770447, 1000, 30),
|
||||
COAL(1580008, -1672872311, 2559427, 3000, 30),
|
||||
DIAMOND(1580010, 1540225085, -1730704107, 2000, 20),
|
||||
GALVOR(1580017, -1683992404, -1596311545, 2000, 5),
|
||||
IRON(1580002, -1673518119, 2504297, 2000, 20),
|
||||
LUMBER(1580004, 1628412684, -1603256692, 10000, 100),
|
||||
LUMBER(1580004, -1628412684, -1603256692, 10000, 100),
|
||||
MANDRAKE(1580007, 1519910613, 1191391799, 1000, 10),
|
||||
MITHRIL(1580021, 626743397, -1761257186, 500, 5),
|
||||
OAK(1580005, -1653034775, 74767, 3000, 30),
|
||||
|
||||
@@ -102,6 +102,9 @@ public class InviteToSubHandler extends AbstractClientMsgHandler {
|
||||
//source guild is limited to 7 subs
|
||||
//TODO this should be based on TOL rank
|
||||
|
||||
//cannot be subbed into a nation if you already have your own sub guilds
|
||||
if(targetGuild.getSubGuildList() != null && targetGuild.getSubGuildList().size() > 0)
|
||||
return true;
|
||||
|
||||
if (!sourceGuild.canSubAGuild(targetGuild)) {
|
||||
sendChat(source, "This Guild can't be subbed.");
|
||||
|
||||
@@ -54,7 +54,7 @@ public class PetAttackMsgHandler extends AbstractClientMsgHandler {
|
||||
pet.setCombatTarget(PlayerCharacter.getPlayerCharacter(msg.getTargetID()));
|
||||
|
||||
switch (msg.getTargetType()) {
|
||||
case 53: //player character
|
||||
case 52: //player character
|
||||
pet.setCombatTarget(PlayerCharacter.getPlayerCharacter(msg.getTargetID()));
|
||||
break;
|
||||
case 37://mob
|
||||
|
||||
@@ -1400,6 +1400,7 @@ public class CharacterItemManager {
|
||||
|
||||
if (!ItemManager.validForSkills(item, pc.getSkills())) {
|
||||
this.forceToInventory(slot, item, pc, initialized);
|
||||
this.equipped.remove(slot);
|
||||
pc.applyBonuses();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -306,8 +306,22 @@ public class City extends AbstractWorldObject {
|
||||
if (city.parentZone == null)
|
||||
continue;
|
||||
|
||||
//can't repledge to a guild you're already part of
|
||||
// Can't teleport to something without a tree
|
||||
|
||||
if (city.getTOL() == null)
|
||||
continue;
|
||||
|
||||
// No abandoned cities
|
||||
|
||||
if (city.getTOL().getGuild().isEmptyGuild())
|
||||
continue;
|
||||
|
||||
// No destroyed cities
|
||||
|
||||
if (city.getTOL().getRank() == -1)
|
||||
continue;
|
||||
|
||||
//can't repledge to a guild you're already part of
|
||||
if (repledge && city.getGuild().equals(playerCharacter.guild))
|
||||
continue;
|
||||
|
||||
|
||||
@@ -220,8 +220,7 @@ public class Mine extends AbstractGameObject {
|
||||
// Only inactive mines are returned.
|
||||
|
||||
for (Mine mine : Mine.mineMap.keySet()) {
|
||||
if (mine.owningGuild.getObjectUUID() == guildID &&
|
||||
mine.isActive == false)
|
||||
if (mine.owningGuild.getObjectUUID() == guildID)
|
||||
mineList.add(mine);
|
||||
}
|
||||
return mineList;
|
||||
|
||||
@@ -95,6 +95,12 @@ public class DestroyCityThread implements Runnable {
|
||||
if (cityBuilding == null)
|
||||
continue;
|
||||
|
||||
// check null bluepritn and log error
|
||||
if (cityBuilding.getBlueprint() == null){
|
||||
Logger.error("Null Blueprint for building ID: " + cityBuilding.getObjectUUID());
|
||||
continue;
|
||||
}
|
||||
|
||||
// Do nothing with the banestone. It will be removed elsewhere
|
||||
|
||||
if (cityBuilding.getBlueprint().getBuildingGroup().equals(mbEnums.BuildingGroup.BANESTONE))
|
||||
|
||||
Reference in New Issue
Block a user