Minor update that freezes.
This commit is contained in:
@@ -5,6 +5,7 @@ version "1.0"
|
|||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
maven { url "http://jcenter.bintray.com" }
|
||||||
maven { url "http://gotti.no-ip.org/maven/repository" }
|
maven { url "http://gotti.no-ip.org/maven/repository" }
|
||||||
maven { url 'https://jitpack.io' }
|
maven { url 'https://jitpack.io' }
|
||||||
}
|
}
|
||||||
@@ -12,6 +13,8 @@ repositories {
|
|||||||
dependencies {
|
dependencies {
|
||||||
compile 'org.gotti.wurmunlimited:server-modlauncher:0.33-beta1'
|
compile 'org.gotti.wurmunlimited:server-modlauncher:0.33-beta1'
|
||||||
compile 'com.github.Sindusk:sindusklibrary:v1.0'
|
compile 'com.github.Sindusk:sindusklibrary:v1.0'
|
||||||
|
compile 'com.github.Sindusk:DiscordRelay:v1.1'
|
||||||
|
compile 'com.github.Sindusk:TreasureHunting:1.1.4'
|
||||||
}
|
}
|
||||||
|
|
||||||
jar {
|
jar {
|
||||||
|
|||||||
@@ -1,33 +1,9 @@
|
|||||||
package mod.sin.wyvern;
|
package mod.sin.wyvern;
|
||||||
|
|
||||||
import java.lang.reflect.InvocationHandler;
|
|
||||||
import java.lang.reflect.Method;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.logging.Level;
|
|
||||||
import java.util.logging.Logger;
|
|
||||||
|
|
||||||
import org.gotti.wurmunlimited.modloader.ReflectionUtil;
|
|
||||||
import org.gotti.wurmunlimited.modloader.classhooks.HookException;
|
|
||||||
import org.gotti.wurmunlimited.modloader.classhooks.HookManager;
|
|
||||||
import org.gotti.wurmunlimited.modloader.classhooks.InvocationHandlerFactory;
|
|
||||||
import org.nyxcode.wurm.discordrelay.DiscordRelay;
|
|
||||||
|
|
||||||
import com.wurmonline.mesh.Tiles;
|
import com.wurmonline.mesh.Tiles;
|
||||||
import com.wurmonline.server.Items;
|
import com.wurmonline.server.*;
|
||||||
import com.wurmonline.server.NoSuchItemException;
|
|
||||||
import com.wurmonline.server.NoSuchPlayerException;
|
|
||||||
import com.wurmonline.server.Players;
|
|
||||||
import com.wurmonline.server.Server;
|
|
||||||
import com.wurmonline.server.Servers;
|
|
||||||
import com.wurmonline.server.TimeConstants;
|
|
||||||
import com.wurmonline.server.WurmId;
|
|
||||||
import com.wurmonline.server.bodys.Wound;
|
import com.wurmonline.server.bodys.Wound;
|
||||||
import com.wurmonline.server.creatures.Creature;
|
import com.wurmonline.server.creatures.*;
|
||||||
import com.wurmonline.server.creatures.CreatureTemplate;
|
|
||||||
import com.wurmonline.server.creatures.CreatureTemplateFactory;
|
|
||||||
import com.wurmonline.server.creatures.MovementScheme;
|
|
||||||
import com.wurmonline.server.creatures.NoSuchCreatureException;
|
|
||||||
import com.wurmonline.server.items.Item;
|
import com.wurmonline.server.items.Item;
|
||||||
import com.wurmonline.server.items.ItemList;
|
import com.wurmonline.server.items.ItemList;
|
||||||
import com.wurmonline.server.modifiers.DoubleValueModifier;
|
import com.wurmonline.server.modifiers.DoubleValueModifier;
|
||||||
@@ -39,28 +15,25 @@ import com.wurmonline.server.zones.NoSuchZoneException;
|
|||||||
import com.wurmonline.server.zones.Zone;
|
import com.wurmonline.server.zones.Zone;
|
||||||
import com.wurmonline.server.zones.Zones;
|
import com.wurmonline.server.zones.Zones;
|
||||||
import com.wurmonline.shared.constants.Enchants;
|
import com.wurmonline.shared.constants.Enchants;
|
||||||
|
import javassist.*;
|
||||||
import javassist.CannotCompileException;
|
|
||||||
import javassist.ClassPool;
|
|
||||||
import javassist.CtClass;
|
|
||||||
import javassist.CtConstructor;
|
|
||||||
import javassist.CtMethod;
|
|
||||||
import javassist.NotFoundException;
|
|
||||||
import javassist.bytecode.Descriptor;
|
import javassist.bytecode.Descriptor;
|
||||||
import javassist.expr.ExprEditor;
|
import javassist.expr.ExprEditor;
|
||||||
import javassist.expr.FieldAccess;
|
import javassist.expr.FieldAccess;
|
||||||
import javassist.expr.MethodCall;
|
import javassist.expr.MethodCall;
|
||||||
import mod.sin.creatures.Avenger;
|
import mod.sin.creatures.*;
|
||||||
import mod.sin.creatures.Charger;
|
|
||||||
import mod.sin.creatures.SpiritTroll;
|
|
||||||
import mod.sin.creatures.WyvernBlack;
|
|
||||||
import mod.sin.creatures.WyvernGreen;
|
|
||||||
import mod.sin.creatures.WyvernRed;
|
|
||||||
import mod.sin.creatures.WyvernWhite;
|
|
||||||
import mod.sin.items.SealedMap;
|
import mod.sin.items.SealedMap;
|
||||||
import mod.sin.lib.Util;
|
import mod.sin.lib.Util;
|
||||||
import mod.sin.wyvern.arena.Arena;
|
import mod.sin.wyvern.arena.Arena;
|
||||||
import mod.sin.wyvern.bestiary.MethodsBestiary;
|
import mod.sin.wyvern.bestiary.MethodsBestiary;
|
||||||
|
import org.gotti.wurmunlimited.modloader.ReflectionUtil;
|
||||||
|
import org.gotti.wurmunlimited.modloader.classhooks.HookException;
|
||||||
|
import org.gotti.wurmunlimited.modloader.classhooks.HookManager;
|
||||||
|
import org.nyxcode.wurm.discordrelay.DiscordRelay;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
public class MiscChanges {
|
public class MiscChanges {
|
||||||
public static Logger logger = Logger.getLogger(MiscChanges.class.getName());
|
public static Logger logger = Logger.getLogger(MiscChanges.class.getName());
|
||||||
@@ -78,7 +51,7 @@ public class MiscChanges {
|
|||||||
return ctype;
|
return ctype;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static HashMap<Creature, Double> defDamage = new HashMap<Creature, Double>();
|
protected static HashMap<Creature, Double> defDamage = new HashMap<>();
|
||||||
public static void setDefDamage(Creature cret, double damage){
|
public static void setDefDamage(Creature cret, double damage){
|
||||||
defDamage.put(cret, damage);
|
defDamage.put(cret, damage);
|
||||||
}
|
}
|
||||||
@@ -92,18 +65,12 @@ public class MiscChanges {
|
|||||||
return 0d;
|
return 0d;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void sendRumour(Creature creature){
|
|
||||||
DiscordRelay.sendToDiscord("rumors", "Rumours of " + creature.getName() + " are starting to spread.");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int getNewVillageTiles(int tiles){
|
public static int getNewVillageTiles(int tiles){
|
||||||
float power = 2f;
|
float power = 2f;
|
||||||
float changeRate = 1000;
|
float changeRate = 1000;
|
||||||
float maxNumTiles = 50000;
|
float maxNumTiles = 50000;
|
||||||
float tilesFloat = tiles;
|
// =(C2) * (1-POW(C2/$C$16, $A$24)) + (SQRT(C2)*$A$26) * POW(C2/$C$16, $A$24)
|
||||||
// =(C2) * (1-POW(C2/$C$16, $A$24)) + (SQRT(C2)*$A$26) * POW(C2/$C$16, $A$24)
|
return (int) ((float) tiles * (1-Math.pow((float) tiles /maxNumTiles, power)) + (Math.sqrt((float) tiles)*changeRate) * Math.pow((float) tiles /maxNumTiles, power));
|
||||||
int newTiles = (int) (tilesFloat * (1-Math.pow(tilesFloat/maxNumTiles, power)) + (Math.sqrt(tilesFloat)*changeRate) * Math.pow(tilesFloat/maxNumTiles, power));
|
|
||||||
return newTiles;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final float PRICE_MARKUP = 1f/1.4f;
|
private static final float PRICE_MARKUP = 1f/1.4f;
|
||||||
@@ -116,15 +83,14 @@ public class MiscChanges {
|
|||||||
float baseCost = 100000f;
|
float baseCost = 100000f;
|
||||||
float power = 11.0f;
|
float power = 11.0f;
|
||||||
// =((10+B2/4.5)*(1-POW(A2/100, $A$27)) + B2*POW(A2/100, $A$27)) * ((100 - $A$29) / 100)
|
// =((10+B2/4.5)*(1-POW(A2/100, $A$27)) + B2*POW(A2/100, $A$27)) * ((100 - $A$29) / 100)
|
||||||
int newValue = (int) (((baseCost+(initialValue/4.5f)) * (1f-Math.pow(qual/100f, power)) + initialValue*Math.pow(qual/100f, power)) * ((100f-dam)/100f) * PRICE_MARKUP);
|
return (int) (((baseCost+(initialValue/4.5f)) * (1f-Math.pow(qual/100f, power)) + initialValue*Math.pow(qual/100f, power)) * ((100f-dam)/100f) * PRICE_MARKUP);
|
||||||
return newValue;
|
|
||||||
}
|
}
|
||||||
return -10;
|
return -10;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void checkEnchantedBreed(Creature creature){
|
public static void checkEnchantedBreed(Creature creature){
|
||||||
int tile = Server.surfaceMesh.getTile(creature.getTileX(), creature.getTileY());
|
int tile = Server.surfaceMesh.getTile(creature.getTileX(), creature.getTileY());
|
||||||
byte type = Tiles.decodeType((int)tile);
|
byte type = Tiles.decodeType(tile);
|
||||||
if (type == Tiles.Tile.TILE_ENCHANTED_GRASS.id){
|
if (type == Tiles.Tile.TILE_ENCHANTED_GRASS.id){
|
||||||
logger.info("Creature "+creature.getName()+" was born on enchanted grass, and has a negative trait removed!");
|
logger.info("Creature "+creature.getName()+" was born on enchanted grass, and has a negative trait removed!");
|
||||||
Server.getInstance().broadCastAction(creature.getName()+" was born on enchanted grass, and feels more healthy!", creature, 10);
|
Server.getInstance().broadCastAction(creature.getName()+" was born on enchanted grass, and feels more healthy!", creature, 10);
|
||||||
@@ -136,11 +102,10 @@ public class MiscChanges {
|
|||||||
int templateId = creature.getTemplate().getTemplateId();
|
int templateId = creature.getTemplate().getTemplateId();
|
||||||
if(templateId == Avenger.templateId){
|
if(templateId == Avenger.templateId){
|
||||||
return true;
|
return true;
|
||||||
}else if(Arena.isTitan(creature)){
|
}else{
|
||||||
return true;
|
return Arena.isTitan(creature);
|
||||||
}
|
}
|
||||||
return false;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean insertItemIntoVehicle(Item item, Item vehicle, Creature performer) {
|
public static boolean insertItemIntoVehicle(Item item, Item vehicle, Creature performer) {
|
||||||
// If can put into crates, try that
|
// If can put into crates, try that
|
||||||
@@ -224,7 +189,6 @@ public class MiscChanges {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setNewMoveLimits(Creature cret){
|
public static void setNewMoveLimits(Creature cret){
|
||||||
@@ -243,7 +207,7 @@ public class MiscChanges {
|
|||||||
ReflectionUtil.setPrivateField(moveScheme, ReflectionUtil.getField(moveScheme.getClass(), "stealthMod"), stealthMod);
|
ReflectionUtil.setPrivateField(moveScheme, ReflectionUtil.getField(moveScheme.getClass(), "stealthMod"), stealthMod);
|
||||||
}
|
}
|
||||||
catch (NoSuchSkillException | IllegalArgumentException | IllegalAccessException | ClassCastException | NoSuchFieldException nss) {
|
catch (NoSuchSkillException | IllegalArgumentException | IllegalAccessException | ClassCastException | NoSuchFieldException nss) {
|
||||||
logger.log(Level.WARNING, "No strength skill for " + cret, (Throwable)((Object)nss));
|
logger.log(Level.WARNING, "No strength skill for " + cret, nss);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -265,11 +229,10 @@ public class MiscChanges {
|
|||||||
public static boolean isGhostCorpse(Creature creature){
|
public static boolean isGhostCorpse(Creature creature){
|
||||||
if(creature.getTemplate().getTemplateId() == Avenger.templateId){
|
if(creature.getTemplate().getTemplateId() == Avenger.templateId){
|
||||||
return true;
|
return true;
|
||||||
}else if(creature.getTemplate().getTemplateId() == SpiritTroll.templateId){
|
}else{
|
||||||
return true;
|
return creature.getTemplate().getTemplateId() == SpiritTroll.templateId;
|
||||||
}
|
}
|
||||||
return false;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static void doLifeTransfer(Creature creature, Item attWeapon, double defdamage, float armourMod){
|
public static void doLifeTransfer(Creature creature, Item attWeapon, double defdamage, float armourMod){
|
||||||
Wound[] w;
|
Wound[] w;
|
||||||
@@ -291,35 +254,31 @@ public class MiscChanges {
|
|||||||
|
|
||||||
public static void sendServerTabMessage(final String message, final int red, final int green, final int blue){
|
public static void sendServerTabMessage(final String message, final int red, final int green, final int blue){
|
||||||
DiscordRelay.sendToDiscord("event", message);
|
DiscordRelay.sendToDiscord("event", message);
|
||||||
Runnable r = new Runnable(){
|
Runnable r = () -> {
|
||||||
public void run(){
|
Message mess;
|
||||||
com.wurmonline.server.Message mess;
|
for(Player rec : Players.getInstance().getPlayers()){
|
||||||
for(Player rec : Players.getInstance().getPlayers()){
|
mess = new Message(rec, (byte)16, "Server", message, red, green, blue);
|
||||||
mess = new com.wurmonline.server.Message(rec, (byte)16, "Server", message, red, green, blue);
|
rec.getCommunicator().sendMessage(mess);
|
||||||
rec.getCommunicator().sendMessage(mess);
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
r.run();
|
r.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void sendGlobalFreedomChat(final Creature sender, final String message, final int red, final int green, final int blue){
|
public static void sendGlobalFreedomChat(final Creature sender, final String message, final int red, final int green, final int blue){
|
||||||
Runnable r = new Runnable(){
|
Runnable r = () -> {
|
||||||
public void run(){
|
Message mess;
|
||||||
com.wurmonline.server.Message mess;
|
for(Player rec : Players.getInstance().getPlayers()){
|
||||||
for(Player rec : Players.getInstance().getPlayers()){
|
mess = new Message(sender, (byte)10, "GL-Freedom", "<"+sender.getNameWithoutPrefixes()+"> "+message, red, green, blue);
|
||||||
mess = new com.wurmonline.server.Message(sender, (byte)10, "GL-Freedom", "<"+sender.getNameWithoutPrefixes()+"> "+message, red, green, blue);
|
rec.getCommunicator().sendMessage(mess);
|
||||||
rec.getCommunicator().sendMessage(mess);
|
}
|
||||||
}
|
if (message.trim().length() > 1) {
|
||||||
if (message.trim().length() > 1) {
|
WcKingdomChat wc = new WcKingdomChat(WurmId.getNextWCCommandId(), sender.getWurmId(), sender.getNameWithoutPrefixes(), message, false, (byte) 4, red, green, blue);
|
||||||
WcKingdomChat wc = new WcKingdomChat(WurmId.getNextWCCommandId(), sender.getWurmId(), sender.getNameWithoutPrefixes(), message, false, (byte) 4, red, green, blue);
|
if (!Servers.isThisLoginServer()) {
|
||||||
if (!Servers.isThisLoginServer()) {
|
wc.sendToLoginServer();
|
||||||
wc.sendToLoginServer();
|
} else {
|
||||||
} else {
|
wc.sendFromLoginServer();
|
||||||
wc.sendFromLoginServer();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
r.run();
|
r.run();
|
||||||
}
|
}
|
||||||
@@ -344,18 +303,16 @@ public class MiscChanges {
|
|||||||
CtMethod m = ctPlayers.getDeclaredMethod("sendStartGlobalKingdomChat");
|
CtMethod m = ctPlayers.getDeclaredMethod("sendStartGlobalKingdomChat");
|
||||||
String infoTabTitle = "Server";
|
String infoTabTitle = "Server";
|
||||||
// Initial messages:
|
// Initial messages:
|
||||||
String[] infoTabLine = {"Server Thread: https://forum.wurmonline.com/index.php?/topic/155981-wyvern-reborn-modded-pve-pvp-3x5x/",
|
String[] infoTabLine = {"Server Thread: https://forum.wurmonline.com/index.php?/topic/162067-revenant-modded-pvepvp-3x-action-new-skillgain/",
|
||||||
"Custom Server Data: https://goo.gl/QRVJyC",
|
"Server Discord: https://discord.gg/r8QNXAC",
|
||||||
"Server Discord: https://discordapp.com/invite/wxEeS7d",
|
"Server Maps: Coming Soon..."};
|
||||||
"Server Maps: https://www.sarcasuals.com/"};
|
StringBuilder str = new StringBuilder("{"
|
||||||
String str = "{"
|
+ " com.wurmonline.server.Message mess;");
|
||||||
+ " com.wurmonline.server.Message mess;";
|
for (String anInfoTabLine : infoTabLine) {
|
||||||
for(int i = 0; i < infoTabLine.length; i++){
|
str.append(" mess = new com.wurmonline.server.Message(player, (byte)16, \"").append(infoTabTitle).append("\",\"").append(anInfoTabLine).append("\", 0, 255, 0);").append(" player.getCommunicator().sendMessage(mess);");
|
||||||
str = str + " mess = new com.wurmonline.server.Message(player, (byte)16, \"" + infoTabTitle + "\",\"" + infoTabLine[i] + "\", 0, 255, 0);"
|
|
||||||
+ " player.getCommunicator().sendMessage(mess);";
|
|
||||||
}
|
}
|
||||||
str = str + "}";
|
str.append("}");
|
||||||
m.insertAfter(str);
|
m.insertAfter(str.toString());
|
||||||
|
|
||||||
// - Enable bridges to be built inside/over/through houses - //
|
// - Enable bridges to be built inside/over/through houses - //
|
||||||
CtClass ctPlanBridgeChecks = classPool.get("com.wurmonline.server.structures.PlanBridgeChecks");
|
CtClass ctPlanBridgeChecks = classPool.get("com.wurmonline.server.structures.PlanBridgeChecks");
|
||||||
@@ -365,13 +322,6 @@ public class MiscChanges {
|
|||||||
+ " return new com.wurmonline.server.structures.PlanBridgeCheckResult(false);"
|
+ " return new com.wurmonline.server.structures.PlanBridgeCheckResult(false);"
|
||||||
+ "}");*/
|
+ "}");*/
|
||||||
|
|
||||||
// - Allow mailboxes and bell towers to be loaded - //
|
|
||||||
// [Disabled 10/30 by Sindusk] - Added to ItemMod using reflection instead of editing the method.
|
|
||||||
/*CtClass ctItemTemplate = classPool.get("com.wurmonline.server.items.ItemTemplate");
|
|
||||||
ctItemTemplate.getDeclaredMethod("isTransportable").setBody("{"
|
|
||||||
+ " return this.isTransportable || (this.getTemplateId() >= 510 && this.getTemplateId() <= 513) || this.getTemplateId() == 722 || this.getTemplateId() == 670;"
|
|
||||||
+ "}");*/
|
|
||||||
|
|
||||||
// - Disable mailboxes from being used while loaded - //
|
// - Disable mailboxes from being used while loaded - //
|
||||||
CtClass ctItem = classPool.get("com.wurmonline.server.items.Item");
|
CtClass ctItem = classPool.get("com.wurmonline.server.items.Item");
|
||||||
replace = "$_ = $proceed($$);"
|
replace = "$_ = $proceed($$);"
|
||||||
@@ -427,9 +377,10 @@ public class MiscChanges {
|
|||||||
//ctPlayer.getDeclaredMethod("getRarity").setBody("{ return mod.sin.wyvern.MiscChanges.newGetPlayerRarity(this); }");
|
//ctPlayer.getDeclaredMethod("getRarity").setBody("{ return mod.sin.wyvern.MiscChanges.newGetPlayerRarity(this); }");
|
||||||
|
|
||||||
// - Add Facebreyker to the list of spawnable uniques - //
|
// - Add Facebreyker to the list of spawnable uniques - //
|
||||||
CtClass ctDens = classPool.get("com.wurmonline.server.zones.Dens");
|
// TODO: Re-enable after Facebreyker initialized.
|
||||||
|
/*CtClass ctDens = classPool.get("com.wurmonline.server.zones.Dens");
|
||||||
replace = "com.wurmonline.server.zones.Dens.checkTemplate(2147483643, whileRunning);";
|
replace = "com.wurmonline.server.zones.Dens.checkTemplate(2147483643, whileRunning);";
|
||||||
Util.insertBeforeDeclared(thisClass, ctDens, "checkDens", replace);
|
Util.insertBeforeDeclared(thisClass, ctDens, "checkDens", replace);*/
|
||||||
//ctDens.getDeclaredMethod("checkDens").insertAt(0, "com.wurmonline.server.zones.Dens.checkTemplate(2147483643, whileRunning);");
|
//ctDens.getDeclaredMethod("checkDens").insertAt(0, "com.wurmonline.server.zones.Dens.checkTemplate(2147483643, whileRunning);");
|
||||||
|
|
||||||
// - Announce player titles in the Server tab - //
|
// - Announce player titles in the Server tab - //
|
||||||
@@ -484,58 +435,9 @@ public class MiscChanges {
|
|||||||
+ " return temp;"
|
+ " return temp;"
|
||||||
+ "}");*/
|
+ "}");*/
|
||||||
|
|
||||||
// - Make food/drink affinities based on Item ID instead of creature ID - //
|
|
||||||
// [3/27] Removed: Merged to ServerTweaks
|
|
||||||
/*CtClass ctAffinitiesTimed = classPool.get("com.wurmonline.server.skills.AffinitiesTimed");
|
|
||||||
replace = "if(item.getCreatorName() != null){"
|
|
||||||
+ " $_ = $proceed("+MiscChanges.class.getName()+".getTimedAffinitySeed(item));"
|
|
||||||
+ "}else{"
|
|
||||||
+ " $_ = $proceed($$);"
|
|
||||||
+ "}";
|
|
||||||
Util.instrumentDeclared(thisClass, ctAffinitiesTimed, "getTimedAffinitySkill", "setSeed", replace);
|
|
||||||
CtClass ctItemBehaviour = classPool.get("com.wurmonline.server.behaviours.ItemBehaviour");
|
|
||||||
replace = "$_ = $proceed($1, $2, $3, $4, performer.getName());";
|
|
||||||
Util.instrumentDeclared(thisClass, ctItemBehaviour, "handleRecipe", "createItem", replace);
|
|
||||||
replace = "$_ = $proceed($1, $2, $3, $4, com.wurmonline.server.players.PlayerInfoFactory.getPlayerName(lastowner));";
|
|
||||||
Util.instrumentDeclared(thisClass, ctItem, "pollFermenting", "createItem", replace);
|
|
||||||
Util.instrumentDeclared(thisClass, ctItem, "pollDistilling", "createItem", replace);
|
|
||||||
CtClass ctTempStates = classPool.get("com.wurmonline.server.items.TempStates");
|
|
||||||
Util.instrumentDeclared(thisClass, ctTempStates, "checkForChange", "createItem", replace);*/
|
|
||||||
|
|
||||||
// - Fix de-priesting when gaining faith below 30 - //
|
|
||||||
// [Disabled 10/30 Sindusk] - Added to SpellCraft.SpellcraftTweaks
|
|
||||||
/*CtClass ctDbPlayerInfo = classPool.get("com.wurmonline.server.players.DbPlayerInfo");
|
|
||||||
ctDbPlayerInfo.getDeclaredMethod("setFaith").instrument(new ExprEditor(){
|
|
||||||
public void edit(MethodCall m) throws CannotCompileException {
|
|
||||||
if (m.getMethodName().equals("min")) {
|
|
||||||
m.replace("if($2 == 20.0f && $1 < 30){"
|
|
||||||
+ " $_ = $proceed(30.0f, lFaith);"
|
|
||||||
+ "}else{"
|
|
||||||
+ " $_ = $proceed($$);"
|
|
||||||
+ "}");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
ctDbPlayerInfo.getDeclaredMethod("setFaith").instrument(new ExprEditor(){
|
|
||||||
public void edit(MethodCall m) throws CannotCompileException {
|
|
||||||
if (m.getMethodName().equals("setPriest")) {
|
|
||||||
m.replace("$_ = $proceed(true);");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
ctDbPlayerInfo.getDeclaredMethod("setFaith").instrument(new ExprEditor(){
|
|
||||||
public void edit(MethodCall m) throws CannotCompileException {
|
|
||||||
if (m.getMethodName().equals("sendAlertServerMessage")) {
|
|
||||||
m.replace("$_ = null;");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});*/
|
|
||||||
|
|
||||||
// - Removal of eye/face shots to headshots instead - //
|
// - Removal of eye/face shots to headshots instead - //
|
||||||
HookManager.getInstance().registerHook("com.wurmonline.server.combat.Armour", "getArmourPosForPos", "(I)I", new InvocationHandlerFactory() {
|
// [4/2/18] Removed: Unnecessary - WU 1.6 update resolves the reason it was done.
|
||||||
|
/*HookManager.getInstance().registerHook("com.wurmonline.server.combat.Armour", "getArmourPosForPos", "(I)I", new InvocationHandlerFactory() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public InvocationHandler createInvocationHandler() {
|
public InvocationHandler createInvocationHandler() {
|
||||||
@@ -554,7 +456,7 @@ public class MiscChanges {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
});
|
});*/
|
||||||
|
|
||||||
// - Remove requirement to bless for Libila taming - //
|
// - Remove requirement to bless for Libila taming - //
|
||||||
CtClass ctMethodsCreatures = classPool.get("com.wurmonline.server.behaviours.MethodsCreatures");
|
CtClass ctMethodsCreatures = classPool.get("com.wurmonline.server.behaviours.MethodsCreatures");
|
||||||
@@ -577,7 +479,6 @@ public class MiscChanges {
|
|||||||
if (m.getMethodName().equals("isFatigue")) {
|
if (m.getMethodName().equals("isFatigue")) {
|
||||||
m.replace("$_ = false;");
|
m.replace("$_ = false;");
|
||||||
logger.info("Set isFatigue to false in action constructor.");
|
logger.info("Set isFatigue to false in action constructor.");
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -644,10 +545,11 @@ public class MiscChanges {
|
|||||||
Util.insertBeforeDescribed(thisClass, ctCreature, "doNew", desc1, replace);
|
Util.insertBeforeDescribed(thisClass, ctCreature, "doNew", desc1, replace);
|
||||||
|
|
||||||
// - Send rumour messages to discord - //
|
// - Send rumour messages to discord - //
|
||||||
Util.setReason("Send rumour messages to Discord.");
|
// [4/1/18] Removed: Merged to DiscordRelay.
|
||||||
|
/*Util.setReason("Send rumour messages to Discord.");
|
||||||
replace = MiscChanges.class.getName()+".sendRumour(toReturn);"
|
replace = MiscChanges.class.getName()+".sendRumour(toReturn);"
|
||||||
+ "$proceed($$);";
|
+ "$proceed($$);";
|
||||||
Util.instrumentDescribed(thisClass, ctCreature, "doNew", desc1, "broadCastSafe", replace);
|
Util.instrumentDescribed(thisClass, ctCreature, "doNew", desc1, "broadCastSafe", replace);*/
|
||||||
|
|
||||||
// - Allow custom creatures to be given special names when bred - //
|
// - Allow custom creatures to be given special names when bred - //
|
||||||
replace = "$_ = "+MiscChanges.class.getName()+".shouldBreedName(this);";
|
replace = "$_ = "+MiscChanges.class.getName()+".shouldBreedName(this);";
|
||||||
@@ -700,7 +602,6 @@ public class MiscChanges {
|
|||||||
if (m.getMethodName().equals("isGhost")) {
|
if (m.getMethodName().equals("isGhost")) {
|
||||||
m.replace("$_ = false;");
|
m.replace("$_ = false;");
|
||||||
logger.info("Enabled archery against ghost targets in archery attack method.");
|
logger.info("Enabled archery against ghost targets in archery attack method.");
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -937,7 +838,7 @@ public class MiscChanges {
|
|||||||
Util.instrumentDeclared(thisClass, ctCombatHandler, "setDamage", "getBattle", replace);*/
|
Util.instrumentDeclared(thisClass, ctCombatHandler, "setDamage", "getBattle", replace);*/
|
||||||
|
|
||||||
} catch (CannotCompileException | NotFoundException | IllegalArgumentException | ClassCastException e) {
|
} catch (CannotCompileException | NotFoundException | IllegalArgumentException | ClassCastException e) {
|
||||||
throw new HookException((Throwable)e);
|
throw new HookException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ implements WurmServerMod, Configurable, PreInitable, Initable, ItemTemplatesCrea
|
|||||||
// Epic:
|
// Epic:
|
||||||
logger.info("Registering Epic creatures.");
|
logger.info("Registering Epic creatures.");
|
||||||
ModCreatures.addCreature(new LavaFiend());
|
ModCreatures.addCreature(new LavaFiend());
|
||||||
ModCreatures.addCreature(new SolDemon());
|
//ModCreatures.addCreature(new SolDemon());
|
||||||
ModCreatures.addCreature(new Worg());
|
ModCreatures.addCreature(new Worg());
|
||||||
|
|
||||||
// Wyverns:
|
// Wyverns:
|
||||||
@@ -168,17 +168,17 @@ implements WurmServerMod, Configurable, PreInitable, Initable, ItemTemplatesCrea
|
|||||||
|
|
||||||
// Flavor Mobs:
|
// Flavor Mobs:
|
||||||
ModCreatures.addCreature(new Avenger());
|
ModCreatures.addCreature(new Avenger());
|
||||||
ModCreatures.addCreature(new Charger());
|
//ModCreatures.addCreature(new Charger());
|
||||||
ModCreatures.addCreature(new ForestSpider());
|
ModCreatures.addCreature(new ForestSpider());
|
||||||
ModCreatures.addCreature(new Giant());
|
ModCreatures.addCreature(new Giant());
|
||||||
ModCreatures.addCreature(new HornedPony());
|
//ModCreatures.addCreature(new HornedPony());
|
||||||
ModCreatures.addCreature(new LargeBoar());
|
//ModCreatures.addCreature(new LargeBoar());
|
||||||
ModCreatures.addCreature(new SpiritTroll());
|
ModCreatures.addCreature(new SpiritTroll());
|
||||||
|
|
||||||
// Bosses:
|
// Bosses:
|
||||||
logger.info("Registering Custom Boss creatures.");
|
logger.info("Registering Custom Boss creatures.");
|
||||||
ModCreatures.addCreature(new Reaper());
|
//ModCreatures.addCreature(new Reaper());
|
||||||
ModCreatures.addCreature(new SpectralDrake());
|
//ModCreatures.addCreature(new SpectralDrake());
|
||||||
// Uniques:
|
// Uniques:
|
||||||
ModCreatures.addCreature(new Facebreyker());
|
ModCreatures.addCreature(new Facebreyker());
|
||||||
|
|
||||||
@@ -193,8 +193,8 @@ implements WurmServerMod, Configurable, PreInitable, Initable, ItemTemplatesCrea
|
|||||||
|
|
||||||
// NPC's
|
// NPC's
|
||||||
logger.info("Registering Custom NPC creatures.");
|
logger.info("Registering Custom NPC creatures.");
|
||||||
ModCreatures.addCreature(new RobZombie());
|
//ModCreatures.addCreature(new RobZombie());
|
||||||
ModCreatures.addCreature(new MacroSlayer());
|
//ModCreatures.addCreature(new MacroSlayer());
|
||||||
|
|
||||||
Bounty.init();
|
Bounty.init();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user