Compare commits

...

4 Commits

Author SHA1 Message Date
FatBoy da0510d2bc proccing system 2024-06-22 19:50:53 -05:00
FatBoy 1f732a8ca9 failed rune sno longer get consumed 2024-06-22 19:31:13 -05:00
FatBoy 0d24789a93 reverse KOS function completed 2024-06-22 19:22:13 -05:00
FatBoy 35427cfb4a reverse KOS function 2024-06-22 19:04:04 -05:00
3 changed files with 112 additions and 66 deletions
+19
View File
@@ -19,6 +19,7 @@ import engine.net.client.msg.UpdateStateMsg;
import engine.objects.*; import engine.objects.*;
import engine.powers.DamageShield; import engine.powers.DamageShield;
import engine.powers.effectmodifiers.AbstractEffectModifier; import engine.powers.effectmodifiers.AbstractEffectModifier;
import engine.powers.effectmodifiers.WeaponProcEffectModifier;
import engine.server.MBServerStatics; import engine.server.MBServerStatics;
import org.pmw.tinylog.Logger; import org.pmw.tinylog.Logger;
@@ -196,6 +197,8 @@ public enum CombatManager {
} }
} }
checkForProc(attacker,target,weapon);
//get delay for the auto attack job //get delay for the auto attack job
long delay = 5000; long delay = 5000;
@@ -651,4 +654,20 @@ public enum CombatManager {
int masteryLevel = 0; int masteryLevel = 0;
return max * (pow(0.0124 * primary + 0.118 * (primary - 0.75), 0.5) + pow(0.0022 * secondary + 0.028 * (secondary - 0.75), 0.5) + 0.0075 * (focusLevel + masteryLevel)); return max * (pow(0.0124 * primary + 0.118 * (primary - 0.75), 0.5) + pow(0.0022 * secondary + 0.028 * (secondary - 0.75), 0.5) + 0.0075 * (focusLevel + masteryLevel));
} }
public static void checkForProc(AbstractCharacter attacker, AbstractWorldObject target, Item weapon){
if(weapon == null) // cant proc without a weapon
return;
for(Effect eff : weapon.effects.values()){
for(AbstractEffectModifier mod : eff.getEffectsBase().getModifiers()){
if(mod.modType.equals(mbEnums.ModType.WeaponProc))
if(ThreadLocalRandom.current().nextInt(0,101) < 6)
((WeaponProcEffectModifier)mod).applyProc(attacker,target);
}
}
}
} }
@@ -264,8 +264,9 @@ public class ObjectActionMsgHandler extends AbstractClientMsgHandler {
player.cancelOnSpell(); player.cancelOnSpell();
break; break;
case RUNE: case RUNE:
ApplyRuneMsg.applyRune(uuid, origin, player); if(ApplyRuneMsg.applyRune(uuid, origin, player)) {
itemMan.consume(item); itemMan.consume(item);
}
break; break;
default: //shouldn't be here, consume item default: //shouldn't be here, consume item
dispatch = Dispatch.borrow(player, msg); dispatch = Dispatch.borrow(player, msg);
+46 -20
View File
@@ -306,7 +306,19 @@ public class City extends AbstractWorldObject {
if (city.parentZone == null) if (city.parentZone == null)
continue; continue;
if (city.parentZone.guild_zone && city.isOpen() && city.getTOL().rank > 4) { if(repledge && city.getGuild().equals(playerCharacter.guild)){
//can't repledge to a guild you're already part of
continue;
}
if (city.parentZone.guild_zone) {
if(city.getGuild().getNation().equals(playerCharacter.guild.getNation())){
//players can all port and repledge inside their own nation
cities.add(city);
continue;
}
if (city.isOpen() && city.getTOL().rank > 4) {
// Filter Lore cities // Filter Lore cities
@@ -315,32 +327,46 @@ public class City extends AbstractWorldObject {
if (!repledge) if (!repledge)
if (!city.getGuild().charter.equals(playerCharacter.guild.charter)) if (!city.getGuild().charter.equals(playerCharacter.guild.charter))
continue; continue;
else if (!city.getGuild().charter.canJoin(playerCharacter))
if (repledge)
if (!city.getGuild().charter.canJoin(playerCharacter))
continue; continue;
} }
Integer playerUUID = playerCharacter.objectUUID;
if (!city.getTOL().reverseKOS) { Integer guildUUID = playerCharacter.guildUUID;
cities.add(city);//can teleport to any open ToL that shares charter Integer nationUUID = playerCharacter.guild.getNation().getObjectUUID();
continue; boolean allowed = false;
if (city.getTOL().reverseKOS) {
//reverse KOS, specific values are allowed
if (city.getTOL().getCondemned().contains(playerUUID) && city.getTOL().getCondemned().get(playerUUID).active) {
//individual is cleared for teleport/repledge
allowed = true;
} else if (city.getTOL().getCondemned().contains(guildUUID) && city.getTOL().getCondemned().get(guildUUID).active) {
//player guild is cleared for teleport/repledge
allowed = true;
} else if (city.getTOL().getCondemned().contains(nationUUID) && city.getTOL().getCondemned().get(nationUUID).active) {
//player nation is cleared for teleport/repledge
allowed = true;
} }
} else {
if (city.getTOL().getCondemned().containsKey(playerCharacter.objectUUID) && city.getTOL().getCondemned().get(playerCharacter.objectUUID).active) { //not reverse KOS, everyone is allowed by default
cities.add(city);//this player is allowed for the reverse KOS allowed = true;
continue; //specific values are not allowed
if (city.getTOL().getCondemned().contains(playerUUID) && city.getTOL().getCondemned().get(playerUUID).active) {
//individual is cleared for teleport/repledge
allowed = false;
} else if (city.getTOL().getCondemned().contains(guildUUID) && city.getTOL().getCondemned().get(guildUUID).active) {
//player guild is cleared for teleport/repledge
allowed = false;
} else if (city.getTOL().getCondemned().contains(nationUUID) && city.getTOL().getCondemned().get(nationUUID).active) {
//player nation is cleared for teleport/repledge
allowed = false;
} }
if (city.getTOL().getCondemned().containsKey(playerCharacter.guildUUID) && city.getTOL().getCondemned().get(playerCharacter.guildUUID).active) {
cities.add(city);//this guild is allowed for the reverse KOS
continue;
} }
if (allowed) {
if (city.getTOL().getCondemned().containsKey(playerCharacter.guild.getNation().getObjectUUID()) && city.getTOL().getCondemned().get(playerCharacter.guild.getNation().getObjectUUID()).active) { cities.add(city);
cities.add(city);//this nation is allowed for the reverse KOS
continue; continue;
} }
} }
} else {
// Filter NPC cities // Filter NPC cities
@@ -376,7 +402,7 @@ public class City extends AbstractWorldObject {
} }
} }
}
return cities; return cities;
} }