@leon2356I quickly skimmed through the sourcecode and found a couple of mentions of Axeman.
Don't know if these are all of them though:
IsoGameCharacter.class
protected float calculateCombatSpeed() {
float f = 1.0F;
HandWeapon handWeapon = null;
if (getPrimaryHandItem() != null && getPrimaryHandItem() instanceof HandWeapon) {
handWeapon = (HandWeapon)getPrimaryHandItem();
f *= ((HandWeapon)getPrimaryHandItem()).getBaseSpeed();
}
WeaponType weaponType = WeaponType.getWeaponType(this);
if (handWeapon != null && handWeapon.isTwoHandWeapon() && getSecondaryHandItem() != handWeapon)
f *= 0.77F;
if (handWeapon != null && this.Traits.Axeman.isSet() && handWeapon.getCategories().contains("Axe"))
f *= getChopTreeSpeed();
f -= getMoodles().getMoodleLevel(MoodleType.Endurance) * 0.07F;
f -= getMoodles().getMoodleLevel(MoodleType.HeavyLoad) * 0.07F;
f += getWeaponLevel() * 0.03F;
f += getPerkLevel(PerkFactory.Perks.Fitness) * 0.02F;
f *= Rand.Next(1.1F, 1.2F);
f *= this.combatSpeedModifier;
f *= getArmsInjurySpeedModifier();
if (getBodyDamage() != null && getBodyDamage().getThermoregulator() != null)
f *= getBodyDamage().getThermoregulator().getCombatModifier();
f = Math.min(1.6F, f);
f = Math.max(0.8F, f);
if (handWeapon != null && handWeapon.isTwoHandWeapon() && weaponType.type.equalsIgnoreCase("heavy"))
f *= 1.2F;
return f * GameTime.getAnimSpeedFix();
}
public float getChopTreeSpeed() {
return (this.Traits.Axeman.isSet() ? 1.25F : 1.0F) * GameTime.getAnimSpeedFix();
}
HandWeapon.class
public float getSpeedMod(IsoGameCharacter paramIsoGameCharacter) {
if (this.ScriptItem.Categories.contains("Blunt")) {
int i = paramIsoGameCharacter.getPerkLevel(PerkFactory.Perks.Blunt);
if (i >= 10)
return 0.65F;
if (i >= 9)
return 0.68F;
if (i >= 8)
return 0.71F;
if (i >= 7)
return 0.74F;
if (i >= 6)
return 0.77F;
if (i >= 5)
return 0.8F;
if (i >= 4)
return 0.83F;
if (i >= 3)
return 0.86F;
if (i >= 2)
return 0.9F;
if (i >= 1)
return 0.95F;
}
if (this.ScriptItem.Categories.contains("Axe")) {
int i = paramIsoGameCharacter.getPerkLevel(PerkFactory.Perks.Axe);
float f = 1.0F;
if (paramIsoGameCharacter.Traits.Axeman.isSet())
f = 0.95F;
if (i >= 10)
return 0.65F * f;
if (i >= 9)
return 0.68F * f;
if (i >= 8)
return 0.71F * f;
if (i >= 7)
return 0.74F * f;
if (i >= 6)
return 0.77F * f;
if (i >= 5)
return 0.8F * f;
if (i >= 4)
return 0.83F * f;
if (i >= 3)
return 0.86F * f;
if (i >= 2)
return 0.9F * f;
if (i >= 1)
return 0.95F * f;
return 1.0F * f;
}
if (this.ScriptItem.Categories.contains("Spear")) {
int i = paramIsoGameCharacter.getPerkLevel(PerkFactory.Perks.Spear);
if (i >= 10)
return 0.65F;
if (i >= 9)
return 0.68F;
if (i >= 8)
return 0.71F;
if (i >= 7)
return 0.74F;
if (i >= 6)
return 0.77F;
if (i >= 5)
return 0.8F;
if (i >= 4)
return 0.83F;
if (i >= 3)
return 0.86F;
if (i >= 2)
return 0.9F;
if (i >= 1)
return 0.95F;
}
return 1.0F;
}
IsoTree
public void WeaponHit(IsoGameCharacter paramIsoGameCharacter, HandWeapon paramHandWeapon) {
int i = paramHandWeapon.getConditionLowerChance() * 2 + paramIsoGameCharacter.getMaintenanceMod();
if (!paramHandWeapon.getCategories().contains("Axe"))
i = paramHandWeapon.getConditionLowerChance() / 2 + paramIsoGameCharacter.getMaintenanceMod();
if (Rand.NextBool(i))
paramHandWeapon.setCondition(paramHandWeapon.getCondition() - 1);
paramIsoGameCharacter.getEmitter().playSound("ChopTree");
WorldSoundManager.instance.addSound(null, this.square.getX(), this.square.getY(), this.square.getZ(), 20, 20, true, 4.0F, 15.0F);
setRenderEffect(RenderEffectType.Hit_Tree_Shudder, true);
float f = paramHandWeapon.getTreeDamage();
if (paramIsoGameCharacter.Traits.Axeman.isSet() && paramHandWeapon.getCategories().contains("Axe"))
f *= 1.5F;
this.damage = (int)(this.damage - f);
if (this.damage <= 0) {
this.square.transmitRemoveItemFromSquare(this);
paramIsoGameCharacter.getEmitter().playSound("FallingTree");
this.square.RecalcAllWithNeighbours(true);
int j = this.LogYield;
byte b;
for (b = 0; b < j; b++) {
this.square.AddWorldInventoryItem("Base.Log", 0.0F, 0.0F, 0.0F);
if (Rand.Next(4) == 0)
this.square.AddWorldInventoryItem("Base.TreeBranch", 0.0F, 0.0F, 0.0F);
if (Rand.Next(4) == 0)
this.square.AddWorldInventoryItem("Base.Twigs", 0.0F, 0.0F, 0.0F);
}
reset();
CellLoader.isoTreeCache.add(this);
for (b = 0; b < IsoPlayer.numPlayers; ) {
LosUtil.cachecleared[b] = true;
b++;
}
IsoGridSquare.setRecalcLightTime(-1);
GameTime.instance.lightSourceUpdate = 100.0F;
LuaEventManager.triggerEvent("OnContainerUpdate");
}
LuaEventManager.triggerEvent("OnWeaponHitTree", paramIsoGameCharacter, paramHandWeapon);
}
I guess those things you would have to mimic in Lua if a baseballbat is equipped and the character wielding it has your trait.