Skip to content

Commit

Permalink
added gmSpeedMultiplier setting + prevent encumberance and stamina dr…
Browse files Browse the repository at this point in the history
…ain on GMs
  • Loading branch information
bdew committed Jun 14, 2020
1 parent a95d90d commit 83e3ef0
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 10 deletions.
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
apply plugin: 'java'

group "net.bdew.wurm"
version "0.5"
version "0.6"

repositories {
mavenCentral()
maven { url "http://gotti.no-ip.org/maven/repository" }
}

dependencies {
compile 'org.gotti.wurmunlimited:server-modlauncher:0.40'
compile 'org.gotti.wurmunlimited:server-modlauncher:0.43-beta1'
}

jar {
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-5.3.1-bin.zip
2 changes: 2 additions & 0 deletions mods/movemod.properties
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ encumberedWeight=3500
cantMoveWeight=7000
# Player walking speed multiplier
playerSpeedMultiplier=1
# GM walking speed multiplier
gmSpeedMultiplier=1
# Global speed multiplier for creatures (when moving on their own, not as mounts)
creatureSpeedMultiplier=1
# Global speed multiplier for boats
Expand Down
34 changes: 27 additions & 7 deletions src/main/java/net/bdew/wurm/movemod/MoveMod.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ public class MoveMod implements WurmServerMod, Configurable, Initable, PreInitab
public static float encumberedWeight = 3500;
public static float cantMoveWeight = 7000;
public static float playerSpeedMultiplier = 1;
public static float gmSpeedMultiplier = 1;
public static boolean enableBoatHitching = false;
public static float creatureSpeedMultiplier = 1;
public static float boatGlobalMultiplier = 1, boatSeaGodBonus = 1;
Expand Down Expand Up @@ -108,6 +109,9 @@ public void configure(Properties properties) {
case "playerSpeedMultiplier":
playerSpeedMultiplier = Float.parseFloat(value);
break;
case "gmSpeedMultiplier":
gmSpeedMultiplier = Float.parseFloat(value);
break;
case "enableBoatHitching":
enableBoatHitching = Boolean.parseBoolean(value);
break;
Expand Down Expand Up @@ -162,6 +166,7 @@ public void configure(Properties properties) {
logInfo("encumberedWeight = " + encumberedWeight);
logInfo("cantMoveWeight = " + cantMoveWeight);
logInfo("playerSpeedMultiplier = " + playerSpeedMultiplier);
logInfo("gmSpeedMultiplier = " + gmSpeedMultiplier);
logInfo("enableBoatHitching = " + enableBoatHitching);
logInfo("creatureSpeedMultiplier = " + creatureSpeedMultiplier);
logInfo("boatGlobalMultiplier = " + boatGlobalMultiplier);
Expand All @@ -179,28 +184,43 @@ public void init() {
try {
ClassPool classPool = HookManager.getInstance().getClassPool();

if (playerSpeedMultiplier != 1) {
// Tweak base player speed
CtClass ctMovementScheme = classPool.getCtClass("com.wurmonline.server.creatures.MovementScheme");
CtClass ctMovementScheme = classPool.getCtClass("com.wurmonline.server.creatures.MovementScheme");

if (playerSpeedMultiplier != 1 || gmSpeedMultiplier != 1) {
// Tweak base player / GM speed
ctMovementScheme.getMethod("getSpeedModifier", "()F").insertAfter("if ($_>0 && this.creature.isPlayer()) {" +
" $_ = $_ * " + playerSpeedMultiplier + ";" +
" $_ = $_ * (this.creature.getPower()>0 ? " + gmSpeedMultiplier + " : " + playerSpeedMultiplier + ");" +
"};");
}

ctMovementScheme.getMethod("move", "(FFF)V").instrument(new ExprEditor() {
@Override
public void edit(MethodCall m) throws CannotCompileException {
if (m.getMethodName().equals("modifyStamina")) {
m.replace("if (this.creature.getPower()<=0) $proceed($$);");
}
}
});

// Buff carry weight limits
CtClass ctCreature = classPool.getCtClass("com.wurmonline.server.creatures.Creature");
ctCreature.getMethod("setMoveLimits", "()V").insertAfter(
" com.wurmonline.server.skills.Skill strength = this.skills.getSkill(102);" +
"this.moveslow = (int)strength.getKnowledge(0.0) * " + slowWeight + ";" +
"this.encumbered = (int)strength.getKnowledge(0.0) * " + encumberedWeight + ";" +
"this.cantmove = (int)strength.getKnowledge(0.0) * " + cantMoveWeight + ";"
"if (this.getPower()>0) {" +
" this.moveslow = this.encumbered = this.cantmove = 2147483647;" +
"} else {" +
" this.moveslow = (int)strength.getKnowledge(0.0) * " + slowWeight + ";" +
" this.encumbered = (int)strength.getKnowledge(0.0) * " + encumberedWeight + ";" +
" this.cantmove = (int)strength.getKnowledge(0.0) * " + cantMoveWeight + ";" +
"}"
);

// Use correct carry capacity
ctCreature.getMethod("canCarry", "(I)Z").setBody("{ return getCarryingCapacityLeft() > $1; }");
ctCreature.getMethod("getCarryCapacityFor", "(I)I").setBody("{ return (int) getCarryingCapacityLeft() / $1; }");
ctCreature.getMethod("getCarryingCapacityLeft", "()I").setBody("{ " +
" try {" +
" if (this.getPower()>0) return 2147483647 - this.carriedWeight;" +
" return (int)this.skills.getSkill(102).getKnowledge(0.0) * " + (int) weightLimit + " - this.carriedWeight;" +
" } catch (com.wurmonline.server.skills.NoSuchSkillException nss) {" +
" logger.log(java.util.logging.Level.WARNING, \"No strength skill for \" + this, (java.lang.Throwable)nss);" +
Expand Down

0 comments on commit 83e3ef0

Please sign in to comment.